summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2011-08-10 11:13:33 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-08-12 17:21:54 +0100
commit93084574046b2b64826bd5ebde55a0504f3b9283 (patch)
tree523ff2167f66b670746930e855281d91e9fe35c2 /meta/recipes-devtools/rpm
parent8bc2ebf59a82de568b6543246d6e5aa9769a03d5 (diff)
downloadpoky-93084574046b2b64826bd5ebde55a0504f3b9283.tar.gz
rpm: Fix the canonical arch --target processing and cleanup
[YOCTO #1352] Fix the canonical arch --target processor to work with the way OE handles the GNU canonical arch. Also cleanup a number of files that are no longer used, and refactor the no-loop patch into the "no-loopmsg" patch. (From OE-Core rev: 25904ad2bdeadda9189805bb7a210eafe5795024) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rpm')
-rw-r--r--meta/recipes-devtools/rpm/rpm/export-rpmbag-h.patch45
-rw-r--r--meta/recipes-devtools/rpm/rpm/hdraddorappend.patch22
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-canonarch.patch134
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-no-loop.patch38
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-no-loopmsg.patch16
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-nrescan.patch17
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.0.bb8
7 files changed, 153 insertions, 127 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/export-rpmbag-h.patch b/meta/recipes-devtools/rpm/rpm/export-rpmbag-h.patch
deleted file mode 100644
index 2f203fb3d0..0000000000
--- a/meta/recipes-devtools/rpm/rpm/export-rpmbag-h.patch
+++ /dev/null
@@ -1,45 +0,0 @@
1rpmbag.h (added in 5.1.10) is used by rpmts.h, thus should be
2exported. Change Makefile.in as well since currently autoreconf
3is not performed for rpm.
4
58/26/2010 - created by Qing He <qing.he@intel.com>
6
7diff --git a/rpmio/Makefile.am b/rpmio/Makefile.am
8index ce9e4f7..0d825b6 100644
9--- a/rpmio/Makefile.am
10+++ b/rpmio/Makefile.am
11@@ -59,12 +59,12 @@ pkginc_HEADERS = \
12 argv.h envvar.h fts.h mire.h rpmbc.h rpmcb.h rpmdav.h rpmgc.h \
13 rpmhash.h rpmio.h rpmiotypes.h rpmio-stub.h rpmku.h rpmlog.h \
14 rpmmacro.h rpmmg.h rpmnss.h rpmpgp.h rpmsq.h rpmssl.h rpmsw.h \
15- rpmurl.h rpmxar.h ugid.h rpmuuid.h rpmzlog.h yarn.h
16+ rpmurl.h rpmxar.h ugid.h rpmuuid.h rpmzlog.h yarn.h rpmbag.h
17 noinst_HEADERS = \
18 ar.h cpio.h crc.h fnmatch.h glob.h iosm.h \
19 md2.h md4.h poptIO.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \
20 salsa10.h salsa20.h tar.h tiger.h \
21- rpmbag.h rpmbf.h rpmbz.h rpmhook.h rpmio_internal.h rpmlua.h
22+ rpmbf.h rpmbz.h rpmhook.h rpmio_internal.h rpmlua.h
23
24 usrlibdir = $(libdir)
25 usrlib_LTLIBRARIES = librpmio.la
26diff --git a/rpmio/Makefile.in b/rpmio/Makefile.in
27index ef76570..0b212bd 100644
28--- a/rpmio/Makefile.in
29+++ b/rpmio/Makefile.in
30@@ -638,13 +638,13 @@ pkginc_HEADERS = \
31 argv.h envvar.h fts.h mire.h rpmbc.h rpmcb.h rpmdav.h rpmgc.h \
32 rpmhash.h rpmio.h rpmiotypes.h rpmio-stub.h rpmku.h rpmlog.h \
33 rpmmacro.h rpmmg.h rpmnss.h rpmpgp.h rpmsq.h rpmssl.h rpmsw.h \
34- rpmurl.h rpmxar.h ugid.h rpmuuid.h rpmzlog.h yarn.h
35+ rpmurl.h rpmxar.h ugid.h rpmuuid.h rpmzlog.h yarn.h rpmbag.h
36
37 noinst_HEADERS = \
38 ar.h cpio.h crc.h fnmatch.h glob.h iosm.h \
39 md2.h md4.h poptIO.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \
40 salsa10.h salsa20.h tar.h tiger.h \
41- rpmbag.h rpmbf.h rpmbz.h rpmhook.h rpmio_internal.h rpmlua.h
42+ rpmbf.h rpmbz.h rpmhook.h rpmio_internal.h rpmlua.h
43
44 usrlibdir = $(libdir)
45 usrlib_LTLIBRARIES = librpmio.la
diff --git a/meta/recipes-devtools/rpm/rpm/hdraddorappend.patch b/meta/recipes-devtools/rpm/rpm/hdraddorappend.patch
deleted file mode 100644
index 020337a598..0000000000
--- a/meta/recipes-devtools/rpm/rpm/hdraddorappend.patch
+++ /dev/null
@@ -1,22 +0,0 @@
1diff --git a/lib/rpm4compat.h b/lib/rpm4compat.h
2index b957f8e..b1954d5 100644
3--- a/lib/rpm4compat.h
4+++ b/lib/rpm4compat.h
5@@ -211,6 +211,17 @@ static inline int headerAddEntry(Header h, int_32 tag, int_32 type, const void *
6 return headerPut(h, he, 0);
7 }
8
9+static inline int headerAddOrAppendEntry(Header h, int_32 tag, int_32 type, const void * p, int_32 c) {
10+ HE_t he = (HE_s*)memset(alloca(sizeof(*he)), 0, sizeof(*he));
11+
12+ he->tag = (rpmTag)tag;
13+ he->t = (rpmTagType)type;
14+ he->p.str = (const char*)p;
15+ he->c = (rpmTagCount)c;
16+ he->append = 1;
17+ return headerPut(h, he, 0);
18+}
19+
20 static inline int headerRemoveEntry(Header h, int_32 tag) {
21 HE_t he = (HE_s*)memset(alloca(sizeof(*he)), 0, sizeof(*he));
22
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-canonarch.patch b/meta/recipes-devtools/rpm/rpm/rpm-canonarch.patch
new file mode 100644
index 0000000000..36190585ca
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-canonarch.patch
@@ -0,0 +1,134 @@
1lib/rpmrc.c: Update --target processing to support full GNU canonical arch
2
3Prior to this patch, when using --target, RPM supported the format:
4 <arch>
5 <arch>-<os>
6 <arch>-<os>-gnu
7 <arch>-<arbitrary items>-<os>
8 <arch>-<arbitrary items>-<os>-gnu
9
10This patch changes the list of supported items to:
11 <arch>
12 <arch>-<os>
13 <arch>-<os>-gnu
14 <arch>-<vendor>-<os>
15 <arch>-<vendor>-<os>-<extension>
16
17Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
18
19Index: rpm-5.4.0/lib/rpmrc.c
20===================================================================
21--- rpm-5.4.0.orig/lib/rpmrc.c 2011-08-10 17:04:35.798814821 -0500
22+++ rpm-5.4.0/lib/rpmrc.c 2011-08-10 17:33:51.505871895 -0500
23@@ -916,8 +916,8 @@
24
25 static void rpmRebuildTargetVars(const char ** target, const char ** canontarget)
26 {
27-
28- char *ca = NULL, *co = NULL, *ct = NULL;
29+ /* ca = arch, cv = vendor, co = os, ce = extension, ct = canon target */
30+ char *ca = NULL, *cv = NULL, *co = NULL, *ce = NULL, *ct = NULL;
31 int x;
32
33 /* Rebuild the compat table to recalculate the current target arch. */
34@@ -927,23 +927,60 @@
35 rpmSetTables(RPM_MACHTABLE_BUILDARCH, RPM_MACHTABLE_BUILDOS);
36
37 if (target && *target) {
38+ /* GNU canonical format is:
39+ * <arch>-<vendor>-<os>[-extension]
40+ *
41+ * We support the both the GNU canonical format
42+ * as well as the traditional RPM formats:
43+ * <arch>
44+ * <arch>-<os>[-gnu]
45+ */
46 char *c;
47 /* Set arch and os from specified build target */
48 ca = xstrdup(*target);
49- if ((c = strchr(ca, '-')) != NULL) {
50+ if ((c = strchr(ca, '-')) == NULL) {
51+ /* Format is <arch> */
52+ ;
53+ } else {
54 *c++ = '\0';
55-
56- if ((co = strrchr(c, '-')) == NULL) {
57- co = c;
58+ cv = c;
59+
60+ if ((c = strchr(c, '-')) == NULL) {
61+ /* Format is <arch>-<os> */
62+ co = cv;
63+ cv = NULL;
64 } else {
65- if (!xstrcasecmp(co, "-gnu"))
66- *co = '\0';
67- if ((co = strrchr(c, '-')) == NULL)
68- co = c;
69- else
70- co++;
71+ *c++ = '\0';
72+ co = c;
73+
74+ if ((c = strchr(c, '-')) == NULL) {
75+ /* Might be:
76+ * <arch>-<vendor>-<os>
77+ * <arch>-<os>-gnu
78+ */
79+ if (!xstrcasecmp(co, "gnu")) {
80+ /* Format was <arch>-<os>-gnu */
81+ ce = co;
82+ co = cv;
83+ cv = NULL;
84+ }
85+ } else {
86+ /* Format was <arch>-<vendor>-<os>-<extension> */
87+ *c++ = '\0';
88+ ce = c;
89+ }
90 }
91+ if (cv != NULL) cv = xstrdup(cv);
92 if (co != NULL) co = xstrdup(co);
93+ if (ce != NULL) {
94+ /* We need to prefix it with a "-" */
95+ char * lce = NULL;
96+
97+ lce = xmalloc(strlen(ce) + sizeof("-"));
98+ sprintf(lce, "-%s", ce);
99+
100+ ce = lce;
101+ }
102 }
103 } else {
104 const char *a = NULL;
105@@ -988,8 +1025,16 @@
106 addMacro(NULL, "_target", NULL, ct, RMIL_RPMRC);
107 delMacro(NULL, "_target_cpu");
108 addMacro(NULL, "_target_cpu", NULL, ca, RMIL_RPMRC);
109+ if (cv) {
110+ delMacro(NULL, "_target_vendor");
111+ addMacro(NULL, "_target_vendor", NULL, cv, RMIL_RPMRC);
112+ }
113 delMacro(NULL, "_target_os");
114 addMacro(NULL, "_target_os", NULL, co, RMIL_RPMRC);
115+ if (ce) {
116+ delMacro(NULL, "_gnu");
117+ addMacro(NULL, "_gnu", NULL, ce, RMIL_RPMRC);
118+ }
119
120 if (canontarget)
121 *canontarget = ct;
122@@ -997,8 +1041,12 @@
123 ct = _free(ct);
124 ca = _free(ca);
125 /*@-usereleased@*/
126+ cv = _free(cv);
127+ /*@-usereleased@*/
128 co = _free(co);
129 /*@=usereleased@*/
130+ ce = _free(ce);
131+ /*@-usereleased@*/
132 }
133
134 void rpmFreeRpmrc(void)
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-no-loop.patch b/meta/recipes-devtools/rpm/rpm/rpm-no-loop.patch
deleted file mode 100644
index 1f0dbcbef9..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-no-loop.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1The LOOP: ... messages appear to be errors, but in reality they are
2simply debug messages that indicate there is one or more dependency
3loop within the system.
4
5Due to Poky packages owning all of the directories they use, a large
6number of depedency loops may be present. So disabling this message
7seems to make the most sense.
8
9Signed-off-by: mark.hatle@windriver.com
10
11diff -ur rpm-5.1.10.orig/lib/depends.c rpm-5.1.10/lib/depends.c
12--- rpm-5.1.10.orig/lib/depends.c 2010-09-29 12:23:48.307048065 -0500
13+++ rpm-5.1.10/lib/depends.c 2010-09-29 12:33:23.306022259 -0500
14@@ -2044,9 +2044,11 @@
15 * Attempt to unravel a dependency loop by eliminating Requires's.
16 */
17 if (zap) {
18+#if 0
19 rpmlog(msglvl,
20 _("removing %s \"%s\" from tsort relations.\n"),
21 (rpmteNEVRA(p) ? rpmteNEVRA(p) : "???"), dp);
22+#endif
23 rpmteTSI(p)->tsi_count--;
24 if (tsi_prev) tsi_prev->tsi_next = tsi->tsi_next;
25 tsi->tsi_next = NULL;
26@@ -2676,10 +2678,12 @@
27 /* Unchain predecessor loop. */
28 rpmteTSI(p)->tsi_chain = NULL;
29
30+#if 0
31 if (!printed) {
32 rpmlog(msglvl, _("LOOP:\n"));
33 printed = 1;
34 }
35+#endif
36
37 /* Find (and destroy if co-requisite) "q <- p" relation. */
38 dp = zapRelation(q, p, 1, &nzaps, msglvl);
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-no-loopmsg.patch b/meta/recipes-devtools/rpm/rpm/rpm-no-loopmsg.patch
new file mode 100644
index 0000000000..4aded7518e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-no-loopmsg.patch
@@ -0,0 +1,16 @@
1lib/order.c: Make the dependency loop messages into debug msgs
2
3Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
4
5diff -urN rpm-5.4.0.orig/lib/order.c rpm-5.4.0/lib/order.c
6--- rpm-5.4.0.orig/lib/order.c 2010-12-13 17:36:39.000000000 -0600
7+++ rpm-5.4.0/lib/order.c 2011-08-10 11:11:43.194686332 -0500
8@@ -2170,7 +2170,7 @@
9 const char * dp;
10 rpmlogLvl msglvl = (anaconda || (rpmtsDFlags(ts) & RPMDEPS_FLAG_DEPLOOPS))
11 ? RPMLOG_WARNING : RPMLOG_ERR;
12-#if defined(RPM_VENDOR_MANDRIVA) /* loop-detection-optional-loglevel */
13+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_POKY) /* loop-detection-optional-loglevel */
14 // Report loops as debug-level message by default (7 = RPMLOG_DEBUG), overridable
15 msglvl = rpmExpandNumeric("%{?_loop_detection_loglevel}%{?!_loop_detection_loglevel:7}");
16 #endif
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-nrescan.patch b/meta/recipes-devtools/rpm/rpm/rpm-nrescan.patch
deleted file mode 100644
index db4f8b3a7a..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-nrescan.patch
+++ /dev/null
@@ -1,17 +0,0 @@
1We need to increase the number of dependency rescans as we have a large
2number of self-referencing dependencies within Poky. 100 seem reasonable.
3
4Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
5
6diff -ur rpm-5.1.10.orig/lib/depends.c rpm-5.1.10/lib/depends.c
7--- rpm-5.1.10.orig/lib/depends.c 2010-08-20 17:12:43.000000000 -0500
8+++ rpm-5.1.10/lib/depends.c 2010-09-02 13:37:21.966116309 -0500
9@@ -2310,7 +2310,7 @@
10 int numOrderList;
11 int npeer = 128; /* XXX more than deep enough for now. */
12 int * peer = memset(alloca(npeer*sizeof(*peer)), 0, (npeer*sizeof(*peer)));
13- int nrescans = 10;
14+ int nrescans = 100;
15 int _printed = 0;
16 char deptypechar;
17 size_t tsbytes;
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
index c0e3208383..0882df787f 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
@@ -45,7 +45,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
45DEPENDS = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}" 45DEPENDS = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}"
46extrarpmdeps = "python perl" 46extrarpmdeps = "python perl"
47extrarpmdeps_virtclass-native = "" 47extrarpmdeps_virtclass-native = ""
48PR = "r19" 48PR = "r20"
49 49
50# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed 50# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed
51# in order to extract the distribution SRPM into a format we can extract... 51# in order to extract the distribution SRPM into a format we can extract...
@@ -61,14 +61,12 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;ex
61 file://rpm-tools-mtree-LDFLAGS.patch \ 61 file://rpm-tools-mtree-LDFLAGS.patch \
62 file://fprint-pointer-fix.patch \ 62 file://fprint-pointer-fix.patch \
63 file://rpm-fileclass.patch \ 63 file://rpm-fileclass.patch \
64 file://rpm-canonarch.patch \
65 file://rpm-no-loopmsg.patch \
64 " 66 "
65 67
66# file://hdraddorappend.patch \
67# file://export-rpmbag-h.patch \
68# file://rpm-nrescan.patch \
69# file://rpm-autoconf.patch \ 68# file://rpm-autoconf.patch \
70# file://remove-compiled-tests.patch;apply=no \ 69# file://remove-compiled-tests.patch;apply=no \
71# file://rpm-no-loop.patch \
72# " 70# "
73 71
74SRC_URI[md5sum] = "19c1a7f68d7765eeb7615c9c4e54e380" 72SRC_URI[md5sum] = "19c1a7f68d7765eeb7615c9c4e54e380"