diff --git a/.gitignore b/.gitignore index b187443..f13a69f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /rpm-4.10.0-beta1.tar.bz2 /rpm-4.10.0.tar.bz2 /rpm-4.10.1.tar.bz2 +/rpm-4.10.90.git11989.tar.bz2 diff --git a/rpm-4.10.1-noarch-isa.patch b/rpm-4.10.1-noarch-isa.patch deleted file mode 100644 index 00337cd..0000000 --- a/rpm-4.10.1-noarch-isa.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit 90dd51743200055f30d9e0e0337173118b4ae756 -Author: Panu Matilainen -Date: Thu Oct 11 17:57:10 2012 +0300 - - Fix noarch __isa_* macro filter in installplatform (RhBug:865436) - - - The filter wasn't doing what it was supposed to due to extra single - quotes getting inserted, causing "rpmbuild --target noarch foo.spec" - to whine about empty macro bodies. This is a regression introduced - in rpm 4.10, commit 07ec480c180e4005a629242b8f9f8ab640e3e950 to be - precise. - -diff --git a/installplatform b/installplatform -index f7ae241..a68b3c0 100755 ---- a/installplatform -+++ b/installplatform -@@ -104,7 +104,7 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do - noarch) - CANONARCH=noarch - CANONCOLOR=0 -- FILTER="grep -v -E '^(%optflag|%__isa)'" -+ FILTER="grep -v -E ^(%optflag|%__isa)" - ;; - esac - diff --git a/rpm-4.10.1-skipped-hardlinks.patch b/rpm-4.10.1-skipped-hardlinks.patch deleted file mode 100644 index 567480d..0000000 --- a/rpm-4.10.1-skipped-hardlinks.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit df4eed5debcdc9209e1f5e66d17230861a55a7fc -Author: Panu Matilainen -Date: Wed Oct 10 10:37:34 2012 +0300 - - Filter out skipped files on hardlink checking (RhBug:864622) - - - Legitimately skipped files (links) must not cause install-errors. - This has always been broken, but the errors were completely ignored - on install prior to rpm 4.10. - - Backported from commit eeea54c76b130da3769ae10f7db2c2fcfb5c57be - -diff --git a/lib/fsm.c b/lib/fsm.c -index e4ffcaf..4840708 100644 ---- a/lib/fsm.c -+++ b/lib/fsm.c -@@ -1964,12 +1964,14 @@ static int fsmStage(FSM_t fsm, fileStage stage) - fsm->links = fsm->li->next; - fsm->li->next = NULL; - if (fsm->goal == FSM_PKGINSTALL && fsm->li->linksLeft) { -+ rpmfs fs = rpmteGetFileStates(fsmGetTe(fsm)); - for (nlink_t i = 0 ; i < fsm->li->linksLeft; i++) { -- if (fsm->li->filex[i] < 0) -+ int ix = fsm->li->filex[i]; -+ if (ix < 0 || XFA_SKIPPING(rpmfsGetAction(fs, ix))) - continue; - rc = CPIOERR_MISSING_HARDLINK; - if (fsm->failedFile && *fsm->failedFile == NULL) { -- fsm->ix = fsm->li->filex[i]; -+ fsm->ix = ix; - if (!fsmMapPath(fsm)) { - /* Out-of-sync hardlinks handled as sub-state */ - *fsm->failedFile = fsm->path; diff --git a/rpm-4.10.90-rpmlib-filesystem-check.patch b/rpm-4.10.90-rpmlib-filesystem-check.patch new file mode 100644 index 0000000..1390354 --- /dev/null +++ b/rpm-4.10.90-rpmlib-filesystem-check.patch @@ -0,0 +1,125 @@ +diff -up rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check rpm-4.10.90.git11978/lib/depends.c +--- rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check 2012-11-01 09:40:26.000000000 +0200 ++++ rpm-4.10.90.git11978/lib/depends.c 2012-11-05 10:53:42.294733695 +0200 +@@ -537,6 +537,109 @@ static int rpmdbProvides(rpmts ts, depCa + return rc; + } + ++/* ++ * Temporary support for live-conversion of the filesystem hierarchy ++ * mailto: kay@redhat.com, harald@redhat.com ++ * https://fedoraproject.org/wiki/Features/UsrMove ++ * ++ * X-CheckUnifiedSystemdir: ++ * /bin, /sbin, /lib, /lib64 --> /usr ++ * ++ * X-CheckUnifiedBindir: ++ * /usr/sbin -> /usr/bin ++ * ++ * X-CheckMultiArchLibdir: ++ * /usr/lib64 /usr/lib/ (e.g. x86_64-linux-gnu) ++ * ++ * This code is not needed for new installations, it can be removed after ++ * updates from older systems are no longer supported: Fedora 19 / RHEL 8. ++ */ ++ ++static int CheckLink(const char *dir, const char *root) ++{ ++ char *d = NULL; ++ struct stat sbuf; ++ int rc = 0; ++ ++ if (!root) ++ root = "/"; ++ ++ rasprintf(&d, "%s%s", root, dir); ++ if (!d) { ++ rc = -1; ++ goto exit; ++ } ++ ++ /* directory or symlink does not exist, all is fine */ ++ if (lstat(d, &sbuf) < 0) { ++ rc = 1; ++ goto exit; ++ } ++ ++ /* if it is a symlink, all is fine */ ++ if (S_ISLNK(sbuf.st_mode)) ++ rc = 1; ++ ++exit: ++ free(d); ++ return rc; ++} ++ ++static int CheckFilesystemHierarchy(rpmds * dsp, const char *root) ++{ ++ static const char *dirs[] = { "bin", "sbin", "lib", "lib64" }; ++ int check; ++ int i; ++ rpmds ds; ++ rpmstrPool pool = rpmdsPool(*dsp); ++ int rc = 0; ++ ++ for (i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) { ++ check = CheckLink(dirs[i], root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ ++ if (check == 0) ++ goto exit; ++ } ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckUnifiedSystemdir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ ++ check = CheckLink("usr/lib64", root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ if (check > 0) { ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckMultiArchLibdir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ } ++ ++ check = CheckLink("usr/sbin", root); ++ if (check < 0) { ++ rc = -1; ++ goto exit; ++ } ++ if (check > 0) { ++ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, ++ "rpmlib(X-CheckUnifiedBindir)", "1", ++ RPMSENSE_EQUAL); ++ rpmdsMerge(dsp, ds); ++ rpmdsFree(ds); ++ } ++ ++exit: ++ return rc; ++} ++ + /** + * Check dep for an unsatisfied dependency. + * @param ts transaction set +@@ -560,8 +663,10 @@ retry: + * Check those dependencies now. + */ + if (dsflags & RPMSENSE_RPMLIB) { +- if (tsmem->rpmlib == NULL) ++ if (tsmem->rpmlib == NULL) { + rpmdsRpmlibPool(tsmem->pool, &(tsmem->rpmlib), NULL); ++ CheckFilesystemHierarchy(&(tsmem->rpmlib), rpmtsRootDir(ts)); ++ } + + if (tsmem->rpmlib != NULL && rpmdsSearch(tsmem->rpmlib, dep) >= 0) { + rpmdsNotify(dep, "(rpmlib provides)", rc); diff --git a/rpm.spec b/rpm.spec index 5757e18..24a06ea 100644 --- a/rpm.spec +++ b/rpm.spec @@ -11,8 +11,9 @@ %define rpmhome /usr/lib/rpm -%define rpmver 4.10.1 -%define srcver %{rpmver}%{?snapver:-%{snapver}} +%define rpmver 4.10.90 +%define snapver git11989 +%define srcver %{rpmver}%{?snapver:.%{snapver}} %define bdbname libdb %define bdbver 5.3.15 @@ -21,10 +22,10 @@ Summary: The RPM package management system Name: rpm Version: %{rpmver} -Release: %{?snapver:0.%{snapver}.}3%{?dist} +Release: %{?snapver:0.%{snapver}.}1%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ -Source0: http://rpm.org/releases/rpm-4.10.x/%{name}-%{srcver}.tar.bz2 +Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2 %if %{with int_bdb} Source1: db-%{bdbver}.tar.gz %else @@ -45,8 +46,6 @@ Patch5: rpm-4.9.90-armhfp.patch Patch6: rpm-4.9.0-armhfp-logic.patch # Patches already in upstream -Patch100: rpm-4.10.1-skipped-hardlinks.patch -Patch101: rpm-4.10.1-noarch-isa.patch # These are not yet upstream Patch301: rpm-4.6.0-niagara.patch @@ -58,7 +57,7 @@ Patch305: rpm-4.10.0-dwz-debuginfo.patch # Minidebuginfo support (#834073) Patch306: rpm-4.10.0-minidebuginfo.patch # Temporary Patch to provide support for updates -Patch400: rpm-4.9.1.2-rpmlib-filesystem-check.patch +Patch400: rpm-4.10.90-rpmlib-filesystem-check.patch # Partially GPL/LGPL dual-licensed and some bits with BSD # SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD @@ -220,9 +219,6 @@ packages on a system. %patch3 -p1 -b .no-man-dirs %patch4 -p1 -b .use-gpg2 -%patch100 -p1 -b .skipped-hardlinks -%patch101 -p1 -b .noarch-isa - %patch301 -p1 -b .niagara %patch302 -p1 -b .geode %patch304 -p1 -b .ldflags @@ -453,6 +449,10 @@ exit 0 %doc COPYING doc/librpm/html/* %changelog +* Thu Nov 15 2012 Panu Matilainen - 4.10.90-0.git11989.1 +- update to 4.11 (http://rpm.org/wiki/Releases/4.11.0) post-alpha snapshot +- drop/adjust patches as necessary + * Thu Oct 11 2012 Panu Matilainen - 4.10.1-3 - fix noarch __isa_* macro filter in installplatform (#865436) diff --git a/sources b/sources index b7d8e77..cddbbf3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -188b0de25d5d61439785e248828ee3b0 rpm-4.10.1.tar.bz2 +674fc60129543a7378615adfd828681d rpm-4.10.90.git11989.tar.bz2