add temporary rpmlib patch to support filesystem transition
https://fedorahosted.org/fpc/ticket/118#comment:14
This commit is contained in:
parent
6d6d459ffb
commit
1439f01e4e
127
rpm-4.9.1.2-rpmlib-filesystem-check.patch
Normal file
127
rpm-4.9.1.2-rpmlib-filesystem-check.patch
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
diff --git a/lib/depends.c b/lib/depends.c
|
||||||
|
index 69aecbb..5101d32 100644
|
||||||
|
--- a/lib/depends.c
|
||||||
|
+++ b/lib/depends.c
|
||||||
|
@@ -386,6 +386,108 @@ static int rpmdbProvides(rpmts ts, depCache dcache, rpmds dep)
|
||||||
|
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/<platform tuple> (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;
|
||||||
|
+ 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 = rpmdsSingle(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 = rpmdsSingle(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 = rpmdsSingle(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
|
||||||
|
@@ -410,9 +512,11 @@ retry:
|
||||||
|
*/
|
||||||
|
if (dsflags & RPMSENSE_RPMLIB) {
|
||||||
|
static int oneshot = -1;
|
||||||
|
- if (oneshot)
|
||||||
|
+ if (oneshot) {
|
||||||
|
oneshot = rpmdsRpmlib(&rpmlibP, NULL);
|
||||||
|
-
|
||||||
|
+ CheckFilesystemHierarchy(&rpmlibP, rpmtsRootDir(ts));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (rpmlibP != NULL && rpmdsSearch(rpmlibP, dep) >= 0) {
|
||||||
|
rpmdsNotify(dep, "(rpmlib provides)", rc);
|
||||||
|
goto exit;
|
10
rpm.spec
10
rpm.spec
@ -21,7 +21,7 @@
|
|||||||
Summary: The RPM package management system
|
Summary: The RPM package management system
|
||||||
Name: rpm
|
Name: rpm
|
||||||
Version: %{rpmver}
|
Version: %{rpmver}
|
||||||
Release: %{?snapver:0.%{snapver}.}7%{?dist}
|
Release: %{?snapver:0.%{snapver}.}8%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.rpm.org/
|
Url: http://www.rpm.org/
|
||||||
Source0: http://rpm.org/releases/rpm-4.9.x/%{name}-%{srcver}.tar.bz2
|
Source0: http://rpm.org/releases/rpm-4.9.x/%{name}-%{srcver}.tar.bz2
|
||||||
@ -56,6 +56,8 @@ Patch304: rpm-4.9.1.1-ld-flags.patch
|
|||||||
Patch305: rpm-4.9.x-gnome-help.patch
|
Patch305: rpm-4.9.x-gnome-help.patch
|
||||||
# Just warn on STABS instead of failing for now
|
# Just warn on STABS instead of failing for now
|
||||||
Patch306: rpm-4.9.x-debugedit-stabs-warn.patch
|
Patch306: rpm-4.9.x-debugedit-stabs-warn.patch
|
||||||
|
# Temporary Patch to provide support for updates
|
||||||
|
Patch400: rpm-4.9.1.2-rpmlib-filesystem-check.patch
|
||||||
|
|
||||||
# Partially GPL/LGPL dual-licensed and some bits with BSD
|
# Partially GPL/LGPL dual-licensed and some bits with BSD
|
||||||
# SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD
|
# SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD
|
||||||
@ -227,6 +229,8 @@ packages on a system.
|
|||||||
%patch305 -p1 -b .gnome-help
|
%patch305 -p1 -b .gnome-help
|
||||||
%patch306 -p1 -b .debugedit-stabs-warn
|
%patch306 -p1 -b .debugedit-stabs-warn
|
||||||
|
|
||||||
|
%patch400 -p1 -b .rpmlib-filesystem-check
|
||||||
|
|
||||||
# this patch cant be applied on softfp builds
|
# this patch cant be applied on softfp builds
|
||||||
%ifnarch armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l
|
%ifnarch armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l
|
||||||
%patch5 -p1 -b .armhfp
|
%patch5 -p1 -b .armhfp
|
||||||
@ -444,6 +448,10 @@ exit 0
|
|||||||
%doc COPYING doc/librpm/html/*
|
%doc COPYING doc/librpm/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 20 2011 Kay Sievers <kay@redhat.com> - 4.9.1.2-8
|
||||||
|
- add temporary rpmlib patch to support filesystem transition
|
||||||
|
https://fedoraproject.org/wiki/Features/UsrMove
|
||||||
|
|
||||||
* Fri Dec 02 2011 Panu Matilainen <pmatilai@redhat.com> - 4.9.1.2-7
|
* Fri Dec 02 2011 Panu Matilainen <pmatilai@redhat.com> - 4.9.1.2-7
|
||||||
- switch over to libdb, aka Berkeley DB 5.x
|
- switch over to libdb, aka Berkeley DB 5.x
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user