Hello community, here is the log from the commit of package rpm for openSUSE:Factory checked in at 2020-01-10 17:47:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rpm (Old) and /work/SRC/openSUSE:Factory/.rpm.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpm" Fri Jan 10 17:47:23 2020 rev:276 rq:755878 version:4.15.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rpm/python-rpm.changes 2018-12-10 12:22:12.838893618 +0100 +++ /work/SRC/openSUSE:Factory/.rpm.new.6675/python-rpm.changes 2020-01-10 17:47:28.150157189 +0100 @@ -1,0 +2,10 @@ +Tue Nov 19 11:09:08 CET 2019 - [email protected] + +- update to rpm-4.15.1 + +------------------------------------------------------------------- +Wed Oct 2 14:53:19 CEST 2019 - [email protected] + +- update to rpm-4.15.0 + +------------------------------------------------------------------- --- /work/SRC/openSUSE:Factory/rpm/rpm.changes 2019-10-21 12:24:42.307709338 +0200 +++ /work/SRC/openSUSE:Factory/.rpm.new.6675/rpm.changes 2020-01-10 17:47:33.810156179 +0100 @@ -1,0 +2,60 @@ +Fri Dec 6 15:30:48 CET 2019 - [email protected] + +- disable pythondist requires generator for now + * modified patch: fileattrs.diff + +------------------------------------------------------------------- +Wed Nov 20 11:56:20 CET 2019 - [email protected] + +- drop python3-setuptools dependency from rpm-build, the package + is not part of ring-0 + +------------------------------------------------------------------- +Tue Nov 19 11:09:08 CET 2019 - [email protected] + +- update to rpm-4.15.1 + * bugfix release +- dropped patches: + * fix_lua_cflags.diff + +------------------------------------------------------------------- +Tue Nov 5 16:25:53 UTC 2019 - Neal Gompa <[email protected]> + +- Fix shebang for pythondistdeps.py to use Python 3 + + Modify patch: pythondistdeps.diff +- Move pythondistdeps dependency generator to rpm-build +- Add python3-setuptools and python3 dependencies to rpm-build for pythondistdeps + +------------------------------------------------------------------- +Tue Oct 29 14:42:26 UTC 2019 - Ignaz Forster <[email protected]> + +- Declare /var/lib/rpm as a ghost file (it is a link to /usr/lib/sysimage/rpm + generated in post script for quite some time now) [boo#1132796] + +------------------------------------------------------------------- +Wed Oct 2 14:53:19 CEST 2019 - [email protected] + +- update to rpm-4.15.0 + * dynamic build dependencies + * support for %elif, %elifos and %elifarch statements in spec + * caret version operator (the opposite of tilde) + * new %patchlist and %sourcelist spec sections + * new %{expr:#} built-in macro for evaluating expressions + * new %dnl macro primitive for comments +- dropped patches: + * 0001-Stop-papering-over-the-security-disaster-known-as-pr.patch + * 0002-Fix-use-after-free-introduced-in-0f21bdd0d7b2c45564d.patch + * adopt-language-specific-build_fooflags-macros-from-F.patch + * auto-config-update-riscv64.diff + * debugedit-macro.diff + * dwz-compression.patch + * getncpus.diff + * nameversioncompare.diff + * mono-find-requires.diff + * rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch + * set-flto=auto-by-default.patch + * source_date_epoch_buildtime.diff +- new patches: + * fix_lua_cflags.diff + +------------------------------------------------------------------- Old: ---- 0001-Stop-papering-over-the-security-disaster-known-as-pr.patch 0002-Fix-use-after-free-introduced-in-0f21bdd0d7b2c45564d.patch adopt-language-specific-build_fooflags-macros-from-F.patch auto-config-update-riscv64.diff debugedit-macro.diff dwz-compression.patch getncpus.diff mono-find-requires.diff nameversioncompare.diff rpm-4.14.2.1.tar.bz2 rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch set-flto=auto-by-default.patch source_date_epoch_buildtime.diff New: ---- rpm-4.15.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-rpm.spec ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.550155691 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.550155691 +0100 @@ -21,14 +21,13 @@ %global with_python 1 %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-rpm -Version: 4.14.2.1 +Version: 4.15.1 Release: 0 Summary: Python Bindings for Manipulating RPM Packages License: GPL-2.0-or-later Group: Development/Libraries/Python URL: https://rpm.org/ #Git-Clone: https://github.com/rpm-software-management/rpm -Source99: rpm.spec BuildRequires: %{python_module devel} BuildRequires: file-devel BuildRequires: libacl-devel @@ -47,6 +46,7 @@ BuildRequires: pkgconfig(libzstd) Requires: rpm = %{version} %{expand:%(sed -n -e '/^Source:/,/^BuildRoot:/p' <%{_sourcedir}/rpm.spec)} +Source99: rpm.spec %if "%{python_flavor}" == "python2" Obsoletes: rpm-python < %{version}-%{release} Provides: rpm-python = %{version}-%{release} ++++++ rpm.spec ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.598155683 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.606155681 +0100 @@ -19,7 +19,7 @@ #Compat macro for new _fillupdir macro introduced in Nov 2017 %{?!_fillupdir:%define _fillupdir /var/adm/fillup-templates} -%global librpmsover 8 +%global librpmsover 9 Name: rpm BuildRequires: binutils @@ -57,11 +57,11 @@ Summary: The RPM Package Manager License: GPL-2.0-or-later Group: System/Packages -Version: 4.14.2.1 +Version: 4.15.1 Release: 0 URL: https://rpm.org/ #Git-Clone: https://github.com/rpm-software-management/rpm -Source: http://ftp.rpm.org/releases/rpm-4.14.x/rpm-%{version}.tar.bz2 +Source: http://ftp.rpm.org/releases/rpm-4.15.x/rpm-%{version}.tar.bz2 Source1: RPM-HOWTO.tar.bz2 Source5: rpmsort Source8: rpmconfigcheck @@ -79,7 +79,6 @@ Patch11: debugedit.diff Patch13: ignore-auxv.diff Patch12: localetag.diff -Patch14: nameversioncompare.diff Patch15: dbfsync.diff Patch16: dbrointerruptable.diff Patch18: refreshtestarch.diff @@ -116,7 +115,6 @@ Patch70: fileattrs.diff Patch71: nomagiccheck.diff Patch73: assumeexec.diff -Patch74: mono-find-requires.diff Patch75: rpm-deptracking.patch Patch77: langnoc.diff Patch78: headerchk2.diff @@ -127,19 +125,9 @@ Patch100: rpm-findlang-inject-metainfo.patch Patch102: emptymanifest.diff Patch103: find-lang-qt-qm.patch -Patch108: debugedit-macro.diff Patch109: pythondistdeps.diff -Patch114: source_date_epoch_buildtime.diff Patch117: findsupplements.diff -Patch118: dwz-compression.patch -Patch119: getncpus.diff -Patch120: rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch -Patch121: adopt-language-specific-build_fooflags-macros-from-F.patch -Patch122: 0001-Stop-papering-over-the-security-disaster-known-as-pr.patch -Patch123: 0002-Fix-use-after-free-introduced-in-0f21bdd0d7b2c45564d.patch -Patch124: set-flto=auto-by-default.patch Patch6464: auto-config-update-aarch64-ppc64le.diff -Patch6465: auto-config-update-riscv64.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # # avoid bootstrapping problem @@ -212,6 +200,10 @@ # drop candidates Requires: cpio Requires: file +# for pythondistdeps generator +Requires: python3-base +# The point of the split +Conflicts: rpm < 4.15.0 %description build If you want to build a rpm, you need this package. It provides rpmbuild @@ -234,29 +226,21 @@ %patch3 -p1 %patch -P 4 %patch5 -p1 -%patch -P 11 -P 12 -P 13 -P 14 -P 15 -P 16 -P 18 +%patch -P 11 -P 12 -P 13 -P 15 -P 16 -P 18 %patch -P 20 -P 21 -P 24 -P 25 -P 26 -P 27 -P 29 %patch -P 30 -P 32 -P 33 -P 34 -P 35 -P 36 -P 38 %patch -P 43 -P 45 -P 46 -P 47 -P 49 %patch -P 51 -P 55 -P 56 -P 57 -P 58 %patch -P 60 -P 61 -P 66 -P 67 -P 68 -P 69 -%patch -P 70 -P 71 -P 73 -P 74 -P 75 -P 77 -P 78 +%patch -P 70 -P 71 -P 73 -P 75 -P 77 -P 78 %patch -P 85 %patch -P 93 -P 94 -P 99 -%patch -P 100 -P 102 -P 103 -P 108 -%patch -P 109 -P 114 -P 117 -P 118 -%patch -P 119 -P 120 -%patch121 -p1 -%patch122 -p1 -%patch123 -p1 -%patch124 -p1 +%patch -P 100 -P 102 -P 103 +%patch -P 109 -P 117 %ifarch aarch64 ppc64le riscv64 %patch6464 %endif -%ifarch riscv64 -%patch6465 -%endif cp config.guess config.sub db/dist/ cp config.guess config.sub beecrypt/ @@ -286,13 +270,17 @@ autoreconf -fi ./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ ---libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --with-lua \ ---without-external-db \ +--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib \ +--with-lua \ --with-vendor=suse \ --with-rundir=/run \ --without-archive \ ---with-selinux --with-internal-beecrypt \ ---with-acl --with-cap --enable-shared %{?with_python: --enable-python} $BUILDTARGET +--with-selinux \ +--with-internal-beecrypt \ +--with-acl \ +--with-cap \ +--enable-zstd \ +--enable-shared %{?with_python: --enable-python} $BUILDTARGET rm po/de.gmo make %{?_smp_mflags} @@ -327,7 +315,6 @@ chmod 755 %{buildroot}/usr/src/packages/RPMS/$dd done mkdir -p %{buildroot}/usr/lib/sysimage/rpm -mkdir -p %{buildroot}/var/lib/rpm gzip -9 %{buildroot}/%{_mandir}/man[18]/*.[18] export RPM_BUILD_ROOT %ifarch s390x @@ -386,6 +373,7 @@ fi test -f usr/lib/sysimage/rpm/Packages || rpmdb --initdb +test -e var/lib/rpm || ln -s ../../usr/lib/sysimage/rpm var/lib/rpm %posttrans # var/lib/rpm migration @@ -405,7 +393,8 @@ mv -f var/lib/rpm/.[!.]* usr/lib/sysimage/rpm/ mv -f var/lib/rpm/* usr/lib/sysimage/rpm/ fi - rmdir var/lib/rpm && ln -s ../../usr/lib/sysimage/rpm var/lib/rpm + test -d var/lib/rpm && rmdir var/lib/rpm + test -e var/lib/rpm || ln -s ../../usr/lib/sysimage/rpm var/lib/rpm fi %files -f rpm.lang @@ -428,6 +417,8 @@ %exclude /usr/lib/rpm/brp-* %exclude /usr/lib/rpm/check-* %exclude /usr/lib/rpm/*find* + %exclude /usr/lib/rpm/fileattrs/pythondist.attr + %exclude /usr/lib/rpm/pythondistdeps.py /usr/sbin/rpmconfigcheck /usr/lib/systemd/system/rpmconfigcheck.service /usr/lib/rpm @@ -438,7 +429,7 @@ %doc %{_mandir}/man[18]/*.[18]* %dir /usr/lib/sysimage %dir /usr/lib/sysimage/rpm -%dir /var/lib/rpm +%ghost /var/lib/rpm %dir %attr(755,root,root) /usr/src/packages/BUILD %dir %attr(755,root,root) /usr/src/packages/SPECS %dir %attr(755,root,root) /usr/src/packages/SOURCES @@ -465,6 +456,8 @@ /usr/lib/rpm/brp-* /usr/lib/rpm/check-* /usr/lib/rpm/*find* +/usr/lib/rpm/fileattrs/pythondist.attr +/usr/lib/rpm/pythondistdeps.py %files devel %defattr(644,root,root,755) ++++++ auto-config-update-aarch64-ppc64le.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.694155666 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.702155664 +0100 @@ -1,28 +1,28 @@ -Index: build/parseBuildInstallClean.c -=================================================================== ---- build/parseBuildInstallClean.c.orig -+++ build/parseBuildInstallClean.c -@@ -46,7 +46,22 @@ int parseBuildInstallClean(rpmSpec spec, - } else if (rc < 0) { - goto exit; - } -- -+ -+ if (parsePart == PART_BUILD) { -+ char* buf = strdup( -+ "ref=/usr/lib/rpm\n" -+ "for s in guess sub; do\n" -+ " for c in $(find -maxdepth 8 -name \"config.$s\"); do\n" -+ " grep -q config-patches@ $c || continue\n" -+ " grep -q aarch64 $c || install -m 755 $ref/config.$s $c\n" -+ " grep -q ppc64le $c || install -m 755 $ref/config.$s $c\n" -+ " done\n" -+ "done\n" -+ ); -+ appendLineStringBuf(*sbp, buf); -+ free(buf); -+ } -+ - while (! (nextPart = isPart(spec->line))) { - appendStringBuf(*sbp, spec->line); - if ((rc = readLine(spec, STRIP_NOTHING)) > 0) { +--- ./build/parseSpec.c.orig 2019-10-02 12:38:51.836127743 +0000 ++++ ./build/parseSpec.c 2019-10-02 12:52:33.818447657 +0000 +@@ -926,7 +926,24 @@ static rpmSpec parseSpec(const char *spe + &(spec->buildrequires)); + break; + case PART_BUILD: +- parsePart = parseSimpleScript(spec, "%build", &(spec->build)); ++ if (spec->build) { ++ rpmlog(RPMLOG_ERR, _("line %d: second %s\n"), spec->lineNum, "%build"); ++ parsePart = PART_ERROR; ++ break; ++ } ++ spec->build = newStringBuf(); ++ appendLineStringBuf(spec->build, ++ "ref=/usr/lib/rpm\n" ++ "for s in guess sub; do\n" ++ " for c in $(find -maxdepth 8 -name \"config.$s\"); do\n" ++ " grep -q config-patches@ $c || continue\n" ++ " grep -q aarch64 $c || install -m 755 $ref/config.$s $c\n" ++ " grep -q ppc64le $c || install -m 755 $ref/config.$s $c\n" ++ " grep -q 'riscv64[-:]' $c || install -m 755 $ref/config.$s $c\n" ++ " done\n" ++ "done\n" ++ ); ++ parsePart = parseLines(spec, STRIP_NOTHING, NULL, &(spec->build)); + break; + case PART_INSTALL: + parsePart = parseSimpleScript(spec, "%install", &(spec->install)); ++++++ brp-compress-no-img.patch ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.758155654 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.758155654 +0100 @@ -1,10 +1,10 @@ ---- scripts/brp-compress 2013-09-02 19:00:09.000000000 +0200 -+++ scripts/brp-compress 2013-09-02 19:03:12.000000000 +0200 -@@ -47,6 +47,7 @@ do +--- ./scripts/brp-compress.orig 2019-10-02 12:09:46.263708258 +0000 ++++ ./scripts/brp-compress 2019-10-02 12:09:52.055696056 +0000 +@@ -50,6 +50,7 @@ do find $d -type f ! -name dir | while read f do [ -f "$f" ] || continue + case $(file "$f") in *"image data"*) continue;; esac case "$f" in - *.gz|*.Z) gunzip "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;; + *.gz|*.Z) gunzip -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;; ++++++ brpcompress.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.778155650 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.778155650 +0100 @@ -1,16 +1,16 @@ ---- ./scripts/brp-compress.orig 2018-01-31 13:07:37.130104408 +0000 -+++ ./scripts/brp-compress 2018-01-31 13:07:16.234159981 +0000 -@@ -5,51 +5,78 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD +--- ./scripts/brp-compress.orig 2019-10-02 09:59:40.403995534 +0000 ++++ ./scripts/brp-compress 2019-10-02 10:03:27.075537047 +0000 +@@ -5,6 +5,9 @@ if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_B exit 0 fi +LC_ALL= +LANG= +LC_TIME=POSIX -+ - cd "$RPM_BUILD_ROOT" + PREFIX=${1:-/usr} - # Compress man pages + cd "$RPM_BUILD_ROOT" +@@ -13,6 +16,29 @@ cd "$RPM_BUILD_ROOT" COMPRESS=${COMPRESS:-gzip -9 -n} COMPRESS_EXT=${COMPRESS_EXT:-.gz} @@ -37,10 +37,11 @@ + done +} + - for d in ./usr/man/man* ./usr/man/*/man* ./usr/info \ - ./usr/share/man/man* ./usr/share/man/*/man* ./usr/share/info \ - ./usr/kerberos/man ./usr/X11R6/man/man* ./usr/lib/perl5/man/man* \ - ./usr/share/doc/*/man/man* ./usr/lib/*/man/man* ./usr/share/fish/man/man* + for d in .${PREFIX}/man/man* .${PREFIX}/man/*/man* .${PREFIX}/info \ + .${PREFIX}/share/man/man* .${PREFIX}/share/man/*/man* \ + .${PREFIX}/share/info .${PREFIX}/kerberos/man \ +@@ -21,39 +47,39 @@ for d in .${PREFIX}/man/man* .${PREFIX}/ + .${PREFIX}/share/fish/man/man* do [ -d $d ] || continue - for f in `find $d -type f ! -name dir` @@ -52,11 +53,10 @@ - *.gz|*.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;; - *.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;; - *.xz|*.lzma) unxz -f $f; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;; -- *) b=$f;; -+ *.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$//'`;; -+ *.xz|*.lzma) unxz "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;; -+ *) b="$f";; ++ *.gz|*.Z) gunzip -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(gz\|Z\)$//'`;; ++ *.bz2) bunzip2 -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.bz2$//'`;; ++ *.xz|*.lzma) unxz -f "$f" || check_for_hard_link $d "$f"; b=`echo $f | sed -e 's/\.\(xz\|lzma\)$//'`;; + *) b=$f;; esac - $COMPRESS $b </dev/null 2>/dev/null || { ++++++ checksepwarn.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.794155647 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.794155647 +0100 @@ -1,5 +1,5 @@ ---- ./build/parseReqs.c.orig 2017-10-05 10:04:56.887602165 +0000 -+++ ./build/parseReqs.c 2017-12-01 16:00:06.956343096 +0000 +--- ./build/parseReqs.c.orig 2019-06-26 14:17:31.396985719 +0000 ++++ ./build/parseReqs.c 2019-10-02 12:10:51.879570016 +0000 @@ -42,7 +42,7 @@ static rpmRC checkEpoch(const char *s, c return RPMRC_OK; } @@ -54,11 +54,11 @@ + if (checkDep(spec, tagflags, N, EVR, &emsg)) goto exit; - if (nametag == RPMTAG_FILETRIGGERNAME || ---- ./macros.in.orig 2017-12-01 16:00:02.705355493 +0000 -+++ ./macros.in 2017-12-01 16:00:06.957343106 +0000 -@@ -456,7 +456,7 @@ package or when debugging this package.\ - %_invalid_encoding_terminates_build 0 + if (nametag == RPMTAG_OBSOLETENAME) { +--- ./macros.in.orig 2019-10-02 12:10:45.431583601 +0000 ++++ ./macros.in 2019-10-02 12:10:51.879570016 +0000 +@@ -452,7 +452,7 @@ package or when debugging this package.\ + %_invalid_encoding_terminates_build 1 # Should invalid version format in requires, provides, ... terminate a build? -%_wrong_version_format_terminate_build 1 ++++++ debugedit.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.810155644 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.814155644 +0100 @@ -1,8 +1,8 @@ Make debugedit build without dwarf.h ---- ./Makefile.am.orig 2017-12-01 14:15:13.963574699 +0000 -+++ ./Makefile.am 2017-12-01 14:16:10.634407860 +0000 -@@ -154,7 +154,6 @@ rpm2archive_LDADD += @WITH_POPT_LIB@ @WI +--- ./Makefile.am.orig 2019-06-26 14:17:31.394985722 +0000 ++++ ./Makefile.am 2019-10-02 09:48:35.949316743 +0000 +@@ -167,7 +167,6 @@ rpm2archive_LDADD += @WITH_POPT_LIB@ @WI if LIBELF @@ -10,7 +10,7 @@ if LIBDW rpmconfig_SCRIPTS += scripts/find-debuginfo.sh -@@ -168,7 +167,6 @@ else +@@ -181,7 +180,6 @@ else debugedit_LDADD += @WITH_LIBDW_LIB@ -lebl endif # HAVE_LIBDW_STRTAB endif # LIBDW @@ -18,9 +18,9 @@ rpmlibexec_PROGRAMS += elfdeps elfdeps_SOURCES = tools/elfdeps.c elfdeps_LDADD = rpmio/librpmio.la ---- ./tools/debugedit.c.orig 2017-10-05 10:04:57.714602011 +0000 -+++ ./tools/debugedit.c 2017-12-01 14:15:13.965574668 +0000 -@@ -39,7 +39,37 @@ +--- ./tools/debugedit.c.orig 2019-06-26 14:17:31.462985619 +0000 ++++ ./tools/debugedit.c 2019-10-02 09:48:35.953316735 +0000 +@@ -39,7 +39,45 @@ #include <popt.h> #include <gelf.h> @@ -56,6 +56,14 @@ +#define DW_FORM_ref8 0x14 +#define DW_FORM_ref_udata 0x15 +#define DW_FORM_indirect 0x16 ++ ++#define DW_MACRO_GNU_define 1 ++#define DW_MACRO_GNU_undef 2 ++#define DW_MACRO_GNU_start_file 3 ++#define DW_MACRO_GNU_end_file 4 ++#define DW_MACRO_GNU_define_indirect 5 ++#define DW_MACRO_GNU_undef_indirect 6 ++#define DW_MACRO_GNU_transparent_include 7 + /* Unfortunately strtab manipulation functions were only officially added - to elfutils libdw in 0.167. Before that there were internal unsupported ++++++ enable-postin-scripts-error.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.834155640 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.834155640 +0100 @@ -1,21 +1,29 @@ ---- ./lib/transaction.c.orig 2018-07-02 14:51:41.328051671 +0000 -+++ ./lib/transaction.c 2018-07-02 14:51:46.264038824 +0000 -@@ -1462,7 +1462,9 @@ rpmRC runScript(rpmts ts, rpmte te, Head - int warn_only = (stag != RPMTAG_PREIN && - stag != RPMTAG_PREUN && - stag != RPMTAG_PRETRANS && -- stag != RPMTAG_VERIFYSCRIPT); -+ stag != RPMTAG_VERIFYSCRIPT && -+ !(stag == RPMTAG_POSTIN && -+ rpmExpandNumeric("%{_fail_on_postinstall_errors}"))); - rpmdb rdb = rpmtsGetRdb(ts); +--- ./lib/rpmscript.c.orig 2019-10-02 12:19:15.694519983 +0000 ++++ ./lib/rpmscript.c 2019-10-02 12:22:32.838112185 +0000 +@@ -411,7 +411,7 @@ rpmRC rpmScriptRun(rpmScript script, int + if (script == NULL) return RPMRC_OK; - /* Fake up a transaction element for triggers from rpmdb */ ---- ./macros.in.orig 2018-07-02 14:51:41.340051640 +0000 -+++ ./macros.in 2018-07-02 14:51:46.264038824 +0000 -@@ -1290,5 +1290,10 @@ end} - %{expand:%__scm_setup_%{__scm} %{!-v:-q}}\ - %{!-N:%autopatch %{-v} %{-p:-p%{-p*}}} + ARGV_t args = NULL; +- rpmlogLvl lvl = (script->flags & RPMSCRIPT_FLAG_CRITICAL) ? ++ rpmlogLvl lvl = (rpmScriptFlags(script) & RPMSCRIPT_FLAG_CRITICAL) ? + RPMLOG_ERR : RPMLOG_WARNING; + rpmRC rc; + int script_type = RPMSCRIPTLET_FORK | RPMSCRIPTLET_EXEC; +@@ -654,5 +654,8 @@ rpmscriptTypes rpmScriptType(rpmScript s + + rpmscriptFlags rpmScriptFlags(rpmScript script) + { +- return (script != NULL) ? script->flags : 0; ++ rpmscriptFlags flags = (script != NULL) ? script->flags : 0; ++ if (script && script->tag == RPMTAG_POSTIN && rpmExpandNumeric("%{_fail_on_postinstall_errors}")) ++ flags |= RPMSCRIPT_FLAG_CRITICAL; ++ return flags; + } +--- ./macros.in.orig 2019-10-02 12:12:13.027399050 +0000 ++++ ./macros.in 2019-10-02 12:12:19.799384783 +0000 +@@ -1318,5 +1318,10 @@ end} + %requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") + %requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") +# Should errors in %post scriptlet be propagated as errors? +# ++++++ fileattrs.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.842155639 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.842155639 +0100 @@ -1,15 +1,15 @@ ---- ./fileattrs/Makefile.am.orig 2017-12-01 15:46:21.021741182 +0000 -+++ ./fileattrs/Makefile.am 2017-12-01 15:48:54.108298271 +0000 +--- ./fileattrs/Makefile.am.orig 2019-10-02 11:39:56.095525981 +0000 ++++ ./fileattrs/Makefile.am 2019-10-02 11:40:20.695473538 +0000 @@ -8,6 +8,6 @@ fattrsdir = $(rpmconfigdir)/fileattrs fattrs_DATA = \ debuginfo.attr desktop.attr elf.attr font.attr libtool.attr metainfo.attr \ - perl.attr perllib.attr pkgconfig.attr python.attr ocaml.attr script.attr \ -- mono.attr -+ mono.attr elflib.attr + perl.attr perllib.attr pkgconfig.attr python.attr pythondist.attr ocaml.attr \ +- script.attr ++ script.attr elflib.attr EXTRA_DIST = $(fattrs_DATA) ---- ./fileattrs/elf.attr.orig 2017-12-01 15:46:28.171720501 +0000 -+++ ./fileattrs/elf.attr 2017-12-01 15:47:49.339485678 +0000 +--- ./fileattrs/elf.attr.orig 2019-06-26 14:17:31.404985707 +0000 ++++ ./fileattrs/elf.attr 2019-10-02 11:39:56.095525981 +0000 @@ -1,4 +1,5 @@ %__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private} %__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private} @@ -17,23 +17,23 @@ +%__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*executable %__elf_flags exeonly +%__elf_exclude_path ^/usr/lib/debug/ ---- ./fileattrs/elflib.attr.orig 2017-12-01 15:46:28.171720501 +0000 -+++ ./fileattrs/elflib.attr 2017-12-01 15:46:28.171720501 +0000 +--- ./fileattrs/elflib.attr.orig 2019-10-02 11:39:56.095525981 +0000 ++++ ./fileattrs/elflib.attr 2019-10-02 11:39:56.095525981 +0000 @@ -0,0 +1,4 @@ +%__elflib_provides %{_rpmconfigdir}/elfdeps --assume-exec --provides %{?__filter_GLIBC_PRIVATE:--filter-private} +%__elflib_requires %{_rpmconfigdir}/elfdeps --assume-exec --requires %{?__filter_GLIBC_PRIVATE:--filter-private} +%__elflib_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*shared object +%__elflib_exclude_path ^/usr/lib/debug/ ---- ./fileattrs/perl.attr.orig 2017-08-10 08:08:07.113108701 +0000 -+++ ./fileattrs/perl.attr 2017-12-01 15:46:28.172720497 +0000 +--- ./fileattrs/perl.attr.orig 2019-06-26 14:17:31.404985707 +0000 ++++ ./fileattrs/perl.attr 2019-10-02 11:39:56.095525981 +0000 @@ -1,3 +1,4 @@ -%__perl_requires %{_rpmconfigdir}/perl.req +# disabled for now +#%__perl_requires %{_rpmconfigdir}/perl.req %__perl_magic ^.*[Pp]erl .*$ %__perl_flags exeonly ---- ./fileattrs/perllib.attr.orig 2017-08-10 08:08:07.113108701 +0000 -+++ ./fileattrs/perllib.attr 2017-12-01 15:46:28.172720497 +0000 +--- ./fileattrs/perllib.attr.orig 2019-06-26 14:17:31.404985707 +0000 ++++ ./fileattrs/perllib.attr 2019-10-02 11:39:56.095525981 +0000 @@ -1,5 +1,6 @@ %__perllib_provides %{_rpmconfigdir}/perl.prov -%__perllib_requires %{_rpmconfigdir}/perl.req @@ -42,3 +42,11 @@ %__perllib_magic ^Perl[[:digit:]] module source.* %__perllib_path \\.pm$ %__perllib_flags magic_and_path +--- ./fileattrs/pythondist.attr.orig 2019-12-06 14:32:57.245328376 +0000 ++++ ./fileattrs/pythondist.attr 2019-12-06 14:33:35.345238073 +0000 +@@ -1,3 +1,4 @@ + %__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --majorver-provides +-%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires ++#disabled for now ++#%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires + %__pythondist_path /lib(64)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$ ++++++ finddebuginfo.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.862155636 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.862155636 +0100 @@ -1,15 +1,15 @@ ---- ./scripts/find-debuginfo.sh.orig 2017-10-05 10:04:57.586602035 +0000 -+++ ./scripts/find-debuginfo.sh 2017-12-01 14:45:15.439290101 +0000 -@@ -326,12 +326,18 @@ trap 'rm -rf "$temp"' EXIT +--- ./scripts/find-debuginfo.sh.orig 2019-09-09 07:56:53.377788842 +0000 ++++ ./scripts/find-debuginfo.sh 2019-10-02 11:11:56.878979662 +0000 +@@ -348,12 +348,18 @@ trap 'rm -rf "$temp"' EXIT # Build a list of unstripped ELF files and their hardlinks touch "$temp/primary" -find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \ - \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \ -- -print | +- -print | LC_ALL=C sort | -file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped.*/\1/p' | -xargs --no-run-if-empty stat -c '%h %D_%i %n' | -+find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \( -perm /111 -or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" -print0 | sort -z | ++find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \( -perm /111 -or -name "*.so*" -or -name "*.ko" \) ! -name "*.a" -print0 | LC_ALL=C sort -z | +xargs --no-run-if-empty -0 stat -c '%h %D_%i %n' | while read nlinks inum f; do + case $(objdump -h $f 2>/dev/null | egrep -o '(debug[\.a-z_]*|gnu.version)') in @@ -24,7 +24,7 @@ if [ $nlinks -gt 1 ]; then var=seen_$inum if test -n "${!var}"; then -@@ -364,6 +370,8 @@ do_file() +@@ -386,6 +392,8 @@ do_file() if [ "$no_recompute_build_id" = "true" ]; then no_recompute="-n" fi @@ -33,7 +33,7 @@ id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \ $no_recompute -i \ ${build_id_seed:+--build-id-seed="$build_id_seed"} \ -@@ -387,17 +395,30 @@ do_file() +@@ -413,17 +421,30 @@ do_file() # just has its file names collected and adjusted. case "$dn" in /usr/lib/debug/*) @@ -71,16 +71,7 @@ # strip -g implies we have full symtab, don't add mini symtab in that case. # It only makes sense to add a minisymtab for executables and shared -@@ -507,7 +528,7 @@ if $run_dwz \ - rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null - if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then - id="`readelf -Wn "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" \ -- 2>/dev/null | sed -n 's/^ Build ID: \([0-9a-f]\+\)/\1/p'`" -+ 2>/dev/null | sed -n 's/^.* Build ID: \([0-9a-f]\+\)/\1/p'`" - fi - - # dwz invalidates .gnu_debuglink CRC32 in the main files. -@@ -551,12 +572,14 @@ if [ -s "$SOURCEFILE" ]; then +@@ -581,12 +602,14 @@ if [ -s "$SOURCEFILE" ]; then # and non-standard modes may be inherented from original directories, fixup find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 | xargs --no-run-if-empty -0 chmod 0755 @@ -88,7 +79,7 @@ + xargs --no-run-if-empty -0 chmod a+r fi - if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then + if [ -d "${RPM_BUILD_ROOT}/usr/lib" ] || [ -d "${RPM_BUILD_ROOT}/usr/src" ]; then ((nout > 0)) || test ! -d "${RPM_BUILD_ROOT}/usr/lib" || - (cd "${RPM_BUILD_ROOT}/usr/lib"; find debug -type d) | ++++++ findlang.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.886155631 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.886155631 +0100 @@ -1,5 +1,5 @@ ---- ./scripts/find-lang.sh.orig 2018-01-16 09:02:23.879253043 +0000 -+++ ./scripts/find-lang.sh 2018-01-31 13:20:30.938048419 +0000 +--- ./scripts/find-lang.sh.orig 2019-09-09 07:56:53.377788842 +0000 ++++ ./scripts/find-lang.sh 2019-10-02 11:12:53.774861485 +0000 @@ -22,11 +22,11 @@ the top of the tree containing the files PACKAGE_NAME is the %{name} of the package. This should also be the basename of the .mo files. the output is written to @@ -137,7 +137,7 @@ +/^$/d' >> $MO_NAME_NEW 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 ] && [ -d "$TOP_DIR$KDE3_HTML" ]; then @@ -193,7 +203,7 @@ s:'"$TOP_DIR"':: '"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3: s:^\([^%].*\):: ++++++ findsupplements.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.902155628 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.902155628 +0100 @@ -1,25 +1,25 @@ ---- ./scripts/Makefile.am.orig 2018-07-02 14:43:19.345357110 +0000 -+++ ./scripts/Makefile.am 2018-07-02 14:43:47.245284542 +0000 -@@ -17,7 +17,7 @@ EXTRA_DIST = \ - python-macro-helper \ +--- ./scripts/Makefile.am.orig 2019-06-26 14:17:31.452985634 +0000 ++++ ./scripts/Makefile.am 2019-10-02 12:27:55.885450155 +0000 +@@ -16,7 +16,7 @@ EXTRA_DIST = \ + perl.prov perl.req pythondeps.sh pythondistdeps.py \ rpmdb_loadcvt rpm.daily rpm.log rpm.supp rpm2cpio.sh \ tgpg vpkg-provides.sh \ - find-requires find-provides \ + find-requires find-provides find-supplements \ find-requires.php find-provides.php \ - mono-find-requires mono-find-provides \ ocaml-find-requires.sh ocaml-find-provides.sh \ -@@ -32,7 +32,7 @@ rpmconfig_SCRIPTS = \ + pkgconfigdeps.sh libtooldeps.sh metainfo.prov \ +@@ -29,7 +29,7 @@ rpmconfig_SCRIPTS = \ check-files check-prereqs \ check-buildroot check-rpaths check-rpaths-worker \ debuginfo.prov \ - find-lang.sh find-requires find-provides \ + find-lang.sh find-requires find-provides find-supplements \ perl.prov perl.req pythondeps.sh pythondistdeps.py \ - python-macro-helper \ metainfo.prov \ ---- ./scripts/find-supplements.orig 2018-07-02 14:43:12.877373928 +0000 -+++ ./scripts/find-supplements 2018-07-02 14:43:59.325253127 +0000 + pkgconfigdeps.sh libtooldeps.sh \ +--- ./scripts/find-supplements.orig 2019-10-02 12:27:55.885450155 +0000 ++++ ./scripts/find-supplements 2019-10-02 12:27:55.885450155 +0000 @@ -0,0 +1,3 @@ +#!/bin/sh + ++++++ ignore-auxv.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:36.970155617 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:36.970155617 +0100 @@ -1,6 +1,6 @@ ---- ./lib/rpmrc.c.orig 2014-07-03 15:11:48.572096075 +0000 -+++ ./lib/rpmrc.c 2014-09-17 12:04:27.330717791 +0000 -@@ -79,10 +79,12 @@ struct rpmOption { +--- ./lib/rpmrc.c.orig 2019-06-26 14:17:31.416985688 +0000 ++++ ./lib/rpmrc.c 2019-10-02 09:52:05.076903733 +0000 +@@ -79,11 +79,13 @@ struct rpmOption { int localize; }; @@ -8,21 +8,22 @@ static struct rpmat_s { const char *platform; uint64_t hwcap; + uint64_t hwcap2; } rpmat; +#endif typedef struct defaultEntry_s { char * name; -@@ -936,7 +938,7 @@ static int is_geode(void) +@@ -950,7 +952,7 @@ static int is_geode(void) #endif -#if defined(__linux__) +#if defined(__linux__) && (defined(__powerpc__) || defined(__sparc__) || (defined(__arm__) && defined(__ARM_PCS_VFP))) - /** - * Populate rpmat structure with auxv values - */ -@@ -993,7 +995,7 @@ static void defaultMachine(rpmrcCtx ctx, + #ifndef AT_HWCAP2 /* glibc < 2.18 */ + #define AT_HWCAP2 26 + #endif +@@ -1013,7 +1015,7 @@ static void defaultMachine(rpmrcCtx ctx, canonEntry canon; int rc; ++++++ macrosin.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.006155610 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.006155610 +0100 @@ -1,6 +1,6 @@ ---- ./macros.in.orig 2018-07-02 14:46:14.912900534 +0000 -+++ ./macros.in 2018-07-02 14:50:35.356223235 +0000 -@@ -184,7 +184,7 @@ +--- ./macros.in.orig 2019-10-02 11:13:35.966773848 +0000 ++++ ./macros.in 2019-10-02 11:17:37.210282271 +0000 +@@ -177,7 +177,7 @@ %{?_unique_build_ids:--build-id-seed "%{VERSION}-%{RELEASE}"} \\\ %{?_unique_debug_names:--unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ %{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ @@ -9,7 +9,7 @@ %{?_find_debuginfo_opts} \\\ %{?_debugsource_packages:-S debugsourcefiles.list} \\\ "%{_builddir}/%{?buildsubdir}"\ -@@ -224,7 +224,8 @@ package or when debugging this package.\ +@@ -217,7 +217,8 @@ package or when debugging this package.\ %endif\ %{nil} @@ -19,7 +19,7 @@ %_defaultlicensedir %{_datadir}/licenses # Following macros for filtering auto deps must not be used in spec files. -@@ -278,7 +279,8 @@ package or when debugging this package.\ +@@ -276,7 +277,8 @@ package or when debugging this package.\ %_tmppath %{_var}/tmp # Path to top of build area. @@ -29,8 +29,8 @@ # The path to the unzip executable (legacy, use %{__unzip} instead). %_unzipbin %{__unzip} -@@ -382,7 +384,7 @@ package or when debugging this package.\ - # "w6.lzdio" lzma-alone level 6, lzma's default +@@ -388,7 +390,7 @@ package or when debugging this package.\ + # "w.ufdio" uncompressed # #%_source_payload w9.gzdio -#%_binary_payload w9.gzdio @@ -38,7 +38,7 @@ # Algorithm to use for generating file checksum digests on build. # If not specified or 0, MD5 is used. -@@ -489,6 +491,19 @@ package or when debugging this package.\ +@@ -495,6 +497,19 @@ package or when debugging this package.\ # #%_include_minidebuginfo 1 @@ -58,7 +58,7 @@ # # Include a .gdb_index section in the .debug files. # Requires _enable_debug_packages and gdb-add-index installed. -@@ -521,7 +536,7 @@ package or when debugging this package.\ +@@ -527,7 +542,7 @@ package or when debugging this package.\ # Same as for "separate" but if the __debug_package global is set then # the -debuginfo package will have a compatibility link for the main # ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy @@ -67,7 +67,7 @@ # Whether build-ids should be made unique between package version/releases # when generating debuginfo packages. If set to 1 this will pass -@@ -550,10 +565,10 @@ package or when debugging this package.\ +@@ -556,10 +571,10 @@ package or when debugging this package.\ %_unique_debug_srcs 1 # Whether rpm should put debug source files into its own subpackage @@ -80,7 +80,7 @@ # # Use internal dependency generator rather than external helpers? -@@ -566,6 +581,10 @@ package or when debugging this package.\ +@@ -572,6 +587,10 @@ package or when debugging this package.\ # Directories whose contents should be considered as documentation. %__docdir_path %{_datadir}/doc:%{_datadir}/man:%{_datadir}/info:%{_datadir}/gtk-doc/html:%{?_docdir}:%{?_mandir}:%{?_infodir}:%{?_javadocdir}:/usr/doc:/usr/man:/usr/info:/usr/X11R6/man @@ -91,7 +91,7 @@ # # Path to scripts to autogenerate package dependencies, # -@@ -576,6 +595,7 @@ package or when debugging this package.\ +@@ -582,6 +601,7 @@ package or when debugging this package.\ %__find_requires %{_rpmconfigdir}/find-requires #%__find_conflicts ??? #%__find_obsoletes ??? @@ -99,7 +99,7 @@ # # Path to file attribute classifications for automatic dependency -@@ -654,10 +674,10 @@ package or when debugging this package.\ +@@ -660,10 +680,10 @@ package or when debugging this package.\ # Misc BDB tuning options %__dbi_other mp_mmapsize=128Mb mp_size=1Mb @@ -112,7 +112,7 @@ #============================================================================== # ---- GPG/PGP/PGP5 signature macros. -@@ -969,7 +989,7 @@ package or when debugging this package.\ +@@ -1000,7 +1020,7 @@ package or when debugging this package.\ %_build_vendor %{_host_vendor} %_build_os %{_host_os} %_host @host@ @@ -121,13 +121,13 @@ %_host_cpu @host_cpu@ %_host_vendor @host_vendor@ %_host_os @host_os@ -@@ -1095,7 +1115,9 @@ package or when debugging this package.\ +@@ -1119,7 +1139,9 @@ package or when debugging this package.\ #------------------------------------------------------------------------------ # arch macro for all supported ARM processors --%arm armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl -+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl -+%arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl +-%arm armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl ++%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl ++%arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl +%armb armv4b armv5b armv5teb #------------------------------------------------------------------------------ ++++++ nomagiccheck.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.078155597 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.078155597 +0100 @@ -1,13 +1,13 @@ Don't let rpm complain about a missing /etc/magic.mgc file ---- build/rpmfc.c.orig 2013-07-12 12:16:40.000000000 +0000 -+++ build/rpmfc.c 2013-07-12 12:17:15.000000000 +0000 -@@ -901,7 +901,7 @@ static int initAttrs(rpmfc fc) +--- ./build/rpmfc.c.orig 2019-10-02 11:41:15.063357579 +0000 ++++ ./build/rpmfc.c 2019-10-02 11:41:42.583298884 +0000 +@@ -1065,7 +1065,7 @@ static int initAttrs(rpmfc fc) rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode) { - int msflags = MAGIC_CHECK | MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS; + int msflags = MAGIC_COMPRESS | MAGIC_NO_CHECK_TOKENS; - magic_t ms = NULL; + int nerrors = 0; rpmRC rc = RPMRC_FAIL; ++++++ noprereqdeprec.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.094155594 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.098155594 +0100 @@ -1,20 +1,20 @@ ---- ./build/parsePreamble.c.orig 2017-12-01 15:42:35.766392406 +0000 -+++ ./build/parsePreamble.c 2017-12-01 15:43:29.364237520 +0000 -@@ -996,7 +996,7 @@ static struct PreambleRec_s const preamb - {RPMTAG_SUGGESTNAME, 0, 0, LEN_AND_STR("suggests")}, - {RPMTAG_SUPPLEMENTNAME, 0, 0, LEN_AND_STR("supplements")}, - {RPMTAG_ENHANCENAME, 0, 0, LEN_AND_STR("enhances")}, -- {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")}, -+ {RPMTAG_PREREQ, 2, 0, LEN_AND_STR("prereq")}, - {RPMTAG_CONFLICTNAME, 0, 0, LEN_AND_STR("conflicts")}, - {RPMTAG_OBSOLETENAME, 0, 0, LEN_AND_STR("obsoletes")}, - {RPMTAG_PREFIXES, 0, 0, LEN_AND_STR("prefixes")}, -@@ -1005,7 +1005,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, 0, 1, LEN_AND_STR("buildprereq")}, -+ {RPMTAG_BUILDPREREQ, 0, 0, LEN_AND_STR("buildprereq")}, - {RPMTAG_BUILDREQUIRES, 0, 0, LEN_AND_STR("buildrequires")}, - {RPMTAG_AUTOREQPROV, 0, 0, LEN_AND_STR("autoreqprov")}, - {RPMTAG_AUTOREQ, 0, 0, LEN_AND_STR("autoreq")}, +--- ./build/parsePreamble.c.orig 2019-10-02 11:38:15.807736662 +0000 ++++ ./build/parsePreamble.c 2019-10-02 11:39:12.495617575 +0000 +@@ -1032,7 +1032,7 @@ static struct PreambleRec_s const preamb + {RPMTAG_SUGGESTNAME, 0, 0, 0, LEN_AND_STR("suggests")}, + {RPMTAG_SUPPLEMENTNAME, 0, 0, 0, LEN_AND_STR("supplements")}, + {RPMTAG_ENHANCENAME, 0, 0, 0, LEN_AND_STR("enhances")}, +- {RPMTAG_PREREQ, 2, 1, 0, LEN_AND_STR("prereq")}, ++ {RPMTAG_PREREQ, 2, 0, 0, LEN_AND_STR("prereq")}, + {RPMTAG_CONFLICTNAME, 0, 0, 0, LEN_AND_STR("conflicts")}, + {RPMTAG_OBSOLETENAME, 0, 0, 0, LEN_AND_STR("obsoletes")}, + {RPMTAG_PREFIXES, 0, 0, 1, LEN_AND_STR("prefixes")}, +@@ -1041,7 +1041,7 @@ static struct PreambleRec_s const preamb + {RPMTAG_BUILDARCHS, 0, 0, 0, LEN_AND_STR("buildarchitectures")}, + {RPMTAG_BUILDARCHS, 0, 0, 0, LEN_AND_STR("buildarch")}, + {RPMTAG_BUILDCONFLICTS, 0, 0, 0, LEN_AND_STR("buildconflicts")}, +- {RPMTAG_BUILDPREREQ, 0, 1, 0, LEN_AND_STR("buildprereq")}, ++ {RPMTAG_BUILDPREREQ, 0, 0, 0, LEN_AND_STR("buildprereq")}, + {RPMTAG_BUILDREQUIRES, 0, 0, 0, LEN_AND_STR("buildrequires")}, + {RPMTAG_AUTOREQPROV, 0, 0, 0, LEN_AND_STR("autoreqprov")}, + {RPMTAG_AUTOREQ, 0, 0, 0, LEN_AND_STR("autoreq")}, ++++++ pythondistdeps.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.114155591 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.118155590 +0100 @@ -1,7 +1,8 @@ ---- ./scripts/pythondistdeps.py.orig 2018-08-08 13:40:18.173941320 +0000 -+++ ./scripts/pythondistdeps.py 2018-10-16 09:30:49.271004917 +0000 -@@ -1,4 +1,3 @@ +--- ./scripts/pythondistdeps.py.orig 2019-06-26 10:17:31.454985631 -0400 ++++ ./scripts/pythondistdeps.py 2019-10-31 16:30:37.685850605 -0400 +@@ -1,4 +1,4 @@ -#!/usr/bin/python ++#!/usr/bin/python3 # -*- coding: utf-8 -*- # # Copyright 2010 Per Øyvind Karlsen <[email protected]> ++++++ refreshtestarch.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.130155588 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.138155586 +0100 @@ -1,14 +1,9 @@ Also test architecture in "refresh" test when not colored. This allows updates to different architectures. ---- ./lib/psm.c.orig 2012-03-20 08:07:25.000000000 +0000 -+++ ./lib/psm.c 2012-06-01 10:22:24.000000000 +0000 -@@ -680,13 +680,14 @@ void rpmpsmNotify(rpmpsm psm, int what, - */ - static void markReplacedInstance(rpmts ts, rpmte te) - { -+ /* this must match rpmNameVersionCompare in depends.c */ - rpmdbMatchIterator mi = rpmtsInitIterator(ts, RPMDBI_NAME, rpmteN(te), 0); +--- ./lib/psm.c.orig 2019-10-02 09:54:56.180565818 +0000 ++++ ./lib/psm.c 2019-10-02 09:55:02.700552941 +0000 +@@ -518,9 +518,9 @@ static void markReplacedInstance(rpmts t rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(te)); rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(te)); rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, rpmteR(te)); ++++++ requires-ge-macro.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:37.150155584 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:37.154155584 +0100 @@ -1,12 +1,12 @@ ---- ./macros.in.orig 2011-05-11 15:36:05.000000000 +0000 -+++ ./macros.in 2011-05-11 15:38:44.000000000 +0000 -@@ -1027,7 +1027,8 @@ done \ - # %{perl_sitearch}/Image - # %dir %{perl_sitearch}/auto/Image - # --%requires_eq() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") -+%requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") -+%requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") - %perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch) - %perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib) - %perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch) +--- ./macros.in.orig 2019-10-02 11:33:19.956358174 +0000 ++++ ./macros.in 2019-10-02 11:35:01.496144862 +0000 +@@ -1312,5 +1312,9 @@ end} + %{expand:%__scm_setup_%{__scm} %{!-v:-q}}\ + %{!-N:%autopatch %{-v} %{-p:-p%{-p*}}} + ++# XXX: to be moved to rpm-config-SUSE ++%requires_eq() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") ++%requires_ge() %(echo '%*' | LC_ALL=C xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") ++ + # \endverbatim + #*/ ++++++ rpm-4.14.2.1.tar.bz2 -> rpm-4.15.1.tar.bz2 ++++++ ++++ 286474 lines of diff (skipped) ++++++ rpm-shorten-changelog.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:40.754154941 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:40.758154941 +0100 @@ -1,7 +1,7 @@ ---- ./build/pack.c.orig 2017-10-11 12:39:53.009897937 +0000 -+++ ./build/pack.c 2017-12-04 16:02:29.299440578 +0000 -@@ -641,6 +641,71 @@ static rpmRC checkPackages(char *pkgchec - return RPMRC_OK; +--- ./build/pack.c.orig 2019-06-26 14:17:31.395985720 +0000 ++++ ./build/pack.c 2019-10-02 11:31:05.908639084 +0000 +@@ -743,11 +743,78 @@ static rpmRC packageBinary(rpmSpec spec, + return rc; } +static void trimChangelog(Header h) @@ -71,18 +71,17 @@ + rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating) { - rpmRC rc; -@@ -648,6 +713,7 @@ rpmRC packageBinaries(rpmSpec spec, cons + rpmRC rc = RPMRC_OK; Package pkg; - char *pkglist = NULL; + trimChangelog(spec->packages->header); - for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) { - char *fn; - ---- ./build/parseChangelog.c.orig 2017-10-05 10:04:56.859602170 +0000 -+++ ./build/parseChangelog.c 2017-12-04 14:47:41.249346774 +0000 -@@ -255,6 +255,11 @@ static rpmRC addChangelog(Header h, ARGV ++ + /* Run binary creation in parallel */ + #pragma omp parallel + #pragma omp single +--- ./build/parseChangelog.c.orig 2019-06-26 14:17:31.395985720 +0000 ++++ ./build/parseChangelog.c 2019-10-02 11:29:26.684840735 +0000 +@@ -253,6 +253,11 @@ static rpmRC addChangelog(Header h, ARGV goto exit; } ++++++ rpmrc.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:40.826154928 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:40.826154928 +0100 @@ -1,5 +1,5 @@ ---- ./rpmrc.in.orig 2017-10-05 10:04:57.571602038 +0000 -+++ ./rpmrc.in 2017-12-01 15:03:23.956144776 +0000 +--- ./rpmrc.in.orig 2019-06-26 14:17:31.451985635 +0000 ++++ ./rpmrc.in 2019-10-02 11:24:49.601403844 +0000 @@ -12,16 +12,16 @@ # "fat" binary with both archs, for Darwin optflags: fat -O2 -g -arch i386 -arch ppc @@ -65,9 +65,9 @@ -optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 +optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mthumb -mabi=aapcs-linux optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon - - optflags: m68k -O2 -g -fomit-frame-pointer -@@ -91,8 +92,8 @@ optflags: atariclone -O2 -g -fomit-frame + optflags: armv8l -O2 -g -march=armv8-a + optflags: armv8hl -O2 -g -march=armv8-a -mfloat-abi=hard -mfpu=vfpv4 +@@ -95,8 +96,8 @@ optflags: atariclone -O2 -g -fomit-frame optflags: milan -O2 -g -fomit-frame-pointer optflags: hades -O2 -g -fomit-frame-pointer @@ -78,7 +78,7 @@ optflags: sh3 -O2 -g optflags: sh4 -O2 -g -mieee -@@ -288,17 +289,17 @@ os_canon: MacOSX: macosx 21 +@@ -300,17 +301,17 @@ os_canon: MacOSX: macosx 21 ############################################################# # For a given uname().machine, the default build arch @@ -104,7 +104,7 @@ buildarchtranslate: i486: i386 buildarchtranslate: i386: i386 -@@ -320,6 +321,7 @@ buildarchtranslate: sparc64v: sparc64 +@@ -332,6 +333,7 @@ buildarchtranslate: sparc64v: sparc64 buildarchtranslate: osfmach3_ppc: ppc buildarchtranslate: powerpc: ppc buildarchtranslate: powerppc: ppc @@ -112,7 +112,7 @@ buildarchtranslate: ppc8260: ppc buildarchtranslate: ppc8560: ppc buildarchtranslate: ppc32dy4: ppc -@@ -381,6 +383,15 @@ buildarchtranslate: aarch64: aarch64 +@@ -398,6 +400,15 @@ buildarchtranslate: arm64: aarch64 buildarchtranslate: riscv: riscv64 buildarchtranslate: riscv64: riscv64 @@ -128,7 +128,7 @@ ############################################################# # Architecture compatibility -@@ -445,15 +456,21 @@ arch_compat: mips64r6el: mipsr6el +@@ -462,16 +473,20 @@ arch_compat: mips64r6el: mipsr6el arch_compat: hppa2.0: hppa1.2 arch_compat: hppa1.2: hppa1.1 arch_compat: hppa1.1: hppa1.0 @@ -140,9 +140,8 @@ +arch_compat: armv5teb: armv5b +arch_compat: armv5b: armv4b arch_compat: armv4b: noarch -+arch_compat: armv7hl: armv7l + arch_compat: armv8l: armv7l arch_compat: armv7l: armv6l -+arch_compat: armv6hl: armv6l arch_compat: armv6l: armv5tejl arch_compat: armv5tejl: armv5tel arch_compat: armv5tel: armv5tl @@ -152,7 +151,7 @@ arch_compat: armv4tl: armv4l arch_compat: armv4l: armv3l arch_compat: armv3l: noarch -@@ -475,7 +492,7 @@ arch_compat: i370: noarch +@@ -497,7 +512,7 @@ arch_compat: i370: noarch arch_compat: s390: noarch arch_compat: s390x: s390 noarch @@ -161,17 +160,7 @@ arch_compat: x86_64: amd64 em64t athlon noarch arch_compat: amd64: x86_64 em64t athlon noarch -@@ -578,7 +595,9 @@ buildarch_compat: mips64r6: noarch - buildarch_compat: mips64r6el: noarch - - buildarch_compat: armv4b: noarch -+buildarch_compat: armv7hl: armv7l - buildarch_compat: armv7l: armv6l -+buildarch_compat: armv6hl: armv6l - buildarch_compat: armv6l: armv5tejl - buildarch_compat: armv5tejl: armv5tel armv5tl - buildarch_compat: armv5tel: armv4tl armv5tl -@@ -594,7 +613,8 @@ buildarch_compat: armv6hl: noarch +@@ -623,7 +638,8 @@ buildarch_compat: armv6hl: noarch buildarch_compat: hppa2.0: hppa1.2 buildarch_compat: hppa1.2: hppa1.1 buildarch_compat: hppa1.1: hppa1.0 ++++++ safeugid.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:40.846154925 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:40.846154925 +0100 @@ -1,211 +1,214 @@ ---- ./lib/rpmchroot.c.orig 2012-11-07 12:55:24.000000000 +0000 -+++ ./lib/rpmchroot.c 2014-02-20 12:50:05.360815211 +0000 -@@ -66,6 +66,7 @@ int rpmChrootIn(void) - } else if (rootState.chrootDone == 0) { - if (chdir("/") == 0 && chroot(rootState.rootDir) == 0) { - rootState.chrootDone = 1; -+ rpmugChroot(1); - } else { - rpmlog(RPMLOG_ERR, _("Unable to change root directory: %m\n")); - rc = -1; -@@ -91,6 +92,7 @@ int rpmChrootOut(void) - } else if (rootState.chrootDone == 1) { - if (chroot(".") == 0 && fchdir(rootState.cwd) == 0) { - rootState.chrootDone = 0; -+ rpmugChroot(0); - } else { - rpmlog(RPMLOG_ERR, _("Unable to restore root directory: %m\n")); - rc = -1; ---- ./lib/rpmug.c.orig 2014-02-05 13:04:37.000000000 +0000 -+++ ./lib/rpmug.c 2014-02-20 12:50:05.361815211 +0000 -@@ -10,6 +10,47 @@ - #include "lib/rpmug.h" - #include "debug.h" - -+#if defined(__GLIBC__) -+ -+static int inchroot; -+ -+/* -+ * Unfortunatelly glibc caches nss/nscd data and there is no -+ * good way to flush those caches when we did a chroot(). Thus -+ * we need to parse /etc/passwd and /etc/group ourselfs. -+ */ -+static int safe_lookup(const char * file, const char * name) -+{ -+ FILE *fp; -+ int l; -+ char buf[4096], *p; -+ -+ if (!name || !*name) -+ return -1; -+ l = strlen(name); -+ if ((fp = fopen(file, "r")) == 0) -+ return -1; -+ while ((p = fgets(buf, sizeof(buf), fp)) != 0) { -+ if (*p == '#') -+ continue; -+ while (*p && (*p == ' ' || *p == '\t')) -+ p++; -+ if (strncmp(p, name, l) != 0 || p[l] != ':') -+ continue; -+ p = strchr(p + l + 1, ':'); -+ if (!p) -+ continue; -+ fclose(fp); -+ p++; -+ while (*p && (*p == ' ' || *p == '\t')) -+ p++; -+ return atoi(p); -+ } -+ fclose(fp); -+ return -1; -+} -+#endif -+ - /* - * 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 -@@ -43,17 +84,28 @@ int rpmugUid(const char * thisUname, uid - lastUnameAlloced = thisUnameLen + 10; - lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */ - } -- strcpy(lastUname, thisUname); - -- pwent = getpwnam(thisUname); -- if (pwent == NULL) { -- /* FIX: shrug */ -- endpwent(); -+#if defined(__GLIBC__) -+ if (inchroot) { -+ int uid = safe_lookup("/etc/passwd", thisUname); -+ if (uid < 0) -+ return -1; -+ lastUid = uid; -+ } else -+#endif -+ { - pwent = getpwnam(thisUname); -- if (pwent == NULL) return -1; -+ if (pwent == NULL) { -+ /* FIX: shrug */ -+ endpwent(); -+ pwent = getpwnam(thisUname); -+ if (pwent == NULL) return -1; -+ } -+ lastUid = pwent->pw_uid; - } - -- lastUid = pwent->pw_uid; -+ strcpy(lastUname, thisUname); -+ lastUnameLen = thisUnameLen; - } - - *uid = lastUid; -@@ -86,18 +138,29 @@ int rpmugGid(const char * thisGname, gid - lastGnameAlloced = thisGnameLen + 10; - lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */ - } -- strcpy(lastGname, thisGname); - -- grent = getgrnam(thisGname); -- if (grent == NULL) { -- /* FIX: shrug */ -- endgrent(); -+#if defined(__GLIBC__) -+ if (inchroot) { -+ int gid = safe_lookup("/etc/group", thisGname); -+ if (gid < 0) -+ return -1; -+ lastGid = gid; -+ } else -+#endif -+ { - grent = getgrnam(thisGname); - if (grent == NULL) { -- return -1; -+ /* FIX: shrug */ -+ endgrent(); -+ grent = getgrnam(thisGname); -+ if (grent == NULL) { -+ return -1; -+ } - } -+ lastGid = grent->gr_gid; - } -- lastGid = grent->gr_gid; -+ strcpy(lastGname, thisGname); -+ lastGnameLen = thisGnameLen; - } - - *gid = lastGid; -@@ -109,7 +172,7 @@ const char * rpmugUname(uid_t uid) - { - 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; -@@ -126,9 +189,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); - -@@ -140,7 +203,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; -@@ -157,9 +220,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); - -@@ -189,3 +252,16 @@ void rpmugFree(void) - rpmugUname(-1); - rpmugGname(-1); - } -+ -+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 2014-02-05 13:04:02.000000000 +0000 -+++ ./lib/rpmug.h 2014-02-20 12:50:05.362815211 +0000 -@@ -15,4 +15,6 @@ int rpmugInit(void); - - void rpmugFree(void); - -+void rpmugChroot(int in); -+ - #endif /* _RPMUG_H */ +--- ../safeugid.diff 2019-10-02 13:37:13.191868203 +0200 ++++ P 2019-10-02 13:36:09.036002978 +0200 +@@ -0,0 +1,211 @@ ++--- ./lib/rpmchroot.c.orig 2019-06-26 14:17:31.411985696 +0000 +++++ ./lib/rpmchroot.c 2019-10-02 11:35:58.788024507 +0000 ++@@ -126,6 +126,7 @@ int rpmChrootIn(void) ++ ++ if (chdir("/") == 0 && chroot(rootState.rootDir) == 0) { ++ rootState.chrootDone = 1; +++ rpmugChroot(1); ++ } else { ++ rpmlog(RPMLOG_ERR, _("Unable to change root directory: %m\n")); ++ rc = -1; ++@@ -151,6 +152,7 @@ int rpmChrootOut(void) ++ } else if (rootState.chrootDone == 1) { ++ if (chroot(".") == 0 && fchdir(rootState.cwd) == 0) { ++ rootState.chrootDone = 0; +++ rpmugChroot(0); ++ } else { ++ rpmlog(RPMLOG_ERR, _("Unable to restore root directory: %m\n")); ++ rc = -1; ++--- ./lib/rpmug.c.orig 2019-06-26 14:17:31.418985685 +0000 +++++ ./lib/rpmug.c 2019-10-02 11:35:58.788024507 +0000 ++@@ -11,6 +11,47 @@ ++ #include "lib/rpmug.h" ++ #include "debug.h" ++ +++#if defined(__GLIBC__) +++ +++static int inchroot; +++ +++/* +++ * Unfortunatelly glibc caches nss/nscd data and there is no +++ * good way to flush those caches when we did a chroot(). Thus +++ * we need to parse /etc/passwd and /etc/group ourselfs. +++ */ +++static int safe_lookup(const char * file, const char * name) +++{ +++ FILE *fp; +++ int l; +++ char buf[4096], *p; +++ +++ if (!name || !*name) +++ return -1; +++ l = strlen(name); +++ if ((fp = fopen(file, "r")) == 0) +++ return -1; +++ while ((p = fgets(buf, sizeof(buf), fp)) != 0) { +++ if (*p == '#') +++ continue; +++ while (*p && (*p == ' ' || *p == '\t')) +++ p++; +++ if (strncmp(p, name, l) != 0 || p[l] != ':') +++ continue; +++ p = strchr(p + l + 1, ':'); +++ if (!p) +++ continue; +++ fclose(fp); +++ p++; +++ while (*p && (*p == ' ' || *p == '\t')) +++ p++; +++ return atoi(p); +++ } +++ fclose(fp); +++ return -1; +++} +++#endif +++ ++ /* ++ * 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 ++@@ -44,17 +85,28 @@ int rpmugUid(const char * thisUname, uid ++ lastUnameAlloced = thisUnameLen + 10; ++ lastUname = xrealloc(lastUname, lastUnameAlloced); /* XXX memory leak */ ++ } ++- strcpy(lastUname, thisUname); ++ ++- pwent = getpwnam(thisUname); ++- if (pwent == NULL) { ++- /* FIX: shrug */ ++- endpwent(); +++#if defined(__GLIBC__) +++ if (inchroot) { +++ int uid = safe_lookup("/etc/passwd", thisUname); +++ if (uid < 0) +++ return -1; +++ lastUid = uid; +++ } else +++#endif +++ { ++ pwent = getpwnam(thisUname); ++- if (pwent == NULL) return -1; +++ if (pwent == NULL) { +++ /* FIX: shrug */ +++ endpwent(); +++ pwent = getpwnam(thisUname); +++ if (pwent == NULL) return -1; +++ } +++ lastUid = pwent->pw_uid; ++ } ++ ++- lastUid = pwent->pw_uid; +++ strcpy(lastUname, thisUname); +++ lastUnameLen = thisUnameLen; ++ } ++ ++ *uid = lastUid; ++@@ -87,18 +139,29 @@ int rpmugGid(const char * thisGname, gid ++ lastGnameAlloced = thisGnameLen + 10; ++ lastGname = xrealloc(lastGname, lastGnameAlloced); /* XXX memory leak */ ++ } ++- strcpy(lastGname, thisGname); ++ ++- grent = getgrnam(thisGname); ++- if (grent == NULL) { ++- /* FIX: shrug */ ++- endgrent(); +++#if defined(__GLIBC__) +++ if (inchroot) { +++ int gid = safe_lookup("/etc/group", thisGname); +++ if (gid < 0) +++ return -1; +++ lastGid = gid; +++ } else +++#endif +++ { ++ grent = getgrnam(thisGname); ++ if (grent == NULL) { ++- return -1; +++ /* FIX: shrug */ +++ endgrent(); +++ grent = getgrnam(thisGname); +++ if (grent == NULL) { +++ return -1; +++ } ++ } +++ lastGid = grent->gr_gid; ++ } ++- lastGid = grent->gr_gid; +++ strcpy(lastGname, thisGname); +++ lastGnameLen = thisGnameLen; ++ } ++ ++ *gid = lastGid; ++@@ -110,7 +173,7 @@ const char * rpmugUname(uid_t uid) ++ { ++ 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; ++@@ -127,9 +190,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); ++ ++@@ -141,7 +204,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; ++@@ -158,9 +221,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); ++ ++@@ -192,3 +255,16 @@ void rpmugFree(void) ++ rpmugUname(-1); ++ rpmugGname(-1); ++ } +++ +++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 2019-06-26 14:17:31.418985685 +0000 +++++ ./lib/rpmug.h 2019-10-02 11:35:58.788024507 +0000 ++@@ -15,4 +15,6 @@ int rpmugInit(void); ++ ++ void rpmugFree(void); ++ +++void rpmugChroot(int in); +++ ++ #endif /* _RPMUG_H */ ++++++ suspendlock.diff ++++++ --- /var/tmp/diff_new_pack.Ba2uKp/_old 2020-01-10 17:47:40.870154921 +0100 +++ /var/tmp/diff_new_pack.Ba2uKp/_new 2020-01-10 17:47:40.870154921 +0100 @@ -2,8 +2,8 @@ read access in scriptlets. Only needed for DB_PRIVATE (aka global) locking. ---- ./lib/backend/db3.c.orig 2017-12-01 14:27:03.193486711 +0000 -+++ ./lib/backend/db3.c 2017-12-01 14:27:23.747426200 +0000 +--- ./lib/backend/db3.c.orig 2019-10-02 09:56:46.416347458 +0000 ++++ ./lib/backend/db3.c 2019-10-02 09:56:52.084335992 +0000 @@ -552,6 +552,46 @@ static void db3_dbSetFSync(rpmdb rdb, in static int db3_Ctrl(rpmdb rdb, dbCtrlOp ctrl) @@ -51,8 +51,8 @@ return 0; } ---- ./lib/backend/dbi.h.orig 2017-12-01 14:27:03.193486711 +0000 -+++ ./lib/backend/dbi.h 2017-12-01 14:27:23.747426200 +0000 +--- ./lib/backend/dbi.h.orig 2019-10-02 09:56:46.416347458 +0000 ++++ ./lib/backend/dbi.h 2019-10-02 09:56:52.084335992 +0000 @@ -17,7 +17,9 @@ typedef enum dbCtrlOp_e { DB_CTRL_UNLOCK_RO = 2, DB_CTRL_LOCK_RW = 3, @@ -64,9 +64,9 @@ } dbCtrlOp; typedef struct dbiIndex_s * dbiIndex; ---- ./lib/rpmdb.c.orig 2017-12-01 14:27:03.190486720 +0000 -+++ ./lib/rpmdb.c 2017-12-01 14:27:23.748426197 +0000 -@@ -2639,6 +2639,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl +--- ./lib/rpmdb.c.orig 2019-10-02 09:56:46.416347458 +0000 ++++ ./lib/rpmdb.c 2019-10-02 09:56:52.084335992 +0000 +@@ -2644,6 +2644,12 @@ int rpmdbCtrl(rpmdb db, rpmdbCtrlOp ctrl case RPMDB_CTRL_INDEXSYNC: dbctrl = DB_CTRL_INDEXSYNC; break; @@ -79,8 +79,8 @@ } return dbctrl ? dbCtrl(db, dbctrl) : 1; } ---- ./lib/rpmdb.h.orig 2017-10-05 10:04:57.035602138 +0000 -+++ ./lib/rpmdb.h 2017-12-01 14:27:23.748426197 +0000 +--- ./lib/rpmdb.h.orig 2019-06-26 14:17:31.412985694 +0000 ++++ ./lib/rpmdb.h 2019-10-02 09:56:52.088335984 +0000 @@ -35,7 +35,9 @@ typedef enum rpmdbCtrlOp_e { RPMDB_CTRL_UNLOCK_RO = 2, RPMDB_CTRL_LOCK_RW = 3, @@ -92,24 +92,24 @@ } rpmdbCtrlOp; /** \ingroup rpmdb ---- ./lib/transaction.c.orig 2017-12-01 14:27:23.750426192 +0000 -+++ ./lib/transaction.c 2017-12-01 14:28:43.232192224 +0000 -@@ -1457,6 +1457,7 @@ rpmRC runScript(rpmts ts, rpmte te, Head - stag != RPMTAG_PREUN && - stag != RPMTAG_PRETRANS && - stag != RPMTAG_VERIFYSCRIPT); +--- ./lib/transaction.c.orig 2019-10-02 09:56:52.088335984 +0000 ++++ ./lib/transaction.c 2019-10-02 09:58:36.956123870 +0000 +@@ -1601,6 +1601,7 @@ rpmRC runScript(rpmts ts, rpmte te, Head + rpmTagVal stag = rpmScriptTag(script); + FD_t sfd = NULL; + int warn_only = !(rpmScriptFlags(script) & RPMSCRIPT_FLAG_CRITICAL); + rpmdb rdb = rpmtsGetRdb(ts); - /* Fake up a transaction element for triggers from rpmdb */ + /* Create a temporary transaction element for triggers from rpmdb */ if (te == NULL) { -@@ -1468,10 +1469,12 @@ rpmRC runScript(rpmts ts, rpmte te, Head +@@ -1612,10 +1613,12 @@ rpmRC runScript(rpmts ts, rpmte te, Head if (sfd == NULL) sfd = rpmtsScriptFd(ts); + rpmdbCtrl(rdb, RPMDB_CTRL_SUSPEND_DBLOCK); rpmswEnter(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0); rc = rpmScriptRun(script, arg1, arg2, sfd, - prefixes, warn_only, rpmtsPlugins(ts)); + prefixes, rpmtsPlugins(ts)); rpmswExit(rpmtsOp(ts, RPMTS_OP_SCRIPTLETS), 0); + rpmdbCtrl(rdb, RPMDB_CTRL_RESUME_DBLOCK);
