From 5530255b5f3ad7de2e23dfcb39ce325001126501 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 17 Mar 2015 09:59:41 +0100 Subject: Add "ca-certificates" recommends to apt-transport-https The rational is that https downloads fail with cryptic error messages if the certificates are missing. --- debian/control | 1 + 1 file changed, 1 insertion(+) (limited to 'debian/control') diff --git a/debian/control b/debian/control index 8c3eea3f1..e71cb5103 100644 --- a/debian/control +++ b/debian/control @@ -121,6 +121,7 @@ Description: package management related utility programs Package: apt-transport-https Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} +Recommends: ca-certificates Priority: optional Description: https download transport for APT This package enables the usage of 'deb https://foo distro main' lines -- cgit v1.2.3-70-g09d2 From 25f2731928f0b571f7521d7d7a7e301499d0f6ee Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 7 Jul 2015 11:46:39 +0200 Subject: merge keyrings with cat instead of gpg in apt-key If all keyrings are simple keyrings we can merge the keyrings with cat rather than doing a detour over gpg --export | --import (see #790665), which means 'apt-key verify' can do without gpg and just use gpgv as before the merging change. We declare this gpgv usage explicit now in the dependencies. This isn't a new dependency as gnupg as well as debian-archive-keyring depend on and we used it before unconditionally, just that we didn't declare it. The handling of the merged keyring needs to be slightly different as our merged keyring can end up containing the same key multiple times, but at least currently gpg does remove only the first occurrence with --delete-keys, so we move the handling to a if one is gone, all are gone rather than an (implicit) quid pro quo or even no effect. Thanks: Daniel Kahn Gillmor for the suggestion --- cmdline/apt-key.in | 128 ++++++++++++++++++++++++++++-------------- debian/control | 2 +- test/integration/test-apt-key | 2 +- 3 files changed, 88 insertions(+), 44 deletions(-) (limited to 'debian/control') diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in index b15f71f6d..881f8a990 100644 --- a/cmdline/apt-key.in +++ b/cmdline/apt-key.in @@ -34,7 +34,8 @@ get_fingerprints_of_keyring() { elif [ "${fprline%%:*}" != 'fpr' ]; then continue; fi echo "$fprline" | cut -d':' -f 10 done - done + # order in the keyring shouldn't be important + done | sort } add_keys_with_verify_against_master_keyring() { @@ -167,8 +168,10 @@ remove_key_from_keyring() { local GPG="$GPG_CMD --keyring $KEYRINGFILE" for KEY in "$@"; do - # check if the key is in this keyring: the key id is in the 5 column at the end - if ! get_fingerprints_of_keyring "$KEYRINGFILE" | grep -iq "^[0-9A-F]*${KEY}$"; then + local FINGERPRINTS="${GPGHOMEDIR}/keyringfile.keylst" + get_fingerprints_of_keyring "$KEYRINGFILE" > "$FINGERPRINTS" + # check if the key is in this keyring + if ! grep -iq "^[0-9A-F]*${KEY}$" "$FINGERPRINTS"; then continue fi if [ ! -w "$KEYRINGFILE" ]; then @@ -176,7 +179,7 @@ remove_key_from_keyring() { continue fi # check if it is the only key in the keyring and if so remove the keyring altogether - if [ '1' = "$(get_fingerprints_of_keyring "$KEYRINGFILE" | wc -l)" ]; then + if [ '1' = "$(uniq "$FINGERPRINTS" | wc -l)" ]; then mv -f "$KEYRINGFILE" "${KEYRINGFILE}~" # behave like gpg return fi @@ -188,7 +191,7 @@ remove_key_from_keyring() { cp -a "$REALTARGET" "$KEYRINGFILE" fi # delete the key from the keyring - $GPG --batch --delete-key --yes "$KEY" + $GPG --batch --delete-keys --yes "$KEY" if [ -n "$REALTARGET" ]; then # the real backup is the old link, not the copy we made mv -f "${KEYRINGFILE}.dpkg-tmp" "${KEYRINGFILE}~" @@ -268,6 +271,33 @@ import_keyring_into_keyring() { fi } +merge_all_trusted_keyrings_into_pubring() { + # does the same as: + # foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg" + # but without using gpg, just cat and find + local PUBRING="${GPGHOMEDIR}/pubring.gpg" + # if a --keyring was given, just use this one + if [ -n "$FORCED_KEYRING" ]; then + if [ -s "$FORCED_KEYRING" ]; then + cp --dereference "$FORCED_KEYRING" "$PUBRING" + fi + else + # otherwise all known keyrings are merged + local TRUSTEDPARTS="/etc/apt/trusted.gpg.d" + eval $(apt-config shell TRUSTEDPARTS Dir::Etc::TrustedParts/d) + if [ -d "$TRUSTEDPARTS" ]; then + # ignore errors mostly for non-existing $TRUSTEDFILE + cat /dev/null "$TRUSTEDFILE" $(find -L "$TRUSTEDPARTS" -type f -name '*.gpg') > "$PUBRING" 2>/dev/null || true + elif [ -s "$TRUSTEDFILE" ]; then + cp --dereference "$TRUSTEDFILE" "$PUBRING" + fi + fi + + if [ ! -s "$PUBRING" ]; then + touch "$PUBRING" + fi +} + import_keys_from_keyring() { import_keyring_into_keyring "$1" "$2" } @@ -288,29 +318,29 @@ merge_back_changes() { # look for keys which were added or removed get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.orig.gpg" > "${GPGHOMEDIR}/pubring.orig.keylst" get_fingerprints_of_keyring "${GPGHOMEDIR}/pubring.gpg" > "${GPGHOMEDIR}/pubring.keylst" - sort "${GPGHOMEDIR}/pubring.keylst" "${GPGHOMEDIR}/pubring.orig.keylst" | uniq --unique | while read key; do - if grep -q "^${key}$" "${GPGHOMEDIR}/pubring.orig.keylst"; then - # key isn't part of new keyring, so remove - foreach_keyring_do 'remove_key_from_keyring' "$key" - elif grep -q "^${key}$" "${GPGHOMEDIR}/pubring.keylst"; then - # key is part of new keyring, so we need to import it - import_keyring_into_keyring '' "$TRUSTEDFILE" "$key" - else - echo >&2 "Errror: Key ${key} (dis)appeared out of nowhere" - fi + comm -3 "${GPGHOMEDIR}/pubring.keylst" "${GPGHOMEDIR}/pubring.orig.keylst" > "${GPGHOMEDIR}/pubring.diff" + # key isn't part of new keyring, so remove + cut -f 2 "${GPGHOMEDIR}/pubring.diff" | while read key; do + if [ -z "$key" ]; then continue; fi + foreach_keyring_do 'remove_key_from_keyring' "$key" + done + # key is only part of new keyring, so we need to import it + cut -f 1 "${GPGHOMEDIR}/pubring.diff" | while read key; do + if [ -z "$key" ]; then continue; fi + import_keyring_into_keyring '' "$TRUSTEDFILE" "$key" done } setup_merged_keyring() { if [ -n "$FORCED_KEYID" ]; then - foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg" + merge_all_trusted_keyrings_into_pubring FORCED_KEYRING="${GPGHOMEDIR}/forcedkeyid.gpg" TRUSTEDFILE="${FORCED_KEYRING}" GPG="$GPG --keyring $TRUSTEDFILE" # ignore error as this "just" means we haven't found the forced keyid and the keyring will be empty import_keyring_into_keyring '' "$TRUSTEDFILE" "$FORCED_KEYID" || true elif [ -z "$FORCED_KEYRING" ]; then - foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg" + merge_all_trusted_keyrings_into_pubring if [ -r "${GPGHOMEDIR}/pubring.gpg" ]; then cp -a "${GPGHOMEDIR}/pubring.gpg" "${GPGHOMEDIR}/pubring.orig.gpg" else @@ -407,7 +437,23 @@ if [ -z "$command" ]; then fi shift -if [ "$command" != "help" ]; then +create_gpg_home() { + # gpg needs (in different versions more or less) files to function correctly, + # so we give it its own homedir and generate some valid content for it later on + if [ -n "$TMPDIR" ]; then + # tmpdir is a directory and current user has rwx access to it + # same tests as in apt-pkg/contrib/fileutl.cc GetTempDir() + if [ ! -d "$TMPDIR" ] || [ ! -r "$TMPDIR" ] || [ ! -w "$TMPDIR" ] || [ ! -x "$TMPDIR" ]; then + unset TMPDIR + fi + fi + GPGHOMEDIR="$(mktemp -d)" + CURRENTTRAP="${CURRENTTRAP} rm -rf '${GPGHOMEDIR}';" + trap "${CURRENTTRAP}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM + chmod 700 "$GPGHOMEDIR" +} + +prepare_gpg_home() { eval $(apt-config shell GPG_EXE Apt::Key::gpgcommand) if [ -n "$GPG_EXE" ] && which "$GPG_EXE" >/dev/null 2>&1; then @@ -418,7 +464,7 @@ if [ "$command" != "help" ]; then GPG_EXE="gpg2" else echo >&2 "Error: gnupg or gnupg2 do not seem to be installed," - echo >&2 "Error: but apt-key requires gnupg or gnupg2 for operation." + echo >&2 "Error: but apt-key requires gnupg or gnupg2 for this operation." echo >&2 exit 255 fi @@ -428,19 +474,8 @@ if [ "$command" != "help" ]; then fi GPG_CMD="$GPG_EXE --ignore-time-conflict --no-options --no-default-keyring" - # gpg needs (in different versions more or less) files to function correctly, - # so we give it its own homedir and generate some valid content for it - if [ -n "$TMPDIR" ]; then - # tmpdir is a directory and current user has rwx access to it - # same tests as in apt-pkg/contrib/fileutl.cc GetTempDir() - if [ ! -d "$TMPDIR" ] || [ ! -r "$TMPDIR" ] || [ ! -w "$TMPDIR" ] || [ ! -x "$TMPDIR" ]; then - unset TMPDIR - fi - fi - GPGHOMEDIR="$(mktemp -d)" - CURRENTTRAP="${CURRENTTRAP} rm -rf '${GPGHOMEDIR}';" - trap "${CURRENTTRAP}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM - chmod 700 "$GPGHOMEDIR" + create_gpg_home + # We don't use a secret keyring, of course, but gpg panics and # implodes if there isn't one available - and writeable for imports SECRETKEYRING="${GPGHOMEDIR}/secring.gpg" @@ -466,6 +501,10 @@ if [ "$command" != "help" ]; then # anyhow, so nothing actually happens, but its three lines of output # nobody expects to see in apt-key context, so trigger it in silence echo -n | $GPG --batch --import >/dev/null 2>&1 || true +} + +if [ "$command" != 'help' ] && [ "$command" != 'verify' ]; then + prepare_gpg_home fi case "$command" in @@ -500,7 +539,7 @@ case "$command" in foreach_keyring_do 'run_cmd_on_keyring' --fingerprint "$@" ;; export|exportall) - foreach_keyring_do 'import_keys_from_keyring' "${GPGHOMEDIR}/pubring.gpg" + merge_all_trusted_keyrings_into_pubring $GPG_CMD --keyring "${GPGHOMEDIR}/pubring.gpg" --armor --export "$@" ;; adv*) @@ -510,21 +549,26 @@ case "$command" in merge_back_changes ;; verify) - setup_merged_keyring GPGV='' eval $(apt-config shell GPGV Apt::Key::gpgvcommand) - if [ -n "$GPGV" ] && ! which "$GPGV" >/dev/null 2>&1; then GPGV=''; + if [ -n "$GPGV" ] && which "$GPGV" >/dev/null 2>&1; then true; elif which gpgv >/dev/null 2>&1; then GPGV='gpgv'; elif which gpgv2 >/dev/null 2>&1; then GPGV='gpgv2'; + else + echo >&2 'ERROR: gpgv or gpgv2 required for verification' + exit 29 fi - if [ -n "$GPGV" ]; then - if [ -n "$FORCED_KEYRING" ]; then - $GPGV --homedir "${GPGHOMEDIR}" --keyring "${FORCED_KEYRING}" --ignore-time-conflict "$@" - else - $GPGV --homedir "${GPGHOMEDIR}" --keyring "${GPGHOMEDIR}/pubring.gpg" --ignore-time-conflict "$@" - fi + # for a forced keyid we need gpg --export, so full wrapping required + if [ -n "$FORCED_KEYID" ]; then + prepare_gpg_home + else + create_gpg_home + fi + setup_merged_keyring + if [ -n "$FORCED_KEYRING" ]; then + $GPGV --homedir "${GPGHOMEDIR}" --keyring "${FORCED_KEYRING}" --ignore-time-conflict "$@" else - $GPG --verify "$@" + $GPGV --homedir "${GPGHOMEDIR}" --keyring "${GPGHOMEDIR}/pubring.gpg" --ignore-time-conflict "$@" fi ;; help) diff --git a/debian/control b/debian/control index e71cb5103..7e2db7373 100644 --- a/debian/control +++ b/debian/control @@ -18,7 +18,7 @@ XS-Testsuite: autopkgtest Package: apt Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gnupg | gnupg2, adduser +Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gpgv | gpgv2, gnupg | gnupg2, adduser Replaces: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~) Breaks: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~) Conflicts: python-apt (<< 0.7.93.2~) diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key index 4dbf3d66d..1226e7dc4 100755 --- a/test/integration/test-apt-key +++ b/test/integration/test-apt-key @@ -188,7 +188,7 @@ gpg: unchanged: 1' aptkey --fakeroot update adv --batch --yes --default-key 'Marvin' --armor --detach-sign --sign --output signature.gpg signature - for GPGV in 'gpgv' 'gpgv2' '/does/not/exist'; do + for GPGV in '' 'gpgv' 'gpgv2'; do echo "APT::Key::GPGVCommand \"$GPGV\";" > rootdir/etc/apt/apt.conf.d/00gpgvcmd msgtest 'Test verify a file' 'with all keys' -- cgit v1.2.3-70-g09d2 From b17d75804566ced55109b4b0498b7ed0faad389b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 11 Jul 2015 20:21:45 +0200 Subject: enforce GCC5 C++11 ABI and usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The library(s) make an API break anyhow, so lets ensure we use gcc5 for this break and enable c++11 as standard as gcc6 will use it as default and should provide some API parts for c++11 – beside that it can't hurt to use c++11 itself. We just have to keep our headers c++03 compatible to not enforce a standrd bump in our reverse dependencies. --- buildlib/environment.mak.in | 2 +- debian/control | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'debian/control') diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in index 8ea7a05ba..287205181 100644 --- a/buildlib/environment.mak.in +++ b/buildlib/environment.mak.in @@ -9,7 +9,7 @@ PACKAGE_MAIL = @PACKAGE_MAIL@ CC = @CC@ CPPFLAGS+= @CPPFLAGS@ @DEFS@ -D_REENTRANT -D_FORTIFY_SOURCE=2 CXX = @CXX@ -CXXFLAGS+= @CXXFLAGS@ -Wall -Wextra +CXXFLAGS+= @CXXFLAGS@ -std=c++11 -Wall -Wextra CXXFLAGS+= -Wcast-align -Wlogical-op -Wredundant-decls -Wmissing-declarations -Wunsafe-loop-optimizations CXXFLAGS+= -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wmissing-include-dirs -Wnoexcept -Wsign-promo -Wundef # suggests methods which already have such an attribute diff --git a/debian/control b/debian/control index 7e2db7373..37b9e215b 100644 --- a/debian/control +++ b/debian/control @@ -9,7 +9,8 @@ Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~), zlib1g-dev, libbz2-dev, liblzma-dev, xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), - autotools-dev, autoconf, automake, libgtest-dev + autotools-dev, autoconf, automake, libgtest-dev, + g++-5 (>= 5.1.1-20) Build-Depends-Indep: doxygen, w3m, graphviz Build-Conflicts: autoconf2.13, automake1.4 Vcs-Git: git://anonscm.debian.org/apt/apt.git -- cgit v1.2.3-70-g09d2 From 17a2487fc69a86508f2319068296463698590d2b Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 11 Aug 2015 14:37:29 +0200 Subject: Bump apt-inst SONAME to 2.0 to adjust for the ABI break in apt-pkg --- apt-inst/makefile | 2 +- debian/control | 2 +- debian/libapt-inst1.6.install.in | 2 -- debian/libapt-inst1.6.symbols | 72 ---------------------------------------- debian/libapt-inst2.0.install.in | 2 ++ debian/libapt-inst2.0.symbols | 72 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 debian/libapt-inst1.6.install.in delete mode 100644 debian/libapt-inst1.6.symbols create mode 100644 debian/libapt-inst2.0.install.in create mode 100644 debian/libapt-inst2.0.symbols (limited to 'debian/control') diff --git a/apt-inst/makefile b/apt-inst/makefile index e4a3ae702..2883cbcb0 100644 --- a/apt-inst/makefile +++ b/apt-inst/makefile @@ -14,7 +14,7 @@ include ../buildlib/libversion.mak # The library name LIBRARY=apt-inst -MAJOR=1.6 +MAJOR=2.0 MINOR=0 SLIBS=$(PTHREADLIB) -lapt-pkg APT_DOMAIN:=libapt-inst$(MAJOR) diff --git a/debian/control b/debian/control index 37b9e215b..521400bb2 100644 --- a/debian/control +++ b/debian/control @@ -62,7 +62,7 @@ Description: package management runtime library http, rsh as well as an interface to add more transports like https (apt-transport-https) and debtorrent (apt-transport-debtorrent). -Package: libapt-inst1.6 +Package: libapt-inst2.0 Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} diff --git a/debian/libapt-inst1.6.install.in b/debian/libapt-inst1.6.install.in deleted file mode 100644 index 8bcce2c28..000000000 --- a/debian/libapt-inst1.6.install.in +++ /dev/null @@ -1,2 +0,0 @@ -bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/ -usr/share/locale/*/*/libapt-inst*.mo diff --git a/debian/libapt-inst1.6.symbols b/debian/libapt-inst1.6.symbols deleted file mode 100644 index 87d9984e7..000000000 --- a/debian/libapt-inst1.6.symbols +++ /dev/null @@ -1,72 +0,0 @@ -libapt-inst.so.1.6 libapt-inst1.6 #MINVER# -* Build-Depends-Package: libapt-pkg-dev - (c++)"ExtractTar::Done(bool)@APTINST_1.6" 0.8.0 - (c++)"ExtractTar::Go(pkgDirStream&)@APTINST_1.6" 0.8.0 - (c++)"ExtractTar::StartGzip()@APTINST_1.6" 0.8.0 - (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string, std::allocator >)@APTINST_1.6" 1.0.5 - (c++)"ExtractTar::~ExtractTar()@APTINST_1.6" 0.8.0 - (c++)"debDebFile::GotoMember(char const*)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::CheckMember(char const*)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::ControlExtract::~ControlExtract()@APTINST_1.6" 0.8.0 - (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTINST_1.6" 0.9.15.4 - (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTINST_1.6" 1.0.5 - (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_1.6" 0.8.0 - (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTINST_1.6" 1.0.5 - (c++)"debDebFile::MemControlExtract::~MemControlExtract()@APTINST_1.6" 0.8.0 - (c++)"debDebFile::debDebFile(FileFd&)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::FinishedFile(pkgDirStream::Item&, int)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::CheckDirReplace(std::__cxx11::basic_string, std::allocator >, unsigned int)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator, bool)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::Fail(pkgDirStream::Item&, int)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::Aborted()@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::Finished()@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::pkgExtract(pkgFLCache&, pkgCache::VerIterator)@APTINST_1.6" 0.8.0 - (c++)"pkgExtract::~pkgExtract()@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::TreeLookup(unsigned int*, char const*, char const*, unsigned long, unsigned int*, bool)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::AddConfFile(char const*, char const*, pkgFLCache::PkgIterator const&, unsigned char const*)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::AddDiversion(pkgFLCache::PkgIterator const&, char const*, char const*)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::BeginDiverLoad()@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::FinishDiverLoad()@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::GetPkg(char const*, char const*, bool)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::Header::Header()@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::GetNode(char const*, char const*, unsigned int, bool, bool)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::DropNode(unsigned int)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::HashNode(pkgFLCache::NodeIterator const&)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::PrintTree(unsigned int, unsigned long)@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::pkgFLCache(DynamicMMap&)@APTINST_1.6" 0.8.0 - (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTINST_1.6" 0.8.0 - (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTINST_1.6" 0.8.0 - (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTINST_1.6" 0.8.0 - (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTINST_1.6" 1.0.5 - (c++)"pkgDirStream::~pkgDirStream()@APTINST_1.6" 0.8.0 - (c++)"ARArchive::LoadHeaders()@APTINST_1.6" 0.8.0 - (c++)"ARArchive::ARArchive(FileFd&)@APTINST_1.6" 0.8.0 - (c++)"ARArchive::~ARArchive()@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::NodeIterator::RealPackage() const@APTINST_1.6" 0.8.0 - (c++)"pkgFLCache::Header::CheckSizes(pkgFLCache::Header&) const@APTINST_1.6" 0.8.0 - (c++)"ARArchive::FindMember(char const*) const@APTINST_1.6" 0.8.0 - (c++)"typeinfo for ExtractTar@APTINST_1.6" 0.8.0 - (c++)"typeinfo for pkgExtract@APTINST_1.6" 0.8.0 - (c++)"typeinfo for pkgDirStream@APTINST_1.6" 0.8.0 - (c++)"typeinfo for debDebFile::ControlExtract@APTINST_1.6" 0.8.0 - (c++)"typeinfo for debDebFile::MemControlExtract@APTINST_1.6" 0.8.0 - (c++)"typeinfo name for ExtractTar@APTINST_1.6" 0.8.0 - (c++)"typeinfo name for pkgExtract@APTINST_1.6" 0.8.0 - (c++)"typeinfo name for pkgDirStream@APTINST_1.6" 0.8.0 - (c++)"typeinfo name for debDebFile::ControlExtract@APTINST_1.6" 0.8.0 - (c++)"typeinfo name for debDebFile::MemControlExtract@APTINST_1.6" 0.8.0 - (c++)"vtable for ExtractTar@APTINST_1.6" 0.8.0 - (c++)"vtable for pkgExtract@APTINST_1.6" 0.8.0 - (c++)"vtable for pkgDirStream@APTINST_1.6" 0.8.0 - (c++)"vtable for debDebFile::ControlExtract@APTINST_1.6" 0.8.0 - (c++)"vtable for debDebFile::MemControlExtract@APTINST_1.6" 0.8.0 -### gcc artefacts - (c++|optional=std)"std::vector >::~vector()@APTINST_1.6" 0.8.12 -### symbol versioning - APTINST_1.6@APTINST_1.6 1.1~exp9 -### try to ignore std:: template instances - (c++|optional=std)"std::ctype::do_widen(char) const@APTINST_1.6" 1.0.3 diff --git a/debian/libapt-inst2.0.install.in b/debian/libapt-inst2.0.install.in new file mode 100644 index 000000000..8bcce2c28 --- /dev/null +++ b/debian/libapt-inst2.0.install.in @@ -0,0 +1,2 @@ +bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/ +usr/share/locale/*/*/libapt-inst*.mo diff --git a/debian/libapt-inst2.0.symbols b/debian/libapt-inst2.0.symbols new file mode 100644 index 000000000..11d0d872d --- /dev/null +++ b/debian/libapt-inst2.0.symbols @@ -0,0 +1,72 @@ +libapt-inst.so.2.0 libapt-inst2.0 #MINVER# +* Build-Depends-Package: libapt-pkg-dev + (c++)"ExtractTar::Done(bool)@APTINST_2.0" 0.8.0 + (c++)"ExtractTar::Go(pkgDirStream&)@APTINST_2.0" 0.8.0 + (c++)"ExtractTar::StartGzip()@APTINST_2.0" 0.8.0 + (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string, std::allocator >)@APTINST_2.0" 1.0.5 + (c++)"ExtractTar::~ExtractTar()@APTINST_2.0" 0.8.0 + (c++)"debDebFile::GotoMember(char const*)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::CheckMember(char const*)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::ControlExtract::~ControlExtract()@APTINST_2.0" 0.8.0 + (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTINST_2.0" 0.9.15.4 + (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTINST_2.0" 1.0.5 + (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTINST_2.0" 1.0.5 + (c++)"debDebFile::MemControlExtract::~MemControlExtract()@APTINST_2.0" 0.8.0 + (c++)"debDebFile::debDebFile(FileFd&)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::FinishedFile(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::CheckDirReplace(std::__cxx11::basic_string, std::allocator >, unsigned int)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator, bool)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::Fail(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::Aborted()@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::Finished()@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::pkgExtract(pkgFLCache&, pkgCache::VerIterator)@APTINST_2.0" 0.8.0 + (c++)"pkgExtract::~pkgExtract()@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::TreeLookup(unsigned int*, char const*, char const*, unsigned long, unsigned int*, bool)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::AddConfFile(char const*, char const*, pkgFLCache::PkgIterator const&, unsigned char const*)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::AddDiversion(pkgFLCache::PkgIterator const&, char const*, char const*)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::BeginDiverLoad()@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::FinishDiverLoad()@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::GetPkg(char const*, char const*, bool)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::Header::Header()@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::GetNode(char const*, char const*, unsigned int, bool, bool)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::DropNode(unsigned int)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::HashNode(pkgFLCache::NodeIterator const&)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::PrintTree(unsigned int, unsigned long)@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::pkgFLCache(DynamicMMap&)@APTINST_2.0" 0.8.0 + (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0 + (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTINST_2.0" 0.8.0 + (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTINST_2.0" 0.8.0 + (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTINST_2.0" 1.0.5 + (c++)"pkgDirStream::~pkgDirStream()@APTINST_2.0" 0.8.0 + (c++)"ARArchive::LoadHeaders()@APTINST_2.0" 0.8.0 + (c++)"ARArchive::ARArchive(FileFd&)@APTINST_2.0" 0.8.0 + (c++)"ARArchive::~ARArchive()@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::NodeIterator::RealPackage() const@APTINST_2.0" 0.8.0 + (c++)"pkgFLCache::Header::CheckSizes(pkgFLCache::Header&) const@APTINST_2.0" 0.8.0 + (c++)"ARArchive::FindMember(char const*) const@APTINST_2.0" 0.8.0 + (c++)"typeinfo for ExtractTar@APTINST_2.0" 0.8.0 + (c++)"typeinfo for pkgExtract@APTINST_2.0" 0.8.0 + (c++)"typeinfo for pkgDirStream@APTINST_2.0" 0.8.0 + (c++)"typeinfo for debDebFile::ControlExtract@APTINST_2.0" 0.8.0 + (c++)"typeinfo for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0 + (c++)"typeinfo name for ExtractTar@APTINST_2.0" 0.8.0 + (c++)"typeinfo name for pkgExtract@APTINST_2.0" 0.8.0 + (c++)"typeinfo name for pkgDirStream@APTINST_2.0" 0.8.0 + (c++)"typeinfo name for debDebFile::ControlExtract@APTINST_2.0" 0.8.0 + (c++)"typeinfo name for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0 + (c++)"vtable for ExtractTar@APTINST_2.0" 0.8.0 + (c++)"vtable for pkgExtract@APTINST_2.0" 0.8.0 + (c++)"vtable for pkgDirStream@APTINST_2.0" 0.8.0 + (c++)"vtable for debDebFile::ControlExtract@APTINST_2.0" 0.8.0 + (c++)"vtable for debDebFile::MemControlExtract@APTINST_2.0" 0.8.0 +### gcc artefacts + (c++|optional=std)"std::vector >::~vector()@APTINST_2.0" 0.8.12 +### symbol versioning + APTINST_2.0@APTINST_2.0 1.1~exp9 +### try to ignore std:: template instances + (c++|optional=std)"std::ctype::do_widen(char) const@APTINST_2.0" 1.0.3 -- cgit v1.2.3-70-g09d2 From 24e688506641021d9bc0e1bd68601e188261ba5e Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 11 Aug 2015 20:02:02 +0200 Subject: debian/control: Rename libapt-pkg4.15 -> libapt-pkg5.0 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'debian/control') diff --git a/debian/control b/debian/control index 521400bb2..bd7232834 100644 --- a/debian/control +++ b/debian/control @@ -39,7 +39,7 @@ Description: commandline package manager * apt-config as an interface to the configuration settings * apt-key as an interface to manage authentication keys -Package: libapt-pkg4.15 +Package: libapt-pkg5.0 Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} -- cgit v1.2.3-70-g09d2 From a0abb75b8d1d30a6b4de86665042948b786a1cff Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 14 Aug 2015 21:06:41 +0200 Subject: debian/control: Replace debian by Debian Thanks: Lintian --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'debian/control') diff --git a/debian/control b/debian/control index bd7232834..5e813155c 100644 --- a/debian/control +++ b/debian/control @@ -116,7 +116,7 @@ Description: package management related utility programs * apt-extracttemplates is used by debconf to prompt for configuration questions before installation. * apt-ftparchive is used to create Packages and other index files - needed to publish an archive of debian packages + needed to publish an archive of Debian packages * apt-sortpkgs is a Packages/Sources file normalizer. Package: apt-transport-https -- cgit v1.2.3-70-g09d2 From 40ce4d9a259527492f0b6fbf718371563dc1849e Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 14 Aug 2015 21:09:11 +0200 Subject: debian/control: Drop the versioned python-apt conflict Thanks: Lintian --- debian/control | 1 - 1 file changed, 1 deletion(-) (limited to 'debian/control') diff --git a/debian/control b/debian/control index 5e813155c..b554255bf 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,6 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gpgv | gpgv2, gnupg | gnupg2, adduser Replaces: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~) Breaks: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~) -Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), apt-doc, python-apt Description: commandline package manager This package provides commandline tools for searching and -- cgit v1.2.3-70-g09d2 From a24d67a2b7f5c310f62c0d2dabbc324e2a39c3dc Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 14 Aug 2015 21:11:40 +0200 Subject: debian/control: Remove XS- from Testsuite and bump Standards-Version Thanks: Lintian --- debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'debian/control') diff --git a/debian/control b/debian/control index b554255bf..678c75d35 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: important Maintainer: APT Development Team Uploaders: Michael Vogt , Christian Perrier , Julian Andres Klode -Standards-Version: 3.9.5 +Standards-Version: 3.9.6 Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~), zlib1g-dev, libbz2-dev, liblzma-dev, @@ -15,7 +15,7 @@ Build-Depends-Indep: doxygen, w3m, graphviz Build-Conflicts: autoconf2.13, automake1.4 Vcs-Git: git://anonscm.debian.org/apt/apt.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=apt/apt.git -XS-Testsuite: autopkgtest +Testsuite: autopkgtest Package: apt Architecture: any -- cgit v1.2.3-70-g09d2 From 3dddcdf2432e78f37c74d8c76c2c519a8d935ab2 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Mon, 17 Aug 2015 18:33:22 +0200 Subject: Re-add support for G++ 4.8 and configure travis to use it This makes tests work again! Gbp-Dch: ignore --- .travis.yml | 8 +++++--- apt-pkg/cacheset.h | 4 ++-- apt-private/private-cachefile.cc | 2 +- apt-private/private-cacheset.cc | 2 +- debian/control | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) (limited to 'debian/control') diff --git a/.travis.yml b/.travis.yml index a20018a79..993492b7e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ before_install: - sudo apt-get update -q install: - sudo ./prepare-release travis-ci - - export CC=gcc-5 - - export CXX=g++-5 -script: make -j1 && make test && test/integration/run-tests + - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + - sudo apt-get -qq update + - sudo apt-get -qq install g++-4.8 + - export CXX=g++-4.8 +script: make && make test && test/integration/run-tests diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index 95df55dcc..7c03ad97a 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -407,7 +407,7 @@ public: /*{{{*/ bool empty() const APT_OVERRIDE { return _cont.empty(); } void clear() APT_OVERRIDE { return _cont.clear(); } size_t size() const APT_OVERRIDE { return _cont.size(); } -#if __cplusplus >= 201103L +#if __GNUC__ >= 5 || (__GNUC_MINOR__ >= 9 && __GNUC__ >= 4) iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); } iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); } #else @@ -897,7 +897,7 @@ public: /*{{{*/ bool empty() const APT_OVERRIDE { return _cont.empty(); } void clear() APT_OVERRIDE { return _cont.clear(); } size_t size() const APT_OVERRIDE { return _cont.size(); } -#if __cplusplus >= 201103L +#if __GNUC__ >= 5 || (__GNUC_MINOR__ >= 9 && __GNUC__ >= 4) iterator erase( const_iterator pos ) { return iterator(_cont.erase(pos._iter)); } iterator erase( const_iterator first, const_iterator last ) { return iterator(_cont.erase(first._iter, last._iter)); } #else diff --git a/apt-private/private-cachefile.cc b/apt-private/private-cachefile.cc index 2b2050684..32cad1c33 100644 --- a/apt-private/private-cachefile.cc +++ b/apt-private/private-cachefile.cc @@ -33,7 +33,7 @@ static bool SortPackagesByName(pkgCache * const Owner, return strcmp(Owner->StrP + GA->Name, Owner->StrP + GB->Name) <= 0; } SortedPackageUniverse::SortedPackageUniverse(CacheFile &Cache) : - PackageUniverse{Cache}, List{Cache.UniverseList} + PackageUniverse{Cache}, List(Cache.UniverseList) { } void SortedPackageUniverse::LazyInit() const diff --git a/apt-private/private-cacheset.cc b/apt-private/private-cacheset.cc index 36d40117c..8db736507 100644 --- a/apt-private/private-cacheset.cc +++ b/apt-private/private-cacheset.cc @@ -118,7 +118,7 @@ CacheSetHelperVirtuals::CacheSetHelperVirtuals(bool const ShowErrors, GlobalErro // CacheSetHelperAPTGet - responsible for message telling from the CacheSets/*{{{*/ CacheSetHelperAPTGet::CacheSetHelperAPTGet(std::ostream &out) : - APT::CacheSetHelper{true}, out{out} + APT::CacheSetHelper{true}, out(out) { explicitlyNamed = true; } diff --git a/debian/control b/debian/control index 678c75d35..82f455287 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev, zlib1g-dev, libbz2-dev, liblzma-dev, xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), autotools-dev, autoconf, automake, libgtest-dev, - g++-5 (>= 5.1.1-20) + g++ (>= 4:5.2) Build-Depends-Indep: doxygen, w3m, graphviz Build-Conflicts: autoconf2.13, automake1.4 Vcs-Git: git://anonscm.debian.org/apt/apt.git -- cgit v1.2.3-70-g09d2