Accepting request 755878 from Base:System
- update to rpm-4.15.1 OBS-URL: https://build.opensuse.org/request/show/755878 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpm?expand=0&rev=276
This commit is contained in:
commit
9b2abd1362
@ -1,275 +0,0 @@
|
|||||||
From 5bc138a7663e471edad24cc662366bc743d3d3e0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Panu Matilainen <pmatilai@redhat.com>
|
|
||||||
Date: Fri, 10 May 2019 13:10:00 +0300
|
|
||||||
Subject: [PATCH 1/2] Stop papering over the security disaster known as prelink
|
|
||||||
|
|
||||||
Back in the turn of the century somebody thought it was a neat idea
|
|
||||||
to completely compromise system security to improve program start-up
|
|
||||||
start-up times a wee bit. Since then, people have thankfully started
|
|
||||||
coming to their senses and removed prelink from distros entirely.
|
|
||||||
|
|
||||||
Lets stop papering over the security disaster: we obviously cannot
|
|
||||||
stop people from using prelink, but instead of trying to undo the
|
|
||||||
damage for verification purposes, we'll now report such a system as
|
|
||||||
compromised. Which is how it should be, IMNSHO.
|
|
||||||
|
|
||||||
This eliminates a whole lot of extra junk from each and every file
|
|
||||||
digest calculation that we do, so it might even show up on somebodys
|
|
||||||
performance charts. It also gets rid of libelf dependency outside
|
|
||||||
librpmbuild, which is a nice little bonus.
|
|
||||||
|
|
||||||
Inspired by a patch to eliminate a rendundant double open of regular
|
|
||||||
files in rpmDoDigest() from Denys Vlasenko, taken a little further...
|
|
||||||
---
|
|
||||||
macros.in | 10 ---
|
|
||||||
rpmio/Makefile.am | 1 -
|
|
||||||
rpmio/rpmfileutil.c | 176 +++-----------------------------------------
|
|
||||||
3 files changed, 9 insertions(+), 178 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/macros.in b/macros.in
|
|
||||||
index a6069ee4d..32c453479 100644
|
|
||||||
--- a/macros.in
|
|
||||||
+++ b/macros.in
|
|
||||||
@@ -685,16 +685,6 @@ package or when debugging this package.\
|
|
||||||
# gpg --batch --no-verbose --verify --no-secmem-warning \
|
|
||||||
# %{__signature_filename} %{__plaintext_filename}
|
|
||||||
#
|
|
||||||
-# XXX rpm-4.1 verifies prelinked libraries using a prelink undo helper.
|
|
||||||
-# Normally this macro is defined in /etc/rpm/macros.prelink, installed
|
|
||||||
-# with the prelink package. If the macro is undefined, then prelinked
|
|
||||||
-# shared libraries contents are MD5 digest verified (as usual), rather
|
|
||||||
-# than MD5 verifying the output of the prelink undo helper.
|
|
||||||
-#
|
|
||||||
-# Note: The 2nd token is used as argv[0] and "library" is a
|
|
||||||
-# placeholder that will be deleted and replaced with the appropriate
|
|
||||||
-# library file path.
|
|
||||||
-#%__prelink_undo_cmd /usr/sbin/prelink prelink -y library
|
|
||||||
|
|
||||||
# Horowitz Key Protocol server configuration
|
|
||||||
#
|
|
||||||
diff --git a/rpmio/Makefile.am b/rpmio/Makefile.am
|
|
||||||
index 6024ae4e2..cedd784de 100644
|
|
||||||
--- a/rpmio/Makefile.am
|
|
||||||
+++ b/rpmio/Makefile.am
|
|
||||||
@@ -42,7 +42,6 @@ librpmio_la_LIBADD = \
|
|
||||||
@WITH_OPENSSL_LIB@ \
|
|
||||||
@WITH_BZ2_LIB@ \
|
|
||||||
@WITH_ZLIB_LIB@ \
|
|
||||||
- @WITH_LIBELF_LIB@ \
|
|
||||||
@WITH_POPT_LIB@ \
|
|
||||||
@WITH_LZMA_LIB@ \
|
|
||||||
$(ZSTD_LIBS) \
|
|
||||||
diff --git a/rpmio/rpmfileutil.c b/rpmio/rpmfileutil.c
|
|
||||||
index 98f19e8a6..4349c64a7 100644
|
|
||||||
--- a/rpmio/rpmfileutil.c
|
|
||||||
+++ b/rpmio/rpmfileutil.c
|
|
||||||
@@ -1,18 +1,5 @@
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
-#if HAVE_GELF_H
|
|
||||||
-
|
|
||||||
-#include <gelf.h>
|
|
||||||
-
|
|
||||||
-#if !defined(DT_GNU_PRELINKED)
|
|
||||||
-#define DT_GNU_PRELINKED 0x6ffffdf5
|
|
||||||
-#endif
|
|
||||||
-#if !defined(DT_GNU_LIBLIST)
|
|
||||||
-#define DT_GNU_LIBLIST 0x6ffffef9
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
@@ -34,178 +21,33 @@
|
|
||||||
static const char *rpm_config_dir = NULL;
|
|
||||||
static pthread_once_t configDirSet = PTHREAD_ONCE_INIT;
|
|
||||||
|
|
||||||
-static int is_prelinked(int fdno)
|
|
||||||
-{
|
|
||||||
- int prelinked = 0;
|
|
||||||
-#if HAVE_GELF_H && HAVE_LIBELF
|
|
||||||
- Elf *elf = NULL;
|
|
||||||
- Elf_Scn *scn = NULL;
|
|
||||||
- Elf_Data *data = NULL;
|
|
||||||
- GElf_Ehdr ehdr;
|
|
||||||
- GElf_Shdr shdr;
|
|
||||||
- GElf_Dyn dyn;
|
|
||||||
-
|
|
||||||
- (void) elf_version(EV_CURRENT);
|
|
||||||
-
|
|
||||||
- if ((elf = elf_begin (fdno, ELF_C_READ, NULL)) == NULL ||
|
|
||||||
- elf_kind(elf) != ELF_K_ELF || gelf_getehdr(elf, &ehdr) == NULL ||
|
|
||||||
- !(ehdr.e_type == ET_DYN || ehdr.e_type == ET_EXEC))
|
|
||||||
- goto exit;
|
|
||||||
-
|
|
||||||
- while (!prelinked && (scn = elf_nextscn(elf, scn)) != NULL) {
|
|
||||||
- (void) gelf_getshdr(scn, &shdr);
|
|
||||||
- if (shdr.sh_type != SHT_DYNAMIC || shdr.sh_entsize == 0)
|
|
||||||
- continue;
|
|
||||||
- while (!prelinked && (data = elf_getdata (scn, data)) != NULL) {
|
|
||||||
- int maxndx = data->d_size / shdr.sh_entsize;
|
|
||||||
-
|
|
||||||
- for (int ndx = 0; ndx < maxndx; ++ndx) {
|
|
||||||
- (void) gelf_getdyn (data, ndx, &dyn);
|
|
||||||
- if (!(dyn.d_tag == DT_GNU_PRELINKED || dyn.d_tag == DT_GNU_LIBLIST))
|
|
||||||
- continue;
|
|
||||||
- prelinked = 1;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
-exit:
|
|
||||||
- if (elf) (void) elf_end(elf);
|
|
||||||
-#endif
|
|
||||||
- return prelinked;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int open_dso(const char * path, pid_t * pidp, rpm_loff_t *fsizep)
|
|
||||||
-{
|
|
||||||
- static const char * cmd = NULL;
|
|
||||||
- static int initted = 0;
|
|
||||||
- int fdno;
|
|
||||||
-
|
|
||||||
- if (!initted) {
|
|
||||||
- cmd = rpmExpand("%{?__prelink_undo_cmd}", NULL);
|
|
||||||
- initted++;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (pidp) *pidp = 0;
|
|
||||||
-
|
|
||||||
- if (fsizep) {
|
|
||||||
- struct stat sb, * st = &sb;
|
|
||||||
- if (stat(path, st) < 0)
|
|
||||||
- return -1;
|
|
||||||
- *fsizep = st->st_size;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- fdno = open(path, O_RDONLY);
|
|
||||||
- if (fdno < 0)
|
|
||||||
- return fdno;
|
|
||||||
-
|
|
||||||
- if (!(cmd && *cmd))
|
|
||||||
- return fdno;
|
|
||||||
-
|
|
||||||
- if (pidp != NULL && is_prelinked(fdno)) {
|
|
||||||
- int pipes[2];
|
|
||||||
- pid_t pid;
|
|
||||||
-
|
|
||||||
- close(fdno);
|
|
||||||
- pipes[0] = pipes[1] = -1;
|
|
||||||
- if (pipe(pipes) < 0)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
- pid = fork();
|
|
||||||
- if (pid < 0) {
|
|
||||||
- close(pipes[0]);
|
|
||||||
- close(pipes[1]);
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (pid == 0) {
|
|
||||||
- ARGV_t av, lib;
|
|
||||||
- int dfd;
|
|
||||||
- argvSplit(&av, cmd, " ");
|
|
||||||
-
|
|
||||||
- close(pipes[0]);
|
|
||||||
- dfd = dup2(pipes[1], STDOUT_FILENO);
|
|
||||||
- close(pipes[1]);
|
|
||||||
- if (dfd >= 0 && (lib = argvSearch(av, "library", NULL)) != NULL) {
|
|
||||||
- *lib = (char *) path;
|
|
||||||
- unsetenv("MALLOC_CHECK_");
|
|
||||||
- execve(av[0], av+1, environ);
|
|
||||||
- }
|
|
||||||
- _exit(127); /* not normally reached */
|
|
||||||
- } else {
|
|
||||||
- *pidp = pid;
|
|
||||||
- fdno = pipes[0];
|
|
||||||
- close(pipes[1]);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return fdno;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
int rpmDoDigest(int algo, const char * fn,int asAscii,
|
|
||||||
unsigned char * digest, rpm_loff_t * fsizep)
|
|
||||||
{
|
|
||||||
- const char * path;
|
|
||||||
- urltype ut = urlPath(fn, &path);
|
|
||||||
unsigned char * dig = NULL;
|
|
||||||
size_t diglen, buflen = 32 * BUFSIZ;
|
|
||||||
unsigned char *buf = xmalloc(buflen);
|
|
||||||
- FD_t fd;
|
|
||||||
rpm_loff_t fsize = 0;
|
|
||||||
- pid_t pid = 0;
|
|
||||||
int rc = 0;
|
|
||||||
- int fdno;
|
|
||||||
|
|
||||||
- fdno = open_dso(path, &pid, &fsize);
|
|
||||||
- if (fdno < 0) {
|
|
||||||
- rc = 1;
|
|
||||||
- goto exit;
|
|
||||||
- }
|
|
||||||
+ FD_t fd = Fopen(fn, "r.ufdio");
|
|
||||||
|
|
||||||
- switch (ut) {
|
|
||||||
- case URL_IS_PATH:
|
|
||||||
- case URL_IS_UNKNOWN:
|
|
||||||
- case URL_IS_HTTPS:
|
|
||||||
- case URL_IS_HTTP:
|
|
||||||
- case URL_IS_FTP:
|
|
||||||
- case URL_IS_HKP:
|
|
||||||
- case URL_IS_DASH:
|
|
||||||
- default:
|
|
||||||
- /* Either use the pipe to prelink -y or open the URL. */
|
|
||||||
- fd = (pid != 0) ? fdDup(fdno) : Fopen(fn, "r.ufdio");
|
|
||||||
- (void) close(fdno);
|
|
||||||
- if (fd == NULL || Ferror(fd)) {
|
|
||||||
- rc = 1;
|
|
||||||
- if (fd != NULL)
|
|
||||||
- (void) Fclose(fd);
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ if (fd) {
|
|
||||||
fdInitDigest(fd, algo, 0);
|
|
||||||
- fsize = 0;
|
|
||||||
while ((rc = Fread(buf, sizeof(*buf), buflen, fd)) > 0)
|
|
||||||
fsize += rc;
|
|
||||||
fdFiniDigest(fd, algo, (void **)&dig, &diglen, asAscii);
|
|
||||||
- if (dig == NULL || Ferror(fd))
|
|
||||||
- rc = 1;
|
|
||||||
-
|
|
||||||
- (void) Fclose(fd);
|
|
||||||
- break;
|
|
||||||
+ Fclose(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* Reap the prelink -y helper. */
|
|
||||||
- if (pid) {
|
|
||||||
- int status;
|
|
||||||
- (void) waitpid(pid, &status, 0);
|
|
||||||
- if (!WIFEXITED(status) || WEXITSTATUS(status))
|
|
||||||
- rc = 1;
|
|
||||||
+ if (dig == NULL || Ferror(fd)) {
|
|
||||||
+ rc = 1;
|
|
||||||
+ } else {
|
|
||||||
+ memcpy(digest, dig, diglen);
|
|
||||||
+ if (fsizep)
|
|
||||||
+ *fsizep = fsize;
|
|
||||||
}
|
|
||||||
|
|
||||||
-exit:
|
|
||||||
- if (fsizep)
|
|
||||||
- *fsizep = fsize;
|
|
||||||
- if (!rc)
|
|
||||||
- memcpy(digest, dig, diglen);
|
|
||||||
dig = _free(dig);
|
|
||||||
free(buf);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From a35fbd503d944fa1d2a0e893d2ca97f244299b35 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Panu Matilainen <pmatilai@redhat.com>
|
|
||||||
Date: Tue, 14 May 2019 13:55:52 +0300
|
|
||||||
Subject: [PATCH 2/2] Fix use-after-free introduced in
|
|
||||||
0f21bdd0d7b2c45564ddb5a24bbebd530867bd54
|
|
||||||
|
|
||||||
Unlike typical fooFree() functions in rpm, Fclose() doesn't set the
|
|
||||||
pointer to NULL so there's a use-after-free in checking for Ferror()
|
|
||||||
that segfaults and stuff. Delay Fclose() until the end so we actually
|
|
||||||
catch io errors too, that was another thing that went missing in
|
|
||||||
commit 0f21bdd0d7b2c45564ddb5a24bbebd530867bd54 (although it would've
|
|
||||||
probably caused an error via null digest instead)
|
|
||||||
---
|
|
||||||
rpmio/rpmfileutil.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/rpmio/rpmfileutil.c b/rpmio/rpmfileutil.c
|
|
||||||
index 4349c64a7..16a954a10 100644
|
|
||||||
--- a/rpmio/rpmfileutil.c
|
|
||||||
+++ b/rpmio/rpmfileutil.c
|
|
||||||
@@ -37,7 +37,6 @@ int rpmDoDigest(int algo, const char * fn,int asAscii,
|
|
||||||
while ((rc = Fread(buf, sizeof(*buf), buflen, fd)) > 0)
|
|
||||||
fsize += rc;
|
|
||||||
fdFiniDigest(fd, algo, (void **)&dig, &diglen, asAscii);
|
|
||||||
- Fclose(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dig == NULL || Ferror(fd)) {
|
|
||||||
@@ -50,6 +49,7 @@ int rpmDoDigest(int algo, const char * fn,int asAscii,
|
|
||||||
|
|
||||||
dig = _free(dig);
|
|
||||||
free(buf);
|
|
||||||
+ Fclose(fd);
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From 9a50846ceeef2add2344dd463c5562bd69496a23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Panu Matilainen <pmatilai@redhat.com>
|
|
||||||
Date: Mon, 6 May 2019 14:44:30 +0300
|
|
||||||
Subject: [PATCH] Adopt language-specific %build_fooflags macros from Fedora
|
|
||||||
|
|
||||||
%{optflags} has been the catchall for all compiler options but this
|
|
||||||
is quite limiting as there's no way to add for example C++ specific
|
|
||||||
options distro-wide. This adds separate %build_cflags, %build_cxxflags,
|
|
||||||
%build_fflags for the gcc-supported languages, and additionally
|
|
||||||
%build_ldflags for distro-wide LDFLAGS setting.
|
|
||||||
|
|
||||||
Based on Florian Weimer's work in Fedoras redhat-rpm-config macros.
|
|
||||||
---
|
|
||||||
macros.in | 26 +++++++++++++++++++++++---
|
|
||||||
1 file changed, 23 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/macros.in b/macros.in
|
|
||||||
index 2ab108776..b6cb52951 100644
|
|
||||||
--- a/macros.in
|
|
||||||
+++ b/macros.in
|
|
||||||
@@ -999,6 +999,24 @@ package or when debugging this package.\
|
|
||||||
%_target_vendor %{_host_vendor}
|
|
||||||
%_target_os %{_host_os}
|
|
||||||
|
|
||||||
+#==============================================================================
|
|
||||||
+# ---- compiler flags.
|
|
||||||
+
|
|
||||||
+# C compiler flags. This is traditionally called CFLAGS in makefiles.
|
|
||||||
+# Historically also available as %%{optflags}, and %%build sets the
|
|
||||||
+# environment variable RPM_OPT_FLAGS to this value.
|
|
||||||
+%build_cflags %{optflags}
|
|
||||||
+
|
|
||||||
+# C++ compiler flags. This is traditionally called CXXFLAGS in makefiles.
|
|
||||||
+%build_cxxflags %{optflags}
|
|
||||||
+
|
|
||||||
+# Fortran compiler flags. Makefiles use both FFLAGS and FCFLAGS as
|
|
||||||
+# the corresponding variable names.
|
|
||||||
+%build_fflags %{optflags} %{?_fmoddir:-I%{_fmoddir}}
|
|
||||||
+
|
|
||||||
+# Link editor flags. This is usually called LDFLAGS in makefiles.
|
|
||||||
+#%build_ldflags -Wl,-z,relro %{?_lto_cflags}
|
|
||||||
+
|
|
||||||
#==============================================================================
|
|
||||||
# ---- specfile macros.
|
|
||||||
# Macro(s) here can be used reliably for reproducible builds.
|
|
||||||
@@ -1010,9 +1028,11 @@ package or when debugging this package.\
|
|
||||||
#
|
|
||||||
%_configure ./configure
|
|
||||||
%configure \
|
|
||||||
- CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
|
|
||||||
- CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
|
|
||||||
- FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \
|
|
||||||
+ CFLAGS="${CFLAGS:-%{?build_cflags}}" ; export CFLAGS ; \
|
|
||||||
+ CXXFLAGS="${CXXFLAGS:-%{?build_cxxflags}}" ; export CXXFLAGS ; \
|
|
||||||
+ FFLAGS="${FFLAGS:-%{?build_fflags}}" ; export FFLAGS ; \
|
|
||||||
+ FCFLAGS="${FCFLAGS:-%{?build_fflags}}" ; export FCFLAGS ; \
|
|
||||||
+ LDFLAGS="${LDFLAGS:-%{?build_ldflags}}" ; export LDFLAGS ; \
|
|
||||||
%{_configure} --host=%{_host} --build=%{_build} \\\
|
|
||||||
--program-prefix=%{?_program_prefix} \\\
|
|
||||||
--disable-dependency-tracking \\\
|
|
||||||
--
|
|
||||||
2.21.0
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
|||||||
Index: build/parseBuildInstallClean.c
|
--- ./build/parseSpec.c.orig 2019-10-02 12:38:51.836127743 +0000
|
||||||
===================================================================
|
+++ ./build/parseSpec.c 2019-10-02 12:52:33.818447657 +0000
|
||||||
--- build/parseBuildInstallClean.c.orig
|
@@ -926,7 +926,24 @@ static rpmSpec parseSpec(const char *spe
|
||||||
+++ build/parseBuildInstallClean.c
|
&(spec->buildrequires));
|
||||||
@@ -46,7 +46,22 @@ int parseBuildInstallClean(rpmSpec spec,
|
break;
|
||||||
} else if (rc < 0) {
|
case PART_BUILD:
|
||||||
goto exit;
|
- parsePart = parseSimpleScript(spec, "%build", &(spec->build));
|
||||||
}
|
+ if (spec->build) {
|
||||||
-
|
+ rpmlog(RPMLOG_ERR, _("line %d: second %s\n"), spec->lineNum, "%build");
|
||||||
+
|
+ parsePart = PART_ERROR;
|
||||||
+ if (parsePart == PART_BUILD) {
|
+ break;
|
||||||
+ char* buf = strdup(
|
+ }
|
||||||
+ "ref=/usr/lib/rpm\n"
|
+ spec->build = newStringBuf();
|
||||||
+ "for s in guess sub; do\n"
|
+ appendLineStringBuf(spec->build,
|
||||||
+ " for c in $(find -maxdepth 8 -name \"config.$s\"); do\n"
|
+ "ref=/usr/lib/rpm\n"
|
||||||
+ " grep -q config-patches@ $c || continue\n"
|
+ "for s in guess sub; do\n"
|
||||||
+ " grep -q aarch64 $c || install -m 755 $ref/config.$s $c\n"
|
+ " for c in $(find -maxdepth 8 -name \"config.$s\"); do\n"
|
||||||
+ " grep -q ppc64le $c || install -m 755 $ref/config.$s $c\n"
|
+ " grep -q config-patches@ $c || continue\n"
|
||||||
+ " done\n"
|
+ " grep -q aarch64 $c || install -m 755 $ref/config.$s $c\n"
|
||||||
+ "done\n"
|
+ " grep -q ppc64le $c || install -m 755 $ref/config.$s $c\n"
|
||||||
+ );
|
+ " grep -q 'riscv64[-:]' $c || install -m 755 $ref/config.$s $c\n"
|
||||||
+ appendLineStringBuf(*sbp, buf);
|
+ " done\n"
|
||||||
+ free(buf);
|
+ "done\n"
|
||||||
+ }
|
+ );
|
||||||
+
|
+ parsePart = parseLines(spec, STRIP_NOTHING, NULL, &(spec->build));
|
||||||
while (! (nextPart = isPart(spec->line))) {
|
break;
|
||||||
appendStringBuf(*sbp, spec->line);
|
case PART_INSTALL:
|
||||||
if ((rc = readLine(spec, STRIP_NOTHING)) > 0) {
|
parsePart = parseSimpleScript(spec, "%install", &(spec->install));
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
--- ./build/parseBuildInstallClean.c.orig 2018-02-22 10:11:50.088160024 +0000
|
|
||||||
+++ ./build/parseBuildInstallClean.c 2018-02-22 10:11:37.592198130 +0000
|
|
||||||
@@ -55,6 +55,7 @@ int parseBuildInstallClean(rpmSpec spec,
|
|
||||||
" grep -q config-patches@ $c || continue\n"
|
|
||||||
" grep -q aarch64 $c || install -m 755 $ref/config.$s $c\n"
|
|
||||||
" grep -q ppc64le $c || install -m 755 $ref/config.$s $c\n"
|
|
||||||
+ " grep -q 'riscv64[-:]' $c || install -m 755 $ref/config.$s $c\n"
|
|
||||||
" done\n"
|
|
||||||
"done\n"
|
|
||||||
);
|
|
@ -1,10 +1,10 @@
|
|||||||
--- scripts/brp-compress 2013-09-02 19:00:09.000000000 +0200
|
--- ./scripts/brp-compress.orig 2019-10-02 12:09:46.263708258 +0000
|
||||||
+++ scripts/brp-compress 2013-09-02 19:03:12.000000000 +0200
|
+++ ./scripts/brp-compress 2019-10-02 12:09:52.055696056 +0000
|
||||||
@@ -47,6 +47,7 @@ do
|
@@ -50,6 +50,7 @@ do
|
||||||
find $d -type f ! -name dir | while read f
|
find $d -type f ! -name dir | while read f
|
||||||
do
|
do
|
||||||
[ -f "$f" ] || continue
|
[ -f "$f" ] || continue
|
||||||
+ case $(file "$f") in *"image data"*) continue;; esac
|
+ case $(file "$f") in *"image data"*) continue;; esac
|
||||||
|
|
||||||
case "$f" in
|
case "$f" in
|
||||||
*.gz|*.Z) gunzip "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
*.gz|*.Z) gunzip -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
--- ./scripts/brp-compress.orig 2018-01-31 13:07:37.130104408 +0000
|
--- ./scripts/brp-compress.orig 2019-10-02 09:59:40.403995534 +0000
|
||||||
+++ ./scripts/brp-compress 2018-01-31 13:07:16.234159981 +0000
|
+++ ./scripts/brp-compress 2019-10-02 10:03:27.075537047 +0000
|
||||||
@@ -5,51 +5,78 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD
|
@@ -5,6 +5,9 @@ if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_B
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
+LC_ALL=
|
+LC_ALL=
|
||||||
+LANG=
|
+LANG=
|
||||||
+LC_TIME=POSIX
|
+LC_TIME=POSIX
|
||||||
+
|
PREFIX=${1:-/usr}
|
||||||
cd "$RPM_BUILD_ROOT"
|
|
||||||
|
|
||||||
# Compress man pages
|
cd "$RPM_BUILD_ROOT"
|
||||||
|
@@ -13,6 +16,29 @@ cd "$RPM_BUILD_ROOT"
|
||||||
COMPRESS=${COMPRESS:-gzip -9 -n}
|
COMPRESS=${COMPRESS:-gzip -9 -n}
|
||||||
COMPRESS_EXT=${COMPRESS_EXT:-.gz}
|
COMPRESS_EXT=${COMPRESS_EXT:-.gz}
|
||||||
|
|
||||||
@ -37,10 +37,11 @@
|
|||||||
+ done
|
+ done
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
for d in ./usr/man/man* ./usr/man/*/man* ./usr/info \
|
for d in .${PREFIX}/man/man* .${PREFIX}/man/*/man* .${PREFIX}/info \
|
||||||
./usr/share/man/man* ./usr/share/man/*/man* ./usr/share/info \
|
.${PREFIX}/share/man/man* .${PREFIX}/share/man/*/man* \
|
||||||
./usr/kerberos/man ./usr/X11R6/man/man* ./usr/lib/perl5/man/man* \
|
.${PREFIX}/share/info .${PREFIX}/kerberos/man \
|
||||||
./usr/share/doc/*/man/man* ./usr/lib/*/man/man* ./usr/share/fish/man/man*
|
@@ -21,39 +47,39 @@ for d in .${PREFIX}/man/man* .${PREFIX}/
|
||||||
|
.${PREFIX}/share/fish/man/man*
|
||||||
do
|
do
|
||||||
[ -d $d ] || continue
|
[ -d $d ] || continue
|
||||||
- for f in `find $d -type f ! -name dir`
|
- for f in `find $d -type f ! -name dir`
|
||||||
@ -52,11 +53,10 @@
|
|||||||
- *.gz|*.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
- *.gz|*.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
||||||
- *.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
- *.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
||||||
- *.xz|*.lzma) unxz -f $f; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
- *.xz|*.lzma) unxz -f $f; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
||||||
- *) b=$f;;
|
+ *.gz|*.Z) gunzip -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
||||||
+ *.gz|*.Z) gunzip "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
+ *.bz2) bunzip2 -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
||||||
+ *.bz2) bunzip2 "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
+ *.xz|*.lzma) unxz -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
||||||
+ *.xz|*.lzma) unxz "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
*) b=$f;;
|
||||||
+ *) b="$f";;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
- $COMPRESS $b </dev/null 2>/dev/null || {
|
- $COMPRESS $b </dev/null 2>/dev/null || {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- ./build/parseReqs.c.orig 2017-10-05 10:04:56.887602165 +0000
|
--- ./build/parseReqs.c.orig 2019-06-26 14:17:31.396985719 +0000
|
||||||
+++ ./build/parseReqs.c 2017-12-01 16:00:06.956343096 +0000
|
+++ ./build/parseReqs.c 2019-10-02 12:10:51.879570016 +0000
|
||||||
@@ -42,7 +42,7 @@ static rpmRC checkEpoch(const char *s, c
|
@@ -42,7 +42,7 @@ static rpmRC checkEpoch(const char *s, c
|
||||||
return RPMRC_OK;
|
return RPMRC_OK;
|
||||||
}
|
}
|
||||||
@ -54,11 +54,11 @@
|
|||||||
+ if (checkDep(spec, tagflags, N, EVR, &emsg))
|
+ if (checkDep(spec, tagflags, N, EVR, &emsg))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
if (nametag == RPMTAG_FILETRIGGERNAME ||
|
if (nametag == RPMTAG_OBSOLETENAME) {
|
||||||
--- ./macros.in.orig 2017-12-01 16:00:02.705355493 +0000
|
--- ./macros.in.orig 2019-10-02 12:10:45.431583601 +0000
|
||||||
+++ ./macros.in 2017-12-01 16:00:06.957343106 +0000
|
+++ ./macros.in 2019-10-02 12:10:51.879570016 +0000
|
||||||
@@ -456,7 +456,7 @@ package or when debugging this package.\
|
@@ -452,7 +452,7 @@ package or when debugging this package.\
|
||||||
%_invalid_encoding_terminates_build 0
|
%_invalid_encoding_terminates_build 1
|
||||||
|
|
||||||
# Should invalid version format in requires, provides, ... terminate a build?
|
# Should invalid version format in requires, provides, ... terminate a build?
|
||||||
-%_wrong_version_format_terminate_build 1
|
-%_wrong_version_format_terminate_build 1
|
||||||
|
@ -1,94 +0,0 @@
|
|||||||
--- ./tools/debugedit.c.orig 2017-12-15 12:17:02.564975374 +0000
|
|
||||||
+++ ./tools/debugedit.c 2017-12-15 12:17:29.058901941 +0000
|
|
||||||
@@ -71,6 +71,14 @@
|
|
||||||
#define DW_FORM_ref_udata 0x15
|
|
||||||
#define DW_FORM_indirect 0x16
|
|
||||||
|
|
||||||
+#define DW_MACRO_GNU_define 1
|
|
||||||
+#define DW_MACRO_GNU_undef 2
|
|
||||||
+#define DW_MACRO_GNU_start_file 3
|
|
||||||
+#define DW_MACRO_GNU_end_file 4
|
|
||||||
+#define DW_MACRO_GNU_define_indirect 5
|
|
||||||
+#define DW_MACRO_GNU_undef_indirect 6
|
|
||||||
+#define DW_MACRO_GNU_transparent_include 7
|
|
||||||
+
|
|
||||||
/* Unfortunately strtab manipulation functions were only officially added
|
|
||||||
to elfutils libdw in 0.167. Before that there were internal unsupported
|
|
||||||
ebl variants. While libebl.h isn't supported we'll try to use it anyway
|
|
||||||
@@ -2209,6 +2217,67 @@ edit_dwarf2 (DSO *dso)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* the macro section also contains offsets into the str section,
|
|
||||||
+ * so we need to update those as well if we update the strings
|
|
||||||
+ */
|
|
||||||
+ if (need_strp_update && debug_sections[DEBUG_MACRO].data)
|
|
||||||
+ {
|
|
||||||
+ ptr = debug_sections[DEBUG_MACRO].data;
|
|
||||||
+ endsec = ptr + debug_sections[DEBUG_MACRO].size;
|
|
||||||
+ int op = 0, macro_version, macro_flags;
|
|
||||||
+
|
|
||||||
+ while (ptr < endsec)
|
|
||||||
+ {
|
|
||||||
+ if (!op)
|
|
||||||
+ {
|
|
||||||
+ macro_version = read_16 (ptr);
|
|
||||||
+ macro_flags = read_8 (ptr);
|
|
||||||
+ if (macro_version != 4 || (macro_flags & ~2) != 0)
|
|
||||||
+ error (1, 0, "unhandled .debug_macro version/flags");
|
|
||||||
+ if ((macro_flags & 2) != 0)
|
|
||||||
+ ptr += 4;
|
|
||||||
+ }
|
|
||||||
+ op = read_8 (ptr);
|
|
||||||
+ if (!op)
|
|
||||||
+ continue;
|
|
||||||
+ switch(op)
|
|
||||||
+ {
|
|
||||||
+ case DW_MACRO_GNU_define:
|
|
||||||
+ case DW_MACRO_GNU_undef:
|
|
||||||
+ read_uleb128 (ptr);
|
|
||||||
+ ptr = (unsigned char *) strchr ((char *) ptr, '\0') + 1;
|
|
||||||
+ break;
|
|
||||||
+ case DW_MACRO_GNU_start_file:
|
|
||||||
+ read_uleb128 (ptr);
|
|
||||||
+ read_uleb128 (ptr);
|
|
||||||
+ break;
|
|
||||||
+ case DW_MACRO_GNU_define_indirect:
|
|
||||||
+ case DW_MACRO_GNU_undef_indirect:
|
|
||||||
+ read_uleb128 (ptr);
|
|
||||||
+ if (phase == 0)
|
|
||||||
+ {
|
|
||||||
+ size_t idx = read_32 (ptr);
|
|
||||||
+ record_existing_string_entry_idx (&dso->strings, idx);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ struct stridxentry *entry;
|
|
||||||
+ size_t idx, new_idx;
|
|
||||||
+ idx = do_read_32 (ptr);
|
|
||||||
+ entry = string_find_entry (&dso->strings, idx);
|
|
||||||
+ new_idx = strent_offset (entry->entry);
|
|
||||||
+ write_32 (ptr, new_idx);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case DW_MACRO_GNU_transparent_include:
|
|
||||||
+ ptr += 4;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Same for the debug_str section. Make sure everything is
|
|
||||||
in place for phase 1 updating of debug_info
|
|
||||||
references. */
|
|
||||||
@@ -2238,6 +2307,8 @@ edit_dwarf2 (DSO *dso)
|
|
||||||
new strp, strings and/or linep offsets. */
|
|
||||||
if (need_strp_update || need_string_replacement || need_stmt_update)
|
|
||||||
dirty_section (DEBUG_INFO);
|
|
||||||
+ if (need_strp_update)
|
|
||||||
+ dirty_section (DEBUG_MACRO);
|
|
||||||
|
|
||||||
/* Update any debug_info relocations addends we might have touched. */
|
|
||||||
if (relbuf != NULL && reltype == SHT_RELA)
|
|
@ -1,8 +1,8 @@
|
|||||||
Make debugedit build without dwarf.h
|
Make debugedit build without dwarf.h
|
||||||
|
|
||||||
--- ./Makefile.am.orig 2017-12-01 14:15:13.963574699 +0000
|
--- ./Makefile.am.orig 2019-06-26 14:17:31.394985722 +0000
|
||||||
+++ ./Makefile.am 2017-12-01 14:16:10.634407860 +0000
|
+++ ./Makefile.am 2019-10-02 09:48:35.949316743 +0000
|
||||||
@@ -154,7 +154,6 @@ rpm2archive_LDADD += @WITH_POPT_LIB@ @WI
|
@@ -167,7 +167,6 @@ rpm2archive_LDADD += @WITH_POPT_LIB@ @WI
|
||||||
|
|
||||||
|
|
||||||
if LIBELF
|
if LIBELF
|
||||||
@ -10,7 +10,7 @@ Make debugedit build without dwarf.h
|
|||||||
if LIBDW
|
if LIBDW
|
||||||
rpmconfig_SCRIPTS += scripts/find-debuginfo.sh
|
rpmconfig_SCRIPTS += scripts/find-debuginfo.sh
|
||||||
|
|
||||||
@@ -168,7 +167,6 @@ else
|
@@ -181,7 +180,6 @@ else
|
||||||
debugedit_LDADD += @WITH_LIBDW_LIB@ -lebl
|
debugedit_LDADD += @WITH_LIBDW_LIB@ -lebl
|
||||||
endif # HAVE_LIBDW_STRTAB
|
endif # HAVE_LIBDW_STRTAB
|
||||||
endif # LIBDW
|
endif # LIBDW
|
||||||
@ -18,9 +18,9 @@ Make debugedit build without dwarf.h
|
|||||||
rpmlibexec_PROGRAMS += elfdeps
|
rpmlibexec_PROGRAMS += elfdeps
|
||||||
elfdeps_SOURCES = tools/elfdeps.c
|
elfdeps_SOURCES = tools/elfdeps.c
|
||||||
elfdeps_LDADD = rpmio/librpmio.la
|
elfdeps_LDADD = rpmio/librpmio.la
|
||||||
--- ./tools/debugedit.c.orig 2017-10-05 10:04:57.714602011 +0000
|
--- ./tools/debugedit.c.orig 2019-06-26 14:17:31.462985619 +0000
|
||||||
+++ ./tools/debugedit.c 2017-12-01 14:15:13.965574668 +0000
|
+++ ./tools/debugedit.c 2019-10-02 09:48:35.953316735 +0000
|
||||||
@@ -39,7 +39,37 @@
|
@@ -39,7 +39,45 @@
|
||||||
#include <popt.h>
|
#include <popt.h>
|
||||||
|
|
||||||
#include <gelf.h>
|
#include <gelf.h>
|
||||||
@ -56,6 +56,14 @@ Make debugedit build without dwarf.h
|
|||||||
+#define DW_FORM_ref8 0x14
|
+#define DW_FORM_ref8 0x14
|
||||||
+#define DW_FORM_ref_udata 0x15
|
+#define DW_FORM_ref_udata 0x15
|
||||||
+#define DW_FORM_indirect 0x16
|
+#define DW_FORM_indirect 0x16
|
||||||
|
+
|
||||||
|
+#define DW_MACRO_GNU_define 1
|
||||||
|
+#define DW_MACRO_GNU_undef 2
|
||||||
|
+#define DW_MACRO_GNU_start_file 3
|
||||||
|
+#define DW_MACRO_GNU_end_file 4
|
||||||
|
+#define DW_MACRO_GNU_define_indirect 5
|
||||||
|
+#define DW_MACRO_GNU_undef_indirect 6
|
||||||
|
+#define DW_MACRO_GNU_transparent_include 7
|
||||||
|
|
||||||
|
|
||||||
/* Unfortunately strtab manipulation functions were only officially added
|
/* Unfortunately strtab manipulation functions were only officially added
|
||||||
to elfutils libdw in 0.167. Before that there were internal unsupported
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
|
|
||||||
index 73275a11c..3dc438ce5 100755
|
|
||||||
--- scripts/find-debuginfo.sh
|
|
||||||
+++ scripts/find-debuginfo.sh
|
|
||||||
@@ -486,6 +486,7 @@ if $run_dwz \
|
|
||||||
&& [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then
|
|
||||||
readarray dwz_files < <(cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug | LC_ALL=C sort)
|
|
||||||
if [ ${#dwz_files[@]} -gt 0 ]; then
|
|
||||||
+ size_before=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1)
|
|
||||||
dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}"
|
|
||||||
dwz_multifile_suffix=
|
|
||||||
dwz_multifile_idx=0
|
|
||||||
@@ -508,6 +509,8 @@ if $run_dwz \
|
|
||||||
echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
+ size_after=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1)
|
|
||||||
+ echo "original debug info size: ${size_before}kB, size after compression: ${size_after}kB"
|
|
||||||
# Remove .dwz directory if empty
|
|
||||||
rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null
|
|
||||||
if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then
|
|
@ -1,21 +1,29 @@
|
|||||||
--- ./lib/transaction.c.orig 2018-07-02 14:51:41.328051671 +0000
|
--- ./lib/rpmscript.c.orig 2019-10-02 12:19:15.694519983 +0000
|
||||||
+++ ./lib/transaction.c 2018-07-02 14:51:46.264038824 +0000
|
+++ ./lib/rpmscript.c 2019-10-02 12:22:32.838112185 +0000
|
||||||
@@ -1462,7 +1462,9 @@ rpmRC runScript(rpmts ts, rpmte te, Head
|
@@ -411,7 +411,7 @@ rpmRC rpmScriptRun(rpmScript script, int
|
||||||
int warn_only = (stag != RPMTAG_PREIN &&
|
if (script == NULL) return RPMRC_OK;
|
||||||
stag != RPMTAG_PREUN &&
|
|
||||||
stag != RPMTAG_PRETRANS &&
|
|
||||||
- stag != RPMTAG_VERIFYSCRIPT);
|
|
||||||
+ stag != RPMTAG_VERIFYSCRIPT &&
|
|
||||||
+ !(stag == RPMTAG_POSTIN &&
|
|
||||||
+ rpmExpandNumeric("%{_fail_on_postinstall_errors}")));
|
|
||||||
rpmdb rdb = rpmtsGetRdb(ts);
|
|
||||||
|
|
||||||
/* Fake up a transaction element for triggers from rpmdb */
|
ARGV_t args = NULL;
|
||||||
--- ./macros.in.orig 2018-07-02 14:51:41.340051640 +0000
|
- rpmlogLvl lvl = (script->flags & RPMSCRIPT_FLAG_CRITICAL) ?
|
||||||
+++ ./macros.in 2018-07-02 14:51:46.264038824 +0000
|
+ rpmlogLvl lvl = (rpmScriptFlags(script) & RPMSCRIPT_FLAG_CRITICAL) ?
|
||||||
@@ -1290,5 +1290,10 @@ end}
|
RPMLOG_ERR : RPMLOG_WARNING;
|
||||||
%{expand:%__scm_setup_%{__scm} %{!-v:-q}}\
|
rpmRC rc;
|
||||||
%{!-N:%autopatch %{-v} %{-p:-p%{-p*}}}
|
int script_type = RPMSCRIPTLET_FORK | RPMSCRIPTLET_EXEC;
|
||||||
|
@@ -654,5 +654,8 @@ rpmscriptTypes rpmScriptType(rpmScript s
|
||||||
|
|
||||||
|
rpmscriptFlags rpmScriptFlags(rpmScript script)
|
||||||
|
{
|
||||||
|
- return (script != NULL) ? script->flags : 0;
|
||||||
|
+ rpmscriptFlags flags = (script != NULL) ? script->flags : 0;
|
||||||
|
+ if (script && script->tag == RPMTAG_POSTIN && rpmExpandNumeric("%{_fail_on_postinstall_errors}"))
|
||||||
|
+ flags |= RPMSCRIPT_FLAG_CRITICAL;
|
||||||
|
+ return flags;
|
||||||
|
}
|
||||||
|
--- ./macros.in.orig 2019-10-02 12:12:13.027399050 +0000
|
||||||
|
+++ ./macros.in 2019-10-02 12:12:19.799384783 +0000
|
||||||
|
@@ -1318,5 +1318,10 @@ end}
|
||||||
|
%requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||||
|
%requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||||
|
|
||||||
+# Should errors in %post scriptlet be propagated as errors?
|
+# Should errors in %post scriptlet be propagated as errors?
|
||||||
+#
|
+#
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
--- ./fileattrs/Makefile.am.orig 2017-12-01 15:46:21.021741182 +0000
|
--- ./fileattrs/Makefile.am.orig 2019-10-02 11:39:56.095525981 +0000
|
||||||
+++ ./fileattrs/Makefile.am 2017-12-01 15:48:54.108298271 +0000
|
+++ ./fileattrs/Makefile.am 2019-10-02 11:40:20.695473538 +0000
|
||||||
@@ -8,6 +8,6 @@ fattrsdir = $(rpmconfigdir)/fileattrs
|
@@ -8,6 +8,6 @@ fattrsdir = $(rpmconfigdir)/fileattrs
|
||||||
fattrs_DATA = \
|
fattrs_DATA = \
|
||||||
debuginfo.attr desktop.attr elf.attr font.attr libtool.attr metainfo.attr \
|
debuginfo.attr desktop.attr elf.attr font.attr libtool.attr metainfo.attr \
|
||||||
perl.attr perllib.attr pkgconfig.attr python.attr ocaml.attr script.attr \
|
perl.attr perllib.attr pkgconfig.attr python.attr pythondist.attr ocaml.attr \
|
||||||
- mono.attr
|
- script.attr
|
||||||
+ mono.attr elflib.attr
|
+ script.attr elflib.attr
|
||||||
|
|
||||||
EXTRA_DIST = $(fattrs_DATA)
|
EXTRA_DIST = $(fattrs_DATA)
|
||||||
--- ./fileattrs/elf.attr.orig 2017-12-01 15:46:28.171720501 +0000
|
--- ./fileattrs/elf.attr.orig 2019-06-26 14:17:31.404985707 +0000
|
||||||
+++ ./fileattrs/elf.attr 2017-12-01 15:47:49.339485678 +0000
|
+++ ./fileattrs/elf.attr 2019-10-02 11:39:56.095525981 +0000
|
||||||
@@ -1,4 +1,5 @@
|
@@ -1,4 +1,5 @@
|
||||||
%__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
|
%__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
|
||||||
%__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
|
%__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
|
||||||
@ -17,23 +17,23 @@
|
|||||||
+%__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*executable
|
+%__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*executable
|
||||||
%__elf_flags exeonly
|
%__elf_flags exeonly
|
||||||
+%__elf_exclude_path ^/usr/lib/debug/
|
+%__elf_exclude_path ^/usr/lib/debug/
|
||||||
--- ./fileattrs/elflib.attr.orig 2017-12-01 15:46:28.171720501 +0000
|
--- ./fileattrs/elflib.attr.orig 2019-10-02 11:39:56.095525981 +0000
|
||||||
+++ ./fileattrs/elflib.attr 2017-12-01 15:46:28.171720501 +0000
|
+++ ./fileattrs/elflib.attr 2019-10-02 11:39:56.095525981 +0000
|
||||||
@@ -0,0 +1,4 @@
|
@@ -0,0 +1,4 @@
|
||||||
+%__elflib_provides %{_rpmconfigdir}/elfdeps --assume-exec --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
|
+%__elflib_provides %{_rpmconfigdir}/elfdeps --assume-exec --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
|
||||||
+%__elflib_requires %{_rpmconfigdir}/elfdeps --assume-exec --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
|
+%__elflib_requires %{_rpmconfigdir}/elfdeps --assume-exec --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
|
||||||
+%__elflib_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*shared object
|
+%__elflib_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*shared object
|
||||||
+%__elflib_exclude_path ^/usr/lib/debug/
|
+%__elflib_exclude_path ^/usr/lib/debug/
|
||||||
--- ./fileattrs/perl.attr.orig 2017-08-10 08:08:07.113108701 +0000
|
--- ./fileattrs/perl.attr.orig 2019-06-26 14:17:31.404985707 +0000
|
||||||
+++ ./fileattrs/perl.attr 2017-12-01 15:46:28.172720497 +0000
|
+++ ./fileattrs/perl.attr 2019-10-02 11:39:56.095525981 +0000
|
||||||
@@ -1,3 +1,4 @@
|
@@ -1,3 +1,4 @@
|
||||||
-%__perl_requires %{_rpmconfigdir}/perl.req
|
-%__perl_requires %{_rpmconfigdir}/perl.req
|
||||||
+# disabled for now
|
+# disabled for now
|
||||||
+#%__perl_requires %{_rpmconfigdir}/perl.req
|
+#%__perl_requires %{_rpmconfigdir}/perl.req
|
||||||
%__perl_magic ^.*[Pp]erl .*$
|
%__perl_magic ^.*[Pp]erl .*$
|
||||||
%__perl_flags exeonly
|
%__perl_flags exeonly
|
||||||
--- ./fileattrs/perllib.attr.orig 2017-08-10 08:08:07.113108701 +0000
|
--- ./fileattrs/perllib.attr.orig 2019-06-26 14:17:31.404985707 +0000
|
||||||
+++ ./fileattrs/perllib.attr 2017-12-01 15:46:28.172720497 +0000
|
+++ ./fileattrs/perllib.attr 2019-10-02 11:39:56.095525981 +0000
|
||||||
@@ -1,5 +1,6 @@
|
@@ -1,5 +1,6 @@
|
||||||
%__perllib_provides %{_rpmconfigdir}/perl.prov
|
%__perllib_provides %{_rpmconfigdir}/perl.prov
|
||||||
-%__perllib_requires %{_rpmconfigdir}/perl.req
|
-%__perllib_requires %{_rpmconfigdir}/perl.req
|
||||||
@ -42,3 +42,11 @@
|
|||||||
%__perllib_magic ^Perl[[:digit:]] module source.*
|
%__perllib_magic ^Perl[[:digit:]] module source.*
|
||||||
%__perllib_path \\.pm$
|
%__perllib_path \\.pm$
|
||||||
%__perllib_flags magic_and_path
|
%__perllib_flags magic_and_path
|
||||||
|
--- ./fileattrs/pythondist.attr.orig 2019-12-06 14:32:57.245328376 +0000
|
||||||
|
+++ ./fileattrs/pythondist.attr 2019-12-06 14:33:35.345238073 +0000
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
%__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --majorver-provides
|
||||||
|
-%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires
|
||||||
|
+#disabled for now
|
||||||
|
+#%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires
|
||||||
|
%__pythondist_path /lib(64)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
--- ./scripts/find-debuginfo.sh.orig 2017-10-05 10:04:57.586602035 +0000
|
--- ./scripts/find-debuginfo.sh.orig 2019-09-09 07:56:53.377788842 +0000
|
||||||
+++ ./scripts/find-debuginfo.sh 2017-12-01 14:45:15.439290101 +0000
|
+++ ./scripts/find-debuginfo.sh 2019-10-02 11:11:56.878979662 +0000
|
||||||
@@ -326,12 +326,18 @@ trap 'rm -rf "$temp"' EXIT
|
@@ -348,12 +348,18 @@ trap 'rm -rf "$temp"' EXIT
|
||||||
|
|
||||||
# Build a list of unstripped ELF files and their hardlinks
|
# Build a list of unstripped ELF files and their hardlinks
|
||||||
touch "$temp/primary"
|
touch "$temp/primary"
|
||||||
-find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \
|
-find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \
|
||||||
- \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \
|
- \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \
|
||||||
- -print |
|
- -print | LC_ALL=C sort |
|
||||||
-file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped.*/\1/p' |
|
-file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped.*/\1/p' |
|
||||||
-xargs --no-run-if-empty stat -c '%h %D_%i %n' |
|
-xargs --no-run-if-empty stat -c '%h %D_%i %n' |
|
||||||
+find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \( -perm /111 -or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" -print0 | sort -z |
|
+find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \( -perm /111 -or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" -print0 | LC_ALL=C sort -z |
|
||||||
+xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' |
|
+xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' |
|
||||||
while read nlinks inum f; do
|
while read nlinks inum f; do
|
||||||
+ case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
|
+ case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
|
||||||
@ -24,7 +24,7 @@
|
|||||||
if [ $nlinks -gt 1 ]; then
|
if [ $nlinks -gt 1 ]; then
|
||||||
var=seen_$inum
|
var=seen_$inum
|
||||||
if test -n "${!var}"; then
|
if test -n "${!var}"; then
|
||||||
@@ -364,6 +370,8 @@ do_file()
|
@@ -386,6 +392,8 @@ do_file()
|
||||||
if [ "$no_recompute_build_id" = "true" ]; then
|
if [ "$no_recompute_build_id" = "true" ]; then
|
||||||
no_recompute="-n"
|
no_recompute="-n"
|
||||||
fi
|
fi
|
||||||
@ -33,7 +33,7 @@
|
|||||||
id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \
|
id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \
|
||||||
$no_recompute -i \
|
$no_recompute -i \
|
||||||
${build_id_seed:+--build-id-seed="$build_id_seed"} \
|
${build_id_seed:+--build-id-seed="$build_id_seed"} \
|
||||||
@@ -387,17 +395,30 @@ do_file()
|
@@ -413,17 +421,30 @@ do_file()
|
||||||
# just has its file names collected and adjusted.
|
# just has its file names collected and adjusted.
|
||||||
case "$dn" in
|
case "$dn" in
|
||||||
/usr/lib/debug/*)
|
/usr/lib/debug/*)
|
||||||
@ -71,16 +71,7 @@
|
|||||||
|
|
||||||
# strip -g implies we have full symtab, don't add mini symtab in that case.
|
# strip -g implies we have full symtab, don't add mini symtab in that case.
|
||||||
# It only makes sense to add a minisymtab for executables and shared
|
# It only makes sense to add a minisymtab for executables and shared
|
||||||
@@ -507,7 +528,7 @@ if $run_dwz \
|
@@ -581,12 +602,14 @@ if [ -s "$SOURCEFILE" ]; then
|
||||||
rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null
|
|
||||||
if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then
|
|
||||||
id="`readelf -Wn "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" \
|
|
||||||
- 2>/dev/null | sed -n 's/^ Build ID: \([0-9a-f]\+\)/\1/p'`"
|
|
||||||
+ 2>/dev/null | sed -n 's/^.* Build ID: \([0-9a-f]\+\)/\1/p'`"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# dwz invalidates .gnu_debuglink CRC32 in the main files.
|
|
||||||
@@ -551,12 +572,14 @@ if [ -s "$SOURCEFILE" ]; then
|
|
||||||
# and non-standard modes may be inherented from original directories, fixup
|
# and non-standard modes may be inherented from original directories, fixup
|
||||||
find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 |
|
find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 |
|
||||||
xargs --no-run-if-empty -0 chmod 0755
|
xargs --no-run-if-empty -0 chmod 0755
|
||||||
@ -88,7 +79,7 @@
|
|||||||
+ xargs --no-run-if-empty -0 chmod a+r
|
+ xargs --no-run-if-empty -0 chmod a+r
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then
|
if [ -d "${RPM_BUILD_ROOT}/usr/lib" ] || [ -d "${RPM_BUILD_ROOT}/usr/src" ]; then
|
||||||
((nout > 0)) ||
|
((nout > 0)) ||
|
||||||
test ! -d "${RPM_BUILD_ROOT}/usr/lib" ||
|
test ! -d "${RPM_BUILD_ROOT}/usr/lib" ||
|
||||||
- (cd "${RPM_BUILD_ROOT}/usr/lib"; find debug -type d) |
|
- (cd "${RPM_BUILD_ROOT}/usr/lib"; find debug -type d) |
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- ./scripts/find-lang.sh.orig 2018-01-16 09:02:23.879253043 +0000
|
--- ./scripts/find-lang.sh.orig 2019-09-09 07:56:53.377788842 +0000
|
||||||
+++ ./scripts/find-lang.sh 2018-01-31 13:20:30.938048419 +0000
|
+++ ./scripts/find-lang.sh 2019-10-02 11:12:53.774861485 +0000
|
||||||
@@ -22,11 +22,11 @@ the top of the tree containing the files
|
@@ -22,11 +22,11 @@ the top of the tree containing the files
|
||||||
PACKAGE_NAME is the %{name} of the package. This should also be
|
PACKAGE_NAME is the %{name} of the package. This should also be
|
||||||
the basename of the .mo files. the output is written to
|
the basename of the .mo files. the output is written to
|
||||||
@ -137,7 +137,7 @@
|
|||||||
+/^$/d' >> $MO_NAME_NEW
|
+/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null`
|
KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null`
|
||||||
if [ x"$KDE3_HTML" != x -a -d "$TOP_DIR$KDE3_HTML" ]; then
|
if [ x"$KDE3_HTML" != x ] && [ -d "$TOP_DIR$KDE3_HTML" ]; then
|
||||||
@@ -193,7 +203,7 @@ s:'"$TOP_DIR"'::
|
@@ -193,7 +203,7 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
|
@ -1,25 +1,25 @@
|
|||||||
--- ./scripts/Makefile.am.orig 2018-07-02 14:43:19.345357110 +0000
|
--- ./scripts/Makefile.am.orig 2019-06-26 14:17:31.452985634 +0000
|
||||||
+++ ./scripts/Makefile.am 2018-07-02 14:43:47.245284542 +0000
|
+++ ./scripts/Makefile.am 2019-10-02 12:27:55.885450155 +0000
|
||||||
@@ -17,7 +17,7 @@ EXTRA_DIST = \
|
@@ -16,7 +16,7 @@ EXTRA_DIST = \
|
||||||
python-macro-helper \
|
perl.prov perl.req pythondeps.sh pythondistdeps.py \
|
||||||
rpmdb_loadcvt rpm.daily rpm.log rpm.supp rpm2cpio.sh \
|
rpmdb_loadcvt rpm.daily rpm.log rpm.supp rpm2cpio.sh \
|
||||||
tgpg vpkg-provides.sh \
|
tgpg vpkg-provides.sh \
|
||||||
- find-requires find-provides \
|
- find-requires find-provides \
|
||||||
+ find-requires find-provides find-supplements \
|
+ find-requires find-provides find-supplements \
|
||||||
find-requires.php find-provides.php \
|
find-requires.php find-provides.php \
|
||||||
mono-find-requires mono-find-provides \
|
|
||||||
ocaml-find-requires.sh ocaml-find-provides.sh \
|
ocaml-find-requires.sh ocaml-find-provides.sh \
|
||||||
@@ -32,7 +32,7 @@ rpmconfig_SCRIPTS = \
|
pkgconfigdeps.sh libtooldeps.sh metainfo.prov \
|
||||||
|
@@ -29,7 +29,7 @@ rpmconfig_SCRIPTS = \
|
||||||
check-files check-prereqs \
|
check-files check-prereqs \
|
||||||
check-buildroot check-rpaths check-rpaths-worker \
|
check-buildroot check-rpaths check-rpaths-worker \
|
||||||
debuginfo.prov \
|
debuginfo.prov \
|
||||||
- find-lang.sh find-requires find-provides \
|
- find-lang.sh find-requires find-provides \
|
||||||
+ find-lang.sh find-requires find-provides find-supplements \
|
+ find-lang.sh find-requires find-provides find-supplements \
|
||||||
perl.prov perl.req pythondeps.sh pythondistdeps.py \
|
perl.prov perl.req pythondeps.sh pythondistdeps.py \
|
||||||
python-macro-helper \
|
|
||||||
metainfo.prov \
|
metainfo.prov \
|
||||||
--- ./scripts/find-supplements.orig 2018-07-02 14:43:12.877373928 +0000
|
pkgconfigdeps.sh libtooldeps.sh \
|
||||||
+++ ./scripts/find-supplements 2018-07-02 14:43:59.325253127 +0000
|
--- ./scripts/find-supplements.orig 2019-10-02 12:27:55.885450155 +0000
|
||||||
|
+++ ./scripts/find-supplements 2019-10-02 12:27:55.885450155 +0000
|
||||||
@@ -0,0 +1,3 @@
|
@@ -0,0 +1,3 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+
|
+
|
||||||
|
109
getncpus.diff
109
getncpus.diff
@ -1,109 +0,0 @@
|
|||||||
--- ./configure.ac.orig 2019-02-07 14:26:10.800566817 +0000
|
|
||||||
+++ ./configure.ac 2019-02-07 14:26:30.944514306 +0000
|
|
||||||
@@ -770,6 +770,7 @@ AC_CHECK_FUNCS(lutimes)
|
|
||||||
AC_CHECK_FUNCS(mergesort)
|
|
||||||
AC_CHECK_FUNCS(getauxval)
|
|
||||||
AC_CHECK_FUNCS(setprogname, [], [], [#include <stdlib.h>])
|
|
||||||
+AC_CHECK_FUNCS(sched_getaffinity, [], [], [#include <sched.h>])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether __progname is defined])
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([extern const char *__progname;],
|
|
||||||
--- ./macros.in.orig 2019-02-07 14:20:03.257524913 +0000
|
|
||||||
+++ ./macros.in 2019-02-07 14:22:46.105100409 +0000
|
|
||||||
@@ -1056,7 +1056,7 @@ package or when debugging this package.\
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# The "make" analogue, hiding the _smp_mflags magic from specs
|
|
||||||
-%make_build %{__make} %{_make_output_sync} %{?_smp_mflags}
|
|
||||||
+%make_build %{__make} %{_make_output_sync} %{?_smp_mflags} V=1 VERBOSE=1
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# The make install analogue of %configure for modern autotools:
|
|
||||||
--- ./platform.in.orig 2019-02-07 14:23:06.641046876 +0000
|
|
||||||
+++ ./platform.in 2019-02-07 14:41:12.462256547 +0000
|
|
||||||
@@ -50,11 +50,17 @@
|
|
||||||
|
|
||||||
# Maximum number of CPU's to use when building, 0 for unlimited.
|
|
||||||
#%_smp_ncpus_max 0
|
|
||||||
-%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
|
|
||||||
- && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
|
|
||||||
+
|
|
||||||
+%_smp_build_ncpus %([ -z "$RPM_BUILD_NCPUS" ] \\\
|
|
||||||
+ && RPM_BUILD_NCPUS="%{getncpus}"; \\\
|
|
||||||
ncpus_max=%{?_smp_ncpus_max}; \\\
|
|
||||||
if [ -n "$ncpus_max" ] && [ "$ncpus_max" -gt 0 ] && [ "$RPM_BUILD_NCPUS" -gt "$ncpus_max" ]; then RPM_BUILD_NCPUS="$ncpus_max"; fi; \\\
|
|
||||||
- if [ "$RPM_BUILD_NCPUS" -gt 1 ]; then echo "-j$RPM_BUILD_NCPUS"; fi)
|
|
||||||
+ echo "$RPM_BUILD_NCPUS";)
|
|
||||||
+
|
|
||||||
+%_smp_mflags -j%{_smp_build_ncpus}
|
|
||||||
+
|
|
||||||
+# Enable LTO optimization with a maximal parallelism
|
|
||||||
+%_lto_cflags -flto=%{_smp_build_ncpus}
|
|
||||||
|
|
||||||
#==============================================================================
|
|
||||||
# ---- Build policy macros.
|
|
||||||
--- ./rpmio/macro.c.orig 2019-02-07 14:26:48.768468081 +0000
|
|
||||||
+++ ./rpmio/macro.c 2019-02-07 14:38:59.286597550 +0000
|
|
||||||
@@ -12,6 +12,9 @@
|
|
||||||
extern char *optarg;
|
|
||||||
extern int optind;
|
|
||||||
#endif
|
|
||||||
+#if HAVE_SCHED_GETAFFINITY
|
|
||||||
+#include <sched.h>
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#if !defined(isblank)
|
|
||||||
#define isblank(_c) ((_c) == ' ' || (_c) == '\t')
|
|
||||||
@@ -445,6 +448,23 @@ exit:
|
|
||||||
_free(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static unsigned int getncpus(void)
|
|
||||||
+{
|
|
||||||
+ unsigned int ncpus = 0;
|
|
||||||
+#if HAVE_SCHED_GETAFFINITY
|
|
||||||
+ cpu_set_t set;
|
|
||||||
+ if (sched_getaffinity (0, sizeof(set), &set) == 0)
|
|
||||||
+ ncpus = CPU_COUNT(&set);
|
|
||||||
+#endif
|
|
||||||
+ /* Fallback to sysconf() if the above isn't supported or didn't work */
|
|
||||||
+ if (ncpus < 1)
|
|
||||||
+ ncpus = sysconf(_SC_NPROCESSORS_ONLN);
|
|
||||||
+ /* If all else fails, there's always the one we're running on... */
|
|
||||||
+ if (ncpus < 1)
|
|
||||||
+ ncpus = 1;
|
|
||||||
+ return ncpus;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Parse (and execute) new macro definition.
|
|
||||||
* @param mb macro expansion state
|
|
||||||
@@ -975,6 +995,9 @@ doFoo(MacroBuf mb, int negate, const cha
|
|
||||||
} else if (STREQ("getconfdir", f, fn)) {
|
|
||||||
sprintf(buf, "%s", rpmConfigDir());
|
|
||||||
b = buf;
|
|
||||||
+ } else if (STREQ("getncpus", f, fn)) {
|
|
||||||
+ sprintf(buf, "%u", getncpus());
|
|
||||||
+ b = buf;
|
|
||||||
} else if (STREQ("S", f, fn)) {
|
|
||||||
for (b = buf; (c = *b) && risdigit(c);)
|
|
||||||
b++;
|
|
||||||
@@ -1271,6 +1294,7 @@ expandMacro(MacroBuf mb, const char *src
|
|
||||||
STREQ("u2p", f, fn) ||
|
|
||||||
STREQ("getenv", f, fn) ||
|
|
||||||
STREQ("getconfdir", f, fn) ||
|
|
||||||
+ STREQ("getncpus", f, fn) ||
|
|
||||||
STREQ("S", f, fn) ||
|
|
||||||
STREQ("P", f, fn) ||
|
|
||||||
STREQ("F", f, fn))
|
|
||||||
--- ./rpmio/rpmio.c.orig 2019-02-07 14:39:20.886542242 +0000
|
|
||||||
+++ ./rpmio/rpmio.c 2019-02-07 14:39:41.670489024 +0000
|
|
||||||
@@ -796,7 +796,7 @@ static LZFILE *lzopen_internal(const cha
|
|
||||||
#ifdef HAVE_LZMA_MT
|
|
||||||
} else {
|
|
||||||
if (threads == -1)
|
|
||||||
- threads = sysconf(_SC_NPROCESSORS_ONLN);
|
|
||||||
+ threads = rpmExpandNumeric("%{getncpus}");
|
|
||||||
lzma_mt mt_options = {
|
|
||||||
.flags = 0,
|
|
||||||
.threads = threads,
|
|
@ -1,6 +1,6 @@
|
|||||||
--- ./lib/rpmrc.c.orig 2014-07-03 15:11:48.572096075 +0000
|
--- ./lib/rpmrc.c.orig 2019-06-26 14:17:31.416985688 +0000
|
||||||
+++ ./lib/rpmrc.c 2014-09-17 12:04:27.330717791 +0000
|
+++ ./lib/rpmrc.c 2019-10-02 09:52:05.076903733 +0000
|
||||||
@@ -79,10 +79,12 @@ struct rpmOption {
|
@@ -79,11 +79,13 @@ struct rpmOption {
|
||||||
int localize;
|
int localize;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -8,21 +8,22 @@
|
|||||||
static struct rpmat_s {
|
static struct rpmat_s {
|
||||||
const char *platform;
|
const char *platform;
|
||||||
uint64_t hwcap;
|
uint64_t hwcap;
|
||||||
|
uint64_t hwcap2;
|
||||||
} rpmat;
|
} rpmat;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
typedef struct defaultEntry_s {
|
typedef struct defaultEntry_s {
|
||||||
char * name;
|
char * name;
|
||||||
@@ -936,7 +938,7 @@ static int is_geode(void)
|
@@ -950,7 +952,7 @@ static int is_geode(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
-#if defined(__linux__)
|
-#if defined(__linux__)
|
||||||
+#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP)))
|
+#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP)))
|
||||||
/**
|
#ifndef AT_HWCAP2 /* glibc < 2.18 */
|
||||||
* Populate rpmat structure with auxv values
|
#define AT_HWCAP2 26
|
||||||
*/
|
#endif
|
||||||
@@ -993,7 +995,7 @@ static void defaultMachine(rpmrcCtx ctx,
|
@@ -1013,7 +1015,7 @@ static void defaultMachine(rpmrcCtx ctx,
|
||||||
canonEntry canon;
|
canonEntry canon;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- ./macros.in.orig 2018-07-02 14:46:14.912900534 +0000
|
--- ./macros.in.orig 2019-10-02 11:13:35.966773848 +0000
|
||||||
+++ ./macros.in 2018-07-02 14:50:35.356223235 +0000
|
+++ ./macros.in 2019-10-02 11:17:37.210282271 +0000
|
||||||
@@ -184,7 +184,7 @@
|
@@ -177,7 +177,7 @@
|
||||||
%{?_unique_build_ids:--build-id-seed "%{VERSION}-%{RELEASE}"} \\\
|
%{?_unique_build_ids:--build-id-seed "%{VERSION}-%{RELEASE}"} \\\
|
||||||
%{?_unique_debug_names:--unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}"} \\\
|
%{?_unique_debug_names:--unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}"} \\\
|
||||||
%{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\
|
%{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\
|
||||||
@ -9,7 +9,7 @@
|
|||||||
%{?_find_debuginfo_opts} \\\
|
%{?_find_debuginfo_opts} \\\
|
||||||
%{?_debugsource_packages:-S debugsourcefiles.list} \\\
|
%{?_debugsource_packages:-S debugsourcefiles.list} \\\
|
||||||
"%{_builddir}/%{?buildsubdir}"\
|
"%{_builddir}/%{?buildsubdir}"\
|
||||||
@@ -224,7 +224,8 @@ package or when debugging this package.\
|
@@ -217,7 +217,8 @@ package or when debugging this package.\
|
||||||
%endif\
|
%endif\
|
||||||
%{nil}
|
%{nil}
|
||||||
|
|
||||||
@ -19,7 +19,7 @@
|
|||||||
%_defaultlicensedir %{_datadir}/licenses
|
%_defaultlicensedir %{_datadir}/licenses
|
||||||
|
|
||||||
# Following macros for filtering auto deps must not be used in spec files.
|
# Following macros for filtering auto deps must not be used in spec files.
|
||||||
@@ -278,7 +279,8 @@ package or when debugging this package.\
|
@@ -276,7 +277,8 @@ package or when debugging this package.\
|
||||||
%_tmppath %{_var}/tmp
|
%_tmppath %{_var}/tmp
|
||||||
|
|
||||||
# Path to top of build area.
|
# Path to top of build area.
|
||||||
@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
# The path to the unzip executable (legacy, use %{__unzip} instead).
|
# The path to the unzip executable (legacy, use %{__unzip} instead).
|
||||||
%_unzipbin %{__unzip}
|
%_unzipbin %{__unzip}
|
||||||
@@ -382,7 +384,7 @@ package or when debugging this package.\
|
@@ -388,7 +390,7 @@ package or when debugging this package.\
|
||||||
# "w6.lzdio" lzma-alone level 6, lzma's default
|
# "w.ufdio" uncompressed
|
||||||
#
|
#
|
||||||
#%_source_payload w9.gzdio
|
#%_source_payload w9.gzdio
|
||||||
-#%_binary_payload w9.gzdio
|
-#%_binary_payload w9.gzdio
|
||||||
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
# Algorithm to use for generating file checksum digests on build.
|
# Algorithm to use for generating file checksum digests on build.
|
||||||
# If not specified or 0, MD5 is used.
|
# If not specified or 0, MD5 is used.
|
||||||
@@ -489,6 +491,19 @@ package or when debugging this package.\
|
@@ -495,6 +497,19 @@ package or when debugging this package.\
|
||||||
#
|
#
|
||||||
#%_include_minidebuginfo 1
|
#%_include_minidebuginfo 1
|
||||||
|
|
||||||
@ -58,7 +58,7 @@
|
|||||||
#
|
#
|
||||||
# Include a .gdb_index section in the .debug files.
|
# Include a .gdb_index section in the .debug files.
|
||||||
# Requires _enable_debug_packages and gdb-add-index installed.
|
# Requires _enable_debug_packages and gdb-add-index installed.
|
||||||
@@ -521,7 +536,7 @@ package or when debugging this package.\
|
@@ -527,7 +542,7 @@ package or when debugging this package.\
|
||||||
# Same as for "separate" but if the __debug_package global is set then
|
# Same as for "separate" but if the __debug_package global is set then
|
||||||
# the -debuginfo package will have a compatibility link for the main
|
# the -debuginfo package will have a compatibility link for the main
|
||||||
# ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy
|
# ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy
|
||||||
@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
# Whether build-ids should be made unique between package version/releases
|
# Whether build-ids should be made unique between package version/releases
|
||||||
# when generating debuginfo packages. If set to 1 this will pass
|
# when generating debuginfo packages. If set to 1 this will pass
|
||||||
@@ -550,10 +565,10 @@ package or when debugging this package.\
|
@@ -556,10 +571,10 @@ package or when debugging this package.\
|
||||||
%_unique_debug_srcs 1
|
%_unique_debug_srcs 1
|
||||||
|
|
||||||
# Whether rpm should put debug source files into its own subpackage
|
# Whether rpm should put debug source files into its own subpackage
|
||||||
@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Use internal dependency generator rather than external helpers?
|
# Use internal dependency generator rather than external helpers?
|
||||||
@@ -566,6 +581,10 @@ package or when debugging this package.\
|
@@ -572,6 +587,10 @@ package or when debugging this package.\
|
||||||
# Directories whose contents should be considered as documentation.
|
# Directories whose contents should be considered as documentation.
|
||||||
%__docdir_path %{_datadir}/doc:%{_datadir}/man:%{_datadir}/info:%{_datadir}/gtk-doc/html:%{?_docdir}:%{?_mandir}:%{?_infodir}:%{?_javadocdir}:/usr/doc:/usr/man:/usr/info:/usr/X11R6/man
|
%__docdir_path %{_datadir}/doc:%{_datadir}/man:%{_datadir}/info:%{_datadir}/gtk-doc/html:%{?_docdir}:%{?_mandir}:%{?_infodir}:%{?_javadocdir}:/usr/doc:/usr/man:/usr/info:/usr/X11R6/man
|
||||||
|
|
||||||
@ -91,7 +91,7 @@
|
|||||||
#
|
#
|
||||||
# Path to scripts to autogenerate package dependencies,
|
# Path to scripts to autogenerate package dependencies,
|
||||||
#
|
#
|
||||||
@@ -576,6 +595,7 @@ package or when debugging this package.\
|
@@ -582,6 +601,7 @@ package or when debugging this package.\
|
||||||
%__find_requires %{_rpmconfigdir}/find-requires
|
%__find_requires %{_rpmconfigdir}/find-requires
|
||||||
#%__find_conflicts ???
|
#%__find_conflicts ???
|
||||||
#%__find_obsoletes ???
|
#%__find_obsoletes ???
|
||||||
@ -99,7 +99,7 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Path to file attribute classifications for automatic dependency
|
# Path to file attribute classifications for automatic dependency
|
||||||
@@ -654,10 +674,10 @@ package or when debugging this package.\
|
@@ -660,10 +680,10 @@ package or when debugging this package.\
|
||||||
# Misc BDB tuning options
|
# Misc BDB tuning options
|
||||||
%__dbi_other mp_mmapsize=128Mb mp_size=1Mb
|
%__dbi_other mp_mmapsize=128Mb mp_size=1Mb
|
||||||
|
|
||||||
@ -112,7 +112,7 @@
|
|||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# ---- GPG/PGP/PGP5 signature macros.
|
# ---- GPG/PGP/PGP5 signature macros.
|
||||||
@@ -969,7 +989,7 @@ package or when debugging this package.\
|
@@ -1000,7 +1020,7 @@ package or when debugging this package.\
|
||||||
%_build_vendor %{_host_vendor}
|
%_build_vendor %{_host_vendor}
|
||||||
%_build_os %{_host_os}
|
%_build_os %{_host_os}
|
||||||
%_host @host@
|
%_host @host@
|
||||||
@ -121,13 +121,13 @@
|
|||||||
%_host_cpu @host_cpu@
|
%_host_cpu @host_cpu@
|
||||||
%_host_vendor @host_vendor@
|
%_host_vendor @host_vendor@
|
||||||
%_host_os @host_os@
|
%_host_os @host_os@
|
||||||
@@ -1095,7 +1115,9 @@ package or when debugging this package.\
|
@@ -1119,7 +1139,9 @@ package or when debugging this package.\
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# arch macro for all supported ARM processors
|
# arch macro for all supported ARM processors
|
||||||
-%arm armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
|
-%arm armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
|
||||||
+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
|
+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
|
||||||
+%arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl
|
+%arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
|
||||||
+%armb armv4b armv5b armv5teb
|
+%armb armv4b armv5b armv5teb
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
--- scripts/mono-find-requires
|
|
||||||
+++ scripts/mono-find-requires
|
|
||||||
@@ -42,8 +42,12 @@
|
|
||||||
(START==1) && /^\tName=/ {
|
|
||||||
sub(/Name=/, "", $1);
|
|
||||||
LIBNAME=$1
|
|
||||||
-
|
|
||||||
- print "mono(" LIBNAME ") = " VERSION
|
|
||||||
+ # Allow rpm deps to be resolved for 1.0 profile version
|
|
||||||
+ if (VERSION=="1.0.3300.0")
|
|
||||||
+ OP=">="
|
|
||||||
+ else
|
|
||||||
+ OP="="
|
|
||||||
+ print "mono(" LIBNAME ") " OP " " VERSION
|
|
||||||
START=0
|
|
||||||
}
|
|
||||||
') 2> /dev/null
|
|
@ -1,39 +0,0 @@
|
|||||||
Also compare the name/arch and not only the version when checking if
|
|
||||||
two packages are the same. rh#104066
|
|
||||||
|
|
||||||
--- ./lib/depends.c.orig 2014-06-26 06:51:54.163820067 +0000
|
|
||||||
+++ ./lib/depends.c 2014-08-04 12:22:24.030575105 +0000
|
|
||||||
@@ -158,6 +158,24 @@ static int skipColor(rpm_color_t tscolor
|
|
||||||
return tscolor && color && ocolor && !(color & ocolor);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int rpmNameVersionCompare(Header first, Header second)
|
|
||||||
+{
|
|
||||||
+ const char * one, * two;
|
|
||||||
+ int rc;
|
|
||||||
+
|
|
||||||
+ one = headerGetString(first, RPMTAG_NAME);
|
|
||||||
+ two = headerGetString(second, RPMTAG_NAME);
|
|
||||||
+ rc = strcmp(one, two);
|
|
||||||
+ if (rc)
|
|
||||||
+ return rc;
|
|
||||||
+ one = headerGetString(first, RPMTAG_ARCH);
|
|
||||||
+ two = headerGetString(second, RPMTAG_ARCH);
|
|
||||||
+ rc = strcmp(one, two);
|
|
||||||
+ if (rc)
|
|
||||||
+ return rc;
|
|
||||||
+ return rpmVersionCompare(first, second);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Add erase elements for older packages of same color (if any). */
|
|
||||||
static int addSelfErasures(rpmts ts, rpm_color_t tscolor, int op,
|
|
||||||
rpmte p, rpm_color_t hcolor, Header h)
|
|
||||||
@@ -172,7 +190,7 @@ static int addSelfErasures(rpmts ts, rpm
|
|
||||||
if (skipColor(tscolor, hcolor, headerGetNumber(oh, RPMTAG_HEADERCOLOR)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- cmp = rpmVersionCompare(h, oh);
|
|
||||||
+ cmp = rpmNameVersionCompare(h, oh);
|
|
||||||
|
|
||||||
/* On upgrade, skip packages that contain identical NEVR. */
|
|
||||||
if ((op == RPMTE_UPGRADE) && (cmp == 0))
|
|
@ -1,13 +1,13 @@
|
|||||||
Don't let rpm complain about a missing /etc/magic.mgc file
|
Don't let rpm complain about a missing /etc/magic.mgc file
|
||||||
|
|
||||||
--- build/rpmfc.c.orig 2013-07-12 12:16:40.000000000 +0000
|
--- ./build/rpmfc.c.orig 2019-10-02 11:41:15.063357579 +0000
|
||||||
+++ build/rpmfc.c 2013-07-12 12:17:15.000000000 +0000
|
+++ ./build/rpmfc.c 2019-10-02 11:41:42.583298884 +0000
|
||||||
@@ -901,7 +901,7 @@ static int initAttrs(rpmfc fc)
|
@@ -1065,7 +1065,7 @@ static int initAttrs(rpmfc fc)
|
||||||
|
|
||||||
rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
|
rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
|
||||||
{
|
{
|
||||||
- int msflags = MAGIC_CHECK | MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
- int msflags = MAGIC_CHECK | MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
||||||
+ int msflags = MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
+ int msflags = MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
||||||
magic_t ms = NULL;
|
int nerrors = 0;
|
||||||
rpmRC rc = RPMRC_FAIL;
|
rpmRC rc = RPMRC_FAIL;
|
||||||
|
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
--- ./build/parsePreamble.c.orig 2017-12-01 15:42:35.766392406 +0000
|
--- ./build/parsePreamble.c.orig 2019-10-02 11:38:15.807736662 +0000
|
||||||
+++ ./build/parsePreamble.c 2017-12-01 15:43:29.364237520 +0000
|
+++ ./build/parsePreamble.c 2019-10-02 11:39:12.495617575 +0000
|
||||||
@@ -996,7 +996,7 @@ static struct PreambleRec_s const preamb
|
@@ -1032,7 +1032,7 @@ static struct PreambleRec_s const preamb
|
||||||
{RPMTAG_SUGGESTNAME, 0, 0, LEN_AND_STR("suggests")},
|
{RPMTAG_SUGGESTNAME, 0, 0, 0, LEN_AND_STR("suggests")},
|
||||||
{RPMTAG_SUPPLEMENTNAME, 0, 0, LEN_AND_STR("supplements")},
|
{RPMTAG_SUPPLEMENTNAME, 0, 0, 0, LEN_AND_STR("supplements")},
|
||||||
{RPMTAG_ENHANCENAME, 0, 0, LEN_AND_STR("enhances")},
|
{RPMTAG_ENHANCENAME, 0, 0, 0, LEN_AND_STR("enhances")},
|
||||||
- {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")},
|
- {RPMTAG_PREREQ, 2, 1, 0, LEN_AND_STR("prereq")},
|
||||||
+ {RPMTAG_PREREQ, 2, 0, LEN_AND_STR("prereq")},
|
+ {RPMTAG_PREREQ, 2, 0, 0, LEN_AND_STR("prereq")},
|
||||||
{RPMTAG_CONFLICTNAME, 0, 0, LEN_AND_STR("conflicts")},
|
{RPMTAG_CONFLICTNAME, 0, 0, 0, LEN_AND_STR("conflicts")},
|
||||||
{RPMTAG_OBSOLETENAME, 0, 0, LEN_AND_STR("obsoletes")},
|
{RPMTAG_OBSOLETENAME, 0, 0, 0, LEN_AND_STR("obsoletes")},
|
||||||
{RPMTAG_PREFIXES, 0, 0, LEN_AND_STR("prefixes")},
|
{RPMTAG_PREFIXES, 0, 0, 1, LEN_AND_STR("prefixes")},
|
||||||
@@ -1005,7 +1005,7 @@ static struct PreambleRec_s const preamb
|
@@ -1041,7 +1041,7 @@ static struct PreambleRec_s const preamb
|
||||||
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarchitectures")},
|
{RPMTAG_BUILDARCHS, 0, 0, 0, LEN_AND_STR("buildarchitectures")},
|
||||||
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarch")},
|
{RPMTAG_BUILDARCHS, 0, 0, 0, LEN_AND_STR("buildarch")},
|
||||||
{RPMTAG_BUILDCONFLICTS, 0, 0, LEN_AND_STR("buildconflicts")},
|
{RPMTAG_BUILDCONFLICTS, 0, 0, 0, LEN_AND_STR("buildconflicts")},
|
||||||
- {RPMTAG_BUILDPREREQ, 0, 1, LEN_AND_STR("buildprereq")},
|
- {RPMTAG_BUILDPREREQ, 0, 1, 0, LEN_AND_STR("buildprereq")},
|
||||||
+ {RPMTAG_BUILDPREREQ, 0, 0, LEN_AND_STR("buildprereq")},
|
+ {RPMTAG_BUILDPREREQ, 0, 0, 0, LEN_AND_STR("buildprereq")},
|
||||||
{RPMTAG_BUILDREQUIRES, 0, 0, LEN_AND_STR("buildrequires")},
|
{RPMTAG_BUILDREQUIRES, 0, 0, 0, LEN_AND_STR("buildrequires")},
|
||||||
{RPMTAG_AUTOREQPROV, 0, 0, LEN_AND_STR("autoreqprov")},
|
{RPMTAG_AUTOREQPROV, 0, 0, 0, LEN_AND_STR("autoreqprov")},
|
||||||
{RPMTAG_AUTOREQ, 0, 0, LEN_AND_STR("autoreq")},
|
{RPMTAG_AUTOREQ, 0, 0, 0, LEN_AND_STR("autoreq")},
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Nov 19 11:09:08 CET 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- update to rpm-4.15.1
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Oct 2 14:53:19 CEST 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- update to rpm-4.15.0
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Nov 22 09:50:36 UTC 2018 - asmorodskyi@suse.com
|
Thu Nov 22 09:50:36 UTC 2018 - asmorodskyi@suse.com
|
||||||
|
|
||||||
|
@ -21,14 +21,13 @@
|
|||||||
%global with_python 1
|
%global with_python 1
|
||||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||||||
Name: python-rpm
|
Name: python-rpm
|
||||||
Version: 4.14.2.1
|
Version: 4.15.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python Bindings for Manipulating RPM Packages
|
Summary: Python Bindings for Manipulating RPM Packages
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
Group: Development/Libraries/Python
|
Group: Development/Libraries/Python
|
||||||
URL: https://rpm.org/
|
URL: https://rpm.org/
|
||||||
#Git-Clone: https://github.com/rpm-software-management/rpm
|
#Git-Clone: https://github.com/rpm-software-management/rpm
|
||||||
Source99: rpm.spec
|
|
||||||
BuildRequires: %{python_module devel}
|
BuildRequires: %{python_module devel}
|
||||||
BuildRequires: file-devel
|
BuildRequires: file-devel
|
||||||
BuildRequires: libacl-devel
|
BuildRequires: libacl-devel
|
||||||
@ -47,6 +46,7 @@ BuildRequires: zlib-devel
|
|||||||
BuildRequires: pkgconfig(libzstd)
|
BuildRequires: pkgconfig(libzstd)
|
||||||
Requires: rpm = %{version}
|
Requires: rpm = %{version}
|
||||||
%{expand:%(sed -n -e '/^Source:/,/^BuildRoot:/p' <%{_sourcedir}/rpm.spec)}
|
%{expand:%(sed -n -e '/^Source:/,/^BuildRoot:/p' <%{_sourcedir}/rpm.spec)}
|
||||||
|
Source99: rpm.spec
|
||||||
%if "%{python_flavor}" == "python2"
|
%if "%{python_flavor}" == "python2"
|
||||||
Obsoletes: rpm-python < %{version}-%{release}
|
Obsoletes: rpm-python < %{version}-%{release}
|
||||||
Provides: rpm-python = %{version}-%{release}
|
Provides: rpm-python = %{version}-%{release}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
--- ./scripts/pythondistdeps.py.orig 2018-08-08 13:40:18.173941320 +0000
|
--- ./scripts/pythondistdeps.py.orig 2019-06-26 10:17:31.454985631 -0400
|
||||||
+++ ./scripts/pythondistdeps.py 2018-10-16 09:30:49.271004917 +0000
|
+++ ./scripts/pythondistdeps.py 2019-10-31 16:30:37.685850605 -0400
|
||||||
@@ -1,4 +1,3 @@
|
@@ -1,4 +1,4 @@
|
||||||
-#!/usr/bin/python
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright 2010 Per Øyvind Karlsen <proyvind@moondrake.org>
|
# Copyright 2010 Per Øyvind Karlsen <proyvind@moondrake.org>
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
Also test architecture in "refresh" test when not colored. This allows
|
Also test architecture in "refresh" test when not colored. This allows
|
||||||
updates to different architectures.
|
updates to different architectures.
|
||||||
|
|
||||||
--- ./lib/psm.c.orig 2012-03-20 08:07:25.000000000 +0000
|
--- ./lib/psm.c.orig 2019-10-02 09:54:56.180565818 +0000
|
||||||
+++ ./lib/psm.c 2012-06-01 10:22:24.000000000 +0000
|
+++ ./lib/psm.c 2019-10-02 09:55:02.700552941 +0000
|
||||||
@@ -680,13 +680,14 @@ void rpmpsmNotify(rpmpsm psm, int what,
|
@@ -518,9 +518,9 @@ static void markReplacedInstance(rpmts t
|
||||||
*/
|
|
||||||
static void markReplacedInstance(rpmts ts, rpmte te)
|
|
||||||
{
|
|
||||||
+ /* this must match rpmNameVersionCompare in depends.c */
|
|
||||||
rpmdbMatchIterator mi = rpmtsInitIterator(ts, RPMDBI_NAME, rpmteN(te), 0);
|
|
||||||
rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(te));
|
rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(te));
|
||||||
rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(te));
|
rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(te));
|
||||||
rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, rpmteR(te));
|
rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, rpmteR(te));
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
--- ./macros.in.orig 2011-05-11 15:36:05.000000000 +0000
|
--- ./macros.in.orig 2019-10-02 11:33:19.956358174 +0000
|
||||||
+++ ./macros.in 2011-05-11 15:38:44.000000000 +0000
|
+++ ./macros.in 2019-10-02 11:35:01.496144862 +0000
|
||||||
@@ -1027,7 +1027,8 @@ done \
|
@@ -1312,5 +1312,9 @@ end}
|
||||||
# %{perl_sitearch}/Image
|
%{expand:%__scm_setup_%{__scm} %{!-v:-q}}\
|
||||||
# %dir %{perl_sitearch}/auto/Image
|
%{!-N:%autopatch %{-v} %{-p:-p%{-p*}}}
|
||||||
#
|
|
||||||
-%requires_eq() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
+# XXX: to be moved to rpm-config-SUSE
|
||||||
+%requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
+%requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||||
+%requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
+%requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||||
%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch)
|
+
|
||||||
%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib)
|
# \endverbatim
|
||||||
%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)
|
#*/
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:1139c24b7372f89c0a697096bf9809be70ba55e006c23ff47305c1849d98acda
|
|
||||||
size 4156574
|
|
3
rpm-4.15.1.tar.bz2
Normal file
3
rpm-4.15.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ddef45f9601cd12042edfc9b6e37efcca32814e1e0f4bb8682d08144a3e2d230
|
||||||
|
size 4243893
|
@ -1,7 +1,7 @@
|
|||||||
--- ./build/pack.c.orig 2017-10-11 12:39:53.009897937 +0000
|
--- ./build/pack.c.orig 2019-06-26 14:17:31.395985720 +0000
|
||||||
+++ ./build/pack.c 2017-12-04 16:02:29.299440578 +0000
|
+++ ./build/pack.c 2019-10-02 11:31:05.908639084 +0000
|
||||||
@@ -641,6 +641,71 @@ static rpmRC checkPackages(char *pkgchec
|
@@ -743,11 +743,78 @@ static rpmRC packageBinary(rpmSpec spec,
|
||||||
return RPMRC_OK;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static void trimChangelog(Header h)
|
+static void trimChangelog(Header h)
|
||||||
@ -71,18 +71,17 @@
|
|||||||
+
|
+
|
||||||
rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||||||
{
|
{
|
||||||
rpmRC rc;
|
rpmRC rc = RPMRC_OK;
|
||||||
@@ -648,6 +713,7 @@ rpmRC packageBinaries(rpmSpec spec, cons
|
|
||||||
Package pkg;
|
Package pkg;
|
||||||
char *pkglist = NULL;
|
|
||||||
|
|
||||||
+ trimChangelog(spec->packages->header);
|
+ trimChangelog(spec->packages->header);
|
||||||
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
+
|
||||||
char *fn;
|
/* Run binary creation in parallel */
|
||||||
|
#pragma omp parallel
|
||||||
--- ./build/parseChangelog.c.orig 2017-10-05 10:04:56.859602170 +0000
|
#pragma omp single
|
||||||
+++ ./build/parseChangelog.c 2017-12-04 14:47:41.249346774 +0000
|
--- ./build/parseChangelog.c.orig 2019-06-26 14:17:31.395985720 +0000
|
||||||
@@ -255,6 +255,11 @@ static rpmRC addChangelog(Header h, ARGV
|
+++ ./build/parseChangelog.c 2019-10-02 11:29:26.684840735 +0000
|
||||||
|
@@ -253,6 +253,11 @@ static rpmRC addChangelog(Header h, ARGV
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
60
rpm.changes
60
rpm.changes
@ -1,3 +1,63 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Dec 6 15:30:48 CET 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- disable pythondist requires generator for now
|
||||||
|
* modified patch: fileattrs.diff
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Nov 20 11:56:20 CET 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- drop python3-setuptools dependency from rpm-build, the package
|
||||||
|
is not part of ring-0
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Nov 19 11:09:08 CET 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- update to rpm-4.15.1
|
||||||
|
* bugfix release
|
||||||
|
- dropped patches:
|
||||||
|
* fix_lua_cflags.diff
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Nov 5 16:25:53 UTC 2019 - Neal Gompa <ngompa13@gmail.com>
|
||||||
|
|
||||||
|
- Fix shebang for pythondistdeps.py to use Python 3
|
||||||
|
+ Modify patch: pythondistdeps.diff
|
||||||
|
- Move pythondistdeps dependency generator to rpm-build
|
||||||
|
- Add python3-setuptools and python3 dependencies to rpm-build for pythondistdeps
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 29 14:42:26 UTC 2019 - Ignaz Forster <iforster@suse.com>
|
||||||
|
|
||||||
|
- Declare /var/lib/rpm as a ghost file (it is a link to /usr/lib/sysimage/rpm
|
||||||
|
generated in post script for quite some time now) [boo#1132796]
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Oct 2 14:53:19 CEST 2019 - mls@suse.de
|
||||||
|
|
||||||
|
- update to rpm-4.15.0
|
||||||
|
* dynamic build dependencies
|
||||||
|
* support for %elif, %elifos and %elifarch statements in spec
|
||||||
|
* caret version operator (the opposite of tilde)
|
||||||
|
* new %patchlist and %sourcelist spec sections
|
||||||
|
* new %{expr:#} built-in macro for evaluating expressions
|
||||||
|
* new %dnl macro primitive for comments
|
||||||
|
- dropped patches:
|
||||||
|
* 0001-Stop-papering-over-the-security-disaster-known-as-pr.patch
|
||||||
|
* 0002-Fix-use-after-free-introduced-in-0f21bdd0d7b2c45564d.patch
|
||||||
|
* adopt-language-specific-build_fooflags-macros-from-F.patch
|
||||||
|
* auto-config-update-riscv64.diff
|
||||||
|
* debugedit-macro.diff
|
||||||
|
* dwz-compression.patch
|
||||||
|
* getncpus.diff
|
||||||
|
* nameversioncompare.diff
|
||||||
|
* mono-find-requires.diff
|
||||||
|
* rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch
|
||||||
|
* set-flto=auto-by-default.patch
|
||||||
|
* source_date_epoch_buildtime.diff
|
||||||
|
- new patches:
|
||||||
|
* fix_lua_cflags.diff
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Aug 28 11:17:12 UTC 2019 - Fabian Vogt <fvogt@suse.com>
|
Wed Aug 28 11:17:12 UTC 2019 - Fabian Vogt <fvogt@suse.com>
|
||||||
|
|
||||||
|
61
rpm.spec
61
rpm.spec
@ -19,7 +19,7 @@
|
|||||||
#Compat macro for new _fillupdir macro introduced in Nov 2017
|
#Compat macro for new _fillupdir macro introduced in Nov 2017
|
||||||
%{?!_fillupdir:%define _fillupdir /var/adm/fillup-templates}
|
%{?!_fillupdir:%define _fillupdir /var/adm/fillup-templates}
|
||||||
|
|
||||||
%global librpmsover 8
|
%global librpmsover 9
|
||||||
|
|
||||||
Name: rpm
|
Name: rpm
|
||||||
BuildRequires: binutils
|
BuildRequires: binutils
|
||||||
@ -57,11 +57,11 @@ Requires: /usr/bin/awk
|
|||||||
Summary: The RPM Package Manager
|
Summary: The RPM Package Manager
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
Group: System/Packages
|
Group: System/Packages
|
||||||
Version: 4.14.2.1
|
Version: 4.15.1
|
||||||
Release: 0
|
Release: 0
|
||||||
URL: https://rpm.org/
|
URL: https://rpm.org/
|
||||||
#Git-Clone: https://github.com/rpm-software-management/rpm
|
#Git-Clone: https://github.com/rpm-software-management/rpm
|
||||||
Source: http://ftp.rpm.org/releases/rpm-4.14.x/rpm-%{version}.tar.bz2
|
Source: http://ftp.rpm.org/releases/rpm-4.15.x/rpm-%{version}.tar.bz2
|
||||||
Source1: RPM-HOWTO.tar.bz2
|
Source1: RPM-HOWTO.tar.bz2
|
||||||
Source5: rpmsort
|
Source5: rpmsort
|
||||||
Source8: rpmconfigcheck
|
Source8: rpmconfigcheck
|
||||||
@ -79,7 +79,6 @@ Patch5: usr-lib-sysimage-rpm.patch
|
|||||||
Patch11: debugedit.diff
|
Patch11: debugedit.diff
|
||||||
Patch13: ignore-auxv.diff
|
Patch13: ignore-auxv.diff
|
||||||
Patch12: localetag.diff
|
Patch12: localetag.diff
|
||||||
Patch14: nameversioncompare.diff
|
|
||||||
Patch15: dbfsync.diff
|
Patch15: dbfsync.diff
|
||||||
Patch16: dbrointerruptable.diff
|
Patch16: dbrointerruptable.diff
|
||||||
Patch18: refreshtestarch.diff
|
Patch18: refreshtestarch.diff
|
||||||
@ -116,7 +115,6 @@ Patch69: nobuildcolor.diff
|
|||||||
Patch70: fileattrs.diff
|
Patch70: fileattrs.diff
|
||||||
Patch71: nomagiccheck.diff
|
Patch71: nomagiccheck.diff
|
||||||
Patch73: assumeexec.diff
|
Patch73: assumeexec.diff
|
||||||
Patch74: mono-find-requires.diff
|
|
||||||
Patch75: rpm-deptracking.patch
|
Patch75: rpm-deptracking.patch
|
||||||
Patch77: langnoc.diff
|
Patch77: langnoc.diff
|
||||||
Patch78: headerchk2.diff
|
Patch78: headerchk2.diff
|
||||||
@ -127,19 +125,9 @@ Patch99: enable-postin-scripts-error.diff
|
|||||||
Patch100: rpm-findlang-inject-metainfo.patch
|
Patch100: rpm-findlang-inject-metainfo.patch
|
||||||
Patch102: emptymanifest.diff
|
Patch102: emptymanifest.diff
|
||||||
Patch103: find-lang-qt-qm.patch
|
Patch103: find-lang-qt-qm.patch
|
||||||
Patch108: debugedit-macro.diff
|
|
||||||
Patch109: pythondistdeps.diff
|
Patch109: pythondistdeps.diff
|
||||||
Patch114: source_date_epoch_buildtime.diff
|
|
||||||
Patch117: findsupplements.diff
|
Patch117: findsupplements.diff
|
||||||
Patch118: dwz-compression.patch
|
|
||||||
Patch119: getncpus.diff
|
|
||||||
Patch120: rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch
|
|
||||||
Patch121: adopt-language-specific-build_fooflags-macros-from-F.patch
|
|
||||||
Patch122: 0001-Stop-papering-over-the-security-disaster-known-as-pr.patch
|
|
||||||
Patch123: 0002-Fix-use-after-free-introduced-in-0f21bdd0d7b2c45564d.patch
|
|
||||||
Patch124: set-flto=auto-by-default.patch
|
|
||||||
Patch6464: auto-config-update-aarch64-ppc64le.diff
|
Patch6464: auto-config-update-aarch64-ppc64le.diff
|
||||||
Patch6465: auto-config-update-riscv64.diff
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
#
|
#
|
||||||
# avoid bootstrapping problem
|
# avoid bootstrapping problem
|
||||||
@ -212,6 +200,10 @@ Requires: xz
|
|||||||
# drop candidates
|
# drop candidates
|
||||||
Requires: cpio
|
Requires: cpio
|
||||||
Requires: file
|
Requires: file
|
||||||
|
# for pythondistdeps generator
|
||||||
|
Requires: python3-base
|
||||||
|
# The point of the split
|
||||||
|
Conflicts: rpm < 4.15.0
|
||||||
|
|
||||||
%description build
|
%description build
|
||||||
If you want to build a rpm, you need this package. It provides rpmbuild
|
If you want to build a rpm, you need this package. It provides rpmbuild
|
||||||
@ -234,29 +226,21 @@ rm -f rpmdb/db.h
|
|||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch -P 4
|
%patch -P 4
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 18
|
%patch -P 11 -P 12 -P 13 -P 15 -P 16 -P 18
|
||||||
%patch -P 20 -P 21 -P 24 -P 25 -P 26 -P 27 -P 29
|
%patch -P 20 -P 21 -P 24 -P 25 -P 26 -P 27 -P 29
|
||||||
%patch -P 30 -P 32 -P 33 -P 34 -P 35 -P 36 -P 38
|
%patch -P 30 -P 32 -P 33 -P 34 -P 35 -P 36 -P 38
|
||||||
%patch -P 43 -P 45 -P 46 -P 47 -P 49
|
%patch -P 43 -P 45 -P 46 -P 47 -P 49
|
||||||
%patch -P 51 -P 55 -P 56 -P 57 -P 58
|
%patch -P 51 -P 55 -P 56 -P 57 -P 58
|
||||||
%patch -P 60 -P 61 -P 66 -P 67 -P 68 -P 69
|
%patch -P 60 -P 61 -P 66 -P 67 -P 68 -P 69
|
||||||
%patch -P 70 -P 71 -P 73 -P 74 -P 75 -P 77 -P 78
|
%patch -P 70 -P 71 -P 73 -P 75 -P 77 -P 78
|
||||||
%patch -P 85
|
%patch -P 85
|
||||||
%patch -P 93 -P 94 -P 99
|
%patch -P 93 -P 94 -P 99
|
||||||
%patch -P 100 -P 102 -P 103 -P 108
|
%patch -P 100 -P 102 -P 103
|
||||||
%patch -P 109 -P 114 -P 117 -P 118
|
%patch -P 109 -P 117
|
||||||
%patch -P 119 -P 120
|
|
||||||
%patch121 -p1
|
|
||||||
%patch122 -p1
|
|
||||||
%patch123 -p1
|
|
||||||
%patch124 -p1
|
|
||||||
|
|
||||||
%ifarch aarch64 ppc64le riscv64
|
%ifarch aarch64 ppc64le riscv64
|
||||||
%patch6464
|
%patch6464
|
||||||
%endif
|
%endif
|
||||||
%ifarch riscv64
|
|
||||||
%patch6465
|
|
||||||
%endif
|
|
||||||
|
|
||||||
cp config.guess config.sub db/dist/
|
cp config.guess config.sub db/dist/
|
||||||
cp config.guess config.sub beecrypt/
|
cp config.guess config.sub beecrypt/
|
||||||
@ -286,13 +270,17 @@ popd
|
|||||||
|
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
||||||
--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --with-lua \
|
--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib \
|
||||||
--without-external-db \
|
--with-lua \
|
||||||
--with-vendor=suse \
|
--with-vendor=suse \
|
||||||
--with-rundir=/run \
|
--with-rundir=/run \
|
||||||
--without-archive \
|
--without-archive \
|
||||||
--with-selinux --with-internal-beecrypt \
|
--with-selinux \
|
||||||
--with-acl --with-cap --enable-shared %{?with_python: --enable-python} $BUILDTARGET
|
--with-internal-beecrypt \
|
||||||
|
--with-acl \
|
||||||
|
--with-cap \
|
||||||
|
--enable-zstd \
|
||||||
|
--enable-shared %{?with_python: --enable-python} $BUILDTARGET
|
||||||
|
|
||||||
rm po/de.gmo
|
rm po/de.gmo
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
@ -327,7 +315,6 @@ for d in %{buildroot}/usr/lib/rpm/platform/*-linux/macros ; do
|
|||||||
chmod 755 %{buildroot}/usr/src/packages/RPMS/$dd
|
chmod 755 %{buildroot}/usr/src/packages/RPMS/$dd
|
||||||
done
|
done
|
||||||
mkdir -p %{buildroot}/usr/lib/sysimage/rpm
|
mkdir -p %{buildroot}/usr/lib/sysimage/rpm
|
||||||
mkdir -p %{buildroot}/var/lib/rpm
|
|
||||||
gzip -9 %{buildroot}/%{_mandir}/man[18]/*.[18]
|
gzip -9 %{buildroot}/%{_mandir}/man[18]/*.[18]
|
||||||
export RPM_BUILD_ROOT
|
export RPM_BUILD_ROOT
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
@ -386,6 +373,7 @@ if test ! -L var/lib/rpm -a -f var/lib/rpm/Packages -a ! -f usr/lib/sysimage/rpm
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
test -f usr/lib/sysimage/rpm/Packages || rpmdb --initdb
|
test -f usr/lib/sysimage/rpm/Packages || rpmdb --initdb
|
||||||
|
test -e var/lib/rpm || ln -s ../../usr/lib/sysimage/rpm var/lib/rpm
|
||||||
|
|
||||||
%posttrans
|
%posttrans
|
||||||
# var/lib/rpm migration
|
# var/lib/rpm migration
|
||||||
@ -405,7 +393,8 @@ if test ! -L var/lib/rpm ; then
|
|||||||
mv -f var/lib/rpm/.[!.]* usr/lib/sysimage/rpm/
|
mv -f var/lib/rpm/.[!.]* usr/lib/sysimage/rpm/
|
||||||
mv -f var/lib/rpm/* usr/lib/sysimage/rpm/
|
mv -f var/lib/rpm/* usr/lib/sysimage/rpm/
|
||||||
fi
|
fi
|
||||||
rmdir var/lib/rpm && ln -s ../../usr/lib/sysimage/rpm var/lib/rpm
|
test -d var/lib/rpm && rmdir var/lib/rpm
|
||||||
|
test -e var/lib/rpm || ln -s ../../usr/lib/sysimage/rpm var/lib/rpm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%files -f rpm.lang
|
%files -f rpm.lang
|
||||||
@ -428,6 +417,8 @@ fi
|
|||||||
%exclude /usr/lib/rpm/brp-*
|
%exclude /usr/lib/rpm/brp-*
|
||||||
%exclude /usr/lib/rpm/check-*
|
%exclude /usr/lib/rpm/check-*
|
||||||
%exclude /usr/lib/rpm/*find*
|
%exclude /usr/lib/rpm/*find*
|
||||||
|
%exclude /usr/lib/rpm/fileattrs/pythondist.attr
|
||||||
|
%exclude /usr/lib/rpm/pythondistdeps.py
|
||||||
/usr/sbin/rpmconfigcheck
|
/usr/sbin/rpmconfigcheck
|
||||||
/usr/lib/systemd/system/rpmconfigcheck.service
|
/usr/lib/systemd/system/rpmconfigcheck.service
|
||||||
/usr/lib/rpm
|
/usr/lib/rpm
|
||||||
@ -438,7 +429,7 @@ fi
|
|||||||
%doc %{_mandir}/man[18]/*.[18]*
|
%doc %{_mandir}/man[18]/*.[18]*
|
||||||
%dir /usr/lib/sysimage
|
%dir /usr/lib/sysimage
|
||||||
%dir /usr/lib/sysimage/rpm
|
%dir /usr/lib/sysimage/rpm
|
||||||
%dir /var/lib/rpm
|
%ghost /var/lib/rpm
|
||||||
%dir %attr(755,root,root) /usr/src/packages/BUILD
|
%dir %attr(755,root,root) /usr/src/packages/BUILD
|
||||||
%dir %attr(755,root,root) /usr/src/packages/SPECS
|
%dir %attr(755,root,root) /usr/src/packages/SPECS
|
||||||
%dir %attr(755,root,root) /usr/src/packages/SOURCES
|
%dir %attr(755,root,root) /usr/src/packages/SOURCES
|
||||||
@ -465,6 +456,8 @@ fi
|
|||||||
/usr/lib/rpm/brp-*
|
/usr/lib/rpm/brp-*
|
||||||
/usr/lib/rpm/check-*
|
/usr/lib/rpm/check-*
|
||||||
/usr/lib/rpm/*find*
|
/usr/lib/rpm/*find*
|
||||||
|
/usr/lib/rpm/fileattrs/pythondist.attr
|
||||||
|
/usr/lib/rpm/pythondistdeps.py
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(644,root,root,755)
|
%defattr(644,root,root,755)
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
From 0d2176c9a3ae44fd0a67c9983b1a5ba0a00388fd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
|
||||||
Date: Mon, 15 Oct 2018 19:49:57 +0200
|
|
||||||
Subject: [PATCH] rpmfc: push name/epoch/version/release macro before invoking
|
|
||||||
depgens
|
|
||||||
|
|
||||||
Fixes: https://github.com/rpm-software-management/rpm/issues/502
|
|
||||||
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
|
||||||
---
|
|
||||||
build/rpmfc.c | 25 +++++++++++++++++++++++++
|
|
||||||
1 file changed, 25 insertions(+)
|
|
||||||
|
|
||||||
diff --git build/rpmfc.c build/rpmfc.c
|
|
||||||
index 2fbfc69ab..eccd6582a 100644
|
|
||||||
--- build/rpmfc.c
|
|
||||||
+++ build/rpmfc.c
|
|
||||||
@@ -1334,9 +1334,31 @@ static rpmRC rpmfcApplyExternal(rpmfc fc)
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
+typedef const struct macroExport_s {
|
|
||||||
+ const char * name;
|
|
||||||
+ rpmTagVal tag;
|
|
||||||
+} * macroExport;
|
|
||||||
+
|
|
||||||
+static struct macroExport_s const macroExportList[] = {
|
|
||||||
+ { "name", RPMTAG_NAME },
|
|
||||||
+ { "epoch", RPMTAG_EPOCH },
|
|
||||||
+ { "version", RPMTAG_VERSION },
|
|
||||||
+ { "release", RPMTAG_RELEASE },
|
|
||||||
+ { NULL, 0 }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
rpmRC rpmfcApply(rpmfc fc)
|
|
||||||
{
|
|
||||||
rpmRC rc;
|
|
||||||
+ Package pkg = fc->pkg;
|
|
||||||
+ macroExport me;
|
|
||||||
+ for (me = macroExportList; me->name; me++) {
|
|
||||||
+ char *val = headerGetAsString(pkg->header, me->tag);
|
|
||||||
+ if (val) {
|
|
||||||
+ rpmPushMacro(NULL, me->name, NULL, val, RMIL_SPEC);
|
|
||||||
+ free(val);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
/* If new-fangled dependency generation is disabled ... */
|
|
||||||
if (!rpmExpandNumeric("%{?_use_internal_dependency_generator}")) {
|
|
||||||
/* ... then generate dependencies using %{__find_requires} et al. */
|
|
||||||
@@ -1347,6 +1369,9 @@ rpmRC rpmfcApply(rpmfc fc)
|
|
||||||
/* ... otherwise generate per-file dependencies */
|
|
||||||
rc = rpmfcApplyInternal(fc);
|
|
||||||
}
|
|
||||||
+ for (me = macroExportList; me->name; me++)
|
|
||||||
+ if (headerIsEntry(pkg->header, me->tag))
|
|
||||||
+ rpmPopMacro(NULL, me->name);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
35
rpmrc.diff
35
rpmrc.diff
@ -1,5 +1,5 @@
|
|||||||
--- ./rpmrc.in.orig 2017-10-05 10:04:57.571602038 +0000
|
--- ./rpmrc.in.orig 2019-06-26 14:17:31.451985635 +0000
|
||||||
+++ ./rpmrc.in 2017-12-01 15:03:23.956144776 +0000
|
+++ ./rpmrc.in 2019-10-02 11:24:49.601403844 +0000
|
||||||
@@ -12,16 +12,16 @@
|
@@ -12,16 +12,16 @@
|
||||||
# "fat" binary with both archs, for Darwin
|
# "fat" binary with both archs, for Darwin
|
||||||
optflags: fat -O2 -g -arch i386 -arch ppc
|
optflags: fat -O2 -g -arch i386 -arch ppc
|
||||||
@ -65,9 +65,9 @@
|
|||||||
-optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16
|
-optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16
|
||||||
+optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mthumb -mabi=aapcs-linux
|
+optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mthumb -mabi=aapcs-linux
|
||||||
optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
|
optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
|
||||||
|
optflags: armv8l -O2 -g -march=armv8-a
|
||||||
optflags: m68k -O2 -g -fomit-frame-pointer
|
optflags: armv8hl -O2 -g -march=armv8-a -mfloat-abi=hard -mfpu=vfpv4
|
||||||
@@ -91,8 +92,8 @@ optflags: atariclone -O2 -g -fomit-frame
|
@@ -95,8 +96,8 @@ optflags: atariclone -O2 -g -fomit-frame
|
||||||
optflags: milan -O2 -g -fomit-frame-pointer
|
optflags: milan -O2 -g -fomit-frame-pointer
|
||||||
optflags: hades -O2 -g -fomit-frame-pointer
|
optflags: hades -O2 -g -fomit-frame-pointer
|
||||||
|
|
||||||
@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
optflags: sh3 -O2 -g
|
optflags: sh3 -O2 -g
|
||||||
optflags: sh4 -O2 -g -mieee
|
optflags: sh4 -O2 -g -mieee
|
||||||
@@ -288,17 +289,17 @@ os_canon: MacOSX: macosx 21
|
@@ -300,17 +301,17 @@ os_canon: MacOSX: macosx 21
|
||||||
#############################################################
|
#############################################################
|
||||||
# For a given uname().machine, the default build arch
|
# For a given uname().machine, the default build arch
|
||||||
|
|
||||||
@ -104,7 +104,7 @@
|
|||||||
buildarchtranslate: i486: i386
|
buildarchtranslate: i486: i386
|
||||||
buildarchtranslate: i386: i386
|
buildarchtranslate: i386: i386
|
||||||
|
|
||||||
@@ -320,6 +321,7 @@ buildarchtranslate: sparc64v: sparc64
|
@@ -332,6 +333,7 @@ buildarchtranslate: sparc64v: sparc64
|
||||||
buildarchtranslate: osfmach3_ppc: ppc
|
buildarchtranslate: osfmach3_ppc: ppc
|
||||||
buildarchtranslate: powerpc: ppc
|
buildarchtranslate: powerpc: ppc
|
||||||
buildarchtranslate: powerppc: ppc
|
buildarchtranslate: powerppc: ppc
|
||||||
@ -112,7 +112,7 @@
|
|||||||
buildarchtranslate: ppc8260: ppc
|
buildarchtranslate: ppc8260: ppc
|
||||||
buildarchtranslate: ppc8560: ppc
|
buildarchtranslate: ppc8560: ppc
|
||||||
buildarchtranslate: ppc32dy4: ppc
|
buildarchtranslate: ppc32dy4: ppc
|
||||||
@@ -381,6 +383,15 @@ buildarchtranslate: aarch64: aarch64
|
@@ -398,6 +400,15 @@ buildarchtranslate: arm64: aarch64
|
||||||
buildarchtranslate: riscv: riscv64
|
buildarchtranslate: riscv: riscv64
|
||||||
buildarchtranslate: riscv64: riscv64
|
buildarchtranslate: riscv64: riscv64
|
||||||
|
|
||||||
@ -128,7 +128,7 @@
|
|||||||
#############################################################
|
#############################################################
|
||||||
# Architecture compatibility
|
# Architecture compatibility
|
||||||
|
|
||||||
@@ -445,15 +456,21 @@ arch_compat: mips64r6el: mipsr6el
|
@@ -462,16 +473,20 @@ arch_compat: mips64r6el: mipsr6el
|
||||||
arch_compat: hppa2.0: hppa1.2
|
arch_compat: hppa2.0: hppa1.2
|
||||||
arch_compat: hppa1.2: hppa1.1
|
arch_compat: hppa1.2: hppa1.1
|
||||||
arch_compat: hppa1.1: hppa1.0
|
arch_compat: hppa1.1: hppa1.0
|
||||||
@ -140,9 +140,8 @@
|
|||||||
+arch_compat: armv5teb: armv5b
|
+arch_compat: armv5teb: armv5b
|
||||||
+arch_compat: armv5b: armv4b
|
+arch_compat: armv5b: armv4b
|
||||||
arch_compat: armv4b: noarch
|
arch_compat: armv4b: noarch
|
||||||
+arch_compat: armv7hl: armv7l
|
arch_compat: armv8l: armv7l
|
||||||
arch_compat: armv7l: armv6l
|
arch_compat: armv7l: armv6l
|
||||||
+arch_compat: armv6hl: armv6l
|
|
||||||
arch_compat: armv6l: armv5tejl
|
arch_compat: armv6l: armv5tejl
|
||||||
arch_compat: armv5tejl: armv5tel
|
arch_compat: armv5tejl: armv5tel
|
||||||
arch_compat: armv5tel: armv5tl
|
arch_compat: armv5tel: armv5tl
|
||||||
@ -152,7 +151,7 @@
|
|||||||
arch_compat: armv4tl: armv4l
|
arch_compat: armv4tl: armv4l
|
||||||
arch_compat: armv4l: armv3l
|
arch_compat: armv4l: armv3l
|
||||||
arch_compat: armv3l: noarch
|
arch_compat: armv3l: noarch
|
||||||
@@ -475,7 +492,7 @@ arch_compat: i370: noarch
|
@@ -497,7 +512,7 @@ arch_compat: i370: noarch
|
||||||
arch_compat: s390: noarch
|
arch_compat: s390: noarch
|
||||||
arch_compat: s390x: s390 noarch
|
arch_compat: s390x: s390 noarch
|
||||||
|
|
||||||
@ -161,17 +160,7 @@
|
|||||||
|
|
||||||
arch_compat: x86_64: amd64 em64t athlon noarch
|
arch_compat: x86_64: amd64 em64t athlon noarch
|
||||||
arch_compat: amd64: x86_64 em64t athlon noarch
|
arch_compat: amd64: x86_64 em64t athlon noarch
|
||||||
@@ -578,7 +595,9 @@ buildarch_compat: mips64r6: noarch
|
@@ -623,7 +638,8 @@ buildarch_compat: armv6hl: noarch
|
||||||
buildarch_compat: mips64r6el: noarch
|
|
||||||
|
|
||||||
buildarch_compat: armv4b: noarch
|
|
||||||
+buildarch_compat: armv7hl: armv7l
|
|
||||||
buildarch_compat: armv7l: armv6l
|
|
||||||
+buildarch_compat: armv6hl: armv6l
|
|
||||||
buildarch_compat: armv6l: armv5tejl
|
|
||||||
buildarch_compat: armv5tejl: armv5tel armv5tl
|
|
||||||
buildarch_compat: armv5tel: armv4tl armv5tl
|
|
||||||
@@ -594,7 +613,8 @@ buildarch_compat: armv6hl: noarch
|
|
||||||
buildarch_compat: hppa2.0: hppa1.2
|
buildarch_compat: hppa2.0: hppa1.2
|
||||||
buildarch_compat: hppa1.2: hppa1.1
|
buildarch_compat: hppa1.2: hppa1.1
|
||||||
buildarch_compat: hppa1.1: hppa1.0
|
buildarch_compat: hppa1.1: hppa1.0
|
||||||
|
425
safeugid.diff
425
safeugid.diff
@ -1,211 +1,214 @@
|
|||||||
--- ./lib/rpmchroot.c.orig 2012-11-07 12:55:24.000000000 +0000
|
--- ../safeugid.diff 2019-10-02 13:37:13.191868203 +0200
|
||||||
+++ ./lib/rpmchroot.c 2014-02-20 12:50:05.360815211 +0000
|
+++ P 2019-10-02 13:36:09.036002978 +0200
|
||||||
@@ -66,6 +66,7 @@ int rpmChrootIn(void)
|
@@ -0,0 +1,211 @@
|
||||||
} else if (rootState.chrootDone == 0) {
|
+--- ./lib/rpmchroot.c.orig 2019-06-26 14:17:31.411985696 +0000
|
||||||
if (chdir("/") == 0 && chroot(rootState.rootDir) == 0) {
|
++++ ./lib/rpmchroot.c 2019-10-02 11:35:58.788024507 +0000
|
||||||
rootState.chrootDone = 1;
|
+@@ -126,6 +126,7 @@ int rpmChrootIn(void)
|
||||||
+ rpmugChroot(1);
|
+
|
||||||
} else {
|
+ if (chdir("/") == 0 && chroot(rootState.rootDir) == 0) {
|
||||||
rpmlog(RPMLOG_ERR, _("Unable to change root directory: %m\n"));
|
+ rootState.chrootDone = 1;
|
||||||
rc = -1;
|
++ rpmugChroot(1);
|
||||||
@@ -91,6 +92,7 @@ int rpmChrootOut(void)
|
+ } else {
|
||||||
} else if (rootState.chrootDone == 1) {
|
+ rpmlog(RPMLOG_ERR, _("Unable to change root directory: %m\n"));
|
||||||
if (chroot(".") == 0 && fchdir(rootState.cwd) == 0) {
|
+ rc = -1;
|
||||||
rootState.chrootDone = 0;
|
+@@ -151,6 +152,7 @@ int rpmChrootOut(void)
|
||||||
+ rpmugChroot(0);
|
+ } else if (rootState.chrootDone == 1) {
|
||||||
} else {
|
+ if (chroot(".") == 0 && fchdir(rootState.cwd) == 0) {
|
||||||
rpmlog(RPMLOG_ERR, _("Unable to restore root directory: %m\n"));
|
+ rootState.chrootDone = 0;
|
||||||
rc = -1;
|
++ rpmugChroot(0);
|
||||||
--- ./lib/rpmug.c.orig 2014-02-05 13:04:37.000000000 +0000
|
+ } else {
|
||||||
+++ ./lib/rpmug.c 2014-02-20 12:50:05.361815211 +0000
|
+ rpmlog(RPMLOG_ERR, _("Unable to restore root directory: %m\n"));
|
||||||
@@ -10,6 +10,47 @@
|
+ rc = -1;
|
||||||
#include "lib/rpmug.h"
|
+--- ./lib/rpmug.c.orig 2019-06-26 14:17:31.418985685 +0000
|
||||||
#include "debug.h"
|
++++ ./lib/rpmug.c 2019-10-02 11:35:58.788024507 +0000
|
||||||
|
+@@ -11,6 +11,47 @@
|
||||||
+#if defined(__GLIBC__)
|
+ #include "lib/rpmug.h"
|
||||||
+
|
+ #include "debug.h"
|
||||||
+static int inchroot;
|
+
|
||||||
+
|
++#if defined(__GLIBC__)
|
||||||
+/*
|
++
|
||||||
+ * Unfortunatelly glibc caches nss/nscd data and there is no
|
++static int inchroot;
|
||||||
+ * good way to flush those caches when we did a chroot(). Thus
|
++
|
||||||
+ * we need to parse /etc/passwd and /etc/group ourselfs.
|
++/*
|
||||||
+ */
|
++ * Unfortunatelly glibc caches nss/nscd data and there is no
|
||||||
+static int safe_lookup(const char * file, const char * name)
|
++ * good way to flush those caches when we did a chroot(). Thus
|
||||||
+{
|
++ * we need to parse /etc/passwd and /etc/group ourselfs.
|
||||||
+ FILE *fp;
|
++ */
|
||||||
+ int l;
|
++static int safe_lookup(const char * file, const char * name)
|
||||||
+ char buf[4096], *p;
|
++{
|
||||||
+
|
++ FILE *fp;
|
||||||
+ if (!name || !*name)
|
++ int l;
|
||||||
+ return -1;
|
++ char buf[4096], *p;
|
||||||
+ l = strlen(name);
|
++
|
||||||
+ if ((fp = fopen(file, "r")) == 0)
|
++ if (!name || !*name)
|
||||||
+ return -1;
|
++ return -1;
|
||||||
+ while ((p = fgets(buf, sizeof(buf), fp)) != 0) {
|
++ l = strlen(name);
|
||||||
+ if (*p == '#')
|
++ if ((fp = fopen(file, "r")) == 0)
|
||||||
+ continue;
|
++ return -1;
|
||||||
+ while (*p && (*p == ' ' || *p == '\t'))
|
++ while ((p = fgets(buf, sizeof(buf), fp)) != 0) {
|
||||||
+ p++;
|
++ if (*p == '#')
|
||||||
+ if (strncmp(p, name, l) != 0 || p[l] != ':')
|
++ continue;
|
||||||
+ continue;
|
++ while (*p && (*p == ' ' || *p == '\t'))
|
||||||
+ p = strchr(p + l + 1, ':');
|
++ p++;
|
||||||
+ if (!p)
|
++ if (strncmp(p, name, l) != 0 || p[l] != ':')
|
||||||
+ continue;
|
++ continue;
|
||||||
+ fclose(fp);
|
++ p = strchr(p + l + 1, ':');
|
||||||
+ p++;
|
++ if (!p)
|
||||||
+ while (*p && (*p == ' ' || *p == '\t'))
|
++ continue;
|
||||||
+ p++;
|
++ fclose(fp);
|
||||||
+ return atoi(p);
|
++ p++;
|
||||||
+ }
|
++ while (*p && (*p == ' ' || *p == '\t'))
|
||||||
+ fclose(fp);
|
++ p++;
|
||||||
+ return -1;
|
++ return atoi(p);
|
||||||
+}
|
++ }
|
||||||
+#endif
|
++ fclose(fp);
|
||||||
+
|
++ return -1;
|
||||||
/*
|
++}
|
||||||
* These really ought to use hash tables. I just made the
|
++#endif
|
||||||
* guess that most files would be owned by root or the same person/group
|
++
|
||||||
@@ -43,17 +84,28 @@ int rpmugUid(const char * thisUname, uid
|
+ /*
|
||||||
lastUnameAlloced = thisUnameLen + 10;
|
+ * These really ought to use hash tables. I just made the
|
||||||
lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */
|
+ * guess that most files would be owned by root or the same person/group
|
||||||
}
|
+@@ -44,17 +85,28 @@ int rpmugUid(const char * thisUname, uid
|
||||||
- strcpy(lastUname, thisUname);
|
+ lastUnameAlloced = thisUnameLen + 10;
|
||||||
|
+ lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */
|
||||||
- pwent = getpwnam(thisUname);
|
+ }
|
||||||
- if (pwent == NULL) {
|
+- strcpy(lastUname, thisUname);
|
||||||
- /* FIX: shrug */
|
+
|
||||||
- endpwent();
|
+- pwent = getpwnam(thisUname);
|
||||||
+#if defined(__GLIBC__)
|
+- if (pwent == NULL) {
|
||||||
+ if (inchroot) {
|
+- /* FIX: shrug */
|
||||||
+ int uid = safe_lookup("/etc/passwd", thisUname);
|
+- endpwent();
|
||||||
+ if (uid < 0)
|
++#if defined(__GLIBC__)
|
||||||
+ return -1;
|
++ if (inchroot) {
|
||||||
+ lastUid = uid;
|
++ int uid = safe_lookup("/etc/passwd", thisUname);
|
||||||
+ } else
|
++ if (uid < 0)
|
||||||
+#endif
|
++ return -1;
|
||||||
+ {
|
++ lastUid = uid;
|
||||||
pwent = getpwnam(thisUname);
|
++ } else
|
||||||
- if (pwent == NULL) return -1;
|
++#endif
|
||||||
+ if (pwent == NULL) {
|
++ {
|
||||||
+ /* FIX: shrug */
|
+ pwent = getpwnam(thisUname);
|
||||||
+ endpwent();
|
+- if (pwent == NULL) return -1;
|
||||||
+ pwent = getpwnam(thisUname);
|
++ if (pwent == NULL) {
|
||||||
+ if (pwent == NULL) return -1;
|
++ /* FIX: shrug */
|
||||||
+ }
|
++ endpwent();
|
||||||
+ lastUid = pwent->pw_uid;
|
++ pwent = getpwnam(thisUname);
|
||||||
}
|
++ if (pwent == NULL) return -1;
|
||||||
|
++ }
|
||||||
- lastUid = pwent->pw_uid;
|
++ lastUid = pwent->pw_uid;
|
||||||
+ strcpy(lastUname, thisUname);
|
+ }
|
||||||
+ lastUnameLen = thisUnameLen;
|
+
|
||||||
}
|
+- lastUid = pwent->pw_uid;
|
||||||
|
++ strcpy(lastUname, thisUname);
|
||||||
*uid = lastUid;
|
++ lastUnameLen = thisUnameLen;
|
||||||
@@ -86,18 +138,29 @@ int rpmugGid(const char * thisGname, gid
|
+ }
|
||||||
lastGnameAlloced = thisGnameLen + 10;
|
+
|
||||||
lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */
|
+ *uid = lastUid;
|
||||||
}
|
+@@ -87,18 +139,29 @@ int rpmugGid(const char * thisGname, gid
|
||||||
- strcpy(lastGname, thisGname);
|
+ lastGnameAlloced = thisGnameLen + 10;
|
||||||
|
+ lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */
|
||||||
- grent = getgrnam(thisGname);
|
+ }
|
||||||
- if (grent == NULL) {
|
+- strcpy(lastGname, thisGname);
|
||||||
- /* FIX: shrug */
|
+
|
||||||
- endgrent();
|
+- grent = getgrnam(thisGname);
|
||||||
+#if defined(__GLIBC__)
|
+- if (grent == NULL) {
|
||||||
+ if (inchroot) {
|
+- /* FIX: shrug */
|
||||||
+ int gid = safe_lookup("/etc/group", thisGname);
|
+- endgrent();
|
||||||
+ if (gid < 0)
|
++#if defined(__GLIBC__)
|
||||||
+ return -1;
|
++ if (inchroot) {
|
||||||
+ lastGid = gid;
|
++ int gid = safe_lookup("/etc/group", thisGname);
|
||||||
+ } else
|
++ if (gid < 0)
|
||||||
+#endif
|
++ return -1;
|
||||||
+ {
|
++ lastGid = gid;
|
||||||
grent = getgrnam(thisGname);
|
++ } else
|
||||||
if (grent == NULL) {
|
++#endif
|
||||||
- return -1;
|
++ {
|
||||||
+ /* FIX: shrug */
|
+ grent = getgrnam(thisGname);
|
||||||
+ endgrent();
|
+ if (grent == NULL) {
|
||||||
+ grent = getgrnam(thisGname);
|
+- return -1;
|
||||||
+ if (grent == NULL) {
|
++ /* FIX: shrug */
|
||||||
+ return -1;
|
++ endgrent();
|
||||||
+ }
|
++ grent = getgrnam(thisGname);
|
||||||
}
|
++ if (grent == NULL) {
|
||||||
+ lastGid = grent->gr_gid;
|
++ return -1;
|
||||||
}
|
++ }
|
||||||
- lastGid = grent->gr_gid;
|
+ }
|
||||||
+ strcpy(lastGname, thisGname);
|
++ lastGid = grent->gr_gid;
|
||||||
+ lastGnameLen = thisGnameLen;
|
+ }
|
||||||
}
|
+- lastGid = grent->gr_gid;
|
||||||
|
++ strcpy(lastGname, thisGname);
|
||||||
*gid = lastGid;
|
++ lastGnameLen = thisGnameLen;
|
||||||
@@ -109,7 +172,7 @@ const char * rpmugUname(uid_t uid)
|
+ }
|
||||||
{
|
+
|
||||||
static uid_t lastUid = (uid_t) -1;
|
+ *gid = lastGid;
|
||||||
static char * lastUname = NULL;
|
+@@ -110,7 +173,7 @@ const char * rpmugUname(uid_t uid)
|
||||||
- static size_t lastUnameLen = 0;
|
+ {
|
||||||
+ static size_t lastUnameAlloced = 0;
|
+ static uid_t lastUid = (uid_t) -1;
|
||||||
|
+ static char * lastUname = NULL;
|
||||||
if (uid == (uid_t) -1) {
|
+- static size_t lastUnameLen = 0;
|
||||||
lastUid = (uid_t) -1;
|
++ static size_t lastUnameAlloced = 0;
|
||||||
@@ -126,9 +189,9 @@ const char * rpmugUname(uid_t uid)
|
+
|
||||||
|
+ if (uid == (uid_t) -1) {
|
||||||
lastUid = uid;
|
+ lastUid = (uid_t) -1;
|
||||||
len = strlen(pwent->pw_name);
|
+@@ -127,9 +190,9 @@ const char * rpmugUname(uid_t uid)
|
||||||
- if (lastUnameLen < len + 1) {
|
+
|
||||||
- lastUnameLen = len + 20;
|
+ lastUid = uid;
|
||||||
- lastUname = xrealloc(lastUname, lastUnameLen);
|
+ len = strlen(pwent->pw_name);
|
||||||
+ if (lastUnameAlloced < len + 1) {
|
+- if (lastUnameLen < len + 1) {
|
||||||
+ lastUnameAlloced = len + 20;
|
+- lastUnameLen = len + 20;
|
||||||
+ lastUname = xrealloc(lastUname, lastUnameAlloced);
|
+- lastUname = xrealloc(lastUname, lastUnameLen);
|
||||||
}
|
++ if (lastUnameAlloced < len + 1) {
|
||||||
strcpy(lastUname, pwent->pw_name);
|
++ lastUnameAlloced = len + 20;
|
||||||
|
++ lastUname = xrealloc(lastUname, lastUnameAlloced);
|
||||||
@@ -140,7 +203,7 @@ const char * rpmugGname(gid_t gid)
|
+ }
|
||||||
{
|
+ strcpy(lastUname, pwent->pw_name);
|
||||||
static gid_t lastGid = (gid_t) -1;
|
+
|
||||||
static char * lastGname = NULL;
|
+@@ -141,7 +204,7 @@ const char * rpmugGname(gid_t gid)
|
||||||
- static size_t lastGnameLen = 0;
|
+ {
|
||||||
+ static size_t lastGnameAlloced = 0;
|
+ static gid_t lastGid = (gid_t) -1;
|
||||||
|
+ static char * lastGname = NULL;
|
||||||
if (gid == (gid_t) -1) {
|
+- static size_t lastGnameLen = 0;
|
||||||
lastGid = (gid_t) -1;
|
++ static size_t lastGnameAlloced = 0;
|
||||||
@@ -157,9 +220,9 @@ const char * rpmugGname(gid_t gid)
|
+
|
||||||
|
+ if (gid == (gid_t) -1) {
|
||||||
lastGid = gid;
|
+ lastGid = (gid_t) -1;
|
||||||
len = strlen(grent->gr_name);
|
+@@ -158,9 +221,9 @@ const char * rpmugGname(gid_t gid)
|
||||||
- if (lastGnameLen < len + 1) {
|
+
|
||||||
- lastGnameLen = len + 20;
|
+ lastGid = gid;
|
||||||
- lastGname = xrealloc(lastGname, lastGnameLen);
|
+ len = strlen(grent->gr_name);
|
||||||
+ if (lastGnameAlloced < len + 1) {
|
+- if (lastGnameLen < len + 1) {
|
||||||
+ lastGnameAlloced = len + 20;
|
+- lastGnameLen = len + 20;
|
||||||
+ lastGname = xrealloc(lastGname, lastGnameAlloced);
|
+- lastGname = xrealloc(lastGname, lastGnameLen);
|
||||||
}
|
++ if (lastGnameAlloced < len + 1) {
|
||||||
strcpy(lastGname, grent->gr_name);
|
++ lastGnameAlloced = len + 20;
|
||||||
|
++ lastGname = xrealloc(lastGname, lastGnameAlloced);
|
||||||
@@ -189,3 +252,16 @@ void rpmugFree(void)
|
+ }
|
||||||
rpmugUname(-1);
|
+ strcpy(lastGname, grent->gr_name);
|
||||||
rpmugGname(-1);
|
+
|
||||||
}
|
+@@ -192,3 +255,16 @@ void rpmugFree(void)
|
||||||
+
|
+ rpmugUname(-1);
|
||||||
+void rpmugChroot(int in)
|
+ rpmugGname(-1);
|
||||||
+{
|
+ }
|
||||||
+ /* tell libc to drop caches / file descriptors */
|
++
|
||||||
+ endpwent();
|
++void rpmugChroot(int in)
|
||||||
+ endgrent();
|
++{
|
||||||
+ /* drop our own caches */
|
++ /* tell libc to drop caches / file descriptors */
|
||||||
+ rpmugUid(NULL, NULL);
|
++ endpwent();
|
||||||
+ rpmugGid(NULL, NULL);
|
++ endgrent();
|
||||||
+#if defined(__GLIBC__)
|
++ /* drop our own caches */
|
||||||
+ inchroot = in;
|
++ rpmugUid(NULL, NULL);
|
||||||
+#endif
|
++ rpmugGid(NULL, NULL);
|
||||||
+}
|
++#if defined(__GLIBC__)
|
||||||
--- ./lib/rpmug.h.orig 2014-02-05 13:04:02.000000000 +0000
|
++ inchroot = in;
|
||||||
+++ ./lib/rpmug.h 2014-02-20 12:50:05.362815211 +0000
|
++#endif
|
||||||
@@ -15,4 +15,6 @@ int rpmugInit(void);
|
++}
|
||||||
|
+--- ./lib/rpmug.h.orig 2019-06-26 14:17:31.418985685 +0000
|
||||||
void rpmugFree(void);
|
++++ ./lib/rpmug.h 2019-10-02 11:35:58.788024507 +0000
|
||||||
|
+@@ -15,4 +15,6 @@ int rpmugInit(void);
|
||||||
+void rpmugChroot(int in);
|
+
|
||||||
+
|
+ void rpmugFree(void);
|
||||||
#endif /* _RPMUG_H */
|
+
|
||||||
|
++void rpmugChroot(int in);
|
||||||
|
++
|
||||||
|
+ #endif /* _RPMUG_H */
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
diff --git a/platform.in b/platform.in
|
|
||||||
index fa3921f..cff01e1 100644
|
|
||||||
--- a/platform.in
|
|
||||||
+++ b/platform.in
|
|
||||||
@@ -60,7 +60,7 @@
|
|
||||||
%_smp_mflags -j%{_smp_build_ncpus}
|
|
||||||
|
|
||||||
# Enable LTO optimization with a maximal parallelism
|
|
||||||
-%_lto_cflags -flto=%{_smp_build_ncpus}
|
|
||||||
+%_lto_cflags -flto=auto
|
|
||||||
|
|
||||||
#==============================================================================
|
|
||||||
# ---- Build policy macros.
|
|
@ -1,11 +0,0 @@
|
|||||||
--- ./build/pack.c.orig 2018-03-27 12:21:03.036841297 +0000
|
|
||||||
+++ ./build/pack.c 2018-03-27 12:29:56.050400820 +0000
|
|
||||||
@@ -161,7 +161,7 @@ static rpm_time_t * getBuildTime(void)
|
|
||||||
|
|
||||||
if (buildTime[0] == 0) {
|
|
||||||
srcdate = getenv("SOURCE_DATE_EPOCH");
|
|
||||||
- if (srcdate) {
|
|
||||||
+ if (srcdate && rpmExpandNumeric("%{?use_source_date_epoch_as_buildtime}")) {
|
|
||||||
errno = 0;
|
|
||||||
epoch = strtol(srcdate, &endptr, 10);
|
|
||||||
if (srcdate == endptr || *endptr || errno != 0)
|
|
@ -2,8 +2,8 @@ Suspend exclusive database lock when scriptlets get called, allowing
|
|||||||
read access in scriptlets. Only needed for DB_PRIVATE (aka global)
|
read access in scriptlets. Only needed for DB_PRIVATE (aka global)
|
||||||
locking.
|
locking.
|
||||||
|
|
||||||
--- ./lib/backend/db3.c.orig 2017-12-01 14:27:03.193486711 +0000
|
--- ./lib/backend/db3.c.orig 2019-10-02 09:56:46.416347458 +0000
|
||||||
+++ ./lib/backend/db3.c 2017-12-01 14:27:23.747426200 +0000
|
+++ ./lib/backend/db3.c 2019-10-02 09:56:52.084335992 +0000
|
||||||
@@ -552,6 +552,46 @@ static void db3_dbSetFSync(rpmdb rdb, in
|
@@ -552,6 +552,46 @@ static void db3_dbSetFSync(rpmdb rdb, in
|
||||||
|
|
||||||
static int db3_Ctrl(rpmdb rdb, dbCtrlOp ctrl)
|
static int db3_Ctrl(rpmdb rdb, dbCtrlOp ctrl)
|
||||||
@ -51,8 +51,8 @@ locking.
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
--- ./lib/backend/dbi.h.orig 2017-12-01 14:27:03.193486711 +0000
|
--- ./lib/backend/dbi.h.orig 2019-10-02 09:56:46.416347458 +0000
|
||||||
+++ ./lib/backend/dbi.h 2017-12-01 14:27:23.747426200 +0000
|
+++ ./lib/backend/dbi.h 2019-10-02 09:56:52.084335992 +0000
|
||||||
@@ -17,7 +17,9 @@ typedef enum dbCtrlOp_e {
|
@@ -17,7 +17,9 @@ typedef enum dbCtrlOp_e {
|
||||||
DB_CTRL_UNLOCK_RO = 2,
|
DB_CTRL_UNLOCK_RO = 2,
|
||||||
DB_CTRL_LOCK_RW = 3,
|
DB_CTRL_LOCK_RW = 3,
|
||||||
@ -64,9 +64,9 @@ locking.
|
|||||||
} dbCtrlOp;
|
} dbCtrlOp;
|
||||||
|
|
||||||
typedef struct dbiIndex_s * dbiIndex;
|
typedef struct dbiIndex_s * dbiIndex;
|
||||||
--- ./lib/rpmdb.c.orig 2017-12-01 14:27:03.190486720 +0000
|
--- ./lib/rpmdb.c.orig 2019-10-02 09:56:46.416347458 +0000
|
||||||
+++ ./lib/rpmdb.c 2017-12-01 14:27:23.748426197 +0000
|
+++ ./lib/rpmdb.c 2019-10-02 09:56:52.084335992 +0000
|
||||||
@@ -2639,6 +2639,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl
|
@@ -2644,6 +2644,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl
|
||||||
case RPMDB_CTRL_INDEXSYNC:
|
case RPMDB_CTRL_INDEXSYNC:
|
||||||
dbctrl = DB_CTRL_INDEXSYNC;
|
dbctrl = DB_CTRL_INDEXSYNC;
|
||||||
break;
|
break;
|
||||||
@ -79,8 +79,8 @@ locking.
|
|||||||
}
|
}
|
||||||
return dbctrl ? dbCtrl(db, dbctrl) : 1;
|
return dbctrl ? dbCtrl(db, dbctrl) : 1;
|
||||||
}
|
}
|
||||||
--- ./lib/rpmdb.h.orig 2017-10-05 10:04:57.035602138 +0000
|
--- ./lib/rpmdb.h.orig 2019-06-26 14:17:31.412985694 +0000
|
||||||
+++ ./lib/rpmdb.h 2017-12-01 14:27:23.748426197 +0000
|
+++ ./lib/rpmdb.h 2019-10-02 09:56:52.088335984 +0000
|
||||||
@@ -35,7 +35,9 @@ typedef enum rpmdbCtrlOp_e {
|
@@ -35,7 +35,9 @@ typedef enum rpmdbCtrlOp_e {
|
||||||
RPMDB_CTRL_UNLOCK_RO = 2,
|
RPMDB_CTRL_UNLOCK_RO = 2,
|
||||||
RPMDB_CTRL_LOCK_RW = 3,
|
RPMDB_CTRL_LOCK_RW = 3,
|
||||||
@ -92,24 +92,24 @@ locking.
|
|||||||
} rpmdbCtrlOp;
|
} rpmdbCtrlOp;
|
||||||
|
|
||||||
/** \ingroup rpmdb
|
/** \ingroup rpmdb
|
||||||
--- ./lib/transaction.c.orig 2017-12-01 14:27:23.750426192 +0000
|
--- ./lib/transaction.c.orig 2019-10-02 09:56:52.088335984 +0000
|
||||||
+++ ./lib/transaction.c 2017-12-01 14:28:43.232192224 +0000
|
+++ ./lib/transaction.c 2019-10-02 09:58:36.956123870 +0000
|
||||||
@@ -1457,6 +1457,7 @@ rpmRC runScript(rpmts ts, rpmte te, Head
|
@@ -1601,6 +1601,7 @@ rpmRC runScript(rpmts ts, rpmte te, Head
|
||||||
stag != RPMTAG_PREUN &&
|
rpmTagVal stag = rpmScriptTag(script);
|
||||||
stag != RPMTAG_PRETRANS &&
|
FD_t sfd = NULL;
|
||||||
stag != RPMTAG_VERIFYSCRIPT);
|
int warn_only = !(rpmScriptFlags(script) & RPMSCRIPT_FLAG_CRITICAL);
|
||||||
+ rpmdb rdb = rpmtsGetRdb(ts);
|
+ rpmdb rdb = rpmtsGetRdb(ts);
|
||||||
|
|
||||||
/* Fake up a transaction element for triggers from rpmdb */
|
/* Create a temporary transaction element for triggers from rpmdb */
|
||||||
if (te == NULL) {
|
if (te == NULL) {
|
||||||
@@ -1468,10 +1469,12 @@ rpmRC runScript(rpmts ts, rpmte te, Head
|
@@ -1612,10 +1613,12 @@ rpmRC runScript(rpmts ts, rpmte te, Head
|
||||||
if (sfd == NULL)
|
if (sfd == NULL)
|
||||||
sfd = rpmtsScriptFd(ts);
|
sfd = rpmtsScriptFd(ts);
|
||||||
|
|
||||||
+ rpmdbCtrl(rdb, RPMDB_CTRL_SUSPEND_DBLOCK);
|
+ rpmdbCtrl(rdb, RPMDB_CTRL_SUSPEND_DBLOCK);
|
||||||
rpmswEnter(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
|
rpmswEnter(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
|
||||||
rc = rpmScriptRun(script, arg1, arg2, sfd,
|
rc = rpmScriptRun(script, arg1, arg2, sfd,
|
||||||
prefixes, warn_only, rpmtsPlugins(ts));
|
prefixes, rpmtsPlugins(ts));
|
||||||
rpmswExit(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
|
rpmswExit(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
|
||||||
+ rpmdbCtrl(rdb, RPMDB_CTRL_RESUME_DBLOCK);
|
+ rpmdbCtrl(rdb, RPMDB_CTRL_RESUME_DBLOCK);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user