summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2016-02-23 11:28:21 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-09 16:59:55 +0000
commitee97e53fcceabc6ef4ddc68f38c5fa0e05c5d9a8 (patch)
treebf62d871484732f064894b0002fa30353a76b50b /meta/recipes-devtools/rpm
parente609c4edb211c576af35b7ac0c190dc9a7673483 (diff)
downloadopenembedded-core-ee97e53fcceabc6ef4ddc68f38c5fa0e05c5d9a8.tar.gz
openembedded-core-ee97e53fcceabc6ef4ddc68f38c5fa0e05c5d9a8.tar.bz2
openembedded-core-ee97e53fcceabc6ef4ddc68f38c5fa0e05c5d9a8.zip
rpm: Uprev to rpm-5.4.16 (pre) and rpm-5.4+cvs to current CVS head
meta/lib/oe/package_manager.py was also updated. This ensures that any diagnostic messages are ignored from the output of rpmresolve. The patches have been split into bug fixes (things that belong upstream) and local changes that are OE specific. The following patches are obsolete and have been removed: rpm-remove-sykcparse-decl.patch fstack-protector-configure-check.patch rpm-disable-Wno-override-init.patch rpm-lua-fix-print.patch rpm-rpmpgp-fix.patch verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Diffstat (limited to 'meta/recipes-devtools/rpm')
-rw-r--r--meta/recipes-devtools/rpm/rpm/debugedit-segv.patch46
-rw-r--r--meta/recipes-devtools/rpm/rpm/fstack-protector-configure-check.patch21
-rw-r--r--meta/recipes-devtools/rpm/rpm/header-include-fix.patch10
-rw-r--r--meta/recipes-devtools/rpm/rpm/popt-disable-auto-stack-protector.patch27
-rw-r--r--meta/recipes-devtools/rpm/rpm/python-rpm-rpmsense.patch30
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-atomic-ops.patch73
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-db5-or-db6.patch43
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-db60.patch56
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-disable-Wno-override-init.patch32
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-disable-auto-stack-protector.patch24
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-disable-blaketest.patch28
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-fix-parseEmbedded.patch27
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-gnu-atomic.patch64
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-keccak-sse-intrin.patch27
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch104
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-macros.in-disable-external-key-server.patch16
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-mongodb-sasl.patch69
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-payload-use-hashed-inode.patch20
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-pkgconfigdeps.patch10
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-py-init.patch16
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-python-AddErase.patch35
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-python-restore-origin.patch49
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-python-tagname.patch24
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-remove-sykcparse-decl.patch14
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-rpmdb-grammar.patch124
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-rpmio-headers.patch19
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-fix.patch67
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-popt.patch26
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch29
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-syck-fix-gram.patch1081
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-tagname-type.patch25
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpmatch.patch30
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpmqv_cc_b_gone.patch36
-rw-r--r--meta/recipes-devtools/rpm/rpm/uclibc-support.patch36
-rw-r--r--meta/recipes-devtools/rpm/rpm/verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch38
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4+cvs.bb225
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.16.bb (renamed from meta/recipes-devtools/rpm/rpm_5.4.14.bb)142
37 files changed, 2215 insertions, 528 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/debugedit-segv.patch b/meta/recipes-devtools/rpm/rpm/debugedit-segv.patch
index beef5edd9d..585cf12fd8 100644
--- a/meta/recipes-devtools/rpm/rpm/debugedit-segv.patch
+++ b/meta/recipes-devtools/rpm/rpm/debugedit-segv.patch
@@ -15,34 +15,36 @@ Upstream-Status: Pending
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Index: rpm-5.4.14/tools/debugedit.c
+Index: rpm/tools/debugedit.c
===================================================================
---- rpm-5.4.14.orig/tools/debugedit.c
-+++ rpm-5.4.14/tools/debugedit.c
-@@ -1445,21 +1445,24 @@ handle_build_id (DSO *dso, Elf_Data *bui
- auto inline void process (const void *data, size_t size)
- {
- memchunk chunk = { .data = (void *) data, .size = size };
-- hashFunctionContextUpdateMC (&ctx, &chunk);
-+ if (data != NULL && size != 0)
-+ hashFunctionContextUpdateMC (&ctx, &chunk);
- }
- union
- {
+--- rpm.orig/tools/debugedit.c
++++ rpm/tools/debugedit.c
+@@ -1403,7 +1403,8 @@ static inline void process (hashFunction
+ const void *data, size_t size)
+ {
+ memchunk chunk = { .data = (void *) data, .size = size };
+- hashFunctionContextUpdateMC (ctx, &chunk);
++ if (data != NULL && size != 0)
++ hashFunctionContextUpdateMC (ctx, &chunk);
+ }
+
+ /* Compute a fresh build ID bit-string from the editted file contents. */
+@@ -1456,14 +1457,16 @@ handle_build_id (DSO *dso, Elf_Data *bui
GElf_Ehdr ehdr;
GElf_Phdr phdr;
GElf_Shdr shdr;
- } u;
- Elf_Data x = { .d_version = EV_CURRENT, .d_buf = &u };
-+ } u1, u2;
-+ Elf_Data src = { .d_version = EV_CURRENT, .d_buf = &u1 };
-+ Elf_Data dest = { .d_version = EV_CURRENT, .d_buf = &u2 };
-
+-
- x.d_type = ELF_T_EHDR;
- x.d_size = sizeof u.ehdr;
- u.ehdr = dso->ehdr;
- u.ehdr.e_phoff = u.ehdr.e_shoff = 0;
- if (elf64_xlatetom (&x, &x, dso->ehdr.e_ident[EI_DATA]) == NULL)
++ } u1, u2;
++ Elf_Data src = { .d_version = EV_CURRENT, .d_buf = &u1 };
++ Elf_Data dest = { .d_version = EV_CURRENT, .d_buf = &u2 };
++
+ src.d_type = ELF_T_EHDR;
+ src.d_size = sizeof u1.ehdr;
+ dest.d_size = sizeof u2.ehdr;
@@ -52,7 +54,7 @@ Index: rpm-5.4.14/tools/debugedit.c
{
bad:
fprintf (stderr, "Failed to compute header checksum: %s\n",
-@@ -1467,29 +1470,31 @@ handle_build_id (DSO *dso, Elf_Data *bui
+@@ -1471,29 +1474,31 @@ handle_build_id (DSO *dso, Elf_Data *bui
exit (1);
}
@@ -69,8 +71,8 @@ Index: rpm-5.4.14/tools/debugedit.c
- if (elf64_xlatetom (&x, &x, dso->ehdr.e_ident[EI_DATA]) == NULL)
+ if (elf64_xlatetom (&dest, &src, dso->ehdr.e_ident[EI_DATA]) == NULL)
goto bad;
-- process (x.d_buf, x.d_size);
-+ process (dest.d_buf, dest.d_size);
+- process (&ctx, x.d_buf, x.d_size);
++ process (&ctx, dest.d_buf, dest.d_size);
}
- x.d_type = ELF_T_SHDR;
@@ -88,8 +90,8 @@ Index: rpm-5.4.14/tools/debugedit.c
+ u1.shdr.sh_offset = 0;
+ if (elf64_xlatetom (&dest, &src, dso->ehdr.e_ident[EI_DATA]) == NULL)
goto bad;
-- process (x.d_buf, x.d_size);
-+ process (dest.d_buf, dest.d_size);
+- process (&ctx, x.d_buf, x.d_size);
++ process (&ctx, dest.d_buf, dest.d_size);
- if (u.shdr.sh_type != SHT_NOBITS)
+ if (u1.shdr.sh_type != SHT_NOBITS)
diff --git a/meta/recipes-devtools/rpm/rpm/fstack-protector-configure-check.patch b/meta/recipes-devtools/rpm/rpm/fstack-protector-configure-check.patch
deleted file mode 100644
index 976af486fb..0000000000
--- a/meta/recipes-devtools/rpm/rpm/fstack-protector-configure-check.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Some options checked in this loop are needing linking to find out
-if the option can be used or not e.g. -fstack-protector which needs
-libssp to be staged and available for compiler to link against
-Therefore we change the compile only check to compile and link check
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: rpm-5.4.14/configure.ac
-===================================================================
---- rpm-5.4.14.orig/configure.ac
-+++ rpm-5.4.14/configure.ac
-@@ -201,7 +201,7 @@ dnl # GNU GCC (usually "gcc")
- my_save_cflags="$CFLAGS"
- CFLAGS=$c
- AC_MSG_CHECKING([whether GCC supports $c])
-- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
-+ AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
- [AC_MSG_RESULT([yes])]
- [my_cflags=$c],
- [AC_MSG_RESULT([no])]
diff --git a/meta/recipes-devtools/rpm/rpm/header-include-fix.patch b/meta/recipes-devtools/rpm/rpm/header-include-fix.patch
index 5ffb187ff3..576ff007a5 100644
--- a/meta/recipes-devtools/rpm/rpm/header-include-fix.patch
+++ b/meta/recipes-devtools/rpm/rpm/header-include-fix.patch
@@ -1,5 +1,15 @@
+Update two rpm headers to include other headers.
+
+Using rpmdb.h w/o including errno.h may result in a warning.
+
+Using rpmtag.h w/o also adding stdint.h will result in numerous failures
+about unknown types on modern compilers.
+
Upstream-Status: Pending
+Signed-off-by: Qing He <qing.he@intel.com>
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
Index: rpm-5.4.14/rpmdb/rpmdb.h
===================================================================
--- rpm-5.4.14.orig/rpmdb/rpmdb.h
diff --git a/meta/recipes-devtools/rpm/rpm/popt-disable-auto-stack-protector.patch b/meta/recipes-devtools/rpm/rpm/popt-disable-auto-stack-protector.patch
new file mode 100644
index 0000000000..bcad8dcb73
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/popt-disable-auto-stack-protector.patch
@@ -0,0 +1,27 @@
+popt: Disable default stack protection on internal version of popt
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/popt/configure.ac
+===================================================================
+--- rpm-5.4.15.orig/popt/configure.ac
++++ rpm-5.4.15/popt/configure.ac
+@@ -123,7 +123,6 @@ AS_IF([test "x$popt_gcc_warnings" = xyes
+ popt_CFLAGS_ADD([-Wjump-misses-init],[POPT_CFLAGS])
+ popt_CFLAGS_ADD([-Wno-format-nonliteral],[POPT_CFLAGS])
+ popt_CFLAGS_ADD([-Wframe-larger-than=$MAX_STACK_SIZE],[POPT_CFLAGS])
+- popt_CFLAGS_ADD([-fstack-protector-all],[POPT_CFLAGS])
+ popt_CFLAGS_ADD([-fasynchronous-unwind-tables],[POPT_CFLAGS])
+ popt_CFLAGS_ADD([-fdiagnostics-show-option],[POPT_CFLAGS])
+ popt_CFLAGS_ADD([-funit-at-a-time],[POPT_CFLAGS])
+@@ -203,7 +202,7 @@ AC_SUBST([POPT_LDFLAGS])
+ # -fno-delete-null-pointer as the kernel does http://patchwork.kernel.org/patch/36060/
+ # GNU GCC (usually "gcc")
+ AS_IF([test "x$GCC" != x],
+- [ for c in -fno-delete-null-pointer-checks -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector -fexceptions
++ [ for c in -fno-delete-null-pointer-checks -fexceptions
+ do
+ popt_CFLAGS_ADD([$c], [POPT_CFLAGS])
+ done
diff --git a/meta/recipes-devtools/rpm/rpm/python-rpm-rpmsense.patch b/meta/recipes-devtools/rpm/rpm/python-rpm-rpmsense.patch
index a538a60bb9..471e6ea55b 100644
--- a/meta/recipes-devtools/rpm/rpm/python-rpm-rpmsense.patch
+++ b/meta/recipes-devtools/rpm/rpm/python-rpm-rpmsense.patch
@@ -8,26 +8,24 @@ Upstream-Status: Pending
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Index: rpm-5.4.14/python/rpmmodule.c
+Index: rpm/python/rpmmodule.c
===================================================================
---- rpm-5.4.14.orig/python/rpmmodule.c
-+++ rpm-5.4.14/python/rpmmodule.c
-@@ -494,12 +494,16 @@ void init_rpm(void)
- REGISTER_ENUM(RPMSENSE_EQUAL);
- REGISTER_ENUM(RPMSENSE_NOTEQUAL);
- REGISTER_ENUM(RPMSENSE_FIND_REQUIRES);
--#if defined(RPM_VENDOR_MANDRIVA)
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_WINDRIVER) || defined(RPM_VENDOR_OE)
+--- rpm.orig/python/rpmmodule.c
++++ rpm/python/rpmmodule.c
+@@ -525,12 +525,15 @@ static int initModule(PyObject *m)
REGISTER_ENUM(RPMSENSE_PREREQ);
+ REGISTER_ENUM(RPMSENSE_PRETRANS);
+ REGISTER_ENUM(RPMSENSE_INTERP);
++#else
++ #if defined(RPM_VENDOR_WINDRIVER) || defined(RPM_VENDOR_OE)
REGISTER_ENUM(RPMSENSE_SCRIPT_PRE);
REGISTER_ENUM(RPMSENSE_SCRIPT_POST);
REGISTER_ENUM(RPMSENSE_SCRIPT_PREUN);
-- REGISTER_ENUM(RPMSENSE_SCRIPT_POSTUN)
-+ REGISTER_ENUM(RPMSENSE_SCRIPT_POSTUN);
-+#endif
-+
-+#if defined(RPM_VENDOR_WINDRIVER) || defined(RPM_VENDOR_OE)
+ REGISTER_ENUM(RPMSENSE_SCRIPT_POSTUN);
+ REGISTER_ENUM(RPMSENSE_SCRIPT_VERIFY);
+-#else
+ REGISTER_ENUM(RPMSENSE_MISSINGOK);
++ #endif
+ REGISTER_ENUM(RPMSENSE_NOTEQUAL);
#endif
-
- REGISTER_ENUM(RPMDEPS_FLAG_NOUPGRADE);
+ REGISTER_ENUM(RPMSENSE_FIND_REQUIRES);
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-atomic-ops.patch b/meta/recipes-devtools/rpm/rpm/rpm-atomic-ops.patch
new file mode 100644
index 0000000000..c6327719d9
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-atomic-ops.patch
@@ -0,0 +1,73 @@
+Some architectures do not have __sync_add_and_fetch_8 implemented.
+
+MIPS (32-bit) and some PPC systems do not have sync_add_and_fetch_8.
+
+Provide an alternative. This alternative function is based on code from:
+ https://github.com/mongodb/libbson/blob/master/src/bson/bson-atomic.c
+
+Code is under an Apache 2.0 License.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/rpmio/bson.h
+===================================================================
+--- rpm-5.4.15.orig/rpmio/bson.h
++++ rpm-5.4.15/rpmio/bson.h
+@@ -879,10 +879,18 @@ BSON_END_DECLS
+
+ BSON_BEGIN_DECLS
+
++/* Some architectures do not support __sync_add_and_fetch_8 */
++#if (__mips == 32) || (defined(__PPC__) && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8))
++# define __BSON_NEED_ATOMIC_64 1
++#endif
+
+ #if defined(__GNUC__)
+ # define bson_atomic_int_add(p, v) (__sync_add_and_fetch(p, v))
+-# define bson_atomic_int64_add(p, v) (__sync_add_and_fetch_8(p, v))
++#ifndef __BSON_NEED_ATOMIC_64
++# define bson_atomic_int64_add(p, v) (__sync_add_and_fetch_8(p, v))
++# else
++ int64_t bson_atomic_int64_add (volatile int64_t *p, int64_t n);
++# endif
+ # define bson_memory_barrier __sync_synchronize
+ #elif defined(_MSC_VER) || defined(_WIN32)
+ # define bson_atomic_int_add(p, v) (InterlockedExchangeAdd((long int *)(p), v))
+Index: rpm-5.4.15/rpmio/bson.c
+===================================================================
+--- rpm-5.4.15.orig/rpmio/bson.c
++++ rpm-5.4.15/rpmio/bson.c
+@@ -3863,13 +3863,30 @@ _bson_context_get_oid_seq64_threadsafe (
+ #elif defined BSON_OS_WIN32
+ uint64_t seq = InterlockedIncrement64 ((int64_t *)&context->seq64);
+ #else
+- uint64_t seq = __sync_fetch_and_add_8 (&context->seq64, 1);
++ uint64_t seq = bson_atomic_int64_add (&context->seq64, 1);
+ #endif
+
+ seq = BSON_UINT64_TO_BE (seq);
+ memcpy (&oid->bytes[4], &seq, 8);
+ }
+
++#ifdef __BSON_NEED_ATOMIC_64
++#include <pthread.h>
++static pthread_mutex_t gSync64 = PTHREAD_MUTEX_INITIALIZER;
++int64_t
++bson_atomic_int64_add (volatile int64_t *p,
++ int64_t n)
++{
++ int64_t ret;
++
++ pthread_mutex_lock (&gSync64);
++ *p += n;
++ ret = *p;
++ pthread_mutex_unlock (&gSync64);
++
++ return ret;
++}
++#endif
+
+ /**
+ * bson_context_new:
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-db5-or-db6.patch b/meta/recipes-devtools/rpm/rpm/rpm-db5-or-db6.patch
index a5fab415c2..5d08d279ae 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-db5-or-db6.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-db5-or-db6.patch
@@ -10,20 +10,20 @@ Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com>
configure.ac | 103 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 81 insertions(+), 22 deletions(-)
-diff --git a/configure.ac b/configure.ac
-index 02716a0..889a425 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -547,8 +547,6 @@ else
+Index: rpm/configure.ac
+===================================================================
+--- rpm.orig/configure.ac
++++ rpm/configure.ac
+@@ -871,8 +871,6 @@ else
MYPATH=$PATH
fi
--DBXY=db60
+-DBXY=db61
-
AC_PATH_PROG(__BASH, bash, %{_bindir}/bash, $MYPATH)
AC_PATH_PROG(__BZIP2, bzip2, %{_bindir}/bzip2, $MYPATH)
AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
-@@ -560,22 +558,6 @@ AC_PATH_PROG(__CMAKE, cmake, %{_bindir}/cmake, $MYPATH)
+@@ -884,22 +882,6 @@ AC_PATH_PROG(__CMAKE, cmake, %{_bindir}/
AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
AC_PATH_PROG(__CURL, curl, %{_bindir}/curl, $MYPATH)
AC_PATH_PROG(__CVS, cvs, %{_bindir}/cvs, $MYPATH)
@@ -46,7 +46,7 @@ index 02716a0..889a425 100644
AC_PATH_PROG(__DIFF, diff, /bin/diff, $MYPATH)
AC_PATH_PROG(__DITTO, ditto, %{_bindir}/ditto, $MYPATH)
AC_PATH_PROG(__FILE, file, %{_bindir}/file, $MYPATH)
-@@ -1598,13 +1580,46 @@ RPM_CHECK_LIB(
+@@ -2050,13 +2032,46 @@ RPM_CHECK_LIB(
dnl # Berkeley-DB & SQLite
DBLIBSRCS=""
@@ -56,7 +56,7 @@ index 02716a0..889a425 100644
-CPPFLAGS="${CPPFLAGS} -I${prefix}/include/${DBXY}"
-RPM_CHECK_LIB(
+CPPFLAGS_save="${CPPFLAGS}"
-+CPPFLAGS="${CPPFLAGS_save} -I${prefix}/include/db-6.0"
++CPPFLAGS="${CPPFLAGS_save}"
+with_db_save="${with_db}"
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -69,11 +69,11 @@ index 02716a0..889a425 100644
+]])],
+[RPM_CHECK_LIB(
[Berkeley-DB], [db],
- [db-6.0], [db_create], [db.h],
+ [db-6.1], [db_create], [db.h],
- [yes,external], [db3],
+ [yes,external], [db6],
[ DBLIBSRCS="$DBLIBSRCS db3.c"
-+ DBXY=db60
++ DBXY=db61
+ AM_CONDITIONAL(WITH_DB, [ true ])
+ AM_CONDITIONAL(WITH_DB_INTERNAL, [ test ".$RPM_CHECK_LIB_LOCATION" = .internal ])
+ if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
@@ -86,7 +86,7 @@ index 02716a0..889a425 100644
+ AM_CONDITIONAL(WITH_DB_INTERNAL, [ false ])
+ ])],
+[with_db="${with_db_save}"
-+ CPPFLAGS="${CPPFLAGS_save} -I${prefix}/include/db-5.3"
++ CPPFLAGS="${CPPFLAGS_save}"
+ RPM_CHECK_LIB(
+ [Berkeley-DB], [db],
+ [db-5.3], [db_create], [db.h],
@@ -96,32 +96,32 @@ index 02716a0..889a425 100644
AM_CONDITIONAL(WITH_DB, [ true ])
AM_CONDITIONAL(WITH_DB_INTERNAL, [ test ".$RPM_CHECK_LIB_LOCATION" = .internal ])
if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
-@@ -1616,6 +1631,11 @@ RPM_CHECK_LIB(
+@@ -2068,6 +2083,11 @@ RPM_CHECK_LIB(
[ AM_CONDITIONAL(WITH_DB, [ false ])
AM_CONDITIONAL(WITH_DB_INTERNAL, [ false ])
])
+])
+
-+if test ".$ac_cv_lib_db_6_0_db_create" != .yes -a ".$ac_cv_lib_db_5_3_db_create" != .yes; then
++if test ".$ac_cv_lib_db_6_1_db_create" != .yes -a ".$ac_cv_lib_db_5_3_db_create" != .yes; then
+ CPPFLAGS="${CPPFLAGS_save}"
+fi
dnl # Sqlite external
RPM_CHECK_LIB(
-@@ -1627,10 +1647,11 @@ RPM_CHECK_LIB(
+@@ -2078,10 +2098,11 @@ RPM_CHECK_LIB(
+ [])
- dnl # Sqlite 3.7.0.1 from db-5.1.19
- dnl XXX error: `db3' is already registered with AC_CONFIG_SUBDIRS.
-+if test ".$ac_cv_lib_db_6_0_db_create" = .yes; then
+ dnl # Sqlite 3.8.3.1 from db-6.1.19
++if test ".$ac_cv_lib_db_6_1_db_create" = .yes; then
RPM_CHECK_LIB(
[Berkeley-DB (+SQLite3)], [dbsql],
- [db_sql-6.0], [sqlite3_open], [dbsql.h],
+ [db_sql-6.1], [sqlite3_open], [dbsql.h],
- [yes,external], [db3/sql],
+ [yes,external], [db6/sql],
[
AM_CONDITIONAL(WITH_DBSQL, [ true ])
AC_DEFINE(WITH_SQLITE, 1, [Define as 1 if building with SQLite library])
-@@ -1644,12 +1665,50 @@ RPM_CHECK_LIB(
+@@ -2095,12 +2116,50 @@ RPM_CHECK_LIB(
], [
AM_CONDITIONAL(WITH_DBSQL, [ false ])
])
@@ -172,6 +172,3 @@ index 02716a0..889a425 100644
AC_ARG_WITH(db-largefile, AS_HELP_STRING([--with-db-largefile], [build Berkeley-DB with LARGEFILE support]))
AC_ARG_WITH(db-mutex, AS_HELP_STRING([--with-db-mutex=ARG], [build Berkeley-DB with MUTEX type ARG]))
---
-2.6.2
-
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-db60.patch b/meta/recipes-devtools/rpm/rpm/rpm-db60.patch
new file mode 100644
index 0000000000..b4df8b751b
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-db60.patch
@@ -0,0 +1,56 @@
+Set the DB 6 version to match oe-core db 6.0.30
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/configure.ac
+===================================================================
+--- rpm.orig/configure.ac
++++ rpm/configure.ac
+@@ -2049,10 +2049,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ ]])],
+ [RPM_CHECK_LIB(
+ [Berkeley-DB], [db],
+- [db-6.1], [db_create], [db.h],
++ [db-6.0], [db_create], [db.h],
+ [yes,external], [db6],
+ [ DBLIBSRCS="$DBLIBSRCS db3.c"
+- DBXY=db61
++ DBXY=db60
+ AM_CONDITIONAL(WITH_DB, [ true ])
+ AM_CONDITIONAL(WITH_DB_INTERNAL, [ test ".$RPM_CHECK_LIB_LOCATION" = .internal ])
+ if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
+@@ -2085,7 +2085,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ ])
+ ])
+
+-if test ".$ac_cv_lib_db_6_1_db_create" != .yes -a ".$ac_cv_lib_db_5_3_db_create" != .yes; then
++if test ".$ac_cv_lib_db_6_0_db_create" != .yes -a ".$ac_cv_lib_db_5_3_db_create" != .yes; then
+ CPPFLAGS="${CPPFLAGS_save}"
+ fi
+
+@@ -2097,11 +2097,11 @@ RPM_CHECK_LIB(
+ [ DBLIBSRCS="$DBLIBSRCS sqlite.c" ],
+ [])
+
+-dnl # Sqlite 3.8.3.1 from db-6.1.19
+-if test ".$ac_cv_lib_db_6_1_db_create" = .yes; then
++dnl # Sqlite 3.8.3.1 from db-6.0.30
++if test ".$ac_cv_lib_db_6_0_db_create" = .yes; then
+ RPM_CHECK_LIB(
+ [Berkeley-DB (+SQLite3)], [dbsql],
+- [db_sql-6.1], [sqlite3_open], [dbsql.h],
++ [db_sql-6.0], [sqlite3_open], [dbsql.h],
+ [yes,external], [db6/sql],
+ [
+ AM_CONDITIONAL(WITH_DBSQL, [ true ])
+@@ -2253,7 +2253,7 @@ AC_SUBST(WITH_RUBY_CPPFLAGS)
+ AC_SUBST(WITH_RUBY_SUBDIR)
+ AC_SUBST(WITH_RUBY_VENDORARCHDIR)
+
+-dnl # Java prerequisites (swiped from db-6.1.19/dist/aclocal_java et al)
++dnl # Java prerequisites (swiped from db-6.0.30/dist/aclocal_java et al)
+ WITH_JAVA=no
+ AC_ARG_WITH([java],
+ AS_HELP_STRING([--with-java], [build RPM with java support]),
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-disable-Wno-override-init.patch b/meta/recipes-devtools/rpm/rpm/rpm-disable-Wno-override-init.patch
deleted file mode 100644
index 8b5f8d66c8..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-disable-Wno-override-init.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 70d881873b443c9bad502db9665595455d4f0ac9 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 8 Jul 2014 07:41:10 +0800
-Subject: [PATCH] configure.ac: disable -Wno-override-init
-
-Fixed rpm-native.do_configure error on CentOS 5.x:
-
-cc1: error: unrecognized command line option "-Wno-override-init"
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index adeffe0..6746b4c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -163,7 +163,7 @@ AC_ARG_ENABLE(build-warnings,
- # XXX gcc-4.2 on Mac OS X hasn't
- # CFLAGS="$CFLAGS -Wno-unused-but-set-variable"
- # XXX rpmio/set.c needs this
-- CFLAGS="$CFLAGS -Wno-override-init"
-+# CFLAGS="$CFLAGS -Wno-override-init"
- elif test ".`$CC -V 2>&1 | grep 'Sun C'`" != .; then
- dnl # Sun Studio (usually "cc")
- CFLAGS="$CFLAGS -v"
---
-1.8.2.1
-
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-disable-auto-stack-protector.patch b/meta/recipes-devtools/rpm/rpm/rpm-disable-auto-stack-protector.patch
new file mode 100644
index 0000000000..124606c0d1
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-disable-auto-stack-protector.patch
@@ -0,0 +1,24 @@
+Make security switches manual settings
+
+RPM checks for the availability of the stack protector switch and
+transactional-memory support. If supported it unconditionally
+enables the compiler options which can cause errors if the support has
+not been built into the compiler.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/configure.ac
+===================================================================
+--- rpm-5.4.15.orig/configure.ac
++++ rpm-5.4.15/configure.ac
+@@ -425,7 +425,7 @@ dnl # rpm_CFLAGS_ADD([-fstack-arrays],[
+ dnl # build RPM instrumented for extra optimization/security (GCC only)
+ dnl # --- other optimizations
+ rpm_CFLAGS_ADD([-fexceptions], [RPM_CFLAGS])
+- rpm_CFLAGS_ADD([-D_FORTIFY_SOURCE=2 -fstack-protector], [RPM_CFLAGS])
++dnl rpm_CFLAGS_ADD([-D_FORTIFY_SOURCE=2 -fstack-protector], [RPM_CFLAGS])
+ dnl # rpm_CFLAGS_ADD([-fstack-protector-all],[RPM_CFLAGS])
+
+ if test \( ".`$CC --version 2>&1 | grep 'GCC'`" != . \); then
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-disable-blaketest.patch b/meta/recipes-devtools/rpm/rpm/rpm-disable-blaketest.patch
new file mode 100644
index 0000000000..adbef6df88
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-disable-blaketest.patch
@@ -0,0 +1,28 @@
+rpmio: Disable building of the tblake2 test(s).
+
+There is some type of a dependency fault here that can occasionally result in:
+
+gcc: error: tblake2b.o: No such file or directory
+or
+gcc: error: tblake2bp.o: No such file or directory
+
+These items are simply test cases that are not packaged, so they can be
+safely disabled to resolve the dependency issue.
+
+Upstream-Status: Inappropriate [workaround]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/rpmio/Makefile.am
+===================================================================
+--- rpm-5.4.15.orig/rpmio/Makefile.am
++++ rpm-5.4.15/rpmio/Makefile.am
+@@ -29,7 +29,7 @@ EXTRA_PROGRAMS += bsdiff bspatch pcrsed
+ tmire todbc toid tperl tpython tput trpmio tsexp tsvn tsw ttcl \
+ dumpasn1 lookup3 trel twitter github tmicrojson duk
+
+-noinst_PROGRAMS += b2sum tset tblake2b tblake2bp tblake2s tblake2sp tgfs
++#noinst_PROGRAMS += b2sum tset tblake2b tblake2bp tblake2s tblake2sp tgfs
+ if WITH_LIBGIT2
+ noinst_PROGRAMS += tgit
+ else
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-fix-parseEmbedded.patch b/meta/recipes-devtools/rpm/rpm/rpm-fix-parseEmbedded.patch
new file mode 100644
index 0000000000..a6003bae7b
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-fix-parseEmbedded.patch
@@ -0,0 +1,27 @@
+Fix an issue where parseEmbedded is not defined, but is still used.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/rpmio/macro.c
+===================================================================
+--- rpm.orig/rpmio/macro.c
++++ rpm/rpmio/macro.c
+@@ -1616,8 +1616,6 @@ exit:
+ * @retval *avp invocation args
+ * @return script string
+ */
+-#if defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_MOZJS) || defined(WITH_JNIEMBED) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_MRUBY_EMBED) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL)
+-
+ static char _FIXME_embedded_interpreter_eval_returned_null[] =
+ "FIXME: embedded interpreter eval returned null.";
+
+@@ -1668,7 +1666,6 @@ bingo:
+ script[nb] = '\0';
+ return script;
+ }
+-#endif
+
+ /**
+ * The main macro recursion loop.
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-gnu-atomic.patch b/meta/recipes-devtools/rpm/rpm/rpm-gnu-atomic.patch
new file mode 100644
index 0000000000..e25c5aa353
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-gnu-atomic.patch
@@ -0,0 +1,64 @@
+configure.ac: Check if the current compiler supports the transactions
+
+Some distributions appear to have compilers that are built without support
+for transactions, even though they are GCC 4.7 or newer.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/configure.ac
+===================================================================
+--- rpm-5.4.15.orig/configure.ac
++++ rpm-5.4.15/configure.ac
+@@ -425,9 +425,34 @@ dnl # --- other optimizations
+ rpm_CFLAGS_ADD([-D_FORTIFY_SOURCE=2 -fstack-protector], [RPM_CFLAGS])
+ dnl # rpm_CFLAGS_ADD([-fstack-protector-all],[RPM_CFLAGS])
+
+- if test \( ".`$CC --version 2>&1 | grep 'GCC'`" != . \); then
+- rpm_CFLAGS_ADD([-fgnu-tm], [RPM_CFLAGS])
+- fi
++dnl # Check if the current gcc supports -fgnu-tm and __transaction_atomic
++AC_MSG_CHECKING([If the compiler supports __transaction_atomic])
++save_CFLAGS="$CFLAGS"
++save_LDFLAGS="$LDFLAGS"
++CFLAGS="${CFLAGS} -fgnu-tm -litm"
++LDFLAGS="${LDFLAGS} -litm"
++AC_LINK_IFELSE([AC_LANG_SOURCE([[
++int
++main()
++{
++#if !__clang__ && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 7) || (__GNUC__ > 4)) /* XXX gud enuf? */
++ int i = 0;
++ __transaction_atomic { i++; }
++#else
++# error Compiler does not support __transaction_atomic
++#endif
++ return 0;
++}
++]])], [
++ AC_DEFINE([HAVE_GNUC_TM_ATOMIC], [1],
++ [Define to 1 if the compiler supports __transaction_atomic.])
++ AC_MSG_RESULT([yes])
++], [
++ CFLAGS="$save_CFLAGS"
++ LDFLAGS="$save_LDFLAGS"
++ AC_MSG_RESULT([no])
++])
++
+
+ dnl # --- options below are added to RPM_CFLAGS but _NOT_ added to CFLAGS
+ CPPFLAGS="$CPPFLAGS $RPM_CPPFLAGS"
+Index: rpm-5.4.15/rpmio/rpmutil.h
+===================================================================
+--- rpm-5.4.15.orig/rpmio/rpmutil.h
++++ rpm-5.4.15/rpmio/rpmutil.h
+@@ -105,7 +105,7 @@
+ # define RPM_GNUC_INTERNAL
+ #endif
+
+-#if !__clang__ && __GNUC__ == 4 && __GNUC_MINOR__ >= 7 /* XXX gud enuf? */
++#ifdef HAVE_GNUC_TM_ATOMIC
+ # define RPM_GNUC_TM_SAFE __attribute__((transaction_safe))
+ # define RPM_GNUC_TM_PURE __attribute__((transaction_pure))
+ # define RPM_GNUC_TM_CALLABLE __attribute__((transaction_callable))
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-keccak-sse-intrin.patch b/meta/recipes-devtools/rpm/rpm/rpm-keccak-sse-intrin.patch
new file mode 100644
index 0000000000..e99fd1c3bc
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-keccak-sse-intrin.patch
@@ -0,0 +1,27 @@
+rpm - rpmio/keccak.c: make SSE/MMX dependent upon gcc config
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/rpmio/keccak.c
+===================================================================
+--- rpm-5.4.15.orig/rpmio/keccak.c
++++ rpm-5.4.15/rpmio/keccak.c
+@@ -17,9 +17,13 @@ http://keccak.noekeon.org/
+ #if OPTIMIZED == 64
+ /* ===== "KeccakOpt64-settings.h" */
+ #define Unrolling 18
+-//#define UseBebigokimisa
+-#define UseSSE
+-//#define UseMMX
++#if defined(__SSE2__)
++ #define UseSSE
++#elif defined(__MMX__)
++ #define UseMMX
++#else
++ #define UseBebigokimisa
++#endif
+ /* ===== */
+ #endif
+
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch b/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch
deleted file mode 100644
index 7ab49e97e2..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-Lua 'print' statement is not working properly inside of RPM 5
-
-The print statement should capture the output and send it to the script
-processing engine, and not display it directly to the screen.
-
-This patch is from: http://rpm5.org/cvs/patchset?cn=17671
-
-Upstream-Status: backport (patchset 17671 from rpm5.org)
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-Index: rpm-5.4.14/CHANGES
-===================================================================
---- rpm-5.4.14.orig/CHANGES
-+++ rpm-5.4.14/CHANGES
-@@ -1,3 +1,4 @@
-+ - jbj: lua: fix: resurrect output capture with lua-5.2.
- - jbj: verify: fix: broken logic for %ghost avoidance (Mark Hatle).
-
- 5.4.13 -> 5.4.14:
-Index: rpm-5.4.14/rpmio/rpmlua.c
-===================================================================
---- rpm-5.4.14.orig/rpmio/rpmlua.c
-+++ rpm-5.4.14/rpmio/rpmlua.c
-@@ -175,7 +175,7 @@ rpmlua rpmluaNew(void)
- };
- /*@=readonlytrans =nullassign @*/
- /*@observer@*/ /*@unchecked@*/
-- const luaL_Reg *lib = lualibs;
-+ const luaL_Reg *lib;
- char *path_buf;
- char *path_next;
- char *path;
-@@ -190,31 +190,34 @@ rpmlua rpmluaNew(void)
-
- luaL_openlibs(L);
-
-- for (; lib->name; lib++) {
-+ for (lib = lualibs; lib->name; lib++) {
- luaL_requiref(L, lib->name, lib->func, 1);
-+ lua_pop(L, 1);
- }
-
- { const char * _lua_path = rpmGetPath(rpmluaPath, NULL);
- if (_lua_path != NULL) {
-+#if defined(LUA_GLOBALSINDEX)
- lua_pushliteral(L, "LUA_PATH");
- lua_pushstring(L, _lua_path);
-+ lua_rawset(L, LUA_GLOBALSINDEX);
-+#else
-+ lua_pushstring(L, _lua_path);
-+ lua_setglobal(L, "LUA_PATH");
-+#endif
- _lua_path = _free(_lua_path);
- }
- }
-
- #if defined(LUA_GLOBALSINDEX)
-- lua_rawset(L, LUA_GLOBALSINDEX);
--#else
-- lua_pushglobaltable(L);
--#endif
- lua_pushliteral(L, "print");
- lua_pushcfunction(L, rpm_print);
--
--#if defined(LUA_GLOBALSINDEX)
- lua_rawset(L, LUA_GLOBALSINDEX);
- #else
-- lua_pushglobaltable(L);
-+ lua_pushcfunction(L, rpm_print);
-+ lua_setglobal(L, "print");
- #endif
-+
- rpmluaSetData(lua, "lua", lua);
-
- /* load all standard RPM Lua script files */
-@@ -351,6 +354,9 @@ void rpmluaSetVar(rpmlua _lua, rpmluav v
- #if defined(LUA_GLOBALSINDEX)
- if (lua->pushsize == 0)
- lua_pushvalue(L, LUA_GLOBALSINDEX);
-+#else
-+ if (lua->pushsize == 0)
-+ lua_pushglobaltable(L);
- #endif
- if (pushvar(L, var->keyType, &var->key) != -1) {
- if (pushvar(L, var->valueType, &var->value) != -1)
-@@ -1039,14 +1045,15 @@ static int rpm_print (lua_State *L)
- lua_getglobal(L, "tostring");
- for (i = 1; i <= n; i++) {
- const char *s;
-+ size_t l;
- lua_pushvalue(L, -1); /* function to be called */
- lua_pushvalue(L, i); /* value to print */
- lua_call(L, 1, 1);
-- s = lua_tostring(L, -1); /* get result */
-+ s = lua_tolstring(L, -1, &l); /* get result */
- if (s == NULL)
- return luaL_error(L, "`tostring' must return a string to `print'");
- if (lua->storeprint) {
-- size_t sl = lua_rawlen(L, -1);
-+ size_t sl = l;
- if ((size_t)(lua->printbufused+sl+1) > lua->printbufsize) {
- lua->printbufsize += sl+512;
- lua->printbuf = (char *) xrealloc(lua->printbuf, lua->printbufsize);
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-macros.in-disable-external-key-server.patch b/meta/recipes-devtools/rpm/rpm/rpm-macros.in-disable-external-key-server.patch
index 07a0cfa300..a08412aa91 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-macros.in-disable-external-key-server.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-macros.in-disable-external-key-server.patch
@@ -12,16 +12,20 @@ it's easy enough to do by enabling the necessary macros.
Signed-off-by: yzhu1 <yanjun.zhu@windriver.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---- a/macros/macros.in
-+++ b/macros/macros.in
-@@ -546,8 +546,8 @@ $_arbitrary_tags_tests Foo:Bar
+Index: rpm/macros/macros.in
+===================================================================
+--- rpm.orig/macros/macros.in
++++ rpm/macros/macros.in
+@@ -563,10 +563,10 @@ $_arbitrary_tags_tests Foo:Bar
+
# Horowitz Key Protocol server configuration
#
+-%_hkp_keyserver hkp://keys.rpm5.org
++#%_hkp_keyserver hkp://keys.rpm5.org
#%_hkp_keyserver hkp://keys.n3npq.net
--%_hkp_keyserver hkp://pool.sks-keyservers.net
+ #%_hkp_keyserver hkp://pool.sks-keyservers.net
-%_hkp_keyserver_query %{_hkp_keyserver}/pks/lookup?op=get&search=
-+#%_hkp_keyserver hkp://pool.sks-keyservers.net
+#%_hkp_keyserver_query %{_hkp_keyserver}/pks/lookup?op=get&search=
- %_nssdb_path /etc/pki/nssdb
+ # NSS_InitContext() parameter configuration
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-mongodb-sasl.patch b/meta/recipes-devtools/rpm/rpm/rpm-mongodb-sasl.patch
new file mode 100644
index 0000000000..9e324e5c8a
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-mongodb-sasl.patch
@@ -0,0 +1,69 @@
+Fix errors when building with sasl2 disabled
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/rpmio/mongoc.c
+===================================================================
+--- rpm.orig/rpmio/mongoc.c
++++ rpm/rpmio/mongoc.c
+@@ -39,8 +39,10 @@
+ # include <winerror.h>
+ #endif
+
++#ifdef HAVE_LIBSASL2
+ #include <sasl/sasl.h>
+ #include <sasl/saslutil.h>
++#endif
+
+ #include <openssl/bio.h>
+ #include <openssl/ssl.h>
+@@ -14228,6 +14230,7 @@ mongoc_read_prefs_copy (const mongoc_rea
+ return ret;
+ }
+
++#ifdef MONGOC_ENABLE_SASL
+ /*==============================================================*/
+ /* --- mongoc-sasl.c */
+
+@@ -14555,6 +14558,7 @@ _mongoc_sasl_step (mongoc_sasl_t *sasl,
+
+ return true;
+ }
++#endif
+
+ /*==============================================================*/
+ /* --- mongoc-socket.c */
+Index: rpm/rpmio/mongoc.h
+===================================================================
+--- rpm.orig/rpmio/mongoc.h
++++ rpm/rpmio/mongoc.h
+@@ -38,8 +38,10 @@
+ # include <sys/un.h>
+ #endif
+
++#ifdef HAVE_LIBSASL2
+ #include <sasl/sasl.h>
+ #include <sasl/saslutil.h>
++#endif
+
+ #include <openssl/bio.h>
+ #include <openssl/ssl.h>
+@@ -2455,6 +2457,8 @@ BSON_END_DECLS
+ /*==============================================================*/
+ /* --- mongoc-sasl-private.h */
+
++#ifdef MONGOC_ENABLE_SASL
++
+ BSON_BEGIN_DECLS
+
+
+@@ -2498,6 +2502,7 @@ bool _mongoc_sasl_step (mong
+
+
+ BSON_END_DECLS
++#endif
+
+ /*==============================================================*/
+ /* --- mongoc-ssl-private.h */
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-payload-use-hashed-inode.patch b/meta/recipes-devtools/rpm/rpm/rpm-payload-use-hashed-inode.patch
index 9cd02a0f92..47470d23a0 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-payload-use-hashed-inode.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-payload-use-hashed-inode.patch
@@ -124,23 +124,3 @@ Index: rpm-5.4.14/build/files.c
}
ui32 = fl->totalFileSize;
-Index: rpm-5.4.14/lib/fsm.c
-===================================================================
---- rpm-5.4.14.orig/lib/fsm.c
-+++ rpm-5.4.14/lib/fsm.c
-@@ -904,6 +904,7 @@ int fsmMapAttrs(IOSM_t fsm)
-
- if (fi && i >= 0 && i < (int) fi->fc) {
- mode_t perms = (S_ISDIR(st->st_mode) ? fi->dperms : fi->fperms);
-+ ino_t finalInode = (fi->finodes ? (ino_t)fi->finodes[i] : 0);
- mode_t finalMode = (fi->fmodes ? (mode_t)fi->fmodes[i] : perms);
- dev_t finalRdev = (dev_t)(fi->frdevs ? fi->frdevs[i] : 0);
- rpmuint32_t finalMtime = (fi->fmtimes ? fi->fmtimes[i] : 0);
-@@ -943,6 +944,7 @@ int fsmMapAttrs(IOSM_t fsm)
- if ((S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode))
- && st->st_nlink == 0)
- st->st_nlink = 1;
-+ st->st_ino = finalInode;
- st->st_rdev = finalRdev;
- st->st_mtime = finalMtime;
- }
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-pkgconfigdeps.patch b/meta/recipes-devtools/rpm/rpm/rpm-pkgconfigdeps.patch
index 5d182ad9fe..656de86d70 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-pkgconfigdeps.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-pkgconfigdeps.patch
@@ -9,14 +9,14 @@ Upstream-Status: Inappropriate [configuration]
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Index: rpm-5.4.14/scripts/pkgconfigdeps.sh
+Index: rpm/scripts/pkgconfigdeps.sh
===================================================================
---- rpm-5.4.14.orig/scripts/pkgconfigdeps.sh
-+++ rpm-5.4.14/scripts/pkgconfigdeps.sh
+--- rpm.orig/scripts/pkgconfigdeps.sh
++++ rpm/scripts/pkgconfigdeps.sh
@@ -18,8 +18,8 @@ case $1 in
*.pc)
# Query the dependencies of the package.
- DIR=`dirname ${filename}`
+ DIR=$(dirname ${filename})
- PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
- export PKG_CONFIG_PATH
+ PKG_CONFIG_LIBDIR="$DIR:$DIR/../../share/pkgconfig"
@@ -27,7 +27,7 @@ Index: rpm-5.4.14/scripts/pkgconfigdeps.sh
@@ -42,8 +42,8 @@ case $1 in
[ -n "$oneshot" ] && echo "$oneshot"; oneshot=""
# Query the dependencies of the package.
- DIR=`dirname ${filename}`
+ DIR=$(dirname ${filename})
- PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
- export PKG_CONFIG_PATH
+ PKG_CONFIG_LIBDIR="$DIR:$DIR/../../share/pkgconfig"
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-py-init.patch b/meta/recipes-devtools/rpm/rpm/rpm-py-init.patch
index 07d407d36a..92ef1dc50e 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-py-init.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-py-init.patch
@@ -11,15 +11,17 @@ Upstream-Status: Pending
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Index: rpm-5.4.14/python/rpmmodule.c
+Index: rpm/python/rpmmodule.c
===================================================================
---- rpm-5.4.14.orig/python/rpmmodule.c
-+++ rpm-5.4.14/python/rpmmodule.c
-@@ -392,7 +392,8 @@ void init_rpm(void)
- if (Py_AtExit(rpm_exithook) == -1)
- return;
+--- rpm.orig/python/rpmmodule.c
++++ rpm/python/rpmmodule.c
+@@ -382,9 +382,8 @@ static int initModule(PyObject *m)
+ /* XXX add --noparentdirs --nolinktos to rpmtsCheck() */
+ global_depFlags = (RPMDEPS_FLAG_NOPARENTDIRS | RPMDEPS_FLAG_NOLINKTOS);
-- rpmReadConfigFiles(NULL, NULL);
+- /* failure to initialize rpm (crypto and all) is rather fatal too... */
+- if (rpmReadConfigFiles(NULL, NULL) == -1)
+- return 0;
+ const char *argv[1] = {"rpmmodule", 0};
+ rpmcliInit(1, argv, NULL);
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-python-AddErase.patch b/meta/recipes-devtools/rpm/rpm/rpm-python-AddErase.patch
new file mode 100644
index 0000000000..df6f4722ee
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-python-AddErase.patch
@@ -0,0 +1,35 @@
+rpm/python: The RPM5 API requires a hdrNum to be passed in
+
+The former behavior of passing in -1 as the hdrNum resulting in erase
+operations that did not complete, but also did not error. Changing to
+using the header instance resolves this problem.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/python/rpmts-py.c
+===================================================================
+--- rpm-5.4.15.orig/python/rpmts-py.c
++++ rpm-5.4.15/python/rpmts-py.c
+@@ -241,12 +241,19 @@ static PyObject *
+ rpmts_AddErase(rpmtsObject * s, PyObject * args)
+ {
+ Header h;
++ uint32_t hdrNum;
+
+ if (!PyArg_ParseTuple(args, "O&:AddErase", hdrFromPyObject, &h))
+ return NULL;
+
+-SPEW((stderr, "*** %s(%p,%p) ts %p\n", __FUNCTION__, s, h, s->ts));
++ hdrNum = headerGetInstance(h);
++
++SPEW((stderr, "*** %s(%p,%p) ts %p hdrNum %ld\n", __FUNCTION__, s, h, s->ts, hdrNum));
++#ifdef REFERENCE /* this doesn't work, RPM5 requires a unique hdrNum */
+ return PyBool_FromLong(rpmtsAddEraseElement(s->ts, h, -1) == 0);
++#else
++ return PyBool_FromLong(rpmtsAddEraseElement(s->ts, h, hdrNum) == 0);
++#endif
+ }
+
+ static int
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-python-restore-origin.patch b/meta/recipes-devtools/rpm/rpm/rpm-python-restore-origin.patch
new file mode 100644
index 0000000000..e6aff52f8c
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-python-restore-origin.patch
@@ -0,0 +1,49 @@
+Fix an issue where the PACKAGEORIGIN is not properly stored.
+
+Restore the rpmtsCallback fdSetOpen call and related code.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/python/rpmts-py.c
+===================================================================
+--- rpm.orig/python/rpmts-py.c
++++ rpm/python/rpmts-py.c
+@@ -672,6 +672,8 @@ rpmtsCallback(const void * hd, const rpm
+ Header h = (Header) hd;
+ struct rpmtsCallbackType_s * cbInfo = data;
+ PyObject * pkgObj = (PyObject *) pkgKey;
++ PyObject * oh = NULL;
++ const char * origin = NULL;
+ PyObject * args, * result;
+ static FD_t fd;
+
+@@ -693,8 +695,16 @@ rpmtsCallback(const void * hd, const rpm
+ pkgObj = Py_None;
+ Py_INCREF(pkgObj);
+ }
+- } else
++ } else {
+ Py_INCREF(pkgObj);
++ /* XXX yum has (h, rpmloc) tuple as pkgKey. Extract the path. */
++ if (!(PyTuple_Check(pkgObj) && PyArg_ParseTuple(pkgObj, "|Os", &oh, &origin)))
++ origin = NULL;
++ /* XXX clean up the path, yum paths start "//..." */
++ if (origin && origin[0] == '/' && origin[1] == '/')
++ origin++;
++ }
++
+
+ PyEval_RestoreThread(cbInfo->_save);
+
+@@ -723,6 +733,9 @@ SPEW((stderr, "\t%p = fdDup(%d)\n", fd,
+
+ fcntl(Fileno(fd), F_SETFD, FD_CLOEXEC);
+
++ if (origin != NULL)
++ (void) fdSetOpen(fd, origin, 0, 0);
++
+ return fd;
+ } else
+ if (what == RPMCALLBACK_INST_CLOSE_FILE) {
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-python-tagname.patch b/meta/recipes-devtools/rpm/rpm/rpm-python-tagname.patch
new file mode 100644
index 0000000000..ed7f8ccaff
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-python-tagname.patch
@@ -0,0 +1,24 @@
+rpm-python-module: Change the extension tag from PyCObject to PyInt
+
+Use the tagValue to determine the custom PyInt value to use for the extension
+tag. Without this, any custom tag extensions will be returned in a format
+that the tagNumFromPyObject and related functions like hdr_subscript will
+failed to process. Usually the failure is error: expected a string or integer
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/python/rpmmodule.c
+===================================================================
+--- rpm-5.4.15.orig/python/rpmmodule.c
++++ rpm-5.4.15/python/rpmmodule.c
+@@ -316,7 +316,7 @@ static void addRpmTags(PyObject *module)
+ {
+ if (ext->name == NULL || ext->type != HEADER_EXT_TAG)
+ continue;
+- PyDict_SetItemString(d, (char *) ext->name, to=PyCObject_FromVoidPtr((void *)ext, NULL));
++ PyDict_SetItemString(d, (char *) ext->name, to=PyInt_FromLong(tagValue(ext->name)));
+ Py_XDECREF(to);
+ PyDict_SetItem(dict, to, o=PyString_FromString(ext->name + 7));
+ Py_XDECREF(o);
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-remove-sykcparse-decl.patch b/meta/recipes-devtools/rpm/rpm/rpm-remove-sykcparse-decl.patch
deleted file mode 100644
index 769016b564..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-remove-sykcparse-decl.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: rpm-5.4.14/syck/lib/syck.h
-===================================================================
---- rpm-5.4.14.orig/syck/lib/syck.h
-+++ rpm-5.4.14/syck/lib/syck.h
-@@ -621,9 +621,6 @@ long syck_seq_count( SyckNode *seq )
- */
- void syckerror( char *msg )
- /*@*/;
--int syckparse( void * )
-- /*@globals fileSystem @*/
-- /*@modifies fileSystem @*/;
- /* XXX union YYSTYPE *sycklval has issues on Mac OS X. */
- int sycklex( void *_sycklval, SyckParser *parser )
- /*@modifies _sycklval, parser @*/;
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-rpmdb-grammar.patch b/meta/recipes-devtools/rpm/rpm/rpm-rpmdb-grammar.patch
new file mode 100644
index 0000000000..71dae4939a
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-rpmdb-grammar.patch
@@ -0,0 +1,124 @@
+Disable various items that do not cross compile well.
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/rpmdb/Makefile.am
+===================================================================
+--- rpm.orig/rpmdb/Makefile.am
++++ rpm/rpmdb/Makefile.am
+@@ -34,10 +34,10 @@ EXTRA_DIST = \
+ db3.c sqlite.c db_emu.h librpmdb.vers bdb.sql libsqldb.c \
+ logio.awk logio.src logio_recover_template logio_template logio.c \
+ logio_rec.c logio_auto.c logio_autop.c logio_auto.h \
+- qf.l qf.y qf.inp tqf.l tqf.y tqf.inp grammar.y scanner.l json1.js
++ tqf.l tqf.y tqf.inp grammar.y scanner.l json1.js
+
+-EXTRA_PROGRAMS = qfcalc qfgraph logio tjfn tqf # tbdb
+-noinst_PROGRAMS = json
++EXTRA_PROGRAMS = qfcalc qfgraph logio # tjfn tqf tbdb
++noinst_PROGRAMS = # json
+
+ RPMMISC_LDADD_COMMON = \
+ $(top_builddir)/misc/librpmmisc.la \
+@@ -321,54 +321,39 @@ BUILT_SOURCES += .syntastic_c_config
+ .syntastic_c_config: Makefile
+ @echo $(COMPILE) | tr ' ' '\n' | sed -e '1d' > $@
+
+-tjfn_SOURCES = tjfn.c
+-tjfn_LDADD = $(mylibs)
+-
+-LEX = flex
+-LFLAGS= -d -T -v -8 -b --yylineno --reentrant --bison-bridge --perf-report
+-YACC = bison
+-YFLAGS= -Dapi.pure -t -d -v --report=all
+-
+-BUILT_SOURCES += Jgrammar.c Jgrammar.h Jscanner.c
+-Jgrammar.c: grammar.y
+- $(YACC) $(YFLAGS) -o $@ $<
+-Jscanner.c: scanner.l
+- $(LEX) -R -o $@ $<
+-json_SOURCES = Jgrammar.c Jscanner.c json.c
+-
+-testjson: json1.js json
+- ./json json1.js
+-
+-BUILT_SOURCES += Qgrammar.c Qgrammar.h Qscanner.c
+-Qgrammar.c: qf.y
+- $(YACC) $(YFLAGS) -o $@ $<
+-Qscanner.c: qf.l
+- $(LEX) -R -o $@ $<
+-qfcalc_SOURCES = Qgrammar.c Qscanner.c interpreter.c
+-qfgraph_SOURCES = Qgrammar.c Qscanner.c graph.c
+-
+-testqf: qfcalc qfgraph
+- ./qfcalc < qf.inp
+- ./qfgraph < qf.inp
+-
+-BUILT_SOURCES += Tgrammar.c Tgrammar.h Tscanner.c
+-Tgrammar.c Tgrammar.h: tqf.y
+- $(YACC) $(YFLAGS) -o $@ $<
+-Tscanner.c Tscanner.h: tqf.l
+- $(LEX) --prefix="Tyy" $(LFLAGS) -o $@ $<
+-tqf_SOURCES = Tgrammar.c Tscanner.c tgraph.c
+-tqf_CFLAGS = $(CFLAGS) -fsanitize=address # -DTSCANNER_MAIN
+-tqf_LDADD = ../lib/librpm.la \
+- ./librpmdb.la \
+- ../popt/libpopt.la
+-
+-testdir = $(abs_top_builddir)/tests
+-foo: tqf
+- -../libtool --mode=execute \
+- ./tqf \
+- --dbpath=$(testdir) \
+- -r $(testdir)/fodder/*.rpm \
+- $(testdir)/fodder/fmtmod.qf
++#tjfn_SOURCES = tjfn.c
++#tjfn_LDADD = $(mylibs)
++#
++#LFLAGS= -d -T -v -8 -b --yylineno --reentrant --bison-bridge --perf-report
++#
++#BUILT_SOURCES += Jgrammar.c Jgrammar.h Jscanner.c
++#Jgrammar.c Jgrammar.h: grammar.y
++# $(YACC) $(YFLAGS) -t -d -v -o $@ $<
++#Jscanner.c: scanner.l
++# $(LEX) -R -o $@ $<
++#json_SOURCES = Jgrammar.c Jscanner.c json.c
++#
++#testjson: json1.js json
++# ./json json1.js
++#
++#BUILT_SOURCES += Tgrammar.c Tgrammar.h Tscanner.c
++#Tgrammar.c Tgrammar.h: tqf.y
++# $(YACC) $(YFLAGS) -t -d -v -o $@ $<
++#Tscanner.c Tscanner.h: tqf.l
++# $(LEX) --prefix="Tyy" $(LFLAGS) -o $@ $<
++#tqf_SOURCES = Tgrammar.c Tscanner.c tgraph.c
++#tqf_CFLAGS = $(CFLAGS) -fsanitize=address # -DTSCANNER_MAIN
++#tqf_LDADD = ../lib/librpm.la \
++# ./librpmdb.la \
++# ../popt/libpopt.la
++
++#testdir = $(abs_top_builddir)/tests
++#foo: tqf
++# -../libtool --mode=execute \
++# ./tqf \
++# --dbpath=$(testdir) \
++# -r $(testdir)/fodder/*.rpm \
++# $(testdir)/fodder/fmtmod.qf
+
+ #tbdb_SOURCES = tbdb.c bdb.c
+ #tbdb_LDADD = $(mylibs)
+Index: rpm/configure.ac
+===================================================================
+--- rpm.orig/configure.ac
++++ rpm/configure.ac
+@@ -119,6 +119,7 @@ AC_PROG_MAKE_SET
+ AC_PROG_LIBTOOL
+ AC_PROG_RANLIB
+ AC_PROG_YACC
++AM_PROG_LEX
+
+ AC_PATH_PROG(AS, as, as)
+
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-rpmio-headers.patch b/meta/recipes-devtools/rpm/rpm/rpm-rpmio-headers.patch
new file mode 100644
index 0000000000..49cdfcaf9d
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-rpmio-headers.patch
@@ -0,0 +1,19 @@
+Fix a typo in the rpmio Makefile.am
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/rpmio/Makefile.am
+===================================================================
+--- rpm.orig/rpmio/Makefile.am
++++ rpm/rpmio/Makefile.am
+@@ -121,7 +121,7 @@ luaLPATHdir = ${pkgsharedir)/lua
+
+ pkgincdir = $(pkgincludedir)$(WITH_PATH_VERSIONED_SUFFIX)
+ pkginc_HEADERS = argv.h mire.h rpmzlog.h yarn.h \
+- rpmbf.h rpmcb.h rpmio.h rpmlog.h rpmiotypes.h rpmmacro.h
++ rpmbf.h rpmcb.h rpmio.h rpmlog.h rpmiotypes.h rpmmacro.h \
+ rpmpgp.h rpmsw.h rpmutil.h
+ noinst_HEADERS = \
+ ar.h bcon.h bson.h cpio.h crc.h envvar.h fnmatch.h fts.h glob.h iosm.h \
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-fix.patch b/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-fix.patch
deleted file mode 100644
index d8feed73ff..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-fix.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-rpmpgp.c: Add missing if defs around crypto implementations
-
-Without these, the system will error trying to find the correct crypto
-library to use.
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-Index: rpm/rpmio/rpmpgp.c
-===================================================================
---- rpm.orig/rpmio/rpmpgp.c
-+++ rpm/rpmio/rpmpgp.c
-@@ -1339,16 +1339,26 @@ int pgpExportPubkey(pgpDig dig)
- {
- int rc = 0; /* assume failure */
-
-+#if defined(WITH_BEECRYPT)
- if (pgpImplVecs == &rpmbcImplVecs)
- rc = rpmbcExportPubkey(dig);
-+#endif
-+#if defined(WITH_SSL)
- if (pgpImplVecs == &rpmsslImplVecs)
- rc = rpmsslExportPubkey(dig);
-+#endif
-+#if defined(WITH_NSS)
- if (pgpImplVecs == &rpmnssImplVecs)
- rc = rpmnssExportPubkey(dig);
-+#endif
-+#if defined(WITH_GCRYPT)
- if (pgpImplVecs == &rpmgcImplVecs)
- rc = rpmgcExportPubkey(dig);
-+#endif
-+#if defined(WITH_TOMCRYPT)
- if (pgpImplVecs == &rpmltcImplVecs)
- rc = rpmltcExportPubkey(dig);
-+#endif
- return rc;
- }
-
-@@ -1356,16 +1366,26 @@ int pgpExportSignature(pgpDig dig, DIGES
- {
- int rc = 0; /* assume failure */
-
-+#if defined(WITH_BEECRYPT)
- if (pgpImplVecs == &rpmbcImplVecs)
- rc = rpmbcExportSignature(dig, ctx);
-+#endif
-+#if defined(WITH_SSL)
- if (pgpImplVecs == &rpmsslImplVecs)
- rc = rpmsslExportSignature(dig, ctx);
-+#endif
-+#if defined(WITH_NSS)
- if (pgpImplVecs == &rpmnssImplVecs)
- rc = rpmnssExportSignature(dig, ctx);
-+#endif
-+#if defined(WITH_GCRYPT)
- if (pgpImplVecs == &rpmgcImplVecs)
- rc = rpmgcExportSignature(dig, ctx);
-+#endif
-+#if defined(WITH_TOMCRYPT)
- if (pgpImplVecs == &rpmltcImplVecs)
- rc = rpmltcExportSignature(dig, ctx);
-+#endif
- return rc;
- }
-
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-popt.patch b/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-popt.patch
new file mode 100644
index 0000000000..915d7efe6f
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-rpmpgp-popt.patch
@@ -0,0 +1,26 @@
+rpmpgp.h: We do not require the popt header in order to use rpmpgp functions
+
+This can cause failures if the internal libpopt is used, as it's header is
+not exported.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.14/rpmio/rpmpgp.h
+===================================================================
+--- rpm-5.4.14.orig/rpmio/rpmpgp.h
++++ rpm-5.4.14/rpmio/rpmpgp.h
+@@ -11,11 +11,11 @@
+ */
+
+ #include <string.h>
+-#include <popt.h>
+ #include <rpmiotypes.h>
+ #include <yarn.h>
+
+ #if defined(_RPMPGP_INTERNAL)
++#include <popt.h>
+ #include <rpmsw.h>
+
+ /*@unchecked@*/
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
index f825372e82..b55fe22c6a 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
@@ -12,22 +12,21 @@ Upstream-Status: Pending
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Index: rpm-5.4.14/lib/psm.c
+Index: rpm/lib/psm.c
===================================================================
---- rpm-5.4.14.orig/lib/psm.c
-+++ rpm-5.4.14/lib/psm.c
-@@ -806,6 +806,10 @@ static rpmRC runScript(rpmpsm psm, Heade
+--- rpm.orig/lib/psm.c
++++ rpm/lib/psm.c
+@@ -846,6 +846,9 @@ static rpmRC runScript(rpmpsm psm, Heade
+ pid_t pid;
int xx;
int i;
-
+#ifdef RPM_VENDOR_OE
+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
+#endif
-+
- if (psm->sstates != NULL && ix >= 0 && ix < RPMSCRIPT_MAX)
- ssp = psm->sstates + ix;
- if (ssp != NULL)
-@@ -872,14 +876,29 @@ assert(he->p.str != NULL);
+
+ #ifdef __clang__
+ #pragma clang diagnostic push
+@@ -923,14 +926,29 @@ assert(he->p.str != NULL);
(F_ISSET(psm, UNORDERED) ? "a" : ""));
if (Phe->p.argv == NULL) {
@@ -63,7 +62,7 @@ Index: rpm-5.4.14/lib/psm.c
ldconfig_done = (ldconfig_path && !strcmp(argv[0], ldconfig_path)
? 1 : 0);
}
-@@ -930,7 +949,12 @@ assert(he->p.str != NULL);
+@@ -981,7 +999,12 @@ assert(he->p.str != NULL);
goto exit;
if (rpmIsDebug() &&
@@ -77,7 +76,7 @@ Index: rpm-5.4.14/lib/psm.c
{
static const char set_x[] = "set -x\n";
nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
-@@ -1065,12 +1089,22 @@ assert(he->p.str != NULL);
+@@ -1116,12 +1139,22 @@ assert(he->p.str != NULL);
{ const char * rootDir = rpmtsRootDir(ts);
if (!rpmtsChrootDone(ts) && rootDir != NULL &&
@@ -100,7 +99,7 @@ Index: rpm-5.4.14/lib/psm.c
xx = Chdir("/");
rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
psm->stepName, sln, NVRA,
-@@ -2985,6 +3019,13 @@ assert(psm->te != NULL);
+@@ -3052,6 +3085,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);
@@ -114,7 +113,7 @@ Index: rpm-5.4.14/lib/psm.c
xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
rc = runInstScript(psm);
if (rc)
-@@ -2992,11 +3033,24 @@ assert(psm->te != NULL);
+@@ -3059,11 +3099,24 @@ assert(psm->te != NULL);
else
xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
rpmtsGetRdb(ts)->db_txn = NULL;
@@ -139,7 +138,7 @@ Index: rpm-5.4.14/lib/psm.c
break;
case PSM_IMMED_TRIGGERS:
/* Run triggers in this package other package(s) set off. */
-@@ -3006,7 +3060,18 @@ assert(psm->te != NULL);
+@@ -3073,7 +3126,18 @@ assert(psm->te != NULL);
F_SET(psm, GOTTRIGGERS);
}
if (psm->triggers != NULL)
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-syck-fix-gram.patch b/meta/recipes-devtools/rpm/rpm/rpm-syck-fix-gram.patch
new file mode 100644
index 0000000000..d6493c197e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-syck-fix-gram.patch
@@ -0,0 +1,1081 @@
+Fix the syck/lib/gram.y
+
+This resolves a problem during compilation:
+
+../../../rpm/syck/lib/gram.y:66:27: error: 'parser' undeclared (first use in this function)
+ ((SyckParser *)parser)->root = syck_hdlr_add_node( (SyckParser *)parser, $1 );
+ ^
+../../../rpm/syck/lib/gram.y:66:27: note: each undeclared identifier is reported only once for each function it appears in
+../../../rpm/syck/lib/syck.c: In function 'syck_parse':
+../../../rpm/syck/lib/syck.c:516:5: warning: implicit declaration of function 'syckparse' [-Wimplicit-function-declaration]
+ syckparse( p );
+ ^
+
+This patch was generated by reverting the grammer back to a previous
+version.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/syck/lib/gram.y
+===================================================================
+--- rpm.orig/syck/lib/gram.y
++++ rpm/syck/lib/gram.y
+@@ -9,18 +9,10 @@
+
+ %start doc
+ %pure-parser
+-%parse-param {void* parser}
+-%lex-param {void* parser}
+
+
+ %{
+
+-#define YYDEBUG 1
+-#define YYERROR_VERBOSE 1
+-#ifndef YYSTACK_USE_ALLOCA
+-#define YYSTACK_USE_ALLOCA 0
+-#endif
+-
+ #include "system.h"
+ #include "syck.h"
+ #include "debug.h"
+@@ -28,6 +20,9 @@
+ void apply_seq_in_map( SyckParser *parser, SyckNode *n )
+ /*@*/;
+
++#define YYPARSE_PARAM parser
++#define YYLEX_PARAM parser
++
+ #define NULL_NODE(parser, node) \
+ SyckNode *node = syck_new_str( "", scalar_plain ); \
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 ) \
+Index: rpm/syck/lib/Makefile.am
+===================================================================
+--- rpm.orig/syck/lib/Makefile.am
++++ rpm/syck/lib/Makefile.am
+@@ -49,25 +49,25 @@ SYCK_SPLINT_SRCS = \
+ token.c \
+ implicit.c
+
+-#gram.c: gram.y
+-# $(YACC) -d -t -v -p syck -o $@ $<
+-# -@if test -f gram.c; then \
+-# { echo "/*@-globs -mods -modnomods -moduncon -modunconnomods @*/";\
+-# echo "/*@-noeffect -noeffectuncon @*/";\
+-# echo "/*@-nullassign @*/";\
+-# echo "/*@-readonlytrans @*/";\
+-# echo "/*@-uniondef @*/";\
+-# echo "/*@-warnlintcomments @*/";\
+-# cat gram.c;\
+-# echo "/*@=warnlintcomments @*/";\
+-# echo "/*@=uniondef @*/";\
+-# echo "/*@=readonlytrans @*/";\
+-# echo "/*@=nullassign @*/";\
+-# echo "/*@=noeffect =noeffectuncon @*/";\
+-# echo "/*@=globs =mods =modnomods =moduncon =modunconnomods @*/";\
+-# } > _gram.c ;\
+-# mv -f _gram.c gram.c; \
+-# fi
++gram.c: gram.y
++ $(YACC) -d -t -v -p syck -o $@ $<
++ -@if test -f gram.c; then \
++ { echo "/*@-globs -mods -modnomods -moduncon -modunconnomods @*/";\
++ echo "/*@-noeffect -noeffectuncon @*/";\
++ echo "/*@-nullassign @*/";\
++ echo "/*@-readonlytrans @*/";\
++ echo "/*@-uniondef @*/";\
++ echo "/*@-warnlintcomments @*/";\
++ cat gram.c;\
++ echo "/*@=warnlintcomments @*/";\
++ echo "/*@=uniondef @*/";\
++ echo "/*@=readonlytrans @*/";\
++ echo "/*@=nullassign @*/";\
++ echo "/*@=noeffect =noeffectuncon @*/";\
++ echo "/*@=globs =mods =modnomods =moduncon =modunconnomods @*/";\
++ } > _gram.c ;\
++ mv -f _gram.c gram.c; \
++ fi
+
+ BUILT_SOURCES = gram.c gram.h
+
+Index: rpm/syck/lib/implicit.c
+===================================================================
+--- rpm.orig/syck/lib/implicit.c
++++ rpm/syck/lib/implicit.c
+@@ -19,11 +19,6 @@
+ #define YYLIMIT limit
+ #define YYFILL(n)
+
+-#ifdef __clang__
+-#pragma clang diagnostic push
+-#pragma clang diagnostic ignored "-Wempty-body"
+-#endif
+-
+ void
+ try_tag_implicit( SyckNode *n, int taguri )
+ {
+@@ -3000,8 +2995,4 @@ yy270: ++YYCURSOR;
+
+ }
+
+-#ifdef __clang__
+-#pragma clang diagnostic pop
+-#endif
+-
+ /*@=noret@*/
+Index: rpm/syck/lib/syck.c
+===================================================================
+--- rpm.orig/syck/lib/syck.c
++++ rpm/syck/lib/syck.c
+@@ -519,7 +519,7 @@ syck_parse( SyckParser *p )
+ }
+
+ void
+-syck_default_error_handler( SyckParser *p, const char *msg )
++syck_default_error_handler( SyckParser *p, char *msg )
+ {
+ printf( "Error at [Line %d, Col %ld]: %s\n",
+ p->linect,
+Index: rpm/syck/lib/syck.h
+===================================================================
+--- rpm.orig/syck/lib/syck.h
++++ rpm/syck/lib/syck.h
+@@ -175,7 +175,7 @@ typedef struct _syck_str SyckIoStr;
+ typedef struct _syck_level SyckLevel;
+
+ typedef SYMID (*SyckNodeHandler)(SyckParser *p, SyckNode *n);
+-typedef void (*SyckErrorHandler)(SyckParser *p, const char *);
++typedef void (*SyckErrorHandler)(SyckParser *p, char *);
+ typedef SyckNode * (*SyckBadAnchorHandler)(SyckParser *p, char *);
+ typedef long (*SyckIoFileRead)(char *, SyckIoFile *, long, long);
+ typedef long (*SyckIoStrRead)(char *, SyckIoStr *, long, long);
+@@ -546,7 +546,7 @@ long syck_parser_readlen( SyckParser *p,
+ SYMID syck_parse( SyckParser *p )
+ /*@globals fileSystem @*/
+ /*@modifies p, fileSystem @*/;
+-void syck_default_error_handler( SyckParser *p, const char * )
++void syck_default_error_handler( SyckParser *p, char * )
+ /*@globals fileSystem @*/
+ /*@modifies p, fileSystem @*/;
+ SYMID syck_yaml2byte_handler( SyckParser *p, SyckNode *n )
+@@ -619,7 +619,7 @@ long syck_seq_count( SyckNode *seq )
+ /*
+ * Lexer prototypes
+ */
+-void syckerror( void *, const char *msg )
++void syckerror( char *msg )
+ /*@*/;
+ /* XXX union YYSTYPE *sycklval has issues on Mac OS X. */
+ int sycklex( void *_sycklval, SyckParser *parser )
+Index: rpm/syck/lib/token.c
+===================================================================
+--- rpm.orig/syck/lib/token.c
++++ rpm/syck/lib/token.c
+@@ -270,11 +270,11 @@ sycklex( void * _sycklval, SyckParser *p
+ return sycklex_yaml_utf8( sycklval, parser );
+
+ case syck_yaml_utf16:
+- syckerror( parser, "UTF-16 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
++ syckerror( "UTF-16 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
+ break;
+
+ case syck_yaml_utf32:
+- syckerror( parser, "UTF-32 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
++ syckerror( "UTF-32 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
+ break;
+
+ case syck_bytecode_utf8:
+@@ -2739,15 +2739,14 @@ syckwrap(void)
+ }
+
+ void
+-syckerror( void *p, const char *msg )
++syckerror( char *msg )
+ {
+- SyckParser * parser = (SyckParser *)p;
+ /*@-mods@*/
+- if ( parser->error_handler == NULL )
+- parser->error_handler = syck_default_error_handler;
++ if ( syck_parser_ptr->error_handler == NULL )
++ syck_parser_ptr->error_handler = syck_default_error_handler;
+
+- parser->root = parser->root_on_error;
++ syck_parser_ptr->root = syck_parser_ptr->root_on_error;
+ /*@=mods@*/
+- (parser->error_handler)(parser, msg);
++ (syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
+ }
+
+Index: rpm/syck/lib/bytecode.c
+===================================================================
+--- rpm.orig/syck/lib/bytecode.c
++++ rpm/syck/lib/bytecode.c
+@@ -1,10 +1,10 @@
+-/* Generated by re2c 0.9.12 on Tue Mar 14 00:14:53 2006 */
++/* Generated by re2c 0.13.5 on Tue Feb 23 12:04:00 2016 */
+ #line 1 "bytecode.re"
+ /*
+ * bytecode.re
+ *
+ * $Author: why $
+- * $Date: 2005-09-20 08:21:06 +0300 (Tue, 20 Sep 2005) $
++ * $Date: 2005/09/20 05:21:06 $
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+@@ -27,14 +27,11 @@
+ #define YYLINEPTR parser->lineptr
+ #define YYLINECTPTR parser->linectptr
+ #define YYLINE parser->linect
+-#define YYFILL(n) (void) syck_parser_read(parser)
++#define YYFILL(n) syck_parser_read(parser)
+
+-/*@unchecked@*/ /*@null@*/
+ extern SyckParser *syck_parser_ptr;
+
+-/*@null@*/
+-char *get_inline( SyckParser *parser )
+- /*@modifies parser @*/;
++char *get_inline( SyckParser *parser );
+
+ /*
+ * Repositions the cursor at `n' offset from the token start.
+@@ -137,14 +134,12 @@ char *get_inline( SyckParser *parser )
+ */
+ int
+ sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser )
+- /*@globals syck_parser_ptr @*/
+- /*@modifies sycklval, parser, syck_parser_ptr @*/
+ {
+ SyckLevel *lvl;
+ syck_parser_ptr = parser;
+ if ( YYCURSOR == NULL )
+ {
+- (void) syck_parser_read( parser );
++ syck_parser_read( parser );
+ }
+
+ if ( parser->force_token != 0 )
+@@ -171,42 +166,37 @@ sycklex_bytecode_utf8( YYSTYPE *sycklval
+ #line 165 "<stdout>"
+ {
+ YYCTYPE yych;
+- unsigned int yyaccept = 0;
+- goto yy0;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy0:
+- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
++
++ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy2;
+ case 'D': goto yy3;
+ default: goto yy5;
+ }
+-yy2: YYCURSOR = YYMARKER;
+- switch(yyaccept){
+- case 0: goto yy4;
+- }
+-yy3: yyaccept = 0;
++yy2:
++ YYCURSOR = YYMARKER;
++ goto yy4;
++yy3:
+ yych = *(YYMARKER = ++YYCURSOR);
+- switch(yych){
+- case 0x0A: goto yy6;
+- case 0x0D: goto yy8;
++ switch (yych) {
++ case '\n': goto yy6;
++ case '\r': goto yy8;
+ default: goto yy4;
+ }
+ yy4:
+ #line 199 "bytecode.re"
+-{ YYPOS(0);
++ { YYPOS(0);
+ goto Document;
+ }
+-#line 195 "<stdout>"
+-yy5: yych = *++YYCURSOR;
++#line 191 "<stdout>"
++yy5:
++ yych = *++YYCURSOR;
+ goto yy4;
+-yy6: ++YYCURSOR;
+- goto yy7;
+-yy7:
++yy6:
++ ++YYCURSOR;
+ #line 186 "bytecode.re"
+-{ if ( lvl->status == syck_lvl_header )
++ { if ( lvl->status == syck_lvl_header )
+ {
+ CHK_NL(YYCURSOR);
+ goto Directive;
+@@ -218,10 +208,11 @@ yy7:
+ return 0;
+ }
+ }
+-#line 214 "<stdout>"
+-yy8: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy6;
++#line 210 "<stdout>"
++yy8:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy6;
+ default: goto yy2;
+ }
+ }
+@@ -239,19 +230,15 @@ Document:
+ YYTOKEN = YYCURSOR;
+
+
+-#line 235 "<stdout>"
++#line 232 "<stdout>"
+ {
+ YYCTYPE yych;
+- goto yy9;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy9:
+- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
++ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy30;
+- case 0x0A: goto yy27;
+- case 0x0D: goto yy29;
++ case '\n': goto yy27;
++ case '\r': goto yy29;
+ case 'A': goto yy19;
+ case 'D': goto yy12;
+ case 'E': goto yy16;
+@@ -264,71 +251,73 @@ yy9:
+ case 'c': goto yy25;
+ default: goto yy11;
+ }
+-yy11:yy12: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy41;
+- case 0x0D: goto yy44;
++yy11:
++yy12:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy41;
++ case '\r': goto yy44;
+ default: goto yy11;
+ }
+-yy13: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy41;
+- case 0x0D: goto yy43;
++yy13:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy41;
++ case '\r': goto yy43;
+ default: goto yy11;
+ }
+-yy14: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy38;
+- case 0x0D: goto yy40;
++yy14:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy38;
++ case '\r': goto yy40;
+ default: goto yy11;
+ }
+-yy15: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy35;
+- case 0x0D: goto yy37;
++yy15:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy35;
++ case '\r': goto yy37;
+ default: goto yy11;
+ }
+-yy16: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy32;
+- case 0x0D: goto yy34;
++yy16:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy32;
++ case '\r': goto yy34;
+ default: goto yy11;
+ }
+-yy17: ++YYCURSOR;
+- goto yy18;
+-yy18:
++yy17:
++ ++YYCURSOR;
+ #line 288 "bytecode.re"
+-{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
++ { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
+ goto Scalar;
+ }
+-#line 296 "<stdout>"
+-yy19: ++YYCURSOR;
+- goto yy20;
+-yy20:
++#line 295 "<stdout>"
++yy19:
++ ++YYCURSOR;
+ #line 292 "bytecode.re"
+-{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
++ { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
+ sycklval->name = get_inline( parser );
+ syck_hdlr_remove_anchor( parser, sycklval->name );
+ CHK_NL(YYCURSOR);
+ return YAML_ANCHOR;
+ }
+-#line 307 "<stdout>"
+-yy21: ++YYCURSOR;
+- goto yy22;
+-yy22:
++#line 305 "<stdout>"
++yy21:
++ ++YYCURSOR;
+ #line 299 "bytecode.re"
+-{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
++ { ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
+ sycklval->name = get_inline( parser );
+ POP_LEVEL();
+ if ( *( YYCURSOR - 1 ) == '\n' ) YYCURSOR--;
+ return YAML_ALIAS;
+ }
+-#line 318 "<stdout>"
+-yy23: ++YYCURSOR;
+- goto yy24;
+-yy24:
++#line 315 "<stdout>"
++yy23:
++ ++YYCURSOR;
+ #line 306 "bytecode.re"
+-{ char *qstr;
++ { char *qstr;
+ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
+ qstr = get_inline( parser );
+ CHK_NL(YYCURSOR);
+@@ -387,18 +376,16 @@ yy24:
+ sycklval->name = qstr;
+ return YAML_TAGURI;
+ }
+-#line 382 "<stdout>"
+-yy25: ++YYCURSOR;
+- goto yy26;
+-yy26:
++#line 378 "<stdout>"
++yy25:
++ ++YYCURSOR;
+ #line 366 "bytecode.re"
+-{ goto Comment; }
+-#line 388 "<stdout>"
+-yy27: ++YYCURSOR;
+- goto yy28;
+-yy28:
++ { goto Comment; }
++#line 383 "<stdout>"
++yy27:
++ ++YYCURSOR;
+ #line 368 "bytecode.re"
+-{ CHK_NL(YYCURSOR);
++ { CHK_NL(YYCURSOR);
+ if ( lvl->status == syck_lvl_seq )
+ {
+ return YAML_INDENT;
+@@ -410,26 +397,25 @@ yy28:
+ }
+ goto Document;
+ }
+-#line 405 "<stdout>"
+-yy29: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy27;
++#line 399 "<stdout>"
++yy29:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy27;
+ default: goto yy11;
+ }
+-yy30: ++YYCURSOR;
+- goto yy31;
+-yy31:
++yy30:
++ ++YYCURSOR;
+ #line 381 "bytecode.re"
+-{ ENSURE_YAML_IEND(lvl, -1);
++ { ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+-#line 419 "<stdout>"
+-yy32: ++YYCURSOR;
+- goto yy33;
+-yy33:
++#line 413 "<stdout>"
++yy32:
++ ++YYCURSOR;
+ #line 252 "bytecode.re"
+-{ if ( lvl->status == syck_lvl_seq && lvl->ncount == 0 )
++ { if ( lvl->status == syck_lvl_seq && lvl->ncount == 0 )
+ {
+ lvl->ncount++;
+ YYPOS(0);
+@@ -464,17 +450,17 @@ yy33:
+ CHK_NL(YYCURSOR);
+ return YAML_IEND;
+ }
+-#line 459 "<stdout>"
+-yy34: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy32;
++#line 452 "<stdout>"
++yy34:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy32;
+ default: goto yy11;
+ }
+-yy35: ++YYCURSOR;
+- goto yy36;
+-yy36:
++yy35:
++ ++YYCURSOR;
+ #line 237 "bytecode.re"
+-{ int complex = 0;
++ { int complex = 0;
+ if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
+ {
+ complex = 1;
+@@ -488,17 +474,17 @@ yy36:
+ }
+ return YAML_IOPEN;
+ }
+-#line 483 "<stdout>"
+-yy37: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy35;
++#line 476 "<stdout>"
++yy37:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy35;
+ default: goto yy11;
+ }
+-yy38: ++YYCURSOR;
+- goto yy39;
+-yy39:
++yy38:
++ ++YYCURSOR;
+ #line 222 "bytecode.re"
+-{ int complex = 0;
++ { int complex = 0;
+ if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
+ {
+ complex = 1;
+@@ -512,29 +498,31 @@ yy39:
+ }
+ return YAML_IOPEN;
+ }
+-#line 507 "<stdout>"
+-yy40: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy38;
++#line 500 "<stdout>"
++yy40:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy38;
+ default: goto yy11;
+ }
+-yy41: ++YYCURSOR;
+- goto yy42;
+-yy42:
++yy41:
++ ++YYCURSOR;
+ #line 217 "bytecode.re"
+-{ ENSURE_YAML_IEND(lvl, -1);
++ { ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+-#line 521 "<stdout>"
+-yy43: yych = *++YYCURSOR;
+- switch(yych){
+- case 0x0A: goto yy41;
++#line 514 "<stdout>"
++yy43:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy41;
+ default: goto yy11;
+ }
+-yy44: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy41;
++yy44:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy41;
+ default: goto yy11;
+ }
+ }
+@@ -548,28 +536,22 @@ Directive:
+ YYTOKEN = YYCURSOR;
+
+
+-#line 543 "<stdout>"
++#line 538 "<stdout>"
+ {
+ YYCTYPE yych;
+- unsigned int yyaccept = 0;
+- goto yy45;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy45:
+- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy47;
+ case 'V': goto yy48;
+ default: goto yy50;
+ }
+-yy47: YYCURSOR = YYMARKER;
+- switch(yyaccept){
+- case 0: goto yy49;
+- }
+-yy48: yyaccept = 0;
++yy47:
++ YYCURSOR = YYMARKER;
++ goto yy49;
++yy48:
+ yych = *(YYMARKER = ++YYCURSOR);
+- switch(yych){
++ switch (yych) {
+ case '.':
+ case '/':
+ case '0':
+@@ -619,7 +601,8 @@ yy48: yyaccept = 0;
+ case '\\':
+ case ']':
+ case '^':
+- case '_': case 'a':
++ case '_':
++ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+@@ -649,17 +632,18 @@ yy48: yyaccept = 0;
+ }
+ yy49:
+ #line 399 "bytecode.re"
+-{ YYCURSOR = YYTOKEN;
++ { YYCURSOR = YYTOKEN;
+ return YAML_DOCSEP;
+ }
+-#line 646 "<stdout>"
+-yy50: yych = *++YYCURSOR;
++#line 637 "<stdout>"
++yy50:
++ yych = *++YYCURSOR;
+ goto yy49;
+-yy51: ++YYCURSOR;
+- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++yy51:
++ ++YYCURSOR;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+- goto yy52;
+-yy52: switch(yych){
++ switch (yych) {
+ case '.':
+ case '/':
+ case '0':
+@@ -671,7 +655,8 @@ yy52: switch(yych){
+ case '6':
+ case '7':
+ case '8':
+- case '9': case ';':
++ case '9':
++ case ';':
+ case '<':
+ case '=':
+ case '>':
+@@ -707,7 +692,8 @@ yy52: switch(yych){
+ case '\\':
+ case ']':
+ case '^':
+- case '_': case 'a':
++ case '_':
++ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+@@ -736,8 +722,9 @@ yy52: switch(yych){
+ case ':': goto yy53;
+ default: goto yy47;
+ }
+-yy53: yych = *++YYCURSOR;
+- switch(yych){
++yy53:
++ yych = *++YYCURSOR;
++ switch (yych) {
+ case '.':
+ case '/':
+ case '0':
+@@ -787,7 +774,8 @@ yy53: yych = *++YYCURSOR;
+ case '\\':
+ case ']':
+ case '^':
+- case '_': case 'a':
++ case '_':
++ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+@@ -815,13 +803,13 @@ yy53: yych = *++YYCURSOR;
+ case 'z': goto yy54;
+ default: goto yy47;
+ }
+-yy54: ++YYCURSOR;
+- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++yy54:
++ ++YYCURSOR;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+- goto yy55;
+-yy55: switch(yych){
+- case 0x0A: goto yy56;
+- case 0x0D: goto yy58;
++ switch (yych) {
++ case '\n': goto yy56;
++ case '\r': goto yy58;
+ case '.':
+ case '/':
+ case '0':
+@@ -871,7 +859,8 @@ yy55: switch(yych){
+ case '\\':
+ case ']':
+ case '^':
+- case '_': case 'a':
++ case '_':
++ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+@@ -899,16 +888,16 @@ yy55: switch(yych){
+ case 'z': goto yy54;
+ default: goto yy47;
+ }
+-yy56: ++YYCURSOR;
+- goto yy57;
+-yy57:
++yy56:
++ ++YYCURSOR;
+ #line 396 "bytecode.re"
+-{ CHK_NL(YYCURSOR);
++ { CHK_NL(YYCURSOR);
+ goto Directive; }
+-#line 899 "<stdout>"
+-yy58: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy56;
++#line 895 "<stdout>"
++yy58:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy56;
+ default: goto yy47;
+ }
+ }
+@@ -922,40 +911,40 @@ Comment:
+ YYTOKEN = YYCURSOR;
+
+
+-#line 916 "<stdout>"
++#line 913 "<stdout>"
+ {
+ YYCTYPE yych;
+- goto yy59;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy59:
+- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy61;
+- case 0x0A: goto yy62;
+- case 0x0D: goto yy64;
++ case '\n': goto yy62;
++ case '\r': goto yy64;
+ default: goto yy66;
+ }
+-yy61:yy62: ++YYCURSOR;
+- goto yy63;
++yy61:
++yy62:
++ ++YYCURSOR;
+ yy63:
+ #line 412 "bytecode.re"
+-{ CHK_NL(YYCURSOR);
++ { CHK_NL(YYCURSOR);
+ goto Document; }
+-#line 936 "<stdout>"
+-yy64: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy67;
++#line 931 "<stdout>"
++yy64:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy67;
+ default: goto yy65;
+ }
+ yy65:
+ #line 415 "bytecode.re"
+-{ goto Comment; }
+-#line 945 "<stdout>"
+-yy66: yych = *++YYCURSOR;
++ { goto Comment; }
++#line 941 "<stdout>"
++yy66:
++ yych = *++YYCURSOR;
+ goto yy65;
+-yy67: ++YYCURSOR;
++yy67:
++ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy63;
+ }
+@@ -977,23 +966,20 @@ Scalar2:
+ tok = YYCURSOR;
+
+
+-#line 970 "<stdout>"
++#line 968 "<stdout>"
+ {
+ YYCTYPE yych;
+- goto yy68;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy68:
+- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
++ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy74;
+- case 0x0A: goto yy70;
+- case 0x0D: goto yy72;
++ case '\n': goto yy70;
++ case '\r': goto yy72;
+ default: goto yy76;
+ }
+-yy70: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
++yy70:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
+ case 'C': goto yy78;
+ case 'N': goto yy80;
+ case 'Z': goto yy83;
+@@ -1001,50 +987,51 @@ yy70: ++YYCURSOR;
+ }
+ yy71:
+ #line 461 "bytecode.re"
+-{ YYCURSOR = tok;
++ { YYCURSOR = tok;
+ goto ScalarEnd;
+ }
+-#line 996 "<stdout>"
+-yy72: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy77;
++#line 992 "<stdout>"
++yy72:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy77;
+ default: goto yy73;
+ }
+ yy73:
+ #line 469 "bytecode.re"
+-{ CAT(str, cap, idx, tok[0]);
++ { CAT(str, cap, idx, tok[0]);
+ goto Scalar2;
+ }
+-#line 1007 "<stdout>"
+-yy74: ++YYCURSOR;
+- goto yy75;
+-yy75:
++#line 1004 "<stdout>"
++yy74:
++ ++YYCURSOR;
+ #line 465 "bytecode.re"
+-{ YYCURSOR = tok;
++ { YYCURSOR = tok;
+ goto ScalarEnd;
+ }
+-#line 1015 "<stdout>"
+-yy76: yych = *++YYCURSOR;
++#line 1011 "<stdout>"
++yy76:
++ yych = *++YYCURSOR;
+ goto yy73;
+-yy77: yych = *++YYCURSOR;
+- switch(yych){
++yy77:
++ yych = *++YYCURSOR;
++ switch (yych) {
+ case 'C': goto yy78;
+ case 'N': goto yy80;
+ case 'Z': goto yy83;
+ default: goto yy71;
+ }
+-yy78: ++YYCURSOR;
+- goto yy79;
+-yy79:
++yy78:
++ ++YYCURSOR;
+ #line 435 "bytecode.re"
+-{ CHK_NL(tok+1);
++ { CHK_NL(tok+1);
+ goto Scalar2; }
+-#line 1031 "<stdout>"
+-yy80: ++YYCURSOR;
+- if(YYLIMIT == YYCURSOR) YYFILL(1);
++#line 1028 "<stdout>"
++yy80:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+- goto yy81;
+-yy81: switch(yych){
++ switch (yych) {
+ case '0':
+ case '1':
+ case '2':
+@@ -1059,7 +1046,7 @@ yy81: switch(yych){
+ }
+ yy82:
+ #line 438 "bytecode.re"
+-{ CHK_NL(tok+1);
++ { CHK_NL(tok+1);
+ if ( tok + 2 < YYCURSOR )
+ {
+ char *count = tok + 2;
+@@ -1076,16 +1063,15 @@ yy82:
+ }
+ goto Scalar2;
+ }
+-#line 1068 "<stdout>"
+-yy83: ++YYCURSOR;
+- goto yy84;
+-yy84:
++#line 1065 "<stdout>"
++yy83:
++ ++YYCURSOR;
+ #line 456 "bytecode.re"
+-{ CHK_NL(tok+1);
++ { CHK_NL(tok+1);
+ CAT(str, cap, idx, '\0');
+ goto Scalar2;
+ }
+-#line 1077 "<stdout>"
++#line 1073 "<stdout>"
+ }
+ #line 473 "bytecode.re"
+
+@@ -1122,50 +1108,48 @@ Inline:
+ tok = YYCURSOR;
+
+
+-#line 1114 "<stdout>"
++#line 1110 "<stdout>"
+ {
+ YYCTYPE yych;
+- goto yy85;
+- /*@notreached@*/
+- ++YYCURSOR;
+-yy85:
+- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+- switch(yych){
++ switch (yych) {
+ case 0x00: goto yy91;
+- case 0x0A: goto yy87;
+- case 0x0D: goto yy89;
++ case '\n': goto yy87;
++ case '\r': goto yy89;
+ default: goto yy93;
+ }
+-yy87: ++YYCURSOR;
+- goto yy88;
++yy87:
++ ++YYCURSOR;
+ yy88:
+ #line 508 "bytecode.re"
+-{ CHK_NL(YYCURSOR);
++ { CHK_NL(YYCURSOR);
+ return str; }
+-#line 1134 "<stdout>"
+-yy89: ++YYCURSOR;
+- switch((yych = *YYCURSOR)) {
+- case 0x0A: goto yy94;
++#line 1127 "<stdout>"
++yy89:
++ ++YYCURSOR;
++ switch ((yych = *YYCURSOR)) {
++ case '\n': goto yy94;
+ default: goto yy90;
+ }
+ yy90:
+ #line 515 "bytecode.re"
+-{ CAT(str, cap, idx, tok[0]);
++ { CAT(str, cap, idx, tok[0]);
+ goto Inline;
+ }
+-#line 1145 "<stdout>"
+-yy91: ++YYCURSOR;
+- goto yy92;
+-yy92:
++#line 1139 "<stdout>"
++yy91:
++ ++YYCURSOR;
+ #line 511 "bytecode.re"
+-{ YYCURSOR = tok;
++ { YYCURSOR = tok;
+ return str;
+ }
+-#line 1153 "<stdout>"
+-yy93: yych = *++YYCURSOR;
++#line 1146 "<stdout>"
++yy93:
++ yych = *++YYCURSOR;
+ goto yy90;
+-yy94: ++YYCURSOR;
++yy94:
++ ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy88;
+ }
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-tagname-type.patch b/meta/recipes-devtools/rpm/rpm/rpm-tagname-type.patch
new file mode 100644
index 0000000000..786944d847
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-tagname-type.patch
@@ -0,0 +1,25 @@
+rpmdb/tagname.c: Add the 0x54aafb71 (filenames) type to rpmTagGetType
+
+There is already a workaround in the _tagName function to show that the
+special 'filenames' item is value. This adds a similar patch to the
+_tagType to return the proper type, otherwise it comes back as a simple
+RPM_STRING_ARRAY_TYPE which limits the response to the first element.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.15/rpmdb/tagname.c
+===================================================================
+--- rpm-5.4.15.orig/rpmdb/tagname.c
++++ rpm-5.4.15/rpmdb/tagname.c
+@@ -353,6 +353,9 @@ static unsigned int _tagType(rpmTag tag)
+ case RPMDBI_RECNO:
+ case RPMDBI_HEAP:
+ break;
++ /* XXX make sure that h.['filenames'] in python "works". */
++ case 0x54aafb71:
++ return (RPM_STRING_ARRAY_TYPE + RPM_ARRAY_RETURN_TYPE);
+ default:
+ if (_rpmTags.byValue == NULL)
+ break;
diff --git a/meta/recipes-devtools/rpm/rpm/rpmatch.patch b/meta/recipes-devtools/rpm/rpm/rpmatch.patch
index 20d13aa08c..2ededdac4a 100644
--- a/meta/recipes-devtools/rpm/rpm/rpmatch.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpmatch.patch
@@ -1,5 +1,6 @@
-Add configure check for rpmatch() and
-creates a compatable macro if it is not provided by the C library.
+Create a compatable macro if rpmatch() is not provided by the C library.
+
+This uses an existing configure check.
This is needed for uclibc since it does not have the above function
implemented.
@@ -8,24 +9,15 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: rpm-5.4.14/configure.ac
-===================================================================
---- rpm-5.4.14.orig/configure.ac
-+++ rpm-5.4.14/configure.ac
-@@ -943,7 +943,7 @@ AC_CHECK_FUNCS([dnl
- ftok getaddrinfo getattrlist getcwd getdelim getline getmode getnameinfo dnl
- getpassphrase getxattr getwd iconv inet_aton lchflags lchmod lchown dnl
- lgetxattr lsetxattr lutimes madvise mempcpy mkdtemp mkstemp mtrace dnl
-- posix_fadvise posix_fallocate putenv realpath regcomp secure_getenv __secure_getenv dnl
-+ posix_fadvise posix_fallocate putenv realpath regcomp rpmatch secure_getenv __secure_getenv dnl
- setattrlist setenv setlocale setmode setxattr dnl
- sigaddset sigdelset sigemptyset sighold sigrelse sigpause dnl
- sigprocmask sigsuspend sigaction dnl
-Index: rpm-5.4.14/system.h
+Updated to rpm 5.4.15+.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm/system.h
===================================================================
---- rpm-5.4.14.orig/system.h
-+++ rpm-5.4.14/system.h
-@@ -353,6 +353,14 @@ extern int _tolower(int) __THROW /*@*/;
+--- rpm.orig/system.h
++++ rpm/system.h
+@@ -358,6 +358,14 @@ extern int _tolower(int) __THROW /*@*/;
#include <libgen.h>
#endif
diff --git a/meta/recipes-devtools/rpm/rpm/rpmqv_cc_b_gone.patch b/meta/recipes-devtools/rpm/rpm/rpmqv_cc_b_gone.patch
index f08bd688f1..b2437a8723 100644
--- a/meta/recipes-devtools/rpm/rpm/rpmqv_cc_b_gone.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpmqv_cc_b_gone.patch
@@ -1,4 +1,7 @@
-rpm: compile rpmqv.c instead of rpmqv.cc
+From e8bae261615e19ff8a28683765c9539cfb22a086 Mon Sep 17 00:00:00 2001
+From: Joe Slater <jslater@windriver.com>
+Date: Thu, 17 Jul 2014 18:14:54 -0700
+Subject: [PATCH 1/9] rpm: compile rpmqv.c instead of rpmqv.cc
Some versions of gcc, 4.4.5 for example, will put a reference to __gxx_personality_v0
into rpm.o and rpmbuild.o. This means we must link with g++, and the Makefile we
@@ -10,23 +13,38 @@ Upstream-Status: Inappropriate [other]
When linking with g++ is really necessary, the upstream package will do that.
+Also instead of symlinking files in two places, which can and does race in
+parallel builds, simply refer to the file's full location [RB]
+
Signed-off-by: Joe Slater <joe.slater@windriver.com>
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ Makefile.am | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+diff --git a/Makefile.am b/Makefile.am
+index 1dade0a..55f8669 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -127,13 +127,13 @@ rpm_SOURCES = build.c
+@@ -201,15 +201,13 @@ rpm_SOURCES = build.c
rpm_LDFLAGS = @LDFLAGS_STATIC@ $(LDFLAGS)
rpm_LDADD = rpm.o $(myLDADD)
rpm.o: $(top_srcdir)/rpmqv.c
-- $(COMPILE) -DIAM_RPMBT -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $(top_srcdir)/rpmqv.cc
-+ $(COMPILE) -DIAM_RPMBT -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $(top_srcdir)/rpmqv.c
+- ln -sf $< rpmqv.cc
+- $(COMPILE) -DIAM_RPMBT -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c rpmqv.cc
++ $(COMPILE) -DIAM_RPMBT -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $^
rpmbuild_SOURCES = build.c
rpmbuild_LDFLAGS = @LDFLAGS_STATIC@ $(LDFLAGS)
rpmbuild_LDADD = rpmbuild.o $(myLDADD)
- rpmbuild.o: $(top_srcdir)/rpmqv.c
-- $(COMPILE) -DIAM_RPMBT -o $@ -c $(top_srcdir)/rpmqv.cc
-+ $(COMPILE) -DIAM_RPMBT -o $@ -c $(top_srcdir)/rpmqv.c
+ rpmbuild.o: $(top_srcdir)/rpmqv.c
+- ln -sf $< rpmqv.cc
+- $(COMPILE) -DIAM_RPMBT -o $@ -c rpmqv.cc
++ $(COMPILE) -DIAM_RPMBT -o $@ -c $^
- .PHONY: splint
- splint:
+ .syntastic_c_config: Makefile
+ @echo $(COMPILE) | tr ' ' '\n' | sed -e '1d' > $@
+--
+2.7.0
+
diff --git a/meta/recipes-devtools/rpm/rpm/uclibc-support.patch b/meta/recipes-devtools/rpm/rpm/uclibc-support.patch
index 8870adb9e7..3b4b924510 100644
--- a/meta/recipes-devtools/rpm/rpm/uclibc-support.patch
+++ b/meta/recipes-devtools/rpm/rpm/uclibc-support.patch
@@ -4,10 +4,10 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: rpm-5.4.14/rpmio/rpmio.h
+Index: rpm/rpmio/rpmio.h
===================================================================
---- rpm-5.4.14.orig/rpmio/rpmio.h
-+++ rpm-5.4.14/rpmio/rpmio.h
+--- rpm.orig/rpmio/rpmio.h
++++ rpm/rpmio/rpmio.h
@@ -23,7 +23,8 @@
*/
/*@{*/
@@ -18,11 +18,11 @@ Index: rpm-5.4.14/rpmio/rpmio.h
#define USE_COOKIE_SEEK_POINTER 1
typedef _IO_off64_t _libio_off_t;
typedef _libio_off_t * _libio_pos_t;
-Index: rpm-5.4.14/system.h
+Index: rpm/system.h
===================================================================
---- rpm-5.4.14.orig/system.h
-+++ rpm-5.4.14/system.h
-@@ -481,7 +481,7 @@ extern void muntrace (void)
+--- rpm.orig/system.h
++++ rpm/system.h
+@@ -489,7 +489,7 @@ extern void muntrace (void)
#endif /* defined(__LCLINT__) */
/* Memory allocation via macro defs to get meaningful locations from mtrace() */
@@ -31,11 +31,11 @@ Index: rpm-5.4.14/system.h
#define xmalloc(_size) (malloc(_size) ? : vmefail(_size))
#define xcalloc(_nmemb, _size) (calloc((_nmemb), (_size)) ? : vmefail(_size))
#define xrealloc(_ptr, _size) (realloc((_ptr), (_size)) ? : vmefail(_size))
-Index: rpm-5.4.14/lib/librpm.vers
+Index: rpm/lib/librpm.vers
===================================================================
---- rpm-5.4.14.orig/lib/librpm.vers
-+++ rpm-5.4.14/lib/librpm.vers
-@@ -405,6 +405,10 @@ LIBRPM_0
+--- rpm.orig/lib/librpm.vers
++++ rpm/lib/librpm.vers
+@@ -406,6 +406,10 @@ LIBRPM_0
specedit;
strict_erasures;
XrpmtsiInit;
@@ -46,14 +46,14 @@ Index: rpm-5.4.14/lib/librpm.vers
local:
*;
};
-Index: rpm-5.4.14/rpmio/librpmio.vers
+Index: rpm/rpmio/librpmio.vers
===================================================================
---- rpm-5.4.14.orig/rpmio/librpmio.vers
-+++ rpm-5.4.14/rpmio/librpmio.vers
-@@ -1056,6 +1056,10 @@ LIBRPMIO_0
- mongo_write_concern_set_mode;
- mongo_write_concern_set_w;
- mongo_write_concern_set_wtimeout;
+--- rpm.orig/rpmio/librpmio.vers
++++ rpm/rpmio/librpmio.vers
+@@ -1455,6 +1455,10 @@ LIBRPMIO_0
+ _mongoc_write_result_init;
+ _mongoc_write_result_merge;
+ _mongoc_write_result_merge_legacy;
+ xmalloc;
+ xrealloc;
+ xcalloc;
diff --git a/meta/recipes-devtools/rpm/rpm/verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch b/meta/recipes-devtools/rpm/rpm/verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch
deleted file mode 100644
index 71045aebc7..0000000000
--- a/meta/recipes-devtools/rpm/rpm/verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9e7b72ee0c994609975981e135fc18d0387aefb6 Mon Sep 17 00:00:00 2001
-From: jbj <jbj>
-Date: Wed, 14 May 2014 21:19:41 +0000
-Subject: [PATCH] - verify: fix: broken logic for %ghost avoidance (Mark
- Hatle).
-
-Upstream-Status: Backport
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
----
- CHANGES | 1 +
- lib/verify.c | 3 +--
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-Index: rpm-5.4.14/CHANGES
-===================================================================
---- rpm-5.4.14.orig/CHANGES
-+++ rpm-5.4.14/CHANGES
-@@ -1,3 +1,5 @@
-+ - jbj: verify: fix: broken logic for %ghost avoidance (Mark Hatle).
-+
- 5.4.13 -> 5.4.14:
- - mooney: use __sun instead of __sun__ in #define (lp#1243472).
- - mooney: rpmconstant: ensure linkage w Oracle Studio 12.3 (lp#1243469).
-Index: rpm-5.4.14/lib/verify.c
-===================================================================
---- rpm-5.4.14.orig/lib/verify.c
-+++ rpm-5.4.14/lib/verify.c
-@@ -588,8 +588,7 @@ uint32_t fc = rpmfiFC(fi);
- continue;
-
- /* If not verifying %ghost, skip ghost files. */
-- /* XXX the broken!!! logic disables %ghost queries always. */
-- if (!(FF_ISSET(qva->qva_fflags, GHOST) && FF_ISSET(fflags, GHOST)))
-+ if (!FF_ISSET(qva->qva_fflags, GHOST) && FF_ISSET(fflags, GHOST))
- continue;
-
- /* Gather per-file data into a carrier. */
diff --git a/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb b/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb
index 660e9df272..62526fde5f 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4+cvs.bb
@@ -34,24 +34,22 @@ DESCRIPTION_perl-modules-rpm = "The perl-modules-rpm package contains a module t
written in the Perl programming language to use the interface \
supplied by the RPM Package Manager libraries."
-SUMMARY_perl-module-rpm-dev = "Development components for perl bindings"
-DESCRIPTION_perl-modules-rpm-dev = "Development items such as man pages for use with the Perl \
-language bindings."
-
HOMEPAGE = "http://rpm5.org/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPLv2.1 & Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
+LIC_FILES_CHKSUM += "file://rpmio/mongo.c;begin=5;end=18;md5=d8327ba2c71664c059143e6d333b8901"
-DEPENDS = "libpcre attr acl popt ossp-uuid file byacc-native"
+# We must have gettext-native, we need gettextize, which may not be provided
+DEPENDS = "libpcre attr acl ossp-uuid file byacc-native gettext-native"
DEPENDS_append_class-native = " file-replacement-native"
-S = "${WORKDIR}/rpm"
-
# Apply various fixups that are unique to the CVS environment
do_fixup_unpack () {
- ln -sf ../syck ${S}/syck || :
- ln -sf ../lua ${S}/lua || :
- ln ${S}/rpmqv.c ${S}/rpmqv.cc || :
+ # 'ln' isn't reliable, and 'mv' could break later builds
+ rm -rf ${S}/syck ; cp -r ${WORKDIR}/syck ${S}/.
+ rm -rf ${S}/lua ; cp -r ${WORKDIR}/lua ${S}/.
+ rm -rf ${S}/popt ; cp -r ${WORKDIR}/popt ${S}/.
+ rm -rf ${S}/beecrypt ; cp -r ${WORKDIR}/beecrypt ${S}/.
}
addtask fixup_unpack after do_unpack before do_patch
@@ -60,45 +58,34 @@ addtask fixup_unpack after do_unpack before do_patch
# community work in progress.
DEFAULT_PREFERENCE = "-1"
+S = "${WORKDIR}/rpm"
+
# 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...
SRC_URI = "cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=rpm \
cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=syck \
cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=lua \
- file://rpm-log-auto-rm.patch \
- file://rpm-db-reduce.patch \
+ cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=popt \
+ cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=beecrypt \
file://perfile_rpmdeps.sh \
- file://rpm-autogen.patch \
- file://rpm-libsql-fix.patch \
+ file://pythondeps.sh \
+"
+
+# Bug fixes
+SRC_URI += " \
file://header-include-fix.patch \
+ file://rpm-libsql-fix.patch \
file://rpm-platform.patch \
- file://rpm-showrc.patch \
+ file://rpm-platform2.patch \
file://rpm-tools-mtree-LDFLAGS.patch \
- file://rpm-fileclass.patch \
file://rpm-canonarch.patch \
file://rpm-no-loopmsg.patch \
- file://rpm-scriptletexechelper.patch \
- file://pythondeps.sh \
- file://rpmdeps-oecore.patch \
file://rpm-resolvedep.patch \
- file://rpm-no-perl-urpm.patch \
- file://rpm-macros.patch \
- file://rpm-lua.patch \
- file://rpm-ossp-uuid.patch \
file://rpm-packageorigin.patch \
- file://rpm-pkgconfigdeps.patch \
file://uclibc-support.patch \
file://rpmatch.patch \
- file://fstack-protector-configure-check.patch \
- file://dbconvert.patch \
- file://rpm-uuid-include.patch \
file://makefile-am-exec-hook.patch \
- file://rpm-db_buffer_small.patch \
- file://rpm-py-init.patch \
file://python-rpm-rpmsense.patch \
- file://rpm-reloc-macros.patch \
- file://rpm-platform2.patch \
- file://rpm-remove-sykcparse-decl.patch \
file://debugedit-segv.patch \
file://debugedit-valid-file-to-fix-segment-fault.patch \
file://rpm-platform-file-fix.patch \
@@ -107,13 +94,61 @@ SRC_URI = "cvs://anonymous@rpm5.org/cvs;tag=rpm-5_4;module=rpm \
file://rpm-hardlink-segfault-fix.patch \
file://rpm-payload-use-hashed-inode.patch \
file://rpm-fix-logio-cp.patch \
+ file://0001-using-poptParseArgvString-to-parse-the-_gpg_check_pa.patch \
+ file://rpm-opendb-before-verifyscript-to-avoid-null-point.patch \
+ file://0001-define-EM_AARCH64.patch \
+ file://rpm-rpmfc.c-fix-for-N32-MIPS64.patch \
+ file://rpm-lib-transaction.c-fix-file-conflicts-for-mips64-N32.patch \
+ file://rpm-mongodb-sasl.patch \
+ file://rpm-fix-parseEmbedded.patch \
+ file://rpm-rpmio-headers.patch \
+ file://rpm-python-restore-origin.patch \
+ file://rpm-keccak-sse-intrin.patch \
+ file://rpm-atomic-ops.patch \
+ file://rpm-gnu-atomic.patch \
+ file://rpm-tagname-type.patch \
+ file://rpm-python-tagname.patch \
+ file://rpm-python-AddErase.patch \
+ file://rpm-rpmpgp-popt.patch \
+"
+
+# OE specific changes
+SRC_URI += " \
+ file://rpm-log-auto-rm.patch \
+ file://rpm-db-reduce.patch \
+ file://rpm-autogen.patch \
+ file://rpm-showrc.patch \
+ file://rpm-fileclass.patch \
+ file://rpm-scriptletexechelper.patch \
+ file://rpmdeps-oecore.patch \
+ file://rpm-no-perl-urpm.patch \
+ file://rpm-macros.patch \
+ file://rpm-lua.patch \
+ file://rpm-ossp-uuid.patch \
+ file://rpm-uuid-include.patch \
+ file://rpm-pkgconfigdeps.patch \
+ file://no-ldflags-in-pkgconfig.patch \
+ file://dbconvert.patch \
+ file://rpm-db_buffer_small.patch \
+ file://rpm-py-init.patch \
+ file://rpm-reloc-macros.patch \
file://rpm-db5-or-db6.patch \
- file://rpm-rpmpgp-fix.patch \
- file://rpm-disable-Wno-override-init.patch \
+ file://rpm-db60.patch \
+ file://rpmqv_cc_b_gone.patch \
file://rpm-realpath.patch \
- file://rpm-rpmfc.c-fix-for-N32-MIPS64.patch \
- "
-
+ file://rpm-check-rootpath-reasonableness.patch \
+ file://rpm-macros.in-disable-external-key-server.patch \
+ file://configure.ac-check-for-both-gpg2-and-gpg.patch \
+ file://rpm-disable-auto-stack-protector.patch \
+ file://popt-disable-auto-stack-protector.patch \
+ file://rpm-syck-fix-gram.patch \
+ file://rpm-rpmdb-grammar.patch \
+ file://rpm-disable-blaketest.patch \
+"
+
+SRC_URI_append_libc-musl = "\
+ file://0001-rpm-Fix-build-on-musl.patch \
+"
# Uncomment the following line to enable platform score debugging
# This is useful when identifying issues with Smart being unable
# to process certain package feeds.
@@ -123,16 +158,25 @@ inherit autotools gettext
acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
+# The local distribution macro directory
+distromacrodir = "${libdir}/rpm/poky"
+
# Specify the default rpm macros in terms of adjustable variables
-rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
-rpm_macros_class-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
-rpm_macros_class-nativesdk = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
+rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
+rpm_macros_class-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:~/.oerpmmacros"
+rpm_macros_class-nativesdk = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macros:%{_usrlibrpm}/${DISTRO}/%{_target}/macros:~/.oerpmmacros"
# sqlite lua tcl augeas nss gcrypt neon xz xar keyutils perl selinux
# Note: perl and sqlite w/o db specified does not currently work.
# tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
-PACKAGECONFIG ??= "db bzip2 zlib beecrypt openssl libelf python"
+PACKAGECONFIG ??= "db bzip2 zlib popt openssl libelf python"
+
+# Note: switching to internal popt may not work, as it will generate
+# a shared library which will intentionally not be packaged.
+#
+# If you intend to use the internal version, additional work may be required.
+PACKAGECONFIG[popt] = "--with-popt=external,--with-popt=internal,popt,"
PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
@@ -193,7 +237,6 @@ EXTRA_OECONF += "--verbose \
--with-uuid \
--with-attr \
--with-acl \
- --with-popt=external \
--with-pthreads \
--without-cudf \
--without-ficl \
@@ -205,6 +248,7 @@ EXTRA_OECONF += "--verbose \
--without-gpsee \
--without-ruby \
--without-squirrel \
+ --without-sasl2 \
--with-build-extlibdep \
--with-build-maxextlibdep \
--without-valgrind \
@@ -224,7 +268,7 @@ CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
LDFLAGS_append_libc-uclibc = "-lrt -lpthread"
-PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-staticdev python-rpm-dev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale"
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm perl-module-rpm ${PN}-locale"
SOLIBS = "5.4.so"
@@ -342,24 +386,21 @@ FILES_${PN}-build = "${prefix}/src/rpm \
${libdir}/rpm/vpkg-provides.sh \
${libdir}/rpm/vpkg-provides2.sh \
${libdir}/rpm/perfile_rpmdeps.sh \
+ ${distromacrodir} \
"
RDEPENDS_${PN} = "base-files run-postinsts"
RDEPENDS_${PN}_class-native = ""
RDEPENDS_${PN}_class-nativesdk = ""
RDEPENDS_${PN}-build = "file bash perl"
-RDEPENDS_python-rpm = "${PN}"
+RDEPENDS_python-rpm = "${PN} python"
-FILES_python-rpm-dev = "${libdir}/python*/site-packages/rpm/*.la"
-FILES_python-rpm-staticdev = "${libdir}/python*/site-packages/rpm/*.a"
FILES_python-rpm = "${libdir}/python*/site-packages/rpm"
+PROVIDES += "python-rpm"
FILES_perl-module-rpm = "${libdir}/perl/*/* \
"
-FILES_perl-module-rpm-dev = "${prefix}/share/man/man3/RPM* \
- "
-
RDEPENDS_${PN}-dev += "bash"
FILES_${PN}-dev = "${includedir}/rpm \
@@ -388,6 +429,7 @@ FILES_${PN}-staticdev = " \
${libdir}/librpmmisc.a \
${libdir}/librpmbuild.a \
${libdir}/rpm/lib/liblua.a \
+ ${libdir}/python*/site-packages/rpm/*.a \
"
do_configure() {
@@ -408,12 +450,18 @@ do_configure() {
}
do_install_append() {
+ # Preserve the previous default of DSA self-signed pkgs
+ sed -i -e 's,%_build_sign.*,%_build_sign DSA,' ${D}/${libdir}/rpm/macros.rpmbuild
+
sed -i -e 's,%__scriptlet_requires,#%%__scriptlet_requires,' ${D}/${libdir}/rpm/macros
sed -i -e 's,%__perl_provides,#%%__perl_provides,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
sed -i -e 's,%__perl_requires,#%%__perl_requires,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
sed -i -e 's,%_repackage_all_erasures[^_].*,%_repackage_all_erasures 0,' ${D}/${libdir}/rpm/macros
sed -i -e 's,^#%_openall_before_chroot.*,%_openall_before_chroot\t1,' ${D}/${libdir}/rpm/macros
+ # Enable MIPS64 N32 transactions. (This is a no-op on non-MIPS targets.)
+ sed -i -e 's,%_transaction_color[^_].*,%_transaction_color 7,' ${D}/${libdir}/rpm/macros
+
# Enable Debian style arbitrary tags...
sed -i -e 's,%_arbitrary_tags[^_].*,%_arbitrary_tags %{_arbitrary_tags_debian},' ${D}/${libdir}/rpm/macros
@@ -485,6 +533,83 @@ do_install_append() {
}
+do_install_append_class-target() {
+ # Create and install distribution specific macros
+ mkdir -p ${D}/${distromacrodir}
+ cat << EOF > ${D}/${distromacrodir}/macros
+%_defaultdocdir ${docdir}
+
+%_prefix ${prefix}
+%_exec_prefix ${exec_prefix}
+%_datarootdir ${datadir}
+%_bindir ${bindir}
+%_sbindir ${sbindir}
+%_libexecdir %{_libdir}/%{name}
+%_datadir ${datadir}
+%_sysconfdir ${sysconfdir}
+%_sharedstatedir ${sharedstatedir}
+%_localstatedir ${localstatedir}
+%_lib lib
+%_libdir %{_exec_prefix}/%{_lib}
+%_includedir ${includedir}
+%_oldincludedir ${oldincludedir}
+%_infodir ${infodir}
+%_mandir ${mandir}
+%_localedir %{_libdir}/locale
+EOF
+
+ # Create and install multilib specific macros
+ ${@multilib_rpmmacros(d)}
+}
+
+def multilib_rpmmacros(d):
+ localdata = d.createCopy()
+ # We need to clear the TOOLCHAIN_OPTIONS (--sysroot)
+ localdata.delVar('TOOLCHAIN_OPTIONS')
+
+ # Set 'localdata' values to be consistent with 'd' values.
+ localdata.setVar('distromacrodir', d.getVar('distromacrodir', True))
+ localdata.setVar('WORKDIR', d.getVar('WORKDIR', True))
+
+ ret = gen_arch_macro(localdata)
+
+ variants = d.getVar("MULTILIB_VARIANTS", True) or ""
+ for item in variants.split():
+ # Load overrides from 'd' to avoid having to reset the value...
+ localdata = d.createCopy()
+ overrides = d.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
+ localdata.setVar("OVERRIDES", overrides)
+ localdata.setVar("MLPREFIX", item + "-")
+ bb.data.update_data(localdata)
+ ret += gen_arch_macro(localdata)
+ return ret
+
+def gen_arch_macro(d):
+ # Generate shell script to produce the file as part of do_install
+ val = "mkdir -p ${D}/${distromacrodir}/${TARGET_ARCH}-${TARGET_OS}\n"
+ val += "cat << EOF > ${D}/${distromacrodir}/${TARGET_ARCH}-${TARGET_OS}/macros\n"
+ val += "%_lib ${baselib}\n"
+ val += "%_libdir ${libdir}\n"
+ val += "%_localedir ${localedir}\n"
+ val += "\n"
+ val += "# Toolchain configuration\n"
+ val += "%TOOLCHAIN_OPTIONS %{nil}\n"
+ val += "%__ar ${@d.getVar('AR', True).replace('$','%')}\n"
+ val += "%__as ${@d.getVar('AS', True).replace('$','%')}\n"
+ val += "%__cc ${@d.getVar('CC', True).replace('$','%')}\n"
+ val += "%__cpp ${@d.getVar('CPP', True).replace('$','%')}\n"
+ val += "%__cxx ${@d.getVar('CXX', True).replace('$','%')}\n"
+ val += "%__ld ${@d.getVar('LD', True).replace('$','%')}\n"
+ val += "%__nm ${@d.getVar('NM', True).replace('$','%')}\n"
+ val += "%__objcopy ${@d.getVar('OBJCOPY', True).replace('$','%')}\n"
+ val += "%__objdump ${@d.getVar('OBJDUMP', True).replace('$','%')}\n"
+ val += "%__ranlib ${@d.getVar('RANLIB', True).replace('$','%')}\n"
+ val += "%__strip ${@d.getVar('STRIP', True).replace('$','%')}\n"
+ val += "EOF\n"
+ val += "\n"
+ return d.expand(val)
+
+
add_native_wrapper() {
create_wrapper ${D}/${bindir}/rpm \
RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.14.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
index 90c4a354bf..142706f30c 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.14.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
@@ -5,8 +5,6 @@ verifying, querying, and updating software packages. Each software \
package consists of an archive of files along with information about \
the package like its version, a description, etc."
-RECIPE_NO_UPDATE_REASON = "5.4.15 has a package database issue: http://lists.openembedded.org/pipermail/openembedded-core/2015-August/109187.html"
-
SUMMARY_${PN}-libs = "Libraries for manipulating RPM packages"
DESCRIPTION_${PN}-libs = "This package contains the RPM shared libraries."
@@ -37,72 +35,118 @@ written in the Perl programming language to use the interface \
supplied by the RPM Package Manager libraries."
HOMEPAGE = "http://rpm5.org/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPLv2.1 & Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
+LIC_FILES_CHKSUM += "file://rpmio/mongo.c;begin=5;end=18;md5=d8327ba2c71664c059143e6d333b8901"
-DEPENDS = "libpcre attr acl popt ossp-uuid file byacc-native"
+# We must have gettext-native, we need gettextize, which may not be provided
+DEPENDS = "libpcre attr acl ossp-uuid file byacc-native gettext-native"
DEPENDS_append_class-native = " file-replacement-native"
# 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...
-SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.14-0.20131024.src.rpm;extract=rpm-5.4.14.tar.gz \
- file://rpm-log-auto-rm.patch \
- file://rpm-db-reduce.patch \
+
+# There is no official 5.4.16 release yet, so start w/ 5.4.15 and patch it
+# based on CVS
+S = "${WORKDIR}/rpm-5.4.15"
+
+SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.15-0.20140824.src.rpm;name=srpm;extract=rpm-5.4.15.tar.gz \
+ http://downloads.yoctoproject.org/releases/rpm5/rpm-5.4.15-to-5.4.16-20160225.patch.gz;name=rpm-patch \
+ http://downloads.yoctoproject.org/releases/rpm5/syck-5.4.15-to-5.4.16-20160225.patch.gz;name=syck-patch \
+ http://downloads.yoctoproject.org/releases/rpm5/beecrypt-5.4.15-to-5.4.16-20160225.patch.gz;name=beecrypt-patch \
+ http://downloads.yoctoproject.org/releases/rpm5/lua-5.4.15-to-5.4.16-20160225.patch.gz;name=lua-patch \
file://perfile_rpmdeps.sh \
- file://rpm-autogen.patch \
- file://rpm-libsql-fix.patch \
+ file://pythondeps.sh \
+"
+
+SRC_URI[srpm.md5sum] = "d53782842ac11b3100a43fb2958c9bc0"
+SRC_URI[srpm.sha256sum] = "d4ae5e9ed5df8ab9931b660f491418d20ab5c4d72eb17ed9055b80b71ef6c4ee"
+
+SRC_URI[rpm-patch.md5sum] = "8b7deb1c9574d3d47ed8ba8c690fd8bf"
+SRC_URI[rpm-patch.sha256sum] = "1c1983d001b04eaa23eb2c8d9598b9d0899acb0a89f54a2d4c4e974086fd17a5"
+
+SRC_URI[syck-patch.md5sum] = "f31d7a32105a364688354419ec3559e4"
+SRC_URI[syck-patch.sha256sum] = "4dd1d04489206d8b5d1970f2a8d143a002f2895cefbe15d73459785096545e8a"
+
+SRC_URI[beecrypt-patch.md5sum] = "9e71ee3ccb0a52985a071dd250279132"
+SRC_URI[beecrypt-patch.sha256sum] ="df7c0708a7fab9bdf6d46194519b42e736f99cb0599dcc1c3c1bf1b228705cde"
+
+SRC_URI[lua-patch.md5sum] = "ca10d03d83b1fc1c31a0b50819534cd7"
+SRC_URI[lua-patch.sha256sum] = "6bde435cc827a7d4b2520e8f3e1c9bd2ca74375de0a4402aa99ef4d48eab9a7e"
+
+# Bug fixes
+SRC_URI += " \
file://header-include-fix.patch \
+ file://rpm-libsql-fix.patch \
file://rpm-platform.patch \
- file://rpm-showrc.patch \
+ file://rpm-platform2.patch \
file://rpm-tools-mtree-LDFLAGS.patch \
- file://rpm-fileclass.patch \
file://rpm-canonarch.patch \
file://rpm-no-loopmsg.patch \
- file://rpm-scriptletexechelper.patch \
- file://pythondeps.sh \
- file://rpmdeps-oecore.patch \
file://rpm-resolvedep.patch \
- file://rpm-no-perl-urpm.patch \
- file://rpm-macros.patch \
- file://rpm-lua.patch \
- file://rpm-ossp-uuid.patch \
file://rpm-packageorigin.patch \
- file://rpm-pkgconfigdeps.patch \
file://uclibc-support.patch \
file://rpmatch.patch \
- file://fstack-protector-configure-check.patch \
- file://dbconvert.patch \
- file://rpm-uuid-include.patch \
file://makefile-am-exec-hook.patch \
- file://rpm-db_buffer_small.patch \
- file://rpm-py-init.patch \
file://python-rpm-rpmsense.patch \
- file://rpm-reloc-macros.patch \
- file://rpm-platform2.patch \
- file://rpm-remove-sykcparse-decl.patch \
file://debugedit-segv.patch \
file://debugedit-valid-file-to-fix-segment-fault.patch \
file://rpm-platform-file-fix.patch \
file://rpm-lsb-compatibility.patch \
file://rpm-tag-generate-endian-conversion-fix.patch \
- file://verify-fix-broken-logic-for-ghost-avoidance-Mark-Hat.patch \
file://rpm-hardlink-segfault-fix.patch \
file://rpm-payload-use-hashed-inode.patch \
file://rpm-fix-logio-cp.patch \
+ file://0001-using-poptParseArgvString-to-parse-the-_gpg_check_pa.patch \
+ file://rpm-opendb-before-verifyscript-to-avoid-null-point.patch \
+ file://0001-define-EM_AARCH64.patch \
+ file://rpm-rpmfc.c-fix-for-N32-MIPS64.patch \
+ file://rpm-lib-transaction.c-fix-file-conflicts-for-mips64-N32.patch \
+ file://rpm-mongodb-sasl.patch \
+ file://rpm-fix-parseEmbedded.patch \
+ file://rpm-rpmio-headers.patch \
+ file://rpm-python-restore-origin.patch \
+ file://rpm-keccak-sse-intrin.patch \
+ file://rpm-atomic-ops.patch \
+ file://rpm-gnu-atomic.patch \
+ file://rpm-tagname-type.patch \
+ file://rpm-python-tagname.patch \
+ file://rpm-python-AddErase.patch \
+ file://rpm-rpmpgp-popt.patch \
+"
+
+# OE specific changes
+SRC_URI += " \
+ file://rpm-log-auto-rm.patch \
+ file://rpm-db-reduce.patch \
+ file://rpm-autogen.patch \
+ file://rpm-showrc.patch \
+ file://rpm-fileclass.patch \
+ file://rpm-scriptletexechelper.patch \
+ file://rpmdeps-oecore.patch \
+ file://rpm-no-perl-urpm.patch \
+ file://rpm-macros.patch \
+ file://rpm-lua.patch \
+ file://rpm-ossp-uuid.patch \
+ file://rpm-uuid-include.patch \
+ file://rpm-pkgconfigdeps.patch \
+ file://no-ldflags-in-pkgconfig.patch \
+ file://dbconvert.patch \
+ file://rpm-db_buffer_small.patch \
+ file://rpm-py-init.patch \
+ file://rpm-reloc-macros.patch \
file://rpm-db5-or-db6.patch \
- file://rpm-disable-Wno-override-init.patch \
+ file://rpm-db60.patch \
file://rpmqv_cc_b_gone.patch \
file://rpm-realpath.patch \
- file://0001-using-poptParseArgvString-to-parse-the-_gpg_check_pa.patch \
- file://no-ldflags-in-pkgconfig.patch \
- file://rpm-lua-fix-print.patch \
file://rpm-check-rootpath-reasonableness.patch \
file://rpm-macros.in-disable-external-key-server.patch \
- file://rpm-opendb-before-verifyscript-to-avoid-null-point.patch \
file://configure.ac-check-for-both-gpg2-and-gpg.patch \
- file://0001-define-EM_AARCH64.patch \
- file://rpm-rpmfc.c-fix-for-N32-MIPS64.patch \
- file://rpm-lib-transaction.c-fix-file-conflicts-for-mips64-N32.patch \
+ file://rpm-disable-auto-stack-protector.patch \
+ file://popt-disable-auto-stack-protector.patch \
+ file://rpm-syck-fix-gram.patch \
+ file://rpm-rpmdb-grammar.patch \
+ file://rpm-disable-blaketest.patch \
"
SRC_URI_append_libc-musl = "\
@@ -113,9 +157,6 @@ SRC_URI_append_libc-musl = "\
# to process certain package feeds.
#SRC_URI += "file://rpm-debug-platform.patch"
-SRC_URI[md5sum] = "25093d399a0b5d1342d24900a91b347d"
-SRC_URI[sha256sum] = "676e3ab41f72e3b504e04109cfb565a300742f56a7da084f202013b30eeae467"
-
UPSTREAM_CHECK_REGEX = "rpm-(?P<pver>(\d+[\.\-_]*)+)-.*$"
inherit autotools gettext
@@ -134,7 +175,13 @@ rpm_macros_class-nativesdk = "%{_usrlibrpm}/macros:%{_usrlibrpm}/${DISTRO}/macro
# Note: perl and sqlite w/o db specified does not currently work.
# tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
-PACKAGECONFIG ??= "db bzip2 zlib beecrypt openssl libelf python"
+PACKAGECONFIG ??= "db bzip2 zlib popt openssl libelf python"
+
+# Note: switching to internal popt may not work, as it will generate
+# a shared library which will intentionally not be packaged.
+#
+# If you intend to use the internal version, additional work may be required.
+PACKAGECONFIG[popt] = "--with-popt=external,--with-popt=internal,popt,"
PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
@@ -195,7 +242,6 @@ EXTRA_OECONF += "--verbose \
--with-uuid \
--with-attr \
--with-acl \
- --with-popt=external \
--with-pthreads \
--without-cudf \
--without-ficl \
@@ -207,6 +253,7 @@ EXTRA_OECONF += "--verbose \
--without-gpsee \
--without-ruby \
--without-squirrel \
+ --without-sasl2 \
--with-build-extlibdep \
--with-build-maxextlibdep \
--without-valgrind \
@@ -351,7 +398,7 @@ RDEPENDS_${PN}_class-native = ""
RDEPENDS_${PN}_class-nativesdk = ""
RDEPENDS_${PN}-build = "file bash perl"
-RDEPENDS_python-rpm = "${PN}"
+RDEPENDS_python-rpm = "${PN} python"
FILES_python-rpm = "${libdir}/python*/site-packages/rpm"
PROVIDES += "python-rpm"
@@ -408,6 +455,9 @@ do_configure() {
}
do_install_append() {
+ # Preserve the previous default of DSA self-signed pkgs
+ sed -i -e 's,%_build_sign.*,%_build_sign DSA,' ${D}/${libdir}/rpm/macros.rpmbuild
+
sed -i -e 's,%__scriptlet_requires,#%%__scriptlet_requires,' ${D}/${libdir}/rpm/macros
sed -i -e 's,%__perl_provides,#%%__perl_provides,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
sed -i -e 's,%__perl_requires,#%%__perl_requires,' ${D}/${libdir}/rpm/macros ${D}/${libdir}/rpm/macros.d/*
@@ -517,6 +567,14 @@ EOF
${@multilib_rpmmacros(d)}
}
+do_install_append_class-native () {
+ sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env nativepython|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
+}
+
+do_install_append_class-nativesdk () {
+ sed -i -e 's|^#!.*/usr/bin/python|#! /usr/bin/env python|' ${D}/${libdir}/python2.7/site-packages/rpm/transaction.py
+}
+
def multilib_rpmmacros(d):
localdata = d.createCopy()
# We need to clear the TOOLCHAIN_OPTIONS (--sysroot)