summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2020-05-31 17:52:51 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-06-04 13:27:31 +0100
commitcae9a6c9c8cc1991b8e68b0816fc2db22e3ae129 (patch)
tree64e897bae1d8e17be8a8cbc9cd369e6e813245d3
parentfbb498abd98128a196d059175e3fec99eecee7dc (diff)
downloadpoky-cae9a6c9c8cc1991b8e68b0816fc2db22e3ae129.tar.gz
apt: update to 1.8.2.1
I took the opportunity to rewrite the recipe from scratch; there was just too much baggage in it. (From OE-Core rev: f058272de9cba188d96940c8c921cf31727fe4d1) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/conf/distro/include/maintainers.inc1
-rw-r--r--meta/lib/oe/package_manager.py2
-rw-r--r--meta/lib/oeqa/runtime/cases/apt.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py2
-rw-r--r--meta/recipes-devtools/apt/apt-native.inc74
-rw-r--r--meta/recipes-devtools/apt/apt-native_1.2.31.bb5
-rw-r--r--meta/recipes-devtools/apt/apt-package.inc94
-rw-r--r--meta/recipes-devtools/apt/apt.inc40
-rw-r--r--meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch27
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch48
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch (renamed from meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch)43
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch35
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch120
-rw-r--r--meta/recipes-devtools/apt/apt/0001-The-C.UTF-8-locale-is-not-portable-use-std-locale-cl.patch27
-rw-r--r--meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch29
-rw-r--r--meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch18
-rw-r--r--meta/recipes-devtools/apt/apt/disable-test.patch72
-rw-r--r--meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch14
-rw-r--r--meta/recipes-devtools/apt/apt/makerace.patch23
-rw-r--r--meta/recipes-devtools/apt/apt/no-nls-dpkg.patch28
-rw-r--r--meta/recipes-devtools/apt/apt/noconfigure.patch37
-rw-r--r--meta/recipes-devtools/apt/apt/nodoc.patch18
-rwxr-xr-xmeta/recipes-devtools/apt/apt/triehash728
-rw-r--r--meta/recipes-devtools/apt/apt/truncate-filename.patch35
-rw-r--r--meta/recipes-devtools/apt/apt/use-host.patch15
-rw-r--r--meta/recipes-devtools/apt/apt_1.2.31.bb20
-rw-r--r--meta/recipes-devtools/apt/apt_1.8.2.1.bb106
-rw-r--r--meta/recipes-devtools/apt/files/apt.conf42
-rw-r--r--meta/recipes-devtools/apt/files/db_linking_hack.patch29
-rw-r--r--meta/recipes-devtools/apt/files/environment.patch15
-rw-r--r--meta/recipes-devtools/apt/files/no-curl.patch54
33 files changed, 1010 insertions, 851 deletions
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 51e6da669c..1ca1dcf775 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -43,7 +43,6 @@ RECIPE_MAINTAINER_pn-apmd = "Anuj Mittal <anuj.mittal@intel.com>"
43RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>" 43RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
44RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>" 44RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
45RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <limon.anibal@gmail.com>" 45RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <limon.anibal@gmail.com>"
46RECIPE_MAINTAINER_pn-apt-native = "Aníbal Limón <limon.anibal@gmail.com>"
47RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>" 46RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
48RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>" 47RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>"
49RECIPE_MAINTAINER_pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>" 48RECIPE_MAINTAINER_pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>"
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index c055d2b0f7..35e5cff073 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -1800,7 +1800,7 @@ class DpkgPM(OpkgDpkgPM):
1800 def fix_broken_dependencies(self): 1800 def fix_broken_dependencies(self):
1801 os.environ['APT_CONFIG'] = self.apt_conf_file 1801 os.environ['APT_CONFIG'] = self.apt_conf_file
1802 1802
1803 cmd = "%s %s -f install" % (self.apt_get_cmd, self.apt_args) 1803 cmd = "%s %s --allow-unauthenticated -f install" % (self.apt_get_cmd, self.apt_args)
1804 1804
1805 try: 1805 try:
1806 subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT) 1806 subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
diff --git a/meta/lib/oeqa/runtime/cases/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
index c5378d90c3..53745df93f 100644
--- a/meta/lib/oeqa/runtime/cases/apt.py
+++ b/meta/lib/oeqa/runtime/cases/apt.py
@@ -34,7 +34,7 @@ class AptRepoTest(AptTest):
34 def setup_source_config_for_package_install(self): 34 def setup_source_config_for_package_install(self):
35 apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port) 35 apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port)
36 apt_get_sourceslist_dir = '/etc/apt/' 36 apt_get_sourceslist_dir = '/etc/apt/'
37 self.target.run('cd %s; echo deb %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server)) 37 self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
38 38
39 def cleanup_source_config_for_package_install(self): 39 def cleanup_source_config_for_package_install(self):
40 apt_get_sourceslist_dir = '/etc/apt/' 40 apt_get_sourceslist_dir = '/etc/apt/'
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index 49cee6d6a8..7d8f895045 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -676,7 +676,7 @@ class DevtoolModifyTests(DevtoolBase):
676 676
677 bbclassextended = False 677 bbclassextended = False
678 inheritnative = False 678 inheritnative = False
679 testrecipes = 'mtools-native apt-native desktop-file-utils-native'.split() 679 testrecipes = 'cdrtools-native mtools-native apt-native desktop-file-utils-native'.split()
680 for testrecipe in testrecipes: 680 for testrecipe in testrecipes:
681 checkextend = 'native' in (get_bb_var('BBCLASSEXTEND', testrecipe) or '').split() 681 checkextend = 'native' in (get_bb_var('BBCLASSEXTEND', testrecipe) or '').split()
682 if not bbclassextended: 682 if not bbclassextended:
diff --git a/meta/recipes-devtools/apt/apt-native.inc b/meta/recipes-devtools/apt/apt-native.inc
deleted file mode 100644
index d826786329..0000000000
--- a/meta/recipes-devtools/apt/apt-native.inc
+++ /dev/null
@@ -1,74 +0,0 @@
1require apt.inc
2inherit native
3
4DEPENDS += "dpkg-native gettext-native db-native curl-native xz-native"
5PACKAGES = ""
6USE_NLS = "yes"
7
8SRC_URI += "file://db_linking_hack.patch \
9 file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
10"
11
12python do_install () {
13 bb.build.exec_func('do_install_base', d)
14 bb.build.exec_func('do_install_config', d)
15}
16
17python do_install_config () {
18 indir = os.path.dirname(d.getVar('FILE'))
19 infile = open(oe.path.join(indir, 'files', 'apt.conf'), 'r')
20 data = infile.read()
21 infile.close()
22
23 data = d.expand(data)
24
25 outdir = oe.path.join(d.getVar('D'), d.getVar('sysconfdir'), 'apt')
26 if not os.path.exists(outdir):
27 os.makedirs(outdir)
28
29 outpath = oe.path.join(outdir, 'apt.conf.sample')
30 if not os.path.exists(outpath):
31 outfile = open(outpath, 'w')
32 outfile.write(data)
33 outfile.close()
34}
35
36do_install_base () {
37 install -d ${D}${bindir}
38 install -m 0755 bin/apt-cdrom ${D}${bindir}/
39 install -m 0755 bin/apt-get ${D}${bindir}/
40 install -m 0755 bin/apt-config ${D}${bindir}/
41 install -m 0755 bin/apt-cache ${D}${bindir}/
42 install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
43 install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
44 install -m 0755 bin/apt-ftparchive ${D}${bindir}/
45
46 oe_libinstall -so -C bin libapt-private ${D}${libdir}/
47
48 oe_libinstall -so -C bin libapt-pkg$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
49 oe_libinstall -so -C bin libapt-inst$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
50
51 install -d ${D}${libdir}/apt/methods
52 install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
53
54 install -d ${D}${libdir}/dpkg/methods/apt
55 install -m 0644 ${S}/dselect/desc.apt ${D}${libdir}/dpkg/methods/apt/
56 install -m 0644 ${S}/dselect/names ${D}${libdir}/dpkg/methods/apt/
57 install -m 0755 ${S}/dselect/install ${D}${libdir}/dpkg/methods/apt/
58 install -m 0755 ${S}/dselect/setup ${D}${libdir}/dpkg/methods/apt/
59 install -m 0755 ${S}/dselect/update ${D}${libdir}/dpkg/methods/apt/
60
61 install -d ${D}${sysconfdir}/apt
62 install -d ${D}${sysconfdir}/apt/apt.conf.d
63 install -d ${D}${sysconfdir}/apt/preferences.d
64 install -d ${D}${localstatedir}/lib/apt/lists/partial
65 install -d ${D}${localstatedir}/cache/apt/archives/partial
66
67 install -d ${D}${localstatedir}/log/apt/
68
69 install -d ${D}${includedir}/apt-pkg
70 for h in `find ${S}/apt-pkg ${S}/apt-inst -name '*.h'`
71 do
72 install -m 0644 $h ${D}${includedir}/apt-pkg
73 done
74}
diff --git a/meta/recipes-devtools/apt/apt-native_1.2.31.bb b/meta/recipes-devtools/apt/apt-native_1.2.31.bb
deleted file mode 100644
index 2952c21017..0000000000
--- a/meta/recipes-devtools/apt/apt-native_1.2.31.bb
+++ /dev/null
@@ -1,5 +0,0 @@
1require apt-native.inc
2
3SRC_URI += "file://noconfigure.patch \
4 file://no-curl.patch \
5"
diff --git a/meta/recipes-devtools/apt/apt-package.inc b/meta/recipes-devtools/apt/apt-package.inc
deleted file mode 100644
index 922f739d0d..0000000000
--- a/meta/recipes-devtools/apt/apt-package.inc
+++ /dev/null
@@ -1,94 +0,0 @@
1apt-manpages="doc/apt-cache.8 \
2 doc/apt-cdrom.8 \
3 doc/apt-config.8 \
4 doc/apt-get.8 \
5 doc/apt.8 \
6 doc/apt.conf.5 \
7 doc/apt_preferences.5 \
8 doc/sources.list.5"
9apt-utils-manpages="doc/apt-extracttemplates.1 \
10 doc/apt-sortpkgs.1"
11
12def get_files_apt_doc(d, bb, manpages):
13 import re
14 manpages = re.sub(r'\bdoc/(\S+)/(\S+)\.\1\.(.)\b', r'${mandir}/\1/man\3/\2.\3', manpages)
15 manpages = re.sub(r'\bdoc/(\S+)\.(.)\b', r'${mandir}/man\2/\1.\2', manpages)
16 return manpages
17
18def get_commands_apt_doc(d, bb, manpages):
19 s = list()
20 __dir_cache__ = list()
21 for m in manpages.split():
22 dest = get_files_apt_doc(d, bb, m)
23 dir = os.path.dirname(dest)
24 if not dir in __dir_cache__:
25 s.append("install -d ${D}/%s" % dir)
26 __dir_cache__.append(dir)
27 s.append("install -m 0644 %s ${D}/%s" % (m, dest))
28 return "\n".join(s)
29
30PACKAGES += "${PN}-utils ${PN}-utils-doc"
31FILES_${PN} = "${bindir}/apt-cdrom ${bindir}/apt-get \
32 ${bindir}/apt-config ${bindir}/apt-cache \
33 ${libdir}/apt ${libdir}/libapt*.so.* \
34 ${localstatedir} ${sysconfdir} \
35 ${libdir}/dpkg \
36 ${systemd_unitdir}/system \
37 "
38RDEPENDS_${PN} += "perl"
39FILES_${PN}-utils = "${bindir}/apt-sortpkgs ${bindir}/apt-extracttemplates"
40FILES_${PN}-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-manpages'))} \
41 ${docdir}/apt"
42FILES_${PN}-utils-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-utils-manpages'))}"
43FILES_${PN}-dev = "${libdir}/libapt*.so ${includedir}"
44
45inherit systemd
46
47SYSTEMD_SERVICE_${PN} = "apt-daily.timer"
48
49do_install () {
50 set -x
51 install -d ${D}${bindir}
52 install -m 0755 bin/apt-key ${D}${bindir}/
53 install -m 0755 bin/apt-cdrom ${D}${bindir}/
54 install -m 0755 bin/apt-get ${D}${bindir}/
55 install -m 0755 bin/apt-config ${D}${bindir}/
56 install -m 0755 bin/apt-cache ${D}${bindir}/
57
58 install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
59 install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
60
61 oe_libinstall -so -C bin libapt-pkg ${D}${libdir}
62 oe_libinstall -so -C bin libapt-inst ${D}${libdir}
63
64 install -d ${D}${libdir}/apt/methods
65 install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
66
67 install -d ${D}${libdir}/dpkg/methods/apt
68 install -m 0644 ${S}/dselect/desc.apt ${D}${libdir}/dpkg/methods/apt/
69 install -m 0644 ${S}/dselect/names ${D}${libdir}/dpkg/methods/apt/
70 install -m 0755 ${S}/dselect/install ${D}${libdir}/dpkg/methods/apt/
71 install -m 0755 ${S}/dselect/setup ${D}${libdir}/dpkg/methods/apt/
72 install -m 0755 ${S}/dselect/update ${D}${libdir}/dpkg/methods/apt/
73
74 install -d ${D}${sysconfdir}/apt
75 install -d ${D}${sysconfdir}/apt/apt.conf.d
76 install -d ${D}${sysconfdir}/apt/sources.list.d
77 install -d ${D}${sysconfdir}/apt/preferences.d
78 install -d ${D}${localstatedir}/lib/apt/lists/partial
79 install -d ${D}${localstatedir}/cache/apt/archives/partial
80 install -d ${D}${docdir}/apt/examples
81 install -m 0644 ${S}/doc/examples/* ${D}${docdir}/apt/examples/
82
83 install -d ${D}${includedir}/apt-pkg/
84 install -m 0644 include/apt-pkg/*.h ${D}${includedir}/apt-pkg/
85
86 install -d ${D}${systemd_unitdir}/system/
87 install -m 0755 ${S}/debian/apt.systemd.daily ${D}${libdir}/apt/
88 install -m 0644 ${S}/debian/apt-daily.service ${D}${systemd_unitdir}/system/
89 sed -i 's#/usr/lib/apt/#${libdir}/apt/#g' ${D}${systemd_unitdir}/system/apt-daily.service
90 install -m 0644 ${S}/debian/apt-daily.timer ${D}${systemd_unitdir}/system/
91 install -d ${D}${sysconfdir}/cron.daily/
92 install -m 0755 ${S}/debian/apt.apt-compat.cron.daily ${D}${sysconfdir}/cron.daily/
93 sed -i 's#/usr/lib/apt/#${libdir}/apt/#g' ${D}${sysconfdir}/cron.daily/apt.apt-compat.cron.daily
94}
diff --git a/meta/recipes-devtools/apt/apt.inc b/meta/recipes-devtools/apt/apt.inc
deleted file mode 100644
index 87d533782f..0000000000
--- a/meta/recipes-devtools/apt/apt.inc
+++ /dev/null
@@ -1,40 +0,0 @@
1SUMMARY = "Advanced front-end for dpkg"
2DESCRIPTION = "Provides command-line tools for searching and managing as well \
3as querying information about packages as a low-level access to all features \
4of the libapt-pkg library."
5LICENSE = "GPLv2.0+"
6SECTION = "base"
7
8SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/${BPN}/${PV}/${BPN}_${PV}.tar.xz \
9 file://use-host.patch \
10 file://makerace.patch \
11 file://no-nls-dpkg.patch \
12 file://fix-gcc-4.6-null-not-defined.patch \
13 file://truncate-filename.patch \
14 file://nodoc.patch \
15 file://disable-configure-in-makefile.patch \
16 file://disable-test.patch \
17 file://0001-environment.mak-musl-based-systems-can-generate-shar.patch \
18 file://0001-apt-1.2.12-Fix-musl-build.patch \
19 file://0001-Include-array.h-for-std-array.patch \
20 file://0001-The-C.UTF-8-locale-is-not-portable-use-std-locale-cl.patch \
21 "
22SRC_URI[md5sum] = "d30eed9304e82ea8238c854b5c5a34d9"
23SRC_URI[sha256sum] = "03ded4f5e9b8d43ecec083704b2dcabf20c182ed382db9ac7251da0b0b038059"
24LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
25
26# the package is taken from snapshots.debian.org; that source is static and goes stale
27# so we check the latest upstream from a directory that does get updated
28UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/"
29
30inherit autotools gettext useradd upstream-version-is-even
31
32EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
33
34do_configure_prepend() {
35 rm -rf ${S}/buildlib/config.sub
36 rm -rf ${S}/buildlib/config.guess
37}
38
39USERADD_PACKAGES = "${PN}"
40USERADD_PARAM_${PN} = "--system --no-create-home --home-dir /nonexistent --shell /bin/false --user-group _apt"
diff --git a/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch b/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch
new file mode 100644
index 0000000000..199f11bf20
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch
@@ -0,0 +1,29 @@
1From 9023589317843df4e57f8ebef1d9a8398ddb929d Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 28 May 2020 15:34:05 +0000
4Subject: [PATCH] CMakeLists.txt: avoid changing install paths based on host
5 distro
6
7Upstream-Status: Inappropriate [oe-core specific]
8Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
9---
10 CMakeLists.txt | 6 +++---
11 1 file changed, 3 insertions(+), 3 deletions(-)
12
13diff --git a/CMakeLists.txt b/CMakeLists.txt
14index 2cd4f8e..4759812 100644
15--- a/CMakeLists.txt
16+++ b/CMakeLists.txt
17@@ -21,9 +21,9 @@ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-lgcov")
18 set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "-lgcov")
19
20 # Work around bug in GNUInstallDirs
21-if (EXISTS "/etc/debian_version")
22- set(CMAKE_INSTALL_LIBEXECDIR "lib")
23-endif()
24+#if (EXISTS "/etc/debian_version")
25+set(CMAKE_INSTALL_LIBEXECDIR "lib")
26+#endif()
27
28 # Include stuff
29 include(Misc)
diff --git a/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch b/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
new file mode 100644
index 0000000000..cc422b74dc
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
@@ -0,0 +1,27 @@
1From cd164b353ba7958d51b2f33f4079fb9787c983e2 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 10 May 2019 14:16:47 +0200
4Subject: [PATCH] Disable documentation directory altogether
5
6Even when WITH_DOC=False, the build requires po4a to generate manpages.
7
8Upstream-Status: Inappropriate [oe-core specific]
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10
11---
12 CMakeLists.txt | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/CMakeLists.txt b/CMakeLists.txt
16index 83334ba..2cd4f8e 100644
17--- a/CMakeLists.txt
18+++ b/CMakeLists.txt
19@@ -232,7 +232,7 @@ add_subdirectory(apt-private)
20 add_subdirectory(apt-inst)
21 add_subdirectory(cmdline)
22 add_subdirectory(completions)
23-add_subdirectory(doc)
24+#add_subdirectory(doc)
25 add_subdirectory(dselect)
26 add_subdirectory(ftparchive)
27 add_subdirectory(methods)
diff --git a/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch b/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
new file mode 100644
index 0000000000..2322bd8e78
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
@@ -0,0 +1,48 @@
1From 1ad21140787a6b8b0f774f75b50444d2c30a56f6 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 21 May 2020 20:28:12 +0000
4Subject: [PATCH] Do not configure packages on installation
5
6This is done separately in do_rootfs().
7
8Upstream-Status: Inappropriate [oe-core specific]
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10
11---
12 apt-pkg/packagemanager.cc | 5 ++++-
13 1 file changed, 4 insertions(+), 1 deletion(-)
14
15diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
16index 156f7ad..0f6a87c 100644
17--- a/apt-pkg/packagemanager.cc
18+++ b/apt-pkg/packagemanager.cc
19@@ -1013,10 +1013,12 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
20 return false;
21
22 if (Immediate == true) {
23+#if 0
24 // Perform immediate configuration of the package.
25 if (SmartConfigure(Pkg, Depth + 1) == false)
26 _error->Error(_("Could not perform immediate configuration on '%s'. "
27 "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
28+#endif
29 }
30
31 return true;
32@@ -1111,6 +1113,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
33 }
34 }
35
36+#if 0
37 // Final run through the configure phase
38 if (ConfigureAll() == false)
39 return Failed;
40@@ -1125,7 +1128,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
41 return Failed;
42 }
43 }
44-
45+#endif
46 return Completed;
47 }
48 // PM::DoInstallPostFork - compat /*{{{*/
diff --git a/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch b/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
new file mode 100644
index 0000000000..d3d3ab026d
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
@@ -0,0 +1,29 @@
1From b18d7aa7d71b53b86bac21cd1d8c3accabb28f2b Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 10 May 2019 16:47:38 +0200
4Subject: [PATCH] Do not init tables from dpkg configuration
5
6This would require sysroot relocation logic, and it's easier to just disable them.
7
8Upstream-Status: Inappropriate [oe-core specific]
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10
11---
12 apt-pkg/init.cc | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
16index a619368..6e5a6cf 100644
17--- a/apt-pkg/init.cc
18+++ b/apt-pkg/init.cc
19@@ -281,8 +281,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
20 return _error->Error(_("Unable to determine a suitable packaging system type"));
21 }
22
23- if (pkgInitArchTupleMap() == false)
24- return false;
25+// if (pkgInitArchTupleMap() == false)
26+// return false;
27
28 return Sys->Initialize(Cnf);
29 }
diff --git a/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
index f7ac19bfd0..a6e8ef1e51 100644
--- a/meta/recipes-devtools/apt/apt/0001-apt-1.2.12-Fix-musl-build.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
@@ -1,10 +1,7 @@
1From 33b97e089d4a98d3acd20bd78337dd915b989bc2 Mon Sep 17 00:00:00 2001 1From 081c6be2f2f1cd77f399ea414f8d89c107826624 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 5 Aug 2016 15:24:27 -0500 3Date: Fri, 22 May 2020 15:29:23 +0000
4Subject: [PATCH] apt 1.2.12: Fix musl build 4Subject: [PATCH] Fix musl build
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8 5
9methods/connect.cc: Musl doesn't support AI_IDN flag in netdb.h 6methods/connect.cc: Musl doesn't support AI_IDN flag in netdb.h
10header so define it manually. 7header so define it manually.
@@ -12,15 +9,14 @@ apt-pkg/contrib/srvrec.h: Add explicity include of sys/types.h
12to avoid errors in types u_int_SIZE. 9to avoid errors in types u_int_SIZE.
13 10
14Upstream-Status: Pending 11Upstream-Status: Pending
15 12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
16Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
17--- 13---
18 apt-pkg/contrib/srvrec.h | 1 + 14 apt-pkg/contrib/srvrec.h | 1 +
19 methods/connect.cc | 3 +++ 15 methods/connect.cc | 5 +++++
20 2 files changed, 4 insertions(+) 16 2 files changed, 6 insertions(+)
21 17
22diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h 18diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
23index 01b8102..15b6875 100644 19index e22b7a1..b1115f5 100644
24--- a/apt-pkg/contrib/srvrec.h 20--- a/apt-pkg/contrib/srvrec.h
25+++ b/apt-pkg/contrib/srvrec.h 21+++ b/apt-pkg/contrib/srvrec.h
26@@ -9,6 +9,7 @@ 22@@ -9,6 +9,7 @@
@@ -28,23 +24,22 @@ index 01b8102..15b6875 100644
28 #define SRVREC_H 24 #define SRVREC_H
29 25
30+#include <sys/types.h> 26+#include <sys/types.h>
31 #include <arpa/nameser.h>
32 #include <vector>
33 #include <string> 27 #include <string>
28 #include <vector>
29 #include <arpa/nameser.h>
34diff --git a/methods/connect.cc b/methods/connect.cc 30diff --git a/methods/connect.cc b/methods/connect.cc
35index 07a730b..bb0ab5a 100644 31index 1d6f891..122df35 100644
36--- a/methods/connect.cc 32--- a/methods/connect.cc
37+++ b/methods/connect.cc 33+++ b/methods/connect.cc
38@@ -33,6 +33,9 @@ 34@@ -42,6 +42,11 @@
39 #include <sys/socket.h> 35 #include "connect.h"
40 #include <arpa/inet.h> 36 #include "rfc2553emu.h"
41 #include <netdb.h> 37 #include <apti18n.h>
38+
42+#ifndef AI_IDN 39+#ifndef AI_IDN
43+#define AI_IDN 0x0040 40+#define AI_IDN 0x0040
44+#endif 41+#endif
42+
43 /*}}}*/
45 44
46 #include "connect.h" 45 static std::string LastHost;
47 #include "rfc2553emu.h"
48--
492.1.4
50
diff --git a/meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch b/meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch
deleted file mode 100644
index e4a8faa2b4..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-Include-array.h-for-std-array.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 4d64ec843185bf6fd1b85c3a6a4c4e3c968c8ab1 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 20 Jan 2019 18:56:58 -0800
4Subject: [PATCH] Include <array.h> for std::array
5
6When compiling using clang/libc++ it fails to build because this header
7is not included, with libstdc++ this seems to be pulled in
8automatically.
9
10Fixes below error
11
12apt-pkg/contrib/strutl.cc:949:38: error: implicit instantiation of undefined template 'std::__1::array<const char *const, 7>'
13 std::array<char const * const, 7> c_weekdays = {{ "sun", "mon", "tue", "wed", "thu", "fri", "sat" }};
14
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16Upstream-Status: Backport [https://github.com/Debian/apt/commit/24a59c62efafbdb8387b2d3c5616b04b9fd21306]
17---
18 apt-pkg/contrib/strutl.cc | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
22index 60d0ca8..c2bfcbc 100644
23--- a/apt-pkg/contrib/strutl.cc
24+++ b/apt-pkg/contrib/strutl.cc
25@@ -21,6 +21,7 @@
26 #include <apt-pkg/fileutl.h>
27 #include <apt-pkg/error.h>
28
29+#include <array>
30 #include <algorithm>
31 #include <iomanip>
32 #include <locale>
33--
342.20.1
35
diff --git a/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
index 734ba00d4f..8c4cc04503 100644
--- a/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
@@ -1,11 +1,9 @@
1From dfc1370d50322e2e9d225a7a63b44993fc01a727 Mon Sep 17 00:00:00 2001 1From 742fbb243f99e940c3e6b31296f7f416f550a57a Mon Sep 17 00:00:00 2001
2From: Roy Li <rongqing.li@windriver.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 22 May 2015 08:05:15 +0800 3Date: Thu, 21 May 2020 20:13:25 +0000
4Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our 4Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our
5 dpkg callings" 5 dpkg callings"
6 6
7Upstream-Status: Inappropriate [embedded specific]
8
9This reverts commit a2a75ff4516f7609f4c55b42270abb8d08943c60, which 7This reverts commit a2a75ff4516f7609f4c55b42270abb8d08943c60, which
10always run 'dpkg --configure -a' at the end of our dpkg callings, 8always run 'dpkg --configure -a' at the end of our dpkg callings,
11but it does not work for cross-compile, since the rootfs dir can not 9but it does not work for cross-compile, since the rootfs dir can not
@@ -14,19 +12,19 @@ be passed into dpkg, and lead to the below similar error:
14 |mkdir: cannot create directory '/usr/lib/opkg': Permission denied 12 |mkdir: cannot create directory '/usr/lib/opkg': Permission denied
15 ------- 13 -------
16 14
17Signed-off-by: Roy Li <rongqing.li@windriver.com> 15Upstream-Status: Inappropriate [embedded specific]
16Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
17
18--- 18---
19 apt-pkg/deb/dpkgpm.cc | 9 ++------- 19 apt-pkg/deb/dpkgpm.cc | 9 ++-------
20 test/integration/test-apt-progress-fd-deb822 | 14 +++++++------- 20 1 file changed, 2 insertions(+), 7 deletions(-)
21 test/integration/test-no-fds-leaked-to-maintainer-scripts | 6 ++----
22 3 files changed, 11 insertions(+), 18 deletions(-)
23 21
24diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc 22diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
25index 533d9b367..6ce81bbd9 100644 23index ffa880d..5875e86 100644
26--- a/apt-pkg/deb/dpkgpm.cc 24--- a/apt-pkg/deb/dpkgpm.cc
27+++ b/apt-pkg/deb/dpkgpm.cc 25+++ b/apt-pkg/deb/dpkgpm.cc
28@@ -1041,12 +1041,6 @@ void pkgDPkgPM::BuildPackagesProgressMap() 26@@ -1215,12 +1215,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
29 PackagesTotal++; 27 }
30 } 28 }
31 } 29 }
32- /* one extra: We don't want the progress bar to reach 100%, especially not 30- /* one extra: We don't want the progress bar to reach 100%, especially not
@@ -37,90 +35,14 @@ index 533d9b367..6ce81bbd9 100644
37- ++PackagesTotal; 35- ++PackagesTotal;
38 } 36 }
39 /*}}}*/ 37 /*}}}*/
40 bool pkgDPkgPM::Go(int StatusFd) 38 bool pkgDPkgPM::Go(int StatusFd) /*{{{*/
41@@ -1268,8 +1262,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) 39@@ -1716,7 +1710,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
42 40
43 // support subpressing of triggers processing for special 41 // support subpressing of triggers processing for special
44 // cases like d-i that runs the triggers handling manually 42 // cases like d-i that runs the triggers handling manually
45+ bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all"); 43- if (_config->FindB("DPkg::ConfigurePending", true))
44+ bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all");
45+ if (0)
46 List.emplace_back(Item::ConfigurePending, pkgCache::PkgIterator());
47 }
46 bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false); 48 bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false);
47- if (_config->FindB("DPkg::ConfigurePending", true) == true)
48+ if (_config->FindB("DPkg::ConfigurePending", SmartConf) == true)
49 List.push_back(Item(Item::ConfigurePending, PkgIterator()));
50
51 // for the progress
52diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822
53index a8d59608d..0c6a9bbbf 100755
54--- a/test/integration/test-apt-progress-fd-deb822
55+++ b/test/integration/test-apt-progress-fd-deb822
56@@ -27,36 +27,36 @@ Message: Installing testing (amd64)
57
58 Status: progress
59 Package: testing:amd64
60-Percent: 16.6667
61+Percent: 20
62 Message: Preparing testing (amd64)
63
64 Status: progress
65 Package: testing:amd64
66-Percent: 33.3333
67+Percent: 40
68 Message: Unpacking testing (amd64)
69
70 Status: progress
71 Package: testing:amd64
72-Percent: 50.0000
73+Percent: 60.0000
74 Message: Preparing to configure testing (amd64)
75
76 Status: progress
77-Percent: 50.0000
78+Percent: 60.0000
79 Message: Running dpkg
80
81 Status: progress
82 Package: testing:amd64
83-Percent: 50.0000
84+Percent: 60.0000
85 Message: Configuring testing (amd64)
86
87 Status: progress
88 Package: testing:amd64
89-Percent: 66.6667
90+Percent: 80
91 Message: Configuring testing (amd64)
92
93 Status: progress
94 Package: testing:amd64
95-Percent: 83.3333
96+Percent: 100
97 Message: Installed testing (amd64)
98
99 Status: progress
100diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
101index d86e638cd..ef6d23be2 100755
102--- a/test/integration/test-no-fds-leaked-to-maintainer-scripts
103+++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
104@@ -59,8 +59,7 @@ startup packages configure
105 configure $PKGNAME 1.0 <none>
106 status unpacked $PKGNAME 1.0
107 status half-configured $PKGNAME 1.0
108-status installed $PKGNAME 1.0
109-startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
110+status installed $PKGNAME 1.0" cut -f 3- -d' ' rootdir/var/log/dpkg.log
111 }
112 checkinstall
113
114@@ -85,8 +84,7 @@ status config-files $PKGNAME 1.0
115 status config-files $PKGNAME 1.0
116 status config-files $PKGNAME 1.0
117 status config-files $PKGNAME 1.0
118-status not-installed $PKGNAME <none>
119-startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
120+status not-installed $PKGNAME <none>" cut -f 3- -d' ' rootdir/var/log/dpkg.log
121 }
122 checkpurge
123
124--
1252.11.0
126
diff --git a/meta/recipes-devtools/apt/apt/0001-The-C.UTF-8-locale-is-not-portable-use-std-locale-cl.patch b/meta/recipes-devtools/apt/apt/0001-The-C.UTF-8-locale-is-not-portable-use-std-locale-cl.patch
deleted file mode 100644
index ce5c005086..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-The-C.UTF-8-locale-is-not-portable-use-std-locale-cl.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 7e8839731ae3fdf7502b91643aa6b252f6c5eaa6 Mon Sep 17 00:00:00 2001
2From: Adrian Bunk <bunk@stusta.de>
3Date: Thu, 14 May 2020 00:08:21 +0300
4Subject: The C.UTF-8 locale is not portable, use std::locale::classic()
5
6Upstream-Status: Inappropriate [Similar fix already in apt >= 1.3]
7Signed-off-by: Adrian Bunk <bunk@stusta.de>
8---
9 ftparchive/writer.cc | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
13index 25963820a..6ad571d2a 100644
14--- a/ftparchive/writer.cc
15+++ b/ftparchive/writer.cc
16@@ -984,7 +984,7 @@ ReleaseWriter::ReleaseWriter(FileFd * const GivenOutput, string const &/*DB*/) :
17 AddPatterns(_config->FindVector("APT::FTPArchive::Release::Patterns"));
18
19 time_t const now = time(NULL);
20- auto const posix = std::locale("C.UTF-8");
21+ auto const posix = std::locale::classic();
22
23 // FIXME: use TimeRFC1123 here? But that uses GMT to satisfy HTTP/1.1
24 std::ostringstream datestr;
25--
262.20.1
27
diff --git a/meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch b/meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch
deleted file mode 100644
index 042372b515..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-environment.mak-musl-based-systems-can-generate-shar.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From 2f8aa21ace375c18977ed908b291c80a210a93c6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 31 Dec 2015 08:06:12 +0000
4Subject: [PATCH] environment.mak: musl based systems can generate shared
5 objects too
6
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8---
9Upstream-Status: Pending
10
11 buildlib/environment.mak.in | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in
15index b0a8d9d..3a52344 100644
16--- a/buildlib/environment.mak.in
17+++ b/buildlib/environment.mak.in
18@@ -68,7 +68,7 @@ NEED_SOCKLEN_T_DEFINE = @NEED_SOCKLEN_T_DEFINE@
19
20 # Shared library things
21 HOST_OS = @host_os@
22-ifneq ($(words $(filter gnu% linux-gnu% kfreebsd-gnu% %-gnu,$(HOST_OS))),0)
23+ifneq ($(words $(filter gnu% linux-gnu% kfreebsd-gnu% %-gnu linux-musl%,$(HOST_OS))),0)
24 SONAME_MAGIC=-Wl,-soname -Wl,
25 LFLAGS_SO=
26 else
27--
282.6.4
29
diff --git a/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch b/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch
deleted file mode 100644
index 7c2f64e3e6..0000000000
--- a/meta/recipes-devtools/apt/apt/disable-configure-in-makefile.patch
+++ /dev/null
@@ -1,18 +0,0 @@
1Disable configure at compilation stage
2
3Upstream-Status: Inappropriate [configuration]
4Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
5
6Index: apt-0.9.7.7/Makefile
7===================================================================
8--- apt-0.9.7.7.orig/Makefile
9+++ apt-0.9.7.7/Makefile
10@@ -33,7 +33,7 @@ veryclean: clean
11 # The startup target builds the necessary configure scripts. It should
12 # be used after a CVS checkout.
13 CONVERTED=environment.mak include/config.h include/apti18n.h build/doc/Doxyfile makefile
14-include buildlib/configure.mak
15+#include buildlib/configure.mak
16 $(BUILDDIR)/include/config.h: buildlib/config.h.in
17 $(BUILDDIR)/include/apti18n.h: buildlib/apti18n.h.in
18 $(BUILDDIR)/environment.mak: buildlib/environment.mak.in
diff --git a/meta/recipes-devtools/apt/apt/disable-test.patch b/meta/recipes-devtools/apt/apt/disable-test.patch
deleted file mode 100644
index d16b5c771b..0000000000
--- a/meta/recipes-devtools/apt/apt/disable-test.patch
+++ /dev/null
@@ -1,72 +0,0 @@
1From 67bc7948e0a721c75d636931abc105da5dcb0763 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
3Date: Thu, 26 May 2016 15:32:11 -0500
4Subject: [PATCH] [PATCH] disable test
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Upstream-Status: Inappropriate [configuration]
10
11test needs gtest package, so not build the test dir
12
13Signed-off-by: Roy Li <rongqing.li@windriver.com>
14Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
15---
16 Makefile | 9 +++------
17 configure.ac | 7 -------
18 2 files changed, 3 insertions(+), 13 deletions(-)
19
20Index: apt-1.2.24/Makefile
21===================================================================
22--- apt-1.2.24.orig/Makefile
23+++ apt-1.2.24/Makefile
24@@ -9,8 +9,8 @@ endif
25 .PHONY: default
26 default: startup all
27
28-.PHONY: fast headers library clean veryclean all binary program doc test update-po
29-all headers library clean veryclean binary program doc manpages docbook test update-po startup dirs:
30+.PHONY: fast headers library clean veryclean all binary program doc update-po
31+all headers library clean veryclean binary program doc manpages docbook update-po startup dirs:
32 $(MAKE) -C vendor $@
33 $(MAKE) -C apt-pkg $@
34 $(MAKE) -C apt-inst $@
35@@ -21,8 +21,6 @@ all headers library clean veryclean bina
36 $(MAKE) -C dselect $@
37 # $(MAKE) -C doc $@
38 $(MAKE) -C po $@
39- # FIXME: -C test has issue swith parallel builds, investigate!
40- -$(MAKE) -C test $@
41
42 fast:
43 $(MAKE) -C vendor all
44@@ -32,9 +30,8 @@ fast:
45 $(MAKE) -C methods all
46 $(MAKE) -C cmdline all
47 $(MAKE) -C ftparchive all
48- $(MAKE) -C test all
49
50-all headers library clean veryclean binary program doc manpages docbook test update-po: startup dirs
51+all headers library clean veryclean binary program doc manpages docbook update-po: startup dirs
52
53 dirs: startup
54
55Index: apt-1.2.24/configure.ac
56===================================================================
57--- apt-1.2.24.orig/configure.ac
58+++ apt-1.2.24/configure.ac
59@@ -90,13 +90,6 @@ AC_CHECK_LIB(curl, curl_easy_init,
60 AC_MSG_ERROR([failed: I need CURL due https support]),
61 )
62
63-AC_LANG_PUSH([C++])
64-AC_CHECK_HEADER(gtest/gtest.h,,
65- AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
66-)
67-AC_LANG_POP([C++])
68-
69-
70 AC_SUBST(BDBLIB)
71
72 HAVE_ZLIB=no
diff --git a/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch b/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch
deleted file mode 100644
index 899c6ef2fc..0000000000
--- a/meta/recipes-devtools/apt/apt/fix-gcc-4.6-null-not-defined.patch
+++ /dev/null
@@ -1,14 +0,0 @@
1Upstream-Status: Pending
2
3Index: apt-1.2.24/apt-pkg/contrib/weakptr.h
4===================================================================
5--- apt-1.2.24.orig/apt-pkg/contrib/weakptr.h
6+++ apt-1.2.24/apt-pkg/contrib/weakptr.h
7@@ -21,6 +21,7 @@
8 #ifndef WEAK_POINTER_H
9 #define WEAK_POINTER_H
10
11+#include <cstdlib>
12 #include <set>
13 #include <stddef.h>
14
diff --git a/meta/recipes-devtools/apt/apt/makerace.patch b/meta/recipes-devtools/apt/apt/makerace.patch
deleted file mode 100644
index 0c686d6e27..0000000000
--- a/meta/recipes-devtools/apt/apt/makerace.patch
+++ /dev/null
@@ -1,23 +0,0 @@
1I was seeing various issues with parallel make, mainly due to to what was likely
2partially installed headers. If you change into the source directory and
3"NOISY=1 make ../obj/apt-pkg/sourcelist.opic" in apt-pkg, you'll see it
4doesn't have any dependencies on the headers being installed. This patch
5fixes that so things build correctly.
6
7RP 2012/3/19
8
9Upstream-Status: Pending
10
11Index: apt-1.2.24/buildlib/library.mak
12===================================================================
13--- apt-1.2.24.orig/buildlib/library.mak
14+++ apt-1.2.24/buildlib/library.mak
15@@ -65,7 +65,7 @@ $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR
16
17 # Compilation rules
18 vpath %.cc $(SUBDIRS)
19-$(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS)
20+$(OBJ)/%.opic: %.cc $(LIBRARYDEPENDS) $($(LOCAL)-HEADERS)
21 echo Compiling $< to $@
22 $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXSTD) $(CXXFLAGS) $(PICFLAGS) -o $@ '$(abspath $<)'
23 $(DoDep)
diff --git a/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch b/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch
deleted file mode 100644
index 98b6c96caa..0000000000
--- a/meta/recipes-devtools/apt/apt/no-nls-dpkg.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1Upstream-Status: Pending
2
3Index: apt-1.2.24/apt-pkg/deb/dpkgpm.cc
4===================================================================
5--- apt-1.2.24.orig/apt-pkg/deb/dpkgpm.cc
6+++ apt-1.2.24/apt-pkg/deb/dpkgpm.cc
7@@ -54,6 +54,12 @@
8 #include <apti18n.h>
9 /*}}}*/
10
11+#ifdef USE_NLS
12+#define _dpkg(x) dgettext("dpkg", x)
13+#else
14+#define _dpkg(x) x
15+#endif
16+
17 using namespace std;
18
19 APT_PURE static string
20@@ -1703,7 +1709,7 @@ void pkgDPkgPM::WriteApportReport(const
21 }
22
23 // check if its not a follow up error
24- const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured");
25+ const char *needle = _dpkg("dependency problems - leaving unconfigured");
26 if(strstr(errormsg, needle) != NULL) {
27 std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl;
28 return;
diff --git a/meta/recipes-devtools/apt/apt/noconfigure.patch b/meta/recipes-devtools/apt/apt/noconfigure.patch
deleted file mode 100644
index ebc67203b4..0000000000
--- a/meta/recipes-devtools/apt/apt/noconfigure.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1Upstream-Status: Inappropriate [configuration]
2Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
3
4
5diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
6index 249542c..0a1911f 100644
7--- a/apt-pkg/packagemanager.cc
8+++ b/apt-pkg/packagemanager.cc
9@@ -952,10 +952,12 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
10 return false;
11
12 if (Immediate == true) {
13+#if 0
14 // Perform immedate configuration of the package.
15 if (SmartConfigure(Pkg, Depth + 1) == false)
16 _error->Error(_("Could not perform immediate configuration on '%s'. "
17 "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
18+#endif
19 }
20
21 return true;
22@@ -1038,6 +1040,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
23 }
24 }
25
26+#if 0
27 // Final run through the configure phase
28 if (ConfigureAll() == false)
29 return Failed;
30@@ -1052,6 +1055,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
31 return Failed;
32 }
33 }
34+#endif
35
36 return Completed;
37 }
diff --git a/meta/recipes-devtools/apt/apt/nodoc.patch b/meta/recipes-devtools/apt/apt/nodoc.patch
deleted file mode 100644
index 78cf53884a..0000000000
--- a/meta/recipes-devtools/apt/apt/nodoc.patch
+++ /dev/null
@@ -1,18 +0,0 @@
1Disable documentation
2
3Upstream-Status: Inappropriate [configuration]
4Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
5
6Index: apt-1.2.24/Makefile
7===================================================================
8--- apt-1.2.24.orig/Makefile
9+++ apt-1.2.24/Makefile
10@@ -19,7 +19,7 @@ all headers library clean veryclean bina
11 $(MAKE) -C cmdline $@
12 $(MAKE) -C ftparchive $@
13 $(MAKE) -C dselect $@
14- $(MAKE) -C doc $@
15+# $(MAKE) -C doc $@
16 $(MAKE) -C po $@
17 # FIXME: -C test has issue swith parallel builds, investigate!
18 -$(MAKE) -C test $@
diff --git a/meta/recipes-devtools/apt/apt/triehash b/meta/recipes-devtools/apt/apt/triehash
new file mode 100755
index 0000000000..b08bc6ec30
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/triehash
@@ -0,0 +1,728 @@
1#!/usr/bin/perl -w
2#
3# Copyright (C) 2016 Julian Andres Klode <jak@jak-linux.org>
4#
5# Permission is hereby granted, free of charge, to any person obtaining a copy
6# of this software and associated documentation files (the "Software"), to deal
7# in the Software without restriction, including without limitation the rights
8# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9# copies of the Software, and to permit persons to whom the Software is
10# furnished to do so, subject to the following conditions:
11#
12# The above copyright notice and this permission notice shall be included in
13# all copies or substantial portions of the Software.
14#
15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21# THE SOFTWARE.
22
23=encoding utf8
24
25=head1 NAME
26
27triehash - Generate a perfect hash function derived from a trie.
28
29=cut
30
31use strict;
32use warnings;
33use utf8;
34use Getopt::Long;
35
36=head1 SYNOPSIS
37
38B<triehash> [S<I<option>>] [S<I<input file>>]
39
40=head1 DESCRIPTION
41
42triehash takes a list of words in input file and generates a function and
43an enumeration to describe the word
44
45=head1 INPUT FILE FORMAT
46
47The file consists of multiple lines of the form:
48
49 [label ~ ] word [= value]
50
51This maps word to value, and generates an enumeration with entries of the form:
52
53 label = value
54
55If I<label> is undefined, the word will be used, the minus character will be
56replaced by an underscore. If value is undefined it is counted upwards from
57the last value.
58
59There may also be one line of the format
60
61 [ label ~] = value
62
63Which defines the value to be used for non-existing keys. Note that this also
64changes default value for other keys, as for normal entries. So if you place
65
66 = 0
67
68at the beginning of the file, unknown strings map to 0, and the other strings
69map to values starting with 1. If label is not specified, the default is
70I<Unknown>.
71
72=head1 OPTIONS
73
74=over 4
75
76=item B<-C>I<.c file> B<--code>=I<.c file>
77
78Generate code in the given file.
79
80=item B<-H>I<header file> B<--header>=I<header file>
81
82Generate a header in the given file, containing a declaration of the hash
83function and an enumeration.
84
85=item B<--enum-name=>I<word>
86
87The name of the enumeration.
88
89=item B<--function-name=>I<word>
90
91The name of the function.
92
93=item B<--label-prefix=>I<word>
94
95The prefix to use for labels.
96
97=item B<--label-uppercase>
98
99Uppercase label names when normalizing them.
100
101=item B<--namespace=>I<name>
102
103Put the function and enum into a namespace (C++)
104
105=item B<--class=>I<name>
106
107Put the function and enum into a class (C++)
108
109=item B<--enum-class>
110
111Generate an enum class instead of an enum (C++)
112
113=item B<--counter-name=>I<name>
114
115Use I<name> for a counter that is set to the latest entry in the enumeration
116+ 1. This can be useful for defining array sizes.
117
118=item B<--ignore-case>
119
120Ignore case for words.
121
122=item B<--multi-byte>=I<value>
123
124Generate code reading multiple bytes at once. The value is a string of power
125of twos to enable. The default value is 320 meaning that 8, 4, and single byte
126reads are enabled. Specify 0 to disable multi-byte completely, or add 2 if you
127also want to allow 2-byte reads. 2-byte reads are disabled by default because
128they negatively affect performance on older Intel architectures.
129
130This generates code for both multiple bytes and single byte reads, but only
131enables the multiple byte reads of GNU C compatible compilers, as the following
132extensions are used:
133
134=over 8
135
136=item Byte-aligned integers
137
138We must be able to generate integers that are aligned to a single byte using:
139
140 typedef uint64_t __attribute__((aligned (1))) triehash_uu64;
141
142=item Byte-order
143
144The macros __BYTE_ORDER__ and __ORDER_LITTLE_ENDIAN__ must be defined.
145
146=back
147
148We forcefully disable multi-byte reads on platforms where the variable
149I<__ARM_ARCH> is defined and I<__ARM_FEATURE_UNALIGNED> is not defined,
150as there is a measurable overhead from emulating the unaligned reads on
151ARM.
152
153=item B<--language=>I<language>
154
155Generate a file in the specified language. Currently known are 'C' and 'tree',
156the latter generating a tree.
157
158=item B<--include=>I<header>
159
160Add the header to the include statements of the header file. The value must
161be surrounded by quotes or angle brackets for C code. May be specified multiple
162times.
163
164=back
165
166=cut
167
168my $unknown = -1;
169my $unknown_label = undef;
170my $counter_start = 0;
171my $enum_name = 'PerfectKey';
172my $function_name = 'PerfectHash';
173my $enum_class = 0;
174
175my $code_name = '-';
176my $header_name = '-';
177my $code;
178my $header;
179my $label_prefix = undef;
180my $label_uppercase = 0;
181my $ignore_case = 0;
182my $multi_byte = '320';
183my $language = 'C';
184my $counter_name = undef;
185my @includes = ();
186
187
188Getopt::Long::config('default',
189 'bundling',
190 'no_getopt_compat',
191 'no_auto_abbrev',
192 'permute',
193 'auto_help');
194
195GetOptions ('code|C=s' => \$code_name,
196 'header|H=s' => \$header_name,
197 'function-name=s' => \$function_name,
198 'label-prefix=s' => \$label_prefix,
199 'label-uppercase' => \$label_uppercase,
200 'ignore-case' => \$ignore_case,
201 'enum-name=s' => \$enum_name,
202 'language|l=s' => \$language,
203 'multi-byte=s' => \$multi_byte,
204 'enum-class' => \$enum_class,
205 'include=s' => \@includes,
206 'counter-name=s' => \$counter_name)
207 or die('Could not parse options!');
208
209
210# This implements a simple trie. Each node has three attributes:
211#
212# children - A hash of keys to other nodes
213# value - The value to be stored here
214# label - A named representation of the value.
215#
216# The key at each level of the trie can consist of one or more bytes, and the
217# trie can be normalized to a form where all keys at a level have the same
218# length using rebuild_tree().
219package Trie {
220
221 sub new {
222 my $class = shift;
223 my $self = {};
224 bless $self, $class;
225
226 $self->{children} = {};
227 $self->{value} = undef;
228 $self->{label} = undef;
229
230 return $self;
231 }
232
233 # Return the largest power of 2 smaller or equal to the argument
234 sub alignpower2 {
235 my ($self, $length) = @_;
236
237 return 8 if ($length >= 8 && $multi_byte =~ /3/);
238 return 4 if ($length >= 4 && $multi_byte =~ /2/);
239 return 2 if ($length >= 2 && $multi_byte =~ /1/);
240
241 return 1;
242 }
243
244 # Split the key into a head block and a tail
245 sub split_key {
246 my ($self, $key) = @_;
247 my $length = length $key;
248 my $split = $self->alignpower2($length);
249
250 return (substr($key, 0, $split), substr($key, $split));
251 }
252
253 # Given a key, a label, and a value, insert that into the tree, possibly
254 # replacing an existing node.
255 sub insert {
256 my ($self, $key, $label, $value) = @_;
257
258 if (length($key) == 0) {
259 $self->{label} = $label;
260 $self->{value} = $value;
261 return;
262 }
263
264 my ($child, $tail) = $self->split_key($key);
265
266 $self->{children}{$child} = Trie->new if (!defined($self->{children}{$child}));
267
268 $self->{children}{$child}->insert($tail, $label, $value);
269 }
270
271 # Construct a new trie that only contains words of a given length. This
272 # is used to split up the common trie after knowing all words, so we can
273 # switch on the expected word length first, and have the per-trie function
274 # implement simple longest prefix matching.
275 sub filter_depth {
276 my ($self, $togo) = @_;
277
278 my $new = Trie->new;
279
280 if ($togo != 0) {
281 my $found = 0;
282 foreach my $key (sort keys %{$self->{children}}) {
283 if ($togo > length($key) || defined $self->{children}{$key}->{value}) {
284 my $child = $self->{children}{$key}->filter_depth($togo - length($key));
285
286 $new->{children}{$key}= $child if defined $child;
287 $found = 1 if defined $child;
288 }
289 }
290 return if (!$found);
291 } else {
292 $new->{value} = $self->{value};
293 $new->{label} = $self->{label};
294 }
295
296 return $new;
297 }
298
299 # (helper for rebuild_tree)
300 # Reinsert all value nodes into the specified $trie, prepending $prefix
301 # to their $paths.
302 sub reinsert_value_nodes_into {
303 my ($self, $trie, $prefix) = @_;
304
305 $trie->insert($prefix, $self->{label}, $self->{value}) if (defined $self->{value});
306
307 foreach my $key (sort keys %{$self->{children}}) {
308 $self->{children}{$key}->reinsert_value_nodes_into($trie, $prefix . $key);
309 }
310 }
311
312 # (helper for rebuild_tree)
313 # Find the earliest point to split a key. Normally, we split at the maximum
314 # power of 2 that is greater or equal than the length of the key. When we
315 # are building an ASCII-optimised case-insensitive trie that simply ORs
316 # each byte with 0x20, we need to split at the first ambiguous character:
317 #
318 # For example, the words a-bc and a\rbc are identical in such a situation:
319 # '-' | 0x20 == '-' == '\r' | 0x20
320 # We cannot simply switch on all 4 bytes at once, but need to split before
321 # the ambiguous character so we can process the ambiguous character on its
322 # own.
323 sub find_earlier_split {
324 my ($self, $key) = @_;
325
326 if ($ignore_case) {
327 for my $i (0..length($key)-1) {
328 # If the key starts with an ambiguous character, we need to
329 # take only it. Otherwise, we need to take everything
330 # before the character.
331 return $self->alignpower2($i || 1) if (main::ambiguous(substr($key, $i, 1)));
332 }
333 }
334 return $self->alignpower2(length $key);
335 }
336
337 # This rebuilds the trie, splitting each key before ambiguous characters
338 # as explained in find_earlier_split(), and then chooses the smallest
339 # such split at each level, so that all keys at all levels have the same
340 # length (so we can use a multi-byte switch).
341 sub rebuild_tree {
342 my $self = shift;
343 # Determine if/where we need to split before an ambiguous character
344 my $new_split = 99999999999999999;
345 foreach my $key (sort keys %{$self->{children}}) {
346 my $special_length = $self->find_earlier_split($key);
347 $new_split = $special_length if ($special_length < $new_split);
348 }
349
350 # Start building a new uniform trie
351 my $newself = Trie->new;
352 $newself->{label} = $self->{label};
353 $newself->{value} = $self->{value};
354 $newself->{children} = {};
355
356 foreach my $key (sort keys %{$self->{children}}) {
357 my $head = substr($key, 0, $new_split);
358 my $tail = substr($key, $new_split);
359 # Rebuild the child node at $head, pushing $tail downwards
360 $newself->{children}{$head} //= Trie->new;
361 $self->{children}{$key}->reinsert_value_nodes_into($newself->{children}{$head}, $tail);
362 # We took up to one special character of each key label. There might
363 # be more, so we need to rebuild recursively.
364 $newself->{children}{$head} = $newself->{children}{$head}->rebuild_tree();
365 }
366
367 return $newself;
368 }
369}
370
371# Code generator for C and C++
372package CCodeGen {
373 my $static = ($code_name eq $header_name) ? "static " : "";
374 my $enum_specifier = $enum_class ? "enum class" : "enum";
375
376 sub new {
377 my $class = shift;
378 my $self = {};
379 bless $self, $class;
380
381 return $self;
382 }
383
384 sub open_output {
385 my $self = shift;
386 if ($code_name ne '-') {
387 open($code, '>', $code_name) or die "Cannot open $code_name: $!" ;
388 } else {
389 $code = *STDOUT;
390 }
391 if($code_name eq $header_name) {
392 $header = $code;
393 } elsif ($header_name ne '-') {
394 open($header, '>', $header_name) or die "Cannot open $header_name: $!" ;
395 } else {
396 $header = *STDOUT;
397 }
398 }
399
400 sub mangle_label {
401 my ($self, $label) = @_;
402
403 $label = $label_prefix . $label if defined($label_prefix);
404 $label = uc $label if $label_uppercase;
405
406 return $label;
407 }
408
409 sub word_to_label {
410 my ($self, $word) = @_;
411
412 $word =~ s/_/__/g;
413 $word =~ s/-/_/g;
414
415 return $self->mangle_label($word);
416 }
417
418 # Return a case label, by shifting and or-ing bytes in the word
419 sub case_label {
420 my ($self, $key) = @_;
421
422 return sprintf("'%s'", substr($key, 0, 1)) if not $multi_byte;
423
424 my $output = '0';
425
426 for my $i (0..length($key)-1) {
427 $output .= sprintf("| onechar('%s', %d, %d)", substr($key, $i, 1), 8 * $i, 8*length($key));
428 }
429
430 return $output;
431 }
432
433 # Return an appropriate read instruction for $length bytes from $offset
434 sub switch_key {
435 my ($self, $offset, $length) = @_;
436
437 return "string[$offset]" if $length == 1;
438 return sprintf("*((triehash_uu%s*) &string[$offset])", $length * 8);
439 }
440
441 # Render the trie so that it matches the longest prefix.
442 sub print_table {
443 my ($self, $trie, $fh, $indent, $index) = @_;
444 $indent //= 0;
445 $index //= 0;
446
447 # If we have children, try to match them.
448 if (%{$trie->{children}}) {
449 # The difference between lowercase and uppercase alphabetical characters
450 # is that they have one bit flipped. If we have alphabetical characters
451 # in the search space, and the entire search space works fine if we
452 # always turn on the flip, just OR the character we are switching over
453 # with the bit.
454 my $want_use_bit = 0;
455 my $can_use_bit = 1;
456 my $key_length = 0;
457 foreach my $key (sort keys %{$trie->{children}}) {
458 $can_use_bit &= not main::ambiguous($key);
459 $want_use_bit |= ($key =~ /^[a-zA-Z]+$/);
460 $key_length = length($key);
461 }
462
463 if ($ignore_case && $can_use_bit && $want_use_bit) {
464 printf { $fh } ((' ' x $indent) . "switch(%s | 0x%s) {\n", $self->switch_key($index, $key_length), '20' x $key_length);
465 } else {
466 printf { $fh } ((' ' x $indent) . "switch(%s) {\n", $self->switch_key($index, $key_length));
467 }
468
469 my $notfirst = 0;
470 foreach my $key (sort keys %{$trie->{children}}) {
471 if ($notfirst) {
472 printf { $fh } (' ' x $indent . " break;\n");
473 }
474 if ($ignore_case) {
475 printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label(lc($key)));
476 printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label(uc($key))) if lc($key) ne uc($key) && !($can_use_bit && $want_use_bit);
477 } else {
478 printf { $fh } (' ' x $indent . "case %s:\n", $self->case_label($key));
479 }
480
481 $self->print_table($trie->{children}{$key}, $fh, $indent + 1, $index + length($key));
482
483 $notfirst=1;
484 }
485
486 printf { $fh } (' ' x $indent . "}\n");
487 }
488
489
490 # This node has a value, so it is a possible end point. If no children
491 # matched, we have found our longest prefix.
492 if (defined $trie->{value}) {
493 printf { $fh } (' ' x $indent . "return %s;\n", ($enum_class ? "${enum_name}::" : '').$trie->{label});
494 }
495
496 }
497
498 sub print_words {
499 my ($self, $trie, $fh, $indent, $sofar) = @_;
500
501 $indent //= 0;
502 $sofar //= '';
503
504
505 printf { $fh } (' ' x $indent."%s = %s,\n", $trie->{label}, $trie->{value}) if defined $trie->{value};
506
507 foreach my $key (sort keys %{$trie->{children}}) {
508 $self->print_words($trie->{children}{$key}, $fh, $indent, $sofar . $key);
509 }
510 }
511
512 sub print_functions {
513 my ($self, $trie, %lengths) = @_;
514 foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
515 print { $code } ("static enum ${enum_name} ${function_name}${local_length}(const char *string)\n");
516 print { $code } ("{\n");
517 $self->print_table($trie->filter_depth($local_length)->rebuild_tree(), $code, 1);
518 printf { $code } (" return %s$unknown_label;\n", ($enum_class ? "${enum_name}::" : ''));
519 print { $code } ("}\n");
520 }
521 }
522
523 sub main {
524 my ($self, $trie, $num_values, %lengths) = @_;
525 print { $header } ("#ifndef TRIE_HASH_${function_name}\n");
526 print { $header } ("#define TRIE_HASH_${function_name}\n");
527 print { $header } ("#include <stddef.h>\n");
528 print { $header } ("#include <stdint.h>\n");
529 foreach my $include (@includes) {
530 print { $header } ("#include $include\n");
531 }
532 printf { $header } ("enum { $counter_name = $num_values };\n") if (defined($counter_name));
533 print { $header } ("${enum_specifier} ${enum_name} {\n");
534 $self->print_words($trie, $header, 1);
535 printf { $header } (" $unknown_label = $unknown,\n");
536 print { $header } ("};\n");
537 print { $header } ("${static}enum ${enum_name} ${function_name}(const char *string, size_t length);\n");
538
539 print { $code } ("#include \"$header_name\"\n") if ($header_name ne $code_name);
540
541 if ($multi_byte) {
542 print { $code } ("#ifdef __GNUC__\n");
543 foreach my $i ((16, 32, 64)) {
544 print { $code } ("typedef uint${i}_t __attribute__((aligned (1))) triehash_uu${i};\n");
545 print { $code } ("typedef char static_assert${i}[__alignof__(triehash_uu${i}) == 1 ? 1 : -1];\n");
546 }
547
548 print { $code } ("#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\n");
549 print { $code } ("#define onechar(c, s, l) (((uint64_t)(c)) << (s))\n");
550 print { $code } ("#else\n");
551 print { $code } ("#define onechar(c, s, l) (((uint64_t)(c)) << (l-8-s))\n");
552 print { $code } ("#endif\n");
553 print { $code } ("#if (!defined(__ARM_ARCH) || defined(__ARM_FEATURE_UNALIGNED)) && !defined(TRIE_HASH_NO_MULTI_BYTE)\n");
554 print { $code } ("#define TRIE_HASH_MULTI_BYTE\n");
555 print { $code } ("#endif\n");
556 print { $code } ("#endif /*GNUC */\n");
557
558 print { $code } ("#ifdef TRIE_HASH_MULTI_BYTE\n");
559 $self->print_functions($trie, %lengths);
560 $multi_byte = 0;
561 print { $code } ("#else\n");
562 $self->print_functions($trie, %lengths);
563 print { $code } ("#endif /* TRIE_HASH_MULTI_BYTE */\n");
564 } else {
565 $self->print_functions($trie, %lengths);
566 }
567
568 print { $code } ("${static}enum ${enum_name} ${function_name}(const char *string, size_t length)\n");
569 print { $code } ("{\n");
570 print { $code } (" switch (length) {\n");
571 foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
572 print { $code } (" case $local_length:\n");
573 print { $code } (" return ${function_name}${local_length}(string);\n");
574 }
575 print { $code } (" default:\n");
576 printf { $code } (" return %s$unknown_label;\n", ($enum_class ? "${enum_name}::" : ''));
577 print { $code } (" }\n");
578 print { $code } ("}\n");
579
580 # Print end of header here, in case header and code point to the same file
581 print { $header } ("#endif /* TRIE_HASH_${function_name} */\n");
582 }
583}
584
585# A character is ambiguous if the 1<<5 (0x20) bit does not correspond to the
586# lower case bit. A word is ambiguous if any character is. This definition is
587# used to check if we can perform the |0x20 optimization when building a case-
588# insensitive trie.
589sub ambiguous {
590 my $word = shift;
591
592 foreach my $char (split //, $word) {
593 # If 0x20 does not solely indicate lowercase, it is ambiguous
594 return 1 if ord(lc($char)) != (ord($char) | 0x20);
595 return 1 if ord(uc($char)) != (ord($char) & ~0x20);
596 }
597
598 return 0;
599}
600
601sub build_trie {
602 my $codegen = shift;
603 my $trie = Trie->new;
604
605 my $counter = $counter_start;
606 my $prev_value;
607 my %lengths;
608
609 open(my $input, '<', $ARGV[0]) or die "Cannot open $ARGV[0]: $!";
610 while (my $line = <$input>) {
611 my ($label, $word, $value) = $line =~ m{
612 (?:\s*([^~\s]+)\s*~)? # Label ~
613 (?:\s*([^~=\s]+))? # Word
614 (?:\s*=\s*([^\s]+)\s+)? # = Value
615 \s*
616 }x;
617
618 if (defined $word) {
619 $label //= $codegen->word_to_label($word);
620 $value //= defined $prev_value ? $prev_value + 1 : 0;
621
622 $trie->insert($word, $label, $value);
623 $lengths{length($word)} = 1;
624 } elsif (defined $value) {
625 $unknown = $value;
626 $unknown_label = $codegen->mangle_label($label) if defined $label;
627 } else {
628 die "Invalid line: $line";
629 }
630
631 $prev_value = $value;
632 $counter = $value + 1 if $value >= $counter;
633 }
634
635 $unknown_label //= $codegen->mangle_label('Unknown');
636
637 return ($trie, $counter, %lengths);
638}
639
640# Generates an ASCII art tree
641package TreeCodeGen {
642
643 sub new {
644 my $class = shift;
645 my $self = {};
646 bless $self, $class;
647
648 return $self;
649 }
650
651 sub mangle_label {
652 my ($self, $label) = @_;
653 return $label;
654 }
655
656 sub word_to_label {
657 my ($self, $word) = @_;
658 return $word;
659 }
660
661 sub main {
662 my ($self, $trie, $counter, %lengths) = @_;
663 printf { $code } ("┌────────────────────────────────────────────────────┐\n");
664 printf { $code } ("│ Initial trie │\n");
665 printf { $code } ("└────────────────────────────────────────────────────┘\n");
666 $self->print($trie);
667 printf { $code } ("┌────────────────────────────────────────────────────┐\n");
668 printf { $code } ("│ Rebuilt trie │\n");
669 printf { $code } ("└────────────────────────────────────────────────────┘\n");
670 $self->print($trie->rebuild_tree());
671
672 foreach my $local_length (sort { $a <=> $b } (keys %lengths)) {
673 printf { $code } ("┌────────────────────────────────────────────────────┐\n");
674 printf { $code } ("│ Trie for words of length %-4d │\n", $local_length);
675 printf { $code } ("└────────────────────────────────────────────────────┘\n");
676 $self->print($trie->filter_depth($local_length)->rebuild_tree());
677 }
678 }
679
680 sub open_output {
681 my $self = shift;
682 if ($code_name ne '-') {
683 open($code, '>:encoding(utf8)', $code_name) or die "Cannot open $ARGV[0]: $!" ;
684 } else {
685 $code = *STDOUT;
686 binmode($code, ':encoding(utf8)');
687 }
688 }
689
690 # Print a trie
691 sub print {
692 my ($self, $trie, $depth) = @_;
693 $depth //= 0;
694
695 print { $code } (' → ') if defined($trie->{label});
696 print { $code } ($trie->{label} // '', "\n");
697 foreach my $key (sort keys %{$trie->{children}}) {
698 print { $code } ('│ ' x ($depth), "├── $key");
699 $self->print($trie->{children}{$key}, $depth + 1);
700 }
701 }
702}
703
704my %codegens = (
705 C => 'CCodeGen',
706 tree => 'TreeCodeGen',
707);
708
709
710defined($codegens{$language}) or die "Unknown language $language. Valid choices: ", join(', ', keys %codegens);
711my $codegen = $codegens{$language}->new();
712my ($trie, $counter, %lengths) = build_trie($codegen);
713
714$codegen->open_output();
715$codegen->main($trie, $counter, %lengths);
716
717
718=head1 LICENSE
719
720triehash is available under the MIT/Expat license, see the source code
721for more information.
722
723=head1 AUTHOR
724
725Julian Andres Klode <jak@jak-linux.org>
726
727=cut
728
diff --git a/meta/recipes-devtools/apt/apt/truncate-filename.patch b/meta/recipes-devtools/apt/apt/truncate-filename.patch
deleted file mode 100644
index db1c42b66c..0000000000
--- a/meta/recipes-devtools/apt/apt/truncate-filename.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1strutl.cc: the filename can't be longer than 255
2
3The URItoFileName translates the path into the filename, but the
4filename can't be longer than 255 according to
5/usr/include/linux/limits.h.
6
7Truncate it when it is longer than 240 (leave some spaces for
8".Packages" and "._Release" suffix)
9
10Upstream-Status: Pending
11Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
12---
13 apt-pkg/contrib/strutl.cc | 7 ++++++-
14 1 file changed, 6 insertions(+), 1 deletion(-)
15
16diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
17--- a/apt-pkg/contrib/strutl.cc
18+++ b/apt-pkg/contrib/strutl.cc
19@@ -399,7 +399,12 @@ string URItoFileName(const string &URI)
20 // "\x00-\x20{}|\\\\^\\[\\]<>\"\x7F-\xFF";
21 string NewURI = QuoteString(U,"\\|{}[]<>\"^~_=!@#$%^&*");
22 replace(NewURI.begin(),NewURI.end(),'/','_');
23- return NewURI;
24+
25+ // Truncate from the head when it is longer than 240
26+ if(NewURI.length() > 240)
27+ return NewURI.substr(NewURI.length() - 240, NewURI.length() - 1);
28+ else
29+ return NewURI;
30 }
31 /*}}}*/
32 // Base64Encode - Base64 Encoding routine for short strings /*{{{*/
33--
341.7.10.4
35
diff --git a/meta/recipes-devtools/apt/apt/use-host.patch b/meta/recipes-devtools/apt/apt/use-host.patch
deleted file mode 100644
index b30fcff0d6..0000000000
--- a/meta/recipes-devtools/apt/apt/use-host.patch
+++ /dev/null
@@ -1,15 +0,0 @@
1Upstream-Status: Pending
2
3Index: apt-0.9.7.7/configure.ac
4===================================================================
5--- apt-0.9.7.7.orig/configure.ac
6+++ apt-0.9.7.7/configure.ac
7@@ -112,7 +112,7 @@ dnl This is often the dpkg architecture
8 dnl First check against the full canonical canoncial-system-type in $target
9 dnl and if that fails, just look for the cpu
10 AC_MSG_CHECKING(debian architecture)
11-archset="`dpkg-architecture -qDEB_HOST_ARCH`"
12+archset="`echo $host_alias|cut -d'-' -f1`"
13 if test "x$archset" = "x"; then
14 AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
15 fi
diff --git a/meta/recipes-devtools/apt/apt_1.2.31.bb b/meta/recipes-devtools/apt/apt_1.2.31.bb
deleted file mode 100644
index ae0bce933d..0000000000
--- a/meta/recipes-devtools/apt/apt_1.2.31.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1DEPENDS = "curl db zlib"
2RDEPENDS_${PN} = "dpkg bash debianutils"
3require apt.inc
4
5require apt-package.inc
6
7PACKAGECONFIG ??= "lzma"
8PACKAGECONFIG[lzma] = "ac_cv_lib_lzma_lzma_easy_encoder=yes,ac_cv_lib_lzma_lzma_easy_encoder=no,xz"
9PACKAGECONFIG[bz2] = "ac_cv_lib_bz2_BZ2_bzopen=yes,ac_cv_lib_bz2_BZ2_bzopen=no,bzip2"
10PACKAGECONFIG[lz4] = "ac_cv_lib_lz4_LZ4F_createCompressionContext=yes,ac_cv_lib_lz4_LZ4F_createCompressionContext=no,lz4"
11
12FILES_${PN} += "${bindir}/apt-key"
13apt-manpages += "doc/apt-key.8"
14
15do_install_append() {
16 #Write the correct apt-architecture to apt.conf
17 APT_CONF=${D}/etc/apt/apt.conf
18 echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
19 oe_libinstall -so -C bin libapt-private ${D}${libdir}/
20}
diff --git a/meta/recipes-devtools/apt/apt_1.8.2.1.bb b/meta/recipes-devtools/apt/apt_1.8.2.1.bb
new file mode 100644
index 0000000000..bd1f4f39c3
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt_1.8.2.1.bb
@@ -0,0 +1,106 @@
1SUMMARY = "Advanced front-end for dpkg"
2LICENSE = "GPLv2.0+"
3SECTION = "base"
4
5# Triehash script taken from https://github.com/julian-klode/triehash
6SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \
7 file://triehash \
8 file://0001-Disable-documentation-directory-altogether.patch \
9 file://0001-Fix-musl-build.patch \
10 file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \
11 "
12
13SRC_URI_append_class-native = " \
14 file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
15 file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
16 file://0001-Do-not-configure-packages-on-installation.patch \
17 "
18
19SRC_URI[sha256sum] = "6d447f2e9437ec24e78350b63bb0592bee1f050811d51990b0c783183b0983f8"
20LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
21
22# the package is taken from snapshots.debian.org; that source is static and goes stale
23# so we check the latest upstream from a directory that does get updated
24UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/"
25
26inherit cmake perlnative bash-completion upstream-version-is-even
27
28BBCLASSEXTEND = "native"
29
30DEPENDS += "virtual/libiconv virtual/libintl db gnutls lz4 zlib bzip2 xz"
31
32EXTRA_OECMAKE_append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False -DUSE_NLS=False -DDPKG_DATADIR=${datadir}/dpkg -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash"
33
34do_configure_prepend () {
35 echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )" >> ${WORKDIR}/toolchain.cmake
36
37}
38
39# Unfortunately apt hardcodes this all over the place
40FILES_${PN} += "${prefix}/lib/dpkg ${prefix}/lib/apt"
41RDEPENDS_${PN} += "bash perl dpkg"
42
43do_install_append_class-native() {
44 cat > ${D}${sysconfdir}/apt/apt.conf.sample << EOF
45Dir "${STAGING_DIR_NATIVE}/"
46{
47 State "var/lib/apt/"
48 {
49 Lists "#APTCONF#/lists/";
50 status "#ROOTFS#/var/lib/dpkg/status";
51 };
52 Cache "var/cache/apt/"
53 {
54 Archives "archives/";
55 pkgcache "";
56 srcpkgcache "";
57 };
58 Bin "${STAGING_BINDIR_NATIVE}/"
59 {
60 methods "${STAGING_LIBDIR}/apt/methods/";
61 gzip "/bin/gzip";
62 dpkg "dpkg";
63 dpkg-source "dpkg-source";
64 dpkg-buildpackage "dpkg-buildpackage";
65 apt-get "apt-get";
66 apt-cache "apt-cache";
67 };
68 Etc "#APTCONF#"
69 {
70 Preferences "preferences";
71 };
72 Log "var/log/apt";
73};
74
75APT
76{
77 Install-Recommends "true";
78 Immediate-Configure "false";
79 Architecture "i586";
80 Get
81 {
82 Assume-Yes "true";
83 };
84};
85
86Acquire
87{
88 AllowInsecureRepositories "true";
89};
90
91DPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-debsig"};
92DPkg::Path "";
93EOF
94}
95
96do_install_append_class-target() {
97 #Write the correct apt-architecture to apt.conf
98 APT_CONF=${D}/etc/apt/apt.conf
99 echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
100}
101
102# Avoid non-reproducible -src package
103do_install_append () {
104 sed -i -e "s,${B},,g" \
105 ${B}/apt-pkg/tagfile-keys.cc
106}
diff --git a/meta/recipes-devtools/apt/files/apt.conf b/meta/recipes-devtools/apt/files/apt.conf
deleted file mode 100644
index c95a5b07af..0000000000
--- a/meta/recipes-devtools/apt/files/apt.conf
+++ /dev/null
@@ -1,42 +0,0 @@
1Dir "${STAGING_DIR_NATIVE}/"
2{
3 State "var/lib/apt/"
4 {
5 Lists "#APTCONF#/lists/";
6 status "#ROOTFS#/var/lib/dpkg/status";
7 };
8 Cache "var/cache/apt/"
9 {
10 Archives "archives/";
11 pkgcache "";
12 srcpkgcache "";
13 };
14 Bin "${STAGING_BINDIR_NATIVE}/"
15 {
16 methods "${STAGING_LIBDIR}/apt/methods/";
17 gzip "/bin/gzip";
18 dpkg "dpkg";
19 dpkg-source "dpkg-source";
20 dpkg-buildpackage "dpkg-buildpackage";
21 apt-get "apt-get";
22 apt-cache "apt-cache";
23 };
24 Etc "#APTCONF#"
25 {
26 Preferences "preferences";
27 };
28};
29
30APT
31{
32 Install-Recommends "true";
33 Immediate-Configure "false";
34 Architecture "i586";
35 Get
36 {
37 Assume-Yes "true";
38 Force-Yes "true"
39 };
40};
41
42DPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-force-overwrite";"--no-debsig"};
diff --git a/meta/recipes-devtools/apt/files/db_linking_hack.patch b/meta/recipes-devtools/apt/files/db_linking_hack.patch
deleted file mode 100644
index a61d4b07c2..0000000000
--- a/meta/recipes-devtools/apt/files/db_linking_hack.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1Upstream-Status: Backport
2
3Index: apt-0.7.3/configure.ac
4===================================================================
5--- apt-0.7.3.orig/configure.ac 2007-07-01 10:38:45.000000000 +0000
6+++ apt-0.7.3/configure.ac 2007-08-21 13:39:26.000000000 +0000
7@@ -67,8 +67,20 @@
8 [AC_DEFINE(HAVE_BDB)
9 BDBLIB="-ldb"
10 AC_MSG_RESULT(yes)],
11- [BDBLIB=""
12- AC_MSG_RESULT(no)]
13+
14+ LIBS="$LIBS -lpthread"
15+ [AC_MSG_CHECKING(if we can link against BerkeleyDB with pthread)
16+ AC_LINK_IFELSE(
17+ [AC_LANG_PROGRAM(
18+ [#include <db.h>],
19+ [int r, s, t; db_version(&r, &s, &t);]
20+ )],
21+ [AC_DEFINE(HAVE_BDB)
22+ BDBLIB="-ldb -lpthread"
23+ AC_MSG_RESULT(yes)],
24+ [BDBLIB=""
25+ AC_MSG_RESULT(no)]
26+ )]
27 )]
28 )
29
diff --git a/meta/recipes-devtools/apt/files/environment.patch b/meta/recipes-devtools/apt/files/environment.patch
deleted file mode 100644
index 9a0303803e..0000000000
--- a/meta/recipes-devtools/apt/files/environment.patch
+++ /dev/null
@@ -1,15 +0,0 @@
1Upstream-Status: Backport
2
3Index: apt-0.6.46.2/buildlib/environment.mak.in
4===================================================================
5--- apt-0.6.46.2.orig/buildlib/environment.mak.in 2007-03-29 11:38:58.000000000 +0100
6+++ apt-0.6.46.2/buildlib/environment.mak.in 2007-03-29 11:39:12.000000000 +0100
7@@ -62,7 +62,7 @@
8
9 # Shared library things
10 HOST_OS = @host_os@
11-ifneq ($(words $(filter linux-gnu gnu% %gnu,$(HOST_OS))),0)
12+ifneq ($(words $(filter linux-gnu linux-gnueabi gnu% %gnu,$(HOST_OS))),0)
13 SONAME_MAGIC=-Wl,-soname -Wl,
14 LFLAGS_SO=
15 else
diff --git a/meta/recipes-devtools/apt/files/no-curl.patch b/meta/recipes-devtools/apt/files/no-curl.patch
deleted file mode 100644
index 0838552b26..0000000000
--- a/meta/recipes-devtools/apt/files/no-curl.patch
+++ /dev/null
@@ -1,54 +0,0 @@
1Upstream-Status: Inappropriate [configuration]
2From 5d61ac822fd9a3871cd5089389c210606232ecdc Mon Sep 17 00:00:00 2001
3From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
4Date: Thu, 26 May 2016 15:34:45 -0500
5Subject: [PATCH] Upstream-Status: Inappropriate [configuration]
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
11---
12 configure.ac | 7 -------
13 methods/makefile | 7 -------
14 2 files changed, 14 deletions(-)
15
16diff --git a/configure.ac b/configure.ac
17index e47f459..cd24264 100644
18--- a/configure.ac
19+++ b/configure.ac
20@@ -83,13 +83,6 @@ AC_CHECK_HEADER(db.h,
21
22 LIBS="$saveLIBS"
23
24-AC_CHECK_LIB(curl, curl_easy_init,
25- [AC_CHECK_HEADER(curl/curl.h,
26- curl_ok=yes,
27- curl_ok=no)],
28- AC_MSG_ERROR([failed: I need CURL due https support]),
29-)
30-
31 AC_SUBST(BDBLIB)
32
33 HAVE_ZLIB=no
34diff --git a/methods/makefile b/methods/makefile
35index 3274e92..255086b 100644
36--- a/methods/makefile
37+++ b/methods/makefile
38@@ -51,13 +51,6 @@ LIB_MAKES = apt-pkg/makefile
39 SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc server.cc
40 include $(PROGRAM_H)
41
42-# The https method
43-PROGRAM=https
44-SLIBS = -lapt-pkg -lcurl $(INTLLIBS) -lresolv
45-LIB_MAKES = apt-pkg/makefile
46-SOURCE = https.cc server.cc
47-include $(PROGRAM_H)
48-
49 # The ftp method
50 PROGRAM=ftp
51 SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) -lresolv
52--
532.1.4
54