diff options
10 files changed, 876 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch new file mode 100644 index 0000000000..b877870411 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | Upstream-Status: Inappropriate [OE-Specific] | ||
| 2 | |||
| 3 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 4 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 5 | |||
| 6 | diff --git a/python/rpmmodule.c b/python/rpmmodule.c | ||
| 7 | index a4fe217..728c66c 100644 | ||
| 8 | --- a/python/rpmmodule.c | ||
| 9 | +++ b/python/rpmmodule.c | ||
| 10 | @@ -396,6 +396,10 @@ static int initModule(PyObject *m) | ||
| 11 | REGISTER_ENUM(RPMSENSE_STRONG); | ||
| 12 | REGISTER_ENUM(RPMSENSE_CONFIG); | ||
| 13 | |||
| 14 | +#if defined(RPM_VENDOR_OE) | ||
| 15 | + REGISTER_ENUM(RPMSENSE_MISSINGOK); | ||
| 16 | +#endif | ||
| 17 | + | ||
| 18 | REGISTER_ENUM(RPMTRANS_FLAG_TEST); | ||
| 19 | REGISTER_ENUM(RPMTRANS_FLAG_BUILD_PROBS); | ||
| 20 | REGISTER_ENUM(RPMTRANS_FLAG_NOSCRIPTS); | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch new file mode 100644 index 0000000000..7a646de373 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | Upstream-Status: Pending | ||
| 2 | |||
| 3 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 4 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 5 | |||
| 6 | |||
| 7 | Index: rpm-4.11.2/build/pack.c | ||
| 8 | =================================================================== | ||
| 9 | --- rpm-4.11.2.orig/build/pack.c | ||
| 10 | +++ rpm-4.11.2/build/pack.c | ||
| 11 | @@ -571,9 +571,9 @@ rpmRC packageBinaries(rpmSpec spec, cons | ||
| 12 | headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16); | ||
| 13 | } | ||
| 14 | |||
| 15 | - if (cheating) { | ||
| 16 | - (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1"); | ||
| 17 | - } | ||
| 18 | +// if (cheating) { | ||
| 19 | +// (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1"); | ||
| 20 | +// } | ||
| 21 | |||
| 22 | { char *binFormat = rpmGetPath("%{_rpmfilename}", NULL); | ||
| 23 | char *binRpm, *binDir; | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch new file mode 100644 index 0000000000..be0626c8b3 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | Upstream-Status: Inappropriate [OE-Core specific] | ||
| 2 | |||
| 3 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 4 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 5 | |||
| 6 | |||
| 7 | diff --git a/installplatform b/installplatform | ||
| 8 | index 8c3eba0..fa15e91 100755 | ||
| 9 | --- a/installplatform | ||
| 10 | +++ b/installplatform | ||
| 11 | @@ -112,7 +112,7 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do | ||
| 12 | [ -z "$CANONARCH" ] && continue | ||
| 13 | |||
| 14 | if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then | ||
| 15 | - LIB=${LIB}64 | ||
| 16 | + LIB=${LIB} | ||
| 17 | fi | ||
| 18 | |||
| 19 | PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}" | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh b/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh new file mode 100755 index 0000000000..083b174f17 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | [ $# -ge 1 ] || { | ||
| 4 | cat > /dev/null | ||
| 5 | exit 0 | ||
| 6 | } | ||
| 7 | |||
| 8 | case $1 in | ||
| 9 | -R|--requires) | ||
| 10 | shift | ||
| 11 | grep "/usr/\(lib[^/]*\|share\)/python[^/]*/" >/dev/null && echo "python" | ||
| 12 | exit 0 | ||
| 13 | ;; | ||
| 14 | esac | ||
| 15 | |||
| 16 | exit 0 | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch new file mode 100644 index 0000000000..2640e54b5b --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | |||
| 2 | Disable configuring the db3 directory since we will be using the | ||
| 3 | external DB provided as part of OE-Core already, no need to have | ||
| 4 | duplicate database code. | ||
| 5 | |||
| 6 | Upstream-Status: Inappropriate [OE-Core Specific] | ||
| 7 | |||
| 8 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 9 | |||
| 10 | Index: rpm-4.11.2/configure.ac | ||
| 11 | =================================================================== | ||
| 12 | --- rpm-4.11.2.orig/configure.ac | ||
| 13 | +++ rpm-4.11.2/configure.ac | ||
| 14 | @@ -825,9 +825,9 @@ AC_SUBST(RPMCONFIGDIR) | ||
| 15 | |||
| 16 | AC_SUBST(OBJDUMP) | ||
| 17 | |||
| 18 | -if test "$with_external_db" = no; then | ||
| 19 | - AC_CONFIG_SUBDIRS(db3) | ||
| 20 | -fi | ||
| 21 | +#if test "$with_external_db" = no; then | ||
| 22 | +# AC_CONFIG_SUBDIRS(db3) | ||
| 23 | +#fi | ||
| 24 | |||
| 25 | AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no]) | ||
| 26 | AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no]) | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch new file mode 100644 index 0000000000..f1ecab7b0e --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | Upstream-Status: Pending | ||
| 2 | |||
| 3 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 4 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 5 | |||
| 6 | |||
| 7 | Index: rpm-4.11.2/build/files.c | ||
| 8 | =================================================================== | ||
| 9 | --- rpm-4.11.2.orig/build/files.c | ||
| 10 | +++ rpm-4.11.2/build/files.c | ||
| 11 | @@ -1321,12 +1321,6 @@ static rpmRC addFile(FileList fl, const | ||
| 12 | } | ||
| 13 | } | ||
| 14 | |||
| 15 | - /* Error out when a non-directory is specified as one in spec */ | ||
| 16 | - if (fl->cur.isDir && (statp == &statbuf) && !S_ISDIR(statp->st_mode)) { | ||
| 17 | - rpmlog(RPMLOG_ERR, _("Not a directory: %s\n"), diskPath); | ||
| 18 | - goto exit; | ||
| 19 | - } | ||
| 20 | - | ||
| 21 | /* Don't recurse into explicit %dir, don't double-recurse from fts */ | ||
| 22 | if ((fl->cur.isDir != 1) && (statp == &statbuf) && S_ISDIR(statp->st_mode)) { | ||
| 23 | return recurseDir(fl, diskPath); | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch new file mode 100644 index 0000000000..9333dea441 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch | |||
| @@ -0,0 +1,194 @@ | |||
| 1 | Upstream-Status: Inappropriate [OE-Core] | ||
| 2 | |||
| 3 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 4 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 5 | |||
| 6 | |||
| 7 | Index: rpm-4.11.2/lib/psm.c | ||
| 8 | =================================================================== | ||
| 9 | --- rpm-4.11.2.orig/lib/psm.c | ||
| 10 | +++ rpm-4.11.2/lib/psm.c | ||
| 11 | @@ -421,7 +421,8 @@ static rpmRC runScript(rpmpsm psm, ARGV_ | ||
| 12 | |||
| 13 | rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0); | ||
| 14 | rc = rpmScriptRun(script, arg1, arg2, sfd, | ||
| 15 | - prefixes, warn_only, selinux); | ||
| 16 | + prefixes, warn_only, selinux, rpmtsRootDir(psm->ts) ); | ||
| 17 | + | ||
| 18 | rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0); | ||
| 19 | |||
| 20 | /* Map warn-only errors to "notfound" for script stop callback */ | ||
| 21 | @@ -958,15 +959,49 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg | ||
| 22 | case PSM_DESTROY: | ||
| 23 | break; | ||
| 24 | case PSM_SCRIPT: /* Run current package scriptlets. */ | ||
| 25 | +#ifdef RPM_VENDOR_OE | ||
| 26 | + { | ||
| 27 | + const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL); | ||
| 28 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 29 | + (void) rpmChrootOut(); | ||
| 30 | +#endif | ||
| 31 | + | ||
| 32 | rc = runInstScript(psm); | ||
| 33 | +#ifdef RPM_VENDOR_OE | ||
| 34 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 35 | + (void) rpmChrootIn(); | ||
| 36 | + } | ||
| 37 | +#endif | ||
| 38 | break; | ||
| 39 | case PSM_TRIGGERS: | ||
| 40 | /* Run triggers in other package(s) this package sets off. */ | ||
| 41 | +#ifdef RPM_VENDOR_OE | ||
| 42 | + { | ||
| 43 | + const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL); | ||
| 44 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 45 | + (void) rpmChrootOut(); | ||
| 46 | +#endif | ||
| 47 | rc = runTriggers(psm); | ||
| 48 | +#ifdef RPM_VENDOR_OE | ||
| 49 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 50 | + (void) rpmChrootIn(); | ||
| 51 | + } | ||
| 52 | +#endif | ||
| 53 | break; | ||
| 54 | case PSM_IMMED_TRIGGERS: | ||
| 55 | /* Run triggers in this package other package(s) set off. */ | ||
| 56 | +#ifdef RPM_VENDOR_OE | ||
| 57 | + { | ||
| 58 | + const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL); | ||
| 59 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 60 | + (void) rpmChrootOut(); | ||
| 61 | +#endif | ||
| 62 | rc = runImmedTriggers(psm); | ||
| 63 | +#ifdef RPM_VENDOR_OE | ||
| 64 | + if (scriptletWrapper && *scriptletWrapper) | ||
| 65 | + (void) rpmChrootIn(); | ||
| 66 | + } | ||
| 67 | +#endif | ||
| 68 | break; | ||
| 69 | |||
| 70 | case PSM_RPMDB_ADD: { | ||
| 71 | Index: rpm-4.11.2/lib/rpmscript.c | ||
| 72 | =================================================================== | ||
| 73 | --- rpm-4.11.2.orig/lib/rpmscript.c | ||
| 74 | +++ rpm-4.11.2/lib/rpmscript.c | ||
| 75 | @@ -92,7 +92,7 @@ static rpmRC runLuaScript(int selinux, A | ||
| 76 | static const char * const SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin"; | ||
| 77 | |||
| 78 | static void doScriptExec(int selinux, ARGV_const_t argv, ARGV_const_t prefixes, | ||
| 79 | - FD_t scriptFd, FD_t out) | ||
| 80 | + FD_t scriptFd, FD_t out, char * rootDir ) | ||
| 81 | { | ||
| 82 | int pipes[2]; | ||
| 83 | int flag; | ||
| 84 | @@ -158,13 +158,12 @@ static void doScriptExec(int selinux, AR | ||
| 85 | setenv("RPM_INSTALL_PREFIX", *pf, 1); | ||
| 86 | } | ||
| 87 | } | ||
| 88 | - | ||
| 89 | - if (chdir("/") == 0) { | ||
| 90 | + if (chdir(rootDir) == 0) { | ||
| 91 | /* XXX Don't mtrace into children. */ | ||
| 92 | unsetenv("MALLOC_CHECK_"); | ||
| 93 | |||
| 94 | /* Permit libselinux to do the scriptlet exec. */ | ||
| 95 | - if (selinux == 1) { | ||
| 96 | + if (selinux == 1) { | ||
| 97 | xx = rpm_execcon(0, argv[0], argv, environ); | ||
| 98 | } | ||
| 99 | |||
| 100 | @@ -175,12 +174,12 @@ static void doScriptExec(int selinux, AR | ||
| 101 | _exit(127); /* exit 127 for compatibility with bash(1) */ | ||
| 102 | } | ||
| 103 | |||
| 104 | -static char * writeScript(const char *cmd, const char *script) | ||
| 105 | +static char * writeScript(const char *cmd, const char *script, char * rootDir) | ||
| 106 | { | ||
| 107 | char *fn = NULL; | ||
| 108 | size_t slen = strlen(script); | ||
| 109 | int ok = 0; | ||
| 110 | - FD_t fd = rpmMkTempFile("/", &fn); | ||
| 111 | + FD_t fd = rpmMkTempFile(rootDir, &fn); | ||
| 112 | |||
| 113 | if (Ferror(fd)) | ||
| 114 | goto exit; | ||
| 115 | @@ -204,7 +203,7 @@ exit: | ||
| 116 | */ | ||
| 117 | static rpmRC runExtScript(int selinux, ARGV_const_t prefixes, | ||
| 118 | const char *sname, rpmlogLvl lvl, FD_t scriptFd, | ||
| 119 | - ARGV_t * argvp, const char *script, int arg1, int arg2) | ||
| 120 | + ARGV_t * argvp, const char *script, int arg1, int arg2,char * rootDir) | ||
| 121 | { | ||
| 122 | FD_t out = NULL; | ||
| 123 | char * fn = NULL; | ||
| 124 | @@ -215,7 +214,7 @@ static rpmRC runExtScript(int selinux, A | ||
| 125 | rpmlog(RPMLOG_DEBUG, "%s: scriptlet start\n", sname); | ||
| 126 | |||
| 127 | if (script) { | ||
| 128 | - fn = writeScript(*argvp[0], script); | ||
| 129 | + fn = writeScript(*argvp[0], script, rootDir); | ||
| 130 | if (fn == NULL) { | ||
| 131 | rpmlog(RPMLOG_ERR, | ||
| 132 | _("Couldn't create temporary file for %s: %s\n"), | ||
| 133 | @@ -258,7 +257,7 @@ static rpmRC runExtScript(int selinux, A | ||
| 134 | } else if (pid == 0) {/* Child */ | ||
| 135 | rpmlog(RPMLOG_DEBUG, "%s: execv(%s) pid %d\n", | ||
| 136 | sname, *argvp[0], (unsigned)getpid()); | ||
| 137 | - doScriptExec(selinux, *argvp, prefixes, scriptFd, out); | ||
| 138 | + doScriptExec(selinux, *argvp, prefixes, scriptFd, out, rootDir); | ||
| 139 | } | ||
| 140 | |||
| 141 | do { | ||
| 142 | @@ -297,13 +296,27 @@ exit: | ||
| 143 | } | ||
| 144 | |||
| 145 | rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd, | ||
| 146 | - ARGV_const_t prefixes, int warn_only, int selinux) | ||
| 147 | + ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir) | ||
| 148 | { | ||
| 149 | ARGV_t args = NULL; | ||
| 150 | rpmlogLvl lvl = warn_only ? RPMLOG_WARNING : RPMLOG_ERR; | ||
| 151 | rpmRC rc; | ||
| 152 | - | ||
| 153 | - if (script == NULL) return RPMRC_OK; | ||
| 154 | +#ifdef RPM_VENDOR_OE | ||
| 155 | + const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL); | ||
| 156 | +#endif | ||
| 157 | + | ||
| 158 | + if (script == NULL) return RPMRC_OK; | ||
| 159 | +#ifdef RPM_VENDOR_OE | ||
| 160 | + if (scriptletWrapper && *scriptletWrapper) { | ||
| 161 | + argvAdd(&args, scriptletWrapper); | ||
| 162 | + | ||
| 163 | + if ( rootDir ) { | ||
| 164 | + argvAdd(&args, rootDir); | ||
| 165 | + } else { | ||
| 166 | + argvAdd(&args, "/"); | ||
| 167 | + } | ||
| 168 | + } | ||
| 169 | +#endif | ||
| 170 | |||
| 171 | /* construct a new argv as we can't modify the one from header */ | ||
| 172 | if (script->args) { | ||
| 173 | @@ -315,7 +328,7 @@ rpmRC rpmScriptRun(rpmScript script, int | ||
| 174 | if (rstreq(args[0], "<lua>")) { | ||
| 175 | rc = runLuaScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2); | ||
| 176 | } else { | ||
| 177 | - rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2); | ||
| 178 | + rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, rootDir); | ||
| 179 | } | ||
| 180 | argvFree(args); | ||
| 181 | |||
| 182 | Index: rpm-4.11.2/lib/rpmscript.h | ||
| 183 | =================================================================== | ||
| 184 | --- rpm-4.11.2.orig/lib/rpmscript.h | ||
| 185 | +++ rpm-4.11.2/lib/rpmscript.h | ||
| 186 | @@ -29,7 +29,7 @@ rpmScript rpmScriptFree(rpmScript script | ||
| 187 | |||
| 188 | RPM_GNUC_INTERNAL | ||
| 189 | rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd, | ||
| 190 | - ARGV_const_t prefixes, int warn_only, int selinux); | ||
| 191 | + ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir); | ||
| 192 | |||
| 193 | RPM_GNUC_INTERNAL | ||
| 194 | rpmTagVal rpmScriptTag(rpmScript script); | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch new file mode 100644 index 0000000000..3da608573a --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch | |||
| @@ -0,0 +1,384 @@ | |||
| 1 | |||
| 2 | Upstream-Status: Pending | ||
| 3 | |||
| 4 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 5 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 6 | |||
| 7 | diff --git a/build/pack.c b/build/pack.c | ||
| 8 | index b6b2bea..5c3d8df 100644 | ||
| 9 | --- a/build/pack.c | ||
| 10 | +++ b/build/pack.c | ||
| 11 | @@ -273,8 +273,10 @@ static rpmTagVal depevrtags[] = { | ||
| 12 | RPMTAG_CONFLICTVERSION, | ||
| 13 | RPMTAG_ORDERVERSION, | ||
| 14 | RPMTAG_TRIGGERVERSION, | ||
| 15 | - RPMTAG_SUGGESTSVERSION, | ||
| 16 | - RPMTAG_ENHANCESVERSION, | ||
| 17 | + RPMTAG_SUGGESTVERSION, | ||
| 18 | + RPMTAG_ENHANCEVERSION, | ||
| 19 | + RPMTAG_RECOMMENDVERSION, | ||
| 20 | + RPMTAG_SUPPLEMENTVERSION, | ||
| 21 | 0 | ||
| 22 | }; | ||
| 23 | |||
| 24 | diff --git a/build/parsePreamble.c b/build/parsePreamble.c | ||
| 25 | index 5772bef..cbbbee3 100644 | ||
| 26 | --- a/build/parsePreamble.c | ||
| 27 | +++ b/build/parsePreamble.c | ||
| 28 | @@ -821,6 +821,10 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, | ||
| 29 | } | ||
| 30 | /* fallthrough */ | ||
| 31 | case RPMTAG_PREREQ: | ||
| 32 | + case RPMTAG_RECOMMENDFLAGS: | ||
| 33 | + case RPMTAG_SUGGESTFLAGS: | ||
| 34 | + case RPMTAG_SUPPLEMENTFLAGS: | ||
| 35 | + case RPMTAG_ENHANCEFLAGS: | ||
| 36 | case RPMTAG_CONFLICTFLAGS: | ||
| 37 | case RPMTAG_OBSOLETEFLAGS: | ||
| 38 | case RPMTAG_PROVIDEFLAGS: | ||
| 39 | @@ -922,6 +926,10 @@ static struct PreambleRec_s const preambleList[] = { | ||
| 40 | {RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")}, | ||
| 41 | {RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")}, | ||
| 42 | {RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")}, | ||
| 43 | + {RPMTAG_RECOMMENDFLAGS, 0, 0, LEN_AND_STR("recommends")}, | ||
| 44 | + {RPMTAG_SUGGESTFLAGS, 0, 0, LEN_AND_STR("suggests")}, | ||
| 45 | + {RPMTAG_SUPPLEMENTFLAGS, 0, 0, LEN_AND_STR("supplements")}, | ||
| 46 | + {RPMTAG_ENHANCEFLAGS, 0, 0, LEN_AND_STR("enhances")}, | ||
| 47 | {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")}, | ||
| 48 | {RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")}, | ||
| 49 | {RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")}, | ||
| 50 | diff --git a/build/parseReqs.c b/build/parseReqs.c | ||
| 51 | index ba080a1..1427111 100644 | ||
| 52 | --- a/build/parseReqs.c | ||
| 53 | +++ b/build/parseReqs.c | ||
| 54 | @@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTagVal tagN, | ||
| 55 | nametag = RPMTAG_REQUIRENAME; | ||
| 56 | tagflags |= RPMSENSE_ANY; | ||
| 57 | break; | ||
| 58 | + case RPMTAG_RECOMMENDFLAGS: | ||
| 59 | + nametag = RPMTAG_RECOMMENDNAME; | ||
| 60 | + break; | ||
| 61 | + case RPMTAG_SUGGESTFLAGS: | ||
| 62 | + nametag = RPMTAG_SUGGESTNAME; | ||
| 63 | + break; | ||
| 64 | + case RPMTAG_SUPPLEMENTFLAGS: | ||
| 65 | + nametag = RPMTAG_SUPPLEMENTNAME; | ||
| 66 | + break; | ||
| 67 | + case RPMTAG_ENHANCEFLAGS: | ||
| 68 | + nametag = RPMTAG_ENHANCENAME; | ||
| 69 | + break; | ||
| 70 | case RPMTAG_PROVIDEFLAGS: | ||
| 71 | nametag = RPMTAG_PROVIDENAME; | ||
| 72 | break; | ||
| 73 | diff --git a/build/reqprov.c b/build/reqprov.c | ||
| 74 | index a368f42..c270af6 100644 | ||
| 75 | --- a/build/reqprov.c | ||
| 76 | +++ b/build/reqprov.c | ||
| 77 | @@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal tagN, | ||
| 78 | extra = Flags & RPMSENSE_TRIGGER; | ||
| 79 | dsp = &pkg->triggers; | ||
| 80 | break; | ||
| 81 | + case RPMTAG_RECOMMENDNAME: | ||
| 82 | + versiontag = RPMTAG_RECOMMENDVERSION; | ||
| 83 | + flagtag = RPMTAG_RECOMMENDFLAGS; | ||
| 84 | + extra = Flags & _ALL_REQUIRES_MASK; | ||
| 85 | + dsp = &pkg->recommends; | ||
| 86 | + break; | ||
| 87 | + case RPMTAG_SUGGESTNAME: | ||
| 88 | + versiontag = RPMTAG_SUGGESTVERSION; | ||
| 89 | + flagtag = RPMTAG_SUGGESTFLAGS; | ||
| 90 | + extra = Flags & _ALL_REQUIRES_MASK; | ||
| 91 | + dsp = &pkg->suggests; | ||
| 92 | + break; | ||
| 93 | + case RPMTAG_SUPPLEMENTNAME: | ||
| 94 | + versiontag = RPMTAG_SUPPLEMENTVERSION; | ||
| 95 | + flagtag = RPMTAG_SUPPLEMENTFLAGS; | ||
| 96 | + extra = Flags & _ALL_REQUIRES_MASK; | ||
| 97 | + dsp = &pkg->supplements; | ||
| 98 | + break; | ||
| 99 | + case RPMTAG_ENHANCENAME: | ||
| 100 | + versiontag = RPMTAG_ENHANCEVERSION; | ||
| 101 | + flagtag = RPMTAG_ENHANCEFLAGS; | ||
| 102 | + extra = Flags & _ALL_REQUIRES_MASK; | ||
| 103 | + dsp = &pkg->enhances; | ||
| 104 | + break; | ||
| 105 | case RPMTAG_REQUIRENAME: | ||
| 106 | default: | ||
| 107 | tagN = RPMTAG_REQUIRENAME; | ||
| 108 | diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h | ||
| 109 | index a9e4c7c..0a1977f 100644 | ||
| 110 | --- a/build/rpmbuild_internal.h | ||
| 111 | +++ b/build/rpmbuild_internal.h | ||
| 112 | @@ -93,6 +93,10 @@ struct Package_s { | ||
| 113 | rpmds ds; /*!< Requires: N = EVR */ | ||
| 114 | rpmds requires; | ||
| 115 | rpmds provides; | ||
| 116 | + rpmds recommends; | ||
| 117 | + rpmds suggests; | ||
| 118 | + rpmds supplements; | ||
| 119 | + rpmds enhances; | ||
| 120 | rpmds conflicts; | ||
| 121 | rpmds obsoletes; | ||
| 122 | rpmds triggers; | ||
| 123 | diff --git a/build/spec.c b/build/spec.c | ||
| 124 | index 703ec78..7ae2120 100644 | ||
| 125 | --- a/build/spec.c | ||
| 126 | +++ b/build/spec.c | ||
| 127 | @@ -139,6 +139,11 @@ static Package freePackage(Package pkg) | ||
| 128 | pkg->ds = rpmdsFree(pkg->ds); | ||
| 129 | pkg->requires = rpmdsFree(pkg->requires); | ||
| 130 | pkg->provides = rpmdsFree(pkg->provides); | ||
| 131 | + pkg->recommends = rpmdsFree(pkg->recommends); | ||
| 132 | + pkg->suggests = rpmdsFree(pkg->suggests); | ||
| 133 | + pkg->supplements = rpmdsFree(pkg->supplements); | ||
| 134 | + pkg->enhances = rpmdsFree(pkg->enhances); | ||
| 135 | + | ||
| 136 | pkg->conflicts = rpmdsFree(pkg->conflicts); | ||
| 137 | pkg->obsoletes = rpmdsFree(pkg->obsoletes); | ||
| 138 | pkg->triggers = rpmdsFree(pkg->triggers); | ||
| 139 | diff --git a/lib/rpmds.c b/lib/rpmds.c | ||
| 140 | index 7a51167..1e5dda0 100644 | ||
| 141 | --- a/lib/rpmds.c | ||
| 142 | +++ b/lib/rpmds.c | ||
| 143 | @@ -52,6 +52,22 @@ static int dsType(rpmTagVal tag, | ||
| 144 | t = "Requires"; | ||
| 145 | evr = RPMTAG_REQUIREVERSION; | ||
| 146 | f = RPMTAG_REQUIREFLAGS; | ||
| 147 | + } else if (tag == RPMTAG_SUPPLEMENTNAME) { | ||
| 148 | + t = "Supplements"; | ||
| 149 | + evr = RPMTAG_SUPPLEMENTVERSION; | ||
| 150 | + f = RPMTAG_SUPPLEMENTFLAGS; | ||
| 151 | + } else if (tag == RPMTAG_ENHANCENAME) { | ||
| 152 | + t = "Enhances"; | ||
| 153 | + evr = RPMTAG_ENHANCEVERSION; | ||
| 154 | + f = RPMTAG_ENHANCEFLAGS; | ||
| 155 | + } else if (tag == RPMTAG_RECOMMENDNAME) { | ||
| 156 | + t = "Recommends"; | ||
| 157 | + evr = RPMTAG_RECOMMENDVERSION; | ||
| 158 | + f = RPMTAG_RECOMMENDFLAGS; | ||
| 159 | + } else if (tag == RPMTAG_SUGGESTNAME) { | ||
| 160 | + t = "Suggests"; | ||
| 161 | + evr = RPMTAG_SUGGESTVERSION; | ||
| 162 | + f = RPMTAG_SUGGESTFLAGS; | ||
| 163 | } else if (tag == RPMTAG_CONFLICTNAME) { | ||
| 164 | t = "Conflicts"; | ||
| 165 | evr = RPMTAG_CONFLICTVERSION; | ||
| 166 | diff --git a/lib/rpmtag.h b/lib/rpmtag.h | ||
| 167 | index 64b03f1..b943229 100644 | ||
| 168 | --- a/lib/rpmtag.h | ||
| 169 | +++ b/lib/rpmtag.h | ||
| 170 | @@ -217,14 +217,14 @@ typedef enum rpmTag_e { | ||
| 171 | RPMTAG_PRETRANSPROG = 1153, /* s[] */ | ||
| 172 | RPMTAG_POSTTRANSPROG = 1154, /* s[] */ | ||
| 173 | RPMTAG_DISTTAG = 1155, /* s */ | ||
| 174 | - RPMTAG_SUGGESTSNAME = 1156, /* s[] extension (unimplemented) */ | ||
| 175 | -#define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] (unimplemented) */ | ||
| 176 | - RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension (unimplemented) */ | ||
| 177 | - RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension (unimplemented) */ | ||
| 178 | - RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder (unimplemented) */ | ||
| 179 | -#define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] (unimplemented) */ | ||
| 180 | - RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder (unimplemented) */ | ||
| 181 | - RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder (unimplemented) */ | ||
| 182 | + RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */ | ||
| 183 | +#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */ | ||
| 184 | + RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */ | ||
| 185 | + RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */ | ||
| 186 | + RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */ | ||
| 187 | +#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */ | ||
| 188 | + RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */ | ||
| 189 | + RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */ | ||
| 190 | RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */ | ||
| 191 | RPMTAG_CVSID = 1163, /* s (unimplemented) */ | ||
| 192 | #define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */ | ||
| 193 | @@ -261,6 +261,7 @@ typedef enum rpmTag_e { | ||
| 194 | RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */ | ||
| 195 | RPMTAG_DBINSTANCE = 1195, /* i extension */ | ||
| 196 | RPMTAG_NVRA = 1196, /* s extension */ | ||
| 197 | + | ||
| 198 | /* tags 1997-4999 reserved */ | ||
| 199 | RPMTAG_FILENAMES = 5000, /* s[] extension */ | ||
| 200 | RPMTAG_FILEPROVIDE = 5001, /* s[] extension */ | ||
| 201 | @@ -307,6 +308,26 @@ typedef enum rpmTag_e { | ||
| 202 | RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */ | ||
| 203 | RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */ | ||
| 204 | RPMTAG_FILENLINKS = 5045, /* i[] extension */ | ||
| 205 | + RPMTAG_RECOMMENDNAME = 5046, /* s[] */ | ||
| 206 | +#define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */ | ||
| 207 | + RPMTAG_RECOMMENDVERSION = 5047, /* s[] */ | ||
| 208 | + RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */ | ||
| 209 | + RPMTAG_SUGGESTNAME = 5049, /* s[] */ | ||
| 210 | +#define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */ | ||
| 211 | + RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */ | ||
| 212 | + RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */ | ||
| 213 | + RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */ | ||
| 214 | +#define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */ | ||
| 215 | + RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */ | ||
| 216 | + RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */ | ||
| 217 | + RPMTAG_ENHANCENAME = 5055, /* s[] */ | ||
| 218 | +#define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */ | ||
| 219 | + RPMTAG_ENHANCEVERSION = 5056, /* s[] */ | ||
| 220 | + RPMTAG_ENHANCEFLAGS = 5057, /* i[] */ | ||
| 221 | + RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */ | ||
| 222 | + RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */ | ||
| 223 | + RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */ | ||
| 224 | + RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */ | ||
| 225 | |||
| 226 | RPMTAG_FIRSTFREE_TAG /*!< internal */ | ||
| 227 | } rpmTag; | ||
| 228 | diff --git a/lib/tagexts.c b/lib/tagexts.c | ||
| 229 | index 29b2bae..e940310 100644 | ||
| 230 | --- a/lib/tagexts.c | ||
| 231 | +++ b/lib/tagexts.c | ||
| 232 | @@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 233 | return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME); | ||
| 234 | } | ||
| 235 | |||
| 236 | +static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 237 | +{ | ||
| 238 | + return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME); | ||
| 239 | +} | ||
| 240 | + | ||
| 241 | +static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 242 | +{ | ||
| 243 | + return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME); | ||
| 244 | +} | ||
| 245 | + | ||
| 246 | +static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 247 | +{ | ||
| 248 | + return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME); | ||
| 249 | +} | ||
| 250 | + | ||
| 251 | +static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 252 | +{ | ||
| 253 | + return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME); | ||
| 254 | +} | ||
| 255 | + | ||
| 256 | static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) | ||
| 257 | { | ||
| 258 | return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME); | ||
| 259 | @@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = { | ||
| 260 | { RPMTAG_EPOCHNUM, epochnumTag }, | ||
| 261 | { RPMTAG_INSTFILENAMES, instfilenamesTag }, | ||
| 262 | { RPMTAG_REQUIRENEVRS, requirenevrsTag }, | ||
| 263 | + { RPMTAG_RECOMMENDNEVRS, recommendnevrsTag}, | ||
| 264 | + { RPMTAG_SUGGESTNEVRS, suggestnevrsTag}, | ||
| 265 | + { RPMTAG_SUPPLEMENTNEVRS, supplementnevrsTag}, | ||
| 266 | + { RPMTAG_ENHANCENEVRS, enhancenevrsTag}, | ||
| 267 | { RPMTAG_PROVIDENEVRS, providenevrsTag }, | ||
| 268 | { RPMTAG_OBSOLETENEVRS, obsoletenevrsTag }, | ||
| 269 | { RPMTAG_CONFLICTNEVRS, conflictnevrsTag }, | ||
| 270 | diff --git a/rpmpopt.in b/rpmpopt.in | ||
| 271 | index 805599e..036ab4e 100644 | ||
| 272 | --- a/rpmpopt.in | ||
| 273 | +++ b/rpmpopt.in | ||
| 274 | @@ -67,6 +67,19 @@ rpm alias --requires --qf \ | ||
| 275 | --POPTdesc=$"list capabilities required by package(s)" | ||
| 276 | rpm alias -R --requires | ||
| 277 | |||
| 278 | +rpm alias --recommends --qf \ | ||
| 279 | + "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \ | ||
| 280 | + --POPTdesc=$"list capabilities recommended by package(s)" | ||
| 281 | +rpm alias --suggests --qf \ | ||
| 282 | + "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \ | ||
| 283 | + --POPTdesc=$"list capabilities suggested by package(s)" | ||
| 284 | +rpm alias --supplements --qf \ | ||
| 285 | + "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \ | ||
| 286 | + --POPTdesc=$"list capabilities supplemented by package(s)" | ||
| 287 | +rpm alias --enhances --qf \ | ||
| 288 | + "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \ | ||
| 289 | + --POPTdesc=$"list capabilities enhanced by package(s)" | ||
| 290 | + | ||
| 291 | rpm alias --info --qf '\ | ||
| 292 | Name : %{NAME}\n\ | ||
| 293 | %|EPOCH?{Epoch : %{EPOCH}\n}|\ | ||
| 294 | diff --git a/tests/data/SPECS/deptest.spec b/tests/data/SPECS/deptest.spec | ||
| 295 | index cb4cbbd..7c47f6d 100644 | ||
| 296 | --- a/tests/data/SPECS/deptest.spec | ||
| 297 | +++ b/tests/data/SPECS/deptest.spec | ||
| 298 | @@ -10,6 +10,10 @@ BuildArch: noarch | ||
| 299 | %{?provs:Provides: %{provs}} | ||
| 300 | %{?cfls:Conflicts: %{cfls}} | ||
| 301 | %{?obs:Obsoletes: %{obs}} | ||
| 302 | +%{?recs:Recommends: %{recs}} | ||
| 303 | +%{?sugs:Suggests: %{sugs}} | ||
| 304 | +%{?sups:Supplements: %{sups}} | ||
| 305 | +%{?ens:Enhances: %{ens}} | ||
| 306 | |||
| 307 | %description | ||
| 308 | %{summary} | ||
| 309 | diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at | ||
| 310 | index 6230903..c4c954c 100644 | ||
| 311 | --- a/tests/rpmbuild.at | ||
| 312 | +++ b/tests/rpmbuild.at | ||
| 313 | @@ -185,3 +185,25 @@ lrwxrwxrwx /opt/globtest/linkgood | ||
| 314 | ], | ||
| 315 | []) | ||
| 316 | AT_CLEANUP | ||
| 317 | + | ||
| 318 | +# ------------------------------ | ||
| 319 | +# Check if weak and reverse requires can be built | ||
| 320 | +AT_SETUP([Weak and reverse requires]) | ||
| 321 | +AT_KEYWORDS([build]) | ||
| 322 | +AT_CHECK([ | ||
| 323 | + | ||
| 324 | +runroot rpmbuild -bb --quiet \ | ||
| 325 | + --define "pkg weakdeps" \ | ||
| 326 | + --define "recs foo > 1.2.3" \ | ||
| 327 | + --define "sugs bar >= 0.1.2" \ | ||
| 328 | + --define "sups baz" \ | ||
| 329 | + --define "ens zap = 3" \ | ||
| 330 | + /data/SPECS/deptest.spec | ||
| 331 | + | ||
| 332 | +runroot rpm -qp --qf "[%{supplementname}\n]" /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm | ||
| 333 | +], | ||
| 334 | +[0], | ||
| 335 | +[baz | ||
| 336 | +], | ||
| 337 | +[ignore]) | ||
| 338 | +AT_CLEANUP | ||
| 339 | diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at | ||
| 340 | index 13131e2..80cca63 100644 | ||
| 341 | --- a/tests/rpmgeneral.at | ||
| 342 | +++ b/tests/rpmgeneral.at | ||
| 343 | @@ -79,6 +79,11 @@ DISTTAG | ||
| 344 | DISTURL | ||
| 345 | DSAHEADER | ||
| 346 | E | ||
| 347 | +ENHANCEFLAGS | ||
| 348 | +ENHANCENAME | ||
| 349 | +ENHANCENEVRS | ||
| 350 | +ENHANCES | ||
| 351 | +ENHANCEVERSION | ||
| 352 | EPOCH | ||
| 353 | EPOCHNUM | ||
| 354 | EVR | ||
| 355 | @@ -199,6 +204,11 @@ PROVIDES | ||
| 356 | PROVIDEVERSION | ||
| 357 | PUBKEYS | ||
| 358 | R | ||
| 359 | +RECOMMENDFLAGS | ||
| 360 | +RECOMMENDNAME | ||
| 361 | +RECOMMENDNEVRS | ||
| 362 | +RECOMMENDS | ||
| 363 | +RECOMMENDVERSION | ||
| 364 | RECONTEXTS | ||
| 365 | RELEASE | ||
| 366 | REMOVETID | ||
| 367 | @@ -219,7 +229,17 @@ SOURCE | ||
| 368 | SOURCEPACKAGE | ||
| 369 | SOURCEPKGID | ||
| 370 | SOURCERPM | ||
| 371 | +SUGGESTFLAGS | ||
| 372 | +SUGGESTNAME | ||
| 373 | +SUGGESTNEVRS | ||
| 374 | +SUGGESTS | ||
| 375 | +SUGGESTVERSION | ||
| 376 | SUMMARY | ||
| 377 | +SUPPLEMENTFLAGS | ||
| 378 | +SUPPLEMENTNAME | ||
| 379 | +SUPPLEMENTNEVRS | ||
| 380 | +SUPPLEMENTS | ||
| 381 | +SUPPLEMENTVERSION | ||
| 382 | TRIGGERCONDS | ||
| 383 | TRIGGERFLAGS | ||
| 384 | TRIGGERINDEX | ||
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch new file mode 100644 index 0000000000..8d84cf8a11 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | |||
| 2 | Use pkgconfig to get the correct include paths | ||
| 3 | |||
| 4 | Upstream-Status: Pending | ||
| 5 | |||
| 6 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 7 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> | ||
| 8 | |||
| 9 | diff --git a/configure.ac b/configure.ac | ||
| 10 | index e97f727..8179f44 100644 | ||
| 11 | --- a/configure.ac | ||
| 12 | +++ b/configure.ac | ||
| 13 | @@ -540,10 +540,10 @@ esac], | ||
| 14 | |||
| 15 | AS_IF([test "$enable_python" = yes],[ | ||
| 16 | AM_PATH_PYTHON([2.6],[ | ||
| 17 | - WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'` | ||
| 18 | + WITH_PYTHON_INCLUDE=$(${PKG_CONFIG} --cflags-only-I python) | ||
| 19 | WITH_PYTHON_SUBPACKAGE=1 | ||
| 20 | save_CPPFLAGS="$CPPFLAGS" | ||
| 21 | - CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE" | ||
| 22 | + CPPFLAGS="$CPPFLAGS $WITH_PYTHON_INCLUDE" | ||
| 23 | AC_CHECK_HEADER([Python.h],[], | ||
| 24 | [AC_MSG_ERROR([missing Python.h]) | ||
| 25 | ]) | ||
| 26 | diff --git a/python/Makefile.am b/python/Makefile.am | ||
| 27 | index fff51ae..f37cb9d 100644 | ||
| 28 | --- a/python/Makefile.am | ||
| 29 | +++ b/python/Makefile.am | ||
| 30 | @@ -4,7 +4,7 @@ EXTRA_DIST = rpm/__init__.py rpm/transaction.py | ||
| 31 | |||
| 32 | AM_CPPFLAGS = -I$(top_builddir)/include/ | ||
| 33 | AM_CPPFLAGS += -I$(top_srcdir)/python | ||
| 34 | -AM_CPPFLAGS += -I@WITH_PYTHON_INCLUDE@ | ||
| 35 | +AM_CPPFLAGS += @WITH_PYTHON_INCLUDE@ | ||
| 36 | |||
| 37 | pkgpyexec_LTLIBRARIES = _rpmmodule.la _rpmbmodule.la _rpmsmodule.la | ||
| 38 | pkgpyexec_DATA = rpm/__init__.py rpm/transaction.py | ||
diff --git a/meta/recipes-devtools/rpm/rpm_4.11.2.bb b/meta/recipes-devtools/rpm/rpm_4.11.2.bb new file mode 100644 index 0000000000..86a14fae50 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm_4.11.2.bb | |||
| @@ -0,0 +1,133 @@ | |||
| 1 | SUMMARY = "The RPM package management system" | ||
| 2 | DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \ | ||
| 3 | package management system capable of installing, uninstalling, \ | ||
| 4 | verifying, querying, and updating software packages. Each software \ | ||
| 5 | package consists of an archive of files along with information about \ | ||
| 6 | the package like its version, a description, etc." | ||
| 7 | |||
| 8 | SUMMARY_${PN}-dev = "Development files for manipulating RPM packages" | ||
| 9 | DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \ | ||
| 10 | development files will simplify the process of writing programs that \ | ||
| 11 | manipulate RPM packages and databases. These files are intended to \ | ||
| 12 | simplify the process of creating graphical package managers or any \ | ||
| 13 | other tools that need an intimate knowledge of RPM packages in order \ | ||
| 14 | to function." | ||
| 15 | |||
| 16 | SUMMARY_python-rpm = "Python bindings for apps which will manupulate RPM packages" | ||
| 17 | DESCRIPTION_python-rpm = "The rpm-python package contains a module that permits applications \ | ||
| 18 | written in the Python programming language to use the interface \ | ||
| 19 | supplied by the RPM Package Manager libraries." | ||
| 20 | |||
| 21 | HOMEPAGE = "http://www.rpm.org" | ||
| 22 | LICENSE = "GPL-2.0+" | ||
| 23 | LIC_FILES_CHKSUM ??= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" | ||
| 24 | |||
| 25 | DEPENDS = "db libxml2 xz findutils file popt nss bzip2 elfutils patch attr zlib acl gzip make binutils python" | ||
| 26 | |||
| 27 | SRC_URI += "http://rpm.org/releases/rpm-4.11.x/${BP}.tar.bz2 \ | ||
| 28 | file://use-pkgconfig-for-python.patch \ | ||
| 29 | file://remove-db3-from-configure.patch \ | ||
| 30 | file://add_RPMSENSE_MISSINGOK_to_rpmmodule.patch \ | ||
| 31 | file://support-suggests-tag.patch \ | ||
| 32 | file://remove-dir-check.patch \ | ||
| 33 | file://disable_shortcircuited.patch \ | ||
| 34 | file://fix_libdir.patch \ | ||
| 35 | file://rpm-scriptetexechelp.patch \ | ||
| 36 | file://pythondeps.sh \ | ||
| 37 | " | ||
| 38 | |||
| 39 | SRC_URI[md5sum] = "876ac9948a88367054f8ddb5c0e87173" | ||
| 40 | SRC_URI[sha256sum] = "403f8de632b33846ce5746f429c21a60f40dff9dcb56f1b4118f37a0652a48d4" | ||
| 41 | |||
| 42 | inherit autotools-brokensep | ||
| 43 | inherit pythonnative | ||
| 44 | inherit pkgconfig | ||
| 45 | inherit gettext | ||
| 46 | |||
| 47 | EXTRA_OECONF += "--host=${HOST_SYS} \ | ||
| 48 | --program-prefix= \ | ||
| 49 | --prefix=${prefix} \ | ||
| 50 | --exec-prefix=${prefix} \ | ||
| 51 | --bindir=${prefix}/bin \ | ||
| 52 | --sbindir=${prefix}/sbin \ | ||
| 53 | --sysconfdir=${sysconfdir} \ | ||
| 54 | --datadir=${prefix}/share \ | ||
| 55 | --includedir=${prefix}/include \ | ||
| 56 | --libdir=${prefix}/lib \ | ||
| 57 | --libexecdir=${prefix}/libexec \ | ||
| 58 | --localstatedir=${localstatedir} \ | ||
| 59 | --sharedstatedir=${prefix}/com \ | ||
| 60 | --mandir=${mandir} \ | ||
| 61 | --infodir=${infodir} \ | ||
| 62 | --disable-dependency-tracking \ | ||
| 63 | --with-acl \ | ||
| 64 | --without-lua \ | ||
| 65 | --without-cap \ | ||
| 66 | --enable-shared \ | ||
| 67 | --enable-python \ | ||
| 68 | --with-external-db \ | ||
| 69 | " | ||
| 70 | |||
| 71 | CPPFLAGS_append = " `pkg-config --cflags nss`" | ||
| 72 | LDFLAGS_append = " -Wl,-Bsymbolic-functions -ffunction-sections" | ||
| 73 | CCFLAGS_append = " -fPIC " | ||
| 74 | CXXFLAGS_append = " -fPIC " | ||
| 75 | CFLAGS_append = " -fPIC -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE " | ||
| 76 | |||
| 77 | do_configure_prepend() { | ||
| 78 | rm -rf sqlite | ||
| 79 | rm -f m4/libtool.m4 | ||
| 80 | rm -f m4/lt*.m4 | ||
| 81 | rm -rf db3/configure* | ||
| 82 | } | ||
| 83 | |||
| 84 | do_install_append() { | ||
| 85 | mv ${D}/${base_bindir}/rpm ${D}/${bindir}/ | ||
| 86 | rmdir ${D}/${base_bindir} | ||
| 87 | rm -f ${D}${prefix}/lib/*.la | ||
| 88 | rm -f ${D}${prefix}/lib/rpm-plugins/*.la | ||
| 89 | rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.{a,la} | ||
| 90 | rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.{a,la} | ||
| 91 | rm -fr ${D}/var | ||
| 92 | install -d ${D}${prefix}/lib/rpm/bin | ||
| 93 | ln -s ../debugedit ${D}${prefix}/lib/rpm/bin/debugedit | ||
| 94 | ln -s ../rpmdeps ${D}${prefix}/lib/rpm/bin/rpmdeps-oecore | ||
| 95 | install -m 0755 ${WORKDIR}/pythondeps.sh ${D}/${libdir}/rpm/pythondeps.sh | ||
| 96 | } | ||
| 97 | |||
| 98 | pkg_postinst_${PN}() { | ||
| 99 | |||
| 100 | [ "x\$D" == "x" ] && ldconfig | ||
| 101 | test -f ${localstatedir}/lib/rpm/Packages || rpm --initdb | ||
| 102 | rm -f ${localstatedir}/lib/rpm/Filemd5s \ | ||
| 103 | ${localstatedir}/lib/rpm/Filedigests \ | ||
| 104 | ${localstatedir}/lib/rpm/Requireversion \ | ||
| 105 | ${localstatedir}/lib/rpm/Provideversion | ||
| 106 | |||
| 107 | } | ||
| 108 | |||
| 109 | pkg_postrm_${PN}() { | ||
| 110 | [ "x\$D" == "x" ] && ldconfig | ||
| 111 | |||
| 112 | } | ||
| 113 | |||
| 114 | PACKAGES += "python-${PN}" | ||
| 115 | PROVIDES += "python-rpm" | ||
| 116 | |||
| 117 | FILES_${PN} += "${libdir}/rpm \ | ||
| 118 | ${libdir}/rpm-plugins/exec.so \ | ||
| 119 | " | ||
| 120 | RDEPENDS_${PN} = "base-files run-postinsts" | ||
| 121 | RDEPENDS_${PN}_class-native = "base-files run-postinsts" | ||
| 122 | |||
| 123 | FILES_${PN}-dbg += "${libdir}/rpm/.debug/* \ | ||
| 124 | ${libdir}/rpm-plugins/.debug/* \ | ||
| 125 | ${libdir}/python2.7/site-packages/rpm/.debug/* \ | ||
| 126 | " | ||
| 127 | |||
| 128 | FILES_${PN}-dev += "${libdir}/python2.7/site-packages/rpm/*.la" | ||
| 129 | |||
| 130 | FILES_python-${PN} = "${libdir}/python2.7/site-packages/rpm/*" | ||
| 131 | RDEPENDS_python-${PN} = "${PN} python" | ||
| 132 | |||
| 133 | BBCLASSEXTEND = "native" | ||
