Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5b931dd245 | ||
|
ca0d5149bc | ||
|
1ea7ce61c9 | ||
|
71d3b385aa | ||
|
98d67b23f7 | ||
|
9d3171c03f | ||
|
f1acb5f031 | ||
|
ae517e7f5a | ||
|
f0f66bfa5e | ||
|
4b44325a0c | ||
|
b88a8e4d8a | ||
|
cf817df4f0 | ||
|
3c2064a504 | ||
|
b404a9df22 |
50
.gitignore
vendored
50
.gitignore
vendored
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
34
STAGE2-rpm
34
STAGE2-rpm
@ -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
4
libsymlink.attr
Normal 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:]]$
|
@ -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);
|
||||
|
@ -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\
|
13
rpm-4.5.90-pkgconfig-path.patch
Normal file
13
rpm-4.5.90-pkgconfig-path.patch
Normal 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
61
rpm-4.6.0-niagara.patch
Normal 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
|
13
rpm-4.8.0-no-man-dirs.patch
Normal file
13
rpm-4.8.0-no-man-dirs.patch
Normal 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
12
rpm-4.8.1-use-gpg2.patch
Normal 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@
|
78
rpm-4.8.90-fedora-specspo.patch
Normal file
78
rpm-4.8.90-fedora-specspo.patch
Normal 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;
|
||||
}
|
||||
|
83
rpm-4.9.0-armhfp-logic.patch
Normal file
83
rpm-4.9.0-armhfp-logic.patch
Normal 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
73
rpm-4.9.0-armhfp.patch
Normal 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
|
55
rpm-4.9.0-debuginfo-allnames.patch
Normal file
55
rpm-4.9.0-debuginfo-allnames.patch
Normal 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
|
@ -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}\"\
|
35
rpm-4.9.1.2-perl-python-attr.patch
Normal file
35
rpm-4.9.1.2-perl-python-attr.patch
Normal 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)$
|
12
rpm-4.9.1.2-perl-script.patch
Normal file
12
rpm-4.9.1.2-perl-script.patch
Normal 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
146
rpm-4.9.1.2-ppc64p7.patch
Normal 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
|
127
rpm-4.9.1.2-rpmlib-filesystem-check.patch
Normal file
127
rpm-4.9.1.2-rpmlib-filesystem-check.patch
Normal 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
14
rpm-4.9.1.3-power64.patch
Normal 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
|
||||
|
21
rpm-4.9.1.3-ppc64p7-platform.patch
Normal file
21
rpm-4.9.1.3-ppc64p7-platform.patch
Normal 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
|
@ -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
37
rpm-4.9.x-db-einval.patch
Normal 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 {
|
13
rpm-4.9.x-debugedit-stabs-warn.patch
Normal file
13
rpm-4.9.x-debugedit-stabs-warn.patch
Normal 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);
|
14
rpm-4.9.x-doc-quotes.patch
Normal file
14
rpm-4.9.x-doc-quotes.patch
Normal 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
16
rpm-4.9.x-elfattr.patch
Normal 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
|
59
rpm-4.9.x-exclude-warn.patch
Normal file
59
rpm-4.9.x-exclude-warn.patch
Normal 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
15
rpm-4.9.x-fontattr.patch
Normal 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).*$
|
19
rpm-4.9.x-gnome-help.patch
Normal file
19
rpm-4.9.x-gnome-help.patch
Normal 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:
|
21
rpm-4.9.x-include-cond.patch
Normal file
21
rpm-4.9.x-include-cond.patch
Normal 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
28
rpm-4.9.x-mpsize.patch
Normal 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}
|
||||
|
66
rpm-4.9.x-python-memleaks.patch
Normal file
66
rpm-4.9.x-python-memleaks.patch
Normal 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;
|
||||
|
17
rpm-4.9.x-rpm2cpio-foo.patch
Normal file
17
rpm-4.9.x-rpm2cpio-foo.patch
Normal 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
98
rpm-4.9.x-rpmdb-dsi.patch
Normal 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);
|
43
rpm-4.9.x-tstest-fileinfo.patch
Normal file
43
rpm-4.9.x-tstest-fileinfo.patch
Normal 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);
|
62
rpm-4.9.x-verify-output.patch
Normal file
62
rpm-4.9.x-verify-output.patch
Normal 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=:
|
@ -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
|
Loading…
Reference in New Issue
Block a user