- Update to upstream 4.13.0-rc1 release
This commit is contained in:
parent
d407fb640c
commit
592510cfdb
1
.gitignore
vendored
1
.gitignore
vendored
@ -19,3 +19,4 @@
|
|||||||
/rpm-4.12.0.tar.bz2
|
/rpm-4.12.0.tar.bz2
|
||||||
/rpm-4.12.0.1.tar.bz2
|
/rpm-4.12.0.1.tar.bz2
|
||||||
/rpm-4.12.90.tar.bz2
|
/rpm-4.12.90.tar.bz2
|
||||||
|
/rpm-4.13.0-rc1.tar.bz2
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
From 8fab4539051091f71d88f6b1d8c6660a40d5a5bd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Florian Festi <ffesti@redhat.com>
|
|
||||||
Date: Mon, 27 Jul 2015 18:52:25 +0200
|
|
||||||
Subject: [PATCH] Fix compressed patches
|
|
||||||
|
|
||||||
Regression caused by d9f673bf2841bb8c854e6676871078ab563a51c9 caused uncompressed patch content to be printed out to std instead of being piped into patch command.
|
|
||||||
---
|
|
||||||
build/parsePrep.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/build/parsePrep.c b/build/parsePrep.c
|
|
||||||
index 5ba5aee..b94aad2 100644
|
|
||||||
--- a/build/parsePrep.c
|
|
||||||
+++ b/build/parsePrep.c
|
|
||||||
@@ -101,7 +101,7 @@ static char *doPatch(rpmSpec spec, uint32_t c, int strip, const char *db,
|
|
||||||
|
|
||||||
/* Avoid the extra cost of fork and pipe for uncompressed patches */
|
|
||||||
if (compressed != COMPRESSED_NOT) {
|
|
||||||
- patchcmd = rpmExpand("%{uncompress: ", fn, "} || echo patch_fail | "
|
|
||||||
+ patchcmd = rpmExpand("{ %{uncompress: ", fn, "} || echo patch_fail ; } | "
|
|
||||||
"%{__patch} ", args, NULL);
|
|
||||||
} else {
|
|
||||||
patchcmd = rpmExpand("%{__patch} ", args, " < ", fn, NULL);
|
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
@ -1,123 +0,0 @@
|
|||||||
From d14ecfe587efbe80e5534161dbd3a4f7158b4e2b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Kardos <lkardos@redhat.com>
|
|
||||||
Date: Mon, 27 Jul 2015 11:22:19 +0200
|
|
||||||
Subject: [PATCH] Enable {} expansion in rpmGlob() (rhbz:1246743)
|
|
||||||
|
|
||||||
---
|
|
||||||
rpmio/rpmglob.c | 42 ++++++++++++++++++++++++++++++++----------
|
|
||||||
1 file changed, 32 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/rpmio/rpmglob.c b/rpmio/rpmglob.c
|
|
||||||
index 4fc106d..597ac5c 100644
|
|
||||||
--- a/rpmio/rpmglob.c
|
|
||||||
+++ b/rpmio/rpmglob.c
|
|
||||||
@@ -150,7 +150,7 @@ static inline const char *next_brace_sub(const char *begin)
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int __glob_pattern_p(const char *pattern, int quote);
|
|
||||||
+static int __glob_pattern_p(const char *pattern, int flags);
|
|
||||||
|
|
||||||
/* Do glob searching for PATTERN, placing results in PGLOB.
|
|
||||||
The bits defined above may be set in FLAGS.
|
|
||||||
@@ -419,7 +419,7 @@ glob(const char *pattern, int flags,
|
|
||||||
return GLOB_NOMATCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (__glob_pattern_p(dirname, !(flags & GLOB_NOESCAPE))) {
|
|
||||||
+ if (__glob_pattern_p(dirname, flags)) {
|
|
||||||
/* The directory name contains metacharacters, so we
|
|
||||||
have to glob for the directory, and then glob for
|
|
||||||
the pattern in each directory found. */
|
|
||||||
@@ -646,10 +646,11 @@ static int prefix_array(const char *dirname, char **array, size_t n)
|
|
||||||
|
|
||||||
/* Return nonzero if PATTERN contains any metacharacters.
|
|
||||||
Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
||||||
-static int __glob_pattern_p(const char *pattern, int quote)
|
|
||||||
+static int __glob_pattern_p(const char *pattern, int flags)
|
|
||||||
{
|
|
||||||
register const char *p;
|
|
||||||
- int open = 0;
|
|
||||||
+ int openBrackets = 0;
|
|
||||||
+ int openBraces = 0;
|
|
||||||
|
|
||||||
for (p = pattern; *p != '\0'; ++p)
|
|
||||||
switch (*p) {
|
|
||||||
@@ -658,18 +659,29 @@ static int __glob_pattern_p(const char *pattern, int quote)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
- if (quote && p[1] != '\0')
|
|
||||||
+ if (!(flags & GLOB_NOESCAPE) && p[1] != '\0')
|
|
||||||
++p;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '[':
|
|
||||||
- open = 1;
|
|
||||||
+ openBrackets = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ']':
|
|
||||||
- if (open)
|
|
||||||
+ if (openBrackets)
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
+
|
|
||||||
+ case '{':
|
|
||||||
+ if (flags & GLOB_BRACE)
|
|
||||||
+ openBraces = 1;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case '}':
|
|
||||||
+ if (openBraces)
|
|
||||||
+ return 1;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -694,7 +706,7 @@ glob_in_dir(const char *pattern, const char *directory, int flags,
|
|
||||||
int meta;
|
|
||||||
int save;
|
|
||||||
|
|
||||||
- meta = __glob_pattern_p(pattern, !(flags & GLOB_NOESCAPE));
|
|
||||||
+ meta = __glob_pattern_p(pattern, flags);
|
|
||||||
if (meta == 0) {
|
|
||||||
if (flags & (GLOB_NOCHECK | GLOB_NOMAGIC))
|
|
||||||
/* We need not do any tests. The PATTERN contains no meta
|
|
||||||
@@ -844,6 +856,8 @@ int rpmGlob(const char * patterns, int * argcPtr, ARGV_t * argvPtr)
|
|
||||||
int i, j;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
+ gflags |= GLOB_BRACE;
|
|
||||||
+
|
|
||||||
if (home != NULL && strlen(home) > 0)
|
|
||||||
gflags |= GLOB_TILDE;
|
|
||||||
|
|
||||||
@@ -874,7 +888,9 @@ int rpmGlob(const char * patterns, int * argcPtr, ARGV_t * argvPtr)
|
|
||||||
int dir_only = (plen > 0 && path[plen-1] == '/');
|
|
||||||
glob_t gl;
|
|
||||||
|
|
||||||
- if (!local || (!rpmIsGlob(av[j], 0) && strchr(path, '~') == NULL)) {
|
|
||||||
+ if (!local || (!rpmIsGlob(av[j], GLOB_NOESCAPE | flags) &&
|
|
||||||
+ strchr(path, '~') == NULL)) {
|
|
||||||
+
|
|
||||||
argvAdd(&argv, av[j]);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
@@ -966,5 +982,11 @@ exit:
|
|
||||||
|
|
||||||
int rpmIsGlob(const char * pattern, int quote)
|
|
||||||
{
|
|
||||||
- return __glob_pattern_p(pattern, quote);
|
|
||||||
+ int flags = 0;
|
|
||||||
+ if (!quote) {
|
|
||||||
+ flags |= GLOB_NOESCAPE;
|
|
||||||
+ }
|
|
||||||
+ flags |= GLOB_BRACE;
|
|
||||||
+
|
|
||||||
+ return __glob_pattern_p(pattern, flags);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
From 655ca18630d4a89e022b51ea495fa63718303413 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Kardos <lkardos@redhat.com>
|
|
||||||
Date: Thu, 30 Jul 2015 16:23:58 +0200
|
|
||||||
Subject: [PATCH] Don't warn when an escaped macro is in comment.
|
|
||||||
|
|
||||||
- Related to 2a3f49585e5bd82d0bbfe5b9d6cdf24d9501b5cd
|
|
||||||
---
|
|
||||||
build/parseSpec.c | 23 ++++++++++++++++++-----
|
|
||||||
1 file changed, 18 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/build/parseSpec.c b/build/parseSpec.c
|
|
||||||
index 706579d..edc3d00 100644
|
|
||||||
--- a/build/parseSpec.c
|
|
||||||
+++ b/build/parseSpec.c
|
|
||||||
@@ -189,12 +189,25 @@ static int expandMacrosInSpecBuf(rpmSpec spec, int strip)
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (strip & STRIP_COMMENTS &&
|
|
||||||
- isComment && !rstreq(spec->lbuf, lbuf)) {
|
|
||||||
+ if (strip & STRIP_COMMENTS && isComment) {
|
|
||||||
+ char *bufA = lbuf;
|
|
||||||
+ char *bufB = spec->lbuf;
|
|
||||||
|
|
||||||
- rpmlog(RPMLOG_WARNING,
|
|
||||||
- _("Macro expanded in comment on line %d: %s\n"),
|
|
||||||
- spec->lineNum, lbuf);
|
|
||||||
+ while (*bufA != '\0' && *bufB != '\0') {
|
|
||||||
+ if (*bufA == '%' && *(bufA + 1) == '%')
|
|
||||||
+ bufA++;
|
|
||||||
+
|
|
||||||
+ if (*bufA != *bufB)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ bufA++;
|
|
||||||
+ bufB++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (*bufA != '\0' || *bufB != '\0')
|
|
||||||
+ rpmlog(RPMLOG_WARNING,
|
|
||||||
+ _("Macro expanded in comment on line %d: %s\n"),
|
|
||||||
+ spec->lineNum, lbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
exit:
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
|||||||
From 630a0970df46df6cc96a68349cf4e08d8b4ca772 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Kardos <lkardos@redhat.com>
|
|
||||||
Date: Mon, 3 Aug 2015 16:51:11 +0200
|
|
||||||
Subject: [PATCH 1/2] Modify rpmIsGlob() to be more precise.
|
|
||||||
|
|
||||||
Now rpmIsGlob() checks if braces expansion pattern is well formed and
|
|
||||||
not only if it contains opening and closing brace. The checking
|
|
||||||
procedure is same as procedure in glob() so rpmIsGlob() and glob() are
|
|
||||||
now compatible.
|
|
||||||
---
|
|
||||||
rpmio/rpmglob.c | 57 ++++++++++++++++++++++++++++++++-------------------------
|
|
||||||
1 file changed, 32 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/rpmio/rpmglob.c b/rpmio/rpmglob.c
|
|
||||||
index 597ac5c..0c6b0a3 100644
|
|
||||||
--- a/rpmio/rpmglob.c
|
|
||||||
+++ b/rpmio/rpmglob.c
|
|
||||||
@@ -150,7 +150,7 @@ static inline const char *next_brace_sub(const char *begin)
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int __glob_pattern_p(const char *pattern, int flags);
|
|
||||||
+static int __glob_pattern_p(const char *pattern, int quote);
|
|
||||||
|
|
||||||
/* Do glob searching for PATTERN, placing results in PGLOB.
|
|
||||||
The bits defined above may be set in FLAGS.
|
|
||||||
@@ -419,7 +419,7 @@ glob(const char *pattern, int flags,
|
|
||||||
return GLOB_NOMATCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (__glob_pattern_p(dirname, flags)) {
|
|
||||||
+ if (__glob_pattern_p(dirname, !(flags & GLOB_NOESCAPE))) {
|
|
||||||
/* The directory name contains metacharacters, so we
|
|
||||||
have to glob for the directory, and then glob for
|
|
||||||
the pattern in each directory found. */
|
|
||||||
@@ -646,11 +646,10 @@ static int prefix_array(const char *dirname, char **array, size_t n)
|
|
||||||
|
|
||||||
/* Return nonzero if PATTERN contains any metacharacters.
|
|
||||||
Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
||||||
-static int __glob_pattern_p(const char *pattern, int flags)
|
|
||||||
+static int __glob_pattern_p(const char *pattern, int quote)
|
|
||||||
{
|
|
||||||
register const char *p;
|
|
||||||
int openBrackets = 0;
|
|
||||||
- int openBraces = 0;
|
|
||||||
|
|
||||||
for (p = pattern; *p != '\0'; ++p)
|
|
||||||
switch (*p) {
|
|
||||||
@@ -659,7 +658,7 @@ static int __glob_pattern_p(const char *pattern, int flags)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
- if (!(flags & GLOB_NOESCAPE) && p[1] != '\0')
|
|
||||||
+ if (quote && p[1] != '\0')
|
|
||||||
++p;
|
|
||||||
break;
|
|
||||||
|
|
||||||
@@ -671,17 +670,6 @@ static int __glob_pattern_p(const char *pattern, int flags)
|
|
||||||
if (openBrackets)
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
-
|
|
||||||
- case '{':
|
|
||||||
- if (flags & GLOB_BRACE)
|
|
||||||
- openBraces = 1;
|
|
||||||
- break;
|
|
||||||
-
|
|
||||||
- case '}':
|
|
||||||
- if (openBraces)
|
|
||||||
- return 1;
|
|
||||||
- break;
|
|
||||||
-
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
@@ -706,7 +694,7 @@ glob_in_dir(const char *pattern, const char *directory, int flags,
|
|
||||||
int meta;
|
|
||||||
int save;
|
|
||||||
|
|
||||||
- meta = __glob_pattern_p(pattern, flags);
|
|
||||||
+ meta = __glob_pattern_p(pattern, !(flags & GLOB_NOESCAPE));
|
|
||||||
if (meta == 0) {
|
|
||||||
if (flags & (GLOB_NOCHECK | GLOB_NOMAGIC))
|
|
||||||
/* We need not do any tests. The PATTERN contains no meta
|
|
||||||
@@ -888,9 +876,7 @@ int rpmGlob(const char * patterns, int * argcPtr, ARGV_t * argvPtr)
|
|
||||||
int dir_only = (plen > 0 && path[plen-1] == '/');
|
|
||||||
glob_t gl;
|
|
||||||
|
|
||||||
- if (!local || (!rpmIsGlob(av[j], GLOB_NOESCAPE | flags) &&
|
|
||||||
- strchr(path, '~') == NULL)) {
|
|
||||||
-
|
|
||||||
+ if (!local || (!rpmIsGlob(av[j], 0) && strchr(path, '~') == NULL)) {
|
|
||||||
argvAdd(&argv, av[j]);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
@@ -982,11 +968,32 @@ exit:
|
|
||||||
|
|
||||||
int rpmIsGlob(const char * pattern, int quote)
|
|
||||||
{
|
|
||||||
- int flags = 0;
|
|
||||||
- if (!quote) {
|
|
||||||
- flags |= GLOB_NOESCAPE;
|
|
||||||
+ if(!__glob_pattern_p(pattern, quote)) {
|
|
||||||
+
|
|
||||||
+ const char *begin;
|
|
||||||
+ const char *next;
|
|
||||||
+ const char *rest;
|
|
||||||
+
|
|
||||||
+ begin = strchr(pattern, '{');
|
|
||||||
+ if (begin == NULL)
|
|
||||||
+ return 0;
|
|
||||||
+ /*
|
|
||||||
+ * Find the first sub-pattern and at the same time find the
|
|
||||||
+ * rest after the closing brace.
|
|
||||||
+ */
|
|
||||||
+ next = next_brace_sub(begin + 1);
|
|
||||||
+ if (next == NULL)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ /* Now find the end of the whole brace expression. */
|
|
||||||
+ rest = next;
|
|
||||||
+ while (*rest != '}') {
|
|
||||||
+ rest = next_brace_sub(rest + 1);
|
|
||||||
+ if (rest == NULL)
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ /* Now we can be sure that brace expression is well-foermed. */
|
|
||||||
}
|
|
||||||
- flags |= GLOB_BRACE;
|
|
||||||
|
|
||||||
- return __glob_pattern_p(pattern, flags);
|
|
||||||
+ return 1;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
From aec4f88ed585aedae1b35f447ee730a9054d6a4a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thierry Vignaud <thierry.vignaud@gmail.com>
|
|
||||||
Date: Mon, 10 Aug 2015 04:38:47 -0400
|
|
||||||
Subject: [PATCH] Fix last occurence of PyString
|
|
||||||
|
|
||||||
This should have been done in
|
|
||||||
commit 1866fc41c8fdf5a82705cee7f1043d5fb634c3be
|
|
||||||
This fixes:
|
|
||||||
|
|
||||||
$ python3 -c 'import rpm._rpmb'
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File "<string>", line 1, in <module>
|
|
||||||
ImportError: /usr/lib64/python3.4/site-packages/rpm/_rpmb.cpython-34m.so: undefined symbol: PyString_FromString
|
|
||||||
---
|
|
||||||
python/spec-py.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/python/spec-py.c b/python/spec-py.c
|
|
||||||
index 728b63c..f710f5c 100644
|
|
||||||
--- a/python/spec-py.c
|
|
||||||
+++ b/python/spec-py.c
|
|
||||||
@@ -51,7 +51,7 @@ static PyObject *pkgGetSection(rpmSpecPkg pkg, int section)
|
|
||||||
{
|
|
||||||
char *sect = rpmSpecPkgGetSection(pkg, section);
|
|
||||||
if (sect != NULL) {
|
|
||||||
- PyObject *ps = PyString_FromString(sect);
|
|
||||||
+ PyObject *ps = PyBytes_FromString(sect);
|
|
||||||
free(sect);
|
|
||||||
if (ps != NULL)
|
|
||||||
return ps;
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,257 +0,0 @@
|
|||||||
From d18fdd7f8964d01b4dfc39bf84133695cff5a13a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Kardos <lkardos@redhat.com>
|
|
||||||
Date: Thu, 6 Aug 2015 14:28:25 +0200
|
|
||||||
Subject: [PATCH] Add --filetriggers option to show info about file triggers.
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/rpmtag.h | 4 ++
|
|
||||||
lib/tagexts.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++-----
|
|
||||||
rpmpopt.in | 8 ++++
|
|
||||||
tests/rpmgeneral.at | 4 ++
|
|
||||||
4 files changed, 113 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rpmtag.h b/lib/rpmtag.h
|
|
||||||
index ac6ee64..94c0655 100644
|
|
||||||
--- a/lib/rpmtag.h
|
|
||||||
+++ b/lib/rpmtag.h
|
|
||||||
@@ -352,6 +352,10 @@ typedef enum rpmTag_e {
|
|
||||||
RPMTAG_REMOVEPATHPOSTFIXES = 5083, /* s internal */
|
|
||||||
RPMTAG_FILETRIGGERPRIORITIES = 5084, /* i[] */
|
|
||||||
RPMTAG_TRANSFILETRIGGERPRIORITIES = 5085, /* i[] */
|
|
||||||
+ RPMTAG_FILETRIGGERCONDS = 5086, /* s[] extension */
|
|
||||||
+ RPMTAG_FILETRIGGERTYPE = 5087, /* s[] extension */
|
|
||||||
+ RPMTAG_TRANSFILETRIGGERCONDS = 5088, /* s[] extension */
|
|
||||||
+ RPMTAG_TRANSFILETRIGGERTYPE = 5089, /* s[] extension */
|
|
||||||
|
|
||||||
RPMTAG_FIRSTFREE_TAG /*!< internal */
|
|
||||||
} rpmTag;
|
|
||||||
diff --git a/lib/tagexts.c b/lib/tagexts.c
|
|
||||||
index fa3fe72..69f3c24 100644
|
|
||||||
--- a/lib/tagexts.c
|
|
||||||
+++ b/lib/tagexts.c
|
|
||||||
@@ -191,6 +191,12 @@ exit:
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
+typedef enum tMode_e {
|
|
||||||
+ NORMALTRIGGER = 0,
|
|
||||||
+ FILETRIGGER = 1,
|
|
||||||
+ TRANSFILETRIGGER = 2,
|
|
||||||
+} tMode;
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Retrieve trigger info.
|
|
||||||
* @param h header
|
|
||||||
@@ -198,22 +204,49 @@ exit:
|
|
||||||
* @param hgflags header get flags
|
|
||||||
* @return 1 on success
|
|
||||||
*/
|
|
||||||
-static int triggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+static int triggercondsTagFor(tMode mode, Header h, rpmtd td,
|
|
||||||
+ headerGetFlags hgflags)
|
|
||||||
{
|
|
||||||
uint32_t * indices;
|
|
||||||
int i, j;
|
|
||||||
char ** conds;
|
|
||||||
struct rpmtd_s nametd, indextd, flagtd, versiontd, scripttd;
|
|
||||||
int hgeflags = HEADERGET_MINMEM;
|
|
||||||
+ rpmTagVal triggername, triggerindex, triggerflags;
|
|
||||||
+ rpmTagVal triggerversion, triggerscripts;
|
|
||||||
+
|
|
||||||
+ switch (mode) {
|
|
||||||
+ case NORMALTRIGGER:
|
|
||||||
+ triggername = RPMTAG_TRIGGERNAME;
|
|
||||||
+ triggerindex = RPMTAG_TRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_TRIGGERFLAGS;
|
|
||||||
+ triggerversion = RPMTAG_TRIGGERVERSION;
|
|
||||||
+ triggerscripts = RPMTAG_TRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ case FILETRIGGER:
|
|
||||||
+ triggername = RPMTAG_FILETRIGGERNAME;
|
|
||||||
+ triggerindex = RPMTAG_FILETRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_FILETRIGGERFLAGS;
|
|
||||||
+ triggerversion = RPMTAG_FILETRIGGERVERSION;
|
|
||||||
+ triggerscripts = RPMTAG_FILETRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ case TRANSFILETRIGGER:
|
|
||||||
+ triggername = RPMTAG_TRANSFILETRIGGERNAME;
|
|
||||||
+ triggerindex = RPMTAG_TRANSFILETRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_TRANSFILETRIGGERFLAGS;
|
|
||||||
+ triggerversion = RPMTAG_TRANSFILETRIGGERVERSION;
|
|
||||||
+ triggerscripts = RPMTAG_TRANSFILETRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (!headerGet(h, RPMTAG_TRIGGERNAME, &nametd, hgeflags)) {
|
|
||||||
+ if (!headerGet(h, triggername, &nametd, hgeflags)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERINDEX, &indextd, hgeflags);
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERFLAGS, &flagtd, hgeflags);
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERVERSION, &versiontd, hgeflags);
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERSCRIPTS, &scripttd, hgeflags);
|
|
||||||
+ headerGet(h, triggerindex, &indextd, hgeflags);
|
|
||||||
+ headerGet(h, triggerflags, &flagtd, hgeflags);
|
|
||||||
+ headerGet(h, triggerversion, &versiontd, hgeflags);
|
|
||||||
+ headerGet(h, triggerscripts, &scripttd, hgeflags);
|
|
||||||
|
|
||||||
td->type = RPM_STRING_ARRAY_TYPE;
|
|
||||||
td->flags = RPMTD_ALLOCED | RPMTD_PTR_ALLOCED;
|
|
||||||
@@ -262,6 +295,21 @@ static int triggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int triggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggercondsTagFor(NORMALTRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int filetriggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggercondsTagFor(FILETRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int transfiletriggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggercondsTagFor(TRANSFILETRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Retrieve trigger type info.
|
|
||||||
* @param h header
|
|
||||||
@@ -269,18 +317,38 @@ static int triggercondsTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
* @param hgflags header get flags
|
|
||||||
* @return 1 on success
|
|
||||||
*/
|
|
||||||
-static int triggertypeTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+static int triggertypeTagFor(tMode mode, Header h, rpmtd td,
|
|
||||||
+ headerGetFlags hgflags)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char ** conds;
|
|
||||||
struct rpmtd_s indices, flags, scripts;
|
|
||||||
+ rpmTagVal triggerindex, triggerflags, triggerscripts;
|
|
||||||
+
|
|
||||||
+ switch (mode) {
|
|
||||||
+ case NORMALTRIGGER:
|
|
||||||
+ triggerindex = RPMTAG_TRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_TRIGGERFLAGS;
|
|
||||||
+ triggerscripts = RPMTAG_TRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ case FILETRIGGER:
|
|
||||||
+ triggerindex = RPMTAG_FILETRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_FILETRIGGERFLAGS;
|
|
||||||
+ triggerscripts = RPMTAG_FILETRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ case TRANSFILETRIGGER:
|
|
||||||
+ triggerindex = RPMTAG_TRANSFILETRIGGERINDEX;
|
|
||||||
+ triggerflags = RPMTAG_TRANSFILETRIGGERFLAGS;
|
|
||||||
+ triggerscripts = RPMTAG_TRANSFILETRIGGERSCRIPTS;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (!headerGet(h, RPMTAG_TRIGGERINDEX, &indices, HEADERGET_MINMEM)) {
|
|
||||||
+ if (!headerGet(h, triggerindex, &indices, HEADERGET_MINMEM)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERFLAGS, &flags, HEADERGET_MINMEM);
|
|
||||||
- headerGet(h, RPMTAG_TRIGGERSCRIPTS, &scripts, HEADERGET_MINMEM);
|
|
||||||
+ headerGet(h, triggerflags, &flags, HEADERGET_MINMEM);
|
|
||||||
+ headerGet(h, triggerscripts, &scripts, HEADERGET_MINMEM);
|
|
||||||
|
|
||||||
td->flags = RPMTD_ALLOCED | RPMTD_PTR_ALLOCED;
|
|
||||||
td->count = rpmtdCount(&scripts);
|
|
||||||
@@ -316,6 +384,21 @@ static int triggertypeTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int triggertypeTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggertypeTagFor(NORMALTRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int filetriggertypeTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggertypeTagFor(FILETRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int transfiletriggertypeTag(Header h, rpmtd td, headerGetFlags hgflags)
|
|
||||||
+{
|
|
||||||
+ return triggertypeTagFor(TRANSFILETRIGGER, h, td, hgflags);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Retrieve installed file paths.
|
|
||||||
* @param h header
|
|
||||||
@@ -873,7 +956,11 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
|
|
||||||
{ RPMTAG_FILEPROVIDE, fileprovideTag },
|
|
||||||
{ RPMTAG_FILEREQUIRE, filerequireTag },
|
|
||||||
{ RPMTAG_TRIGGERCONDS, triggercondsTag },
|
|
||||||
+ { RPMTAG_FILETRIGGERCONDS, filetriggercondsTag },
|
|
||||||
+ { RPMTAG_TRANSFILETRIGGERCONDS, transfiletriggercondsTag },
|
|
||||||
{ RPMTAG_TRIGGERTYPE, triggertypeTag },
|
|
||||||
+ { RPMTAG_FILETRIGGERTYPE, filetriggertypeTag },
|
|
||||||
+ { RPMTAG_TRANSFILETRIGGERTYPE, transfiletriggertypeTag },
|
|
||||||
{ RPMTAG_LONGFILESIZES, longfilesizesTag },
|
|
||||||
{ RPMTAG_LONGARCHIVESIZE, longarchivesizeTag },
|
|
||||||
{ RPMTAG_LONGSIZE, longsizeTag },
|
|
||||||
diff --git a/rpmpopt.in b/rpmpopt.in
|
|
||||||
index 48c5c55..d930862 100644
|
|
||||||
--- a/rpmpopt.in
|
|
||||||
+++ b/rpmpopt.in
|
|
||||||
@@ -115,6 +115,14 @@ rpm alias --triggerscripts --qf '\
|
|
||||||
rpm alias --triggers --triggerscripts \
|
|
||||||
--POPTdesc=$"list trigger scriptlets from package(s)"
|
|
||||||
|
|
||||||
+rpm alias --filetriggerscripts --qf '\
|
|
||||||
+[filetrigger%{FILETRIGGERTYPE} scriptlet (using %{FILETRIGGERSCRIPTPROG}) -- \
|
|
||||||
+%{FILETRIGGERCONDS}\n%{FILETRIGGERSCRIPTS}\n]\
|
|
||||||
+[transfiletrigger%{TRANSFILETRIGGERTYPE} scriptlet (using %{TRANSFILETRIGGERSCRIPTPROG}) -- \
|
|
||||||
+%{TRANSFILETRIGGERCONDS}\n%{TRANSFILETRIGGERSCRIPTS}\n]'
|
|
||||||
+rpm alias --filetriggers --filetriggerscripts \
|
|
||||||
+ --POPTdesc=$"list filetrigger scriptlets from package(s)"
|
|
||||||
+
|
|
||||||
rpm alias --last --qf '%|INSTALLTIME?{%{INSTALLTIME}}:{000000000}| %{NVRA} %|INSTALLTIME?{%{INSTALLTIME:date}}:{(not installed)}|\n' \
|
|
||||||
--pipe "LC_NUMERIC=C sort -r -n | sed 's,^[0-9]\+ ,,' | awk '{printf(\"%-45s %-s\n\", $1, substr($0,length($1)+2))}' " \
|
|
||||||
--POPTdesc=$"list package(s) by install time, most recent first"
|
|
||||||
diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at
|
|
||||||
index 312f43b..ac21a40 100644
|
|
||||||
--- a/tests/rpmgeneral.at
|
|
||||||
+++ b/tests/rpmgeneral.at
|
|
||||||
@@ -115,6 +115,7 @@ FILERDEVS
|
|
||||||
FILEREQUIRE
|
|
||||||
FILESIZES
|
|
||||||
FILESTATES
|
|
||||||
+FILETRIGGERCONDS
|
|
||||||
FILETRIGGERFLAGS
|
|
||||||
FILETRIGGERINDEX
|
|
||||||
FILETRIGGERNAME
|
|
||||||
@@ -122,6 +123,7 @@ FILETRIGGERPRIORITIES
|
|
||||||
FILETRIGGERSCRIPTFLAGS
|
|
||||||
FILETRIGGERSCRIPTPROG
|
|
||||||
FILETRIGGERSCRIPTS
|
|
||||||
+FILETRIGGERTYPE
|
|
||||||
FILETRIGGERVERSION
|
|
||||||
FILEUSERNAME
|
|
||||||
FILEVERIFYFLAGS
|
|
||||||
@@ -256,6 +258,7 @@ SUPPLEMENTNAME
|
|
||||||
SUPPLEMENTNEVRS
|
|
||||||
SUPPLEMENTS
|
|
||||||
SUPPLEMENTVERSION
|
|
||||||
+TRANSFILETRIGGERCONDS
|
|
||||||
TRANSFILETRIGGERFLAGS
|
|
||||||
TRANSFILETRIGGERINDEX
|
|
||||||
TRANSFILETRIGGERNAME
|
|
||||||
@@ -263,6 +266,7 @@ TRANSFILETRIGGERPRIORITIES
|
|
||||||
TRANSFILETRIGGERSCRIPTFLAGS
|
|
||||||
TRANSFILETRIGGERSCRIPTPROG
|
|
||||||
TRANSFILETRIGGERSCRIPTS
|
|
||||||
+TRANSFILETRIGGERTYPE
|
|
||||||
TRANSFILETRIGGERVERSION
|
|
||||||
TRIGGERCONDS
|
|
||||||
TRIGGERFLAGS
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
From c16c70cbd6b31cd93541d5c22d23ba98d212ad3d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lubos Kardos <lkardos@redhat.com>
|
|
||||||
Date: Mon, 3 Aug 2015 12:10:14 +0200
|
|
||||||
Subject: [PATCH 2/2] If globbing of a filename fails, try use the filename
|
|
||||||
without globbing.
|
|
||||||
|
|
||||||
Commit d14ecfe587efbe80e5534161dbd3a4f7158b4e2b enabled {} expansion
|
|
||||||
but {} expansion caused regresion because rpm tried to expand filenames
|
|
||||||
which weren't expanded previously and expansion failed because these
|
|
||||||
filenames weren't supposed to be expanded. Now if expansion fails then
|
|
||||||
rpm tries to use original filename.
|
|
||||||
---
|
|
||||||
build/files.c | 15 ++++++---------
|
|
||||||
1 file changed, 6 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/build/files.c b/build/files.c
|
|
||||||
index d16bb17..ea595b9 100644
|
|
||||||
--- a/build/files.c
|
|
||||||
+++ b/build/files.c
|
|
||||||
@@ -1584,16 +1584,13 @@ static rpmRC processBinaryFile(Package pkg, FileList fl, const char * fileName)
|
|
||||||
}
|
|
||||||
argvFree(argv);
|
|
||||||
} else {
|
|
||||||
- int lvl = RPMLOG_WARNING;
|
|
||||||
const char *msg = (fl->cur.isDir) ?
|
|
||||||
- _("Directory not found by glob: %s\n") :
|
|
||||||
- _("File not found by glob: %s\n");
|
|
||||||
- if (!(fl->cur.attrFlags & RPMFILE_EXCLUDE)) {
|
|
||||||
- lvl = RPMLOG_ERR;
|
|
||||||
- rc = RPMRC_FAIL;
|
|
||||||
- }
|
|
||||||
- rpmlog(lvl, msg, diskPath);
|
|
||||||
- goto exit;
|
|
||||||
+ _("Directory not found by glob: %s. "
|
|
||||||
+ "Trying without globbing.\n") :
|
|
||||||
+ _("File not found by glob: %s. "
|
|
||||||
+ "Trying without globbing.\n");
|
|
||||||
+ rpmlog(RPMLOG_DEBUG, msg, diskPath);
|
|
||||||
+ rc = addFile(fl, diskPath, NULL);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
rc = addFile(fl, diskPath, NULL);
|
|
||||||
--
|
|
||||||
1.9.3
|
|
||||||
|
|
35
rpm.spec
35
rpm.spec
@ -10,13 +10,15 @@
|
|||||||
%bcond_with sanitizer
|
%bcond_with sanitizer
|
||||||
# build with libarchive? (needed for rpm2archive)
|
# build with libarchive? (needed for rpm2archive)
|
||||||
%bcond_without libarchive
|
%bcond_without libarchive
|
||||||
|
# build with libimaevm.so
|
||||||
|
%bcond_without libimaevm
|
||||||
|
|
||||||
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
|
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
|
||||||
|
|
||||||
%define rpmhome /usr/lib/rpm
|
%define rpmhome /usr/lib/rpm
|
||||||
|
|
||||||
%define rpmver 4.12.90
|
%define rpmver 4.13.0
|
||||||
#define snapver rc1
|
%define snapver rc1
|
||||||
%define srcver %{rpmver}%{?snapver:-%{snapver}}
|
%define srcver %{rpmver}%{?snapver:-%{snapver}}
|
||||||
%define eggver %{rpmver}%{?snapver:_%{snapver}}
|
%define eggver %{rpmver}%{?snapver:_%{snapver}}
|
||||||
|
|
||||||
@ -27,7 +29,7 @@
|
|||||||
Summary: The RPM package management system
|
Summary: The RPM package management system
|
||||||
Name: rpm
|
Name: rpm
|
||||||
Version: %{rpmver}
|
Version: %{rpmver}
|
||||||
Release: %{?snapver:0.%{snapver}.}7%{?dist}
|
Release: %{?snapver:0.%{snapver}.}1%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.rpm.org/
|
Url: http://www.rpm.org/
|
||||||
Source0: http://rpm.org/releases/rpm-4.12.x/%{name}-%{srcver}.tar.bz2
|
Source0: http://rpm.org/releases/rpm-4.12.x/%{name}-%{srcver}.tar.bz2
|
||||||
@ -50,13 +52,6 @@ Patch4: rpm-4.8.1-use-gpg2.patch
|
|||||||
Patch5: rpm-4.12.0-rpm2cpio-hack.patch
|
Patch5: rpm-4.12.0-rpm2cpio-hack.patch
|
||||||
|
|
||||||
# Patches already upstream:
|
# Patches already upstream:
|
||||||
Patch100: rpm-4.12.90-braces-expansion.patch
|
|
||||||
Patch101: rpm-4.12.90-Fix-compressed-patches.patch
|
|
||||||
Patch102: rpm-4.12.90-fix-macro-warning.patch
|
|
||||||
Patch103: rpm-4.12.90-modify-rpmisglob.patch
|
|
||||||
Patch104: rpm-4.12.90-try-unglobbed.patch
|
|
||||||
Patch105: rpm-4.12.90-show-filetriggers.patch
|
|
||||||
Patch106: rpm-4.12.90-remove-pystring.patch
|
|
||||||
|
|
||||||
# These are not yet upstream
|
# These are not yet upstream
|
||||||
Patch302: rpm-4.7.1-geode-i686.patch
|
Patch302: rpm-4.7.1-geode-i686.patch
|
||||||
@ -137,6 +132,10 @@ BuildRequires: libubsan
|
|||||||
%global sanitizer_flags -fsanitize=address -fsanitize=undefined
|
%global sanitizer_flags -fsanitize=address -fsanitize=undefined
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with libimaevm}
|
||||||
|
BuildRequires: ima-evm-utils
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The RPM Package Manager (RPM) is a powerful command line driven
|
The RPM Package Manager (RPM) is a powerful command line driven
|
||||||
package management system capable of installing, uninstalling,
|
package management system capable of installing, uninstalling,
|
||||||
@ -288,6 +287,15 @@ Requires: rpm-libs%{_isa} = %{version}-%{release}
|
|||||||
|
|
||||||
%description plugin-systemd-inhibit
|
%description plugin-systemd-inhibit
|
||||||
%{summary}
|
%{summary}
|
||||||
|
|
||||||
|
%package plugin-ima
|
||||||
|
Summary: Rpm plugin ima file signatures
|
||||||
|
Group: System Environment/Base
|
||||||
|
Requires: rpm-libs%{_isa} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description plugin-ima
|
||||||
|
%{summary}
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
@ -473,6 +481,9 @@ exit 0
|
|||||||
|
|
||||||
%files plugin-systemd-inhibit
|
%files plugin-systemd-inhibit
|
||||||
%{_libdir}/rpm-plugins/systemd_inhibit.so
|
%{_libdir}/rpm-plugins/systemd_inhibit.so
|
||||||
|
|
||||||
|
%files plugin-ima
|
||||||
|
%{_libdir}/rpm-plugins/ima.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files build-libs
|
%files build-libs
|
||||||
@ -541,6 +552,10 @@ exit 0
|
|||||||
%doc doc/librpm/html/*
|
%doc doc/librpm/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
|
||||||
|
* Wed Sep 02 2015 Florian Festi <ffesti@rpm.org> - 4.13.0-0.rc1.1
|
||||||
|
- Update to upstream rc1 release
|
||||||
|
|
||||||
* Mon Aug 10 2015 Lubos Kardos <lkardos@redhat.com> - 4.12.90-7
|
* Mon Aug 10 2015 Lubos Kardos <lkardos@redhat.com> - 4.12.90-7
|
||||||
- Fix last occurence of PyString
|
- Fix last occurence of PyString
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user