rpm: remove RPM 4

RPM4 support is buggy and incomplete. As we don't have the
resources or interest to maintain it this patch removes it.

(From OE-Core rev: a6e7a86f1635be9a688c56c25e9d215ea4d2cc84)

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock 2016-03-11 14:07:29 +00:00 committed by Richard Purdie
parent a7dd04d15b
commit 1e9de52ca0
10 changed files with 0 additions and 875 deletions

View File

@ -1,20 +0,0 @@
Upstream-Status: Inappropriate [OE-Specific]
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
diff --git a/python/rpmmodule.c b/python/rpmmodule.c
index a4fe217..728c66c 100644
--- a/python/rpmmodule.c
+++ b/python/rpmmodule.c
@@ -396,6 +396,10 @@ static int initModule(PyObject *m)
REGISTER_ENUM(RPMSENSE_STRONG);
REGISTER_ENUM(RPMSENSE_CONFIG);
+#if defined(RPM_VENDOR_OE)
+ REGISTER_ENUM(RPMSENSE_MISSINGOK);
+#endif
+
REGISTER_ENUM(RPMTRANS_FLAG_TEST);
REGISTER_ENUM(RPMTRANS_FLAG_BUILD_PROBS);
REGISTER_ENUM(RPMTRANS_FLAG_NOSCRIPTS);

View File

@ -1,23 +0,0 @@
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
Index: rpm-4.11.2/build/pack.c
===================================================================
--- rpm-4.11.2.orig/build/pack.c
+++ rpm-4.11.2/build/pack.c
@@ -571,9 +571,9 @@ rpmRC packageBinaries(rpmSpec spec, cons
headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
}
- if (cheating) {
- (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
- }
+// if (cheating) {
+// (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
+// }
{ char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
char *binRpm, *binDir;

View File

@ -1,19 +0,0 @@
Upstream-Status: Inappropriate [OE-Core specific]
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
diff --git a/installplatform b/installplatform
index 8c3eba0..fa15e91 100755
--- a/installplatform
+++ b/installplatform
@@ -112,7 +112,7 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
[ -z "$CANONARCH" ] && continue
if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
- LIB=${LIB}64
+ LIB=${LIB}
fi
PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"

View File

@ -1,16 +0,0 @@
#!/bin/sh
[ $# -ge 1 ] || {
cat > /dev/null
exit 0
}
case $1 in
-R|--requires)
shift
grep "/usr/\(lib[^/]*\|share\)/python[^/]*/" >/dev/null && echo "python"
exit 0
;;
esac
exit 0

View File

@ -1,26 +0,0 @@
Disable configuring the db3 directory since we will be using the
external DB provided as part of OE-Core already, no need to have
duplicate database code.
Upstream-Status: Inappropriate [OE-Core Specific]
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Index: rpm-4.11.2/configure.ac
===================================================================
--- rpm-4.11.2.orig/configure.ac
+++ rpm-4.11.2/configure.ac
@@ -825,9 +825,9 @@ AC_SUBST(RPMCONFIGDIR)
AC_SUBST(OBJDUMP)
-if test "$with_external_db" = no; then
- AC_CONFIG_SUBDIRS(db3)
-fi
+#if test "$with_external_db" = no; then
+# AC_CONFIG_SUBDIRS(db3)
+#fi
AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])

View File

@ -1,23 +0,0 @@
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
Index: rpm-4.11.2/build/files.c
===================================================================
--- rpm-4.11.2.orig/build/files.c
+++ rpm-4.11.2/build/files.c
@@ -1321,12 +1321,6 @@ static rpmRC addFile(FileList fl, const
}
}
- /* Error out when a non-directory is specified as one in spec */
- if (fl->cur.isDir && (statp == &statbuf) && !S_ISDIR(statp->st_mode)) {
- rpmlog(RPMLOG_ERR, _("Not a directory: %s\n"), diskPath);
- goto exit;
- }
-
/* Don't recurse into explicit %dir, don't double-recurse from fts */
if ((fl->cur.isDir != 1) && (statp == &statbuf) && S_ISDIR(statp->st_mode)) {
return recurseDir(fl, diskPath);

View File

@ -1,194 +0,0 @@
Upstream-Status: Inappropriate [OE-Core]
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
Index: rpm-4.11.2/lib/psm.c
===================================================================
--- rpm-4.11.2.orig/lib/psm.c
+++ rpm-4.11.2/lib/psm.c
@@ -421,7 +421,8 @@ static rpmRC runScript(rpmpsm psm, ARGV_
rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
rc = rpmScriptRun(script, arg1, arg2, sfd,
- prefixes, warn_only, selinux);
+ prefixes, warn_only, selinux, rpmtsRootDir(psm->ts) );
+
rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
/* Map warn-only errors to "notfound" for script stop callback */
@@ -958,15 +959,49 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
case PSM_DESTROY:
break;
case PSM_SCRIPT: /* Run current package scriptlets. */
+#ifdef RPM_VENDOR_OE
+ {
+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootOut();
+#endif
+
rc = runInstScript(psm);
+#ifdef RPM_VENDOR_OE
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootIn();
+ }
+#endif
break;
case PSM_TRIGGERS:
/* Run triggers in other package(s) this package sets off. */
+#ifdef RPM_VENDOR_OE
+ {
+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootOut();
+#endif
rc = runTriggers(psm);
+#ifdef RPM_VENDOR_OE
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootIn();
+ }
+#endif
break;
case PSM_IMMED_TRIGGERS:
/* Run triggers in this package other package(s) set off. */
+#ifdef RPM_VENDOR_OE
+ {
+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootOut();
+#endif
rc = runImmedTriggers(psm);
+#ifdef RPM_VENDOR_OE
+ if (scriptletWrapper && *scriptletWrapper)
+ (void) rpmChrootIn();
+ }
+#endif
break;
case PSM_RPMDB_ADD: {
Index: rpm-4.11.2/lib/rpmscript.c
===================================================================
--- rpm-4.11.2.orig/lib/rpmscript.c
+++ rpm-4.11.2/lib/rpmscript.c
@@ -92,7 +92,7 @@ static rpmRC runLuaScript(int selinux, A
static const char * const SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin";
static void doScriptExec(int selinux, ARGV_const_t argv, ARGV_const_t prefixes,
- FD_t scriptFd, FD_t out)
+ FD_t scriptFd, FD_t out, char * rootDir )
{
int pipes[2];
int flag;
@@ -158,13 +158,12 @@ static void doScriptExec(int selinux, AR
setenv("RPM_INSTALL_PREFIX", *pf, 1);
}
}
-
- if (chdir("/") == 0) {
+ if (chdir(rootDir) == 0) {
/* XXX Don't mtrace into children. */
unsetenv("MALLOC_CHECK_");
/* Permit libselinux to do the scriptlet exec. */
- if (selinux == 1) {
+ if (selinux == 1) {
xx = rpm_execcon(0, argv[0], argv, environ);
}
@@ -175,12 +174,12 @@ static void doScriptExec(int selinux, AR
_exit(127); /* exit 127 for compatibility with bash(1) */
}
-static char * writeScript(const char *cmd, const char *script)
+static char * writeScript(const char *cmd, const char *script, char * rootDir)
{
char *fn = NULL;
size_t slen = strlen(script);
int ok = 0;
- FD_t fd = rpmMkTempFile("/", &fn);
+ FD_t fd = rpmMkTempFile(rootDir, &fn);
if (Ferror(fd))
goto exit;
@@ -204,7 +203,7 @@ exit:
*/
static rpmRC runExtScript(int selinux, ARGV_const_t prefixes,
const char *sname, rpmlogLvl lvl, FD_t scriptFd,
- ARGV_t * argvp, const char *script, int arg1, int arg2)
+ ARGV_t * argvp, const char *script, int arg1, int arg2,char * rootDir)
{
FD_t out = NULL;
char * fn = NULL;
@@ -215,7 +214,7 @@ static rpmRC runExtScript(int selinux, A
rpmlog(RPMLOG_DEBUG, "%s: scriptlet start\n", sname);
if (script) {
- fn = writeScript(*argvp[0], script);
+ fn = writeScript(*argvp[0], script, rootDir);
if (fn == NULL) {
rpmlog(RPMLOG_ERR,
_("Couldn't create temporary file for %s: %s\n"),
@@ -258,7 +257,7 @@ static rpmRC runExtScript(int selinux, A
} else if (pid == 0) {/* Child */
rpmlog(RPMLOG_DEBUG, "%s: execv(%s) pid %d\n",
sname, *argvp[0], (unsigned)getpid());
- doScriptExec(selinux, *argvp, prefixes, scriptFd, out);
+ doScriptExec(selinux, *argvp, prefixes, scriptFd, out, rootDir);
}
do {
@@ -297,13 +296,27 @@ exit:
}
rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
- ARGV_const_t prefixes, int warn_only, int selinux)
+ ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir)
{
ARGV_t args = NULL;
rpmlogLvl lvl = warn_only ? RPMLOG_WARNING : RPMLOG_ERR;
rpmRC rc;
-
- if (script == NULL) return RPMRC_OK;
+#ifdef RPM_VENDOR_OE
+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
+#endif
+
+ if (script == NULL) return RPMRC_OK;
+#ifdef RPM_VENDOR_OE
+ if (scriptletWrapper && *scriptletWrapper) {
+ argvAdd(&args, scriptletWrapper);
+
+ if ( rootDir ) {
+ argvAdd(&args, rootDir);
+ } else {
+ argvAdd(&args, "/");
+ }
+ }
+#endif
/* construct a new argv as we can't modify the one from header */
if (script->args) {
@@ -315,7 +328,7 @@ rpmRC rpmScriptRun(rpmScript script, int
if (rstreq(args[0], "<lua>")) {
rc = runLuaScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2);
} else {
- rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2);
+ rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, rootDir);
}
argvFree(args);
Index: rpm-4.11.2/lib/rpmscript.h
===================================================================
--- rpm-4.11.2.orig/lib/rpmscript.h
+++ rpm-4.11.2/lib/rpmscript.h
@@ -29,7 +29,7 @@ rpmScript rpmScriptFree(rpmScript script
RPM_GNUC_INTERNAL
rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
- ARGV_const_t prefixes, int warn_only, int selinux);
+ ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir);
RPM_GNUC_INTERNAL
rpmTagVal rpmScriptTag(rpmScript script);

View File

@ -1,384 +0,0 @@
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
diff --git a/build/pack.c b/build/pack.c
index b6b2bea..5c3d8df 100644
--- a/build/pack.c
+++ b/build/pack.c
@@ -273,8 +273,10 @@ static rpmTagVal depevrtags[] = {
RPMTAG_CONFLICTVERSION,
RPMTAG_ORDERVERSION,
RPMTAG_TRIGGERVERSION,
- RPMTAG_SUGGESTSVERSION,
- RPMTAG_ENHANCESVERSION,
+ RPMTAG_SUGGESTVERSION,
+ RPMTAG_ENHANCEVERSION,
+ RPMTAG_RECOMMENDVERSION,
+ RPMTAG_SUPPLEMENTVERSION,
0
};
diff --git a/build/parsePreamble.c b/build/parsePreamble.c
index 5772bef..cbbbee3 100644
--- a/build/parsePreamble.c
+++ b/build/parsePreamble.c
@@ -821,6 +821,10 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
}
/* fallthrough */
case RPMTAG_PREREQ:
+ case RPMTAG_RECOMMENDFLAGS:
+ case RPMTAG_SUGGESTFLAGS:
+ case RPMTAG_SUPPLEMENTFLAGS:
+ case RPMTAG_ENHANCEFLAGS:
case RPMTAG_CONFLICTFLAGS:
case RPMTAG_OBSOLETEFLAGS:
case RPMTAG_PROVIDEFLAGS:
@@ -922,6 +926,10 @@ static struct PreambleRec_s const preambleList[] = {
{RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")},
{RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")},
{RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")},
+ {RPMTAG_RECOMMENDFLAGS, 0, 0, LEN_AND_STR("recommends")},
+ {RPMTAG_SUGGESTFLAGS, 0, 0, LEN_AND_STR("suggests")},
+ {RPMTAG_SUPPLEMENTFLAGS, 0, 0, LEN_AND_STR("supplements")},
+ {RPMTAG_ENHANCEFLAGS, 0, 0, LEN_AND_STR("enhances")},
{RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")},
{RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")},
{RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")},
diff --git a/build/parseReqs.c b/build/parseReqs.c
index ba080a1..1427111 100644
--- a/build/parseReqs.c
+++ b/build/parseReqs.c
@@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTagVal tagN,
nametag = RPMTAG_REQUIRENAME;
tagflags |= RPMSENSE_ANY;
break;
+ case RPMTAG_RECOMMENDFLAGS:
+ nametag = RPMTAG_RECOMMENDNAME;
+ break;
+ case RPMTAG_SUGGESTFLAGS:
+ nametag = RPMTAG_SUGGESTNAME;
+ break;
+ case RPMTAG_SUPPLEMENTFLAGS:
+ nametag = RPMTAG_SUPPLEMENTNAME;
+ break;
+ case RPMTAG_ENHANCEFLAGS:
+ nametag = RPMTAG_ENHANCENAME;
+ break;
case RPMTAG_PROVIDEFLAGS:
nametag = RPMTAG_PROVIDENAME;
break;
diff --git a/build/reqprov.c b/build/reqprov.c
index a368f42..c270af6 100644
--- a/build/reqprov.c
+++ b/build/reqprov.c
@@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal tagN,
extra = Flags & RPMSENSE_TRIGGER;
dsp = &pkg->triggers;
break;
+ case RPMTAG_RECOMMENDNAME:
+ versiontag = RPMTAG_RECOMMENDVERSION;
+ flagtag = RPMTAG_RECOMMENDFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->recommends;
+ break;
+ case RPMTAG_SUGGESTNAME:
+ versiontag = RPMTAG_SUGGESTVERSION;
+ flagtag = RPMTAG_SUGGESTFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->suggests;
+ break;
+ case RPMTAG_SUPPLEMENTNAME:
+ versiontag = RPMTAG_SUPPLEMENTVERSION;
+ flagtag = RPMTAG_SUPPLEMENTFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->supplements;
+ break;
+ case RPMTAG_ENHANCENAME:
+ versiontag = RPMTAG_ENHANCEVERSION;
+ flagtag = RPMTAG_ENHANCEFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->enhances;
+ break;
case RPMTAG_REQUIRENAME:
default:
tagN = RPMTAG_REQUIRENAME;
diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
index a9e4c7c..0a1977f 100644
--- a/build/rpmbuild_internal.h
+++ b/build/rpmbuild_internal.h
@@ -93,6 +93,10 @@ struct Package_s {
rpmds ds; /*!< Requires: N = EVR */
rpmds requires;
rpmds provides;
+ rpmds recommends;
+ rpmds suggests;
+ rpmds supplements;
+ rpmds enhances;
rpmds conflicts;
rpmds obsoletes;
rpmds triggers;
diff --git a/build/spec.c b/build/spec.c
index 703ec78..7ae2120 100644
--- a/build/spec.c
+++ b/build/spec.c
@@ -139,6 +139,11 @@ static Package freePackage(Package pkg)
pkg->ds = rpmdsFree(pkg->ds);
pkg->requires = rpmdsFree(pkg->requires);
pkg->provides = rpmdsFree(pkg->provides);
+ pkg->recommends = rpmdsFree(pkg->recommends);
+ pkg->suggests = rpmdsFree(pkg->suggests);
+ pkg->supplements = rpmdsFree(pkg->supplements);
+ pkg->enhances = rpmdsFree(pkg->enhances);
+
pkg->conflicts = rpmdsFree(pkg->conflicts);
pkg->obsoletes = rpmdsFree(pkg->obsoletes);
pkg->triggers = rpmdsFree(pkg->triggers);
diff --git a/lib/rpmds.c b/lib/rpmds.c
index 7a51167..1e5dda0 100644
--- a/lib/rpmds.c
+++ b/lib/rpmds.c
@@ -52,6 +52,22 @@ static int dsType(rpmTagVal tag,
t = "Requires";
evr = RPMTAG_REQUIREVERSION;
f = RPMTAG_REQUIREFLAGS;
+ } else if (tag == RPMTAG_SUPPLEMENTNAME) {
+ t = "Supplements";
+ evr = RPMTAG_SUPPLEMENTVERSION;
+ f = RPMTAG_SUPPLEMENTFLAGS;
+ } else if (tag == RPMTAG_ENHANCENAME) {
+ t = "Enhances";
+ evr = RPMTAG_ENHANCEVERSION;
+ f = RPMTAG_ENHANCEFLAGS;
+ } else if (tag == RPMTAG_RECOMMENDNAME) {
+ t = "Recommends";
+ evr = RPMTAG_RECOMMENDVERSION;
+ f = RPMTAG_RECOMMENDFLAGS;
+ } else if (tag == RPMTAG_SUGGESTNAME) {
+ t = "Suggests";
+ evr = RPMTAG_SUGGESTVERSION;
+ f = RPMTAG_SUGGESTFLAGS;
} else if (tag == RPMTAG_CONFLICTNAME) {
t = "Conflicts";
evr = RPMTAG_CONFLICTVERSION;
diff --git a/lib/rpmtag.h b/lib/rpmtag.h
index 64b03f1..b943229 100644
--- a/lib/rpmtag.h
+++ b/lib/rpmtag.h
@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
RPMTAG_PRETRANSPROG = 1153, /* s[] */
RPMTAG_POSTTRANSPROG = 1154, /* s[] */
RPMTAG_DISTTAG = 1155, /* s */
- RPMTAG_SUGGESTSNAME = 1156, /* s[] extension (unimplemented) */
-#define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] (unimplemented) */
- RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension (unimplemented) */
- RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension (unimplemented) */
- RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder (unimplemented) */
-#define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] (unimplemented) */
- RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder (unimplemented) */
- RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder (unimplemented) */
+ RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */
+#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */
+ RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */
+ RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */
+ RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */
+#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */
+ RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */
+ RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */
RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
RPMTAG_CVSID = 1163, /* s (unimplemented) */
#define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
@@ -261,6 +261,7 @@ typedef enum rpmTag_e {
RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */
RPMTAG_DBINSTANCE = 1195, /* i extension */
RPMTAG_NVRA = 1196, /* s extension */
+
/* tags 1997-4999 reserved */
RPMTAG_FILENAMES = 5000, /* s[] extension */
RPMTAG_FILEPROVIDE = 5001, /* s[] extension */
@@ -307,6 +308,26 @@ typedef enum rpmTag_e {
RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */
RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */
RPMTAG_FILENLINKS = 5045, /* i[] extension */
+ RPMTAG_RECOMMENDNAME = 5046, /* s[] */
+#define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */
+ RPMTAG_RECOMMENDVERSION = 5047, /* s[] */
+ RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */
+ RPMTAG_SUGGESTNAME = 5049, /* s[] */
+#define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */
+ RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */
+ RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */
+ RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */
+#define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */
+ RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */
+ RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */
+ RPMTAG_ENHANCENAME = 5055, /* s[] */
+#define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */
+ RPMTAG_ENHANCEVERSION = 5056, /* s[] */
+ RPMTAG_ENHANCEFLAGS = 5057, /* i[] */
+ RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */
+ RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */
+ RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */
+ RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */
RPMTAG_FIRSTFREE_TAG /*!< internal */
} rpmTag;
diff --git a/lib/tagexts.c b/lib/tagexts.c
index 29b2bae..e940310 100644
--- a/lib/tagexts.c
+++ b/lib/tagexts.c
@@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME);
}
+static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME);
+}
+
+static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME);
+}
+
+static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME);
+}
+
+static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME);
+}
+
static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME);
@@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
{ RPMTAG_EPOCHNUM, epochnumTag },
{ RPMTAG_INSTFILENAMES, instfilenamesTag },
{ RPMTAG_REQUIRENEVRS, requirenevrsTag },
+ { RPMTAG_RECOMMENDNEVRS, recommendnevrsTag},
+ { RPMTAG_SUGGESTNEVRS, suggestnevrsTag},
+ { RPMTAG_SUPPLEMENTNEVRS, supplementnevrsTag},
+ { RPMTAG_ENHANCENEVRS, enhancenevrsTag},
{ RPMTAG_PROVIDENEVRS, providenevrsTag },
{ RPMTAG_OBSOLETENEVRS, obsoletenevrsTag },
{ RPMTAG_CONFLICTNEVRS, conflictnevrsTag },
diff --git a/rpmpopt.in b/rpmpopt.in
index 805599e..036ab4e 100644
--- a/rpmpopt.in
+++ b/rpmpopt.in
@@ -67,6 +67,19 @@ rpm alias --requires --qf \
--POPTdesc=$"list capabilities required by package(s)"
rpm alias -R --requires
+rpm alias --recommends --qf \
+ "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
+ --POPTdesc=$"list capabilities recommended by package(s)"
+rpm alias --suggests --qf \
+ "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
+ --POPTdesc=$"list capabilities suggested by package(s)"
+rpm alias --supplements --qf \
+ "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
+ --POPTdesc=$"list capabilities supplemented by package(s)"
+rpm alias --enhances --qf \
+ "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
+ --POPTdesc=$"list capabilities enhanced by package(s)"
+
rpm alias --info --qf '\
Name : %{NAME}\n\
%|EPOCH?{Epoch : %{EPOCH}\n}|\
diff --git a/tests/data/SPECS/deptest.spec b/tests/data/SPECS/deptest.spec
index cb4cbbd..7c47f6d 100644
--- a/tests/data/SPECS/deptest.spec
+++ b/tests/data/SPECS/deptest.spec
@@ -10,6 +10,10 @@ BuildArch: noarch
%{?provs:Provides: %{provs}}
%{?cfls:Conflicts: %{cfls}}
%{?obs:Obsoletes: %{obs}}
+%{?recs:Recommends: %{recs}}
+%{?sugs:Suggests: %{sugs}}
+%{?sups:Supplements: %{sups}}
+%{?ens:Enhances: %{ens}}
%description
%{summary}
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
index 6230903..c4c954c 100644
--- a/tests/rpmbuild.at
+++ b/tests/rpmbuild.at
@@ -185,3 +185,25 @@ lrwxrwxrwx /opt/globtest/linkgood
],
[])
AT_CLEANUP
+
+# ------------------------------
+# Check if weak and reverse requires can be built
+AT_SETUP([Weak and reverse requires])
+AT_KEYWORDS([build])
+AT_CHECK([
+
+runroot rpmbuild -bb --quiet \
+ --define "pkg weakdeps" \
+ --define "recs foo > 1.2.3" \
+ --define "sugs bar >= 0.1.2" \
+ --define "sups baz" \
+ --define "ens zap = 3" \
+ /data/SPECS/deptest.spec
+
+runroot rpm -qp --qf "[%{supplementname}\n]" /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
+],
+[0],
+[baz
+],
+[ignore])
+AT_CLEANUP
diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at
index 13131e2..80cca63 100644
--- a/tests/rpmgeneral.at
+++ b/tests/rpmgeneral.at
@@ -79,6 +79,11 @@ DISTTAG
DISTURL
DSAHEADER
E
+ENHANCEFLAGS
+ENHANCENAME
+ENHANCENEVRS
+ENHANCES
+ENHANCEVERSION
EPOCH
EPOCHNUM
EVR
@@ -199,6 +204,11 @@ PROVIDES
PROVIDEVERSION
PUBKEYS
R
+RECOMMENDFLAGS
+RECOMMENDNAME
+RECOMMENDNEVRS
+RECOMMENDS
+RECOMMENDVERSION
RECONTEXTS
RELEASE
REMOVETID
@@ -219,7 +229,17 @@ SOURCE
SOURCEPACKAGE
SOURCEPKGID
SOURCERPM
+SUGGESTFLAGS
+SUGGESTNAME
+SUGGESTNEVRS
+SUGGESTS
+SUGGESTVERSION
SUMMARY
+SUPPLEMENTFLAGS
+SUPPLEMENTNAME
+SUPPLEMENTNEVRS
+SUPPLEMENTS
+SUPPLEMENTVERSION
TRIGGERCONDS
TRIGGERFLAGS
TRIGGERINDEX

View File

@ -1,38 +0,0 @@
Use pkgconfig to get the correct include paths
Upstream-Status: Pending
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
diff --git a/configure.ac b/configure.ac
index e97f727..8179f44 100644
--- a/configure.ac
+++ b/configure.ac
@@ -540,10 +540,10 @@ esac],
AS_IF([test "$enable_python" = yes],[
AM_PATH_PYTHON([2.6],[
- WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
+ WITH_PYTHON_INCLUDE=$(${PKG_CONFIG} --cflags-only-I python)
WITH_PYTHON_SUBPACKAGE=1
save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
+ CPPFLAGS="$CPPFLAGS $WITH_PYTHON_INCLUDE"
AC_CHECK_HEADER([Python.h],[],
[AC_MSG_ERROR([missing Python.h])
])
diff --git a/python/Makefile.am b/python/Makefile.am
index fff51ae..f37cb9d 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -4,7 +4,7 @@ EXTRA_DIST = rpm/__init__.py rpm/transaction.py
AM_CPPFLAGS = -I$(top_builddir)/include/
AM_CPPFLAGS += -I$(top_srcdir)/python
-AM_CPPFLAGS += -I@WITH_PYTHON_INCLUDE@
+AM_CPPFLAGS += @WITH_PYTHON_INCLUDE@
pkgpyexec_LTLIBRARIES = _rpmmodule.la _rpmbmodule.la _rpmsmodule.la
pkgpyexec_DATA = rpm/__init__.py rpm/transaction.py

View File

@ -1,132 +0,0 @@
SUMMARY = "The RPM package management system"
DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
package management system capable of installing, uninstalling, \
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."
SUMMARY_${PN}-dev = "Development files for manipulating RPM packages"
DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \
development files will simplify the process of writing programs that \
manipulate RPM packages and databases. These files are intended to \
simplify the process of creating graphical package managers or any \
other tools that need an intimate knowledge of RPM packages in order \
to function."
SUMMARY_python-rpm = "Python bindings for apps which will manupulate RPM packages"
DESCRIPTION_python-rpm = "The rpm-python package contains a module that permits applications \
written in the Python programming language to use the interface \
supplied by the RPM Package Manager libraries."
HOMEPAGE = "http://www.rpm.org"
LICENSE = "GPL-2.0+"
LIC_FILES_CHKSUM ??= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
DEPENDS = "db libxml2 xz findutils file popt nss bzip2 elfutils attr zlib acl gzip python"
DEPENDS_append_class-native = " file-replacement-native"
SRC_URI += "http://rpm.org/releases/rpm-4.11.x/${BP}.tar.bz2 \
file://use-pkgconfig-for-python.patch \
file://remove-db3-from-configure.patch \
file://add_RPMSENSE_MISSINGOK_to_rpmmodule.patch \
file://support-suggests-tag.patch \
file://remove-dir-check.patch \
file://disable_shortcircuited.patch \
file://fix_libdir.patch \
file://rpm-scriptetexechelp.patch \
file://pythondeps.sh \
file://rpm-CVE-2014-8118.patch \
file://rpm-CVE-2013-6435.patch \
"
SRC_URI[md5sum] = "876ac9948a88367054f8ddb5c0e87173"
SRC_URI[sha256sum] = "403f8de632b33846ce5746f429c21a60f40dff9dcb56f1b4118f37a0652a48d4"
PR = "r1"
inherit autotools
inherit pythonnative
inherit pkgconfig
inherit gettext
EXTRA_OECONF += "--host=${HOST_SYS} \
--program-prefix= \
--prefix=${prefix} \
--exec-prefix=${prefix} \
--bindir=${prefix}/bin \
--sbindir=${prefix}/sbin \
--sysconfdir=${sysconfdir} \
--datadir=${prefix}/share \
--includedir=${prefix}/include \
--libdir=${prefix}/lib \
--libexecdir=${prefix}/libexec \
--localstatedir=${localstatedir} \
--sharedstatedir=${prefix}/com \
--mandir=${mandir} \
--infodir=${infodir} \
--disable-dependency-tracking \
--with-acl \
--without-lua \
--without-cap \
--enable-shared \
--enable-python \
--with-external-db \
"
CPPFLAGS_append = " `pkg-config --cflags nss`"
LDFLAGS_append = " -Wl,-Bsymbolic-functions -ffunction-sections"
CCFLAGS_append = " -fPIC "
CXXFLAGS_append = " -fPIC "
CFLAGS_append = " -fPIC -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE "
do_configure_prepend() {
rm -rf sqlite
rm -f m4/libtool.m4
rm -f m4/lt*.m4
rm -rf db3/configure*
}
do_install_append() {
mv ${D}/${base_bindir}/rpm ${D}/${bindir}/
rmdir ${D}/${base_bindir}
rm -f ${D}${prefix}/lib/*.la
rm -f ${D}${prefix}/lib/rpm-plugins/*.la
rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.{a,la}
rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.{a,la}
rm -fr ${D}/var
install -d ${D}${prefix}/lib/rpm/bin
ln -s ../debugedit ${D}${prefix}/lib/rpm/bin/debugedit
ln -s ../rpmdeps ${D}${prefix}/lib/rpm/bin/rpmdeps-oecore
install -m 0755 ${WORKDIR}/pythondeps.sh ${D}/${libdir}/rpm/pythondeps.sh
}
pkg_postinst_${PN}() {
[ "x\$D" = "x" ] && ldconfig
test -f ${localstatedir}/lib/rpm/Packages || rpm --initdb
rm -f ${localstatedir}/lib/rpm/Filemd5s \
${localstatedir}/lib/rpm/Filedigests \
${localstatedir}/lib/rpm/Requireversion \
${localstatedir}/lib/rpm/Provideversion
}
pkg_postrm_${PN}() {
[ "x\$D" = "x" ] && ldconfig
}
PACKAGES += "python-${PN}"
PROVIDES += "python-rpm"
FILES_${PN} += "${libdir}/rpm \
${libdir}/rpm-plugins/exec.so \
"
RDEPENDS_${PN} = "base-files run-postinsts"
RDEPENDS_${PN}_class-native = ""
FILES_${PN}-dev += "${libdir}/python2.7/site-packages/rpm/*.la"
FILES_python-${PN} = "${libdir}/python2.7/site-packages/rpm/*"
RDEPENDS_python-${PN} = "${PN} python"
BBCLASSEXTEND = "native"