Skip to contentSkip to conversation

Uprev RPM to 5.4.9

PATCH Superseded Mark Hatle 2 participants 9 messages May 17, 2012

v1 of 7 Superseded Latest is v7 →

lore
Share & tools
lore

Mark Hatle

author
#0 lore raw

cover Uprev RPM to 5.4.9

Berkley DB also gets upreved, and a new package ossp-uuid gets added to the system.

This was -heavily- tested with and without zypper on IA, and PPC.

In addition a minor performance enhancement with a query operation was added.

The uprev also adds the capability of using PACKAGECONFIG settings to tailor the behavior of RPM.

The following changes since commit 2cf6e7cf81c0b864b5d51be60094a6eb3e584383:

fotowall: Add #include ui_wizard.h to ExportWizard.cpp (2012-05-16 07:33:15 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib mhatle/rpm
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=mhatle/rpm

Mark Hatle (4):
rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)
rpm: Upgrade RPM to 5.4.9
ossp-uuid: Add oss-uuid package and RPM 5.4.9 integration
package_rpm: Add capability to directly query packageorigin

 meta/classes/package_rpm.bbclass                   |   18 +-
 meta/classes/rootfs_rpm.bbclass                    |   22 +-
 .../ossp-uuid/0001-Change-library-name.patch       |  112 +++++
 ...erve-m-option-status-in-v-option-handling.patch |   55 +++
 .../ossp-uuid/0003-Fix-whatis-entries.patch        |   51 +++
 .../ossp-uuid/0004-fix-data-uuid-from-string.patch |   36 ++
 .../ossp-uuid/ossp-uuid/uuid-libtool.patch         |   24 +
 .../ossp-uuid/ossp-uuid/uuid-nostrip.patch         |   16 +
 meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb |   58 +++
 .../rpm/rpm/fix_for_automake_1.11.2.patch          |   54 ---
 .../rpm/rpm/fprint-pointer-fix.patch               |   35 --
 .../rpm/rpm/remove-compiled-tests.patch            |  443 --------------------
 meta/recipes-devtools/rpm/rpm/rpm-autoconf.patch   |   22 -
 meta/recipes-devtools/rpm/rpm/rpm-autogen.patch    |   41 +--
 meta/recipes-devtools/rpm/rpm/rpm-db-reduce.patch  |   16 +-
 .../recipes-devtools/rpm/rpm/rpm-log-auto-rm.patch |   12 +-
 meta/recipes-devtools/rpm/rpm/rpm-lua.patch        |   29 ++
 .../rpm/rpm/rpm-no-perl-urpm.patch                 |   43 ++
 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch    |   36 --
 .../rpm/rpm/rpm-packageorigin.patch                |   23 +
 .../rpm/rpm/rpm-scriptletexechelper.patch          |   33 +-
 meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch |   26 +-
 .../rpm/{rpm_5.4.0.bb => rpm_5.4.9.bb}             |  158 ++++----
 .../libzypp/libzypp/libzypp-rpm549.patch           |   28 ++
 meta/recipes-extended/libzypp/libzypp_git.bb       |    3 +-
 .../db/{db_5.1.19.bb => db_5.3.15.bb}              |    8 +-
 26 files changed, 630 insertions(+), 772 deletions(-)
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
 delete mode 100644 meta/recipes-devtools/rpm/rpm/fix_for_automake_1.11.2.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/remove-compiled-tests.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/rpm-autoconf.patch
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-lua.patch
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-no-perl-urpm.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch
 rename meta/recipes-devtools/rpm/{rpm_5.4.0.bb => rpm_5.4.9.bb} (76%)
 create mode 100644 meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
 rename meta/recipes-support/db/{db_5.1.19.bb => db_5.3.15.bb} (93%)
Signature · 1 line
1.7.3.4
author
#1 lore raw

PATCH 1/4 rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)

RPM 5.4.8 requires db 5.3.x, so both are upgraded together.

---
 meta/classes/rootfs_rpm.bbclass                    |   22 +-
 .../rpm/rpm/fix_for_automake_1.11.2.patch          |   54 ---
 .../rpm/rpm/fprint-pointer-fix.patch               |   35 --
 .../rpm/rpm/remove-compiled-tests.patch            |  443 --------------------
 meta/recipes-devtools/rpm/rpm/rpm-autoconf.patch   |   22 -
 meta/recipes-devtools/rpm/rpm/rpm-autogen.patch    |   41 +--
 meta/recipes-devtools/rpm/rpm/rpm-db-reduce.patch  |   16 +-
 .../recipes-devtools/rpm/rpm/rpm-log-auto-rm.patch |   12 +-
 .../rpm/rpm/rpm-no-perl-urpm.patch                 |   43 ++
 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch    |   36 --
 .../rpm/{rpm_5.4.0.bb => rpm_5.4.8.bb}             |   43 ++-
 .../db/{db_5.1.19.bb => db_5.3.15.bb}              |    8 +-
 12 files changed, 106 insertions(+), 669 deletions(-)
 delete mode 100644 meta/recipes-devtools/rpm/rpm/fix_for_automake_1.11.2.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/remove-compiled-tests.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/rpm-autoconf.patch
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-no-perl-urpm.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch
 rename meta/recipes-devtools/rpm/{rpm_5.4.0.bb => rpm_5.4.8.bb} (91%)
 rename meta/recipes-support/db/{db_5.1.19.bb => db_5.3.15.bb} (93%)
meta/classes/rootfs_rpm.bbclass +12 -10
index 9039b21..703fa15 100644
@@ -66,24 +66,26 @@ fakeroot rootfs_rpm_do_rootfs () {
 	touch ${INSTALL_ROOTFS_RPM}${rpmlibdir}/log/log.0000000001
 	cat > ${INSTALL_ROOTFS_RPM}${rpmlibdir}/DB_CONFIG << EOF
 # ================ Environment
-set_data_dir            .
-set_create_dir          .
-set_lg_dir              ./log
-set_tmp_dir             ./tmp
+set_data_dir .
+set_create_dir .
+set_lg_dir ./log
+set_tmp_dir ./tmp
+set_flags db_log_autoremove on
 
 # -- thread_count must be >= 8
-set_thread_count        64
+set_thread_count 64
 
 # ================ Logging
 
 # ================ Memory Pool
-set_mp_mmapsize         268435456
+set_cachesize 0 1048576 0
+set_mp_mmapsize 268435456
 
 # ================ Locking
-set_lk_max_locks        16384
-set_lk_max_lockers      16384
-set_lk_max_objects      16384
-mutex_set_max           163840
+set_lk_max_locks 16384
+set_lk_max_lockers 16384
+set_lk_max_objects 16384
+mutex_set_max 163840
 
 # ================ Replication
 EOF
meta/recipes-devtools/rpm/rpm/fix_for_automake_1.11.2.patch deleted +0 -54

54 lines not on this page · raw message

meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch deleted +0 -35
deleted file mode 100644
index 87a92eb..0000000
@@ -1,35 +0,0 @@
-Upstream-Status: Submitted
-
-From: Qing He <[email protected]>
-Subject: [PATCH] rpm 5.4.0: Fix pointer mishandling
-
-In fpLookupSubdir, data returned by hash should be of type
-"struct rpmffi_s **" instead of "struct rpmffi_s *" to avoid
-segfault.
-
-Signed-off-by: Qing He <[email protected]>
-
-diff --git a/rpmdb/fprint.c b/rpmdb/fprint.c
-index 0e76148..82b8f45 100644
---- a/rpmdb/fprint.c
-+++ b/rpmdb/fprint.c
-@@ -333,7 +333,7 @@ restart:
-     *te = '\0';
- 
-     while (te < se) {
--	struct rpmffi_s * recs;
-+	struct rpmffi_s ** recs;
- 	int numRecs;
- 	int i;
- 
-@@ -346,8 +346,8 @@ restart:
- 	    const char * link;
- 	    int fx;
- 
--	    fx = recs[i].fileno;
--	    fi =  recs[i].p->fi;
-+	    fx = recs[i]->fileno;
-+	    fi =  recs[i]->p->fi;
- 	    flink = fi->flinks[fx];
- 	    if (!(flink && *flink != '\0'))
- 		continue;
meta/recipes-devtools/rpm/rpm/remove-compiled-tests.patch deleted +0 -443

443 lines not on this page · raw message

meta/recipes-devtools/rpm/rpm/rpm-autoconf.patch deleted +0 -22
deleted file mode 100644
index 5e93517..0000000
@@ -1,22 +0,0 @@
-Using the version of autoconf in poky results in:
-
-configure.ac:11: error: m4_divert_push: cannot change diversion to `GROW' inside m4_expand
-
-without this patch.
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <[email protected]>
-
-diff -ur rpm-5.1.10.orig/configure.ac rpm-5.1.10/configure.ac
---- rpm-5.1.10.orig/configure.ac	2010-08-20 17:12:16.000000000 -0500
-+++ rpm-5.1.10/configure.ac	2010-09-03 11:34:44.722097327 -0500
-@@ -8,7 +8,7 @@
- 
- AC_PREREQ(2.60)
- AC_DEFUN([PACKAGE_BUGREPORT_DEFAULT], [[email protected]])
--AC_INIT(rpm, [5.1.10], [PACKAGE_BUGREPORT_DEFAULT])
-+AC_INIT(rpm, [5.1.10])
- PACKAGE_TIMESTAMP="2008" dnl # YYYY[-MM[-DD[ HH[:MM]]]]
- AC_MSG_TITLE([RPM Package Manager (RPM)], [$PACKAGE_VERSION])
- 
meta/recipes-devtools/rpm/rpm/rpm-autogen.patch +5 -36

47 lines not on this page · raw message

meta/recipes-devtools/rpm/rpm/rpm-db-reduce.patch +8 -8
index e063e86..d9b4e33 100644
@@ -4,16 +4,16 @@ Change cache size to reduce the usage of disk space from 62MB to 26MB.
 
 Signed-off-by: Mei Lei <[email protected]>
 
-diff --git a/rpmdb/DB_CONFIG.in b/rpmdb/DB_CONFIG.in
-index e0b4689..b64e3a9 100644
---- a/rpmdb/DB_CONFIG.in
-+++ b/rpmdb/DB_CONFIG.in
-@@ -29,7 +29,7 @@ set_thread_count	64
+Index: rpm-5.4.8/rpmdb/DB_CONFIG.in
+===================================================================
+--- rpm-5.4.8.orig/rpmdb/DB_CONFIG.in
++++ rpm-5.4.8/rpmdb/DB_CONFIG.in
+@@ -29,7 +29,7 @@ set_thread_count 64
  
  # ================ Memory Pool
  #XXX initializing dbenv with set_cachesize has unimplemented prerequsites
--#set_cachesize		0 1048576 0 
-+set_cachesize		0 1048576 0 
- set_mp_mmapsize		268435456
+-#set_cachesize 0 1048576 0 
++set_cachesize 0 1048576 0 
+ set_mp_mmapsize 268435456
  
  # ================ Locking
meta/recipes-devtools/rpm/rpm/rpm-log-auto-rm.patch +6 -6
index babafb3..4f484c4 100644
@@ -5,11 +5,11 @@ diff --git a/rpmdb/DB_CONFIG.in b/rpmdb/DB_CONFIG.in
 index 8b94c94..e0b4689 100644
 --- a/rpmdb/DB_CONFIG.in
 +++ b/rpmdb/DB_CONFIG.in
-@@ -4,6 +4,7 @@ set_data_dir		.
- set_create_dir		.
- set_lg_dir		./log
- set_tmp_dir		./tmp
-+set_flags 		db_log_autoremove on
+@@ -4,6 +4,7 @@
+ set_create_dir .
+ set_lg_dir ./log
+ set_tmp_dir ./tmp
++set_flags db_log_autoremove on
  
  # -- thread_count must be >= 8
- set_thread_count	64
+ set_thread_count 64
meta/recipes-devtools/rpm/rpm/rpm-no-perl-urpm.patch new file +43 -0

43 lines not on this page · raw message

meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch deleted +0 -36
deleted file mode 100644
index f6e5828..0000000
@@ -1,36 +0,0 @@
-Backport from RPM 5.4.1 CVS, disabled fsync.
-
-Upstream-Status: Backport
-
-Signed-off-by: Mark Hatle <[email protected]>
-
-diff -ur rpm-5.4.0.orig/CHANGES rpm-5.4.0/CHANGES
---- rpm-5.4.0.orig/CHANGES	2010-12-29 07:51:38.000000000 -0600
-+++ rpm-5.4.0/CHANGES	2011-02-15 20:54:27.021926840 -0600
-@@ -1,4 +1,5 @@
- 5.4.0 -> 5.4.1:
-+    - jbj: remove fsync(2) after file install, its intolerably slow.
- 
- 5.3.7 -> 5.4.0:
-     - jbj: remove markReplacedFiles.
-diff -ur rpm-5.4.0.orig/lib/fsm.c rpm-5.4.0/lib/fsm.c
---- rpm-5.4.0.orig/lib/fsm.c	2009-12-10 12:52:18.000000000 -0600
-+++ rpm-5.4.0/lib/fsm.c	2011-02-15 20:55:04.372938221 -0600
-@@ -1017,7 +1017,17 @@
- 	    (void) fsmNext(fsm, IOSM_NOTIFY);
-     }
- 
-+#ifdef DYING
-+/* Measurements from installing kernel-source package:
-+ * +fsync
-+ *     total:               1      0.000000 MB    640.854524 secs
-+ * +fdatasync
-+ *     total:               1      0.000000 MB    419.983200 secs
-+ * w/o fsync/fdsatasync:
-+ *     total:               1      0.000000 MB     12.492918 secs
-+ */
-     xx = fsync(Fileno(fsm->wfd));
-+#endif
- 
-     if (st->st_size > 0 && (fsm->fdigest || fsm->digest)) {
- 	void * digest = NULL;
meta/recipes-devtools/rpm/rpm_5.4.8.bb renamed from meta/recipes-devtools/rpm/rpm_5.4.0.bb +28 -15

87 lines not on this page · raw message

meta/recipes-support/db/db_5.3.15.bb renamed from meta/recipes-support/db/db_5.1.19.bb +4 -4
similarity index 93%
rename from meta/recipes-support/db/db_5.1.19.bb
rename to meta/recipes-support/db/db_5.3.15.bb
index 7e84646..9d2bbe5 100644
@@ -14,15 +14,15 @@ HOMEPAGE = "http://www.oracle.com/technology/products/berkeley-db/db/index.html"
 LICENSE = "Sleepycat"
 VIRTUAL_NAME ?= "virtual/db"
 CONFLICTS = "db3"
-PR = "r4"
+PR = "r5"
 
 SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
 SRC_URI += "file://arm-thumb-mutex_db5.patch;patchdir=.."
 
-SRC_URI[md5sum] = "76fcbfeebfcd09ba0b4d96bfdf8d884d"
-SRC_URI[sha256sum] = "0194d4ca9266ba1a1c0bfbc233b18bfd05f63163453c81ebcdfdc7112d5ac850"
+SRC_URI[md5sum] = "5493fb5f7cc3915887c836b096f18773"
+SRC_URI[sha256sum] = "4f4f7d548984dde3584fcda0e4f96901cb8bafb08033a7781aec64ef2ea1f579"
 
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=86f9294f39f38ef9e89690bcd2320e7a"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=12cc3ff983ed4ecc6cc091370ee4dbc3"
 
 inherit autotools
 
Signature · 1 line
1.7.3.4
#2 lore raw

Re: [PATCH 1/4] rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)

Quoted 1 line · Mark Hatle

RPM 5.4.8 requires db 5.3.x, so both are upgraded together.

is it also fine to upgrade this on existing devices ? or do databases have to be updated too ?

author
#3 lore raw

Re: [PATCH 1/4] rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)

Quoted 5 lines · Khem Raj
Quoted 1 line · Mark Hatle

RPM 5.4.8 requires db 5.3.x, so both are upgraded together.

is it also fine to upgrade this on existing devices ? or do databases have to be updated too ?

I did limited testing with this, and it was fine to upgrade on an existing device. (I only checked on an IA32 qemux86-64 system.)

One thing I did forget to note in this message. If you are NOT using OEBasicHash, then libzypp/zypper needs to be manually rerun. The underlying interface for a few thing has changed and a recompile is necessary -- OE-core doesn't realize it needs to rebuild. (OEBasicHash fixes that because it sees we require RPM, and RPM changed, so we need to rebuild.)

--Mark

Quoted 4 lines

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

#4 lore raw

Re: [PATCH 1/4] rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)

Quoted 3 lines · Mark Hatle

One thing I did forget to note in this message.  If you are NOT using OEBasicHash,

since this is not default in OE-Core may be forces PR bumps for the affected recipes along with this series would make sense.

author
#5 lore raw

Re: [PATCH 1/4] rpm: Upgrade RPM to 5.4.8 (db to 5.3.15)

Quoted 8 lines · Khem Raj
Quoted 3 lines · Mark Hatle

One thing I did forget to note in this message. If you are NOT using OEBasicHash,

since this is not default in OE-Core may be forces PR bumps for the affected recipes along with this series would make sense.

Seemed silly to be to bump a PR w/o a change.. but I'll do and do that.

Update soon...

--Mark

author
#6 lore raw

PATCH 2/4 rpm: Upgrade RPM to 5.4.9

In reply to Mark Hatle

Beside upreving RPM, add necessary integration pathces to libzypp.

Also change the configuration of RPM to support PACKAGECONFIG flags. RPM is highly configurable, the default configuration is good for minimal OE-Core use.

---
 meta/recipes-devtools/rpm/rpm/rpm-lua.patch        |   29 +++++
 .../rpm/rpm/rpm-scriptletexechelper.patch          |   33 +++---
 meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch |   26 ++---
 .../rpm/{rpm_5.4.8.bb => rpm_5.4.9.bb}             |  124 +++++++++-----------
 .../libzypp/libzypp/libzypp-rpm549.patch           |   28 +++++
 meta/recipes-extended/libzypp/libzypp_git.bb       |    3 +-
 6 files changed, 142 insertions(+), 101 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-lua.patch
 rename meta/recipes-devtools/rpm/{rpm_5.4.8.bb => rpm_5.4.9.bb} (82%)
 create mode 100644 meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
meta/recipes-devtools/rpm/rpm/rpm-lua.patch new file +29 -0
new file mode 100644
index 0000000..980e1b1
@@ -0,0 +1,29 @@
+Add support for cross compiling lua
+
+Signed-off-by: Mark Hatle <[email protected]>
+
+diff -ur rpm-5.4.9.orig/configure.ac rpm-5.4.9/configure.ac
+--- rpm-5.4.9.orig/configure.ac	2012-05-16 12:16:36.589813548 -0500
++++ rpm-5.4.9/configure.ac	2012-05-16 12:26:01.070813518 -0500
+@@ -120,6 +120,9 @@
+ 
+ AC_PATH_PROG(AS, as, as)
+ 
++CC_FOR_BUILD=${CC_FOR_BUILD-\$(CC)}
++AC_SUBST(CC_FOR_BUILD)
++
+ dnl # GCC specifics
+ AC_PROG_GCC_TRADITIONAL
+ AC_ARG_ENABLE(build-pic,
+diff -ur rpm-5.4.9.orig/lua/Makefile.am rpm-5.4.9/lua/Makefile.am
+--- rpm-5.4.9.orig/lua/Makefile.am	2012-04-07 19:15:25.000000000 -0500
++++ rpm-5.4.9/lua/Makefile.am	2012-05-16 12:26:19.556856688 -0500
+@@ -40,7 +40,7 @@
+ 
+ # --- bin2c doesn't need anything but a compiler
+ bin2c$(EXEEXT):  bin2c.c
+-	$(CC) -o $@ $<
++	$(CC_FOR_BUILD) -o $@ $<
+ 
+ liblua_la_SOURCES =
+ liblua_la_CFLAGS = @WITH_LUA_SUBDIR_DEF@
meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch +17 -16
index e4db0e4..8a9e712 100644
@@ -12,10 +12,11 @@ Upstream-Status: Pending
 
 Signed-off-by: Mark Hatle <[email protected]>
 
-diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
---- rpm-5.4.0.orig/lib/psm.c	2010-12-29 07:42:11.000000000 -0600
-+++ rpm-5.4.0/lib/psm.c	2011-11-08 13:38:48.132791154 -0600
-@@ -792,6 +792,10 @@
+Index: rpm-5.4.9/lib/psm.c
+===================================================================
+--- rpm-5.4.9.orig/lib/psm.c
++++ rpm-5.4.9/lib/psm.c
+@@ -801,6 +801,10 @@ static rpmRC runScript(rpmpsm psm, Heade
      int xx;
      int i;
  
@@ -26,23 +27,23 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
      if (psm->sstates != NULL && ix >= 0 && ix < RPMSCRIPT_MAX)
  	ssp = psm->sstates + ix;
      if (ssp != NULL)
-@@ -858,14 +862,29 @@
+@@ -867,14 +871,29 @@ assert(he->p.str != NULL);
  		(F_ISSET(psm, UNORDERED) ? "a" : ""));
  
      if (Phe->p.argv == NULL) {
--	argv = alloca(5 * sizeof(*argv));
+-	argv = (const char **) alloca(5 * sizeof(*argv));
 -	argv[0] = "/bin/sh";
 -	argc = 1;
-+	argv = alloca(7 * sizeof(*argv));
++	argv = (const char **) alloca(7 * sizeof(*argv));
 +	argc = 0;
 +    } else {
-+	argv = alloca((Phe->c + 6) * sizeof(*argv));
++	argv = (const char **) alloca((Phe->c + 6) * sizeof(*argv));
 +	argc = 0;
 +    }
 +
 +#ifdef RPM_VENDOR_POKY
 +    if (scriptletWrapper && *scriptletWrapper) {
-+        argv[argc++] = scriptletWrapper;
++	argv[argc++] = scriptletWrapper;
 +	argv[argc] = rpmtsRootDir(ts);
 +	if (!argv[argc] || !*argv[argc])
 +	   argv[argc] = "/";
@@ -51,10 +52,10 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
 +#endif
 +
 +    if (Phe->p.argv == NULL) {
-+        argv[argc++] = "/bin/sh";
++	argv[argc++] = "/bin/sh";
  	ldconfig_done = 0;
      } else {
--	argv = alloca((Phe->c + 4) * sizeof(*argv));
+-	argv = (const char **) alloca((Phe->c + 4) * sizeof(*argv));
 -	memcpy(argv, Phe->p.argv, Phe->c * sizeof(*argv));
 -	argc = Phe->c;
 +	memcpy((argv + argc), Phe->p.argv, Phe->c * sizeof(*argv));
@@ -62,7 +63,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	ldconfig_done = (ldconfig_path && !strcmp(argv[0], ldconfig_path)
  		? 1 : 0);
      }
-@@ -916,7 +935,12 @@
+@@ -925,7 +944,12 @@ assert(he->p.str != NULL);
  	    goto exit;
  
  	if (rpmIsDebug() &&
@@ -76,7 +77,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	{
  	    static const char set_x[] = "set -x\n";
  	    nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
-@@ -1051,12 +1075,22 @@
+@@ -1060,12 +1084,22 @@ assert(he->p.str != NULL);
  
  	{   const char * rootDir = rpmtsRootDir(ts);
  	    if (!rpmtsChrootDone(ts) && rootDir != NULL &&
@@ -99,7 +100,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	    xx = Chdir("/");
  	    rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
  			psm->stepName, sln, NVRA,
-@@ -2961,6 +2995,13 @@
+@@ -2977,6 +3011,13 @@ assert(psm->te != NULL);
      case PSM_SCRIPT:	/* Run current package scriptlets. */
  	/* XXX running %verifyscript/%sanitycheck doesn't have psm->te */
      {	rpmtxn _parent = (psm && psm->te ? psm->te->txn : NULL);
@@ -113,7 +114,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
  	rc = runInstScript(psm);
  	if (rc)
-@@ -2968,11 +3009,24 @@
+@@ -2984,11 +3025,24 @@ assert(psm->te != NULL);
  	else
  	     xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
  	rpmtsGetRdb(ts)->db_txn = NULL;
@@ -138,7 +139,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	break;
      case PSM_IMMED_TRIGGERS:
  	/* Run triggers in this package other package(s) set off. */
-@@ -2982,7 +3036,18 @@
+@@ -2998,7 +3052,18 @@ assert(psm->te != NULL);
  	    F_SET(psm, GOTTRIGGERS);
  	}
  	if (psm->triggers != NULL)
meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch +11 -15
index 1667901..f29866b 100644
@@ -16,20 +16,20 @@ RP 2012/2/7
  2 files changed, 152 insertions(+), 1 deletions(-)
  create mode 100644 tools/rpmdeps-oecore.c
 
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index f520843..2eba9bf 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
+Index: rpm-5.4.9/tools/Makefile.am
+===================================================================
+--- rpm-5.4.9.orig/tools/Makefile.am
++++ rpm-5.4.9/tools/Makefile.am
 @@ -58,7 +58,7 @@ pkgbin_PROGRAMS =	\
  	@WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
  	@WITH_SEMANAGE_SEMODULE@ wget \
  	rpmcache rpmdigest rpmrepo rpmspecdump \
 -	rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
 +	rpmcmp rpmdeps rpmdeps-oecore sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
- dist_man_MANS =		rpmgrep.1
- 
- augtool_SOURCES =	augtool.c
-@@ -155,6 +155,10 @@ rpmdeps_SOURCES =	rpmdeps.c
+ if WITH_DB
+ pkgbin_PROGRAMS +=	dbconvert
+ endif
+@@ -168,6 +168,10 @@ rpmdeps_SOURCES =	rpmdeps.c
  rpmdeps_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
  rpmdeps_LDADD =		$(RPM_LDADD_COMMON)
  
@@ -40,11 +40,10 @@ index f520843..2eba9bf 100644
  rpmdigest_SOURCES =	rpmdigest.c
  rpmdigest_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
  rpmdigest_LDADD =	$(RPMIO_LDADD_COMMON)
-diff --git a/tools/rpmdeps-oecore.c b/tools/rpmdeps-oecore.c
-new file mode 100644
-index 0000000..e646da9
+Index: rpm-5.4.9/tools/rpmdeps-oecore.c
+===================================================================
 --- /dev/null
-+++ b/tools/rpmdeps-oecore.c
++++ rpm-5.4.9/tools/rpmdeps-oecore.c
 @@ -0,0 +1,147 @@
 +#include "system.h"
 +const char *__progname;
@@ -193,6 +192,3 @@ index 0000000..e646da9
 +    optCon = rpmcliFini(optCon);
 +    return ec;
 +}
--- 
-1.7.4.1
-
meta/recipes-devtools/rpm/rpm_5.4.9.bb renamed from meta/recipes-devtools/rpm/rpm_5.4.8.bb +55 -69

251 lines not on this page · raw message

meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch new file +28 -0
new file mode 100644
index 0000000..8268a2d
@@ -0,0 +1,28 @@
+commit 6c47ad415246cc3a3edac2e1637106d330574c85
+Author: Mark Hatle <[email protected]>
+Date:   Fri May 11 19:05:09 2012 -0500
+
+    RpmHeader.cc: RPM 5.4.9 integration
+    
+    _RPMVSF_xxx - NODIGEST, NOSIGNATURES, NOHEADER, and NOPAYLOAD
+    are now obsolete and no longer supported.
+    
+    Signed-off-by: Mark Hatle <[email protected]>
+
+diff --git a/zypp/target/rpm/RpmHeader.cc b/zypp/target/rpm/RpmHeader.cc
+index 1224ecd..c96dae6 100644
+--- a/zypp/target/rpm/RpmHeader.cc
++++ b/zypp/target/rpm/RpmHeader.cc
+@@ -230,10 +230,12 @@ RpmHeader::constPtr RpmHeader::readPackage( const Pathname & path_r,
+   librpmDb::globalInit();
+   rpmts ts = ::rpmtsCreate();
+   unsigned vsflag = RPMVSF_DEFAULT;
++#if !defined(_RPM_5)
+   if ( verification_r & NODIGEST )
+     vsflag |= _RPMVSF_NODIGESTS;
+   if ( verification_r & NOSIGNATURE )
+     vsflag |= _RPMVSF_NOSIGNATURES;
++#endif
+   ::rpmtsSetVSFlags( ts, rpmVSFlags(vsflag) );
+ 
+   Header nh = 0;
meta/recipes-extended/libzypp/libzypp_git.bb +2 -1
index 3c3a9f0..c5761d5 100644
@@ -11,7 +11,7 @@ DEPENDS  = "rpm boost curl libxml2 zlib sat-solver expat openssl udev libproxy"
 S = "${WORKDIR}/git"
 SRCREV = "15b6c52260bbc52b3d8e585e271b67e10cc7c433"
 PV = "0.0-git${SRCPV}"
-PR = "r20"
+PR = "r21"
 
 SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
            file://no-doc.patch \
@@ -23,6 +23,7 @@ SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
 	   file://fix_for_compile_wth_gcc-4.6.0.patch \
 	   file://hardcode-lib-fix.patch \
 	   file://close.patch \
+	   file://libzypp-rpm549.patch \
           "
 
 SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"
Signature · 1 line
1.7.3.4
author
#7 lore raw

PATCH 3/4 ossp-uuid: Add oss-uuid package and RPM 5.4.9 integration

In reply to Mark Hatle

RPM 5.4.9 now strongly encourages you to have the ossp-uuid library available.

Add this recipe, and change RPM to use the uuid functionality.

---
 .../ossp-uuid/0001-Change-library-name.patch       |  112 ++++++++++++++++++++
 ...erve-m-option-status-in-v-option-handling.patch |   55 ++++++++++
 .../ossp-uuid/0003-Fix-whatis-entries.patch        |   51 +++++++++
 .../ossp-uuid/0004-fix-data-uuid-from-string.patch |   36 ++++++
 .../ossp-uuid/ossp-uuid/uuid-libtool.patch         |   24 ++++
 .../ossp-uuid/ossp-uuid/uuid-nostrip.patch         |   16 +++
 meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb |   58 ++++++++++
 meta/recipes-devtools/rpm/rpm_5.4.9.bb             |   10 ++-
 8 files changed, 359 insertions(+), 3 deletions(-)
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch
 create mode 100644 meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch new file +112 -0
new file mode 100644
index 0000000..a46e244
@@ -0,0 +1,112 @@
+From: Piotr Roszatycki <[email protected]>
+Date: Wed, 27 Jan 2010 16:53:11 +0100
+Subject: [PATCH] Change library name
+
+The soname was changed to ossp-uuid to prevend the name clash with e2fsprogs's
+uuid library.
+---
+ Makefile.in      |    6 +++---
+ perl/Makefile.PL |   12 ++++++------
+ php/config.m4    |    2 +-
+ uuid-config.in   |    2 +-
+ uuid.pc.in       |    4 ++--
+ 5 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index d28f4be..c2ba99d 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -62,13 +62,13 @@ PERL        = @PERL@
+ PHP         = @PHP@
+ PG_CONFIG   = @PG_CONFIG@
+ 
+-LIB_NAME    = libuuid.la
++LIB_NAME    = libossp-uuid.la
+ LIB_OBJS    = uuid.lo uuid_md5.lo uuid_sha1.lo uuid_prng.lo uuid_mac.lo uuid_time.lo uuid_ui64.lo uuid_ui128.lo uuid_str.lo
+ 
+-DCE_NAME    = libuuid_dce.la
++DCE_NAME    = libossp-uuid_dce.la
+ DCE_OBJS    = uuid_dce.lo $(LIB_OBJS)
+ 
+-CXX_NAME    = libuuid++.la
++CXX_NAME    = libossp-uuid++.la
+ CXX_OBJS    = uuid++.lo $(LIB_OBJS)
+ 
+ PRG_NAME    = uuid
+diff --git a/perl/Makefile.PL b/perl/Makefile.PL
+index 92f4494..9c6fee6 100644
+--- a/perl/Makefile.PL
++++ b/perl/Makefile.PL
+@@ -33,9 +33,9 @@ use Config;
+ use ExtUtils::MakeMaker;
+ 
+ #   determine source directory
+-my ($srcdir) = map { my $d = $_; $d =~ s/\/libuuid\.la$//; $d }
+-               grep { -f $_ } ("../libuuid.la", glob("../*/libuuid.la"))
+-    or die "no source directory found (where libuuid.la is located)";
++my ($srcdir) = map { my $d = $_; $d =~ s/\/libossp-uuid\.la$//; $d }
++               grep { -f $_ } ("../libossp-uuid.la", glob("../*/libossp-uuid.la"))
++    or die "no source directory found (where libossp-uuid.la is located)";
+ 
+ #   determine extra build options
+ my $compat = 0;
+@@ -47,15 +47,15 @@ WriteMakefile(
+     VERSION_FROM      => 'uuid.pm',
+     ABSTRACT_FROM     => 'uuid.pod',
+     PREREQ_PM         => {},
+-    LIBS              => [ "-L$srcdir/.libs -L$srcdir -luuid" ],
++    LIBS              => [ "-L$srcdir/.libs -L$srcdir -lossp-uuid" ],
+     DEFINE            => '',
+     INC               => "-I. -I$srcdir",
+     PM                => { 'uuid.pm'   => '$(INST_LIBDIR)/uuid.pm',
+                            'uuid.pod'  => '$(INST_LIBDIR)/uuid.pod',
+                            ($compat ? ('uuid_compat.pm'  => '$(INST_LIBDIR)/../Data/UUID.pm')  : ()),
+                            ($compat ? ('uuid_compat.pod' => '$(INST_LIBDIR)/../Data/UUID.pod') : ()), },
+-    MAN3PODS          => { 'uuid.pod' => '$(INST_MAN3DIR)/OSSP::uuid.3',
+-                           ($compat ? ('uuid_compat.pod' => '$(INST_MAN3DIR)/Data::UUID.3') : ()), },
++    MAN3PODS          => { 'uuid.pod' => '$(INST_MAN3DIR)/OSSP::uuid.3pm',
++                           ($compat ? ('uuid_compat.pod' => '$(INST_MAN3DIR)/Data::UUID.3pm') : ()), },
+     TYPEMAPS          => [ 'uuid.tm' ],
+     test              => { TESTS => 'uuid.ts' . ($compat ? ' uuid_compat.ts' : '') },
+     NO_META           => 1,
+diff --git a/php/config.m4 b/php/config.m4
+index 5091b96..969b457 100644
+--- a/php/config.m4
++++ b/php/config.m4
+@@ -34,7 +34,7 @@ if test "$PHP_UUID" != "no"; then
+     PHP_NEW_EXTENSION(uuid, uuid.c, $ext_shared)
+     AC_DEFINE(HAVE_UUID, 1, [Have OSSP uuid library])
+     PHP_ADD_LIBPATH([..], )
+-    PHP_ADD_LIBRARY([uuid],, UUID_SHARED_LIBADD)
++    PHP_ADD_LIBRARY([ossp-uuid],, UUID_SHARED_LIBADD)
+     PHP_ADD_INCLUDE([..])
+     PHP_SUBST(UUID_SHARED_LIBADD)
+ 
+diff --git a/uuid-config.in b/uuid-config.in
+index 8d2a063..5b58812 100644
+--- a/uuid-config.in
++++ b/uuid-config.in
+@@ -121,7 +121,7 @@ do
+             output_extra="$output_extra $uuid_ldflags"
+             ;;
+         --libs)
+-            output="$output -luuid"
++            output="$output -lossp-uuid"
+             output_extra="$output_extra $uuid_libs"
+             ;;
+         * )
+diff --git a/uuid.pc.in b/uuid.pc.in
+index c76ad1e..de00c2f 100644
+--- a/uuid.pc.in
++++ b/uuid.pc.in
+@@ -36,7 +36,7 @@ Name: OSSP uuid
+ Description: Universally Unique Identifier (UUID) Library
+ Version: @UUID_VERSION_RAW@
+ URL: http://www.ossp.org/pkg/lib/uuid/
+-Cflags: -I${includedir}
+-Libs: -L${libdir} -luuid
++Cflags: -I${includedir}/ossp
++Libs: -L${libdir} -lossp-uuid
+ Libs.private: @LIBS@
+ 
+-- 
meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch new file +55 -0

55 lines not on this page · raw message

meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch new file +51 -0

51 lines not on this page · raw message

meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch new file +36 -0
new file mode 100644
index 0000000..1f92cea
@@ -0,0 +1,36 @@
+Description: Support dash-less args to from_string.
+Author: Tim Retout <[email protected]>
+Bug-Debian: http://bugs.debian.org/635607
+
+The module Data::GUID depends on Data::UUID supporting this behaviour.
+
+--- a/perl/uuid_compat.pm
++++ b/perl/uuid_compat.pm
+@@ -93,7 +93,9 @@
+     $uuid->import('str',
+           $str =~ /^0x/
+         ? join '-', unpack('x2 a8 a4 a4 a4 a12', $str)
+-        : $str
++        : $str =~ /-/
++        ? $str
++        : join '-', unpack('A8 A4 A4 A4 A12', $str)
+     );
+     return $uuid->export('bin');
+ }
+--- a/perl/uuid_compat.ts
++++ b/perl/uuid_compat.ts
+@@ -28,7 +28,7 @@
+ ##  uuid_compat.ts: Data::UUID Backward Compatibility Perl API (Perl test suite part)
+ ##
+ 
+-use Test::More tests => 14;
++use Test::More tests => 16;
+ 
+ BEGIN {
+     use_ok('Data::UUID');
+@@ -53,3 +53,5 @@
+ ok($uuid8 = $ug->from_string("6ba7b811-9dad-11d1-80b4-00c04fd430c8"));
+ ok($ug->compare($uuid7, $uuid8) == 0);
+ 
++ok($uuid9 = $ug->from_string("6ba7b8119dad11d180b400c04fd430c8"));
++ok($ug->compare($uuid7, $uuid9) == 0);
meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch new file +24 -0
new file mode 100644
index 0000000..97daca4
@@ -0,0 +1,24 @@
+Remove hardcoded libtool name, fall back to generated name
+
+Signed-off-by: Mark Hatle <[email protected]>
+
+diff -ur uuid-1.6.2.orig/Makefile.in uuid-1.6.2/Makefile.in
+--- uuid-1.6.2.orig/Makefile.in	2012-05-14 14:37:19.579672930 -0500
++++ uuid-1.6.2/Makefile.in	2012-05-14 14:37:49.112733787 -0500
+@@ -32,6 +32,7 @@
+ VPATH       = @srcdir@
+ srcdir      = @srcdir@
+ top_srcdir  = @top_srcdir@
++top_builddir = @top_builddir@
+ S           = $(srcdir)
+ C           = .
+ 
+@@ -55,7 +56,7 @@
+ CP          = cp
+ RMDIR       = rmdir
+ SHTOOL      = $(S)/shtool
+-LIBTOOL     = $(C)/libtool
++LIBTOOL     = @LIBTOOL@
+ TRUE        = true
+ POD2MAN     = pod2man
+ PERL        = @PERL@
meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch new file +16 -0
new file mode 100644
index 0000000..78f3c94
@@ -0,0 +1,16 @@
+We don't want anything stripped
+
+Signed-off-by: Mark Hatle <[email protected]>
+
+diff -ur uuid-1.6.2.orig/Makefile.in uuid-1.6.2/Makefile.in
+--- uuid-1.6.2.orig/Makefile.in	2012-05-14 14:42:42.225789456 -0500
++++ uuid-1.6.2/Makefile.in	2012-05-14 15:03:03.119733400 -0500
+@@ -254,7 +254,7 @@
+ 	-@if [ ".$(WITH_CXX)" = .yes ]; then \
+ 	    $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(CXX_NAME) $(DESTDIR)$(libdir)/; \
+ 	fi
+-	@$(LIBTOOL) --mode=install $(SHTOOL) install -c -s -m 755 uuid $(DESTDIR)$(bindir)/
++	@$(LIBTOOL) --mode=install $(SHTOOL) install -c -m 755 uuid $(DESTDIR)$(bindir)/
+ 	$(SHTOOL) install -c -m 644 $(S)/uuid.1 $(DESTDIR)$(mandir)/man1/
+ 	-@if [ ".$(WITH_PERL)" = .yes ]; then \
+ 	    (cd $(S)/perl && $(MAKE) $(MFLAGS) install DESTDIR=$(DESTDIR)); \
meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb new file +58 -0

58 lines not on this page · raw message

meta/recipes-devtools/rpm/rpm_5.4.9.bb +7 -3
index 3c22f22..da28965 100644
@@ -42,8 +42,8 @@ HOMEPAGE = "http://rpm5.org/"
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
-DEPENDS = "libpcre attr acl popt file"
-PR = "r38"
+DEPENDS = "libpcre attr acl popt ossp-uuid file"
+PR = "r39"
 
 # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
 # in order to extract the distribution SRPM into a format we can extract...
@@ -143,7 +143,7 @@ EXTRA_OECONF += "--verbose \
 		--without-gnutls \
 		--with-pcre \
 		--enable-utf8 \
-		--without-uuid \
+		--with-uuid \
 		--with-attr \
 		--with-acl \
 		--with-popt=external \
@@ -328,6 +328,10 @@ do_configure() {
 
 	./autogen.sh
 
+	# NASTY hack to make sure configure files the right pkg-config file...
+	sed -e 's/pkg-config --exists uuid/pkg-config --exists ossp-uuid/g' \
+	    -e 's/pkg-config uuid/pkg-config ossp-uuid/g' -i configure
+
 	export varprefix=${localstatedir}
 	export CC_FOR_BUILD="${BUILD_CC}"
 	oe_runconf
Signature · 1 line
1.7.3.4
author
#8 lore raw

PATCH 4/4 package_rpm: Add capability to directly query packageorigin

In reply to Mark Hatle

Add functionality to RPM to directly query the packageorigin (path) from the resolver database, instead of having to do this via an indirect method.

This results in a minor performance improvement.

---
 meta/classes/package_rpm.bbclass                   |   18 +++++++-------
 .../rpm/rpm/rpm-packageorigin.patch                |   23 ++++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_5.4.9.bb             |    3 +-
 3 files changed, 34 insertions(+), 10 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch
meta/classes/package_rpm.bbclass +9 -9
index 2da7a8b..962e5b1 100644
@@ -130,12 +130,12 @@ resolve_package_rpm () {
 	shift
 	local pkg_name=""
 	for solve in `cat ${conffile}`; do
-		pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $@ | grep -i 'Packageorigin' | cut -d : -f 2)
-		if [ -n "$pkg_name" ]; then
+		pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --qf "%{packageorigin}\n" "$@" | grep -v "is not installed" || true)
+		if [ -n "$pkg_name" -a "$pkg_name" != "(none)" ]; then
+			echo $pkg_name
 			break;
 		fi
 	done
-	echo $pkg_name
 }
 
 # rpm common command and options
@@ -405,9 +405,9 @@ package_install_internal_rpm () {
 
 	# Now that we have a solution, pull out a list of what to install...
 	echo "Manifest: ${target_rootfs}/install/install.manifest"
-	${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \
+	${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \
 		-D "__dbi_txn create nofsync private" \
-		| grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest
+		> ${target_rootfs}/install/install_solution.manifest
 
 	touch ${target_rootfs}/install/install_multilib_solution.manifest
 
@@ -425,9 +425,9 @@ package_install_internal_rpm () {
 
 		# Now that we have a solution, pull out a list of what to install...
 		echo "Manifest: ${target_rootfs}/install/install_multilib.manifest"
-		${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \
+		${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \
 			-D "__dbi_txn create nofsync private" \
-			| grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_multilib_solution.manifest
+			> ${target_rootfs}/install/install_multilib_solution.manifest
 
 	fi
 
@@ -482,9 +482,9 @@ EOF
 			-U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \
 			${target_rootfs}/install/initial_install.manifest
 
-		${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --yaml \
+		${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \
 			-D "__dbi_txn create nofsync private" \
-			| grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/initial_solution.manifest
+			> ${target_rootfs}/install/initial_solution.manifest
 
 		rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest
 		
meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch new file +23 -0
new file mode 100644
index 0000000..3c6dad4
@@ -0,0 +1,23 @@
+Add the ability to query the packageorigin
+
+Written by jbj at rpm5.org
+
+Signed-off-by: Mark Hatle <[email protected]>
+
+Index: rpm-5.4.8/rpmdb/hdrfmt.c
+===================================================================
+--- rpm-5.4.8.orig/rpmdb/hdrfmt.c
++++ rpm-5.4.8/rpmdb/hdrfmt.c
+@@ -2403,8 +2403,10 @@ static int pkgoriginTag(Header h, HE_t 
+     int rc = 1;
+ 
+     he->tag = RPMTAG_PACKAGEORIGIN;
+-    if (!headerGet(h, he, HEADERGET_NOEXTENSION)
+-     && (origin = headerGetOrigin(h)) != NULL)
++    /* XXX two sources for tag data: what search precedence? */
++    if (headerGet(h, he, HEADERGET_NOEXTENSION))
++	rc = 0;
++    else if ((origin = headerGetOrigin(h)) != NULL)
+     {
+ 	he->t = RPM_STRING_TYPE;
+ 	he->p.str = xstrdup(origin);
meta/recipes-devtools/rpm/rpm_5.4.9.bb +2 -1
index da28965..c747ae4 100644
@@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "libpcre attr acl popt ossp-uuid file"
-PR = "r39"
+PR = "r40"
 
 # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
 # in order to extract the distribution SRPM into a format we can extract...
@@ -67,6 +67,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex
 	   file://rpm-resolvedep.patch \
 	   file://rpm-no-perl-urpm.patch \
 	   file://rpm-lua.patch \
+	   file://rpm-packageorigin.patch \
 	  "
 
 SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"
Signature · 1 line
1.7.3.4