diff --git a/SOURCES/rpm-4.11.1-libtool-ppc64le.patch b/SOURCES/rpm-4.11.1-libtool-ppc64le.patch new file mode 100644 index 0000000..efe9fc3 --- /dev/null +++ b/SOURCES/rpm-4.11.1-libtool-ppc64le.patch @@ -0,0 +1,70 @@ +--- ./rpm-4.11.1/configure.aa 2014-04-25 08:59:19.704797276 -0700 ++++ ./rpm-4.11.1/configure 2014-04-25 09:08:29.701167788 -0700 +@@ -8433,7 +8433,7 @@ + rm -rf conftest* + ;; + +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ + s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +@@ -8451,7 +8451,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; +- ppc64-*linux*|powerpc64-*linux*) ++ powerpc64le-*linux*) ++ LD="${LD-ld} -m elf32lppclinux" ++ ;; ++ powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) +@@ -8470,7 +8472,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; +- ppc*-*linux*|powerpc*-*linux*) ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) +--- ./rpm-4.11.1/m4/libtool.m4.aa 2014-04-25 09:11:55.512115764 -0700 ++++ ./rpm-4.11.1/m4/libtool.m4 2014-04-25 09:12:08.932179982 -0700 +@@ -1312,7 +1312,7 @@ + rm -rf conftest* + ;; + +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ + s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +@@ -1326,7 +1326,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; +- ppc64-*linux*|powerpc64-*linux*) ++ powerpc64le-*linux*) ++ LD="${LD-ld} -m elf32lppclinux" ++ ;; ++ powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) +@@ -1345,7 +1347,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; +- ppc*-*linux*|powerpc*-*linux*) ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) diff --git a/SOURCES/rpm-4.11.1-ppc64le.patch b/SOURCES/rpm-4.11.1-ppc64le.patch new file mode 100644 index 0000000..d067ffe --- /dev/null +++ b/SOURCES/rpm-4.11.1-ppc64le.patch @@ -0,0 +1,109 @@ +diff --git a/installplatform b/installplatform +index 9a11bc3..6908f02 100755 +--- a/installplatform ++++ b/installplatform +@@ -54,12 +54,18 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do + CANONARCH=s390x + CANONCOLOR=3 + ;; +- ppc64*) ++ ppc64|ppc64p7) + ISANAME=ppc + ISABITS=64 + CANONARCH=ppc64 + CANONCOLOR=3 + ;; ++ ppc64le) ++ ISANAME=ppc ++ ISABITS=64 ++ CANONARCH=ppc64le ++ CANONCOLOR=3 ++ ;; + ppc*) + ISANAME=ppc + ISABITS=32 +diff --git a/lib/rpmrc.c b/lib/rpmrc.c +index 794d028..f209851 100644 +--- a/lib/rpmrc.c ++++ b/lib/rpmrc.c +@@ -1125,6 +1125,7 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os) + # endif /* sparc*-linux */ + + # if defined(__linux__) && defined(__powerpc__) ++# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + { + int powerlvl; + if (!rstreq(un.machine, "ppc") && +@@ -1133,6 +1134,7 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os) + strcpy(un.machine, "ppc64p7"); + } + } ++# endif /* __ORDER_BIG_ENDIAN__ */ + # endif /* ppc64*-linux */ + + # if defined(__GNUC__) && defined(__alpha__) +diff --git a/rpmrc.in b/rpmrc.in +index 55ff25f..affb736 100644 +--- a/rpmrc.in ++++ b/rpmrc.in +@@ -48,6 +48,7 @@ optflags: ppc32dy4 -O2 -g -fsigned-char + optflags: ppciseries -O2 -g -fsigned-char + optflags: ppcpseries -O2 -g -fsigned-char + optflags: ppc64 -O2 -g -fsigned-char ++optflags: ppc64le -O2 -g -fsigned-char + optflags: ppc64p7 -O3 -mtune=power7 -mcpu=power7 -g -fsigned-char + + optflags: parisc -O2 -g -mpa-risc-1-0 +@@ -96,6 +97,7 @@ archcolor: sparc64 2 + archcolor: sparcv9 2 + archcolor: ppc 1 + archcolor: ppc64 2 ++archcolor: ppc64le 2 + + archcolor: armv3l 1 + archcolor: armv4b 1 +@@ -194,6 +196,7 @@ arch_canon: i370: i370 14 + arch_canon: s390x: s390x 15 + + arch_canon: ppc64: ppc64 16 ++arch_canon: ppc64le: ppc64le 16 + arch_canon: ppc64pseries: ppc64pseries 16 + arch_canon: ppc64iseries: ppc64iseries 16 + arch_canon: ppc64p7: ppc64p7 16 +@@ -281,6 +284,7 @@ buildarchtranslate: ppcpseries: ppc + buildarchtranslate: ppc64iseries: ppc64 + buildarchtranslate: ppc64pseries: ppc64 + buildarchtranslate: ppc64p7: ppc64 ++buildarchtranslate: ppc64le: ppc64le + + buildarchtranslate: armv3l: armv3l + buildarchtranslate: armv4b: armv4b +@@ -352,6 +356,7 @@ arch_compat: rs6000: noarch fat + arch_compat: ppc64pseries: ppc64 + arch_compat: ppc64iseries: ppc64 + arch_compat: ppc64p7: ppc64 ++arch_compat: ppc64le: noarch fat + + arch_compat: sun4c: sparc + arch_compat: sun4d: sparc +@@ -475,6 +480,7 @@ buildarch_compat: ppciseries: noarch + buildarch_compat: ppcpseries: noarch + buildarch_compat: ppc: noarch fat + buildarch_compat: ppc64: noarch fat ++buildarch_compat: ppc64le: noarch fat + buildarch_compat: ppc64pseries: ppc64 + buildarch_compat: ppc64iseries: ppc64 + buildarch_compat: ppc64p7: ppc64 +diff --git a/macros.in b/macros.in +index 2e693e1..5a075a3 100644 +--- a/macros.in ++++ b/macros.in +@@ -1002,7 +1002,7 @@ done \ + + #------------------------------------------------------------------------------ + # arch macro for all supported PowerPC 64 processors +-%power64 ppc64 ppc64p7 ++%power64 ppc64 ppc64p7 ppc64le + + #------------------------------------------------------------------------ + # Use in %install to generate locale specific file lists. For example, diff --git a/SOURCES/rpm-4.11.1-python-bytecompile-path.patch b/SOURCES/rpm-4.11.1-python-bytecompile-path.patch new file mode 100644 index 0000000..7c7b9c9 --- /dev/null +++ b/SOURCES/rpm-4.11.1-python-bytecompile-path.patch @@ -0,0 +1,29 @@ +commit 198363e1b703107eba929d70dce2e1d762388bef +Author: Panu Matilainen +Date: Fri Sep 6 10:41:45 2013 +0300 + + Byte-compile versioned python libdirs in non-root prefix too (RhBug:868332) + + - Previously brp-python-bytecompile assumed versioned python stdlib + always starts at / but if a software stack relies on "non-system" + python installed to a different prefix, those directories did + not get bytecompiled at all. Look for versioned python libdirs + all over the buildroot in the first loop to allow multiple + parallel versions to be handled (notably python 2 vs 3), everything + else still falls back to "default" python. + + (cherry picked from commit e83d5c0bdd0e5d400a7bf76e08ce45f5305cf18d) + +diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile +index af6378e..f227305 100644 +--- a/scripts/brp-python-bytecompile ++++ b/scripts/brp-python-bytecompile +@@ -34,7 +34,7 @@ fi + # and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1 + + shopt -s nullglob +-for python_libdir in "$RPM_BUILD_ROOT"/usr/lib{,64}/python[0-9].[0-9]/ ; ++for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/python[0-9]\.[0-9]$"`; + do + python_binary=/usr/bin/$(basename $python_libdir) + real_libdir=${python_libdir/$RPM_BUILD_ROOT/} diff --git a/SOURCES/rpm-4.11.x-dirlink-verify.patch b/SOURCES/rpm-4.11.x-dirlink-verify.patch new file mode 100644 index 0000000..a639c2d --- /dev/null +++ b/SOURCES/rpm-4.11.x-dirlink-verify.patch @@ -0,0 +1,27 @@ +commit 3ccd774255b8215733e0bdfdf5a683da9dd10923 +Author: Panu Matilainen +Date: Wed Sep 24 10:31:51 2014 +0300 + + Handle directory replaced with a symlink to one in verify (RhBug:1101861) + + - An unforced installation must not cause verification failures - we + permit directories to be replaced by directory symlinks during + install so we need to do the same in verify too. + +diff --git a/lib/verify.c b/lib/verify.c +index eb6f2e1..84e9843 100644 +--- a/lib/verify.c ++++ b/lib/verify.c +@@ -96,6 +96,12 @@ int rpmVerifyFile(const rpmts ts, const rpmfi fi, + return 1; + } + ++ /* If we expected a directory but got a symlink to one, follow the link */ ++ if (S_ISDIR(fmode) && S_ISLNK(sb.st_mode) && stat(fn, &sb) != 0) { ++ *res |= RPMVERIFY_LSTATFAIL; ++ return 1; ++ } ++ + /* Links have no mode, other types have no linkto */ + if (S_ISLNK(sb.st_mode)) + flags &= ~(RPMVERIFY_MODE); diff --git a/SOURCES/rpm-4.9.0-armhfp-logic.patch b/SOURCES/rpm-4.9.0-armhfp-logic.patch index be00bba..916b53f 100644 --- a/SOURCES/rpm-4.9.0-armhfp-logic.patch +++ b/SOURCES/rpm-4.9.0-armhfp-logic.patch @@ -1,7 +1,7 @@ -diff -up rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic rpm-4.9.1.3/lib/rpmrc.c ---- rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic 2012-04-19 17:11:32.728750591 +0200 -+++ rpm-4.9.1.3/lib/rpmrc.c 2012-04-19 17:11:32.754738455 +0200 -@@ -743,6 +743,56 @@ static int is_sun4v() +diff -up rpm-4.11.1/lib/rpmrc.c.armhfp-logic rpm-4.11.1/lib/rpmrc.c +--- rpm-4.11.1/lib/rpmrc.c.armhfp-logic 2013-10-01 14:59:12.841041726 +0300 ++++ rpm-4.11.1/lib/rpmrc.c 2013-10-01 14:59:12.856041684 +0300 +@@ -733,6 +733,56 @@ static int is_sun4v() } #endif @@ -58,8 +58,8 @@ diff -up rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic rpm-4.9.1.3/lib/rpmrc.c # if defined(__linux__) && defined(__i386__) #include -@@ -1220,6 +1270,22 @@ static void defaultMachine(const char ** - } +@@ -1136,6 +1186,22 @@ static void defaultMachine(const char ** + # endif /* __ORDER_BIG_ENDIAN__ */ # endif /* ppc64*-linux */ +# if defined(__linux__) && defined(__arm__) diff --git a/SPECS/rpm.spec b/SPECS/rpm.spec index b1ce7ab..a8785be 100644 --- a/SPECS/rpm.spec +++ b/SPECS/rpm.spec @@ -21,7 +21,7 @@ Summary: The RPM package management system Name: rpm Version: %{rpmver} -Release: %{?snapver:0.%{snapver}.}18%{?dist} +Release: %{?snapver:0.%{snapver}.}25%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ Source0: http://rpm.org/releases/rpm-4.11.x/%{name}-%{srcver}.tar.bz2 @@ -51,8 +51,13 @@ Patch103: rpm-4.11.1-empty-lua-script.patch Patch104: rpm-4.11.1-headersort.patch Patch105: rpm-4.11.1-digests-max.patch Patch106: rpm-4.11.x-reset-fileactions.patch +Patch107: rpm-4.11.1-ppc64le.patch +Patch108: rpm-4.11.1-libtool-ppc64le.patch +Patch109: rpm-4.11.1-python-bytecompile-path.patch # Patches already in upstream but not in 4.11.x branch +Patch150: rpm-4.11.x-dirlink-verify.patch + # Filter soname dependencies by name Patch200: rpm-4.11.x-filter-soname-deps.patch Patch201: rpm-4.11.x-do-not-filter-ld64.patch @@ -252,6 +257,13 @@ packages on a system. %patch104 -p1 -b .headersort %patch105 -p1 -b .digests-max %patch106 -p1 -b .reset-fileactions +%patch107 -p1 -b .ppc64le +%ifarch ppc64le +%patch108 -p2 -b .ppc64le +%endif +%patch109 -p1 -b .python-bytecompile-path + +%patch150 -p1 -b .dirlink-verify %patch200 -p1 -b .filter-soname-deps %patch201 -p1 -b .dont-filter-ld64 @@ -495,14 +507,38 @@ exit 0 %doc COPYING doc/librpm/html/* %changelog -* Fri Nov 28 2014 Florian Festi - 4.11.1-18 -- Add check against malicious CPIO file name size (#1163060) +* Mon Jan 12 2015 Florian Festi - 4.11.1-25 +- Check for malicious CPIO file name size (#1163061) - Fixes CVE-2014-8118 -* Thu Nov 13 2014 Florian Festi - 4.11.1-17 +* Thu Nov 13 2014 Florian Festi - 4.11.1-24 - Fix race condidition where unchecked data is exposed in the file system - (#1163060) -- Fixes CVE-2013-6435 + (#1163061) + +* Fri Oct 10 2014 Panu matilainen - 4.11.1-23 +- Really fix brp-python-bytecompile (#1083052) + +* Mon Sep 29 2014 Panu matilainen - 4.11.1-22 +- Actually apply the dirlink patch, doh. + +* Mon Sep 29 2014 Panu matilainen - 4.11.1-21 +- Handle directory replaced with a symlink to one in verify (#1101861) + +* Thu Sep 25 2014 Panu matilainen - 4.11.1-20 +- Byte-compile versioned python libdirs in non-root prefix too (#1083052) + +* Fri Apr 25 2014 Aldy Hernandez - 4.11.1-19 +- Handle ppc64le in libtool.m4. + +* Fri Apr 25 2014 Aldy Hernandez - 4.11.1-18 +- Import from rawhide: + * Wed Jan 15 2013 Panu Matilainen - 4.11.1-12 + - include ppc64le in %%power64 macro (#1052930) + +* Fri Apr 25 2014 Aldy Hernandez - 4.11.1-17 +- Import from rawhide: + * Tue Oct 01 2013 Panu Matilainen - 4.11.1-8 + - add support for ppc64le architecture * Mon Mar 24 2014 Panu Matilainen - 4.11.1-16 - Fully reset file actions between rpmtsRun() calls (#1076552)