update to rpm-4.9.0
OBS-URL: https://build.opensuse.org/package/show/Base:System/rpm?expand=0&rev=93
This commit is contained in:
parent
5d8f14209e
commit
cebe6dd1a8
@ -1,23 +0,0 @@
|
|||||||
--- ./build/pack.c.orig 2010-03-25 15:18:23.000000000 +0000
|
|
||||||
+++ ./build/pack.c 2010-03-25 15:23:54.000000000 +0000
|
|
||||||
@@ -375,7 +375,9 @@ rpmRC writeRPM(Header *hdrp, unsigned ch
|
|
||||||
const char *compr = NULL;
|
|
||||||
headerPutString(h, RPMTAG_PAYLOADFORMAT, "cpio");
|
|
||||||
|
|
||||||
- if (rstreq(s+1, "gzdio")) {
|
|
||||||
+ if (rstreq(s+1, "ufdio")) {
|
|
||||||
+ compr = NULL;
|
|
||||||
+ } else if (rstreq(s+1, "gzdio")) {
|
|
||||||
compr = "gzip";
|
|
||||||
#if HAVE_BZLIB_H
|
|
||||||
} else if (rstreq(s+1, "bzdio")) {
|
|
||||||
@@ -398,7 +400,8 @@ rpmRC writeRPM(Header *hdrp, unsigned ch
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
- headerPutString(h, RPMTAG_PAYLOADCOMPRESSOR, compr);
|
|
||||||
+ if (compr)
|
|
||||||
+ headerPutString(h, RPMTAG_PAYLOADCOMPRESSOR, compr);
|
|
||||||
buf = xstrdup(rpmio_flags);
|
|
||||||
buf[s - rpmio_flags] = '\0';
|
|
||||||
headerPutString(h, RPMTAG_PAYLOADFLAGS, buf+1);
|
|
@ -1,9 +1,5 @@
|
|||||||
Some (probably SUSE specific) changes to linux.prov and linux.req
|
--- ./autodeps/linux.prov.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./autodeps/linux.prov 2011-05-11 14:27:40.000000000 +0000
|
||||||
Index: autodeps/linux.prov
|
|
||||||
===================================================================
|
|
||||||
--- autodeps/linux.prov.orig
|
|
||||||
+++ autodeps/linux.prov
|
|
||||||
@@ -2,60 +2,72 @@
|
@@ -2,60 +2,72 @@
|
||||||
|
|
||||||
# This script reads filenames from STDIN and outputs any relevant provides
|
# This script reads filenames from STDIN and outputs any relevant provides
|
||||||
@ -105,28 +101,20 @@ Index: autodeps/linux.prov
|
|||||||
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
|
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
Index: autodeps/linux.req
|
--- ./autodeps/linux.req.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./autodeps/linux.req 2011-05-11 14:28:45.000000000 +0000
|
||||||
--- autodeps/linux.req.orig
|
@@ -19,18 +19,21 @@ fi
|
||||||
+++ autodeps/linux.req
|
|
||||||
@@ -19,18 +19,22 @@ fi
|
|
||||||
#
|
#
|
||||||
# --- Grab the file manifest and classify files.
|
# --- Grab the file manifest and classify files.
|
||||||
#filelist=`sed "s/['\"]/\\\&/g"`
|
#filelist=`sed "s/['\"]/\\\&/g"`
|
||||||
-filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
|
-filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
|
||||||
-exelist=`echo $filelist | xargs -r file | egrep -v ":.* (commands|script) " | \
|
-exelist=`echo $filelist | xargs -r file | grep -Ev ":.* (commands|script) " | \
|
||||||
- grep ":.*executable" | cut -d: -f1`
|
- grep ":.*executable" | cut -d: -f1`
|
||||||
-scriptlist=`echo $filelist | xargs -r file | \
|
-scriptlist=`echo $filelist | xargs -r file | \
|
||||||
- egrep ":.* (commands|script) " | cut -d: -f1`
|
- grep -E ":.* (commands|script) " | cut -d: -f1`
|
||||||
-liblist=`echo $filelist | xargs -r file | \
|
-liblist=`echo $filelist | xargs -r file | \
|
||||||
- grep ":.*shared object" | cut -d : -f1`
|
- grep ":.*shared object" | cut -d : -f1`
|
||||||
-
|
|
||||||
-interplist=
|
|
||||||
-perllist=
|
|
||||||
-pythonlist=
|
|
||||||
-tcllist=
|
|
||||||
+#filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
|
+#filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
|
||||||
+IFS=$'\n'
|
|
||||||
+filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
|
+filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
|
||||||
+exelist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
|
+exelist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
|
||||||
+ egrep -v ":.* (commands|script) " | \
|
+ egrep -v ":.* (commands|script) " | \
|
||||||
@ -135,7 +123,11 @@ Index: autodeps/linux.req
|
|||||||
+ egrep ":.* (commands|script) " | cut -d: -f1))
|
+ egrep ":.* (commands|script) " | cut -d: -f1))
|
||||||
+liblist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
|
+liblist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
|
||||||
+ grep ":.*shared object" | cut -d : -f1))
|
+ grep ":.*shared object" | cut -d : -f1))
|
||||||
+
|
|
||||||
|
-interplist=
|
||||||
|
-perllist=
|
||||||
|
-pythonlist=
|
||||||
|
-tcllist=
|
||||||
+interplist=()
|
+interplist=()
|
||||||
+perllist=()
|
+perllist=()
|
||||||
+pythonlist=()
|
+pythonlist=()
|
||||||
@ -144,7 +136,7 @@ Index: autodeps/linux.req
|
|||||||
|
|
||||||
#
|
#
|
||||||
# --- Alpha does not mark 64bit dependencies
|
# --- Alpha does not mark 64bit dependencies
|
||||||
@@ -42,12 +46,12 @@ esac
|
@@ -42,12 +45,12 @@ esac
|
||||||
if [ "$needed" -eq 0 ]; then
|
if [ "$needed" -eq 0 ]; then
|
||||||
#
|
#
|
||||||
# --- Executable dependency sonames.
|
# --- Executable dependency sonames.
|
||||||
@ -162,7 +154,7 @@ Index: autodeps/linux.req
|
|||||||
gsub(/'\''"/,"\\&",$1);
|
gsub(/'\''"/,"\\&",$1);
|
||||||
printf "%s'$lib64'\n", $1
|
printf "%s'$lib64'\n", $1
|
||||||
}
|
}
|
||||||
@@ -56,12 +60,12 @@ if [ "$needed" -eq 0 ]; then
|
@@ -56,12 +59,12 @@ if [ "$needed" -eq 0 ]; then
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Library dependency sonames.
|
# --- Library dependency sonames.
|
||||||
@ -180,7 +172,7 @@ Index: autodeps/linux.req
|
|||||||
gsub(/'\''"/,"\\&",$1);
|
gsub(/'\''"/,"\\&",$1);
|
||||||
printf "%s'$lib64'\n", $1
|
printf "%s'$lib64'\n", $1
|
||||||
}
|
}
|
||||||
@@ -71,30 +75,30 @@ fi
|
@@ -71,30 +74,30 @@ fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Script interpreters.
|
# --- Script interpreters.
|
||||||
@ -223,7 +215,7 @@ Index: autodeps/linux.req
|
|||||||
/^$/ { START=0; }
|
/^$/ { START=0; }
|
||||||
/^Dynamic Section:$/ { START=1; }
|
/^Dynamic Section:$/ { START=1; }
|
||||||
(START==1) && /NEEDED/ {
|
(START==1) && /NEEDED/ {
|
||||||
@@ -111,7 +115,7 @@ for f in $liblist $exelist ; do
|
@@ -111,7 +114,7 @@ for f in $liblist $exelist ; do
|
||||||
sub(/:/, "", $3);
|
sub(/:/, "", $3);
|
||||||
LIBNAME=$3;
|
LIBNAME=$3;
|
||||||
}
|
}
|
||||||
@ -232,7 +224,7 @@ Index: autodeps/linux.req
|
|||||||
print LIBNAME "(" $4 ")'$lib64'";
|
print LIBNAME "(" $4 ")'$lib64'";
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
@@ -119,17 +123,29 @@ done | sort -u
|
@@ -119,17 +122,29 @@ done | sort -u
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Perl modules.
|
# --- Perl modules.
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
A couple of fixes picked from upstream.
|
|
||||||
|
|
||||||
--- ./lib/rpminstall.c.orig 2010-04-08 12:35:48.000000000 +0000
|
|
||||||
+++ ./lib/rpminstall.c 2010-04-08 12:36:00.000000000 +0000
|
|
||||||
@@ -458,7 +458,7 @@ restart:
|
|
||||||
case URL_IS_HTTPS:
|
|
||||||
case URL_IS_HTTP:
|
|
||||||
case URL_IS_FTP:
|
|
||||||
- { char *tfn;
|
|
||||||
+ { char *tfn = NULL;
|
|
||||||
FD_t tfd;
|
|
||||||
|
|
||||||
if (rpmIsVerbose())
|
|
||||||
--- ./lib/transaction.c.orig 2010-04-08 12:33:22.000000000 +0000
|
|
||||||
+++ ./lib/transaction.c 2010-04-08 12:35:00.000000000 +0000
|
|
||||||
@@ -183,6 +183,10 @@ static void rpmtsUpdateDSI(const rpmts t
|
|
||||||
|
|
||||||
if (fixupSize)
|
|
||||||
dsi->bneeded -= BLOCK_ROUND(fixupSize, dsi->bsize);
|
|
||||||
+
|
|
||||||
+ /* adjust bookkeeping when requirements shrink */
|
|
||||||
+ if (dsi->bneeded < dsi->obneeded) dsi->obneeded = dsi->bneeded;
|
|
||||||
+ if (dsi->ineeded < dsi->oineeded) dsi->oineeded = dsi->ineeded;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rpmtsFindDSIMount(const rpmts ts, rpmDiskSpaceInfo dsi)
|
|
||||||
@@ -231,7 +235,7 @@ static void rpmtsCheckDSIProblems(const
|
|
||||||
for (; dsi->bsize; dsi++) {
|
|
||||||
|
|
||||||
if (dsi->bavail >= 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) {
|
|
||||||
- if (dsi->bneeded != dsi->obneeded) {
|
|
||||||
+ if (dsi->bneeded > dsi->obneeded) {
|
|
||||||
if (!dsi->mntPoint)
|
|
||||||
rpmtsFindDSIMount(ts, dsi);
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKSPACE,
|
|
||||||
@@ -243,7 +247,7 @@ static void rpmtsCheckDSIProblems(const
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dsi->iavail >= 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) {
|
|
||||||
- if (dsi->ineeded != dsi->oineeded) {
|
|
||||||
+ if (dsi->ineeded > dsi->oineeded) {
|
|
||||||
if (!dsi->mntPoint)
|
|
||||||
rpmtsFindDSIMount(ts, dsi);
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKNODES,
|
|
||||||
--- ./lib/verify.c.orig 2010-04-08 12:36:09.000000000 +0000
|
|
||||||
+++ ./lib/verify.c 2010-04-08 12:37:37.000000000 +0000
|
|
||||||
@@ -348,7 +348,7 @@ static int verifyHeader(QVA_t qva, const
|
|
||||||
static const char *const aok = ".";
|
|
||||||
static const char *const unknown = "?";
|
|
||||||
|
|
||||||
- ec = (verifyResult != 0);
|
|
||||||
+ if (verifyResult) ec = 1;
|
|
||||||
|
|
||||||
#define _verify(_RPMVERIFY_F, _C) \
|
|
||||||
((verifyResult & _RPMVERIFY_F) ? _C : aok)
|
|
88
brp.diff
88
brp.diff
@ -1,9 +1,25 @@
|
|||||||
SUSE specific brp script patches
|
SUSE specific brp script patches
|
||||||
|
|
||||||
Index: scripts/brp-lib64-linux
|
--- ./scripts/Makefile.am.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/Makefile.am 2011-05-11 14:31:45.000000000 +0000
|
||||||
--- /dev/null
|
@@ -6,6 +6,7 @@ CLEANFILES =
|
||||||
+++ scripts/brp-lib64-linux
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
brp-compress brp-python-bytecompile brp-java-gcjcompile \
|
||||||
|
+ brp-lib64-linux brp-symlink \
|
||||||
|
brp-strip brp-strip-comment-note brp-python-hardlink \
|
||||||
|
brp-strip-shared brp-strip-static-archive \
|
||||||
|
check-files check-prereqs \
|
||||||
|
@@ -24,6 +25,7 @@ EXTRA_DIST = \
|
||||||
|
|
||||||
|
rpmconfig_SCRIPTS = \
|
||||||
|
brp-compress brp-python-bytecompile brp-java-gcjcompile \
|
||||||
|
+ brp-lib64-linux brp-symlink \
|
||||||
|
brp-strip brp-strip-comment-note brp-python-hardlink \
|
||||||
|
brp-strip-shared brp-strip-static-archive \
|
||||||
|
check-files check-prereqs \
|
||||||
|
--- ./scripts/brp-lib64-linux.orig 2011-05-11 14:30:08.000000000 +0000
|
||||||
|
+++ ./scripts/brp-lib64-linux 2011-05-11 14:30:08.000000000 +0000
|
||||||
@@ -0,0 +1,42 @@
|
@@ -0,0 +1,42 @@
|
||||||
+#!/bin/bash
|
+#!/bin/bash
|
||||||
+# script checks wether package is 64-bit clean
|
+# script checks wether package is 64-bit clean
|
||||||
@ -47,23 +63,9 @@ Index: scripts/brp-lib64-linux
|
|||||||
+ fi
|
+ fi
|
||||||
+done
|
+done
|
||||||
+exit 0
|
+exit 0
|
||||||
Index: scripts/brp-strip
|
--- ./scripts/brp-strip-comment-note.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/brp-strip-comment-note 2011-05-11 14:30:08.000000000 +0000
|
||||||
--- scripts/brp-strip.orig
|
@@ -16,6 +16,8 @@ esac
|
||||||
+++ scripts/brp-strip
|
|
||||||
@@ -13,6 +13,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" | \
|
|
||||||
grep -v ' shared object,' | \
|
|
||||||
+ grep -v '/lib/modules/' | \
|
|
||||||
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do
|
|
||||||
strip -g "$f" || :
|
|
||||||
done
|
|
||||||
Index: scripts/brp-strip-comment-note
|
|
||||||
===================================================================
|
|
||||||
--- scripts/brp-strip-comment-note.orig
|
|
||||||
+++ scripts/brp-strip-comment-note
|
|
||||||
@@ -13,6 +13,8 @@ esac
|
|
||||||
# for already stripped elf files in the build root
|
# 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 {} \; | \
|
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" | \
|
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \
|
||||||
@ -71,11 +73,19 @@ Index: scripts/brp-strip-comment-note
|
|||||||
+ grep -v '/lib/modules/' | \
|
+ grep -v '/lib/modules/' | \
|
||||||
sed -n -e 's/^\(.*\):[ ]*ELF.*, stripped/\1/p'`; do
|
sed -n -e 's/^\(.*\):[ ]*ELF.*, stripped/\1/p'`; do
|
||||||
note="-R .note"
|
note="-R .note"
|
||||||
if objdump -h $f | grep '^[ ]*[0-9]*[ ]*.note[ ]' -A 1 | \
|
if $OBJDUMP -h $f | grep '^[ ]*[0-9]*[ ]*.note[ ]' -A 1 | \
|
||||||
Index: scripts/brp-symlink
|
--- ./scripts/brp-strip.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/brp-strip 2011-05-11 14:30:08.000000000 +0000
|
||||||
--- /dev/null
|
@@ -15,6 +15,7 @@ esac
|
||||||
+++ scripts/brp-symlink
|
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" | \
|
||||||
|
grep -v ' shared object,' | \
|
||||||
|
+ grep -v '/lib/modules/' | \
|
||||||
|
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do
|
||||||
|
$STRIP -g "$f" || :
|
||||||
|
done
|
||||||
|
--- ./scripts/brp-symlink.orig 2011-05-11 14:30:08.000000000 +0000
|
||||||
|
+++ ./scripts/brp-symlink 2011-05-11 14:30:08.000000000 +0000
|
||||||
@@ -0,0 +1,184 @@
|
@@ -0,0 +1,184 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+
|
+
|
||||||
@ -261,29 +271,3 @@ Index: scripts/brp-symlink
|
|||||||
+if test "$had_errors" = 1; then
|
+if test "$had_errors" = 1; then
|
||||||
+ exit 1
|
+ exit 1
|
||||||
+fi
|
+fi
|
||||||
Index: scripts/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- scripts/Makefile.am.orig
|
|
||||||
+++ scripts/Makefile.am
|
|
||||||
@@ -6,8 +6,10 @@ CLEANFILES =
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
brp-compress brp-python-bytecompile brp-java-gcjcompile \
|
|
||||||
+ brp-lib64-linux \
|
|
||||||
brp-strip brp-strip-comment-note \
|
|
||||||
brp-strip-shared brp-strip-static-archive \
|
|
||||||
+ brp-symlink \
|
|
||||||
check-files check-prereqs \
|
|
||||||
check-buildroot check-rpaths check-rpaths-worker \
|
|
||||||
find-debuginfo.sh find-lang.sh \
|
|
||||||
@@ -24,8 +26,10 @@ EXTRA_DIST = \
|
|
||||||
|
|
||||||
rpmconfig_SCRIPTS = \
|
|
||||||
brp-compress brp-python-bytecompile brp-java-gcjcompile \
|
|
||||||
+ brp-lib64-linux \
|
|
||||||
brp-strip brp-strip-comment-note \
|
|
||||||
brp-strip-shared brp-strip-static-archive \
|
|
||||||
+ brp-symlink \
|
|
||||||
check-files check-prereqs \
|
|
||||||
check-buildroot check-rpaths check-rpaths-worker \
|
|
||||||
find-lang.sh \
|
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
Index: scripts/brp-compress
|
--- ./scripts/brp-compress.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/brp-compress 2011-05-11 14:44:21.000000000 +0000
|
||||||
--- scripts/brp-compress.orig
|
@@ -5,51 +5,78 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD
|
||||||
+++ scripts/brp-compress
|
|
||||||
@@ -1,56 +1,83 @@
|
|
||||||
-#!/bin/sh
|
|
||||||
+#!/bin/bash
|
|
||||||
|
|
||||||
# If using normal root, avoid changing anything.
|
|
||||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -29,13 +22,13 @@ Index: scripts/brp-compress
|
|||||||
+ inode=`ls -i $b | awk '{ print $1 }'`
|
+ inode=`ls -i $b | awk '{ print $1 }'`
|
||||||
+ others=`find $dir -type f -inum $inode`
|
+ others=`find $dir -type f -inum $inode`
|
||||||
+ for afile in $others ; do
|
+ for afile in $others ; do
|
||||||
+ [ "$afile" != "$b" ] && rm -f $afile
|
+ [ "$afile" != "$b" ] && rm -f "$afile"
|
||||||
+ done
|
+ done
|
||||||
+
|
+
|
||||||
+ case $b in
|
+ case $b in
|
||||||
+ *.Z|*.gz) gunzip $b ;;
|
+ *.Z|*.gz) gunzip $b ;;
|
||||||
+ *.bz2) bunzip2 $b ;;
|
+ *.bz2) bunzip2 $b ;;
|
||||||
+ *.xz|*.lzma) unxz $b ;;
|
+ *.xz|*.lzma) unxz $b ;;
|
||||||
+ esac
|
+ esac
|
||||||
+
|
+
|
||||||
+ type=${b##*.}
|
+ type=${b##*.}
|
||||||
@ -50,21 +43,19 @@ Index: scripts/brp-compress
|
|||||||
./usr/share/doc/*/man/man* ./usr/lib/*/man/man*
|
./usr/share/doc/*/man/man* ./usr/lib/*/man/man*
|
||||||
do
|
do
|
||||||
[ -d $d ] || continue
|
[ -d $d ] || continue
|
||||||
- for f in `find $d -type f`
|
- for f in `find $d -type f ! -name dir`
|
||||||
+ find $d -type f | while read f
|
+ find $d -type f ! -name dir | while read f
|
||||||
do
|
do
|
||||||
[ -f "$f" ] || continue
|
[ -f "$f" ] || continue
|
||||||
- [ "`basename $f`" = "dir" ] && continue
|
|
||||||
+ [ "`basename \"$f\"`" = "dir" ] && continue
|
|
||||||
|
|
||||||
case "$f" in
|
case "$f" in
|
||||||
- *.gz|*.Z) gunzip $f; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
- *.gz|*.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
||||||
- *.bz2) bunzip2 $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
- *.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
||||||
- *.xz|*.lzma) unxz $f; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
- *.xz|*.lzma) unxz -f $f; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
||||||
- *) b=$f;;
|
- *) b=$f;;
|
||||||
+ *.gz|*.Z) gunzip "$f" || check_for_hard_link $d "$f"; b="`echo $f | sed -e 's/\.\(gz\|Z\)$//'`";;
|
+ *.gz|*.Z) gunzip "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;;
|
||||||
+ *.bz2) bunzip2 "$f" || check_for_hard_link $d "$f"; b="`echo $f | sed -e 's/\.bz2$//'`";;
|
+ *.bz2) bunzip2 "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.bz2$//'`;;
|
||||||
+ *.xz|*.lzma) unxz "$f" || check_for_hard_link $d "$f"; b="`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`";;
|
+ *.xz|*.lzma) unxz "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;;
|
||||||
+ *) b="$f";;
|
+ *) b="$f";;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -99,7 +90,7 @@ Index: scripts/brp-compress
|
|||||||
- ln -sf $l$COMPRESS_EXT $b$COMPRESS_EXT
|
- ln -sf $l$COMPRESS_EXT $b$COMPRESS_EXT
|
||||||
+ l="`ls -l "$f" | sed -e 's/.* -> //' -e 's/\.\(gz\|Z\|bz2\|xz\|lzma\)$//'`"
|
+ l="`ls -l "$f" | sed -e 's/.* -> //' -e 's/\.\(gz\|Z\|bz2\|xz\|lzma\)$//'`"
|
||||||
+ rm -f "$f"
|
+ rm -f "$f"
|
||||||
+ b="`echo $f | sed -e 's/\.\(gz\|Z\|bz2\|xz\|lzma\)$//'`"
|
+ b="`echo "$f" | sed -e 's/\.\(gz\|Z\|bz2\|xz\|lzma\)$//'`"
|
||||||
+ ln -sf "$l$COMPRESS_EXT" "$b$COMPRESS_EXT"
|
+ ln -sf "$l$COMPRESS_EXT" "$b$COMPRESS_EXT"
|
||||||
done
|
done
|
||||||
done
|
done
|
18
build.diff
18
build.diff
@ -1,9 +1,9 @@
|
|||||||
Many changes to Makefiles/autogen and the like to make it build
|
Many changes to Makefiles/autogen and the like to make it build
|
||||||
on SUSE systems.
|
on SUSE systems.
|
||||||
|
|
||||||
--- ./configure.ac.orig 2010-03-24 16:35:40.000000000 +0000
|
--- ./configure.ac.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
+++ ./configure.ac 2010-03-25 15:16:21.000000000 +0000
|
+++ ./configure.ac 2011-05-11 15:18:44.000000000 +0000
|
||||||
@@ -1006,6 +1006,7 @@ arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm
|
@@ -850,6 +850,7 @@ arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm
|
||||||
mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
|
mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
|
||||||
mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
|
mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
|
||||||
m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
|
m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
|
||||||
@ -11,7 +11,7 @@ on SUSE systems.
|
|||||||
sh3*) RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
|
sh3*) RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
|
||||||
sh4*) RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
|
sh4*) RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
|
||||||
*) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
|
*) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
|
||||||
@@ -1016,6 +1017,7 @@ esac
|
@@ -860,6 +861,7 @@ esac
|
||||||
RPMCANONVENDOR="$build_vendor"
|
RPMCANONVENDOR="$build_vendor"
|
||||||
case "${build_vendor}" in
|
case "${build_vendor}" in
|
||||||
unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
|
unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
|
||||||
@ -19,7 +19,7 @@ on SUSE systems.
|
|||||||
test -f /etc/redhat-release && RPMCANONVENDOR=redhat
|
test -f /etc/redhat-release && RPMCANONVENDOR=redhat
|
||||||
test -f /etc/SuSE-release && RPMCANONVENDOR=suse
|
test -f /etc/SuSE-release && RPMCANONVENDOR=suse
|
||||||
test -f /etc/pld-release && RPMCANONVENDOR=pld
|
test -f /etc/pld-release && RPMCANONVENDOR=pld
|
||||||
@@ -1028,6 +1030,9 @@ unknown|pc|ibm|redhat|pld|mandrake|conec
|
@@ -872,6 +874,9 @@ unknown|pc|ibm|redhat|pld|mandrake|conec
|
||||||
esac
|
esac
|
||||||
RPMCANONOS="$host_os_noversion"
|
RPMCANONOS="$host_os_noversion"
|
||||||
RPMCANONGNU="$host_os_gnu"
|
RPMCANONGNU="$host_os_gnu"
|
||||||
@ -29,8 +29,8 @@ on SUSE systems.
|
|||||||
AC_SUBST(RPMCANONCOLOR)
|
AC_SUBST(RPMCANONCOLOR)
|
||||||
AC_SUBST(RPMCANONARCH)
|
AC_SUBST(RPMCANONARCH)
|
||||||
AC_SUBST(RPMCANONVENDOR)
|
AC_SUBST(RPMCANONVENDOR)
|
||||||
--- ./db3/configure.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./db3/configure.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./db3/configure 2010-03-25 15:17:41.000000000 +0000
|
+++ ./db3/configure 2011-05-11 15:18:44.000000000 +0000
|
||||||
@@ -10,9 +10,9 @@ rm -f config.cache
|
@@ -10,9 +10,9 @@ rm -f config.cache
|
||||||
# XXX edit CFLAGS= ... out of invocation args ???
|
# XXX edit CFLAGS= ... out of invocation args ???
|
||||||
ARGS="`echo $* | sed -e 's% [^ ]*CFLAGS=[^ ]*%%' -e 's% -[^-][^ ]*%%g' -e 's% --param=[^ ]*%%g' -e 's%--cache-file=.*$%%'`"
|
ARGS="`echo $* | sed -e 's% [^ ]*CFLAGS=[^ ]*%%' -e 's% -[^-][^ ]*%%g' -e 's% --param=[^ ]*%%g' -e 's%--cache-file=.*$%%'`"
|
||||||
@ -43,8 +43,8 @@ on SUSE systems.
|
|||||||
|
|
||||||
mv Makefile Makefile.orig
|
mv Makefile Makefile.orig
|
||||||
cat Makefile.orig | sed -e '/^install[:-]/c\
|
cat Makefile.orig | sed -e '/^install[:-]/c\
|
||||||
--- ./installplatform.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./installplatform.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./installplatform 2010-03-25 15:16:21.000000000 +0000
|
+++ ./installplatform 2011-05-11 15:18:44.000000000 +0000
|
||||||
@@ -47,9 +47,9 @@ for SUBST in $SUBSTS ; do
|
@@ -47,9 +47,9 @@ for SUBST in $SUBSTS ; do
|
||||||
ARCH_INSTALL_POST='%{nil}'
|
ARCH_INSTALL_POST='%{nil}'
|
||||||
case "${ARCH}-${OS}" in
|
case "${ARCH}-${OS}" in
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From: Jan Blunck <jblunck@suse.de>
|
From: Jan Blunck <jblunck@suse.de>
|
||||||
Subject: Let debuginfo packages provide the build-id
|
Subject: Let debuginfo packages provide the build-id
|
||||||
|
|
||||||
This patch let debuginfo packages provide build-id like follows:
|
This patch lets debuginfo packages provide build-id like follows:
|
||||||
|
|
||||||
debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517
|
debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517
|
||||||
|
|
||||||
@ -9,17 +9,8 @@ Users can therefore ask zypper to install the correct debuginfo package with:
|
|||||||
|
|
||||||
zypper install -C "debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517"
|
zypper install -C "debuginfo(build-id) = c63cb23876c5fa85f36beaff58f8557e1bf22517"
|
||||||
|
|
||||||
Signed-off-by: Jan Blunck <jblunck@suse.de>
|
--- ./autodeps/linux.prov.orig 2011-05-11 15:58:28.000000000 +0000
|
||||||
---
|
+++ ./autodeps/linux.prov 2011-05-11 15:59:31.000000000 +0000
|
||||||
autodeps/linux.prov | 8 ++++++++
|
|
||||||
macros.in | 3 ++-
|
|
||||||
scripts/debuginfo.prov | 12 ++++++++++++
|
|
||||||
3 files changed, 22 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: autodeps/linux.prov
|
|
||||||
===================================================================
|
|
||||||
--- autodeps/linux.prov.orig
|
|
||||||
+++ autodeps/linux.prov
|
|
||||||
@@ -5,6 +5,9 @@
|
@@ -5,6 +5,9 @@
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
filelist=($(cat))
|
filelist=($(cat))
|
||||||
@ -42,11 +33,9 @@ Index: autodeps/linux.prov
|
|||||||
# --- Mono exes/dlls
|
# --- Mono exes/dlls
|
||||||
: ${MONO_PREFIX=/usr}
|
: ${MONO_PREFIX=/usr}
|
||||||
if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
|
if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
|
||||||
Index: macros.in
|
--- ./macros.in.orig 2011-05-11 15:59:08.000000000 +0000
|
||||||
===================================================================
|
+++ ./macros.in 2011-05-11 15:59:31.000000000 +0000
|
||||||
--- macros.in.orig
|
@@ -182,7 +182,8 @@
|
||||||
+++ macros.in
|
|
||||||
@@ -179,7 +179,8 @@
|
|
||||||
%package debuginfo\
|
%package debuginfo\
|
||||||
Summary: Debug information for package %{name}\
|
Summary: Debug information for package %{name}\
|
||||||
Group: Development/Debug\
|
Group: Development/Debug\
|
||||||
@ -56,10 +45,8 @@ Index: macros.in
|
|||||||
#Requires: %{?!debug_package_requires:%{name} = %{version}-%{release}}%{?debug_package_requires}\
|
#Requires: %{?!debug_package_requires:%{name} = %{version}-%{release}}%{?debug_package_requires}\
|
||||||
%description debuginfo\
|
%description debuginfo\
|
||||||
This package provides debug information for package %{name}.\
|
This package provides debug information for package %{name}.\
|
||||||
Index: scripts/debuginfo.prov
|
--- ./scripts/debuginfo.prov.orig 2011-05-11 15:59:31.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/debuginfo.prov 2011-05-11 15:59:31.000000000 +0000
|
||||||
--- /dev/null
|
|
||||||
+++ scripts/debuginfo.prov
|
|
||||||
@@ -0,0 +1,12 @@
|
@@ -0,0 +1,12 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+
|
+
|
||||||
|
@ -1,28 +1,50 @@
|
|||||||
Warn the user if chown/fchown fails.
|
Do not abort if chown/chmod fails but the file is already correct
|
||||||
|
|
||||||
Index: lib/fsm.c
|
--- ./lib/fsm.c.orig 2011-03-02 06:46:13.000000000 +0000
|
||||||
===================================================================
|
+++ ./lib/fsm.c 2011-05-10 16:30:55.000000000 +0000
|
||||||
--- lib/fsm.c.orig
|
@@ -1449,6 +1449,11 @@ static int fsmRename(FSM_t fsm)
|
||||||
+++ lib/fsm.c
|
static int fsmChown(FSM_t fsm)
|
||||||
@@ -2093,6 +2093,10 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS
|
{
|
||||||
break;
|
int rc = chown(fsm->path, fsm->sb.st_uid, fsm->sb.st_gid);
|
||||||
case FSM_CHOWN:
|
+ if (rc < 0) {
|
||||||
rc = chown(fsm->path, st->st_uid, st->st_gid);
|
+ struct stat st;
|
||||||
+ if (rc < 0 && errno == EPERM) {
|
+ if (lstat(fsm->path, &st) == 0 && st.st_uid == fsm->sb.st_uid && st.st_gid == fsm->sb.st_gid)
|
||||||
+ rpmlog(RPMLOG_WARNING, "can't chown %s (%s)\n", fsm->path, strerror(errno));
|
|
||||||
+ rc = 0;
|
+ rc = 0;
|
||||||
+ }
|
+ }
|
||||||
if (_fsm_debug && (stage & FSM_SYSCALL))
|
if (_fsm_debug && (FSM_CHOWN & FSM_SYSCALL))
|
||||||
rpmlog(RPMLOG_DEBUG, " %8s (%s, %d, %d) %s\n", cur,
|
rpmlog(RPMLOG_DEBUG, " %8s (%s, %d, %d) %s\n", fileStageString(FSM_CHOWN),
|
||||||
fsm->path, (int)st->st_uid, (int)st->st_gid,
|
fsm->path, (int)fsm->sb.st_uid, (int)fsm->sb.st_gid,
|
||||||
@@ -2102,6 +2106,10 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS
|
@@ -1461,6 +1466,11 @@ static int fsmLChown(FSM_t fsm)
|
||||||
case FSM_LCHOWN:
|
{
|
||||||
#if ! CHOWN_FOLLOWS_SYMLINK
|
int rc = 0;
|
||||||
rc = lchown(fsm->path, st->st_uid, st->st_gid);
|
rc = lchown(fsm->path, fsm->sb.st_uid, fsm->sb.st_gid);
|
||||||
+ if (rc < 0 && errno == EPERM) {
|
+ if (rc < 0) {
|
||||||
+ rpmlog(RPMLOG_WARNING, "can't lchown %s (%s)\n", fsm->path, strerror(errno));
|
+ struct stat st;
|
||||||
|
+ if (lstat(fsm->path, &st) == 0 && st.st_uid == fsm->sb.st_uid && st.st_gid == fsm->sb.st_gid)
|
||||||
+ rc = 0;
|
+ rc = 0;
|
||||||
+ }
|
+ }
|
||||||
if (_fsm_debug && (stage & FSM_SYSCALL))
|
if (_fsm_debug && (FSM_LCHOWN & FSM_SYSCALL))
|
||||||
rpmlog(RPMLOG_DEBUG, " %8s (%s, %d, %d) %s\n", cur,
|
rpmlog(RPMLOG_DEBUG, " %8s (%s, %d, %d) %s\n", fileStageString(FSM_LCHOWN),
|
||||||
fsm->path, (int)st->st_uid, (int)st->st_gid,
|
fsm->path, (int)fsm->sb.st_uid, (int)fsm->sb.st_gid,
|
||||||
|
@@ -1472,6 +1482,11 @@ static int fsmLChown(FSM_t fsm)
|
||||||
|
static int fsmChmod(FSM_t fsm)
|
||||||
|
{
|
||||||
|
int rc = chmod(fsm->path, (fsm->sb.st_mode & 07777));
|
||||||
|
+ if (rc < 0) {
|
||||||
|
+ struct stat st;
|
||||||
|
+ if (lstat(fsm->path, &st) == 0 && (st.st_mode & 07777) == (fsm->sb.st_mode & 07777))
|
||||||
|
+ rc = 0;
|
||||||
|
+ }
|
||||||
|
if (_fsm_debug && (FSM_CHMOD & FSM_SYSCALL))
|
||||||
|
rpmlog(RPMLOG_DEBUG, " %8s (%s, 0%04o) %s\n", fileStageString(FSM_CHMOD),
|
||||||
|
fsm->path, (unsigned)(fsm->sb.st_mode & 07777),
|
||||||
|
@@ -2033,6 +2048,9 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS
|
||||||
|
st->st_mtime = rpmfiFMtimeIndex(fi, fsm->ix);
|
||||||
|
rc = fsmUtime(fsm);
|
||||||
|
st->st_mtime = mtime;
|
||||||
|
+ /* utime error is not critical for directories */
|
||||||
|
+ if (rc && S_ISDIR(st->st_mode))
|
||||||
|
+ rc = 0;
|
||||||
|
}
|
||||||
|
#if WITH_CAP
|
||||||
|
if (!rc && !S_ISDIR(st->st_mode) && !getuid()) {
|
||||||
|
@ -1,25 +1,21 @@
|
|||||||
Build convertdb1, too.
|
Build convertdb1, too.
|
||||||
|
|
||||||
Index: Makefile.am
|
--- ./Makefile.am.orig 2011-05-11 15:15:27.000000000 +0000
|
||||||
===================================================================
|
+++ ./Makefile.am 2011-05-11 15:18:21.000000000 +0000
|
||||||
--- Makefile.am.orig
|
@@ -174,6 +174,10 @@ bin_PROGRAMS += rpmqpack
|
||||||
+++ Makefile.am
|
|
||||||
@@ -143,6 +143,10 @@ bin_PROGRAMS += rpmqpack
|
|
||||||
rpmqpack_SOURCES = rpmqpack.c
|
rpmqpack_SOURCES = rpmqpack.c
|
||||||
rpmqpack_LDADD = lib/librpm.la
|
rpmqpack_LDADD = lib/librpm.la
|
||||||
|
|
||||||
+check_PROGRAMS += convertdb1
|
+bin_PROGRAMS += convertdb1
|
||||||
+convertdb1_SOURCES = tools/convertdb1.c
|
+convertdb1_SOURCES = tools/convertdb1.c
|
||||||
+convertdb1_LDADD = lib/librpm.la
|
+convertdb1_LDADD = lib/librpm.la
|
||||||
+
|
+
|
||||||
rpmconfig_DATA = rpmrc
|
rpmconfig_DATA = rpmrc
|
||||||
rpmrc: $(top_srcdir)/rpmrc.in
|
rpmrc: $(top_srcdir)/rpmrc.in
|
||||||
@$(SED) \
|
@$(SED) \
|
||||||
Index: tools/convertdb1.c
|
--- tools/convertdb1.c.orig 2011-05-12 13:31:37.000000000 +0000
|
||||||
===================================================================
|
+++ tools/convertdb1.c 2011-05-12 13:31:28.000000000 +0000
|
||||||
--- /dev/null
|
@@ -0,0 +1,351 @@
|
||||||
+++ tools/convertdb1.c
|
|
||||||
@@ -0,0 +1,346 @@
|
|
||||||
+#if defined(HAVE_CONFIG_H)
|
+#if defined(HAVE_CONFIG_H)
|
||||||
+#include "system.h"
|
+#include "system.h"
|
||||||
+const char *__progname;
|
+const char *__progname;
|
||||||
@ -30,6 +26,7 @@ Index: tools/convertdb1.c
|
|||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#include <rpmlib.h>
|
+#include <rpmlib.h>
|
||||||
|
+#include <rpmts.h>
|
||||||
+#include <rpmdb.h>
|
+#include <rpmdb.h>
|
||||||
+#include <rpmio.h>
|
+#include <rpmio.h>
|
||||||
+#include <rpmmacro.h>
|
+#include <rpmmacro.h>
|
||||||
@ -305,6 +302,7 @@ Index: tools/convertdb1.c
|
|||||||
+ const char *name;
|
+ const char *name;
|
||||||
+ const char *version;
|
+ const char *version;
|
||||||
+ const char *release;
|
+ const char *release;
|
||||||
|
+ rpmts ts;
|
||||||
+
|
+
|
||||||
+ if (argc != 2)
|
+ if (argc != 2)
|
||||||
+ {
|
+ {
|
||||||
@ -321,7 +319,9 @@ Index: tools/convertdb1.c
|
|||||||
+ /* speed things up */
|
+ /* speed things up */
|
||||||
+ (void) rpmDefineMacro(NULL, "_rpmdb_rebuild %{nil}", -1);
|
+ (void) rpmDefineMacro(NULL, "_rpmdb_rebuild %{nil}", -1);
|
||||||
+
|
+
|
||||||
+ if (rpmdbOpen("/", &db, O_RDWR, 0644)) {
|
+ ts = rpmtsCreate();
|
||||||
|
+
|
||||||
|
+ if (rpmtsOpenDB(ts, O_RDWR)) {
|
||||||
+ fprintf(stderr, "could not open rpm database\n");
|
+ fprintf(stderr, "could not open rpm database\n");
|
||||||
+ exit(1);
|
+ exit(1);
|
||||||
+ }
|
+ }
|
||||||
@ -355,14 +355,15 @@ Index: tools/convertdb1.c
|
|||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
+ rpmdbFreeIterator(mi);
|
+ rpmdbFreeIterator(mi);
|
||||||
+ if (rpmdbAdd(db, -1, h, 0, 0))
|
+ if (rpmtsHeaderAddDB(ts, h))
|
||||||
+ {
|
+ {
|
||||||
+ fprintf(stderr, "could not add %s-%s-%s!\n", name, version, release);
|
+ fprintf(stderr, "could not add %s-%s-%s!\n", name, version, release);
|
||||||
+ }
|
+ }
|
||||||
+ headerFree(h);
|
+ headerFree(h);
|
||||||
+ }
|
+ }
|
||||||
+ Fclose(fd);
|
+ Fclose(fd);
|
||||||
+ rpmdbClose(db);
|
+ rpmtsCloseDB(ts);
|
||||||
|
+ rpmtsFree(ts);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
3
db-4.8.30.tar.bz2
Normal file
3
db-4.8.30.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2ba998b7451758928011878514c78b8a6f0fbfd49ebf5cc9f4269f4666414ab4
|
||||||
|
size 19969243
|
203
db.diff
203
db.diff
@ -1,179 +1,82 @@
|
|||||||
--- db/db/db.c
|
--- db/db/db.c.orig 2010-04-12 20:25:22.000000000 +0000
|
||||||
+++ db/db/db.c
|
+++ db/db/db.c 2011-05-12 11:38:59.000000000 +0000
|
||||||
@@ -591,6 +591,8 @@ __db_dbenv_mpool(dbp, fname, flags)
|
@@ -646,6 +646,8 @@ __env_mpool(dbp, fname, flags)
|
||||||
(F_ISSET(dbp, DB_AM_NOT_DURABLE) ? DB_TXN_NOT_DURABLE : 0),
|
MAKE_INMEM(dbp);
|
||||||
0, dbp->pgsize)) != 0)
|
|
||||||
return (ret);
|
return (ret);
|
||||||
|
}
|
||||||
+ if (LF_ISSET(DB_NOFSYNC) && mpf->mfp)
|
+ if (LF_ISSET(DB_NOFSYNC) && mpf->mfp)
|
||||||
+ F_SET(mpf->mfp, MP_NOFSYNC);
|
+ F_SET(mpf->mfp, MP_NOFSYNC);
|
||||||
|
|
||||||
return (0);
|
/*
|
||||||
}
|
* Set the open flag. We use it to mean that the dbp has gone
|
||||||
--- db/db/db_iface.c
|
--- db/db/db_iface.c.orig 2010-04-12 20:25:22.000000000 +0000
|
||||||
+++ db/db/db_iface.c
|
+++ db/db/db_iface.c 2011-05-12 11:21:32.000000000 +0000
|
||||||
@@ -1068,7 +1068,7 @@ __db_open_arg(dbp, txn, fname, dname, ty
|
@@ -1230,6 +1230,7 @@ __db_open_arg(dbp, txn, fname, dname, ty
|
||||||
#define OKFLAGS \
|
#define OKFLAGS \
|
||||||
(DB_AUTO_COMMIT | DB_CREATE | DB_DIRTY_READ | DB_EXCL | \
|
(DB_AUTO_COMMIT | DB_CREATE | DB_EXCL | DB_FCNTL_LOCKING | \
|
||||||
DB_FCNTL_LOCKING | DB_NO_AUTO_COMMIT | DB_NOMMAP | DB_RDONLY | \
|
DB_MULTIVERSION | DB_NOMMAP | DB_NO_AUTO_COMMIT | DB_RDONLY | \
|
||||||
- DB_RDWRMASTER | DB_THREAD | DB_TRUNCATE | DB_WRITEOPEN)
|
+ DB_NOFSYNC | \
|
||||||
+ DB_RDWRMASTER | DB_THREAD | DB_TRUNCATE | DB_WRITEOPEN | DB_NOFSYNC)
|
DB_RDWRMASTER | DB_READ_UNCOMMITTED | DB_THREAD | DB_TRUNCATE)
|
||||||
if ((ret = __db_fchk(dbenv, "DB->open", flags, OKFLAGS)) != 0)
|
if ((ret = __db_fchk(env, "DB->open", flags, OKFLAGS)) != 0)
|
||||||
return (ret);
|
return (ret);
|
||||||
if (LF_ISSET(DB_EXCL) && !LF_ISSET(DB_CREATE))
|
--- db/dbinc/mp.h.orig 2010-04-12 20:25:22.000000000 +0000
|
||||||
--- db/dbinc/db.in
|
+++ db/dbinc/mp.h 2011-05-12 12:01:32.000000000 +0000
|
||||||
+++ db/dbinc/db.in
|
@@ -467,6 +467,7 @@ struct __mpoolfile {
|
||||||
@@ -260,6 +260,7 @@ struct __db_dbt {
|
|
||||||
#define DB_FCNTL_LOCKING 0x0002000 /* UNDOC: fcntl(2) locking. */
|
|
||||||
#define DB_RDWRMASTER 0x0004000 /* UNDOC: allow subdb master open R/W */
|
|
||||||
#define DB_WRITEOPEN 0x0008000 /* UNDOC: open with write lock. */
|
|
||||||
+#define DB_NOFSYNC 0x0010000 /* UNDOC: don't fsync */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Flags private to DB_ENV->txn_begin.
|
|
||||||
--- db/dbinc/mp.h
|
|
||||||
+++ db/dbinc/mp.h
|
|
||||||
@@ -309,6 +309,7 @@ struct __mpoolfile {
|
|
||||||
#define MP_FAKE_UOC 0x080 /* Unlink_on_close field: fake flag. */
|
#define MP_FAKE_UOC 0x080 /* Unlink_on_close field: fake flag. */
|
||||||
#define MP_NOT_DURABLE 0x100 /* File is not durable. */
|
#define MP_NOT_DURABLE 0x100 /* File is not durable. */
|
||||||
#define MP_TEMP 0x200 /* Backing file is a temporary. */
|
#define MP_TEMP 0x200 /* Backing file is a temporary. */
|
||||||
+#define MP_NOFSYNC 0x400 /* Don't fsync */
|
+#define MP_NOFSYNC 0x400 /* Don't fsync */
|
||||||
u_int32_t flags;
|
u_int32_t flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
--- db/dist/aclocal/options.ac
|
--- db/dbinc_auto/api_flags.in.orig 2011-05-12 11:40:57.000000000 +0000
|
||||||
+++ db/dist/aclocal/options.ac
|
+++ db/dbinc_auto/api_flags.in 2011-05-12 11:55:10.000000000 +0000
|
||||||
@@ -277,10 +277,6 @@ fi
|
@@ -83,6 +83,7 @@
|
||||||
|
#define DB_NOORDERCHK 0x00000002
|
||||||
# Uniquename excludes C++, Java, RPC.
|
#define DB_NOPANIC 0x00000800
|
||||||
if test "$db_cv_uniquename" = "yes"; then
|
#define DB_NO_AUTO_COMMIT 0x00001000
|
||||||
- if test "$db_cv_rpc" = "yes"; then
|
+#define DB_NOFSYNC 0x00040000
|
||||||
- AC_MSG_ERROR(
|
#define DB_ODDFILESIZE 0x00000080
|
||||||
- [--with-uniquename is not compatible with --enable-rpc])
|
#define DB_ORDERCHKONLY 0x00000004
|
||||||
- fi
|
#define DB_OVERWRITE 0x00001000
|
||||||
if test "$db_cv_cxx" = "yes"; then
|
--- db/dist/s_config.orig 2010-04-12 20:25:23.000000000 +0000
|
||||||
AC_MSG_ERROR(
|
+++ db/dist/s_config 2011-05-12 12:00:34.000000000 +0000
|
||||||
[--with-uniquename is not compatible with --enable-cxx])
|
|
||||||
--- db/dist/configure.ac
|
|
||||||
+++ db/dist/configure.ac
|
|
||||||
@@ -690,14 +690,14 @@ LTLIBOBJS=`echo "$LIB@&t@OBJS" |
|
|
||||||
AC_SUBST(LTLIBOBJS)
|
|
||||||
|
|
||||||
# Initial output file list.
|
|
||||||
-CREATE_LIST="Makefile
|
|
||||||
- db_cxx.h:$srcdir/../dbinc/db_cxx.in
|
|
||||||
- db_int.h:$srcdir/../dbinc/db_int.in
|
|
||||||
+CREATE_LIST="Makefile \
|
|
||||||
+ db_cxx.h:$srcdir/../dbinc/db_cxx.in \
|
|
||||||
+ db_int.h:$srcdir/../dbinc/db_int.in \
|
|
||||||
include.tcl:$srcdir/../test/include.tcl"
|
|
||||||
|
|
||||||
# MinGW needs win_db.h.
|
|
||||||
if test "$db_cv_mingw" = "yes"; then
|
|
||||||
-CREATE_LIST="$CREATE_LIST
|
|
||||||
+CREATE_LIST="$CREATE_LIST \
|
|
||||||
win_db.h:$srcdir/win_db.in"
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -705,10 +705,10 @@ fi
|
|
||||||
# prototypes, and, if configured for unique names, a list of #defines
|
|
||||||
# to do DB_VERSION_UNIQUE_NAME substitution.
|
|
||||||
if test "$db_cv_uniquename" = "yes"; then
|
|
||||||
- CREATE_LIST="$CREATE_LIST
|
|
||||||
+ CREATE_LIST="$CREATE_LIST \
|
|
||||||
db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/ext_def.in:$srcdir/../dbinc_auto/ext_prot.in"
|
|
||||||
else
|
|
||||||
- CREATE_LIST="$CREATE_LIST
|
|
||||||
+ CREATE_LIST="$CREATE_LIST \
|
|
||||||
db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/ext_prot.in"
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -716,7 +716,7 @@ fi
|
|
||||||
# does the DB_VERSION_UNIQUE_NAME substitution), which is included by
|
|
||||||
# the db_int.h file.
|
|
||||||
if test "$db_cv_uniquename" = "yes"; then
|
|
||||||
- CREATE_LIST="$CREATE_LIST
|
|
||||||
+ CREATE_LIST="$CREATE_LIST \
|
|
||||||
db_int_def.h:$srcdir/../dbinc_auto/int_def.in"
|
|
||||||
db_int_def='#include "db_int_def.h"'
|
|
||||||
fi
|
|
||||||
@@ -726,12 +726,12 @@ fi
|
|
||||||
# of #defines to do DB_VERSION_UNIQUE_NAME substitution.
|
|
||||||
if test "$db_cv_compat185" = "yes"; then
|
|
||||||
if test "$db_cv_uniquename" = "yes"; then
|
|
||||||
- CREATE_LIST="$CREATE_LIST
|
|
||||||
- db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in
|
|
||||||
+ CREATE_LIST="$CREATE_LIST \
|
|
||||||
+ db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in \
|
|
||||||
db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in"
|
|
||||||
else
|
|
||||||
- CREATE_LIST="$CREATE_LIST
|
|
||||||
- db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_prot.in
|
|
||||||
+ CREATE_LIST="$CREATE_LIST \
|
|
||||||
+ db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_prot.in \
|
|
||||||
db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_prot.in"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
--- db/dist/s_config
|
|
||||||
+++ db/dist/s_config
|
|
||||||
@@ -8,7 +8,8 @@ trap 'rm -f aclocal.m4 ; exit 0' 0 1 2 3
|
@@ -8,7 +8,8 @@ trap 'rm -f aclocal.m4 ; exit 0' 0 1 2 3
|
||||||
. ./RELEASE
|
. ./RELEASE
|
||||||
|
|
||||||
echo "autoconf: building aclocal.m4..."
|
echo "autoconf: building aclocal.m4..."
|
||||||
-cat aclocal/*.ac aclocal_java/*.ac > aclocal.m4
|
-cat aclocal/*.m4 aclocal_java/*.m4 > aclocal.m4
|
||||||
+cat aclocal/*.ac aclocal_java/*.ac > acinclude.m4
|
+cat aclocal/*.m4 aclocal_java/*.m4 > acinclude.m4
|
||||||
+aclocal
|
+aclocal
|
||||||
|
|
||||||
echo "autoconf: running autoheader to build config.hin..."
|
echo "autoconf: running autoheader to build config.hin..."
|
||||||
rm -f config.hin
|
rm -f config.hin
|
||||||
@@ -20,14 +21,13 @@ rm -f configure
|
--- db/mp/mp_sync.c.orig 2010-04-12 20:25:34.000000000 +0000
|
||||||
autoconf
|
+++ db/mp/mp_sync.c 2011-05-12 11:36:58.000000000 +0000
|
||||||
|
@@ -578,7 +578,7 @@ done: /*
|
||||||
# Edit version information we couldn't pre-compute.
|
if (ret == 0 && required_write) {
|
||||||
-(echo "1,\$s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g" &&
|
|
||||||
- echo "1,\$s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g" &&
|
|
||||||
- echo "1,\$s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g" &&
|
|
||||||
- echo "1,\$s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g" &&
|
|
||||||
- echo "1,\$s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g" &&
|
|
||||||
- echo "1,\$s/__EDIT_DB_VERSION__/$DB_VERSION/g" &&
|
|
||||||
- echo "w" &&
|
|
||||||
- echo "q") | ed configure
|
|
||||||
+sed -e "s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g" \
|
|
||||||
+ -e "s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g" \
|
|
||||||
+ -e "s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g" \
|
|
||||||
+ -e "s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g" \
|
|
||||||
+ -e "s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g" \
|
|
||||||
+ -e "s/__EDIT_DB_VERSION__/$DB_VERSION/g" \
|
|
||||||
+ -i configure
|
|
||||||
|
|
||||||
rm -rf autom4te.cache
|
|
||||||
chmod 555 configure
|
|
||||||
--- db/mp/mp_sync.c
|
|
||||||
+++ db/mp/mp_sync.c
|
|
||||||
@@ -553,7 +553,7 @@ done: /*
|
|
||||||
if (ret == 0 && (op == DB_SYNC_CACHE || op == DB_SYNC_FILE)) {
|
|
||||||
if (dbmfp == NULL)
|
if (dbmfp == NULL)
|
||||||
ret = __memp_sync_files(dbenv, dbmp);
|
ret = __memp_sync_files(env);
|
||||||
- else
|
- else
|
||||||
+ else if (!dbmfp->mfp || !F_ISSET(dbmfp->mfp, MP_NOFSYNC))
|
+ else if (!F_ISSET(dbmfp->mfp, MP_NOFSYNC))
|
||||||
ret = __os_fsync(dbenv, dbmfp->fhp);
|
ret = __os_fsync(env, dbmfp->fhp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,7 +600,7 @@ int __memp_sync_files(dbenv, dbmp)
|
@@ -665,7 +665,7 @@ __memp_sync_file(env, mfp, argp, countp,
|
||||||
MUTEX_THREAD_LOCK(dbenv, dbmp->mutexp);
|
"%s: unable to flush", (char *)
|
||||||
for (dbmfp = TAILQ_FIRST(&dbmp->dbmfq);
|
R_ADDR(dbmp->reginfo, mfp->path_off));
|
||||||
dbmfp != NULL; dbmfp = TAILQ_NEXT(dbmfp, q)) {
|
}
|
||||||
- if (dbmfp->mfp != mfp || F_ISSET(dbmfp, MP_READONLY))
|
- } else
|
||||||
+ if (dbmfp->mfp != mfp || F_ISSET(dbmfp, MP_READONLY | MP_NOFSYNC))
|
+ } else if (!F_ISSET(dbmfp->mfp, MP_NOFSYNC))
|
||||||
continue;
|
ret = __os_fsync(env, dbmfp->fhp);
|
||||||
ret = __os_fsync(dbenv, dbmfp->fhp);
|
|
||||||
break;
|
|
||||||
@@ -662,6 +662,9 @@ __memp_mf_sync(dbmp, mfp)
|
|
||||||
|
|
||||||
dbenv = dbmp->dbenv;
|
/*
|
||||||
|
@@ -801,6 +801,8 @@ __memp_mf_sync(dbmp, mfp, locked)
|
||||||
|
COMPQUIET(hp, NULL);
|
||||||
|
env = dbmp->env;
|
||||||
|
|
||||||
+ if (F_ISSET(mfp, MP_NOFSYNC))
|
+ if (F_ISSET(mfp, MP_NOFSYNC))
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
|
||||||
/*
|
/*
|
||||||
* Expects caller to be holding the region lock: we're using the path
|
* We need to be holding the hash lock: we're using the path name
|
||||||
* name and __memp_nameop might try and rename the file.
|
* and __memp_nameop might try and rename the file.
|
||||||
|
54
dbfsync.diff
54
dbfsync.diff
@ -1,50 +1,24 @@
|
|||||||
Support a database-local fsync setting. Needs berkeley db patch.
|
Support a database-local fsync setting. Needs berkeley db patch.
|
||||||
|
|
||||||
--- ./lib/backend/db3.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./lib/backend/dbconfig.c.orig 2011-01-03 13:57:41.000000000 +0000
|
||||||
+++ ./lib/backend/db3.c 2010-03-25 14:35:39.000000000 +0000
|
+++ ./lib/backend/dbconfig.c 2011-05-10 17:00:29.000000000 +0000
|
||||||
@@ -62,10 +62,12 @@ static int db_fini(dbiIndex dbi, const c
|
@@ -58,8 +58,10 @@ static const struct poptOption rdbOption
|
||||||
return rc;
|
{ "mp_size", 0,POPT_ARG_INT, &staticcfg.db_cachesize, 0,
|
||||||
}
|
NULL, NULL },
|
||||||
|
|
||||||
+#if 0
|
+#if 0
|
||||||
static int db3_fsync_disable(int fd)
|
{ "nofsync", 0,POPT_ARG_NONE, &staticcfg.db_no_fsync, 0,
|
||||||
{
|
NULL, NULL },
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
#if (DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 5)
|
/* Per-dbi options */
|
||||||
/*
|
{ "nommap", 0,POPT_BIT_SET, &staticdbi.dbi_oflags, DB_NOMMAP,
|
||||||
@@ -168,10 +170,12 @@ static int db_init(dbiIndex dbi, const c
|
@@ -69,6 +71,8 @@ static const struct poptOption rdbOption
|
||||||
xx = cvtdberr(dbi, "dbenv->set_cachesize", xx, _debug);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if 0
|
|
||||||
if (dbi->dbi_no_fsync) {
|
|
||||||
xx = db_env_set_func_fsync(db3_fsync_disable);
|
|
||||||
xx = cvtdberr(dbi, "db_env_set_func_fsync", xx, _debug);
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
if (dbi->dbi_shmkey) {
|
|
||||||
xx = dbenv->set_shm_key(dbenv, dbi->dbi_shmkey);
|
|
||||||
--- ./lib/backend/dbconfig.c.orig 2009-12-07 14:36:49.000000000 +0000
|
|
||||||
+++ ./lib/backend/dbconfig.c 2010-03-25 14:35:39.000000000 +0000
|
|
||||||
@@ -72,6 +72,8 @@ static const struct poptOption rdbOption
|
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ "fcntl_locking",0,POPT_BIT_SET, &db3dbi.dbi_oflags, DB_FCNTL_LOCKING,
|
{ "lockdbfd", 0,POPT_ARG_NONE, &staticdbi.dbi_lockdbfd, 0,
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
+ { "nofsync", 0,POPT_BIT_SET, &db3dbi.dbi_oflags, DB_NOFSYNC,
|
+ { "nofsync", 0,POPT_BIT_SET, &staticdbi.dbi_oflags, DB_NOFSYNC,
|
||||||
+ NULL, NULL },
|
+ NULL, NULL },
|
||||||
|
|
||||||
{ "btree", 0,POPT_ARG_VAL, &db3dbi.dbi_type, DB_BTREE,
|
POPT_TABLEEND
|
||||||
NULL, NULL },
|
};
|
||||||
@@ -101,8 +103,6 @@ static const struct poptOption rdbOption
|
|
||||||
NULL, NULL },
|
|
||||||
{ "usedbenv", 0,POPT_ARG_NONE, &db3dbi.dbi_use_dbenv, 0,
|
|
||||||
NULL, NULL },
|
|
||||||
- { "nofsync", 0,POPT_ARG_NONE, &db3dbi.dbi_no_fsync, 0,
|
|
||||||
- NULL, NULL },
|
|
||||||
{ "nodbsync", 0,POPT_ARG_NONE, &db3dbi.dbi_no_dbsync, 0,
|
|
||||||
NULL, NULL },
|
|
||||||
{ "lockdbfd", 0,POPT_ARG_NONE, &db3dbi.dbi_lockdbfd, 0,
|
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
Always use DB_PRIVATE. Should probably be configured instead.
|
Always use DB_PRIVATE. Unfortunately no longer configurable
|
||||||
|
in the macros file.
|
||||||
|
|
||||||
Index: lib/backend/db3.c
|
--- lib/backend/db3.c.orig 2011-05-12 15:38:18.000000000 +0000
|
||||||
===================================================================
|
+++ lib/backend/db3.c 2011-05-12 15:38:41.000000000 +0000
|
||||||
--- lib/backend/db3.c.orig
|
@@ -119,7 +119,7 @@ static int db_init(rpmdb rdb, const char
|
||||||
+++ lib/backend/db3.c
|
int retry_open = 2;
|
||||||
@@ -804,6 +804,9 @@ static int db3open(rpmdb rpmdb, rpmTag r
|
struct _dbConfig * cfg = &rdb->cfg;
|
||||||
*/
|
/* This is our setup, thou shall not have other setups before us */
|
||||||
if (dbi->dbi_use_dbenv) {
|
- uint32_t eflags = (DB_CREATE|DB_INIT_MPOOL|DB_INIT_CDB);
|
||||||
|
+ uint32_t eflags = (DB_CREATE|DB_INIT_MPOOL|DB_INIT_CDB|DB_PRIVATE);
|
||||||
|
|
||||||
+ /* always use fcntl lock */
|
if (rdb->db_dbenv != NULL) {
|
||||||
+ dbi->dbi_eflags |= DB_PRIVATE;
|
rdb->db_opens++;
|
||||||
+
|
|
||||||
if (access(dbhome, W_OK) == -1) {
|
|
||||||
|
|
||||||
/* dbhome is unwritable, don't attempt DB_CREATE on DB->open ... */
|
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
Do not block signals if the database is opened read-only, it jst
|
Do not block signals if the database is opened read-only, it just
|
||||||
annoys the users. [#48026]
|
annoys the users. [#48026]
|
||||||
|
|
||||||
Index: lib/rpmdb.c
|
--- ./lib/rpmdb.c.orig 2011-02-28 09:57:27.000000000 +0000
|
||||||
===================================================================
|
+++ ./lib/rpmdb.c 2011-05-10 16:58:21.000000000 +0000
|
||||||
--- lib/rpmdb.c.orig
|
@@ -623,10 +623,12 @@ int rpmdbClose(rpmdb db)
|
||||||
+++ lib/rpmdb.c
|
{
|
||||||
@@ -819,10 +819,12 @@ int rpmdbClose(rpmdb db)
|
|
||||||
rpmdb * prev, next;
|
rpmdb * prev, next;
|
||||||
int dbix;
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
+ int dbmode;
|
+ int dbmode;
|
||||||
|
|
||||||
@ -15,13 +13,18 @@ Index: lib/rpmdb.c
|
|||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
+ dbmode = db->db_mode;
|
+ dbmode = db->db_mode;
|
||||||
(void) rpmdbUnlink(db, RPMDBG_M("rpmdbClose"));
|
(void) rpmdbUnlink(db);
|
||||||
|
|
||||||
if (db->nrefs > 0)
|
if (db->nrefs > 0)
|
||||||
@@ -855,12 +857,14 @@ int rpmdbClose(rpmdb db)
|
@@ -655,11 +657,13 @@ int rpmdbClose(rpmdb db)
|
||||||
|
db = _free(db);
|
||||||
dbiTagsFree();
|
|
||||||
|
|
||||||
|
exit:
|
||||||
|
- (void) rpmsqEnable(-SIGHUP, NULL);
|
||||||
|
- (void) rpmsqEnable(-SIGINT, NULL);
|
||||||
|
- (void) rpmsqEnable(-SIGTERM,NULL);
|
||||||
|
- (void) rpmsqEnable(-SIGQUIT,NULL);
|
||||||
|
- (void) rpmsqEnable(-SIGPIPE,NULL);
|
||||||
+ if ((dbmode & (O_RDWR|O_WRONLY)) != 0) {
|
+ if ((dbmode & (O_RDWR|O_WRONLY)) != 0) {
|
||||||
+ (void) rpmsqEnable(-SIGHUP, NULL);
|
+ (void) rpmsqEnable(-SIGHUP, NULL);
|
||||||
+ (void) rpmsqEnable(-SIGINT, NULL);
|
+ (void) rpmsqEnable(-SIGINT, NULL);
|
||||||
@ -29,31 +32,25 @@ Index: lib/rpmdb.c
|
|||||||
+ (void) rpmsqEnable(-SIGQUIT,NULL);
|
+ (void) rpmsqEnable(-SIGQUIT,NULL);
|
||||||
+ (void) rpmsqEnable(-SIGPIPE,NULL);
|
+ (void) rpmsqEnable(-SIGPIPE,NULL);
|
||||||
+ }
|
+ }
|
||||||
exit:
|
|
||||||
- (void) rpmsqEnable(-SIGHUP, NULL);
|
|
||||||
- (void) rpmsqEnable(-SIGINT, NULL);
|
|
||||||
- (void) rpmsqEnable(-SIGTERM,NULL);
|
|
||||||
- (void) rpmsqEnable(-SIGQUIT,NULL);
|
|
||||||
- (void) rpmsqEnable(-SIGPIPE,NULL);
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -956,11 +960,13 @@ static int openDatabase(const char * pre
|
@@ -721,11 +725,13 @@ static int openDatabase(const char * pre
|
||||||
if (db == NULL)
|
/* Try to ensure db home exists, error out if we cant even create */
|
||||||
return 1;
|
rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid());
|
||||||
|
if (rc == 0) {
|
||||||
- (void) rpmsqEnable(SIGHUP, NULL);
|
- (void) rpmsqEnable(SIGHUP, NULL);
|
||||||
- (void) rpmsqEnable(SIGINT, NULL);
|
- (void) rpmsqEnable(SIGINT, NULL);
|
||||||
- (void) rpmsqEnable(SIGTERM,NULL);
|
- (void) rpmsqEnable(SIGTERM,NULL);
|
||||||
- (void) rpmsqEnable(SIGQUIT,NULL);
|
- (void) rpmsqEnable(SIGQUIT,NULL);
|
||||||
- (void) rpmsqEnable(SIGPIPE,NULL);
|
- (void) rpmsqEnable(SIGPIPE,NULL);
|
||||||
+ if ((db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
|
+ if ((db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
|
||||||
+ (void) rpmsqEnable(SIGHUP, NULL);
|
+ (void) rpmsqEnable(SIGHUP, NULL);
|
||||||
+ (void) rpmsqEnable(SIGINT, NULL);
|
+ (void) rpmsqEnable(SIGINT, NULL);
|
||||||
+ (void) rpmsqEnable(SIGTERM,NULL);
|
+ (void) rpmsqEnable(SIGTERM,NULL);
|
||||||
+ (void) rpmsqEnable(SIGQUIT,NULL);
|
+ (void) rpmsqEnable(SIGQUIT,NULL);
|
||||||
+ (void) rpmsqEnable(SIGPIPE,NULL);
|
+ (void) rpmsqEnable(SIGPIPE,NULL);
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
db->db_api = _dbapi;
|
|
||||||
|
|
||||||
|
/* Just the primary Packages database opened here */
|
||||||
|
rc = (rpmdbOpenIndex(db, RPMDBI_PACKAGES, db->db_flags) != NULL) ? 0 : -2;
|
||||||
|
@ -3,14 +3,8 @@ Subject: Fix path canonicalization issues in debugedit
|
|||||||
This patch fixes multiple problems with path canonicalization in
|
This patch fixes multiple problems with path canonicalization in
|
||||||
debugedit. This version of debugedit is taken from the dwarftools repository.
|
debugedit. This version of debugedit is taken from the dwarftools repository.
|
||||||
|
|
||||||
---
|
--- ./tools/debugedit.c.orig 2011-05-11 15:31:31.000000000 +0000
|
||||||
tools/debugedit.c | 168 ++++++++++++++++++++++++++----------------------------
|
+++ ./tools/debugedit.c 2011-05-11 15:54:49.000000000 +0000
|
||||||
1 file changed, 82 insertions(+), 86 deletions(-)
|
|
||||||
|
|
||||||
Index: tools/debugedit.c
|
|
||||||
===================================================================
|
|
||||||
--- tools/debugedit.c.orig
|
|
||||||
+++ tools/debugedit.c
|
|
||||||
@@ -158,7 +158,7 @@ strptr (DSO *dso, int sec, off_t offset)
|
@@ -158,7 +158,7 @@ strptr (DSO *dso, int sec, off_t offset)
|
||||||
{
|
{
|
||||||
if (data->d_buf
|
if (data->d_buf
|
||||||
@ -20,7 +14,7 @@ Index: tools/debugedit.c
|
|||||||
return (const char *) data->d_buf + (offset - data->d_off);
|
return (const char *) data->d_buf + (offset - data->d_off);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -488,9 +488,10 @@ static int
|
@@ -496,9 +496,10 @@ static int
|
||||||
edit_dwarf2_line (DSO *dso, uint32_t off, char *comp_dir, int phase)
|
edit_dwarf2_line (DSO *dso, uint32_t off, char *comp_dir, int phase)
|
||||||
{
|
{
|
||||||
unsigned char *ptr = debug_sections[DEBUG_LINE].data, *dir;
|
unsigned char *ptr = debug_sections[DEBUG_LINE].data, *dir;
|
||||||
@ -32,7 +26,7 @@ Index: tools/debugedit.c
|
|||||||
unsigned char opcode_base;
|
unsigned char opcode_base;
|
||||||
uint32_t value, dirt_cnt;
|
uint32_t value, dirt_cnt;
|
||||||
size_t comp_dir_len = strlen (comp_dir);
|
size_t comp_dir_len = strlen (comp_dir);
|
||||||
@@ -534,6 +535,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -542,6 +543,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +34,7 @@ Index: tools/debugedit.c
|
|||||||
opcode_base = ptr[4];
|
opcode_base = ptr[4];
|
||||||
ptr = dir = ptr + 4 + opcode_base;
|
ptr = dir = ptr + 4 + opcode_base;
|
||||||
|
|
||||||
@@ -545,13 +547,13 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -553,13 +555,13 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
++value;
|
++value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +50,7 @@ Index: tools/debugedit.c
|
|||||||
ptr = (unsigned char *) strchr ((char *)ptr, 0) + 1;
|
ptr = (unsigned char *) strchr ((char *)ptr, 0) + 1;
|
||||||
}
|
}
|
||||||
ptr++;
|
ptr++;
|
||||||
@@ -664,7 +666,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -672,7 +674,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
|
|
||||||
if (dest_dir)
|
if (dest_dir)
|
||||||
{
|
{
|
||||||
@ -65,7 +59,7 @@ Index: tools/debugedit.c
|
|||||||
size_t base_len = strlen (base_dir);
|
size_t base_len = strlen (base_dir);
|
||||||
size_t dest_len = strlen (dest_dir);
|
size_t dest_len = strlen (dest_dir);
|
||||||
size_t shrank = 0;
|
size_t shrank = 0;
|
||||||
@@ -678,11 +680,14 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -686,11 +688,14 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
ptr = dir;
|
ptr = dir;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -76,72 +70,15 @@ Index: tools/debugedit.c
|
|||||||
+ }
|
+ }
|
||||||
while (*srcptr != 0)
|
while (*srcptr != 0)
|
||||||
{
|
{
|
||||||
- size_t len = strlen ((char *)srcptr) + 1;
|
size_t len = strlen ((char *)srcptr) + 1;
|
||||||
- const unsigned char *readptr = srcptr;
|
- const unsigned char *readptr = srcptr;
|
||||||
+ size_t len = strlen ((char *)srcptr);
|
|
||||||
+ const char *readptr = srcptr;
|
+ const char *readptr = srcptr;
|
||||||
|
|
||||||
if (*srcptr == '/' && has_prefix ((char *)srcptr, base_dir))
|
char *orig = strdup ((const char *) srcptr);
|
||||||
{
|
|
||||||
@@ -691,42 +696,27 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
|
||||||
memcpy (ptr, dest_dir, dest_len);
|
|
||||||
ptr += dest_len;
|
|
||||||
readptr += base_len;
|
|
||||||
- }
|
|
||||||
+ }
|
|
||||||
srcptr += len;
|
|
||||||
|
|
||||||
shrank += srcptr - readptr;
|
@@ -756,21 +761,26 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
canonicalize_path ((char *)readptr, (char *)ptr);
|
}
|
||||||
- len = strlen ((char *)ptr) + 1;
|
dirty_section (DEBUG_STR);
|
||||||
- shrank -= len;
|
|
||||||
- ptr += len;
|
|
||||||
+ len = strlen ((char *)ptr);
|
|
||||||
|
|
||||||
- elf_flagdata (debug_sections[DEBUG_STR].elf_data,
|
|
||||||
- ELF_C_SET, ELF_F_DIRTY);
|
|
||||||
- }
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ if ((srcptr - readptr) > len)
|
|
||||||
+ error(0, 0,"canonicalization unexpectedly shrank (%lu): \"%s\"\n",
|
|
||||||
+ (long unsigned int)(srcptr - readptr) - len, ptr);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
- if (shrank > 0)
|
|
||||||
- {
|
|
||||||
- if (--shrank == 0)
|
|
||||||
- error (EXIT_FAILURE, 0,
|
|
||||||
- "canonicalization unexpectedly shrank by one character");
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- memset (ptr, 'X', shrank);
|
|
||||||
- ptr += shrank;
|
|
||||||
- *ptr++ = '\0';
|
|
||||||
- }
|
|
||||||
+ shrank -= len;
|
|
||||||
+ ptr += len;
|
|
||||||
+ elf_flagdata (debug_sections[DEBUG_STR].elf_data,
|
|
||||||
+ ELF_C_SET, ELF_F_DIRTY);
|
|
||||||
+ ++ptr;
|
|
||||||
+ ++srcptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (abs_dir_cnt + abs_file_cnt != 0)
|
|
||||||
- {
|
|
||||||
- size_t len = (abs_dir_cnt + abs_file_cnt) * (base_len - dest_len);
|
|
||||||
-
|
|
||||||
- if (len == 1)
|
|
||||||
- error (EXIT_FAILURE, 0, "-b arg has to be either the same length as -d arg, or more than 1 char shorter");
|
|
||||||
- memset (ptr, 'X', len - 1);
|
|
||||||
- ptr += len - 1;
|
|
||||||
- *ptr++ = '\0';
|
|
||||||
- }
|
|
||||||
*ptr++ = '\0';
|
|
||||||
++srcptr;
|
|
||||||
|
|
||||||
@@ -746,21 +736,26 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
|
||||||
elf_flagdata (debug_sections[DEBUG_STR].elf_data,
|
|
||||||
ELF_C_SET, ELF_F_DIRTY);
|
|
||||||
}
|
}
|
||||||
- else if (ptr != srcptr)
|
- else if (ptr != srcptr)
|
||||||
+ else if ((char *)ptr != srcptr)
|
+ else if ((char *)ptr != srcptr)
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
Include compilation directory in source file list if used.
|
Include compilation directory in source file list if used.
|
||||||
|
|
||||||
---
|
--- ./tools/debugedit.c.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
tools/debugedit.c | 28 +++++++++++++++++++++++++++-
|
+++ ./tools/debugedit.c 2011-05-11 15:31:31.000000000 +0000
|
||||||
1 file changed, 27 insertions(+), 1 deletion(-)
|
@@ -503,6 +503,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
|
|
||||||
Index: tools/debugedit.c
|
|
||||||
===================================================================
|
|
||||||
--- tools/debugedit.c.orig
|
|
||||||
+++ tools/debugedit.c
|
|
||||||
@@ -495,6 +495,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
|
||||||
uint32_t value, dirt_cnt;
|
uint32_t value, dirt_cnt;
|
||||||
size_t comp_dir_len = strlen (comp_dir);
|
size_t comp_dir_len = strlen (comp_dir);
|
||||||
size_t abs_file_cnt = 0, abs_dir_cnt = 0;
|
size_t abs_file_cnt = 0, abs_dir_cnt = 0;
|
||||||
@ -16,7 +10,7 @@ Index: tools/debugedit.c
|
|||||||
|
|
||||||
if (phase != 0)
|
if (phase != 0)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -603,6 +604,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -611,6 +612,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
memcpy (p, dirt[value], dir_len);
|
memcpy (p, dirt[value], dir_len);
|
||||||
p[dir_len] = '/';
|
p[dir_len] = '/';
|
||||||
memcpy (p + dir_len + 1, file, file_len + 1);
|
memcpy (p + dir_len + 1, file, file_len + 1);
|
||||||
@ -24,12 +18,10 @@ Index: tools/debugedit.c
|
|||||||
}
|
}
|
||||||
canonicalize_path (s, s);
|
canonicalize_path (s, s);
|
||||||
if (list_file_fd != -1)
|
if (list_file_fd != -1)
|
||||||
@@ -635,7 +637,31 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
@@ -644,6 +646,30 @@ edit_dwarf2_line (DSO *dso, uint32_t off
|
||||||
read_uleb128 (ptr);
|
|
||||||
}
|
}
|
||||||
++ptr;
|
++ptr;
|
||||||
-
|
|
||||||
+
|
|
||||||
+ if (comp_dir_used && list_file_fd != -1
|
+ if (comp_dir_used && list_file_fd != -1
|
||||||
+ && (base_dir == NULL || has_prefix (comp_dir, base_dir)))
|
+ && (base_dir == NULL || has_prefix (comp_dir, base_dir)))
|
||||||
+ {
|
+ {
|
||||||
|
@ -1,9 +1,25 @@
|
|||||||
Make debugedit build without dwarf.h
|
Make debugedit build without dwarf.h
|
||||||
|
|
||||||
Index: tools/debugedit.c
|
--- ./Makefile.am.orig 2010-12-22 11:17:20.000000000 +0000
|
||||||
===================================================================
|
+++ ./Makefile.am 2011-05-10 16:03:49.000000000 +0000
|
||||||
--- tools/debugedit.c.orig
|
@@ -143,7 +143,6 @@ rpm2cpio_LDADD += @WITH_NSS_LIB@ @WITH_P
|
||||||
+++ tools/debugedit.c
|
|
||||||
|
|
||||||
|
if LIBELF
|
||||||
|
-if LIBDWARF
|
||||||
|
rpmconfig_SCRIPTS += scripts/find-debuginfo.sh
|
||||||
|
|
||||||
|
rpmlibexec_PROGRAMS += debugedit
|
||||||
|
@@ -156,7 +155,6 @@ elfdeps_SOURCES = tools/elfdeps.c
|
||||||
|
elfdeps_LDADD = rpmio/librpmio.la
|
||||||
|
elfdeps_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@
|
||||||
|
endif
|
||||||
|
-endif
|
||||||
|
|
||||||
|
rpmlibexec_PROGRAMS += javadeps
|
||||||
|
javadeps_SOURCES = tools/javadeps.c
|
||||||
|
--- ./tools/debugedit.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./tools/debugedit.c 2011-05-10 16:03:49.000000000 +0000
|
||||||
@@ -37,7 +37,37 @@
|
@@ -37,7 +37,37 @@
|
||||||
#include <popt.h>
|
#include <popt.h>
|
||||||
|
|
||||||
@ -43,23 +59,3 @@ Index: tools/debugedit.c
|
|||||||
|
|
||||||
#include <rpm/rpmio.h>
|
#include <rpm/rpmio.h>
|
||||||
#include <rpm/rpmpgp.h>
|
#include <rpm/rpmpgp.h>
|
||||||
Index: Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- Makefile.am.orig
|
|
||||||
+++ Makefile.am
|
|
||||||
@@ -103,7 +103,6 @@ rpm2cpio_LDADD += @WITH_LIBELF_LIB@ @WIT
|
|
||||||
|
|
||||||
|
|
||||||
if LIBELF
|
|
||||||
-if LIBDWARF
|
|
||||||
rpmconfig_SCRIPTS += scripts/find-debuginfo.sh
|
|
||||||
|
|
||||||
rpmlibexec_PROGRAMS += debugedit
|
|
||||||
@@ -111,7 +110,6 @@ debugedit_SOURCES = tools/debugedit.c to
|
|
||||||
debugedit_LDADD = rpmio/librpmio.la
|
|
||||||
debugedit_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@
|
|
||||||
endif
|
|
||||||
-endif
|
|
||||||
|
|
||||||
rpmlibexec_PROGRAMS += javadeps
|
|
||||||
javadeps_SOURCES = tools/javadeps.c
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Index: scripts/find-debuginfo.sh
|
--- ./scripts/find-debuginfo.sh.orig 2011-05-11 16:10:22.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-debuginfo.sh 2011-05-11 16:10:48.000000000 +0000
|
||||||
--- scripts/find-debuginfo.sh.orig
|
@@ -211,6 +211,17 @@ while read nlinks inum f; do
|
||||||
+++ scripts/find-debuginfo.sh
|
|
||||||
@@ -210,6 +210,17 @@ while read nlinks inum f; do
|
|
||||||
;;
|
;;
|
||||||
*) continue ;;
|
*) continue ;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Index: scripts/find-debuginfo.sh
|
--- ./scripts/find-debuginfo.sh.orig 2011-05-11 15:59:44.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-debuginfo.sh 2011-05-11 16:10:22.000000000 +0000
|
||||||
--- scripts/find-debuginfo.sh.orig 2009-07-27 12:06:41.000000000 +0200
|
@@ -186,7 +186,8 @@ make_id_link()
|
||||||
+++ scripts/find-debuginfo.sh 2009-07-27 12:08:05.000000000 +0200
|
|
||||||
@@ -185,7 +185,8 @@ make_id_link()
|
|
||||||
get_debugfn()
|
get_debugfn()
|
||||||
{
|
{
|
||||||
dn=$(dirname "${1#$RPM_BUILD_ROOT}")
|
dn=$(dirname "${1#$RPM_BUILD_ROOT}")
|
||||||
|
@ -3,16 +3,9 @@ Subject: Split sources for debugging into separate -debugsource package
|
|||||||
At the moment the -debuginfo package also include the sources where used to
|
At the moment the -debuginfo package also include the sources where used to
|
||||||
build the binary. The patches moves them into a separate package -debugsource.
|
build the binary. The patches moves them into a separate package -debugsource.
|
||||||
|
|
||||||
---
|
--- ./macros.in.orig 2011-05-11 15:01:39.000000000 +0000
|
||||||
macros.in | 12 ++++++++++++
|
+++ ./macros.in 2011-05-11 15:36:05.000000000 +0000
|
||||||
scripts/find-debuginfo.sh | 12 +++++++++---
|
@@ -190,6 +190,18 @@ Debug information is useful when develop
|
||||||
2 files changed, 21 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Index: macros.in
|
|
||||||
===================================================================
|
|
||||||
--- macros.in.orig
|
|
||||||
+++ macros.in
|
|
||||||
@@ -187,6 +187,18 @@ Debug information is useful when develop
|
|
||||||
package or when debugging this package.\
|
package or when debugging this package.\
|
||||||
%files debuginfo -f debugfiles.list\
|
%files debuginfo -f debugfiles.list\
|
||||||
%defattr(-,root,root)\
|
%defattr(-,root,root)\
|
||||||
@ -31,11 +24,9 @@ Index: macros.in
|
|||||||
%{nil}
|
%{nil}
|
||||||
|
|
||||||
%_defaultdocdir %{_datadir}/doc/packages
|
%_defaultdocdir %{_datadir}/doc/packages
|
||||||
Index: scripts/find-debuginfo.sh
|
--- ./scripts/find-debuginfo.sh.orig 2011-05-11 14:46:18.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-debuginfo.sh 2011-05-11 15:36:05.000000000 +0000
|
||||||
--- scripts/find-debuginfo.sh.orig
|
@@ -187,8 +187,8 @@ set -o pipefail
|
||||||
+++ scripts/find-debuginfo.sh
|
|
||||||
@@ -186,8 +186,8 @@ set -o pipefail
|
|
||||||
strict_error=ERROR
|
strict_error=ERROR
|
||||||
$strict || strict_error=WARNING
|
$strict || strict_error=WARNING
|
||||||
|
|
||||||
@ -46,7 +37,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' |
|
xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' |
|
||||||
while read nlinks inum f; do
|
while read nlinks inum f; do
|
||||||
case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
|
case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in
|
||||||
@@ -297,10 +297,16 @@ if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -
|
@@ -300,10 +300,16 @@ if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -
|
||||||
|
|
||||||
(cd "${RPM_BUILD_ROOT}/usr"
|
(cd "${RPM_BUILD_ROOT}/usr"
|
||||||
test ! -d lib/debug || find lib/debug ! -type d
|
test ! -d lib/debug || find lib/debug ! -type d
|
||||||
|
235
debugsubpkg.diff
235
debugsubpkg.diff
@ -1,6 +1,8 @@
|
|||||||
--- ./build/files.c.orig 2010-03-25 15:18:05.000000000 +0000
|
Create a debuginfo package for each subpackage.
|
||||||
+++ ./build/files.c 2010-03-25 15:21:26.000000000 +0000
|
|
||||||
@@ -17,6 +17,10 @@
|
--- ./build/files.c.orig 2011-05-13 15:34:01.000000000 +0000
|
||||||
|
+++ ./build/files.c 2011-05-13 15:35:42.000000000 +0000
|
||||||
|
@@ -20,6 +20,10 @@
|
||||||
#include <rpm/rpmfileutil.h> /* rpmDoDigest() */
|
#include <rpm/rpmfileutil.h> /* rpmDoDigest() */
|
||||||
#include <rpm/rpmlog.h>
|
#include <rpm/rpmlog.h>
|
||||||
|
|
||||||
@ -10,11 +12,12 @@
|
|||||||
+
|
+
|
||||||
#include "rpmio/rpmio_internal.h" /* XXX rpmioSlurp */
|
#include "rpmio/rpmio_internal.h" /* XXX rpmioSlurp */
|
||||||
#include "rpmio/base64.h"
|
#include "rpmio/base64.h"
|
||||||
#include "rpmio/fts.h"
|
#include "misc/fts.h"
|
||||||
@@ -2230,12 +2234,136 @@ exit:
|
@@ -2105,13 +2109,237 @@ exit:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+#if HAVE_GELF_H && HAVE_LIBELF
|
||||||
+/* Query the build-id from the ELF file NAME and store it in the newly
|
+/* Query the build-id from the ELF file NAME and store it in the newly
|
||||||
+ allocated *build_id array of size *build_id_size. Returns -1 on
|
+ allocated *build_id array of size *build_id_size. Returns -1 on
|
||||||
+ error. */
|
+ error. */
|
||||||
@ -136,11 +139,111 @@
|
|||||||
+ 0
|
+ 0
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
+static void addDebuginfoPackage(rpmSpec spec, Package pkg, char *buildroot)
|
||||||
|
+{
|
||||||
|
+ const char *a;
|
||||||
+
|
+
|
||||||
int processBinaryFiles(rpmSpec spec, int installSpecialDoc, int test)
|
+ elf_version(EV_CURRENT);
|
||||||
|
+ a = headerGetString(pkg->header, RPMTAG_ARCH);
|
||||||
|
+ if (strcmp(a, "noarch") != 0 && strcmp(a, "src") != 0 && strcmp(a, "nosrc") != 0)
|
||||||
|
+ {
|
||||||
|
+ Package dbg;
|
||||||
|
+ rpmfi fi = pkg->cpioList;
|
||||||
|
+ char tmp[1024];
|
||||||
|
+ const char *name;
|
||||||
|
+ ARGV_t files = NULL;
|
||||||
|
+ int seen_build_id = 0;
|
||||||
|
+
|
||||||
|
+ /* Check if the current package has files with debug info
|
||||||
|
+ and record them. */
|
||||||
|
+ fi = rpmfiInit (fi, 0);
|
||||||
|
+ while (rpmfiNext (fi) >= 0)
|
||||||
|
+ {
|
||||||
|
+ const char *base;
|
||||||
|
+ int i;
|
||||||
|
+ unsigned char *build_id;
|
||||||
|
+ size_t build_id_size = 0;
|
||||||
|
+ struct stat sbuf;
|
||||||
|
+
|
||||||
|
+ name = rpmfiFN (fi);
|
||||||
|
+ /* Skip leading buildroot. */
|
||||||
|
+ base = name + strlen (buildroot);
|
||||||
|
+ /* Pre-pend %buildroot/usr/lib/debug and append .debug. */
|
||||||
|
+ snprintf (tmp, 1024, "%s/usr/lib/debug%s.debug",
|
||||||
|
+ buildroot, base);
|
||||||
|
+ /* If that file exists we have debug information for it. */
|
||||||
|
+ if (access (tmp, F_OK) != 0)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ /* Append the file list preamble. */
|
||||||
|
+ if (!files)
|
||||||
|
+ {
|
||||||
|
+ argvAdd(&files, "%defattr(-,root,root)");
|
||||||
|
+ argvAdd(&files, "%dir /usr/lib/debug");
|
||||||
|
+ }
|
||||||
|
+ /* Add the files main debug-info file. */
|
||||||
|
+ snprintf (tmp, 1024, "/usr/lib/debug/%s.debug", base);
|
||||||
|
+ argvAdd(&files, tmp);
|
||||||
|
+
|
||||||
|
+ /* 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))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ /* Try to gather the build-id from the binary. */
|
||||||
|
+ if (getELFBuildId (name, &build_id, &build_id_size) == -1)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ /* If we see build-id links for the first time add the
|
||||||
|
+ directory. */
|
||||||
|
+ if (!seen_build_id)
|
||||||
|
+ argvAdd(&files, "%dir /usr/lib/debug/.build-id");
|
||||||
|
+
|
||||||
|
+ /* 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/",
|
||||||
|
+ build_id[0]);
|
||||||
|
+ for (i = 1; i < build_id_size; ++i)
|
||||||
|
+ sprintf (tmp + strlen (tmp), "%02x", build_id[i]);
|
||||||
|
+ argvAdd(&files, tmp);
|
||||||
|
+ sprintf (tmp + strlen (tmp), ".debug");
|
||||||
|
+ argvAdd(&files, tmp);
|
||||||
|
+
|
||||||
|
+ free (build_id);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* If there are debuginfo files for this package add a
|
||||||
|
+ new debuginfo package. */
|
||||||
|
+ if (files)
|
||||||
|
+ {
|
||||||
|
+ dbg = newPackage (spec);
|
||||||
|
+ headerNVR (pkg->header, &name, NULL, NULL);
|
||||||
|
+ /* Set name, summary and group. */
|
||||||
|
+ snprintf (tmp, 1024, "%s-debuginfo", name);
|
||||||
|
+ headerPutString(dbg->header, RPMTAG_NAME, tmp);
|
||||||
|
+ 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"
|
||||||
|
+ "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);
|
||||||
|
+
|
||||||
|
+ /* Build up the files list. */
|
||||||
|
+ dbg->fileList = files;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
|
||||||
|
int installSpecialDoc, int test)
|
||||||
{
|
{
|
||||||
Package pkg;
|
Package pkg;
|
||||||
int rc = RPMRC_OK;
|
rpmRC rc = RPMRC_OK;
|
||||||
+ char *buildroot;
|
+ char *buildroot;
|
||||||
|
|
||||||
check_fileList = newStringBuf();
|
check_fileList = newStringBuf();
|
||||||
@ -148,122 +251,24 @@
|
|||||||
genSourceRpmName(spec);
|
genSourceRpmName(spec);
|
||||||
|
|
||||||
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
||||||
@@ -2250,8 +2378,110 @@ int processBinaryFiles(rpmSpec spec, int
|
@@ -2127,8 +2355,12 @@ rpmRC processBinaryFiles(rpmSpec spec, r
|
||||||
rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
|
rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
|
||||||
free(nvr);
|
free(nvr);
|
||||||
|
|
||||||
- if ((rc = processPackageFiles(spec, pkg, installSpecialDoc, test)) != RPMRC_OK ||
|
- if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, test)) != RPMRC_OK ||
|
||||||
- (rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
|
- (rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
|
||||||
+ if ((rc = processPackageFiles(spec, pkg, installSpecialDoc, test)) != RPMRC_OK)
|
+ if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, test)) != RPMRC_OK)
|
||||||
+ goto exit;
|
+ goto exit;
|
||||||
+
|
|
||||||
+ /* BEGIN DEBUGPKG */
|
|
||||||
+#if HAVE_GELF_H && HAVE_LIBELF
|
+#if HAVE_GELF_H && HAVE_LIBELF
|
||||||
+ elf_version(EV_CURRENT);
|
+ addDebuginfoPackage(spec, pkg, buildroot);
|
||||||
+ a = headerGetString(pkg->header, RPMTAG_ARCH);
|
|
||||||
+ if (strcmp(a, "noarch") != 0 && strcmp(a, "src") != 0 && strcmp(a, "nosrc") != 0)
|
|
||||||
+ {
|
|
||||||
+ Package dbg;
|
|
||||||
+ rpmfi fi = pkg->cpioList;
|
|
||||||
+ char tmp[1024];
|
|
||||||
+ const char *name;
|
|
||||||
+ StringBuf files = NULL;
|
|
||||||
+ int seen_build_id = 0;
|
|
||||||
+
|
|
||||||
+ /* Check if the current package has files with debug info
|
|
||||||
+ and record them. */
|
|
||||||
+ fi = rpmfiInit (fi, 0);
|
|
||||||
+ while (rpmfiNext (fi) >= 0)
|
|
||||||
+ {
|
|
||||||
+ const char *base;
|
|
||||||
+ int i;
|
|
||||||
+ unsigned char *build_id;
|
|
||||||
+ size_t build_id_size = 0;
|
|
||||||
+ struct stat sbuf;
|
|
||||||
+
|
|
||||||
+ name = rpmfiFN (fi);
|
|
||||||
+ /* Skip leading buildroot. */
|
|
||||||
+ base = name + strlen (buildroot);
|
|
||||||
+ /* Pre-pend %buildroot/usr/lib/debug and append .debug. */
|
|
||||||
+ snprintf (tmp, 1024, "%s/usr/lib/debug%s.debug",
|
|
||||||
+ buildroot, base);
|
|
||||||
+ /* If that file exists we have debug information for it. */
|
|
||||||
+ if (access (tmp, F_OK) != 0)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ /* Append the file list preamble. */
|
|
||||||
+ if (!files)
|
|
||||||
+ {
|
|
||||||
+ files = newStringBuf();
|
|
||||||
+ appendStringBuf(files, "%defattr(-,root,root)\n");
|
|
||||||
+ appendStringBuf(files, "%dir /usr/lib/debug\n");
|
|
||||||
+ }
|
|
||||||
+ /* Add the files main debug-info file. */
|
|
||||||
+ snprintf (tmp, 1024, "/usr/lib/debug/%s.debug\n", base);
|
|
||||||
+ appendStringBuf(files, tmp);
|
|
||||||
+
|
|
||||||
+ /* 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))
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ /* Try to gather the build-id from the binary. */
|
|
||||||
+ if (getELFBuildId (name, &build_id, &build_id_size) == -1)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ /* If we see build-id links for the first time add the
|
|
||||||
+ directory. */
|
|
||||||
+ if (!seen_build_id)
|
|
||||||
+ appendStringBuf(files, "%dir /usr/lib/debug/.build-id\n");
|
|
||||||
+
|
|
||||||
+ /* 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/",
|
|
||||||
+ build_id[0]);
|
|
||||||
+ for (i = 1; i < build_id_size; ++i)
|
|
||||||
+ sprintf (tmp + strlen (tmp), "%02x", build_id[i]);
|
|
||||||
+ appendStringBuf(files, tmp);
|
|
||||||
+ appendStringBuf(files, "\n");
|
|
||||||
+ appendStringBuf(files, tmp);
|
|
||||||
+ appendStringBuf(files, ".debug\n");
|
|
||||||
+
|
|
||||||
+ free (build_id);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* If there are debuginfo files for this package add a
|
|
||||||
+ new debuginfo package. */
|
|
||||||
+ if (files)
|
|
||||||
+ {
|
|
||||||
+ dbg = newPackage (spec);
|
|
||||||
+ headerNVR (pkg->header, &name, NULL, NULL);
|
|
||||||
+ /* Set name, summary and group. */
|
|
||||||
+ snprintf (tmp, 1024, "%s-debuginfo", name);
|
|
||||||
+ headerPutString(dbg->header, RPMTAG_NAME, tmp);
|
|
||||||
+ 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"
|
|
||||||
+ "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);
|
|
||||||
+
|
|
||||||
+ /* Build up the files list. */
|
|
||||||
+ dbg->fileList = files;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+#endif
|
+#endif
|
||||||
+ /* END DEBUGPKG */
|
|
||||||
+
|
|
||||||
+ if ((rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
|
+ if ((rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
a = headerGetString(pkg->header, RPMTAG_ARCH);
|
a = headerGetString(pkg->header, RPMTAG_ARCH);
|
||||||
--- ./macros.in.orig 2010-03-25 15:21:20.000000000 +0000
|
--- ./macros.in.orig 2011-05-13 15:34:01.000000000 +0000
|
||||||
+++ ./macros.in 2010-03-25 15:21:26.000000000 +0000
|
+++ ./macros.in 2011-05-13 15:34:10.000000000 +0000
|
||||||
@@ -176,24 +176,10 @@
|
@@ -179,24 +179,10 @@
|
||||||
# Template for debug information sub-package.
|
# Template for debug information sub-package.
|
||||||
%debug_package \
|
%debug_package \
|
||||||
%global __debug_package 1\
|
%global __debug_package 1\
|
||||||
@ -288,9 +293,9 @@
|
|||||||
%description debugsource\
|
%description debugsource\
|
||||||
This package provides debug sources for package %{name}.\
|
This package provides debug sources for package %{name}.\
|
||||||
Debug sources are useful when developing applications that use this\
|
Debug sources are useful when developing applications that use this\
|
||||||
--- ./scripts/find-debuginfo.sh.orig 2010-03-25 15:19:04.000000000 +0000
|
--- ./scripts/find-debuginfo.sh.orig 2011-05-13 15:34:01.000000000 +0000
|
||||||
+++ ./scripts/find-debuginfo.sh 2010-03-25 15:21:26.000000000 +0000
|
+++ ./scripts/find-debuginfo.sh 2011-05-13 15:34:10.000000000 +0000
|
||||||
@@ -275,19 +275,11 @@ while read nlinks inum f; do
|
@@ -277,19 +277,11 @@ while read nlinks inum f; do
|
||||||
fi
|
fi
|
||||||
done || exit
|
done || exit
|
||||||
|
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
--- ./build/parseSpec.c.orig 2010-03-25 15:19:16.000000000 +0000
|
|
||||||
+++ ./build/parseSpec.c 2010-03-25 15:45:25.000000000 +0000
|
|
||||||
@@ -562,6 +562,13 @@ int parseSpec(rpmts ts, const char *spec
|
|
||||||
free(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (spec->clean == NULL) {
|
|
||||||
+ char *body = rpmExpand("%{?buildroot: %{__rm} -rf %{buildroot}}", NULL);
|
|
||||||
+ spec->clean = newStringBuf();
|
|
||||||
+ appendLineStringBuf(spec->clean, body);
|
|
||||||
+ free(body);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Check for description in each package and add arch and os */
|
|
||||||
{
|
|
||||||
char *platform = rpmExpand("%{_target_platform}", NULL);
|
|
@ -1,24 +0,0 @@
|
|||||||
Make the numbers reported for diskspace problems more user
|
|
||||||
friendly. Probably a bad idea, as it changes the semantics. Instead,
|
|
||||||
the messages should be changed.
|
|
||||||
|
|
||||||
--- ./lib/transaction.c.orig 2010-03-25 14:37:50.000000000 +0000
|
|
||||||
+++ ./lib/transaction.c 2010-03-25 14:38:27.000000000 +0000
|
|
||||||
@@ -212,7 +212,7 @@ static void rpmtsCheckDSIProblems(const
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKSPACE,
|
|
||||||
rpmteNEVRA(te), rpmteKey(te),
|
|
||||||
ts->filesystems[i], NULL, NULL,
|
|
||||||
- (adj_fs_blocks(dsi->bneeded) - dsi->bavail) * dsi->bsize);
|
|
||||||
+ (adj_fs_blocks(dsi->bneeded)) * dsi->bsize);
|
|
||||||
dsi->obneeded = dsi->bneeded;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -222,7 +222,7 @@ static void rpmtsCheckDSIProblems(const
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKNODES,
|
|
||||||
rpmteNEVRA(te), rpmteKey(te),
|
|
||||||
ts->filesystems[i], NULL, NULL,
|
|
||||||
- (adj_fs_blocks(dsi->ineeded) - dsi->iavail));
|
|
||||||
+ (adj_fs_blocks(dsi->ineeded)));
|
|
||||||
dsi->oineeded = dsi->ineeded;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,8 @@
|
|||||||
--- ./build/parsePreamble.c.orig 2010-03-25 14:56:24.000000000 +0000
|
Hmm, SUSE doesn't use it, so what's the purpose of this patch?
|
||||||
+++ ./build/parsePreamble.c 2010-03-25 15:20:35.000000000 +0000
|
|
||||||
@@ -312,6 +312,7 @@ static struct optionalTag {
|
--- ./build/parsePreamble.c.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
|
+++ ./build/parsePreamble.c 2011-05-11 15:59:08.000000000 +0000
|
||||||
|
@@ -485,6 +485,7 @@ static struct optionalTag {
|
||||||
{ RPMTAG_PACKAGER, "%{packager}" },
|
{ RPMTAG_PACKAGER, "%{packager}" },
|
||||||
{ RPMTAG_DISTRIBUTION, "%{distribution}" },
|
{ RPMTAG_DISTRIBUTION, "%{distribution}" },
|
||||||
{ RPMTAG_DISTURL, "%{disturl}" },
|
{ RPMTAG_DISTURL, "%{disturl}" },
|
||||||
@ -8,8 +10,8 @@
|
|||||||
{ RPMTAG_BUGURL, "%{bugurl}" },
|
{ RPMTAG_BUGURL, "%{bugurl}" },
|
||||||
{ -1, NULL }
|
{ -1, NULL }
|
||||||
};
|
};
|
||||||
--- ./macros.in.orig 2010-03-25 15:18:50.000000000 +0000
|
--- ./macros.in.orig 2011-05-11 15:38:44.000000000 +0000
|
||||||
+++ ./macros.in 2010-03-25 15:19:25.000000000 +0000
|
+++ ./macros.in 2011-05-11 15:59:08.000000000 +0000
|
||||||
@@ -279,6 +279,16 @@ package or when debugging this package.\
|
@@ -279,6 +279,16 @@ package or when debugging this package.\
|
||||||
#
|
#
|
||||||
#%bugurl
|
#%bugurl
|
||||||
|
13
emptyprep.diff
Normal file
13
emptyprep.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Do not segfault if the prep section is empty
|
||||||
|
|
||||||
|
--- build/parsePrep.c.orig 2011-05-13 16:22:59.000000000 +0000
|
||||||
|
+++ build/parsePrep.c 2011-05-13 16:23:41.000000000 +0000
|
||||||
|
@@ -518,7 +518,7 @@ int parsePrep(rpmSpec spec)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- for (ARGV_const_t lines = saveLines; *lines; lines++) {
|
||||||
|
+ for (ARGV_const_t lines = saveLines; lines && *lines; lines++) {
|
||||||
|
res = 0;
|
||||||
|
if (rstreqn(*lines, "%setup", sizeof("%setup")-1)) {
|
||||||
|
res = doSetupMacro(spec, *lines);
|
14
extcond.diff
14
extcond.diff
@ -4,11 +4,9 @@ assumed to be true.
|
|||||||
This mechanism is used by the weakdeps patch to filter the
|
This mechanism is used by the weakdeps patch to filter the
|
||||||
"RPMSENSE_STRONG" flag.
|
"RPMSENSE_STRONG" flag.
|
||||||
|
|
||||||
Index: lib/headerfmt.c
|
--- ./lib/headerfmt.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./lib/headerfmt.c 2011-05-10 17:06:49.000000000 +0000
|
||||||
--- lib/headerfmt.c.orig
|
@@ -568,8 +568,12 @@ static int parseExpression(headerSprintf
|
||||||
+++ lib/headerfmt.c
|
|
||||||
@@ -582,8 +582,12 @@ static int parseExpression(headerSprintf
|
|
||||||
|
|
||||||
*endPtr = chptr;
|
*endPtr = chptr;
|
||||||
|
|
||||||
@ -21,7 +19,7 @@ Index: lib/headerfmt.c
|
|||||||
(void) findTag(hsa, token, str);
|
(void) findTag(hsa, token, str);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -675,6 +679,7 @@ static char * singleSprintf(headerSprint
|
@@ -657,6 +661,7 @@ static char * singleSprintf(headerSprint
|
||||||
int i, j, found;
|
int i, j, found;
|
||||||
rpm_count_t count, numElements;
|
rpm_count_t count, numElements;
|
||||||
sprintfToken spft;
|
sprintfToken spft;
|
||||||
@ -29,7 +27,7 @@ Index: lib/headerfmt.c
|
|||||||
int condNumFormats;
|
int condNumFormats;
|
||||||
size_t need;
|
size_t need;
|
||||||
|
|
||||||
@@ -705,6 +710,18 @@ static char * singleSprintf(headerSprint
|
@@ -687,6 +692,18 @@ static char * singleSprintf(headerSprint
|
||||||
headerIsEntry(hsa->h, token->u.cond.tag.tag)) {
|
headerIsEntry(hsa->h, token->u.cond.tag.tag)) {
|
||||||
spft = token->u.cond.ifFormat;
|
spft = token->u.cond.ifFormat;
|
||||||
condNumFormats = token->u.cond.numIfTokens;
|
condNumFormats = token->u.cond.numIfTokens;
|
||||||
@ -48,7 +46,7 @@ Index: lib/headerfmt.c
|
|||||||
} else {
|
} else {
|
||||||
spft = token->u.cond.elseFormat;
|
spft = token->u.cond.elseFormat;
|
||||||
condNumFormats = token->u.cond.numElseTokens;
|
condNumFormats = token->u.cond.numElseTokens;
|
||||||
@@ -728,10 +745,13 @@ static char * singleSprintf(headerSprint
|
@@ -710,10 +727,13 @@ static char * singleSprintf(headerSprint
|
||||||
for (i = 0; i < token->u.array.numTokens; i++, spft++)
|
for (i = 0; i < token->u.array.numTokens; i++, spft++)
|
||||||
{
|
{
|
||||||
rpmtd td = NULL;
|
rpmtd td = NULL;
|
||||||
|
58
fileattrs.diff
Normal file
58
fileattrs.diff
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Add needed fileattrs for compatibility. In the future they will
|
||||||
|
be moved into the corresponding packages.
|
||||||
|
|
||||||
|
--- ./fileattrs/Makefile.am.orig 2011-05-13 14:34:47.000000000 +0000
|
||||||
|
+++ ./fileattrs/Makefile.am 2011-05-13 14:35:28.000000000 +0000
|
||||||
|
@@ -6,6 +6,7 @@ fattrsdir = $(rpmconfigdir)/fileattrs
|
||||||
|
|
||||||
|
fattrs_DATA = \
|
||||||
|
desktop.attr elf.attr font.attr libtool.attr perl.attr perllib.attr \
|
||||||
|
- pkgconfig.attr python.attr ocaml.attr script.attr mono.attr
|
||||||
|
+ pkgconfig.attr python.attr ocaml.attr script.attr mono.attr \
|
||||||
|
+ debuginfo.attr firmware.attr gstreamer.attr ksyms.attr sysvinit.attr
|
||||||
|
|
||||||
|
EXTRA_DIST = $(fattrs_DATA)
|
||||||
|
--- ./fileattrs/debuginfo.attr.orig 2011-05-13 14:16:03.000000000 +0000
|
||||||
|
+++ ./fileattrs/debuginfo.attr 2011-05-13 14:17:13.000000000 +0000
|
||||||
|
@@ -0,0 +1,2 @@
|
||||||
|
+%__debuginfo_provides %{_rpmconfigdir}/debuginfo.prov
|
||||||
|
+%__debuginfo_path ^/usr/lib/debug/
|
||||||
|
--- ./fileattrs/desktop.attr.orig 2011-05-13 13:59:14.000000000 +0000
|
||||||
|
+++ ./fileattrs/desktop.attr 2011-05-13 14:07:03.000000000 +0000
|
||||||
|
@@ -1,2 +1,2 @@
|
||||||
|
-%__desktop_provides %{_rpmconfigdir}/desktop-file.prov
|
||||||
|
-%__desktop_path ^%{_datadir}/applications/.*\\.desktop$
|
||||||
|
+%__desktop_provides %{_rpmconfigdir}/mimetypes.prov
|
||||||
|
+%__desktop_path .*\\.desktop$
|
||||||
|
--- ./fileattrs/firmware.attr.orig 2011-05-13 14:13:39.000000000 +0000
|
||||||
|
+++ ./fileattrs/firmware.attr 2011-05-13 14:14:37.000000000 +0000
|
||||||
|
@@ -0,0 +1,2 @@
|
||||||
|
+%__firmware_provides %{_rpmconfigdir}/firmware.prov
|
||||||
|
+%__firmware_path /lib/firmware/
|
||||||
|
--- ./fileattrs/gstreamer.attr.orig 2011-05-13 14:28:51.000000000 +0000
|
||||||
|
+++ ./fileattrs/gstreamer.attr 2011-05-13 14:31:59.000000000 +0000
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+%__gstreamer_provides %{_rpmconfigdir}/gstreamer-provides
|
||||||
|
+%__gstreamer_path libgst
|
||||||
|
+%__gstreamer_magic ELF.*shared object
|
||||||
|
+%__gstreamer_flags magic_and_path
|
||||||
|
--- ./fileattrs/ksyms.attr.orig 2011-05-13 14:20:57.000000000 +0000
|
||||||
|
+++ ./fileattrs/ksyms.attr 2011-05-13 14:27:04.000000000 +0000
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+%__ksyms_provides %{_rpmconfigdir}/find-provides.ksyms %name
|
||||||
|
+%__ksyms_requires %{_rpmconfigdir}/find-requires.ksyms %name
|
||||||
|
+%__ksyms_supplements %{_rpmconfigdir}/find-supplements.ksyms %name
|
||||||
|
+%__ksyms_path (/lib/modules/.*\.ko(\.gz)?)|(/boot/vmlinu[xz].*)$
|
||||||
|
--- ./fileattrs/perl.attr.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./fileattrs/perl.attr 2011-05-13 14:09:31.000000000 +0000
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
-%__perl_requires %{_rpmconfigdir}/perl.req
|
||||||
|
+# disabled for now
|
||||||
|
+#%__perl_requires %{_rpmconfigdir}/perl.req
|
||||||
|
%__perl_magic ^.*perl .*$
|
||||||
|
%__perl_flags exeonly
|
||||||
|
--- ./fileattrs/sysvinit.attr.orig 2011-05-13 14:32:30.000000000 +0000
|
||||||
|
+++ ./fileattrs/sysvinit.attr 2011-05-13 14:33:56.000000000 +0000
|
||||||
|
@@ -0,0 +1,2 @@
|
||||||
|
+%__sysvinit_provides %{_rpmconfigdir}/sysvinitdeps.sh --provides
|
||||||
|
+%__sysvinit_path ^/etc/init\.d/
|
28
files.diff
28
files.diff
@ -1,13 +1,17 @@
|
|||||||
Index: build/files.c
|
Print "unpackaged files" section even if there was an error
|
||||||
===================================================================
|
in the filelist.
|
||||||
--- build/files.c.orig
|
|
||||||
+++ build/files.c
|
|
||||||
@@ -2211,6 +2211,8 @@ static int checkFiles(StringBuf fileList
|
|
||||||
_("Installed (but unpackaged) file(s) found:\n%s"), t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ else
|
|
||||||
+ checkFiles(check_fileList);
|
|
||||||
|
|
||||||
exit:
|
--- ./build/files.c.orig 2011-05-11 15:27:11.000000000 +0000
|
||||||
sb_stdout = freeStringBuf(sb_stdout);
|
+++ ./build/files.c 2011-05-11 15:29:12.000000000 +0000
|
||||||
|
@@ -2149,10 +2149,10 @@ rpmRC processBinaryFiles(rpmSpec spec, r
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
+exit:
|
||||||
|
if (checkFiles(spec->buildRoot, check_fileList) > 0) {
|
||||||
|
rc = RPMRC_FAIL;
|
||||||
|
}
|
||||||
|
-exit:
|
||||||
|
check_fileList = freeStringBuf(check_fileList);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
@ -6,15 +6,10 @@ do it right in the first place. So this patch changes find-debuginfo.sh scripts
|
|||||||
behavior to reflect that policy.
|
behavior to reflect that policy.
|
||||||
|
|
||||||
Signed-off-by: Jan Blunck <jblunck@suse.de>
|
Signed-off-by: Jan Blunck <jblunck@suse.de>
|
||||||
---
|
|
||||||
scripts/find-debuginfo.sh | 16 +++++++++++++---
|
|
||||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Index: b/scripts/find-debuginfo.sh
|
--- ./scripts/find-debuginfo.sh.orig 2011-05-11 15:36:05.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-debuginfo.sh 2011-05-11 15:58:17.000000000 +0000
|
||||||
--- scripts/find-debuginfo.sh
|
@@ -124,7 +124,17 @@ debug_link()
|
||||||
+++ scripts/find-debuginfo.sh
|
|
||||||
@@ -123,7 +123,17 @@ debug_link()
|
|
||||||
local l="/usr/lib/debug$2"
|
local l="/usr/lib/debug$2"
|
||||||
local t="$1"
|
local t="$1"
|
||||||
echo >> "$LINKSFILE" "$l $t"
|
echo >> "$LINKSFILE" "$l $t"
|
||||||
@ -33,7 +28,7 @@ Index: b/scripts/find-debuginfo.sh
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Compare two binaries but ignore the .note.gnu.build-id section
|
# Compare two binaries but ignore the .note.gnu.build-id section
|
||||||
@@ -157,8 +167,8 @@ make_id_link()
|
@@ -158,8 +168,8 @@ make_id_link()
|
||||||
|
|
||||||
local other=$(readlink -m "$root_idfile")
|
local other=$(readlink -m "$root_idfile")
|
||||||
other=${other#$RPM_BUILD_ROOT}
|
other=${other#$RPM_BUILD_ROOT}
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
---
|
--- ./scripts/find-debuginfo.sh.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
scripts/find-debuginfo.sh | 69 +++++++++++++++++++++++++++++++++++-----------
|
+++ ./scripts/find-debuginfo.sh 2011-05-11 14:46:18.000000000 +0000
|
||||||
1 file changed, 53 insertions(+), 16 deletions(-)
|
@@ -127,6 +127,20 @@ debug_link()
|
||||||
|
|
||||||
Index: scripts/find-debuginfo.sh
|
|
||||||
===================================================================
|
|
||||||
--- scripts/find-debuginfo.sh.orig
|
|
||||||
+++ scripts/find-debuginfo.sh
|
|
||||||
@@ -126,6 +126,20 @@ debug_link()
|
|
||||||
link_relative "$t" "$l" "$RPM_BUILD_ROOT"
|
link_relative "$t" "$l" "$RPM_BUILD_ROOT"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,7 +21,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
# Make a build-id symlink for id $1 with suffix $3 to file $2.
|
# Make a build-id symlink for id $1 with suffix $3 to file $2.
|
||||||
make_id_link()
|
make_id_link()
|
||||||
{
|
{
|
||||||
@@ -144,7 +158,7 @@ make_id_link()
|
@@ -145,7 +159,7 @@ make_id_link()
|
||||||
local other=$(readlink -m "$root_idfile")
|
local other=$(readlink -m "$root_idfile")
|
||||||
other=${other#$RPM_BUILD_ROOT}
|
other=${other#$RPM_BUILD_ROOT}
|
||||||
if cmp -s "$root_idfile" "$RPM_BUILD_ROOT$file" ||
|
if cmp -s "$root_idfile" "$RPM_BUILD_ROOT$file" ||
|
||||||
@ -36,7 +30,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
# Two copies. Maybe one has to be setuid or something.
|
# Two copies. Maybe one has to be setuid or something.
|
||||||
echo >&2 "*** WARNING: identical binaries are copied, not linked:"
|
echo >&2 "*** WARNING: identical binaries are copied, not linked:"
|
||||||
echo >&2 " $file"
|
echo >&2 " $file"
|
||||||
@@ -173,12 +187,18 @@ strict_error=ERROR
|
@@ -174,12 +188,18 @@ strict_error=ERROR
|
||||||
$strict || strict_error=WARNING
|
$strict || strict_error=WARNING
|
||||||
|
|
||||||
# Strip ELF binaries
|
# Strip ELF binaries
|
||||||
@ -60,7 +54,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
get_debugfn "$f"
|
get_debugfn "$f"
|
||||||
[ -f "${debugfn}" ] && continue
|
[ -f "${debugfn}" ] && continue
|
||||||
|
|
||||||
@@ -199,8 +219,11 @@ while read nlinks inum f; do
|
@@ -200,8 +220,11 @@ while read nlinks inum f; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "extracting debug info from $f"
|
echo "extracting debug info from $f"
|
||||||
@ -74,7 +68,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
if [ -z "$id" ]; then
|
if [ -z "$id" ]; then
|
||||||
echo >&2 "*** ${strict_error}: No build ID note found in $f"
|
echo >&2 "*** ${strict_error}: No build ID note found in $f"
|
||||||
$strict && exit 2
|
$strict && exit 2
|
||||||
@@ -215,13 +238,25 @@ while read nlinks inum f; do
|
@@ -218,13 +241,25 @@ while read nlinks inum f; do
|
||||||
esac
|
esac
|
||||||
|
|
||||||
mkdir -p "${debugdn}"
|
mkdir -p "${debugdn}"
|
||||||
@ -107,7 +101,7 @@ Index: scripts/find-debuginfo.sh
|
|||||||
|
|
||||||
if [ -n "$id" ]; then
|
if [ -n "$id" ]; then
|
||||||
make_id_link "$id" "$dn/$(basename $f)"
|
make_id_link "$id" "$dn/$(basename $f)"
|
||||||
@@ -250,12 +285,14 @@ if [ -s "$SOURCEFILE" ]; then
|
@@ -253,12 +288,14 @@ if [ -s "$SOURCEFILE" ]; then
|
||||||
# stupid cpio creates new directories in mode 0700, fixup
|
# stupid cpio creates new directories in mode 0700, fixup
|
||||||
find "${RPM_BUILD_ROOT}/usr/src/debug" -type d -print0 |
|
find "${RPM_BUILD_ROOT}/usr/src/debug" -type d -print0 |
|
||||||
xargs --no-run-if-empty -0 chmod a+rx
|
xargs --no-run-if-empty -0 chmod a+rx
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
SUSE specific kernel provides/requires scripts
|
SUSE specific kernel provides/requires scripts
|
||||||
|
|
||||||
--- ./scripts/Makefile.am.orig 2010-03-25 16:39:30.000000000 +0000
|
--- ./scripts/Makefile.am.orig 2011-05-11 14:31:45.000000000 +0000
|
||||||
+++ ./scripts/Makefile.am 2010-03-25 16:39:56.000000000 +0000
|
+++ ./scripts/Makefile.am 2011-05-11 14:46:38.000000000 +0000
|
||||||
@@ -18,6 +18,7 @@ EXTRA_DIST = \
|
@@ -16,6 +16,7 @@ EXTRA_DIST = \
|
||||||
rpm.daily rpm.log rpm.xinetd rpm2cpio.sh \
|
rpmdb_loadcvt rpm.daily rpm.log rpm2cpio.sh \
|
||||||
tcl.req tgpg vpkg-provides.sh \
|
tcl.req tgpg vpkg-provides.sh \
|
||||||
find-requires.php find-provides.php \
|
find-requires.php find-provides.php \
|
||||||
+ find-requires.ksyms find-provides.ksyms \
|
+ find-requires.ksyms find-provides.ksyms \
|
||||||
find-php-provides find-php-requires \
|
find-php-provides find-php-requires \
|
||||||
mono-find-requires mono-find-provides \
|
mono-find-requires mono-find-provides \
|
||||||
ocaml-find-requires.sh ocaml-find-provides.sh \
|
ocaml-find-requires.sh ocaml-find-provides.sh \
|
||||||
@@ -34,6 +35,7 @@ rpmconfig_SCRIPTS = \
|
@@ -32,6 +33,7 @@ rpmconfig_SCRIPTS = \
|
||||||
check-buildroot check-rpaths check-rpaths-worker \
|
check-buildroot check-rpaths check-rpaths-worker \
|
||||||
find-lang.sh \
|
find-lang.sh \
|
||||||
perl.prov perl.req perldeps.pl pythondeps.sh osgideps.pl \
|
perl.prov perl.req perldeps.pl pythondeps.sh osgideps.pl \
|
||||||
@ -18,8 +18,8 @@ SUSE specific kernel provides/requires scripts
|
|||||||
mono-find-requires mono-find-provides \
|
mono-find-requires mono-find-provides \
|
||||||
pkgconfigdeps.sh libtooldeps.sh \
|
pkgconfigdeps.sh libtooldeps.sh \
|
||||||
ocaml-find-requires.sh ocaml-find-provides.sh \
|
ocaml-find-requires.sh ocaml-find-provides.sh \
|
||||||
--- ./scripts/find-provides.ksyms.orig 2010-03-25 16:39:56.000000000 +0000
|
--- ./scripts/find-provides.ksyms.orig 2011-05-11 14:46:38.000000000 +0000
|
||||||
+++ ./scripts/find-provides.ksyms 2010-03-25 16:39:56.000000000 +0000
|
+++ ./scripts/find-provides.ksyms 2011-05-11 14:46:38.000000000 +0000
|
||||||
@@ -0,0 +1,41 @@
|
@@ -0,0 +1,41 @@
|
||||||
+#! /bin/sh
|
+#! /bin/sh
|
||||||
+
|
+
|
||||||
@ -62,8 +62,8 @@ SUSE specific kernel provides/requires scripts
|
|||||||
+ | sed -r -ne "s/^0*([0-9a-f]+) A __crc_(.+)/ksym($flavor:\\2) = \\1/p"
|
+ | sed -r -ne "s/^0*([0-9a-f]+) A __crc_(.+)/ksym($flavor:\\2) = \\1/p"
|
||||||
+done \
|
+done \
|
||||||
+| sort -u
|
+| sort -u
|
||||||
--- ./scripts/find-requires.ksyms.orig 2010-03-25 16:39:56.000000000 +0000
|
--- ./scripts/find-requires.ksyms.orig 2011-05-11 14:46:38.000000000 +0000
|
||||||
+++ ./scripts/find-requires.ksyms 2010-03-25 16:39:56.000000000 +0000
|
+++ ./scripts/find-requires.ksyms 2011-05-11 14:46:38.000000000 +0000
|
||||||
@@ -0,0 +1,57 @@
|
@@ -0,0 +1,57 @@
|
||||||
+#! /bin/bash
|
+#! /bin/bash
|
||||||
+
|
+
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
Index: scripts/find-lang.sh
|
--- ./scripts/find-lang.sh.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-lang.sh 2011-05-11 14:53:34.000000000 +0000
|
||||||
--- scripts/find-lang.sh.orig
|
|
||||||
+++ scripts/find-lang.sh
|
|
||||||
@@ -28,10 +28,10 @@ the top of the tree containing the files
|
@@ -28,10 +28,10 @@ the top of the tree containing the files
|
||||||
PACKAGE_NAME is the %{name} of the package. This should also be
|
PACKAGE_NAME is the %{name} of the package. This should also be
|
||||||
the basename of the .mo files. the output is written to
|
the basename of the .mo files. the output is written to
|
||||||
@ -42,12 +40,12 @@ Index: scripts/find-lang.sh
|
|||||||
--with-qt )
|
--with-qt )
|
||||||
QT=
|
QT=
|
||||||
shift
|
shift
|
||||||
@@ -97,33 +105,49 @@ while test $# -gt 0 ; do
|
@@ -97,33 +105,40 @@ while test $# -gt 0 ; do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
+if ! test -s $MO_NAME ; then
|
+if ! test -s $MO_NAME ; then
|
||||||
+ echo "%defattr (644, root, root, 755)" > $MO_NAME
|
+ echo "%defattr (644, root, root, 755)" > $MO_NAME
|
||||||
+fi
|
+fi
|
||||||
+
|
+
|
||||||
+MO_NAME_NEW=$MO_NAME.tmp.$$
|
+MO_NAME_NEW=$MO_NAME.tmp.$$
|
||||||
@ -55,21 +53,14 @@ Index: scripts/find-lang.sh
|
|||||||
+
|
+
|
||||||
find $TOP_DIR -type f -o -type l|sed '
|
find $TOP_DIR -type f -o -type l|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
|
-'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
|
||||||
'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
|
-'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
|
||||||
|
+'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) %doc \1\2\3:
|
||||||
|
+'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) %doc \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
-/^$/d' > $MO_NAME
|
-/^$/d' > $MO_NAME
|
||||||
+/^$/d' >> $MO_NAME_NEW
|
+/^$/d' >> $MO_NAME_NEW
|
||||||
+
|
|
||||||
+find $TOP_DIR -type f -o -type l|sed '
|
|
||||||
+s:'"$TOP_DIR"'::
|
|
||||||
+/\/share\/locale\//d
|
|
||||||
+'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\([^/]*\)\(.*\)/LC_MESSAGES/.*\.mo$:%lang(\2) %doc \1\2\3\4:
|
|
||||||
+'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\([^/]*\)\(.*\)/LC_MESSAGES/'"$NAME"'\.mo$:%lang(\2) %doc \1\2\3\4:
|
|
||||||
+s:^\([^%].*\)::
|
|
||||||
+s:%lang(C) ::
|
|
||||||
+/^ *$/d' >> $MO_NAME_NEW
|
|
||||||
|
|
||||||
find $TOP_DIR -type d|sed '
|
find $TOP_DIR -type d|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
@ -99,7 +90,7 @@ Index: scripts/find-lang.sh
|
|||||||
|
|
||||||
find $TOP_DIR -type f|sed '
|
find $TOP_DIR -type f|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
@@ -131,7 +155,7 @@ s:'"$TOP_DIR"'::
|
@@ -131,7 +146,7 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
||||||
s:^[^%].*::
|
s:^[^%].*::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
@ -108,7 +99,7 @@ Index: scripts/find-lang.sh
|
|||||||
|
|
||||||
KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null`
|
KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null`
|
||||||
if [ x"$KDE3_HTML" != x -a -d "$TOP_DIR$KDE3_HTML" ]; then
|
if [ x"$KDE3_HTML" != x -a -d "$TOP_DIR$KDE3_HTML" ]; then
|
||||||
@@ -143,7 +167,7 @@ s:'"$TOP_DIR"'::
|
@@ -143,7 +158,7 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
@ -117,7 +108,7 @@ Index: scripts/find-lang.sh
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
KDE4_HTML=`kde4-config --expandvars --install html 2>/dev/null`
|
KDE4_HTML=`kde4-config --expandvars --install html 2>/dev/null`
|
||||||
@@ -156,7 +180,7 @@ s:'"$TOP_DIR"'::
|
@@ -156,7 +171,7 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
@ -126,7 +117,7 @@ Index: scripts/find-lang.sh
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
find $TOP_DIR -type f -o -type l|sed '
|
find $TOP_DIR -type f -o -type l|sed '
|
||||||
@@ -168,7 +192,7 @@ s:'"$TOP_DIR"'::
|
@@ -168,7 +183,7 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
||||||
s:^[^%].*::
|
s:^[^%].*::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
@ -135,7 +126,7 @@ Index: scripts/find-lang.sh
|
|||||||
|
|
||||||
find $TOP_DIR -type d|sed '
|
find $TOP_DIR -type d|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
@@ -176,17 +200,22 @@ s:'"$TOP_DIR"'::
|
@@ -176,17 +191,22 @@ s:'"$TOP_DIR"'::
|
||||||
'"$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:^\([^%].*\)::
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
|
75
findsupplements.diff
Normal file
75
findsupplements.diff
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
Add support for supplements to the internal dependency
|
||||||
|
generator.
|
||||||
|
|
||||||
|
--- build/rpmfc.c.orig 2011-05-13 16:54:26.000000000 +0000
|
||||||
|
+++ build/rpmfc.c 2011-05-13 17:11:20.000000000 +0000
|
||||||
|
@@ -54,6 +54,7 @@ struct rpmfc_s {
|
||||||
|
|
||||||
|
rpmds provides; /*!< (no. provides) package provides */
|
||||||
|
rpmds requires; /*!< (no. requires) package requires */
|
||||||
|
+ rpmds supplements; /*!< (no. supplements) package supplements */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rpmfcTokens_s {
|
||||||
|
@@ -481,6 +482,14 @@ static int rpmfcHelper(rpmfc fc, unsigne
|
||||||
|
dsContext = RPMSENSE_FIND_REQUIRES;
|
||||||
|
tagN = RPMTAG_REQUIRENAME;
|
||||||
|
break;
|
||||||
|
+ case 'S':
|
||||||
|
+ if (fc->skipProv)
|
||||||
|
+ return 0;
|
||||||
|
+ depname = "supplements";
|
||||||
|
+ depsp = &fc->supplements;
|
||||||
|
+ dsContext = RPMSENSE_FIND_REQUIRES|RPMSENSE_STRONG|RPMSENSE_MISSINGOK;
|
||||||
|
+ tagN = RPMTAG_ENHANCESNAME;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the entire path is filtered out, there's nothing more to do */
|
||||||
|
@@ -752,6 +761,7 @@ rpmfc rpmfcFree(rpmfc fc)
|
||||||
|
|
||||||
|
fc->provides = rpmdsFree(fc->provides);
|
||||||
|
fc->requires = rpmdsFree(fc->requires);
|
||||||
|
+ fc->supplements = rpmdsFree(fc->supplements);
|
||||||
|
}
|
||||||
|
fc = _free(fc);
|
||||||
|
return NULL;
|
||||||
|
@@ -804,6 +814,7 @@ rpmRC rpmfcApply(rpmfc fc)
|
||||||
|
for (ARGV_t fattr = fc->fattrs[fc->ix]; fattr && *fattr; fattr++) {
|
||||||
|
xx += rpmfcHelper(fc, 'P', *fattr);
|
||||||
|
xx += rpmfcHelper(fc, 'R', *fattr);
|
||||||
|
+ xx += rpmfcHelper(fc, 'S', *fattr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -846,6 +857,11 @@ rpmRC rpmfcApply(rpmfc fc)
|
||||||
|
dix = rpmdsFind(fc->requires, ds);
|
||||||
|
ds = rpmdsFree(ds);
|
||||||
|
break;
|
||||||
|
+ case 'S':
|
||||||
|
+ ds = rpmdsSingle(RPMTAG_ENHANCESNAME, N, EVR, Flags);
|
||||||
|
+ dix = rpmdsFind(fc->supplements, ds);
|
||||||
|
+ ds = rpmdsFree(ds);
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX assertion incorrect while generating -debuginfo deps. */
|
||||||
|
@@ -1357,6 +1373,18 @@ rpmRC rpmfcGenerateDepends(const rpmSpec
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Add Supplements: */
|
||||||
|
+ if (fc->supplements != NULL && rpmdsCount(fc->supplements) > 0 && !fc->skipReq) {
|
||||||
|
+ rpmds pi = rpmdsInit(fc->supplements);
|
||||||
|
+ while (rpmdsNext(pi) >= 0) {
|
||||||
|
+ rpmsenseFlags flags = rpmdsFlags(pi);
|
||||||
|
+
|
||||||
|
+ headerPutString(pkg->header, RPMTAG_ENHANCESNAME, rpmdsN(pi));
|
||||||
|
+ headerPutString(pkg->header, RPMTAG_ENHANCESVERSION, rpmdsEVR(pi));
|
||||||
|
+ headerPutUint32(pkg->header, RPMTAG_ENHANCESFLAGS, &flags, 1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Add dependency dictionary(#dependencies) */
|
||||||
|
if (rpmtdFromArgi(&td, RPMTAG_DEPENDSDICT, fc->ddictx)) {
|
||||||
|
assert(rpmtdType(&td) == RPM_INT32_TYPE);
|
@ -1,47 +0,0 @@
|
|||||||
--- ./lib/fsm.c.orig 2010-06-04 13:47:57.000000000 +0000
|
|
||||||
+++ ./lib/fsm.c 2010-06-04 13:48:07.000000000 +0000
|
|
||||||
@@ -1323,6 +1323,21 @@ static const char * rpmteTypeString(rpmt
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void removeSBITS(const char *path)
|
|
||||||
+{
|
|
||||||
+ struct stat stb;
|
|
||||||
+ if (lstat(path, &stb) == 0 && S_ISREG(stb.st_mode)) {
|
|
||||||
+ if ((stb.st_mode & 06000) != 0) {
|
|
||||||
+ (void) chmod(path, stb.st_mode & 0777);
|
|
||||||
+ }
|
|
||||||
+#if WITH_CAP
|
|
||||||
+ if (stb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) {
|
|
||||||
+ (void) cap_set_file(path, NULL);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#define IS_DEV_LOG(_x) \
|
|
||||||
((_x) != NULL && strlen(_x) >= (sizeof("/dev/log")-1) && \
|
|
||||||
rstreqn((_x), "/dev/log", sizeof("/dev/log")-1) && \
|
|
||||||
@@ -2027,11 +2042,8 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FSM_UNLINK:
|
|
||||||
- if (fsm->mapFlags & CPIO_SBIT_CHECK) {
|
|
||||||
- struct stat stb;
|
|
||||||
- if (lstat(fsm->path, &stb) == 0 && S_ISREG(stb.st_mode) && (stb.st_mode & 06000) != 0)
|
|
||||||
- chmod(fsm->path, stb.st_mode & 0777);
|
|
||||||
- }
|
|
||||||
+ if (fsm->mapFlags & CPIO_SBIT_CHECK)
|
|
||||||
+ removeSBITS(fsm->path);
|
|
||||||
rc = unlink(fsm->path);
|
|
||||||
if (_fsm_debug && (stage & FSM_SYSCALL))
|
|
||||||
rpmlog(RPMLOG_DEBUG, " %8s (%s) %s\n", cur,
|
|
||||||
@@ -2040,6 +2052,8 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS
|
|
||||||
rc = (errno == ENOENT ? CPIOERR_ENOENT : CPIOERR_UNLINK_FAILED);
|
|
||||||
break;
|
|
||||||
case FSM_RENAME:
|
|
||||||
+ if (fsm->mapFlags & CPIO_SBIT_CHECK)
|
|
||||||
+ removeSBITS(fsm->path);
|
|
||||||
rc = rename(fsm->opath, fsm->path);
|
|
||||||
#if defined(ETXTBSY) && defined(__HPUX__)
|
|
||||||
if (rc && errno == ETXTBSY) {
|
|
@ -1,5 +1,5 @@
|
|||||||
--- ./autodeps/linux.prov.orig 2010-04-08 14:52:42.000000000 +0000
|
--- ./autodeps/linux.prov.orig 2011-05-11 16:39:09.000000000 +0000
|
||||||
+++ ./autodeps/linux.prov 2010-04-08 15:04:37.000000000 +0000
|
+++ ./autodeps/linux.prov 2011-05-11 16:40:49.000000000 +0000
|
||||||
@@ -16,6 +16,8 @@ tcllist=
|
@@ -16,6 +16,8 @@ tcllist=
|
||||||
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
|
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
|
||||||
mimetypelist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(desktop)\$"))
|
mimetypelist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(desktop)\$"))
|
||||||
@ -26,9 +26,9 @@
|
|||||||
# --- Kernel module exported symbols
|
# --- Kernel module exported symbols
|
||||||
[ -x /usr/lib/rpm/find-provides.ksyms ] &&
|
[ -x /usr/lib/rpm/find-provides.ksyms ] &&
|
||||||
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
|
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
|
||||||
--- ./autodeps/linux.req.orig 2010-04-08 15:01:18.000000000 +0000
|
--- ./autodeps/linux.req.orig 2011-05-11 16:39:09.000000000 +0000
|
||||||
+++ ./autodeps/linux.req 2010-04-08 15:04:20.000000000 +0000
|
+++ ./autodeps/linux.req 2011-05-11 16:40:49.000000000 +0000
|
||||||
@@ -35,6 +35,7 @@ perllist=()
|
@@ -34,6 +34,7 @@ perllist=()
|
||||||
pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..'))
|
pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..'))
|
||||||
tcllist=()
|
tcllist=()
|
||||||
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
|
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
|
||||||
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# --- Alpha does not mark 64bit dependencies
|
# --- Alpha does not mark 64bit dependencies
|
||||||
@@ -144,6 +145,11 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo
|
@@ -143,6 +144,11 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -48,17 +48,3 @@
|
|||||||
# --- Kernel module imported symbols
|
# --- Kernel module imported symbols
|
||||||
[ -x ${0%/*}/find-requires.ksyms ] &&
|
[ -x ${0%/*}/find-requires.ksyms ] &&
|
||||||
printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@"
|
printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@"
|
||||||
--- ./scripts/fontconfig.prov.orig 2010-04-08 14:57:21.000000000 +0000
|
|
||||||
+++ ./scripts/fontconfig.prov 2010-04-08 14:57:42.000000000 +0000
|
|
||||||
@@ -12,7 +12,10 @@
|
|
||||||
|
|
||||||
fcquery=/usr/bin/fc-query
|
|
||||||
|
|
||||||
-[ -x $fcquery ] || exit 0
|
|
||||||
+[ -x $fcquery ] || {
|
|
||||||
+ cat > /dev/null
|
|
||||||
+ exit 0
|
|
||||||
+}
|
|
||||||
|
|
||||||
# filter out anything outside main fontconfig path
|
|
||||||
grep /usr/share/fonts/ |
|
|
||||||
|
55
headeradddb.diff
Normal file
55
headeradddb.diff
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Add rpmtsHeaderAddDB and rpmtsHeaderRemoveDB so that
|
||||||
|
convertdb1 will build again.
|
||||||
|
|
||||||
|
--- lib/rpmts.c.orig 2011-05-12 13:21:03.000000000 +0000
|
||||||
|
+++ lib/rpmts.c 2011-05-12 13:26:25.000000000 +0000
|
||||||
|
@@ -159,6 +159,24 @@ int rpmtsVerifyDB(rpmts ts)
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int rpmtsHeaderAddDB(rpmts ts, Header h)
|
||||||
|
+{
|
||||||
|
+ if (rpmtsOpenDB(ts, (O_RDWR|O_CREAT)))
|
||||||
|
+ return RPMRC_FAIL;
|
||||||
|
+ if (rpmdbAdd(rpmtsGetRdb(ts), h) != 0)
|
||||||
|
+ return RPMRC_FAIL;
|
||||||
|
+ return RPMRC_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int rpmtsHeaderRemoveDB(rpmts ts, unsigned int hdrNum)
|
||||||
|
+{
|
||||||
|
+ if (rpmtsOpenDB(ts, (O_RDWR|O_CREAT)))
|
||||||
|
+ return RPMRC_FAIL;
|
||||||
|
+ if (rpmdbRemove(rpmtsGetRdb(ts), hdrNum) != 0)
|
||||||
|
+ return RPMRC_FAIL;
|
||||||
|
+ return RPMRC_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* keyp might no be defined. */
|
||||||
|
rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag,
|
||||||
|
const void * keyp, size_t keylen)
|
||||||
|
--- lib/rpmts.h.orig 2011-05-12 13:21:11.000000000 +0000
|
||||||
|
+++ lib/rpmts.h 2011-05-12 13:28:32.000000000 +0000
|
||||||
|
@@ -264,6 +264,22 @@ int rpmtsRebuildDB(rpmts ts);
|
||||||
|
int rpmtsVerifyDB(rpmts ts);
|
||||||
|
|
||||||
|
/** \ingroup rpmts
|
||||||
|
+ * Add a header to the database used by the transaction.
|
||||||
|
+ * @param ts transaction set
|
||||||
|
+ * @param h header to add
|
||||||
|
+ * @return 0 on success
|
||||||
|
+ */
|
||||||
|
+int rpmtsHeaderAddDB(rpmts ts, Header h);
|
||||||
|
+
|
||||||
|
+/** \ingroup rpmts
|
||||||
|
+ * Remove a header from the database used by the transaction.
|
||||||
|
+ * @param ts transaction set
|
||||||
|
+ * @param hdrNum index of header to remove
|
||||||
|
+ * @return 0 on success
|
||||||
|
+ */
|
||||||
|
+int rpmtsHeaderRemoveDB(rpmts ts, unsigned int hdrNum);
|
||||||
|
+
|
||||||
|
+/** \ingroup rpmts
|
||||||
|
* Return transaction database iterator.
|
||||||
|
* @param ts transaction set
|
||||||
|
* @param rpmtag database index tag
|
@ -1,7 +1,5 @@
|
|||||||
Index: rpm-4.8.0/autodeps/linux.prov
|
--- ./autodeps/linux.prov.orig 2011-05-11 16:45:13.000000000 +0000
|
||||||
===================================================================
|
+++ ./autodeps/linux.prov 2011-05-11 16:51:10.000000000 +0000
|
||||||
--- rpm-4.8.0.orig/autodeps/linux.prov 2010-12-08 15:16:12.984842683 +0100
|
|
||||||
+++ rpm-4.8.0/autodeps/linux.prov 2010-12-08 15:16:52.530842661 +0100
|
|
||||||
@@ -107,4 +107,9 @@ fi
|
@@ -107,4 +107,9 @@ fi
|
||||||
[ -x /usr/lib/rpm/gstreamer-provides ] &&
|
[ -x /usr/lib/rpm/gstreamer-provides ] &&
|
||||||
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u
|
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/gstreamer-provides | sort -u
|
||||||
@ -12,14 +10,34 @@ Index: rpm-4.8.0/autodeps/linux.prov
|
|||||||
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/sysvinitdeps.sh -P | sort -u
|
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/sysvinitdeps.sh -P | sort -u
|
||||||
+
|
+
|
||||||
exit 0
|
exit 0
|
||||||
Index: rpm-4.8.0/scripts/sysvinitdeps.sh
|
--- ./scripts/Makefile.am.orig 2011-05-11 14:46:38.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/Makefile.am 2011-05-11 16:52:10.000000000 +0000
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
@@ -22,6 +22,7 @@ EXTRA_DIST = \
|
||||||
+++ rpm-4.8.0/scripts/sysvinitdeps.sh 2010-12-08 15:17:11.183843303 +0100
|
ocaml-find-requires.sh ocaml-find-provides.sh \
|
||||||
@@ -0,0 +1,13 @@
|
pkgconfigdeps.sh libtooldeps.sh \
|
||||||
|
fontconfig.prov desktop-file.prov script.req \
|
||||||
|
+ sysvinitdeps.sh \
|
||||||
|
macros.perl macros.php macros.python
|
||||||
|
|
||||||
|
rpmconfig_SCRIPTS = \
|
||||||
|
@@ -38,6 +39,7 @@ rpmconfig_SCRIPTS = \
|
||||||
|
pkgconfigdeps.sh libtooldeps.sh \
|
||||||
|
ocaml-find-requires.sh ocaml-find-provides.sh \
|
||||||
|
fontconfig.prov desktop-file.prov script.req \
|
||||||
|
+ sysvinitdeps.sh \
|
||||||
|
rpmdb_loadcvt rpm2cpio.sh tcl.req tgpg
|
||||||
|
|
||||||
|
rpmconfig_DATA = \
|
||||||
|
--- ./scripts/sysvinitdeps.sh.orig 2011-05-11 16:51:10.000000000 +0000
|
||||||
|
+++ ./scripts/sysvinitdeps.sh 2011-05-11 16:54:33.000000000 +0000
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+
|
+
|
||||||
+# -P blindly assumed
|
+[ "$1" = '-P' -o "$1" = '--provides' ] || {
|
||||||
|
+ cat > /dev/null
|
||||||
|
+ exit 0
|
||||||
|
+}
|
||||||
|
+
|
||||||
+while read file; do
|
+while read file; do
|
||||||
+ case $file in
|
+ case $file in
|
||||||
+ */etc/init.d/*)
|
+ */etc/init.d/*)
|
||||||
@ -30,15 +48,3 @@ Index: rpm-4.8.0/scripts/sysvinitdeps.sh
|
|||||||
+ ;;
|
+ ;;
|
||||||
+ esac
|
+ esac
|
||||||
+done
|
+done
|
||||||
Index: rpm-4.8.0/scripts/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- rpm-4.8.0.orig/scripts/Makefile.am 2010-12-08 15:16:12.985844013 +0100
|
|
||||||
+++ rpm-4.8.0/scripts/Makefile.am 2010-12-08 15:16:52.531842720 +0100
|
|
||||||
@@ -40,6 +40,7 @@ rpmconfig_SCRIPTS = \
|
|
||||||
pkgconfigdeps.sh libtooldeps.sh \
|
|
||||||
ocaml-find-requires.sh ocaml-find-provides.sh \
|
|
||||||
fontconfig.prov desktop-file.prov \
|
|
||||||
+ sysvinitdeps.sh \
|
|
||||||
rpmdb_loadcvt rpmdiff rpm2cpio.sh tcl.req tgpg
|
|
||||||
|
|
||||||
rpmconfig_DATA = \
|
|
||||||
|
30
langnoc.diff
30
langnoc.diff
@ -1,6 +1,6 @@
|
|||||||
--- ./macros.in.orig 2010-10-28 13:57:37.000000000 +0000
|
--- ./macros.in.orig 2011-05-11 15:59:44.000000000 +0000
|
||||||
+++ ./macros.in 2010-10-29 12:35:39.000000000 +0000
|
+++ ./macros.in 2011-05-11 16:45:30.000000000 +0000
|
||||||
@@ -1381,6 +1381,7 @@ EOF
|
@@ -1247,6 +1247,7 @@ EOF
|
||||||
# %files -f %{name}.lang
|
# %files -f %{name}.lang
|
||||||
#
|
#
|
||||||
%find_lang %{_rpmconfigdir}/find-lang.sh %{buildroot}
|
%find_lang %{_rpmconfigdir}/find-lang.sh %{buildroot}
|
||||||
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
# Commands + opts to use for retrieving remote files
|
# Commands + opts to use for retrieving remote files
|
||||||
# Proxy opts can be set through --httpproxy/--httpport popt aliases,
|
# Proxy opts can be set through --httpproxy/--httpport popt aliases,
|
||||||
--- ./scripts/find-lang.sh.orig 2010-10-28 13:44:49.000000000 +0000
|
--- ./scripts/find-lang.sh.orig 2011-05-11 14:53:34.000000000 +0000
|
||||||
+++ ./scripts/find-lang.sh 2010-10-29 09:39:22.000000000 +0000
|
+++ ./scripts/find-lang.sh 2011-05-11 16:45:30.000000000 +0000
|
||||||
@@ -62,6 +62,8 @@ MO=
|
@@ -62,6 +62,8 @@ MO=
|
||||||
MO_NAME=$NAME.lang
|
MO_NAME=$NAME.lang
|
||||||
ALL_NAME=#
|
ALL_NAME=#
|
||||||
@ -34,17 +34,15 @@
|
|||||||
* )
|
* )
|
||||||
MO_NAME=${1}
|
MO_NAME=${1}
|
||||||
shift
|
shift
|
||||||
@@ -117,6 +127,8 @@ s:'"$TOP_DIR"'::
|
@@ -117,27 +127,32 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) %doc \1\2\3:
|
||||||
'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
|
'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) %doc \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
+'"$ONLY_C"'/%lang(C)/!d
|
+'"$ONLY_C"'/%lang(C)/!d
|
||||||
+'"$NO_C"'/%lang(C)/d
|
+'"$NO_C"'/%lang(C)/d
|
||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
@@ -131,22 +143,25 @@ s:%lang(C) ::
|
|
||||||
|
|
||||||
find $TOP_DIR -type d|sed '
|
find $TOP_DIR -type d|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
-'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir %doc \1:
|
-'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir %doc \1:
|
||||||
@ -73,7 +71,7 @@
|
|||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
find $TOP_DIR -type f|sed '
|
find $TOP_DIR -type f|sed '
|
||||||
@@ -154,6 +169,8 @@ s:'"$TOP_DIR"'::
|
@@ -145,6 +160,8 @@ s:'"$TOP_DIR"'::
|
||||||
'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'/'"$NAME"'-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'/'"$NAME"'-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
||||||
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
|
||||||
s:^[^%].*::
|
s:^[^%].*::
|
||||||
@ -82,7 +80,7 @@
|
|||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
@@ -166,6 +183,8 @@ s:'"$TOP_DIR"'::
|
@@ -157,6 +174,8 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
@ -91,7 +89,7 @@
|
|||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
fi
|
fi
|
||||||
@@ -179,6 +198,8 @@ s:'"$TOP_DIR"'::
|
@@ -170,6 +189,8 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
|
||||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
@ -100,7 +98,7 @@
|
|||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
fi
|
fi
|
||||||
@@ -191,6 +212,8 @@ s:'"$TOP_DIR"'::
|
@@ -182,6 +203,8 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}_[a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}_[a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
||||||
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1:
|
||||||
s:^[^%].*::
|
s:^[^%].*::
|
||||||
@ -109,7 +107,7 @@
|
|||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
@@ -199,6 +222,8 @@ s:'"$TOP_DIR"'::
|
@@ -190,6 +213,8 @@ s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\)::
|
'"$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:^\([^%].*\)::
|
||||||
@ -118,7 +116,7 @@
|
|||||||
s:%lang(C) ::
|
s:%lang(C) ::
|
||||||
/^$/d' >> $MO_NAME_NEW
|
/^$/d' >> $MO_NAME_NEW
|
||||||
|
|
||||||
@@ -206,6 +231,8 @@ find $TOP_DIR -type f -o -type l|sed '
|
@@ -197,6 +222,8 @@ find $TOP_DIR -type f -o -type l|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
'"$NO_ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/'"$NAME"'\.[a-z0-9].*\):%lang(\2) \1*:
|
'"$NO_ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/'"$NAME"'\.[a-z0-9].*\):%lang(\2) \1*:
|
||||||
s:^\([^%].*\)::
|
s:^\([^%].*\)::
|
||||||
|
244
lazystatfs.diff
244
lazystatfs.diff
@ -1,6 +1,7 @@
|
|||||||
--- ./configure.ac.orig 2010-03-25 15:16:21.000000000 +0000
|
Prefer sys/vfs.h, as statvfs stats all filesystems again
|
||||||
+++ ./configure.ac 2010-03-25 15:27:47.000000000 +0000
|
--- ./configure.ac.orig 2011-05-12 12:36:32.000000000 +0000
|
||||||
@@ -510,25 +510,25 @@ dnl
|
+++ ./configure.ac 2011-05-12 12:36:42.000000000 +0000
|
||||||
|
@@ -402,25 +402,25 @@ dnl
|
||||||
found_struct_statfs=no
|
found_struct_statfs=no
|
||||||
|
|
||||||
if test X$found_struct_statfs = Xno ; then
|
if test X$found_struct_statfs = Xno ; then
|
||||||
@ -33,242 +34,17 @@
|
|||||||
found_struct_statfs=yes],[])
|
found_struct_statfs=yes],[])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
--- ./lib/transaction.c.orig 2010-03-25 15:14:38.000000000 +0000
|
--- ./lib/transaction.c.orig 2011-05-12 12:36:55.000000000 +0000
|
||||||
+++ ./lib/transaction.c 2010-03-25 15:44:25.000000000 +0000
|
+++ ./lib/transaction.c 2011-05-12 12:38:03.000000000 +0000
|
||||||
@@ -45,6 +45,7 @@
|
@@ -114,7 +114,11 @@ static rpmDiskSpaceInfo rpmtsCreateDSI(c
|
||||||
#include "debug.h"
|
dsi->bneeded = 0;
|
||||||
|
dsi->ineeded = 0;
|
||||||
struct diskspaceInfo_s {
|
|
||||||
+ const char *mntPoint; /*!< File system mount point */
|
|
||||||
dev_t dev; /*!< File system device number. */
|
|
||||||
int64_t bneeded; /*!< No. of blocks needed. */
|
|
||||||
int64_t ineeded; /*!< No. of inodes needed. */
|
|
||||||
@@ -61,83 +62,78 @@ struct diskspaceInfo_s {
|
|
||||||
|
|
||||||
static int rpmtsInitDSI(const rpmts ts)
|
|
||||||
{
|
|
||||||
- rpmDiskSpaceInfo dsi;
|
|
||||||
- struct stat sb;
|
|
||||||
- int rc;
|
|
||||||
- int i;
|
|
||||||
-
|
|
||||||
if (rpmtsFilterFlags(ts) & RPMPROB_FILTER_DISKSPACE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- rpmlog(RPMLOG_DEBUG, "mounted filesystems:\n");
|
|
||||||
- rpmlog(RPMLOG_DEBUG,
|
|
||||||
- " i dev bsize bavail iavail mount point\n");
|
|
||||||
-
|
|
||||||
- rc = rpmGetFilesystemList(&ts->filesystems, &ts->filesystemCount);
|
|
||||||
- if (rc || ts->filesystems == NULL || ts->filesystemCount <= 0)
|
|
||||||
- return rc;
|
|
||||||
-
|
|
||||||
- /* Get available space on mounted file systems. */
|
|
||||||
-
|
|
||||||
ts->dsi = _free(ts->dsi);
|
|
||||||
- ts->dsi = xcalloc((ts->filesystemCount + 1), sizeof(*ts->dsi));
|
|
||||||
+ ts->dsi = xcalloc(1, sizeof(*ts->dsi));
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
|
|
||||||
- dsi = ts->dsi;
|
|
||||||
+static rpmDiskSpaceInfo rpmtsCreateDSI(const rpmts ts, dev_t dev, const char *dirName, int count)
|
|
||||||
+{
|
|
||||||
+ rpmDiskSpaceInfo dsi;
|
|
||||||
+ struct stat sb;
|
|
||||||
+ int rc;
|
|
||||||
|
|
||||||
- if (dsi != NULL)
|
|
||||||
- for (i = 0; (i < ts->filesystemCount) && dsi; i++, dsi++) {
|
|
||||||
#if STATFS_IN_SYS_STATVFS
|
|
||||||
- struct statvfs sfb;
|
|
||||||
- memset(&sfb, 0, sizeof(sfb));
|
|
||||||
- rc = statvfs(ts->filesystems[i], &sfb);
|
|
||||||
+ struct statvfs sfb;
|
|
||||||
+ memset(&sfb, 0, sizeof(sfb));
|
|
||||||
+ rc = statvfs(ts->filesystems[i], &sfb);
|
|
||||||
#else
|
|
||||||
- struct statfs sfb;
|
|
||||||
- memset(&sfb, 0, sizeof(sfb));
|
|
||||||
+ struct statfs sfb;
|
|
||||||
+ memset(&sfb, 0, sizeof(sfb));
|
|
||||||
# if STAT_STATFS4
|
|
||||||
/* This platform has the 4-argument version of the statfs call. The last two
|
|
||||||
* should be the size of struct statfs and 0, respectively. The 0 is the
|
|
||||||
* filesystem type, and is always 0 when statfs is called on a mounted
|
|
||||||
* filesystem, as we're doing.
|
|
||||||
*/
|
|
||||||
- rc = statfs(ts->filesystems[i], &sfb, sizeof(sfb), 0);
|
|
||||||
+ rc = statfs(dirName, &sfb, sizeof(sfb), 0);
|
|
||||||
# else
|
|
||||||
- rc = statfs(ts->filesystems[i], &sfb);
|
|
||||||
+ rc = statfs(dirName, &sfb);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
- if (rc)
|
|
||||||
- break;
|
|
||||||
+ if (rc)
|
|
||||||
+ return NULL;
|
|
||||||
|
|
||||||
- rc = stat(ts->filesystems[i], &sb);
|
|
||||||
- if (rc)
|
|
||||||
- break;
|
|
||||||
- dsi->dev = sb.st_dev;
|
|
||||||
+ rc = stat(dirName, &sb);
|
|
||||||
+ if (rc)
|
|
||||||
+ return NULL;
|
|
||||||
+ if (sb.st_dev != dev)
|
|
||||||
+ return NULL;
|
|
||||||
|
|
||||||
- dsi->bsize = sfb.f_bsize;
|
|
||||||
- dsi->bneeded = 0;
|
|
||||||
- dsi->ineeded = 0;
|
|
||||||
+ ts->dsi = xrealloc(ts->dsi, (count + 2) * sizeof(*ts->dsi));
|
|
||||||
+ dsi = ts->dsi + count;
|
|
||||||
+ memset(dsi, 0, 2 * sizeof(*dsi));
|
|
||||||
+
|
|
||||||
+ dsi->dev = sb.st_dev;
|
|
||||||
+ dsi->bsize = sfb.f_bsize;
|
|
||||||
+ if (!dsi->bsize)
|
|
||||||
+ dsi->bsize = 512; /* we need a bsize */
|
|
||||||
+ dsi->bneeded = 0;
|
|
||||||
+ dsi->ineeded = 0;
|
|
||||||
#ifdef STATFS_HAS_F_BAVAIL
|
#ifdef STATFS_HAS_F_BAVAIL
|
||||||
- dsi->bavail = (sfb.f_flag & ST_RDONLY) ? 0 : sfb.f_bavail;
|
|
||||||
+# ifdef ST_RDONLY
|
+# ifdef ST_RDONLY
|
||||||
+ dsi->bavail = (sfb.f_flag & ST_RDONLY) ? 0 : sfb.f_bavail;
|
dsi->bavail = (sfb.f_flag & ST_RDONLY) ? 0 : sfb.f_bavail;
|
||||||
+# else
|
+# else
|
||||||
+ dsi->bavail = sfb.f_bavail;
|
+ dsi->bavail = sfb.f_bavail;
|
||||||
+# endif
|
+# endif
|
||||||
#else
|
#else
|
||||||
/* FIXME: the statfs struct doesn't have a member to tell how many blocks are
|
/* FIXME: the statfs struct doesn't have a member to tell how many blocks are
|
||||||
* available for non-superusers. f_blocks - f_bfree is probably too big, but
|
* available for non-superusers. f_blocks - f_bfree is probably too big, but
|
||||||
* it's about all we can do.
|
|
||||||
*/
|
|
||||||
- dsi->bavail = sfb.f_blocks - sfb.f_bfree;
|
|
||||||
+ dsi->bavail = sfb.f_blocks - sfb.f_bfree;
|
|
||||||
#endif
|
|
||||||
- /* XXX Avoid FAT and other file systems that have not inodes. */
|
|
||||||
- /* XXX assigning negative value to unsigned type */
|
|
||||||
- dsi->iavail = !(sfb.f_ffree == 0 && sfb.f_files == 0)
|
|
||||||
- ? sfb.f_ffree : -1;
|
|
||||||
- rpmlog(RPMLOG_DEBUG,
|
|
||||||
- "%5d 0x%08x %8" PRId64 " %12" PRId64 " %12" PRId64" %s\n",
|
|
||||||
- i, (unsigned) dsi->dev, dsi->bsize,
|
|
||||||
- dsi->bavail, dsi->iavail,
|
|
||||||
- ts->filesystems[i]);
|
|
||||||
- }
|
|
||||||
- return rc;
|
|
||||||
+ /* XXX Avoid FAT and other file systems that have not inodes. */
|
|
||||||
+ /* XXX assigning negative value to unsigned type */
|
|
||||||
+ dsi->iavail = !(sfb.f_ffree == 0 && sfb.f_files == 0)
|
|
||||||
+ ? sfb.f_ffree : -1;
|
|
||||||
+ return dsi;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void rpmtsUpdateDSI(const rpmts ts, dev_t dev,
|
|
||||||
+static void rpmtsUpdateDSI(const rpmts ts, dev_t dev, const char *dirName,
|
|
||||||
rpm_loff_t fileSize, rpm_loff_t prevSize, rpm_loff_t fixupSize,
|
|
||||||
rpmFileAction action)
|
|
||||||
{
|
|
||||||
@@ -148,8 +140,10 @@ static void rpmtsUpdateDSI(const rpmts t
|
|
||||||
if (dsi) {
|
|
||||||
while (dsi->bsize && dsi->dev != dev)
|
|
||||||
dsi++;
|
|
||||||
- if (dsi->bsize == 0)
|
|
||||||
- dsi = NULL;
|
|
||||||
+ if (dsi->bsize == 0) {
|
|
||||||
+ /* create new entry */
|
|
||||||
+ dsi = rpmtsCreateDSI(ts, dev, dirName, dsi - ts->dsi);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
if (dsi == NULL)
|
|
||||||
return;
|
|
||||||
@@ -187,31 +181,58 @@ static void rpmtsUpdateDSI(const rpmts t
|
|
||||||
dsi->bneeded -= BLOCK_ROUND(fixupSize, dsi->bsize);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void rpmtsFindDSIMount(const rpmts ts, rpmDiskSpaceInfo dsi)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+ struct stat sb;
|
|
||||||
+
|
|
||||||
+ /* must leave chroot for this */
|
|
||||||
+ if (rpmtsChrootDone(ts)) {
|
|
||||||
+ chroot(".");
|
|
||||||
+ }
|
|
||||||
+ if (!ts->filesystemCount)
|
|
||||||
+ rpmGetFilesystemList(&ts->filesystems, &ts->filesystemCount);
|
|
||||||
+ for (i = 0; i < ts->filesystemCount; i++) {
|
|
||||||
+ if (stat(ts->filesystems[i], &sb))
|
|
||||||
+ continue;
|
|
||||||
+ if (sb.st_dev == dsi->dev) {
|
|
||||||
+ dsi->mntPoint = ts->filesystems[i];
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (i == ts->filesystemCount) {
|
|
||||||
+ /* file system not found, create something to display */
|
|
||||||
+ dsi->mntPoint = xmalloc(20);
|
|
||||||
+ sprintf((char *)dsi->mntPoint, "dev 0x%08x", (unsigned)dsi->dev);
|
|
||||||
+ }
|
|
||||||
+ if (rpmtsChrootDone(ts)) {
|
|
||||||
+ chroot(ts->rootDir);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
|
|
||||||
{
|
|
||||||
rpmDiskSpaceInfo dsi;
|
|
||||||
rpmps ps;
|
|
||||||
int fc;
|
|
||||||
- int i;
|
|
||||||
-
|
|
||||||
- if (ts->filesystems == NULL || ts->filesystemCount <= 0)
|
|
||||||
- return;
|
|
||||||
|
|
||||||
dsi = ts->dsi;
|
|
||||||
- if (dsi == NULL)
|
|
||||||
+ if (dsi == NULL || !dsi->bsize)
|
|
||||||
return;
|
|
||||||
fc = rpmfiFC(rpmteFI(te));
|
|
||||||
if (fc <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ps = rpmtsProblems(ts);
|
|
||||||
- for (i = 0; i < ts->filesystemCount; i++, dsi++) {
|
|
||||||
+ for (; dsi->bsize; dsi++) {
|
|
||||||
|
|
||||||
if (dsi->bavail >= 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) {
|
|
||||||
if (dsi->bneeded != dsi->obneeded) {
|
|
||||||
+ if (!dsi->mntPoint)
|
|
||||||
+ rpmtsFindDSIMount(ts, dsi);
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKSPACE,
|
|
||||||
rpmteNEVRA(te), rpmteKey(te),
|
|
||||||
- ts->filesystems[i], NULL, NULL,
|
|
||||||
+ dsi->mntPoint, NULL, NULL,
|
|
||||||
(adj_fs_blocks(dsi->bneeded)) * dsi->bsize);
|
|
||||||
dsi->obneeded = dsi->bneeded;
|
|
||||||
}
|
|
||||||
@@ -219,9 +240,11 @@ static void rpmtsCheckDSIProblems(const
|
|
||||||
|
|
||||||
if (dsi->iavail >= 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) {
|
|
||||||
if (dsi->ineeded != dsi->oineeded) {
|
|
||||||
+ if (!dsi->mntPoint)
|
|
||||||
+ rpmtsFindDSIMount(ts, dsi);
|
|
||||||
rpmpsAppend(ps, RPMPROB_DISKNODES,
|
|
||||||
rpmteNEVRA(te), rpmteKey(te),
|
|
||||||
- ts->filesystems[i], NULL, NULL,
|
|
||||||
+ dsi->mntPoint, NULL, NULL,
|
|
||||||
(adj_fs_blocks(dsi->ineeded)));
|
|
||||||
dsi->oineeded = dsi->ineeded;
|
|
||||||
}
|
|
||||||
@@ -543,7 +566,7 @@ assert(otherFi != NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update disk space info for a file. */
|
|
||||||
- rpmtsUpdateDSI(ts, fiFps->entry->dev, rpmfiFSize(fi),
|
|
||||||
+ rpmtsUpdateDSI(ts, fiFps->entry->dev, fiFps->entry->dirName, rpmfiFSize(fi),
|
|
||||||
rpmfiFReplacedSize(fi), fixupSize, rpmfsGetAction(fs, i));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
--- ./lib/tagexts.c.orig 2010-01-08 08:14:37.000000000 +0000
|
Convert output to the current locale. Assumes utf8 input if the
|
||||||
+++ ./lib/tagexts.c 2010-03-24 16:46:03.000000000 +0000
|
decoding works, otherwise iso-8859-1.
|
||||||
|
|
||||||
|
--- ./lib/tagexts.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./lib/tagexts.c 2011-05-10 16:05:30.000000000 +0000
|
||||||
@@ -2,6 +2,7 @@
|
@@ -2,6 +2,7 @@
|
||||||
* \file lib/formats.c
|
* \file lib/formats.c
|
||||||
*/
|
*/
|
||||||
@ -8,7 +11,7 @@
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
#include <rpm/rpmtypes.h>
|
#include <rpm/rpmtypes.h>
|
||||||
@@ -157,6 +158,114 @@ exit:
|
@@ -150,6 +151,114 @@ exit:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,10 +124,10 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* Retrieve mounted file system paths.
|
* Retrieve trigger info.
|
||||||
* @param h header
|
* @param h header
|
||||||
@@ -533,10 +642,41 @@ static int i18nTag(Header h, rpmTag tag,
|
@@ -435,10 +544,41 @@ static int i18nTag(Header h, rpmTag tag,
|
||||||
dstring = _free(dstring);
|
#endif
|
||||||
|
|
||||||
rc = headerGet(h, tag, td, HEADERGET_ALLOC);
|
rc = headerGet(h, tag, td, HEADERGET_ALLOC);
|
||||||
+ if (rc && td->data) {
|
+ if (rc && td->data) {
|
||||||
@ -165,7 +168,7 @@
|
|||||||
* Retrieve summary text.
|
* Retrieve summary text.
|
||||||
* @param h header
|
* @param h header
|
||||||
* @retval td tag data container
|
* @retval td tag data container
|
||||||
@@ -558,6 +698,16 @@ static int descriptionTag(Header h, rpmt
|
@@ -460,6 +600,16 @@ static int descriptionTag(Header h, rpmt
|
||||||
return i18nTag(h, RPMTAG_DESCRIPTION, td, hgflags);
|
return i18nTag(h, RPMTAG_DESCRIPTION, td, hgflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +185,7 @@
|
|||||||
/**
|
/**
|
||||||
* Retrieve group text.
|
* Retrieve group text.
|
||||||
* @param h header
|
* @param h header
|
||||||
@@ -791,6 +941,8 @@ static const struct headerTagFunc_s rpmH
|
@@ -677,6 +827,8 @@ static const struct headerTagFunc_s rpmH
|
||||||
{ RPMTAG_LONGARCHIVESIZE, longarchivesizeTag },
|
{ RPMTAG_LONGARCHIVESIZE, longarchivesizeTag },
|
||||||
{ RPMTAG_LONGSIZE, longsizeTag },
|
{ RPMTAG_LONGSIZE, longsizeTag },
|
||||||
{ RPMTAG_LONGSIGSIZE, longsigsizeTag },
|
{ RPMTAG_LONGSIGSIZE, longsigsizeTag },
|
||||||
|
55
luaroot.diff
55
luaroot.diff
@ -1,55 +0,0 @@
|
|||||||
--- ./lib/psm.c.orig 2009-12-07 14:36:49.000000000 +0000
|
|
||||||
+++ ./lib/psm.c 2010-03-25 14:42:52.000000000 +0000
|
|
||||||
@@ -455,6 +455,8 @@ static rpmRC runLuaScript(rpmpsm psm, He
|
|
||||||
#ifdef WITH_LUA
|
|
||||||
char *sname = NULL;
|
|
||||||
int rootFd = -1;
|
|
||||||
+ int chroot_done;
|
|
||||||
+ const char *rootDir;
|
|
||||||
int xx;
|
|
||||||
rpmlua lua = NULL; /* Global state. */
|
|
||||||
rpmluav var;
|
|
||||||
@@ -463,6 +465,22 @@ static rpmRC runLuaScript(rpmpsm psm, He
|
|
||||||
|
|
||||||
rpmlog(RPMLOG_DEBUG, "%s: %s running <lua> scriptlet.\n",
|
|
||||||
psm->stepName, sname);
|
|
||||||
+ chroot_done = rpmtsChrootDone(ts);
|
|
||||||
+ rootDir = rpmtsRootDir(ts);
|
|
||||||
+ if (!chroot_done) {
|
|
||||||
+ if (rootDir != NULL && strcmp(rootDir, "/") && *rootDir == '/') {
|
|
||||||
+ xx = chdir("/");
|
|
||||||
+ rootFd = open(".", O_RDONLY, 0);
|
|
||||||
+ if (rootFd >= 0) {
|
|
||||||
+ xx = chroot(rootDir);
|
|
||||||
+ xx = rpmtsSetChrootDone(ts, 1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ rootFd = open(".", O_RDONLY, 0);
|
|
||||||
+ }
|
|
||||||
+ xx = chdir("/");
|
|
||||||
+
|
|
||||||
if (!rpmtsChrootDone(ts)) {
|
|
||||||
const char *rootDir = rpmtsRootDir(ts);
|
|
||||||
xx = chdir("/");
|
|
||||||
@@ -505,12 +523,17 @@ static rpmRC runLuaScript(rpmpsm psm, He
|
|
||||||
rpmluaDelVar(lua, "arg");
|
|
||||||
|
|
||||||
if (rootFd >= 0) {
|
|
||||||
- const char *rootDir = rpmtsRootDir(ts);
|
|
||||||
xx = fchdir(rootFd);
|
|
||||||
xx = close(rootFd);
|
|
||||||
- if (rootDir != NULL && !rstreq(rootDir, "/") && *rootDir == '/')
|
|
||||||
+ if (!chroot_done) {
|
|
||||||
xx = chroot(".");
|
|
||||||
- xx = rpmtsSetChrootDone(ts, 0);
|
|
||||||
+ xx = rpmtsSetChrootDone(ts, 0);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (!chroot_done) {
|
|
||||||
+ const char *currDir = rpmtsCurrDir(ts);
|
|
||||||
+ if (currDir != NULL)
|
|
||||||
+ xx = chdir(currDir);
|
|
||||||
}
|
|
||||||
free(sname);
|
|
||||||
#else
|
|
@ -1,6 +1,6 @@
|
|||||||
--- ./macros.in.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./macros.in.orig 2011-01-03 13:57:41.000000000 +0000
|
||||||
+++ ./macros.in 2010-03-25 15:13:43.000000000 +0000
|
+++ ./macros.in 2011-05-12 14:32:18.000000000 +0000
|
||||||
@@ -175,22 +175,22 @@
|
@@ -178,22 +178,22 @@
|
||||||
|
|
||||||
# Template for debug information sub-package.
|
# Template for debug information sub-package.
|
||||||
%debug_package \
|
%debug_package \
|
||||||
@ -52,7 +52,7 @@
|
|||||||
#
|
#
|
||||||
# Use internal dependency generator rather than external helpers?
|
# Use internal dependency generator rather than external helpers?
|
||||||
-%_use_internal_dependency_generator 1
|
-%_use_internal_dependency_generator 1
|
||||||
+%_use_internal_dependency_generator 0
|
+%_use_internal_dependency_generator 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# Filter GLIBC_PRIVATE Provides: and Requires:
|
# Filter GLIBC_PRIVATE Provides: and Requires:
|
||||||
@ -80,31 +80,24 @@
|
|||||||
+#%__find_enhances ???
|
+#%__find_enhances ???
|
||||||
|
|
||||||
#
|
#
|
||||||
# Path to scripts to autogenerate per-interpreter package dependencies.
|
# Path to file attribute classifications for automatic dependency
|
||||||
@@ -644,15 +650,15 @@ print (t)\
|
@@ -533,12 +539,12 @@ print (t)\
|
||||||
%_dbi_config_Packages %{_dbi_htconfig} lockdbfd
|
#
|
||||||
|
|
||||||
# "Depends" is a per-transaction cache of known dependency resolutions.
|
# Misc BDB tuning options
|
||||||
-%_dbi_config_Depends %{_dbi_htconfig} temporary private
|
-%__dbi_other mp_mmapsize=128Mb mp_size=64Mb
|
||||||
+%_dbi_config_Depends %{_dbi_htconfig} temporary private nofsync
|
+%__dbi_other mp_mmapsize=128Mb mp_size=64Mb
|
||||||
|
|
||||||
-%_dbi_config_Dirnames %{_dbi_btconfig}
|
-%_dbi_config %{?__dbi_other}
|
||||||
-%_dbi_config_Requireversion %{_dbi_btconfig}
|
+%_dbi_config %{?__dbi_other} nofsync
|
||||||
-%_dbi_config_Provideversion %{_dbi_btconfig}
|
|
||||||
-%_dbi_config_Installtid %{_dbi_btconfig}
|
|
||||||
-%_dbi_config_Removetid %{_dbi_btconfig}
|
|
||||||
+%_dbi_config_Dirnames %{_dbi_btconfig} nofsync
|
|
||||||
+%_dbi_config_Requireversion %{_dbi_btconfig} nofsync
|
|
||||||
+%_dbi_config_Provideversion %{_dbi_btconfig} nofsync
|
|
||||||
+%_dbi_config_Installtid %{_dbi_btconfig} nofsync
|
|
||||||
+%_dbi_config_Removetid %{_dbi_btconfig} nofsync
|
|
||||||
|
|
||||||
-%_dbi_config %{_dbi_htconfig}
|
# "Packages" should have shared/exclusive fcntl(2) lock using "lockdbfd".
|
||||||
+%_dbi_config %{_dbi_htconfig} nofsync
|
-%_dbi_config_Packages %{?_dbi_config} lockdbfd
|
||||||
|
+%_dbi_config_Packages %{?__dbi_other} lockdbfd
|
||||||
|
|
||||||
# XXX legacy configuration.
|
#==============================================================================
|
||||||
# Choose db interface:
|
# ---- GPG/PGP/PGP5 signature macros.
|
||||||
@@ -991,7 +997,7 @@ print (t)\
|
@@ -857,7 +863,7 @@ print (t)\
|
||||||
%_build_vendor %{_host_vendor}
|
%_build_vendor %{_host_vendor}
|
||||||
%_build_os %{_host_os}
|
%_build_os %{_host_os}
|
||||||
%_host @host@
|
%_host @host@
|
||||||
@ -113,7 +106,7 @@
|
|||||||
%_host_cpu @host_cpu@
|
%_host_cpu @host_cpu@
|
||||||
%_host_vendor @host_vendor@
|
%_host_vendor @host_vendor@
|
||||||
%_host_os @host_os@
|
%_host_os @host_os@
|
||||||
@@ -1154,6 +1160,181 @@ done \
|
@@ -1020,6 +1026,181 @@ done \
|
||||||
%python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
|
%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])")
|
%python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")
|
||||||
|
|
||||||
@ -295,7 +288,7 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# arch macro for all Intel i?86 compatibile processors
|
# arch macro for all Intel i?86 compatibile processors
|
||||||
# (Note: This macro (and it's analogues) will probably be obsoleted when
|
# (Note: This macro (and it's analogues) will probably be obsoleted when
|
||||||
@@ -1164,7 +1345,9 @@ done \
|
@@ -1030,7 +1211,9 @@ done \
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# arch macro for all supported ARM processors
|
# arch macro for all supported ARM processors
|
||||||
@ -306,7 +299,7 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# arch macro for all supported Sparc processors
|
# arch macro for all supported Sparc processors
|
||||||
@@ -1197,3 +1380,26 @@ done \
|
@@ -1070,3 +1253,26 @@ done \
|
||||||
|
|
||||||
# \endverbatim
|
# \endverbatim
|
||||||
#*/
|
#*/
|
||||||
|
31
magic_and_path.diff
Normal file
31
magic_and_path.diff
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Allow "magic_and_path" flag to configure that files must
|
||||||
|
match both regexpes to be sent to the dependency generator.
|
||||||
|
|
||||||
|
--- build/rpmfc.c.orig 2011-05-16 10:46:20.000000000 +0000
|
||||||
|
+++ build/rpmfc.c 2011-05-16 11:02:56.000000000 +0000
|
||||||
|
@@ -613,6 +613,7 @@ static void rpmfcAttributes(rpmfc fc, co
|
||||||
|
const char *path = fullpath + fc->brlen;
|
||||||
|
int is_executable = 0;
|
||||||
|
struct stat st;
|
||||||
|
+ int magic_and_path;
|
||||||
|
if (stat(fullpath, &st) == 0) {
|
||||||
|
is_executable = (S_ISREG(st.st_mode)) &&
|
||||||
|
(st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
|
||||||
|
@@ -630,10 +631,13 @@ static void rpmfcAttributes(rpmfc fc, co
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Add attributes on libmagic type & path pattern matches */
|
||||||
|
- if (regMatch((*attr)->magic, ftype))
|
||||||
|
- argvAddTokens(&fc->fattrs[fc->ix], (*attr)->name);
|
||||||
|
- if (regMatch((*attr)->path, path))
|
||||||
|
- argvAddTokens(&fc->fattrs[fc->ix], (*attr)->name);
|
||||||
|
+ if ((*attr)->magic && (*attr)->path && hasAttr((*attr)->flags, "magic_and_path")) {
|
||||||
|
+ if (regMatch((*attr)->magic, ftype) && regMatch((*attr)->path, path))
|
||||||
|
+ argvAddTokens(&fc->fattrs[fc->ix], (*attr)->name);
|
||||||
|
+ } else {
|
||||||
|
+ if (regMatch((*attr)->magic, ftype) || regMatch((*attr)->path, path))
|
||||||
|
+ argvAddTokens(&fc->fattrs[fc->ix], (*attr)->name);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,8 @@
|
|||||||
--- ./lib/depends.c.orig 2009-12-07 14:36:49.000000000 +0000
|
support missingok dependency bit
|
||||||
+++ ./lib/depends.c 2010-03-24 16:47:28.000000000 +0000
|
|
||||||
@@ -450,8 +450,13 @@ retry:
|
--- ./lib/depends.c.orig 2011-02-15 13:10:59.000000000 +0000
|
||||||
|
+++ ./lib/depends.c 2011-05-10 16:06:39.000000000 +0000
|
||||||
|
@@ -448,8 +448,13 @@ retry:
|
||||||
}
|
}
|
||||||
|
|
||||||
unsatisfied:
|
unsatisfied:
|
||||||
@ -15,14 +17,14 @@
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
if (cacheThis) {
|
return rc;
|
||||||
--- ./lib/rpmds.h.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./lib/rpmds.h.orig 2011-05-10 16:09:22.000000000 +0000
|
||||||
+++ ./lib/rpmds.h 2010-03-24 16:47:28.000000000 +0000
|
+++ ./lib/rpmds.h 2011-05-10 16:08:04.000000000 +0000
|
||||||
@@ -73,6 +73,7 @@ typedef enum rpmsenseFlags_e {
|
@@ -68,6 +68,7 @@ typedef rpmFlags rpmsenseFlags;
|
||||||
RPMSENSE_SCRIPT_POSTUN | \
|
RPMSENSE_SCRIPT_POSTUN | \
|
||||||
RPMSENSE_SCRIPT_VERIFY | \
|
RPMSENSE_SCRIPT_VERIFY | \
|
||||||
RPMSENSE_FIND_REQUIRES | \
|
RPMSENSE_FIND_REQUIRES | \
|
||||||
+ RPMSENSE_MISSINGOK | \
|
+ RPMSENSE_MISSINGOK | \
|
||||||
RPMSENSE_SCRIPT_PREP | \
|
RPMSENSE_RPMLIB | \
|
||||||
RPMSENSE_SCRIPT_BUILD | \
|
RPMSENSE_KEYRING | \
|
||||||
RPMSENSE_SCRIPT_INSTALL | \
|
RPMSENSE_PRETRANS | \
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
SUSE specific find-supplements, used for kernel builds
|
--- ./macros.in.orig 2011-05-11 14:57:08.000000000 +0000
|
||||||
|
+++ ./macros.in 2011-05-11 15:01:39.000000000 +0000
|
||||||
Index: macros.in
|
@@ -470,14 +470,18 @@ print (t)\
|
||||||
===================================================================
|
|
||||||
--- macros.in.orig
|
|
||||||
+++ macros.in
|
|
||||||
@@ -473,14 +473,18 @@ print (t)\
|
|
||||||
#
|
#
|
||||||
# Path to scripts to autogenerate package dependencies,
|
# Path to scripts to autogenerate package dependencies,
|
||||||
#
|
#
|
||||||
@ -26,29 +22,8 @@ Index: macros.in
|
|||||||
#%__find_enhances ???
|
#%__find_enhances ???
|
||||||
|
|
||||||
#
|
#
|
||||||
Index: scripts/find-supplements
|
--- ./scripts/find-supplements.ksyms.orig 2011-05-11 15:01:39.000000000 +0000
|
||||||
===================================================================
|
+++ ./scripts/find-supplements.ksyms 2011-05-11 15:01:39.000000000 +0000
|
||||||
--- /dev/null
|
|
||||||
+++ scripts/find-supplements
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+#!/bin/bash
|
|
||||||
+
|
|
||||||
+# This script reads filenames from STDIN and outputs any relevant provides
|
|
||||||
+# information that needs to be included in the package.
|
|
||||||
+IFS=$'\n'
|
|
||||||
+filelist=($(cat))
|
|
||||||
+
|
|
||||||
+#
|
|
||||||
+# --- Kernel module hardware identifiers
|
|
||||||
+# (e.g., modalias(pci:v0000109Ed00000878sv00000070sd0000FF01bc*sc*i*)
|
|
||||||
+[ -x /usr/lib/rpm/find-supplements.ksyms ] &&
|
|
||||||
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-supplements.ksyms "$@"
|
|
||||||
+
|
|
||||||
+exit 0
|
|
||||||
Index: scripts/find-supplements.ksyms
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
|
||||||
+++ scripts/find-supplements.ksyms
|
|
||||||
@@ -0,0 +1,56 @@
|
@@ -0,0 +1,56 @@
|
||||||
+#! /bin/sh
|
+#! /bin/sh
|
||||||
+
|
+
|
||||||
@ -106,3 +81,20 @@ Index: scripts/find-supplements.ksyms
|
|||||||
+done \
|
+done \
|
||||||
+| sort -u \
|
+| sort -u \
|
||||||
+| combine_modaliases
|
+| combine_modaliases
|
||||||
|
--- ./scripts/find-supplements.orig 2011-05-11 15:01:39.000000000 +0000
|
||||||
|
+++ ./scripts/find-supplements 2011-05-11 15:01:39.000000000 +0000
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+# This script reads filenames from STDIN and outputs any relevant provides
|
||||||
|
+# information that needs to be included in the package.
|
||||||
|
+IFS=$'\n'
|
||||||
|
+filelist=($(cat))
|
||||||
|
+
|
||||||
|
+#
|
||||||
|
+# --- Kernel module hardware identifiers
|
||||||
|
+# (e.g., modalias(pci:v0000109Ed00000878sv00000070sd0000FF01bc*sc*i*)
|
||||||
|
+[ -x /usr/lib/rpm/find-supplements.ksyms ] &&
|
||||||
|
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-supplements.ksyms "$@"
|
||||||
|
+
|
||||||
|
+exit 0
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
--- luaext/modemuncher.c.orig 2010-03-26 09:43:45.000000000 +0000
|
|
||||||
+++ luaext/modemuncher.c 2010-03-26 09:44:54.000000000 +0000
|
|
||||||
@@ -245,11 +245,11 @@ printf("modemuncher: doneflag = %u\n", d
|
|
||||||
if (ch_mode) switch (op)
|
|
||||||
{
|
|
||||||
case '+':
|
|
||||||
- *mode = *mode |= ch_mode & affected_bits;
|
|
||||||
+ *mode |= ch_mode & affected_bits;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '-':
|
|
||||||
- *mode = *mode &= ~(ch_mode & affected_bits);
|
|
||||||
+ *mode &= ~(ch_mode & affected_bits);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '=':
|
|
@ -1,10 +1,10 @@
|
|||||||
Also compare the name and not only the version when checking if
|
Also compare the name and not only the version when checking if
|
||||||
two packages are the same. rh#104066
|
two packages are the same. rh#104066
|
||||||
|
|
||||||
--- ./lib/depends.c.orig 2010-03-24 16:47:28.000000000 +0000
|
--- ./lib/depends.c.orig 2011-05-12 12:20:01.000000000 +0000
|
||||||
+++ ./lib/depends.c 2010-03-24 16:52:00.000000000 +0000
|
+++ ./lib/depends.c 2011-05-12 12:26:25.000000000 +0000
|
||||||
@@ -100,6 +100,24 @@ static int removePackage(rpmts ts, Heade
|
@@ -95,6 +95,24 @@ static rpmdbMatchIterator rpmtsPrunedIte
|
||||||
return 0;
|
return mi;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int rpmNameVersionCompare(Header first, Header second)
|
+static int rpmNameVersionCompare(Header first, Header second)
|
||||||
@ -12,23 +12,23 @@ two packages are the same. rh#104066
|
|||||||
+ const char * one, * two;
|
+ const char * one, * two;
|
||||||
+ int rc;
|
+ int rc;
|
||||||
+
|
+
|
||||||
+ rc = headerGetEntry(first, RPMTAG_NAME, NULL, (void **) &one, NULL);
|
+ one = headerGetString(first, RPMTAG_NAME);
|
||||||
+ rc = headerGetEntry(second, RPMTAG_NAME, NULL, (void **) &two, NULL);
|
+ two = headerGetString(second, RPMTAG_NAME);
|
||||||
+ rc = strcmp(one, two);
|
+ rc = strcmp(one, two);
|
||||||
+ if (rc)
|
+ if (rc)
|
||||||
+ return rc;
|
+ return rc;
|
||||||
+ rc = headerGetEntry(first, RPMTAG_ARCH, NULL, (void **) &one, NULL);
|
+ one = headerGetString(first, RPMTAG_ARCH);
|
||||||
+ rc = headerGetEntry(second, RPMTAG_ARCH, NULL, (void **) &two, NULL);
|
+ two = headerGetString(second, RPMTAG_ARCH);
|
||||||
+ rc = strcmp(one, two);
|
+ rc = strcmp(one, two);
|
||||||
+ if (rc)
|
+ if (rc)
|
||||||
+ return rc;
|
+ return rc;
|
||||||
+ return rpmVersionCompare(first, second);
|
+ return rpmVersionCompare(first, second);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
int rpmtsAddInstallElement(rpmts ts, Header h,
|
#define skipColor(_tscolor, _color, _ocolor) \
|
||||||
fnpyKey key, int upgrade, rpmRelocation * relocs)
|
((_tscolor) && (_color) && (_ocolor) && !((_color) & (_ocolor)))
|
||||||
{
|
|
||||||
@@ -275,7 +293,7 @@ addheader:
|
@@ -111,7 +129,7 @@ static void addUpgradeErasures(rpmts ts,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Skip packages that contain identical NEVR. */
|
/* Skip packages that contain identical NEVR. */
|
||||||
@ -36,18 +36,13 @@ two packages are the same. rh#104066
|
|||||||
+ if (rpmNameVersionCompare(h, oh) == 0)
|
+ if (rpmNameVersionCompare(h, oh) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
xx = removePackage(ts, oh, p);
|
removePackage(ts, oh, p);
|
||||||
@@ -316,11 +334,9 @@ addheader:
|
@@ -150,7 +168,7 @@ static void addObsoleteErasures(rpmts ts
|
||||||
* If no obsoletes version info is available, match all names.
|
* If no obsoletes version info is available, match all names.
|
||||||
*/
|
*/
|
||||||
if (rpmdsEVR(obsoletes) == NULL
|
if (rpmdsEVR(obsoletes) == NULL
|
||||||
- || rpmdsAnyMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
- || rpmdsAnyMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
||||||
+ || rpmdsNVRMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
+ || rpmdsNVRMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
||||||
char * ohNEVRA = headerGetAsString(oh, RPMTAG_NEVRA);
|
char * ohNEVRA = headerGetAsString(oh, RPMTAG_NEVRA);
|
||||||
-#ifdef DYING /* XXX see http://bugzilla.redhat.com #134497 */
|
|
||||||
- if (rpmVersionCompare(h, oh))
|
|
||||||
-#endif
|
|
||||||
+ if (rpmNameVersionCompare(h, oh))
|
|
||||||
xx = removePackage(ts, oh, p);
|
|
||||||
rpmlog(RPMLOG_DEBUG, " Obsoletes: %s\t\terases %s\n",
|
rpmlog(RPMLOG_DEBUG, " Obsoletes: %s\t\terases %s\n",
|
||||||
rpmdsDNEVR(obsoletes)+2, ohNEVRA);
|
rpmdsDNEVR(obsoletes)+2, ohNEVRA);
|
||||||
|
12
no_rep_autop.diff
Normal file
12
no_rep_autop.diff
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
It seems to be gone...
|
||||||
|
|
||||||
|
--- lib/Makefile.am.orig 2011-05-12 12:59:42.000000000 +0000
|
||||||
|
+++ lib/Makefile.am 2011-05-12 12:59:59.000000000 +0000
|
||||||
|
@@ -126,7 +126,6 @@ rpmdb_printlog_LDADD = \
|
||||||
|
$(top_builddir)/db3/fileops_autop.o \
|
||||||
|
$(top_builddir)/db3/hash_autop.o \
|
||||||
|
$(top_builddir)/db3/qam_autop.o \
|
||||||
|
- $(top_builddir)/db3/rep_autop.o \
|
||||||
|
$(top_builddir)/db3/txn_autop.o \
|
||||||
|
$(top_builddir)/db3/util_sig.o \
|
||||||
|
librpm.la
|
13
nobuildcolor.diff
Normal file
13
nobuildcolor.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Disable file coloring for SUSE systems
|
||||||
|
|
||||||
|
--- build/rpmfc.c.orig 2011-05-13 12:35:29.000000000 +0000
|
||||||
|
+++ build/rpmfc.c 2011-05-13 13:49:37.000000000 +0000
|
||||||
|
@@ -1312,7 +1312,7 @@ rpmRC rpmfcGenerateDepends(const rpmSpec
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
/* Add per-file colors(#files) */
|
||||||
|
- if (rpmtdFromArgi(&td, RPMTAG_FILECOLORS, fc->fcolor)) {
|
||||||
|
+ if (rpmExpandNumeric("%{?_transaction_color}") != 0 && rpmtdFromArgi(&td, RPMTAG_FILECOLORS, fc->fcolor)) {
|
||||||
|
rpm_color_t *fcolor;
|
||||||
|
assert(rpmtdType(&td) == RPM_INT32_TYPE);
|
||||||
|
/* XXX Make sure only primary (i.e. Elf32/Elf64) colors are added. */
|
@ -1,17 +0,0 @@
|
|||||||
Revert upstream patch that always uses %defattr(-,root,root).
|
|
||||||
Upstream should probably use a macro instead.
|
|
||||||
|
|
||||||
Index: build/files.c
|
|
||||||
===================================================================
|
|
||||||
--- build/files.c.orig
|
|
||||||
+++ build/files.c
|
|
||||||
@@ -1793,7 +1793,9 @@ static rpmRC processPackageFiles(rpmSpec
|
|
||||||
|
|
||||||
nullAttrRec(&fl.cur_ar);
|
|
||||||
nullAttrRec(&fl.def_ar);
|
|
||||||
+#if 0
|
|
||||||
dupAttrRec(&root_ar, &fl.def_ar); /* XXX assume %defattr(-,root,root) */
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
fl.defVerifyFlags = RPMVERIFY_ALL;
|
|
||||||
fl.nLangs = 0;
|
|
13
nomagiccheck.diff
Normal file
13
nomagiccheck.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Don't let rpm complain about a missing /etc/magic.mgc file
|
||||||
|
|
||||||
|
--- build/rpmfc.c.orig 2011-05-13 16:33:20.000000000 +0000
|
||||||
|
+++ build/rpmfc.c 2011-05-13 16:33:55.000000000 +0000
|
||||||
|
@@ -896,7 +896,7 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t arg
|
||||||
|
{
|
||||||
|
ARGV_t fcav = NULL;
|
||||||
|
int xx;
|
||||||
|
- int msflags = MAGIC_CHECK | MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
||||||
|
+ int msflags = MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS;
|
||||||
|
magic_t ms = NULL;
|
||||||
|
rpmRC rc = RPMRC_FAIL;
|
||||||
|
|
@ -1,20 +1,22 @@
|
|||||||
--- ./build/parsePreamble.c.orig 2010-04-07 14:52:57.000000000 +0000
|
Not deprecated for SUSE builds.
|
||||||
+++ ./build/parsePreamble.c 2010-04-07 14:53:51.000000000 +0000
|
|
||||||
@@ -748,7 +748,7 @@ static struct PreambleRec_s const preamb
|
--- ./build/parsePreamble.c.orig 2011-05-11 15:59:08.000000000 +0000
|
||||||
|
+++ ./build/parsePreamble.c 2011-05-11 16:35:47.000000000 +0000
|
||||||
|
@@ -891,7 +891,7 @@ static struct PreambleRec_s const preamb
|
||||||
{RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")},
|
{RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")},
|
||||||
{RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")},
|
{RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")},
|
||||||
{RPMTAG_REQUIREFLAGS, 1, 0, LEN_AND_STR("requires")},
|
{RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")},
|
||||||
- {RPMTAG_PREREQ, 1, 1, LEN_AND_STR("prereq")},
|
- {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")},
|
||||||
+ {RPMTAG_PREREQ, 1, 0, LEN_AND_STR("prereq")},
|
+ {RPMTAG_PREREQ, 2, 0, LEN_AND_STR("prereq")},
|
||||||
{RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")},
|
{RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")},
|
||||||
{RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")},
|
{RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")},
|
||||||
{RPMTAG_PREFIXES, 0, 0, LEN_AND_STR("prefixes")},
|
{RPMTAG_PREFIXES, 0, 0, LEN_AND_STR("prefixes")},
|
||||||
@@ -757,7 +757,7 @@ static struct PreambleRec_s const preamb
|
@@ -900,7 +900,7 @@ static struct PreambleRec_s const preamb
|
||||||
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarchitectures")},
|
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarchitectures")},
|
||||||
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarch")},
|
{RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarch")},
|
||||||
{RPMTAG_BUILDCONFLICTS, 0, 0, LEN_AND_STR("buildconflicts")},
|
{RPMTAG_BUILDCONFLICTS, 0, 0, LEN_AND_STR("buildconflicts")},
|
||||||
- {RPMTAG_BUILDPREREQ, 1, 1, LEN_AND_STR("buildprereq")},
|
- {RPMTAG_BUILDPREREQ, 0, 1, LEN_AND_STR("buildprereq")},
|
||||||
+ {RPMTAG_BUILDPREREQ, 1, 0, LEN_AND_STR("buildprereq")},
|
+ {RPMTAG_BUILDPREREQ, 0, 0, LEN_AND_STR("buildprereq")},
|
||||||
{RPMTAG_BUILDREQUIRES, 1, 0, LEN_AND_STR("buildrequires")},
|
{RPMTAG_BUILDREQUIRES, 0, 0, LEN_AND_STR("buildrequires")},
|
||||||
{RPMTAG_AUTOREQPROV, 0, 0, LEN_AND_STR("autoreqprov")},
|
{RPMTAG_AUTOREQPROV, 0, 0, LEN_AND_STR("autoreqprov")},
|
||||||
{RPMTAG_AUTOREQ, 0, 0, LEN_AND_STR("autoreq")},
|
{RPMTAG_AUTOREQ, 0, 0, LEN_AND_STR("autoreq")},
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
Do not load keyring if signature checking is disabled.
|
|
||||||
|
|
||||||
--- ./lib/package.c.orig 2010-04-09 09:56:42.000000000 +0000
|
|
||||||
+++ ./lib/package.c 2010-04-09 09:57:50.000000000 +0000
|
|
||||||
@@ -760,12 +760,16 @@ exit:
|
|
||||||
rpmRC rpmReadPackageFile(rpmts ts, FD_t fd, const char * fn, Header * hdrp)
|
|
||||||
{
|
|
||||||
rpmRC rc;
|
|
||||||
- rpmKeyring keyring = rpmtsGetKeyring(ts, 1);
|
|
||||||
rpmVSFlags vsflags = rpmtsVSFlags(ts);
|
|
||||||
+ rpmKeyring keyring = 0;
|
|
||||||
+
|
|
||||||
+ if ((vsflags & _RPMVSF_NOSIGNATURES) != _RPMVSF_NOSIGNATURES)
|
|
||||||
+ keyring = rpmtsGetKeyring(ts, 1);
|
|
||||||
|
|
||||||
rc = rpmpkgRead(keyring, vsflags, fd, fn, hdrp);
|
|
||||||
|
|
||||||
- rpmKeyringFree(keyring);
|
|
||||||
+ if (keyring)
|
|
||||||
+ rpmKeyringFree(keyring);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
rpm does not allow headerPutUint32 on internal tags, so use
|
|
||||||
headerPut instead. (Maybe NOSOURCE/NOPATCH should not be internal
|
|
||||||
at all, though.)
|
|
||||||
|
|
||||||
--- ./build/files.c.orig 2010-04-08 16:23:42.000000000 +0000
|
|
||||||
+++ ./build/files.c 2010-04-08 16:23:44.000000000 +0000
|
|
||||||
@@ -2088,15 +2088,25 @@ int processSourceFiles(rpmSpec spec)
|
|
||||||
if (srcPtr->flags & RPMBUILD_ISSOURCE) {
|
|
||||||
headerPutString(spec->sourceHeader, RPMTAG_SOURCE, srcPtr->source);
|
|
||||||
if (srcPtr->flags & RPMBUILD_ISNO) {
|
|
||||||
- headerPutUint32(spec->sourceHeader, RPMTAG_NOSOURCE,
|
|
||||||
- &srcPtr->num, 1);
|
|
||||||
+ struct rpmtd_s td;
|
|
||||||
+ rpmtdReset(&td);
|
|
||||||
+ td.tag = RPMTAG_NOSOURCE;
|
|
||||||
+ td.type = RPM_INT32_TYPE;
|
|
||||||
+ td.data = &srcPtr->num;
|
|
||||||
+ td.count = 1;
|
|
||||||
+ headerPut(spec->sourceHeader, &td, HEADERPUT_APPEND);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (srcPtr->flags & RPMBUILD_ISPATCH) {
|
|
||||||
headerPutString(spec->sourceHeader, RPMTAG_PATCH, srcPtr->source);
|
|
||||||
if (srcPtr->flags & RPMBUILD_ISNO) {
|
|
||||||
- headerPutUint32(spec->sourceHeader, RPMTAG_NOSOURCE,
|
|
||||||
- &srcPtr->num, 1);
|
|
||||||
+ struct rpmtd_s td;
|
|
||||||
+ rpmtdReset(&td);
|
|
||||||
+ td.tag = RPMTAG_NOPATCH;
|
|
||||||
+ td.type = RPM_INT32_TYPE;
|
|
||||||
+ td.data = &srcPtr->num;
|
|
||||||
+ td.count = 1;
|
|
||||||
+ headerPut(spec->sourceHeader, &td, HEADERPUT_APPEND);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
|||||||
Index: scripts/perl.prov
|
Support a "first version wins" semantics.
|
||||||
===================================================================
|
|
||||||
--- scripts/perl.prov.orig
|
|
||||||
+++ scripts/perl.prov
|
|
||||||
@@ -167,7 +167,7 @@ sub process_file {
|
|
||||||
|
|
||||||
$version= $1;
|
--- ./scripts/perl.prov.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./scripts/perl.prov 2011-05-11 15:32:39.000000000 +0000
|
||||||
|
@@ -170,7 +170,7 @@ sub process_file {
|
||||||
|
|
||||||
|
$version = $1;
|
||||||
}
|
}
|
||||||
- $require{$package}=$version;
|
- $require{$package} = $version;
|
||||||
+ $require{$package} ||= $version;
|
+ $require{$package} ||= $version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
Index: ./scripts/pkgconfigdeps.sh
|
|
||||||
===================================================================
|
|
||||||
--- ./scripts/pkgconfigdeps.sh
|
|
||||||
+++ ./scripts/pkgconfigdeps.sh
|
|
||||||
@@ -11,6 +11,13 @@ test -x $pkgconfig || {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
+`$pkgconfig --exists "pkg-config >= 0.24" 2> /dev/null`
|
|
||||||
+if [ $? -eq 0 ]; then
|
|
||||||
+ PRINT_REQUIRES="--print-requires --print-requires-private"
|
|
||||||
+else
|
|
||||||
+ PRINT_REQUIRES="--print-requires"
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
case $1 in
|
|
||||||
-P|--provides)
|
|
||||||
while read filename ; do
|
|
||||||
@@ -39,7 +46,7 @@ case $1 in
|
|
||||||
[ $i -eq 1 ] && echo "$pkgconfig"
|
|
||||||
DIR="`dirname ${filename}`"
|
|
||||||
export PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
|
|
||||||
- $pkgconfig --print-requires "$filename" 2> /dev/null | while read n r v ; do
|
|
||||||
+ $pkgconfig $PRINT_REQUIRES "$filename" 2> /dev/null | while read n r v ; do
|
|
||||||
[ -n "$n" ] || continue
|
|
||||||
echo -n "pkgconfig($n) "
|
|
||||||
[ -n "$r" ] && [ -n "$v" ] && echo -n "$r" "$v"
|
|
@ -1,9 +1,7 @@
|
|||||||
SUSE specific platform changes.
|
SUSE specific platform changes.
|
||||||
|
|
||||||
Index: platform.in
|
--- ./platform.in.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./platform.in 2011-05-11 15:02:03.000000000 +0000
|
||||||
--- platform.in.orig
|
|
||||||
+++ platform.in
|
|
||||||
@@ -21,7 +21,7 @@
|
@@ -21,7 +21,7 @@
|
||||||
%_exec_prefix @exec_prefix@
|
%_exec_prefix @exec_prefix@
|
||||||
%_bindir @bindir@
|
%_bindir @bindir@
|
||||||
@ -22,7 +20,7 @@ Index: platform.in
|
|||||||
# Deprecated misspelling, present for backwards compatibility.
|
# Deprecated misspelling, present for backwards compatibility.
|
||||||
%_initrddir %{_initddir}
|
%_initrddir %{_initddir}
|
||||||
|
|
||||||
@@ -146,3 +146,21 @@
|
@@ -143,3 +143,21 @@
|
||||||
@mandrake@%_gamesdir games
|
@mandrake@%_gamesdir games
|
||||||
@mandrake@%_gamesbindir %{_prefix}/%{_gamesdir}
|
@mandrake@%_gamesbindir %{_prefix}/%{_gamesdir}
|
||||||
@mandrake@%_gamesdatadir %{_datadir}/%{_gamesdir}
|
@mandrake@%_gamesdatadir %{_datadir}/%{_gamesdir}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- ./autodeps/linux.prov.orig 2010-04-08 13:32:56.000000000 +0000
|
--- ./autodeps/linux.prov.orig 2011-05-11 15:59:31.000000000 +0000
|
||||||
+++ ./autodeps/linux.prov 2010-04-08 13:38:44.000000000 +0000
|
+++ ./autodeps/linux.prov 2011-05-11 16:39:09.000000000 +0000
|
||||||
@@ -11,7 +11,7 @@ filelist=($(printf "%s\n" "${filelist[@]
|
@@ -11,7 +11,7 @@ filelist=($(printf "%s\n" "${filelist[@]
|
||||||
solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
|
solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
|
||||||
tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
|
tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
|
||||||
@ -20,9 +20,9 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# --- Tcl modules.
|
# --- Tcl modules.
|
||||||
--- ./autodeps/linux.req.orig 2010-04-08 13:36:47.000000000 +0000
|
--- ./autodeps/linux.req.orig 2011-05-11 14:28:45.000000000 +0000
|
||||||
+++ ./autodeps/linux.req 2010-04-08 13:40:25.000000000 +0000
|
+++ ./autodeps/linux.req 2011-05-11 16:39:09.000000000 +0000
|
||||||
@@ -32,7 +32,7 @@ liblist=($(printf "%s\0" "${filelist[@]}
|
@@ -31,7 +31,7 @@ liblist=($(printf "%s\0" "${filelist[@]}
|
||||||
|
|
||||||
interplist=()
|
interplist=()
|
||||||
perllist=()
|
perllist=()
|
||||||
@ -31,7 +31,7 @@
|
|||||||
tcllist=()
|
tcllist=()
|
||||||
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
|
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
|
||||||
|
|
||||||
@@ -128,8 +128,8 @@ done | sort -u
|
@@ -127,8 +127,8 @@ done | sort -u
|
||||||
|
|
||||||
#
|
#
|
||||||
# --- Python modules.
|
# --- Python modules.
|
||||||
@ -42,28 +42,3 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# --- Tcl modules.
|
# --- Tcl modules.
|
||||||
--- ./scripts/pythondeps.sh.orig 2010-04-08 13:40:34.000000000 +0000
|
|
||||||
+++ ./scripts/pythondeps.sh 2010-04-08 13:42:19.000000000 +0000
|
|
||||||
@@ -5,17 +5,17 @@
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
-PYVER=`python -c "import sys; v=sys.version_info[:2]; print '%d.%d'%v"`
|
|
||||||
case $1 in
|
|
||||||
-P|--provides)
|
|
||||||
shift
|
|
||||||
- grep "/usr/bin/python\*\$" >& /dev/null && echo "python(abi) = ${PYVER}"
|
|
||||||
- exit 0
|
|
||||||
+ grep "/usr/bin/python.\..$" \
|
|
||||||
+ | sed -e "s|.*/usr/bin/python\(.\..\)|python(abi) = \1|"
|
|
||||||
;;
|
|
||||||
-R|--requires)
|
|
||||||
shift
|
|
||||||
- grep "/usr/lib[^/]*/python${PYVER}/" >& /dev/null && echo "python(abi) = ${PYVER}"
|
|
||||||
- exit 0
|
|
||||||
+ grep "/usr/lib[^/]*/python.\../.*" \
|
|
||||||
+ | sed -e "s|.*/usr/lib[^/]*/python\(.\..\)/.*|python(abi) = \1|g" \
|
|
||||||
+ | sort | uniq
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
--- build/parseSpec.c.orig 2010-02-15 11:49:29.000000000 +0000
|
|
||||||
+++ build/parseSpec.c 2010-02-24 10:38:25.000000000 +0000
|
|
||||||
@@ -283,6 +283,7 @@ int readLine(rpmSpec spec, int strip)
|
|
||||||
retry:
|
|
||||||
if ((rc = readLineFromOFI(spec, ofi)) != 0)
|
|
||||||
return rc;
|
|
||||||
+ ofi = spec->fileStack;
|
|
||||||
|
|
||||||
/* Copy next file line into the spec line buffer */
|
|
||||||
rc = copyNextLineFromOFI(spec, ofi);
|
|
@ -1,19 +1,17 @@
|
|||||||
Also test architecture in "refresh" test when not colored. This allows
|
Also test architecture in "refresh" test when not colored. This allows
|
||||||
updates to different architecture possible again.
|
updates to different architectures.
|
||||||
|
|
||||||
Index: lib/psm.c
|
--- ./lib/psm.c.orig 2010-12-21 09:50:23.000000000 +0000
|
||||||
===================================================================
|
+++ ./lib/psm.c 2011-05-11 12:47:13.000000000 +0000
|
||||||
--- lib/psm.c.orig
|
@@ -723,6 +723,7 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
|
||||||
+++ lib/psm.c
|
|
||||||
@@ -1202,6 +1202,7 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage s
|
|
||||||
|
|
||||||
psm->scriptArg = psm->npkgs_installed + 1;
|
psm->scriptArg = psm->npkgs_installed + 1;
|
||||||
|
|
||||||
+ /* this must match rpmNameVersionCompare in depends.c */
|
+ /* this must match rpmNameVersionCompare in depends.c */
|
||||||
mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(psm->te), 0);
|
mi = rpmtsInitIterator(ts, RPMDBI_NAME, rpmteN(psm->te), 0);
|
||||||
xx = rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP,
|
xx = rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP,
|
||||||
rpmteE(psm->te));
|
rpmteE(psm->te));
|
||||||
@@ -1209,9 +1210,9 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage s
|
@@ -730,9 +731,9 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
|
||||||
rpmteV(psm->te));
|
rpmteV(psm->te));
|
||||||
xx = rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP,
|
xx = rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP,
|
||||||
rpmteR(psm->te));
|
rpmteR(psm->te));
|
||||||
|
@ -3,16 +3,14 @@ Subject: remove references to removed brp scripts
|
|||||||
Some brp-scripts are not used in openSUSE, remove references
|
Some brp-scripts are not used in openSUSE, remove references
|
||||||
to it
|
to it
|
||||||
|
|
||||||
Index: platform.in
|
--- ./platform.in.orig 2011-05-11 15:02:03.000000000 +0000
|
||||||
===================================================================
|
+++ ./platform.in 2011-05-11 15:38:05.000000000 +0000
|
||||||
--- platform.in.orig
|
|
||||||
+++ platform.in
|
|
||||||
@@ -55,8 +55,6 @@
|
@@ -55,8 +55,6 @@
|
||||||
%__os_install_post \
|
%__os_install_post \
|
||||||
%{_rpmconfigdir}/brp-compress \
|
%{_rpmconfigdir}/brp-compress \
|
||||||
%{_rpmconfigdir}/brp-strip \
|
%{_rpmconfigdir}/brp-strip %{__strip} \
|
||||||
- %{_rpmconfigdir}/brp-strip-static-archive \
|
- %{_rpmconfigdir}/brp-strip-static-archive %{__strip} \
|
||||||
- %{_rpmconfigdir}/brp-strip-comment-note \
|
- %{_rpmconfigdir}/brp-strip-comment-note %{__strip} %{__objdump} \
|
||||||
%{nil}
|
%{nil}
|
||||||
|
|
||||||
%__spec_install_post\
|
%__spec_install_post\
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- scripts/find-lang.sh 2011-01-13 13:44:01.000000000 +0100
|
--- ./scripts/find-lang.sh.orig 2011-05-11 16:45:30.000000000 +0000
|
||||||
+++ scripts/find-lang.sh 2011-01-13 13:44:39.770439219 +0100
|
+++ ./scripts/find-lang.sh 2011-05-11 16:55:14.000000000 +0000
|
||||||
@@ -122,6 +122,17 @@ fi
|
@@ -122,6 +122,17 @@ fi
|
||||||
MO_NAME_NEW=$MO_NAME.tmp.$$
|
MO_NAME_NEW=$MO_NAME.tmp.$$
|
||||||
rm -f $MO_NAME_NEW
|
rm -f $MO_NAME_NEW
|
||||||
@ -17,4 +17,4 @@
|
|||||||
+
|
+
|
||||||
find $TOP_DIR -type f -o -type l|sed '
|
find $TOP_DIR -type f -o -type l|sed '
|
||||||
s:'"$TOP_DIR"'::
|
s:'"$TOP_DIR"'::
|
||||||
'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
|
'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) %doc \1\2\3:
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
--- ./lib/psm.c.orig 2010-03-26 15:06:20.000000000 +0000
|
Don't complain about a bad md5 sum for repackaged rpms.
|
||||||
+++ ./lib/psm.c 2010-03-26 15:11:27.000000000 +0000
|
|
||||||
@@ -1318,6 +1318,7 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage s
|
|
||||||
|
|
||||||
if (psm->goal == PSM_PKGINSTALL) {
|
--- ./lib/psm.c.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
|
+++ ./lib/psm.c 2011-05-11 16:32:11.000000000 +0000
|
||||||
|
@@ -811,6 +811,7 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
|
||||||
|
case PSM_PROCESS:
|
||||||
|
if (psm->goal == PKG_INSTALL) {
|
||||||
FD_t payload = NULL;
|
FD_t payload = NULL;
|
||||||
+ rpmtransFlags oldtsflags;
|
+ rpmtransFlags oldtsflags;
|
||||||
|
|
||||||
if (rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB) break;
|
if (rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB) break;
|
||||||
|
|
||||||
@@ -1343,6 +1344,9 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage s
|
@@ -828,6 +829,9 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,7 +20,7 @@
|
|||||||
rc = fsmSetup(rpmfiFSM(fi), FSM_PKGINSTALL, ts, psm->te, fi,
|
rc = fsmSetup(rpmfiFSM(fi), FSM_PKGINSTALL, ts, psm->te, fi,
|
||||||
payload, NULL, &psm->failedFile);
|
payload, NULL, &psm->failedFile);
|
||||||
(void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_UNCOMPRESS),
|
(void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_UNCOMPRESS),
|
||||||
@@ -1350,6 +1354,8 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage s
|
@@ -835,6 +839,8 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
|
||||||
(void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DIGEST),
|
(void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DIGEST),
|
||||||
fdOp(payload, FDSTAT_DIGEST));
|
fdOp(payload, FDSTAT_DIGEST));
|
||||||
xx = fsmTeardown(rpmfiFSM(fi));
|
xx = fsmTeardown(rpmfiFSM(fi));
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Index: macros.in
|
--- ./macros.in.orig 2011-05-11 15:36:05.000000000 +0000
|
||||||
===================================================================
|
+++ ./macros.in 2011-05-11 15:38:44.000000000 +0000
|
||||||
--- macros.in.orig
|
@@ -1027,7 +1027,8 @@ done \
|
||||||
+++ macros.in
|
|
||||||
@@ -1182,7 +1182,8 @@ done \
|
|
||||||
# %{perl_sitearch}/Image
|
# %{perl_sitearch}/Image
|
||||||
# %dir %{perl_sitearch}/auto/Image
|
# %dir %{perl_sitearch}/auto/Image
|
||||||
#
|
#
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
--- ./build/files.c.orig 2010-04-07 14:27:54.000000000 +0000
|
|
||||||
+++ ./build/files.c 2010-04-07 14:51:11.000000000 +0000
|
|
||||||
@@ -561,8 +561,13 @@ static rpmRC parseForAttr(const char * b
|
|
||||||
}
|
|
||||||
ar->ar_fmode = ui;
|
|
||||||
} else {
|
|
||||||
- ar->ar_fmodestr = fl->def_ar.ar_fmodestr;
|
|
||||||
- ar->ar_fmode = fl->def_ar.ar_fmode;
|
|
||||||
+ if (ret_ar == &(fl->def_ar)) {
|
|
||||||
+ ar->ar_fmodestr = NULL;
|
|
||||||
+ ar->ar_fmode = 0;
|
|
||||||
+ } else {
|
|
||||||
+ ar->ar_fmodestr = fl->def_ar.ar_fmodestr;
|
|
||||||
+ ar->ar_fmode = fl->def_ar.ar_fmode;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ar->ar_dmodestr && !isAttrDefault(ar->ar_dmodestr)) {
|
|
||||||
@@ -574,15 +579,30 @@ static rpmRC parseForAttr(const char * b
|
|
||||||
}
|
|
||||||
ar->ar_dmode = ui;
|
|
||||||
} else {
|
|
||||||
- ar->ar_dmodestr = fl->def_ar.ar_dmodestr;
|
|
||||||
- ar->ar_dmode = fl->def_ar.ar_dmode;
|
|
||||||
+ if (ret_ar == &(fl->def_ar)) {
|
|
||||||
+ ar->ar_dmodestr = NULL;
|
|
||||||
+ ar->ar_dmode = 0;
|
|
||||||
+ } else {
|
|
||||||
+ ar->ar_dmodestr = fl->def_ar.ar_dmodestr;
|
|
||||||
+ ar->ar_dmode = fl->def_ar.ar_dmode;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!(ar->ar_user && !isAttrDefault(ar->ar_user)))
|
|
||||||
- ar->ar_user = fl->def_ar.ar_user;
|
|
||||||
+ if (!(ar->ar_user && !isAttrDefault(ar->ar_user))) {
|
|
||||||
+ if (ret_ar == &(fl->def_ar)) {
|
|
||||||
+ ar->ar_user = NULL;
|
|
||||||
+ } else {
|
|
||||||
+ ar->ar_user = fl->def_ar.ar_user;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (!(ar->ar_group && !isAttrDefault(ar->ar_group)))
|
|
||||||
- ar->ar_group = fl->def_ar.ar_group;
|
|
||||||
+ if (!(ar->ar_group && !isAttrDefault(ar->ar_group))) {
|
|
||||||
+ if (ret_ar == &(fl->def_ar)) {
|
|
||||||
+ ar->ar_group = 0;
|
|
||||||
+ } else {
|
|
||||||
+ ar->ar_group = fl->def_ar.ar_group;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
dupAttrRec(ar, ret_ar);
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:1226a5eeee069402b8dddfde652e2b0a44b64a193078b3c7276d97b1b5f756cb
|
|
||||||
size 5271325
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:a3b4bb2d78eaf1f5200fdcd51372ca9cedce64e030046372e6a13e361cb82b64
|
|
||||||
size 3692408
|
|
3
rpm-4.9.0.tar.bz2
Normal file
3
rpm-4.9.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:9af1a56b05fc2c54935062e04a3e02999110c74d00bfd5b5c5ff3a03dde61688
|
||||||
|
size 3410799
|
@ -1,17 +1,5 @@
|
|||||||
--- ./Makefile.am.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./config.h.in.orig 2011-03-02 06:46:47.000000000 +0000
|
||||||
+++ ./Makefile.am 2010-03-24 15:39:14.000000000 +0000
|
+++ ./config.h.in 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -87,7 +87,8 @@ DISTCLEANFILES += find-requires
|
|
||||||
|
|
||||||
rpm_SOURCES = rpmqv.c debug.h system.h
|
|
||||||
rpm_CPPFLAGS = $(AM_CPPFLAGS) -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV
|
|
||||||
-rpm_LDADD = build/librpmbuild.la lib/librpm.la rpmio/librpmio.la
|
|
||||||
+rpm_LDADD = lib/librpm.la rpmio/librpmio.la
|
|
||||||
+rpm_LDADD += build/.libs/spec.o build/.libs/misc.o build/.libs/names.o build/.libs/expression.o build/.libs/reqprov.o build/.libs/poptBT.o build/.libs/parse*.o
|
|
||||||
rpm_LDADD += @WITH_LIBELF_LIB@ @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@
|
|
||||||
|
|
||||||
rpmbuild_SOURCES = build.c rpmqv.c build.h debug.h system.h
|
|
||||||
--- ./config.h.in.orig 2010-01-08 08:35:12.000000000 +0000
|
|
||||||
+++ ./config.h.in 2010-03-24 15:39:14.000000000 +0000
|
|
||||||
@@ -13,6 +13,9 @@
|
@@ -13,6 +13,9 @@
|
||||||
/* Define to 1 if you have the `basename' function. */
|
/* Define to 1 if you have the `basename' function. */
|
||||||
#undef HAVE_BASENAME
|
#undef HAVE_BASENAME
|
||||||
@ -22,16 +10,16 @@
|
|||||||
/* Define as 1 if you bzip2 1.0 */
|
/* Define as 1 if you bzip2 1.0 */
|
||||||
#undef HAVE_BZ2_1_0
|
#undef HAVE_BZ2_1_0
|
||||||
|
|
||||||
@@ -110,7 +113,7 @@
|
@@ -77,7 +80,7 @@
|
||||||
/* Define as 1 if <netdb.h> defines h_errno */
|
/* Define as 1 if your zlib has gzseek() */
|
||||||
#undef HAVE_HERRNO
|
#undef HAVE_GZSEEK
|
||||||
|
|
||||||
-/* Define if you have the iconv() function. */
|
-/* Define if you have the iconv() function. */
|
||||||
+/* Define if you have the iconv() function and it works. */
|
+/* Define if you have the iconv() function and it works. */
|
||||||
#undef HAVE_ICONV
|
#undef HAVE_ICONV
|
||||||
|
|
||||||
/* Define to 1 if you have the `inet_aton' function. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
@@ -359,6 +362,10 @@
|
@@ -224,6 +227,10 @@
|
||||||
*/
|
*/
|
||||||
#undef LT_OBJDIR
|
#undef LT_OBJDIR
|
||||||
|
|
||||||
@ -42,7 +30,7 @@
|
|||||||
/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
|
/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
|
||||||
*/
|
*/
|
||||||
#undef MAJOR_IN_MKDEV
|
#undef MAJOR_IN_MKDEV
|
||||||
@@ -456,6 +463,9 @@
|
@@ -308,6 +315,9 @@
|
||||||
/* Build with acl support? */
|
/* Build with acl support? */
|
||||||
#undef WITH_ACL
|
#undef WITH_ACL
|
||||||
|
|
||||||
@ -52,9 +40,9 @@
|
|||||||
/* Build with capability support? */
|
/* Build with capability support? */
|
||||||
#undef WITH_CAP
|
#undef WITH_CAP
|
||||||
|
|
||||||
--- ./configure.ac.orig 2010-01-08 08:34:41.000000000 +0000
|
--- ./configure.ac.orig 2011-03-02 06:46:20.000000000 +0000
|
||||||
+++ ./configure.ac 2010-03-24 15:39:14.000000000 +0000
|
+++ ./configure.ac 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -299,12 +299,43 @@ AC_CHECK_HEADERS([dwarf.h], [
|
@@ -246,12 +246,43 @@ AC_CHECK_HEADERS([dwarf.h], [
|
||||||
AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
|
AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
|
||||||
|
|
||||||
#=================
|
#=================
|
||||||
@ -98,7 +86,7 @@
|
|||||||
AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
|
AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
|
||||||
AC_MSG_ERROR([missing required NSPR / NSS header])
|
AC_MSG_ERROR([missing required NSPR / NSS header])
|
||||||
])
|
])
|
||||||
@@ -313,6 +344,7 @@ AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
|
@@ -260,6 +291,7 @@ AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
|
||||||
], [
|
], [
|
||||||
AC_MSG_ERROR([missing required NSS library 'nss3'])
|
AC_MSG_ERROR([missing required NSS library 'nss3'])
|
||||||
])
|
])
|
||||||
@ -106,8 +94,8 @@
|
|||||||
AC_SUBST(WITH_NSS_INCLUDE)
|
AC_SUBST(WITH_NSS_INCLUDE)
|
||||||
AC_SUBST(WITH_NSS_LIB)
|
AC_SUBST(WITH_NSS_LIB)
|
||||||
|
|
||||||
--- ./rpmio/Makefile.am.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmio/Makefile.am.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./rpmio/Makefile.am 2010-03-24 15:42:04.000000000 +0000
|
+++ ./rpmio/Makefile.am 2011-05-10 15:56:13.000000000 +0000
|
||||||
@@ -2,6 +2,7 @@
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_builddir)/include/
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I$(top_builddir)/include/
|
||||||
@ -116,7 +104,7 @@
|
|||||||
AM_CPPFLAGS += @WITH_LUA_INCLUDE@
|
AM_CPPFLAGS += @WITH_LUA_INCLUDE@
|
||||||
AM_CPPFLAGS += @WITH_POPT_INCLUDE@
|
AM_CPPFLAGS += @WITH_POPT_INCLUDE@
|
||||||
AM_CPPFLAGS += -I$(top_srcdir)/misc
|
AM_CPPFLAGS += -I$(top_srcdir)/misc
|
||||||
@@ -19,10 +20,17 @@ librpmio_la_SOURCES = \
|
@@ -18,10 +19,17 @@ librpmio_la_SOURCES = \
|
||||||
rpmstring.c rpmfileutil.c \
|
rpmstring.c rpmfileutil.c \
|
||||||
rpmkeyring.c
|
rpmkeyring.c
|
||||||
|
|
||||||
@ -126,7 +114,7 @@
|
|||||||
+librpmio_la_SOURCES += digest_nss.c
|
+librpmio_la_SOURCES += digest_nss.c
|
||||||
+endif
|
+endif
|
||||||
+
|
+
|
||||||
librpmio_la_LDFLAGS = -version-info 1:0:0
|
librpmio_la_LDFLAGS = -version-info 2:0:0
|
||||||
librpmio_la_LIBADD = \
|
librpmio_la_LIBADD = \
|
||||||
../misc/libmisc.la \
|
../misc/libmisc.la \
|
||||||
@WITH_NSS_LIB@ \
|
@WITH_NSS_LIB@ \
|
||||||
@ -134,7 +122,7 @@
|
|||||||
@WITH_LUA_LIB@ \
|
@WITH_LUA_LIB@ \
|
||||||
@WITH_BZ2_LIB@ \
|
@WITH_BZ2_LIB@ \
|
||||||
@WITH_ZLIB_LIB@ \
|
@WITH_ZLIB_LIB@ \
|
||||||
@@ -31,6 +39,15 @@ librpmio_la_LIBADD = \
|
@@ -30,6 +38,15 @@ librpmio_la_LIBADD = \
|
||||||
@WITH_LZMA_LIB@ \
|
@WITH_LZMA_LIB@ \
|
||||||
-lpthread
|
-lpthread
|
||||||
|
|
||||||
@ -150,8 +138,8 @@
|
|||||||
if WITH_LUAEXT
|
if WITH_LUAEXT
|
||||||
AM_CPPFLAGS += -I$(top_srcdir)/luaext/
|
AM_CPPFLAGS += -I$(top_srcdir)/luaext/
|
||||||
librpmio_la_LIBADD += $(top_builddir)/luaext/libluaext.la
|
librpmio_la_LIBADD += $(top_builddir)/luaext/libluaext.la
|
||||||
--- ./rpmio/base64.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmio/base64.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./rpmio/base64.c 2010-03-24 15:39:14.000000000 +0000
|
+++ ./rpmio/base64.c 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -4,8 +4,11 @@
|
@@ -4,8 +4,11 @@
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -169,9 +157,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#endif /* WITH_BEECRYPT */
|
+#endif /* WITH_BEECRYPT */
|
||||||
--- ./rpmio/digest.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmio/digest.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./rpmio/digest.c 2010-03-24 15:43:57.000000000 +0000
|
+++ ./rpmio/digest.c 2011-05-10 16:00:19.000000000 +0000
|
||||||
@@ -4,26 +4,12 @@
|
@@ -4,25 +4,12 @@
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
@ -194,13 +182,12 @@
|
|||||||
-struct DIGEST_CTX_s {
|
-struct DIGEST_CTX_s {
|
||||||
- rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
- rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
||||||
- HASHContext *hashctx; /*!< Internal NSS hash context. */
|
- HASHContext *hashctx; /*!< Internal NSS hash context. */
|
||||||
- pgpHashAlgo algo; /*!< Used hash algorithm */
|
- int algo; /*!< Used hash algorithm */
|
||||||
-};
|
-};
|
||||||
-
|
|
||||||
#define DIGESTS_MAX 11
|
#define DIGESTS_MAX 11
|
||||||
struct rpmDigestBundle_s {
|
struct rpmDigestBundle_s {
|
||||||
int index_min; /*!< Smallest index of active digest */
|
@@ -109,138 +96,3 @@ DIGEST_CTX rpmDigestBundleDupCtx(rpmDige
|
||||||
@@ -109,138 +95,3 @@ DIGEST_CTX rpmDigestBundleDupCtx(rpmDige
|
|
||||||
return dup;
|
return dup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,7 +206,7 @@
|
|||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-RPM_GNUC_PURE
|
-RPM_GNUC_PURE
|
||||||
-static HASH_HashType getHashType(pgpHashAlgo hashalgo)
|
-static HASH_HashType getHashType(int hashalgo)
|
||||||
-{
|
-{
|
||||||
- switch (hashalgo) {
|
- switch (hashalgo) {
|
||||||
- case PGPHASHALGO_MD5:
|
- case PGPHASHALGO_MD5:
|
||||||
@ -250,13 +237,13 @@
|
|||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-size_t
|
-size_t
|
||||||
-rpmDigestLength(pgpHashAlgo hashalgo)
|
-rpmDigestLength(int hashalgo)
|
||||||
-{
|
-{
|
||||||
- return HASH_ResultLen(getHashType(hashalgo));
|
- return HASH_ResultLen(getHashType(hashalgo));
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-DIGEST_CTX
|
-DIGEST_CTX
|
||||||
-rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
|
-rpmDigestInit(int hashalgo, rpmDigestFlags flags)
|
||||||
-{
|
-{
|
||||||
- HASH_HashType type = getHashType(hashalgo);
|
- HASH_HashType type = getHashType(hashalgo);
|
||||||
- HASHContext *hashctx = NULL;
|
- HASHContext *hashctx = NULL;
|
||||||
@ -339,8 +326,8 @@
|
|||||||
- return 0;
|
- return 0;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
--- ./rpmio/digest.h.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmio/digest.h.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./rpmio/digest.h 2010-03-24 15:56:12.000000000 +0000
|
+++ ./rpmio/digest.h 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -1,11 +1,6 @@
|
@@ -1,11 +1,6 @@
|
||||||
#ifndef _RPMDIGEST_H
|
#ifndef _RPMDIGEST_H
|
||||||
#define _RPMDIGEST_H
|
#define _RPMDIGEST_H
|
||||||
@ -374,8 +361,8 @@
|
|||||||
+int pgpVerifyDSA(pgpDig dig, uint8_t *hash, size_t hashlen);
|
+int pgpVerifyDSA(pgpDig dig, uint8_t *hash, size_t hashlen);
|
||||||
+
|
+
|
||||||
#endif /* _RPMDIGEST_H */
|
#endif /* _RPMDIGEST_H */
|
||||||
--- ./rpmio/digest_beecrypt.c.orig 2010-03-24 15:39:14.000000000 +0000
|
--- ./rpmio/digest_beecrypt.c.orig 2011-05-10 15:54:41.000000000 +0000
|
||||||
+++ ./rpmio/digest_beecrypt.c 2010-03-24 16:16:23.000000000 +0000
|
+++ ./rpmio/digest_beecrypt.c 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -0,0 +1,493 @@
|
@@ -0,0 +1,493 @@
|
||||||
+#include "system.h"
|
+#include "system.h"
|
||||||
+
|
+
|
||||||
@ -698,7 +685,7 @@
|
|||||||
+ */
|
+ */
|
||||||
+struct DIGEST_CTX_s {
|
+struct DIGEST_CTX_s {
|
||||||
+ rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
+ rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
||||||
+ pgpHashAlgo algo; /*!< Used hash algorithm */
|
+ int algo; /*!< Used hash algorithm */
|
||||||
+ uint32_t datalen; /*!< No. bytes in block of plaintext data. */
|
+ uint32_t datalen; /*!< No. bytes in block of plaintext data. */
|
||||||
+ uint32_t paramlen; /*!< No. bytes of digest parameters. */
|
+ uint32_t paramlen; /*!< No. bytes of digest parameters. */
|
||||||
+ uint32_t digestlen; /*!< No. bytes of digest. */
|
+ uint32_t digestlen; /*!< No. bytes of digest. */
|
||||||
@ -721,7 +708,7 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+size_t
|
+size_t
|
||||||
+rpmDigestLength(pgpHashAlgo hashalgo)
|
+rpmDigestLength(int hashalgo)
|
||||||
+{
|
+{
|
||||||
+ switch (hashalgo) {
|
+ switch (hashalgo) {
|
||||||
+ case PGPHASHALGO_MD5:
|
+ case PGPHASHALGO_MD5:
|
||||||
@ -742,7 +729,7 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+DIGEST_CTX
|
+DIGEST_CTX
|
||||||
+rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
|
+rpmDigestInit(int hashalgo, rpmDigestFlags flags)
|
||||||
+{
|
+{
|
||||||
+ DIGEST_CTX ctx = xcalloc(1, sizeof(*ctx));
|
+ DIGEST_CTX ctx = xcalloc(1, sizeof(*ctx));
|
||||||
+ int xx;
|
+ int xx;
|
||||||
@ -870,8 +857,8 @@
|
|||||||
+ free(ctx);
|
+ free(ctx);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
--- ./rpmio/digest_nss.c.orig 2010-03-24 15:39:14.000000000 +0000
|
--- ./rpmio/digest_nss.c.orig 2011-05-10 15:54:41.000000000 +0000
|
||||||
+++ ./rpmio/digest_nss.c 2010-03-24 16:14:36.000000000 +0000
|
+++ ./rpmio/digest_nss.c 2011-05-10 15:54:41.000000000 +0000
|
||||||
@@ -0,0 +1,500 @@
|
@@ -0,0 +1,500 @@
|
||||||
+#include <nss.h>
|
+#include <nss.h>
|
||||||
+#include <sechash.h>
|
+#include <sechash.h>
|
||||||
@ -1238,7 +1225,7 @@
|
|||||||
+struct DIGEST_CTX_s {
|
+struct DIGEST_CTX_s {
|
||||||
+ rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
+ rpmDigestFlags flags; /*!< Bit(s) to control digest operation. */
|
||||||
+ HASHContext *hashctx; /*!< Internal NSS hash context. */
|
+ HASHContext *hashctx; /*!< Internal NSS hash context. */
|
||||||
+ pgpHashAlgo algo; /*!< Used hash algorithm */
|
+ int algo; /*!< Used hash algorithm */
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+DIGEST_CTX
|
+DIGEST_CTX
|
||||||
@ -1255,7 +1242,7 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+RPM_GNUC_PURE
|
+RPM_GNUC_PURE
|
||||||
+static HASH_HashType getHashType(pgpHashAlgo hashalgo)
|
+static HASH_HashType getHashType(int hashalgo)
|
||||||
+{
|
+{
|
||||||
+ switch (hashalgo) {
|
+ switch (hashalgo) {
|
||||||
+ case PGPHASHALGO_MD5:
|
+ case PGPHASHALGO_MD5:
|
||||||
@ -1286,13 +1273,13 @@
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+size_t
|
+size_t
|
||||||
+rpmDigestLength(pgpHashAlgo hashalgo)
|
+rpmDigestLength(int hashalgo)
|
||||||
+{
|
+{
|
||||||
+ return HASH_ResultLen(getHashType(hashalgo));
|
+ return HASH_ResultLen(getHashType(hashalgo));
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+DIGEST_CTX
|
+DIGEST_CTX
|
||||||
+rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
|
+rpmDigestInit(int hashalgo, rpmDigestFlags flags)
|
||||||
+{
|
+{
|
||||||
+ HASH_HashType type;
|
+ HASH_HashType type;
|
||||||
+ HASHContext *hashctx = NULL;
|
+ HASHContext *hashctx = NULL;
|
||||||
@ -1373,8 +1360,8 @@
|
|||||||
+ free(ctx);
|
+ free(ctx);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
--- ./rpmio/rpmpgp.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmio/rpmpgp.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./rpmio/rpmpgp.c 2010-03-24 16:26:00.000000000 +0000
|
+++ ./rpmio/rpmpgp.c 2011-05-10 16:01:58.000000000 +0000
|
||||||
@@ -20,9 +20,6 @@ static int _debug = 0;
|
@@ -20,9 +20,6 @@ static int _debug = 0;
|
||||||
|
|
||||||
static int _print = 0;
|
static int _print = 0;
|
||||||
@ -1382,10 +1369,10 @@
|
|||||||
-static int _crypto_initialized = 0;
|
-static int _crypto_initialized = 0;
|
||||||
-static int _new_process = 1;
|
-static int _new_process = 1;
|
||||||
-
|
-
|
||||||
static struct pgpValTbl_s const pgpSigTypeTbl[] = {
|
typedef const struct pgpValTbl_s {
|
||||||
{ PGPSIGTYPE_BINARY, "Binary document signature" },
|
int val;
|
||||||
{ PGPSIGTYPE_TEXT, "Text document signature" },
|
char const * const str;
|
||||||
@@ -291,89 +288,6 @@ int pgpValTok(pgpValTbl vs, const char *
|
@@ -315,89 +312,6 @@ int pgpValTok(pgpValTbl vs, const char *
|
||||||
} while ((++vs)->val != -1);
|
} while ((++vs)->val != -1);
|
||||||
return vs->val;
|
return vs->val;
|
||||||
}
|
}
|
||||||
@ -1393,12 +1380,12 @@
|
|||||||
- * @return 0 on success
|
- * @return 0 on success
|
||||||
- */
|
- */
|
||||||
-static int pgpMpiSet(const char * pre, unsigned int lbits,
|
-static int pgpMpiSet(const char * pre, unsigned int lbits,
|
||||||
- void *dest, const uint8_t * p, const uint8_t * pend)
|
- uint8_t *dest, const uint8_t * p, const uint8_t * pend)
|
||||||
-{
|
-{
|
||||||
- unsigned int mbits = pgpMpiBits(p);
|
- unsigned int mbits = pgpMpiBits(p);
|
||||||
- unsigned int nbits;
|
- unsigned int nbits;
|
||||||
- size_t nbytes;
|
- size_t nbytes;
|
||||||
- char *t = dest;
|
- uint8_t *t = dest;
|
||||||
- unsigned int ix;
|
- unsigned int ix;
|
||||||
-
|
-
|
||||||
- if ((p + ((mbits+7) >> 3)) > pend)
|
- if ((p + ((mbits+7) >> 3)) > pend)
|
||||||
@ -1475,7 +1462,7 @@
|
|||||||
|
|
||||||
/** \ingroup rpmpgp
|
/** \ingroup rpmpgp
|
||||||
* Is buffer at beginning of an OpenPGP packet?
|
* Is buffer at beginning of an OpenPGP packet?
|
||||||
@@ -569,29 +483,16 @@ static int pgpPrtSigParams(pgpTag tag, u
|
@@ -593,29 +507,16 @@ static int pgpPrtSigParams(pgpTag tag, u
|
||||||
{
|
{
|
||||||
const uint8_t * pend = h + hlen;
|
const uint8_t * pend = h + hlen;
|
||||||
size_t i;
|
size_t i;
|
||||||
@ -1507,7 +1494,7 @@
|
|||||||
}
|
}
|
||||||
pgpPrtStr("", pgpSigRSA[i]);
|
pgpPrtStr("", pgpSigRSA[i]);
|
||||||
} else if (pubkey_algo == PGPPUBKEYALGO_DSA) {
|
} else if (pubkey_algo == PGPPUBKEYALGO_DSA) {
|
||||||
@@ -599,30 +500,8 @@ static int pgpPrtSigParams(pgpTag tag, u
|
@@ -623,30 +524,8 @@ static int pgpPrtSigParams(pgpTag tag, u
|
||||||
if (_dig &&
|
if (_dig &&
|
||||||
(sigtype == PGPSIGTYPE_BINARY || sigtype == PGPSIGTYPE_TEXT))
|
(sigtype == PGPSIGTYPE_BINARY || sigtype == PGPSIGTYPE_TEXT))
|
||||||
{
|
{
|
||||||
@ -1540,7 +1527,7 @@
|
|||||||
}
|
}
|
||||||
pgpPrtStr("", pgpSigDSA[i]);
|
pgpPrtStr("", pgpSigDSA[i]);
|
||||||
} else {
|
} else {
|
||||||
@@ -814,49 +693,11 @@ static const uint8_t * pgpPrtPubkeyParam
|
@@ -838,49 +717,11 @@ static const uint8_t * pgpPrtPubkeyParam
|
||||||
char * mpi;
|
char * mpi;
|
||||||
if (pubkey_algo == PGPPUBKEYALGO_RSA) {
|
if (pubkey_algo == PGPPUBKEYALGO_RSA) {
|
||||||
if (i >= 2) break;
|
if (i >= 2) break;
|
||||||
@ -1592,7 +1579,7 @@
|
|||||||
pgpPrtStr("", pgpPublicDSA[i]);
|
pgpPrtStr("", pgpPublicDSA[i]);
|
||||||
} else if (pubkey_algo == PGPPUBKEYALGO_ELGAMAL_ENCRYPT) {
|
} else if (pubkey_algo == PGPPUBKEYALGO_ELGAMAL_ENCRYPT) {
|
||||||
if (i >= 3) break;
|
if (i >= 3) break;
|
||||||
@@ -1241,15 +1082,7 @@ void pgpCleanDig(pgpDig dig)
|
@@ -1265,15 +1106,7 @@ void pgpCleanDig(pgpDig dig)
|
||||||
memset(&dig->signature, 0, sizeof(dig->signature));
|
memset(&dig->signature, 0, sizeof(dig->signature));
|
||||||
memset(&dig->pubkey, 0, sizeof(dig->pubkey));
|
memset(&dig->pubkey, 0, sizeof(dig->pubkey));
|
||||||
|
|
||||||
@ -1609,7 +1596,7 @@
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1291,39 +1124,6 @@ int pgpPrtPkts(const uint8_t * pkts, siz
|
@@ -1315,39 +1148,6 @@ int pgpPrtPkts(const uint8_t * pkts, siz
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1649,7 +1636,7 @@
|
|||||||
char *pgpIdentItem(pgpDigParams digp)
|
char *pgpIdentItem(pgpDigParams digp)
|
||||||
{
|
{
|
||||||
char *id = NULL;
|
char *id = NULL;
|
||||||
@@ -1372,30 +1172,12 @@ rpmRC pgpVerifySig(pgpDig dig, DIGEST_CT
|
@@ -1396,30 +1196,12 @@ rpmRC pgpVerifySig(pgpDig dig, DIGEST_CT
|
||||||
|
|
||||||
/* Compare leading 16 bits of digest for quick check. */
|
/* Compare leading 16 bits of digest for quick check. */
|
||||||
if (hash && memcmp(hash, sigp->signhash16, 2) == 0) {
|
if (hash && memcmp(hash, sigp->signhash16, 2) == 0) {
|
||||||
@ -1686,7 +1673,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1580,50 +1362,3 @@ char * pgpArmorWrap(int atype, const uns
|
@@ -1607,50 +1389,3 @@ char * pgpArmorWrap(int atype, const uns
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ BuildRequires: libacl-devel libcap-devel python-devel xz-devel zlib-devel
|
|||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System/Packages
|
Group: System/Packages
|
||||||
Summary: Python Bindings for Manipulating RPM Packages
|
Summary: Python Bindings for Manipulating RPM Packages
|
||||||
Version: 4.8.0
|
Version: 4.9.0
|
||||||
Release: 21
|
Release: 1
|
||||||
Requires: rpm = %{version}
|
Requires: rpm = %{version}
|
||||||
%py_requires
|
%py_requires
|
||||||
Source99: rpm.spec
|
Source99: rpm.spec
|
||||||
|
@ -1,29 +1,10 @@
|
|||||||
Index: build/parseChangelog.c
|
--- ./build/pack.c.orig 2011-02-15 13:03:56.000000000 +0000
|
||||||
===================================================================
|
+++ ./build/pack.c 2011-05-11 15:35:07.000000000 +0000
|
||||||
--- build/parseChangelog.c.orig
|
@@ -671,6 +671,63 @@ static rpmRC checkPackages(char *pkgchec
|
||||||
+++ build/parseChangelog.c
|
|
||||||
@@ -167,6 +167,11 @@ static rpmRC addChangelog(Header h, Stri
|
|
||||||
return RPMRC_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* workaround old suse oddity */
|
|
||||||
+ if (*s == '-' && s[1] == ' ') {
|
|
||||||
+ s += 2;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* name */
|
|
||||||
name = s;
|
|
||||||
while (*s != '\0') s++;
|
|
||||||
Index: build/pack.c
|
|
||||||
===================================================================
|
|
||||||
--- build/pack.c.orig
|
|
||||||
+++ build/pack.c
|
|
||||||
@@ -707,6 +707,64 @@ rpmRC checkPackages(char *pkgcheck)
|
|
||||||
return RPMRC_OK;
|
return RPMRC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static void
|
+static void trimChangelog(Header h)
|
||||||
+trimChangelog(Header h)
|
|
||||||
+{
|
+{
|
||||||
+ static int oneshot;
|
+ static int oneshot;
|
||||||
+ static int cuttime, minnum, maxnum;
|
+ static int cuttime, minnum, maxnum;
|
||||||
@ -80,10 +61,10 @@ Index: build/pack.c
|
|||||||
+ free(texts);
|
+ free(texts);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
rpmRC packageBinaries(rpmSpec spec)
|
rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||||||
{
|
{
|
||||||
struct cpioSourceArchive_s csabuf;
|
struct cpioSourceArchive_s csabuf;
|
||||||
@@ -716,6 +774,7 @@ rpmRC packageBinaries(rpmSpec spec)
|
@@ -680,6 +737,7 @@ rpmRC packageBinaries(rpmSpec spec, cons
|
||||||
Package pkg;
|
Package pkg;
|
||||||
char *pkglist = NULL;
|
char *pkglist = NULL;
|
||||||
|
|
||||||
@ -91,3 +72,17 @@ Index: build/pack.c
|
|||||||
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
||||||
char *fn;
|
char *fn;
|
||||||
|
|
||||||
|
--- ./build/parseChangelog.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
|
+++ ./build/parseChangelog.c 2011-05-11 15:33:22.000000000 +0000
|
||||||
|
@@ -168,6 +168,11 @@ static rpmRC addChangelog(Header h, ARGV
|
||||||
|
return RPMRC_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* workaround old suse oddity */
|
||||||
|
+ if (*s == '-' && s[1] == ' ') {
|
||||||
|
+ s += 2;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* name */
|
||||||
|
name = s;
|
||||||
|
while (*s != '\0') s++;
|
||||||
|
10
rpm.changes
10
rpm.changes
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 16 14:45:05 CEST 2011 - mls@suse.de
|
||||||
|
|
||||||
|
- update to rpm-4.9.0:
|
||||||
|
* use internal dependency generator
|
||||||
|
* pluggable autodeps generators
|
||||||
|
* update to berkeleydb 4.8.30
|
||||||
|
* fixed dependency match corner cases
|
||||||
|
* experimental collection implementation
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed May 4 12:42:33 UTC 2011 - mmarek@novell.com
|
Wed May 4 12:42:33 UTC 2011 - mmarek@novell.com
|
||||||
|
|
||||||
|
159
rpm.spec
159
rpm.spec
@ -20,7 +20,7 @@
|
|||||||
Name: rpm
|
Name: rpm
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System/Packages
|
Group: System/Packages
|
||||||
BuildRequires: file-devel libbz2-devel libelf-devel libselinux-devel lua-devel ncurses-devel xz-devel zlib-devel
|
BuildRequires: file-devel libbz2-devel libelf-devel libselinux-devel libsemanage-devel lua-devel ncurses-devel xz-devel zlib-devel
|
||||||
BuildRequires: popt-devel
|
BuildRequires: popt-devel
|
||||||
BuildRequires: libacl-devel libcap-devel
|
BuildRequires: libacl-devel libcap-devel
|
||||||
#!BuildIgnore: rpmlint-Factory
|
#!BuildIgnore: rpmlint-Factory
|
||||||
@ -28,8 +28,8 @@ Provides: rpminst
|
|||||||
PreReq: %insserv_prereq %fillup_prereq permissions
|
PreReq: %insserv_prereq %fillup_prereq permissions
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Summary: The RPM Package Manager
|
Summary: The RPM Package Manager
|
||||||
Version: 4.8.0
|
Version: 4.9.0
|
||||||
Release: 32
|
Release: 1
|
||||||
Source: rpm-%{version}.tar.bz2
|
Source: rpm-%{version}.tar.bz2
|
||||||
Source1: RPM-HOWTO.tar.bz2
|
Source1: RPM-HOWTO.tar.bz2
|
||||||
Source2: RPM-Tips.html.tar.bz2
|
Source2: RPM-Tips.html.tar.bz2
|
||||||
@ -39,7 +39,7 @@ Source6: symset-table
|
|||||||
Source8: rpmconfigcheck
|
Source8: rpmconfigcheck
|
||||||
Source9: sysconfig.services-rpm
|
Source9: sysconfig.services-rpm
|
||||||
Source10: beecrypt-4.1.2.tar.bz2
|
Source10: beecrypt-4.1.2.tar.bz2
|
||||||
Source11: rpm-4.4.2.3-db.tar.bz2
|
Source11: db-4.8.30.tar.bz2
|
||||||
Source12: baselibs.conf
|
Source12: baselibs.conf
|
||||||
Patch1: beecrypt-4.1.2.diff
|
Patch1: beecrypt-4.1.2.diff
|
||||||
Patch2: db.diff
|
Patch2: db.diff
|
||||||
@ -52,74 +52,69 @@ Patch14: nameversioncompare.diff
|
|||||||
Patch15: chownwarn.diff
|
Patch15: chownwarn.diff
|
||||||
Patch16: dbfsync.diff
|
Patch16: dbfsync.diff
|
||||||
Patch17: dbrointerruptable.diff
|
Patch17: dbrointerruptable.diff
|
||||||
Patch18: diskspace.diff
|
Patch18: extcond.diff
|
||||||
Patch19: extcond.diff
|
Patch19: refreshtestarch.diff
|
||||||
Patch20: nodefattr.diff
|
Patch20: rpmrctests.diff
|
||||||
Patch21: luaroot.diff
|
Patch21: waitlock.diff
|
||||||
Patch22: refreshtestarch.diff
|
Patch22: suspendlock.diff
|
||||||
Patch23: rpmrctests.diff
|
Patch23: weakdeps.diff
|
||||||
Patch24: suspendlock.diff
|
Patch24: autodeps.diff
|
||||||
Patch25: waitlock.diff
|
Patch25: brp.diff
|
||||||
Patch26: dbprivate.diff
|
Patch26: brpcompress.diff
|
||||||
Patch27: weakdeps.diff
|
Patch27: checkfilesnoinfodir.diff
|
||||||
Patch28: autodeps.diff
|
Patch28: finddebuginfo.diff
|
||||||
Patch29: brp.diff
|
Patch29: findksyms.diff
|
||||||
Patch30: brpcombress.diff
|
Patch30: findlang.diff
|
||||||
Patch31: checkfilesnoinfodir.diff
|
Patch31: macrosin.diff
|
||||||
Patch32: finddebuginfo.diff
|
Patch32: modalias.diff
|
||||||
Patch33: findksyms.diff
|
Patch33: platformin.diff
|
||||||
Patch34: findlang.diff
|
Patch34: rpmpopt.diff
|
||||||
Patch35: macrosin.diff
|
Patch35: rpmrc.diff
|
||||||
Patch36: modalias.diff
|
Patch36: taggedfileindex.diff
|
||||||
Patch37: platformin.diff
|
Patch37: rpmqpack.diff
|
||||||
Patch38: rpmpopt.diff
|
Patch38: convertdb1static.diff
|
||||||
Patch39: rpmrc.diff
|
Patch39: build.diff
|
||||||
Patch40: taggedfileindex.diff
|
Patch40: modalias-kernel_module.diff
|
||||||
Patch41: rpmqpack.diff
|
Patch41: files.diff
|
||||||
Patch42: convertdb1static.diff
|
Patch42: debugedit-comp-dir.diff
|
||||||
Patch43: build.diff
|
Patch43: perlprov.diff
|
||||||
Patch44: modalias-kernel_module.diff
|
Patch44: rpm-shorten-changelog.diff
|
||||||
Patch45: files.diff
|
Patch45: debugsource-package.diff
|
||||||
Patch46: debugedit-comp-dir.diff
|
Patch46: whatrequires-doc.diff
|
||||||
Patch47: perlprov.diff
|
Patch47: remove-brp-strips.diff
|
||||||
Patch48: rpm-shorten-changelog.diff
|
Patch48: requires-ge-macro.diff
|
||||||
Patch49: debugsource-package.diff
|
Patch49: mimetype.diff
|
||||||
Patch50: whatrequires-doc.diff
|
Patch50: debugedit-canon-fix.diff
|
||||||
Patch51: remove-brp-strips.diff
|
Patch51: finddebuginfo-absolute-links.diff
|
||||||
Patch52: requires-ge-macro.diff
|
Patch52: firmware.diff
|
||||||
Patch53: mimetype.diff
|
Patch53: specfilemacro.diff
|
||||||
Patch54: debugedit-canon-fix.diff
|
Patch54: modalias-encode.diff
|
||||||
Patch55: finddebuginfo-absolute-links.diff
|
Patch55: disttag-macro.diff
|
||||||
Patch56: firmware.diff
|
Patch56: buildidprov.diff
|
||||||
Patch57: specfilemacro.diff
|
Patch57: debugsubpkg.diff
|
||||||
Patch58: modalias-encode.diff
|
Patch58: debuglink.diff
|
||||||
Patch59: disttag-macro.diff
|
Patch59: debuginfo-mono.patch
|
||||||
Patch60: buildidprov.diff
|
Patch60: lazystatfs.diff
|
||||||
Patch61: debugsubpkg.diff
|
Patch61: repackage-nomd5.diff
|
||||||
Patch62: debuglink.diff
|
Patch62: safeugid.diff
|
||||||
Patch63: debuginfo-mono.patch
|
Patch63: noprereqdeprec.diff
|
||||||
Patch64: allowufdio.diff
|
Patch64: pythondeps.diff
|
||||||
Patch65: lazystatfs.diff
|
Patch65: fontprovides.diff
|
||||||
Patch66: defclean.diff
|
Patch66: rpm-gst-provides.patch
|
||||||
Patch67: readlineofi.diff
|
Patch67: langnoc.diff
|
||||||
Patch68: rpmdb-no-svc.diff
|
Patch68: initscriptsprov.diff
|
||||||
Patch69: modemuncher.diff
|
Patch69: remove-translations.diff
|
||||||
Patch70: repackage-nomd5.diff
|
Patch70: no_rep_autop.diff
|
||||||
Patch71: safeugid.diff
|
Patch71: headeradddb.diff
|
||||||
Patch72: resetdefattr.diff
|
Patch72: rpmdb_get_open_flags.diff
|
||||||
Patch73: noprereqdeprec.diff
|
Patch73: verify_p.diff
|
||||||
Patch74: tarrecordsize.diff
|
Patch74: dbprivate.diff
|
||||||
Patch75: backport.diff
|
Patch75: nobuildcolor.diff
|
||||||
Patch76: pythondeps.diff
|
Patch76: fileattrs.diff
|
||||||
Patch77: fontprovides.diff
|
Patch77: emptyprep.diff
|
||||||
Patch78: nosource.diff
|
Patch78: nomagiccheck.diff
|
||||||
Patch79: nosignature.diff
|
Patch79: findsupplements.diff
|
||||||
Patch80: fixsbits.diff
|
Patch80: magic_and_path.diff
|
||||||
Patch81: pkgconfig-0.24.diff
|
|
||||||
Patch82: rpm-gst-provides.patch
|
|
||||||
Patch83: langnoc.diff
|
|
||||||
Patch84: initscriptsprov.diff
|
|
||||||
Patch85: remove-translations.diff
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
#
|
#
|
||||||
# avoid bootstrapping problem
|
# avoid bootstrapping problem
|
||||||
@ -168,7 +163,9 @@ rm -rf sqlite
|
|||||||
rm -rf beecrypt
|
rm -rf beecrypt
|
||||||
tar xjf %{SOURCE10}
|
tar xjf %{SOURCE10}
|
||||||
tar xjf %{SOURCE11}
|
tar xjf %{SOURCE11}
|
||||||
|
ln -s db-4.8.30 db
|
||||||
ln -s beecrypt-4.1.2 beecrypt
|
ln -s beecrypt-4.1.2 beecrypt
|
||||||
|
chmod -R u+w db/*
|
||||||
#tar xjf %{SOURCE12}
|
#tar xjf %{SOURCE12}
|
||||||
#ln -s neon-0.24.7 neon
|
#ln -s neon-0.24.7 neon
|
||||||
# will get linked from db3
|
# will get linked from db3
|
||||||
@ -181,8 +178,7 @@ rm -f rpmdb/db.h
|
|||||||
%patch -P 50 -P 51 -P 52 -P 53 -P 54 -P 55 -P 56 -P 57 -P 58 -P 59
|
%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 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 70 -P 71 -P 72 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79
|
||||||
%patch -P 80 -P 81 -P 82 -P 83 -P 85
|
%patch -P 80
|
||||||
%patch84 -p1
|
|
||||||
#chmod 755 scripts/find-supplements{,.ksyms}
|
#chmod 755 scripts/find-supplements{,.ksyms}
|
||||||
#chmod 755 scripts/find-provides.ksyms scripts/find-requires.ksyms
|
#chmod 755 scripts/find-provides.ksyms scripts/find-requires.ksyms
|
||||||
#chmod 755 scripts/firmware.prov
|
#chmod 755 scripts/firmware.prov
|
||||||
@ -193,6 +189,8 @@ if [ -s /etc/rpm/suse_macros ]; then
|
|||||||
cp -a /etc/rpm/suse_macros %{SOURCE4}
|
cp -a /etc/rpm/suse_macros %{SOURCE4}
|
||||||
fi
|
fi
|
||||||
cp -a %{SOURCE4} suse_macros
|
cp -a %{SOURCE4} suse_macros
|
||||||
|
rm -f m4/libtool.m4
|
||||||
|
rm -f m4/lt*.m4
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -ffunction-sections"
|
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -ffunction-sections"
|
||||||
@ -203,14 +201,14 @@ export CFLAGS="-g -O0 -fno-strict-aliasing"
|
|||||||
#cp -p /usr/share/gettext/config.rpath .
|
#cp -p /usr/share/gettext/config.rpath .
|
||||||
cp autogen.sh beecrypt
|
cp autogen.sh beecrypt
|
||||||
pushd beecrypt
|
pushd beecrypt
|
||||||
./autogen.sh --with-pic
|
./autogen.sh --with-pic --without-python
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
popd
|
popd
|
||||||
./autogen.sh --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
./autogen.sh --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
||||||
--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --with-lua \
|
--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --with-lua \
|
||||||
--with-selinux --with-internal-beecrypt --with-acl --with-cap --enable-shared %{?with_python: --enable-python}
|
--with-selinux --with-internal-beecrypt --with-acl --with-cap --enable-shared %{?with_python: --enable-python}
|
||||||
rm po/de.gmo
|
rm po/de.gmo
|
||||||
make %{?_smp_mflags}
|
make #%{?_smp_mflags}
|
||||||
make convertdb1
|
make convertdb1
|
||||||
|
|
||||||
%install
|
%install
|
||||||
@ -283,6 +281,7 @@ popd
|
|||||||
gzip -9 CHANGES
|
gzip -9 CHANGES
|
||||||
rm -rf $RPM_BUILD_ROOT/%{_libdir}/python%{py_ver}
|
rm -rf $RPM_BUILD_ROOT/%{_libdir}/python%{py_ver}
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
|
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
|
||||||
|
rm -f $RPM_BUILD_ROOT%{_libdir}/rpm-plugins/*.la
|
||||||
sh $RPM_BUILD_ROOT/usr/lib/rpm/find-lang.sh $RPM_BUILD_ROOT rpm
|
sh $RPM_BUILD_ROOT/usr/lib/rpm/find-lang.sh $RPM_BUILD_ROOT rpm
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
@ -298,9 +297,8 @@ if test -s var/lib/rpm/packages.rpm ; then
|
|||||||
mv -f var/lib/rpm/packages.rpm var/lib/rpm/packages.rpm3
|
mv -f var/lib/rpm/packages.rpm var/lib/rpm/packages.rpm3
|
||||||
rm -f var/lib/rpm/conflictsindex.rpm var/lib/rpm/fileindex.rpm var/lib/rpm/groupindex.rpm var/lib/rpm/nameindex.rpm var/lib/rpm/providesindex.rpm var/lib/rpm/requiredby.rpm var/lib/rpm/triggerindex.rpm
|
rm -f var/lib/rpm/conflictsindex.rpm var/lib/rpm/fileindex.rpm var/lib/rpm/groupindex.rpm var/lib/rpm/nameindex.rpm var/lib/rpm/providesindex.rpm var/lib/rpm/requiredby.rpm var/lib/rpm/triggerindex.rpm
|
||||||
fi
|
fi
|
||||||
if test -s var/lib/rpm/Filemd5s -a ! -e var/lib/rpm/Filedigests ; then
|
# delete no longer maintained databases
|
||||||
ln var/lib/rpm/Filemd5s var/lib/rpm/Filedigests
|
rm -f var/lib/rpm/Filemd5s var/lib/rpm/Filedigests var/lib/rpm/Requireversion var/lib/rpm/Provideversion
|
||||||
fi
|
|
||||||
|
|
||||||
%postun
|
%postun
|
||||||
%{insserv_cleanup}
|
%{insserv_cleanup}
|
||||||
@ -319,9 +317,11 @@ fi
|
|||||||
/etc/init.d/rpmconfigcheck
|
/etc/init.d/rpmconfigcheck
|
||||||
/usr/sbin/rcrpmconfigcheck
|
/usr/sbin/rcrpmconfigcheck
|
||||||
/usr/lib/rpm
|
/usr/lib/rpm
|
||||||
|
%{_libdir}/rpm-plugins
|
||||||
%{_libdir}/librpm.so.*
|
%{_libdir}/librpm.so.*
|
||||||
%{_libdir}/librpmbuild.so.*
|
%{_libdir}/librpmbuild.so.*
|
||||||
%{_libdir}/librpmio.so.*
|
%{_libdir}/librpmio.so.*
|
||||||
|
%{_libdir}/librpmsign.so.*
|
||||||
%doc %{_mandir}/man[18]/*.[18]*
|
%doc %{_mandir}/man[18]/*.[18]*
|
||||||
%dir /var/lib/rpm
|
%dir /var/lib/rpm
|
||||||
%verify(not mode) %dir %attr(755,root,root) /usr/src/packages/BUILD
|
%verify(not mode) %dir %attr(755,root,root) /usr/src/packages/BUILD
|
||||||
@ -339,6 +339,7 @@ fi
|
|||||||
%{_libdir}/librpm.so
|
%{_libdir}/librpm.so
|
||||||
%{_libdir}/librpmbuild.so
|
%{_libdir}/librpmbuild.so
|
||||||
%{_libdir}/librpmio.so
|
%{_libdir}/librpmio.so
|
||||||
|
%{_libdir}/librpmsign.so
|
||||||
%{_libdir}/pkgconfig/rpm.pc
|
%{_libdir}/pkgconfig/rpm.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
--- lib/Makefile.am.orig 2010-03-26 09:34:16.000000000 +0000
|
|
||||||
+++ lib/Makefile.am 2010-03-26 09:34:39.000000000 +0000
|
|
||||||
@@ -148,16 +148,6 @@ rpmdb_stat_LDADD = \
|
|
||||||
$(top_builddir)/db3/util_sig.o \
|
|
||||||
librpm.la
|
|
||||||
|
|
||||||
-rpmlibexec_PROGRAMS += rpmdb_svc
|
|
||||||
-rpmdb_svc_SOURCES =
|
|
||||||
-rpmdb_svc_LDADD = \
|
|
||||||
- $(top_builddir)/db3/db_server_proc.o \
|
|
||||||
- $(top_builddir)/db3/db_server_svc.o \
|
|
||||||
- $(top_builddir)/db3/db_server_util.o \
|
|
||||||
- $(top_builddir)/db3/gen_db_server.o \
|
|
||||||
- $(top_builddir)/db3/util_log.o \
|
|
||||||
- librpm.la
|
|
||||||
-
|
|
||||||
rpmlibexec_PROGRAMS += rpmdb_upgrade
|
|
||||||
rpmdb_upgrade_SOURCES =
|
|
||||||
rpmdb_upgrade_LDADD = \
|
|
13
rpmdb_get_open_flags.diff
Normal file
13
rpmdb_get_open_flags.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Suppress berkeleydb error messages when doing 'rpm --verifydb'.
|
||||||
|
|
||||||
|
--- lib/rpmdb.c.orig 2011-05-12 14:08:07.000000000 +0000
|
||||||
|
+++ lib/rpmdb.c 2011-05-12 14:09:06.000000000 +0000
|
||||||
|
@@ -165,7 +165,7 @@ static dbiIndex rpmdbOpenIndex(rpmdb db,
|
||||||
|
uintId, uintCmp, NULL);
|
||||||
|
}
|
||||||
|
/* If primary got created, we can safely run without fsync */
|
||||||
|
- if ((dbiFlags(dbi) & DBI_CREATED) || db->cfg.db_no_fsync) {
|
||||||
|
+ if ((!verifyonly && (dbiFlags(dbi) & DBI_CREATED)) || db->cfg.db_no_fsync) {
|
||||||
|
rpmlog(RPMLOG_DEBUG, "disabling fsync on database\n");
|
||||||
|
db->cfg.db_no_fsync = 1;
|
||||||
|
dbSetFSync(db->db_dbenv, 0);
|
14
rpmpopt.diff
14
rpmpopt.diff
@ -1,14 +1,8 @@
|
|||||||
---
|
--- ./rpmpopt.in.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
rpmpopt.in | 47 ++++++++++++++++++++++-------------------------
|
+++ ./rpmpopt.in 2011-05-11 15:02:34.000000000 +0000
|
||||||
1 file changed, 22 insertions(+), 25 deletions(-)
|
@@ -101,7 +101,8 @@ Relocations : %|PREFIXES?{[%{PREFIXES} ]
|
||||||
|
|
||||||
Index: rpmpopt.in
|
|
||||||
===================================================================
|
|
||||||
--- rpmpopt.in.orig
|
|
||||||
+++ rpmpopt.in
|
|
||||||
@@ -91,7 +91,8 @@ Signature : %|DSAHEADER?{%{DSAHEADER:p
|
|
||||||
%|PACKAGER?{Packager : %{PACKAGER}\n}|\
|
|
||||||
%|URL?{URL : %{URL}\n}|\
|
%|URL?{URL : %{URL}\n}|\
|
||||||
|
%|BUGURL?{Bug URL : %{BUGURL}\n}|\
|
||||||
Summary : %{SUMMARY}\n\
|
Summary : %{SUMMARY}\n\
|
||||||
-Description :\n%{DESCRIPTION}\n' \
|
-Description :\n%{DESCRIPTION}\n' \
|
||||||
+Description :\n%{DESCRIPTION}\n\
|
+Description :\n%{DESCRIPTION}\n\
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
Provide rpmqpack, a fast way to list all installed packages are
|
Provide rpmqpack, a fast way to list all installed packages are
|
||||||
check if some package is installed. This is a hack.
|
check if some package is installed. This is a hack.
|
||||||
|
|
||||||
Index: Makefile.am
|
--- ./Makefile.am.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
===================================================================
|
+++ ./Makefile.am 2011-05-11 15:15:27.000000000 +0000
|
||||||
--- Makefile.am.orig
|
@@ -170,6 +170,10 @@ rpmgraph_LDADD = lib/librpm.la rpmio/lib
|
||||||
+++ Makefile.am
|
|
||||||
@@ -139,6 +139,10 @@ check_PROGRAMS += rpmsort
|
dist_bin_SCRIPTS = scripts/gendiff
|
||||||
rpmsort_SOURCES = tools/rpmsort.c
|
|
||||||
rpmsort_LDADD = lib/librpm.la
|
|
||||||
|
|
||||||
+bin_PROGRAMS += rpmqpack
|
+bin_PROGRAMS += rpmqpack
|
||||||
+rpmqpack_SOURCES = rpmqpack.c
|
+rpmqpack_SOURCES = rpmqpack.c
|
||||||
@ -16,23 +14,19 @@ Index: Makefile.am
|
|||||||
rpmconfig_DATA = rpmrc
|
rpmconfig_DATA = rpmrc
|
||||||
rpmrc: $(top_srcdir)/rpmrc.in
|
rpmrc: $(top_srcdir)/rpmrc.in
|
||||||
@$(SED) \
|
@$(SED) \
|
||||||
Index: doc/Makefile.am
|
--- ./doc/Makefile.am.orig 2011-01-05 08:11:09.000000000 +0000
|
||||||
===================================================================
|
+++ ./doc/Makefile.am 2011-05-11 15:16:24.000000000 +0000
|
||||||
--- doc/Makefile.am.orig
|
@@ -8,7 +8,7 @@ EXTRA_DIST += $(man_man1_DATA)
|
||||||
+++ doc/Makefile.am
|
|
||||||
@@ -7,7 +7,7 @@ man_man1_DATA = gendiff.1
|
|
||||||
EXTRA_DIST += $(man_man1_DATA)
|
|
||||||
|
|
||||||
man_man8dir = $(mandir)/man8
|
man_man8dir = $(mandir)/man8
|
||||||
-man_man8_DATA = rpm.8 rpmbuild.8 rpmdeps.8 rpmgraph.8 rpm2cpio.8
|
man_man8_DATA = rpm.8 rpmbuild.8 rpmdeps.8 rpmgraph.8 rpm2cpio.8
|
||||||
+man_man8_DATA = rpm.8 rpmbuild.8 rpmdeps.8 rpmgraph.8 rpm2cpio.8 rpmqpack.8
|
-man_man8_DATA += rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8
|
||||||
|
+man_man8_DATA += rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8 rpmqpack.8
|
||||||
EXTRA_DIST += $(man_man8_DATA)
|
EXTRA_DIST += $(man_man8_DATA)
|
||||||
|
|
||||||
man_fr_man8dir = $(mandir)/fr/man8
|
man_fr_man8dir = $(mandir)/fr/man8
|
||||||
Index: doc/rpmqpack.8
|
--- ./doc/rpmqpack.8.orig 2011-05-11 15:15:27.000000000 +0000
|
||||||
===================================================================
|
+++ ./doc/rpmqpack.8 2011-05-11 15:15:27.000000000 +0000
|
||||||
--- /dev/null
|
|
||||||
+++ doc/rpmqpack.8
|
|
||||||
@@ -0,0 +1,25 @@
|
@@ -0,0 +1,25 @@
|
||||||
+.TH RPMQPACK 8 "Mar 2002"
|
+.TH RPMQPACK 8 "Mar 2002"
|
||||||
+.SH NAME
|
+.SH NAME
|
||||||
@ -59,10 +53,8 @@ Index: doc/rpmqpack.8
|
|||||||
+
|
+
|
||||||
+.SH AUTHOR
|
+.SH AUTHOR
|
||||||
+Michael Schroeder <mls@suse.de>
|
+Michael Schroeder <mls@suse.de>
|
||||||
Index: rpmqpack.c
|
--- ./rpmqpack.c.orig 2011-05-11 15:15:27.000000000 +0000
|
||||||
===================================================================
|
+++ ./rpmqpack.c 2011-05-11 15:15:27.000000000 +0000
|
||||||
--- /dev/null
|
|
||||||
+++ rpmqpack.c
|
|
||||||
@@ -0,0 +1,59 @@
|
@@ -0,0 +1,59 @@
|
||||||
+#include <sys/types.h>
|
+#include <sys/types.h>
|
||||||
+#include <limits.h>
|
+#include <limits.h>
|
||||||
@ -88,7 +80,7 @@ Index: rpmqpack.c
|
|||||||
+ perror("db_create");
|
+ perror("db_create");
|
||||||
+ exit(1);
|
+ exit(1);
|
||||||
+ }
|
+ }
|
||||||
+ if (db->open(db, 0, "/var/lib/rpm/Name", 0, DB_HASH, DB_RDONLY, 0664))
|
+ if (db->open(db, 0, "/var/lib/rpm/Name", 0, DB_UNKNOWN, DB_RDONLY, 0664))
|
||||||
+ {
|
+ {
|
||||||
+ perror("db->open");
|
+ perror("db->open");
|
||||||
+ exit(1);
|
+ exit(1);
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
Patch machine detection code: detect transmeta, rename parisc to hppa. [#52713]
|
Patch machine detection code: detect transmeta, rename parisc to hppa. [#52713]
|
||||||
|
|
||||||
Index: lib/rpmrc.c
|
--- ./lib/rpmrc.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./lib/rpmrc.c 2011-05-11 12:48:02.000000000 +0000
|
||||||
--- lib/rpmrc.c.orig
|
|
||||||
+++ lib/rpmrc.c
|
|
||||||
@@ -1,9 +1,6 @@
|
@@ -1,9 +1,6 @@
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
@ -12,9 +10,9 @@ Index: lib/rpmrc.c
|
|||||||
-#include <setjmp.h>
|
-#include <setjmp.h>
|
||||||
-#endif
|
-#endif
|
||||||
|
|
||||||
#include <ctype.h> /* XXX for /etc/rpm/platform contents */
|
#if HAVE_SYS_UTSNAME_H
|
||||||
|
#include <sys/utsname.h>
|
||||||
@@ -784,6 +781,14 @@ static inline int RPMClass(void)
|
@@ -788,6 +785,14 @@ static inline int RPMClass(void)
|
||||||
|
|
||||||
cpu = (tfms>>8)&15;
|
cpu = (tfms>>8)&15;
|
||||||
|
|
||||||
@ -29,7 +27,7 @@ Index: lib/rpmrc.c
|
|||||||
sigaction(SIGILL, &oldsa, NULL);
|
sigaction(SIGILL, &oldsa, NULL);
|
||||||
|
|
||||||
if (cpu < 6)
|
if (cpu < 6)
|
||||||
@@ -920,15 +925,6 @@ static int is_geode()
|
@@ -924,15 +929,6 @@ static int is_geode()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -45,7 +43,7 @@ Index: lib/rpmrc.c
|
|||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
static void defaultMachine(const char ** arch,
|
static void defaultMachine(const char ** arch,
|
||||||
@@ -1055,6 +1051,11 @@ static void defaultMachine(const char **
|
@@ -1059,6 +1055,11 @@ static void defaultMachine(const char **
|
||||||
/* big endian */
|
/* big endian */
|
||||||
strcpy(un.machine, "mips");
|
strcpy(un.machine, "mips");
|
||||||
# endif
|
# endif
|
||||||
|
277
safeugid.diff
277
safeugid.diff
@ -1,50 +1,33 @@
|
|||||||
--- lib/fsm.c.orig 2010-03-26 15:06:20.000000000 +0000
|
Work around glibc/nscd caching problems when doing 'rpm --root'.
|
||||||
+++ lib/fsm.c 2010-03-26 15:16:31.000000000 +0000
|
|
||||||
@@ -736,22 +736,26 @@ static int fsmMapAttrs(FSM_t fsm)
|
|
||||||
|
|
||||||
/* this check is pretty moot, rpmfi accessors check array bounds etc */
|
--- ./lib/rpmchroot.c.orig 2011-05-12 08:26:10.000000000 +0000
|
||||||
if (fi && i >= 0 && i < rpmfiFC(fi)) {
|
+++ ./lib/rpmchroot.c 2011-05-12 08:28:32.000000000 +0000
|
||||||
+ rpmts ts = fsmGetTs(fsm);
|
@@ -66,6 +66,7 @@ int rpmChrootIn(void)
|
||||||
mode_t finalMode = rpmfiFModeIndex(fi, i);
|
} else if (rootState.chrootDone == 0) {
|
||||||
dev_t finalRdev = rpmfiFRdevIndex(fi, i);
|
if (chdir("/") == 0 && chroot(rootState.rootDir) == 0) {
|
||||||
time_t finalMtime = rpmfiFMtimeIndex(fi, i);
|
rootState.chrootDone = 1;
|
||||||
const char *user = rpmfiFUserIndex(fi, i);
|
+ rpmugChroot(1);
|
||||||
const char *group = rpmfiFGroupIndex(fi, i);
|
} else {
|
||||||
+ int safe = rpmtsChrootDone(ts);
|
rpmlog(RPMLOG_ERR, _("Unable to change root directory: %m\n"));
|
||||||
+ extern int unameToUid_safe(const char *, gid_t *, int);
|
rc = -1;
|
||||||
+ extern int gnameToGid_safe(const char *, gid_t *, int);
|
@@ -91,6 +92,7 @@ int rpmChrootOut(void)
|
||||||
uid_t uid = 0;
|
} else if (rootState.chrootDone == 1) {
|
||||||
gid_t gid = 0;
|
if (chroot(".") == 0 && fchdir(rootState.cwd) == 0) {
|
||||||
|
rootState.chrootDone = 0;
|
||||||
- if (user && unameToUid(user, &uid)) {
|
+ rpmugChroot(0);
|
||||||
+ if (user && unameToUid_safe(user, &uid, safe)) {
|
} else {
|
||||||
if (fsm->goal == FSM_PKGINSTALL)
|
rpmlog(RPMLOG_ERR, _("Unable to restore root directory: %m\n"));
|
||||||
rpmlog(RPMLOG_WARNING,
|
rc = -1;
|
||||||
_("user %s does not exist - using root\n"), user);
|
--- ./lib/rpmug.c.orig 2011-05-12 08:13:52.000000000 +0000
|
||||||
finalMode &= ~S_ISUID; /* turn off suid bit */
|
+++ ./lib/rpmug.c 2011-05-12 08:33:28.000000000 +0000
|
||||||
}
|
@@ -35,6 +35,47 @@ const char * rpmugStashStr(const char *s
|
||||||
|
return ret;
|
||||||
- if (group && gnameToGid(group, &gid)) {
|
}
|
||||||
+ if (group && gnameToGid_safe(group, &gid, safe)) {
|
|
||||||
if (fsm->goal == FSM_PKGINSTALL)
|
|
||||||
rpmlog(RPMLOG_WARNING,
|
|
||||||
_("group %s does not exist - using root\n"), group);
|
|
||||||
@@ -773,8 +777,7 @@ static int fsmMapAttrs(FSM_t fsm)
|
|
||||||
if (fsm->mapFlags & CPIO_MAP_GID)
|
|
||||||
st->st_gid = gid;
|
|
||||||
|
|
||||||
- { rpmts ts = fsmGetTs(fsm);
|
|
||||||
-
|
|
||||||
+ {
|
|
||||||
/*
|
|
||||||
* Set file digest (if not disabled).
|
|
||||||
*/
|
|
||||||
--- lib/misc.c.orig 2009-12-07 14:36:49.000000000 +0000
|
|
||||||
+++ lib/misc.c 2010-03-26 15:26:05.000000000 +0000
|
|
||||||
@@ -14,6 +14,42 @@ const char * const RPMVERSION = VERSION;
|
|
||||||
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
|
+#if defined(__GLIBC__)
|
||||||
|
+
|
||||||
|
+static int inchroot;
|
||||||
|
+
|
||||||
+/*
|
+/*
|
||||||
+ * Unfortunatelly glibc caches nss/nscd data and there is no
|
+ * Unfortunatelly glibc caches nss/nscd data and there is no
|
||||||
+ * good way to flush those caches when we did a chroot(). Thus
|
+ * good way to flush those caches when we did a chroot(). Thus
|
||||||
@ -80,50 +63,30 @@
|
|||||||
+ fclose(fp);
|
+ fclose(fp);
|
||||||
+ return -1;
|
+ return -1;
|
||||||
+}
|
+}
|
||||||
|
+#endif
|
||||||
+
|
+
|
||||||
/* unameToUid(), uidTouname() and the group variants are really poorly
|
/*
|
||||||
implemented. They really ought to use hash tables. I just made the
|
* These really ought to use hash tables. I just made the
|
||||||
guess that most files would be owned by root or the same person/group
|
* guess that most files would be owned by root or the same person/group
|
||||||
@@ -21,11 +57,12 @@ const char * const RPMVERSION = VERSION;
|
@@ -68,17 +109,28 @@ int rpmugUid(const char * thisUname, uid
|
||||||
is looked up via getpw() and getgr() functions. If this performs
|
lastUnameAlloced = thisUnameLen + 10;
|
||||||
too poorly I'll have to implement it properly :-( */
|
lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */
|
||||||
|
|
||||||
-int unameToUid(const char * thisUname, uid_t * uid)
|
|
||||||
+int unameToUid_safe(const char * thisUname, uid_t * uid, int safe)
|
|
||||||
{
|
|
||||||
static char * lastUname = NULL;
|
|
||||||
static size_t lastUnameLen = 0;
|
|
||||||
static size_t lastUnameAlloced;
|
|
||||||
+ static int lastUnameSafe;
|
|
||||||
static uid_t lastUid;
|
|
||||||
struct passwd * pwent;
|
|
||||||
size_t thisUnameLen;
|
|
||||||
@@ -38,6 +75,11 @@ static char * lastUname = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (safe != lastUnameSafe) {
|
|
||||||
+ lastUnameLen = 0;
|
|
||||||
+ lastUnameSafe = safe;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
thisUnameLen = strlen(thisUname);
|
|
||||||
if (lastUname == NULL || thisUnameLen != lastUnameLen ||
|
|
||||||
!rstreq(thisUname, lastUname))
|
|
||||||
@@ -48,15 +90,21 @@ static char * lastUname = NULL;
|
|
||||||
}
|
}
|
||||||
strcpy(lastUname, thisUname);
|
- strcpy(lastUname, thisUname);
|
||||||
|
|
||||||
- pwent = getpwnam(thisUname);
|
- pwent = getpwnam(thisUname);
|
||||||
- if (pwent == NULL) {
|
- if (pwent == NULL) {
|
||||||
- /* FIX: shrug */
|
- /* FIX: shrug */
|
||||||
- endpwent();
|
- endpwent();
|
||||||
+ if (safe) {
|
+#if defined(__GLIBC__)
|
||||||
+ int uid = safe_lookup("/etc/passwd", thisUname);
|
+ if (inchroot) {
|
||||||
|
+ int uid = safe_lookup("/etc/passwd", thisUname);
|
||||||
+ if (uid < 0)
|
+ if (uid < 0)
|
||||||
+ return -1;
|
+ return -1;
|
||||||
+ lastUid = (uid_t)uid;
|
+ lastUid = uid;
|
||||||
+ } else {
|
+ } else
|
||||||
|
+#endif
|
||||||
|
+ {
|
||||||
pwent = getpwnam(thisUname);
|
pwent = getpwnam(thisUname);
|
||||||
- if (pwent == NULL) return -1;
|
- if (pwent == NULL) return -1;
|
||||||
+ if (pwent == NULL) {
|
+ if (pwent == NULL) {
|
||||||
@ -134,103 +97,117 @@
|
|||||||
+ }
|
+ }
|
||||||
+ lastUid = pwent->pw_uid;
|
+ lastUid = pwent->pw_uid;
|
||||||
}
|
}
|
||||||
-
|
|
||||||
- lastUid = pwent->pw_uid;
|
- lastUid = pwent->pw_uid;
|
||||||
|
+ strcpy(lastUname, thisUname);
|
||||||
|
+ lastUnameLen = thisUnameLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
*uid = lastUid;
|
*uid = lastUid;
|
||||||
@@ -64,11 +112,18 @@ static char * lastUname = NULL;
|
@@ -111,18 +163,29 @@ int rpmugGid(const char * thisGname, gid
|
||||||
return 0;
|
lastGnameAlloced = thisGnameLen + 10;
|
||||||
}
|
lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */
|
||||||
|
|
||||||
-int gnameToGid(const char * thisGname, gid_t * gid)
|
|
||||||
+int unameToUid(const char * thisUname, uid_t * uid)
|
|
||||||
+{
|
|
||||||
+ return unameToUid_safe(thisUname, uid, 0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+int gnameToGid_safe(const char * thisGname, gid_t * gid, int safe)
|
|
||||||
{
|
|
||||||
static char * lastGname = NULL;
|
|
||||||
static size_t lastGnameLen = 0;
|
|
||||||
static size_t lastGnameAlloced;
|
|
||||||
+ static int lastGnameSafe;
|
|
||||||
static gid_t lastGid;
|
|
||||||
size_t thisGnameLen;
|
|
||||||
struct group * grent;
|
|
||||||
@@ -81,6 +136,11 @@ static char * lastGname = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (safe != lastGnameSafe) {
|
|
||||||
+ lastGnameLen = 0;
|
|
||||||
+ lastGnameSafe = safe;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
thisGnameLen = strlen(thisGname);
|
|
||||||
if (lastGname == NULL || thisGnameLen != lastGnameLen ||
|
|
||||||
!rstreq(thisGname, lastGname))
|
|
||||||
@@ -91,25 +151,34 @@ static char * lastGname = NULL;
|
|
||||||
}
|
}
|
||||||
strcpy(lastGname, thisGname);
|
- strcpy(lastGname, thisGname);
|
||||||
|
|
||||||
- grent = getgrnam(thisGname);
|
- grent = getgrnam(thisGname);
|
||||||
- if (grent == NULL) {
|
- if (grent == NULL) {
|
||||||
- /* FIX: shrug */
|
- /* FIX: shrug */
|
||||||
- endgrent();
|
- endgrent();
|
||||||
+ if (safe) {
|
+#if defined(__GLIBC__)
|
||||||
+ int gid = safe_lookup("/etc/group", thisGname);
|
+ if (inchroot) {
|
||||||
|
+ int gid = safe_lookup("/etc/group", thisGname);
|
||||||
+ if (gid < 0)
|
+ if (gid < 0)
|
||||||
+ return -1;
|
+ return -1;
|
||||||
+ lastGid = (gid_t)gid;
|
+ lastGid = gid;
|
||||||
+ } else {
|
+ } else
|
||||||
|
+#endif
|
||||||
|
+ {
|
||||||
grent = getgrnam(thisGname);
|
grent = getgrnam(thisGname);
|
||||||
if (grent == NULL) {
|
if (grent == NULL) {
|
||||||
- /* XXX The filesystem package needs group/lock w/o getgrnam. */
|
|
||||||
- if (rstreq(thisGname, "lock")) {
|
|
||||||
- *gid = lastGid = 54;
|
|
||||||
- return 0;
|
|
||||||
- } else
|
|
||||||
- if (rstreq(thisGname, "mail")) {
|
|
||||||
- *gid = lastGid = 12;
|
|
||||||
- return 0;
|
|
||||||
- } else
|
|
||||||
- return -1;
|
- return -1;
|
||||||
+ /* FIX: shrug */
|
+ /* FIX: shrug */
|
||||||
+ endgrent();
|
+ endgrent();
|
||||||
+ grent = getgrnam(thisGname);
|
+ grent = getgrnam(thisGname);
|
||||||
+ if (grent == NULL) {
|
+ if (grent == NULL) {
|
||||||
+#ifdef STRANGE_FEDORA_HACKS
|
|
||||||
+ /* XXX The filesystem package needs group/lock w/o getgrnam. */
|
|
||||||
+ if (rstreq(thisGname, "lock")) {
|
|
||||||
+ *gid = lastGid = 54;
|
|
||||||
+ return 0;
|
|
||||||
+ } else
|
|
||||||
+ if (rstreq(thisGname, "mail")) {
|
|
||||||
+ *gid = lastGid = 12;
|
|
||||||
+ return 0;
|
|
||||||
+ } else
|
|
||||||
+#endif
|
|
||||||
+ return -1;
|
+ return -1;
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
+ lastGid = grent->gr_gid;
|
+ lastGid = grent->gr_gid;
|
||||||
}
|
}
|
||||||
- lastGid = grent->gr_gid;
|
- lastGid = grent->gr_gid;
|
||||||
|
+ strcpy(lastGname, thisGname);
|
||||||
|
+ lastGnameLen = thisGnameLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
*gid = lastGid;
|
*gid = lastGid;
|
||||||
@@ -117,6 +186,12 @@ static char * lastGname = NULL;
|
@@ -134,7 +197,7 @@ const char * rpmugUname(uid_t uid)
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+int gnameToGid(const char * thisGname, gid_t * gid)
|
|
||||||
+{
|
|
||||||
+ return gnameToGid_safe(thisGname, gid, 0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
const char * uidToUname(uid_t uid)
|
|
||||||
{
|
{
|
||||||
static uid_t lastUid = (uid_t) -1;
|
static uid_t lastUid = (uid_t) -1;
|
||||||
|
static char * lastUname = NULL;
|
||||||
|
- static size_t lastUnameLen = 0;
|
||||||
|
+ static size_t lastUnameAlloced = 0;
|
||||||
|
|
||||||
|
if (uid == (uid_t) -1) {
|
||||||
|
lastUid = (uid_t) -1;
|
||||||
|
@@ -151,9 +214,9 @@ const char * rpmugUname(uid_t uid)
|
||||||
|
|
||||||
|
lastUid = uid;
|
||||||
|
len = strlen(pwent->pw_name);
|
||||||
|
- if (lastUnameLen < len + 1) {
|
||||||
|
- lastUnameLen = len + 20;
|
||||||
|
- lastUname = xrealloc(lastUname, lastUnameLen);
|
||||||
|
+ if (lastUnameAlloced < len + 1) {
|
||||||
|
+ lastUnameAlloced = len + 20;
|
||||||
|
+ lastUname = xrealloc(lastUname, lastUnameAlloced);
|
||||||
|
}
|
||||||
|
strcpy(lastUname, pwent->pw_name);
|
||||||
|
|
||||||
|
@@ -165,7 +228,7 @@ const char * rpmugGname(gid_t gid)
|
||||||
|
{
|
||||||
|
static gid_t lastGid = (gid_t) -1;
|
||||||
|
static char * lastGname = NULL;
|
||||||
|
- static size_t lastGnameLen = 0;
|
||||||
|
+ static size_t lastGnameAlloced = 0;
|
||||||
|
|
||||||
|
if (gid == (gid_t) -1) {
|
||||||
|
lastGid = (gid_t) -1;
|
||||||
|
@@ -182,9 +245,9 @@ const char * rpmugGname(gid_t gid)
|
||||||
|
|
||||||
|
lastGid = gid;
|
||||||
|
len = strlen(grent->gr_name);
|
||||||
|
- if (lastGnameLen < len + 1) {
|
||||||
|
- lastGnameLen = len + 20;
|
||||||
|
- lastGname = xrealloc(lastGname, lastGnameLen);
|
||||||
|
+ if (lastGnameAlloced < len + 1) {
|
||||||
|
+ lastGnameAlloced = len + 20;
|
||||||
|
+ lastGname = xrealloc(lastGname, lastGnameAlloced);
|
||||||
|
}
|
||||||
|
strcpy(lastGname, grent->gr_name);
|
||||||
|
|
||||||
|
@@ -200,3 +263,16 @@ void rpmugFree(void)
|
||||||
|
rpmugGname(-1);
|
||||||
|
strStash = strCacheFree(strStash);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+void rpmugChroot(int in)
|
||||||
|
+{
|
||||||
|
+ /* tell libc to drop caches / file descriptors */
|
||||||
|
+ endpwent();
|
||||||
|
+ endgrent();
|
||||||
|
+ /* drop our own caches */
|
||||||
|
+ rpmugUid(NULL, NULL);
|
||||||
|
+ rpmugGid(NULL, NULL);
|
||||||
|
+#if defined(__GLIBC__)
|
||||||
|
+ inchroot = in;
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
--- ./lib/rpmug.h.orig 2011-05-12 08:13:52.000000000 +0000
|
||||||
|
+++ ./lib/rpmug.h 2011-05-12 08:26:56.000000000 +0000
|
||||||
|
@@ -15,4 +15,6 @@ const char * rpmugGname(gid_t gid);
|
||||||
|
|
||||||
|
void rpmugFree(void);
|
||||||
|
|
||||||
|
+void rpmugChroot(int in);
|
||||||
|
+
|
||||||
|
#endif /* _RPMUG_H */
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Index: build/parseSpec.c
|
--- ./build/parseSpec.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
===================================================================
|
+++ ./build/parseSpec.c 2011-05-11 15:58:37.000000000 +0000
|
||||||
--- build/parseSpec.c.orig
|
@@ -519,6 +519,7 @@ static rpmSpec parseSpec(const char *spe
|
||||||
+++ build/parseSpec.c
|
|
||||||
@@ -425,6 +425,7 @@ int parseSpec(rpmts ts, const char *spec
|
|
||||||
spec = newSpec();
|
spec = newSpec();
|
||||||
|
|
||||||
spec->specFile = rpmGetPath(specFile, NULL);
|
spec->specFile = rpmGetPath(specFile, NULL);
|
||||||
|
183
suspendlock.diff
183
suspendlock.diff
@ -2,35 +2,39 @@ Suspend exclusive database lock when scriptlets get called, allowing
|
|||||||
read access in scriptlets. Only needed for DB_PRIVATE (aka global)
|
read access in scriptlets. Only needed for DB_PRIVATE (aka global)
|
||||||
locking.
|
locking.
|
||||||
|
|
||||||
I hijacked the dbiSync function for this because I did not want
|
--- ./lib/backend/db3.c.orig 2011-05-12 10:24:20.000000000 +0000
|
||||||
to change the ABI.
|
+++ ./lib/backend/db3.c 2011-05-12 10:26:14.000000000 +0000
|
||||||
|
@@ -640,3 +640,59 @@ int dbiOpen(rpmdb rdb, rpmDbiTagVal rpmt
|
||||||
|
|
||||||
--- ./lib/backend/db3.c.orig 2010-03-25 14:35:39.000000000 +0000
|
|
||||||
+++ ./lib/backend/db3.c 2010-03-25 14:44:42.000000000 +0000
|
|
||||||
@@ -208,11 +208,17 @@ errxit:
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int db3SuspendResumeLock(dbiIndex dbi, int mode);
|
|
||||||
+
|
+
|
||||||
static int db3sync(dbiIndex dbi, unsigned int flags)
|
+int dbiSuspendDBLock(dbiIndex dbi, unsigned int flags)
|
||||||
{
|
+{
|
||||||
DB * db = dbi->dbi_db;
|
+ struct flock l;
|
||||||
int rc = 0;
|
+ int rc = 0;
|
||||||
|
+ int fdno = -1;
|
||||||
+ if (flags == (unsigned int)-1)
|
+
|
||||||
+ return db3SuspendResumeLock(dbi, 0);
|
+ if (!dbi->dbi_lockdbfd)
|
||||||
+ if (flags == (unsigned int)-2)
|
+ return 0;
|
||||||
+ return db3SuspendResumeLock(dbi, 1);
|
+ if (!(dbi->dbi_rpmdb->db_mode & (O_RDWR|O_WRONLY)))
|
||||||
if (db != NULL) {
|
+ return 0;
|
||||||
rc = db->sync(db, flags);
|
+ if (_lockdbfd == 0)
|
||||||
rc = cvtdberr(dbi, "db->sync", rc, _debug);
|
+ return 0;
|
||||||
@@ -848,6 +854,48 @@ static int db3open(rpmdb rpmdb, rpmTag r
|
+ if (!(dbi->dbi_db->fd(dbi->dbi_db, &fdno) == 0 && fdno >= 0))
|
||||||
return rc;
|
+ return 1;
|
||||||
}
|
+ memset(&l, 0, sizeof(l));
|
||||||
|
+ l.l_whence = 0;
|
||||||
+static int
|
+ l.l_start = 0;
|
||||||
+db3SuspendResumeLock(dbiIndex dbi, int mode)
|
+ l.l_len = 0;
|
||||||
|
+ l.l_type = F_RDLCK;
|
||||||
|
+ rc = fcntl(fdno, F_SETLK, (void *)&l);
|
||||||
|
+ if (rc)
|
||||||
|
+ rpmlog(RPMLOG_WARNING, _("could not suspend database lock\n"));
|
||||||
|
+ return rc;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int dbiResumeDBLock(dbiIndex dbi, unsigned int flags)
|
||||||
+{
|
+{
|
||||||
+ struct flock l;
|
+ struct flock l;
|
||||||
+ int rc = 0;
|
+ int rc = 0;
|
||||||
@ -39,88 +43,87 @@ to change the ABI.
|
|||||||
+
|
+
|
||||||
+ if (!dbi->dbi_lockdbfd)
|
+ if (!dbi->dbi_lockdbfd)
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ if (!(dbi->dbi_mode & (O_RDWR|O_WRONLY)))
|
+ if (!(dbi->dbi_rpmdb->db_mode & (O_RDWR|O_WRONLY)))
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ if (dbi->dbi_use_dbenv && _lockdbfd == 0)
|
+ if (_lockdbfd == 0)
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ if (!(dbi->dbi_db->fd(dbi->dbi_db, &fdno) == 0 && fdno >= 0))
|
+ if (!(dbi->dbi_db->fd(dbi->dbi_db, &fdno) == 0 && fdno >= 0))
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+ if (mode == 0) {
|
+ for (tries = 0; tries < 2; tries++) {
|
||||||
+ memset(&l, 0, sizeof(l));
|
+ memset(&l, 0, sizeof(l));
|
||||||
+ l.l_whence = 0;
|
+ l.l_whence = 0;
|
||||||
+ l.l_start = 0;
|
+ l.l_start = 0;
|
||||||
+ l.l_len = 0;
|
+ l.l_len = 0;
|
||||||
+ l.l_type = F_RDLCK;
|
+ l.l_type = F_WRLCK;
|
||||||
+ rc = fcntl(fdno, F_SETLK, (void *) &l);
|
+ rc = fcntl(fdno, tries ? F_SETLKW : F_SETLK, (void *)&l);
|
||||||
+ if (rc)
|
+ if (!rc)
|
||||||
+ rpmlog(RPMLOG_WARNING, _("could not suspend database lock\n"));
|
+ break;
|
||||||
+ } else {
|
+ if (tries == 0)
|
||||||
+ for (tries = 0; tries < 2; tries++) {
|
+ rpmlog(RPMLOG_WARNING, _("waiting to reestablish exclusive database lock\n"));
|
||||||
+ memset(&l, 0, sizeof(l));
|
|
||||||
+ l.l_whence = 0;
|
|
||||||
+ l.l_start = 0;
|
|
||||||
+ l.l_len = 0;
|
|
||||||
+ l.l_type = F_WRLCK;
|
|
||||||
+ rc = fcntl(fdno, tries ? F_SETLKW : F_SETLK, (void *) &l);
|
|
||||||
+ if (!rc)
|
|
||||||
+ break;
|
|
||||||
+ if (tries == 0)
|
|
||||||
+ rpmlog(RPMLOG_WARNING, _("waiting to reestablish exclusive database lock\n"));
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
+ return rc;
|
+ return rc;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/** \ingroup db3
|
--- ./lib/backend/dbi.h.orig 2010-12-21 09:48:21.000000000 +0000
|
||||||
*/
|
+++ ./lib/backend/dbi.h 2011-05-12 10:24:57.000000000 +0000
|
||||||
|
@@ -263,6 +263,24 @@ int dbiFlags(dbiIndex dbi);
|
||||||
RPM_GNUC_INTERNAL
|
RPM_GNUC_INTERNAL
|
||||||
--- ./lib/psm.c.orig 2010-03-25 14:43:29.000000000 +0000
|
const char * dbiName(dbiIndex dbi);
|
||||||
+++ ./lib/psm.c 2010-03-25 14:43:41.000000000 +0000
|
|
||||||
@@ -754,6 +754,8 @@ static rpmRC runScript(rpmpsm psm, Heade
|
+/** \ingroup dbi
|
||||||
goto exit;
|
+ * Suspend the exclusive lock on the dbi
|
||||||
}
|
+ * @param dbi index database handle
|
||||||
|
+ * @param flags (unused)
|
||||||
|
+ * @return 0 on success
|
||||||
|
+ */
|
||||||
|
+RPM_GNUC_INTERNAL
|
||||||
|
+int dbiSuspendDBLock(dbiIndex dbi, unsigned int flags);
|
||||||
|
+
|
||||||
|
+/** \ingroup dbi
|
||||||
|
+ * Reacquire an exclusive lock on the dbi
|
||||||
|
+ * @param dbi index database handle
|
||||||
|
+ * @param flags (unused)
|
||||||
|
+ * @return 0 on success
|
||||||
|
+ */
|
||||||
|
+RPM_GNUC_INTERNAL
|
||||||
|
+int dbiResumeDBLock(dbiIndex dbi, unsigned int flags);
|
||||||
|
+
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
--- ./lib/psm.c.orig 2011-05-12 10:23:47.000000000 +0000
|
||||||
|
+++ ./lib/psm.c 2011-05-12 10:24:57.000000000 +0000
|
||||||
|
@@ -412,10 +412,12 @@ static rpmRC runScript(rpmpsm psm, ARGV_
|
||||||
|
script->tag != RPMTAG_VERIFYSCRIPT);
|
||||||
|
int selinux = !(rpmtsFlags(psm->ts) & RPMTRANS_FLAG_NOCONTEXTS);
|
||||||
|
|
||||||
+ rpmtsSuspendResumeDBLock(psm->ts, 0);
|
+ rpmtsSuspendResumeDBLock(psm->ts, 0);
|
||||||
+
|
rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
|
||||||
xx = rpmsqFork(&psm->sq);
|
rc = rpmScriptRun(script, arg1, arg2, rpmtsScriptFd(psm->ts),
|
||||||
if (psm->sq.child == 0) {
|
prefixes, warn_only, selinux);
|
||||||
rpmlog(RPMLOG_DEBUG, "%s: %s\texecv(%s) pid %d\n",
|
rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
|
||||||
@@ -768,6 +770,8 @@ static rpmRC runScript(rpmpsm psm, Heade
|
|
||||||
|
|
||||||
(void) psmWait(psm);
|
|
||||||
|
|
||||||
+ rpmtsSuspendResumeDBLock(psm->ts, 1);
|
+ rpmtsSuspendResumeDBLock(psm->ts, 1);
|
||||||
+
|
|
||||||
if (psm->sq.reaped < 0) {
|
/*
|
||||||
rpmlog(RPMLOG_ERR, _("%s scriptlet failed, waitpid(%d) rc %d: %s\n"),
|
* Notify callback for all errors. "total" abused for warning/error,
|
||||||
sname, psm->sq.child, psm->sq.reaped, strerror(errno));
|
--- ./lib/rpmdb.c.orig 2011-05-12 10:23:47.000000000 +0000
|
||||||
--- ./lib/rpmdb.c.orig 2010-03-25 14:36:57.000000000 +0000
|
+++ ./lib/rpmdb.c 2011-05-12 10:24:57.000000000 +0000
|
||||||
+++ ./lib/rpmdb.c 2010-03-25 14:43:41.000000000 +0000
|
@@ -674,6 +674,12 @@ int rpmdbSync(rpmdb db)
|
||||||
@@ -903,6 +903,21 @@ int rpmdbSync(rpmdb db)
|
return dbiForeach(db->_dbi, dbiSync, 0);
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+int rpmdbSuspendResumeDBLock(rpmdb db, int mode)
|
+int rpmdbSuspendResumeDBLock(rpmdb db, int mode)
|
||||||
+{
|
+{
|
||||||
+ int dbix;
|
|
||||||
+ int rc = 0;
|
|
||||||
+ if (db == NULL) return 0;
|
+ if (db == NULL) return 0;
|
||||||
+ for (dbix = 0; dbix < db->db_ndbi; dbix++) {
|
+ return dbiForeach(db->_dbi, mode ? dbiResumeDBLock : dbiSuspendDBLock, 0);
|
||||||
+ int xx;
|
|
||||||
+ if (db->_dbi[dbix] == NULL)
|
|
||||||
+ continue;
|
|
||||||
+ xx = dbiSync(db->_dbi[dbix], mode ? -2 : -1);
|
|
||||||
+ if (xx && rc == 0) rc = xx;
|
|
||||||
+ }
|
|
||||||
+ return rc;
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/* FIX: dbTemplate structure assignment */
|
static rpmdb newRpmdb(const char * root, const char * home,
|
||||||
static
|
int mode, int perms, int flags)
|
||||||
rpmdb newRpmdb(const char * root,
|
{
|
||||||
--- ./lib/rpmts.c.orig 2009-12-17 09:05:37.000000000 +0000
|
--- ./lib/rpmts.c.orig 2010-12-22 11:17:20.000000000 +0000
|
||||||
+++ ./lib/rpmts.c 2010-03-25 14:43:41.000000000 +0000
|
+++ ./lib/rpmts.c 2011-05-12 10:24:57.000000000 +0000
|
||||||
@@ -89,6 +89,11 @@ int rpmtsOpenDB(rpmts ts, int dbmode)
|
@@ -95,6 +95,11 @@ int rpmtsOpenDB(rpmts ts, int dbmode)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,16 +134,14 @@ to change the ABI.
|
|||||||
+
|
+
|
||||||
int rpmtsInitDB(rpmts ts, int dbmode)
|
int rpmtsInitDB(rpmts ts, int dbmode)
|
||||||
{
|
{
|
||||||
void *lock = rpmtsAcquireLock(ts);
|
rpmlock lock = rpmtsAcquireLock(ts);
|
||||||
--- ./lib/rpmts.h.orig 2009-12-17 09:05:37.000000000 +0000
|
--- ./lib/rpmts.h.orig 2010-12-21 09:50:50.000000000 +0000
|
||||||
+++ ./lib/rpmts.h 2010-03-25 14:43:41.000000000 +0000
|
+++ ./lib/rpmts.h 2011-05-12 10:24:57.000000000 +0000
|
||||||
@@ -469,6 +469,10 @@ rpmdb rpmtsGetRdb(rpmts ts);
|
@@ -423,6 +423,8 @@ rpmdb rpmtsGetRdb(rpmts ts);
|
||||||
void * rpmtsNotify(rpmts ts, rpmte te,
|
void * rpmtsNotify(rpmts ts, rpmte te,
|
||||||
rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total);
|
rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total);
|
||||||
|
|
||||||
+int rpmtsSuspendResumeDBLock(rpmts ts, int mode)
|
+int rpmtsSuspendResumeDBLock(rpmts ts, int mode);
|
||||||
+ /*@globals fileSystem @*/
|
|
||||||
+ /*@modifies fileSystem @*/;
|
|
||||||
+
|
+
|
||||||
/** \ingroup rpmts
|
/** \ingroup rpmts
|
||||||
* Return number of (ordered) transaction set elements.
|
* Return number of (ordered) transaction set elements.
|
||||||
|
@ -1,181 +1,14 @@
|
|||||||
The taggedfileindex patch. Speeds up database searches, but breaks
|
This used to be the taggedfileindex patch, but it's gone.
|
||||||
fingerprint semantics.
|
The remaining part just strips off the tag.
|
||||||
rh#103204
|
--- ./lib/rpmdb.c.orig 2011-05-11 14:27:32.000000000 +0000
|
||||||
|
+++ ./lib/rpmdb.c 2011-05-11 15:14:39.000000000 +0000
|
||||||
--- ./lib/rpmdb.c.orig 2010-03-25 14:43:41.000000000 +0000
|
@@ -257,6 +257,9 @@ static int dbt2set(dbiIndex dbi, DBT * d
|
||||||
+++ ./lib/rpmdb.c 2010-03-25 15:15:14.000000000 +0000
|
_DBSWAP(hdrNum);
|
||||||
@@ -1122,6 +1122,16 @@ int rpmdbVerify(const char * prefix)
|
_DBSWAP(tagNum);
|
||||||
return rc;
|
}
|
||||||
}
|
+ /* remove tagged directory info */
|
||||||
|
+ if (tagNum.ui & 0x80000000)
|
||||||
+static inline unsigned int taghash(const char *s)
|
+ tagNum.ui &= 0x0000ffff;
|
||||||
+{
|
set->recs[i].hdrNum = hdrNum.ui;
|
||||||
+ int c;
|
set->recs[i].tagNum = tagNum.ui;
|
||||||
+ unsigned int r = 0;
|
|
||||||
+ while ((c = *(const unsigned char *)s++) != 0)
|
|
||||||
+ if (c != '/')
|
|
||||||
+ r += (r << 3) + c;
|
|
||||||
+ return ((r & 0x7fff) | 0x8000) << 16;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Find file matches in database.
|
|
||||||
* @param db rpm database
|
|
||||||
@@ -1181,6 +1191,11 @@ static int rpmdbFindByFile(rpmdb db, con
|
|
||||||
if (rc == 0)
|
|
||||||
(void) dbt2set(dbi, data, &allMatches);
|
|
||||||
|
|
||||||
+ /* strip off directory tags */
|
|
||||||
+ if (allMatches != NULL)
|
|
||||||
+ for (i = 0; i < allMatches->count; i++)
|
|
||||||
+ if (allMatches->recs[i].tagNum & 0x80000000)
|
|
||||||
+ allMatches->recs[i].tagNum &= 0x0000ffff;
|
|
||||||
xx = dbiCclose(dbi, dbcursor, 0);
|
|
||||||
dbcursor = NULL;
|
|
||||||
} else
|
|
||||||
@@ -2182,7 +2197,7 @@ void rpmdbSortIterator(rpmdbMatchIterato
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int rpmdbGrowIterator(rpmdbMatchIterator mi)
|
|
||||||
+static int rpmdbGrowIterator(rpmdbMatchIterator mi, unsigned int tag)
|
|
||||||
{
|
|
||||||
DBC * dbcursor;
|
|
||||||
DBT * key;
|
|
||||||
@@ -2232,6 +2247,27 @@ static int rpmdbGrowIterator(rpmdbMatchI
|
|
||||||
dbcursor = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ if (tag) {
|
|
||||||
+ int i, j;
|
|
||||||
+ /* prune the set against the tag */
|
|
||||||
+ for (i = j = 0; i < set->count; i++) {
|
|
||||||
+ if (set->recs[i].tagNum & 0x80000000) {
|
|
||||||
+ /* tagged entry */
|
|
||||||
+ if ((set->recs[i].tagNum & 0xffff0000) != tag)
|
|
||||||
+ continue;
|
|
||||||
+ set->recs[i].tagNum &= 0x0000ffff;
|
|
||||||
+ }
|
|
||||||
+ if (i != j)
|
|
||||||
+ set->recs[j] = set->recs[i];
|
|
||||||
+ j++;
|
|
||||||
+ }
|
|
||||||
+ set->count = j;
|
|
||||||
+ if (j == 0) {
|
|
||||||
+ set = dbiFreeIndexSet(set);
|
|
||||||
+ return DB_NOTFOUND;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (mi->mi_set == NULL) {
|
|
||||||
mi->mi_set = set;
|
|
||||||
} else {
|
|
||||||
@@ -2413,7 +2449,15 @@ int rpmdbExtendIterator(rpmdbMatchIterat
|
|
||||||
{
|
|
||||||
mi->mi_key.data = (void *) keyp;
|
|
||||||
mi->mi_key.size = keylen ? keylen : strlen(keyp);
|
|
||||||
- return rpmdbGrowIterator(mi);
|
|
||||||
+ return rpmdbGrowIterator(mi, 0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int rpmdbExtendIteratorDirtag(rpmdbMatchIterator mi,
|
|
||||||
+ const void * keyp, size_t keylen, const char *dirname)
|
|
||||||
+{
|
|
||||||
+ mi->mi_key.data = (void *) keyp;
|
|
||||||
+ mi->mi_key.size = keylen ? keylen : strlen(keyp);
|
|
||||||
+ return rpmdbGrowIterator(mi, dirname ? taghash(dirname) : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -2808,8 +2852,16 @@ int rpmdbAdd(rpmdb db, int iid, Header h
|
|
||||||
|
|
||||||
if (hdrNum)
|
|
||||||
{
|
|
||||||
+ struct rpmtd_s dn, di;
|
|
||||||
+ const char ** dirNames;
|
|
||||||
+ uint32_t * dirIndexes;
|
|
||||||
dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0);
|
|
||||||
|
|
||||||
+ headerGet(h, RPMTAG_DIRNAMES, &dn, HEADERGET_MINMEM);
|
|
||||||
+ headerGet(h, RPMTAG_DIRINDEXES, &di, HEADERGET_MINMEM);
|
|
||||||
+ dirNames = dn.data;
|
|
||||||
+ dirIndexes = di.data;
|
|
||||||
+
|
|
||||||
if (dbiTags.tags != NULL)
|
|
||||||
for (dbix = 0; dbix < dbiTags.max; dbix++) {
|
|
||||||
rpmTag rpmtag;
|
|
||||||
@@ -2901,6 +2953,10 @@ int rpmdbAdd(rpmdb db, int iid, Header h
|
|
||||||
*/
|
|
||||||
i = rec->tagNum = rpmtdGetIndex(&tagdata);
|
|
||||||
switch (rpmtag) {
|
|
||||||
+ case RPMTAG_BASENAMES:
|
|
||||||
+ if (i < 0x010000)
|
|
||||||
+ rec->tagNum |= taghash(dirNames[dirIndexes[i]]);
|
|
||||||
+ break;
|
|
||||||
case RPMTAG_REQUIRENAME: {
|
|
||||||
/* Filter out install prerequisites. */
|
|
||||||
rpm_flag_t *rflag = rpmtdNextUint32(&reqflags);
|
|
||||||
@@ -2986,6 +3042,9 @@ cont:
|
|
||||||
if (ret == 0) {
|
|
||||||
headerSetInstance(h, hdrNum);
|
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+ rpmtdFreeData(&dn);
|
|
||||||
+ rpmtdFreeData(&di);
|
|
||||||
}
|
|
||||||
|
|
||||||
exit:
|
|
||||||
--- ./lib/rpmdb_internal.h.orig 2009-12-07 14:36:49.000000000 +0000
|
|
||||||
+++ ./lib/rpmdb_internal.h 2010-03-25 15:14:38.000000000 +0000
|
|
||||||
@@ -542,6 +542,9 @@ const char *rpmdbHome(rpmdb db);
|
|
||||||
int rpmdbExtendIterator(rpmdbMatchIterator mi,
|
|
||||||
const void * keyp, size_t keylen);
|
|
||||||
|
|
||||||
+int rpmdbExtendIteratorDirtag(rpmdbMatchIterator mi,
|
|
||||||
+ const void * keyp, size_t keylen, const char *);
|
|
||||||
+
|
|
||||||
/** \ingroup rpmdb
|
|
||||||
* sort the iterator by (recnum, filenum)
|
|
||||||
* Return database iterator.
|
|
||||||
--- ./lib/transaction.c.orig 2010-03-25 14:38:27.000000000 +0000
|
|
||||||
+++ ./lib/transaction.c 2010-03-25 15:14:38.000000000 +0000
|
|
||||||
@@ -848,9 +848,12 @@ rpmdbMatchIterator rpmFindBaseNamesInDB(
|
|
||||||
rpmdbMatchIterator mi;
|
|
||||||
int xx;
|
|
||||||
const char * baseName;
|
|
||||||
+ const char * dirName;
|
|
||||||
|
|
||||||
+#if 0
|
|
||||||
rpmStringSet baseNames = rpmStringSetCreate(fileCount,
|
|
||||||
hashFunctionString, strcmp, NULL);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
mi = rpmdbInitIterator(rpmtsGetRdb(ts), RPMTAG_BASENAMES, NULL, 0);
|
|
||||||
|
|
||||||
@@ -868,18 +871,25 @@ rpmdbMatchIterator rpmFindBaseNamesInDB(
|
|
||||||
while (rpmfiNext(fi) >= 0) {
|
|
||||||
size_t keylen;
|
|
||||||
baseName = rpmfiBN(fi);
|
|
||||||
+ dirName = rpmfiDN(fi);
|
|
||||||
+#if 0
|
|
||||||
if (rpmStringSetHasEntry(baseNames, baseName))
|
|
||||||
continue;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
keylen = strlen(baseName);
|
|
||||||
if (keylen == 0)
|
|
||||||
keylen++; /* XXX "/" fixup. */
|
|
||||||
- xx = rpmdbExtendIterator(mi, baseName, keylen);
|
|
||||||
+ xx = rpmdbExtendIteratorDirtag(mi, baseName, keylen, dirName);
|
|
||||||
+#if 0
|
|
||||||
rpmStringSetAddEntry(baseNames, baseName);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pi = rpmtsiFree(pi);
|
|
||||||
+#if 0
|
|
||||||
rpmStringSetFree(baseNames);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
rpmdbSortIterator(mi);
|
|
||||||
/* iterator is now sorted by (recnum, filenum) */
|
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
--- ./build.c.orig 2010-04-07 14:56:36.000000000 +0000
|
|
||||||
+++ ./build.c 2010-04-07 14:58:52.000000000 +0000
|
|
||||||
@@ -126,7 +126,13 @@ static char * getTarSpec(const char *arg
|
|
||||||
if (!(fp = popen(cmd, "r"))) {
|
|
||||||
rpmlog(RPMLOG_ERR, _("Failed to open tar pipe: %m\n"));
|
|
||||||
} else {
|
|
||||||
- char *fok = fgets(tarbuf, sizeof(tarbuf) - 1, fp);
|
|
||||||
+ char *fok;
|
|
||||||
+ for (;;) {
|
|
||||||
+ fok = fgets(tarbuf, sizeof(tarbuf) - 1, fp);
|
|
||||||
+ /* tar sometimes prints "tar: Record size = 16" messages */
|
|
||||||
+ if (!fok || strncmp(fok, "tar: ", 5) != 0)
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
pclose(fp);
|
|
||||||
gotspec = (fok != NULL) && isSpecFile(tmpSpecFile);
|
|
||||||
}
|
|
49
verify_p.diff
Normal file
49
verify_p.diff
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Make 'rpm -Vp <rpm>' work again.
|
||||||
|
|
||||||
|
--- ./lib/rpmte.c.orig 2011-05-12 15:22:06.000000000 +0000
|
||||||
|
+++ ./lib/rpmte.c 2011-05-12 15:23:39.000000000 +0000
|
||||||
|
@@ -905,15 +905,19 @@ int rpmteProcess(rpmte te, pkgGoal goal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- rpmteRunAllCollections(te, PLUGINHOOK_COLL_PRE_REMOVE);
|
||||||
|
-
|
||||||
|
- if (rpmteOpen(te, reset_fi)) {
|
||||||
|
+ if (goal == PKG_VERIFY) {
|
||||||
|
failed = rpmpsmRun(te->ts, te, goal);
|
||||||
|
- rpmteClose(te, reset_fi);
|
||||||
|
- }
|
||||||
|
+ } else {
|
||||||
|
+ rpmteRunAllCollections(te, PLUGINHOOK_COLL_PRE_REMOVE);
|
||||||
|
+
|
||||||
|
+ if (rpmteOpen(te, reset_fi)) {
|
||||||
|
+ failed = rpmpsmRun(te->ts, te, goal);
|
||||||
|
+ rpmteClose(te, reset_fi);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- rpmteRunAllCollections(te, PLUGINHOOK_COLL_POST_ADD);
|
||||||
|
- rpmteRunAllCollections(te, PLUGINHOOK_COLL_POST_ANY);
|
||||||
|
+ rpmteRunAllCollections(te, PLUGINHOOK_COLL_POST_ADD);
|
||||||
|
+ rpmteRunAllCollections(te, PLUGINHOOK_COLL_POST_ANY);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* XXX should %pretrans failure fail the package install? */
|
||||||
|
if (failed && !scriptstage) {
|
||||||
|
--- ./lib/verify.c.orig 2011-05-12 15:22:01.000000000 +0000
|
||||||
|
+++ ./lib/verify.c 2011-05-12 15:22:49.000000000 +0000
|
||||||
|
@@ -267,11 +267,11 @@ static int rpmVerifyScript(rpmts ts, Hea
|
||||||
|
|
||||||
|
if (headerIsEntry(h, RPMTAG_VERIFYSCRIPT)) {
|
||||||
|
/* fake up a erasure transaction element */
|
||||||
|
- (void) rpmtsAddEraseElement(ts, h, -1);
|
||||||
|
-
|
||||||
|
- rc = (rpmteProcess(rpmtsElement(ts, 0), PKG_VERIFY) != RPMRC_OK);
|
||||||
|
-
|
||||||
|
+ rpmte p = rpmteNew(ts, h, TR_REMOVED, NULL, NULL);
|
||||||
|
+ rpmteSetHeader(p, h);
|
||||||
|
+ rc = (rpmteProcess(p, PKG_VERIFY) != RPMRC_OK);
|
||||||
|
/* clean up our fake transaction bits */
|
||||||
|
+ rpmteFree(p);
|
||||||
|
rpmtsEmpty(ts);
|
||||||
|
}
|
||||||
|
|
167
waitlock.diff
167
waitlock.diff
@ -1,97 +1,104 @@
|
|||||||
Fix global (DB_PRIVATE) lock code: fix recursion counter, retry
|
Fix global (DB_PRIVATE) lock code: fix recursion counter, retry
|
||||||
failed lock operations for up to 3 minutes.
|
failed lock operations for up to 3 minutes.
|
||||||
|
|
||||||
--- ./lib/backend/db3.c.orig 2010-03-25 14:44:42.000000000 +0000
|
--- ./lib/backend/db3.c.orig 2011-03-02 06:40:10.000000000 +0000
|
||||||
+++ ./lib/backend/db3.c 2010-03-25 14:52:05.000000000 +0000
|
+++ ./lib/backend/db3.c 2011-05-12 10:24:20.000000000 +0000
|
||||||
@@ -394,6 +394,8 @@ static int db3stat(dbiIndex dbi, unsigne
|
@@ -432,6 +432,8 @@ int dbiVerify(dbiIndex dbi, unsigned int
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int _lockdbfd = 0;
|
+static int _lockdbfd = 0;
|
||||||
+
|
+
|
||||||
static int db3close(dbiIndex dbi, unsigned int flags)
|
int dbiClose(dbiIndex dbi, unsigned int flags)
|
||||||
{
|
{
|
||||||
rpmdb rpmdb = dbi->dbi_rpmdb;
|
rpmdb rdb = dbi->dbi_rpmdb;
|
||||||
@@ -414,6 +416,9 @@ static int db3close(dbiIndex dbi, unsign
|
@@ -451,6 +453,8 @@ int dbiClose(dbiIndex dbi, unsigned int
|
||||||
|
|
||||||
rpmlog(RPMLOG_DEBUG, "closed db index %s/%s\n",
|
rpmlog(RPMLOG_DEBUG, "closed db index %s/%s\n",
|
||||||
dbhome, dbi->dbi_file);
|
dbhome, dbi->dbi_file);
|
||||||
|
+ if (dbi->dbi_lockdbfd && _lockdbfd)
|
||||||
+ if (dbi->dbi_lockdbfd &&
|
|
||||||
+ _lockdbfd)
|
|
||||||
+ _lockdbfd--;
|
+ _lockdbfd--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rpmdb->db_dbenv != NULL && dbi->dbi_use_dbenv) {
|
xx = db_fini(rdb, dbhome ? dbhome : "");
|
||||||
@@ -645,8 +651,6 @@ static int db3open(rpmdb rpmdb, rpmTag r
|
@@ -490,6 +494,7 @@ static int dbiFlock(dbiIndex dbi, int mo
|
||||||
}
|
rc = 1;
|
||||||
|
} else {
|
||||||
|
const char *dbhome = rpmdbHome(dbi->dbi_rpmdb);
|
||||||
|
+ int tries;
|
||||||
|
struct flock l;
|
||||||
|
memset(&l, 0, sizeof(l));
|
||||||
|
l.l_whence = 0;
|
||||||
|
@@ -499,20 +504,38 @@ static int dbiFlock(dbiIndex dbi, int mo
|
||||||
|
? F_RDLCK : F_WRLCK;
|
||||||
|
l.l_pid = 0;
|
||||||
|
|
||||||
if (rc == 0) {
|
- rc = fcntl(fdno, F_SETLK, (void *) &l);
|
||||||
- static int _lockdbfd = 0;
|
- if (rc) {
|
||||||
-
|
- uint32_t eflags = db_envflags(db);
|
||||||
rc = db_create(&db, dbenv, dbi->dbi_cflags);
|
- /* Warning iff using non-private CDB locking. */
|
||||||
rc = cvtdberr(dbi, "db_create", rc, _debug);
|
- rc = (((eflags & DB_INIT_CDB) && !(eflags & DB_PRIVATE)) ? 0 : 1);
|
||||||
if (rc == 0 && db != NULL) {
|
- rpmlog( (rc ? RPMLOG_ERR : RPMLOG_WARNING),
|
||||||
@@ -810,6 +814,7 @@ static int db3open(rpmdb rpmdb, rpmTag r
|
- _("cannot get %s lock on %s/%s\n"),
|
||||||
if (!(db->fd(db, &fdno) == 0 && fdno >= 0)) {
|
- ((mode & O_ACCMODE) == O_RDONLY)
|
||||||
rc = 1;
|
- ? _("shared") : _("exclusive"),
|
||||||
} else {
|
- dbhome, dbi->dbi_file);
|
||||||
+ int tries;
|
- } else {
|
||||||
struct flock l;
|
- rpmlog(RPMLOG_DEBUG,
|
||||||
memset(&l, 0, sizeof(l));
|
- "locked db index %s/%s\n",
|
||||||
l.l_whence = 0;
|
- dbhome, dbi->dbi_file);
|
||||||
@@ -819,24 +824,39 @@ static int db3open(rpmdb rpmdb, rpmTag r
|
+ for (tries = 0; ; tries++) {
|
||||||
? F_RDLCK : F_WRLCK;
|
+ rc = fcntl(fdno, F_SETLK, (void *) &l);
|
||||||
l.l_pid = 0;
|
+ if (rc) {
|
||||||
|
+ uint32_t eflags = db_envflags(db);
|
||||||
- rc = fcntl(fdno, F_SETLK, (void *) &l);
|
+ /* Warning iff using non-private CDB locking. */
|
||||||
- if (rc) {
|
+ rc = (((eflags & DB_INIT_CDB) && !(eflags & DB_PRIVATE)) ? 0 : 1);
|
||||||
- /* Warning iff using non-private CDB locking. */
|
+ if (errno == EAGAIN && rc) {
|
||||||
- rc = ((dbi->dbi_use_dbenv &&
|
+ struct timespec ts;
|
||||||
- (dbi->dbi_eflags & DB_INIT_CDB) &&
|
+ if (tries == 0)
|
||||||
- !(dbi->dbi_eflags & DB_PRIVATE))
|
+ rpmlog(RPMLOG_WARNING,
|
||||||
- ? 0 : 1);
|
+ _("waiting for %s lock on %s/%s\n"),
|
||||||
- rpmlog( (rc ? RPMLOG_ERR : RPMLOG_WARNING),
|
+ ((mode & O_ACCMODE) == O_RDONLY)
|
||||||
- _("cannot get %s lock on %s/%s\n"),
|
+ ? _("shared") : _("exclusive"),
|
||||||
- ((dbi->dbi_mode & O_ACCMODE) == O_RDONLY)
|
+ dbhome, dbi->dbi_file);
|
||||||
- ? _("shared") : _("exclusive"),
|
+ ts.tv_sec = (time_t)0;
|
||||||
- dbhome, dbi->dbi_file);
|
+ ts.tv_nsec = 100000000; /* .1 seconds */
|
||||||
- } else {
|
+ if (tries < 10*60*3) { /* 3 minutes */
|
||||||
- rpmlog(RPMLOG_DEBUG,
|
+ nanosleep(&ts, (struct timespec *)0);
|
||||||
- "locked db index %s/%s\n",
|
+ continue;
|
||||||
- dbhome, dbi->dbi_file);
|
+ }
|
||||||
+ for (tries = 0; ; tries++) {
|
+ }
|
||||||
+ rc = fcntl(fdno, F_SETLK, (void *) &l);
|
+ rpmlog( (rc ? RPMLOG_ERR : RPMLOG_WARNING),
|
||||||
+ if (rc) {
|
+ _("cannot get %s lock on %s/%s\n"),
|
||||||
+ rc = ((dbi->dbi_use_dbenv &&
|
+ ((mode & O_ACCMODE) == O_RDONLY)
|
||||||
+ (dbi->dbi_eflags & DB_INIT_CDB) &&
|
+ ? _("shared") : _("exclusive"),
|
||||||
+ !(dbi->dbi_eflags & DB_PRIVATE))
|
+ dbhome, dbi->dbi_file);
|
||||||
+ ? 0 : 1);
|
+ } else {
|
||||||
+ if (errno == EAGAIN && rc) {
|
+ rpmlog(RPMLOG_DEBUG,
|
||||||
+ struct timespec ts;
|
+ "locked db index %s/%s\n",
|
||||||
+ if (tries == 0)
|
+ dbhome, dbi->dbi_file);
|
||||||
+ rpmlog(RPMLOG_WARNING, _("waiting for %s lock on %s/%s\n"), ((dbi->dbi_mode & (O_RDWR|O_WRONLY)) ? _("exclusive") : _("shared")), dbhome, dbi->dbi_file);
|
+ }
|
||||||
+ ts.tv_sec = (time_t)0;
|
+ break;
|
||||||
+ ts.tv_nsec = 100000000;
|
|
||||||
+ if (tries < 10*60*3) {
|
|
||||||
+ nanosleep(&ts, (struct timespec *)0);
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ rpmlog( (rc ? RPMLOG_ERR : RPMLOG_WARNING),
|
|
||||||
+ _("cannot get %s lock on %s/%s\n"),
|
|
||||||
+ ((dbi->dbi_mode & O_ACCMODE) == O_RDONLY)
|
|
||||||
+ ? _("shared") : _("exclusive"),
|
|
||||||
+ dbhome, dbi->dbi_file);
|
|
||||||
+ } else {
|
|
||||||
+ rpmlog(RPMLOG_DEBUG,
|
|
||||||
+ "locked db index %s/%s\n",
|
|
||||||
+ dbhome, dbi->dbi_file);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ if (rc && dbi->dbi_use_dbenv)
|
|
||||||
+ _lockdbfd--;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return rc;
|
||||||
|
@@ -529,7 +552,6 @@ int dbiOpen(rpmdb rdb, rpmDbiTagVal rpmt
|
||||||
|
DB * db = NULL;
|
||||||
|
DBTYPE dbtype = DB_UNKNOWN;
|
||||||
|
uint32_t oflags;
|
||||||
|
- static int _lockdbfd = 0;
|
||||||
|
|
||||||
|
if (dbip)
|
||||||
|
*dbip = NULL;
|
||||||
|
@@ -603,7 +625,10 @@ int dbiOpen(rpmdb rdb, rpmDbiTagVal rpmt
|
||||||
|
dbi->dbi_db = db;
|
||||||
|
dbi->dbi_oflags = oflags;
|
||||||
|
|
||||||
|
- if (!verifyonly && rc == 0 && dbi->dbi_lockdbfd && _lockdbfd++ == 0) {
|
||||||
|
+ if (verifyonly)
|
||||||
|
+ dbi->dbi_lockdbfd = 0; /* disable locking in verify mode */
|
||||||
|
+
|
||||||
|
+ if (rc == 0 && dbi->dbi_lockdbfd && _lockdbfd++ == 0) {
|
||||||
|
rc = dbiFlock(dbi, rdb->db_mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
169
weakdeps.diff
169
weakdeps.diff
@ -14,27 +14,18 @@ B) use RPMSENSE_STRONG to support a "strong" version, "Recommends"
|
|||||||
|
|
||||||
Needs extcond.diff for query operations.
|
Needs extcond.diff for query operations.
|
||||||
|
|
||||||
--- ./build/parsePreamble.c.orig 2009-12-17 09:05:55.000000000 +0000
|
--- ./build/parsePreamble.c.orig 2011-01-25 13:52:28.000000000 +0000
|
||||||
+++ ./build/parsePreamble.c 2010-03-25 14:56:24.000000000 +0000
|
+++ ./build/parsePreamble.c 2011-05-11 14:09:07.000000000 +0000
|
||||||
@@ -124,6 +124,8 @@ static struct tokenBits_s const installS
|
@@ -310,6 +310,8 @@ static struct tokenBits_s const installS
|
||||||
{ "post", RPMSENSE_SCRIPT_POST },
|
|
||||||
{ "rpmlib", RPMSENSE_RPMLIB },
|
|
||||||
{ "verify", RPMSENSE_SCRIPT_VERIFY },
|
{ "verify", RPMSENSE_SCRIPT_VERIFY },
|
||||||
+ { "hint", RPMSENSE_MISSINGOK },
|
{ "pretrans", RPMSENSE_PRETRANS },
|
||||||
+ { "strong", RPMSENSE_STRONG },
|
{ "posttrans", RPMSENSE_POSTTRANS },
|
||||||
|
+ { "hint", RPMSENSE_MISSINGOK },
|
||||||
|
+ { "strong", RPMSENSE_STRONG },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -134,6 +136,8 @@ static const struct tokenBits_s const bu
|
@@ -790,6 +792,18 @@ static int handlePreambleTag(rpmSpec spe
|
||||||
{ "build", RPMSENSE_SCRIPT_BUILD },
|
|
||||||
{ "install", RPMSENSE_SCRIPT_INSTALL },
|
|
||||||
{ "clean", RPMSENSE_SCRIPT_CLEAN },
|
|
||||||
+ { "hint", RPMSENSE_MISSINGOK },
|
|
||||||
+ { "strong", RPMSENSE_STRONG },
|
|
||||||
{ NULL, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -649,6 +653,18 @@ static int handlePreambleTag(rpmSpec spe
|
|
||||||
if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
|
if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
|
||||||
return rc;
|
return rc;
|
||||||
break;
|
break;
|
||||||
@ -53,10 +44,10 @@ Needs extcond.diff for query operations.
|
|||||||
case RPMTAG_EXCLUDEARCH:
|
case RPMTAG_EXCLUDEARCH:
|
||||||
case RPMTAG_EXCLUSIVEARCH:
|
case RPMTAG_EXCLUSIVEARCH:
|
||||||
case RPMTAG_EXCLUDEOS:
|
case RPMTAG_EXCLUDEOS:
|
||||||
@@ -748,6 +764,14 @@ static struct PreambleRec_s const preamb
|
@@ -895,6 +909,14 @@ static struct PreambleRec_s const preamb
|
||||||
{RPMTAG_DOCDIR, 0, 0, LEN_AND_STR("docdir")},
|
|
||||||
{RPMTAG_DISTTAG, 0, 0, LEN_AND_STR("disttag")},
|
|
||||||
{RPMTAG_BUGURL, 0, 0, LEN_AND_STR("bugurl")},
|
{RPMTAG_BUGURL, 0, 0, LEN_AND_STR("bugurl")},
|
||||||
|
{RPMTAG_COLLECTIONS, 0, 0, LEN_AND_STR("collections")},
|
||||||
|
{RPMTAG_ORDERFLAGS, 2, 0, LEN_AND_STR("orderwithrequires")},
|
||||||
+ {RPMTAG_SUGGESTSFLAGS, 0, 0, LEN_AND_STR("recommends")},
|
+ {RPMTAG_SUGGESTSFLAGS, 0, 0, LEN_AND_STR("recommends")},
|
||||||
+ {RPMTAG_SUGGESTSFLAGS, 0, 0, LEN_AND_STR("suggests")},
|
+ {RPMTAG_SUGGESTSFLAGS, 0, 0, LEN_AND_STR("suggests")},
|
||||||
+ {RPMTAG_ENHANCESFLAGS, 0, 0, LEN_AND_STR("supplements")},
|
+ {RPMTAG_ENHANCESFLAGS, 0, 0, LEN_AND_STR("supplements")},
|
||||||
@ -68,45 +59,51 @@ Needs extcond.diff for query operations.
|
|||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
--- ./build/parseReqs.c.orig 2009-12-17 09:05:55.000000000 +0000
|
--- ./build/parseReqs.c.orig 2010-12-13 14:01:56.000000000 +0000
|
||||||
+++ ./build/parseReqs.c 2010-03-25 14:53:47.000000000 +0000
|
+++ ./build/parseReqs.c 2011-05-11 14:16:43.000000000 +0000
|
||||||
@@ -85,6 +85,14 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
|
@@ -95,6 +95,20 @@ rpmRC parseRCPOT(rpmSpec spec, Package p
|
||||||
tagflags |= RPMSENSE_ANY;
|
nametag = RPMTAG_CONFLICTNAME;
|
||||||
h = spec->buildRestrictions;
|
h = spec->buildRestrictions;
|
||||||
break;
|
break;
|
||||||
+ case RPMTAG_SUGGESTSFLAGS:
|
+ case RPMTAG_SUGGESTSFLAGS:
|
||||||
|
+ nametag = RPMTAG_SUGGESTSNAME;
|
||||||
|
+ break;
|
||||||
+ case RPMTAG_ENHANCESFLAGS:
|
+ case RPMTAG_ENHANCESFLAGS:
|
||||||
+ h = pkg->header;
|
+ nametag = RPMTAG_ENHANCESNAME;
|
||||||
+ break;
|
+ break;
|
||||||
+ case RPMTAG_BUILDSUGGESTS:
|
+ case RPMTAG_BUILDSUGGESTS:
|
||||||
|
+ nametag = RPMTAG_SUGGESTSNAME;
|
||||||
|
+ h = spec->buildRestrictions;
|
||||||
|
+ break;
|
||||||
+ case RPMTAG_BUILDENHANCES:
|
+ case RPMTAG_BUILDENHANCES:
|
||||||
+ h = spec->buildRestrictions;
|
+ nametag = RPMTAG_ENHANCESNAME;
|
||||||
+ break;
|
+ h = spec->buildRestrictions;
|
||||||
default:
|
+ break;
|
||||||
case RPMTAG_REQUIREFLAGS:
|
}
|
||||||
tagflags |= RPMSENSE_ANY;
|
|
||||||
--- ./build/reqprov.c.orig 2009-12-07 14:36:49.000000000 +0000
|
for (r = field; *r != '\0'; r = re) {
|
||||||
+++ ./build/reqprov.c 2010-03-25 14:53:47.000000000 +0000
|
--- ./build/reqprov.c.orig 2010-12-13 14:01:56.000000000 +0000
|
||||||
@@ -75,6 +75,16 @@ int addReqProv(rpmSpec spec, Header h, r
|
+++ ./build/reqprov.c 2011-05-11 14:15:02.000000000 +0000
|
||||||
flagtag = RPMTAG_TRIGGERFLAGS;
|
@@ -75,6 +75,16 @@ int addReqProv(Header h, rpmTagVal tagN,
|
||||||
indextag = RPMTAG_TRIGGERINDEX;
|
indextag = RPMTAG_TRIGGERINDEX;
|
||||||
extra = Flags & RPMSENSE_TRIGGER;
|
extra = Flags & RPMSENSE_TRIGGER;
|
||||||
+ } else if (tagN == RPMTAG_SUGGESTSFLAGS || tagN == RPMTAG_BUILDSUGGESTS) {
|
break;
|
||||||
+ nametag = RPMTAG_SUGGESTSNAME;
|
+ case RPMTAG_SUGGESTSNAME:
|
||||||
+ versiontag = RPMTAG_SUGGESTSVERSION;
|
+ versiontag = RPMTAG_SUGGESTSVERSION;
|
||||||
+ flagtag = RPMTAG_SUGGESTSFLAGS;
|
+ flagtag = RPMTAG_SUGGESTSFLAGS;
|
||||||
+ extra = Flags & _ALL_REQUIRES_MASK;
|
+ extra = Flags & _ALL_REQUIRES_MASK;
|
||||||
+ } else if (tagN == RPMTAG_ENHANCESFLAGS || tagN == RPMTAG_BUILDENHANCES) {
|
+ break;
|
||||||
+ nametag = RPMTAG_ENHANCESNAME;
|
+ case RPMTAG_ENHANCESNAME:
|
||||||
+ versiontag = RPMTAG_ENHANCESVERSION;
|
+ versiontag = RPMTAG_ENHANCESVERSION;
|
||||||
+ flagtag = RPMTAG_ENHANCESFLAGS;
|
+ flagtag = RPMTAG_ENHANCESFLAGS;
|
||||||
+ extra = Flags & _ALL_REQUIRES_MASK;
|
+ extra = Flags & _ALL_REQUIRES_MASK;
|
||||||
} else {
|
+ break;
|
||||||
nametag = RPMTAG_REQUIRENAME;
|
case RPMTAG_REQUIRENAME:
|
||||||
versiontag = RPMTAG_REQUIREVERSION;
|
default:
|
||||||
--- ./build/rpmfc.c.orig 2009-12-09 13:37:25.000000000 +0000
|
tagN = RPMTAG_REQUIRENAME;
|
||||||
+++ ./build/rpmfc.c 2010-03-25 14:53:47.000000000 +0000
|
--- ./build/rpmfc.c.orig 2011-02-28 09:57:21.000000000 +0000
|
||||||
@@ -1405,6 +1405,12 @@ static struct DepMsg_s depMsgs[] = {
|
+++ ./build/rpmfc.c 2011-05-11 13:58:33.000000000 +0000
|
||||||
|
@@ -1075,6 +1075,12 @@ static struct DepMsg_s depMsgs[] = {
|
||||||
{ "Obsoletes", { "%{?__find_obsoletes}", NULL, NULL, NULL },
|
{ "Obsoletes", { "%{?__find_obsoletes}", NULL, NULL, NULL },
|
||||||
RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS,
|
RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS,
|
||||||
0, -1 },
|
0, -1 },
|
||||||
@ -119,7 +116,7 @@ Needs extcond.diff for query operations.
|
|||||||
{ NULL, { NULL, NULL, NULL, NULL }, 0, 0, 0, 0, 0 }
|
{ NULL, { NULL, NULL, NULL, NULL }, 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1490,6 +1496,14 @@ static int rpmfcGenerateDependsHelper(co
|
@@ -1160,6 +1166,14 @@ static rpmRC rpmfcGenerateDependsHelper(
|
||||||
failnonzero = 0;
|
failnonzero = 0;
|
||||||
tagflags = RPMSENSE_FIND_REQUIRES;
|
tagflags = RPMSENSE_FIND_REQUIRES;
|
||||||
break;
|
break;
|
||||||
@ -134,9 +131,9 @@ Needs extcond.diff for query operations.
|
|||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
--- ./lib/formats.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./lib/formats.c.orig 2011-01-25 13:52:28.000000000 +0000
|
||||||
+++ ./lib/formats.c 2010-03-25 15:00:15.000000000 +0000
|
+++ ./lib/formats.c 2011-05-11 14:02:09.000000000 +0000
|
||||||
@@ -601,6 +601,24 @@ static char * depflagsFormat(rpmtd td, c
|
@@ -560,6 +560,24 @@ static char * depflagsFormat(rpmtd td, c
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,16 +158,17 @@ Needs extcond.diff for query operations.
|
|||||||
/**
|
/**
|
||||||
* Return tag container array size.
|
* Return tag container array size.
|
||||||
* @param td tag data container
|
* @param td tag data container
|
||||||
@@ -738,5 +756,6 @@ static const struct headerFormatFunc_s r
|
@@ -672,6 +690,7 @@ static const struct headerFormatFunc_s r
|
||||||
{ RPMTD_FORMAT_ARRAYSIZE, "arraysize", arraysizeFormat },
|
|
||||||
{ RPMTD_FORMAT_FSTATE, "fstate", fstateFormat },
|
|
||||||
{ RPMTD_FORMAT_VFLAGS, "vflags", vflagsFormat },
|
{ RPMTD_FORMAT_VFLAGS, "vflags", vflagsFormat },
|
||||||
|
{ RPMTD_FORMAT_EXPAND, "expand", expandFormat },
|
||||||
|
{ RPMTD_FORMAT_FSTATUS, "fstatus", fstatusFormat },
|
||||||
+ { RPMTD_FORMAT_DEPFLAG_STRONG, "depflag_strong", depflag_strongFormat },
|
+ { RPMTD_FORMAT_DEPFLAG_STRONG, "depflag_strong", depflag_strongFormat },
|
||||||
{ -1, NULL, NULL }
|
{ -1, NULL, NULL }
|
||||||
};
|
};
|
||||||
--- ./lib/rpmds.c.orig 2009-12-07 14:36:49.000000000 +0000
|
|
||||||
+++ ./lib/rpmds.c 2010-03-25 14:53:47.000000000 +0000
|
--- ./lib/rpmds.c.orig 2011-02-15 13:04:04.000000000 +0000
|
||||||
@@ -66,6 +66,10 @@ static int dsType(rpmTag tag,
|
+++ ./lib/rpmds.c 2011-05-11 13:58:33.000000000 +0000
|
||||||
|
@@ -69,6 +69,10 @@ static int dsType(rpmTagVal tag,
|
||||||
t = "Trigger";
|
t = "Trigger";
|
||||||
evr = RPMTAG_TRIGGERVERSION;
|
evr = RPMTAG_TRIGGERVERSION;
|
||||||
f = RPMTAG_TRIGGERFLAGS;
|
f = RPMTAG_TRIGGERFLAGS;
|
||||||
@ -181,28 +179,28 @@ Needs extcond.diff for query operations.
|
|||||||
} else {
|
} else {
|
||||||
rc = 1;
|
rc = 1;
|
||||||
}
|
}
|
||||||
--- ./lib/rpmds.h.orig 2010-03-24 16:47:28.000000000 +0000
|
--- ./lib/rpmds.h.orig 2011-05-11 09:15:33.000000000 +0000
|
||||||
+++ ./lib/rpmds.h 2010-03-25 14:53:47.000000000 +0000
|
+++ ./lib/rpmds.h 2011-05-11 14:01:07.000000000 +0000
|
||||||
@@ -55,7 +55,7 @@ typedef enum rpmsenseFlags_e {
|
@@ -48,7 +48,7 @@ enum rpmsenseFlags_e {
|
||||||
RPMSENSE_RPMLIB = (1 << 24), /*!< rpmlib(feature) dependency. */
|
RPMSENSE_RPMLIB = (1 << 24), /*!< rpmlib(feature) dependency. */
|
||||||
RPMSENSE_TRIGGERPREIN = (1 << 25), /*!< %triggerprein dependency. */
|
RPMSENSE_TRIGGERPREIN = (1 << 25), /*!< %triggerprein dependency. */
|
||||||
RPMSENSE_KEYRING = (1 << 26),
|
RPMSENSE_KEYRING = (1 << 26),
|
||||||
- RPMSENSE_PATCHES = (1 << 27),
|
- /* bit 27 unused */
|
||||||
+ RPMSENSE_STRONG = (1 << 27),
|
+ RPMSENSE_STRONG = (1 << 27),
|
||||||
RPMSENSE_CONFIG = (1 << 28)
|
RPMSENSE_CONFIG = (1 << 28)
|
||||||
} rpmsenseFlags;
|
};
|
||||||
|
|
||||||
@@ -74,6 +74,7 @@ typedef enum rpmsenseFlags_e {
|
@@ -69,6 +69,7 @@ typedef rpmFlags rpmsenseFlags;
|
||||||
RPMSENSE_SCRIPT_VERIFY | \
|
RPMSENSE_SCRIPT_VERIFY | \
|
||||||
RPMSENSE_FIND_REQUIRES | \
|
RPMSENSE_FIND_REQUIRES | \
|
||||||
RPMSENSE_MISSINGOK | \
|
RPMSENSE_MISSINGOK | \
|
||||||
+ RPMSENSE_STRONG | \
|
+ RPMSENSE_STRONG | \
|
||||||
RPMSENSE_SCRIPT_PREP | \
|
RPMSENSE_RPMLIB | \
|
||||||
RPMSENSE_SCRIPT_BUILD | \
|
RPMSENSE_KEYRING | \
|
||||||
RPMSENSE_SCRIPT_INSTALL | \
|
RPMSENSE_PRETRANS | \
|
||||||
--- ./lib/rpmtag.h.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./lib/rpmtag.h.orig 2010-12-13 14:01:56.000000000 +0000
|
||||||
+++ ./lib/rpmtag.h 2010-03-25 14:53:47.000000000 +0000
|
+++ ./lib/rpmtag.h 2011-05-11 13:58:33.000000000 +0000
|
||||||
@@ -228,14 +228,14 @@ typedef enum rpmTag_e {
|
@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
|
||||||
RPMTAG_PRETRANSPROG = 1153, /* s */
|
RPMTAG_PRETRANSPROG = 1153, /* s */
|
||||||
RPMTAG_POSTTRANSPROG = 1154, /* s */
|
RPMTAG_POSTTRANSPROG = 1154, /* s */
|
||||||
RPMTAG_DISTTAG = 1155, /* s */
|
RPMTAG_DISTTAG = 1155, /* s */
|
||||||
@ -225,49 +223,48 @@ Needs extcond.diff for query operations.
|
|||||||
RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
|
RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
|
||||||
RPMTAG_CVSID = 1163, /* s (unimplemented) */
|
RPMTAG_CVSID = 1163, /* s (unimplemented) */
|
||||||
#define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
|
#define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
|
||||||
--- ./lib/rpmtd.h.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./lib/rpmtd.h.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./lib/rpmtd.h 2010-03-25 14:58:31.000000000 +0000
|
+++ ./lib/rpmtd.h 2011-05-11 14:00:06.000000000 +0000
|
||||||
@@ -216,6 +216,7 @@ typedef enum rpmtdFormats_e {
|
@@ -220,6 +220,7 @@ typedef enum rpmtdFormats_e {
|
||||||
RPMTD_FORMAT_DEPTYPE = 15, /* dependency types (int types) */
|
|
||||||
RPMTD_FORMAT_FSTATE = 16, /* file states (int types) */
|
|
||||||
RPMTD_FORMAT_VFLAGS = 17, /* file verify flags (int types) */
|
RPMTD_FORMAT_VFLAGS = 17, /* file verify flags (int types) */
|
||||||
+ RPMTD_FORMAT_DEPFLAG_STRONG = 18, /* strong dependency */
|
RPMTD_FORMAT_EXPAND = 18, /* macro expansion (string types) */
|
||||||
|
RPMTD_FORMAT_FSTATUS = 19, /* file verify status (int types) */
|
||||||
|
+ RPMTD_FORMAT_DEPFLAG_STRONG = 20, /* strong dependency (int types) */
|
||||||
} rpmtdFormats;
|
} rpmtdFormats;
|
||||||
|
|
||||||
/** \ingroup rpmtd
|
/** \ingroup rpmtd
|
||||||
--- ./python/rpmmodule.c.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./python/rpmmodule.c.orig 2010-12-03 12:11:57.000000000 +0000
|
||||||
+++ ./python/rpmmodule.c 2010-03-25 14:53:47.000000000 +0000
|
+++ ./python/rpmmodule.c 2011-05-11 14:19:37.000000000 +0000
|
||||||
@@ -373,7 +373,7 @@ static int initModule(PyObject *m)
|
@@ -376,6 +376,7 @@ static int initModule(PyObject *m)
|
||||||
REGISTER_ENUM(RPMSENSE_RPMLIB);
|
REGISTER_ENUM(RPMSENSE_RPMLIB);
|
||||||
REGISTER_ENUM(RPMSENSE_TRIGGERPREIN);
|
REGISTER_ENUM(RPMSENSE_TRIGGERPREIN);
|
||||||
REGISTER_ENUM(RPMSENSE_KEYRING);
|
REGISTER_ENUM(RPMSENSE_KEYRING);
|
||||||
- REGISTER_ENUM(RPMSENSE_PATCHES);
|
|
||||||
+ REGISTER_ENUM(RPMSENSE_STRONG);
|
+ REGISTER_ENUM(RPMSENSE_STRONG);
|
||||||
REGISTER_ENUM(RPMSENSE_CONFIG);
|
REGISTER_ENUM(RPMSENSE_CONFIG);
|
||||||
|
|
||||||
REGISTER_ENUM(RPMTRANS_FLAG_TEST);
|
REGISTER_ENUM(RPMTRANS_FLAG_TEST);
|
||||||
--- ./rpmpopt.in.orig 2009-12-07 14:36:49.000000000 +0000
|
--- ./rpmpopt.in.orig 2011-01-11 07:04:51.000000000 +0000
|
||||||
+++ ./rpmpopt.in 2010-03-25 14:53:47.000000000 +0000
|
+++ ./rpmpopt.in 2011-05-11 14:18:47.000000000 +0000
|
||||||
@@ -65,6 +65,22 @@ rpm alias --requires --qf \
|
@@ -65,6 +65,22 @@ rpm alias --requires --qf \
|
||||||
--POPTdesc=$"list capabilities required by package(s)"
|
--POPTdesc=$"list capabilities required by package(s)"
|
||||||
rpm alias -R --requires
|
rpm alias -R --requires
|
||||||
|
|
||||||
+rpm alias --suggests --qf \
|
+rpm alias --suggests --qf \
|
||||||
+ "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
|
+ "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
|
||||||
+ --POPTdesc=$"list capabilities this package suggests"
|
+ --POPTdesc=$"list capabilities this package suggests"
|
||||||
+
|
+
|
||||||
+rpm alias --recommends --qf \
|
+rpm alias --recommends --qf \
|
||||||
+ "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
|
+ "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
|
||||||
+ --POPTdesc=$"list capabilities this package recommends"
|
+ --POPTdesc=$"list capabilities this package recommends"
|
||||||
+
|
+
|
||||||
+rpm alias --enhances --qf \
|
+rpm alias --enhances --qf \
|
||||||
+ "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
|
+ "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
|
||||||
+ --POPTdesc=$"list capabilities this package enhances"
|
+ --POPTdesc=$"list capabilities this package enhances"
|
||||||
+
|
+
|
||||||
+rpm alias --supplements --qf \
|
+rpm alias --supplements --qf \
|
||||||
+ "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
|
+ "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
|
||||||
+ --POPTdesc=$"list capabilities this package supplements"
|
+ --POPTdesc=$"list capabilities this package supplements"
|
||||||
+
|
+
|
||||||
rpm alias --info --qf 'Name : %-27{NAME} Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
|
rpm alias --info --qf '\
|
||||||
Version : %-27{VERSION} Vendor: %{VENDOR}\n\
|
Name : %{NAME}\n\
|
||||||
Release : %-27{RELEASE} Build Date: %{BUILDTIME:date}\n\
|
%|EPOCH?{Epoch : %{EPOCH}\n}|\
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Index: doc/rpm.8
|
--- ./doc/rpm.8.orig 2011-01-05 08:11:09.000000000 +0000
|
||||||
===================================================================
|
+++ ./doc/rpm.8 2011-05-11 15:36:18.000000000 +0000
|
||||||
--- doc/rpm.8.orig
|
@@ -564,6 +564,11 @@ Query all packages that provide the \fIC
|
||||||
+++ doc/rpm.8
|
|
||||||
@@ -572,6 +572,11 @@ Query all packages that provide the \fIC
|
|
||||||
.TP
|
.TP
|
||||||
\fB--whatrequires \fICAPABILITY\fB\fR
|
\fB--whatrequires \fICAPABILITY\fB\fR
|
||||||
Query all packages that require \fICAPABILITY\fR for proper functioning.
|
Query all packages that require \fICAPABILITY\fR for proper functioning.
|
||||||
|
Loading…
Reference in New Issue
Block a user