diff options
author | Michael Vogt <mvo@debian.org> | 2015-08-18 20:39:59 +0200 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2015-08-18 20:39:59 +0200 |
commit | a8275acf87cf15992e6b89694d6276e0a5e529b9 (patch) | |
tree | 44e4264e28d8a932a1298f71b316fd01359fb39c | |
parent | 5b1997c095acf183077ec49b2a8cbb1174e3c280 (diff) |
Add support for "apt-cache showsrc --only-source srcpkgname"
Thanks: Steve Slangasek for the suggestion
Closes: 695633
-rw-r--r-- | apt-private/private-cmndline.cc | 6 | ||||
-rw-r--r-- | cmdline/apt-cache.cc | 4 | ||||
-rw-r--r-- | doc/apt-cache.8.xml | 9 | ||||
-rw-r--r-- | test/integration/framework | 3 | ||||
-rwxr-xr-x | test/integration/test-apt-cache-showsrc | 31 |
5 files changed, 48 insertions, 5 deletions
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/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 |