Hello community, here is the log from the commit of package rpm for openSUSE:Factory checked in at Tue Apr 13 21:06:30 CEST 2010. -------- --- rpm/rpm.changes 2010-03-26 16:30:17.000000000 +0100 +++ /mounts/work_src_done/STABLE/rpm/rpm.changes 2010-04-09 12:28:58.000000000 +0200 @@ -1,0 +2,20 @@ +Fri Apr 9 12:00:29 CEST 2010 - mls@suse.de + +- do not load keyring if signature checking is disabled [bnc#554552] +- fix nosource/nopatch srpm tag generation + +------------------------------------------------------------------- +Thu Apr 8 17:11:08 CEST 2010 - mls@suse.de + +- backport some fixes from upstream +- add generation of python/font/pkgconfig dependencies + +------------------------------------------------------------------- +Wed Apr 7 16:59:58 CEST 2010 - mls@suse.de + +- work around spurious tar message [bnc#558475] +- fix defattr reset bug [bnc#594310] +- make 'rpmconfigcheck status' exit with 4 [bnc#592269] +- don't consider prereq deprecated for now + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- backport.diff fontprovides.diff noprereqdeprec.diff nosignature.diff nosource.diff pythondeps.diff resetdefattr.diff tarrecordsize.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rpm-python.spec ++++++ --- /var/tmp/diff_new_pack.fOxBoW/_old 2010-04-13 21:05:42.000000000 +0200 +++ /var/tmp/diff_new_pack.fOxBoW/_new 2010-04-13 21:05:42.000000000 +0200 @@ -25,7 +25,7 @@ Group: System/Packages Summary: Python Bindings for Manipulating RPM Packages Version: 4.8.0 -Release: 1 +Release: 2 Requires: rpm = %{version} %py_requires Source99: rpm.spec ++++++ rpm.spec ++++++ --- /var/tmp/diff_new_pack.fOxBoW/_old 2010-04-13 21:05:42.000000000 +0200 +++ /var/tmp/diff_new_pack.fOxBoW/_new 2010-04-13 21:05:42.000000000 +0200 @@ -28,7 +28,7 @@ AutoReqProv: on Summary: The RPM Package Manager Version: 4.8.0 -Release: 1 +Release: 2 Source: rpm-%{version}.tar.bz2 Source1: RPM-HOWTO.tar.bz2 Source2: RPM-Tips.html.tar.bz2 @@ -105,6 +105,14 @@ Patch69: modemuncher.diff Patch70: repackage-nomd5.diff Patch71: safeugid.diff +Patch72: resetdefattr.diff +Patch73: noprereqdeprec.diff +Patch74: tarrecordsize.diff +Patch75: backport.diff +Patch76: pythondeps.diff +Patch77: fontprovides.diff +Patch78: nosource.diff +Patch79: nosignature.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # # avoid bootstrapping problem @@ -165,7 +173,7 @@ %patch -P 40 -P 41 -P 42 -P 43 -P 44 -P 45 -P 46 -P 47 -P 48 -P 49 %patch -P 50 -P 51 -P 52 -P 53 -P 54 -P 55 -P 56 -P 57 -P 58 -P 59 %patch -P 60 -P 61 -P 62 -P 63 -P 64 -P 65 -P 66 -P 67 -P 68 -P 69 -%patch -P 70 -P 71 +%patch -P 70 -P 71 -P 72 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79 #chmod 755 scripts/find-supplements{,.ksyms} #chmod 755 scripts/find-provides.ksyms scripts/find-requires.ksyms #chmod 755 scripts/firmware.prov ++++++ backport.diff ++++++ 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) ++++++ fontprovides.diff ++++++ --- ./autodeps/linux.prov.orig 2010-04-08 14:52:42.000000000 +0000 +++ ./autodeps/linux.prov 2010-04-08 15:04:37.000000000 +0000 @@ -16,6 +16,8 @@ tcllist= monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$")) mimetypelist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(desktop)\$")) firmwarelist=($(printf "%s\n" "${filelist[@]}" | grep "/lib/firmware/")) +pkgconfiglist=($(printf "%s\n" "${filelist[@]}" | egrep '\.pc$')) +fontlist=($(printf "%s\n" "${filelist[@]}" | egrep -i "/usr/share/fonts/.*\.(ttf|otf|pfa)$")) # # --- Alpha does not mark 64bit dependencies @@ -86,6 +88,16 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo fi # +# --- pkgconfig provides +[ -x /usr/lib/rpm/pkgconfigdeps.sh -a -n "$pkgconfiglist" ] && + printf "%s\n" "${pkgconfiglist[@]}" | /usr/lib/rpm/pkgconfigdeps.sh -P | sort -u + +# +# --- font provides +[ -x /usr/lib/rpm/fontconfig.prov -a -n "$fontlist" ] && + printf "%s\n" "${fontlist[@]}" | /usr/lib/rpm/fontconfig.prov | sort -u + +# # --- Kernel module exported symbols [ -x /usr/lib/rpm/find-provides.ksyms ] && printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@" --- ./autodeps/linux.req.orig 2010-04-08 15:01:18.000000000 +0000 +++ ./autodeps/linux.req 2010-04-08 15:04:20.000000000 +0000 @@ -35,6 +35,7 @@ perllist=() pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..')) tcllist=() monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$")) +pkgconfiglist=($(printf "%s\n" "${filelist[@]}" | egrep '\.pc$')) # # --- Alpha does not mark 64bit dependencies @@ -144,6 +145,11 @@ if [ -x $MONO_PREFIX/bin/mono -a -n "$mo fi # +# --- pkgconfig requires +[ -x /usr/lib/rpm/pkgconfigdeps.sh -a -n "$pkgconfiglist" ] && + printf "%s\n" "${pkgconfiglist[@]}" | /usr/lib/rpm/pkgconfigdeps.sh -R | sort -u + +# # --- Kernel module imported symbols [ -x ${0%/*}/find-requires.ksyms ] && printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@" --- ./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/ | ++++++ noprereqdeprec.diff ++++++ --- ./build/parsePreamble.c.orig 2010-04-07 14:52:57.000000000 +0000 +++ ./build/parsePreamble.c 2010-04-07 14:53:51.000000000 +0000 @@ -748,7 +748,7 @@ static struct PreambleRec_s const preamb {RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")}, {RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")}, {RPMTAG_REQUIREFLAGS, 1, 0, LEN_AND_STR("requires")}, - {RPMTAG_PREREQ, 1, 1, LEN_AND_STR("prereq")}, + {RPMTAG_PREREQ, 1, 0, LEN_AND_STR("prereq")}, {RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")}, {RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")}, {RPMTAG_PREFIXES, 0, 0, LEN_AND_STR("prefixes")}, @@ -757,7 +757,7 @@ static struct PreambleRec_s const preamb {RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarchitectures")}, {RPMTAG_BUILDARCHS, 0, 0, LEN_AND_STR("buildarch")}, {RPMTAG_BUILDCONFLICTS, 0, 0, LEN_AND_STR("buildconflicts")}, - {RPMTAG_BUILDPREREQ, 1, 1, LEN_AND_STR("buildprereq")}, + {RPMTAG_BUILDPREREQ, 1, 0, LEN_AND_STR("buildprereq")}, {RPMTAG_BUILDREQUIRES, 1, 0, LEN_AND_STR("buildrequires")}, {RPMTAG_AUTOREQPROV, 0, 0, LEN_AND_STR("autoreqprov")}, {RPMTAG_AUTOREQ, 0, 0, LEN_AND_STR("autoreq")}, ++++++ nosignature.diff ++++++ 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; } ++++++ nosource.diff ++++++ 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); } } ++++++ pythondeps.diff ++++++ --- ./autodeps/linux.prov.orig 2010-04-08 13:32:56.000000000 +0000 +++ ./autodeps/linux.prov 2010-04-08 13:38:44.000000000 +0000 @@ -11,7 +11,7 @@ filelist=($(printf "%s\n" "${filelist[@] solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \ tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \ cut -d: -f1)) -pythonlist= +pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/bin/python.\..$')) tcllist= monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$")) mimetypelist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(desktop)\$")) @@ -55,8 +55,8 @@ done | sort -u # # --- Python modules. -[ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] && - printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.prov | sort -u +[ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] && + printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -P | sort -u # # --- Tcl modules. --- ./autodeps/linux.req.orig 2010-04-08 13:36:47.000000000 +0000 +++ ./autodeps/linux.req 2010-04-08 13:40:25.000000000 +0000 @@ -32,7 +32,7 @@ liblist=($(printf "%s\0" "${filelist[@]} interplist=() perllist=() -pythonlist=() +pythonlist=($(printf "%s\n" "${filelist[@]}" | egrep '/usr/lib[^/]*/python.\..')) tcllist=() monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$")) @@ -128,8 +128,8 @@ done | sort -u # # --- Python modules. -[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \ - printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.req | sort -u +[ -x /usr/lib/rpm/pythondeps.sh -a -n "$pythonlist" ] && \ + printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/pythondeps.sh -R | sort -u # # --- Tcl modules. --- ./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 ++++++ resetdefattr.diff ++++++ --- ./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); ++++++ rpmconfigcheck ++++++ --- /var/tmp/diff_new_pack.fOxBoW/_old 2010-04-13 21:05:43.000000000 +0200 +++ /var/tmp/diff_new_pack.fOxBoW/_new 2010-04-13 21:05:43.000000000 +0200 @@ -66,7 +66,11 @@ rm -f $configcheckfile.old $configcheckfile.dup $configcheckfile.new fi ;; - stop|status) + stop) + ;; + status) + rc_failed 4 + rc_status -v ;; *) echo "Usage: $0 {start}" ++++++ tarrecordsize.diff ++++++ --- ./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); } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org