summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/sourcelist.cc2
-rw-r--r--apt-private/private-cmndline.cc6
-rw-r--r--cmdline/apt-cache.cc4
-rw-r--r--cmdline/apt-get.cc1
-rw-r--r--doc/apt-cache.8.xml9
-rw-r--r--test/integration/framework3
-rwxr-xr-xtest/integration/test-apt-cache-showsrc31
-rwxr-xr-xtest/integration/test-apt-sources-deb8226
8 files changed, 56 insertions, 6 deletions
diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc
index 3e714667c..d3bcbce5f 100644
--- a/apt-pkg/sourcelist.cc
+++ b/apt-pkg/sourcelist.cc
@@ -384,7 +384,7 @@ bool pkgSourceList::ParseFileOldStyle(std::string const &File)
continue;
// Grok it
- std::string const LineType = Buffer.substr(0, Buffer.find(' '));
+ std::string const LineType = Buffer.substr(0, Buffer.find_first_of(" \t\v"));
if (LineType.empty() || LineType == Buffer)
return _error->Error(_("Malformed line %u in source list %s (type)"),CurLine,File.c_str());
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
index 3a1564b23..1072b9a78 100644
--- a/apt-private/private-cmndline.cc
+++ b/apt-private/private-cmndline.cc
@@ -70,7 +70,11 @@ static bool addArgumentsAPTCache(std::vector<CommandLine::Args> &Args, char cons
{
addArg('i', "important", "APT::Cache::Important", 0);
}
- else if (CmdMatches("gencaches", "showsrc", "showpkg", "stats", "dump",
+ else if (CmdMatches("showsrc"))
+ {
+ addArg(0,"only-source","APT::Cache::Only-Source",0);
+ }
+ else if (CmdMatches("gencaches", "showpkg", "stats", "dump",
"dumpavail", "showauto", "policy", "madison"))
;
else
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc
index f7abb823d..050508663 100644
--- a/cmdline/apt-cache.cc
+++ b/cmdline/apt-cache.cc
@@ -1607,6 +1607,10 @@ static bool ShowSrcPackage(CommandLine &CmdL)
pkgSrcRecords::Parser *Parse;
unsigned found_this = 0;
while ((Parse = SrcRecs.Find(*I,false)) != 0) {
+ // SrcRecs.Find() will find both binary and source names
+ if (_config->FindB("APT::Cache::Only-Source", false) == true)
+ if (Parse->Package() != *I)
+ continue;
cout << Parse->AsStr() << endl;;
found++;
found_this++;
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index acf6c2155..b1260f06a 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -1649,6 +1649,7 @@ int main(int argc,const char *argv[]) /*{{{*/
{"markauto",&DoMarkAuto},
{"unmarkauto",&DoMarkAuto},
{"dist-upgrade",&DoDistUpgrade},
+ {"full-upgrade",&DoDistUpgrade},
{"dselect-upgrade",&DoDSelectUpgrade},
{"build-dep",&DoBuildDep},
{"clean",&DoClean},
diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml
index a8f1b4586..b649149af 100644
--- a/doc/apt-cache.8.xml
+++ b/doc/apt-cache.8.xml
@@ -135,9 +135,12 @@ Reverse Provides:
</varlistentry>
<varlistentry><term><option>showsrc</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
- <listitem><para><literal>showsrc</literal> displays all the source package records that match
- the given package names. All versions are shown, as well as all
- records that declare the name to be a binary package.</para></listitem>
+ <listitem><para><literal>showsrc</literal> displays all the
+ source package records that match the given package names. All
+ versions are shown, as well as all records that declare the name
+ to be a binary package. Use <option>--only-source</option> to
+ display only source package names.
+ </para></listitem>
</varlistentry>
<varlistentry><term><option>dump</option></term>
diff --git a/test/integration/framework b/test/integration/framework
index b443f2a7b..d9282eede 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -794,6 +794,7 @@ insertsource() {
local ARCH="$3"
local VERSION="$4"
local DEPENDENCIES="$5"
+ local BINARY="${6:-$NAME}"
local ARCHS=""
local SPATH="aptarchive/dists/${RELEASE}/main/source"
mkdir -p $SPATH
@@ -801,7 +802,7 @@ insertsource() {
local DSCFILE="${NAME}_${VERSION}.dsc"
local TARFILE="${NAME}_${VERSION}.tar.gz"
echo "Package: $NAME
-Binary: $NAME
+Binary: $BINARY
Version: $VERSION
Maintainer: Joe Sixpack <joe@example.org>
Architecture: $ARCH" >> $FILE
diff --git a/test/integration/test-apt-cache-showsrc b/test/integration/test-apt-cache-showsrc
new file mode 100755
index 000000000..319b4f2f2
--- /dev/null
+++ b/test/integration/test-apt-cache-showsrc
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+
+setupenvironment
+configarchitecture "i386"
+
+# we have a foo source package
+insertsource 'unstable' 'foo' 'all' '1.0' '' 'foo-binary'
+
+# and a similar one that builds a foo binary package
+insertsource 'unstable' 'unreleated' 'all' '1.0' '' 'foo'
+
+# just here to workaround the need for a authenticated package
+insertpackage 'unstable' 'workaround' 'all' '1.0'
+
+setupaptarchive
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testsuccess grep "Package: unreleated" output.txt
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc --only-source foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testfailure grep "Package: unreleated" output.txt
diff --git a/test/integration/test-apt-sources-deb822 b/test/integration/test-apt-sources-deb822
index adfe0e003..259763096 100755
--- a/test/integration/test-apt-sources-deb822
+++ b/test/integration/test-apt-sources-deb822
@@ -31,6 +31,12 @@ testequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.deb
'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.bz2' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.bz2' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+msgcleantest 'Test sources.list' 'old style with tabs'
+echo "deb http://ftp.debian.org/debian stable main" > $LISTS
+testequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.bz2' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.bz2' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
msgcleantest 'Test sources.list' 'old style with options'
echo "deb [trusted=yes arch+=armel,powerpc] http://ftp.debian.org/debian stable main" > $LISTS
testequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0