summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/apt
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/apt')
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/apt-0.9.9.4-CVE-2014-0478.patch193
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/disable-configure-in-makefile.patch18
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/fix-gcc-4.6-null-not-defined.patch12
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/makerace.patch23
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/no-ko-translation.patch11
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/no-nls-dpkg.patch26
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/noconfigure.patch36
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/nodoc.patch18
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/truncate-filename.patch35
-rw-r--r--meta/recipes-devtools/apt/apt-0.9.9.4/use-host.patch15
-rw-r--r--meta/recipes-devtools/apt/apt-native.inc68
-rw-r--r--meta/recipes-devtools/apt/apt-native_0.9.9.4.bb9
-rw-r--r--meta/recipes-devtools/apt/apt-package.inc78
-rw-r--r--meta/recipes-devtools/apt/apt.inc38
-rw-r--r--meta/recipes-devtools/apt/apt_0.9.9.4.bb18
-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.patch38
19 files changed, 722 insertions, 0 deletions
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/apt-0.9.9.4-CVE-2014-0478.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/apt-0.9.9.4-CVE-2014-0478.patch
new file mode 100644
index 0000000000..79a6897572
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/apt-0.9.9.4-CVE-2014-0478.patch
@@ -0,0 +1,193 @@
1This patch comes from:
2https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=73;filename=apt_0.9.7.9%2Bdeb7u2.debdiff;att=1;bug=749795
3
4Upstream-Status: Backport
5
6Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
7Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
8
9diff -uarN apt-0.9.9.4-org/cmdline/apt-get.cc apt-0.9.9.4/cmdline/apt-get.cc
10--- apt-0.9.9.4-org/cmdline/apt-get.cc 2014-08-29 15:37:42.587156134 +0800
11+++ apt-0.9.9.4/cmdline/apt-get.cc 2014-08-29 15:51:16.672334086 +0800
12@@ -1046,25 +1046,8 @@
13 return true;
14 }
15 /*}}}*/
16-// CheckAuth - check if each download comes form a trusted source /*{{{*/
17-// ---------------------------------------------------------------------
18-/* */
19-static bool CheckAuth(pkgAcquire& Fetcher)
20+static bool AuthPrompt(std::string UntrustedList, bool const PromptUser)
21 {
22- string UntrustedList;
23- for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I < Fetcher.ItemsEnd(); ++I)
24- {
25- if (!(*I)->IsTrusted())
26- {
27- UntrustedList += string((*I)->ShortDesc()) + " ";
28- }
29- }
30-
31- if (UntrustedList == "")
32- {
33- return true;
34- }
35-
36 ShowList(c2out,_("WARNING: The following packages cannot be authenticated!"),UntrustedList,"");
37
38 if (_config->FindB("APT::Get::AllowUnauthenticated",false) == true)
39@@ -1073,6 +1056,9 @@
40 return true;
41 }
42
43+ if (PromptUser == false)
44+ return _error->Error(_("Some packages could not be authenticated"));
45+
46 if (_config->FindI("quiet",0) < 2
47 && _config->FindB("APT::Get::Assume-Yes",false) == false)
48 {
49@@ -1090,6 +1076,28 @@
50 return _error->Error(_("There are problems and -y was used without --force-yes"));
51 }
52 /*}}}*/
53+// CheckAuth - check if each download comes form a trusted source /*{{{*/
54+// ---------------------------------------------------------------------
55+/* */
56+static bool CheckAuth(pkgAcquire& Fetcher, bool PromptUser=true)
57+{
58+ string UntrustedList;
59+ for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I < Fetcher.ItemsEnd(); ++I)
60+ {
61+ if (!(*I)->IsTrusted())
62+ {
63+ UntrustedList += string((*I)->ShortDesc()) + " ";
64+ }
65+ }
66+
67+ if (UntrustedList == "")
68+ {
69+ return true;
70+ }
71+
72+ return AuthPrompt(UntrustedList, PromptUser);
73+}
74+
75 // InstallPackages - Actually download and install the packages /*{{{*/
76 // ---------------------------------------------------------------------
77 /* This displays the informative messages describing what is going to
78@@ -2482,6 +2490,7 @@
79
80 // Load the requestd sources into the fetcher
81 unsigned J = 0;
82+ std::string UntrustedList;
83 for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++)
84 {
85 string Src;
86@@ -2491,7 +2500,10 @@
87 delete[] Dsc;
88 return _error->Error(_("Unable to find a source package for %s"),Src.c_str());
89 }
90-
91+
92+ if (Last->Index().IsTrusted() == false)
93+ UntrustedList += Src + " ";
94+
95 string srec = Last->AsStr();
96 string::size_type pos = srec.find("\nVcs-");
97 while (pos != string::npos)
98@@ -2575,7 +2587,11 @@
99 Last->Index().SourceInfo(*Last,*I),Src);
100 }
101 }
102-
103+
104+ // check authentication status of the source as well
105+ if (UntrustedList != "" && !AuthPrompt(UntrustedList, false))
106+ return false;
107+
108 // Display statistics
109 unsigned long long FetchBytes = Fetcher.FetchNeeded();
110 unsigned long long FetchPBytes = Fetcher.PartialPresent();
111diff -uarN apt-0.9.9.4-org/test/integration/framework apt-0.9.9.4/test/integration/framework
112--- apt-0.9.9.4-org/test/integration/framework 2014-08-29 15:37:42.623156154 +0800
113+++ apt-0.9.9.4/test/integration/framework 2014-08-29 15:55:23.592197940 +0800
114@@ -151,7 +151,7 @@
115 mkdir rootdir aptarchive keys
116 cd rootdir
117 mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
118- mkdir -p var/cache var/lib var/log
119+ mkdir -p var/cache var/lib var/log tmp
120 mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
121 touch var/lib/dpkg/available
122 mkdir -p usr/lib/apt
123@@ -910,3 +910,35 @@
124 local IGNORE
125 read IGNORE
126 }
127+
128+testsuccess() {
129+ if [ "$1" = '--nomsg' ]; then
130+ shift
131+ else
132+ msgtest 'Test for successful execution of' "$*"
133+ fi
134+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output"
135+ if $@ >${OUTPUT} 2>&1; then
136+ msgpass
137+ else
138+ echo >&2
139+ cat >&2 $OUTPUT
140+ msgfail
141+ fi
142+}
143+
144+testfailure() {
145+ if [ "$1" = '--nomsg' ]; then
146+ shift
147+ else
148+ msgtest 'Test for failure in execution of' "$*"
149+ fi
150+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
151+ if $@ >${OUTPUT} 2>&1; then
152+ echo >&2
153+ cat >&2 $OUTPUT
154+ msgfail
155+ else
156+ msgpass
157+ fi
158+}
159diff -uarN apt-0.9.9.4-org/test/integration/test-apt-get-source-authenticated apt-0.9.9.4/test/integration/test-apt-get-source-authenticated
160--- apt-0.9.9.4-org/test/integration/test-apt-get-source-authenticated 1970-01-01 08:00:00.000000000 +0800
161+++ apt-0.9.9.4/test/integration/test-apt-get-source-authenticated 2014-08-29 15:58:06.137156796 +0800
162@@ -0,0 +1,31 @@
163+#!/bin/sh
164+#
165+# Regression test for debian bug #749795. Ensure that we fail with
166+# a error if apt-get source foo will download a source that comes
167+# from a unauthenticated repository
168+#
169+set -e
170+
171+TESTDIR=$(readlink -f $(dirname $0))
172+. $TESTDIR/framework
173+
174+setupenvironment
175+configarchitecture "i386"
176+
177+# a "normal" package with source and binary
178+buildsimplenativepackage 'foo' 'all' '2.0'
179+
180+setupaptarchive --no-update
181+
182+APTARCHIVE=$(readlink -f ./aptarchive)
183+rm -f $APTARCHIVE/dists/unstable/*Release*
184+
185+# update without authenticated InRelease file
186+testsuccess aptget update
187+
188+# this all should fail
189+testfailure aptget install -y foo
190+testfailure aptget source foo
191+
192+# allow overriding the warning
193+testsuccess aptget source --allow-unauthenticated foo
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/disable-configure-in-makefile.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/disable-configure-in-makefile.patch
new file mode 100644
index 0000000000..7c2f64e3e6
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/disable-configure-in-makefile.patch
@@ -0,0 +1,18 @@
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-0.9.9.4/fix-gcc-4.6-null-not-defined.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/fix-gcc-4.6-null-not-defined.patch
new file mode 100644
index 0000000000..801ae6dddb
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/fix-gcc-4.6-null-not-defined.patch
@@ -0,0 +1,12 @@
1Upstream-Status: Pending
2
3--- a/apt-pkg/contrib/weakptr.h
4+++ b/apt-pkg/contrib/weakptr.h
5@@ -21,6 +21,7 @@
6 #ifndef WEAK_POINTER_H
7 #define WEAK_POINTER_H
8
9+#include <cstdlib>
10 #include <set>
11 /**
12 * Class for objects providing support for weak pointers.
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/makerace.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/makerace.patch
new file mode 100644
index 0000000000..46e3161b67
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/makerace.patch
@@ -0,0 +1,23 @@
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-0.9.9.4/buildlib/library.mak
12===================================================================
13--- apt-0.9.9.4.orig/buildlib/library.mak 2013-07-31 15:45:07.320440575 +0300
14+++ apt-0.9.9.4/buildlib/library.mak 2013-07-31 15:46:49.440440561 +0300
15@@ -61,7 +61,7 @@
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) $(CXXFLAGS) $(PICFLAGS) -o $@ $<
23 $(DoDep)
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/no-ko-translation.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/no-ko-translation.patch
new file mode 100644
index 0000000000..7aa408f19e
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/no-ko-translation.patch
@@ -0,0 +1,11 @@
1Upstream-Status: Inappropriate [configuration]
2
3---
4 po/LINGUAS | 2 +-
5 1 file changed, 1 insertion(+), 1 deletion(-)
6
7--- a/po/LINGUAS
8+++ b/po/LINGUAS
9@@ -1 +1 @@
10-ar ast bg bs ca cs cy da de dz el es eu fi fr gl hu it ja km ko ku lt mr nb ne nl nn pl pt pt_BR ro ru sk sl sv th tl uk vi zh_CN zh_TW
11+ar ast bg bs ca cs cy da de dz el es eu fi fr gl hu it ja km ku lt mr nb ne nl nn pl pt pt_BR ro ru sk sl sv th tl uk vi zh_CN zh_TW
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/no-nls-dpkg.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/no-nls-dpkg.patch
new file mode 100644
index 0000000000..a0996d4d44
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/no-nls-dpkg.patch
@@ -0,0 +1,26 @@
1Upstream-Status: Pending
2
3--- a/apt-pkg/deb/dpkgpm.cc
4+++ b/apt-pkg/deb/dpkgpm.cc
5@@ -42,6 +42,12 @@
6 #include <apti18n.h>
7 /*}}}*/
8
9+#ifdef USE_NLS
10+#define _dpkg(x) dgettext("dpkg", x)
11+#else
12+#define _dpkg(x) x
13+#endif
14+
15 using namespace std;
16
17 namespace
18@@ -1279,7 +1285,7 @@ void pkgDPkgPM::WriteApportReport(const
19 }
20
21 // check if its not a follow up error
22- const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured");
23+ const char *needle = _dpkg("dependency problems - leaving unconfigured");
24 if(strstr(errormsg, needle) != NULL) {
25 std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl;
26 return;
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/noconfigure.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/noconfigure.patch
new file mode 100644
index 0000000000..712d5e7296
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/noconfigure.patch
@@ -0,0 +1,36 @@
1Upstream-Status: Inappropriate [configuration]
2Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
3
4Index: apt-0.9.7.7/apt-pkg/packagemanager.cc
5===================================================================
6--- apt-0.9.7.7.orig/apt-pkg/packagemanager.cc
7+++ apt-0.9.7.7/apt-pkg/packagemanager.cc
8@@ -893,10 +893,12 @@ bool pkgPackageManager::SmartUnPack(PkgI
9 return false;
10
11 if (Immediate == true) {
12+#if 0
13 // Perform immedate configuration of the package.
14 if (SmartConfigure(Pkg, Depth + 1) == false)
15 _error->Warning(_("Could not perform immediate configuration on '%s'. "
16 "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
17+#endif
18 }
19
20 return true;
21@@ -986,6 +988,7 @@ pkgPackageManager::OrderResult pkgPackag
22 }
23 }
24
25+#if 0
26 // Final run through the configure phase
27 if (ConfigureAll() == false)
28 return Failed;
29@@ -1000,6 +1003,7 @@ pkgPackageManager::OrderResult pkgPackag
30 return Failed;
31 }
32 }
33+#endif
34
35 return Completed;
36 }
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/nodoc.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/nodoc.patch
new file mode 100644
index 0000000000..449e42df4a
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/nodoc.patch
@@ -0,0 +1,18 @@
1Disable documentation
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@@ -17,7 +17,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 $(MAKE) -C test $@
18
diff --git a/meta/recipes-devtools/apt/apt-0.9.9.4/truncate-filename.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/truncate-filename.patch
new file mode 100644
index 0000000000..db1c42b66c
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/truncate-filename.patch
@@ -0,0 +1,35 @@
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-0.9.9.4/use-host.patch b/meta/recipes-devtools/apt/apt-0.9.9.4/use-host.patch
new file mode 100644
index 0000000000..25caa3b0a5
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-0.9.9.4/use-host.patch
@@ -0,0 +1,15 @@
1Upstream-Status: Pending
2
3Index: apt-0.9.7.7/configure.in
4===================================================================
5--- apt-0.9.7.7.orig/configure.in
6+++ apt-0.9.7.7/configure.in
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-native.inc b/meta/recipes-devtools/apt/apt-native.inc
new file mode 100644
index 0000000000..fede8694c4
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-native.inc
@@ -0,0 +1,68 @@
1require apt.inc
2inherit native
3
4DEPENDS += "dpkg-native gettext-native db-native curl-native"
5PACKAGES = ""
6USE_NLS = "yes"
7
8SRC_URI += "file://db_linking_hack.patch"
9
10python do_install () {
11 bb.build.exec_func('do_install_base', d)
12 bb.build.exec_func('do_install_config', d)
13}
14
15python do_install_config () {
16 indir = os.path.dirname(d.getVar('FILE',1))
17 infile = file(oe.path.join(indir, 'files', 'apt.conf'), 'r')
18 data = infile.read()
19 infile.close()
20
21 data = d.expand(data)
22
23 outdir = oe.path.join(d.getVar('D', True), d.getVar('sysconfdir', True), 'apt')
24 if not os.path.exists(outdir):
25 os.makedirs(outdir)
26
27 outpath = oe.path.join(outdir, 'apt.conf.sample')
28 if not os.path.exists(outpath):
29 outfile = file(outpath, 'w')
30 outfile.write(data)
31 outfile.close()
32}
33
34do_install_base () {
35 install -d ${D}${bindir}
36 install -m 0755 bin/apt-cdrom ${D}${bindir}/
37 install -m 0755 bin/apt-get ${D}${bindir}/
38 install -m 0755 bin/apt-config ${D}${bindir}/
39 install -m 0755 bin/apt-cache ${D}${bindir}/
40 install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
41 install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
42 install -m 0755 bin/apt-ftparchive ${D}${bindir}/
43
44 eval `cat environment.mak | grep ^GLIBC_VER | sed -e's, = ,=,'`
45 eval `cat environment.mak | grep ^LIBSTDCPP_VER | sed -e's, = ,=,'`
46 oe_libinstall -so -C bin libapt-pkg$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
47 ln -sf libapt-pkg$GLIBC_VER$LIBSTDCPP_VER.so ${D}${libdir}/libapt-pkg.so
48 oe_libinstall -so -C bin libapt-inst$GLIBC_VER$LIBSTDCPP_VER ${D}${libdir}/
49 ln -sf libapt-inst$GLIBC_VER$LIBSTDCPP_VER.so ${D}${libdir}/libapt-inst.so
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}
diff --git a/meta/recipes-devtools/apt/apt-native_0.9.9.4.bb b/meta/recipes-devtools/apt/apt-native_0.9.9.4.bb
new file mode 100644
index 0000000000..d5934f9942
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-native_0.9.9.4.bb
@@ -0,0 +1,9 @@
1require apt-native.inc
2
3SRC_URI += "file://noconfigure.patch \
4 file://no-curl.patch"
5
6SRC_URI[md5sum] = "72b3283acd9b99868da5545f0499b0da"
7SRC_URI[sha256sum] = "770cb94d7f4c922c2a1516f2b5ec852d3ad668a8c9c3713ac2528c861b7fa79a"
8
9LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
diff --git a/meta/recipes-devtools/apt/apt-package.inc b/meta/recipes-devtools/apt/apt-package.inc
new file mode 100644
index 0000000000..a553aa21fe
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt-package.inc
@@ -0,0 +1,78 @@
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"
36FILES_${PN}-utils = "${bindir}/apt-sortpkgs ${bindir}/apt-extracttemplates"
37FILES_${PN}-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-manpages', True))} \
38 ${docdir}/apt"
39FILES_${PN}-utils-doc = "${@get_files_apt_doc(d, bb, d.getVar('apt-utils-manpages', True))}"
40FILES_${PN}-dev = "${libdir}/libapt*.so ${includedir}"
41
42do_install () {
43 set -x
44 install -d ${D}${bindir}
45 install -m 0755 bin/apt-key ${D}${bindir}/
46 install -m 0755 bin/apt-cdrom ${D}${bindir}/
47 install -m 0755 bin/apt-get ${D}${bindir}/
48 install -m 0755 bin/apt-config ${D}${bindir}/
49 install -m 0755 bin/apt-cache ${D}${bindir}/
50
51 install -m 0755 bin/apt-sortpkgs ${D}${bindir}/
52 install -m 0755 bin/apt-extracttemplates ${D}${bindir}/
53
54 oe_libinstall -so -C bin libapt-pkg ${D}${libdir}
55 oe_libinstall -so -C bin libapt-inst ${D}${libdir}
56
57 install -d ${D}${libdir}/apt/methods
58 install -m 0755 bin/methods/* ${D}${libdir}/apt/methods/
59
60 install -d ${D}${libdir}/dpkg/methods/apt
61 install -m 0644 ${S}/dselect/desc.apt ${D}${libdir}/dpkg/methods/apt/
62 install -m 0644 ${S}/dselect/names ${D}${libdir}/dpkg/methods/apt/
63 install -m 0755 ${S}/dselect/install ${D}${libdir}/dpkg/methods/apt/
64 install -m 0755 ${S}/dselect/setup ${D}${libdir}/dpkg/methods/apt/
65 install -m 0755 ${S}/dselect/update ${D}${libdir}/dpkg/methods/apt/
66
67 install -d ${D}${sysconfdir}/apt
68 install -d ${D}${sysconfdir}/apt/apt.conf.d
69 install -d ${D}${sysconfdir}/apt/sources.list.d
70 install -d ${D}${sysconfdir}/apt/preferences.d
71 install -d ${D}${localstatedir}/lib/apt/lists/partial
72 install -d ${D}${localstatedir}/cache/apt/archives/partial
73 install -d ${D}${docdir}/apt/examples
74 install -m 0644 ${S}/doc/examples/* ${D}${docdir}/apt/examples/
75
76 install -d ${D}${includedir}/apt-pkg/
77 install -m 0644 include/apt-pkg/*.h ${D}${includedir}/apt-pkg/
78}
diff --git a/meta/recipes-devtools/apt/apt.inc b/meta/recipes-devtools/apt/apt.inc
new file mode 100644
index 0000000000..378021a327
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt.inc
@@ -0,0 +1,38 @@
1SUMMARY = "Advanced front-end for dpkg"
2LICENSE = "GPLv2.0+"
3SECTION = "base"
4
5SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/apt_${PV}.tar.gz \
6 file://no-ko-translation.patch \
7 file://use-host.patch \
8 file://makerace.patch \
9 file://no-nls-dpkg.patch \
10 file://fix-gcc-4.6-null-not-defined.patch \
11 file://truncate-filename.patch \
12 file://nodoc.patch \
13 file://disable-configure-in-makefile.patch \
14 file://apt-0.9.9.4-CVE-2014-0478.patch \
15 "
16
17inherit autotools gettext
18
19EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
20
21do_configure_prepend() {
22 rm -rf ${S}/buildlib/config.sub
23 rm -rf ${S}/buildlib/config.guess
24}
25
26# Apt wants to know the glibc version by running a binary file, which will
27# fail, so we have to tell configure which version to use Since I don't know
28# the impliations of setting a wrong value I only provide one for angstrom,
29# which uses glibc 2.5 (which claims to be 2.4)
30# Koen - 20070327
31EXTRA_OECONF_append_angstrom = " ac_cv_glibc_ver=libc6.4"
32
33# under Debian it is set to libc6.3 as they use glibc 2.3
34# They also provide glibc 2.5 in 'experimental' and it works with APT built
35# for 2.3 so we set it in same way
36EXTRA_OECONF_append = " ac_cv_glibc_ver=libc6.3"
37
38FILES_${PN}-dbg += "${libdir}/apt/methods/.debug/"
diff --git a/meta/recipes-devtools/apt/apt_0.9.9.4.bb b/meta/recipes-devtools/apt/apt_0.9.9.4.bb
new file mode 100644
index 0000000000..86ffe66ca4
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt_0.9.9.4.bb
@@ -0,0 +1,18 @@
1DEPENDS = "curl db"
2RDEPENDS_${PN} = "dpkg bash"
3LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
4require apt.inc
5
6SRC_URI[md5sum] = "72b3283acd9b99868da5545f0499b0da"
7SRC_URI[sha256sum] = "770cb94d7f4c922c2a1516f2b5ec852d3ad668a8c9c3713ac2528c861b7fa79a"
8
9require apt-package.inc
10
11FILES_${PN} += "${bindir}/apt-key"
12apt-manpages += "doc/apt-key.8"
13
14do_install_append() {
15 #Write the correct apt-architecture to apt.conf
16 APT_CONF=${D}/etc/apt/apt.conf
17 echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
18}
diff --git a/meta/recipes-devtools/apt/files/apt.conf b/meta/recipes-devtools/apt/files/apt.conf
new file mode 100644
index 0000000000..03351356bc
--- /dev/null
+++ b/meta/recipes-devtools/apt/files/apt.conf
@@ -0,0 +1,42 @@
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-debsig"};
diff --git a/meta/recipes-devtools/apt/files/db_linking_hack.patch b/meta/recipes-devtools/apt/files/db_linking_hack.patch
new file mode 100644
index 0000000000..d2246b3d2b
--- /dev/null
+++ b/meta/recipes-devtools/apt/files/db_linking_hack.patch
@@ -0,0 +1,29 @@
1Upstream-Status: Backport
2
3Index: apt-0.7.3/configure.in
4===================================================================
5--- apt-0.7.3.orig/configure.in 2007-07-01 10:38:45.000000000 +0000
6+++ apt-0.7.3/configure.in 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
new file mode 100644
index 0000000000..9a0303803e
--- /dev/null
+++ b/meta/recipes-devtools/apt/files/environment.patch
@@ -0,0 +1,15 @@
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
new file mode 100644
index 0000000000..9fd3b3ab79
--- /dev/null
+++ b/meta/recipes-devtools/apt/files/no-curl.patch
@@ -0,0 +1,38 @@
1Upstream-Status: Inappropriate [configuration]
2
3---
4 configure.in | 6 ------
5 methods/makefile | 7 -------
6 2 files changed, 13 deletions(-)
7
8--- a/configure.in
9+++ b/configure.in
10@@ -86,12 +86,6 @@ AC_CHECK_HEADER(db.h,
11
12 LIBS="$saveLIBS"
13
14-AC_CHECK_LIB(curl, curl_easy_init,
15- [AC_CHECK_HEADER(curl/curl.h,
16- curl_ok=yes,
17- curl_ok=no)],
18- AC_MSG_ERROR([failed: I need CURL due https support]),
19-)
20
21 AC_SUBST(BDBLIB)
22
23--- a/methods/makefile
24+++ b/methods/makefile
25@@ -51,13 +51,6 @@ LIB_MAKES = apt-pkg/makefile
26 SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc
27 include $(PROGRAM_H)
28
29-# The https method
30-PROGRAM=https
31-SLIBS = -lapt-pkg -lcurl $(INTLLIBS)
32-LIB_MAKES = apt-pkg/makefile
33-SOURCE = https.cc
34-include $(PROGRAM_H)
35-
36 # The ftp method
37 PROGRAM=ftp
38 SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS)