Compare commits

..

14 Commits
master ... f17

Author SHA1 Message Date
Panu Matilainen
5b931dd245 - teach rpm2cpio about XZ, fix error exit on unknown compression (#746376) 2013-03-27 08:16:21 +02:00
Panu Matilainen
ca0d5149bc - make double-quoting work for special %%doc (#928110) 2013-03-27 08:11:11 +02:00
Panu Matilainen
1ea7ce61c9 - force _host_vendor to redhat to better match toolchain etc (#893381) 2013-03-27 08:02:48 +02:00
Panu Matilainen
71d3b385aa - armv7hl and armv7hnl should not have -mthumb (#901901) 2013-03-27 08:02:38 +02:00
Panu Matilainen
98d67b23f7 - Fall back to private db environment on filesystems not supporting mmap()
- Adjust posttrans script wrt bdb string change (#803866, #805613)
2012-05-07 12:58:11 +03:00
Phil Knirsch
9d3171c03f Arch macro for all supported PowerPC 64 processors (#818320) 2012-05-03 13:49:11 +02:00
Phil Knirsch
f1acb5f031 Fixed missing lib64 library support for ppc64p7 (#817282) 2012-04-30 17:23:17 +02:00
Phil Knirsch
ae517e7f5a Fixed an issue with the ppc64p7 support where on 32bit ppc the detection would go horribly wrong 2012-04-25 16:17:15 +02:00
Phil Knirsch
f0f66bfa5e - Fixed missing ppc64p7 detection in installplatform 2012-04-25 14:32:58 +02:00
Phil Knirsch
4b44325a0c - Modified the rpm-4.9.0-armhfp-logic.patch after adding the ppc64p7 support 2012-04-19 17:13:03 +02:00
Phil Knirsch
b88a8e4d8a - Updated rpm-4.6.0-niagara.patch after addition of the ppc64p7 support 2012-04-19 17:08:46 +02:00
Phil Knirsch
cf817df4f0 - Bumped release and added changelog entry 2012-04-18 13:11:23 +02:00
Phil Knirsch
3c2064a504 - Add support for ppc64p7 architecture using new auxv parsing info
Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
    (cherry picked from commit f9eedd7f694a3dd3db637089f978dab4bd6858ee)

    - Add general /proc/self/auxv parsing to rpmrc for better machine detection

    Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
    (cherry picked from commit 280494cce023f3938023b9b2b1173405601e4ddf)

    Conflicts:

        lib/rpmrc.c
2012-04-18 13:09:06 +02:00
Panu Matilainen
b404a9df22 - update to 4.1.9.3 (http://rpm.org/wiki/Releases/4.9.1.3)
- fixes CVE-2012-0060, CVE-2012-0061 and CVE-2012-0815
2012-04-03 18:26:58 +03:00
40 changed files with 2033 additions and 838 deletions

50
.gitignore vendored
View File

@ -1,42 +1,8 @@
/rpm-4.9.90.git11505.tar.bz2
/rpm-4.9.90.git11519.tar.bz2
/rpm-4.9.90.git11536.tar.bz2
/rpm-4.10.0-beta1.tar.bz2
/rpm-4.10.0.tar.bz2
/rpm-4.10.1.tar.bz2
/rpm-4.10.90.git11989.tar.bz2
/rpm-4.11.0-beta1.tar.bz2
/rpm-4.11.0.1.tar.bz2
/rpm-4.11.1-rc1.tar.bz2
/rpm-4.11.1-rc2.tar.bz2
/rpm-4.11.1.tar.bz2
/rpm-4.11.2-rc1.tar.bz2
/rpm-4.11.2-rc2.tar.bz2
/rpm-4.11.2.tar.bz2
/rpm-4.11.90-git12844.tar.bz2
/rpm-4.12.0-beta1.tar.bz2
/rpm-4.12.0-rc1.tar.bz2
/rpm-4.12.0.tar.bz2
/rpm-4.12.0.1.tar.bz2
/rpm-4.12.90.tar.bz2
/rpm-4.13.0-rc1.tar.bz2
/rpm-4.13.0-rc2.tar.bz2
/rpm-4.13.0.tar.bz2
/rpm-4.13.0.1.tar.bz2
/rpm-4.13.90-git14002.tar.bz2
/rpm-4.14.0-rc1.tar.bz2
/rpm-4.14.0-rc2.tar.bz2
/rpm-4.14.0.tar.bz2
/rpm-4.14.1.tar.bz2
/rpm-4.14.2-rc1.tar.bz2
/rpm-4.14.2-rc2.tar.bz2
/rpm-4.14.2.tar.bz2
/rpm-4.14.2.1.tar.bz2
/rpm-4.14.90-git14653.tar.bz2
/rpm-4.15.0-beta.tar.bz2
/rpm-4.15.0-rc1.tar.bz2
/rpm-4.15.0.tar.bz2
/rpm-4.15.1.tar.bz2
/rpm-4.15.90-git14971.tar.bz2
/rpm-4.16.0-beta1.tar.bz2
/rpm-4.16.0-beta3.tar.bz2
rpm-4.8.1.tar.bz2
/rpm-4.9.0-beta1.tar.bz2
/rpm-4.9.0-rc1.tar.bz2
/rpm-4.9.0.tar.bz2
/rpm-4.9.1.tar.bz2
/rpm-4.9.1.1.tar.bz2
/rpm-4.9.1.2.tar.bz2
/rpm-4.9.1.3.tar.bz2

View File

@ -1,95 +0,0 @@
From 2426c2a066e44f4d9a342585e76cdbdb0a8a2db1 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Oct 2019 20:22:19 +0100
Subject: [PATCH] Revert "Improve ARM detection"
This reverts commit 8c3a7b8fa92b49a811fe36b60857b12f5d7db8a8.
This is the final piece in fixing rhbz 1691430. It's a clean revert
so let's do that for F-31 and we can discuss the details later.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
lib/rpmrc.c | 37 +++++++++----------------------------
1 file changed, 9 insertions(+), 28 deletions(-)
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
index 0806e1b07..cada3f788 100644
--- a/lib/rpmrc.c
+++ b/lib/rpmrc.c
@@ -82,7 +82,6 @@ struct rpmOption {
static struct rpmat_s {
const char *platform;
uint64_t hwcap;
- uint64_t hwcap2;
} rpmat;
typedef struct defaultEntry_s {
@@ -951,9 +950,6 @@ static int is_geode(void)
#if defined(__linux__)
-#ifndef AT_HWCAP2 /* glibc < 2.18 */
-#define AT_HWCAP2 26
-#endif
/**
* Populate rpmat structure with auxv values
*/
@@ -967,7 +963,6 @@ static void read_auxv(void)
if (!rpmat.platform)
rpmat.platform = "";
rpmat.hwcap = getauxval(AT_HWCAP);
- rpmat.hwcap2 = getauxval(AT_HWCAP2);
#else
rpmat.platform = "";
int fd = open("/proc/self/auxv", O_RDONLY);
@@ -989,9 +984,6 @@ static void read_auxv(void)
case AT_HWCAP:
rpmat.hwcap = auxv.a_un.a_val;
break;
- case AT_HWCAP2:
- rpmat.hwcap2 = auxv.a_un.a_val;
- break;
}
}
close(fd);
@@ -1225,27 +1217,16 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
# if !defined(HWCAP_ARM_VFPv3)
# define HWCAP_ARM_VFPv3 (1 << 13)
# endif
-# if !defined(HWCAP2_AES)
-# define HWCAP2_AES (1 << 0)
-# endif
- /*
- * un.machine is armvXE, where X is version number and E is
- * endianness (b or l)
- */
- if (rstreqn(un.machine, "armv", 4)) {
- char endian = un.machine[strlen(un.machine)-1];
- char *modifier = un.machine + 5;
- /* keep armv7, armv8, armv9, armv10, ... */
- while(risdigit(*modifier))
- modifier++;
- if (rpmat.hwcap & HWCAP_ARM_VFPv3)
- *modifier++ = 'h';
- if (rpmat.hwcap2 & HWCAP2_AES)
- *modifier++ = 'c';
+ if (rstreq(un.machine, "armv7l")) {
+ if (rpmat.hwcap & HWCAP_ARM_VFPv3) {
if (rpmat.hwcap & HWCAP_ARM_NEON)
- *modifier++ = 'n';
- *modifier++ = endian;
- *modifier++ = 0;
+ strcpy(un.machine, "armv7hnl");
+ else
+ strcpy(un.machine, "armv7hl");
+ }
+ } else if (rstreq(un.machine, "armv6l")) {
+ if (rpmat.hwcap & HWCAP_ARM_VFP)
+ strcpy(un.machine, "armv6hl");
}
# endif /* arm*-linux */
--
2.23.0

View File

@ -1,30 +0,0 @@
From f2bc669cd0a080792522dd1bb7f50ef7025f16f0 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sat, 21 Jul 2018 10:13:04 +0200
Subject: [PATCH] find-debuginfo.sh: decompress DWARF compressed ELF sections
debugedit and dwz do not support DWARF compressed ELF sections, let's
just decompress those before extracting debuginfo.
Tested-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
---
scripts/find-debuginfo.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
index 90a44942d..7b01bc036 100755
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -357,6 +357,9 @@ do_file()
get_debugfn "$f"
[ -f "${debugfn}" ] && return
+ echo "explicitly decompress any DWARF compressed ELF sections in $f"
+ eu-elfcompress -q -p -t none "$f"
+
echo "extracting debug info from $f"
# See also cpio SOURCEFILE copy. Directories must match up.
debug_base_name="$RPM_BUILD_DIR"
--
2.18.0

View File

@ -1,34 +0,0 @@
#requires popt
#requires nss-softokn
#requires nss
#requires file
#requires libarchive
#requires libdb4
#requires redhat-rpm-config
#requires lua
#requires autoconf
#requires pkgconfig
(cd $SRC/rpm-*/ && autoreconf -vif)
mcd $BUILDDIR/rpm
$SRC/rpm-*/configure $TCONFIGARGS \
--build=${TARGET} \
--host=${TARGET} \
--target=${TARGET} \
CPPFLAGS="-I/usr/include/nspr -I/usr/include/nss3 -DPACKAGE -DPACKAGE_VERSION" \
--libdir=/usr/lib${SUFFIX} \
--with-external-db \
--disable-static \
--with-lua \
--localstatedir=/var
make $J
make $J install
mkdir -p /etc/rpm
mkdir -p /var/lib/rpm
rpm --initdb

4
libsymlink.attr Normal file
View File

@ -0,0 +1,4 @@
# Make libfoo.so symlinks require the soname-provide of the target library
%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only
%__libsymlink_magic ^symbolic link to `.*lib.*\.so\..*'$
%__libsymlink_exclude_path ^.*[[:digit:]]$

View File

@ -1,18 +0,0 @@
diff --git a/rpm2cpio.c b/rpm2cpio.c
index 89ebdfa..ae999ff 100644
--- a/rpm2cpio.c
+++ b/rpm2cpio.c
@@ -84,7 +84,12 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
- rc = (ufdCopy(gzdi, fdo) == payload_size) ? EXIT_SUCCESS : EXIT_FAILURE;
+ /*
+ * XXX HACK for #1142949: should be equality test, but archive size
+ * short by cpio trailer size in packages built with rpm 4.12.0
+ * and its pre-releases.
+ */
+ rc = (ufdCopy(gzdi, fdo) >= payload_size) ? EXIT_SUCCESS : EXIT_FAILURE;
Fclose(fdo);

View File

@ -1,12 +0,0 @@
diff -up rpm-4.11.1-rc1/macros.in.siteconfig rpm-4.11.1-rc1/macros.in
--- rpm-4.11.1-rc1/macros.in.siteconfig 2013-06-07 13:19:21.000000000 +0300
+++ rpm-4.11.1-rc1/macros.in 2013-06-11 15:06:59.525747503 +0300
@@ -647,6 +647,8 @@ package or when debugging this package.\
export CLASSPATH}\
PKG_CONFIG_PATH=\"${PKG_CONFIG_PATH}:%{_libdir}/pkgconfig:%{_datadir}/pkgconfig\"\
export PKG_CONFIG_PATH\
+ CONFIG_SITE=${CONFIG_SITE:-NONE}\
+ export CONFIG_SITE\
\
%{verbose:set -x}\
umask 022\

View File

@ -0,0 +1,13 @@
diff --git a/macros.in b/macros.in
index 830072a..bdce7f4 100644
--- a/macros.in
+++ b/macros.in
@@ -805,6 +805,8 @@ print (t)\
export RPM_BUILD_ROOT}\
%{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
export CLASSPATH}\
+ PKG_CONFIG_PATH=\"%{_libdir}/pkgconfig:%{_datadir}/pkgconfig\"\
+ export PKG_CONFIG_PATH\
\
%{verbose:set -x}%{!verbose:exec > /dev/null}\
umask 022\

61
rpm-4.6.0-niagara.patch Normal file
View File

@ -0,0 +1,61 @@
diff -up rpm-4.9.1.3/lib/rpmrc.c.niagara rpm-4.9.1.3/lib/rpmrc.c
--- rpm-4.9.1.3/lib/rpmrc.c.niagara 2012-04-19 17:06:23.130595223 +0200
+++ rpm-4.9.1.3/lib/rpmrc.c 2012-04-19 17:06:23.134739249 +0200
@@ -718,6 +718,31 @@ exit:
return rc;
}
+#if defined(__linux__) && defined(__sparc__)
+static int is_sun4v()
+{
+ char buffer[4096], *p;
+ int fd = open("/proc/cpuinfo", O_RDONLY);
+ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) {
+ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n"));
+ close(fd);
+ return 0;
+ }
+ close(fd);
+
+ p = strstr(buffer, "type");
+ p = strtok(p, "\n");
+ p = strstr(p, "sun");
+ if (p == NULL) {
+ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'type' line\n"));
+ return 0;
+ } else if (strcmp(p, "sun4v") == 0) {
+ return 1;
+ }
+ return 0;
+}
+#endif
+
# if defined(__linux__) && defined(__i386__)
#include <setjmp.h>
@@ -1178,6 +1203,13 @@ static void defaultMachine(const char **
personality(oldpers);
}
}
+ if (is_sun4v()){
+ if (strcmp(un.machine, "sparcv9") == 0 || strcmp(un.machine, "sparc") == 0 ) {
+ strcpy(un.machine, "sparcv9v");
+ } else if (strcmp(un.machine, "sparc64") == 0 ) {
+ strcpy(un.machine, "sparc64v");
+ }
+ }
# endif /* sparc*-linux */
# if defined(__linux__) && defined(__powerpc__)
diff -up rpm-4.9.1.3/rpmrc.in.niagara rpm-4.9.1.3/rpmrc.in
--- rpm-4.9.1.3/rpmrc.in.niagara 2012-04-19 17:06:23.131476769 +0200
+++ rpm-4.9.1.3/rpmrc.in 2012-04-19 17:06:23.135738996 +0200
@@ -316,7 +316,7 @@ arch_compat: sun4c: sparc
arch_compat: sun4d: sparc
arch_compat: sun4m: sparc
arch_compat: sun4u: sparc64
-arch_compat: sparc64v: sparc64
+arch_compat: sparc64v: sparc64 sparcv9v
arch_compat: sparc64: sparcv9
arch_compat: sparcv9v: sparcv9
arch_compat: sparcv9: sparcv8

View File

@ -0,0 +1,13 @@
diff --git a/scripts/find-lang.sh b/scripts/find-lang.sh
index bb25b31..e4a22db 100755
--- a/scripts/find-lang.sh
+++ b/scripts/find-lang.sh
@@ -173,7 +173,7 @@ s:%lang(C) ::
find $TOP_DIR -type d|sed '
s:'"$TOP_DIR"'::
'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\)::
-'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*:
+'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1/*:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME

12
rpm-4.8.1-use-gpg2.patch Normal file
View File

@ -0,0 +1,12 @@
diff -up rpm-4.8.1/macros.in.gpg2 rpm-4.8.1/macros.in
--- rpm-4.8.0/macros.in.gpg2 2011-01-17 12:17:38.000000000 +0200
+++ rpm-4.8.0/macros.in 2011-01-17 12:17:59.000000000 +0200
@@ -40,7 +40,7 @@
%__cp @__CP@
%__cpio @__CPIO@
%__file @__FILE@
-%__gpg @__GPG@
+%__gpg %{_bindir}/gpg2
%__grep @__GREP@
%__gzip @__GZIP@
%__id @__ID@

View File

@ -0,0 +1,78 @@
diff --git a/lib/tagexts.c b/lib/tagexts.c
index dc0e0fb..e0a5d1f 100644
--- a/lib/tagexts.c
+++ b/lib/tagexts.c
@@ -478,59 +478,29 @@ static const char * const _macro_i18ndomains = "%{?_i18ndomains}";
*/
static int i18nTag(Header h, rpmTag tag, rpmtd td, headerGetFlags hgflags)
{
- int rc;
+ int rc = headerGet(h, tag, td, HEADERGET_ALLOC);
#if defined(ENABLE_NLS)
- char * dstring = rpmExpand(_macro_i18ndomains, NULL);
-
- td->type = RPM_STRING_TYPE;
- td->data = NULL;
- td->count = 0;
-
- if (dstring && *dstring) {
- char *domain, *de;
- const char * langval;
- char * msgkey;
- const char * msgid;
-
- rasprintf(&msgkey, "%s(%s)", headerGetString(h, RPMTAG_NAME),
- rpmTagGetName(tag));
-
- /* change to en_US for msgkey -> msgid resolution */
- langval = getenv(language);
- (void) setenv(language, "en_US", 1);
- ++_nl_msg_cat_cntr;
+ if (rc) {
+ char *de, *dstring = rpmExpand(_macro_i18ndomains, NULL);
+ const char *domain;
- msgid = NULL;
for (domain = dstring; domain != NULL; domain = de) {
+ const char *msgid = td->data;
+ const char *msg = NULL;
+
de = strchr(domain, ':');
if (de) *de++ = '\0';
- msgid = dgettext(domain, msgkey);
- if (msgid != msgkey) break;
- }
-
- /* restore previous environment for msgid -> msgstr resolution */
- if (langval)
- (void) setenv(language, langval, 1);
- else
- unsetenv(language);
- ++_nl_msg_cat_cntr;
-
- if (domain && msgid) {
- td->data = dgettext(domain, msgid);
- td->data = xstrdup(td->data); /* XXX xstrdup has side effects. */
- td->count = 1;
- td->flags = RPMTD_ALLOCED;
+ msg = dgettext(domain, td->data);
+ if (msg != msgid) {
+ free(td->data);
+ td->data = xstrdup(msg);
+ break;
+ }
}
- dstring = _free(dstring);
- free(msgkey);
- if (td->data)
- return 1;
+ free(dstring);
}
-
- dstring = _free(dstring);
#endif
- rc = headerGet(h, tag, td, HEADERGET_ALLOC);
return rc;
}

View File

@ -0,0 +1,83 @@
diff -up rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic rpm-4.9.1.3/lib/rpmrc.c
--- rpm-4.9.1.3/lib/rpmrc.c.armhfp-logic 2012-04-19 17:11:32.728750591 +0200
+++ rpm-4.9.1.3/lib/rpmrc.c 2012-04-19 17:11:32.754738455 +0200
@@ -743,6 +743,56 @@ static int is_sun4v()
}
#endif
+#if defined(__linux__) && defined(__arm__)
+static int has_neon()
+{
+ char buffer[4096], *p;
+ int fd = open("/proc/cpuinfo", O_RDONLY);
+ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) {
+ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n"));
+ close(fd);
+ return 0;
+ }
+ close(fd);
+
+ p = strstr(buffer, "Features");
+ p = strtok(p, "\n");
+ p = strstr(p, "neon");
+ p = strtok(p, " ");
+ if (p == NULL) {
+ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'Features' line\n"));
+ return 0;
+ } else if (strcmp(p, "neon") == 0) {
+ return 1;
+ }
+ return 0;
+}
+
+static int has_hfp()
+{
+ char buffer[4096], *p;
+ int fd = open("/proc/cpuinfo", O_RDONLY);
+ if (read(fd, &buffer, sizeof(buffer) - 1) == -1) {
+ rpmlog(RPMLOG_WARNING, _("read(/proc/cpuinfo) failed\n"));
+ close(fd);
+ return 0;
+ }
+ close(fd);
+
+ p = strstr(buffer, "Features");
+ p = strtok(p, "\n");
+ p = strstr(p, "vfpv3");
+ p = strtok(p, " ");
+ if (p == NULL) {
+ rpmlog(RPMLOG_WARNING, _("/proc/cpuinfo has no 'Features' line\n"));
+ return 0;
+ } else if (strcmp(p, "vfpv3") == 0) {
+ return 1;
+ }
+ return 0;
+}
+#endif
+
# if defined(__linux__) && defined(__i386__)
#include <setjmp.h>
@@ -1220,6 +1270,22 @@ static void defaultMachine(const char **
}
# endif /* ppc64*-linux */
+# if defined(__linux__) && defined(__arm__)
+ {
+ if (strcmp(un.machine, "armv7l") == 0 ) {
+ if (has_neon() && has_hfp())
+ strcpy(un.machine, "armv7hnl");
+ else if (has_hfp())
+ strcpy(un.machine, "armv7hl");
+ } else if (strcmp(un.machine, "armv6l") == 0 ) {
+ if (has_neon() && has_hfp())
+ strcpy(un.machine, "armv6hnl");
+ else if (has_hfp())
+ strcpy(un.machine, "armv6hl");
+ }
+ }
+# endif /* arm*-linux */
+
# if defined(__GNUC__) && defined(__alpha__)
{
unsigned long amask, implver;

73
rpm-4.9.0-armhfp.patch Normal file
View File

@ -0,0 +1,73 @@
diff -uNr rpm-4.9.0-orig//installplatform rpm-4.9.0/installplatform
--- rpm-4.9.0-orig//installplatform 2010-12-03 06:11:57.000000000 -0600
+++ rpm-4.9.0/installplatform 2011-08-05 12:25:13.000000000 -0500
@@ -19,7 +19,7 @@
case "$arch" in
i[3456]86|pentium[34]|athlon|geode) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_pentium3_ s_i386_pentium4_ s_i386_athlon_ s_i386_geode_' ;;
alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;;
- arm*) SUBSTS='s_arm_arm_ s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_ s_arm_armv7l_' ;;
+ arm*) SUBSTS='s_arm_arm_ s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_ s_arm_armv7l_ s_arm_armv7hl_ s_arm_armv7hnl_' ;;
sh4*) SUBSTS='s_sh4_sh4_ s_sh4_sh4a_' ;;
sparc*) SUBSTS='s_sparc\(64\|64v\|v9v\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;;
diff -uNr rpm-4.9.0-orig//macros.in rpm-4.9.0/macros.in
--- rpm-4.9.0-orig//macros.in 2011-08-05 12:23:04.000000000 -0500
+++ rpm-4.9.0/macros.in 2011-08-05 12:25:13.000000000 -0500
@@ -1032,7 +1032,7 @@
#------------------------------------------------------------------------------
# arch macro for all supported ARM processors
-%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l
+%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l armv7hl armv7hnl
#------------------------------------------------------------------------------
# arch macro for all supported Sparc processors
diff -uNr rpm-4.9.0-orig//rpmrc.in rpm-4.9.0/rpmrc.in
--- rpm-4.9.0-orig//rpmrc.in 2011-08-05 12:23:04.000000000 -0500
+++ rpm-4.9.0/rpmrc.in 2011-08-05 12:26:34.000000000 -0500
@@ -66,6 +66,8 @@
optflags: armv5tejl -O2 -g -march=armv5te
optflags: armv6l -O2 -g -march=armv6
optflags: armv7l -O2 -g -march=armv7
+optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16
+optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
optflags: atarist -O2 -g -fomit-frame-pointer
optflags: atariste -O2 -g -fomit-frame-pointer
@@ -140,6 +142,8 @@
arch_canon: armv5tejl: armv5tejl 12
arch_canon: armv6l: armv6l 12
arch_canon: armv7l: armv7l 12
+arch_canon: armv7hl: armv7hl 12
+arch_canon: armv7hnl: armv7hnl 12
arch_canon: m68kmint: m68kmint 13
arch_canon: atarist: m68kmint 13
@@ -248,6 +252,8 @@
buildarchtranslate: armv5tejl: armv5tejl
buildarchtranslate: armv6l: armv6l
buildarchtranslate: armv7l: armv7l
+buildarchtranslate: armv7hl: armv7hl
+buildarchtranslate: armv7hnl: armv7hnl
buildarchtranslate: atarist: m68kmint
buildarchtranslate: atariste: m68kmint
@@ -336,6 +342,8 @@
arch_compat: armv4tl: armv4l
arch_compat: armv4l: armv3l
arch_compat: armv3l: noarch
+arch_compat: armv7hnl: armv7hl
+arch_compat: armv7hl: noarch
arch_compat: atarist: m68kmint noarch
arch_compat: atariste: m68kmint noarch
@@ -441,6 +449,9 @@
buildarch_compat: armv4l: armv3l
buildarch_compat: armv3l: noarch
+buildarch_compat: armv7hnl: armv7hl
+buildarch_compat: armv7hl: noarch
+
buildarch_compat: hppa2.0: hppa1.2
buildarch_compat: hppa1.2: hppa1.1
buildarch_compat: hppa1.1: hppa1.0

View File

@ -0,0 +1,55 @@
--- rpm-4.9.0/scripts/find-debuginfo.sh 2011-02-19 07:57:21.000000000 +0100
+++ rpm-4.9.0/scripts/find-debuginfo.sh.orig 2011-02-19 08:50:23.000000000 +0100
@@ -127,6 +127,23 @@ debug_link()
link_relative "$t" "$l" "$RPM_BUILD_ROOT"
}
+# Provide .2, .3, ... symlinks to all filename instances of this build-id.
+make_id_dup_link()
+{
+ local id="$1" file="$2" idfile
+
+ local n=1
+ while true; do
+ idfile=".build-id/${id:0:2}/${id:2}.$n"
+ [ $# -eq 3 ] && idfile="${idfile}$3"
+ if [ ! -L "$RPM_BUILD_ROOT/usr/lib/debug/$idfile" ]; then
+ break
+ fi
+ n=$[$n+1]
+ done
+ debug_link "$file" "/$idfile"
+}
+
# Make a build-id symlink for id $1 with suffix $3 to file $2.
make_id_link()
{
@@ -140,6 +157,8 @@ make_id_link()
return
fi
+ make_id_dup_link "$@"
+
[ $# -eq 3 ] && return 0
local other=$(readlink -m "$root_idfile")
@@ -188,6 +207,9 @@ while read nlinks inum f; do
if [ $nlinks -gt 1 ]; then
eval linked=\$linked_$inum
if [ -n "$linked" ]; then
+ eval id=\$linkedid_$inum
+ make_id_dup_link "$id" "$dn/$(basename $f)"
+ make_id_dup_link "$id" "/usr/lib/debug$dn/$bn" .debug
link=$debugfn
get_debugfn "$linked"
echo "hard linked $link to $debugfn"
@@ -202,6 +224,9 @@ while read nlinks inum f; do
echo "extracting debug info from $f"
id=$(/usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug \
-i -l "$SOURCEFILE" "$f") || exit
+ if [ $nlinks -gt 1 ]; then
+ eval linkedid_$inum=\$id
+ fi
if [ -z "$id" ]; then
echo >&2 "*** ${strict_error}: No build ID note found in $f"
$strict && exit 2

View File

@ -2,14 +2,14 @@ diff -up rpm-4.9.1.1/macros.in.jx rpm-4.9.1.1/macros.in
--- rpm-4.9.1.1/macros.in.jx 2011-08-03 16:19:05.000000000 -0400
+++ rpm-4.9.1.1/macros.in 2011-08-08 09:41:52.981064316 -0400
@@ -674,9 +674,10 @@ print (t)\
RPM_SOURCE_DIR=\"%{u2p:%{_sourcedir}}\"\
RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\
RPM_OPT_FLAGS=\"%{optflags}\"\
+ RPM_LD_FLAGS=\"%{?build_ldflags}\"\
+ RPM_LD_FLAGS=\"%{?__global_ldflags}\"\
RPM_ARCH=\"%{_arch}\"\
RPM_OS=\"%{_os}\"\
RPM_BUILD_NCPUS=\"%{_smp_build_ncpus}\"\
- export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS RPM_BUILD_NCPUS\
+ export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_LD_FLAGS RPM_ARCH RPM_OS RPM_BUILD_NCPUS RPM_LD_FLAGS\
- export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\
+ export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_LD_FLAGS RPM_ARCH RPM_OS\
RPM_DOC_DIR=\"%{_docdir}\"\
export RPM_DOC_DIR\
RPM_PACKAGE_NAME=\"%{NAME}\"\
RPM_PACKAGE_NAME=\"%{name}\"\

View File

@ -0,0 +1,35 @@
commit 9ddcc23d2b7ecaf5336530dbe37195b0057d0396
Author: Ville Skyttä <ville.skytta@iki.fi>
Date: Tue Jan 10 10:48:13 2012 +0200
Adapt perl and python fileattrs to file 5.10 magics
- file 5.10 has changed magics at least for perl and python scripts, samples:
5.09: a /usr/bin/perl -w script, ASCII text executable, with very long lines
5.10: Perl script, ASCII text executable, with very long lines
5.09: a /usr/bin/python script, ASCII text executable
5.10: Python script, ASCII text executable
Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
diff --git a/fileattrs/perl.attr b/fileattrs/perl.attr
index 23b873f..0daef58 100644
--- a/fileattrs/perl.attr
+++ b/fileattrs/perl.attr
@@ -1,3 +1,3 @@
%__perl_requires %{_rpmconfigdir}/perl.req
-%__perl_magic ^.*perl .*$
+%__perl_magic ^.*[Pp]erl .*$
%__perl_flags exeonly
diff --git a/fileattrs/python.attr b/fileattrs/python.attr
index 5b48f75..4eaad76 100644
--- a/fileattrs/python.attr
+++ b/fileattrs/python.attr
@@ -1,4 +1,4 @@
%__python_provides %{_rpmconfigdir}/pythondeps.sh --provides
%__python_requires %{_rpmconfigdir}/pythondeps.sh --requires
%__python_path ^((/usr/lib(64)?/python[[:digit:]]\\.[[:digit:]]/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]\\.[[:digit:]]))$
-%__python_magic ^python.*(executable|byte-compiled)$
+%__python_magic ^[Pp]ython.*(executable|byte-compiled)$

View File

@ -0,0 +1,12 @@
diff --git a/build/rpmfc.c b/build/rpmfc.c
index 60ab0e3..5b6ddb5 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -557,6 +557,7 @@ static const struct rpmfcTokens_s rpmfcTokens[] = {
{ "perl ", RPMFC_INCLUDE },
{ "Perl5 module source text", RPMFC_INCLUDE },
+ { "Perl script", RPMFC_INCLUDE },
{ "python ", RPMFC_INCLUDE },
{ "libtool library ", RPMFC_INCLUDE },

146
rpm-4.9.1.2-ppc64p7.patch Normal file
View File

@ -0,0 +1,146 @@
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
index 1b47dc3..0050091 100644
--- a/lib/rpmrc.c
+++ b/lib/rpmrc.c
@@ -5,6 +5,12 @@
#include <setjmp.h>
#endif
+#if defined(__linux__)
+#include <elf.h>
+#include <link.h>
+#endif
+
+
#if HAVE_SYS_UTSNAME_H
#include <sys/utsname.h>
#endif
@@ -78,6 +84,11 @@ int required;
struct rpmOptionValue * value;
};
+static struct rpmat_s {
+ const char *platform;
+ uint64_t hwcap;
+} rpmat;
+
typedef struct defaultEntry_s {
char * name;
char * defName;
@@ -933,6 +944,45 @@ static void mfspr_ill(int notused)
}
#endif
+#if defined(__linux__)
+/**
+ * Populate rpmat structure with parsed info from /proc/self/auxv
+ */
+static void parse_auxv(void)
+{
+ static int oneshot = 1;
+
+ if (oneshot) {
+ rpmat.platform = "";
+ int fd = open("/proc/self/auxv", O_RDONLY);
+
+ if (fd == -1) {
+ rpmlog(RPMLOG_WARNING,
+ _("Failed to read auxiliary vector, /proc not mounted?\n"));
+ return;
+ } else {
+ ElfW(auxv_t) auxv;
+ while (read(fd, &auxv, sizeof(auxv)) == sizeof(auxv)) {
+ switch (auxv.a_type)
+ {
+ case AT_NULL:
+ break;
+ case AT_PLATFORM:
+ rpmat.platform = strdup((char *) auxv.a_un.a_val);
+ break;
+ case AT_HWCAP:
+ rpmat.hwcap = auxv.a_un.a_val;
+ break;
+ }
+ }
+ close(fd);
+ }
+ oneshot = 0; /* only try once even if it fails */
+ }
+ return;
+}
+#endif
+
/**
*/
static void defaultMachine(const char ** arch,
@@ -944,6 +994,11 @@ static void defaultMachine(const char ** arch,
canonEntry canon;
int rc;
+#if defined(__linux__)
+ /* Populate rpmat struct with hw info */
+ parse_auxv();
+#endif
+
while (!gotDefaults) {
if (!rpmPlatform(platform)) {
char * s;
@@ -1125,6 +1180,14 @@ static void defaultMachine(const char ** arch,
}
# endif /* sparc*-linux */
+# if defined(__linux__) && defined(__powerpc__)
+ {
+ int powerlvl;
+ if (!rstreq(un.machine, "ppc") && sscanf(rpmat.platform, "power%d", &powerlvl) == 1 && powerlvl > 6)
+ strcpy(un.machine, "ppc64p7");
+ }
+# endif /* ppc64*-linux */
+
# if defined(__GNUC__) && defined(__alpha__)
{
unsigned long amask, implver;
diff --git a/rpmrc.in b/rpmrc.in
index 0033bbd..9b00b71 100644
--- a/rpmrc.in
+++ b/rpmrc.in
@@ -48,6 +48,7 @@ optflags: ppc32dy4 -O2 -g -fsigned-char
optflags: ppciseries -O2 -g -fsigned-char
optflags: ppcpseries -O2 -g -fsigned-char
optflags: ppc64 -O2 -g -fsigned-char
+optflags: ppc64p7 -O3 -mtune=power7 -mcpu=power7 -g -fsigned-char
optflags: parisc -O2 -g -mpa-risc-1-0
optflags: hppa1.0 -O2 -g -mpa-risc-1-0
@@ -157,6 +158,7 @@ arch_canon: s390x: s390x 15
arch_canon: ppc64: ppc64 16
arch_canon: ppc64pseries: ppc64pseries 16
arch_canon: ppc64iseries: ppc64iseries 16
+arch_canon: ppc64p7: ppc64p7 16
arch_canon: sh: sh 17
arch_canon: sh3: sh3 17
@@ -239,6 +241,7 @@ buildarchtranslate: ppciseries: ppc
buildarchtranslate: ppcpseries: ppc
buildarchtranslate: ppc64iseries: ppc64
buildarchtranslate: ppc64pseries: ppc64
+buildarchtranslate: ppc64p7: ppc64
buildarchtranslate: armv3l: armv3l
buildarchtranslate: armv4b: armv4b
@@ -307,6 +310,7 @@ arch_compat: ppc: rs6000
arch_compat: rs6000: noarch fat
arch_compat: ppc64pseries: ppc64
arch_compat: ppc64iseries: ppc64
+arch_compat: ppc64p7: ppc64
arch_compat: sun4c: sparc
arch_compat: sun4d: sparc
@@ -428,6 +432,7 @@ buildarch_compat: ppc: noarch fat
buildarch_compat: ppc64: noarch fat
buildarch_compat: ppc64pseries: ppc64
buildarch_compat: ppc64iseries: ppc64
+buildarch_compat: ppc64p7: ppc64
buildarch_compat: mips: noarch
buildarch_compat: mipsel: noarch

View File

@ -0,0 +1,127 @@
diff --git a/lib/depends.c b/lib/depends.c
index 69aecbb..5101d32 100644
--- a/lib/depends.c
+++ b/lib/depends.c
@@ -386,6 +386,108 @@ static int rpmdbProvides(rpmts ts, depCache dcache, rpmds dep)
return rc;
}
+/*
+ * Temporary support for live-conversion of the filesystem hierarchy
+ * mailto: kay@redhat.com, harald@redhat.com
+ * https://fedoraproject.org/wiki/Features/UsrMove
+ *
+ * X-CheckUnifiedSystemdir:
+ * /bin, /sbin, /lib, /lib64 --> /usr
+ *
+ * X-CheckUnifiedBindir:
+ * /usr/sbin -> /usr/bin
+ *
+ * X-CheckMultiArchLibdir:
+ * /usr/lib64 /usr/lib/<platform tuple> (e.g. x86_64-linux-gnu)
+ *
+ * This code is not needed for new installations, it can be removed after
+ * updates from older systems are no longer supported: Fedora 19 / RHEL 8.
+ */
+
+static int CheckLink(const char *dir, const char *root)
+{
+ char *d = NULL;
+ struct stat sbuf;
+ int rc = 0;
+
+ if (!root)
+ root = "/";
+
+ rasprintf(&d, "%s%s", root, dir);
+ if (!d) {
+ rc = -1;
+ goto exit;
+ }
+
+ /* directory or symlink does not exist, all is fine */
+ if (lstat(d, &sbuf) < 0) {
+ rc = 1;
+ goto exit;
+ }
+
+ /* if it is a symlink, all is fine */
+ if (S_ISLNK(sbuf.st_mode))
+ rc = 1;
+
+exit:
+ free(d);
+ return rc;
+}
+
+static int CheckFilesystemHierarchy(rpmds * dsp, const char *root)
+{
+ static const char *dirs[] = { "bin", "sbin", "lib", "lib64" };
+ int check;
+ int i;
+ rpmds ds;
+ int rc = 0;
+
+ for (i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) {
+ check = CheckLink(dirs[i], root);
+ if (check < 0) {
+ rc = -1;
+ goto exit;
+ }
+
+ if (check == 0)
+ goto exit;
+ }
+ ds = rpmdsSingle(RPMTAG_PROVIDENAME,
+ "rpmlib(X-CheckUnifiedSystemdir)", "1",
+ RPMSENSE_EQUAL);
+ rpmdsMerge(dsp, ds);
+ rpmdsFree(ds);
+
+ check = CheckLink("usr/lib64", root);
+ if (check < 0) {
+ rc = -1;
+ goto exit;
+ }
+ if (check > 0) {
+ ds = rpmdsSingle(RPMTAG_PROVIDENAME,
+ "rpmlib(X-CheckMultiArchLibdir)", "1",
+ RPMSENSE_EQUAL);
+ rpmdsMerge(dsp, ds);
+ rpmdsFree(ds);
+ }
+
+ check = CheckLink("usr/sbin", root);
+ if (check < 0) {
+ rc = -1;
+ goto exit;
+ }
+ if (check > 0) {
+ ds = rpmdsSingle(RPMTAG_PROVIDENAME,
+ "rpmlib(X-CheckUnifiedBindir)", "1",
+ RPMSENSE_EQUAL);
+ rpmdsMerge(dsp, ds);
+ rpmdsFree(ds);
+ }
+
+exit:
+ return rc;
+}
+
/**
* Check dep for an unsatisfied dependency.
* @param ts transaction set
@@ -410,9 +512,11 @@ retry:
*/
if (dsflags & RPMSENSE_RPMLIB) {
static int oneshot = -1;
- if (oneshot)
+ if (oneshot) {
oneshot = rpmdsRpmlib(&rpmlibP, NULL);
-
+ CheckFilesystemHierarchy(&rpmlibP, rpmtsRootDir(ts));
+ }
+
if (rpmlibP != NULL && rpmdsSearch(rpmlibP, dep) >= 0) {
rpmdsNotify(dep, "(rpmlib provides)", rc);
goto exit;

14
rpm-4.9.1.3-power64.patch Normal file
View File

@ -0,0 +1,14 @@
diff -up rpm-4.9.1.3/macros.in.power64 rpm-4.9.1.3/macros.in
--- rpm-4.9.1.3/macros.in.power64 2012-05-03 13:34:17.000000000 +0200
+++ rpm-4.9.1.3/macros.in 2012-05-03 13:45:44.002388724 +0200
@@ -1038,6 +1038,10 @@ done \
%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l armv7hl armv7hnl
#------------------------------------------------------------------------------
+# arch macro for all supported PowerPC 64 processors
+%power64 ppc64 ppc64p7
+
+#------------------------------------------------------------------------------
# arch macro for all supported Sparc processors
%sparc sparc sparcv8 sparcv9 sparcv9v sparc64 sparc64v

View File

@ -0,0 +1,21 @@
diff -up rpm-4.9.1.3/installplatform.ppc64p7-platform rpm-4.9.1.3/installplatform
--- rpm-4.9.1.3/installplatform.ppc64p7-platform 2012-04-25 14:25:25.554388624 +0200
+++ rpm-4.9.1.3/installplatform 2012-04-30 17:21:45.013388696 +0200
@@ -22,7 +22,7 @@ case "$arch" in
arm*) SUBSTS='s_arm_arm_ s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_ s_arm_armv7l_ s_arm_armv7hl_ s_arm_armv7hnl_' ;;
sh4*) SUBSTS='s_sh4_sh4_ s_sh4_sh4a_' ;;
sparc*) SUBSTS='s_sparc\(64\|64v\|v9v\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
- powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;;
+ powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_ s_ppc\([^6ip]\|$\)_ppc64p7_' ;;
s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;;
x86_64|amd64|ia32e) SUBSTS='s,x86_64,x86_64, s,x86_64,ia32e, s,x86_64,amd64, s,x86_64,i386, s,x86_64,i486, s,x86_64,i586, s,x86_64,i686, s,x86_64,pentium3, s,x86_64,pentium4, s,x86_64,athlon, s,x86_64,geode,' ;;
*) SUBSTS=y___ ;;
@@ -48,7 +48,7 @@ for SUBST in $SUBSTS ; do
case "${ARCH}-${OS}" in
sparc64*-linux) LIB=lib64 ;;
s390x-linux) LIB=lib64 ;;
- ppc64-linux|powerpc64-linux) LIB=lib64 ;;
+ ppc64-linux|ppc64p7-linux|powerpc64-linux) LIB=lib64 ;;
x86_64-linux|amd64-linux|ia32e-linux) LIB=lib64 ;;
*) LIB=lib;;
esac

View File

@ -1,12 +0,0 @@
diff -up rpm-4.9.90.git11486/scripts/find-lang.sh.no-man-dirs rpm-4.9.90.git11486/scripts/find-lang.sh
--- rpm-4.9.90.git11486/scripts/find-lang.sh.no-man-dirs 2012-03-07 11:31:10.000000000 +0200
+++ rpm-4.9.90.git11486/scripts/find-lang.sh 2012-03-07 15:11:57.465801075 +0200
@@ -181,7 +181,7 @@ s:%lang(C) ::
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\)::
-'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*:
+'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1/*:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME

37
rpm-4.9.x-db-einval.patch Normal file
View File

@ -0,0 +1,37 @@
commit 58c5eb28d5f267313294486c6f8a7a6c84984d86
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Thu May 3 16:15:59 2012 +0300
Fall back to private db environment on system level EINVAL
- BDB wants to use mmap() for its environment by default, but not
all (file)systems support this, as pointed out by Daniel Drak.
However env->open() can return EINVAL for a number of reasons,
require all the fallback reasons to be system level errors to
differentiate from "logical" errors such as incompatible flags
to (possibly pre-existing) db environment, in which case we better
just error out.
diff --git a/lib/backend/db3.c b/lib/backend/db3.c
index 30ed7ac..bbf9577 100644
--- a/lib/backend/db3.c
+++ b/lib/backend/db3.c
@@ -177,7 +177,8 @@ static int db_init(rpmdb rdb, const char * dbhome)
/*
* Actually open the environment. Fall back to private environment
- * if we dont have permission to join/create shared environment.
+ * if we dont have permission to join/create shared environment or
+ * system doesn't support it..
*/
while (retry_open) {
char *fstr = prDbiOpenFlags(eflags, 1);
@@ -185,7 +186,7 @@ static int db_init(rpmdb rdb, const char * dbhome)
free(fstr);
rc = (dbenv->open)(dbenv, dbhome, eflags, rdb->db_perms);
- if (rc == EACCES || rc == EROFS) {
+ if ((rc == EACCES || rc == EROFS || rc == EINVAL) && errno == rc) {
eflags |= DB_PRIVATE;
retry_open--;
} else {

View File

@ -0,0 +1,13 @@
diff --git a/tools/debugedit.c b/tools/debugedit.c
index 89d0428..dc424d3 100644
--- a/tools/debugedit.c
+++ b/tools/debugedit.c
@@ -1586,7 +1586,7 @@ main (int argc, char *argv[])
if (strcmp (name, ".stab") == 0)
{
fprintf (stderr, "Stabs debuginfo not supported: %s\n", file);
- exit (1);
+ break;
}
if (strcmp (name, ".debug_info") == 0)
edit_dwarf2 (dso);

View File

@ -0,0 +1,14 @@
diff -up rpm-4.9.1.3/build/files.c.doc-quotes rpm-4.9.1.3/build/files.c
--- rpm-4.9.1.3/build/files.c.doc-quotes 2013-03-27 08:04:35.117556856 +0200
+++ rpm-4.9.1.3/build/files.c 2013-03-27 08:04:35.143556768 +0200
@@ -892,7 +892,9 @@ static rpmRC parseForSimple(rpmSpec spec
if (*s != '/') {
if (fl->currentFlags & RPMFILE_DOC) {
- rstrscat(&specialDocBuf, " ", s, NULL);
+ char * fn = rpmEscapeSpaces(s);
+ rstrscat(&specialDocBuf, " ", fn, NULL);
+ free(fn);
} else
if (fl->currentFlags & RPMFILE_PUBKEY)
{

16
rpm-4.9.x-elfattr.patch Normal file
View File

@ -0,0 +1,16 @@
commit 87d9e3c4adac92ff544440dd1239a4ae4fe05bb4
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Mon Nov 28 14:00:45 2011 +0200
Fix classification of ELF binaries with setuid/setgid bit, oops...
diff --git a/fileattrs/elf.attr b/fileattrs/elf.attr
index bc6ce83..595b33e 100644
--- a/fileattrs/elf.attr
+++ b/fileattrs/elf.attr
@@ -1,4 +1,4 @@
%__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
%__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
-%__elf_magic ^(sticky )?ELF (32|64)-bit.*$
+%__elf_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*$
%__elf_flags exeonly

View File

@ -0,0 +1,59 @@
commit cce686b2129e4e8dc27f1a640f7c4746f9ffb032
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Sun Oct 23 13:59:46 2011 +0300
Warn but don't fail the build on missing excluded files (RhBug:745629)
- If a file/directory is not to be packaged, there's not a whole lot
point making the build fail if its missing. In case exclude is
used to leave certain files to sub-packages, the sub-package file
lists will catch out missing files that are really missing as a
result of actual build failure or such (except perhaps for some
glob cases but missing files can go unnoticed in those cases anyway)
- backported from commit 084a00bf51a941ec85c094a436bda401fccf7d3a
diff --git a/build/files.c b/build/files.c
index e0747f8..a520410 100644
--- a/build/files.c
+++ b/build/files.c
@@ -1393,12 +1393,19 @@ static rpmRC addFile(FileList fl, const char * diskPath,
statp->st_mtime = now;
statp->st_ctime = now;
} else {
+ int rc = RPMRC_FAIL;
+ int lvl = RPMLOG_ERR;
const char *msg = fl->isDir ?
_("Directory not found: %s\n") :
_("File not found: %s\n");
- rpmlog(RPMLOG_ERR, msg, diskPath);
- fl->processingFailed = 1;
- return RPMRC_FAIL;
+ if (fl->currentFlags & RPMFILE_EXCLUDE) {
+ lvl = RPMLOG_WARNING;
+ rc = RPMRC_OK;
+ } else {
+ fl->processingFailed = 1;
+ }
+ rpmlog(lvl, msg, diskPath);
+ return rc;
}
}
}
@@ -1702,11 +1707,15 @@ static rpmRC processBinaryFile(Package pkg, FileList fl, const char * fileName)
}
argvFree(argv);
} else {
+ int lvl = RPMLOG_WARNING;
const char *msg = (fl->isDir) ?
_("Directory not found by glob: %s\n") :
_("File not found by glob: %s\n");
- rpmlog(RPMLOG_ERR, msg, diskPath);
- rc = RPMRC_FAIL;
+ if (!(fl->currentFlags & RPMFILE_EXCLUDE)) {
+ lvl = RPMLOG_ERR;
+ rc = RPMRC_FAIL;
+ }
+ rpmlog(lvl, msg, diskPath);
goto exit;
}
} else {

15
rpm-4.9.x-fontattr.patch Normal file
View File

@ -0,0 +1,15 @@
commit fb30c0aac8b3da8c75a8cb1578a719ce38db59eb
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Fri Nov 25 16:07:38 2011 +0200
Identify "font collection" (data etc) as fonts also (RhBug:757105)
diff --git a/fileattrs/font.attr b/fileattrs/font.attr
index 5c4c78f..8c19383 100644
--- a/fileattrs/font.attr
+++ b/fileattrs/font.attr
@@ -1,3 +1,3 @@
%__font_provides %{_rpmconfigdir}/fontconfig.prov
%__font_requires %{nil}
-%__font_magic ^.* [Ff]ont (program )?(text|data).*$
+%__font_magic ^.* [Ff]ont (program|collection )?(text|data).*$

View File

@ -0,0 +1,19 @@
diff --git a/scripts/find-lang.sh b/scripts/find-lang.sh
index c3dbdbe..c8f4612 100755
--- a/scripts/find-lang.sh
+++ b/scripts/find-lang.sh
@@ -107,6 +107,14 @@ s:%lang(C) ::
find $TOP_DIR -type d|sed '
s:'"$TOP_DIR"'::
+'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\(/'"$NAME"'\)$:%lang(\2) %doc \1\2\3/:
+'"$ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\(/[a-zA-Z0-9.\_\-]\+\)$:%lang(\2) %doc \1\2\3/:
+s:^\([^%].*\)::
+s:%lang(C) ::
+/^$/d' >> $MO_NAME
+
+find "$TOP_DIR" -type d|sed '
+s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir \1:
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\)::
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) \1\2:

View File

@ -0,0 +1,21 @@
commit bf92b843fabd6c9881b19efb0cae1578d16e4f7b
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Tue Feb 28 12:18:10 2012 +0200
Don't process spec %include in false branch of %if clauses (RhBug:782970)
(backported from commit 9defc922e971d98203890f1557ab951ec94f2a3f)
diff --git a/build/parseSpec.c b/build/parseSpec.c
index 01620bd..01c3c08 100644
--- a/build/parseSpec.c
+++ b/build/parseSpec.c
@@ -374,7 +374,8 @@ int readLine(rpmSpec spec, int strip)
spec->readStack = spec->readStack->next;
free(rl);
spec->line[0] = '\0';
- } else if (rstreqn("%include", s, sizeof("%include")-1)) {
+ } else if (spec->readStack->reading &&
+ rstreqn("%include", s, sizeof("%include")-1)) {
char *fileName, *endFileName, *p;
s += 8;

28
rpm-4.9.x-mpsize.patch Normal file
View File

@ -0,0 +1,28 @@
commit d8cd36058b528f56bd579204426143be1e1eac6d
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Wed Feb 8 10:56:09 2012 +0200
Switch back to former, much smaller BDB memory pool size (RhBug:752897)
- A larger cache is beneficial in various scenarios, but triggers
horrible worst-case performance under memory pressure (or so my
current theory goes, there might be other factors too). The
worst-case degration is orders of magnitude bigger than the best-case
improvements from the larger cache and for many use-cases doesn't
make a whole lot difference. We could/should tune the cache with
priorizing indexes and all, and perhaps dynamically select the
cache size but for now, the 1Mb cache size is known to "just work".
diff --git a/macros.in b/macros.in
index f835fec..6034721 100644
--- a/macros.in
+++ b/macros.in
@@ -535,7 +535,7 @@ print (t)\
#
# Misc BDB tuning options
-%__dbi_other mp_mmapsize=128Mb mp_size=64Mb
+%__dbi_other mp_mmapsize=128Mb mp_size=1Mb
%_dbi_config %{?__dbi_other}

View File

@ -0,0 +1,66 @@
commit 59807943af5c10c892b239f11b8fafb209254a4a
Author: David Malcolm <dmalcolm@redhat.com>
Date: Thu Dec 15 22:22:56 2011 -0500
fix memory leaks in invocations of PyObject_Call
- Various functions in the Python bindings have expressions of the form:
PyObject_Call(callable,
Py_BuildValue(fmtstring, ...), NULL);
This leaks memory for the case when Py_BuildValue succeeds (it returns a
new reference, which is never freed; PyObject_Call doesn't steal the
reference): the argument tuple and all of its components will not be
freed (until the process exits).
Signed-off-by: Ales Kozumplik <akozumpl@redhat.com>
diff --git a/python/header-py.c b/python/header-py.c
index 96cf200..cef457b 100644
--- a/python/header-py.c
+++ b/python/header-py.c
@@ -295,8 +295,7 @@ static PyObject * hdrWrite(hdrObject *s, PyObject *args, PyObject *kwds)
*/
static PyObject * hdr_fiFromHeader(PyObject * s, PyObject * args, PyObject * kwds)
{
- return PyObject_Call((PyObject *) &rpmfi_Type,
- Py_BuildValue("(O)", s), NULL);
+ return PyObject_CallFunctionObjArgs((PyObject *) &rpmfi_Type, s, NULL);
}
/* Backwards compatibility. Flags argument is just a dummy and discarded. */
@@ -309,14 +308,14 @@ static PyObject * hdr_dsFromHeader(PyObject * s, PyObject * args, PyObject * kwd
tagNumFromPyObject, &tag, &flags))
return NULL;
- return PyObject_Call((PyObject *) &rpmds_Type,
- Py_BuildValue("(Oi)", s, tag), NULL);
+ return PyObject_CallFunction((PyObject *) &rpmds_Type,
+ "(Oi)", s, tag);
}
static PyObject * hdr_dsOfHeader(PyObject * s)
{
- return PyObject_Call((PyObject *) &rpmds_Type,
- Py_BuildValue("(Oi)", s, RPMTAG_NEVR), NULL);
+ return PyObject_CallFunction((PyObject *) &rpmds_Type,
+ "(Oi)", s, RPMTAG_NEVR);
}
static long hdr_hash(PyObject * h)
diff --git a/python/rpmfd-py.c b/python/rpmfd-py.c
index 89a70cd..1150aa1 100644
--- a/python/rpmfd-py.c
+++ b/python/rpmfd-py.c
@@ -23,8 +23,8 @@ int rpmfdFromPyObject(PyObject *obj, rpmfdObject **fdop)
Py_INCREF(obj);
fdo = (rpmfdObject *) obj;
} else {
- fdo = (rpmfdObject *) PyObject_Call((PyObject *)&rpmfd_Type,
- Py_BuildValue("(O)", obj), NULL);
+ fdo = (rpmfdObject *) PyObject_CallFunctionObjArgs((PyObject *)&rpmfd_Type,
+ obj, NULL);
}
if (fdo == NULL) return 0;

View File

@ -0,0 +1,17 @@
diff --git a/scripts/rpm2cpio.sh b/scripts/rpm2cpio.sh
index b03ee36..57c47bb 100755
--- a/scripts/rpm2cpio.sh
+++ b/scripts/rpm2cpio.sh
@@ -28,9 +28,11 @@ comp=`dd if="$pkg" ibs=$o skip=1 count=1 2>/dev/null \
gz="`echo . | awk '{ printf("%c%c", 0x1f, 0x8b); }'`"
lzma="`echo . | awk '{ printf("%cLZ", 0xff); }'`"
+xz="`echo . | awk '{ printf("%c7z", 0xfd); }'`"
case "$comp" in
BZh) dd if="$pkg" ibs=$o skip=1 2>/dev/null | bunzip2 ;;
"$gz"*) dd if="$pkg" ibs=$o skip=1 2>/dev/null | gunzip ;;
+ "$xz"*) dd if="$pkg" ibs=$o skip=1 2>/dev/null | xzcat ;;
"$lzma"*) dd if="$pkg" ibs=$o skip=1 2>/dev/null | unlzma ;;
- *) echo "Unrecognized rpm file: $pkg"; return 1 ;;
+ *) echo "Unrecognized rpm file: $pkg"; exit 1 ;;
esac

98
rpm-4.9.x-rpmdb-dsi.patch Normal file
View File

@ -0,0 +1,98 @@
diff --git a/lib/transaction.c b/lib/transaction.c
index 7adf60b..5acc08e 100644
--- a/lib/transaction.c
+++ b/lib/transaction.c
@@ -227,46 +227,12 @@ static void rpmtsUpdateDSI(const rpmts ts, dev_t dev, const char *dirName,
if (dsi->ineeded < dsi->oineeded) dsi->oineeded = dsi->ineeded;
}
-/* return DSI of the device the rpmdb lives on */
-static rpmDiskSpaceInfo rpmtsDbDSI(const rpmts ts) {
- const char *dbhome = rpmdbHome(rpmtsGetRdb(ts));
- struct stat sb;
- int rc;
-
- rc = stat(dbhome, &sb);
- if (rc) {
- return NULL;
- }
- return rpmtsGetDSI(ts, sb.st_dev, dbhome);
-}
-
-/* Update DSI for changing size of the rpmdb */
-static void rpmtsUpdateDSIrpmDBSize(const rpmte p,
- rpmDiskSpaceInfo dsi) {
- rpm_loff_t headerSize;
- int64_t bneeded;
-
- /* XXX somehow we can end up here with bsize 0 (RhBug:671056) */
- if (dsi == NULL || dsi->bsize == 0) return;
-
- headerSize = rpmteHeaderSize(p);
- bneeded = BLOCK_ROUND(headerSize, dsi->bsize);
- /* REMOVE doesn't neccessarily shrink the database */
- if (rpmteType(p) == TR_ADDED) {
- /* guessing that db grows 4 times more than the header size */
- dsi->bneeded += (bneeded * 4);
- }
-}
-
-
static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
{
rpmDiskSpaceInfo dsi = ts->dsi;
if (dsi == NULL || !dsi->bsize)
return;
- if (rpmfiFC(rpmteFI(te)) <= 0)
- return;
for (; dsi->bsize; dsi++) {
@@ -1294,11 +1260,12 @@ static int rpmtsPrepare(rpmts ts)
rpmfi fi;
int rc = 0;
uint64_t fileCount = countFiles(ts);
+ const char *dbhome = NULL;
+ struct stat dbstat;
fingerPrintCache fpc = fpCacheCreate(fileCount/2 + 10001);
rpmFpHash ht = rpmFpHashCreate(fileCount/2+1, fpHashFunction, fpEqual,
NULL, NULL);
- rpmDiskSpaceInfo dsi;
rpmlog(RPMLOG_DEBUG, "computing %" PRIu64 " file fingerprints\n", fileCount);
@@ -1326,7 +1293,10 @@ static int rpmtsPrepare(rpmts ts)
/* check against files in the rpmdb */
checkInstalledFiles(ts, fileCount, ht, fpc);
- dsi = rpmtsDbDSI(ts);
+ dbhome = rpmdbHome(rpmtsGetRdb(ts));
+ /* If we can't stat, ignore db growth. Probably not right but... */
+ if (dbhome && stat(dbhome, &dbstat))
+ dbhome = NULL;
pi = rpmtsiInit(ts);
while ((p = rpmtsiNext(pi, 0)) != NULL) {
@@ -1338,10 +1308,18 @@ static int rpmtsPrepare(rpmts ts)
needs on each partition for this package. */
handleOverlappedFiles(ts, ht, p, fi);
- rpmtsUpdateDSIrpmDBSize(p, dsi);
-
/* Check added package has sufficient space on each partition used. */
if (rpmteType(p) == TR_ADDED) {
+ /*
+ * Try to estimate space needed for rpmdb growth: guess that the
+ * db grows 4 times the header size (indexes and all).
+ */
+ if (dbhome) {
+ int64_t hsize = rpmteHeaderSize(p) * 4;
+ rpmtsUpdateDSI(ts, dbstat.st_dev, dbhome,
+ hsize, 0, 0, FA_CREATE);
+ }
+
rpmtsCheckDSIProblems(ts, p);
}
(void) rpmswExit(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), 0);

View File

@ -0,0 +1,43 @@
commit 7d88d5e54a9c3fa2b7fb443921c8adb799051784
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Wed Feb 1 17:48:20 2012 +0200
Don't free up file info sets on transaction test-runs
- We'd like to get rid of the potentially huge amounts of memory
eaten by file info sets as early as possible, but when there's a
chance that we'll get called again with either added transacation
elements or on-disk changes, such as %pretrans changing something
underneath us, we need to (be able to) recalculate everything
from scratch. Only free up the memory when we know we dont need
it anymore, ie on an actual transaction run.
- This doesn't change anything for rpm itself, for yum and others
which do a separate test-transaction first, it means %pretrans
directory<->symlink replacement hacks and the like have a chance
of working again. I'm sure there's a bug filed on this somewhere but...
(cherry picked from commit cef18c94807af0935b7796c462aab8ed39f0f376)
diff --git a/lib/transaction.c b/lib/transaction.c
index 56ebc17..8d29ab9 100644
--- a/lib/transaction.c
+++ b/lib/transaction.c
@@ -1355,12 +1355,14 @@ static int rpmtsPrepare(rpmts ts)
if (rpmChrootOut())
rc = -1;
- /* File info sets, fp caches etc not needed beyond here, free 'em up. */
- pi = rpmtsiInit(ts);
- while ((p = rpmtsiNext(pi, 0)) != NULL) {
- rpmteSetFI(p, NULL);
+ /* On actual transaction, file info sets are not needed after this */
+ if (!(rpmtsFlags(ts) & (RPMTRANS_FLAG_TEST|RPMTRANS_FLAG_BUILD_PROBS))) {
+ pi = rpmtsiInit(ts);
+ while ((p = rpmtsiNext(pi, 0)) != NULL) {
+ rpmteSetFI(p, NULL);
+ }
+ rpmtsiFree(pi);
}
- pi = rpmtsiFree(pi);
exit:
ht = rpmFpHashFree(ht);

View File

@ -0,0 +1,62 @@
commit 4e207bfdfce434a6484babc14fe86aeadeec5329
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Tue Feb 28 10:31:28 2012 +0200
Unbreak rpm -V output (RhBug:797964)
- Commit ac0ab016a5ec31e65eb0c0910a5a6f1199aae3e7 unintentionally
changed the order of the problems shown in verify strings due to
a dumb oversight (greetings to self, duh). In other words, this
fixes a verify output regression in rpm >= 4.9.x by restoring
the long-standing (and documented) order of the verify output chars.
- Also fix the testcase which unfortunately was only added after
the output-changing commit so it didn't catch the breakage either :-/
diff --git a/lib/verify.c b/lib/verify.c
index 35612fe..1edb27f 100644
--- a/lib/verify.c
+++ b/lib/verify.c
@@ -292,14 +292,14 @@ char * rpmVerifyString(uint32_t verifyResult, const char *pad)
{
char *fmt = NULL;
rasprintf(&fmt, "%s%s%s%s%s%s%s%s%s",
- _verifyfile(RPMVERIFY_FILEDIGEST, "5", pad),
_verify(RPMVERIFY_FILESIZE, "S", pad),
- _verifylink(RPMVERIFY_LINKTO, "L", pad),
- _verify(RPMVERIFY_MTIME, "T", pad),
+ _verify(RPMVERIFY_MODE, "M", pad),
+ _verifyfile(RPMVERIFY_FILEDIGEST, "5", pad),
_verify(RPMVERIFY_RDEV, "D", pad),
+ _verifylink(RPMVERIFY_LINKTO, "L", pad),
_verify(RPMVERIFY_USER, "U", pad),
_verify(RPMVERIFY_GROUP, "G", pad),
- _verify(RPMVERIFY_MODE, "M", pad),
+ _verify(RPMVERIFY_MTIME, "T", pad),
_verify(RPMVERIFY_CAPS, "P", pad));
return fmt;
diff --git a/tests/rpmverify.at b/tests/rpmverify.at
index dd23a4a..77d6bfe 100644
--- a/tests/rpmverify.at
+++ b/tests/rpmverify.at
@@ -79,7 +79,7 @@ dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \
runroot rpm -Va --nodeps --nouser --nogroup
],
[1],
-[5..T...M. /usr/local/bin/hello
+[.M5....T. /usr/local/bin/hello
missing d /usr/share/doc/hello-1.0/FAQ
],
[])
diff -up rpm-4.9.1.2/tests/rpmtests.verify-output rpm-4.9.1.2/tests/rpmtests
--- rpm-4.9.1.2/tests/rpmtests.verify-output 2012-03-07 12:20:31.889830559 +0200
+++ rpm-4.9.1.2/tests/rpmtests 2012-03-07 12:21:01.651753987 +0200
@@ -3619,7 +3619,7 @@ runroot rpm -Va --nodeps --nouser --nogr
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "5..T...M. /usr/local/bin/hello
+echo >>"$at_stdout"; $as_echo ".M5....T. /usr/local/bin/hello
missing d /usr/share/doc/hello-1.0/FAQ
" | \
$at_diff - "$at_stdout" || at_failed=:

1334
rpm.spec

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +0,0 @@
[Unit]
Description=RPM database rebuild
ConditionPathExists=/var/lib/rpm/.rebuilddb
# This should run before any daemons that may open the rpmdb
DefaultDependencies=no
After=sysinit.target
Before=basic.target shutdown.target
Conflicts=shutdown.target
# In case /var is remote-mounted
RequiresMountsFor=/var
[Service]
Type=oneshot
ExecStart=/usr/bin/rpmdb --rebuilddb
ExecStartPost=rm -f /var/lib/rpm/.rebuilddb
[Install]
WantedBy=basic.target

View File

@ -1 +1 @@
SHA512 (rpm-4.16.0-beta3.tar.bz2) = 20efa638a7fe85b1b4d3d42fb07172c20a1f3c62024a29e4184b67a2d52ff3f94a186f178e9a5bfee9bf6c826a1023995d970b5c0ddaffe8b61fd2c888b44032
e266b959de9865cce2816451e8a62e12 rpm-4.9.1.3.tar.bz2