| Submitter | Constantin Musca |
|---|---|
| Date | Aug. 28, 2012, 2:02 p.m. |
| Message ID | <1346162560-30905-1-git-send-email-constantinx.musca@intel.com> |
| Download | mbox | patch |
| Permalink | /patch/35453/ |
| State | New |
| Headers | show |
Comments
On 08/28/2012 05:02 PM, Constantin Musca wrote: > autofoo.patch: removed > - the patch is not used > check_version: adapted to the new version > - adapt the linux-wrs kernel version, which has character '_' > - remove the first-char-digit-check (as the 1.15.8.5 version does) > dpkg-deb-avoid-fflush.patch: removed > - the patch is included in the new version > fix-timestamps.patch: added > - the lutimes function doesn't work properly for all systems > ignore_extra_fields.patch: adapted to the new version > nochroot.patch: removed > - the patch is not used > noman.patch: adapted to the new version > noupdalt.patch: removed > - the patch is not used > perllibdir.patch: removed > - in the new version PERL_LIBDIR will be set only if empty > preinst.patch: adapted to new version > removed-tar-no-timestamp.patch: added > - the busybox-1.19.4 tar utility doesn't support --warning=no-timestamp > > Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > --- > meta/recipes-devtools/dpkg/dpkg.inc | 4 +- > meta/recipes-devtools/dpkg/dpkg/autofoo.patch | 50 ----- > .../recipes-devtools/dpkg/dpkg/check_version.patch | 23 ++- > .../dpkg/dpkg/dpkg-deb-avoid-fflush.patch | 198 -------------------- > .../dpkg/dpkg/fix-timestamps.patch | 21 +++ > .../dpkg/dpkg/ignore_extra_fields.patch | 35 ++-- > meta/recipes-devtools/dpkg/dpkg/nochroot.patch | 20 -- > meta/recipes-devtools/dpkg/dpkg/noman.patch | 1 - > meta/recipes-devtools/dpkg/dpkg/noupdalt.patch | 18 -- > meta/recipes-devtools/dpkg/dpkg/perllibdir.patch | 22 --- > meta/recipes-devtools/dpkg/dpkg/preinst.patch | 75 ++++---- > .../dpkg/dpkg/remove-tar-no-timestamp.patch | 16 ++ > .../dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} | 10 +- > 13 files changed, 116 insertions(+), 377 deletions(-) > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/autofoo.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > create mode 100644 meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/nochroot.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > create mode 100644 meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > rename meta/recipes-devtools/dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} (49%) > > diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc > index 7f4f620..723d1b2 100644 > --- a/meta/recipes-devtools/dpkg/dpkg.inc > +++ b/meta/recipes-devtools/dpkg/dpkg.inc > @@ -2,9 +2,9 @@ DESCRIPTION = "Package maintenance system for Debian." > LICENSE = "GPLv2.0+" > SECTION = "base" > > -INC_PR = "r17" > +INC_PR = "r18" > > -SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.bz2 \ > +SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \ > file://ignore_extra_fields.patch" > > DEPENDS = "zlib bzip2 perl" > diff --git a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch b/meta/recipes-devtools/dpkg/dpkg/autofoo.patch > deleted file mode 100644 > index 2f1edce..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch > +++ /dev/null > @@ -1,50 +0,0 @@ > - > -# > -# Patch managed by http://www.holgerschurig.de/patcher.html > -# > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.10.23/configure.in~autofoo > -+++ dpkg-1.10.23/configure.in > -@@ -227,21 +227,36 @@ > - # OpenBSD passes AC_TRY_COMPILE for va_copy even though > - # it doesn't seem to exist, which is odd. We need to use > - # AC_TRY_RUN. > -+# > -+# If crosscompiling, use AC_TRY_COMPILE. -CL > - AC_TRY_RUN([ > - #include <stdarg.h> > - main(){ > - va_list v1,v2; > - va_copy(v1, v2); > - exit(0);} > --], [AC_MSG_RESULT(yes) > --AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists])],[AC_MSG_RESULT(no) > --AC_MSG_CHECKING([for va_list assignment copy]) > -+], [dpkg_cv_va_copy=yes], [dpkg_cv_va_copy=no], > - AC_TRY_COMPILE([ > - #include <stdarg.h> > -+main(){ > -+va_list v1,v2; > -+va_copy(v1, v2); > -+exit(0);} > -+], [dpkg_cv_va_copy=yes], [dpkg_vc_va_copy=no])) > -+ > -+if test "$dpkg_cv_va_copy" = "yes"; then > -+ AC_MSG_RESULT(yes) > -+ AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists]) > -+else > -+ AC_MSG_RESULT(no) > -+ AC_MSG_CHECKING([for va_list assignment copy]) > -+ AC_TRY_COMPILE([ > -+#include <stdarg.h> > - ],[ > - va_list v1,v2; > - v1 = v2; > --], AC_MSG_RESULT(yes),AC_MSG_ERROR(no))]) > -+], AC_MSG_RESULT(yes), AC_MSG_ERROR(no)) > -+fi > - > - DPKG_C_GCC_ATTRIBUTE([,,],supported,[int x],[,,],ATTRIB,[Define if function attributes a la GCC 2.5 and higher are available.], > - DPKG_C_GCC_ATTRIBUTE(noreturn,noreturn,[int x],noreturn,NORETURN,[Define if nonreturning functions a la GCC 2.5 and higher are available.]) > diff --git a/meta/recipes-devtools/dpkg/dpkg/check_version.patch b/meta/recipes-devtools/dpkg/dpkg/check_version.patch > index 524e715..3175731 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/check_version.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/check_version.patch > @@ -1,23 +1,28 @@ > Adapt to linux-wrs kernel version, which has character '_' inside. > +Remove the first-char-digit-check (as the 1.15.8.5 version does). > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > > Upstream-Status: Inappropriate [embedded specific] > > -diff -ruN dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c dpkg-1.15.8.5/lib/dpkg/parsehelp.c > ---- dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c 2010-10-08 12:27:15.058572774 +0800 > -+++ dpkg-1.15.8.5/lib/dpkg/parsehelp.c 2010-10-09 11:18:15.484190771 +0800 > -@@ -268,11 +268,11 @@ > +Index: dpkg-1.16.8/lib/dpkg/parsehelp.c > +=================================================================== > +--- dpkg-1.16.8.orig/lib/dpkg/parsehelp.c > ++++ dpkg-1.16.8/lib/dpkg/parsehelp.c > +@@ -258,14 +258,12 @@ parseversion(struct dpkg_version *rversi > > /* XXX: Would be faster to use something like cisversion and cisrevision. */ > - for (ptr = rversion->version; *ptr; ptr++) { > + ptr = rversion->version; > +- if (*ptr && !cisdigit(*ptr++)) > +- return dpkg_put_warn(err, _("version number does not start with digit")); > + for (; *ptr; ptr++) { > - if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:", *ptr) == NULL) > + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:_", *ptr) == NULL) > - return _("invalid character in version number"); > + return dpkg_put_warn(err, _("invalid character in version number")); > } > for (ptr = rversion->revision; *ptr; ptr++) { > -- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~", *ptr) == NULL) > +- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".+~", *ptr) == NULL) > + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~_", *ptr) == NULL) > - return _("invalid character in revision number"); > + return dpkg_put_warn(err, _("invalid character in revision number")); > } > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch b/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > deleted file mode 100644 > index a5d6b61..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > +++ /dev/null > @@ -1,198 +0,0 @@ > -From 78eaf928d30d0b16e05d8d63c55a3632a135ed9a Mon Sep 17 00:00:00 2001 > -From: Guillem Jover <guillem@debian.org> > -Date: Thu, 4 Nov 2010 00:51:13 +0100 > -Subject: [PATCH] dpkg-deb: Use fd instead of stream based buffered I/O > - > -Behaviour of fflush() on input streams is undefined per POSIX, avoid > -mixing stream and file descriptor based I/O, and only use the latter > -instead. > - > -Upstream-Status: Backport of revision 2d420ee1d05033d237462a0075facfe406b08043 (in 1.16.x) > - > ---- > - dpkg-deb/extract.c | 83 ++++++++++++++++++++++++++++++++++++++------------- > - 1 files changed, 62 insertions(+), 21 deletions(-) > - > -diff --git a/dpkg-deb/extract.c b/dpkg-deb/extract.c > -index 22aea98..0f5ac88 100644 > ---- a/dpkg-deb/extract.c > -+++ b/dpkg-deb/extract.c > -@@ -31,6 +31,7 @@ > - #include <ctype.h> > - #include <string.h> > - #include <dirent.h> > -+#include <fcntl.h> > - #include <unistd.h> > - #include <ar.h> > - #include <stdbool.h> > -@@ -61,13 +62,41 @@ static void movecontrolfiles(const char *thing) { > - } > - > - static void DPKG_ATTR_NORET > --readfail(FILE *a, const char *filename, const char *what) > -+read_fail(int rc, const char *filename, const char *what) > - { > -- if (ferror(a)) { > -- ohshite(_("error reading %s from file %.255s"), what, filename); > -- } else { > -+ if (rc == 0) > - ohshit(_("unexpected end of file in %s in %.255s"),what,filename); > -+ else > -+ ohshite(_("error reading %s from file %.255s"), what, filename); > -+} > -+ > -+static ssize_t > -+read_line(int fd, char *buf, size_t min_size, size_t max_size) > -+{ > -+ ssize_t line_size = 0; > -+ size_t n = min_size; > -+ > -+ while (line_size < (ssize_t)max_size) { > -+ ssize_t r; > -+ char *nl; > -+ > -+ r = read(fd, buf + line_size, n); > -+ if (r <= 0) > -+ return r; > -+ > -+ nl = strchr(buf + line_size, '\n'); > -+ line_size += r; > -+ > -+ if (nl != NULL) { > -+ nl[1] = '\0'; > -+ return line_size; > -+ } > -+ > -+ n = 1; > - } > -+ > -+ buf[line_size] = '\0'; > -+ return line_size; > - } > - > - static size_t > -@@ -115,19 +144,26 @@ void extracthalf(const char *debar, const char *directory, > - char versionbuf[40]; > - float versionnum; > - size_t ctrllennum, memberlen= 0; > -+ ssize_t r; > - int dummy; > - pid_t c1=0,c2,c3; > - int p1[2], p2[2]; > -- FILE *ar; > -+ int arfd; > - struct stat stab; > - char nlc; > - int adminmember; > - bool oldformat, header_done; > - struct compressor *decompressor = &compressor_gzip; > - > -- ar= fopen(debar,"r"); if (!ar) ohshite(_("failed to read archive `%.255s'"),debar); > -- if (fstat(fileno(ar),&stab)) ohshite(_("failed to fstat archive")); > -- if (!fgets(versionbuf,sizeof(versionbuf),ar)) readfail(ar,debar,_("version number")); > -+ arfd = open(debar, O_RDONLY); > -+ if (arfd < 0) > -+ ohshite(_("failed to read archive `%.255s'"), debar); > -+ if (fstat(arfd, &stab)) > -+ ohshite(_("failed to fstat archive")); > -+ > -+ r = read_line(arfd, versionbuf, strlen(DPKG_AR_MAGIC), sizeof(versionbuf)); > -+ if (r < 0) > -+ read_fail(r, debar, _("archive magic version number")); > - > - if (!strcmp(versionbuf, DPKG_AR_MAGIC)) { > - oldformat = false; > -@@ -137,8 +173,9 @@ void extracthalf(const char *debar, const char *directory, > - for (;;) { > - struct ar_hdr arh; > - > -- if (fread(&arh,1,sizeof(arh),ar) != sizeof(arh)) > -- readfail(ar,debar,_("between members")); > -+ r = read(arfd, &arh, sizeof(arh)); > -+ if (r != sizeof(arh)) > -+ read_fail(r, debar, _("archive member header")); > - > - dpkg_ar_normalize_name(&arh); > - > -@@ -153,8 +190,9 @@ void extracthalf(const char *debar, const char *directory, > - if (strncmp(arh.ar_name, DEBMAGIC, sizeof(arh.ar_name)) != 0) > - ohshit(_("file `%.250s' is not a debian binary archive (try dpkg-split?)"),debar); > - infobuf= m_malloc(memberlen+1); > -- if (fread(infobuf,1, memberlen + (memberlen&1), ar) != memberlen + (memberlen&1)) > -- readfail(ar,debar,_("header info member")); > -+ r = read(arfd, infobuf, memberlen + (memberlen & 1)); > -+ if ((size_t)r != (memberlen + (memberlen & 1))) > -+ read_fail(r, debar, _("archive information header member")); > - infobuf[memberlen] = '\0'; > - cur= strchr(infobuf,'\n'); > - if (!cur) ohshit(_("archive has no newlines in header")); > -@@ -174,7 +212,8 @@ void extracthalf(const char *debar, const char *directory, > - /* Members with `_' are noncritical, and if we don't understand them > - * we skip them. > - */ > -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); > -+ fd_null_copy(arfd, memberlen + (memberlen & 1), > -+ _("skipped archive member data from %s"), debar); > - } else { > - if (strncmp(arh.ar_name, ADMINMEMBER, sizeof(arh.ar_name)) == 0) > - adminmember = 1; > -@@ -198,7 +237,8 @@ void extracthalf(const char *debar, const char *directory, > - ctrllennum= memberlen; > - } > - if (!adminmember != !admininfo) { > -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); > -+ fd_null_copy(arfd, memberlen + (memberlen & 1), > -+ _("skipped archive member data from %s"), debar); > - } else { > - break; /* Yes ! - found it. */ > - } > -@@ -221,8 +261,10 @@ void extracthalf(const char *debar, const char *directory, > - l = strlen(versionbuf); > - if (l && versionbuf[l - 1] == '\n') > - versionbuf[l - 1] = '\0'; > -- if (!fgets(ctrllenbuf,sizeof(ctrllenbuf),ar)) > -- readfail(ar, debar, _("control information length")); > -+ > -+ r = read_line(arfd, ctrllenbuf, 1, sizeof(ctrllenbuf)); > -+ if (r < 0) > -+ read_fail(r, debar, _("archive control member size")); > - if (sscanf(ctrllenbuf,"%zi%c%d",&ctrllennum,&nlc,&dummy) !=2 || nlc != '\n') > - ohshit(_("archive has malformatted control length `%s'"), ctrllenbuf); > - > -@@ -230,7 +272,8 @@ void extracthalf(const char *debar, const char *directory, > - memberlen = ctrllennum; > - } else { > - memberlen = stab.st_size - ctrllennum - strlen(ctrllenbuf) - l; > -- stream_null_copy(ar, ctrllennum, _("skipped control area from %s"), debar); > -+ fd_null_copy(arfd, ctrllennum, > -+ _("skipped archive control member data from %s"), debar); > - } > - > - if (admininfo >= 2) { > -@@ -252,13 +295,11 @@ void extracthalf(const char *debar, const char *directory, > - > - } > - > -- safe_fflush(ar); > -- > - m_pipe(p1); > - c1 = subproc_fork(); > - if (!c1) { > - close(p1[0]); > -- stream_fd_copy(ar, p1[1], memberlen, _("failed to write to pipe in copy")); > -+ fd_fd_copy(arfd, p1[1], memberlen, _("failed to write to pipe in copy")); > - if (close(p1[1])) > - ohshite(_("failed to close pipe in copy")); > - exit(0); > -@@ -275,7 +316,7 @@ void extracthalf(const char *debar, const char *directory, > - decompress_filter(decompressor, 0, 1, _("data")); > - } > - close(p1[0]); > -- fclose(ar); > -+ close(arfd); > - if (taroption) close(p2[1]); > - > - if (taroption && directory) { > --- > -1.7.7.6 > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > new file mode 100644 > index 0000000..d2cabbe > --- /dev/null > +++ b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > @@ -0,0 +1,21 @@ > +The lutimes function doesn't work properly for all systems. > + > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > + > +Upstream-Status: Inappropriate [embedded specific] > + > +Index: dpkg-1.16.8/src/archives.c > +=================================================================== > +--- dpkg-1.16.8.orig/src/archives.c > ++++ dpkg-1.16.8/src/archives.c > +@@ -440,8 +440,10 @@ tarobject_set_mtime(struct tar_entry *te > + > + if (te->type == tar_filetype_symlink) { > + #ifdef HAVE_LUTIMES > ++/* > + if (lutimes(path, tv) && errno != ENOSYS) > + ohshite(_("error setting timestamps of `%.255s'"), path); > ++*/ > + #endif > + } else { > + if (utimes(path, tv)) > diff --git a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > index 0ff09e7..4e3eb97 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > @@ -1,22 +1,21 @@ > Upstream-Status: Inappropriate [workaround] > > -diff -ruN dpkg-1.15.8.5-orig/dpkg-deb/build.c dpkg-1.15.8.5/dpkg-deb/build.c > ---- dpkg-1.15.8.5-orig/dpkg-deb/build.c 2010-10-08 12:27:15.042083703 +0800 > -+++ dpkg-1.15.8.5/dpkg-deb/build.c 2010-10-08 12:31:53.822534277 +0800 > -@@ -275,14 +275,14 @@ > - controlfile, checkedinfo->otherpriority); > - warns++; > - } > -- for (field= checkedinfo->available.arbs; field; field= field->next) { > -+ /*for (field= checkedinfo->available.arbs; field; field= field->next) { > - if (known_arbitrary_field(field)) > - continue; > +Index: dpkg-1.16.8/dpkg-deb/build.c > +=================================================================== > +--- dpkg-1.16.8.orig/dpkg-deb/build.c > ++++ dpkg-1.16.8/dpkg-deb/build.c > +@@ -340,13 +340,13 @@ check_new_pkg(const char *dir) > + if (pkg->priority == pri_other) > + warning(_("'%s' contains user-defined Priority value '%s'"), > + controlfile, pkg->otherpriority); > +- for (field = pkg->available.arbs; field; field = field->next) { > ++ /*for (field = pkg->available.arbs; field; field = field->next) { > + if (known_arbitrary_field(field)) > + continue; > > - warning(_("'%s' contains user-defined field '%s'"), > - controlfile, field->name); > - warns++; > -- } > -+ }*/ > + warning(_("'%s' contains user-defined field '%s'"), controlfile, > + field->name); > +- } > ++ }*/ > > - if (subdir) { > - versionstring= versiondescribe(&checkedinfo->available.version,vdew_never); > + free(controlfile); > diff --git a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch b/meta/recipes-devtools/dpkg/dpkg/nochroot.patch > deleted file mode 100644 > index c7f2dfe..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch > +++ /dev/null > @@ -1,20 +0,0 @@ > ---- > - src/help.c | 2 ++ > - 1 file changed, 2 insertions(+) > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.13.22.orig/src/help.c > -+++ dpkg-1.13.22/src/help.c > -@@ -175,9 +175,11 @@ static const char* preexecscript(const c > - */ > - size_t instdirl; > - > -+#if 0 > - if (*instdir) { > - if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); > - } > -+#endif > - if (f_debug & dbg_scripts) { > - fprintf(stderr,"D0%05o: fork/exec %s (",dbg_scripts,path); > - while (*++argv) fprintf(stderr," %s",*argv); > diff --git a/meta/recipes-devtools/dpkg/dpkg/noman.patch b/meta/recipes-devtools/dpkg/dpkg/noman.patch > index 58cb22a..d30c150 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/noman.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/noman.patch > @@ -12,4 +12,3 @@ diff -ruN dpkg-1.15.8.5-orig/Makefile.am dpkg-1.15.8.5/Makefile.am > + po > > ACLOCAL_AMFLAGS = -I m4 > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch b/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > deleted file mode 100644 > index a9b3800..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > +++ /dev/null > @@ -1,18 +0,0 @@ > ---- > - scripts/Makefile.am | 3 +-- > - 1 file changed, 1 insertion(+), 2 deletions(-) > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.13.22.orig/scripts/Makefile.am > -+++ dpkg-1.13.22/scripts/Makefile.am > -@@ -20,8 +20,7 @@ bin_SCRIPTS = \ > - sbin_SCRIPTS = \ > - cleanup-info \ > - dpkg-divert \ > -- dpkg-statoverride \ > -- update-alternatives > -+ dpkg-statoverride > - > - changelogdir = $(pkglibdir)/parsechangelog > - changelog_SCRIPTS = \ > diff --git a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch b/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > deleted file mode 100644 > index 45973f0..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > +++ /dev/null > @@ -1,22 +0,0 @@ > -We want to be able to set PERL_LIBDIR from the environment. This > -hardcoded assignment prevents us from doing so and obtains an > -incorrect value. > - > -Upstream-Status: Inappropriate [in this form at least] > - > -RP 14/11/2011 > - > -Index: dpkg-1.15.8.7/m4/dpkg-progs.m4 > -=================================================================== > ---- dpkg-1.15.8.7.orig/m4/dpkg-progs.m4 2011-11-14 17:32:21.252053239 +0000 > -+++ dpkg-1.15.8.7/m4/dpkg-progs.m4 2011-11-14 17:32:55.180052455 +0000 > -@@ -9,9 +9,6 @@ > - [AC_ARG_VAR([PERL], [Perl interpreter])dnl > - AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])dnl > - AC_ARG_VAR([PERL_LIBDIR], [Perl library directory])dnl > --PERL_LIBDIR=$($PERL -MConfig -e 'my $r = $Config{vendorlibexp}; > -- $r =~ s/$Config{vendorprefixexp}/\$(prefix)/; > -- print $r')dnl > - ])# DPKG_PROG_PERL > - > - # DPKG_PROG_PO4A > diff --git a/meta/recipes-devtools/dpkg/dpkg/preinst.patch b/meta/recipes-devtools/dpkg/dpkg/preinst.patch > index 06d2aac..f9cb408 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/preinst.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/preinst.patch > @@ -6,41 +6,48 @@ Upstream-Status: Inappropriate [OE Specific] > > RP 2011/12/07 > > -Index: dpkg-1.15.8.7/src/help.c > +Index: dpkg-1.16.8/src/script.c > =================================================================== > ---- dpkg-1.15.8.7.orig/src/help.c 2010-12-20 01:25:36.000000000 +0000 > -+++ dpkg-1.15.8.7/src/help.c 2011-12-07 14:51:02.783461487 +0000 > -@@ -181,30 +181,9 @@ > - * FIXME: none of the stuff here will work if admindir isn't inside > - * instdir as expected. > - */ > -- size_t instdirl; > +--- dpkg-1.16.8.orig/src/script.c > ++++ dpkg-1.16.8/src/script.c > +@@ -102,38 +102,10 @@ setexecute(const char *path, struct stat > + static const char * > + preexecscript(struct command *cmd) > + { > +- const char *admindir = dpkg_db_get_dir(); > +- size_t instdirl = strlen(instdir); > - > -- if (*instdir) { > -- if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); > -- if (chdir("/")) > -- ohshite(_("failed to chdir to `%.255s'"), "/"); > -- } > -- if (f_debug & dbg_scripts) { > -- struct varbuf args = VARBUF_INIT; > -- const char **argv = cmd->argv; > + if (*instdir) { > +- if (strncmp(admindir, instdir, instdirl) != 0) > +- ohshit(_("admindir must be inside instdir for dpkg to work properly")); > +- if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0) > +- ohshite(_("unable to setenv for subprocesses")); > - > -- while (*++argv) { > -- varbufaddc(&args, ' '); > -- varbufaddstr(&args, *argv); > -- } > -- varbufaddc(&args, '\0'); > -- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, args.buf); > -- varbuf_destroy(&args); > -- } > -- instdirl= strlen(instdir); > -- if (!instdirl) > -- return cmd->filename; > -- assert(strlen(cmd->filename) >= instdirl); > -- return cmd->filename + instdirl; > -+ if (*instdir) > -+ setenv("D", instdir, 1); > -+ return cmd->filename; > - } > +- if (chroot(instdir)) > +- ohshite(_("failed to chroot to `%.250s'"), instdir); > +- if (chdir("/")) > +- ohshite(_("failed to chdir to `%.255s'"), "/"); > ++ setenv("D", instdir, 1); > + } > +- if (debug_has_flag(dbg_scripts)) { > +- struct varbuf args = VARBUF_INIT; > +- const char **argv = cmd->argv; > +- > +- while (*++argv) { > +- varbuf_add_char(&args, ' '); > +- varbuf_add_str(&args, *argv); > +- } > +- varbuf_end_str(&args); > +- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, > +- args.buf); > +- varbuf_destroy(&args); > +- } > +- if (!instdirl) > +- return cmd->filename; > +- > +- assert(strlen(cmd->filename) >= instdirl); > +- return cmd->filename + instdirl; > ++ return cmd->filename; > + } > > - void > + static int > diff --git a/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > new file mode 100644 > index 0000000..8d884e5 > --- /dev/null > +++ b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > @@ -0,0 +1,16 @@ > +busybox-1.19.4 tar utility doesn't support --warning=no-timestamp > + > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > + > +Upstream-Status: Inappropriate [configuration] > +--- a/dpkg-deb/extract.c > ++++ b/dpkg-deb/extract.c > +@@ -319,7 +319,7 @@ extracthalf(const char *debar, const cha > + } > + } > + > +- execlp(TAR, "tar", buffer, "-", "--warning=no-timestamp", NULL); > ++ execlp(TAR, "tar", buffer, "-", NULL); > + ohshite(_("unable to execute %s (%s)"), "tar", TAR); > + } > + close(p2[0]); > diff --git a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > similarity index 49% > rename from meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb > rename to meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > index 1e7ef25..35fd0ef 100644 > --- a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb > +++ b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > @@ -4,12 +4,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" > SRC_URI += "file://noman.patch \ > file://check_snprintf.patch \ > file://check_version.patch \ > - file://perllibdir.patch \ > file://preinst.patch \ > - file://dpkg-deb-avoid-fflush.patch" > + file://fix-timestamps.patch \ > + file://remove-tar-no-timestamp.patch" > > -SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc" > -SRC_URI[sha256sum] = "1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5" > +SRC_URI[md5sum] = "9f8042561ecccd5124e5958a1e181de7" > +SRC_URI[sha256sum] = "4a1f4611390d93f1f198d910d3a4e4913b3cf81702b31f585a1872ca98df0eaa" > > -PR = "${INC_PR}.4" > +PR = "${INC_PR}.0" > This is the dpkg 1.15.8.7 -> 1.16.8 package upgrade compiled on all architectures and tested using core-image-sato. Testing details: - built a system with PACKAGE_CLASSES = "package_deb" - installed/removed some packages using core-image-sato - tested basic dpkg commands
On 08/28/2012 07:03 AM, Constantin Musca wrote: > On 08/28/2012 05:02 PM, Constantin Musca wrote: >> autofoo.patch: removed >> - the patch is not used >> check_version: adapted to the new version >> - adapt the linux-wrs kernel version, which has character '_' >> - remove the first-char-digit-check (as the 1.15.8.5 version does) >> dpkg-deb-avoid-fflush.patch: removed >> - the patch is included in the new version >> fix-timestamps.patch: added >> - the lutimes function doesn't work properly for all systems >> ignore_extra_fields.patch: adapted to the new version >> nochroot.patch: removed >> - the patch is not used >> noman.patch: adapted to the new version >> noupdalt.patch: removed >> - the patch is not used >> perllibdir.patch: removed >> - in the new version PERL_LIBDIR will be set only if empty >> preinst.patch: adapted to new version >> removed-tar-no-timestamp.patch: added >> - the busybox-1.19.4 tar utility doesn't support >> --warning=no-timestamp >> <snip> > This is the dpkg 1.15.8.7 -> 1.16.8 package upgrade compiled on all > architectures > and tested using core-image-sato. > > Testing details: > - built a system with PACKAGE_CLASSES = "package_deb" > - installed/removed some packages using core-image-sato > - tested basic dpkg commands > Did you test any package updating on the target machine? Thanks Sau! > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > >
On 08/28/2012 07:02 AM, Constantin Musca wrote: > autofoo.patch: removed > - the patch is not used > check_version: adapted to the new version > - adapt the linux-wrs kernel version, which has character '_' > - remove the first-char-digit-check (as the 1.15.8.5 version does) > dpkg-deb-avoid-fflush.patch: removed > - the patch is included in the new version > fix-timestamps.patch: added > - the lutimes function doesn't work properly for all systems > ignore_extra_fields.patch: adapted to the new version > nochroot.patch: removed > - the patch is not used > noman.patch: adapted to the new version > noupdalt.patch: removed > - the patch is not used > perllibdir.patch: removed > - in the new version PERL_LIBDIR will be set only if empty > preinst.patch: adapted to new version > removed-tar-no-timestamp.patch: added > - the busybox-1.19.4 tar utility doesn't support --warning=no-timestamp > > Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > --- > meta/recipes-devtools/dpkg/dpkg.inc | 4 +- > meta/recipes-devtools/dpkg/dpkg/autofoo.patch | 50 ----- > .../recipes-devtools/dpkg/dpkg/check_version.patch | 23 ++- > .../dpkg/dpkg/dpkg-deb-avoid-fflush.patch | 198 -------------------- > .../dpkg/dpkg/fix-timestamps.patch | 21 +++ > .../dpkg/dpkg/ignore_extra_fields.patch | 35 ++-- > meta/recipes-devtools/dpkg/dpkg/nochroot.patch | 20 -- > meta/recipes-devtools/dpkg/dpkg/noman.patch | 1 - > meta/recipes-devtools/dpkg/dpkg/noupdalt.patch | 18 -- > meta/recipes-devtools/dpkg/dpkg/perllibdir.patch | 22 --- > meta/recipes-devtools/dpkg/dpkg/preinst.patch | 75 ++++---- > .../dpkg/dpkg/remove-tar-no-timestamp.patch | 16 ++ > .../dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} | 10 +- > 13 files changed, 116 insertions(+), 377 deletions(-) > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/autofoo.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > create mode 100644 meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/nochroot.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > delete mode 100644 meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > create mode 100644 meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > rename meta/recipes-devtools/dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} (49%) > Merged into OE-Core Thanks Sau! > diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc > index 7f4f620..723d1b2 100644 > --- a/meta/recipes-devtools/dpkg/dpkg.inc > +++ b/meta/recipes-devtools/dpkg/dpkg.inc > @@ -2,9 +2,9 @@ DESCRIPTION = "Package maintenance system for Debian." > LICENSE = "GPLv2.0+" > SECTION = "base" > > -INC_PR = "r17" > +INC_PR = "r18" > > -SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.bz2 \ > +SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \ > file://ignore_extra_fields.patch" > > DEPENDS = "zlib bzip2 perl" > diff --git a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch b/meta/recipes-devtools/dpkg/dpkg/autofoo.patch > deleted file mode 100644 > index 2f1edce..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch > +++ /dev/null > @@ -1,50 +0,0 @@ > - > -# > -# Patch managed by http://www.holgerschurig.de/patcher.html > -# > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.10.23/configure.in~autofoo > -+++ dpkg-1.10.23/configure.in > -@@ -227,21 +227,36 @@ > - # OpenBSD passes AC_TRY_COMPILE for va_copy even though > - # it doesn't seem to exist, which is odd. We need to use > - # AC_TRY_RUN. > -+# > -+# If crosscompiling, use AC_TRY_COMPILE. -CL > - AC_TRY_RUN([ > - #include <stdarg.h> > - main(){ > - va_list v1,v2; > - va_copy(v1, v2); > - exit(0);} > --], [AC_MSG_RESULT(yes) > --AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists])],[AC_MSG_RESULT(no) > --AC_MSG_CHECKING([for va_list assignment copy]) > -+], [dpkg_cv_va_copy=yes], [dpkg_cv_va_copy=no], > - AC_TRY_COMPILE([ > - #include <stdarg.h> > -+main(){ > -+va_list v1,v2; > -+va_copy(v1, v2); > -+exit(0);} > -+], [dpkg_cv_va_copy=yes], [dpkg_vc_va_copy=no])) > -+ > -+if test "$dpkg_cv_va_copy" = "yes"; then > -+ AC_MSG_RESULT(yes) > -+ AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists]) > -+else > -+ AC_MSG_RESULT(no) > -+ AC_MSG_CHECKING([for va_list assignment copy]) > -+ AC_TRY_COMPILE([ > -+#include <stdarg.h> > - ],[ > - va_list v1,v2; > - v1 = v2; > --], AC_MSG_RESULT(yes),AC_MSG_ERROR(no))]) > -+], AC_MSG_RESULT(yes), AC_MSG_ERROR(no)) > -+fi > - > - DPKG_C_GCC_ATTRIBUTE([,,],supported,[int x],[,,],ATTRIB,[Define if function attributes a la GCC 2.5 and higher are available.], > - DPKG_C_GCC_ATTRIBUTE(noreturn,noreturn,[int x],noreturn,NORETURN,[Define if nonreturning functions a la GCC 2.5 and higher are available.]) > diff --git a/meta/recipes-devtools/dpkg/dpkg/check_version.patch b/meta/recipes-devtools/dpkg/dpkg/check_version.patch > index 524e715..3175731 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/check_version.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/check_version.patch > @@ -1,23 +1,28 @@ > Adapt to linux-wrs kernel version, which has character '_' inside. > +Remove the first-char-digit-check (as the 1.15.8.5 version does). > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > > Upstream-Status: Inappropriate [embedded specific] > > -diff -ruN dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c dpkg-1.15.8.5/lib/dpkg/parsehelp.c > ---- dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c 2010-10-08 12:27:15.058572774 +0800 > -+++ dpkg-1.15.8.5/lib/dpkg/parsehelp.c 2010-10-09 11:18:15.484190771 +0800 > -@@ -268,11 +268,11 @@ > +Index: dpkg-1.16.8/lib/dpkg/parsehelp.c > +=================================================================== > +--- dpkg-1.16.8.orig/lib/dpkg/parsehelp.c > ++++ dpkg-1.16.8/lib/dpkg/parsehelp.c > +@@ -258,14 +258,12 @@ parseversion(struct dpkg_version *rversi > > /* XXX: Would be faster to use something like cisversion and cisrevision. */ > - for (ptr = rversion->version; *ptr; ptr++) { > + ptr = rversion->version; > +- if (*ptr && !cisdigit(*ptr++)) > +- return dpkg_put_warn(err, _("version number does not start with digit")); > + for (; *ptr; ptr++) { > - if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:", *ptr) == NULL) > + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:_", *ptr) == NULL) > - return _("invalid character in version number"); > + return dpkg_put_warn(err, _("invalid character in version number")); > } > for (ptr = rversion->revision; *ptr; ptr++) { > -- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~", *ptr) == NULL) > +- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".+~", *ptr) == NULL) > + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~_", *ptr) == NULL) > - return _("invalid character in revision number"); > + return dpkg_put_warn(err, _("invalid character in revision number")); > } > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch b/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > deleted file mode 100644 > index a5d6b61..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch > +++ /dev/null > @@ -1,198 +0,0 @@ > -From 78eaf928d30d0b16e05d8d63c55a3632a135ed9a Mon Sep 17 00:00:00 2001 > -From: Guillem Jover <guillem@debian.org> > -Date: Thu, 4 Nov 2010 00:51:13 +0100 > -Subject: [PATCH] dpkg-deb: Use fd instead of stream based buffered I/O > - > -Behaviour of fflush() on input streams is undefined per POSIX, avoid > -mixing stream and file descriptor based I/O, and only use the latter > -instead. > - > -Upstream-Status: Backport of revision 2d420ee1d05033d237462a0075facfe406b08043 (in 1.16.x) > - > ---- > - dpkg-deb/extract.c | 83 ++++++++++++++++++++++++++++++++++++++------------- > - 1 files changed, 62 insertions(+), 21 deletions(-) > - > -diff --git a/dpkg-deb/extract.c b/dpkg-deb/extract.c > -index 22aea98..0f5ac88 100644 > ---- a/dpkg-deb/extract.c > -+++ b/dpkg-deb/extract.c > -@@ -31,6 +31,7 @@ > - #include <ctype.h> > - #include <string.h> > - #include <dirent.h> > -+#include <fcntl.h> > - #include <unistd.h> > - #include <ar.h> > - #include <stdbool.h> > -@@ -61,13 +62,41 @@ static void movecontrolfiles(const char *thing) { > - } > - > - static void DPKG_ATTR_NORET > --readfail(FILE *a, const char *filename, const char *what) > -+read_fail(int rc, const char *filename, const char *what) > - { > -- if (ferror(a)) { > -- ohshite(_("error reading %s from file %.255s"), what, filename); > -- } else { > -+ if (rc == 0) > - ohshit(_("unexpected end of file in %s in %.255s"),what,filename); > -+ else > -+ ohshite(_("error reading %s from file %.255s"), what, filename); > -+} > -+ > -+static ssize_t > -+read_line(int fd, char *buf, size_t min_size, size_t max_size) > -+{ > -+ ssize_t line_size = 0; > -+ size_t n = min_size; > -+ > -+ while (line_size < (ssize_t)max_size) { > -+ ssize_t r; > -+ char *nl; > -+ > -+ r = read(fd, buf + line_size, n); > -+ if (r <= 0) > -+ return r; > -+ > -+ nl = strchr(buf + line_size, '\n'); > -+ line_size += r; > -+ > -+ if (nl != NULL) { > -+ nl[1] = '\0'; > -+ return line_size; > -+ } > -+ > -+ n = 1; > - } > -+ > -+ buf[line_size] = '\0'; > -+ return line_size; > - } > - > - static size_t > -@@ -115,19 +144,26 @@ void extracthalf(const char *debar, const char *directory, > - char versionbuf[40]; > - float versionnum; > - size_t ctrllennum, memberlen= 0; > -+ ssize_t r; > - int dummy; > - pid_t c1=0,c2,c3; > - int p1[2], p2[2]; > -- FILE *ar; > -+ int arfd; > - struct stat stab; > - char nlc; > - int adminmember; > - bool oldformat, header_done; > - struct compressor *decompressor = &compressor_gzip; > - > -- ar= fopen(debar,"r"); if (!ar) ohshite(_("failed to read archive `%.255s'"),debar); > -- if (fstat(fileno(ar),&stab)) ohshite(_("failed to fstat archive")); > -- if (!fgets(versionbuf,sizeof(versionbuf),ar)) readfail(ar,debar,_("version number")); > -+ arfd = open(debar, O_RDONLY); > -+ if (arfd < 0) > -+ ohshite(_("failed to read archive `%.255s'"), debar); > -+ if (fstat(arfd, &stab)) > -+ ohshite(_("failed to fstat archive")); > -+ > -+ r = read_line(arfd, versionbuf, strlen(DPKG_AR_MAGIC), sizeof(versionbuf)); > -+ if (r < 0) > -+ read_fail(r, debar, _("archive magic version number")); > - > - if (!strcmp(versionbuf, DPKG_AR_MAGIC)) { > - oldformat = false; > -@@ -137,8 +173,9 @@ void extracthalf(const char *debar, const char *directory, > - for (;;) { > - struct ar_hdr arh; > - > -- if (fread(&arh,1,sizeof(arh),ar) != sizeof(arh)) > -- readfail(ar,debar,_("between members")); > -+ r = read(arfd, &arh, sizeof(arh)); > -+ if (r != sizeof(arh)) > -+ read_fail(r, debar, _("archive member header")); > - > - dpkg_ar_normalize_name(&arh); > - > -@@ -153,8 +190,9 @@ void extracthalf(const char *debar, const char *directory, > - if (strncmp(arh.ar_name, DEBMAGIC, sizeof(arh.ar_name)) != 0) > - ohshit(_("file `%.250s' is not a debian binary archive (try dpkg-split?)"),debar); > - infobuf= m_malloc(memberlen+1); > -- if (fread(infobuf,1, memberlen + (memberlen&1), ar) != memberlen + (memberlen&1)) > -- readfail(ar,debar,_("header info member")); > -+ r = read(arfd, infobuf, memberlen + (memberlen & 1)); > -+ if ((size_t)r != (memberlen + (memberlen & 1))) > -+ read_fail(r, debar, _("archive information header member")); > - infobuf[memberlen] = '\0'; > - cur= strchr(infobuf,'\n'); > - if (!cur) ohshit(_("archive has no newlines in header")); > -@@ -174,7 +212,8 @@ void extracthalf(const char *debar, const char *directory, > - /* Members with `_' are noncritical, and if we don't understand them > - * we skip them. > - */ > -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); > -+ fd_null_copy(arfd, memberlen + (memberlen & 1), > -+ _("skipped archive member data from %s"), debar); > - } else { > - if (strncmp(arh.ar_name, ADMINMEMBER, sizeof(arh.ar_name)) == 0) > - adminmember = 1; > -@@ -198,7 +237,8 @@ void extracthalf(const char *debar, const char *directory, > - ctrllennum= memberlen; > - } > - if (!adminmember != !admininfo) { > -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); > -+ fd_null_copy(arfd, memberlen + (memberlen & 1), > -+ _("skipped archive member data from %s"), debar); > - } else { > - break; /* Yes ! - found it. */ > - } > -@@ -221,8 +261,10 @@ void extracthalf(const char *debar, const char *directory, > - l = strlen(versionbuf); > - if (l && versionbuf[l - 1] == '\n') > - versionbuf[l - 1] = '\0'; > -- if (!fgets(ctrllenbuf,sizeof(ctrllenbuf),ar)) > -- readfail(ar, debar, _("control information length")); > -+ > -+ r = read_line(arfd, ctrllenbuf, 1, sizeof(ctrllenbuf)); > -+ if (r < 0) > -+ read_fail(r, debar, _("archive control member size")); > - if (sscanf(ctrllenbuf,"%zi%c%d",&ctrllennum,&nlc,&dummy) !=2 || nlc != '\n') > - ohshit(_("archive has malformatted control length `%s'"), ctrllenbuf); > - > -@@ -230,7 +272,8 @@ void extracthalf(const char *debar, const char *directory, > - memberlen = ctrllennum; > - } else { > - memberlen = stab.st_size - ctrllennum - strlen(ctrllenbuf) - l; > -- stream_null_copy(ar, ctrllennum, _("skipped control area from %s"), debar); > -+ fd_null_copy(arfd, ctrllennum, > -+ _("skipped archive control member data from %s"), debar); > - } > - > - if (admininfo >= 2) { > -@@ -252,13 +295,11 @@ void extracthalf(const char *debar, const char *directory, > - > - } > - > -- safe_fflush(ar); > -- > - m_pipe(p1); > - c1 = subproc_fork(); > - if (!c1) { > - close(p1[0]); > -- stream_fd_copy(ar, p1[1], memberlen, _("failed to write to pipe in copy")); > -+ fd_fd_copy(arfd, p1[1], memberlen, _("failed to write to pipe in copy")); > - if (close(p1[1])) > - ohshite(_("failed to close pipe in copy")); > - exit(0); > -@@ -275,7 +316,7 @@ void extracthalf(const char *debar, const char *directory, > - decompress_filter(decompressor, 0, 1, _("data")); > - } > - close(p1[0]); > -- fclose(ar); > -+ close(arfd); > - if (taroption) close(p2[1]); > - > - if (taroption && directory) { > --- > -1.7.7.6 > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > new file mode 100644 > index 0000000..d2cabbe > --- /dev/null > +++ b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch > @@ -0,0 +1,21 @@ > +The lutimes function doesn't work properly for all systems. > + > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > + > +Upstream-Status: Inappropriate [embedded specific] > + > +Index: dpkg-1.16.8/src/archives.c > +=================================================================== > +--- dpkg-1.16.8.orig/src/archives.c > ++++ dpkg-1.16.8/src/archives.c > +@@ -440,8 +440,10 @@ tarobject_set_mtime(struct tar_entry *te > + > + if (te->type == tar_filetype_symlink) { > + #ifdef HAVE_LUTIMES > ++/* > + if (lutimes(path, tv) && errno != ENOSYS) > + ohshite(_("error setting timestamps of `%.255s'"), path); > ++*/ > + #endif > + } else { > + if (utimes(path, tv)) > diff --git a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > index 0ff09e7..4e3eb97 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch > @@ -1,22 +1,21 @@ > Upstream-Status: Inappropriate [workaround] > > -diff -ruN dpkg-1.15.8.5-orig/dpkg-deb/build.c dpkg-1.15.8.5/dpkg-deb/build.c > ---- dpkg-1.15.8.5-orig/dpkg-deb/build.c 2010-10-08 12:27:15.042083703 +0800 > -+++ dpkg-1.15.8.5/dpkg-deb/build.c 2010-10-08 12:31:53.822534277 +0800 > -@@ -275,14 +275,14 @@ > - controlfile, checkedinfo->otherpriority); > - warns++; > - } > -- for (field= checkedinfo->available.arbs; field; field= field->next) { > -+ /*for (field= checkedinfo->available.arbs; field; field= field->next) { > - if (known_arbitrary_field(field)) > - continue; > +Index: dpkg-1.16.8/dpkg-deb/build.c > +=================================================================== > +--- dpkg-1.16.8.orig/dpkg-deb/build.c > ++++ dpkg-1.16.8/dpkg-deb/build.c > +@@ -340,13 +340,13 @@ check_new_pkg(const char *dir) > + if (pkg->priority == pri_other) > + warning(_("'%s' contains user-defined Priority value '%s'"), > + controlfile, pkg->otherpriority); > +- for (field = pkg->available.arbs; field; field = field->next) { > ++ /*for (field = pkg->available.arbs; field; field = field->next) { > + if (known_arbitrary_field(field)) > + continue; > > - warning(_("'%s' contains user-defined field '%s'"), > - controlfile, field->name); > - warns++; > -- } > -+ }*/ > + warning(_("'%s' contains user-defined field '%s'"), controlfile, > + field->name); > +- } > ++ }*/ > > - if (subdir) { > - versionstring= versiondescribe(&checkedinfo->available.version,vdew_never); > + free(controlfile); > diff --git a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch b/meta/recipes-devtools/dpkg/dpkg/nochroot.patch > deleted file mode 100644 > index c7f2dfe..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch > +++ /dev/null > @@ -1,20 +0,0 @@ > ---- > - src/help.c | 2 ++ > - 1 file changed, 2 insertions(+) > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.13.22.orig/src/help.c > -+++ dpkg-1.13.22/src/help.c > -@@ -175,9 +175,11 @@ static const char* preexecscript(const c > - */ > - size_t instdirl; > - > -+#if 0 > - if (*instdir) { > - if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); > - } > -+#endif > - if (f_debug & dbg_scripts) { > - fprintf(stderr,"D0%05o: fork/exec %s (",dbg_scripts,path); > - while (*++argv) fprintf(stderr," %s",*argv); > diff --git a/meta/recipes-devtools/dpkg/dpkg/noman.patch b/meta/recipes-devtools/dpkg/dpkg/noman.patch > index 58cb22a..d30c150 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/noman.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/noman.patch > @@ -12,4 +12,3 @@ diff -ruN dpkg-1.15.8.5-orig/Makefile.am dpkg-1.15.8.5/Makefile.am > + po > > ACLOCAL_AMFLAGS = -I m4 > - > diff --git a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch b/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > deleted file mode 100644 > index a9b3800..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch > +++ /dev/null > @@ -1,18 +0,0 @@ > ---- > - scripts/Makefile.am | 3 +-- > - 1 file changed, 1 insertion(+), 2 deletions(-) > - > -Upstream-Status: Inappropriate [configuration] > - > ---- dpkg-1.13.22.orig/scripts/Makefile.am > -+++ dpkg-1.13.22/scripts/Makefile.am > -@@ -20,8 +20,7 @@ bin_SCRIPTS = \ > - sbin_SCRIPTS = \ > - cleanup-info \ > - dpkg-divert \ > -- dpkg-statoverride \ > -- update-alternatives > -+ dpkg-statoverride > - > - changelogdir = $(pkglibdir)/parsechangelog > - changelog_SCRIPTS = \ > diff --git a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch b/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > deleted file mode 100644 > index 45973f0..0000000 > --- a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch > +++ /dev/null > @@ -1,22 +0,0 @@ > -We want to be able to set PERL_LIBDIR from the environment. This > -hardcoded assignment prevents us from doing so and obtains an > -incorrect value. > - > -Upstream-Status: Inappropriate [in this form at least] > - > -RP 14/11/2011 > - > -Index: dpkg-1.15.8.7/m4/dpkg-progs.m4 > -=================================================================== > ---- dpkg-1.15.8.7.orig/m4/dpkg-progs.m4 2011-11-14 17:32:21.252053239 +0000 > -+++ dpkg-1.15.8.7/m4/dpkg-progs.m4 2011-11-14 17:32:55.180052455 +0000 > -@@ -9,9 +9,6 @@ > - [AC_ARG_VAR([PERL], [Perl interpreter])dnl > - AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])dnl > - AC_ARG_VAR([PERL_LIBDIR], [Perl library directory])dnl > --PERL_LIBDIR=$($PERL -MConfig -e 'my $r = $Config{vendorlibexp}; > -- $r =~ s/$Config{vendorprefixexp}/\$(prefix)/; > -- print $r')dnl > - ])# DPKG_PROG_PERL > - > - # DPKG_PROG_PO4A > diff --git a/meta/recipes-devtools/dpkg/dpkg/preinst.patch b/meta/recipes-devtools/dpkg/dpkg/preinst.patch > index 06d2aac..f9cb408 100644 > --- a/meta/recipes-devtools/dpkg/dpkg/preinst.patch > +++ b/meta/recipes-devtools/dpkg/dpkg/preinst.patch > @@ -6,41 +6,48 @@ Upstream-Status: Inappropriate [OE Specific] > > RP 2011/12/07 > > -Index: dpkg-1.15.8.7/src/help.c > +Index: dpkg-1.16.8/src/script.c > =================================================================== > ---- dpkg-1.15.8.7.orig/src/help.c 2010-12-20 01:25:36.000000000 +0000 > -+++ dpkg-1.15.8.7/src/help.c 2011-12-07 14:51:02.783461487 +0000 > -@@ -181,30 +181,9 @@ > - * FIXME: none of the stuff here will work if admindir isn't inside > - * instdir as expected. > - */ > -- size_t instdirl; > +--- dpkg-1.16.8.orig/src/script.c > ++++ dpkg-1.16.8/src/script.c > +@@ -102,38 +102,10 @@ setexecute(const char *path, struct stat > + static const char * > + preexecscript(struct command *cmd) > + { > +- const char *admindir = dpkg_db_get_dir(); > +- size_t instdirl = strlen(instdir); > - > -- if (*instdir) { > -- if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); > -- if (chdir("/")) > -- ohshite(_("failed to chdir to `%.255s'"), "/"); > -- } > -- if (f_debug & dbg_scripts) { > -- struct varbuf args = VARBUF_INIT; > -- const char **argv = cmd->argv; > + if (*instdir) { > +- if (strncmp(admindir, instdir, instdirl) != 0) > +- ohshit(_("admindir must be inside instdir for dpkg to work properly")); > +- if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0) > +- ohshite(_("unable to setenv for subprocesses")); > - > -- while (*++argv) { > -- varbufaddc(&args, ' '); > -- varbufaddstr(&args, *argv); > -- } > -- varbufaddc(&args, '\0'); > -- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, args.buf); > -- varbuf_destroy(&args); > -- } > -- instdirl= strlen(instdir); > -- if (!instdirl) > -- return cmd->filename; > -- assert(strlen(cmd->filename) >= instdirl); > -- return cmd->filename + instdirl; > -+ if (*instdir) > -+ setenv("D", instdir, 1); > -+ return cmd->filename; > - } > +- if (chroot(instdir)) > +- ohshite(_("failed to chroot to `%.250s'"), instdir); > +- if (chdir("/")) > +- ohshite(_("failed to chdir to `%.255s'"), "/"); > ++ setenv("D", instdir, 1); > + } > +- if (debug_has_flag(dbg_scripts)) { > +- struct varbuf args = VARBUF_INIT; > +- const char **argv = cmd->argv; > +- > +- while (*++argv) { > +- varbuf_add_char(&args, ' '); > +- varbuf_add_str(&args, *argv); > +- } > +- varbuf_end_str(&args); > +- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, > +- args.buf); > +- varbuf_destroy(&args); > +- } > +- if (!instdirl) > +- return cmd->filename; > +- > +- assert(strlen(cmd->filename) >= instdirl); > +- return cmd->filename + instdirl; > ++ return cmd->filename; > + } > > - void > + static int > diff --git a/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > new file mode 100644 > index 0000000..8d884e5 > --- /dev/null > +++ b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch > @@ -0,0 +1,16 @@ > +busybox-1.19.4 tar utility doesn't support --warning=no-timestamp > + > +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> > + > +Upstream-Status: Inappropriate [configuration] > +--- a/dpkg-deb/extract.c > ++++ b/dpkg-deb/extract.c > +@@ -319,7 +319,7 @@ extracthalf(const char *debar, const cha > + } > + } > + > +- execlp(TAR, "tar", buffer, "-", "--warning=no-timestamp", NULL); > ++ execlp(TAR, "tar", buffer, "-", NULL); > + ohshite(_("unable to execute %s (%s)"), "tar", TAR); > + } > + close(p2[0]); > diff --git a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > similarity index 49% > rename from meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb > rename to meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > index 1e7ef25..35fd0ef 100644 > --- a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb > +++ b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb > @@ -4,12 +4,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" > SRC_URI += "file://noman.patch \ > file://check_snprintf.patch \ > file://check_version.patch \ > - file://perllibdir.patch \ > file://preinst.patch \ > - file://dpkg-deb-avoid-fflush.patch" > + file://fix-timestamps.patch \ > + file://remove-tar-no-timestamp.patch" > > -SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc" > -SRC_URI[sha256sum] = "1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5" > +SRC_URI[md5sum] = "9f8042561ecccd5124e5958a1e181de7" > +SRC_URI[sha256sum] = "4a1f4611390d93f1f198d910d3a4e4913b3cf81702b31f585a1872ca98df0eaa" > > -PR = "${INC_PR}.4" > +PR = "${INC_PR}.0" > >
Patch
diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc index 7f4f620..723d1b2 100644 --- a/meta/recipes-devtools/dpkg/dpkg.inc +++ b/meta/recipes-devtools/dpkg/dpkg.inc @@ -2,9 +2,9 @@ DESCRIPTION = "Package maintenance system for Debian." LICENSE = "GPLv2.0+" SECTION = "base" -INC_PR = "r17" +INC_PR = "r18" -SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.bz2 \ +SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \ file://ignore_extra_fields.patch" DEPENDS = "zlib bzip2 perl" diff --git a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch b/meta/recipes-devtools/dpkg/dpkg/autofoo.patch deleted file mode 100644 index 2f1edce..0000000 --- a/meta/recipes-devtools/dpkg/dpkg/autofoo.patch +++ /dev/null @@ -1,50 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - -Upstream-Status: Inappropriate [configuration] - ---- dpkg-1.10.23/configure.in~autofoo -+++ dpkg-1.10.23/configure.in -@@ -227,21 +227,36 @@ - # OpenBSD passes AC_TRY_COMPILE for va_copy even though - # it doesn't seem to exist, which is odd. We need to use - # AC_TRY_RUN. -+# -+# If crosscompiling, use AC_TRY_COMPILE. -CL - AC_TRY_RUN([ - #include <stdarg.h> - main(){ - va_list v1,v2; - va_copy(v1, v2); - exit(0);} --], [AC_MSG_RESULT(yes) --AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists])],[AC_MSG_RESULT(no) --AC_MSG_CHECKING([for va_list assignment copy]) -+], [dpkg_cv_va_copy=yes], [dpkg_cv_va_copy=no], - AC_TRY_COMPILE([ - #include <stdarg.h> -+main(){ -+va_list v1,v2; -+va_copy(v1, v2); -+exit(0);} -+], [dpkg_cv_va_copy=yes], [dpkg_vc_va_copy=no])) -+ -+if test "$dpkg_cv_va_copy" = "yes"; then -+ AC_MSG_RESULT(yes) -+ AC_DEFINE(HAVE_VA_COPY,,[Whether the va_copy macro exists]) -+else -+ AC_MSG_RESULT(no) -+ AC_MSG_CHECKING([for va_list assignment copy]) -+ AC_TRY_COMPILE([ -+#include <stdarg.h> - ],[ - va_list v1,v2; - v1 = v2; --], AC_MSG_RESULT(yes),AC_MSG_ERROR(no))]) -+], AC_MSG_RESULT(yes), AC_MSG_ERROR(no)) -+fi - - DPKG_C_GCC_ATTRIBUTE([,,],supported,[int x],[,,],ATTRIB,[Define if function attributes a la GCC 2.5 and higher are available.], - DPKG_C_GCC_ATTRIBUTE(noreturn,noreturn,[int x],noreturn,NORETURN,[Define if nonreturning functions a la GCC 2.5 and higher are available.]) diff --git a/meta/recipes-devtools/dpkg/dpkg/check_version.patch b/meta/recipes-devtools/dpkg/dpkg/check_version.patch index 524e715..3175731 100644 --- a/meta/recipes-devtools/dpkg/dpkg/check_version.patch +++ b/meta/recipes-devtools/dpkg/dpkg/check_version.patch @@ -1,23 +1,28 @@ Adapt to linux-wrs kernel version, which has character '_' inside. +Remove the first-char-digit-check (as the 1.15.8.5 version does). Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> Upstream-Status: Inappropriate [embedded specific] -diff -ruN dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c dpkg-1.15.8.5/lib/dpkg/parsehelp.c ---- dpkg-1.15.8.5-orig/lib/dpkg/parsehelp.c 2010-10-08 12:27:15.058572774 +0800 -+++ dpkg-1.15.8.5/lib/dpkg/parsehelp.c 2010-10-09 11:18:15.484190771 +0800 -@@ -268,11 +268,11 @@ +Index: dpkg-1.16.8/lib/dpkg/parsehelp.c +=================================================================== +--- dpkg-1.16.8.orig/lib/dpkg/parsehelp.c ++++ dpkg-1.16.8/lib/dpkg/parsehelp.c +@@ -258,14 +258,12 @@ parseversion(struct dpkg_version *rversi /* XXX: Would be faster to use something like cisversion and cisrevision. */ - for (ptr = rversion->version; *ptr; ptr++) { + ptr = rversion->version; +- if (*ptr && !cisdigit(*ptr++)) +- return dpkg_put_warn(err, _("version number does not start with digit")); + for (; *ptr; ptr++) { - if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:", *ptr) == NULL) + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~:_", *ptr) == NULL) - return _("invalid character in version number"); + return dpkg_put_warn(err, _("invalid character in version number")); } for (ptr = rversion->revision; *ptr; ptr++) { -- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~", *ptr) == NULL) +- if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".+~", *ptr) == NULL) + if (!cisdigit(*ptr) && !cisalpha(*ptr) && strchr(".-+~_", *ptr) == NULL) - return _("invalid character in revision number"); + return dpkg_put_warn(err, _("invalid character in revision number")); } - diff --git a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch b/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch deleted file mode 100644 index a5d6b61..0000000 --- a/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch +++ /dev/null @@ -1,198 +0,0 @@ -From 78eaf928d30d0b16e05d8d63c55a3632a135ed9a Mon Sep 17 00:00:00 2001 -From: Guillem Jover <guillem@debian.org> -Date: Thu, 4 Nov 2010 00:51:13 +0100 -Subject: [PATCH] dpkg-deb: Use fd instead of stream based buffered I/O - -Behaviour of fflush() on input streams is undefined per POSIX, avoid -mixing stream and file descriptor based I/O, and only use the latter -instead. - -Upstream-Status: Backport of revision 2d420ee1d05033d237462a0075facfe406b08043 (in 1.16.x) - ---- - dpkg-deb/extract.c | 83 ++++++++++++++++++++++++++++++++++++++------------- - 1 files changed, 62 insertions(+), 21 deletions(-) - -diff --git a/dpkg-deb/extract.c b/dpkg-deb/extract.c -index 22aea98..0f5ac88 100644 ---- a/dpkg-deb/extract.c -+++ b/dpkg-deb/extract.c -@@ -31,6 +31,7 @@ - #include <ctype.h> - #include <string.h> - #include <dirent.h> -+#include <fcntl.h> - #include <unistd.h> - #include <ar.h> - #include <stdbool.h> -@@ -61,13 +62,41 @@ static void movecontrolfiles(const char *thing) { - } - - static void DPKG_ATTR_NORET --readfail(FILE *a, const char *filename, const char *what) -+read_fail(int rc, const char *filename, const char *what) - { -- if (ferror(a)) { -- ohshite(_("error reading %s from file %.255s"), what, filename); -- } else { -+ if (rc == 0) - ohshit(_("unexpected end of file in %s in %.255s"),what,filename); -+ else -+ ohshite(_("error reading %s from file %.255s"), what, filename); -+} -+ -+static ssize_t -+read_line(int fd, char *buf, size_t min_size, size_t max_size) -+{ -+ ssize_t line_size = 0; -+ size_t n = min_size; -+ -+ while (line_size < (ssize_t)max_size) { -+ ssize_t r; -+ char *nl; -+ -+ r = read(fd, buf + line_size, n); -+ if (r <= 0) -+ return r; -+ -+ nl = strchr(buf + line_size, '\n'); -+ line_size += r; -+ -+ if (nl != NULL) { -+ nl[1] = '\0'; -+ return line_size; -+ } -+ -+ n = 1; - } -+ -+ buf[line_size] = '\0'; -+ return line_size; - } - - static size_t -@@ -115,19 +144,26 @@ void extracthalf(const char *debar, const char *directory, - char versionbuf[40]; - float versionnum; - size_t ctrllennum, memberlen= 0; -+ ssize_t r; - int dummy; - pid_t c1=0,c2,c3; - int p1[2], p2[2]; -- FILE *ar; -+ int arfd; - struct stat stab; - char nlc; - int adminmember; - bool oldformat, header_done; - struct compressor *decompressor = &compressor_gzip; - -- ar= fopen(debar,"r"); if (!ar) ohshite(_("failed to read archive `%.255s'"),debar); -- if (fstat(fileno(ar),&stab)) ohshite(_("failed to fstat archive")); -- if (!fgets(versionbuf,sizeof(versionbuf),ar)) readfail(ar,debar,_("version number")); -+ arfd = open(debar, O_RDONLY); -+ if (arfd < 0) -+ ohshite(_("failed to read archive `%.255s'"), debar); -+ if (fstat(arfd, &stab)) -+ ohshite(_("failed to fstat archive")); -+ -+ r = read_line(arfd, versionbuf, strlen(DPKG_AR_MAGIC), sizeof(versionbuf)); -+ if (r < 0) -+ read_fail(r, debar, _("archive magic version number")); - - if (!strcmp(versionbuf, DPKG_AR_MAGIC)) { - oldformat = false; -@@ -137,8 +173,9 @@ void extracthalf(const char *debar, const char *directory, - for (;;) { - struct ar_hdr arh; - -- if (fread(&arh,1,sizeof(arh),ar) != sizeof(arh)) -- readfail(ar,debar,_("between members")); -+ r = read(arfd, &arh, sizeof(arh)); -+ if (r != sizeof(arh)) -+ read_fail(r, debar, _("archive member header")); - - dpkg_ar_normalize_name(&arh); - -@@ -153,8 +190,9 @@ void extracthalf(const char *debar, const char *directory, - if (strncmp(arh.ar_name, DEBMAGIC, sizeof(arh.ar_name)) != 0) - ohshit(_("file `%.250s' is not a debian binary archive (try dpkg-split?)"),debar); - infobuf= m_malloc(memberlen+1); -- if (fread(infobuf,1, memberlen + (memberlen&1), ar) != memberlen + (memberlen&1)) -- readfail(ar,debar,_("header info member")); -+ r = read(arfd, infobuf, memberlen + (memberlen & 1)); -+ if ((size_t)r != (memberlen + (memberlen & 1))) -+ read_fail(r, debar, _("archive information header member")); - infobuf[memberlen] = '\0'; - cur= strchr(infobuf,'\n'); - if (!cur) ohshit(_("archive has no newlines in header")); -@@ -174,7 +212,8 @@ void extracthalf(const char *debar, const char *directory, - /* Members with `_' are noncritical, and if we don't understand them - * we skip them. - */ -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); -+ fd_null_copy(arfd, memberlen + (memberlen & 1), -+ _("skipped archive member data from %s"), debar); - } else { - if (strncmp(arh.ar_name, ADMINMEMBER, sizeof(arh.ar_name)) == 0) - adminmember = 1; -@@ -198,7 +237,8 @@ void extracthalf(const char *debar, const char *directory, - ctrllennum= memberlen; - } - if (!adminmember != !admininfo) { -- stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar); -+ fd_null_copy(arfd, memberlen + (memberlen & 1), -+ _("skipped archive member data from %s"), debar); - } else { - break; /* Yes ! - found it. */ - } -@@ -221,8 +261,10 @@ void extracthalf(const char *debar, const char *directory, - l = strlen(versionbuf); - if (l && versionbuf[l - 1] == '\n') - versionbuf[l - 1] = '\0'; -- if (!fgets(ctrllenbuf,sizeof(ctrllenbuf),ar)) -- readfail(ar, debar, _("control information length")); -+ -+ r = read_line(arfd, ctrllenbuf, 1, sizeof(ctrllenbuf)); -+ if (r < 0) -+ read_fail(r, debar, _("archive control member size")); - if (sscanf(ctrllenbuf,"%zi%c%d",&ctrllennum,&nlc,&dummy) !=2 || nlc != '\n') - ohshit(_("archive has malformatted control length `%s'"), ctrllenbuf); - -@@ -230,7 +272,8 @@ void extracthalf(const char *debar, const char *directory, - memberlen = ctrllennum; - } else { - memberlen = stab.st_size - ctrllennum - strlen(ctrllenbuf) - l; -- stream_null_copy(ar, ctrllennum, _("skipped control area from %s"), debar); -+ fd_null_copy(arfd, ctrllennum, -+ _("skipped archive control member data from %s"), debar); - } - - if (admininfo >= 2) { -@@ -252,13 +295,11 @@ void extracthalf(const char *debar, const char *directory, - - } - -- safe_fflush(ar); -- - m_pipe(p1); - c1 = subproc_fork(); - if (!c1) { - close(p1[0]); -- stream_fd_copy(ar, p1[1], memberlen, _("failed to write to pipe in copy")); -+ fd_fd_copy(arfd, p1[1], memberlen, _("failed to write to pipe in copy")); - if (close(p1[1])) - ohshite(_("failed to close pipe in copy")); - exit(0); -@@ -275,7 +316,7 @@ void extracthalf(const char *debar, const char *directory, - decompress_filter(decompressor, 0, 1, _("data")); - } - close(p1[0]); -- fclose(ar); -+ close(arfd); - if (taroption) close(p2[1]); - - if (taroption && directory) { --- -1.7.7.6 - diff --git a/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch new file mode 100644 index 0000000..d2cabbe --- /dev/null +++ b/meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch @@ -0,0 +1,21 @@ +The lutimes function doesn't work properly for all systems. + +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> + +Upstream-Status: Inappropriate [embedded specific] + +Index: dpkg-1.16.8/src/archives.c +=================================================================== +--- dpkg-1.16.8.orig/src/archives.c ++++ dpkg-1.16.8/src/archives.c +@@ -440,8 +440,10 @@ tarobject_set_mtime(struct tar_entry *te + + if (te->type == tar_filetype_symlink) { + #ifdef HAVE_LUTIMES ++/* + if (lutimes(path, tv) && errno != ENOSYS) + ohshite(_("error setting timestamps of `%.255s'"), path); ++*/ + #endif + } else { + if (utimes(path, tv)) diff --git a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch index 0ff09e7..4e3eb97 100644 --- a/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch +++ b/meta/recipes-devtools/dpkg/dpkg/ignore_extra_fields.patch @@ -1,22 +1,21 @@ Upstream-Status: Inappropriate [workaround] -diff -ruN dpkg-1.15.8.5-orig/dpkg-deb/build.c dpkg-1.15.8.5/dpkg-deb/build.c ---- dpkg-1.15.8.5-orig/dpkg-deb/build.c 2010-10-08 12:27:15.042083703 +0800 -+++ dpkg-1.15.8.5/dpkg-deb/build.c 2010-10-08 12:31:53.822534277 +0800 -@@ -275,14 +275,14 @@ - controlfile, checkedinfo->otherpriority); - warns++; - } -- for (field= checkedinfo->available.arbs; field; field= field->next) { -+ /*for (field= checkedinfo->available.arbs; field; field= field->next) { - if (known_arbitrary_field(field)) - continue; +Index: dpkg-1.16.8/dpkg-deb/build.c +=================================================================== +--- dpkg-1.16.8.orig/dpkg-deb/build.c ++++ dpkg-1.16.8/dpkg-deb/build.c +@@ -340,13 +340,13 @@ check_new_pkg(const char *dir) + if (pkg->priority == pri_other) + warning(_("'%s' contains user-defined Priority value '%s'"), + controlfile, pkg->otherpriority); +- for (field = pkg->available.arbs; field; field = field->next) { ++ /*for (field = pkg->available.arbs; field; field = field->next) { + if (known_arbitrary_field(field)) + continue; - warning(_("'%s' contains user-defined field '%s'"), - controlfile, field->name); - warns++; -- } -+ }*/ + warning(_("'%s' contains user-defined field '%s'"), controlfile, + field->name); +- } ++ }*/ - if (subdir) { - versionstring= versiondescribe(&checkedinfo->available.version,vdew_never); + free(controlfile); diff --git a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch b/meta/recipes-devtools/dpkg/dpkg/nochroot.patch deleted file mode 100644 index c7f2dfe..0000000 --- a/meta/recipes-devtools/dpkg/dpkg/nochroot.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- - src/help.c | 2 ++ - 1 file changed, 2 insertions(+) - -Upstream-Status: Inappropriate [configuration] - ---- dpkg-1.13.22.orig/src/help.c -+++ dpkg-1.13.22/src/help.c -@@ -175,9 +175,11 @@ static const char* preexecscript(const c - */ - size_t instdirl; - -+#if 0 - if (*instdir) { - if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); - } -+#endif - if (f_debug & dbg_scripts) { - fprintf(stderr,"D0%05o: fork/exec %s (",dbg_scripts,path); - while (*++argv) fprintf(stderr," %s",*argv); diff --git a/meta/recipes-devtools/dpkg/dpkg/noman.patch b/meta/recipes-devtools/dpkg/dpkg/noman.patch index 58cb22a..d30c150 100644 --- a/meta/recipes-devtools/dpkg/dpkg/noman.patch +++ b/meta/recipes-devtools/dpkg/dpkg/noman.patch @@ -12,4 +12,3 @@ diff -ruN dpkg-1.15.8.5-orig/Makefile.am dpkg-1.15.8.5/Makefile.am + po ACLOCAL_AMFLAGS = -I m4 - diff --git a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch b/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch deleted file mode 100644 index a9b3800..0000000 --- a/meta/recipes-devtools/dpkg/dpkg/noupdalt.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- - scripts/Makefile.am | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -Upstream-Status: Inappropriate [configuration] - ---- dpkg-1.13.22.orig/scripts/Makefile.am -+++ dpkg-1.13.22/scripts/Makefile.am -@@ -20,8 +20,7 @@ bin_SCRIPTS = \ - sbin_SCRIPTS = \ - cleanup-info \ - dpkg-divert \ -- dpkg-statoverride \ -- update-alternatives -+ dpkg-statoverride - - changelogdir = $(pkglibdir)/parsechangelog - changelog_SCRIPTS = \ diff --git a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch b/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch deleted file mode 100644 index 45973f0..0000000 --- a/meta/recipes-devtools/dpkg/dpkg/perllibdir.patch +++ /dev/null @@ -1,22 +0,0 @@ -We want to be able to set PERL_LIBDIR from the environment. This -hardcoded assignment prevents us from doing so and obtains an -incorrect value. - -Upstream-Status: Inappropriate [in this form at least] - -RP 14/11/2011 - -Index: dpkg-1.15.8.7/m4/dpkg-progs.m4 -=================================================================== ---- dpkg-1.15.8.7.orig/m4/dpkg-progs.m4 2011-11-14 17:32:21.252053239 +0000 -+++ dpkg-1.15.8.7/m4/dpkg-progs.m4 2011-11-14 17:32:55.180052455 +0000 -@@ -9,9 +9,6 @@ - [AC_ARG_VAR([PERL], [Perl interpreter])dnl - AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])dnl - AC_ARG_VAR([PERL_LIBDIR], [Perl library directory])dnl --PERL_LIBDIR=$($PERL -MConfig -e 'my $r = $Config{vendorlibexp}; -- $r =~ s/$Config{vendorprefixexp}/\$(prefix)/; -- print $r')dnl - ])# DPKG_PROG_PERL - - # DPKG_PROG_PO4A diff --git a/meta/recipes-devtools/dpkg/dpkg/preinst.patch b/meta/recipes-devtools/dpkg/dpkg/preinst.patch index 06d2aac..f9cb408 100644 --- a/meta/recipes-devtools/dpkg/dpkg/preinst.patch +++ b/meta/recipes-devtools/dpkg/dpkg/preinst.patch @@ -6,41 +6,48 @@ Upstream-Status: Inappropriate [OE Specific] RP 2011/12/07 -Index: dpkg-1.15.8.7/src/help.c +Index: dpkg-1.16.8/src/script.c =================================================================== ---- dpkg-1.15.8.7.orig/src/help.c 2010-12-20 01:25:36.000000000 +0000 -+++ dpkg-1.15.8.7/src/help.c 2011-12-07 14:51:02.783461487 +0000 -@@ -181,30 +181,9 @@ - * FIXME: none of the stuff here will work if admindir isn't inside - * instdir as expected. - */ -- size_t instdirl; +--- dpkg-1.16.8.orig/src/script.c ++++ dpkg-1.16.8/src/script.c +@@ -102,38 +102,10 @@ setexecute(const char *path, struct stat + static const char * + preexecscript(struct command *cmd) + { +- const char *admindir = dpkg_db_get_dir(); +- size_t instdirl = strlen(instdir); - -- if (*instdir) { -- if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); -- if (chdir("/")) -- ohshite(_("failed to chdir to `%.255s'"), "/"); -- } -- if (f_debug & dbg_scripts) { -- struct varbuf args = VARBUF_INIT; -- const char **argv = cmd->argv; + if (*instdir) { +- if (strncmp(admindir, instdir, instdirl) != 0) +- ohshit(_("admindir must be inside instdir for dpkg to work properly")); +- if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0) +- ohshite(_("unable to setenv for subprocesses")); - -- while (*++argv) { -- varbufaddc(&args, ' '); -- varbufaddstr(&args, *argv); -- } -- varbufaddc(&args, '\0'); -- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, args.buf); -- varbuf_destroy(&args); -- } -- instdirl= strlen(instdir); -- if (!instdirl) -- return cmd->filename; -- assert(strlen(cmd->filename) >= instdirl); -- return cmd->filename + instdirl; -+ if (*instdir) -+ setenv("D", instdir, 1); -+ return cmd->filename; - } +- if (chroot(instdir)) +- ohshite(_("failed to chroot to `%.250s'"), instdir); +- if (chdir("/")) +- ohshite(_("failed to chdir to `%.255s'"), "/"); ++ setenv("D", instdir, 1); + } +- if (debug_has_flag(dbg_scripts)) { +- struct varbuf args = VARBUF_INIT; +- const char **argv = cmd->argv; +- +- while (*++argv) { +- varbuf_add_char(&args, ' '); +- varbuf_add_str(&args, *argv); +- } +- varbuf_end_str(&args); +- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, +- args.buf); +- varbuf_destroy(&args); +- } +- if (!instdirl) +- return cmd->filename; +- +- assert(strlen(cmd->filename) >= instdirl); +- return cmd->filename + instdirl; ++ return cmd->filename; + } - void + static int diff --git a/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch new file mode 100644 index 0000000..8d884e5 --- /dev/null +++ b/meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch @@ -0,0 +1,16 @@ +busybox-1.19.4 tar utility doesn't support --warning=no-timestamp + +Signed-off-by: Constantin Musca <constantinx.musca@intel.com> + +Upstream-Status: Inappropriate [configuration] +--- a/dpkg-deb/extract.c ++++ b/dpkg-deb/extract.c +@@ -319,7 +319,7 @@ extracthalf(const char *debar, const cha + } + } + +- execlp(TAR, "tar", buffer, "-", "--warning=no-timestamp", NULL); ++ execlp(TAR, "tar", buffer, "-", NULL); + ohshite(_("unable to execute %s (%s)"), "tar", TAR); + } + close(p2[0]); diff --git a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb similarity index 49% rename from meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb rename to meta/recipes-devtools/dpkg/dpkg_1.16.8.bb index 1e7ef25..35fd0ef 100644 --- a/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb +++ b/meta/recipes-devtools/dpkg/dpkg_1.16.8.bb @@ -4,12 +4,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" SRC_URI += "file://noman.patch \ file://check_snprintf.patch \ file://check_version.patch \ - file://perllibdir.patch \ file://preinst.patch \ - file://dpkg-deb-avoid-fflush.patch" + file://fix-timestamps.patch \ + file://remove-tar-no-timestamp.patch" -SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc" -SRC_URI[sha256sum] = "1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5" +SRC_URI[md5sum] = "9f8042561ecccd5124e5958a1e181de7" +SRC_URI[sha256sum] = "4a1f4611390d93f1f198d910d3a4e4913b3cf81702b31f585a1872ca98df0eaa" -PR = "${INC_PR}.4" +PR = "${INC_PR}.0"
autofoo.patch: removed - the patch is not used check_version: adapted to the new version - adapt the linux-wrs kernel version, which has character '_' - remove the first-char-digit-check (as the 1.15.8.5 version does) dpkg-deb-avoid-fflush.patch: removed - the patch is included in the new version fix-timestamps.patch: added - the lutimes function doesn't work properly for all systems ignore_extra_fields.patch: adapted to the new version nochroot.patch: removed - the patch is not used noman.patch: adapted to the new version noupdalt.patch: removed - the patch is not used perllibdir.patch: removed - in the new version PERL_LIBDIR will be set only if empty preinst.patch: adapted to new version removed-tar-no-timestamp.patch: added - the busybox-1.19.4 tar utility doesn't support --warning=no-timestamp Signed-off-by: Constantin Musca <constantinx.musca@intel.com> --- meta/recipes-devtools/dpkg/dpkg.inc | 4 +- meta/recipes-devtools/dpkg/dpkg/autofoo.patch | 50 ----- .../recipes-devtools/dpkg/dpkg/check_version.patch | 23 ++- .../dpkg/dpkg/dpkg-deb-avoid-fflush.patch | 198 -------------------- .../dpkg/dpkg/fix-timestamps.patch | 21 +++ .../dpkg/dpkg/ignore_extra_fields.patch | 35 ++-- meta/recipes-devtools/dpkg/dpkg/nochroot.patch | 20 -- meta/recipes-devtools/dpkg/dpkg/noman.patch | 1 - meta/recipes-devtools/dpkg/dpkg/noupdalt.patch | 18 -- meta/recipes-devtools/dpkg/dpkg/perllibdir.patch | 22 --- meta/recipes-devtools/dpkg/dpkg/preinst.patch | 75 ++++---- .../dpkg/dpkg/remove-tar-no-timestamp.patch | 16 ++ .../dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} | 10 +- 13 files changed, 116 insertions(+), 377 deletions(-) delete mode 100644 meta/recipes-devtools/dpkg/dpkg/autofoo.patch delete mode 100644 meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch create mode 100644 meta/recipes-devtools/dpkg/dpkg/fix-timestamps.patch delete mode 100644 meta/recipes-devtools/dpkg/dpkg/nochroot.patch delete mode 100644 meta/recipes-devtools/dpkg/dpkg/noupdalt.patch delete mode 100644 meta/recipes-devtools/dpkg/dpkg/perllibdir.patch create mode 100644 meta/recipes-devtools/dpkg/dpkg/remove-tar-no-timestamp.patch rename meta/recipes-devtools/dpkg/{dpkg_1.15.8.7.bb => dpkg_1.16.8.bb} (49%)