apt: upgrade 2.6.1 -> 3.0.3

Changelog:
https://metadata.ftp-master.debian.org/changelogs/main/a/apt/apt_3.0.3_changelog

Dropped patches which are included in this release, or became obsolete:
0001-Fix-compilation-error-with-clang-libc-18.patch - included in this release
0001-Fix-musl-build.patch - included in this release
0001-Raise-cmake_minimum_required-to-3.13-to-avoid-warnin.patch - included in this release
0001-Remove-using-std-binary_function.patch - became obsolete, fixed upstream
0001-aptwebserver.cc-Include-array.patch - became obsolete, fixed upstream
0001-strutl-Add-missing-include-cstdint-gcc-15.patch - included in this release

Added a new patch to avoid compilation error with musl:
error: 'basename' was not declared in this scope; did you mean 'rename'?

Adapted DEPENDS list - gnutls and gcrypt dependencies were dropped in favor of openssl
in version 2.9.19.

Added a new PACKAGECONFIG, 'usrmerge', which displays a gentle warning if the system
isn't a usrmerge system during package installation.

Added new COMMON_ARCH CMake argument - if it is not defined, CMake is trying to
determine the value of this variable by running dpkg, which is usually a futile
endeavour. It is used in config creation, and to print some system info.

Also adapt a self test: the apt-key command has been deprecated since a while,
and in this release it was completely removed. Instead sources.list file
contains the signature data, on a per-repository basis.

(From OE-Core rev: 1413a6144679a8347a3487f1950612ee20ff382c)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Gyorgy Sarvari
2025-09-03 20:03:43 +02:00
committed by Richard Purdie
parent 468bcd1950
commit 64857a709b
14 changed files with 74 additions and 264 deletions

View File

@@ -54,7 +54,14 @@ class AptRepoTest(AptTest):
def setup_key(self):
# the key is found on the target /etc/pki/packagefeed-gpg/
# named PACKAGEFEED-GPG-KEY-poky-branch
self.target.run('cd %s; apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
# copy it to /etc/apt/keyrings/PACKAGEFEED-GPG-KEY-poky-branch.asc, and
# set it as the signing key for the repos
cmd = "KEY_FILE_PATH=`realpath /etc/pki/packagefeed-gpg/P*`; "
cmd += "KEY_FILE_NAME=`basename $KEY_FILE_PATH`; "
cmd += "mkdir -p /etc/apt/keyrings; "
cmd += "cp $KEY_FILE_PATH /etc/apt/keyrings/${KEY_FILE_NAME}.asc; "
cmd += 'sed -i "s|^deb |deb \[signed-by=/etc/apt/keyrings/${KEY_FILE_NAME}.asc\] |g" /etc/apt/sources.list'
self.target.run(cmd)
@skipIfNotFeature('package-management',
'Test requires package-management to be in IMAGE_FEATURES')

View File

@@ -14,7 +14,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cd4f8e..4759812 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,9 +21,9 @@ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-lgcov")
@@ -28,9 +28,9 @@ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-lgcov")
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "-lgcov")
# Work around bug in GNUInstallDirs

View File

@@ -16,7 +16,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index 668e2d762..62f441bfa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -246,7 +246,7 @@ add_subdirectory(apt-private)
@@ -251,7 +251,7 @@ add_subdirectory(apt-private)
endif()
add_subdirectory(cmdline)
add_subdirectory(completions)

View File

@@ -16,7 +16,7 @@ diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
index b9d9b15d2..1725c5966 100644
--- a/apt-pkg/init.cc
+++ b/apt-pkg/init.cc
@@ -281,8 +281,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
@@ -295,8 +295,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
return _error->Error(_("Unable to determine a suitable packaging system type"));
}

View File

@@ -1,29 +0,0 @@
From b4488583424b33f51cb031562a9e8df820ffda23 Mon Sep 17 00:00:00 2001
From: Chongyun Lee <licy183@termux.dev>
Date: Thu, 15 Aug 2024 21:31:24 +0800
Subject: [PATCH] Fix compilation error with clang/libc++ 18
Upstream-Status: Backport [https://salsa.debian.org/apt-team/apt/-/commit/b4488583424b33f51cb031562a9e8df820ffda23]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
apt-pkg/cacheset.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h
index 5dbb9bf08..1c67a65d6 100644
--- a/apt-pkg/cacheset.h
+++ b/apt-pkg/cacheset.h
@@ -218,11 +218,11 @@ public:
operator container_iterator(void) const { return _iter; }
inline iterator_type& operator++() { ++_iter; return static_cast<iterator_type&>(*this); }
inline iterator_type operator++(int) { iterator_type tmp(*this); operator++(); return tmp; }
- inline iterator_type operator+(typename container_iterator::difference_type const &n) { return iterator_type(_iter + n); }
+ inline iterator_type operator+(typename container_iterator::difference_type const &n) const { return iterator_type(_iter + n); }
inline iterator_type operator+=(typename container_iterator::difference_type const &n) { _iter += n; return static_cast<iterator_type&>(*this); }
inline iterator_type& operator--() { --_iter;; return static_cast<iterator_type&>(*this); }
inline iterator_type operator--(int) { iterator_type tmp(*this); operator--(); return tmp; }
- inline iterator_type operator-(typename container_iterator::difference_type const &n) { return iterator_type(_iter - n); }
+ inline iterator_type operator-(typename container_iterator::difference_type const &n) const { return iterator_type(_iter - n); }
inline typename container_iterator::difference_type operator-(iterator_type const &b) { return (_iter - b._iter); }
inline iterator_type operator-=(typename container_iterator::difference_type const &n) { _iter -= n; return static_cast<iterator_type&>(*this); }
inline bool operator!=(iterator_type const &i) const { return _iter != i._iter; }

View File

@@ -1,28 +0,0 @@
From 6b8547161b902b01b639d05a4cdf849d7694556f Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 22 May 2020 15:29:23 +0000
Subject: [PATCH] apt-pkg/contrib/srvrec.h: Explicitly include sys/types.h
This avoids type errors with musl C library.
Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/200]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
apt-pkg/contrib/srvrec.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
index e5d0f43..2010184 100644
--- a/apt-pkg/contrib/srvrec.h
+++ b/apt-pkg/contrib/srvrec.h
@@ -9,6 +9,7 @@
#ifndef SRVREC_H
#define SRVREC_H
+#include <sys/types.h>
#include <string>
#include <vector>
#include <arpa/nameser.h>
--
2.20.1

View File

@@ -1,47 +0,0 @@
From dc7a8b3050a2a43f49515a03ae19713dfced75dc Mon Sep 17 00:00:00 2001
From: David Kalnischkies <david@kalnischkies.de>
Date: Sat, 18 Nov 2023 13:10:05 +0000
Subject: [PATCH] Raise cmake_minimum_required to 3.13 to avoid warnings
CMake Deprecation Warning at CMakeLists.txt:6 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
Picking 3.13 here is a semi-random choice to avoid raising the requirement
too much needlessly while also hopefully avoiding needing to raise it
soon again based on the referenced mail.
While we are at it, lets also fix the other spewed warning:
CMake Warning (dev) at CMakeLists.txt:5 (project):
cmake_minimum_required() should be called prior to this top-level project()
call. Please see the cmake-commands(7) manual for usage documentation of
both commands.
References: https://lists.debian.org/msgid-search/20230617162957.6pklb6632zf4nijc@mail.gaussglocke.de
Upstream-Status: Backport [https://salsa.debian.org/apt-team/apt/-/commit/dc7a8b3050a2a43f49515a03ae19713dfced75dc]
Signed-off-by: Moritz Haase <Moritz.Haase@bmw.de>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 62182cddf..dae12e7c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,8 +2,8 @@
# Licensed under the same terms as APT; i.e. GPL 2 or later.
# set minimum version
+cmake_minimum_required(VERSION 3.13)
project(apt)
-cmake_minimum_required(VERSION 3.4.0)
# Generic header locations
include_directories(${PROJECT_BINARY_DIR}/include)
--
GitLab

View File

@@ -1,87 +0,0 @@
From e91fb0618ce0a5d42f239d0fca602544858f0819 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 16 Aug 2022 08:44:18 -0700
Subject: [PATCH] Remove using std::binary_function
std::binary_function and std::unary_function are deprecated since c++11
and removed in c++17, therefore remove it and use lambda functions to get same
functionality implemented.
Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/253]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
ftparchive/apt-ftparchive.cc | 33 ++++++++++-----------------------
1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
index 0f6587281..0a253b12b 100644
--- a/ftparchive/apt-ftparchive.cc
+++ b/ftparchive/apt-ftparchive.cc
@@ -48,6 +48,11 @@
using namespace std;
unsigned Quiet = 0;
+auto ContentsCompare = [](const auto &a, const auto &b) { return a.ContentsMTime < b.ContentsMTime; };
+auto DBCompare = [](const auto &a, const auto &b) { return a.BinCacheDB < b.BinCacheDB; };
+auto SrcDBCompare = [](const auto &a, const auto &b) { return a.SrcCacheDB < b.SrcCacheDB; };
+
+
static struct timeval GetTimevalFromSteadyClock() /*{{{*/
{
auto const Time = std::chrono::steady_clock::now().time_since_epoch();
@@ -116,24 +121,6 @@ struct PackageMap
bool SrcDone;
time_t ContentsMTime;
- struct ContentsCompare
- {
- inline bool operator() (const PackageMap &x,const PackageMap &y)
- {return x.ContentsMTime < y.ContentsMTime;};
- };
-
- struct DBCompare
- {
- inline bool operator() (const PackageMap &x,const PackageMap &y)
- {return x.BinCacheDB < y.BinCacheDB;};
- };
-
- struct SrcDBCompare
- {
- inline bool operator() (const PackageMap &x,const PackageMap &y)
- {return x.SrcCacheDB < y.SrcCacheDB;};
- };
-
void GetGeneral(Configuration &Setup,Configuration &Block);
bool GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats);
bool GenSources(Configuration &Setup,struct CacheDB::Stats &Stats);
@@ -869,7 +856,7 @@ static bool DoGenerateContents(Configuration &Setup,
else
I->ContentsMTime = A.st_mtime;
}
- stable_sort(PkgList.begin(),PkgList.end(),PackageMap::ContentsCompare());
+ stable_sort(PkgList.begin(),PkgList.end(),ContentsCompare);
/* Now for Contents.. The process here is to do a make-like dependency
check. Each contents file is verified to be newer than the package files
@@ -941,8 +928,8 @@ static bool Generate(CommandLine &CmdL)
LoadBinDir(PkgList,Setup);
// Sort by cache DB to improve IO locality.
- stable_sort(PkgList.begin(),PkgList.end(),PackageMap::DBCompare());
- stable_sort(PkgList.begin(),PkgList.end(),PackageMap::SrcDBCompare());
+ stable_sort(PkgList.begin(),PkgList.end(),DBCompare);
+ stable_sort(PkgList.begin(),PkgList.end(),SrcDBCompare);
// Generate packages
if (_config->FindB("APT::FTPArchive::ContentsOnly", false) == false)
@@ -993,8 +980,8 @@ static bool Clean(CommandLine &CmdL)
LoadBinDir(PkgList,Setup);
// Sort by cache DB to improve IO locality.
- stable_sort(PkgList.begin(),PkgList.end(),PackageMap::DBCompare());
- stable_sort(PkgList.begin(),PkgList.end(),PackageMap::SrcDBCompare());
+ stable_sort(PkgList.begin(),PkgList.end(),DBCompare);
+ stable_sort(PkgList.begin(),PkgList.end(),SrcDBCompare);
string CacheDir = Setup.FindDir("Dir::CacheDir");

View File

@@ -23,7 +23,7 @@ diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 93effa959..4375781d1 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -1199,12 +1199,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
@@ -1210,12 +1210,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
}
}
}
@@ -36,7 +36,7 @@ index 93effa959..4375781d1 100644
}
/*}}}*/
void pkgDPkgPM::StartPtyMagic() /*{{{*/
@@ -1741,7 +1735,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
@@ -1752,7 +1746,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
// support subpressing of triggers processing for special
// cases like d-i that runs the triggers handling manually

View File

@@ -1,30 +0,0 @@
From 5985f366750a73c81c7d86893a2b959b4af062a5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 26 May 2021 22:12:46 -0700
Subject: [PATCH] aptwebserver.cc: Include <array>
This helps getting std::array definition
Fixes
test/interactive-helper/aptwebserver.cc:36:55: error: constexpr variable cannot have non-literal type 'const std::array<std::array<const char *, 2>, 6>'
constexpr std::array<std::array<char const *,2>,6> htmlencode = {{
Upstream-Status: Submitted [https://github.com/Debian/apt/pull/133]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
test/interactive-helper/aptwebserver.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
index f4f8d95..361c7a9 100644
--- a/test/interactive-helper/aptwebserver.cc
+++ b/test/interactive-helper/aptwebserver.cc
@@ -23,6 +23,7 @@
#include <array>
#include <algorithm>
+#include <array>
#include <fstream>
#include <iostream>
#include <list>

View File

@@ -11,14 +11,14 @@ Fixes
Upstream-Status: Inappropriate [Cross-compile specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
CMakeLists.txt | 7 -------
1 file changed, 7 deletions(-)
CMakeLists.txt | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index be157a55f..54163ae6c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -252,15 +252,6 @@ add_subdirectory(ftparchive)
@@ -257,15 +257,6 @@ add_subdirectory(ftparchive)
add_subdirectory(methods)
add_subdirectory(test)

View File

@@ -0,0 +1,49 @@
From a6b024ceb71c43977838d625f5ac64b7e4815a56 Mon Sep 17 00:00:00 2001
From: Gyorgy Sarvari <skandigraun@gmail.com>
Date: Thu, 28 Aug 2025 08:11:58 +0200
Subject: [PATCH] fix compilation with musl
The basename() function requires the libgen.h header when
compiling with musl-libc, otherwise it complains:
error: 'basename' was not declared in this scope; did you mean 'rename'?
Also, musl's basename requires char* instead of const char* argument:
error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
The musl implementation of basename modifies the argument only in case
it is a folder path (it cuts off the trailing slashes). In our case,
when argv[0] is passed, it is always a filename without a trailing
slash, so just cast the argument.
Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/508]
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
cmdline/apt-internal-solver.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc
index ceedd96c7..74ed38c50 100644
--- a/cmdline/apt-internal-solver.cc
+++ b/cmdline/apt-internal-solver.cc
@@ -35,6 +35,7 @@
#include <list>
#include <sstream>
#include <string>
+#include <libgen.h>
#include <unistd.h>
#include <apti18n.h>
@@ -119,7 +120,7 @@ int main(int argc,const char *argv[]) /*{{{*/
_config->Set("Debug::EDSP::WriteSolution", true);
_config->Set("APT::System", "Debian APT solver interface");
- if (strcmp(basename(argv[0]), "solver3") == 0)
+ if (strcmp(basename((char*)argv[0]), "solver3") == 0)
_config->Set("APT::Solver", "3.0");
else if (_config->Find("APT::Solver") != "3.0")
_config->Set("APT::Solver", "internal");
--
2.39.5

View File

@@ -1,26 +0,0 @@
From 9da1b0dbdcc90455bc9de49f73a96e7d18f83493 Mon Sep 17 00:00:00 2001
From: Julian Andres Klode <julian.klode@canonical.com>
Date: Tue, 18 Feb 2025 10:29:40 +0100
Subject: [PATCH] strutl: Add missing #include <cstdint> [gcc 15]
Closes: #1096322
Upstream-Status: Backport [https://salsa.debian.org/apt-team/apt/-/commit/f82dcd7e4ebb3f70d28e9feb3621676f8c0cc024]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
apt-pkg/contrib/strutl.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
index 67100f1..c0a1cbc 100644
--- a/apt-pkg/contrib/strutl.cc
+++ b/apt-pkg/contrib/strutl.cc
@@ -26,6 +26,7 @@
#include <algorithm>
#include <array>
+#include <cstdint>
#include <iomanip>
#include <limits>
#include <locale>

View File

@@ -8,14 +8,9 @@ SECTION = "base"
SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \
file://triehash \
file://0001-Disable-documentation-directory-altogether.patch \
file://0001-Fix-musl-build.patch \
file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \
file://0001-cmake-Do-not-build-po-files.patch \
file://0001-aptwebserver.cc-Include-array.patch \
file://0001-Remove-using-std-binary_function.patch \
file://0001-strutl-Add-missing-include-cstdint-gcc-15.patch \
file://0001-Raise-cmake_minimum_required-to-3.13-to-avoid-warnin.patch \
file://0001-Fix-compilation-error-with-clang-libc-18.patch \
file://0001-fix-compilation-with-musl.patch \
"
SRC_URI:append:class-native = " \
@@ -28,7 +23,7 @@ SRC_URI:append:class-nativesdk = " \
file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
"
SRC_URI[sha256sum] = "86b888c901fa2e78f1bf52a2aaa2f400ff82a472b94ff0ac6631939ee68fa6fd"
SRC_URI[sha256sum] = "5b5f6f6d26121742a83aa80d4ed0eb0c6ce9bea259518db412edefd95760e4ef"
LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
# the package is taken from snapshots.debian.org; that source is static and goes stale
@@ -47,7 +42,7 @@ USERADD_PARAM:${PN} = "--system --home /nonexistent --no-create-home _apt"
BBCLASSEXTEND = "native nativesdk"
DEPENDS += "db gnutls lz4 zlib bzip2 xz libgcrypt xxhash"
DEPENDS += "db lz4 zlib bzip2 xz xxhash openssl"
EXTRA_OECMAKE:append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \
-DDPKG_DATADIR=${datadir}/dpkg \
@@ -55,8 +50,14 @@ EXTRA_OECMAKE:append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \
-DCMAKE_DISABLE_FIND_PACKAGE_ZSTD=True \
-DCMAKE_DISABLE_FIND_PACKAGE_SECCOMP=True \
-DWITH_TESTS=False \
-DCOMMON_ARCH=${DPKG_ARCH} \
"
PACKAGECONFIG ??= ""
# usrmerge displays a runtime warning during package installation in case
# the system doesn't have merged /usr folders.
PACKAGECONFIG[usrmerge] = "-DREQUIRE_MERGED_USR=ON,-DREQUIRE_MERGED_USR=OFF"
do_configure:prepend() {
echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )" >> ${WORKDIR}/toolchain.cmake
}