SHA256
3
0
forked from pool/rpm

Accepting request 250106 from Base:System

update to rpm-4.12.0.1

OBS-URL: https://build.opensuse.org/request/show/250106
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpm?expand=0&rev=229
This commit is contained in:
Stephan Kulow 2014-09-28 17:53:32 +00:00 committed by Git OBS Bridge
commit 23de9021bc
33 changed files with 234 additions and 1550 deletions

View File

@ -1,26 +1,26 @@
--- tools/elfdeps.c.orig 2013-01-30 15:33:12.000000000 +0000
+++ tools/elfdeps.c 2013-07-12 12:21:47.000000000 +0000
@@ -15,6 +15,7 @@
int filter_private = 0;
int soname_only = 0;
--- ./tools/elfdeps.c.orig 2014-06-26 06:51:55.768815677 +0000
+++ ./tools/elfdeps.c 2014-08-04 13:02:16.981081591 +0000
@@ -17,6 +17,7 @@ int soname_only = 0;
int fake_soname = 1;
int filter_soname = 1;
int require_interp = 0;
+int assume_exec = 0;
typedef struct elfInfo_s {
Elf *elf;
@@ -235,7 +236,7 @@ static int processFile(const char *fn, i
@@ -299,7 +300,7 @@ static int processFile(const char *fn, i
if (ehdr->e_type == ET_DYN || ehdr->e_type == ET_EXEC) {
ei->marker = mkmarker(ehdr);
ei->isDSO = (ehdr->e_type == ET_DYN);
- ei->isExec = (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
+ ei->isExec = assume_exec || (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
processProgHeaders(ei, ehdr);
processSections(ei);
}
@@ -292,6 +293,7 @@ int main(int argc, char *argv[])
{ "filter-private", 0, POPT_ARG_VAL, &filter_private, -1, NULL, NULL },
{ "soname-only", 0, POPT_ARG_VAL, &soname_only, -1, NULL, NULL },
@@ -364,6 +365,7 @@ int main(int argc, char *argv[])
{ "no-fake-soname", 0, POPT_ARG_VAL, &fake_soname, 0, NULL, NULL },
{ "no-filter-soname", 0, POPT_ARG_VAL, &filter_soname, 0, NULL, NULL },
{ "require-interp", 0, POPT_ARG_VAL, &require_interp, -1, NULL, NULL },
+ { "assume-exec", 0, POPT_ARG_VAL, &assume_exec, -1, NULL, NULL },
POPT_AUTOHELP
POPT_TABLEEND

View File

@ -1,261 +0,0 @@
--- ./autodeps/linux.prov.orig 2011-07-12 11:28:13.000000000 +0000
+++ ./autodeps/linux.prov 2011-07-18 16:47:39.000000000 +0000
@@ -2,60 +2,72 @@
# This script reads filenames from STDIN and outputs any relevant provides
# information that needs to be included in the package.
+IFS=$'\n'
+filelist=($(cat))
-filelist=`sed "s/['\"]/\\\&/g"`
-
-solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \
- xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
+solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
+ tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
+ cut -d: -f1))
pythonlist=
tcllist=
+monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
#
# --- Alpha does not mark 64bit dependencies
case `uname -m` in
- alpha*) mark64="" ;;
- *) mark64="()(64bit)" ;;
+ alpha*) mark64=false ;;
+ *) mark64=true ;;
esac
#
# --- Library sonames and weak symbol versions (from glibc).
-for f in $solist; do
- soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
+for f in "${solist[@]}"; do
+ soname=$(objdump -p "$f" | awk '/SONAME/ {print $2}')
+ [ -n "$soname" -a -L "$f" ] && continue
+ [ -z "$soname" ] && soname="${f##*/}"
- lib64=`if file -L $f 2>/dev/null | \
- grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
- if [ "$soname" != "" ]; then
- if [ ! -L $f ]; then
- echo $soname$lib64
- objdump -p $f | awk '
- BEGIN { START=0 ; }
- /Version definitions:/ { START=1; }
- /^[0-9]/ && (START==1) { print $4; }
- /^$/ { START=0; }
- ' | \
- grep -v $soname | \
- while read symbol ; do
- echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
- done
- fi
+ if $mark64 && file -L "$f" 2>/dev/null | grep "ELF 64-bit" >/dev/null; then
+ lib64="()(64bit)" slib64="(64bit)"
else
- echo ${f##*/}$lib64
+ lib64= slib64=
fi
+ echo "$soname$lib64"
+ objdump -p "$f" | awk '
+ BEGIN { START=0 ; }
+ /Version definitions:/ { START=1; }
+ /^[0-9]/ && (START==1) { print $4; }
+ /^$/ { START=0; }
+ ' | \
+ while read symbol ; do
+ echo "$soname($symbol)$slib64"
+ done
done | sort -u
#
# --- Perl modules.
[ -x /usr/lib/rpm/perl.prov ] &&
- echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
+ printf "%s\n" "${filelist[@]}" | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
#
# --- Python modules.
[ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
- echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.prov | sort -u
+ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.prov | sort -u
#
# --- Tcl modules.
[ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
- echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.prov | sort -u
+ printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.prov | sort -u
+
+#
+# --- Mono exes/dlls
+: ${MONO_PREFIX=/usr}
+if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
+ printf "%s\n" "${monolist[@]}" | MONO_PATH=$MONO_PREFIX/lib${MONO_PATH:+:$MONO_PATH} prefix=$MONO_PREFIX $MONO_PREFIX/bin/mono-find-provides || echo "WARNING: MONO RPM PROVIDES WERE NOT GENERATED FOR THIS BUILD!!" 1>&2
+fi
+
+#
+# --- Kernel module exported symbols
+[ -x /usr/lib/rpm/find-provides.ksyms ] &&
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
exit 0
--- ./autodeps/linux.req.orig 2011-07-15 09:32:41.000000000 +0000
+++ ./autodeps/linux.req 2011-07-18 16:51:24.000000000 +0000
@@ -18,20 +18,21 @@ fi
#
# --- Grab the file manifest and classify files.
-#filelist=`sed "s/['\"]/\\\&/g"`
-filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
-exelist=`echo $filelist | xargs -r file | \
+#filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
+filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
+exelist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
grep -Ev ":.* (commands|script)[, ]" | \
- grep ":.*executable" | cut -d: -f1`
-scriptlist=`echo $filelist | xargs -r file | \
- grep -E ":.* (commands|script)[, ]" | cut -d: -f1`
-liblist=`echo $filelist | xargs -r file | \
- grep ":.*shared object" | cut -d : -f1`
+ grep ":.*executable" | cut -d: -f1))
+scriptlist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
+ grep -E ":.* (commands|script)[, ]" | cut -d: -f1))
+liblist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
+ grep ":.*shared object" | cut -d : -f1))
-interplist=
-perllist=
-pythonlist=
-tcllist=
+interplist=()
+perllist=()
+pythonlist=()
+tcllist=()
+monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
#
# --- Alpha does not mark 64bit dependencies
@@ -43,12 +44,12 @@ esac
if [ "$needed" -eq 0 ]; then
#
# --- Executable dependency sonames.
- for f in $exelist; do
- [ -r $f -a -x $f ] || continue
- lib64=`if file -L $f 2>/dev/null | \
+ for f in "${exelist[@]}"; do
+ [ -r "$f" -a -x "$f" ] || continue
+ lib64=`if file -L "$f" 2>/dev/null | \
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
- ldd $f | awk '/=>/ {
- if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
+ ldd "$f" | awk '/=>/ {
+ if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /linux-gate.so/) {
gsub(/'\''"/,"\\&",$1);
printf "%s'$lib64'\n", $1
}
@@ -57,12 +58,12 @@ if [ "$needed" -eq 0 ]; then
#
# --- Library dependency sonames.
- for f in $liblist; do
- [ -r $f ] || continue
- lib64=`if file -L $f 2>/dev/null | \
+ for f in "${liblist[@]}"; do
+ [ -r "$f" ] || continue
+ lib64=`if file -L "$f" 2>/dev/null | \
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
- ldd $f | awk '/=>/ {
- if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
+ ldd "$f" | awk '/=>/ {
+ if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /linux-gate.so/) {
gsub(/'\''"/,"\\&",$1);
printf "%s'$lib64'\n", $1
}
@@ -72,30 +73,30 @@ fi
#
# --- Script interpreters.
-for f in $scriptlist; do
- [ -r $f -a -x $f ] || continue
- interp=`head -n 1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1`
- interplist="$interplist $interp"
+for f in "${scriptlist[@]}"; do
+ [ -r "$f" -a -x "$f" ] || continue
+ interp=`head -n 1 "$f" | sed -ne 's/^\#\![ ]*//p' | cut -d" " -f1`
+ interplist=("${interplist[@]}" "$interp")
case $interp in
- */perl) perllist="$perllist $f" ;;
+ */perl) perllist=("${perllist[@]}" "$f") ;;
esac
done
-[ -n "$interplist" ] && { echo "$interplist" | tr '[:blank:]' \\n | sort -u ; }
+[ -n "$interplist" ] && { printf "%s\n" "${interplist[@]}" | sort -u ; }
#
# --- Add perl module files to perllist.
-for f in $filelist; do
- [ -r $f -a "${f%.pm}" != "${f}" ] && perllist="$perllist $f"
+for f in "${filelist[@]}"; do
+ [ -r "$f" -a "${f%.pm}" != "${f}" ] && perllist=("${perllist[@]}" "$f")
done
#
# --- Weak symbol versions (from glibc).
[ -n "$mark64" ] && mark64="(64bit)"
-for f in $liblist $exelist ; do
- [ -r $f ] || continue
- lib64=`if file -L $f 2>/dev/null | \
+for f in "${liblist[@]}" "${exelist[@]}" ; do
+ [ -r "$f" ] || continue
+ lib64=`if file -L "$f" 2>/dev/null | \
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
- objdump -p $f | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; }
+ objdump -p "$f" | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; }
/^$/ { START=0; }
/^Dynamic Section:$/ { START=1; }
(START==1) && /NEEDED/ {
@@ -112,7 +113,7 @@ for f in $liblist $exelist ; do
sub(/:/, "", $3);
LIBNAME=$3;
}
- (START==2) && (LIBNAME!="") && ($4!="") && (($4~/^GLIBC_*/) || ($4~/^GCC_*/)) {
+ (START==2) && (LIBNAME!="") && ($4!="") {
print LIBNAME "(" $4 ")'$lib64'";
}
'
@@ -120,17 +121,29 @@ done | sort -u
#
# --- Perl modules.
-[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \
- echo $perllist | tr '[:blank:]' \\n | /usr/lib/rpm/perl.req | sort -u
+#[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \
+# printf "%s\n" "${perllist[@]}" | /usr/lib/rpm/perl.req | sort -u
#
# --- Python modules.
[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \
- echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.req | sort -u
+ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.req | sort -u
#
# --- Tcl modules.
[ -x /usr/lib/rpm/tcl.req -a -n "$tcllist" ] && \
- echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.req | sort -u
+ printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.req | sort -u
+
+#
+# --- Mono exes/dlls
+: ${MONO_PREFIX=/usr}
+if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
+ printf "%s\n" "${monolist[@]}" | MONO_PATH=$MONO_PREFIX/lib${MONO_PATH:+:$MONO_PATH} prefix=$MONO_PREFIX $MONO_PREFIX/bin/mono-find-requires || echo "WARNING: MONO RPM REQUIRES WERE NOT GENERATED FOR THIS BUILD!!" 1>&2
+fi
+
+#
+# --- Kernel module imported symbols
+[ -x ${0%/*}/find-requires.ksyms ] &&
+ printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@"
exit 0

View File

@ -1,6 +1,6 @@
--- ./scripts/Makefile.am.orig 2014-09-05 11:48:54.000000000 +0000
+++ ./scripts/Makefile.am 2014-09-08 16:42:03.387071432 +0000
@@ -26,6 +26,7 @@ rpmconfig_SCRIPTS = \
--- ./scripts/Makefile.am.orig 2014-06-26 06:51:55.444816562 +0000
+++ ./scripts/Makefile.am 2014-08-04 12:33:14.213715432 +0000
@@ -27,6 +27,7 @@ rpmconfig_SCRIPTS = \
appdata.prov \
brp-compress brp-python-bytecompile brp-java-gcjcompile \
brp-strip brp-strip-comment-note brp-python-hardlink \
@ -8,8 +8,8 @@
brp-strip-shared brp-strip-static-archive \
check-files check-prereqs \
check-buildroot check-rpaths check-rpaths-worker \
--- ./scripts/brp-strip-comment-note.orig 2012-11-07 12:55:24.000000000 +0000
+++ ./scripts/brp-strip-comment-note 2014-09-08 16:42:03.387071432 +0000
--- ./scripts/brp-strip-comment-note.orig 2014-06-26 06:51:55.455816533 +0000
+++ ./scripts/brp-strip-comment-note 2014-08-04 12:33:14.214715437 +0000
@@ -16,6 +16,8 @@ esac
# for already stripped elf files in the build root
for f in `find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -exec file {} \; | \
@ -19,8 +19,8 @@
sed -n -e 's/^\(.*\):[ ]*ELF.*, stripped/\1/p'`; do
note="-R .note"
if $OBJDUMP -h $f | grep '^[ ]*[0-9]*[ ]*.note[ ]' -A 1 | \
--- ./scripts/brp-strip.orig 2012-11-07 12:55:24.000000000 +0000
+++ ./scripts/brp-strip 2014-09-08 16:42:03.388071423 +0000
--- ./scripts/brp-strip.orig 2014-06-26 06:51:55.455816533 +0000
+++ ./scripts/brp-strip 2014-08-04 12:33:14.214715437 +0000
@@ -15,6 +15,7 @@ esac
for f in `find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -exec file {} \; | \
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \
@ -29,8 +29,8 @@
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do
$STRIP -g "$f" || :
done
--- ./scripts/brp-suse.orig 2014-09-08 16:42:03.388071423 +0000
+++ ./scripts/brp-suse 2014-09-08 16:42:03.388071423 +0000
--- ./scripts/brp-suse.orig 2014-08-04 12:33:14.214715437 +0000
+++ ./scripts/brp-suse 2014-08-04 12:33:14.214715437 +0000
@@ -0,0 +1,13 @@
+#! /bin/sh
+

View File

@ -9,30 +9,6 @@ Users can therefore ask zypper to install the correct debuginfo package with:
zypper install -C "debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517"
--- ./autodeps/linux.prov.orig 2011-05-11 15:58:28.000000000 +0000
+++ ./autodeps/linux.prov 2011-05-11 15:59:31.000000000 +0000
@@ -5,6 +5,9 @@
IFS=$'\n'
filelist=($(cat))
+debuginfolist=($(printf "%s\n" "${filelist[@]}" | grep "/usr/lib/debug/"))
+filelist=($(printf "%s\n" "${filelist[@]}" | grep -v "/usr/lib/debug/"))
+
solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
cut -d: -f1))
@@ -71,6 +74,11 @@ done | sort -u
printf "%s\n" "${firmwarelist[@]}" | /usr/lib/rpm/firmware.prov | sort -u
#
+# --- debuginfo files
+[ -x /usr/lib/rpm/debuginfo.prov -a -n "$debuginfolist" ] &&
+ printf "%s\n" "${debuginfolist[@]}" | /usr/lib/rpm/debuginfo.prov | sort -u
+
+#
# --- Mono exes/dlls
: ${MONO_PREFIX=/usr}
if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
--- ./macros.in.orig 2011-05-11 15:59:08.000000000 +0000
+++ ./macros.in 2011-05-11 15:59:31.000000000 +0000
@@ -182,7 +182,8 @@

View File

@ -1,7 +1,7 @@
Create a debuginfo package for each subpackage.
--- ./build/files.c.orig 2014-08-18 12:37:19.151934240 +0000
+++ ./build/files.c 2014-08-18 12:48:48.106395561 +0000
--- ./build/files.c.orig 2014-06-30 08:47:13.928503700 +0000
+++ ./build/files.c 2014-09-17 11:03:25.001860575 +0000
@@ -21,6 +21,10 @@
#include <rpm/rpmlog.h>
#include <rpm/rpmbase64.h>
@ -12,8 +12,8 @@ Create a debuginfo package for each subpackage.
+
#include "rpmio/rpmio_internal.h" /* XXX rpmioSlurp */
#include "misc/fts.h"
#include "lib/cpio.h"
@@ -2084,13 +2088,241 @@ exit:
#include "lib/rpmfi_internal.h" /* XXX fi->apath */
@@ -2031,13 +2035,238 @@ exit:
return rc;
}
@ -145,10 +145,10 @@ Create a debuginfo package for each subpackage.
+
+ elf_version(EV_CURRENT);
+ a = headerGetString(pkg->header, RPMTAG_ARCH);
+ if (strcmp(a, "noarch") != 0 && strcmp(a, "src") != 0 && strcmp(a, "nosrc") != 0)
+ if (strcmp(a, "noarch") != 0)
+ {
+ Package dbg;
+ rpmfi fi = pkg->cpioList;
+ rpmfi fi = rpmfilesIter(pkg->cpioList, RPMFI_ITER_FWD);
+ char tmp[1024];
+ const char *name;
+ ARGV_t files = NULL;
@ -156,23 +156,20 @@ Create a debuginfo package for each subpackage.
+
+ /* Check if the current package has files with debug info
+ and record them. */
+ fi = rpmfiInit (fi, 0);
+ while (rpmfiNext (fi) >= 0)
+ fi = rpmfiInit(fi, 0);
+ while (rpmfiNext(fi) >= 0)
+ {
+ const char *base;
+ int i;
+ unsigned char *build_id;
+ unsigned char *build_id = NULL;
+ size_t build_id_size = 0;
+ struct stat sbuf;
+
+ name = rpmfiFN (fi);
+ /* Skip leading buildroot. */
+ base = name + strlen (buildroot);
+ name = rpmfiFN(fi);
+ /* Pre-pend %buildroot/usr/lib/debug and append .debug. */
+ snprintf (tmp, 1024, "%s/usr/lib/debug%s.debug",
+ buildroot, base);
+ snprintf(tmp, 1024, "%s/usr/lib/debug%s.debug",
+ buildroot, name);
+ /* If that file exists we have debug information for it. */
+ if (access (tmp, F_OK) != 0)
+ if (access(tmp, F_OK) != 0)
+ continue;
+
+ /* Append the file list preamble. */
@ -182,17 +179,17 @@ Create a debuginfo package for each subpackage.
+ argvAdd(&files, "%dir /usr/lib/debug");
+ }
+ /* Add the files main debug-info file. */
+ snprintf (tmp, 1024, "/usr/lib/debug/%s.debug", base);
+ snprintf(tmp, 1024, "/usr/lib/debug/%s.debug", name);
+ argvAdd(&files, tmp);
+
+ snprintf(tmp, 1024, "%s%s", buildroot, name);
+ /* Do not bother to check build-ids for symbolic links.
+ We'll handle them for the link target. */
+ if (lstat (name, &sbuf) == -1
+ || S_ISLNK (sbuf.st_mode))
+ if (lstat(tmp, &sbuf) == -1 || S_ISLNK(sbuf.st_mode))
+ continue;
+
+ /* Try to gather the build-id from the binary. */
+ if (getELFBuildId (name, &build_id, &build_id_size) == -1)
+ if (getELFBuildId(tmp, &build_id, &build_id_size) == -1)
+ continue;
+
+ /* If we see build-id links for the first time add the
@ -202,15 +199,15 @@ Create a debuginfo package for each subpackage.
+
+ /* From the build-id construct the two links pointing back
+ to the debug information file and the binary. */
+ snprintf (tmp, 1024, "/usr/lib/debug/.build-id/%02x/",
+ snprintf(tmp, 1024, "/usr/lib/debug/.build-id/%02x/",
+ build_id[0]);
+ for (i = 1; i < build_id_size; ++i)
+ sprintf (tmp + strlen (tmp), "%02x", build_id[i]);
+ sprintf(tmp + strlen(tmp), "%02x", build_id[i]);
+ argvAdd(&files, tmp);
+ sprintf (tmp + strlen (tmp), ".debug");
+ sprintf(tmp + strlen(tmp), ".debug");
+ argvAdd(&files, tmp);
+
+ free (build_id);
+ free(build_id);
+ }
+
+ /* If there are debuginfo files for this package add a
@ -218,19 +215,19 @@ Create a debuginfo package for each subpackage.
+ if (files)
+ {
+ dbg = newPackage(NULL, spec->pool, &spec->packages);
+ headerNVR (pkg->header, &name, NULL, NULL);
+ headerNVR(pkg->header, &name, NULL, NULL);
+ /* Set name, summary and group. */
+ snprintf (tmp, 1024, "%s-debuginfo", name);
+ snprintf(tmp, 1024, "%s-debuginfo", name);
+ headerPutString(dbg->header, RPMTAG_NAME, tmp);
+ snprintf (tmp, 1024, "Debug information for package %s", name);
+ snprintf(tmp, 1024, "Debug information for package %s", name);
+ headerPutString(dbg->header, RPMTAG_SUMMARY, tmp);
+ snprintf (tmp, 1024, "This package provides debug information for package %s.\n"
+ snprintf(tmp, 1024, "This package provides debug information for package %s.\n"
+ "Debug information is useful when developing applications that use this\n"
+ "package or when debugging this package.", name);
+ headerPutString(dbg->header, RPMTAG_DESCRIPTION, tmp);
+ headerPutString(dbg->header, RPMTAG_GROUP, "Development/Debug");
+ /* Inherit other tags from parent. */
+ headerCopyTags (pkg->header, dbg->header, copyTagsForDebug);
+ headerCopyTags(pkg->header, dbg->header, copyTagsForDebug);
+
+ /* Add self-provides */
+ dbg->ds = rpmdsThis(dbg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL);
@ -255,7 +252,7 @@ Create a debuginfo package for each subpackage.
genSourceRpmName(spec);
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
@@ -2108,8 +2340,12 @@ rpmRC processBinaryFiles(rpmSpec spec, r
@@ -2055,8 +2284,12 @@ rpmRC processBinaryFiles(rpmSpec spec, r
rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
free(nvr);
@ -270,9 +267,9 @@ Create a debuginfo package for each subpackage.
goto exit;
a = headerGetString(pkg->header, RPMTAG_ARCH);
--- ./build/parseSpec.c.orig 2014-08-18 12:44:49.564619395 +0000
+++ ./build/parseSpec.c 2014-08-18 12:44:59.187569649 +0000
@@ -503,7 +503,7 @@ static void initSourceHeader(rpmSpec spe
--- ./build/parseSpec.c.orig 2014-09-17 11:00:45.295614365 +0000
+++ ./build/parseSpec.c 2014-09-17 11:01:56.371278963 +0000
@@ -507,7 +507,7 @@ static void initSourceHeader(rpmSpec spe
}
/* Add extra provides to package. */
@ -281,14 +278,14 @@ Create a debuginfo package for each subpackage.
{
const char *arch, *name;
char *evr, *isaprov;
--- ./build/rpmbuild_internal.h.orig 2014-08-18 12:43:17.461092324 +0000
+++ ./build/rpmbuild_internal.h 2014-08-18 12:44:25.578739914 +0000
@@ -425,6 +425,13 @@ int addReqProv(Package pkg, rpmTagVal ta
uint32_t index);
--- ./build/rpmbuild_internal.h.orig 2014-08-18 06:59:55.487105642 +0000
+++ ./build/rpmbuild_internal.h 2014-09-17 11:01:45.138331580 +0000
@@ -433,6 +433,13 @@ int addReqProv(Package pkg, rpmTagVal ta
/** \ingroup rpmbuild
+ * Add self-provides to package.
+ * @param pkg package
+ * @param pkg package
+ */
+RPM_GNUC_INTERNAL
+void addPackageProvides(Package pkg);
@ -297,8 +294,8 @@ Create a debuginfo package for each subpackage.
* Add rpmlib feature dependency.
* @param pkg package
* @param feature rpm feature name (i.e. "rpmlib(Foo)" for feature Foo)
--- ./macros.in.orig 2014-08-18 12:37:19.206933957 +0000
+++ ./macros.in 2014-08-18 12:37:30.648875217 +0000
--- ./macros.in.orig 2014-09-17 11:00:45.299614345 +0000
+++ ./macros.in 2014-09-17 11:00:50.013592123 +0000
@@ -186,24 +186,10 @@
# Template for debug information sub-package.
%debug_package \
@ -324,8 +321,8 @@ Create a debuginfo package for each subpackage.
%description debugsource\
This package provides debug sources for package %{name}.\
Debug sources are useful when developing applications that use this\
--- ./scripts/find-debuginfo.sh.orig 2014-08-18 12:37:19.201933983 +0000
+++ ./scripts/find-debuginfo.sh 2014-08-18 12:37:30.648875217 +0000
--- ./scripts/find-debuginfo.sh.orig 2014-09-17 11:00:45.293614374 +0000
+++ ./scripts/find-debuginfo.sh 2014-09-17 11:00:50.014592113 +0000
@@ -149,6 +149,11 @@ debug_link()
# Provide .2, .3, ... symlinks to all filename instances of this build-id.
make_id_dup_link()

View File

@ -1,25 +0,0 @@
--- ./lib/rpmtag.h.orig 2014-03-10 13:26:56.411058656 +0000
+++ ./lib/rpmtag.h 2014-03-10 13:27:49.545058562 +0000
@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
RPMTAG_PRETRANSPROG = 1153, /* s[] */
RPMTAG_POSTTRANSPROG = 1154, /* s[] */
RPMTAG_DISTTAG = 1155, /* s */
- RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */
-#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */
- RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */
- RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */
- RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */
-#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */
- RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */
- RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */
+ RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] */
+#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] */
+ RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] */
+ RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] */
+ RPMTAG_OLDENHANCESNAME = 1159, /* s[] */
+#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] */
+ RPMTAG_OLDENHANCESVERSION = 1160, /* s[] */
+ RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] */
RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
RPMTAG_CVSID = 1163, /* s (unimplemented) */
#define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */

View File

@ -1,7 +1,25 @@
SUSE specific kernel provides/requires scripts
--- scripts/find-provides.ksyms.orig 2013-07-12 14:08:40.000000000 +0000
+++ scripts/find-provides.ksyms 2013-07-12 14:08:54.000000000 +0000
--- ./scripts/Makefile.am.orig 2014-08-04 12:34:11.656463310 +0000
+++ ./scripts/Makefile.am 2014-08-04 12:34:15.063448350 +0000
@@ -16,6 +16,7 @@ EXTRA_DIST = \
tcl.req tgpg vpkg-provides.sh \
find-requires find-provides \
find-requires.php find-provides.php \
+ find-requires.ksyms find-provides.ksyms \
find-php-provides find-php-requires \
mono-find-requires mono-find-provides \
ocaml-find-requires.sh ocaml-find-provides.sh \
@@ -33,6 +34,7 @@ rpmconfig_SCRIPTS = \
check-buildroot check-rpaths check-rpaths-worker \
find-lang.sh find-requires find-provides \
perl.prov perl.req perldeps.pl pythondeps.sh osgideps.pl \
+ find-requires.ksyms find-provides.ksyms \
mono-find-requires mono-find-provides \
pkgconfigdeps.sh libtooldeps.sh \
ocaml-find-requires.sh ocaml-find-provides.sh \
--- ./scripts/find-provides.ksyms.orig 2014-08-04 12:34:15.062448349 +0000
+++ ./scripts/find-provides.ksyms 2014-08-04 12:34:15.062448349 +0000
@@ -0,0 +1,17 @@
+#! /bin/bash
+
@ -20,8 +38,8 @@ SUSE specific kernel provides/requires scripts
+ esac
+done \
+| sort -u
--- scripts/find-requires.ksyms.orig 2013-07-12 14:08:45.000000000 +0000
+++ scripts/find-requires.ksyms 2013-07-12 14:08:33.000000000 +0000
--- ./scripts/find-requires.ksyms.orig 2014-08-04 12:34:15.062448349 +0000
+++ ./scripts/find-requires.ksyms 2014-08-04 12:34:15.062448349 +0000
@@ -0,0 +1,15 @@
+#! /bin/bash
+
@ -38,21 +56,3 @@ SUSE specific kernel provides/requires scripts
+ esac
+done \
+| sort -u
--- scripts/Makefile.am
+++ scripts/Makefile.am
@@ -15,6 +15,7 @@
rpmdb_loadcvt rpm.daily rpm.log rpm.supp rpm2cpio.sh \
tcl.req tgpg vpkg-provides.sh \
find-requires.php find-provides.php \
+ find-requires.ksyms find-provides.ksyms \
find-php-provides find-php-requires \
mono-find-requires mono-find-provides \
ocaml-find-requires.sh ocaml-find-provides.sh \
@@ -30,6 +31,7 @@
check-buildroot check-rpaths check-rpaths-worker \
find-lang.sh \
perl.prov perl.req perldeps.pl pythondeps.sh osgideps.pl \
+ find-requires.ksyms find-provides.ksyms \
mono-find-requires mono-find-provides \
pkgconfigdeps.sh libtooldeps.sh \
ocaml-find-requires.sh ocaml-find-provides.sh \

View File

@ -1,109 +0,0 @@
--- ./build/rpmfc.c.orig 2014-02-20 12:56:59.836814478 +0000
+++ ./build/rpmfc.c 2014-02-20 12:58:18.886814338 +0000
@@ -59,6 +59,7 @@ struct rpmfc_s {
rpmstrPool pool; /*!< general purpose string storage */
rpmds provides; /*!< (no. provides) package provides */
rpmds requires; /*!< (no. requires) package requires */
+ rpmds supplements; /*!< (no. supplements) package supplements */
};
struct rpmfcTokens_s {
@@ -583,6 +584,22 @@ static int rpmfcHelperRequires(rpmfc fc,
RPMSENSE_FIND_REQUIRES, RPMTAG_REQUIRENAME);
}
+/**
+ * Run per-interpreter Supplements: dependency helper.
+ * @param fc file classifier
+ * @param nsdep class name for interpreter (e.g. "perl")
+ * @return 0
+ */
+static int rpmfcHelperSupplements(rpmfc fc, const char * nsdep)
+{
+ if (fc->skipReq)
+ return 0;
+
+ rpmfcHelper(fc, nsdep, "supplements", &fc->supplements, RPMSENSE_FIND_REQUIRES, RPMTAG_SUPPLEMENTNAME);
+
+ return 0;
+}
+
/* Only used for elf coloring and controlling RPMTAG_FILECLASS inclusion now */
static const struct rpmfcTokens_s rpmfcTokens[] = {
{ "directory", RPMFC_INCLUDE },
@@ -800,6 +817,8 @@ rpmfc rpmfcFree(rpmfc fc)
rpmdsFree(fc->provides);
rpmdsFree(fc->requires);
+ rpmdsFree(fc->supplements);
+
rpmstrPoolFree(fc->pool);
memset(fc, 0, sizeof(*fc)); /* trash and burn */
free(fc);
@@ -833,6 +852,11 @@ rpmds rpmfcRequires(rpmfc fc)
return (fc != NULL ? fc->requires : NULL);
}
+rpmds rpmfcSupplements(rpmfc fc)
+{
+ return (fc != NULL ? fc->supplements : NULL);
+}
+
rpmRC rpmfcApply(rpmfc fc)
{
const char * s;
@@ -853,6 +877,7 @@ rpmRC rpmfcApply(rpmfc fc)
for (ARGV_t fattr = fc->fattrs[fc->ix]; fattr && *fattr; fattr++) {
rpmfcHelperProvides(fc, *fattr);
rpmfcHelperRequires(fc, *fattr);
+ rpmfcHelperSupplements(fc, *fattr);
}
}
/* No more additions after this, freeze pool to minimize memory use */
@@ -897,6 +922,11 @@ rpmRC rpmfcApply(rpmfc fc)
dix = rpmdsFind(fc->requires, ds);
rpmdsFree(ds);
break;
+ case 'S':
+ ds = rpmdsSingle(RPMTAG_SUPPLEMENTNAME, N, EVR, Flags);
+ dix = rpmdsFind(fc->supplements, ds);
+ ds = rpmdsFree(ds);
+ break;
}
if (dix < 0)
@@ -1380,6 +1410,18 @@ rpmRC rpmfcGenerateDepends(const rpmSpec
}
}
+ /* Add Supplements: */
+ if (!fc->skipReq) {
+ rpmds pi = rpmdsInit(fc->supplements);
+ while (rpmdsNext(pi) >= 0) {
+ rpmsenseFlags flags = rpmdsFlags(pi);
+
+ headerPutString(pkg->header, RPMTAG_SUPPLEMENTNAME, rpmdsN(pi));
+ headerPutString(pkg->header, RPMTAG_SUPPLEMENTVERSION, rpmdsEVR(pi));
+ headerPutUint32(pkg->header, RPMTAG_SUPPLEMENTFLAGS, &flags, 1);
+ }
+ }
+
/* Add dependency dictionary(#dependencies) */
if (rpmtdFromArgi(&td, RPMTAG_DEPENDSDICT, fc->ddictx)) {
headerPut(pkg->header, &td, HEADERPUT_DEFAULT);
--- ./build/rpmfc.h.orig 2012-11-07 12:55:24.000000000 +0000
+++ ./build/rpmfc.h 2014-02-20 12:57:04.466814469 +0000
@@ -106,6 +106,13 @@ rpmds rpmfcProvides(rpmfc fc);
*/
rpmds rpmfcRequires(rpmfc fc);
+/** \ingroup rpmfc
+ * Retrieve file classification supplements
+ * @param fc file classifier
+ * @return rpmds dependency set of fc requires
+ */
+rpmds rpmfcSupplements(rpmfc fc);
+
#ifdef __cplusplus
}
#endif

View File

@ -1,27 +1,3 @@
Index: autodeps/linux.prov
===================================================================
--- autodeps/linux.prov.orig 2011-06-08 13:28:10.000000000 +0200
+++ autodeps/linux.prov 2011-06-08 13:28:51.755445342 +0200
@@ -11,6 +11,7 @@ solist=($(printf "%s\n" "${filelist[@]}"
pythonlist=
tcllist=
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
+firmwarelist=($(printf "%s\n" "${filelist[@]}" | grep "/lib/firmware/"))
#
# --- Alpha does not mark 64bit dependencies
@@ -59,6 +60,11 @@ done | sort -u
printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.prov | sort -u
#
+# --- firmware files
+[ -x /usr/lib/rpm/firmware.prov -a -n "$firmwarelist" ] &&
+ printf "%s\n" "${firmwarelist[@]}" | /usr/lib/rpm/firmware.prov | sort -u
+
+#
# --- Mono exes/dlls
: ${MONO_PREFIX=/usr}
if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
Index: scripts/firmware.prov
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000

View File

@ -1,54 +0,0 @@
Index: autodeps/linux.prov
===================================================================
--- autodeps/linux.prov.orig 2011-06-08 13:37:46.951974468 +0200
+++ autodeps/linux.prov 2011-06-08 13:37:46.967972960 +0200
@@ -15,6 +15,8 @@ pythonlist=($(printf "%s\n" "${filelist[
tcllist=
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
firmwarelist=($(printf "%s\n" "${filelist[@]}" | grep "/lib/firmware/"))
+pkgconfiglist=($(printf "%s\n" "${filelist[@]}" | egrep '\.pc$'))
+fontlist=($(printf "%s\n" "${filelist[@]}" | egrep -i "/usr/share/fonts/.*\.(ttf|otf|pfa)$"))
#
# --- Alpha does not mark 64bit dependencies
@@ -80,6 +82,16 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo
fi
#
+# --- pkgconfig provides
+[ -x /usr/lib/rpm/pkgconfigdeps.sh -a -n "$pkgconfiglist" ] &&
+ printf "%s\n" "${pkgconfiglist[@]}" | /usr/lib/rpm/pkgconfigdeps.sh -P | sort -u
+
+#
+# --- font provides
+[ -x /usr/lib/rpm/fontconfig.prov -a -n "$fontlist" ] &&
+ printf "%s\n" "${fontlist[@]}" | /usr/lib/rpm/fontconfig.prov | sort -u
+
+#
# --- Kernel module exported symbols
[ -x /usr/lib/rpm/find-provides.ksyms ] &&
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
Index: autodeps/linux.req
===================================================================
--- autodeps/linux.req.orig 2011-06-08 13:37:46.951974468 +0200
+++ autodeps/linux.req 2011-06-08 13:37:46.968972865 +0200
@@ -34,6 +34,7 @@ perllist=()
pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..'))
tcllist=()
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
+pkgconfiglist=($(printf "%s\n" "${filelist[@]}" | egrep '\.pc$'))
#
# --- Alpha does not mark 64bit dependencies
@@ -143,6 +144,11 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo
fi
#
+# --- pkgconfig requires
+[ -x /usr/lib/rpm/pkgconfigdeps.sh -a -n "$pkgconfiglist" ] &&
+ printf "%s\n" "${pkgconfiglist[@]}" | /usr/lib/rpm/pkgconfigdeps.sh -R | sort -u
+
+#
# --- Kernel module imported symbols
[ -x ${0%/*}/find-requires.ksyms ] &&
printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@"

View File

@ -1,11 +1,11 @@
--- macros.in.orig 2012-04-18 13:48:07.000000000 +0000
+++ macros.in 2012-04-18 13:47:41.000000000 +0000
@@ -515,7 +515,7 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.ex
--- ./macros.in.orig 2014-08-04 13:04:51.646383733 +0000
+++ ./macros.in 2014-08-04 13:04:54.687369977 +0000
@@ -490,7 +490,7 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.ex
# %__myattr_exclude_magic exclude by magic regex
# %__myattr_exclude_path exclude by path regex
#
-%_fileattrsdir %{_rpmconfigdir}/fileattrs
+%_fileattrsdir %{__set_helper_env}%{_rpmconfigdir}/fileattrs
#==============================================================================
# ---- Database configuration macros.
# This macro defines how much space (in bytes) in package should be
# reserved for gpg signatures during building of a package. If this space is

View File

@ -1,10 +1,10 @@
--- ./lib/rpmrc.c.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./lib/rpmrc.c 2014-02-20 12:37:28.209816551 +0000
@@ -83,10 +83,12 @@ struct rpmOption {
--- ./lib/rpmrc.c.orig 2014-07-03 15:11:48.572096075 +0000
+++ ./lib/rpmrc.c 2014-09-17 12:04:27.330717791 +0000
@@ -79,10 +79,12 @@ struct rpmOption {
int localize;
};
+#if defined(__linux__) && defined(__powerpc__)
+#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP)))
static struct rpmat_s {
const char *platform;
uint64_t hwcap;
@ -13,21 +13,21 @@
typedef struct defaultEntry_s {
char * name;
@@ -914,7 +916,7 @@ static int is_geode(void)
@@ -936,7 +938,7 @@ static int is_geode(void)
#endif
-#if defined(__linux__)
+#if defined(__linux__) && defined(__powerpc__)
+#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP)))
/**
* Populate rpmat structure with auxv values
*/
@@ -971,7 +973,7 @@ static void defaultMachine(const char **
@@ -993,7 +995,7 @@ static void defaultMachine(rpmrcCtx ctx,
canonEntry canon;
int rc;
-#if defined(__linux__)
+#if defined(__linux__) && defined(__powerpc__)
+#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP)))
/* Populate rpmat struct with hw info */
read_auxv();
#endif

View File

@ -1,15 +1,3 @@
--- ./autodeps/linux.prov.orig 2014-02-20 12:52:34.012814948 +0000
+++ ./autodeps/linux.prov 2014-02-20 12:52:40.088814937 +0000
@@ -101,4 +101,9 @@ fi
[ -x /usr/lib/rpm/gstreamer-provides ] &&
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u
+#
+# --- Provides of sysvinit scripts
+[ -x /usr/lib/rpm/sysvinitdeps.sh ] &&
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/sysvinitdeps.sh -P | sort -u
+
exit 0
--- ./scripts/Makefile.am.orig 2014-02-20 12:52:33.971814948 +0000
+++ ./scripts/Makefile.am 2014-02-20 12:52:40.089814937 +0000
@@ -21,6 +21,7 @@ EXTRA_DIST = \

View File

@ -1,5 +1,5 @@
--- ./macros.in.orig 2013-06-10 15:55:10.000000000 +0000
+++ ./macros.in 2013-07-12 11:53:07.000000000 +0000
--- ./macros.in.orig 2014-06-27 07:25:43.624470700 +0000
+++ ./macros.in 2014-08-04 12:38:02.067474055 +0000
@@ -185,22 +185,22 @@
# Template for debug information sub-package.
@ -70,7 +70,7 @@
#
# Path to file attribute classifications for automatic dependency
@@ -512,10 +519,10 @@ package or when debugging this package.\
@@ -519,10 +526,10 @@ package or when debugging this package.\
# Misc BDB tuning options
%__dbi_other mp_mmapsize=128Mb mp_size=1Mb
@ -83,7 +83,7 @@
#==============================================================================
# ---- GPG/PGP/PGP5 signature macros.
@@ -816,7 +823,7 @@ package or when debugging this package.\
@@ -823,7 +830,7 @@ package or when debugging this package.\
%_build_vendor %{_host_vendor}
%_build_os %{_host_os}
%_host @host@
@ -92,7 +92,7 @@
%_host_cpu @host_cpu@
%_host_vendor @host_vendor@
%_host_os @host_os@
@@ -980,6 +987,183 @@ done \
@@ -991,6 +998,183 @@ done \
%python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
%python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")
@ -276,18 +276,18 @@
#------------------------------------------------------------------------------
# arch macro for all Intel i?86 compatibile processors
# (Note: This macro (and it's analogues) will probably be obsoleted when
@@ -990,7 +1174,9 @@ done \
@@ -1001,7 +1185,9 @@ done \
#------------------------------------------------------------------------------
# arch macro for all supported ARM processors
-%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l
+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl
+%arml armv3l armv4l armv5l armv5tel armv6l armv7l armv7hl
+%armb armv4b armv5b armv5teb
-%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl
+%arml armv3l armv4l armv5l armv5tel armv6l armv7l armv7hl armv7hnl
+%armb armv4b armv5b armv5teb
#------------------------------------------------------------------------------
# arch macro for all supported Sparc processors
@@ -1110,3 +1296,26 @@ end}
@@ -1127,3 +1313,26 @@ end}
# \endverbatim
#*/

View File

@ -1,9 +1,9 @@
Also compare the name and not only the version when checking if
Also compare the name/arch and not only the version when checking if
two packages are the same. rh#104066
--- ./lib/depends.c.orig 2012-06-01 10:07:12.000000000 +0000
+++ ./lib/depends.c 2012-06-01 10:16:13.000000000 +0000
@@ -144,6 +144,24 @@ static int skipColor(rpm_color_t tscolor
--- ./lib/depends.c.orig 2014-06-26 06:51:54.163820067 +0000
+++ ./lib/depends.c 2014-08-04 12:22:24.030575105 +0000
@@ -158,6 +158,24 @@ static int skipColor(rpm_color_t tscolor
return tscolor && color && ocolor && !(color & ocolor);
}
@ -26,16 +26,14 @@ two packages are the same. rh#104066
+}
+
/* Add erase elements for older packages of same color (if any). */
static int addUpgradeErasures(rpmts ts, rpm_color_t tscolor,
static int addSelfErasures(rpmts ts, rpm_color_t tscolor, int op,
rpmte p, rpm_color_t hcolor, Header h)
@@ -157,8 +175,8 @@ static int addUpgradeErasures(rpmts ts,
@@ -172,7 +190,7 @@ static int addSelfErasures(rpmts ts, rpm
if (skipColor(tscolor, hcolor, headerGetNumber(oh, RPMTAG_HEADERCOLOR)))
continue;
- /* Skip packages that contain identical NEVR. */
- if (rpmVersionCompare(h, oh) == 0)
+ /* Skip packages that contain identical NEVRA. */
+ if (rpmNameVersionCompare(h, oh) == 0)
continue;
- cmp = rpmVersionCompare(h, oh);
+ cmp = rpmNameVersionCompare(h, oh);
if (removePackage(ts, oh, p)) {
/* On upgrade, skip packages that contain identical NEVR. */
if ((op == RPMTE_UPGRADE) && (cmp == 0))

View File

@ -1,462 +0,0 @@
--- ./build/files.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/files.c 2014-02-20 14:47:48.107802710 +0000
@@ -1642,6 +1642,7 @@ static rpmRC readFilesManifest(rpmSpec s
char *fn, buf[BUFSIZ];
FILE *fd = NULL;
rpmRC rc = RPMRC_FAIL;
+ unsigned int nlines = 0;
if (*path == '/') {
fn = rpmGetPath(path, NULL);
@@ -1657,14 +1658,19 @@ static rpmRC readFilesManifest(rpmSpec s
}
while (fgets(buf, sizeof(buf), fd)) {
- handleComments(buf);
+ if (handleComments(buf))
+ continue;
if (expandMacros(spec, spec->macros, buf, sizeof(buf))) {
rpmlog(RPMLOG_ERR, _("line: %s\n"), buf);
goto exit;
}
argvAdd(&(pkg->fileList), buf);
+ nlines++;
}
+ if (nlines == 0)
+ rpmlog(RPMLOG_WARNING, _("Empty %%files file %s\n"), fn);
+
if (ferror(fd))
rpmlog(RPMLOG_ERR, _("Error reading %%files file %s: %m\n"), fn);
else
--- ./build/pack.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/pack.c 2014-02-20 14:47:48.107802710 +0000
@@ -228,8 +228,10 @@ static rpmTagVal depevrtags[] = {
RPMTAG_CONFLICTVERSION,
RPMTAG_ORDERVERSION,
RPMTAG_TRIGGERVERSION,
- RPMTAG_SUGGESTSVERSION,
- RPMTAG_ENHANCESVERSION,
+ RPMTAG_SUGGESTVERSION,
+ RPMTAG_ENHANCEVERSION,
+ RPMTAG_RECOMMENDVERSION,
+ RPMTAG_SUPPLEMENTVERSION,
0
};
--- ./build/parsePreamble.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/parsePreamble.c 2014-02-20 14:47:48.108802710 +0000
@@ -785,6 +785,10 @@ static rpmRC handlePreambleTag(rpmSpec s
}
/* fallthrough */
case RPMTAG_PREREQ:
+ case RPMTAG_RECOMMENDFLAGS:
+ case RPMTAG_SUGGESTFLAGS:
+ case RPMTAG_SUPPLEMENTFLAGS:
+ case RPMTAG_ENHANCEFLAGS:
case RPMTAG_CONFLICTFLAGS:
case RPMTAG_OBSOLETEFLAGS:
case RPMTAG_PROVIDEFLAGS:
@@ -886,6 +890,10 @@ static struct PreambleRec_s const preamb
{RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")},
{RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")},
{RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")},
+ {RPMTAG_RECOMMENDFLAGS, 0, 0, LEN_AND_STR("recommends")},
+ {RPMTAG_SUGGESTFLAGS, 0, 0, LEN_AND_STR("suggests")},
+ {RPMTAG_SUPPLEMENTFLAGS, 0, 0, LEN_AND_STR("supplements")},
+ {RPMTAG_ENHANCEFLAGS, 0, 0, LEN_AND_STR("enhances")},
{RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")},
{RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")},
{RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")},
--- ./build/parseReqs.c.orig 2014-02-05 13:06:21.000000000 +0000
+++ ./build/parseReqs.c 2014-02-20 14:47:48.108802710 +0000
@@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
nametag = RPMTAG_REQUIRENAME;
tagflags |= RPMSENSE_ANY;
break;
+ case RPMTAG_RECOMMENDFLAGS:
+ nametag = RPMTAG_RECOMMENDNAME;
+ break;
+ case RPMTAG_SUGGESTFLAGS:
+ nametag = RPMTAG_SUGGESTNAME;
+ break;
+ case RPMTAG_SUPPLEMENTFLAGS:
+ nametag = RPMTAG_SUPPLEMENTNAME;
+ break;
+ case RPMTAG_ENHANCEFLAGS:
+ nametag = RPMTAG_ENHANCENAME;
+ break;
case RPMTAG_PROVIDEFLAGS:
nametag = RPMTAG_PROVIDENAME;
break;
--- ./build/parseSpec.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/parseSpec.c 2014-02-20 14:47:48.108802710 +0000
@@ -102,11 +102,14 @@ static int matchTok(const char *token, c
return rc;
}
-void handleComments(char *s)
+int handleComments(char *s)
{
SKIPSPACE(s);
- if (*s == '#')
+ if (*s == '#') {
*s = '\0';
+ return 1;
+ }
+ return 0;
}
/* Push a file to spec's file stack, return the newly pushed entry */
--- ./build/reqprov.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/reqprov.c 2014-02-20 14:47:48.108802710 +0000
@@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal ta
extra = Flags & RPMSENSE_TRIGGER;
dsp = &pkg->triggers;
break;
+ case RPMTAG_RECOMMENDNAME:
+ versiontag = RPMTAG_RECOMMENDVERSION;
+ flagtag = RPMTAG_RECOMMENDFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->recommends;
+ break;
+ case RPMTAG_SUGGESTNAME:
+ versiontag = RPMTAG_SUGGESTVERSION;
+ flagtag = RPMTAG_SUGGESTFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->suggests;
+ break;
+ case RPMTAG_SUPPLEMENTNAME:
+ versiontag = RPMTAG_SUPPLEMENTVERSION;
+ flagtag = RPMTAG_SUPPLEMENTFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->supplements;
+ break;
+ case RPMTAG_ENHANCENAME:
+ versiontag = RPMTAG_ENHANCEVERSION;
+ flagtag = RPMTAG_ENHANCEFLAGS;
+ extra = Flags & _ALL_REQUIRES_MASK;
+ dsp = &pkg->enhances;
+ break;
case RPMTAG_REQUIRENAME:
default:
tagN = RPMTAG_REQUIRENAME;
--- ./build/rpmbuild_internal.h.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/rpmbuild_internal.h 2014-02-20 14:47:48.109802710 +0000
@@ -93,6 +93,10 @@ struct Package_s {
rpmds ds; /*!< Requires: N = EVR */
rpmds requires;
rpmds provides;
+ rpmds recommends;
+ rpmds suggests;
+ rpmds supplements;
+ rpmds enhances;
rpmds conflicts;
rpmds obsoletes;
rpmds triggers;
--- ./build/rpmbuild_misc.h.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/rpmbuild_misc.h 2014-02-20 14:47:48.109802710 +0000
@@ -12,9 +12,10 @@ extern "C" {
/** \ingroup rpmbuild
* Truncate comment lines.
* @param s skip white space, truncate line at '#'
+ * @return 1 on comment lines, 0 otherwise
*/
RPM_GNUC_INTERNAL
-void handleComments(char * s);
+int handleComments(char * s);
/** \ingroup rpmstring
*/
--- ./build/spec.c.orig 2014-02-05 13:04:01.000000000 +0000
+++ ./build/spec.c 2014-02-20 14:47:48.109802710 +0000
@@ -137,6 +137,11 @@ static Package freePackage(Package pkg)
pkg->ds = rpmdsFree(pkg->ds);
pkg->requires = rpmdsFree(pkg->requires);
pkg->provides = rpmdsFree(pkg->provides);
+ pkg->recommends = rpmdsFree(pkg->recommends);
+ pkg->suggests = rpmdsFree(pkg->suggests);
+ pkg->supplements = rpmdsFree(pkg->supplements);
+ pkg->enhances = rpmdsFree(pkg->enhances);
+
pkg->conflicts = rpmdsFree(pkg->conflicts);
pkg->obsoletes = rpmdsFree(pkg->obsoletes);
pkg->triggers = rpmdsFree(pkg->triggers);
--- ./lib/rpmds.c.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./lib/rpmds.c 2014-02-20 14:47:48.110802710 +0000
@@ -54,6 +54,22 @@ static int dsType(rpmTagVal tag,
t = "Requires";
evr = RPMTAG_REQUIREVERSION;
f = RPMTAG_REQUIREFLAGS;
+ } else if (tag == RPMTAG_SUPPLEMENTNAME) {
+ t = "Supplements";
+ evr = RPMTAG_SUPPLEMENTVERSION;
+ f = RPMTAG_SUPPLEMENTFLAGS;
+ } else if (tag == RPMTAG_ENHANCENAME) {
+ t = "Enhances";
+ evr = RPMTAG_ENHANCEVERSION;
+ f = RPMTAG_ENHANCEFLAGS;
+ } else if (tag == RPMTAG_RECOMMENDNAME) {
+ t = "Recommends";
+ evr = RPMTAG_RECOMMENDVERSION;
+ f = RPMTAG_RECOMMENDFLAGS;
+ } else if (tag == RPMTAG_SUGGESTNAME) {
+ t = "Suggests";
+ evr = RPMTAG_SUGGESTVERSION;
+ f = RPMTAG_SUGGESTFLAGS;
} else if (tag == RPMTAG_CONFLICTNAME) {
t = "Conflicts";
evr = RPMTAG_CONFLICTVERSION;
--- ./lib/rpmtag.h.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./lib/rpmtag.h 2014-02-20 14:47:48.110802710 +0000
@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
RPMTAG_PRETRANSPROG = 1153, /* s[] */
RPMTAG_POSTTRANSPROG = 1154, /* s[] */
RPMTAG_DISTTAG = 1155, /* s */
- RPMTAG_SUGGESTSNAME = 1156, /* s[] extension (unimplemented) */
-#define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] (unimplemented) */
- RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension (unimplemented) */
- RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension (unimplemented) */
- RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder (unimplemented) */
-#define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] (unimplemented) */
- RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder (unimplemented) */
- RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder (unimplemented) */
+ RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */
+#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */
+ RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */
+ RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */
+ RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */
+#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */
+ RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */
+ RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */
RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
RPMTAG_CVSID = 1163, /* s (unimplemented) */
#define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
@@ -261,6 +261,7 @@ typedef enum rpmTag_e {
RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */
RPMTAG_DBINSTANCE = 1195, /* i extension */
RPMTAG_NVRA = 1196, /* s extension */
+
/* tags 1997-4999 reserved */
RPMTAG_FILENAMES = 5000, /* s[] extension */
RPMTAG_FILEPROVIDE = 5001, /* s[] extension */
@@ -307,6 +308,26 @@ typedef enum rpmTag_e {
RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */
RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */
RPMTAG_FILENLINKS = 5045, /* i[] extension */
+ RPMTAG_RECOMMENDNAME = 5046, /* s[] */
+#define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */
+ RPMTAG_RECOMMENDVERSION = 5047, /* s[] */
+ RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */
+ RPMTAG_SUGGESTNAME = 5049, /* s[] */
+#define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */
+ RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */
+ RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */
+ RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */
+#define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */
+ RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */
+ RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */
+ RPMTAG_ENHANCENAME = 5055, /* s[] */
+#define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */
+ RPMTAG_ENHANCEVERSION = 5056, /* s[] */
+ RPMTAG_ENHANCEFLAGS = 5057, /* i[] */
+ RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */
+ RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */
+ RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */
+ RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */
RPMTAG_FIRSTFREE_TAG /*!< internal */
} rpmTag;
--- ./lib/tagexts.c.orig 2012-11-07 12:55:24.000000000 +0000
+++ ./lib/tagexts.c 2014-02-20 14:47:48.110802710 +0000
@@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpm
return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME);
}
+static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME);
+}
+
+static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME);
+}
+
+static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME);
+}
+
+static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME);
+}
+
static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME);
@@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmH
{ RPMTAG_EPOCHNUM, epochnumTag },
{ RPMTAG_INSTFILENAMES, instfilenamesTag },
{ RPMTAG_REQUIRENEVRS, requirenevrsTag },
+ { RPMTAG_RECOMMENDNEVRS, recommendnevrsTag},
+ { RPMTAG_SUGGESTNEVRS, suggestnevrsTag},
+ { RPMTAG_SUPPLEMENTNEVRS, supplementnevrsTag},
+ { RPMTAG_ENHANCENEVRS, enhancenevrsTag},
{ RPMTAG_PROVIDENEVRS, providenevrsTag },
{ RPMTAG_OBSOLETENEVRS, obsoletenevrsTag },
{ RPMTAG_CONFLICTNEVRS, conflictnevrsTag },
--- ./rpmpopt.in.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./rpmpopt.in 2014-02-20 14:47:48.110802710 +0000
@@ -67,6 +67,19 @@ rpm alias --requires --qf \
--POPTdesc=$"list capabilities required by package(s)"
rpm alias -R --requires
+rpm alias --recommends --qf \
+ "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
+ --POPTdesc=$"list capabilities recommended by package(s)"
+rpm alias --suggests --qf \
+ "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
+ --POPTdesc=$"list capabilities suggested by package(s)"
+rpm alias --supplements --qf \
+ "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
+ --POPTdesc=$"list capabilities supplemented by package(s)"
+rpm alias --enhances --qf \
+ "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
+ --POPTdesc=$"list capabilities enhanced by package(s)"
+
rpm alias --info --qf '\
Name : %{NAME}\n\
%|EPOCH?{Epoch : %{EPOCH}\n}|\
--- ./tests/data/SPECS/deptest.spec.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./tests/data/SPECS/deptest.spec 2014-02-20 14:47:48.110802710 +0000
@@ -10,6 +10,10 @@ BuildArch: noarch
%{?provs:Provides: %{provs}}
%{?cfls:Conflicts: %{cfls}}
%{?obs:Obsoletes: %{obs}}
+%{?recs:Recommends: %{recs}}
+%{?sugs:Suggests: %{sugs}}
+%{?sups:Supplements: %{sups}}
+%{?ens:Enhances: %{ens}}
%description
%{summary}
--- ./tests/rpmbuild.at.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./tests/rpmbuild.at 2014-02-20 14:47:48.110802710 +0000
@@ -185,3 +185,31 @@ lrwxrwxrwx /opt/globtest/linkgood
],
[])
AT_CLEANUP
+
+# ------------------------------
+# Check if weak and reverse requires can be built
+AT_SETUP([Weak and reverse requires])
+AT_KEYWORDS([build])
+AT_CHECK([
+
+runroot rpmbuild -bb --quiet \
+ --define "pkg weakdeps" \
+ --define "recs foo > 1.2.3" \
+ --define "sugs bar >= 0.1.2" \
+ --define "sups baz" \
+ --define "ens zap = 3" \
+ /data/SPECS/deptest.spec
+
+runroot rpm -qp --recommends /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
+runroot rpm -qp --suggests /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
+runroot rpm -qp --supplements /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
+runroot rpm -qp --enhances /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
+],
+[0],
+[foo > 1.2.3
+bar >= 0.1.2
+baz
+zap = 3
+],
+[ignore])
+AT_CLEANUP
--- ./tests/rpmdb.at.orig 2014-02-05 13:04:02.000000000 +0000
+++ ./tests/rpmdb.at 2014-02-20 14:47:48.111802710 +0000
@@ -103,7 +103,7 @@ AT_CLEANUP
# ------------------------------
# reinstall a noarch package (with no files)
-AT_SETUP([rpm -U --replacepkgs])
+AT_SETUP([rpm -U --replacepkgs 1])
AT_KEYWORDS([rpmdb install])
AT_CHECK([
@@ -124,6 +124,28 @@ runroot rpm -i "${tpkg}" &&
AT_CLEANUP
# ------------------------------
+# reinstall a package with different file policies
+AT_SETUP([rpm -U --replacepkgs 2])
+AT_KEYWORDS([rpmdb install])
+
+AT_CHECK([
+AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
+RPMDB_CLEAR
+RPMDB_INIT
+
+tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
+
+runroot rpm -U --nodeps --ignorearch "${tpkg}" &&
+ runroot rpm -U --nodeps --ignorearch --nodocs --replacepkgs "${tpkg}" &&
+ runroot rpm -e hello
+test -d "${RPMTEST}"/usr/share/doc/hello-2.0
+],
+[1],
+[],
+[])
+
+AT_CLEANUP
+# ------------------------------
# install a package into a local rpmdb
# * Shall only work with relocation
# * Use --ignorearch because we don't know the arch
--- ./tests/rpmgeneral.at.orig 2012-11-07 12:55:24.000000000 +0000
+++ ./tests/rpmgeneral.at 2014-02-20 14:47:48.111802710 +0000
@@ -79,6 +79,11 @@ DISTTAG
DISTURL
DSAHEADER
E
+ENHANCEFLAGS
+ENHANCENAME
+ENHANCENEVRS
+ENHANCES
+ENHANCEVERSION
EPOCH
EPOCHNUM
EVR
@@ -199,6 +204,11 @@ PROVIDES
PROVIDEVERSION
PUBKEYS
R
+RECOMMENDFLAGS
+RECOMMENDNAME
+RECOMMENDNEVRS
+RECOMMENDS
+RECOMMENDVERSION
RECONTEXTS
RELEASE
REMOVETID
@@ -219,7 +229,17 @@ SOURCE
SOURCEPACKAGE
SOURCEPKGID
SOURCERPM
+SUGGESTFLAGS
+SUGGESTNAME
+SUGGESTNEVRS
+SUGGESTS
+SUGGESTVERSION
SUMMARY
+SUPPLEMENTFLAGS
+SUPPLEMENTNAME
+SUPPLEMENTNEVRS
+SUPPLEMENTS
+SUPPLEMENTVERSION
TRIGGERCONDS
TRIGGERFLAGS
TRIGGERINDEX

View File

@ -1,115 +0,0 @@
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Wed Apr 10 11:31:41 2013 +0300
Add scriptlet-specific disablers for %pretrans and %posttrans
- Previously %pretrans and %posttrans were tied to --nopre and --nopost
disablers (since commit 0b2d7775c5e828652e45829f551352b93890bbc8)
because back then, there was no room new disablers in rpmtransFlags
bitfield. This is no longer the case as of rpm >= 4.9.x where
a bunch of obsolete flags were axed, so we can now add specific
--nopretrans and --noposttrans switches + corresponding flags.
- This is obviously a behavior change as --nopre and --nopost no
longer affect %pretrans and %posttrans, but --noscripts behavior
remains the same.
--- doc/rpm.8
+++ doc/rpm.8
@@ -278,6 +278,10 @@ packages would normally be reordered to satisfy dependencies.
\fB--nopreun\fR
.TP
\fB--nopostun\fR
+.TP
+\fB--nopretrans\fR
+.TP
+\fB--noposttrans\fR
Don't execute the scriptlet of the same name.
The \fB--noscripts\fR option is equivalent to
@@ -285,12 +289,16 @@ The \fB--noscripts\fR option is equivalent to
\fB--nopost\fR
\fB--nopreun\fR
\fB--nopostun\fR
+\fB--nopretrans\fR
+\fB--noposttrans\fR
and turns off the execution of the corresponding
\fB%pre\fR,
\fB%post\fR,
-\fB%preun\fR, and
+\fB%preun\fR,
\fB%postun\fR
+\fB%pretrans\fR, and
+\fB%posttrans\fR
scriptlet(s).
.TP
\fB--notriggers\fR
--- lib/poptI.c
+++ lib/poptI.c
@@ -202,6 +202,12 @@ struct poptOption rpmInstallPoptTable[] = {
{ "nopostun", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &rpmIArgs.transFlags,
RPMTRANS_FLAG_NOPOSTUN,
N_("do not execute %%postun scriptlet (if any)"), NULL },
+ { "nopretrans", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &rpmIArgs.transFlags,
+ RPMTRANS_FLAG_NOPRETRANS,
+ N_("do not execute %%pretrans scriptlet (if any)"), NULL },
+ { "noposttrans", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &rpmIArgs.transFlags,
+ RPMTRANS_FLAG_NOPOSTTRANS,
+ N_("do not execute %%posttrans scriptlet (if any)"), NULL },
{ "notriggers", '\0', POPT_BIT_SET, &rpmIArgs.transFlags, _noTransTriggers,
N_("do not execute any scriptlet(s) triggered by this package"), NULL},
--- lib/rpmts.h
+++ lib/rpmts.h
@@ -45,7 +45,8 @@ enum rpmtransFlags_e {
RPMTRANS_FLAG_NOPREUN = (1 << 21), /*!< from --nopreun */
RPMTRANS_FLAG_NOPOSTUN = (1 << 22), /*!< from --nopostun */
RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), /*!< from --notriggerpostun */
- /* bits 24-25 unused */
+ RPMTRANS_FLAG_NOPRETRANS = (1 << 24), /*!< from --nopretrans */
+ RPMTRANS_FLAG_NOPOSTTRANS = (1 << 25), /*!< from --noposttrans */
RPMTRANS_FLAG_NOCOLLECTIONS = (1 << 26), /*!< from --nocollections */
RPMTRANS_FLAG_NOMD5 = (1 << 27), /*!< from --nomd5 */
RPMTRANS_FLAG_NOFILEDIGEST = (1 << 27), /*!< from --nofiledigest (alias to --nomd5) */
@@ -60,7 +61,9 @@ typedef rpmFlags rpmtransFlags;
( RPMTRANS_FLAG_NOPRE | \
RPMTRANS_FLAG_NOPOST | \
RPMTRANS_FLAG_NOPREUN | \
- RPMTRANS_FLAG_NOPOSTUN \
+ RPMTRANS_FLAG_NOPOSTUN | \
+ RPMTRANS_FLAG_NOPRETRANS | \
+ RPMTRANS_FLAG_NOPOSTTRANS \
)
#define _noTransTriggers \
--- lib/transaction.c
+++ lib/transaction.c
@@ -1496,7 +1496,7 @@ int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
/* Run pre-transaction scripts, but only if there are no known
* problems up to this point and not disabled otherwise. */
- if (!((rpmtsFlags(ts) & (RPMTRANS_FLAG_BUILD_PROBS|RPMTRANS_FLAG_NOPRE))
+ if (!((rpmtsFlags(ts) & (RPMTRANS_FLAG_BUILD_PROBS|RPMTRANS_FLAG_NOPRETRANS))
|| (rpmpsNumProblems(tsprobs)))) {
rpmlog(RPMLOG_DEBUG, "running pre-transaction scripts\n");
runTransScripts(ts, PKG_PRETRANS);
@@ -1532,7 +1532,7 @@ int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
rc = rpmtsProcess(ts) ? -1 : 0;
/* Run post-transaction scripts unless disabled */
- if (!(rpmtsFlags(ts) & (RPMTRANS_FLAG_NOPOST))) {
+ if (!(rpmtsFlags(ts) & (RPMTRANS_FLAG_NOPOSTTRANS))) {
rpmlog(RPMLOG_DEBUG, "running post-transaction scripts\n");
runTransScripts(ts, PKG_POSTTRANS);
}
--- python/rpmmodule.c
+++ python/rpmmodule.c
@@ -414,6 +414,8 @@ static int initModule(PyObject *m)
REGISTER_ENUM(RPMTRANS_FLAG_NOPREUN);
REGISTER_ENUM(RPMTRANS_FLAG_NOPOSTUN);
REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERPOSTUN);
+ REGISTER_ENUM(RPMTRANS_FLAG_NOPRETRANS);
+ REGISTER_ENUM(RPMTRANS_FLAG_NOPOSTTRANS);
REGISTER_ENUM(RPMTRANS_FLAG_NOMD5);
REGISTER_ENUM(RPMTRANS_FLAG_NOFILEDIGEST);
REGISTER_ENUM(RPMTRANS_FLAG_NOSUGGEST);

View File

@ -1,7 +1,5 @@
SUSE specific platform changes.
--- ./platform.in.orig 2014-09-05 11:49:01.000000000 +0000
+++ ./platform.in 2014-09-08 16:43:35.250660580 +0000
--- ./platform.in.orig 2014-06-26 06:51:54.822818260 +0000
+++ ./platform.in 2014-08-04 12:38:55.389245494 +0000
@@ -29,7 +29,7 @@
%_exec_prefix @exec_prefix@
%_bindir @bindir@
@ -20,7 +18,7 @@ SUSE specific platform changes.
# Deprecated misspelling, present for backwards compatibility.
%_initrddir %{_initddir}
%_rundir @RUNDIR@
@@ -79,3 +79,21 @@
@@ -83,3 +83,21 @@
@apple@#
@apple@%_use_internal_dependency_generator 0
@apple@%__so dylib

View File

@ -1,26 +0,0 @@
--- lib/psm.c.orig 2013-07-12 12:25:38.000000000 +0000
+++ lib/psm.c 2013-07-12 12:27:01.000000000 +0000
@@ -807,6 +807,7 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
case PSM_PROCESS:
if (psm->goal == PKG_INSTALL) {
int fsmrc = 0;
+ int saved_errno = 0;
rpmpsmNotify(psm, RPMCALLBACK_INST_START, 0);
/* make sure first progress call gets made */
@@ -826,6 +827,7 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
fsmrc = rpmPackageFilesInstall(psm->ts, psm->te, psm->fi,
payload, psm, &psm->failedFile);
+ saved_errno = errno;
rpmswAdd(rpmtsOp(psm->ts, RPMTS_OP_UNCOMPRESS),
fdOp(payload, FDSTAT_READ));
@@ -843,6 +845,7 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
rpmpsmNotify(psm, RPMCALLBACK_INST_STOP, psm->total);
if (fsmrc) {
+ errno = saved_errno;
rpmlog(RPMLOG_ERR,
_("unpacking of archive failed%s%s: %s\n"),
(psm->failedFile != NULL ? _(" on file ") : ""),

View File

@ -17,7 +17,7 @@
Name: python3-rpm
Version: 4.11.3
Version: 4.12.0.1
Release: 0
Summary: Python Bindings for Manipulating RPM Packages
License: GPL-2.0+

View File

@ -1,48 +0,0 @@
Index: autodeps/linux.prov
===================================================================
--- autodeps/linux.prov.orig 2011-06-08 13:31:39.000000000 +0200
+++ autodeps/linux.prov 2011-06-08 13:31:39.191646314 +0200
@@ -11,7 +11,7 @@ filelist=($(printf "%s\n" "${filelist[@]
solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
cut -d: -f1))
-pythonlist=
+pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/bin/python.\..$'))
tcllist=
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
firmwarelist=($(printf "%s\n" "${filelist[@]}" | grep "/lib/firmware/"))
@@ -54,8 +54,8 @@ done | sort -u
#
# --- Python modules.
-[ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
- printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.prov | sort -u
+[ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] &&
+ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -P | sort -u
#
# --- Tcl modules.
Index: autodeps/linux.req
===================================================================
--- autodeps/linux.req.orig 2011-06-08 13:31:38.000000000 +0200
+++ autodeps/linux.req 2011-06-08 13:31:39.191646314 +0200
@@ -31,7 +31,7 @@ liblist=($(printf "%s\0" "${filelist[@]}
interplist=()
perllist=()
-pythonlist=()
+pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..'))
tcllist=()
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
@@ -127,8 +127,8 @@ done | sort -u
#
# --- Python modules.
-[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \
- printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.req | sort -u
+[ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] && \
+ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -R | sort -u
#
# --- Tcl modules.

View File

@ -1,32 +1,18 @@
Don't complain about a bad md5 sum for repackaged rpms.
--- ./lib/psm.c.orig 2013-07-12 12:05:15.000000000 +0000
+++ ./lib/psm.c 2013-07-12 12:07:59.000000000 +0000
@@ -813,12 +813,17 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
rpmpsmNotify(psm, RPMCALLBACK_INST_PROGRESS, 0);
if (rpmfiFC(fi) > 0 && !(rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB)) {
+ rpmtransFlags oldtsflags;
FD_t payload = rpmtePayload(psm->te);
if (payload == NULL) {
rc = RPMRC_FAIL;
break;
}
+ oldtsflags = rpmtsFlags(ts);
+ if (headerIsEntry(fi->h, RPMTAG_REMOVETID))
+ (void) rpmtsSetFlags(ts, oldtsflags | RPMTRANS_FLAG_NOMD5);
+
fsmrc = rpmPackageFilesInstall(psm->ts, psm->te, psm->fi,
payload, psm, &psm->failedFile);
@@ -827,6 +832,9 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
rpmswAdd(rpmtsOp(psm->ts, RPMTS_OP_DIGEST),
fdOp(payload, FDSTAT_DIGEST));
+ if (headerIsEntry(fi->h, RPMTAG_REMOVETID))
+ (void) rpmtsSetFlags(ts, oldtsflags);
+
Fclose(payload);
}
--- ./lib/psm.c.orig 2014-08-04 12:51:13.219051031 +0000
+++ ./lib/psm.c 2014-08-04 12:57:38.294335406 +0000
@@ -673,8 +673,15 @@ static rpmRC rpmpsmUnpack(rpmpsm psm)
if (!(rpmtsFlags(psm->ts) & RPMTRANS_FLAG_JUSTDB)) {
if (rpmfilesFC(psm->files) > 0) {
+ rpmtransFlags oldtsflags = rpmtsFlags(psm->ts);
+ Header h = rpmteHeader(psm->te);
+ if (h && headerIsEntry(h, RPMTAG_REMOVETID))
+ (void) rpmtsSetFlags(psm->ts, oldtsflags | RPMTRANS_FLAG_NOMD5);
fsmrc = rpmPackageFilesInstall(psm->ts, psm->te, psm->files,
psm, &failedFile);
+ if (h && headerIsEntry(h, RPMTAG_REMOVETID))
+ (void) rpmtsSetFlags(psm->ts, oldtsflags);
+ headerFree(h);
saved_errno = errno;
}
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7da2771a7312f149d326badce97d61ff7ecb0940692acbac29675357ae0e0b03
size 3907544

3
rpm-4.12.0.1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:77ddd228fc332193c874aa0b424f41db1ff8b7edbb6a338703ef747851f50229
size 4129093

View File

@ -1,8 +1,6 @@
Index: macros.in
===================================================================
--- macros.in.orig 2011-12-09 13:21:58.078688958 +0100
+++ macros.in 2011-12-09 13:21:58.502668839 +0100
@@ -920,7 +920,8 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.ex
--- ./macros.in.orig 2014-08-04 13:03:05.948860909 +0000
+++ ./macros.in 2014-08-04 13:03:24.830775270 +0000
@@ -885,7 +885,8 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.ex
--localstatedir=%{_localstatedir} \\\
--sharedstatedir=%{_sharedstatedir} \\\
--mandir=%{_mandir} \\\
@ -11,4 +9,4 @@ Index: macros.in
+ --disable-dependency-tracking
#------------------------------------------------------------------------------
# The make install analogue of %configure for modern autotools:
# The "make" analogue, hiding the _smp_mflags magic from specs

View File

@ -1,14 +0,0 @@
Index: ./autodeps/linux.prov
===================================================================
--- ./autodeps/linux.prov
+++ ./autodeps/linux.prov
@@ -102,4 +102,9 @@ fi
[ -x /usr/lib/rpm/find-provides.ksyms ] &&
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
+#
+# --- GStreamer provides, codecs
+[ -x /usr/lib/rpm/gstreamer-provides ] &&
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u
+
exit 0

View File

@ -17,7 +17,7 @@
Name: rpm-python
Version: 4.11.3
Version: 4.12.0.1
Release: 0
#!BuildIgnore: rpmlint-Factory
Summary: Python Bindings for Manipulating RPM Packages

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Thu Sep 18 13:40:43 CEST 2014 - mls@suse.de
- update to rpm-4.12.0.1
* fixes archivesize being off a couple of bytes
-------------------------------------------------------------------
Tue Sep 16 13:55:09 CEST 2014 - mls@suse.de
- update to rpm-4.12.0
* weakdeps support is now upstream
* new optional payload format to support files > 4GB
* lots of cleanups all over the codebase
- dropped patches:
autodeps.diff, psm-errno.diff, exportoldtags.diff, pythondeps.diff,
newweakdeps.diff, findsupplements.diff, rpm-gst-provides.patch,
noposttrans.diff, fontprovides.diff
-------------------------------------------------------------------
Mon Sep 8 18:51:28 CEST 2014 - mls@suse.de

View File

@ -47,9 +47,9 @@ PreReq: %fillup_prereq
Summary: The RPM Package Manager
License: GPL-2.0+
Group: System/Packages
Version: 4.11.3
Version: 4.12.0.1
Release: 0
Source: http://rpm.org/releases/rpm-4.11.x/rpm-%{version}.tar.bz2
Source: http://rpm.org/releases/rpm-4.12.x/rpm-%{version}.tar.bz2
Source1: RPM-HOWTO.tar.bz2
Source4: rpm-suse_macros
Source5: rpmsort
@ -62,7 +62,6 @@ Source12: baselibs.conf
Patch1: beecrypt-4.1.2.diff
Patch2: db.diff
# quilt patches start here
Patch10: newweakdeps.diff
Patch11: debugedit.diff
Patch13: ignore-auxv.diff
Patch12: localetag.diff
@ -74,7 +73,6 @@ Patch18: refreshtestarch.diff
Patch19: rpmrctests.diff
Patch20: waitlock.diff
Patch21: suspendlock.diff
Patch23: autodeps.diff
Patch24: brp.diff
Patch25: brpcompress.diff
Patch26: checkfilesnoinfodir.diff
@ -112,9 +110,6 @@ Patch58: lazystatfs.diff
Patch59: repackage-nomd5.diff
Patch60: safeugid.diff
Patch61: noprereqdeprec.diff
Patch62: pythondeps.diff
Patch63: fontprovides.diff
Patch64: rpm-gst-provides.patch
Patch65: initscriptsprov.diff
Patch66: remove-translations.diff
Patch67: headeradddb.diff
@ -122,7 +117,6 @@ Patch68: dbprivate.diff
Patch69: nobuildcolor.diff
Patch70: fileattrs.diff
Patch71: nomagiccheck.diff
Patch72: findsupplements.diff
Patch73: assumeexec.diff
Patch74: mono-find-requires.diff
Patch75: rpm-deptracking.patch
@ -130,13 +124,10 @@ Patch76: python3-abi-kind.diff
Patch77: langnoc.diff
Patch78: headerchk2.diff
Patch79: helperenv.diff
Patch80: psm-errno.diff
Patch82: noposttrans.diff
Patch85: brp-compress-no-img.patch
Patch92: find-lang-python.patch
Patch93: weakdepscompat.diff
Patch94: checksepwarn.diff
Patch95: exportoldtags.diff
Patch6464: auto-config-update-aarch64-ppc64le.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
#
@ -216,15 +207,15 @@ ln -s beecrypt-4.1.2 beecrypt
chmod -R u+w db/*
rm -f rpmdb/db.h
%patch -P 1 -P 2
%patch -P 10 -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 17 -P 18 -P 19
%patch -P 20 -P 21 -P 23 -P 24 -P 25 -P 26 -P 27 -P 28 -P 29
%patch -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 17 -P 18 -P 19
%patch -P 20 -P 21 -P 24 -P 25 -P 26 -P 27 -P 28 -P 29
%patch -P 30 -P 31 -P 32 -P 33 -P 34 -P 35 -P 36 -P 37 -P 38 -P 39
%patch -P 41 -P 42 -P 43 -P 44 -P 45 -P 46 -P 47 -P 48 -P 49
%patch -P 50 -P 51 -P 52 -P 53 -P 54 -P 55 -P 56 -P 57 -P 58 -P 59
%patch -P 60 -P 61 -P 62 -P 63 -P 64 -P 65 -P 66 -P 67 -P 68 -P 69
%patch -P 70 -P 71 -P 72 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79
%patch -P 80 -P 82 -P 85
%patch -P 92 -P 93 -P 94 -P 95
%patch -P 60 -P 61 -P 65 -P 66 -P 67 -P 68 -P 69
%patch -P 70 -P 71 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79
%patch -P 85
%patch -P 92 -P 93 -P 94
%ifarch aarch64 ppc64le
%patch6464
@ -271,6 +262,7 @@ sed -i -e 's,{PYTHON_VERSION}mu,{PYTHON_VERSION}mu python${PYTHON_VERSION}m,' co
--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --with-lua \
--with-vendor=suse \
--with-rundir=/run \
--without-archive \
--with-selinux --with-internal-beecrypt \
--with-acl --with-cap --enable-shared %{?with_python: --enable-python} $BUILDTARGET

View File

@ -1,5 +1,5 @@
--- ./rpmrc.in.orig 2014-09-05 11:47:15.000000000 +0000
+++ ./rpmrc.in 2014-09-08 16:44:47.547337670 +0000
--- ./rpmrc.in.orig 2014-06-27 07:25:43.624470700 +0000
+++ ./rpmrc.in 2014-08-04 12:44:21.192842515 +0000
@@ -12,16 +12,16 @@
# "fat" binary with both archs, for Darwin
optflags: fat -O2 -g -arch i386 -arch ppc
@ -30,15 +30,15 @@
optflags: m68k -O2 -g -fomit-frame-pointer
-optflags: ppc -O2 -g -fsigned-char
-optflags: ppc8260 -O2 -g -fsigned-char
-optflags: ppc8560 -O2 -g -fsigned-char
-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: ppc64le -O2 -g -fsigned-char
-optflags: ppc64p7 -O3 -mtune=power7 -mcpu=power7 -g -fsigned-char
-optflags: ppc -O2 -g
-optflags: ppc8260 -O2 -g
-optflags: ppc8560 -O2 -g
-optflags: ppc32dy4 -O2 -g
-optflags: ppciseries -O2 -g
-optflags: ppcpseries -O2 -g
-optflags: ppc64 -O2 -g
-optflags: ppc64le -O2 -g
-optflags: ppc64p7 -O3 -mtune=power7 -mcpu=power7 -g
+optflags: ppc -O2 -g -m32 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables
+optflags: ppc8260 -O2 -g -m32
+optflags: ppc8560 -O2 -g -m32
@ -54,17 +54,20 @@
optflags: hppa1.0 -O2 -g -mpa-risc-1-0
optflags: hppa1.1 -O2 -g -mpa-risc-1-0
optflags: hppa1.2 -O2 -g -mpa-risc-1-0
@@ -67,7 +68,9 @@ optflags: armv4tl -O2 -g -march=armv4t
@@ -67,10 +68,10 @@ optflags: armv4tl -O2 -g -march=armv4t
optflags: armv5tel -O2 -g -march=armv5te
optflags: armv5tejl -O2 -g -march=armv5te
optflags: armv6l -O2 -g -march=armv6
-optflags: armv6hl -O2 -g -march=armv6 -mfloat-abi=hard -mfpu=vfp
+optflags: armv6hl -O2 -g -march=armv6 -mfloat-abi=hard -mabi=aapcs-linux
optflags: armv7l -O2 -g -march=armv7
-optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16
+optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mthumb -mabi=aapcs-linux
optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
optflags: m68k -O2 -g -fomit-frame-pointer
@@ -79,8 +82,8 @@ optflags: atariclone -O2 -g -fomit-frame
@@ -83,8 +84,8 @@ optflags: atariclone -O2 -g -fomit-frame
optflags: milan -O2 -g -fomit-frame-pointer
optflags: hades -O2 -g -fomit-frame-pointer
@ -75,17 +78,7 @@
optflags: sh3 -O2 -g
optflags: sh4 -O2 -g -mieee
@@ -184,7 +187,9 @@ arch_canon: armv4l: armv4l 12
arch_canon: armv5tel: armv5tel 12
arch_canon: armv5tejl: armv5tejl 12
arch_canon: armv6l: armv6l 12
+arch_canon: armv6hl: armv6hl 12
arch_canon: armv7l: armv7l 12
+arch_canon: armv7hl: armv7hl 12
arch_canon: m68kmint: m68kmint 13
arch_canon: atarist: m68kmint 13
@@ -248,17 +253,17 @@ os_canon: MacOSX: macosx 21
@@ -255,17 +256,17 @@ os_canon: MacOSX: macosx 21
#############################################################
# For a given uname().machine, the default build arch
@ -111,17 +104,7 @@
buildarchtranslate: i486: i386
buildarchtranslate: i386: i386
@@ -297,7 +302,9 @@ buildarchtranslate: armv4tl: armv4tl
buildarchtranslate: armv5tel: armv5tel
buildarchtranslate: armv5tejl: armv5tejl
buildarchtranslate: armv6l: armv6l
+buildarchtranslate: armv6hl: armv6hl
buildarchtranslate: armv7l: armv7l
+buildarchtranslate: armv7hl: armv7hl
buildarchtranslate: m68k: m68k
@@ -324,6 +331,15 @@ buildarchtranslate: sh4a: sh4
@@ -334,6 +335,15 @@ buildarchtranslate: sh4a: sh4
buildarchtranslate: aarch64: aarch64
@ -137,7 +120,7 @@
#############################################################
# Architecture compatibility
@@ -381,14 +397,20 @@ arch_compat: mipsel: noarch
@@ -391,14 +401,20 @@ arch_compat: mipsel: noarch
arch_compat: hppa2.0: hppa1.2
arch_compat: hppa1.2: hppa1.1
arch_compat: hppa1.1: hppa1.0
@ -160,7 +143,7 @@
arch_compat: armv4tl: armv4l
arch_compat: armv4l: armv3l
arch_compat: armv3l: noarch
@@ -407,7 +429,7 @@ arch_compat: i370: noarch
@@ -420,7 +436,7 @@ arch_compat: i370: noarch
arch_compat: s390: noarch
arch_compat: s390x: s390 noarch
@ -169,7 +152,7 @@
arch_compat: x86_64: amd64 em64t athlon noarch
arch_compat: amd64: x86_64 em64t athlon noarch
@@ -492,12 +514,15 @@ buildarch_compat: ppc64le: noarch fat
@@ -505,12 +521,15 @@ buildarch_compat: ppc64le: noarch fat
buildarch_compat: ppc64pseries: ppc64
buildarch_compat: ppc64iseries: ppc64
buildarch_compat: ppc64p7: ppc64
@ -185,7 +168,7 @@
buildarch_compat: armv6l: armv5tejl
buildarch_compat: armv5tejl: armv5tel
buildarch_compat: armv5tel: armv4tl
@@ -508,7 +533,8 @@ buildarch_compat: armv3l: noarch
@@ -525,7 +544,8 @@ buildarch_compat: armv6hl: noarch
buildarch_compat: hppa2.0: hppa1.2
buildarch_compat: hppa1.2: hppa1.1
buildarch_compat: hppa1.1: hppa1.0

View File

@ -2,18 +2,18 @@ Suspend exclusive database lock when scriptlets get called, allowing
read access in scriptlets. Only needed for DB_PRIVATE (aka global)
locking.
--- ./lib/backend/db3.c.orig 2012-06-01 10:50:11.000000000 +0000
+++ ./lib/backend/db3.c 2012-06-01 10:50:19.000000000 +0000
@@ -628,3 +628,59 @@ int dbiOpen(rpmdb rdb, rpmDbiTagVal rpmt
--- ./lib/backend/db3.c.orig 2014-08-04 12:25:29.288759808 +0000
+++ ./lib/backend/db3.c 2014-08-04 12:30:30.829430726 +0000
@@ -625,6 +625,63 @@ static int dbiFlock(dbiIndex dbi, int mo
return rc;
}
+
+int dbiSuspendDBLock(dbiIndex dbi, unsigned int flags)
+{
+ struct flock l;
+ int rc = 0;
+ int fdno = -1;
+ DB * db = dbi->dbi_db;
+
+ if (!dbi->dbi_lockdbfd)
+ return 0;
@ -21,7 +21,7 @@ locking.
+ return 0;
+ if (_lockdbfd == 0)
+ return 0;
+ if (!(dbi->dbi_db->fd(dbi->dbi_db, &fdno) == 0 && fdno >= 0))
+ if (!(db->fd(db, &fdno) == 0 && fdno >= 0))
+ return 1;
+ memset(&l, 0, sizeof(l));
+ l.l_whence = 0;
@ -40,6 +40,7 @@ locking.
+ int rc = 0;
+ int tries;
+ int fdno = -1;
+ DB * db = dbi->dbi_db;
+
+ if (!dbi->dbi_lockdbfd)
+ return 0;
@ -47,7 +48,7 @@ locking.
+ return 0;
+ if (_lockdbfd == 0)
+ return 0;
+ if (!(dbi->dbi_db->fd(dbi->dbi_db, &fdno) == 0 && fdno >= 0))
+ if (!(db->fd(db, &fdno) == 0 && fdno >= 0))
+ return 1;
+ for (tries = 0; tries < 2; tries++) {
+ memset(&l, 0, sizeof(l));
@ -64,9 +65,12 @@ locking.
+ return rc;
+}
+
--- ./lib/backend/dbi.h.orig 2012-03-20 08:07:25.000000000 +0000
+++ ./lib/backend/dbi.h 2012-06-01 10:53:43.000000000 +0000
@@ -90,6 +90,24 @@ struct dbiIndex_s {
int dbiOpen(rpmdb rdb, rpmDbiTagVal rpmtag, dbiIndex * dbip, int flags)
{
const char *dbhome = rpmdbHome(rdb);
--- ./lib/backend/dbi.h.orig 2014-06-26 06:51:54.101820242 +0000
+++ ./lib/backend/dbi.h 2014-08-04 12:25:29.288759808 +0000
@@ -92,6 +92,24 @@ struct dbiIndex_s {
extern "C" {
#endif
@ -91,39 +95,39 @@ locking.
RPM_GNUC_INTERNAL
/* Globally enable/disable fsync in the backend */
--- ./lib/psm.c.orig 2012-06-01 10:50:11.000000000 +0000
+++ ./lib/psm.c 2012-06-01 10:51:34.000000000 +0000
@@ -419,10 +419,12 @@ static rpmRC runScript(rpmpsm psm, ARGV_
--- ./lib/psm.c.orig 2014-08-04 12:25:29.289759769 +0000
+++ ./lib/psm.c 2014-08-04 12:27:04.230340235 +0000
@@ -291,10 +291,12 @@ static rpmRC runScript(rpmts ts, rpmte t
if (sfd == NULL)
sfd = rpmtsScriptFd(psm->ts);
sfd = rpmtsScriptFd(ts);
+ rpmtsSuspendResumeDBLock(psm->ts, 0);
rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
+ rpmtsSuspendResumeDBLock(ts, 0);
rpmswEnter(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
rc = rpmScriptRun(script, arg1, arg2, sfd,
prefixes, warn_only, selinux);
rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
+ rpmtsSuspendResumeDBLock(psm->ts, 1);
prefixes, warn_only, rpmtsPlugins(ts));
rpmswExit(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0);
+ rpmtsSuspendResumeDBLock(ts, 1);
/* Map warn-only errors to "notfound" for script stop callback */
stoprc = (rc != RPMRC_OK && warn_only) ? RPMRC_NOTFOUND : rc;
--- ./lib/rpmdb.c.orig 2012-06-01 10:50:11.000000000 +0000
+++ ./lib/rpmdb.c 2012-06-01 10:50:19.000000000 +0000
@@ -769,6 +769,12 @@ int rpmdbSync(rpmdb db)
return dbiForeach(db->_dbi, dbiSync, 0);
--- ./lib/rpmdb.c.orig 2014-08-04 12:25:15.106821818 +0000
+++ ./lib/rpmdb.c 2014-08-04 12:25:29.289759769 +0000
@@ -475,6 +475,12 @@ exit:
return rc;
}
+int rpmdbSuspendResumeDBLock(rpmdb db, int mode)
+{
+ if (db == NULL) return 0;
+ return dbiForeach(db->_dbi, mode ? dbiResumeDBLock : dbiSuspendDBLock, 0);
+ return dbiForeach(db->db_indexes, db->db_ndbi, mode ? dbiResumeDBLock : dbiSuspendDBLock, 0);
+}
+
static rpmdb newRpmdb(const char * root, const char * home,
int mode, int perms, int flags)
{
--- ./lib/rpmts.c.orig 2012-03-20 08:07:25.000000000 +0000
+++ ./lib/rpmts.c 2012-06-01 10:50:19.000000000 +0000
@@ -95,6 +95,11 @@ int rpmtsOpenDB(rpmts ts, int dbmode)
--- ./lib/rpmts.c.orig 2014-06-26 06:51:54.653818721 +0000
+++ ./lib/rpmts.c 2014-08-04 12:25:29.289759769 +0000
@@ -101,6 +101,11 @@ int rpmtsOpenDB(rpmts ts, int dbmode)
return rc;
}
@ -134,10 +138,10 @@ locking.
+
int rpmtsInitDB(rpmts ts, int dbmode)
{
rpmlock lock = rpmtsAcquireLock(ts);
--- ./lib/rpmts.h.orig 2012-03-20 08:07:25.000000000 +0000
+++ ./lib/rpmts.h 2012-06-01 10:50:19.000000000 +0000
@@ -423,6 +423,8 @@ rpmdb rpmtsGetRdb(rpmts ts);
rpmtxn txn = rpmtxnBegin(ts, RPMTXN_WRITE);
--- ./lib/rpmts.h.orig 2014-06-26 06:51:54.655818716 +0000
+++ ./lib/rpmts.h 2014-08-04 12:25:29.290759730 +0000
@@ -441,6 +441,8 @@ rpmdb rpmtsGetRdb(rpmts ts);
void * rpmtsNotify(rpmts ts, rpmte te,
rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total);

View File

@ -1,8 +1,9 @@
This used to be the taggedfileindex patch, but it's gone.
The remaining part just strips off the tag.
--- ./lib/rpmdb.c.orig 2011-05-11 14:27:32.000000000 +0000
+++ ./lib/rpmdb.c 2011-05-11 15:14:39.000000000 +0000
@@ -257,6 +257,9 @@ static int dbt2set(dbiIndex dbi, DBT * d
--- ./lib/backend/db3.c.orig 2014-08-04 12:45:25.907562115 +0000
+++ ./lib/backend/db3.c 2014-08-04 12:46:22.225318788 +0000
@@ -833,6 +833,9 @@ static int dbt2set(dbiIndex dbi, DBT * d
_DBSWAP(hdrNum);
_DBSWAP(tagNum);
}

View File

@ -1,5 +1,5 @@
--- ./build/parsePreamble.c.orig 2014-02-25 14:14:15.892041649 +0000
+++ ./build/parsePreamble.c 2014-02-25 14:14:26.237041631 +0000
--- ./build/parsePreamble.c.orig 2014-08-04 13:10:07.530953406 +0000
+++ ./build/parsePreamble.c 2014-08-04 13:10:12.852929355 +0000
@@ -343,6 +343,7 @@ static struct tokenBits_s const installS
{ "verify", RPMSENSE_SCRIPT_VERIFY },
{ "pretrans", RPMSENSE_PRETRANS },
@ -8,120 +8,3 @@
{ NULL, 0 }
};
--- ./build/rpmfc.c.orig 2014-02-25 14:14:15.904041649 +0000
+++ ./build/rpmfc.c 2014-02-25 14:14:26.238041631 +0000
@@ -1156,6 +1156,12 @@ static struct DepMsg_s depMsgs[] = {
{ "Obsoletes", { "%{?__find_obsoletes}", NULL, NULL, NULL },
RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS,
0, -1 },
+ { "Enhances", { "%{?__find_enhances}", NULL, NULL, NULL },
+ RPMTAG_ENHANCENAME, RPMTAG_ENHANCEVERSION, RPMTAG_ENHANCEFLAGS,
+ 0, -1 },
+ { "Supplements", { "%{?__find_supplements}", NULL, NULL, NULL },
+ RPMTAG_SUPPLEMENTNAME, RPMTAG_SUPPLEMENTVERSION, RPMTAG_SUPPLEMENTFLAGS,
+ 0, -1 },
{ NULL, { NULL, NULL, NULL, NULL }, 0, 0, 0, 0, 0 }
};
@@ -1231,6 +1237,16 @@ static rpmRC rpmfcGenerateDependsHelper(
if (!pkg->autoReq)
continue;
tagflags = RPMSENSE_FIND_REQUIRES;
+ break;
+ case RPMTAG_ENHANCENAME:
+ if (!pkg->autoReq)
+ continue;
+ tagflags = RPMSENSE_FIND_REQUIRES;
+ break;
+ case RPMTAG_SUPPLEMENTNAME:
+ if (!pkg->autoReq)
+ continue;
+ tagflags = RPMSENSE_FIND_REQUIRES;
break;
default:
continue;
--- ./lib/rpmds.c.orig 2014-02-25 14:14:15.834041649 +0000
+++ ./lib/rpmds.c 2014-02-25 14:14:47.963041593 +0000
@@ -86,6 +86,14 @@ static int dsType(rpmTagVal tag,
t = "Trigger";
evr = RPMTAG_TRIGGERVERSION;
f = RPMTAG_TRIGGERFLAGS;
+ } else if (tag == RPMTAG_OLDSUGGESTSNAME) {
+ t = "Oldsuggests";
+ evr = RPMTAG_OLDSUGGESTSVERSION;
+ f = RPMTAG_OLDSUGGESTSFLAGS;
+ } else if (tag == RPMTAG_OLDENHANCESNAME) {
+ t = "Oldenhances";
+ evr = RPMTAG_OLDENHANCESVERSION;
+ f = RPMTAG_OLDENHANCESFLAGS;
} else {
rc = 1;
}
--- ./lib/tagexts.c.orig 2014-02-25 14:14:15.839041649 +0000
+++ ./lib/tagexts.c 2014-02-25 14:18:53.707041158 +0000
@@ -906,6 +906,34 @@ static int depnevrsTag(Header h, rpmtd t
return (ndeps > 0);
}
+#define RPMSENSE_STRONG (1 << 27)
+
+static int depnevrsTagFiltered(Header h, rpmtd td, headerGetFlags hgflags,
+ rpmTagVal tag, int strong)
+{
+ rpmds ds = rpmdsNew(h, tag, 0);
+ int ndeps = rpmdsCount(ds);
+
+ if (ndeps > 0) {
+ char **deps = xmalloc(sizeof(*deps) * ndeps);
+ ndeps = 0;
+ while (rpmdsNext(ds) >= 0) {
+ if ((rpmdsFlags(ds) & RPMSENSE_STRONG) == (strong ? RPMSENSE_STRONG : 0))
+ deps[ndeps++] = rpmdsNewDNEVR(NULL, ds);
+ }
+ if (ndeps) {
+ td->data = deps;
+ td->type = RPM_STRING_ARRAY_TYPE;
+ td->count = ndeps;
+ td->flags |= (RPMTD_ALLOCED | RPMTD_PTR_ALLOCED);
+ } else {
+ _free(deps);
+ }
+ }
+ rpmdsFree(ds);
+ return (ndeps > 0);
+}
+
static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME);
@@ -913,22 +941,26 @@ static int requirenevrsTag(Header h, rpm
static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
- return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME);
+ return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME) ||
+ depnevrsTagFiltered(h, td, hgflags, RPMTAG_OLDSUGGESTSNAME, 1);
}
static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
- return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME);
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME) ||
+ depnevrsTagFiltered(h, td, hgflags, RPMTAG_OLDSUGGESTSNAME, 0);
}
static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
- return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME);
+ return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME) ||
+ depnevrsTagFiltered(h, td, hgflags, RPMTAG_OLDENHANCESNAME, 1);
}
static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
{
- return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME);
+ return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME) ||
+ depnevrsTagFiltered(h, td, hgflags, RPMTAG_OLDENHANCESNAME, 0);
}
static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)