]> git.pld-linux.org Git - packages/rpm.git/commitdiff
make -lib depend on elfutils-libs instead of elfutils; rel 7 master auto/th/rpm-4.17.1.1-7
authorJan Palus <atler@pld-linux.org>
Thu, 18 Apr 2024 12:19:45 +0000 (14:19 +0200)
committerJan Palus <atler@pld-linux.org>
Thu, 18 Apr 2024 12:19:45 +0000 (14:19 +0200)
183 files changed:
README.cpu-os-macros [deleted file]
allow-at-in-ver-rel.patch [new file with mode: 0644]
arm_abi.patch [new file with mode: 0644]
build-locale.patch [new file with mode: 0644]
cpu-os-macros.a [deleted file]
cpuinfo-deps.patch [new file with mode: 0644]
dbupgrade.sh [deleted file]
default-patch-flags.patch [new file with mode: 0644]
disable-header-verification.patch [deleted file]
do_not_write_before_macro_buffer.patch [deleted file]
dont-install-useless-scripts.patch [deleted file]
extension-based-compression-detection.patch [deleted file]
fast_python_deps.patch [deleted file]
gcc6-stdlib.patch [deleted file]
gem-in-package-builddir.patch [new file with mode: 0644]
glibc.patch [deleted file]
ix86-platforms.patch [new file with mode: 0644]
libtool.attr [new file with mode: 0644]
libtooldeps.sh [new file with mode: 0644]
macros.local
macros.pld.in [deleted file]
missing-doc-terminate-build.patch [new file with mode: 0644]
missing-ghost-terminate-build.patch [new file with mode: 0644]
missing-macros.patch [new file with mode: 0644]
no-exe-for-elf-req.patch [new file with mode: 0644]
noexpand.patch [new file with mode: 0644]
openmp.patch [deleted file]
perl-heredoc-matching.patch [new file with mode: 0644]
perl.prov
pkgconfig.patch [new file with mode: 0644]
pl-po.patch [new file with mode: 0644]
prov-req-macros [deleted file]
py-disable-fetch.patch [deleted file]
python-internal-build.patch [new file with mode: 0644]
python-libx32.patch [deleted file]
python-rpmsense-missingok.patch [deleted file]
python2_explicit.patch [deleted file]
rpm-5.4.10-dont-try-generate-rpmfc-dependencies-from-doc-files.patch [deleted file]
rpm-5.4.10-duplicate_files_terminate_build.patch [deleted file]
rpm-5.4.10-files-listed-twice-terminates-build.patch [deleted file]
rpm-5.4.10-fix-neon-saving-error-pages-as-target-file.patch [deleted file]
rpm-5.4.10-support-ignore-arch-and-os-again.patch [deleted file]
rpm-5.4.10-unpackaged_subdirs_terminate_build.patch [deleted file]
rpm-5.4.12-copy-Value-string.patch [deleted file]
rpm-5.4.12-fix-rpmlua-print.patch [deleted file]
rpm-5.4.12-fix-rpmpython-module-import-init.patch [deleted file]
rpm-5.4.12-truncate-output-buffer-after-use.patch [deleted file]
rpm-5.4.13-perl-bindings-do-not-use-xmalloc.patch [deleted file]
rpm-5.4.14-no-assert-abort-with-broken-headers.patch [deleted file]
rpm-5.4.14-rpmdbchk.patch [deleted file]
rpm-5.4.15-use-DSA-sig.patch [deleted file]
rpm-5.4.4-add-_specfile-macro.patch [deleted file]
rpm-5.4.4-allow-installation-of-repackaged-rpms.patch [deleted file]
rpm-5.4.4-drop-useless-auto-generated-pkgconfig-dependency.patch [deleted file]
rpm-5.4.4-fix-rpmconstant-to-always-use-LC_CTYPE-C-for-case-conversion.patch [deleted file]
rpm-5.4.4-fix-same-package-with-epoch-possible-to-upgrade.patch [deleted file]
rpm-5.4.4-glob-wildcards-for-loading-macro-files.patch [deleted file]
rpm-5.4.4-pass-_builddir-properly-to-find-debuginfo.patch [deleted file]
rpm-5.4.4-pkgconfigdeps-check-path.patch [deleted file]
rpm-5.4.4-rpmbuild-withoutclean.patch [deleted file]
rpm-5.4.5-python-export-spec-macros.patch [deleted file]
rpm-5.4.5-rpmfc-apply-python-coloring-from-magic.patch [deleted file]
rpm-5.4.5-skip-dependencies-for-character-devices.patch [deleted file]
rpm-5.4.7-dont-consider-trigger-dependencies-as-overlapping.patch [deleted file]
rpm-5.4.7-fix-generation-of-ruby-abi-provides.patch [deleted file]
rpm-5.4.7-fix-minor-memleaks.patch [deleted file]
rpm-5.4.7-hdrfmt-fix-unitialized-argv-element.patch [deleted file]
rpm-5.4.7-kmod-dependencies.patch [deleted file]
rpm-5.4.7-no-seqid_init-on-rdonly-database.patch [deleted file]
rpm-5.4.8-dont-show-suggests-with-requires.patch [deleted file]
rpm-5.4.9-avoid-dependencies-on-self.patch [deleted file]
rpm-5.4.9-avoid-double-slash-in-path-for-dirname-filetrigger-matching.patch [deleted file]
rpm-5.4.9-disable-l10ndir.patch [deleted file]
rpm-5.4.9-fix-rpm_qa-pattern.patch [deleted file]
rpm-5.4.9-fix-verify-segfault.patch [deleted file]
rpm-5.4.9-font-provides.patch [deleted file]
rpm-5.4.9-keep-loading-script-macros.patch [deleted file]
rpm-5.4.9-mire-fix-strings-lacking-null-terminator.patch [deleted file]
rpm-5.4.9-rpmfc-extract-dependencies-for-all-files.patch [deleted file]
rpm-5.4.9-rpmpython-fix-input.patch [deleted file]
rpm-5.4.9-strip-buildroot-away-from-duplicate-files-list.patch [deleted file]
rpm-5.4.9-support-signatures-and-digest-disablers.patch [deleted file]
rpm-5.4.9-update-rpmfc-when-removing-dependencies-on-self.patch [deleted file]
rpm-CVE-2013-6435.patch [deleted file]
rpm-CVE-2014-8118.patch [deleted file]
rpm-DB_CONFIG.patch [deleted file]
rpm-URPM-build-fix.patch [deleted file]
rpm-branch.patch [deleted file]
rpm-bug-420.patch [deleted file]
rpm-builddir-readlink.patch
rpm-changelog-encoding.patch [deleted file]
rpm-changelog_order_check_nonfatal.patch
rpm-clean-docdir.patch
rpm-cleanbody.patch [deleted file]
rpm-cppcompat.patch [deleted file]
rpm-db5.2.patch [deleted file]
rpm-db_buffer_small.patch [deleted file]
rpm-debuginfo.patch
rpm-dir-macros-relative.patch [new file with mode: 0644]
rpm-dirdeps-macro.patch [deleted file]
rpm-disable-hmac-verify.patch [deleted file]
rpm-dont-copy-descriptive-tags.patch [deleted file]
rpm-dont-treat-gstreamer-modules-as-font.patch [deleted file]
rpm-double_check_file_deps.patch [deleted file]
rpm-double_check_unpackaged_subdirs.patch [deleted file]
rpm-file-output-for-ELF.patch [deleted file]
rpm-fix--p-interpreter-and-empty-script.patch [deleted file]
rpm-fix-___build_pre-macro.patch [deleted file]
rpm-fix-compress-doc.patch [deleted file]
rpm-fix-filedigests-verify.patch [deleted file]
rpm-fix-internal-lua-build.patch [deleted file]
rpm-fix-missing-types-in-headers.patch [deleted file]
rpm-gendiff.patch [deleted file]
rpm-gettext-in-header.patch [deleted file]
rpm-gpg-pinentry.patch [deleted file]
rpm-gst-inspect-typo.patch [deleted file]
rpm-hack-norpmlibdep.patch [deleted file]
rpm-helperEVR-noassert.patch [deleted file]
rpm-hrmib-cache [deleted file]
rpm-ignore-missing-macro-files.patch
rpm-installbeforeerase.patch [deleted file]
rpm-javadeps.patch [deleted file]
rpm-libmagic-locale.patch [deleted file]
rpm-libtool-deps.patch [deleted file]
rpm-lua-enable-extra-libs.patch [deleted file]
rpm-lua-expat.patch [deleted file]
rpm-lua.patch [deleted file]
rpm-macros.patch [deleted file]
rpm-man_pl.patch
rpm-mimetype.patch [deleted file]
rpm-missing-patch-file-fails-build.patch [deleted file]
rpm-namespace-compare.patch [deleted file]
rpm-noarch_py_prov.patch [new file with mode: 0644]
rpm-nosetproctitle.patch [deleted file]
rpm-notsc.patch [deleted file]
rpm-null-term-ascii-digest.patch [deleted file]
rpm-old-fileconflicts-behaviour.patch [deleted file]
rpm-parseSpec-skip-empty-tags.patch [deleted file]
rpm-pattern_Release.patch [deleted file]
rpm-payload-use-hashed-inode.patch [deleted file]
rpm-perl-macros.patch
rpm-perl-magic.patch
rpm-perl-req-perlfile.patch
rpm-perl_req-INC_dirs.patch
rpm-php-deps.patch [deleted file]
rpm-popt-aliases.patch
rpm-popt-coreutils.patch [deleted file]
rpm-postun-nofail.patch
rpm-preserve-iterator.patch [deleted file]
rpm-preserve-tag-type.patch [deleted file]
rpm-python-enable-compat-RPMSENSE.patch [deleted file]
rpm-python-sitescriptdir.patch [deleted file]
rpm-python-spec-header.patch [deleted file]
rpm-pythoneggs.patch [deleted file]
rpm-query-always-noisy.patch [deleted file]
rpm-remove-misleading-missing-patch-message.patch [deleted file]
rpm-repackage-dont-force-max-compression.patch [deleted file]
rpm-revert-gpg-argv-parsing.patch [deleted file]
rpm-rpm2cpio.patch [deleted file]
rpm-rpmspec.patch [deleted file]
rpm-rpmtdnext.patch [deleted file]
rpm-scripts-closefds.patch
rpm-semanage.patch [deleted file]
rpm-silence-RPM_CHAR_TYPE.patch [deleted file]
rpm-sparc64.patch [deleted file]
rpm-truncate-cvslog.patch [deleted file]
rpm-unglobal.patch [deleted file]
rpm-verify-ghosts-broken-logic.patch [deleted file]
rpm.groups
rpm.noautocompressdoc [deleted file]
rpm.spec
rpm.sysinfo [deleted file]
rpm5-db-compat.patch [new file with mode: 0644]
rpmdb_checkversion.c [deleted file]
rpmdb_reset.c [deleted file]
rpmio-read-proc-files.patch [new file with mode: 0644]
shortcircuited-deps.patch [new file with mode: 0644]
skip-ldconfig-optimization.patch [deleted file]
skip-symlinks.patch [new file with mode: 0644]
sqlite-log-crash.patch [new file with mode: 0644]
uname-deps.patch [new file with mode: 0644]
vendor-pld.patch [deleted file]
x32.patch

diff --git a/README.cpu-os-macros b/README.cpu-os-macros
deleted file mode 100644 (file)
index cc27bcb..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-In order to more easily cope with merges and avoid issues with binary formats,
-we're now using the ar format which will give us a pure ascii archive that'll
-make it possible to track & merge individual changes like with other text files.
-Unfortunately the format doesn't support paths..
-
-recommended way of making changes and updating archive:
-rm -rf foo
-mkdir foo
-cd foo
-ar x ../cpu-os-macros.a
-<perform your changes>
-cd -
-# preserve order of files within the archive
-LC_ALL=C /bin/sh -c 'ar cDr cpu-os-macros.a foo/*macros'
diff --git a/allow-at-in-ver-rel.patch b/allow-at-in-ver-rel.patch
new file mode 100644 (file)
index 0000000..06241f8
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.0/build/rpmbuild_internal.h~      2020-05-28 12:04:25.000000000 +0200
++++ rpm-4.16.0/build/rpmbuild_internal.h       2020-11-21 19:32:47.432243301 +0100
+@@ -18,7 +18,7 @@
+ #undef HTDATATYPE
+ #define ALLOWED_CHARS_NAME ".-_+%{}"
+-#define ALLOWED_CHARS_VERREL "._+%{}~^"
++#define ALLOWED_CHARS_VERREL "._+%{}~^@"
+ #define ALLOWED_CHARS_EVR ALLOWED_CHARS_VERREL "-:"
+ #define LEN_AND_STR(_tag) (sizeof(_tag)-1), (_tag)
diff --git a/arm_abi.patch b/arm_abi.patch
new file mode 100644 (file)
index 0000000..57c970b
--- /dev/null
@@ -0,0 +1,17 @@
+--- rpm-4.16.1.3/installplatform.orig  2021-03-28 17:56:17.725422731 +0200
++++ rpm-4.16.1.3/installplatform       2021-03-28 17:57:04.278251530 +0200
+@@ -111,12 +111,14 @@
+       ISABITS=32
+       CANONARCH=arm
+       CANONCOLOR=0
++      APPEND_TARGET_ABI=1
+       ;;
+     arm*)
+       ISANAME=`echo ${ARCH} | sed "s/^\([^-]*\)-.*/\1/"`
+       ISABITS=32
+       CANONARCH=arm
+       CANONCOLOR=0
++      APPEND_TARGET_ABI=1
+       ;;
+     alpha*)
+       ISANAME=alpha
diff --git a/build-locale.patch b/build-locale.patch
new file mode 100644 (file)
index 0000000..49a846b
--- /dev/null
@@ -0,0 +1,15 @@
+--- rpm-4.16.1.2.org/macros.in 2021-02-25 08:15:48.438647368 +0100
++++ rpm-4.16.1.2/macros.in     2021-02-25 08:18:39.103948354 +0100
+@@ -818,9 +818,11 @@ package or when debugging this package.\
+   RPM_PACKAGE_VERSION=\"%{VERSION}\"\
+   RPM_PACKAGE_RELEASE=\"%{RELEASE}\"\
+   export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\
++  LC_ALL=C\
++  export LC_ALL\
+   LANG=C\
+   export LANG\
+-  unset CDPATH DISPLAY ||:\
++  unset CDPATH DISPLAY LANGUAGE LINGUAS PERL_MM_OPT||:\
+   %{?buildroot:RPM_BUILD_ROOT=\"%{u2p:%{buildroot}}\"\
+   export RPM_BUILD_ROOT}\
+   %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
diff --git a/cpu-os-macros.a b/cpu-os-macros.a
deleted file mode 100644 (file)
index 716e45a..0000000
+++ /dev/null
@@ -1,708 +0,0 @@
-!<arch>
-//                                              730       `
-alpha-linux.macros/
-alphaev5-linux.macros/
-alphaev56-linux.macros/
-alphaev6-linux.macros/
-alphaev67-linux.macros/
-alphapca56-linux.macros/
-amd64-linux.macros/
-armv7l-linux.macros/
-athlon-linux.macros/
-i386-linux.macros/
-i486-linux.macros/
-i586-linux.macros/
-i686-linux.macros/
-ia32e-linux.macros/
-ia64-linux.macros/
-mips-linux.macros/
-mipsel-linux.macros/
-noarch-linux.macros/
-pentium3-linux.macros/
-pentium4-linux.macros/
-ppc-linux.macros/
-ppc64-linux.macros/
-ppc64iseries-linux.macros/
-ppc64pseries-linux.macros/
-ppciseries-linux.macros/
-ppcpseries-linux.macros/
-s390-linux.macros/
-s390x-linux.macros/
-sparc-linux.macros/
-sparc64-linux.macros/
-sparcv9-linux.macros/
-x32-linux.macros/
-x86_64-linux.macros/
-aarch64-linux.macros/
-
-/0              0           0     0     644     336       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alpha
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-/20             0           0     0     644     349       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alphaev5
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee -mcpu=ev5
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-/43             0           0     0     644     351       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alphaev56
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee -mcpu=ev56
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-/67             0           0     0     644     349       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alphaev6
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee -mcpu=ev6
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-/90             0           0     0     644     351       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alphaev67
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee -mcpu=ev67
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-/114            0           0     0     644     353       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 alphapca56
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mieee -mcpu=pca56
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-/139            0           0     0     644     726       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 x86_64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fPIC}%{!?__common_cflags_with_ssp:-O2 -g -m64 -mtune=generic} -march=x86-64 %{!?nospecflags:%{?specflags_x86_64}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/159            0           0     0     644     603       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 arm
-%_os                   linux
-%_gnu                  -gnueabi
-%optflags              -O2 -g -fpic -fPIC -fno-strict-volatile-bitfields
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/180            0           0     0     644     770       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i386
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=athlon -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32} %{?specflags_athlon}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/201            0           0     0     644     782       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i386
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=i386 -mtune=generic -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32:} %{?specflags_i386}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/220            0           0     0     644     766       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i486
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=i486 -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32} %{?specflags_i486}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/239            0           0     0     644     781       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i586
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer -mtune=generic}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=i586 -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32} %{?specflags_i586}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/258            0           0     0     644     797       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i686
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32 -mtune=generic} -march=i686 -fasynchronous-unwind-tables -mtune=pentium4 %{!?nospecflags:%{?specflags_ia32} %{?specflags_i686}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/277            0           0     0     644     725       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 x86_64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fPIC}%{!?__common_cflags_with_ssp:-O2 -g -m64 -mtune=generic} -march=x86-64 %{!?nospecflags:%{?specflags_ia32e}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/297            0           0     0     644     387       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ia64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags:%{__common_cflags}}%{!?__common_cflags:-O2 -g}
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-k6-linux.macros/0           0     0     644     708       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 i386
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=k6 -fasynchronous-unwind-tables
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/316            0           0     0     644     634       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 mips
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags:%{__common_cflags} -march=mips3}%{!?__common_cflags:-O2 -g -m32}
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/335            0           0     0     644     654       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 mipsel
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags:%{__common_cflags} -march=mips3 -mtune=loongson2f}%{!?__common_cflags:-O2 -g -m32}
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/356            0           0     0     644     541       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 noarch
-%_os                   linux
-%_gnu                  -gnu
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/377            0           0     0     644     778       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 pentium3
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=pentium3 -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32} %{?specflags_pentium3}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/400            0           0     0     644     778       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 pentium4
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fomit-frame-pointer}%{!?__common_cflags_with_ssp:-O2 -g -m32} -march=pentium4 -fasynchronous-unwind-tables %{!?nospecflags:%{?specflags_ia32} %{?specflags_pentium4}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/423            0           0     0     644     609       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppc
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -m32 -fsigned-char %{!?nospecflags:%{?specflags_ppc}}} 
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/441            0           0     0     644     579       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppc64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m64 -mminimal-toc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/461            0           0     0     644     332       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppc64iseries
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -g
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-/488            0           0     0     644     332       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppc64pseries
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -g
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-/515            0           0     0     644     348       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppciseries
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mminimal-toc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-/540            0           0     0     644     348       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 ppcpseries
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -mminimal-toc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-/565            0           0     0     644     562       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 s390
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m31
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/584            0           0     0     644     565       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 s390x
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m64
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/604            0           0     0     644     590       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 sparc
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m32 -mcpu=v7 -mtune=ultrasparc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/624            0           0     0     644     584       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 sparc64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m64 -mcpu=ultrasparc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/646            0           0     0     644     580       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 sparc
-%_os                   linux
-%_gnu                  -gnu
-%optflags              -O2 -g -m32 -mcpu=ultrasparc
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           1
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-/668            0           0     0     644     1091      `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 x32
-%_os                   linux
-%_gnu                  -gnux32
-%_target_platform      x86_64-%{_target_vendor}-%{_target_os}%{?_gnu}
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fPIC}%{!?__common_cflags_with_ssp:-O2 -g} -mtune=generic -march=x86-64 %{!?nospecflags:%{?specflags_x32}}
-
-#==============================================================================
-# ---- x86_64 cross-compilation macros.
-#__cc                  x86_64-pld-linux-gcc -mx32
-#__cpp                 x86_64-pld-linux-gcc -mx32 -E
-#__cxx                 x86_64-pld-linux-g++ -mx32
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  libx32
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           3
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-# ---- 0x1 - x86, 0x2 - x86_64 (rpm default), 0x4 - x32
-%_prefer_color         0x4
-
-/686            0           0     0     644     725       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 x86_64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fPIC}%{!?__common_cflags_with_ssp:-O2 -g -m64 -mtune=generic} -march=x86-64 %{!?nospecflags:%{?specflags_x86_64}}
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           3
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
-/707            1587845877  1000  1000  100644  723       `
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_arch                 aarch64
-%_os                   linux
-%_gnu                  -gnu
-%optflags              %{?__common_cflags_with_ssp:%{__common_cflags_with_ssp} -fPIC}%{!?__common_cflags_with_ssp:-O2 -g -mtune=generic} -march=armv8-a %{!?nospecflags:%{?specflags_aarch64}}
-
-#==============================================================================
-# ---- configure macros.
-#
-%_lib                  lib64
-
-#---------------------------------------------------------------------
-#      Multilibs
-%_multilibno           2
-%_multilibpatt         (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$
-
diff --git a/cpuinfo-deps.patch b/cpuinfo-deps.patch
new file mode 100644 (file)
index 0000000..1dab910
--- /dev/null
@@ -0,0 +1,289 @@
+diff -ur rpm-4.16.0/lib/depends.c rpm-4.16.0-cpuinfo/lib/depends.c
+--- rpm-4.16.0/lib/depends.c   2020-11-08 20:19:15.625093667 +0100
++++ rpm-4.16.0-cpuinfo/lib/depends.c   2020-11-08 20:23:46.685893216 +0100
+@@ -697,6 +697,16 @@
+       }
+     }
++    if (strstr(N, "cpuinfo(") == N) {
++      if (tsmem->cpuinfo == NULL)
++          rpmdsCpuinfoPool(rpmtsPool(ts), &(tsmem->cpuinfo));
++      
++      if (tsmem->cpuinfo != NULL && rpmdsSearch(tsmem->cpuinfo, dep) >= 0) {
++          rpmdsNotify(dep, "(cpuinfo provides)", rc);
++          goto exit;
++      }
++    }
++
+     /* Dont look at pre-requisites of already installed packages */
+     if (!adding && isTransientReq(dsflags))
+       goto exit;
+diff -ur rpm-4.16.0/lib/rpmds.c rpm-4.16.0-cpuinfo/lib/rpmds.c
+--- rpm-4.16.0/lib/rpmds.c     2020-11-08 20:19:15.625093667 +0100
++++ rpm-4.16.0-cpuinfo/lib/rpmds.c     2020-11-08 20:16:25.941242497 +0100
+@@ -2,6 +2,8 @@
+  * \file lib/rpmds.c
+  */
+ #include "system.h"
++#include <popt.h>
++#include <ctype.h>
+ #include <sys/utsname.h>
+ #include <rpm/rpmtypes.h>
+@@ -9,6 +11,9 @@
+ #include <rpm/rpmstring.h>
+ #include <rpm/rpmlog.h>
+ #include <rpm/rpmstrpool.h>
++#include <rpm/rpmmacro.h>
++
++#include "rpmio/rpmio_internal.h"     /* XXX for rpmioSlurp */
+ #include "lib/rpmds_internal.h"
+@@ -1655,3 +1670,203 @@
+ {
+     return rpmdsUnamePool(NULL, dsp);
+ }
++
++struct cpuinfo_s {
++    const char *name;
++    int done;
++    int flags;
++};
++
++static struct cpuinfo_s ctags[] = {
++    { "processor",    0,  0 },
++    { "Processor",    0,  1 },        /* XXX armv5 */
++    { "vendor_id",    0,  0 },
++    { "cpu_family",   0,  1 },
++    { "model",                0,  1 },
++    { "model_name",   0,  0 },
++    { "stepping",     0,  1 },
++    { "cpu_MHz",      0,  1 },
++    { "CPU_implementer",0,  1 },      /* XXX armv5 */
++    { "CPU_architecture",0,  1 },     /* XXX armv5 */
++    { "CPU_variant",  0,  1 },        /* XXX armv5 */
++    { "CPU_part",     0,  1 },        /* XXX armv5 */
++    { "CPU_revision", 0,  1 },        /* XXX armv5 */
++    { "Hardware",     0,  2 },        /* XXX armv5 */
++    { "Revision",     0,  1 },        /* XXX armv5 */
++    { "Serial",               0,  1 },        /* XXX armv5 */
++    { "cache_size",   0,  1 },
++    { "physical_id",  0,  0 },
++    { "siblings",     0,  0 },
++    { "core_id",      0,  0 },
++    { "cpu_cores",    0,  0 },
++    { "fdiv_bug",     0,  3 },
++    { "hlt_bug",      0,  3 },
++    { "f00f_bug",     0,  3 },
++    { "coma_bug",     0,  3 },
++    { "fpu",          0,  0 },        /* XXX use flags attribute instead. */
++    { "fpu_exception",        0,  3 },
++    { "cpuid_level",  0,  0 },
++    { "wp",           0,  3 },
++    { "flags",                0,  4 },
++    { "Features",     0,  4 },        /* XXX armv5 */
++    { "bogomips",     0,  1 },
++    { "BogoMIPS",     0,  1 },        /* XXX armv5 */
++    { "clflush_size", 0,  1 },
++    { NULL,           0, -1 }
++};
++
++/**
++ * Return dependency format to use for a cpuinfo line.
++ * @param name                field name
++ * @return            type of format (0 == ignore, -1 == not found)
++ */
++static int rpmdsCpuinfoCtagFlags(const char * name)
++{
++    struct cpuinfo_s * ct;
++    int flags = -1;
++
++    for (ct = ctags; ct->name != NULL; ct++) {
++      if (strcmp(ct->name, name))
++          continue;
++      if (ct->done)
++          continue;
++      ct->done = 1;           /* XXX insure single occurrence */
++      flags = ct->flags;
++      break;
++    }
++    return flags;
++}
++
++#define       _PROC_CPUINFO   "/proc/cpuinfo"
++
++int rpmdsCpuinfoPool(rpmstrPool pool, rpmds *dsp)
++{
++    char * cpuinfo_path = NULL;
++    struct cpuinfo_s * ct;
++    const char * NS = "cpuinfo";
++    char * iob = NULL;
++    char * f, * fe, * fend;
++    char * g, * ge;
++    char * t;
++    int rc = -1;
++
++      cpuinfo_path = rpmExpand("%{?_rpmds_cpuinfo_path}", NULL);
++      /* XXX may need to validate path existence somewhen. */
++      if (cpuinfo_path == NULL || *cpuinfo_path != '/') {
++          cpuinfo_path = _free(cpuinfo_path);
++          cpuinfo_path = xstrdup(_PROC_CPUINFO);
++      }
++
++    /* Reset done variables. */
++    for (ct = ctags; ct->name != NULL; ct++)
++      ct->done = 0;
++
++    rc = rpmioSlurp(cpuinfo_path, (uint8_t **) &iob, NULL);
++    if (rc != 0 || iob == NULL)
++      goto exit;
++
++    for (f = (char *)iob; *f != '\0'; f = fend) {
++      /* find EOL */
++      fe = f;
++      while (*fe != '\0' && !(*fe == '\n' || *fe == '\r'))
++          fe++;
++      ge = fe;
++      while (*fe != '\0' && (*fe == '\n' || *fe == '\r'))
++          *fe++ = '\0';
++      fend = fe;
++
++      /* rtrim on line. */
++      while (--ge > f && isspace(*ge))
++          *ge = '\0';
++
++      /* ltrim on line. */
++      while (*f && isspace(*f))
++          f++;
++
++      /* split on ':' */
++      fe = f;
++      while (*fe && *fe != ':')
++            fe++;
++      if (*fe == '\0')
++          continue;
++      g = fe + 1;
++
++      /* rtrim on field 1. */
++      *fe = '\0';
++      while (--fe > f && isspace(*fe))
++          *fe = '\0';
++      if (*f == '\0')
++          continue;
++
++      /* ltrim on field 2. */
++      while (*g && isspace(*g))
++            g++;
++      if (*g == '\0')
++          continue;
++
++      for (t = f; *t != '\0'; t++) {
++          if (isspace(*t))
++              *t = '_';
++      }
++
++      switch (rpmdsCpuinfoCtagFlags(f)) {
++      case -1:        /* not found */
++      case 0:         /* ignore */
++      default:
++          continue;
++          break;
++      case 1:         /* Provides: cpuinfo(f) = g */
++          for (t = g; *t != '\0'; t++) {
++              if (isspace(*t) || *t == '(' || *t == ')')
++                  *t = '_';
++          }
++          rc = rpmdsNSAdd(pool, dsp, NS, f, g, RPMSENSE_EQUAL);
++            if (rc < 0)
++                      goto exit;
++          break;
++      case 2:         /* Provides: cpuinfo(g) */
++          for (t = g; *t != '\0'; t++) {
++              if (isspace(*t) || *t == '(' || *t == ')')
++                  *t = '_';
++          }
++          rc = rpmdsNSAdd(pool, dsp, NS, g, "", RPMSENSE_ANY);
++            if (rc < 0)
++                      goto exit;
++          break;
++      case 3:         /* if ("yes") Provides: cpuinfo(f) */
++         if (!strcmp(g, "yes")) {
++              rc = rpmdsNSAdd(pool, dsp, NS, f, "", RPMSENSE_ANY);
++                if (rc < 0)
++                      goto exit;
++         }
++          break;
++      case 4:         /* Provides: cpuinfo(g[i]) */
++      {   char ** av = NULL;
++          int i = 0;
++          rc = poptParseArgvString(g, NULL, (const char ***)&av);
++          if (!rc && av != NULL)
++          while ((t = av[i++]) != NULL) {
++              rc = rpmdsNSAdd(pool, dsp, NS, t, "", RPMSENSE_ANY);
++                if (rc < 0)
++                          goto exit;
++          }
++          t = NULL;
++          if (av != NULL)
++              free(av);
++      }   break;
++      }
++    }
++
++exit:
++    _free(cpuinfo_path);
++    free(iob);
++    /* freeze the pool to save memory, but only if private pool */
++    if (*dsp && (*dsp)->pool != pool)
++      rpmstrPoolFreeze((*dsp)->pool, 0);
++    return (rc < 0) ? -1 : 0;
++}
++
++int rpmdsCpuinfo(rpmds * dsp)
++{
++    return rpmdsCpuinfoPool(NULL, dsp);
++}
+diff -ur rpm-4.16.0/lib/rpmds.h rpm-4.16.0-cpuinfo/lib/rpmds.h
+--- rpm-4.16.0/lib/rpmds.h     2020-11-08 20:19:15.625093667 +0100
++++ rpm-4.16.0-cpuinfo/lib/rpmds.h     2020-11-08 20:03:44.001865655 +0100
+@@ -419,6 +419,13 @@
+  */
+ int rpmdsUname(rpmds * dsp);
++/**
++ * Load cpuinfo provides into a dependency set.
++ * @retval *dsp               (loaded) dependency set
++ * @return            0 on success
++ */
++int rpmdsCpuinfo(rpmds * dsp);
++
+ /** \ingroup rpmds
+  * Create and load a dependency set.
+  * @param pool                shared string pool (or NULL for private pool)
+@@ -483,6 +490,14 @@
+  */
+ int rpmdsUnamePool(rpmstrPool pool, rpmds * dsp);
++/**
++ * Load cpuinfo provides into a dependency set.
++ * @param pool                shared string pool (or NULL for private pool)
++ * @retval *dsp               (loaded) dependency set
++ * @return            0 on success
++ */
++int rpmdsCpuinfoPool(rpmstrPool pool, rpmds * dsp);
++
+ typedef enum rpmrichOp_e {
+     RPMRICHOP_SINGLE  = 1,
+diff -ur rpm-4.16.0/lib/rpmts_internal.h rpm-4.16.0-cpuinfo/lib/rpmts_internal.h
+--- rpm-4.16.0/lib/rpmts_internal.h    2020-11-08 20:19:15.625093667 +0100
++++ rpm-4.16.0-cpuinfo/lib/rpmts_internal.h    2020-11-08 20:22:24.382319931 +0100
+@@ -22,6 +22,7 @@
+     rpmds rpmlib;             /*!< rpmlib() dependency set. */
+     rpmds uname;              /*!< uname() dependency set. */
++    rpmds cpuinfo;            /*!< cpuinfo() dependency set. */
+     rpmte * order;            /*!< Packages sorted by dependencies. */
+     int orderCount;           /*!< No. of transaction elements. */
+     int orderAlloced;         /*!< No. of allocated transaction elements. */
diff --git a/dbupgrade.sh b/dbupgrade.sh
deleted file mode 100755 (executable)
index 2d403b5..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-ROOTDIR=
-if [ "$1" = "-r" ]; then
-       shift
-       ROOTDIR="$1"
-
-       if [ ! -d "$ROOTDIR" ]; then
-               echo "Specified root directory ($ROOTDIR) does not exist!"
-               echo "Bailing out!"
-               exit
-       fi
-fi
-
-if ! /usr/lib/rpm/bin/rpmdb_reset -r lsn "$ROOTDIR"/var/lib/rpm/Packages ; then
-       echo
-       echo "rpm database conversion failed!"
-       echo
-       echo "You have to run:"
-       echo
-       echo "  /usr/lib/rpm/bin/rpmdb_reset -r lsn /var/lib/rpm/Packages"
-       echo "  /bin/rm -f /var/lib/rpm/__db.00*"
-       echo "  /bin/rm -f /var/lib/rpm/log/*"
-       echo "  /usr/lib/rpm/bin/dbconvert --rebuilddb"
-       echo
-else
-       /bin/rm --interactive=never -f "$ROOTDIR"/var/lib/rpm/__db.00* >/dev/null 2>/dev/null || :
-       /bin/rm --interactive=never -f "$ROOTDIR"/var/lib/rpm/log/* >/dev/null 2>/dev/null || :
-
-       if ! /usr/lib/rpm/bin/dbconvert --rebuilddb ${ROOTDIR:+--root="$ROOTDIR"}; then
-               echo
-               echo "rpm database conversion failed!"
-               echo "You have to run /usr/lib/rpm/bin/dbconvert manually"
-               echo
-       fi
-fi
diff --git a/default-patch-flags.patch b/default-patch-flags.patch
new file mode 100644 (file)
index 0000000..8e872c3
--- /dev/null
@@ -0,0 +1,12 @@
+--- rpm-4.16.0/macros.in~      2020-11-22 20:06:30.000000000 +0100
++++ rpm-4.16.0/macros.in       2020-12-04 23:07:19.298019290 +0100
+@@ -419,8 +419,7 @@
+ %_default_patch_fuzz  0
+ #     Default patch flags
+-#%_default_patch_flags        -s
+-%_default_patch_flags --no-backup-if-mismatch -f
++%_default_patch_flags -s -f
+ #==============================================================================
+ # ---- Build configuration macros.
diff --git a/disable-header-verification.patch b/disable-header-verification.patch
deleted file mode 100644 (file)
index ab553fe..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-February/024241.html
-
---- rpm-5.4.15/lib/verify.c~   2015-02-11 12:07:41.000000000 +0200
-+++ rpm-5.4.15/lib/verify.c    2015-02-11 17:31:05.418447510 +0200
-@@ -563,6 +563,7 @@
-   {
-     /* Verify header digest/signature. */
-+#if NOTYET
-     if (qva->qva_flags & (VERIFY_DIGEST | VERIFY_SIGNATURE))
-     {
-       const char * horigin = headerGetOrigin(h);
-@@ -577,6 +578,7 @@
-       uh = _free(uh);
-       msg = _free(msg);
-     }
-+#endif
-     /* Verify file digests. */
-     if (fc > 0 && (qva->qva_flags & VERIFY_FILES))
diff --git a/do_not_write_before_macro_buffer.patch b/do_not_write_before_macro_buffer.patch
deleted file mode 100644 (file)
index 14fbd82..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-November/thread.html#24537
-
---- rpm-5.4.15.orig/rpmio/macro.c      2015-11-28 20:47:15.000000000 +0100
-+++ rpm-5.4.15/rpmio/macro.c   2015-11-28 20:51:05.634724202 +0100
-@@ -706,7 +706,9 @@
-     FILE *shf;
-     int rc;
-     int c;
-+    char * start;
-+    start = mb->t;
-     strncpy(buf, cmd, clen);
-     buf[clen] = '\0';
-     rc = expandU(mb, buf, bufn);
-@@ -720,7 +722,7 @@
-     (void) pclose(shf);
-     /* XXX delete trailing \r \n */
--    while (iseol(mb->t[-1])) {
-+    while (mb->t > start && iseol(mb->t[-1])) {
-       *(mb->t--) = '\0';
-       mb->nb++;
-     }
diff --git a/dont-install-useless-scripts.patch b/dont-install-useless-scripts.patch
deleted file mode 100644 (file)
index e7d5146..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- rpm-5.4.15/scripts/Makefile.am~    2020-03-24 21:47:43.000000000 +0100
-+++ rpm-5.4.15/scripts/Makefile.am     2020-03-24 21:48:32.579305528 +0100
-@@ -48,7 +48,7 @@
- noinst_SCRIPTS =
--noinst_SCRIPTS += multiarch-dispatch multiarch-platform
-+noinst_SCRIPTS += multiarch-dispatch multiarch-platform api-sanity-autotest.pl api-sanity-checker.pl mgo pom2spec http.req
- bin_SCRIPTS = gendiff
-@@ -61,7 +61,7 @@
-       check-files cross-build dbconvert.sh executabledeps.sh \
-       find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
-       find-provides.perl find-requires.perl \
--      fontconfig.prov gem_helper.rb getpo.sh http.req \
-+      fontconfig.prov gem_helper.rb getpo.sh \
-       kmod-deps.sh gstreamer.sh javadeps.sh libtooldeps.sh \
-       mono-find-provides mono-find-requires \
-       osgideps.pl pkgconfigdeps.sh \
-@@ -74,9 +74,6 @@
-       vcheck vpkg-provides.sh vpkg-provides2.sh
--pkglibbindir =                @USRLIBRPM@/bin
--pkglibbin_SCRIPTS = api-sanity-autotest.pl api-sanity-checker.pl mgo pom2spec
--
- pkglibhelperdir =     @USRLIBRPM@/helpers
- pkglibhelper_SCRIPTS =        ${HELPERS}
diff --git a/extension-based-compression-detection.patch b/extension-based-compression-detection.patch
deleted file mode 100644 (file)
index 112b161..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
---- rpm-5.4.15/rpmio/macro.c~  2018-08-19 13:11:28.000000000 +0200
-+++ rpm-5.4.15/rpmio/macro.c   2018-08-19 13:18:39.102655981 +0200
-@@ -3122,7 +3122,7 @@
-     ssize_t nb;
-     int rc = -1;
-     unsigned char magic[13];
--#if defined(RPM_VENDOR_OPENPKG) || defined(RPM_VENDOR_FEDORA) || defined(RPM_VENDOR_MANDRIVA) /* extension-based-compression-detection */
-+#if defined(RPM_VENDOR_OPENPKG) || defined(RPM_VENDOR_FEDORA) || defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD) /* extension-based-compression-detection */
-     size_t file_len;
- #endif
-@@ -3139,7 +3139,7 @@
-       return 0;
- #endif
--#if defined(RPM_VENDOR_OPENPKG) || defined(RPM_VENDOR_FEDORA) || defined(RPM_VENDOR_MANDRIVA) /* extension-based-compression-detection */
-+#if defined(RPM_VENDOR_OPENPKG) || defined(RPM_VENDOR_FEDORA) || defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD) /* extension-based-compression-detection */
-     file_len = strlen(file);
-     if ((file_len > 4 && strcasecmp(file+file_len-4, ".tbz") == 0)
-      || (file_len > 4 && strcasecmp(file+file_len-4, ".bz2") == 0)) {
-@@ -3208,7 +3208,7 @@
-      &&       magic[2] == 'Z' && magic[3] == 'O')     /* lzop */
-       *compressed = COMPRESSED_LZOP;
-     else
--#if !defined(RPM_VENDOR_OPENPKG) && !defined(RPM_VENDOR_FEDORA) && !defined(RPM_VENDOR_MANDRIVA) /* extension-based-compression-detection */
-+#if !defined(RPM_VENDOR_OPENPKG) && !defined(RPM_VENDOR_FEDORA) && !defined(RPM_VENDOR_MANDRIVA) && !defined(RPM_VENDOR_PLD) /* extension-based-compression-detection */
-     /* XXX Ick, LZMA has no magic. See http://lkml.org/lkml/2005/6/13/285 */
-     if (magic[ 9] == (unsigned char) 0x00 && magic[10] == (unsigned char) 0x00 &&
-       magic[11] == (unsigned char) 0x00 && magic[12] == (unsigned char) 0x00) /* lzmash */
diff --git a/fast_python_deps.patch b/fast_python_deps.patch
deleted file mode 100644 (file)
index f22e1b0..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-diff -dur -x '*~' -x '*.orig' rpm-5.4.15.orig/lib/rpmfc.c rpm-5.4.15/lib/rpmfc.c
---- rpm-5.4.15.orig/lib/rpmfc.c        2015-11-29 09:57:16.945204643 +0100
-+++ rpm-5.4.15/lib/rpmfc.c     2015-11-29 09:59:24.804768239 +0100
-@@ -604,8 +604,6 @@
-   /* XXX "a /usr/bin/python -t script text executable" */
-   /* XXX "python 2.3 byte-compiled" */
-   { " /usr/bin/python",               RPMFC_PYTHON|RPMFC_INCLUDE },
--  { "python ",                        RPMFC_PYTHON|RPMFC_INCLUDE },
--  { "Python script",          RPMFC_PYTHON|RPMFC_INCLUDE },
-   { "libtool library ",               RPMFC_LIBTOOL|RPMFC_INCLUDE },
-   { "pkgconfig ",             RPMFC_PKGCONFIG|RPMFC_INCLUDE },
-@@ -1114,6 +1112,9 @@
-     int i;
-     int xx;
-     int skipping;
-+    int l;
-+    const char * lastPycDir = NULL;
-+    const char * p;
-     miRE mire;
-     int skipProv = fc->skipProv;
-@@ -1156,8 +1157,29 @@
-               if ((fn[0] == '3' && fn[1] == '2') || 
-                       (fn[0] == '6' && fn[1] == '4'))
-                   fn += 2;
--              if (!strncmp(fn, "/python", sizeof("/python")-1))
--                  fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+              if (!strncmp(fn, "/python", sizeof("/python")-1)) {
-+                  l = strlen(fn);
-+                  if (fn[l-4] == '.' && fn[l-3] == 'p' && fn[l-2] == 'y'
-+                          && (fn[l-1] == 'c' || fn[l-1] == 'o')) {
-+                      p = strchr(fn, '/');
-+                      if (p) {
-+                          l = p - fc->fn[fc->ix];
-+                          if (!lastPycDir || strncmp(lastPycDir, fc->fn[fc->ix], l)) {
-+                              /* one pyc/pyo file per python library directory should be enough to get the dependency */
-+                              fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                              lastPycDir = fc->fn[fc->ix];
-+                          }
-+                      }
-+                  }
-+                  else if (l > 17 && !strcmp(fn + l - 17, "egg-info/PKG-INFO")) {
-+                      /* get all PKG-INFO files for egg-info data */
-+                      fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                  }
-+                  else if (l > 8 && !strcmp(fn + l - 8, "egg-info")) {
-+                      /* get all .egg-info files too */
-+                      fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                  }
-+              }
-               else if (!strncmp(fn, "/ruby", sizeof("/ruby")-1)) {
-                   fc->fcolor->vals[fc->ix] |= RPMFC_RUBY;
-                   if ((strstr(fn, ".gemspec") || strstr(fn, "rbconfig.rb"))) {
-@@ -1184,8 +1206,29 @@
-           fn = strstr(fc->fn[fc->ix], "/usr/share");
-           if (fn) {
-               fn += sizeof("/usr/share")-1;
--              if (!strncmp(fn, "/python", sizeof("/python")-1))
--                  fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+              if (!strncmp(fn, "/python", sizeof("/python")-1)) {
-+                  l = strlen(fn);
-+                  if (fn[l-4] == '.' && fn[l-3] == 'p' && fn[l-2] == 'y'
-+                          && (fn[l-1] == 'c' || fn[l-1] == 'o')) {
-+                      p = strchr(fn, '/');
-+                      if (p) {
-+                          l = p - fc->fn[fc->ix];
-+                          if (!lastPycDir || strncmp(lastPycDir, fc->fn[fc->ix], l)) {
-+                              /* one pyc/pyo file per python library directory should be enough to get the dependency */
-+                              fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                              lastPycDir = fc->fn[fc->ix];
-+                          }
-+                      }
-+                  }
-+                  else if (l > 17 && !strcmp(fn + l - 17, "egg-info/PKG-INFO")) {
-+                      /* get all PKG-INFO files for egg-info data */
-+                      fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                  }
-+                  else if (l > 8 && !strcmp(fn + l - 8, "egg-info")) {
-+                      /* get all .egg-info files too */
-+                      fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+                  }
-+              }
-               else if (!strncmp(fn, "/ruby", sizeof("/ruby")-1) || !strncmp(fn, "/gems/specifications", sizeof("/gems/specifications")-1)) {
-                   fc->fcolor->vals[fc->ix] |= RPMFC_RUBY;
-                   if ((strstr(fn, ".gemspec") || strstr(fn, "rbconfig.rb"))) {
diff --git a/gcc6-stdlib.patch b/gcc6-stdlib.patch
deleted file mode 100644 (file)
index 4274a97..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-gcc6 hack
-
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2017-June/025365.html
-https://patchwork.openembedded.org/patch/122245/
-
- ---
-
-gcc6 has fixed a long standing c++ include issue where <cheader>
-was different from <header.h> inclusion via
-
-https://gcc.gnu.org/ml/libstdc++/2016-01/msg00025.html
-
-and its also descibed in https://gcc.gnu.org/gcc-6/porting_to.html
-rpmio component uses some .cpp and .cc fies which need to use
-C stdlib.h from C library and not the C++ libstdc++ header
-therefore we pass _GLIBCXX_INCLUDE_NEXT_C_HEADERS so that it
-keeps the old behavior
---- rpm-5.4.15/rpmio/rpmjni.cc~        2014-08-09 01:08:50.000000000 +0300
-+++ rpm-5.4.15/rpmio/rpmjni.cc 2017-06-25 16:42:23.383464974 +0300
-@@ -1,3 +1,4 @@
-+#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #include "system.h"
- #include <rpmlog.h>
- #include <rpmmacro.h>
---- rpm-5.4.15/rpmqv.cc~       2017-06-25 17:37:53.000000000 +0300
-+++ rpm-5.4.15/rpmqv.cc        2017-06-25 18:01:37.158939691 +0300
-@@ -1,3 +1,4 @@
-+#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #include "system.h"
- extern const char *__progname;
diff --git a/gem-in-package-builddir.patch b/gem-in-package-builddir.patch
new file mode 100644 (file)
index 0000000..e75f61c
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.1.3/build/parsePrep.c.orig        2020-12-10 12:30:21.000000000 +0100
++++ rpm-4.16.1.3/build/parsePrep.c     2022-04-16 10:55:43.759059308 +0200
+@@ -197,7 +197,7 @@
+           char gemnameversion[strlen(sp->source) - 3];
+           rstrlcpy(gemnameversion, sp->source, strlen(sp->source) - 3);
+-          gemspec = rpmGetPath("%{_builddir}/", gemnameversion, ".gemspec", NULL);
++          gemspec = rpmGetPath("%{_builddir}/", spec->buildSubdir, "/", gemnameversion, ".gemspec", NULL);
+           rasprintf(&buf, "%s '%s' && %s spec '%s' --ruby > '%s'",
+                       zipper, fn, gem, fn, gemspec);
diff --git a/glibc.patch b/glibc.patch
deleted file mode 100644 (file)
index 84a9b0f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -upr rpm-5.4.15.org/rpmio/gzdio.c rpm-5.4.15/rpmio/gzdio.c
---- rpm-5.4.15.org/rpmio/gzdio.c       2012-04-16 05:21:22.000000000 +0200
-+++ rpm-5.4.15/rpmio/gzdio.c   2018-08-11 12:36:48.761296851 +0200
-@@ -380,7 +380,7 @@ static int gzdSeek(void * cookie, _libio
-     int rc;
- #if defined(HAVE_GZSEEK)
- #ifdef USE_COOKIE_SEEK_POINTER
--    _IO_off64_t p = *pos;
-+    off64_t p = *pos;
- #else
-     off_t p = pos;
- #endif
-diff -upr rpm-5.4.15.org/rpmio/rpmio.c rpm-5.4.15/rpmio/rpmio.c
---- rpm-5.4.15.org/rpmio/rpmio.c       2014-08-05 00:47:16.000000000 +0200
-+++ rpm-5.4.15/rpmio/rpmio.c   2018-08-11 12:36:48.757963417 +0200
-@@ -481,7 +481,7 @@ static int fdSeek(void * cookie, _libio_
-       /*@modifies fileSystem, internalState @*/
- {
- #ifdef USE_COOKIE_SEEK_POINTER
--    _IO_off64_t p = *pos;
-+    off64_t p = *pos;
- #else
-     off_t p = pos;
- #endif
-@@ -2458,7 +2458,7 @@ int Fseek(FD_t fd, _libio_off_t offset,
- {
-     fdio_seek_function_t _seek;
- #ifdef USE_COOKIE_SEEK_POINTER
--    _IO_off64_t o64 = offset;
-+    off64_t o64 = offset;
-     _libio_pos_t pos = &o64;
- #else
-     _libio_pos_t pos = offset;
-diff -upr rpm-5.4.15.org/rpmio/rpmio.h rpm-5.4.15/rpmio/rpmio.h
---- rpm-5.4.15.org/rpmio/rpmio.h       2014-07-20 01:01:26.000000000 +0200
-+++ rpm-5.4.15/rpmio/rpmio.h   2018-08-11 12:36:48.761296851 +0200
-@@ -1,6 +1,10 @@
- #ifndef       H_RPMIO
- #define       H_RPMIO
-+#ifndef       _GNU_SOURCE
-+#define       _GNU_SOURCE     1
-+#endif
-+
- /** \ingroup rpmio
-  * \file rpmio/rpmio.h
-  *
-@@ -25,7 +25,7 @@
- #if !defined(__LCLINT__) && !defined(__UCLIBC__) && defined(__GLIBC__) && \
-       (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2))
- #define USE_COOKIE_SEEK_POINTER 1
--typedef _IO_off64_t   _libio_off_t;
-+typedef off64_t       _libio_off_t;
- typedef _libio_off_t *        _libio_pos_t;
- #else
- typedef off_t                 _libio_off_t;
diff --git a/ix86-platforms.patch b/ix86-platforms.patch
new file mode 100644 (file)
index 0000000..9f862e6
--- /dev/null
@@ -0,0 +1,34 @@
+--- rpm-4.16.0/installplatform.orig    2020-10-27 00:28:54.592595565 +0100
++++ rpm-4.16.0/installplatform 2020-10-27 00:31:27.676694730 +0100
+@@ -76,7 +76,7 @@
+     i?86|pentium?|athlon|geode)
+       ISANAME=x86
+       ISABITS=32
+-      CANONARCH=i386
++      CANONARCH=${ARCH}
+       CANONCOLOR=0
+       ;;
+     x86_64|amd64|ia32e)
+--- rpm-4.16.0/rpmrc.in~       2020-10-27 22:14:37.000000000 +0100
++++ rpm-4.16.0/rpmrc.in        2020-10-27 22:37:49.273277848 +0100
+@@ -302,13 +302,13 @@
+ buildarchtranslate: osfmach3_i486: i386
+ buildarchtranslate: osfmach3_i386: i386
+-buildarchtranslate: athlon: i386
+-buildarchtranslate: geode: i386
+-buildarchtranslate: pentium4: i386
+-buildarchtranslate: pentium3: i386
+-buildarchtranslate: i686: i386
+-buildarchtranslate: i586: i386
+-buildarchtranslate: i486: i386
++buildarchtranslate: athlon: athlon
++buildarchtranslate: geode: geode
++buildarchtranslate: pentium4: pentium4
++buildarchtranslate: pentium3: pentium3
++buildarchtranslate: i686: i686
++buildarchtranslate: i586: i586
++buildarchtranslate: i486: i486
+ buildarchtranslate: i386: i386
+ buildarchtranslate: alphaev5: alpha
diff --git a/libtool.attr b/libtool.attr
new file mode 100644 (file)
index 0000000..ed5cb8c
--- /dev/null
@@ -0,0 +1,3 @@
+%__libtool_provides    %{_rpmconfigdir}/libtooldeps.sh --provides %{buildroot} %{name}
+%__libtool_requires    %{_rpmconfigdir}/libtooldeps.sh --requires %{buildroot} %{name}
+%__libtool_path        ^%{_libdir}/.*\.la$
diff --git a/libtooldeps.sh b/libtooldeps.sh
new file mode 100644 (file)
index 0000000..d08e3d5
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+[ $# -ge 2 ] || {
+    cat > /dev/null
+    exit 0
+}
+
+pkgname="$3"
+
+case $1 in
+-P|--provides)
+    shift
+    RPM_BUILD_ROOT="$1"
+    while read possible
+    do
+       case "$possible" in
+       *.la)
+           if file -L "$possible" | grep -iq 'libtool library file' 2> /dev/null ; then
+               possible="`echo ${possible} | sed -e s,${RPM_BUILD_ROOT}/,/,`"
+               echo "libtool($possible)"
+           fi
+           ;;
+       esac
+    done
+    ;;
+-R|--requires)
+    case $pkgname in
+    *-devel)
+           while read possible ; do
+               case "$possible" in
+               *.la)
+                   for dep in `grep '^dependency_libs=' "$possible" 2> /dev/null | \
+                               sed -e "s,^dependency_libs='\(.*\)',\1,g"`
+                   do
+                       case "$dep" in
+                       /*.la)
+                           dep="`readlink -f "$dep" 2> /dev/null || echo "$dep"`"
+                           echo "libtool($dep)"
+                           ;;
+                       esac
+                   done
+                   ;;
+               esac
+           done
+     ;;
+     *)
+            cat > /dev/null
+     ;;
+     esac
+esac
+exit 0
index 70b7121a4e171965172e2669b83ac3483a85b7ea..99fd53e6ba7dd28ea58648c0e2946c0478df8710 100644 (file)
@@ -5,9 +5,6 @@
 %_install_file_context_path    %{nil}
 %_verify_file_context_path     %{nil}
 
-# If non-zero (default), all erasures will be automagically repackaged.
-#%_repackage_all_erasures      0
-
 # Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files
 # marked as %doc should be installed.
 #%_excludedocs                 1
diff --git a/macros.pld.in b/macros.pld.in
deleted file mode 100644 (file)
index 4e1f81b..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-# PLD Linux rpm macros
-# vim:ft=spec
-
-%distribution          PLD Linux
-%vendor                        pld
-%bugurl                        http://bugs.pld-linux.org/
-%disturl               http://www.pld-linux.org/
-%pld_release           th
-
-#
-# Per-platform rpm configuration file.
-
-#==============================================================================
-# ---- per-platform macros.
-#
-%_vendor               pld
-%_os                   linux
-%_target_platform      %{_target_cpu}-%{_vendor}-%{_target_os}
-
-#==============================================================================
-# ---- configure macros.  note that most of these are inherited
-#      from the defaults.
-#
-%_prefix               /usr
-%_exec_prefix          %{_prefix}
-%_bindir               %{_exec_prefix}/bin
-%_sbindir              %{_exec_prefix}/sbin
-%_libexecdir           %{_exec_prefix}/libexec
-%_datadir              %{_prefix}/share
-%_sysconfdir           %{_prefix}/etc
-%_sharedstatedir       /var/lib
-%_localstatedir                /var
-%_libdir               %{_exec_prefix}/%{_lib}
-%_includedir           %{_prefix}/include
-%_oldincludedir                /usr/include
-%_infodir              %{_prefix}/share/info
-%_mandir               %{_prefix}/share/man
-%_initrddir            %{_sysconfdir}/rc.d/init.d
-%_sysconfdir           /etc
-
-%_defaultdocdir                %{_usr}/share/doc
-
-%_fmoddir              %{_libdir}/gfortran/modules
-
-# Executed at after copying %doc to DOCDIR, with $DOCDIR set
-%__compress_doc                @prefix@/lib/rpm/compress-doc%{?_noautocompressdoc: --noautocompressdoc='%{_noautocompressdoc}'}
-
-%__os_install_post \
-%{__spec_install_post_strip}\
-%{__spec_install_post_chrpath}\
-%{__spec_install_post_compress_modules}\
-%{__spec_install_post_check_so}\
-%{__spec_install_post_check_tmpfiles}\
-%{__spec_install_post_check_shebangs}\
-%{__spec_install_post_compress_docs}\
-%{__spec_install_post_py_hardlink}\
-%{__spec_install_post_perl_clean}\
-%{__arch_install_post}\
-%{nil}
-
-%__spec_install_post\
-%{expand:%%define __sip_%{?_enable_debug_packages} 1}%{?__sip_1:%{?__debug_package:%{__debug_install_post}}}%{expand:%%undefine __sip_%{?_enable_debug_packages}}\
-%{__arch_install_post}\
-%{__os_install_post}\
-%{nil}
-
-#---------------------------------------------------------------------
-#      Template for debug information sub-package.
-%_enable_debug_packages                1
-
-%debug_package \
-%ifnarch noarch\
-%global __debug_package 1\
-%package debuginfo\
-Summary: Debug information for package %{name}\
-Summary(pl.UTF-8): Informacje dla debuggera dla pakietu %{name}\
-Group: Development/Debug\
-Requires: filesystem-debuginfo >= 3.0-16\
-AutoReqProv: 0\
-%description debuginfo\
-This package provides debug information for package %{name}.\
-Debug information is useful when developing applications that use this\
-package or when debugging this package.\
-%description debuginfo -l pl.UTF-8\
-Ten pakiet dostarcza informacje dla debuggera dla pakietu %{name}.\
-Informacje te są przydatne przy rozwijaniu aplikacji używających tego\
-pakietu oraz przy odpluskwianiu samego pakietu.\
-%files debuginfo -f debugfiles.list\
-%defattr(-,root,root)\
-%endif\
-%{nil}
-
-#---------------------------------------------------------------------
-# Overwrite RPM macros with PLD specific one here.
-
-%__cp                  /bin/cp
-%__find                        /usr/bin/find
-%__grep                        /bin/grep
-%__lua                 %{_bindir}/lua
-%__rc                  %{_bindir}/rc
-%__xar                 %{_bindir}/xar
-
-%_tmppath              %(echo "${TMPDIR:-/var/tmp}")
-%tmpdir                        %{_tmppath}
-
-%_topdir               %(echo $HOME)/rpm
-
-%buildroot             %{_tmppath}/%{name}-%{version}-root-%(id -u -n)
-
-%_source_payload       w9.gzdio
-%_binary_payload       w6.lzdio
-
-%_rpmfc_magic_path     /usr/share/file/magic
-
-# provides don't obsolete
-%_upgrade_tag          name
-
-# Disable automatic dependencies on symlinks for now (debuginfo packages pull too many deps)
-%_check_symlink_deps    0 
-# Do not generate executable() dependencies for scriptlets,
-# as it may give false positives, for example:
-# [ ! -x /bin/prog ] || /bin/prog
-# will generate R:/bin/prog and we don't want that as /bin/prog is optional in this case
-# 0 - Use external generator
-# 1 - Use internal generator if available
-# 2 - Use __scriptlet_requires to process scriptlet dependencies
-%_use_internal_dependency_generator    1
-
-%_duplicate_files_terminate_build      1
-%_files_listed_twice_terminate_build   1
-%_unpackaged_subdirs_terminate_build   0
-
-#
-# Export package NEVRA (stamped with install tid) info for HRMIB on this path.
-#
-# XXX  Note: escaped %% for use in headerSprintf()
-%_hrmib_path   /var/cache/hrmib/%{___NVRA}
-
-#-----------------------------------------------------------------
-# CFLAGS and LDFLAGS used to build
-
-%debuginfocflags       %{expand:%%define __dic_%{?_enable_debug_packages} 1}%{?__dic_1: -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2}%{expand:%%undefine __dic_%{?_enable_debug_packages}}
-# -feliminate-dwarf2-dups disabled until PR ld/3290 is fixed.
-
-%debugcflags   -O0 -g -Wall
-%debugcppflags %{nil}
-%debugldflags  %{nil}
-
-%optldflags    -Wl,--as-needed -Wl,--no-copy-dt-needed-entries -Wl,-z,relro -Wl,-z,combreloc
-%optcppflags   %{nil}
-
-# Warning: those macros are overwritten by macros.build,
-#          left here for compatibility
-%rpmcflags %(awk 'BEGIN {
-       split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
-       split("%{?filterout} %{?filterout_c} %{?filterout_ld}",F);
-       %{filter_out}
-}')
-%rpmcppflags       %(awk 'BEGIN {
-       split("%{?debug:%debugcppflags}%{!?debug:%optcppflags}%{?debuginfocppflags}",I);
-       split("%{?filterout} %{?filterout_cpp} %{?filterout_cpp}",F);
-       %{filter_out}
-}')
-%rpmcxxflags       %(awk 'BEGIN {
-       split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
-       split("%{?filterout} %{?filterout_cxx} %{?filterout_ld}",F);
-       %{filter_out}
-}')
-%rpmldflags        %(awk 'BEGIN {
-       split("%{?optldflags}",I);
-       split("%{?filterout_ld}",F)
-       %{filter_out}
-}')
-
-# common compilation flags
-%_fortify_cflags       -Wp,-D_FORTIFY_SOURCE=2
-
-# cf http://wiki.mandriva.com/en/Development/Packaging/Problems#format_not_a_string_literal_and_no_format_arguments
-%Werror_cflags         -Wformat -Werror=format-security
-
-# Use -Werror=trampolines to prevent GCC from generating code that require executable stack
-%_ssp_cflags           -fstack-protector-strong --param=ssp-buffer-size=4 -Werror=trampolines
-%__common_cflags       -O2 -fwrapv -pipe %{Werror_cflags} %{debuginfocflags} %{?_fortify_cflags} %{!?nospecflags:%{?specflags}}
-%__common_cflags_with_ssp      %{__common_cflags} %{?_ssp_cflags}
-
-# arch macros
-%ix86  i386 i486 i586 i686 pentium3 pentium4 athlon
-%x8664 x86_64 amd64 ia32e
-%ppc   ppc ppc7400 ppc7450
-
-# avoid fdatasync syscall flood during database operations.
-%__nofsync     nofsync
-
-#---------------------------------------------------------------------
-#      Expanded at end of %prep
-#
-%__id_u                %{__id} -u
-%__chown_Rhf   %{__chown} -Rhf
-%__chgrp_Rhf   %{__chgrp} -Rhf
-%_fixowner     [ `%{__id_u}` = '0' ] && %{__chown_Rhf} root
-%_fixgroup     [ `%{__id_u}` = '0' ] && %{__chgrp_Rhf} root
-%_fixperms     %{__chmod} -Rf a+rX,u+w,g-w,o-w
-
-%__id          /bin/id
-
-#
-# DO NOT put anything after this %%{load:...} !
-#
-# rpm5 prolog for loading the standard macro
-%{load:/etc/rpm/macros.d/*.macros}
diff --git a/missing-doc-terminate-build.patch b/missing-doc-terminate-build.patch
new file mode 100644 (file)
index 0000000..6cc7732
--- /dev/null
@@ -0,0 +1,21 @@
+--- rpm-4.16.0/build/files.c.orig      2020-12-18 19:36:49.000000000 +0100
++++ rpm-4.16.0/build/files.c   2020-12-18 19:48:35.711529643 +0100
+@@ -2394,14 +2394,16 @@
+       appendStringBuf(docScript, efn);
+       appendStringBuf(docScript, " $");
+       appendStringBuf(docScript, sdenv);
+-      appendLineStringBuf(docScript, " ||:");
+       free(efn);
+     }
+     if (install) {
++      int _missing_doc_files_terminate_build =
++          rpmExpandNumeric("%{?_missing_doc_files_terminate_build}");
+       if (doScript(spec, RPMBUILD_STRINGBUF, sdname,
+                           getStringBuf(docScript), test, NULL)) {
+-          fl->processingFailed = 1;
++          if (_missing_doc_files_terminate_build)
++              fl->processingFailed = 1;
+       }
+     }
diff --git a/missing-ghost-terminate-build.patch b/missing-ghost-terminate-build.patch
new file mode 100644 (file)
index 0000000..9e7ef7a
--- /dev/null
@@ -0,0 +1,19 @@
+--- rpm-4.16.0/build/files.c~  2020-12-18 19:15:59.000000000 +0100
++++ rpm-4.16.0/build/files.c   2020-12-18 19:34:33.456509321 +0100
+@@ -1401,7 +1401,6 @@
+      * various cases, preserving historical behavior wrt %dev():
+      * - for %dev() entries we fake it up whether the file exists or not
+      * - otherwise try to grab the data by lstat()
+-     * - %ghost entries might not exist, fake it up
+      */
+     if (statp == NULL) {
+       memset(&statbuf, 0, sizeof(statbuf));
+@@ -1410,8 +1409,6 @@
+           statp = fakeStat(&(fl->cur), &statbuf);
+       } else if (lstat(diskPath, &statbuf) == 0) {
+           statp = &statbuf;
+-      } else if (fl->cur.attrFlags & RPMFILE_GHOST) {
+-          statp = fakeStat(&(fl->cur), &statbuf);
+       } else {
+           int lvl = RPMLOG_ERR;
+           int ignore = 0;
diff --git a/missing-macros.patch b/missing-macros.patch
new file mode 100644 (file)
index 0000000..055f9a0
--- /dev/null
@@ -0,0 +1,60 @@
+--- rpm-4.16.0/configure.ac~   2020-11-22 19:47:14.000000000 +0100
++++ rpm-4.16.0/configure.ac    2020-11-22 19:49:03.093877834 +0100
+@@ -76,6 +76,7 @@
+ dnl Find some common programs
+ dnl
+ AC_PATH_PROGS(__7ZIP, [7zip 7za 7z], /usr/bin/7za, $MYPATH)
++AC_PATH_PROG(__BASH, bash, /bin/bash, $MYPATH)
+ AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
+ AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
+ AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
+@@ -91,6 +92,7 @@
+ AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
+ AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
+ AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
++AC_PATH_PROG(__LN, ln, /bin/ln, $MYPATH)
+ AC_PATH_PROG(__LRZIP, lrzip, /usr/bin/lrzip, $MYPATH)
+ AC_PATH_PROG(__LZIP, lzip, /usr/bin/lzip, $MYPATH)
+ AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
+@@ -104,6 +106,7 @@
+ AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
+ AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
+ AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
++AC_PATH_PROG(__SH, sh, /bin/sh, $MYPATH)
+ AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
+ AC_PATH_PROG(__ZSTD, zstd, /usr/bin/zstd, $MYPATH)
+--- rpm-4.16.0/macros.in~      2020-11-21 19:41:19.000000000 +0100
++++ rpm-4.16.0/macros.in       2020-11-22 19:45:24.182620411 +0100
+@@ -6,6 +6,7 @@
+ # should be added to /etc/rpm/macros, while per-user configuration should
+ # be added to ~/.rpmmacros.
+ #
++%_rpmversion          @VERSION@
+ #==============================================================================
+ # ---- A macro that expands to nothing.
+@@ -25,6 +25,7 @@
+ #
+ %__7zip                       @__7ZIP@
+ %__awk                        @AWK@
++%__bash                       @__BASH@
+ %__bzip2              @__BZIP2@
+ %__cat                        @__CAT@
+ %__chmod              @__CHMOD@
+@@ -39,6 +40,7 @@
+ %__id                 @__ID@
+ %__id_u                       %{__id} -u
+ %__install            @__INSTALL@
++%__ln                 @__LN@
+ %__ln_s                       @LN_S@
+ %__lrzip              @__LRZIP@
+ %__lzip                       @__LZIP@
+@@ -54,6 +57,7 @@
+ %__patch              @__PATCH@
+ %__rm                 @__RM@
+ %__sed                        @__SED@
++%__sh                 @__SH@
+ %__tar                        @__TAR@
+ %__unzip              @__UNZIP@
+ %__zstd                       @__ZSTD@
diff --git a/no-exe-for-elf-req.patch b/no-exe-for-elf-req.patch
new file mode 100644 (file)
index 0000000..3aa7b0f
--- /dev/null
@@ -0,0 +1,12 @@
+--- rpm-4.16.1.3/tools/elfdeps.c.orig  2020-05-28 12:04:25.084136944 +0200
++++ rpm-4.16.1.3/tools/elfdeps.c       2022-03-23 11:19:01.656202339 +0100
+@@ -300,7 +300,8 @@
+     if (ehdr->e_type == ET_DYN || ehdr->e_type == ET_EXEC) {
+       ei->marker = mkmarker(ehdr);
+       ei->isDSO = (ehdr->e_type == ET_DYN);
+-      ei->isExec = (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
++      //ei->isExec = (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
++      ei->isExec = 1;
+       processProgHeaders(ei, ehdr);
+       processSections(ei);
diff --git a/noexpand.patch b/noexpand.patch
new file mode 100644 (file)
index 0000000..e75a513
--- /dev/null
@@ -0,0 +1,45 @@
+diff -ur rpm-4.16.0/build/parseChangelog.c rpm-4.16.0-noexpand/build/parseChangelog.c
+--- rpm-4.16.0/build/parseChangelog.c  2020-12-18 20:09:28.341535424 +0100
++++ rpm-4.16.0-noexpand/build/parseChangelog.c 2020-12-18 20:01:53.963847399 +0100
+@@ -321,7 +321,7 @@
+       goto exit;
+     }
+     
+-    if ((res = parseLines(spec, STRIP_COMMENTS, &sb, NULL)) == PART_ERROR)
++    if ((res = parseLines(spec, STRIP_COMMENTS | STRIP_NOEXPAND, &sb, NULL)) == PART_ERROR)
+       goto exit;
+     if (sb && addChangelog(spec->packages->header, sb)) {
+diff -ur rpm-4.16.0/build/parseSpec.c rpm-4.16.0-noexpand/build/parseSpec.c
+--- rpm-4.16.0/build/parseSpec.c       2020-05-28 12:04:25.007136522 +0200
++++ rpm-4.16.0-noexpand/build/parseSpec.c      2020-12-18 20:08:13.791373996 +0100
+@@ -242,6 +242,9 @@
+       if (!spec->readStack->reading)
+           return 0;
+     }
++    /* Also don't expand macros in %changelog and %description, where we set STRIP_NOEXPAND flag */
++    if (strip & STRIP_NOEXPAND)
++      return 0;
+     if (specExpand(spec, ofi->lineNum, spec->lbuf, &lbuf))
+       return 1;
+@@ -476,7 +476,7 @@
+     lineType = copyNextLineFinish(spec, strip);
+     s = spec->line;
+     SKIPSPACE(s);
+-    if (!lineType)
++    if (!lineType || (strip & STRIP_NOEXPAND))
+       goto after_classification;
+     /* check ordering of the conditional */
+diff -ur rpm-4.16.0/build/rpmbuild_internal.h rpm-4.16.0-noexpand/build/rpmbuild_internal.h
+--- rpm-4.16.0/build/rpmbuild_internal.h       2020-12-18 20:09:28.354868788 +0100
++++ rpm-4.16.0-noexpand/build/rpmbuild_internal.h      2020-12-18 20:09:09.054827168 +0100
+@@ -246,6 +246,7 @@
+ #define STRIP_NOTHING             0
+ #define STRIP_TRAILINGSPACE (1 << 0)
+ #define STRIP_COMMENTS      (1 << 1)
++#define STRIP_NOEXPAND      (1 << 2)
+ #define ALLOW_EMPTY         (1 << 16)
diff --git a/openmp.patch b/openmp.patch
deleted file mode 100644 (file)
index 78b02ea..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- rpm-5.3.1/rpmio/Makefile.am.wiget  2010-05-24 17:23:09.000000000 +0200
-+++ rpm-5.3.1/rpmio/Makefile.am        2010-06-01 21:29:20.521227268 +0200
-@@ -102,7 +102,7 @@ librpmio_la_SOURCES = \
-       xzdio.c \
-       yarn.c
--librpmio_la_LDFLAGS = -release $(LT_CURRENT).$(LT_REVISION)
-+librpmio_la_LDFLAGS = -release $(LT_CURRENT).$(LT_REVISION) $(OPENMP_CFLAGS)
- if HAVE_LD_VERSION_SCRIPT
- librpmio_la_LDFLAGS += -Wl,@LD_VERSION_SCRIPT_FLAG@,@top_srcdir@/rpmio/librpmio.vers
- endif
---- rpm-5.3.1/tools/Makefile.am.wiget  2010-06-01 21:49:05.274449585 +0200
-+++ rpm-5.3.1/tools/Makefile.am        2010-06-01 21:49:56.576943304 +0200
-@@ -281,7 +281,7 @@ if WITH_DBSQL
- if WITH_DBSQL
- pkgbin_PROGRAMS +=    dbsql
- dbsql_SOURCES = dbsql.c
--dbsql_LDFLAGS = @LDFLAGS_STATIC@ $(LDFLAGS)
-+dbsql_LDFLAGS = @LDFLAGS_STATIC@ $(LDFLAGS) $(OPENMP_CFLAGS)
- dbsql_LDADD = \
-       $(RPMIO_LDADD_COMMON)
- endif
diff --git a/perl-heredoc-matching.patch b/perl-heredoc-matching.patch
new file mode 100644 (file)
index 0000000..8ad0160
--- /dev/null
@@ -0,0 +1,39 @@
+From 73419594af15e94e77bae413d9754d3775cf0280 Mon Sep 17 00:00:00 2001
+From: Jan Palus <jpalus@fastmail.com>
+Date: Tue, 12 Dec 2023 19:45:54 +0100
+Subject: [PATCH] perl.req: make heredoc block matching more generic
+
+match any <<MARKER providing:
+
+- it is not in comment (not preceded by #)
+- it can't be string literal (not preceded by ' or ")
+- as a sanity check it must be preceded by either whitespace, comma or
+  equals sign
+
+adds support for
+
+   return <<"EOS";
+
+   fun(arg, <<"EOS");
+---
+ scripts/perl.req | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/scripts/perl.req b/scripts/perl.req
+index 1b50c50847..8bfa38771e 100755
+--- a/scripts/perl.req
++++ b/scripts/perl.req
+@@ -102,10 +102,10 @@ sub process_file {
+   while (<FILE>) {
+-    # skip the "= <<" block
++    # skip the heredoc block
+-    if (m/^\s*(?:my\s*)?\$(?:.*)\s*=\s*<<\s*(["'`])(.+?)\1/ ||
+-        m/^\s*(?:my\s*)?\$(.*)\s*=\s*<<(\w+)\s*;/) {
++    if (m/^[^'"#]+[\s,=(]<<\s*(["'`])(.+?)\1/ ||
++        m/^[^'"#]+[\s,=(](<<)(\w+)\s*;/) {
+       $tag = $2;
+       while (<FILE>) {
+         chomp;
index a494480010caf026594bf8edb15fbf22dc243e03..6e98f9a4ae03d8f6d931ad221c3a90974a4cfb87 100644 (file)
--- a/perl.prov
+++ b/perl.prov
@@ -92,20 +92,22 @@ sub process_file {
 
                # search for the package name
                if (
-                       !defined $package
-                       && ( my ($pack) = m/^\s*(?:\{\s*)?package\s+([_:a-zA-Z0-9]+?):*\s*;/ )
+                       (!defined $package || !defined $version)
+                       && ( my ($pack, $ver) = m/^\s*(?:\{\s*)?package\s+([_:a-zA-Z0-9]+?)\s*(?:v?([0-9_.]+)\s*)?[;{]/)
                        && $1 ne 'main'
                        && match_the_path( $file, $1 )
                  )
                {
                        $package = $pack;
+                       $version = $ver;
                }
 
                if ( !defined $version && /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/ ) {
                        ( $version = $self->{safe}->reval($_) ) =~ s/^\s+|alpha|beta|\s+$//g;
                        if ( defined $version
                                && length $version
-                               && $version =~ /[^\d\._abcdefgh]/ )
+                               && ($version =~ /[^\d\._abcdefgh]/
+                                       || $version =~ /^[^\d]*$/ ))
                        {
                                warn "$0: weird version number in $file: [$version]\n";
                                $version = '';
diff --git a/pkgconfig.patch b/pkgconfig.patch
new file mode 100644 (file)
index 0000000..25be042
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.0/rpm.pc.in.orig  2020-05-28 12:04:25.000000000 +0200
++++ rpm-4.16.0/rpm.pc.in       2020-10-18 23:32:46.339081527 +0200
+@@ -11,6 +11,6 @@
+ Requires: popt
+ Requires.private: @ZSTD_REQUIRES@
+ # Conflicts:
+-Cflags: -I${includedir}
+-Libs: -L${libdir} -lrpm -lrpmio
++Cflags: -I${includedir}/rpm
++Libs: -L${libdir} -lrpm -lrpmio -lrpmbuild
+ Libs.private: -lpopt -lrt -lpthread @WITH_LZMA_LIB@ @WITH_BZ2_LIB@ @WITH_ZLIB_LIB@ @LUA_LIBS@
diff --git a/pl-po.patch b/pl-po.patch
new file mode 100644 (file)
index 0000000..08e2818
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.1.2/po/pl.po~     2021-02-19 09:16:53.000000000 +0100
++++ rpm-4.16.1.2/po/pl.po      2021-02-23 10:46:24.003601872 +0100
+@@ -37,7 +37,7 @@
+ #: cliutils.c:27 lib/poptALL.c:61
+ #, c-format
+ msgid "RPM version %s\n"
+-msgstr "RPM %s\n"
++msgstr "RPM wersja %s\n"
+ #: cliutils.c:32
+ #, c-format
diff --git a/prov-req-macros b/prov-req-macros
deleted file mode 100644 (file)
index ef7867e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-%__perl_provides       %{_rpmhome}/perl.prov
-%__perl_requires       %{_rpmhome}/perl.req
-%__python_provides     %{_rpmhome}/pythoneggs.py --provides
-%__python_requires     %{_rpmhome}/pythoneggs.py --requires
diff --git a/py-disable-fetch.patch b/py-disable-fetch.patch
deleted file mode 100644 (file)
index 6035867..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-disable fetching sources.
-annoying if you just want to get .spec structure!
-
-it could be parameter to s.parseSpec(), but as prevous code hardcoded, i'll
-just "hardcode" different value here.
-
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-November/024529.html
-
-one could play with '__urlgetfile' macro, and just tell it 'OK':
-%__urlgetfile OK
-
-but then ugly "Fetching" messages are still displayed, which maybe even more confusing.
-
-http://comments.gmane.org/gmane.comp.package-management.rpm.user/159
-
---- rpm-5.4.15/python/rpmts-py.c~      2014-07-28 00:52:21.000000000 +0300
-+++ rpm-5.4.15/python/rpmts-py.c       2015-11-04 22:00:33.989058412 +0200
-@@ -1333,13 +1333,15 @@
-     char * passPhrase = "";
-     char *cookie = NULL;
-     int anyarch = 1;
--    int verify = 1;
-+    int verify;
-     int force = 1;
-     char * kwlist[] = {"specfile", NULL};
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s:Parse", kwlist, &specfile))
-       return NULL;
-+    verify = rpmExpandNumeric("%{?_py_parsespec_verify}%{?!_py_parsespec_verify:0}");
-+
-     if (parseSpec(s->ts, specfile,"/", recursing, passPhrase,
-              cookie, anyarch, force, verify)!=0) {
-              PyErr_SetString(pyrpmError, "can't parse specfile\n");
diff --git a/python-internal-build.patch b/python-internal-build.patch
new file mode 100644 (file)
index 0000000..ce66a35
--- /dev/null
@@ -0,0 +1,35 @@
+--- rpm-4.15.1/python/setup.py.in.orig 2019-06-26 23:17:31.000000000 +0900
++++ rpm-4.15.1/python/setup.py.in      2020-01-01 01:58:28.121517896 +0900
+@@ -12,17 +12,8 @@
+         out.append(token[2:])
+     return out
+-cflags = ['-std=c99', '-Wno-strict-aliasing']
+-additional_link_args = []
+-
+-# See if we're building in-tree
+-if os.access('Makefile.am', os.F_OK):
+-    cflags.append('-I../include')
+-    additional_link_args.extend(['-Wl,-L../rpmio/.libs',
+-                                 '-Wl,-L../lib/.libs',
+-                                 '-Wl,-L../build/.libs',
+-                                 '-Wl,-L../sign/.libs'])
+-    os.environ['PKG_CONFIG_PATH'] = '..'
++cflags = ['-std=c99', '-Wno-strict-aliasing', '-I../include']
++os.environ['PKG_CONFIG_PATH'] = '..'
+ rpmmod = Extension('rpm._rpm',
+                    sources = ['header-py.c', 'rpmds-py.c', 'rpmfd-py.c',
+@@ -33,11 +24,9 @@
+                               'rpmte-py.c', 'rpmts-py.c', 'rpmver-py.c',
+                               'spec-py.c',
+                               'rpmmodule.c'],
+-                   include_dirs = pkgconfig('--cflags'),
+-                   library_dirs = pkgconfig('--libs-only-L'),
++                   library_dirs = ['../rpmio/.libs', '../lib/.libs', '../build/.libs', '../sign/.libs'],
+                    libraries = pkgconfig('--libs-only-l') + ['rpmbuild', 'rpmsign'],
+                    extra_compile_args = cflags,
+-                   extra_link_args = additional_link_args
+                   )
+ setup(name='@PACKAGE_NAME@',
diff --git a/python-libx32.patch b/python-libx32.patch
deleted file mode 100644 (file)
index 59626dd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.15/lib/rpmfc.c.old 2015-02-27 14:41:47.000000000 +0000
-+++ rpm-5.4.15/lib/rpmfc.c     2015-02-27 14:59:44.000000000 +0000
-@@ -1153,6 +1153,7 @@ assert(fc->fn != NULL);
-       {   fn = strstr(fc->fn[fc->ix], "/usr/lib");
-           if (fn) {
-               fn += sizeof("/usr/lib")-1;
-+              if (fn[0] == 'x') fn++;
-               if ((fn[0] == '3' && fn[1] == '2') || 
-                       (fn[0] == '6' && fn[1] == '4'))
-                   fn += 2;
diff --git a/python-rpmsense-missingok.patch b/python-rpmsense-missingok.patch
deleted file mode 100644 (file)
index d9a0731..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-5.4.10/python/rpmmodule.c~     2013-04-27 22:07:40.000000000 +0300
-+++ rpm-5.4.10/python/rpmmodule.c      2013-04-27 22:07:54.410867637 +0300
-@@ -500,6 +500,9 @@
-     REGISTER_ENUM(RPMSENSE_SCRIPT_PREUN);
-     REGISTER_ENUM(RPMSENSE_SCRIPT_POSTUN)
- #endif
-+#if defined(RPM_VENDOR_PLD)
-+    REGISTER_ENUM(RPMSENSE_MISSINGOK);
-+#endif
-     REGISTER_ENUM(RPMDEPS_FLAG_NOUPGRADE);
-     REGISTER_ENUM(RPMDEPS_FLAG_NOREQUIRES);
diff --git a/python2_explicit.patch b/python2_explicit.patch
deleted file mode 100644 (file)
index acc6e2e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.15/configure.ac~   2015-11-28 13:11:46.816903917 +0100
-+++ rpm-5.4.15/configure.ac    2015-11-28 13:14:39.887776863 +0100
-@@ -604,7 +604,7 @@
- AC_PATH_PROG(__PERL, perl, %{_bindir}/perl, $MYPATH)
- AC_PATH_PROG(__PGP, pgp, %{_bindir}/pgp, $MYPATH)
- AC_PATH_PROG(__PHP, php, %{_bindir}/php, $MYPATH)
--AC_PATH_PROG(__PYTHON, python, %{_bindir}/python, $MYPATH)
-+AC_PATH_PROG(__PYTHON, python2, %{_bindir}/python2, $MYPATH)
- AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
- AC_PATH_PROG(__RMDIR, rmdir, /bin/rmdir, $MYPATH)
- AC_PATH_PROG(__RSH, rsh, %{_bindir}/rsh, $MYPATH)
diff --git a/rpm-5.4.10-dont-try-generate-rpmfc-dependencies-from-doc-files.patch b/rpm-5.4.10-dont-try-generate-rpmfc-dependencies-from-doc-files.patch
deleted file mode 100644 (file)
index 14275b3..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
---- rpm-5.4.10/lib/rpmfc.c.skip_doc~   2012-07-28 17:19:43.136069278 +0200
-+++ rpm-5.4.10/lib/rpmfc.c     2012-07-28 17:25:16.778898168 +0200
-@@ -818,7 +818,17 @@ static int rpmfcSCRIPT(rpmfc fc)
-     int i;
-     int is_executable;
-     int xx;
--    const char * defaultdocdir = NULL;
-+
-+    /* Don't generate dependencies from files shipped as documentation */
-+    if (!rpmExpandNumeric("%{_generate_dependencies_from_docdir}")) {
-+      const char * defaultdocdir = rpmExpand("%{?_defaultdocdir}", NULL);
-+      if (defaultdocdir == NULL || *defaultdocdir == '\0')
-+          defaultdocdir = strdup("/usr/share/doc");
-+      xx = !strncmp(fn+fc->brlen, defaultdocdir, strlen(defaultdocdir));
-+      defaultdocdir = _free(defaultdocdir) ;
-+      if (xx)
-+          return 0;
-+    }
-     /* Extract dependencies only from files with executable bit set. */
-     { struct stat sb, * st = &sb;
-@@ -904,20 +914,10 @@ static int rpmfcSCRIPT(rpmfc fc)
-     (void) fclose(fp);
-     if (fc->fcolor->vals[fc->ix] & RPMFC_PERL) {
--      defaultdocdir = rpmExpand("%{?_defaultdocdir}", NULL);
--      /* XXX coverity #1035723 */
--      /* XXX coverity #1035883 */
--      if (defaultdocdir == NULL || *defaultdocdir == '\0')  {
--            defaultdocdir = _free(defaultdocdir);
--            defaultdocdir = xstrdup("/usr/share/doc");
--      }
--
--      if (strncmp(fn, defaultdocdir, strlen(defaultdocdir))) {
--          if (fc->fcolor->vals[fc->ix] & RPMFC_MODULE)
--              xx = rpmfcHelper(fc, 'P', "perl");
--          if (is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE))
--              xx = rpmfcHelper(fc, 'R', "perl");
--      }
-+      if (fc->fcolor->vals[fc->ix] & RPMFC_MODULE)
-+          xx = rpmfcHelper(fc, 'P', "perl");
-+      if (is_executable || (fc->fcolor->vals[fc->ix] & RPMFC_MODULE))
-+          xx = rpmfcHelper(fc, 'R', "perl");
-     } else
-     if (fc->fcolor->vals[fc->ix] & RPMFC_PYTHON) {
-       xx = rpmfcHelper(fc, 'P', "python");
-@@ -1009,8 +1013,6 @@ static int rpmfcSCRIPT(rpmfc fc)
- #endif
-     }
--/*@-observertrans@*/
--    defaultdocdir = _free(defaultdocdir) ;
- /*@=observertrans@*/
-     return 0;
- }
diff --git a/rpm-5.4.10-duplicate_files_terminate_build.patch b/rpm-5.4.10-duplicate_files_terminate_build.patch
deleted file mode 100644 (file)
index 8f4574b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---- rpm-5.4.10/build/files.c.dups_terminate~   2012-07-10 20:09:01.125249185 +0200
-+++ rpm-5.4.10/build/files.c   2012-07-10 20:09:01.135249061 +0200
-@@ -2917,7 +2917,8 @@ exit:
- /* auxiliary function for checkDuplicateFiles() */
- /* XXX need to pass Header because fi->h is NULL */
--static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2, size_t buildrootL)
-+static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2,
-+      size_t buildrootL, int _duplicate_files_terminate_build)
-       /*@globals internalState @*/
-       /*@modifies fi1, fi2, internalState @*/
- {
-@@ -2955,7 +2956,7 @@ static int fiIntersect(/*@null@*/ rpmfi
-       he->tag = RPMTAG_NVRA;
-       N2 = (headerGet(fi2->h, he, 0) ? he->p.str : NULL);
--      rpmlog(RPMLOG_WARNING,
-+      rpmlog(_duplicate_files_terminate_build ? RPMLOG_ERR : RPMLOG_WARNING,
-              _("File(s) packaged into both %s and %s:\n%s"),
-              N1, N2, rpmiobStr(dups));
-@@ -2972,7 +2973,8 @@ static int fiIntersect(/*@null@*/ rpmfi
-  * @param spec                spec file control structure
-  * @return            number of duplicate files
-  */
--static int checkDuplicateFiles(Spec spec, size_t buildrootL)
-+static int checkDuplicateFiles(Spec spec, size_t buildrootL,
-+      int _duplicate_files_terminate_build)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies *spec->packages,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -2997,7 +2999,7 @@ static int checkDuplicateFiles(Spec spec
- #endif
-           if (fi2 == NULL) continue;
-           (void) rpmfiSetHeader(fi2, pkg2->header);
--          n += fiIntersect(fi1, fi2, buildrootL);
-+          n += fiIntersect(fi1, fi2, buildrootL, _duplicate_files_terminate_build);
-           (void) rpmfiSetHeader(fi2, NULL);
-           fi2 = rpmfiFree(fi2);
-       }
-@@ -3181,9 +3183,13 @@ rpmRC processBinaryFiles(Spec spec, int
-     }
-     if (res == RPMRC_OK) {
-+      int _duplicate_files_terminate_build =
-+          rpmExpandNumeric("%{?_duplicate_files_terminate_build}");
-       if (checkUnpackagedFiles(spec) > 0)
-           res = RPMRC_FAIL;
--      (void) checkDuplicateFiles(spec, buildrootL);
-+      if (checkDuplicateFiles(spec, buildrootL, _duplicate_files_terminate_build) > 0 &&
-+              _duplicate_files_terminate_build)
-+          res = RPMRC_FAIL;
-       (void) checkUnpackagedSubdirs(spec, buildrootL);
-     }
-     
---- rpm-5.4.10/macros/mandriva.in.dups_terminate~      2012-05-19 22:35:44.000000000 +0200
-+++ rpm-5.4.10/macros/mandriva.in      2012-07-10 20:13:41.582742985 +0200
-@@ -126,6 +126,9 @@ end\
- # use XZ to compress binary packages:
- %_binary_payload w5.xzdio
-+%_duplicate_files_terminate_build     1
-+
-+
- %_build_pkgcheck_set /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
- %_build_pkgcheck_srpm /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
- %_nonzero_exit_pkgcheck_terminate_build 1
diff --git a/rpm-5.4.10-files-listed-twice-terminates-build.patch b/rpm-5.4.10-files-listed-twice-terminates-build.patch
deleted file mode 100644 (file)
index 9fd555c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
---- rpm-5.4.10/build/files.c.twice_terminate~  2012-07-10 20:18:14.613329633 +0200
-+++ rpm-5.4.10/build/files.c   2012-07-10 20:18:14.677328833 +0200
-@@ -1329,7 +1329,7 @@ static rpmuint32_t getDigestAlgo(Header
-  * @param h
-  * @param isSrc
-  */
--static void genCpioListAndHeader(/*@partial@*/ FileList fl,
-+static rpmRC genCpioListAndHeader(/*@partial@*/ FileList fl,
-               rpmfi * fip, Header h, int isSrc)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies h, *fip, fl->processingFailed, fl->fileList,
-@@ -1349,6 +1349,7 @@ static void genCpioListAndHeader(/*@part
-     rpmuint32_t dalgo = getDigestAlgo(h, isSrc);
-     char buf[BUFSIZ];
-     int i, xx;
-+    rpmRC rc = RPMRC_OK;
- memset(buf, 0, sizeof(buf));  /* XXX valgrind on rhel6 beta pickier */
-@@ -1377,9 +1378,14 @@ memset(buf, 0, sizeof(buf));    /* XXX valg
-           /* file flags */
-           flp[1].flags |= flp->flags; 
--          if (!(flp[1].flags & RPMFILE_EXCLUDE))
--              rpmlog(RPMLOG_WARNING, _("File listed twice: %s\n"),
-+          if (!(flp[1].flags & RPMFILE_EXCLUDE)) {
-+              int terminate = rpmExpandNumeric("%{?_files_listed_twice_terminate_build}");
-+
-+              rpmlog(terminate ? RPMLOG_ERR : RPMLOG_WARNING, _("File listed twice: %s\n"),
-                       flp->fileURL);
-+              if (terminate)
-+                  rc = RPMRC_FAIL;
-+          }
-    
-           /* file mode */
-           if (S_ISDIR(flp->fl_mode)) {
-@@ -1792,6 +1798,8 @@ if (_rpmbuildFlags & 4) {
-       fi = rpmfiFree(fi);
-     /*@=compdef@*/
-   }
-+
-+  return rc;
- }
- /**
-@@ -2514,7 +2522,8 @@ static rpmRC processPackageFiles(Spec sp
-                       "PartialHardlinkSets", "4.0.4-1");
-     /* XXX should tags be added if filelist is empty? */
--    genCpioListAndHeader(&fl, &pkg->fi, pkg->header, 0);
-+    if (genCpioListAndHeader(&fl, &pkg->fi, pkg->header, 0) != RPMRC_OK)
-+      fl.processingFailed = 1;
-     if (spec->timeCheck)
-       timeCheck(spec->timeCheck, pkg->header);
-@@ -2828,7 +2837,7 @@ int processSourceFiles(Spec spec)
-     /* XXX should tags be added if filelist is empty? */
-     spec->fi = NULL;
--    genCpioListAndHeader(&fl, &spec->fi, spec->sourceHeader, 1);
-+    rc = genCpioListAndHeader(&fl, &spec->fi, spec->sourceHeader, 1);
- exit:
-     *sfp = rpmiobFree(*sfp);
---- rpm-5.4.10/macros/mandriva.in.twice_terminate~     2012-07-10 20:18:14.000000000 +0200
-+++ rpm-5.4.10/macros/mandriva.in      2012-07-10 20:18:32.060111516 +0200
-@@ -128,6 +128,7 @@ end\
- %_duplicate_files_terminate_build     1
- %_unpackaged_subdirs_terminate_build  0
-+%_files_listed_twice_terminate_build  1
- %_build_pkgcheck_set /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
- %_build_pkgcheck_srpm /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
diff --git a/rpm-5.4.10-fix-neon-saving-error-pages-as-target-file.patch b/rpm-5.4.10-fix-neon-saving-error-pages-as-target-file.patch
deleted file mode 100644 (file)
index 300a350..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
---- rpm-5.4.10/rpmio/rpmdav.c.dl_error~        2012-07-06 17:39:19.000000000 +0200
-+++ rpm-5.4.10/rpmio/rpmdav.c  2012-07-11 19:49:00.504968365 +0200
-@@ -1722,6 +1722,7 @@ int davReq(FD_t ctrl, const char * httpC
- {
-     urlinfo u;
-     int rc = 0;
-+    const ne_status *status;
- assert(ctrl != NULL);
-     u = (urlinfo) ctrl->u;
-@@ -1789,10 +1790,24 @@ assert(ctrl->req != NULL);
-     }
- /* XXX somewhere else instead? */
--if (_dav_debug) {
--    const ne_status *status = ne_get_status((ne_request *)ctrl->req);
--fprintf(stderr, "HTTP request sent, awaiting response... %d %s\n", status->code, status->reason_phrase);
--}
-+    status = ne_get_status((ne_request *)ctrl->req);
-+    if (_dav_debug)
-+      fprintf(stderr, "HTTP request sent, awaiting response... %d %s\n", status->code, status->reason_phrase);
-+
-+    switch (status->code) {
-+      case 200:
-+      case 201:                       /* 201 Created. */
-+          break;
-+      case 204:                       /* HACK: if overwriting, 204 No Content. */
-+      case 403:                       /* 403 Forbidden. */
-+          rc = FTPERR_UNKNOWN;
-+          break;
-+      default:
-+          rc = FTPERR_FILE_NOT_FOUND;
-+          break;
-+    }
-+    if (rc || _dav_debug)
-+      fprintf(stderr, "HTTP request sent, awaiting response... %d %s\n", status->code, status->reason_phrase);
-     if (rc)
-       goto errxit;
diff --git a/rpm-5.4.10-support-ignore-arch-and-os-again.patch b/rpm-5.4.10-support-ignore-arch-and-os-again.patch
deleted file mode 100644 (file)
index 0708d04..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
---- rpm-5.4.10/lib/depends.c.ignore_arch~      2012-07-27 21:11:47.463139875 +0200
-+++ rpm-5.4.10/lib/depends.c   2012-07-27 21:29:21.811958701 +0200
-@@ -587,11 +587,24 @@ int rpmtsAddInstallElement(rpmts ts, Hea
-     if (nplatpat > 1) {
-       const char * platform = NULL;
--      he->tag = RPMTAG_PLATFORM;
--      xx = headerGet(h, he, 0);
--      platform = he->p.str;
--      if (!xx || platform == NULL)
--          platform = rpmExpand(arch, "-unknown-", os, NULL);
-+      /* 
-+       * If ignore arch, we just set the arch in package platform string to
-+       * same as on system so that we're sure that it'll match, same goes for
-+       * os as well.
-+       */
-+      if (rpmExpandNumeric("%{__ignore_arch}") || rpmExpandNumeric("%{__ignore_os}")) {
-+          platform = rpmExpand(
-+                  rpmExpandNumeric("%{__ignore_arch}") ? "%{_target_cpu}" : arch,
-+                  "-unknown-",
-+                  rpmExpandNumeric("%{__ignore_os}") ? "%{_target_os}" : os,
-+                  NULL);
-+      } else {
-+          he->tag = RPMTAG_PLATFORM;
-+          xx = headerGet(h, he, 0);
-+          platform = he->p.str;
-+          if (!xx || platform == NULL)
-+              platform = rpmExpand(arch, "-unknown-", os, NULL);
-+      }
-       rc = rpmPlatformScore(platform, platpat, nplatpat);
- #if defined(RPM_VENDOR_MANDRIVA)
---- rpm-5.4.10/rpmpopt.in.ignore_arch~ 2012-07-27 21:29:07.687135285 +0200
-+++ rpm-5.4.10/rpmpopt.in      2012-07-27 21:29:35.399788829 +0200
-@@ -431,6 +431,10 @@ rpm       alias --without         --define "_without_
- rpm   alias --arch --qf '%-34{=NAME}\t%{ARCH}\n' \
-       --POPTdesc=$"list package architecture"
-+
-+rpm   alias --ignorearch --define '__ignore_arch 1'
-+rpm   alias --ignoreos --define '__ignore_os 1'
-+
- #==============================================================================
- rpmbuild      alias --dbpath          --define '_dbpath !#:+' \
-       --POPTdesc=$"use database in DIRECTORY" \
diff --git a/rpm-5.4.10-unpackaged_subdirs_terminate_build.patch b/rpm-5.4.10-unpackaged_subdirs_terminate_build.patch
deleted file mode 100644 (file)
index 2e7c5b8..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---- rpm-5.4.10/build/files.c.subdir_terminate~ 2012-07-10 20:14:36.357058212 +0200
-+++ rpm-5.4.10/build/files.c   2012-07-10 20:14:36.367058087 +0200
-@@ -3025,7 +3025,7 @@ static inline int packagedDir(Package pk
-  *       /A/B/C/D
-  * Now directories "/A/B" and "/A/B/C" should also be packaged.
-  */
--static int pkgUnpackagedSubdirs(Package pkg, size_t buildrootL)
-+static int pkgUnpackagedSubdirs(Package pkg, size_t buildrootL, int _unpackaged_subdirs_terminate_build)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies pkg->header,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -3103,7 +3103,7 @@ static int pkgUnpackagedSubdirs(Package
-       }
-       unpackaged = _free(unpackaged);
--      rpmlog(RPMLOG_WARNING,
-+      rpmlog(_unpackaged_subdirs_terminate_build ? RPMLOG_ERR : RPMLOG_WARNING,
-              _("Unpackaged subdir(s) in %s:\n%s"),
-              N, rpmiobStr(list));
-@@ -3119,7 +3119,7 @@ static int pkgUnpackagedSubdirs(Package
-  * @param spec                spec file control structure
-  * @return            number of unpackaged subdirectories
-  */
--static int checkUnpackagedSubdirs(Spec spec, size_t buildrootL)
-+static int checkUnpackagedSubdirs(Spec spec, size_t buildrootL, int _unpackaged_subdirs_terminate_build)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies *spec->packages,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -3128,7 +3128,7 @@ static int checkUnpackagedSubdirs(Spec s
-     Package pkg;
-     for (pkg = spec->packages; pkg; pkg = pkg->next)
--      n += pkgUnpackagedSubdirs(pkg, buildrootL);
-+      n += pkgUnpackagedSubdirs(pkg, buildrootL, _unpackaged_subdirs_terminate_build);
-     return n;
- }
-@@ -3185,12 +3185,16 @@ rpmRC processBinaryFiles(Spec spec, int
-     if (res == RPMRC_OK) {
-       int _duplicate_files_terminate_build =
-           rpmExpandNumeric("%{?_duplicate_files_terminate_build}");
-+      int _unpackaged_subdirs_terminate_build =
-+          rpmExpandNumeric("%{?_unpackaged_subdirs_terminate_build}");
-       if (checkUnpackagedFiles(spec) > 0)
-           res = RPMRC_FAIL;
-       if (checkDuplicateFiles(spec, buildrootL, _duplicate_files_terminate_build) > 0 &&
-               _duplicate_files_terminate_build)
-           res = RPMRC_FAIL;
--      (void) checkUnpackagedSubdirs(spec, buildrootL);
-+      if (checkUnpackagedSubdirs(spec, buildrootL, _unpackaged_subdirs_terminate_build) > 0 &&
-+              _unpackaged_subdirs_terminate_build)
-+          res = RPMRC_FAIL;
-     }
-     
-     return res;
---- rpm-5.4.10/macros/mandriva.in.subdir_terminate~    2012-07-10 20:14:36.000000000 +0200
-+++ rpm-5.4.10/macros/mandriva.in      2012-07-10 20:14:57.333795967 +0200
-@@ -127,7 +127,7 @@ end\
- %_binary_payload w5.xzdio
- %_duplicate_files_terminate_build     1
--
-+%_unpackaged_subdirs_terminate_build  0
- %_build_pkgcheck_set /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
- %_build_pkgcheck_srpm /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc
diff --git a/rpm-5.4.12-copy-Value-string.patch b/rpm-5.4.12-copy-Value-string.patch
deleted file mode 100644 (file)
index fb2af38..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.12/build/expression.c.strdup~      2013-07-31 18:10:52.556444318 +0200
-+++ rpm-5.4.12/build/expression.c      2013-07-31 18:10:30.794081121 +0200
-@@ -63,7 +63,7 @@ static Value valueMakeString(/*@only@*/
-     v = (Value) xmalloc(sizeof(*v));
-     v->type = VALUE_TYPE_STRING;
--    v->data.s = s;
-+    v->data.s = xstrdup(s);
-     return v;
- }
diff --git a/rpm-5.4.12-fix-rpmlua-print.patch b/rpm-5.4.12-fix-rpmlua-print.patch
deleted file mode 100644 (file)
index 4129ec4..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- rpm-5.4.12/misc/librpmmisc.vers.rpmluaprint~       2013-08-08 18:23:58.367842414 +0200
-+++ rpm-5.4.12/misc/librpmmisc.vers    2013-08-08 18:20:25.019996866 +0200
-@@ -36,6 +36,7 @@ LIBRPMMISC_0
-     lua_gettop;
-     lua_isnumber;
-     lua_isstring;
-+    lua_setglobal;
-     luaL_argerror;
-     luaL_checklstring;
-     luaL_error;
---- rpm-5.4.12/rpmio/rpmlua.c.rpmluaprint~     2013-08-08 18:23:06.755942297 +0200
-+++ rpm-5.4.12/rpmio/rpmlua.c  2013-08-08 18:23:32.325390087 +0200
-@@ -207,8 +207,8 @@ rpmlua rpmluaNew(void)
- #else
-     lua_pushglobaltable(L);
- #endif
--    lua_pushliteral(L, "print");
-     lua_pushcfunction(L, rpm_print);
-+    lua_setglobal(L, "print");
- #if defined(LUA_GLOBALSINDEX)
-     lua_rawset(L, LUA_GLOBALSINDEX);
diff --git a/rpm-5.4.12-fix-rpmpython-module-import-init.patch b/rpm-5.4.12-fix-rpmpython-module-import-init.patch
deleted file mode 100644 (file)
index fb4c0df..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- rpm-5.4.12/rpmio/rpmpython.c.modload~      2013-08-08 21:39:28.605164699 +0200
-+++ rpm-5.4.12/rpmio/rpmpython.c       2013-08-08 21:39:10.913948618 +0200
-@@ -66,9 +66,9 @@ static rpmpython rpmpythonGetPool(/*@nul
- /*@unchecked@*/
- #if defined(MODULE_EMBED)
- static const char * _rpmpythonI_init = "\
--import sys\n\
--from cStringIO import StringIO\n\
--sys.stdout = StringIO()\n\
-+import sys;\
-+from cStringIO import StringIO;\
-+sys.stdout = StringIO();\
- ";
- #endif
diff --git a/rpm-5.4.12-truncate-output-buffer-after-use.patch b/rpm-5.4.12-truncate-output-buffer-after-use.patch
deleted file mode 100644 (file)
index ff3b418..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.12/rpmio/rpmpython.c.rpmpythontrunc~       2013-08-09 03:05:39.809947086 +0200
-+++ rpm-5.4.12/rpmio/rpmpython.c       2013-08-09 03:25:25.097372593 +0200
-@@ -229,6 +229,8 @@ fprintf(stderr, "==> %s(%p,%s,%p)\n", __
-               if (sys_stdout != NULL && PycStringIO_OutputCheck(sys_stdout)) {
-                   PyObject * o = (*PycStringIO->cgetvalue)(sys_stdout);
-                   *resultp = (PyString_Check(o) ? PyString_AsString(o) : "");
-+                  PyObject_CallMethod(sys_stdout, "seek", "i",0);
-+                  PyObject_CallMethod(sys_stdout, "truncate", NULL);
-               } else
-                   *resultp = "";
-           }
diff --git a/rpm-5.4.13-perl-bindings-do-not-use-xmalloc.patch b/rpm-5.4.13-perl-bindings-do-not-use-xmalloc.patch
deleted file mode 100644 (file)
index 9eff10f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- rpm-5.4.13/perl/RPM_Spec.xs.xmalloc~       2013-09-13 06:20:58.102257264 +0200
-+++ rpm-5.4.13/perl/RPM_Spec.xs        2013-09-13 06:21:28.680226625 +0200
-@@ -234,7 +234,7 @@ icon(spec)
-         char * dest = NULL;
-         int len;
-         len = strlen(spec->sources->source);
--        dest = xmalloc(len+1);
-+        dest = malloc(len+1);
-       dest[len] = '\0';
-         memcpy(dest, spec->sources->source, len);
-         XPUSHs(sv_2mortal(newSVpv(dest, len)));
-@@ -249,7 +249,7 @@ icon_url(spec)
-         char * dest = NULL;
-         int len;
-         len = strlen(spec->sources->fullSource);
--        dest = xmalloc(len+1);
-+        dest = malloc(len+1);
-         memcpy(dest, spec->sources->fullSource, len);
-       dest[len] = '\0';
-         XPUSHs(sv_2mortal(newSVpv(dest, len)));
diff --git a/rpm-5.4.14-no-assert-abort-with-broken-headers.patch b/rpm-5.4.14-no-assert-abort-with-broken-headers.patch
deleted file mode 100644 (file)
index 0b9278e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.14/rpmdb/header.c.noassert~        2014-06-25 19:22:35.521902207 +0200
-+++ rpm-5.4.14/rpmdb/header.c  2014-06-25 19:22:37.381920455 +0200
-@@ -1076,7 +1076,7 @@ assert(h != NULL);
-               rpmuint32_t * stei = (rpmuint32_t *)
-                       memcpy(alloca(nb), dataStart + off, nb);
-               rdl = (rpmuint32_t)-ntohl(stei[2]);     /* negative offset */
--assert((rpmint32_t)rdl >= 0); /* XXX insurance */
-+//assert((rpmint32_t)rdl >= 0);       /* XXX insurance */
-               ril = (rpmuint32_t)(rdl/sizeof(*pe));
-               if (hdrchkTags(ril) || hdrchkData(rdl))
-                   goto errxit;
diff --git a/rpm-5.4.14-rpmdbchk.patch b/rpm-5.4.14-rpmdbchk.patch
deleted file mode 100644 (file)
index 3587b1d..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
---- rpm-5.4.14/tools/Makefile.am.rpmdbchk~     2013-08-18 21:40:58.000000000 +0200
-+++ rpm-5.4.14/tools/Makefile.am       2014-02-17 17:52:10.032157038 +0100
-@@ -33,7 +33,7 @@ EXTRA_PROGRAMS += augtool cudftool dbcon
-       nix-build nix-channel nix-collect-garbage \
-       nix-log2xml nix-prefetch-url nix-pull nix-push \
-       xiu-echo xiu-hash \
--      roto rpmkey sandbox semodule spooktool
-+      roto rpmdbchk rpmkey sandbox semodule spooktool
- RPMMISC_LDADD_COMMON = \
-       $(top_builddir)/misc/librpmmisc.la \
-@@ -64,7 +64,7 @@ pkgbin_PROGRAMS =    \
-       rpmcache rpmdigest rpmrepo rpmspecdump \
-       rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
- if WITH_DB
--pkgbin_PROGRAMS +=    dbconvert
-+pkgbin_PROGRAMS +=    dbconvert rpmdbchk
- endif
- dist_man_MANS =               rpmgrep.1
-@@ -234,6 +234,13 @@ rpm2cpio_LDFLAGS =        @LDFLAGS_STATIC@ $(LD
- rpm2cpio_LDADD =      $(LDFLAGS) $(RPM_LDADD_COMMON)
- ##
-+##  rpmdbchk tool for finding and fixing broken headers
-+##
-+rpmdbchk_SOURCES =      rpmdbchk.c
-+rpmdbchk_LDFLAGS =    @LDFLAGS_STATIC@ $(LDFLAGS)
-+rpmdbchk_LDADD =        $(LDFLAGS) $(RPM_LDADD_COMMON)
-+
-+##
- ##  keyctl(1) clone
- ##
- rpmkey_SOURCES =        rpmkey.c
---- rpm-5.4.14/tools/rpmdbchk.c.rpmdbchk~      2014-02-17 17:52:10.032157038 +0100
-+++ rpm-5.4.14/tools/rpmdbchk.c        2014-02-17 17:52:28.846342856 +0100
-@@ -0,0 +1,297 @@
-+#include <arpa/inet.h>
-+#include <stdint.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-+#include <errno.h>
-+#include <popt.h>
-+
-+#include <rpmio.h>
-+#include <rpmlog.h>
-+#include <rpmmacro.h>
-+#include <argv.h>
-+
-+#define _RPMTAG_INTERNAL
-+#define _RPMDB_INTERNAL
-+#define WITH_DB
-+#include <rpmdb.h>
-+
-+#include <rpmts.h>
-+#include <rpmrc.h>
-+#include <pkgio.h>
-+#include <rpmcli.h>
-+
-+static char *rootPath = NULL;
-+static char *rpmdbPath = NULL;
-+static int checkOnly = 0;
-+
-+struct node {
-+    uint32_t state;
-+    uint32_t keysize;
-+    void *keydata;
-+    struct node *next;
-+};
-+
-+static int
-+rpmdb_check(uint32_t **state, uint32_t *nkeys, struct node **broken)
-+{
-+    rpmts ts = NULL;
-+    DBC *dbcp = NULL;
-+    dbiIndex dbi = NULL;
-+    DBT key;
-+    DBT data;
-+    DB_TXN *txnid = NULL;
-+    DB *bdb;
-+
-+    uint32_t hdrNum = 0;
-+    uint32_t damaged = 0;
-+    float pct = 0;
-+    uint8_t tmp;
-+
-+    int xx;
-+
-+    ts = rpmtsCreate();
-+
-+    rpmtsSetRootDir(ts, rootPath && rootPath[0] ? rootPath : NULL);
-+    if(rpmtsOpenDB(ts, O_RDONLY))
-+      goto exit;
-+
-+    dbi = dbiOpen(rpmtsGetRdb(ts), RPMDBI_PACKAGES, 0);
-+
-+    if ((xx = dbiCopen(dbi, NULL, NULL, 0)))
-+      goto exit;
-+
-+    txnid = dbiTxnid(dbi);
-+    *nkeys = 0;
-+
-+    memset(&key, 0, sizeof(key));
-+    memset(&data, 0, sizeof(data));
-+    bdb = dbi->dbi_db;
-+
-+    /* Acquire a cursor for the database. */
-+    xx = bdb->cursor(bdb, NULL, &dbcp, 0);
-+    if (xx)
-+      bdb->err(bdb, xx, "DB->cursor");
-+
-+    xx = bdb->stat(bdb, txnid, &dbi->dbi_stats, 0);
-+    if (xx)
-+      goto exit;
-+
-+    switch (bdb->type) {
-+    case DB_BTREE:
-+    case DB_RECNO:{
-+      DB_BTREE_STAT *db_stat = dbi->dbi_stats;
-+      *nkeys = db_stat->bt_nkeys;
-+    }   break;
-+    case DB_HASH:{
-+      DB_HASH_STAT *db_stat = dbi->dbi_stats;
-+      *nkeys = db_stat->hash_nkeys;
-+    }   break;
-+    case DB_QUEUE:{
-+      DB_QUEUE_STAT *db_stat = dbi->dbi_stats;
-+      *nkeys = db_stat->qs_nkeys;
-+    }   break;
-+    case DB_UNKNOWN:
-+    default:
-+      xx = -1;
-+      goto exit;
-+      break;
-+    }
-+    uint32_t *status = calloc(*nkeys, sizeof(uint32_t));
-+    struct node *curr;
-+
-+    hdrNum = 0;
-+    pct = 0;
-+
-+    while ((xx = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
-+      tmp = pct;
-+      pct = (100 * (float) ++hdrNum / *nkeys) + 0.5;
-+      /* TODO: callbacks for status output? */
-+      if (tmp < (int) (pct + 0.5)) {
-+          fprintf(stderr, "\rchecking %s%s/Packages: %u/%u %d%%",
-+                      rootPath && rootPath[0] ? rootPath : "",
-+                      rpmdbPath, hdrNum, *nkeys, (int) pct);
-+      }
-+      const char *msg = NULL;
-+      int lvl = headerCheck(rpmtsDig(ts), data.data, data.size, &msg);
-+      rpmtsCleanDig(ts);
-+      if (lvl == RPMRC_FAIL) {
-+          status[hdrNum-1] = htonl(*(uint32_t*)(dbcp->rkey->data));
-+          damaged++;
-+          fprintf(stderr, "\n%d (%d): %s\n", hdrNum-1, status[hdrNum-1], msg);
-+      } else if (key.size != sizeof(hdrNum)) {
-+          curr = malloc(sizeof(struct node));
-+          curr->state = htonl(*(uint32_t*)(dbcp->rkey->data));
-+          curr->keysize = key.size;
-+          curr->keydata = malloc(key.size);
-+          memcpy(curr->keydata, key.data, key.size);
-+          curr->next = *broken;
-+          *broken = curr;
-+          status[hdrNum-1] = -1;
-+          damaged++;
-+          fprintf(stderr, "\n%d: %s (key.size(%d) != %d)\n", hdrNum-1, msg, key.size, sizeof(hdrNum));
-+      } else
-+          status[hdrNum-1] = -1;
-+      fflush(stderr);
-+    }
-+
-+    fprintf(stderr, "\n");
-+
-+
-+    *state = status;
-+    xx = dbiCclose(dbi, dbcp, 0);
-+    
-+exit:
-+    xx = rpmtsCloseDB(ts);
-+    ts = rpmtsFree(ts);
-+
-+    return damaged;
-+}
-+
-+static int
-+rpmdb_dump_delete(DB *dbp, const char *db, const char *lost, DBT *key, uint32_t n) {
-+    int gotrec;
-+    int ret = 0;
-+    DBT data;
-+
-+    memset(&data, 0, sizeof(data));
-+
-+    if ((ret = dbp->get(dbp, NULL, key, &data, 0)) == 0) {
-+      char copy[1024];
-+      snprintf(copy, sizeof(copy), "%s/header.%d", lost, n);
-+      FILE *fp = fopen(copy, "w");
-+      fwrite(data.data, data.size, 1, fp);
-+      fclose(fp);
-+      gotrec = 0;
-+      memcpy(&gotrec, key->data, sizeof(gotrec));
-+      printf("db: get key: %p[%d] = 0x%x, data at %p[%d].\n",
-+              (char *)key->data, key->size, gotrec,
-+              (char *)data.data, data.size);
-+      printf("Dumping broken header to disk: %s\n", copy);
-+    } else {
-+      dbp->err(dbp, ret, "DB->get");
-+      if (ret == DB_NOTFOUND)
-+          return 0;
-+      return ret;
-+    }
-+
-+    if ((ret = dbp->del(dbp, NULL, key, 0)) == 0) {
-+      gotrec = 0;
-+      memcpy(&gotrec, key->data, sizeof(gotrec));
-+      printf("db: del key: %p[%d] = 0x%x, data at %p[%d].\n",
-+              (char *)key->data, key->size, gotrec,
-+              (char *)data.data, data.size);
-+    } else {
-+      dbp->err(dbp, ret, "DB->del");
-+      return ret;
-+    }
-+    return 0;
-+}
-+
-+static int
-+rpmdb_fix(uint32_t *state, uint32_t nkeys, struct node *broken)
-+{
-+    DB * dbp;
-+    DBT key;
-+    struct stat sb;
-+    const char * db = rpmGetPath(rootPath && rootPath[0] ? rootPath : "", rpmdbPath, "/Packages", NULL);
-+    const char * lost = rpmGetPath(rootPath && rootPath[0] ? rootPath : "", rpmdbPath, "/broken", NULL);
-+    int ret, t_ret;
-+    uint32_t i;
-+
-+
-+    if ((ret = db_create(&dbp, NULL, 0)) != 0) {
-+      fprintf(stderr, "db_create: %s\n", db_strerror(ret));
-+      exit (1);
-+    }
-+
-+    if (Stat(lost, &sb))
-+      Mkdir(lost, 0700);
-+
-+    if ((ret = dbp->open(dbp, NULL, db, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
-+      dbp->err(dbp, ret, "%s", db);
-+      goto err;
-+    }
-+
-+    for (i = 0; i < nkeys; i++) {
-+      if (state[i] == -1) continue;
-+      int badrec, badrec2;
-+      memset(&key, 0, sizeof(key));
-+      badrec2 = state[i];
-+      badrec = htonl(badrec2);
-+      printf("fix record[%d] at #%d/#%d --\n", i, badrec2, badrec);
-+      key.data = &badrec;
-+      key.size = sizeof(badrec);
-+
-+      ret = rpmdb_dump_delete(dbp, db, lost, &key, state[i]);
-+    }
-+
-+    while (broken) {
-+      memset(&key, 0, sizeof(key));
-+      key.size = broken->keysize;
-+      key.data = broken->keydata;
-+      ret = rpmdb_dump_delete(dbp, db, lost, &key, broken->state);
-+      free(broken->keydata);
-+      free(broken);
-+      broken = broken->next;
-+    }
-+
-+
-+err:
-+    if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)
-+      ret = t_ret; 
-+    _free(db);
-+    _free(lost);
-+
-+    return 0;
-+}
-+
-+static struct poptOption optionsTable[] = {
-+  { "root", '\0', POPT_ARG_STRING, &rootPath, 0,
-+      "rpm root path", "path"},
-+  { "dbpath", '\0', POPT_ARG_STRING, &rpmdbPath, 0,
-+      "rpmdb path", "path"},
-+  { "checkonly", '\0', POPT_ARG_VAL, &checkOnly, 1,
-+      "only check, don't fix anything", NULL},  
-+
-+    POPT_AUTOALIAS
-+    POPT_AUTOHELP
-+    POPT_TABLEEND
-+};
-+
-+int main(int argc, char *argv[])
-+{
-+    poptContext optCon = rpmcliInit(argc, argv, optionsTable);
-+    ARGV_t av = poptGetArgs(optCon);
-+    int ac = argvCount(av);
-+    int rc = 2;               /* assume failure */
-+    uint32_t nkeys = 0;
-+    uint32_t *state = NULL;
-+    struct node *broken = NULL;
-+
-+    if (ac) {
-+      poptPrintUsage(optCon, stderr, 0);
-+      goto exit;
-+    }
-+
-+    rc = rpmReadConfigFiles(NULL, NULL);
-+
-+    if(!rpmdbPath)
-+      rpmdbPath = rpmExpand("%{?_dbpath}%{?!_dbpath:/var/lib/rpm}", NULL);
-+    else
-+      addMacro(NULL, "_dbpath", NULL, rpmdbPath, -1);
-+
-+
-+    rc = rpmdb_check(&state, &nkeys, &broken);
-+    printf("%d/%d (%f%%) headers damaged", rc, nkeys, (float)rc/nkeys);
-+    printf("\n");
-+    if (!checkOnly && rc) {
-+      printf("fixing...\n");
-+      rc = rpmdb_fix(state, nkeys, broken);
-+    }
-+
-+exit:
-+    _free(state);
-+    optCon = rpmcliFini(optCon);
-+    return rc;
-+}
diff --git a/rpm-5.4.15-use-DSA-sig.patch b/rpm-5.4.15-use-DSA-sig.patch
deleted file mode 100644 (file)
index e6d9799..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.15/macros/macros.rpmbuild.in~      2014-11-15 19:23:32.000000000 +0100
-+++ rpm-5.4.15/macros/macros.rpmbuild.in       2014-11-15 19:24:15.545692422 +0100
-@@ -282,7 +282,7 @@
- #     ECDSA/SHA384    (using NIST P-384)
- #     ECDSA/SHA512    (using NIST P-521)
- #
--%_build_sign  RSA/SHA1
-+%_build_sign  DSA
- #
- # Choose metadata file digest algorithm:
diff --git a/rpm-5.4.4-add-_specfile-macro.patch b/rpm-5.4.4-add-_specfile-macro.patch
deleted file mode 100644 (file)
index 723a17a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.4/build/parseSpec.c.specfile~      2011-11-11 13:41:29.137827186 +0100
-+++ rpm-5.4.4/build/parseSpec.c        2011-11-11 13:42:12.938874762 +0100
-@@ -542,6 +542,7 @@ int parseSpec(rpmts ts, const char *spec
-      *          /.././../usr/../bin//./sh (XXX FIXME: dots not handled yet)
-      */
-     spec->specFile = rpmGetPath(specFile, NULL);
-+    addMacro(spec->macros, "_specfile", NULL, spec->specFile, RMIL_SPEC);
-     spec->fileStack = newOpenFileInfo();
-     spec->fileStack->fileName = xstrdup(spec->specFile);
diff --git a/rpm-5.4.4-allow-installation-of-repackaged-rpms.patch b/rpm-5.4.4-allow-installation-of-repackaged-rpms.patch
deleted file mode 100644 (file)
index 545929a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.4/rpmdb/rpmdb.c.repackage~ 2011-11-24 16:28:22.436460713 +0100
-+++ rpm-5.4.4/rpmdb/rpmdb.c    2011-11-24 16:28:30.107464575 +0100
-@@ -2758,7 +2758,7 @@ int rpmdbAdd(rpmdb db, int iid, Header h
- if (_rpmdb_debug)
- fprintf(stderr, "--> %s(%p, %u, %p, %p) h# %u\n", __FUNCTION__, db, (unsigned)iid, h, ts, (unsigned)hdrNum);
--assert(headerIsEntry(h, RPMTAG_REMOVETID) == 0);      /* XXX sanity */
-+//assert(headerIsEntry(h, RPMTAG_REMOVETID) == 0);    /* XXX sanity */
-     /* Add the install transaction id. */
-     if (iid != 0 && iid != -1) {
diff --git a/rpm-5.4.4-drop-useless-auto-generated-pkgconfig-dependency.patch b/rpm-5.4.4-drop-useless-auto-generated-pkgconfig-dependency.patch
deleted file mode 100644 (file)
index 1da18fe..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- rpm-5.4.4/scripts/pkgconfigdeps.sh.oneshot~        2011-12-11 01:40:12.599487103 +0100
-+++ rpm-5.4.4/scripts/pkgconfigdeps.sh 2011-12-11 01:40:14.418488230 +0100
-@@ -37,12 +37,10 @@ case $1 in
-     done
-     ;;
- -R|--requires)
--    oneshot="pkgconfig"
-     while read filename ; do
-     case "${filename}" in
-     *.pc)
-       if [[ "$(dirname ${filename})" =~ pkgconfig ]]; then
--          [ -n "$oneshot" ] && echo "$oneshot"; oneshot=""
-           # Query the dependencies of the package.
-           DIR=`dirname ${filename}`
-           PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
-@@ -54,7 +52,6 @@ case $1 in
-               else
-                   echo "pkgconfig($n)"
-               fi
--              oneshot=""
-           done
-       fi
-       ;;
diff --git a/rpm-5.4.4-fix-rpmconstant-to-always-use-LC_CTYPE-C-for-case-conversion.patch b/rpm-5.4.4-fix-rpmconstant-to-always-use-LC_CTYPE-C-for-case-conversion.patch
deleted file mode 100644 (file)
index ce1e804..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- rpm-5.4.4/rpmconstant/rpmconstant.c.locale~        2008-08-18 12:57:58.000000000 +0200
-+++ rpm-5.4.4/rpmconstant/rpmconstant.c        2011-12-16 16:41:27.721549143 +0100
-@@ -89,7 +89,7 @@ int rpmconstInitToContext(rpmconst c, co
-     int rc = 0;
-     if (!context) return 0; /* programmer error */
-     for (ptr = lccontext; *ptr != 0; ptr++)
--        *ptr = (char)tolower(*ptr);
-+        *ptr = (char)xtolower(*ptr);
-     rpmconstInitL(c);
-     while (rpmconstNextL(c)) {
-         if (!strcmp(lccontext, rpmconstContext(c))) {
-@@ -108,7 +108,7 @@ int rpmconstNameMatch(rpmconst c, const
-     char * ucname = strdup(name);
-     
-     for (uc = ucname; *uc != 0; uc++)
--        *uc = (char)toupper(*uc);
-+        *uc = (char)xtoupper(*uc);
-     
-     if (!prefixed) prefixed = ALLCASE_PREFIX;
-     if (prefixed & WITH_PREFIX)
diff --git a/rpm-5.4.4-fix-same-package-with-epoch-possible-to-upgrade.patch b/rpm-5.4.4-fix-same-package-with-epoch-possible-to-upgrade.patch
deleted file mode 100644 (file)
index 6d81cf4..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- rpm-5.4.4/lib/transaction.c.epoch_cmp~     2011-11-30 22:25:26.646155379 +0100
-+++ rpm-5.4.4/lib/transaction.c        2011-11-30 23:15:28.252768345 +0100
-@@ -1187,12 +1187,15 @@ rpmlog(RPMLOG_DEBUG, D_("sanity checking
-                           const char *val = NULL;
-                           he->tag = tags[t];
-                           xx = headerGet(h, he, 0);
--                          if (he->tag == RPMTAG_EPOCH)
-+                          if (he->tag == RPMTAG_EPOCH) {
-                               val = rpmteE(p);
--                          else if (he->tag == RPMTAG_DISTEPOCH)
-+                              if (val ? atoi(val) : 0 != he->p.ui32p ? *(he->p.ui32p) : 0)
-+                                nkeys--;
-+                          } else if (he->tag == RPMTAG_DISTEPOCH) {
-                               val = rpmteD(p);
--                          if (strcmp(he->p.str ? he->p.str : "", val ? val : ""))
--                              nkeys--;
-+                              if (strcmp(he->p.str ? he->p.str : "", val ? val : ""))
-+                                nkeys--;
-+                          }
-                           he->p.ptr = _free(he->p.ptr);
-                       }
-                       mi = rpmmiFree(mi);
diff --git a/rpm-5.4.4-glob-wildcards-for-loading-macro-files.patch b/rpm-5.4.4-glob-wildcards-for-loading-macro-files.patch
deleted file mode 100644 (file)
index 67a1c2b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
---- rpm-5.4.4/rpmio/macro.c.glob~      2011-09-30 20:40:18.000000000 +0200
-+++ rpm-5.4.4/rpmio/macro.c    2011-11-17 16:49:16.870465121 +0100
-@@ -2798,6 +2798,9 @@ rpmLoadMacroFile(MacroContext mc, const
-       /* Parse %{load:...} immediately recursively. */
-       if (s[1] == '{' && !strncmp(s+2, "load:", sizeof("load:")-1)) {
-           char * se = (char *) matchchar(s, '{', '}');
-+          const char ** argv = NULL;
-+          int argc = 0;
-+          int i;
-           if (se == NULL) {
-               rpmlog(RPMLOG_WARNING,
-                   _("%s:%u Missing '}' in \"%s\", skipping.\n"),
-@@ -2814,7 +2817,10 @@ rpmLoadMacroFile(MacroContext mc, const
-               continue;
-           }
-           se = rpmMCExpand(mc, s, NULL);
--          rc = rpmLoadMacroFile(mc, se, nesting - 1);
-+          rc = rpmGlob(se, &argc, &argv);
-+          for(i = 0; i < argc; i++)
-+              rc |= rpmLoadMacroFile(mc, argv[i], nesting - 1);
-+          argv = _free(argv);
-           se = _free(se);
-           if (rc != 0)
-               goto exit;
diff --git a/rpm-5.4.4-pass-_builddir-properly-to-find-debuginfo.patch b/rpm-5.4.4-pass-_builddir-properly-to-find-debuginfo.patch
deleted file mode 100644 (file)
index 9dd9a29..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-macros.rpmbuild fixed with rpm-fix-___build_pre-macro.patch
-
-#--- rpm-5.4.4/macros/macros.rpmbuild.in.builddir~     2011-12-20 15:36:20.813852241 +0100
-#+++ rpm-5.4.4/macros/macros.rpmbuild.in       2011-12-20 15:37:43.385806877 +0100
-#@@ -326,8 +326,9 @@ echo "Patch #%{__patch_number} (%{basena
-# %___build_args               -e
-# %___build_cmd                %{?_sudo:%{_sudo} }%{?_remsh:%{_remsh} %{_remhost} }%{?_remsudo:%{_remsudo} }%{?_remchroot:%{_remchroot} %{_remroot} }%{___build_shell} %{___build_args}
-# %___build_pre        \
-#+  RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\
-#   RPM_OPT_FLAGS=\"%{optflags}\"\
-#-  export RPM_OPT_FLAGS\
-#+  export RPM_BUILD_DIR RPM_OPT_FLAGS\
-#   %{?buildroot:RPM_BUILD_ROOT=\"%{u2p:%{buildroot}}\"\
-#   export RPM_BUILD_ROOT}\
-#   %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
---- rpm-5.4.4/scripts/find-debuginfo.sh.builddir~      2011-12-20 15:36:31.962846125 +0100
-+++ rpm-5.4.4/scripts/find-debuginfo.sh        2011-12-20 15:36:49.492836503 +0100
-@@ -32,7 +32,6 @@ strip_r=false
- # Barf on missing build IDs.
- strict=false
--RPM_BUILD_DIR="`pwd`"
- # canon RPM_BUILD_DIR, the DW_AT_comp_dir in ELF objects is real a real path
- # and debugedit will ignore them as they are out of build dir.
- RPM_BUILD_DIR=$(readlink -f "$RPM_BUILD_DIR")
diff --git a/rpm-5.4.4-pkgconfigdeps-check-path.patch b/rpm-5.4.4-pkgconfigdeps-check-path.patch
deleted file mode 100644 (file)
index 5309292..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
---- rpm-5.4.4/scripts/pkgconfigdeps.sh.pc_path~        2011-11-17 15:08:42.400054348 +0100
-+++ rpm-5.4.4/scripts/pkgconfigdeps.sh 2011-11-17 15:08:44.380056984 +0100
-@@ -16,20 +16,22 @@ case $1 in
-     while read filename ; do
-     case "${filename}" in
-     *.pc)
--      # Query the dependencies of the package.
--      DIR=`dirname ${filename}`
--      PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
--      export PKG_CONFIG_PATH
--      $pkgconfig --print-provides "$filename" 2> /dev/null | while read n r v ; do
--          [ -n "$n" ] || continue
--          # We have a dependency.  Make a note that we need the pkgconfig
--          # tool for this package.
--          if  [ -n "$r" ] && [ -n "$v" ]; then
--              echo "pkgconfig($n) $r $v"
--          else
--              echo "pkgconfig($n)"
--          fi
--      done
-+      if [[ "$(dirname ${filename})" =~ pkgconfig ]]; then
-+          # Query the dependencies of the package.
-+          DIR=`dirname ${filename}`
-+          PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
-+          export PKG_CONFIG_PATH
-+          $pkgconfig --print-provides "$filename" 2> /dev/null | while read n r v ; do
-+              [ -n "$n" ] || continue
-+              # We have a dependency.  Make a note that we need the pkgconfig
-+              # tool for this package.
-+              if  [ -n "$r" ] && [ -n "$v" ]; then
-+                  echo "pkgconfig($n) $r $v"
-+              else
-+                  echo "pkgconfig($n)"
-+              fi
-+          done
-+      fi
-       ;;
-     esac
-     done
-@@ -39,20 +41,22 @@ case $1 in
-     while read filename ; do
-     case "${filename}" in
-     *.pc)
--      [ -n "$oneshot" ] && echo "$oneshot"; oneshot=""
--      # Query the dependencies of the package.
--      DIR=`dirname ${filename}`
--      PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
--      export PKG_CONFIG_PATH
--      $pkgconfig --print-requires "$filename" 2> /dev/null | while read n r v ; do
--          [ -n "$n" ] || continue
--          if  [ -n "$r" ] && [ -n "$v" ]; then
--              echo "pkgconfig($n) $r $v"
--          else
--              echo "pkgconfig($n)"
--          fi
--          oneshot=""
--      done
-+      if [[ "$(dirname ${filename})" =~ pkgconfig ]]; then
-+          [ -n "$oneshot" ] && echo "$oneshot"; oneshot=""
-+          # Query the dependencies of the package.
-+          DIR=`dirname ${filename}`
-+          PKG_CONFIG_PATH="$DIR:$DIR/../../share/pkgconfig"
-+          export PKG_CONFIG_PATH
-+          $pkgconfig --print-requires --print-requires-private "$filename" 2> /dev/null | while read n r v ; do
-+              [ -n "$n" ] || continue
-+              if  [ -n "$r" ] && [ -n "$v" ]; then
-+                  echo "pkgconfig($n) $r $v"
-+              else
-+                  echo "pkgconfig($n)"
-+              fi
-+              oneshot=""
-+          done
-+      fi
-       ;;
-     esac
-     done
diff --git a/rpm-5.4.4-rpmbuild-withoutclean.patch b/rpm-5.4.4-rpmbuild-withoutclean.patch
deleted file mode 100644 (file)
index 7dae678..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.4/rpmpopt.in.clean~        2011-12-05 20:52:18.544053402 +0100
-+++ rpm-5.4.4/rpmpopt.in       2011-12-05 20:53:51.520325674 +0100
-@@ -454,5 +454,7 @@ rpmbuild alias --lsb --noautoreq --noaut
- rpmbuild      alias --withoutcheck            --define 'check exit 0' \
-       --POPTdesc=$"disable %check stanza for build" 
-+rpmbuild      alias --withoutclean            --define '__spec_clean_body %{nil}' \
-+      --POPTdesc=$"disable %clean stanza for build" 
- # \endverbatim
- #*/
diff --git a/rpm-5.4.5-python-export-spec-macros.patch b/rpm-5.4.5-python-export-spec-macros.patch
deleted file mode 100644 (file)
index 081deee..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
---- rpm-5.4.5/python/spec-py.c.py_macros~      2012-03-01 22:55:19.592995392 +0100
-+++ rpm-5.4.5/python/spec-py.c 2012-03-01 22:56:02.081016570 +0100
-@@ -6,6 +6,8 @@
- #include <rpmiotypes.h>
- #include <rpmio.h>
-+#define _MACRO_INTERNAL
-+#include <rpmmacro.h>
- #include "spec-py.h"
- /** \ingroup python
-@@ -146,6 +148,50 @@ spec_get_sources(specObject *s)
- }
-+static PyObject *
-+spec_get_macros(specObject *s)
-+    /*@*/
-+{
-+    MacroContext mc;
-+    PyObject *macroDict;
-+    Spec spec;
-+
-+    macroDict = PyDict_New();
-+    if (!macroDict) {
-+        return NULL;
-+    }
-+    spec = specFromSpec(s);
-+    if ( spec != NULL) {
-+      mc = spec->macros;
-+      if (mc->macroTable != NULL) {
-+          int i;
-+          for (i = 0; i < mc->firstFree; i++) {
-+              MacroEntry me;
-+              PyObject *macro;
-+              if ((me = mc->macroTable[i]) == NULL) {
-+                  /* XXX this should never happen */
-+                  continue;
-+              }
-+              macro = PyDict_New();
-+
-+              PyMapping_SetItemString(macro, "used", PyInt_FromLong(me->used));
-+              PyMapping_SetItemString(macro, "level", PyInt_FromLong(me->level));
-+              if (me->opts && *me->opts)
-+                  PyMapping_SetItemString(macro, "opts", PyString_FromString(me->opts));
-+              if (me->body && *me->body)
-+                  PyMapping_SetItemString(macro, "body", PyString_FromString(me->body));
-+              PyMapping_SetItemString(macroDict, strdup(me->name), macro);
-+          }
-+      }
-+
-+      return macroDict;
-+    }
-+    else {
-+      return NULL;
-+    }
-+
-+}
-+
- /**
-  */
-  /*@unchecked@*/ /*@observer@*/
-@@ -161,6 +207,7 @@ static PyMethodDef spec_Spec_methods[] =
-     {"check",   (PyCFunction) spec_get_check, METH_VARARGS,  NULL },
-     {"clean",   (PyCFunction) spec_get_clean, METH_VARARGS,  NULL },
-     {"buildRoot",   (PyCFunction) spec_get_buildroot, METH_VARARGS,  NULL },
-+    {"macros",   (PyCFunction) spec_get_macros, METH_VARARGS,  NULL },
-     {NULL}  /* Sentinel */
- };
- /*@=fullinitblock@*/
diff --git a/rpm-5.4.5-rpmfc-apply-python-coloring-from-magic.patch b/rpm-5.4.5-rpmfc-apply-python-coloring-from-magic.patch
deleted file mode 100644 (file)
index 06d5470..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.5/lib/rpmfc.c.python_coloring~     2012-03-05 23:13:57.442354701 +0100
-+++ rpm-5.4.5/lib/rpmfc.c      2012-03-05 23:13:59.610357114 +0100
-@@ -641,6 +641,7 @@ static struct rpmfcTokens_s rpmfcTokens[
-   /* XXX "python 2.3 byte-compiled" */
-   { " /usr/bin/python",               RPMFC_PYTHON|RPMFC_INCLUDE },
-   { "python ",                        RPMFC_PYTHON|RPMFC_INCLUDE },
-+  { "Python script",          RPMFC_PYTHON|RPMFC_INCLUDE },
-   { "libtool library ",               RPMFC_LIBTOOL|RPMFC_INCLUDE },
-   { "pkgconfig ",             RPMFC_PKGCONFIG|RPMFC_INCLUDE },
diff --git a/rpm-5.4.5-skip-dependencies-for-character-devices.patch b/rpm-5.4.5-skip-dependencies-for-character-devices.patch
deleted file mode 100644 (file)
index 790ff48..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- rpm-5.4.5/lib/rpmfc.c.skip_chrdev~ 2012-03-03 05:22:33.527640802 +0100
-+++ rpm-5.4.5/lib/rpmfc.c      2012-03-03 05:31:05.973896224 +0100
-@@ -1265,7 +1265,9 @@ assert(fc->fn != NULL);
-               }
-           }
--          xx = (*fcat->func) (fc);
-+          struct stat sb, * st = &sb;
-+          if (stat(fc->fn[fc->ix], st) == 0 && !(st->st_mode & (S_IFBLK|S_IFCHR)))
-+              xx = (*fcat->func) (fc);
-       }
-     }
diff --git a/rpm-5.4.7-dont-consider-trigger-dependencies-as-overlapping.patch b/rpm-5.4.7-dont-consider-trigger-dependencies-as-overlapping.patch
deleted file mode 100644 (file)
index bfb9159..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-5.4.7/build/reqprov.c.triggers_nooverlap~      2012-03-20 16:44:54.803999496 +0100
-+++ rpm-5.4.7/build/reqprov.c  2012-03-20 16:44:57.294002536 +0100
-@@ -117,6 +117,9 @@ int addReqProv(/*@unused@*/ Spec spec, H
-            * bit further, leaving under #ifdef for now...
-            * TODO: auto-generated deps too
-            */
-+          if (Flags & RPMSENSE_TRIGGER)
-+              continue;
-+
-           if (flagtag && versions != NULL) {
-               int overlap = 0, res = 0;
-               rpmds old = rpmdsSingle(flagtag, names[len], versions[len] ? versions[len] : "", flags[len]);
diff --git a/rpm-5.4.7-fix-generation-of-ruby-abi-provides.patch b/rpm-5.4.7-fix-generation-of-ruby-abi-provides.patch
deleted file mode 100644 (file)
index da95f37..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
---- rpm-5.4.15/lib/rpmfc.c     2014-12-08 16:52:23.628067323 +0200
-+++ rpm-5.4.15.orig/lib/rpmfc.c        2014-12-08 16:23:46.377110108 +0200
-@@ -1155,9 +1155,13 @@
-                   fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-               else if (!strncmp(fn, "/ruby", sizeof("/ruby")-1)) {
-                   fc->fcolor->vals[fc->ix] |= RPMFC_RUBY;
--                  if ((fn = strstr(fn, "/specifications/")) &&
--                      (fn = strrchr(fn, '.')) && !strcmp(fn, ".gemspec"))
--                      fc->fcolor->vals[fc->ix] |= RPMFC_MODULE;
-+                  if ((strstr(fn, ".gemspec") || strstr(fn, "rbconfig.rb"))) {
-+                      miRE mire = mireNew(RPMMIRE_REGEX, RPMTAG_FILEPATHS);
-+                      if (!mireRegcomp(mire, ".*/(specifications/.*\\.gemspec|rbconfig\\.rb)$"))
-+                          if (mireRegexec(mire, fc->fn[fc->ix], (size_t) 0) >= 0)
-+                              fc->fcolor->vals[fc->ix] |= RPMFC_MODULE;
-+                      mire = mireFree(mire);
-+                  }
-               }
-               /* XXX: lacking better, more generic classifier... */
-               else if (!strncmp(fn, "/gstreamer", sizeof("/gstreamer")-1) &&
-@@ -1177,6 +1181,15 @@
-               fn += sizeof("/usr/share")-1;
-               if (!strncmp(fn, "/python", sizeof("/python")-1))
-                   fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+              else if (!strncmp(fn, "/ruby", sizeof("/ruby")-1) || !strncmp(fn, "/gems/specifications", sizeof("/gems/specifications")-1)) {
-+                  fc->fcolor->vals[fc->ix] |= RPMFC_RUBY;
-+                  if ((strstr(fn, ".gemspec") || strstr(fn, "rbconfig.rb"))) {
-+                      miRE mire = mireNew(RPMMIRE_REGEX, RPMTAG_FILEPATHS);
-+                      if (!mireRegcomp(mire, ".*/(specifications/.*\\.gemspec|rbconfig\\.rb)$"))
-+                          if (mireRegexec(mire, fc->fn[fc->ix], (size_t) 0) >= 0)
-+                              fc->fcolor->vals[fc->ix] |= RPMFC_MODULE;
-+                      mire = mireFree(mire);
-+                  }
-               }
-           }
-       }
diff --git a/rpm-5.4.7-fix-minor-memleaks.patch b/rpm-5.4.7-fix-minor-memleaks.patch
deleted file mode 100644 (file)
index 78a1899..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
---- rpm-5.4.7/build/parseReqs.c.memleak~       2012-03-21 19:13:54.725053861 +0100
-+++ rpm-5.4.7/build/parseReqs.c        2012-03-21 19:13:57.755057614 +0100
-@@ -177,7 +177,7 @@ rpmRC parseRCPOT(Spec spec, Package pkg,
-           if (!(nr > 3 && EVR[0] == '%' && EVR[1] == '{' && EVR[nr-1] == '}'))
-           {
-               memset(evr, 0, sizeof(*evr));
--              ix = rpmEVRparse(xstrdup(EVR), evr);
-+              ix = rpmEVRparse(EVR, evr);
-               evr->str = _free(evr->str);
-           }
-           if (ix != 0) {
---- rpm-5.4.7/rpmio/macro.c.memleak~   2012-03-21 19:16:07.453218370 +0100
-+++ rpm-5.4.7/rpmio/macro.c    2012-03-21 19:19:33.758488216 +0100
-@@ -2818,8 +2818,10 @@ rpmLoadMacroFile(MacroContext mc, const
-           }
-           se = rpmMCExpand(mc, s, NULL);
-           rc = rpmGlob(se, &argc, &argv);
--          for(i = 0; i < argc; i++)
-+          for(i = 0; i < argc; i++) {
-               rc |= rpmLoadMacroFile(mc, argv[i], nesting - 1);
-+              argv[i] = _free(argv[i]);
-+          }
-           argv = _free(argv);
-           se = _free(se);
-           if (rc != 0)
diff --git a/rpm-5.4.7-hdrfmt-fix-unitialized-argv-element.patch b/rpm-5.4.7-hdrfmt-fix-unitialized-argv-element.patch
deleted file mode 100644 (file)
index 157a6eb..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- rpm-5.4.7/rpmdb/hdrfmt.c.unitialized~      2012-03-19 14:21:14.907225418 +0100
-+++ rpm-5.4.7/rpmdb/hdrfmt.c   2012-03-19 14:21:17.327228582 +0100
-@@ -2048,8 +2048,10 @@ static int triggertypeTag(Header h, HE_t
-     he->p.argv = xmalloc(sizeof(*he->p.argv) * he->c);
-     for (i = 0; i < (unsigned) he->c; i++) {
-       for (j = 0; j < (unsigned) numNames; j++) {
--          if (indices.ui32p[j] != i)
-+          if (indices.ui32p[j] != i) {
-+              he->p.argv[i] = NULL;
-               /*@innercontinue@*/ continue;
-+          }
-           /* XXX FIXME: there's memory leaks here. */
-           if (flags.ui32p[j] & RPMSENSE_TRIGGERPREIN)
diff --git a/rpm-5.4.7-kmod-dependencies.patch b/rpm-5.4.7-kmod-dependencies.patch
deleted file mode 100644 (file)
index daa0dc2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
---- rpm-5.4.7/lib/rpmfc.c.kmod~        2012-03-16 16:34:04.640654829 +0100
-+++ rpm-5.4.7/lib/rpmfc.c      2012-03-16 16:34:04.644654834 +0100
-@@ -981,6 +981,19 @@ static int rpmfcSCRIPT(rpmfc fc)
-       xx = rpmfcHelper(fc, 'P', "gstreamer");
-       /* XXX: currently of no use, but for the sake of consistency... */
-       xx = rpmfcHelper(fc, 'R', "gstreamer");
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD)
-+    } else
-+    if ((fc->fcolor->vals[fc->ix] & RPMFC_MODULE)) {
-+      miRE mire = mireNew(RPMMIRE_REGEX, RPMTAG_FILEPATHS);
-+      if (!mireRegcomp(mire, "^.*((/lib/modules/|/var/lib/dkms/).*\\.ko(\\.gz|\\.xz)?|(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf)$"))
-+          if (mireRegexec(mire, fc->fn[fc->ix], (size_t) 0) >= 0) {
-+              fc->fcolor->vals[fc->ix] |= (RPMFC_MODULE|RPMFC_SCRIPT);
-+              xx = rpmfcHelper(fc, 'P', "kernel");
-+              /* XXX: currently of no use, but for the sake of consistency... */
-+              xx = rpmfcHelper(fc, 'R', "kernel");
-+          }
-+      mire = mireFree(mire);
-+#endif
-     } else
-     if (fc->fcolor->vals[fc->ix] & RPMFC_JAVA) {
-       xx = rpmfcHelper(fc, 'P', "java");
-@@ -1188,6 +1201,14 @@ assert(fc->fn != NULL);
-               else if (!strncmp(fn, "/gstreamer", sizeof("/gstreamer")-1) &&
-                       fc->fcolor->vals[fc->ix] & RPMFC_LIBRARY)
-                   fc->fcolor->vals[fc->ix] |= (RPMFC_MODULE|RPMFC_SCRIPT);
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD)
-+          } else {
-+              miRE mire = mireNew(RPMMIRE_REGEX, RPMTAG_FILEPATHS);
-+              if (!mireRegcomp(mire, "^.*((/lib/modules/|/var/lib/dkms/).*\\.ko(\\.gz|\\.xz)?|(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf)$"))
-+                  if (mireRegexec(mire, fc->fn[fc->ix], (size_t) 0) >= 0)
-+                      fc->fcolor->vals[fc->ix] |= (RPMFC_MODULE|RPMFC_SCRIPT);
-+              mire = mireFree(mire);
-+#endif
-           }
-       }
---- rpm-5.4.7/macros/kernel.in.kmod~   2011-04-10 12:54:18.000000000 +0200
-+++ rpm-5.4.7/macros/kernel.in 2012-03-16 16:37:04.277948160 +0100
-@@ -2,11 +2,11 @@
- # To make use of these macros insert the following line into your spec file:
- # %{load:%{_usrlibrpm}/macros.d/kernel}
--%__modinfo            @__MODINFO
-+%__modinfo            @__MODINFO@
- # Path to scripts to autogenerate gstreamer package dependencies,
- #
--# Note: Used if _use_internal_dependency_generator is non-zero. The
-+# Note: Used iff _use_internal_dependency_generator is non-zero. The
- # helpers are also used by %{_rpmhome}/rpmdeps {--provides|--requires}.
- %__kernel_provides    %{_rpmhome}/kmod-deps.sh --provides --modinfo %__modinfo
- #%__kernel_requires   %{_rpmhome}/kmod-deps.sh --requires --modinfo %__modinfo
diff --git a/rpm-5.4.7-no-seqid_init-on-rdonly-database.patch b/rpm-5.4.7-no-seqid_init-on-rdonly-database.patch
deleted file mode 100644 (file)
index 85d52e0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.7/rpmdb/db3.c.db_rdonly~   2012-03-24 04:16:30.305949579 +0100
-+++ rpm-5.4.7/rpmdb/db3.c      2012-03-24 04:16:39.649962411 +0100
-@@ -2700,7 +2700,7 @@ assert(Pdbi != NULL);
-           if (oflags & (DB_CREATE|DB_TRUNCATE)) _flags |= DB_CREATE;
-           xx = db3associate(Pdbi, dbi, _callback, _flags);
-       }
--      if (dbi->dbi_seq_id) {
-+      if (dbi->dbi_seq_id && !(oflags & DB_RDONLY)) {
-           char * end = NULL;
-           uint32_t u = (uint32_t) strtoll(dbi->dbi_seq_id, &end, 0);
diff --git a/rpm-5.4.8-dont-show-suggests-with-requires.patch b/rpm-5.4.8-dont-show-suggests-with-requires.patch
deleted file mode 100644 (file)
index 19cf1e0..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
---- rpm-5.4.8/rpmdb/hdrfmt.c.suggests~ 2012-04-25 17:58:22.721144146 +0200
-+++ rpm-5.4.8/rpmdb/hdrfmt.c   2012-04-25 18:33:32.293704707 +0200
-@@ -1607,6 +1607,38 @@ static const char * bfstring(unsigned in
- #endif
- /**
-+ * Format dependency flags for display.
-+ * @param he          tag container
-+ * @param av          parameter list (or NULL)
-+ * @return            formatted string
-+ */
-+static /*@only@*/
-+char * hintFormat(HE_t he, /*@unused@*/ /*@null@*/ const char ** av)
-+      /*@*/
-+{
-+    int ix = (he->ix > 0 ? he->ix : 0);
-+    char * val;
-+
-+assert(ix == 0);
-+    if (he->t != RPM_UINT64_TYPE) {
-+      val = xstrdup(_("(invalid type)"));
-+    } else {
-+      rpmuint64_t anint = he->p.ui64p[ix];
-+      char *t, *buf;
-+
-+      t = buf = alloca(32);
-+      *t = '\0';
-+
-+      if (anint & RPMSENSE_MISSINGOK)
-+          t = stpcpy(t, "(hint)");
-+      *t = '\0';
-+
-+      val = xstrdup(buf);
-+    }
-+
-+    return val;
-+}
-+/**
-  * Retrieve install prefixes.
-  * @param h           header
-  * @retval *he                tag container
-@@ -5201,6 +5233,8 @@ static struct headerSprintfExtension_s _
-       { .fmtFunction = digestFormat } },
-     { HEADER_EXT_FORMAT, "fflags",
-       { .fmtFunction = fflagsFormat } },
-+    { HEADER_EXT_FORMAT, "hint",
-+      { .fmtFunction = hintFormat } },
-     { HEADER_EXT_FORMAT, "iconv",
-       { .fmtFunction = iconvFormat } },
-     { HEADER_EXT_FORMAT, "json",
---- rpm-5.4.8/rpmpopt.in.suggests~     2012-04-25 17:58:22.439141788 +0200
-+++ rpm-5.4.8/rpmpopt.in       2012-04-25 18:33:32.295704719 +0200
-@@ -98,7 +98,8 @@ rpm  alias --provides        --qf \
-       --POPTdesc=$"list capabilities that this package provides"
- rpm   alias --requires        --qf \
--  "[%{REQUIRENAME}%{REQUIREFLAGS:depflags}%{REQUIREVERSION}\n]" \
-+  "[%{REQUIRENAME}%{REQUIREFLAGS:hint:depflags}%{REQUIREVERSION}\n]" \
-+      --pipe "grep -v \(hint\)" \
-       --POPTdesc=$"list capabilities required by package(s)"
- rpm   alias -R --requires
diff --git a/rpm-5.4.9-avoid-dependencies-on-self.patch b/rpm-5.4.9-avoid-dependencies-on-self.patch
deleted file mode 100644 (file)
index 8a3ea13..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
---- rpm-5.4.9/lib/rpmfc.c.drop_deps~   2012-05-07 22:41:45.000000000 +0200
-+++ rpm-5.4.9/lib/rpmfc.c      2012-05-15 01:58:00.071056896 +0200
-@@ -1696,6 +1696,65 @@ static int rpmfcGenerateScriptletDeps(co
-     return rc;
- }
-+static void removeSillyDeps(Header h) {
-+    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
-+    int xx, i, rnum, removed = 0;
-+    const char **deps = NULL;
-+    const char **versions = NULL;
-+    evrFlags *flags = NULL;
-+
-+    he->tag = RPMTAG_REQUIRENAME;
-+    xx = headerGet(h, he, 0);
-+    deps = he->p.argv;
-+    rnum = he->c;
-+
-+    he->tag = RPMTAG_REQUIREVERSION;
-+    xx = headerGet(h, he, 0);
-+    versions = he->p.argv;
-+
-+    he->tag = RPMTAG_REQUIREFLAGS;
-+    xx = headerGet(h, he, 0);
-+    flags = (evrFlags*)he->p.ui32p;
-+
-+    for (i = 0; i < rnum-removed; i++) {
-+      if (removed) {
-+          deps[i] = deps[i+removed];
-+          versions[i] = versions[i+removed];
-+          flags[i] = flags[i+removed];
-+      }
-+      rpmds req = rpmdsSingle(RPMTAG_REQUIRENAME, deps[i], versions[i], flags[i]);
-+      rpmds prov = rpmdsNew(h, (*deps[i] == '/' && !*versions[i]) ? RPMTAG_BASENAMES : RPMTAG_PROVIDENAME, 0);
-+      if (rpmdsMatch(req, prov)) {
-+          if (flags[i] & RPMSENSE_SCRIPT_PRE)
-+              rpmlog(RPMLOG_ERR, "Requires(pre): on dependency provided by self: %s\n", rpmdsDNEVR(req));
-+          else {
-+              rpmlog(RPMLOG_NOTICE, "Removing dependency on self: %s\n", rpmdsDNEVR(req));
-+              removed++;
-+              i--;
-+          }
-+      }
-+      req = rpmdsFree(req);
-+      prov = rpmdsFree(prov);
-+    }
-+    if (removed) {
-+      he->tag = RPMTAG_REQUIRENAME;
-+      he->t = RPM_STRING_ARRAY_TYPE;
-+      he->p.argv = deps;
-+      he->c -= removed;
-+      headerMod(h, he, 0);
-+
-+      he->tag = RPMTAG_REQUIREVERSION;
-+      he->p.argv = versions;
-+      headerMod(h, he, 0);
-+
-+      he->tag = RPMTAG_REQUIREFLAGS;
-+      he->t = RPM_UINT32_TYPE;
-+      he->p.ui32p = (uint32_t*)flags;
-+      headerMod(h, he, 0);
-+    }
-+
-+}
-+
- rpmRC rpmfcGenerateDepends(void * _spec, void * _pkg)
- {
-     HE_t he = (HE_t) memset(alloca(sizeof(*he)), 0, sizeof(*he));
-@@ -1729,6 +1788,7 @@ rpmRC rpmfcGenerateDepends(void * _spec,
-     if (internaldeps == 0) {
-       /* ... then generate dependencies using %{__find_requires} et al. */
-       rc = rpmfcGenerateDependsHelper(spec, pkg, fi);
-+      removeSillyDeps(pkg->header);
-       printDeps(pkg->header);
-       return rc;
-     }
-@@ -1946,6 +2006,8 @@ assert(ac == (int)he->c);
-       xx = headerPut(pkg->header, he, 0);
-     }
-+    removeSillyDeps(pkg->header);
-+
-     printDeps(pkg->header);
- if (fc != NULL && _rpmfc_debug) {
diff --git a/rpm-5.4.9-avoid-double-slash-in-path-for-dirname-filetrigger-matching.patch b/rpm-5.4.9-avoid-double-slash-in-path-for-dirname-filetrigger-matching.patch
deleted file mode 100644 (file)
index 7535c34..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- rpm-5.4.9/lib/psm.c.slash~ 2012-05-15 03:47:32.000000000 +0200
-+++ rpm-5.4.9/lib/psm.c        2012-05-15 03:49:04.075347677 +0200
-@@ -1463,11 +1463,15 @@ static rpmRC runTriggersLoop(rpmpsm psm,
-       ARGint_t vals;
-       depName = _free(depName);
--      depName = (char *) xmalloc(nName + 1 + 1);
--      (void) stpcpy(depName, Name);
--      /* XXX re-add the pesky trailing '/' to dirnames. */
--      depName[nName] = (tagno == RPMTAG_DIRNAMES ? '/' : '\0');
--      depName[nName+1] = '\0';
-+      if (!strcmp(Name, "/"))
-+              depName = xstrdup(Name);
-+      else {
-+          depName = xmalloc(nName + 1 + 1);
-+          (void) stpcpy(depName, Name);
-+          /* XXX re-add the pesky trailing '/' to dirnames. */
-+          depName[nName] = (tagno == RPMTAG_DIRNAMES ? '/' : '\0');
-+          depName[nName+1] = '\0';
-+      }
-       if (depName[0] == '/' && psm->Tmires != NULL) {
-           miRE mire;
diff --git a/rpm-5.4.9-disable-l10ndir.patch b/rpm-5.4.9-disable-l10ndir.patch
deleted file mode 100644 (file)
index 05e6259..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.9/macros/macros.in.l10ndir~        2012-05-18 11:46:41.037713866 +0200
-+++ rpm-5.4.9/macros/macros.in 2012-05-18 11:46:59.425827976 +0200
-@@ -286,7 +286,7 @@ package or when debugging this package.\
- %__gitdir     %{__varlibwdj}/git
- %__svndir     %{__varlibwdj}/svn
- %__sqldir     %{__varlibwdj}/sql
--%__l10ndir    %{__varlibwdj}/l10n
-+#__l10ndir    %{__varlibwdj}/l10n
- #     Elements necessary to construct a mongodb:// URI configurably
- #
diff --git a/rpm-5.4.9-fix-rpm_qa-pattern.patch b/rpm-5.4.9-fix-rpm_qa-pattern.patch
deleted file mode 100644 (file)
index 76ce249..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.9/lib/rpmgi.c.pattern~     2012-04-15 23:20:58.000000000 +0200
-+++ rpm-5.4.9/lib/rpmgi.c      2012-05-17 01:56:21.018481577 +0200
-@@ -473,7 +473,7 @@ fprintf(stderr, "*** gi %p key %p[%d]\tm
-               pat = ae;
-               got++;
-           }
--          if (got) {
-+          if (got >= 0) {
- if (_rpmgi_debug  < 0)
- fprintf(stderr, "\tav %p[%d]: \"%s\" -> %s ~= \"%s\"\n", gi->argv, (int)(av - gi->argv), *av, tagName((rpmTag)tag), pat);
-               got = rpmmiAddPattern(gi->mi, (rpmTag)tag, RPMMIRE_DEFAULT, pat);
diff --git a/rpm-5.4.9-fix-verify-segfault.patch b/rpm-5.4.9-fix-verify-segfault.patch
deleted file mode 100644 (file)
index e457b5e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
---- rpm-5.4.9/rpmio/rpmhkp.c.fix_verify~       2012-04-16 22:53:33.000000000 +0200
-+++ rpm-5.4.9/rpmio/rpmhkp.c   2012-05-15 03:51:08.805023846 +0200
-@@ -901,6 +901,14 @@ char * t, * te;
- te = t = tbuf;
- *te = '\0';
-+    /*Reset all the temporary variables*/
-+    hkp->pubx = -1;
-+    hkp->uidx = -1;
-+    hkp->subx = -1;
-+    hkp->sigx = -1;
-+    hkp->tvalid = 0;
-+    hkp->uvalidx = -1;
-+
- HKPDEBUG((stderr, "--> %s(%p,%s)\n", __FUNCTION__, hkp, keyname));
-     /* Do a lazy lookup before validating. */
-@@ -1065,7 +1073,7 @@ SPEW((stderr, "\t%s\n", pgpHexStr(hkp->p
-     }
- exit:
--    if ((hkp->uidx >= 0 && hkp->uidx < hkp->npkts) && hkp->tvalid > 0) {
-+    if ((hkp->uvalidx >= 0 && hkp->uvalidx < hkp->npkts) && hkp->tvalid > 0) {
-       char user[256+1];
-       size_t nuser;
-       pgpPktUid * u;
diff --git a/rpm-5.4.9-font-provides.patch b/rpm-5.4.9-font-provides.patch
deleted file mode 100644 (file)
index d0b894a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
---- rpm-5.4.9/macros/macros.rpmbuild.in.font~  2012-05-15 02:55:46.222011889 +0200
-+++ rpm-5.4.9/macros/macros.rpmbuild.in        2012-05-15 02:55:46.347012566 +0200
-@@ -682,5 +682,8 @@ done \
- %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")
-+%__font_provides        %{_rpmhome}/fontconfig.prov
-+#%__font_requires        %{_rpmhome}/fontconfig.req
-+
- # \endverbatim
- #*/
---- rpm-5.4.9/scripts/fontconfig.prov.font~    2012-05-15 02:55:46.347012566 +0200
-+++ rpm-5.4.9/scripts/fontconfig.prov  2012-05-15 02:55:46.347012566 +0200
-@@ -0,0 +1,24 @@
-+#!/bin/bash
-+#
-+# Script to install in:
-+# /usr/lib/rpm/redhat/find-provides.d
-+#
-+# Transform font files into RPM provides
-+# Requires fontconfig >= 2.6.90
-+#
-+# Author: Behdad Esfahbod <behdad@redhat.com>
-+# Based on other provides scripts from RPM
-+#
-+
-+fcquery=/usr/bin/fc-query
-+
-+if [ ! -x $fcquery ]; then
-+    cat > /dev/null
-+    exit 0
-+fi
-+
-+# filter out anything outside main fontconfig path
-+grep /usr/share/fonts/ |
-+while read fn; do
-+    $fcquery --format '%{=pkgkit}' "${fn}" 2> /dev/null
-+done
---- rpm-5.4.9/scripts/Makefile.am.font~        2012-05-15 02:55:46.304012334 +0200
-+++ rpm-5.4.9/scripts/Makefile.am      2012-05-15 02:55:46.347012566 +0200
-@@ -19,7 +19,7 @@ EXTRA_DIST = api-sanity-autotest.pl api-
-       cpanflute cpanflute2 Specfile.pm \
-       find-provides.perl find-requires.perl \
-       find-provides.php find-requires.php \
--      freshen.sh gendiff getpo.sh http.req \
-+      freshen.sh fontconfig.prov gendiff getpo.sh http.req \
-       check-java-closure.sh java.prov.sh java.req.sh \
-       gstreamer.sh javadeps.sh libtooldeps.sh mgo \
-       mono-find-provides mono-find-requires \
-@@ -55,8 +55,8 @@ pkgdata_SCRIPTS = \
-       brp-strip-shared brp-strip-static-archive brp-sparc64-linux \
-       check-files cross-build dbconvert.sh executabledeps.sh \
-       find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
--      find-provides.perl \
--      find-requires.perl gem_helper.rb getpo.sh http.req \
-+      find-provides.perl find-requires.perl \
-+      fontconfig.prov gem_helper.rb getpo.sh http.req \
-       kmod-deps.sh gstreamer.sh javadeps.sh libtooldeps.sh \
-       mono-find-provides mono-find-requires \
-       check-multiarch-files mkmultiarch \
diff --git a/rpm-5.4.9-keep-loading-script-macros.patch b/rpm-5.4.9-keep-loading-script-macros.patch
deleted file mode 100644 (file)
index 8237f40..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
---- rpm-5.4.15/macros/macros.in~       2020-01-22 14:38:03.000000000 +0100
-+++ rpm-5.4.15/macros/macros.in        2020-01-22 14:39:17.309422644 +0100
-@@ -1024,64 +1024,11 @@
- # XXX if the file %{_usrlibrpm}/macros.d/cmake attempts another
- # XXX %{load:...}, then the statement will be IGNORED.
- #==============================================================================
--# ---- SELinux configuration macros.
--#%%{load:%{_usrlibrpm}/macros.d/selinux}
--
--#==============================================================================
- # ---- rpmbuild macros.
--#%%{load:%{_usrlibrpm}/macros.rpmbuild}
--
--#------------------------------------------------------------------------
--# cmake(...) configuration
--#%%{load:%{_usrlibrpm}/macros.d/cmake}
--
--#------------------------------------------------------------------------
--# gstreamer(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/gstreamer}
--
--#------------------------------------------------------------------------
--# haskell(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/haskell}
--
--#------------------------------------------------------------------------
--# perl(...) configuration
--#%%{load:%{_usrlibrpm}/macros.d/perl}
--
--#------------------------------------------------------------------------
--# python(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/python}
--
--#------------------------------------------------------------------------
--# php(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/php}
--
--#------------------------------------------------------------------------
--# java(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/java}
--
--#------------------------------------------------------------------------
--# libtool(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/libtool}
--
--#------------------------------------------------------------------------
--# pkgconfig(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/pkgconfig}
--
--#------------------------------------------------------------------------
--# mono(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/mono}
--
--#------------------------------------------------------------------------
--# ruby(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/ruby}
--
--#------------------------------------------------------------------------
--# tcl(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/tcl}
-+%{load:%{_usrlibrpm}/macros.rpmbuild}
- #------------------------------------------------------------------------
--# typelib(...) configuration.
--#%%{load:%{_usrlibrpm}/macros.d/typelib}
-+%{load:%{_usrlibrpm}/macros.d/macros.*}
- # \endverbatim
- #*/
diff --git a/rpm-5.4.9-mire-fix-strings-lacking-null-terminator.patch b/rpm-5.4.9-mire-fix-strings-lacking-null-terminator.patch
deleted file mode 100644 (file)
index b2d3f32..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---- rpm-5.4.9/rpmio/mire.c.str_nul~    2012-04-16 05:21:22.000000000 +0200
-+++ rpm-5.4.9/rpmio/mire.c     2012-05-15 03:20:14.361970779 +0200
-@@ -415,11 +415,10 @@ int mireRegexec(miRE mire, const char *
-           break;
-       /* XXX rpmgrep: ensure that the string is NUL terminated. */
-       if (vallen > 0) {
--          if (val[vallen] != '\0') {
--              char * t = strncpy((char *)alloca(vallen+1), val, vallen);
--              t[vallen] = '\0';
--              val = t;
--          }
-+          /* if (val[vallen] != '\0') might go outside of allocated memory */
-+          char * t = strncpy(alloca(vallen+1), val, vallen);
-+          t[vallen] = '\0';
-+          val = t;
-       } else
-       if (vallen == 0)
-           vallen = strlen(val);
-@@ -466,6 +465,13 @@ int mireRegexec(miRE mire, const char *
-     case RPMMIRE_GLOB:
-       if (mire->pattern == NULL)
-           break;
-+      /* XXX rpmgrep: ensure that the string is NUL terminated. */
-+      if (vallen > 0) {
-+          /* if (val[vallen] != '\0') might go outside of allocated memory */
-+          char * t = strncpy(alloca(vallen+1), val, vallen);
-+          t[vallen] = '\0';
-+          val = t;
-+      }
-       rc = fnmatch(mire->pattern, val, mire->fnflags);
-       switch (rc) {
-       case 0:                 rc = 0; /*@innerbreak@*/ break;
diff --git a/rpm-5.4.9-rpmfc-extract-dependencies-for-all-files.patch b/rpm-5.4.9-rpmfc-extract-dependencies-for-all-files.patch
deleted file mode 100644 (file)
index 2a72e5a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.9/lib/rpmfc.c.rpmfc_ruby~  2012-05-15 02:27:26.000000000 +0200
-+++ rpm-5.4.9/lib/rpmfc.c      2012-05-15 02:27:34.978029207 +0200
-@@ -1090,7 +1090,7 @@ typedef struct rpmfcApplyTbl_s {
- /*@unchecked@*/
- static struct rpmfcApplyTbl_s rpmfcApplyTable[] = {
-     { rpmfcELF,               RPMFC_ELF },
--    { rpmfcSCRIPT,    (RPMFC_SCRIPT|RPMFC_FONT|RPMFC_HASKELL|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP|RPMFC_MONO|RPMFC_TYPELIB|RPMFC_DESKTOP_FILE) },
-+    { rpmfcSCRIPT,    (RPMFC_SCRIPT|RPMFC_FONT|RPMFC_HASKELL|RPMFC_RUBY|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP|RPMFC_MONO|RPMFC_TYPELIB|RPMFC_DESKTOP_FILE) },
- #if defined(RPM_VENDOR_MANDRIVA)
-     { rpmfcSYMLINK,   RPMFC_SYMLINK },
- #endif
diff --git a/rpm-5.4.9-rpmpython-fix-input.patch b/rpm-5.4.9-rpmpython-fix-input.patch
deleted file mode 100644 (file)
index 0589a54..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.9/rpmio/rpmpython.c.py_input~      2012-05-15 03:40:55.316698083 +0200
-+++ rpm-5.4.9/rpmio/rpmpython.c        2012-05-15 03:40:59.799722384 +0200
-@@ -215,7 +215,7 @@ fprintf(stderr, "==> %s(%p,%s,%p)\n", __
-       PyCompilerFlags cf = { 0 };
-       PyObject * m = PyImport_AddModule("__main__");
-       PyObject * d = (m ? PyModule_GetDict(m) : NULL);
--      PyObject * v = (m ? PyRun_StringFlags(val, Py_file_input, d, d, &cf) : NULL);
-+      PyObject * v = (m ? PyRun_StringFlags(val, Py_single_input, d, d, &cf) : NULL);
-         if (v == NULL) {
-           PyErr_Print();
diff --git a/rpm-5.4.9-strip-buildroot-away-from-duplicate-files-list.patch b/rpm-5.4.9-strip-buildroot-away-from-duplicate-files-list.patch
deleted file mode 100644 (file)
index 8e48830..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
---- rpm-5.4.9/build/files.c.buildroot_dups~    2012-04-15 17:04:14.000000000 +0200
-+++ rpm-5.4.9/build/files.c    2012-05-15 02:11:03.734983519 +0200
-@@ -2917,7 +2917,7 @@ exit:
- /* auxiliary function for checkDuplicateFiles() */
- /* XXX need to pass Header because fi->h is NULL */
--static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2)
-+static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2, size_t buildrootL)
-       /*@globals internalState @*/
-       /*@modifies fi1, fi2, internalState @*/
- {
-@@ -2941,7 +2941,7 @@ static int fiIntersect(/*@null@*/ rpmfi
-           if (!dups)
-               dups = rpmiobNew(0);
-           dups = rpmiobAppend(dups, "\t", 0);
--          dups = rpmiobAppend(dups, fn1, 1);
-+          dups = rpmiobAppend(dups, fn1+buildrootL, 1);
-           n++;
-       }
-     }
-@@ -2972,7 +2972,7 @@ static int fiIntersect(/*@null@*/ rpmfi
-  * @param spec                spec file control structure
-  * @return            number of duplicate files
-  */
--static int checkDuplicateFiles(Spec spec)
-+static int checkDuplicateFiles(Spec spec, size_t buildrootL)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies *spec->packages,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -2997,7 +2997,7 @@ static int checkDuplicateFiles(Spec spec
- #endif
-           if (fi2 == NULL) continue;
-           (void) rpmfiSetHeader(fi2, pkg2->header);
--          n += fiIntersect(fi1, fi2);
-+          n += fiIntersect(fi1, fi2, buildrootL);
-           (void) rpmfiSetHeader(fi2, NULL);
-           fi2 = rpmfiFree(fi2);
-       }
-@@ -3023,7 +3023,7 @@ static inline int packagedDir(Package pk
-  *       /A/B/C/D
-  * Now directories "/A/B" and "/A/B/C" should also be packaged.
-  */
--static int pkgUnpackagedSubdirs(Package pkg)
-+static int pkgUnpackagedSubdirs(Package pkg, size_t buildrootL)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies pkg->header,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -3096,7 +3096,7 @@ static int pkgUnpackagedSubdirs(Package
-       for (i = 0; i < n; i++) {
-           list = rpmiobAppend(list, "\t", 0);
--          list = rpmiobAppend(list, unpackaged[i], 1);
-+          list = rpmiobAppend(list, unpackaged[i]+buildrootL, 1);
-           unpackaged[i] = _free(unpackaged[i]);
-       }
-       unpackaged = _free(unpackaged);
-@@ -3117,7 +3117,7 @@ static int pkgUnpackagedSubdirs(Package
-  * @param spec                spec file control structure
-  * @return            number of unpackaged subdirectories
-  */
--static int checkUnpackagedSubdirs(Spec spec)
-+static int checkUnpackagedSubdirs(Spec spec, size_t buildrootL)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies *spec->packages,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -3126,7 +3126,7 @@ static int checkUnpackagedSubdirs(Spec s
-     Package pkg;
-     for (pkg = spec->packages; pkg; pkg = pkg->next)
--      n += pkgUnpackagedSubdirs(pkg);
-+      n += pkgUnpackagedSubdirs(pkg, buildrootL);
-     return n;
- }
-@@ -3137,6 +3137,11 @@ rpmRC processBinaryFiles(Spec spec, int
-     Package pkg;
-     rpmRC res = RPMRC_OK;
-     
-+    char *buildroot = rpmExpand("%{?buildroot}", NULL);
-+    size_t buildrootL = strlen(buildroot);
-+
-+    buildroot = _free(buildroot);
-+
-     for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-       int rc;
-@@ -3178,8 +3183,8 @@ rpmRC processBinaryFiles(Spec spec, int
-     if (res == RPMRC_OK) {
-       if (checkUnpackagedFiles(spec) > 0)
-           res = RPMRC_FAIL;
--      (void) checkDuplicateFiles(spec);
--      (void) checkUnpackagedSubdirs(spec);
-+      (void) checkDuplicateFiles(spec, buildrootL);
-+      (void) checkUnpackagedSubdirs(spec, buildrootL);
-     }
-     
-     return res;
diff --git a/rpm-5.4.9-support-signatures-and-digest-disablers.patch b/rpm-5.4.9-support-signatures-and-digest-disablers.patch
deleted file mode 100644 (file)
index 4d7b1ab..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-From d8fcc3cbeec4defb5babde5bd09ea294dd3fd08b Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Sun, 3 Jul 2016 19:01:59 -0700
-Subject: [PATCH] system.h/query.c: support nosignature
-
-* Define SUPPORT_NOSIGNATURES to 1 in system.h
-* !QVA_ISSET(qva->qva_flags, SIGNATURE) -> QVA_ISSET(qva->qva_flags, SIGNATURE),
-  otherwise, when use --nosignature would read database and verify
-  signature, this is not expected.
-
-Upstream-Status: Submitting [Sent email to rpm-devel@rpm5.org]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- lib/query.c | 6 +++---
- system.h    | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/lib/query.c b/lib/query.c
-index 50a7453..b761d76 100644
---- a/lib/query.c
-+++ b/lib/query.c
-@@ -954,19 +954,19 @@ JBJDEBUG((stderr, "--> %s(%p,%p,%p)\n", __FUNCTION__, ts, qva, argv));
-     vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_query}");
-     vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */
- #if defined(SUPPORT_NOSIGNATURES)
--    if (!QVA_ISSET(qva->qva_flags, DIGEST)) {
-+    if (QVA_ISSET(qva->qva_flags, DIGEST)) {
-       VSF_SET(vsflags, NOSHA1HEADER);
-       VSF_SET(vsflags, NOMD5HEADER);
-       VSF_SET(vsflags, NOSHA1);
-       VSF_SET(vsflags, NOMD5);
-     }
--    if (!QVA_ISSET(qva->qva_flags, SIGNATURE)) {
-+    if (QVA_ISSET(qva->qva_flags, SIGNATURE)) {
-       VSF_SET(vsflags, NODSAHEADER);
-       VSF_SET(vsflags, NORSAHEADER);
-       VSF_SET(vsflags, NODSA);
-       VSF_SET(vsflags, NORSA);
-     }
--    if (!QVA_ISSET(qva->qva_flags, HDRCHK)) {
-+    if (QVA_ISSET(qva->qva_flags, HDRCHK)) {
-       VSF_SET(vsflags, NOHDRCHK);
-     }
-     VSF_CLR(vsflags, NEEDPAYLOAD);    /* XXX needed? */
-diff --git a/system.h b/system.h
-index 2ff8906..ad4619a 100644
---- a/system.h
-+++ b/system.h
-@@ -787,9 +787,9 @@ static inline const char *rcsid(const char *p) { \
- #define SUPPORT_I18NSTRING_TYPE       1
- /**
-- * Eliminate signature/digest disablers.
-+ * Signature/digest disablers.
-  */
--#undef        SUPPORT_NOSIGNATURES
-+#define SUPPORT_NOSIGNATURES 1
- /**
-  * Permit ar(1) payloads. Disabled while rpmio/iosm.c is under development.
--- 
-2.9.0
diff --git a/rpm-5.4.9-update-rpmfc-when-removing-dependencies-on-self.patch b/rpm-5.4.9-update-rpmfc-when-removing-dependencies-on-self.patch
deleted file mode 100644 (file)
index c3b9e35..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
---- rpm-5.4.9/lib/rpmfc.c.fc_deps~     2012-05-15 02:23:23.157740011 +0200
-+++ rpm-5.4.9/lib/rpmfc.c      2012-05-15 02:24:42.863147557 +0200
-@@ -1763,12 +1763,14 @@ static int rpmfcGenerateScriptletDeps(co
-     return rc;
- }
--static void removeSillyDeps(Header h) {
-+static unsigned removeSillyDeps(Header h, rpmfc fc) {
-     HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
--    int xx, i, rnum, removed = 0;
-+    int xx;
-+    unsigned i, rnum, removed = 0;
-     const char **deps = NULL;
-     const char **versions = NULL;
-     evrFlags *flags = NULL;
-+    int *newpos = NULL, *ddictxPos = NULL;
-     he->tag = RPMTAG_REQUIRENAME;
-     xx = headerGet(h, he, 0);
-@@ -1783,18 +1785,32 @@ static void removeSillyDeps(Header h) {
-     xx = headerGet(h, he, 0);
-     flags = (evrFlags*)he->p.ui32p;
-+    if (fc && fc->requires != NULL && fc->ddictx != NULL) {
-+      newpos = alloca(he->c*sizeof(newpos[0]));
-+      if (fc->ddictx)
-+          ddictxPos = alloca(fc->ddictx->nvals*sizeof(ddictxPos[0]));
-+    }
-     for (i = 0; i < rnum-removed; i++) {
-       if (removed) {
-           deps[i] = deps[i+removed];
-           versions[i] = versions[i+removed];
-           flags[i] = flags[i+removed];
-+          if (fc) {
-+              fc->requires->N[i] = fc->requires->N[i+removed];
-+              fc->requires->EVR[i] = fc->requires->EVR[i+removed];
-+              fc->requires->Flags[i] = fc->requires->Flags[i+removed];
-+          }
-       }
-+      if (fc && fc->requires != NULL && fc->ddictx != NULL)
-+          newpos[i+removed] = i;
-       rpmds req = rpmdsSingle(RPMTAG_REQUIRENAME, deps[i], versions[i], flags[i]);
-       rpmds prov = rpmdsNew(h, (*deps[i] == '/' && !*versions[i]) ? RPMTAG_BASENAMES : RPMTAG_PROVIDENAME, 0);
-       if (rpmdsMatch(req, prov)) {
-           if (flags[i] & RPMSENSE_SCRIPT_PRE)
-               rpmlog(RPMLOG_ERR, "Requires(pre): on dependency provided by self: %s\n", rpmdsDNEVR(req));
-           else {
-+              if (fc && fc->requires != NULL && fc->ddictx != NULL)
-+                  newpos[i+removed] = -1;
-               rpmlog(RPMLOG_NOTICE, "Removing dependency on self: %s\n", rpmdsDNEVR(req));
-               removed++;
-               i--;
-@@ -1803,6 +1819,52 @@ static void removeSillyDeps(Header h) {
-       req = rpmdsFree(req);
-       prov = rpmdsFree(prov);
-     }
-+    if (fc && fc->requires != NULL && fc->ddictx != NULL && removed) {
-+      fc->requires->Count -= removed;
-+      unsigned rx = 0;
-+      for (i = 0; i < fc->ddictx->nvals-rx; i++) {
-+          unsigned ix;
-+          unsigned char deptype;
-+
-+          ix = fc->ddictx->vals[i+rx];
-+          deptype = ((ix >> 24) & 0xff);
-+          ix &= 0x00ffffff;
-+
-+          if (deptype == 'P') {
-+              ddictxPos[i+rx] = i;
-+              fc->ddictx->vals[i] = fc->ddictx->vals[i+rx];
-+              continue;
-+          }
-+          if (newpos[ix] == -1) {
-+              ddictxPos[i+rx] = -1;
-+              i--, rx++;
-+          }
-+          else
-+          {
-+              ddictxPos[i+rx] = i;
-+              fc->ddictx->vals[i] = (deptype << 24) | (newpos[ix] & 0x00ffffff);
-+          }
-+      }
-+      fc->ddictx->nvals -= rx;
-+
-+      for (i = 0; i < fc->fddictn->nvals; i++) {
-+          rx = 0;
-+          if (fc->fddictn->vals[i]) {
-+              unsigned j, ix = fc->fddictx->vals[i];
-+              for (j = 0, rx = 0; j < fc->fddictn->vals[i]; j++, ix++) {
-+                  if (ddictxPos[ix] == -1)
-+                      rx++;
-+                  if (j == 0 || fc->fddictx->vals[i] == -1)
-+                      fc->fddictx->vals[i] = ddictxPos[ix];
-+              }
-+          }
-+          if (rx)
-+              fc->fddictn->vals[i] -= rx;
-+          if (fc->fddictn->vals[i] == 0)
-+              fc->fddictx->vals[i] = 0;
-+      }
-+    }
-+
-     if (removed) {
-       he->tag = RPMTAG_REQUIRENAME;
-       he->t = RPM_STRING_ARRAY_TYPE;
-@@ -1820,6 +1882,7 @@ static void removeSillyDeps(Header h) {
-       headerMod(h, he, 0);
-     }
-+    return removed;
- }
- rpmRC rpmfcGenerateDepends(void * _spec, void * _pkg)
-@@ -1855,7 +1918,7 @@ rpmRC rpmfcGenerateDepends(void * _spec,
-     if (internaldeps == 0) {
-       /* ... then generate dependencies using %{__find_requires} et al. */
-       rc = rpmfcGenerateDependsHelper(spec, pkg, fi);
--      removeSillyDeps(pkg->header);
-+      removeSillyDeps(pkg->header, NULL);
-       printDeps(pkg->header);
-       return rc;
-     }
-@@ -2045,6 +2108,8 @@ assert(he->p.ptr != NULL);
- /*@=nullpass@*/
-     }
-+    removeSillyDeps(pkg->header, fc);
-+
-     /* Add dependency dictionary(#dependencies) */
-     he->tag = RPMTAG_DEPENDSDICT;
-     he->t = RPM_UINT32_TYPE;
-@@ -2073,8 +2138,6 @@ assert(ac == (int)he->c);
-       xx = headerPut(pkg->header, he, 0);
-     }
--    removeSillyDeps(pkg->header);
--
-     printDeps(pkg->header);
- if (fc != NULL && _rpmfc_debug) {
diff --git a/rpm-CVE-2013-6435.patch b/rpm-CVE-2013-6435.patch
deleted file mode 100644 (file)
index d96fd44..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
---- rpm-5.4.15/rpmio/iosm.c~   2014-06-11 19:58:04.000000000 +0200
-+++ rpm-5.4.15/rpmio/iosm.c    2015-01-25 21:53:27.659197235 +0100
-@@ -2627,7 +2627,7 @@
-       iosm->rfd = NULL;
-       break;
-     case IOSM_WOPEN:
--      iosm->wfd = Fopen(iosm->path, "w.fdio");
-+      iosm->wfd = Fopen(iosm->path, "wU.fdio");
-       if (iosm->wfd == NULL || Ferror(iosm->wfd)) {
-           if (iosm->wfd != NULL)      (void) iosmNext(iosm, IOSM_WCLOSE);
-           iosm->wfd = NULL;
---- rpm-5.4.15/rpmio/rpmio.c~  2014-08-05 00:47:16.000000000 +0200
-+++ rpm-5.4.15/rpmio/rpmio.c   2015-01-25 21:50:59.409202466 +0100
-@@ -2638,16 +2638,20 @@
-  * - bzopen:  'q' sets verbosity to 0
-  * - bzopen:  'v' does verbosity++ (up to 4)
-  * - HACK:    '.' terminates, rest is type of I/O
-+ * -            'U' sets *mode to zero (no permissions) instead of 0666
-  */
- static inline void cvtfmode (const char *m,
-                               /*@out@*/ char *stdio, size_t nstdio,
-                               /*@out@*/ char *other, size_t nother,
--                              /*@out@*/ const char **end, /*@out@*/ int * f)
-+                              /*@out@*/ const char **end, /*@out@*/ int * f, mode_t *mode)
-       /*@modifies *stdio, *other, *end, *f @*/
- {
-     int flags = 0;
-     char c;
-+    if (mode)
-+      *mode = 0666;
-+
-     switch (*m) {
-     case 'a':
-       flags |= O_WRONLY | O_CREAT | O_APPEND;
-@@ -2661,6 +2665,9 @@
-       flags |= O_RDONLY;
-       if (--nstdio > 0) *stdio++ = *m;
-       break;
-+    case 'U':
-+      if (mode) *mode = 0;
-+      break;
-     default:
-       *stdio = '\0';
-       return;
-@@ -2729,7 +2736,7 @@
-     if (fmode == NULL)
-       return NULL;
--    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, NULL);
-+    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, NULL, NULL);
-     if (stdio[0] == '\0')
-       return NULL;
-     zstdio[0] = '\0';
-@@ -2835,7 +2842,7 @@
-     const char * fmode = NULL;
-     char stdio[20], other[20];
-     const char *end = NULL;
--    mode_t perms = 0666;
-+    mode_t perms;
-     int flags = 0;
-     FD_t fd = NULL;
-@@ -2849,7 +2856,7 @@
- fprintf(stderr, "==> Fopen(%s, %s)\n", path, fmode);
-     stdio[0] = '\0';
--    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, &flags);
-+    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, &flags, &perms);
-     if (stdio[0] == '\0')
-       goto exit;
diff --git a/rpm-CVE-2014-8118.patch b/rpm-CVE-2014-8118.patch
deleted file mode 100644 (file)
index dfd27f4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.15/rpmio/cpio.c.orig       2012-04-16 05:21:22.000000000 +0200
-+++ rpm-5.4.15/rpmio/cpio.c    2015-01-25 15:50:23.017311712 +0100
-@@ -136,7 +136,7 @@
-     /*@=shiftimplementation@*/
-     GET_NUM_FIELD(hdr->namesize, nb);
--    if (nb >= iosm->wrsize)
-+    if (nb <= 0 || nb >= iosm->wrsize)
-       return IOSMERR_BAD_HEADER;
-     /* Read file name. */
diff --git a/rpm-DB_CONFIG.patch b/rpm-DB_CONFIG.patch
deleted file mode 100644 (file)
index 238c385..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- rpm-5.4.10/rpmdb/DB_CONFIG.in~     2012-02-18 20:19:37.000000000 +0100
-+++ rpm-5.4.10/rpmdb/DB_CONFIG.in      2012-11-22 17:32:56.647805060 +0100
-@@ -5,6 +5,10 @@
- set_lg_dir ./log
- set_tmp_dir ./tmp
-+# prevent recovery logs (log/log.*) from growing forever and keep only active log by default
-+# this makes BDB "catastrophic" (re-creation of db from logs) recovery impossible
-+log_set_config DB_LOG_AUTO_REMOVE
-+
- # -- thread_count must be >= 8
- set_thread_count 64
diff --git a/rpm-URPM-build-fix.patch b/rpm-URPM-build-fix.patch
deleted file mode 100644 (file)
index b0e029d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- rpm-5.4.8/configure.ac.urpm~       2012-04-25 19:27:07.929167065 +0200
-+++ rpm-5.4.8/configure.ac     2012-04-25 19:29:04.996867674 +0200
-@@ -1198,8 +1198,8 @@ AC_ARG_WITH(perl-urpm, AS_HELP_STRING([-
-           AC_SUBST(PERL_URPM_INSTALLDIRS)
-         WITH_PERL_URPM_SUBDIR=perl-URPM
-         WITH_PERL_URPM_SUBPACKAGE=1
--        AC_CONFIG_FILES([perl-URPM/Makefile.PL])
--        AC_CONFIG_FILES([perl-URPM/Makefile])
-+        AC_CONFIG_FILES([scripts/URPM-Makefile.PL])
-+        AC_CONFIG_FILES([scripts/URPM-Makefile])
-     fi
- ])
- AC_SUBST(WITH_PERL_URPM_SUBDIR)
diff --git a/rpm-branch.patch b/rpm-branch.patch
deleted file mode 100644 (file)
index 18fc953..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-Index: rpm/configure.ac
-diff -u -u -r2.305 -r2.306
---- rpm/configure.ac   28 Jul 2008 14:35:25 -0000      2.305
-+++ rpm/configure.ac   29 Jul 2008 16:00:15 -0000      2.306
-@@ -107,6 +107,7 @@
- AC_PROG_CC
- AC_PROG_CPP
-+AC_PROG_CXX
- AC_USE_SYSTEM_EXTENSIONS
-Index: rpm/macros.in
-diff -u -u -r1.250 -r1.251
---- rpm/macros.in      20 Jul 2008 00:04:51 -0000      1.250
-+++ rpm/macros.in      29 Jul 2008 15:42:49 -0000      1.251
-@@ -1115,9 +1115,14 @@
-   %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
-   export CLASSPATH}\
-   unset PERL_MM_OPT || :\
-+  LC_ALL=C\
-+  export LC_ALL\
-   LANG=C\
-   export LANG\
-   unset DISPLAY || :\
-+  unset LINGUAS || :\
-+  unset LANGUAGE || :\
-+  unset LC_MESSAGES || :\
-   \
-   %{verbose:set -x}%{!verbose:exec > /dev/null}\
-   umask 022\
-Index: rpm/lib/rpmlib.h
-diff -u -u -r2.462 -r2.463
---- rpm/lib/rpmlib.h   26 Mar 2008 20:59:14 -0000      2.462
-+++ rpm/lib/rpmlib.h   29 Jul 2008 14:51:36 -0000      2.463
-@@ -10,6 +10,7 @@
- #include <rpmtag.h>
- #include <rpmversion.h>
-+#include <rpmio.h>
- #define RPM_FORMAT_VERSION 5
- #define RPM_MAJOR_VERSION 0
-Index: rpm/rpmio/argv.h
-diff -u -u -r1.9 -r1.10
---- rpm/rpmio/argv.h   22 May 2008 14:44:09 -0000      1.9
-+++ rpm/rpmio/argv.h   29 Jul 2008 15:00:20 -0000      1.10
-@@ -5,6 +5,8 @@
-  * \file rpmio/argv.h
-  */
-+#include <stdint.h>
-+
- typedef       const char * ARGstr_t;
- typedef ARGstr_t * ARGV_t;
-Index: rpm/rpmio/rpmurl.h
-diff -u -u -r1.32 -r1.33
---- rpm/rpmio/rpmurl.h~        2008-07-29 18:13:16.865049453 +0200
-+++ rpm/rpmio/rpmurl.h 2008-07-29 18:14:51.751915001 +0200
-@@ -6,6 +6,7 @@
-  */
- #include <assert.h>
-+#include <rpmio.h>
- /**
-  * Supported URL types.
-
-Index: rpm/rpmdb/rpmdb.h
-diff -u -u -r1.75 -r1.73.2.2
---- rpm/rpmdb/rpmdb.h  29 Jul 2008 14:54:30 -0000      1.75
-+++ rpm/rpmdb/rpmdb.h  29 Jul 2008 16:08:18 -0000      1.73.2.2
-@@ -10,11 +10,13 @@
- #include <assert.h>
- #include <rpmlib.h>
- #include <mire.h>
-+#if defined(_RPMDB_INTERNAL)
- #if defined(WITH_DB)
- #include "db.h"
- #else
- #include "db_emu.h"
- #endif
-+#endif
- /*@-exportlocal@*/
- /*@unchecked@*/
-diff -urN rpm-5.1.4/lib/rpmfc.c rpm-5.1.4.new/lib/rpmfc.c
---- rpm-5.1.4/lib/rpmfc.c      2008-04-06 10:48:08.000000000 +0200
-+++ rpm-5.1.4.new/lib/rpmfc.c  2008-07-29 21:02:21.000000000 +0200
-@@ -472,7 +472,7 @@
-   { "Java ",                  RPMFC_JAVA|RPMFC_INCLUDE },
--  { "PE executable",            RPMFC_MONO|RPMFC_INCLUDE },
-+  { "Mono/.Net assembly",            RPMFC_MONO|RPMFC_INCLUDE },
-   { "current ar archive",     RPMFC_STATIC|RPMFC_LIBRARY|RPMFC_ARCHIVE|RPMFC_INCLUDE },
---- rpm/lib/depends.c~ 2008-06-15 10:57:22.000000000 +0200
-+++ rpm/lib/depends.c  2008-07-29 22:03:37.336792223 +0200
-@@ -15,9 +15,7 @@
- /* XXX CACHE_DEPENDENCY_RESULT deprecated, functionality being reimplemented */
- #undef        CACHE_DEPENDENCY_RESULT
--#if defined(CACHE_DEPNDENCY_RESULT)
--#define       _RPMDB_INTERNAL         /* XXX response cache needs dbiOpen et al. */
--#endif
-+#define       _RPMDB_INTERNAL         /* XXX response cache needs dbiOpen et al. DBT used below */
- #include "rpmdb.h"
- #define       _RPMEVR_INTERNAL
diff --git a/rpm-bug-420.patch b/rpm-bug-420.patch
deleted file mode 100644 (file)
index 9581736..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- rpm-5.4.15/rpmdb/legacy.c~ 2019-03-09 00:37:45.000000000 +0100
-+++ rpm-5.4.15/rpmdb/legacy.c  2019-03-09 00:38:28.799270580 +0100
-@@ -113,7 +113,7 @@ ANNOTATE_IGNORE_READS_AND_WRITES_END();
-     bingo = 0;
-     while (!bingo && (scn = elf_nextscn(elf, scn)) != NULL) {
-       (void) gelf_getshdr(scn, &shdr);
--      if (shdr.sh_type != SHT_DYNAMIC)
-+      if (shdr.sh_type != SHT_DYNAMIC || shdr.sh_entsize == 0)
-           continue;
-       while (!bingo && (data = elf_getdata (scn, data)) != NULL) {
-           unsigned maxndx = (unsigned) (data->d_size / shdr.sh_entsize);
---- rpm-5.4.15/lib/rpmds.c~    2019-03-09 01:04:27.000000000 +0100
-+++ rpm-5.4.15/lib/rpmds.c     2019-03-09 01:11:06.792636867 +0100
-@@ -3187,7 +3187,7 @@ fprintf(stderr, "*** rpmdsELF(%s, %d, %p
-       case SHT_DYNAMIC:
-           data = NULL;
-           while ((data = elf_getdata (scn, data)) != NULL) {
--              for (cnt = 0; cnt < (int)(shdr->sh_size / shdr->sh_entsize); ++cnt) {
-+              for (cnt = 0; shdr->sh_entsize && cnt < (int)(shdr->sh_size / shdr->sh_entsize); ++cnt) {
-                   dyn = gelf_getdyn (data, cnt, &dyn_mem);
-                   if (dyn == NULL)
-                       /*@innerbreak@*/ break;
index 0453045fc8eb04eebabb1ad5d77fa64b4670bfb3..069650f306415ea686caa29243b921aea5d37b13 100644 (file)
@@ -1,18 +1,16 @@
 --- rpm-4.5/scripts/find-debuginfo.sh~ 2010-01-27 19:25:48.000000000 +0200
 +++ rpm-4.5/scripts/find-debuginfo.sh  2010-01-27 20:23:37.279516094 +0200
-@@ -24,6 +24,11 @@
- strict=false
- RPM_BUILD_DIR="`pwd`"
-+# canon RPM_BUILD_DIR, the DW_AT_comp_dir in ELF objects is real a real path
+@@ -385,6 +385,9 @@
+     debug_base_name="$BUILDDIR"
+     debug_dest_name="/usr/src/debug/${unique_debug_src_base}"
+   fi
++# canon debug_base_name, the DW_AT_comp_dir in ELF objects is real a real path
 +# and debugedit will ignore them as they are out of build dir.
-+RPM_BUILD_DIR=$(readlink -f "$RPM_BUILD_DIR")
-+echo "RPM_BUILD_DIR=$RPM_BUILD_DIR"
-+
- BUILDDIR=.
- out=debugfiles.list
- nout=0
-@@ -201,6 +203,11 @@
++  debug_base_name=$(readlink -f "$debug_base_name")
+   no_recompute=
+   if [ "$no_recompute_build_id" = "true" ]; then
+     no_recompute="-n"
+@@ -398,6 +400,11 @@
      $strict && exit 2
    fi
  
@@ -21,6 +19,6 @@
 +    $strict && exit 2
 +  fi
 +
-   [ -x /usr/bin/gdb-add-index ] && /usr/bin/gdb-add-index "$f" > /dev/null 2>&1
-   # A binary already copied into /usr/lib/debug doesn't get stripped,
+   # Add .gdb_index if requested.
+   if $include_gdb_index; then
+     if type gdb-add-index >/dev/null 2>&1; then
diff --git a/rpm-changelog-encoding.patch b/rpm-changelog-encoding.patch
deleted file mode 100644 (file)
index d48b50f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 1f9882b38b046c7752ec3e1200b17b7edfc995cd
-Author: Kacper Kornet <draenog@pld-linux.org>
-Date:   Sat May 4 20:27:19 2013 +0100
-
-    Don't use tagFunction during copying headers
-    
-    It fixes error when the changelog in subpackage was converted
-    to encoding determined by environment.
-
-diff --git a/rpmdb/header.c b/rpmdb/header.c
-index 01056c3..1cec5cc 100644
---- a/rpmdb/header.c
-+++ b/rpmdb/header.c
-@@ -2213,7 +2213,7 @@ void headerCopyTags(Header headerFrom, Header headerTo, rpmTag * tagstocopy)
-       if (headerIsEntry(headerTo, *tagno))
-           continue;
-       he->tag = *tagno;
--      if (!headerGet(headerFrom, he, 0))
-+      if (!headerGet(headerFrom, he, HEADERGET_NOEXTENSION))
-           continue;
-       xx = headerPut(headerTo, he, 0);
-       he->p.ptr = _free(he->p.ptr);
index 9211b91d76473838c0fa4633bd18179aab4e05a5..ae75fa4e712177f0aa8da433156f14dbefcf666e 100644 (file)
@@ -1,13 +1,13 @@
 --- rpm-4.5/build/parseChangelog.c.orig        2012-07-24 14:46:12.856158625 +0200
 +++ rpm-4.5/build/parseChangelog.c     2012-07-24 14:47:55.293158624 +0200
 @@ -181,9 +181,8 @@
-           return RPMRC_FAIL;
+               trimtime = firstTime - trimage;
        }
        if (lastTime && lastTime < time) {
 -          rpmlog(RPMLOG_ERR,
 +          rpmlog(RPMLOG_WARNING,
                     _("%%changelog not in descending chronological order\n"));
--          return RPMRC_FAIL;
+-          goto exit;
        }
-       lastTime = time;
+       for (i = 0; i < date_words; i++) {
+           SKIPSPACE(s);
index 5b8c8584d34932305ff0c74297f5421940c4112e..800e2c01f9958d9a812ec7c960f8dfce7972a625 100644 (file)
@@ -1,10 +1,14 @@
 --- rpm-5.4.10/build/files.c~  2013-01-24 14:24:39.161982722 +0100
 +++ rpm-5.4.10/build/files.c   2013-01-24 14:27:50.620325354 +0100
-@@ -1045,6 +1045,7 @@
-               pkg->specialDoc = rpmiobAppend(pkg->specialDoc, "DOCDIR=\"$RPM_BUILD_ROOT\"", 0);
-               pkg->specialDoc = rpmiobAppend(pkg->specialDoc, buf, 1);
-               pkg->specialDoc = rpmiobAppend(pkg->specialDoc, "export DOCDIR", 1);
-+              pkg->specialDoc = rpmiobAppend(pkg->specialDoc, "if test -d \"$DOCDIR\" ; then rmdir \"$DOCDIR\" ; fi", 1);
-               mkdir_p = rpmExpand("%{?__mkdir_p}%{!?__mkdir_p:mkdir -p}", NULL);
-               if (!mkdir_p)
-                   mkdir_p = xstrdup("mkdir -p");
+@@ -2363,6 +2363,11 @@
+     appendLineStringBuf(docScript, "export LC_ALL=C");
+     appendStringBuf(docScript, "export ");
+     appendLineStringBuf(docScript, sdenv);
++    appendStringBuf(docScript, "if test -d \"$");
++    appendStringBuf(docScript, sdenv);
++    appendStringBuf(docScript, "\" ; then rmdir \"$");
++    appendStringBuf(docScript, sdenv);
++    appendLineStringBuf(docScript, "\" ; fi");
+     appendLineStringBuf(docScript, mkdocdir);
+     for (ARGV_const_t fn = sd->files; fn && *fn; fn++) {
diff --git a/rpm-cleanbody.patch b/rpm-cleanbody.patch
deleted file mode 100644 (file)
index 4c25d33..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-4.4.9/build/parseBuildInstallClean.c   2008-01-30 23:16:55.347346942 +0200
-+++ rpm-4.4.9/build/parseBuildInstallClean.c   2008-01-30 23:22:24.241459876 +0200
-@@ -51,7 +51,7 @@
-       if (s && *s)
-           *iobp = rpmiobAppend(*iobp, s, 0);
-       s = _free(s);
--#if !defined(RPM_VENDOR_OPENPKG) /* still-support-section-clean */
-+#if !defined(RPM_VENDOR_OPENPKG) && !defined(RPM_VENDOR_PLD) /* still-support-section-clean */
-       /* OpenPKG still wishes to use "%clean" script/section */
-       iobp = NULL;    /* XXX skip %clean from spec file. */
- #endif
diff --git a/rpm-cppcompat.patch b/rpm-cppcompat.patch
deleted file mode 100644 (file)
index 2943b79..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
---- rpm-5.4.15/rpmdb/rpmdb.h.orig      2015-01-27 21:01:38.147301133 +0100
-+++ rpm-5.4.15/rpmdb/rpmdb.h   2015-02-16 20:01:30.571602097 +0100
-@@ -939,7 +939,7 @@
- /*@unused@*/ static inline
- int rpmlgcGet(rpmdb rpmdb, DB_LSN * _lsn, DBT * data, uint32_t flags)
- {
--    DB_LOGC * _logc = rpmdb->db_logc;
-+    DB_LOGC * _logc = (DB_LOGC*)rpmdb->db_logc;
-     int rc = (_logc ? _logc->get(_logc, _lsn, data, flags) : ENOTSUP);
- if (_rpmdb_debug)
- fprintf(stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", "logc->get", _logc, _lsn, data, flags, rc);
-@@ -949,7 +949,7 @@
- /*@unused@*/ static inline
- int rpmlgcClose(rpmdb rpmdb)
- {
--    DB_LOGC * _logc = rpmdb->db_logc;
-+    DB_LOGC * _logc = (DB_LOGC*)rpmdb->db_logc;
-     uint32_t _flags = 0;
-     int rc = (_logc ? _logc->close(_logc, _flags) : ENOTSUP);
-     rpmdb->db_logc = NULL;
-@@ -1027,7 +1027,7 @@
- /*@unused@*/ static inline
- int rpmmpfClose(rpmdb rpmdb)
- {
--    DB_MPOOLFILE * mpf = rpmdb->db_mpf;
-+    DB_MPOOLFILE * mpf = (DB_MPOOLFILE*)rpmdb->db_mpf;
-     uint32_t _flags = 0;
-     int rc = (mpf ? mpf->close(mpf, _flags) : ENOTSUP);
-     rpmdb->db_mpf = NULL;
-@@ -1039,7 +1039,7 @@
- /*@unused@*/ static inline
- int rpmmpfGet(rpmdb rpmdb, uint32_t * _pgnop, uint32_t _flags, void ** _pagep)
- {
--    DB_MPOOLFILE * mpf = rpmdb->db_mpf;
-+    DB_MPOOLFILE * mpf = (DB_MPOOLFILE*)rpmdb->db_mpf;
-     DB_TXN * _txnid = (DB_TXN*)rpmdb->db_txn;
-     int rc = mpf->get(mpf, _pgnop, _txnid, _flags, _pagep);
- if (_rpmdb_debug)
-@@ -1073,7 +1073,7 @@
- /*@unused@*/ static inline
- int rpmmpfPut(rpmdb rpmdb, void * _page, uint32_t flags)
- {
--    DB_MPOOLFILE * mpf = rpmdb->db_mpf;
-+    DB_MPOOLFILE * mpf = (DB_MPOOLFILE*)rpmdb->db_mpf;
-     uint32_t _priority = DB_PRIORITY_DEFAULT;
-     int rc = mpf->put(mpf, _page, (DB_CACHE_PRIORITY)_priority, flags);
- if (_rpmdb_debug)
-@@ -1084,7 +1084,7 @@
- /*@unused@*/ static inline
- int rpmmpfSync(rpmdb rpmdb)
- {
--    DB_MPOOLFILE * mpf = rpmdb->db_mpf;
-+    DB_MPOOLFILE * mpf = (DB_MPOOLFILE*)rpmdb->db_mpf;
-     int rc = (mpf ? mpf->sync(mpf) : ENOTSUP);
- if (_rpmdb_debug)
- fprintf(stderr, "<-- %s(%p) rc %d\n", "mpf->close", mpf, rc);
diff --git a/rpm-db5.2.patch b/rpm-db5.2.patch
deleted file mode 100644 (file)
index 08e5602..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
---- rpm-5.4.10/configure.ac~   2012-07-18 21:42:22.133130256 +0200
-+++ rpm-5.4.10/configure.ac    2012-07-18 21:45:04.726457854 +0200
-@@ -543,7 +543,7 @@
-     MYPATH=$PATH
- fi
--DBXY=db61
-+DBXY=db5.2
- AC_PATH_PROG(__BASH, bash, %{_bindir}/bash, $MYPATH)
- AC_PATH_PROG(__BZIP2, bzip2, %{_bindir}/bzip2, $MYPATH)
-@@ -1582,7 +1582,7 @@
- CPPFLAGS="${CPPFLAGS} -I${prefix}/include/${DBXY}"
- RPM_CHECK_LIB(
-     [Berkeley-DB], [db],
--    [db-6.1], [db_create], [db.h],
-+    [db-5.2], [db_create], [db.h],
-     [yes,external], [db3],
-     [ DBLIBSRCS="$DBLIBSRCS db3.c"
-       AM_CONDITIONAL(WITH_DB, [ true ])
-@@ -1609,7 +1609,7 @@
- dnl XXX error: `db3' is already registered with AC_CONFIG_SUBDIRS.
- RPM_CHECK_LIB(
-     [Berkeley-DB (+SQLite3)], [dbsql],
--    [db_sql-6.1], [sqlite3_open], [dbsql.h],
-+    [db_sql-5.2], [sqlite3_open], [dbsql.h],
-     [yes,external], [db3/sql],
-     [
-       AM_CONDITIONAL(WITH_DBSQL, [ true ])
diff --git a/rpm-db_buffer_small.patch b/rpm-db_buffer_small.patch
deleted file mode 100644 (file)
index 1c45d3a..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-In certain cases with BerkleyDB 5.3.x we are getting the error:
-
-db3.c:1443: dbcursor->pget(-30999): BDB0063 DB_BUFFER_SMALL: User memory too small for return value
-
-See https://bugs.launchpad.net/rpm/+bug/934420 for more information.
-
-It appears to be some type of a bug in the BerkleyDB 5.3.x.  In an attempt
-to workaround the problem, when we encounter this situation we attempt
-to adjust the size of the mmap buffer until the call works, or we
-end up trying 25 times.  The new size is either the updated vp->size
-from the failed pget call, or the previous size + 4096.
-
-If DBI debugging is enabled, additional diagnostics are printed, otherwise
-a basic retry and success message is added to show that the failure was
-resolved.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-Index: rpm-5.4.9/rpmdb/rpmdb.c
-===================================================================
---- rpm-5.4.9.orig/rpmdb/rpmdb.c
-+++ rpm-5.4.9/rpmdb/rpmdb.c
-@@ -2212,8 +2212,12 @@ static int rpmmiGet(dbiIndex dbi, DBC * 
-       vp->flags |= DB_DBT_USERMEM;
-       rc = dbiGet(dbi, dbcursor, kp, vp, flags);
-       if (rc == DB_BUFFER_SMALL) {
-+          int retry = 0;
-+          size_t origlen = vp->size;
-           size_t uhlen = vp->size;
--          void * uh = mmap(NULL, uhlen, _prot, _flags, _fdno, _off);
-+          void * uh;
-+retry_get:
-+          uh = mmap(NULL, uhlen, _prot, _flags, _fdno, _off);
-           if (uh == NULL || uh == (void *)-1)
-               fprintf(stderr,
-                   "==> mmap(%p[%u], 0x%x, 0x%x, %d, 0x%x) error(%d): %s\n",
-@@ -2235,6 +2239,25 @@ static int rpmmiGet(dbiIndex dbi, DBC * 
-               if (munmap(uh, uhlen) != 0)
-                   fprintf(stderr, "==> munmap(%p[%u]) error(%d): %s\n",
-                       uh, (unsigned)uhlen, errno, strerror(errno));
-+              /* We want to be sure to limit the number of retry attempts to avoid a loop! */
-+              if (rc == DB_BUFFER_SMALL && retry < 25) {
-+                 /* If we got a largr vp-size back, use that, otherwise increment the size by 1k */
-+                 uhlen = vp->size > uhlen ? vp->size : uhlen + 4096;
-+                 retry++;
-+                 if (_rpmmi_debug || (dbi)->dbi_debug)
-+                     fprintf(stderr, "==> DB_BUFFER_SMALL orig requested (%d), configured (%d), forcing larger buffer (%d), new size (%d)\n",
-+                          origlen, vp->ulen, uhlen, vp->size);
-+                 else
-+                     fprintf(stderr, "==> retry (%d) db3cpget (%d)\n", retry, uhlen);
-+                 goto retry_get;
-+              }
-+          }
-+          if (retry) {
-+              if (_rpmmi_debug || (dbi)->dbi_debug)
-+                 fprintf(stderr, "==> success orig requested (%d), configured buffer (%d), buffer (%d), size after dbiGet (%d)\n",
-+                      origlen, vp->ulen, uhlen, vp->size);
-+              else
-+                 fprintf(stderr, "==> success\n");
-           }
-       }
-     } else
-Index: rpm-5.4.9/rpmdb/db3.c
-===================================================================
---- rpm-5.4.9.orig/rpmdb/db3.c
-+++ rpm-5.4.9/rpmdb/db3.c
-@@ -1442,6 +1442,8 @@
-       rc = dbcursor->pget(dbcursor, key, pkey, data, flags);
-       /* XXX DB_NOTFOUND can be returned */
-       _printit = (rc == DB_NOTFOUND ? 0 : _debug);
-+//    /* XXX Permit DB_BUFFER_SMALL to be returned (more restrictive?) */
-+//    _printit = (rc == DB_BUFFER_SMALL ? 0 : _printit);
-       rc = cvtdberr(dbi, "dbcursor->pget", rc, _printit);
- #else
-       /* XXX db3 does DB_FIRST on uninitialized cursor */
-@@ -1452,7 +1452,7 @@ assert(db != NULL);
- #endif
-     }
--DBIDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,%p,%p,0x%x) rc %d %s%s\n", __FUNCTION__, dbi, dbcursor, key, pkey, data, flags, rc, _DBCFLAGS(flags), _KEYDATA(key, pkey, data, NULL)));
-+DBIDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,%p,%p,0x%x) rc %d %s%s\n", __FUNCTION__, dbi, dbcursor, key, pkey, data, flags, rc, _DBCFLAGS(flags), _KEYDATA(key, pkey, rc == DB_BUFFER_SMALL ? NULL : data, NULL)));
-     return rc;
- }
- /*@=mustmod@*/
index f1b160d6f0b454913056d6b9b78a78522fe27f3a..5ac5738162751da10e061428a30c1b405a0e229d 100644 (file)
@@ -1,17 +1,32 @@
---- rpm-5.3.1/scripts/find-debuginfo.sh.wiget  2009-09-10 03:52:13.000000000 +0200
-+++ rpm-5.3.1/scripts/find-debuginfo.sh        2010-05-30 16:53:33.275994510 +0200
-@@ -92,8 +92,12 @@ strip_to_debug()
-   esac
-   [ -n "$EXCLUDE_FULL_REGEXP" ] && grep -E -q "$EXCLUDE_FULL_REGEXP" <<< "$2" && g=-g
+--- rpm-4.16.1.3/macros.in.orig        2021-03-24 09:50:21.000000000 +0100
++++ rpm-4.16.1.3/macros.in     2021-03-24 10:05:10.129698408 +0100
+@@ -194,6 +194,7 @@
+ Group: Development/Debug\
+ AutoReq: 0\
+ AutoProv: 1\
++Requires: FHS-debug\
+ %description debuginfo\
+ This package provides debug information for package %{name}.\
+ Debug information is useful when developing applications that use this\
+@@ -534,7 +534,7 @@
+ #   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
+-%_build_id_links compat
++%_build_id_links alldebug
  
--  eu-strip --remove-comment $g $([ -n "$DISABLE_DEBUG" ] || echo -f "$1") "$2" || exit  
--  [ -n "$DISABLE_DEBUG" ] || chmod 444 "$1" || exit
-+  [ -n "$DISABLE_DEBUG" ] && return
-+  local t=$(mktemp "/tmp/rpm.stripped.XXXXXX")
-+  objcopy --compress-debug-sections "$2" || exit
-+  eu-strip --remove-comment -f "$1" "$2" -o "$t" || exit
-+  rm -f "$t"
-+  chmod 444 "$1" || exit
- }
+ # Whether build-ids should be made unique between package version/releases
+ # when generating debuginfo packages. If set to 1 this will pass
+@@ -563,10 +563,10 @@
+ %_unique_debug_srcs   1
  
- # Make a relative symlink to $1 called $3$2
+ # Whether rpm should put debug source files into its own subpackage
+-#%_debugsource_packages       1
++%_debugsource_packages        1
+ # Whether rpm should create extra debuginfo packages for each subpackage
+-#%_debuginfo_subpackages 1
++%_debuginfo_subpackages 1
+ #
+ # Use internal dependency generator rather than external helpers?
diff --git a/rpm-dir-macros-relative.patch b/rpm-dir-macros-relative.patch
new file mode 100644 (file)
index 0000000..7478bb2
--- /dev/null
@@ -0,0 +1,45 @@
+Force base dir macros to arbitrary values, derived as relative to base ones.
+Now redefining _prefix affects _{bin,sbin,lib,libexec,include,data,dataroot,info,man,doc}dir values.
+
+--- rpm-4.16.1.3/platform.in.orig      2021-03-28 18:12:24.786830780 +0200
++++ rpm-4.16.1.3/platform.in   2021-03-28 18:23:20.670665669 +0200
+@@ -25,23 +25,23 @@
+ #==============================================================================
+ # ---- configure macros.
+ #
+-%_prefix              @prefix@
+-%_exec_prefix         @exec_prefix@
+-%_bindir              @bindir@
+-%_sbindir             @sbindir@
+-%_libexecdir          @libexecdir@
+-%_datarootdir         @datarootdir@
+-%_datadir             @datadir@
+-%_sysconfdir          @sysconfdir@
+-%_sharedstatedir      @sharedstatedir@
+-%_localstatedir               @localstatedir@
++%_prefix              /usr
++%_exec_prefix         %{_prefix}
++%_bindir              %{_prefix}/bin
++%_sbindir             %{_prefix}/sbin
++%_libexecdir          %{_prefix}/libexec
++%_datarootdir         %{_prefix}/share
++%_datadir             %{_datarootdir}
++%_sysconfdir          /etc
++%_sharedstatedir      /var/lib
++%_localstatedir               /var
+ %_lib                 @LIB@
+-%_libdir              @exec_prefix@/@LIB@
+-%_includedir          @includedir@
+-%_oldincludedir               @oldincludedir@
+-%_infodir             @infodir@
+-%_mandir              @mandir@
+-%_initddir            %{_sysconfdir}/rc.d/init.d
++%_libdir              %{_exec_prefix}/@LIB@
++%_includedir          %{_prefix}/include
++%_oldincludedir               %{_prefix}/include
++%_infodir             %{_datarootdir}/info
++%_mandir              %{_datarootdir}/man
++%_initddir            /etc/rc.d/init.d
+ # Deprecated misspelling, present for backwards compatibility.
+ %_initrddir           %{_initddir}
+ %_rundir              @RUNDIR@
diff --git a/rpm-dirdeps-macro.patch b/rpm-dirdeps-macro.patch
deleted file mode 100644 (file)
index 8c8c882..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
---- rpm-5.4.10/lib/depends.c~  2012-04-15 23:20:56.000000000 +0200
-+++ rpm-5.4.10/lib/depends.c   2012-09-03 23:00:59.363079731 +0200
-@@ -1569,7 +1569,7 @@
-     int terminate = 2;                /* XXX terminate if rc >= terminate */
-     int rc;
-     int ourrc = 0;
--#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_VENDOR_PLD) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-     int dirname_deps;
-     int symlink_deps;
- #endif
-@@ -1648,7 +1648,7 @@
-       }
-     }
--#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_VENDOR_PLD) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-     dirname_deps = rpmExpandNumeric("%{?_check_dirname_deps}%{?!_check_dirname_deps:1}");
-     if (dirname_deps) {
- #endif
-@@ -1692,7 +1692,7 @@
-           /*@switchbreak@*/ break;
-       }
-     }
--#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_VENDOR_PLD) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-     }
-     symlink_deps = rpmExpandNumeric("%{?_check_symlink_deps}%{?!_check_symlink_deps:1}");
-@@ -1740,7 +1740,7 @@
-           /*@switchbreak@*/ break;
-       }
-     }
--#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_ARK) || defined(RPM_VENDOR_PLD) || defined(RPM_OPTIONAL_DIRNAME_AND_SYMLINK_DEPS) /* optional-dirname-and-symlink-deps */
-     }
- #endif    
diff --git a/rpm-disable-hmac-verify.patch b/rpm-disable-hmac-verify.patch
deleted file mode 100644 (file)
index fb46df7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- rpm-5.4.10.orig/lib/verify.c       2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.10/lib/verify.c    2012-10-21 19:35:08.610708732 +0200
-@@ -261,11 +261,20 @@
-           unsigned char * fdigest = (unsigned char *)
-                       memset(alloca(vf->dlen), 0, vf->dlen);
-           size_t fsize = 0;
-+#if defined(RPM_VENDOR_PLD)
-+/*
-+ * Disable hmac during digest calculation, since rpm package files contain plain md5sums,
-+ * hmac support is useless, see:
-+ * http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2012-October/023193.html
-+ */
-+          int rc = dodigest(vf->dalgo, vf->fn, fdigest, 0, &fsize);
-+#else
- #define       _mask   (RPMVERIFY_FDIGEST|RPMVERIFY_HMAC)
-           unsigned dflags = (vf->vflags & _mask) == RPMVERIFY_HMAC
-               ? 0x2 : 0x0;
- #undef        _mask
-           int rc = dodigest(vf->dalgo, vf->fn, fdigest, dflags, &fsize);
-+#endif
-           sb.st_size = fsize;
-           if (rc) {
-               VF_SET(res, READFAIL);
diff --git a/rpm-dont-copy-descriptive-tags.patch b/rpm-dont-copy-descriptive-tags.patch
deleted file mode 100644 (file)
index da59246..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---- rpm-5.4.9/build/parseDescription.c.mdvbz62979~     2012-05-03 20:39:51.000000000 +0200
-+++ rpm-5.4.9/build/parseDescription.c 2012-05-15 01:55:31.332318888 +0200
-@@ -92,6 +92,7 @@ int parseDescription(Spec spec)
-     }
-     /* Lose the inheirited %description (if present). */
-+#if !defined(RPM_VENDOR_MANDRIVA) && !defined(RPM_VENDOR_PLD) /* mdvbz#62979 */
-     if (spec->packages->header != pkg->header) {
-       he->tag = RPMTAG_DESCRIPTION;
-       xx = headerGet(pkg->header, he, 0);
-@@ -99,6 +100,7 @@ int parseDescription(Spec spec)
-       if (xx && he->t == RPM_STRING_TYPE)
-           xx = headerDel(pkg->header, he, 0);
-     }
-+#endif
-     
-     t = stashSt(spec, pkg->header, RPMTAG_DESCRIPTION, lang);
-     
---- rpm-5.4.10/build/parsePreamble.c.orig      2012-05-03 20:39:51.000000000 +0200
-+++ rpm-5.4.10/build/parsePreamble.c   2012-10-26 00:41:10.281500646 +0200
-@@ -30,8 +30,10 @@
-     RPMTAG_DISTEPOCH,
-     RPMTAG_LICENSE,
-     RPMTAG_GROUP,             /* XXX permissive. */
-+#if !defined(RPM_VENDOR_PLD)
-     RPMTAG_SUMMARY,           /* XXX permissive. */
-     RPMTAG_DESCRIPTION,               /* XXX permissive. */
-+#endif
-     RPMTAG_PACKAGER,
-     RPMTAG_DISTRIBUTION,
-     RPMTAG_DISTURL,
diff --git a/rpm-dont-treat-gstreamer-modules-as-font.patch b/rpm-dont-treat-gstreamer-modules-as-font.patch
deleted file mode 100644 (file)
index 36c7617..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/lib/rpmfc.c.old 2012-09-25 22:34:46.184039778 +0200
-+++ rpm-5.4.10/lib/rpmfc.c     2012-09-25 22:35:21.947179368 +0200
-@@ -921,7 +921,7 @@ static int rpmfcSCRIPT(rpmfc fc)
- #endif
-           xx = rpmfcHelper(fc, 'R', "ruby");
-     } else
--    if (fc->fcolor->vals[fc->ix] & RPMFC_FONT) {
-+    if ((fc->fcolor->vals[fc->ix] & RPMFC_FONT) == RPMFC_FONT) {
-        xx = rpmfcHelper(fc, 'P', "font");
-        /* XXX: currently of no use, but for the sake of consistency... */
-        xx = rpmfcHelper(fc, 'R', "font");
diff --git a/rpm-double_check_file_deps.patch b/rpm-double_check_file_deps.patch
deleted file mode 100644 (file)
index 58000a5..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-diff -dur rpm-5.4.12.orig/lib/rpmal.c rpm-5.4.12/lib/rpmal.c
---- rpm-5.4.12.orig/lib/rpmal.c        2012-04-15 23:20:57.000000000 +0200
-+++ rpm-5.4.12/lib/rpmal.c     2013-08-13 13:46:28.000000000 +0200
-@@ -7,6 +7,10 @@
- #include <rpmio.h>
- #include <rpmiotypes.h>               /* XXX fnpyKey */
- #include <rpmbf.h>
-+#include <rpmlog.h>
-+
-+#define _RPMFI_INTERNAL
-+#include <rpmfi.h>
- #include <rpmtag.h>
- #include <rpmtypes.h>
-@@ -38,6 +42,7 @@
-     rpmds provides;           /*!< Provides: dependencies. */
- /*@refcounted@*/ /*@null@*/
-     rpmbf bf;                 /*!< File name Bloom filter. */
-+    rpmfi fi;                 /*!< File name Bloom filter. */
-     rpmuint32_t tscolor;      /*!< Transaction color bits. */
-@@ -149,6 +154,8 @@
-       alp->provides = NULL;
-       (void)rpmbfFree(alp->bf);
-       alp->bf = NULL;
-+      (void)rpmfiFree(alp->fi);
-+      alp->fi = NULL;
-     }
-     al->list = _free(al->list);
-@@ -205,6 +212,8 @@
-     alp->provides = NULL;
-     (void)rpmbfFree(alp->bf);
-     alp->bf = NULL;
-+    (void)rpmfiFree(alp->fi);
-+    alp->fi = NULL;
-     memset(alp, 0, sizeof(*alp));     /* XXX trash and burn */
-     return;
-@@ -244,6 +253,7 @@
- /*@-assignexpose -castexpose @*/
-     alp->provides = rpmdsLink(provides, "Provides (rpmalAdd)");
-     alp->bf = rpmbfLink(rpmfiFNBF(fi));
-+    alp->fi = rpmfiLink(fi, "file list (rpmalAdd)");
- /*@=assignexpose =castexpose @*/
-     rpmalFreeIndex(al);
-@@ -350,17 +360,17 @@
- rpmalAllFileSatisfiesDepend(const rpmal al, const rpmds ds, alKey * keyp)
- {
-     fnpyKey * ret = NULL;
--    int found = 0;
-+    int found = 0, verified = 0;
-     const char * fn;
-     size_t nfn;
--    int i;
-+    int i, j;
-     if (keyp) *keyp = RPMAL_NOMATCH;
-     if (al == NULL || (fn = rpmdsN(ds)) == NULL || *fn != '/')
-       goto exit;
-     nfn = strlen(fn);
--
-+    
-     if (al->list != NULL)     /* XXX always true */
-     for (i = 0; i < al->size; i++) {
-       availablePackage alp = al->list + i;
-@@ -368,6 +378,24 @@
-       if (!rpmbfChk(alp->bf, fn, nfn))
-           continue;
-+      verified = 0;
-+      char * fifn = (char *) malloc(alp->fi->fnlen + 1);
-+      for(j=0; j<(int)alp->fi->fc; j++) {
-+              const char * dn = NULL;
-+              (void) urlPath(alp->fi->dnl[alp->fi->dil[j]], &dn);
-+              strcpy(stpcpy(fifn, dn), alp->fi->bnl[j]);
-+              if (!strcmp(fn, fifn)) {
-+                      verified = 1;
-+                      break;
-+              }
-+      }
-+      free(fifn);
-+      
-+      if (!verified) {
-+              rpmlog(RPMLOG_DEBUG, "   False positive: '%s'\n", fn);
-+              continue;
-+      }
-+        
-       rpmdsNotify(ds, _("(added files)"), 0);
-       ret = (fnpyKey *) xrealloc(ret, (found + 2) * sizeof(*ret));
diff --git a/rpm-double_check_unpackaged_subdirs.patch b/rpm-double_check_unpackaged_subdirs.patch
deleted file mode 100644 (file)
index b83f7de..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Let packagedDir do a strict check when Bloom filter returns true.
-Also, don't try to check dirs over buildroot to avoid wasting time
-for useless checks (note that before packagedDir() could succeed on
-some dir over buildroot, leading to log some junk, after the end of
-string shorter than buildrootL).
-
---- rpm-5.4.13/build/files.c.orig      2013-10-04 21:31:18.840898688 +0200
-+++ rpm-5.4.13/build/files.c   2013-10-13 09:09:23.406411763 +0200
-@@ -3032,12 +3032,26 @@
- }
- /* auxiliary function: check if directory d is packaged */
--static inline int packagedDir(Package pkg, const char *d)
-+static int packagedDir(Package pkg, const char *d)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies pkg->header,
-               rpmGlobalMacroContext, fileSystem, internalState @*/
- {
--    return rpmbfChk(rpmfiFNBF(pkg->fi), d, strlen(d));
-+    if(!rpmbfChk(rpmfiFNBF(pkg->fi), d, strlen(d)))
-+      return 0;
-+    char * fifn = (char *) xmalloc(pkg->fi->fnlen + 1);
-+    rpmuint32_t j;
-+    for(j = 0; j < pkg->fi->fc; j++) {
-+      const char * dn = NULL;
-+      (void) urlPath(pkg->fi->dnl[pkg->fi->dil[j]], &dn);
-+      strcpy(stpcpy(fifn, dn), pkg->fi->bnl[j]);
-+      if (!strcmp(d, fifn)) {
-+          free(fifn);
-+          return 1;
-+      }
-+    }
-+    free(fifn);
-+    return 0;
- }
- /* auxiliary function: find unpackaged subdirectories
-@@ -3076,6 +3090,8 @@
-       strcpy(fn, rpmfiFN(fi));
-       /* find the first path component that is packaged */
-       while ((p = strchr(p + 1, '/'))) {
-+          if (p - fn < buildrootL)
-+              continue; /* don't try to check components over buildroot */
-           *p = '\0';
-           found = packagedDir(pkg, fn);
-           *p = '/';
diff --git a/rpm-file-output-for-ELF.patch b/rpm-file-output-for-ELF.patch
deleted file mode 100644 (file)
index ea01b4a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -dur -x '*~' rpm-5.4.15.orig/scripts/brp-strip rpm-5.4.15/scripts/brp-strip
---- rpm-5.4.15.orig/scripts/brp-strip  2011-09-06 14:53:10.000000000 +0200
-+++ rpm-5.4.15/scripts/brp-strip       2015-01-27 11:09:22.000000000 +0100
-@@ -16,6 +16,6 @@
- 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,' | \
--      sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped/\1/p'`; do
-+      sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped.*/\1/p'`; do
-       $STRIP -g "$f" || :
- done
-diff -dur -x '*~' rpm-5.4.15.orig/scripts/brp-strip-shared rpm-5.4.15/scripts/brp-strip-shared
---- rpm-5.4.15.orig/scripts/brp-strip-shared   2012-05-08 05:00:44.000000000 +0200
-+++ rpm-5.4.15/scripts/brp-strip-shared        2015-01-27 11:09:41.000000000 +0100
-@@ -21,6 +21,6 @@
- for f in `find "$RPM_BUILD_ROOT" -type f -a -exec file {} \; | \
-         grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug"  | \
-       grep ' shared object,' | \
--      sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped/\1/p'`; do
-+      sed -n -e 's/^\(.*\):[  ]*ELF.*, not stripped.*/\1/p'`; do
-       $STRIP --strip-unneeded "$f"
- done
-diff -dur -x '*~' rpm-5.4.15.orig/scripts/find-debuginfo.sh rpm-5.4.15/scripts/find-debuginfo.sh
---- rpm-5.4.15.orig/scripts/find-debuginfo.sh  2015-01-27 11:10:52.000000000 +0100
-+++ rpm-5.4.15/scripts/find-debuginfo.sh       2015-01-27 11:09:54.000000000 +0100
-@@ -194,7 +194,7 @@
- find "$RPM_BUILD_ROOT" ! -path "${debugdir}/*.debug" -type f \
-                    \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \
-                    -print | LANG=C sort |
--file -N -f - | sed -n -e 's/^\(.*\):[         ]*.*ELF.*, not stripped/\1/p' |
-+file -N -f - | sed -n -e 's/^\(.*\):[         ]*.*ELF.*, not stripped.*/\1/p' |
- xargs --no-run-if-empty stat -c '%h %D_%i %n' |
- while read nlinks inum f; do
-   [ -n "$EXCLUDE_REGEXP" ] && grep -E -q "$EXCLUDE_REGEXP" <<< "$f" && \
diff --git a/rpm-fix--p-interpreter-and-empty-script.patch b/rpm-fix--p-interpreter-and-empty-script.patch
deleted file mode 100644 (file)
index 709b464..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-5.4.10/lib/psm.c~      2012-09-10 07:58:10.220193941 +0200
-+++ rpm-5.4.10/lib/psm.c       2012-09-10 08:00:38.723522037 +0200
-@@ -1172,8 +1172,7 @@
- assert(fi->h != NULL);
-     She->tag = psm->scriptTag;
--    if (!headerGet(fi->h, She, 0))
--      goto exit;
-+    headerGet(fi->h, She, 0);
-     Phe->tag = psm->progTag;
-     if (!headerGet(fi->h, Phe, 0))
diff --git a/rpm-fix-___build_pre-macro.patch b/rpm-fix-___build_pre-macro.patch
deleted file mode 100644 (file)
index 4dc7336..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- rpm-5.4.10/macros/macros.rpmbuild.in.old   2012-09-15 19:31:55.178325519 +0200
-+++ rpm-5.4.10/macros/macros.rpmbuild.in       2012-09-15 19:32:37.158324039 +0200
-@@ -324,8 +324,18 @@
- %___build_args                -e
- %___build_cmd         %{?_sudo:%{_sudo} }%{?_remsh:%{_remsh} %{_remhost} }%{?_remsudo:%{_remsudo} }%{?_remchroot:%{_remchroot} %{_remroot} }%{___build_shell} %{___build_args}
- %___build_pre \
-+  RPM_SOURCE_DIR=\"%{u2p:%{_sourcedir}}\"\
-+  RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\
-   RPM_OPT_FLAGS=\"%{optflags}\"\
--  export RPM_OPT_FLAGS\
-+  RPM_ARCH=\"%{_arch}\"\
-+  RPM_OS=\"%{_os}\"\
-+  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\
-+  RPM_DOC_DIR=\"%{_docdir}\"\
-+  export RPM_DOC_DIR\
-+  RPM_PACKAGE_NAME=\"%{name}\"\
-+  RPM_PACKAGE_VERSION=\"%{version}\"\
-+  RPM_PACKAGE_RELEASE=\"%{release}\"\
-+  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\
-   %{?buildroot:RPM_BUILD_ROOT=\"%{u2p:%{buildroot}}\"\
-   export RPM_BUILD_ROOT}\
-   %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
diff --git a/rpm-fix-compress-doc.patch b/rpm-fix-compress-doc.patch
deleted file mode 100644 (file)
index a9256d3..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
---- rpm-5.4.10/build/files.c~  2013-01-25 13:14:36.692060288 +0100
-+++ rpm-5.4.10/build/files.c   2013-02-25 12:03:26.110910465 +0100
-@@ -1041,7 +1041,6 @@
-       /* XXX FIXME: this is easy to do as macro expansion */
-           if (! fl->passedSpecialDoc) {
--              char *compress_doc;
-               char *mkdir_p;
-               pkg->specialDoc = rpmiobNew(0);
-@@ -1056,11 +1055,6 @@
-               mkdir_p = _free(mkdir_p);
-               pkg->specialDoc = rpmiobAppend(pkg->specialDoc, " \"$DOCDIR\"", 1);
--              compress_doc = rpmExpand("%{__compress_doc}", NULL);
--              if (compress_doc && *compress_doc != '%')
--                  pkg->specialDoc = rpmiobAppend(pkg->specialDoc, compress_doc, 1);
--              compress_doc = _free(compress_doc);
--
-               /*@-temptrans@*/
-               *fileName = buf;
-               /*@=temptrans@*/
-@@ -1071,6 +1065,15 @@
-           pkg->specialDoc = rpmiobAppend(pkg->specialDoc, "cp -pr ", 0);
-           pkg->specialDoc = rpmiobAppend(pkg->specialDoc, specialDocBuf, 0);
-           pkg->specialDoc = rpmiobAppend(pkg->specialDoc, " \"$DOCDIR\"", 1);
-+
-+          {
-+              char *compress_doc;
-+
-+              compress_doc = rpmExpand("%{__compress_doc}", NULL);
-+              if (compress_doc && *compress_doc != '%')
-+                  pkg->specialDoc = rpmiobAppend(pkg->specialDoc, compress_doc, 1);
-+              compress_doc = _free(compress_doc);
-+          }
-       }
-     }
diff --git a/rpm-fix-filedigests-verify.patch b/rpm-fix-filedigests-verify.patch
deleted file mode 100644 (file)
index 755848f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.10.orig/build/files.c      2012-10-15 23:29:13.601832730 +0200
-+++ rpm-5.4.10/build/files.c   2012-10-15 23:29:50.264308164 +0200
-@@ -393,7 +393,6 @@
-               if (strcmp(p, vfa->attribute))
-                   /*@innercontinue@*/ continue;
-               verifyFlags |= vfa->flag;
--                  verifyFlags &= ~RPMVERIFY_FDIGEST;
-               /*@innerbreak@*/ break;
-           }
-           if (vfa->attribute)
diff --git a/rpm-fix-internal-lua-build.patch b/rpm-fix-internal-lua-build.patch
deleted file mode 100644 (file)
index 64e30f3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -ur rpm-5.4.12/lua/linit.c rpm-5.4.12.lua/lua/linit.c
---- rpm-5.4.12/lua/linit.c     2013-07-29 12:55:10.414926615 +0200
-+++ rpm-5.4.12.lua/lua/linit.c 2013-07-29 12:52:16.932990663 +0200
-@@ -41,7 +41,7 @@
-   {LUA_DBLIBNAME, luaopen_debug},
-   {"rex_posix", luaopen_rex_posix},
-   {"rex_pcre", luaopen_rex_pcre},
--  {"posix", luaopen_posix},
-+  {"posix", luaopen_posix_c},
-   {NULL, NULL}
- };
-diff -ur rpm-5.4.12/lua/local/lposix.c rpm-5.4.12.lua/lua/local/lposix.c
---- rpm-5.4.12/lua/local/lposix.c      2013-06-29 23:58:11.000000000 +0200
-+++ rpm-5.4.12.lua/lua/local/lposix.c  2013-07-29 12:49:02.437509943 +0200
-@@ -3934,6 +3934,10 @@
-       MENTRY( NFILE           );
-       MENTRY( NOBUFS          );
- #if !defined(__APPLE__)
-+// sys/param.h defines NODEV as ((dev_t) -1) which confuses MENTRY macro
-+#ifdef NODEV
-+#undef NODEV
-+#endif
-       MENTRY( NODEV           );
- #endif
-       MENTRY( NOENT           );
-diff -ur rpm-5.4.12/lua/local/lposix.h rpm-5.4.12.lua/lua/local/lposix.h
---- rpm-5.4.12/lua/local/lposix.h      2004-03-23 06:09:14.000000000 +0100
-+++ rpm-5.4.12.lua/lua/local/lposix.h  2013-07-29 12:52:09.029570083 +0200
-@@ -1,7 +1,9 @@
- #ifndef LPOSIX_H
- #define LPOSIX_H
--int luaopen_posix (lua_State *L)
-+#include <lua.h>
-+
-+int luaopen_posix_c (lua_State *L)
-       /*@modifies L @*/;
- #endif
diff --git a/rpm-fix-missing-types-in-headers.patch b/rpm-fix-missing-types-in-headers.patch
deleted file mode 100644 (file)
index 3c9b399..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-diff -ur rpm-5.4.10.orig/rpmio/argv.h rpm-5.4.10/rpmio/argv.h
---- rpm-5.4.10.orig/rpmio/argv.h       2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/argv.h    2012-09-09 14:43:55.765933246 +0200
-@@ -1,6 +1,8 @@
- #ifndef _H_ARGV_
- #define       _H_ARGV_
-+#include <stdio.h>    /* XXX FILE * typedef */
-+
- /** \ingroup rpmio
-  * \file rpmio/argv.h
-  */
-diff -ur rpm-5.4.10.orig/rpmdb/pkgio.h rpm-5.4.10/rpmdb/pkgio.h
---- rpm-5.4.10.orig/rpmdb/pkgio.h      2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmdb/pkgio.h   2012-09-09 14:49:38.112587836 +0200
-@@ -6,6 +6,8 @@
-  * Methods to handle package elements.
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+#include <rpmtypes.h>
- #include <rpmio.h>    /* XXX FD_t typedef */
- #include <rpmpgp.h>   /* XXX pgpDig typedef */
- #include <rpmtag.h>   /* XXX Header typedef */
-diff -ur rpm-5.4.10.orig/lib/rpm46compat.h rpm-5.4.10/lib/rpm46compat.h
---- rpm-5.4.10.orig/lib/rpm46compat.h  2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpm46compat.h       2012-09-09 14:25:02.645973220 +0200
-@@ -7,6 +7,7 @@
- #ifndef       H_RPM46COMPAT
- #define       H_RPM46COMPAT           1
-+#include <stdint.h>   /* XXX unint32_t typedef */
- #include <rpm/rpm4compat.h>
- #include <rpmbuild.h>
-diff -ur rpm-5.4.10.orig/lib/rpm4compat.h rpm-5.4.10/lib/rpm4compat.h
---- rpm-5.4.10.orig/lib/rpm4compat.h   2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpm4compat.h        2012-09-09 14:25:12.069306220 +0200
-@@ -42,6 +42,7 @@
- #include <unistd.h>
- #include <stdio.h>
- #include <errno.h>
-+#include <stdint.h>   /* XXX unint32_t typedef */
- #define WITH_DB
- #define       _RPMDB_INTERNAL
-diff -ur rpm-5.4.10.orig/rpmio/rpmbf.h rpm-5.4.10/rpmio/rpmbf.h
---- rpm-5.4.10.orig/rpmio/rpmbf.h      2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/rpmbf.h   2012-09-09 14:27:36.982634442 +0200
-@@ -1,6 +1,8 @@
- #ifndef       H_RPMBF
- #define       H_RPMBF
-+#include <sys/types.h>        /* XXX size_t typedef */
-+
- /** \ingroup rpmio
-  * \file rpmio/rpmbf.h
-  */
-diff -ur rpm-5.4.10.orig/build/rpmbuild.h rpm-5.4.10/build/rpmbuild.h
---- rpm-5.4.10.orig/build/rpmbuild.h   2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/build/rpmbuild.h        2012-09-09 14:38:45.262610867 +0200
-@@ -7,6 +7,7 @@
-  */
- #include <rpmiotypes.h>
-+#include <rpmio.h>    /* XXX FD_t typedef */
- #include <rpmmacro.h>
- #include <rpmtypes.h>
- #include <rpmtag.h>
-diff -ur rpm-5.4.10.orig/lib/rpmcli.h rpm-5.4.10/lib/rpmcli.h
---- rpm-5.4.10.orig/lib/rpmcli.h       2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmcli.h    2012-09-09 14:25:48.149304946 +0200
-@@ -5,6 +5,7 @@
-  * \file lib/rpmcli.h
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
- #include <popt.h>
- #include <rpmmacro.h>
- #include <rpmtypes.h>
-diff -ur rpm-5.4.10.orig/rpmconstant/rpmconstant.h rpm-5.4.10/rpmconstant/rpmconstant.h
---- rpm-5.4.10.orig/rpmconstant/rpmconstant.h  2012-09-09 13:54:24.000000000 +0200
-+++ rpm-5.4.10/rpmconstant/rpmconstant.h       2012-09-09 14:25:56.589304650 +0200
-@@ -18,6 +18,8 @@
-  *
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+
- #include <rpmio.h>
- #include <rpmiotypes.h>               /* XXX fnpyKey */
- #include <rpmpgp.h>
-diff -ur rpm-5.4.10.orig/rpmdb/rpmdb.h rpm-5.4.10/rpmdb/rpmdb.h
---- rpm-5.4.10.orig/rpmdb/rpmdb.h      2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmdb/rpmdb.h   2012-09-09 14:26:05.802637657 +0200
-@@ -7,6 +7,7 @@
-  * Access RPM indices using Berkeley DB interface(s).
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
- #include <assert.h>
- #include <mire.h>
-diff -ur rpm-5.4.10.orig/lib/rpmds.h rpm-5.4.10/lib/rpmds.h
---- rpm-5.4.10.orig/lib/rpmds.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmds.h     2012-09-09 15:30:02.718364975 +0200
-@@ -6,7 +6,12 @@
-  * Structure(s) used for dependency tag sets.
-  */
-+#include <stdio.h>    /* XXX FILE * typedef */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
- #include <rpmevr.h>
-+#include <rpmtag.h>
- #define       _RPMNS_INTERNAL
- #include <rpmns.h>
- #include <rpmps.h>
-diff -ur rpm-5.4.10.orig/rpmdb/rpmevr.h rpm-5.4.10/rpmdb/rpmevr.h
---- rpm-5.4.10.orig/rpmdb/rpmevr.h     2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmdb/rpmevr.h  2012-09-09 14:39:25.295942787 +0200
-@@ -1,6 +1,8 @@
- #ifndef H_RPMEVR
- #define H_RPMEVR
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+
- /** \ingroup rpmds
-  * \file lib/rpmevr.h
-  * Structure(s) and routine(s) used for EVR parsing and comparison.
-diff -ur rpm-5.4.10.orig/lib/rpmfi.h rpm-5.4.10/lib/rpmfi.h
---- rpm-5.4.10.orig/lib/rpmfi.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmfi.h     2012-09-09 15:32:47.761692486 +0200
-@@ -1,6 +1,11 @@
- #ifndef H_RPMFI
- #define H_RPMFI
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
-+#include <rpmtag.h>
-+
- /** \ingroup rpmfi
-  * \file lib/rpmfi.h
-  * Structure(s) used for file info tag sets.
-diff -ur rpm-5.4.10.orig/lib/rpmgi.h rpm-5.4.10/lib/rpmgi.h
---- rpm-5.4.10.orig/lib/rpmgi.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmgi.h     2012-09-09 15:31:45.738361341 +0200
-@@ -8,9 +8,12 @@
- #include <fts.h>
- #include <argv.h>
- #include <rpmtypes.h>
-+#include <rpmiotypes.h>
- #include <rpmds.h>
- #include <rpmte.h>
- #include <rpmts.h>
-+#include <rpmtag.h>
-+#include <rpmio.h>    /* XXX FD_t typedef */
- /**
-  */
-diff -ur rpm-5.4.10.orig/rpmio/rpmiotypes.h rpm-5.4.10/rpmio/rpmiotypes.h
---- rpm-5.4.10.orig/rpmio/rpmiotypes.h 2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/rpmiotypes.h      2012-09-09 14:27:26.585968142 +0200
-@@ -1,6 +1,9 @@
- #ifndef _H_RPMIOTYPES_
- #define       _H_RPMIOTYPES_
-+#include <stdlib.h>   /* XXX NULL typedef */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+
- /** \ingroup rpmio
-  * \file rpmio/rpmiotypes.h
-  */
-diff -ur rpm-5.4.10.orig/rpmio/rpmmacro.h rpm-5.4.10/rpmio/rpmmacro.h
---- rpm-5.4.10.orig/rpmio/rpmmacro.h   2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/rpmmacro.h        2012-09-09 14:29:08.622631207 +0200
-@@ -1,6 +1,9 @@
- #ifndef _H_MACRO_
- #define       _H_MACRO_
-+#include <stdio.h>    /* XXX FILE * typedef */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+
- /** \ingroup rpmio
-  * \file rpmio/rpmmacro.h
-  */
-diff -ur rpm-5.4.10.orig/rpmdb/rpmns.h rpm-5.4.10/rpmdb/rpmns.h
---- rpm-5.4.10.orig/rpmdb/rpmns.h      2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmdb/rpmns.h   2012-09-09 15:33:08.021691772 +0200
-@@ -1,6 +1,9 @@
- #ifndef H_RPMNS
- #define H_RPMNS
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmiotypes.h>
-+
- /** \ingroup rpmds
-  * \file lib/rpmns.h
-  * Structure(s) and routine(s) used for classifying and parsing names.
-diff -ur rpm-5.4.10.orig/lib/rpmps.h rpm-5.4.10/lib/rpmps.h
---- rpm-5.4.10.orig/lib/rpmps.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmps.h     2012-09-09 14:47:02.782593316 +0200
-@@ -1,6 +1,9 @@
- #ifndef H_RPMPS
- #define H_RPMPS
-+#include <stdio.h>    /* XXX FILE * typedef */
-+#include <rpmiotypes.h>
-+
- /** \ingroup rpmps
-  * \file lib/rpmps.h
-  * Structures and prototypes used for an "rpmps" problem set.
-diff -ur rpm-5.4.10.orig/lib/rpmrc.h rpm-5.4.10/lib/rpmrc.h
---- rpm-5.4.10.orig/lib/rpmrc.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmrc.h     2012-09-09 14:28:54.559298370 +0200
-@@ -1,6 +1,8 @@
- #ifndef H_RPMRC
- #define       H_RPMRC
-+#include <stdio.h>    /* XXX FILE * typedef */
-+
- /**
-  * \file lib/rpmrc.h
-  */
-diff -ur rpm-5.4.10.orig/build/rpmspec.h rpm-5.4.10/build/rpmspec.h
---- rpm-5.4.10.orig/build/rpmspec.h    2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/build/rpmspec.h 2012-09-09 15:33:14.861691530 +0200
-@@ -6,9 +6,14 @@
-  *  The Spec and Package data structures used during build.
-  */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
- #include <rpmevr.h>
- #include <rpmfi.h>    /* XXX rpmfi typedef */
- #include <rpmcli.h>   /* XXX QVA_t typedef */
-+#include <rpmtag.h>
-+#include <rpmio.h>    /* XXX FD_t typedef */
- /** \ingroup rpmbuild
-  */
-diff -ur rpm-5.4.10.orig/rpmio/rpmsw.h rpm-5.4.10/rpmio/rpmsw.h
---- rpm-5.4.10.orig/rpmio/rpmsw.h      2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/rpmsw.h   2012-09-09 15:35:35.208353246 +0200
-@@ -1,6 +1,9 @@
- #ifndef       H_RPMSW
- #define       H_RPMSW
-+#include <stdio.h>    /* XXX FILE * typedef */
-+#include <sys/time.h> /* XXX struct timeval typedef */
-+
- /** \ingroup rpmio
-  * \file rpmio/rpmsw.h
-  */
-diff -ur rpm-5.4.10.orig/rpmdb/rpmtag.h rpm-5.4.10/rpmdb/rpmtag.h
---- rpm-5.4.10.orig/rpmdb/rpmtag.h     2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmdb/rpmtag.h  2012-09-09 14:26:15.429303984 +0200
-@@ -5,6 +5,7 @@
-  * \file rpmdb/rpmtag.h
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
- #include <rpmiotypes.h>
- #include <rpmsw.h>
-diff -ur rpm-5.4.10.orig/lib/rpmte.h rpm-5.4.10/lib/rpmte.h
---- rpm-5.4.10.orig/lib/rpmte.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmte.h     2012-09-09 15:32:00.408360824 +0200
-@@ -5,7 +5,13 @@
-  * \file lib/rpmte.h
-  * Structures used for an "rpmte" transaction element.
-  */
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
- #include <rpmfi.h>
-+#include <rpmtag.h>
-+#include <rpmio.h>    /* XXX FD_t typedef */
- /**
-  */
-diff -ur rpm-5.4.10.orig/lib/rpmts.h rpm-5.4.10/lib/rpmts.h
---- rpm-5.4.10.orig/lib/rpmts.h        2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmts.h     2012-09-09 15:30:53.381696521 +0200
-@@ -6,9 +6,14 @@
-  * Structures and prototypes used for an "rpmts" transaction set.
-  */
--#include "rpmps.h"
--#include "rpmsw.h"
-+#include <stdio.h>    /* XXX FILE * typedef */
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+#include <rpmtypes.h>
-+#include <rpmiotypes.h>
-+#include <rpmps.h>
-+#include <rpmsw.h>
- #include <rpmpgp.h>           /* XXX pgpVSFlags */
-+#include <rpmtag.h>
- #if defined(_RPMTS_INTERNAL)
- #include <rpmbag.h>
- #endif
-diff -ur rpm-5.4.10.orig/lib/rpmversion.h rpm-5.4.10/lib/rpmversion.h
---- rpm-5.4.10.orig/lib/rpmversion.h   2012-09-09 13:54:23.000000000 +0200
-+++ rpm-5.4.10/lib/rpmversion.h        2012-09-09 14:29:18.352630865 +0200
-@@ -1,6 +1,8 @@
- #ifndef __RPMVERSION_H__
- #define __RPMVERSION_H__
-+#include <stdint.h>   /* XXX unint32_t typedef */
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-diff -ur rpm-5.4.10.orig/rpmio/yarn.h rpm-5.4.10/rpmio/yarn.h
---- rpm-5.4.10.orig/rpmio/yarn.h       2012-09-09 13:54:22.000000000 +0200
-+++ rpm-5.4.10/rpmio/yarn.h    2012-09-09 15:37:09.928349906 +0200
-@@ -111,6 +111,9 @@
-         handler will exit (set to NULL by default for no action)
-  */
-+#include <sys/types.h>        /* XXX size_t typedef */
-+#include <rpmiotypes.h>       /* XXX yarnLock typedef */
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
diff --git a/rpm-gendiff.patch b/rpm-gendiff.patch
deleted file mode 100644 (file)
index 6eec5b1..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
---- ./scripts/gendiff.org      2008-04-06 10:48:23.000000000 +0200
-+++ ./scripts/gendiff  2009-02-11 15:44:23.070120721 +0100
-@@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
- function usage () {
-   echo "usage: $0 <directory> <diff-extension>" 1>&2
diff --git a/rpm-gettext-in-header.patch b/rpm-gettext-in-header.patch
deleted file mode 100644 (file)
index 935f612..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-4.1/rpmdb/header.c.wiget2      Thu Sep 19 00:47:29 2002
-+++ rpm-4.1/rpmdb/header.c     Thu Sep 19 00:52:10 2002
-@@ -1645,7 +1645,8 @@
-       if (ed_weak) return (char *) ed_weak;
-     }
--    return (char *) entry->data;
-+/* when everything fail, try gettext */
-+    return ((entry->data != NULL) && *(char*)(entry->data)) ? _(entry->data) : (char *) entry->data;
- }
- /**
diff --git a/rpm-gpg-pinentry.patch b/rpm-gpg-pinentry.patch
deleted file mode 100644 (file)
index 531f1b3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN rpm-5.4.15.orig/macros/macros rpm-5.4.15/macros/macros
---- rpm-5.4.15.orig/macros/macros      2014-08-17 14:02:20.000000000 +0200
-+++ rpm-5.4.15/macros/macros   2018-09-24 15:46:44.323052200 +0200
-@@ -519,7 +519,7 @@
- #     signing and verification.
- #
- %__gpg_check_password_cmd     %{__gpg} \
--      gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
-+      gpg --batch --pinentry-mode loopback --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
- #%__pgp_check_password_cmd    %{__pgp} \
- #     pgp +batchmode=on +verbose=0 "%{_pgp_name}" -sf
- #%__pgp5_check_password_cmd   %{__pgp} \
-diff -ruN rpm-5.4.15.orig/macros/macros.in rpm-5.4.15/macros/macros.in
---- rpm-5.4.15.orig/macros/macros.in   2014-08-09 00:40:40.000000000 +0200
-+++ rpm-5.4.15/macros/macros.in        2018-09-24 15:46:34.807097580 +0200
-@@ -519,7 +519,7 @@
- #     signing and verification.
- #
- %__gpg_check_password_cmd     %{__gpg} \
--      gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
-+      gpg --batch --pinentry-mode loopback --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
- #%__pgp_check_password_cmd    %{__pgp} \
- #     pgp +batchmode=on +verbose=0 "%{_pgp_name}" -sf
- #%__pgp5_check_password_cmd   %{__pgp} \
diff --git a/rpm-gst-inspect-typo.patch b/rpm-gst-inspect-typo.patch
deleted file mode 100644 (file)
index 74d32fc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/macros/gstreamer.in.gst 2012-09-26 08:59:44.842368772 +0200
-+++ rpm-5.4.10/macros/gstreamer.in     2012-09-26 08:59:48.542348566 +0200
-@@ -2,7 +2,7 @@
- # To make use of these macros insert the following line into your spec file:
- # %{load:%{_usrlibrpm}/macros.d/gstreamer}
--%__gst_inspect                @__GST_INSPECT
-+%__gst_inspect                @__GST_INSPECT@
- # Path to scripts to autogenerate gstreamer package dependencies,
- #
diff --git a/rpm-hack-norpmlibdep.patch b/rpm-hack-norpmlibdep.patch
deleted file mode 100644 (file)
index 05e8902..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-4.3/build/files.c.orig 2003-11-24 19:10:54.000000000 +0100
-+++ rpm-4.3/build/files.c      2003-11-24 19:20:05.827568008 +0100
-@@ -2119,7 +2119,7 @@
-       goto exit;
-     /* Verify that file attributes scope over hardlinks correctly. */
--    if (checkHardLinks(&fl))
-+    if (checkHardLinks(&fl) && !rpmExpandNumeric("%{_hack_dontneed_PartialHardlinkSets}"))
-       (void) rpmlibNeedsFeature(pkg->header,
-                       "PartialHardlinkSets", "4.0.4-1");
diff --git a/rpm-helperEVR-noassert.patch b/rpm-helperEVR-noassert.patch
deleted file mode 100644 (file)
index 17a5146..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- rpm-4.5/lib/rpmfc.c.orig   2012-02-13 20:28:52.564758176 +0100
-+++ rpm-4.5/lib/rpmfc.c        2012-02-14 19:01:50.810809655 +0100
-@@ -472,7 +472,10 @@
-               }
-               i++;
-               EVR = pav[i];
--assert(EVR != NULL);
-+              if(EVR == NULL) {
-+                      rpmlog(RPMLOG_ERR, _("%s helper returned empty version info for %s, omitting\n"), nsdep, N);
-+                      continue;
-+              }
-           }
- /*@=branchstate@*/
diff --git a/rpm-hrmib-cache b/rpm-hrmib-cache
deleted file mode 100644 (file)
index 8ee25bb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-build_hrmib_cache() {
-       # skip if no rpm(1), touch(1), xargs(1)
-       [ -x /bin/rpm -a -x /bin/touch -a -x /bin/xargs ] || return
-
-       export LC_ALL=C
-       umask 002
-
-       mydir=/var/cache/hrmib
-
-       echo >&2 "Populating $mydir with initial contents"
-       mkdir -p $mydir || return
-       echo $mydir/* | xargs rm -f
-
-       buf=$(rpm --nodigest --nosignature -qa --qf '%{N}-%{V}-%{R}.%{ARCH} %{INSTALLTIME:date}\n')
-       echo "$buf" | while read nvra idate; do
-               touch -d "$idate" "$mydir/$nvra"
-       done
-       touch $mydir
-}
-
-build_hrmib_cache
index f859bd1670fdb1d549ef3b198b8ca70f45e739ac..b7e7ed03b5fe586d2745fd53e3be896675246cbf 100644 (file)
@@ -1,51 +1,10 @@
 --- rpm-5.4.15/rpmio/macro.c~  2014-12-07 20:24:53.000000000 +0100
 +++ rpm-5.4.15/rpmio/macro.c   2014-12-07 20:44:45.739944044 +0100
-@@ -2965,7 +2965,17 @@
-           se = rpmMCExpand(mc, s, NULL);
-           rc = rpmGlob(se, &argc, &argv);
-           for(i = 0; i < argc; i++) {
--              rc |= rpmLoadMacroFile(mc, argv[i], nesting - 1);
-+              /* Skip backups, non existing files and %config leftovers. */
-+#define       _suffix(_s, _x) \
-+    (strlen(_s) >= sizeof(_x) && !strcmp((_s)+strlen(_s)-(sizeof(_x)-1), (_x)))
-+              if (!(_suffix(argv[i], "~")
-+                 || _suffix(argv[i], ".rpmnew")
-+                 || _suffix(argv[i], ".rpmorig")
-+                 || _suffix(argv[i], ".rpmsave"))
-+                 && !Access(argv[i], R_OK)
-+                 )
-+                  rc |= rpmLoadMacroFile(mc, argv[i], nesting - 1);
-+#undef _suffix
-               argv[i] = _free(argv[i]);
+@@ -1795,6 +1795,7 @@
+       for (path = files; *path; path++) {
+           if (rpmFileHasSuffix(*path, ".rpmnew") || 
+               rpmFileHasSuffix(*path, ".rpmsave") ||
++              rpmFileHasSuffix(*path, "~") ||
+               rpmFileHasSuffix(*path, ".rpmorig")) {
+               continue;
            }
-           argv = _free(argv);
---- rpm-5.4.15/macros/macros.in~       2014-12-07 21:43:59.000000000 +0100
-+++ rpm-5.4.15/macros/macros.in        2014-12-07 22:07:57.383101292 +0100
-@@ -1019,13 +1019,7 @@
- %{nil}
- #==============================================================================
--# XXX Caveat:
--# XXX With %{load:...} being interpreted immediately -- not lazily --
--# XXX within a macro init file, a failure to load causes immediate loading
--# XXX termination silently.
--# XXX
--# XXX So the order as well as the existence of the %{load:...} macros below
--# XXX are critically important.
-+# XXX If a file specified in %{load:...} does not exist, it will be skipped.
- # XXX
- # XXX Note also that loaded macro files can NOT recursively load other
- # XXX macro files; only a top-level (i.e. after --macros, or within a *.spec)
-@@ -1036,11 +1030,8 @@
- # XXX for configuring RPM itself.
- # XXX
- # XXX Simple example(s):
--# XXX If the file %{_usrlibrpm}/macros.d/selinux doesn't exist,
--# XXX then %{_usrlibrpm}/macros.rpmbuild will NOT be loaded.
--# XXX
- # XXX if the file %{_usrlibrpm}/macros.d/cmake attempts another
--# XXX %{load:...}, then loading will CEASE at that point in the file.
-+# XXX %{load:...}, then the statement will be IGNORED.
- #==============================================================================
- # ---- SELinux configuration macros.
- %{load:%{_usrlibrpm}/macros.d/selinux}
diff --git a/rpm-installbeforeerase.patch b/rpm-installbeforeerase.patch
deleted file mode 100644 (file)
index 8939bfa..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
- 4.4.9 -> 4.5:
-+      - jbj: add a relation to to force install-before-erase.
-+      - jbj: display dependency loops as an error for now.
-       - glen: do not skip %clean from spec file
-       - robert: install rpmdeps and debugedit to pkglibdir as on HEAD
-       - jbj: fix: python ts.hdrFromFdno(fdno) segfault.
---- rpm-5.4.10/lib/order.c~    2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.10/lib/order.c     2012-09-03 23:09:03.706487979 +0200
-@@ -1631,7 +1631,7 @@
-           (void) orgrpmAddRelation(ts, al, p, requires);
-       }
--#ifdef        NOTYET
-+#if defined(RPM_VENDOR_PLD)
-       /* Ensure that erasures follow installs during upgrades. */
-       if (rpmteType(p) == TR_REMOVED && p->flink.Pkgid && p->flink.Pkgid[0]) {
-       rpmtsi qi;
-@@ -1652,7 +1652,7 @@
-       }
-       qi = rpmtsiFree(qi);
-       }
--#endif        /* NOTYET */
-+#endif
- #ifdef        NOTYET
-       /* Order by requiring parent directories as prerequisites. */
-@@ -2175,7 +2175,7 @@
-               const char * dp;
-               rpmlogLvl msglvl = (anaconda || (rpmtsDFlags(ts) & RPMDEPS_FLAG_DEPLOOPS))
-                       ? RPMLOG_WARNING : RPMLOG_ERR;
--#if defined(RPM_VENDOR_MANDRIVA) /* loop-detection-optional-loglevel */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD) /* loop-detection-optional-loglevel */
-               // Report loops as debug-level message by default (7 = RPMLOG_DEBUG), overridable
-               msglvl = rpmExpandNumeric("%{?_loop_detection_loglevel}%{?!_loop_detection_loglevel:7}");
- #endif
diff --git a/rpm-javadeps.patch b/rpm-javadeps.patch
deleted file mode 100644 (file)
index a26831e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- rpm-4.4.9/lib/rpmfc.c.orig 2007-05-22 20:19:05.990914000 +0200
-+++ rpm-4.4.9/lib/rpmfc.c      2007-05-22 22:12:38.775152636 +0200
-@@ -875,6 +875,10 @@
-       xx = rpmfcHelper(fc, 'P', "gstreamer");
-       /* XXX: currently of no use, but for the sake of consistency... */
-       xx = rpmfcHelper(fc, 'R', "gstreamer");
-+    } else
-+    if (fc->fcolor->vals[fc->ix] & RPMFC_JAVA) {
-+      xx = rpmfcHelper(fc, 'P', "java");
-+      xx = rpmfcHelper(fc, 'R', "java");
-     }
- /*@-observertrans@*/
diff --git a/rpm-libmagic-locale.patch b/rpm-libmagic-locale.patch
deleted file mode 100644 (file)
index d83f577..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---- rpm-4.5/rpmio/rpmmg.c.org  2012-02-29 16:32:05.655058968 +0100
-+++ rpm-4.5/rpmio/rpmmg.c      2012-02-29 16:36:22.430972834 +0100
-@@ -118,7 +118,29 @@
-           /*@fallthrough@*/
-       case URL_IS_UNKNOWN:
-       default:
-+          {
-+              char *old_ctype = setlocale(LC_CTYPE, NULL);
-+              char *old_collate = setlocale(LC_COLLATE, NULL);
-+
-+              if (old_ctype) {
-+                      old_ctype = xstrdup(old_ctype);
-+                      setlocale(LC_CTYPE, "C");
-+              }
-+              if (old_collate) {
-+                      old_collate = xstrdup(old_collate);
-+                      setlocale(LC_COLLATE, "C");
-+              }
-+
-           t = magic_file(mg->ms, fn);
-+
-+              if (old_ctype) {
-+                      setlocale(LC_CTYPE, old_ctype);
-+                      _free(old_ctype);
-+              }
-+              if (old_collate) {
-+                      setlocale(LC_COLLATE, old_collate);
-+                      _free(old_collate);
-+              }
-           /* XXX HACK: libmagic compiled without <pcreposix.h> spews here. */
-           if (t == NULL) {
-               const char * msg = magic_error(mg->ms);
-@@ -147,6 +176,7 @@
-                   rpmlog(RPMLOG_ERR, _("magic_file(ms, %s) failed: %s\n"),
-                           (fn ? fn : "(nil)"), msg);
-           }
-+          }
-           break;
-       }
-     }
diff --git a/rpm-libtool-deps.patch b/rpm-libtool-deps.patch
deleted file mode 100644 (file)
index 4dc62f4..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
---- rpm-4.4.8.org/scripts/libtooldeps.sh       2005-11-12 22:20:42.000000000 +0100
-+++ rpm-4.4.8/scripts/libtooldeps.sh   2006-11-26 20:06:49.254008750 +0100
-@@ -5,15 +5,17 @@
-     exit 0
- }
-+pkgname="$3"
-+
- case $1 in
- -P|--provides)
-     shift
--    RPM_BUILD_ROOT="$1"
-+    RPM_BUILD_ROOT="$1"
-     while read possible
-     do
-       case "$possible" in
-       *.la)
--          if grep -iq '^# Generated by ltmain.sh' "$possible" 2> /dev/null ; then
-+          if file -L "$possible" | grep -iq 'libtool library file' 2> /dev/null ; then
-               possible="`echo ${possible} | sed -e s,${RPM_BUILD_ROOT}/,/,`"
-               echo "libtool($possible)"
-           fi
-@@ -22,21 +24,28 @@
-     done
-     ;;
- -R|--requires)
--    while read possible ; do
--      case "$possible" in
--      *.la)
--          for dep in `grep '^dependency_libs='"$possible" 2> /dev/null | \
--                      sed -e "s,^dependency_libs='\(.*\)',\1,g"`
--          do
--              case "$dep" in
--              /*.la)
--                  echo "libtool($dep)"
-+    case $pkgname in
-+    *-devel)
-+          while read possible ; do
-+              case "$possible" in
-+              *.la)
-+                  for dep in `grep '^dependency_libs=' "$possible" 2> /dev/null | \
-+                              sed -e "s,^dependency_libs='\(.*\)',\1,g"`
-+                  do
-+                      case "$dep" in
-+                      /*.la)
-+                          dep="`readlink -f "$dep" 2> /dev/null || echo "$dep"`"
-+                          echo "libtool($dep)"
-+                          ;;
-+                      esac
-+                  done
-                   ;;
-               esac
-           done
--          ;;
--      esac
--    done
--    ;;
-+     ;;
-+     *)
-+            cat > /dev/null
-+     ;;
-+     esac
- esac
- exit 0
diff --git a/rpm-lua-enable-extra-libs.patch b/rpm-lua-enable-extra-libs.patch
deleted file mode 100644 (file)
index 33f6524..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
---- rpm-5.4.10/lua/linit.c~    2012-10-03 14:46:45.303935753 +0200
-+++ rpm-5.4.10/lua/linit.c     2012-10-03 14:48:19.503932430 +0200
-@@ -13,6 +13,8 @@
- #include "lualib.h"
- #include "lauxlib.h"
-+#include "lposix.h"
-+#include "lrexlib.h"
- static const luaL_Reg lualibs[] = {
-   {"", luaopen_base},
-@@ -26,6 +26,9 @@
-   {LUA_STRLIBNAME, luaopen_string},
-   {LUA_MATHLIBNAME, luaopen_math},
-   {LUA_DBLIBNAME, luaopen_debug},
-+  {"rex_posix", luaopen_rex_posix},
-+  {"rex_pcre", luaopen_rex_pcre},
-+  {"posix", luaopen_posix},
-   {NULL, NULL}
- };
diff --git a/rpm-lua-expat.patch b/rpm-lua-expat.patch
deleted file mode 100644 (file)
index a3ac839..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- lua/Makefile.am~   2013-06-29 22:03:22.000000000 +0100
-+++ lua/Makefile.am    2013-09-23 19:07:35.157853272 +0100
-@@ -230,7 +230,10 @@
- #     local/lwrs.h
- #     local/lwrs.c
--liblua_la_LIBADD = @WITH_LUA_SUBDIR_LIB@ -lm -lexpat
-+liblua_la_LIBADD = @WITH_LUA_SUBDIR_LIB@ -lm
-+if USE_LUA_CRYPTO
-+liblua_la_LIBADD += -lexpat
-+endif
- liblua_la_SOURCES += \
-       local/llocal.c \
-       local/llocal.h \
diff --git a/rpm-lua.patch b/rpm-lua.patch
deleted file mode 100644 (file)
index b3f7a0b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.0.2/configure.ac~    2008-02-19 20:09:59.000000000 +0200
-+++ rpm-5.0.2/configure.ac     2008-02-19 20:21:41.000000000 +0200
-@@ -1042,7 +1042,7 @@
- WITH_LUA_SUBDIR_LIB=""
- RPM_CHECK_LIB(
-     [Lua], [lua],
--    [lua], [lua_newstate], [lua.h],
-+    [lua51], [lua_newstate], [lua.h],
-     [no,internal:external:none], [lua:local],
-     [ if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
-           AC_CHECK_LIB(m, fabs)
diff --git a/rpm-macros.patch b/rpm-macros.patch
deleted file mode 100644 (file)
index 3565601..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
---- rpm-5.4.10/macros/macros.in~       2012-11-17 00:38:23.000000000 +0200
-+++ rpm-5.4.10/macros/macros.in        2012-11-17 00:38:55.871401871 +0200
-@@ -561,9 +561,10 @@
- # Horowitz Key Protocol server configuration
- #
--%_hkp_keyserver         hkp://keys.rpm5.org
-+#%_hkp_keyserver         hkp://keys.rpm5.org
- #%_hkp_keyserver         hkp://keys.n3npq.net
- #%_hkp_keyserver         hkp://pool.sks-keyservers.net
-+%_hkp_keyserver         hkp://ha.pool.sks-keyservers.net
- %_hkp_keyserver_query   %{_hkp_keyserver}/pks/lookup?op=get&search=
-
-@@ -670,18 +670,7 @@
- # XXX Note: that there cannot be any whitespace within the string "p>q",
- #     and that both p and q are package names (i.e. no version/release).
- #
--%_dependency_whiteout_caos_core               \
--      perl>perl-Filter                \
--      pam>coreutils                   \
--      pam>initscripts                 \
--      glibc-common>glibc              \
--      glibc>nscd                      \
--      filesystem>setup
--
--%_dependency_whiteout                 \
--      %{?_dependency_whiteout_caos_core} \
--      %{?_dependency_whiteout_system} \
--      %{nil}
-+%_dependency_whiteout %{nil}
- #
- # Default path used for serializing transactions with a  fcntl lock.
index db61324351d934bf389ffc5cbbd5d3115b1837b6..8ed712f332d6cdcede95a3f763401f753795f5fd 100644 (file)
@@ -1,10 +1,10 @@
---- rpm/doc/pl/rpm.8~  2007-11-24 23:21:26.000000000 +0100
-+++ rpm/doc/pl/rpm.8   2007-11-24 23:21:26.000000000 +0100
-@@ -325,6 +325,7 @@
- Instaluje pakiety nawet je¶li niektóre z nich s± ju¿ zainstalowane na tym
- systemie.
+--- rpm-4.16.0/docs/man/pl/rpm.8.orig  2020-05-28 12:04:25.022136604 +0200
++++ rpm-4.16.0/docs/man/pl/rpm.8       2020-10-13 08:06:11.442087617 +0200
+@@ -318,6 +318,7 @@
+ Instaluje pakiety nawet je\[u015B]li niekt\['o]re z nich s\[u0105]
ju\[u017C] zainstalowane na tym systemie.
  .TP
 +\fB--test\fR
  Nie instaluje pakietu, po prostu sprawdza i raportuje potencjalne
  konflikty.
- .SS "OPCJE USUWANIA"
+ .SS OPCJE USUWANIA
diff --git a/rpm-mimetype.patch b/rpm-mimetype.patch
deleted file mode 100644 (file)
index b9bd54d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -urN rpm-5.1.4/lib/rpmfc.c rpm-5.1.4.new/lib/rpmfc.c
---- rpm-5.1.4/lib/rpmfc.c      2008-07-29 19:36:38.000000000 +0200
-+++ rpm-5.1.4.new/lib/rpmfc.c  2008-07-29 19:43:42.000000000 +0200
-@@ -527,6 +527,8 @@
-   { "troff or preprocessor input",    RPMFC_MANPAGE|RPMFC_INCLUDE },
-   { "GNU Info",                       RPMFC_MANPAGE|RPMFC_INCLUDE },
-+  { "Desktop Entry",          RPMFC_DESKTOP_FILE|RPMFC_INCLUDE },
-+
-   { "perl script text",               RPMFC_PERL|RPMFC_INCLUDE },
-   { "Perl5 module source text", RPMFC_PERL|RPMFC_MODULE|RPMFC_INCLUDE },
-@@ -875,6 +877,9 @@
-     if (fc->fcolor->vals[fc->ix] & RPMFC_JAVA) {
-       xx = rpmfcHelper(fc, 'P', "java");
-       xx = rpmfcHelper(fc, 'R', "java");
-+    } else
-+    if (fc->fcolor->vals[fc->ix] & RPMFC_DESKTOP_FILE) {
-+      xx = rpmfcHelper(fc, 'P', "mimetype");
-     }
- /*@-observertrans@*/
-@@ -957,7 +963,7 @@
- /*@unchecked@*/
- static struct rpmfcApplyTbl_s rpmfcApplyTable[] = {
-     { rpmfcELF,               RPMFC_ELF },
--    { rpmfcSCRIPT,    (RPMFC_SCRIPT|RPMFC_FONT|RPMFC_HASKELL|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP|RPMFC_MONO|RPMFC_TYPELIB) },
-+    { rpmfcSCRIPT,    (RPMFC_SCRIPT|RPMFC_FONT|RPMFC_HASKELL|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP|RPMFC_MONO|RPMFC_TYPELIB|RPMFC_DESKTOP_FILE) },
- #if defined(RPM_VENDOR_MANDRIVA)
-     { rpmfcSYMLINK,   RPMFC_SYMLINK },
- #endif
-@@ -1311,6 +1317,9 @@
-           else if (_suffix(s, ".php"))
-               ftype = "PHP script text";
-+          else if (_suffix(s, ".desktop"))
-+              ftype = "Desktop Entry";
-+
-           /* XXX files with extension ".typelib" are GNOME typelib for now. */
-           else if (_suffix(s, ".typelib"))
-               ftype = "G-IR binary database";
-diff -urN rpm-5.1.4/lib/rpmfc.h rpm-5.1.4.new/lib/rpmfc.h
---- rpm-5.1.4/lib/rpmfc.h      2008-07-29 19:36:38.000000000 +0200
-+++ rpm-5.1.4.new/lib/rpmfc.h  2008-07-29 19:44:27.000000000 +0200
-@@ -28,7 +28,7 @@
- #define       RPMFC_ELF       (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFMIPSN32)
-       /* (1 << 3) leaks into package headers, reserved */
--      /* bit 4 unused */
-+    RPMFC_DESKTOP_FILE                = (1 <<  4),
-     RPMFC_TYPELIB             = (1 <<  5),
-     RPMFC_HASKELL             = (1 <<  6),
-     RPMFC_RUBY                        = (1 <<  7),
diff --git a/rpm-missing-patch-file-fails-build.patch b/rpm-missing-patch-file-fails-build.patch
deleted file mode 100644 (file)
index 0bce7d5..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix for http://rpm5.org/cvs/tktview?tn=41
-
---- rpm-5.4.10/macros/macros.rpmbuild.in~      2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.10/macros/macros.rpmbuild.in       2012-09-15 20:15:30.455784728 +0200
-@@ -169,7 +169,7 @@
- %define __patch_suffix  %{-b:-b --suffix %{-b*}} %{-z:--suffix %{-z*}} \
- %define __patch_fuzz    %{?_default_patch_fuzz:%(test %{_default_patch_fuzz} -ge 0 && echo "--fuzz=%{_default_patch_fuzz} ")} \
- %define __patch_options %{_default_patch_flags} %{-p:-p%{-p*}} %{-F:-F%{-F*}} %{-d:-d%{-d*}} %{-R} %{-E} %{__patch_suffix} \
--echo "Patch #%{__patch_number} (%{basename:%{__patch_file}}):" && ( %{uncompress:%{__patch_file}} | %{__patch} %{__patch_fuzz}%{__patch_options} ) || exit 1\
-+echo "Patch #%{__patch_number} (%{basename:%{__patch_file}}):" && [ -f %{__patch_file} ] && %{uncompress:%{__patch_file}} | %{__patch} %{__patch_fuzz}%{__patch_options} || exit 1\
- }
- #
diff --git a/rpm-namespace-compare.patch b/rpm-namespace-compare.patch
deleted file mode 100644 (file)
index e38d8dd..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
---- rpm-5.4.10/lib/rpmds.c~    2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.10/lib/rpmds.c     2012-09-13 12:40:32.439076460 +0200
-@@ -4036,6 +4036,12 @@
- assert((rpmdsFlags(A) & RPMSENSE_SENSEMASK) == A->ns.Flags);
- assert((rpmdsFlags(B) & RPMSENSE_SENSEMASK) == B->ns.Flags);
-+    /* Different namespaces don't overlap. */
-+    if (A->ns.Type != B->ns.Type) {
-+      result = 0;
-+      goto exit;
-+    }
-+
-     /* Different names (and/or name.arch's) don't overlap. */
-     if (rpmdsNAcmp(A, B)) {
-       result = 0;
-diff -ur rpm-5.4.10/lib/depends.c rpm-5.4.10.nstype/lib/depends.c
---- rpm-5.4.10/lib/depends.c   2012-11-30 13:03:40.350619256 +0100
-+++ rpm-5.4.10.nstype/lib/depends.c    2012-11-30 12:08:01.266204377 +0100
-@@ -16,6 +16,7 @@
- #define       _RPMDB_INTERNAL         /* XXX response cache needs dbiOpen et al. */
- #include <rpmdb.h>
-+#define       _RPMDS_INTERNAL
- #define       _RPMEVR_INTERNAL
- #include <rpmds.h>
- #include <rpmfi.h>
-@@ -1570,6 +1579,7 @@
-               /*@null@*/ rpmds dirnames,
-               /*@null@*/ rpmds linktos,
-               /*@null@*/ const char * depName,
-+              nsType depNS,
-               rpmuint32_t tscolor, int adding)
-       /*@globals rpmGlobalMacroContext, h_errno,
-               fileSystem, internalState @*/
-@@ -1579,6 +1589,7 @@
-     rpmps ps = rpmtsProblems(ts);
-     rpmuint32_t dscolor;
-     const char * Name;
-+    nsType NSType;
-     int terminate = 2;                /* XXX terminate if rc >= terminate */
-     int rc;
-     int ourrc = 0;
-@@ -1598,6 +1609,11 @@
-       if (depName != NULL && strcmp(depName, Name))
-           continue;
-+      NSType = rpmdsNSType(requires);
-+
-+      if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
-+          continue;
-+
-       /* Ignore colored requires not in our rainbow. */
-       dscolor = rpmdsColor(requires);
-       if (tscolor && dscolor && !(tscolor & dscolor))
-@@ -1639,6 +1659,11 @@
-       if (depName != NULL && strcmp(depName, Name))
-           continue;
-+      NSType = rpmdsNSType(conflicts);
-+
-+      if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
-+          continue;
-+
-       /* Ignore colored conflicts not in our rainbow. */
-       dscolor = rpmdsColor(conflicts);
-       if (tscolor && dscolor && !(tscolor & dscolor))
-@@ -1676,6 +1703,11 @@
-       if (depName != NULL && strcmp(depName, Name))
-           continue;
-+      NSType = rpmdsNSType(dirnames);
-+
-+      if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
-+          continue;
-+
-       /* Ignore colored dirnames not in our rainbow. */
-       dscolor = rpmdsColor(dirnames);
-       if (tscolor && dscolor && !(tscolor & dscolor))
-@@ -1724,6 +1758,11 @@
-       if (depName != NULL && strcmp(depName, Name))
-           continue;
-+      NSType = rpmdsNSType(linktos);
-+
-+      if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
-+          continue;
-+
-       /* Ignore colored linktos not in our rainbow. */
-       dscolor = rpmdsColor(linktos);
-       if (tscolor && dscolor && !(tscolor & dscolor))
-@@ -1771,7 +1812,7 @@
-  * @param adding      dependency is from added package set?
-  * @return            0 no problems found
-  */
--static int checkPackageSet(rpmts ts, const char * depName,
-+static int checkPackageSet(rpmts ts, const char * depName, nsType depNS,
-               /*@only@*/ /*@null@*/ rpmmi mi, int adding)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies ts, mi, rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -1816,7 +1857,7 @@
-       rc = checkPackageDeps(ts, he->p.str,
-               requires, conflicts, dirnames, linktos,
--              depName, tscolor, adding);
-+              depName, depNS, tscolor, adding);
-       (void)rpmdsFree(linktos);
-       linktos = NULL;
-@@ -1844,7 +1886,7 @@
-  * @param depName     requires name
-  * @return            0 no problems found
-  */
--static int checkDependentPackages(rpmts ts, const char * depName)
-+static int checkDependentPackages(rpmts ts, const char * depName, nsType depNS)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
- {
-@@ -1854,7 +1896,7 @@
-     if (rpmtsGetRdb(ts) != NULL) {
-       rpmmi mi;
-       mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, depName, 0);
--      rc = checkPackageSet(ts, depName, mi, 0);
-+      rc = checkPackageSet(ts, depName, depNS, mi, 0);
-     }
-     return rc;
- }
-@@ -1865,7 +1908,7 @@
-  * @param depName     conflicts name
-  * @return            0 no problems found
-  */
--static int checkDependentConflicts(rpmts ts, const char * depName)
-+static int checkDependentConflicts(rpmts ts, const char * depName, nsType depNS)
-       /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-       /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
- {
-@@ -1875,7 +1918,7 @@
-     if (rpmtsGetRdb(ts) != NULL) {
-       rpmmi mi;
-       mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, depName, 0);
--      rc = checkPackageSet(ts, depName, mi, 1);
-+      rc = checkPackageSet(ts, depName, depNS, mi, 1);
-     }
-     return rc;
-@@ -1939,7 +1985,7 @@
-       rc = checkPackageDeps(ts, rpmteNEVRA(p),
-                       requires, conflicts, dirnames, linktos,
--                      NULL, tscolor, 1);
-+                      NULL, RPMNS_TYPE_UNKNOWN, tscolor, 1);
-       if (rc && (ourrc = rc) >= terminate)
-           break;
-@@ -1963,7 +2011,7 @@
- #endif
-           /* Adding: check provides key against conflicts matches. */
--          if (checkDependentConflicts(ts, depName))
-+          if (checkDependentConflicts(ts, depName, rpmdsNSType(provides)))
-               rc = 1;
-       }
-       if (rc && (ourrc = rc) >= terminate)
-@@ -1975,7 +2026,7 @@
-           depName = _free(depName);
-           depName = xstrdup(rpmfiFN(fi));
-           /* Adding: check filename against conflicts matches. */
--          if (checkDependentConflicts(ts, depName))
-+          if (checkDependentConflicts(ts, depName, RPMNS_TYPE_UNKNOWN))
-               rc = 1;
-       }
-       if (rc && (ourrc = rc) >= terminate)
-@@ -2006,7 +2058,7 @@
-           depName = xstrdup(rpmdsN(provides));
-           /* Erasing: check provides against requiredby matches. */
--          if (checkDependentPackages(ts, depName))
-+          if (checkDependentPackages(ts, depName, rpmdsNSType(provides)))
-               rc = 1;
-       }
-       if (rc && (ourrc = rc) >= terminate)
-@@ -2018,7 +2070,7 @@
-           depName = _free(depName);
-           depName = xstrdup(rpmfiFN(fi));
-           /* Erasing: check filename against requiredby matches. */
--          if (checkDependentPackages(ts, depName))
-+          if (checkDependentPackages(ts, depName, RPMNS_TYPE_UNKNOWN))
-               rc = 1;
-       }
-       if (rc && (ourrc = rc) >= terminate)
-@@ -2039,7 +2091,7 @@
-       const char * dep = NULL;
-       int adding = 2;
-       tscolor = 0;    /* XXX no coloring for transaction dependencies. */
--      rc = checkPackageDeps(ts, tsNEVRA, R, C, D, L, dep, tscolor, adding);
-+      rc = checkPackageDeps(ts, tsNEVRA, R, C, D, L, dep, RPMNS_TYPE_UNKNOWN, tscolor, adding);
-     }
-     if (rc && (ourrc = rc) >= terminate)
-       goto exit;
diff --git a/rpm-noarch_py_prov.patch b/rpm-noarch_py_prov.patch
new file mode 100644 (file)
index 0000000..7c42050
--- /dev/null
@@ -0,0 +1,8 @@
+diff --color -urN rpm-4.16.0.orig/fileattrs/pythondist.attr rpm-4.16.0/fileattrs/pythondist.attr
+--- rpm-4.16.0.orig/fileattrs/pythondist.attr  2020-12-09 12:38:21.203961862 +0100
++++ rpm-4.16.0/fileattrs/pythondist.attr       2020-12-09 12:58:43.178952892 +0100
+@@ -1,3 +1,3 @@
+ %__pythondist_provides        %{_rpmconfigdir}/pythondistdeps.py --provides --majorver-provides
+ %__pythondist_requires        %{_rpmconfigdir}/pythondistdeps.py --requires
+-%__pythondist_path            /lib(64|x32)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
++%__pythondist_path            /(lib(64|x32)?|share)/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
diff --git a/rpm-nosetproctitle.patch b/rpm-nosetproctitle.patch
deleted file mode 100644 (file)
index 71d4638..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---- rpm-5.4.10/misc/librpmmisc.c.orig  2009-05-29 21:04:21.000000000 +0200
-+++ rpm-5.4.10/misc/librpmmisc.c       2013-04-06 21:52:32.825238309 +0200
-@@ -33,7 +33,7 @@
- #endif
- /* XXX limit the fiddle up to linux for now. */
--#if !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-+#if 0 && !defined(HAVE_SETPROCTITLE) && defined(__linux__)
- #include "setproctitle.c"
- #endif
---- rpm-5.4.10/configure.ac.orig       2013-04-06 15:51:42.965689560 +0200
-+++ rpm-5.4.10/configure.ac    2013-04-06 21:52:57.755237789 +0200
-@@ -945,13 +945,6 @@ if test $ac_cv_func_syslog = no; then
-   done
- fi
--AC_CHECK_FUNCS(setproctitle)
--if test $ac_cv_func_setproctitle = no; then
--  # setproctitle is not in the default libraries.  See if it's in some other.
--  AC_CHECK_LIB(setproctitle, setproctitle, [AC_DEFINE(HAVE_SETPROCTITLE)
--  LIBS="$LIBS -lsetproctitle"])
--fi
--
- dnl # Check how to find out the amount of physical memory in the system. The
- dnl # xz command line tool uses this to automatically limit its memory usage.
- dnl # - sysconf() gives all the needed info on GNU+Linux and Solaris.
---- rpm-5.4.10/rpmqv.c.orig    2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.10/rpmqv.c 2013-04-06 21:52:12.351905402 +0200
-@@ -450,7 +450,7 @@ int main(int argc, const char ** argv)
-     environ = envp;
- #else
- /* XXX limit the fiddle up to linux for now. */
--#if !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-+#if 0 && !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-     (void) initproctitle(argc, (char **)argv, environ);
- #endif
- #endif  
-@@ -1117,7 +1117,7 @@ exit:
-     optCon = rpmcliFini(optCon);
- /* XXX limit the fiddle up to linux for now. */
--#if !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-+#if 0 && !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-     (void) finiproctitle();
- #endif
---- rpm-5.4.14/rpmqv.cc.orig   2012-07-06 17:39:16.000000000 +0200
-+++ rpm-5.4.14/rpmqv.cc        2013-04-06 21:52:12.351905402 +0200
-@@ -450,7 +450,7 @@ int main(int argc, const char ** argv)
-     environ = envp;
- #else
- /* XXX limit the fiddle up to linux for now. */
--#if !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-+#if 0 && !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-     (void) initproctitle(argc, (char **)argv, environ);
- #endif
- #endif  
-@@ -1117,7 +1117,7 @@ exit:
-     optCon = rpmcliFini(optCon);
- /* XXX limit the fiddle up to linux for now. */
--#if !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-+#if 0 && !defined(HAVE_SETPROCTITLE) && defined(__linux__)
-     (void) finiproctitle();
- #endif
diff --git a/rpm-notsc.patch b/rpm-notsc.patch
deleted file mode 100644 (file)
index b42c40e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-4.3/rpmio/rpmsw.c.orig 2003-04-10 20:09:13.000000000 +0200
-+++ rpm-4.3/rpmio/rpmsw.c      2003-11-17 21:55:44.649426712 +0100
-@@ -27,7 +27,7 @@
- /*@unchecked@*/
- static int rpmsw_initialized = 0;
--#if defined(__linux__) && defined(__i386__) && !defined(RPM_VENDOR_PLD)
-+#if defined(__linux__) && defined(__i386__)
- /* Swiped from glibc-2.3.2 sysdeps/i386/i686/hp-timing.h */
- #define       HP_TIMING_ZERO(Var)     (Var) = (0)
diff --git a/rpm-null-term-ascii-digest.patch b/rpm-null-term-ascii-digest.patch
deleted file mode 100644 (file)
index 06102d7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: rpmdb/legacy.c
-===================================================================
-RCS file: /v/rpm/cvs/rpm/rpmdb/legacy.c,v
-retrieving revision 1.44.4.3
-diff -p -u -w -r1.44.4.3 legacy.c
---- rpmdb/legacy.c     16 Apr 2012 23:43:34 -0000      1.44.4.3
-+++ rpmdb/legacy.c     2 Oct 2012 20:17:21 -0000
-@@ -282,8 +282,10 @@ int dodigest(int dalgo, const char * fn,
- exit:
-     if (fsizep)
-       *fsizep = fsize;
--    if (!rc)
-+    if (!rc) {
-       memcpy(digest, dsum, dlen);
-+      if (asAscii) digest[dlen] = '\0';
-+    }
-     dsum = _free(dsum);
-     return rc;
diff --git a/rpm-old-fileconflicts-behaviour.patch b/rpm-old-fileconflicts-behaviour.patch
deleted file mode 100644 (file)
index 1e59501..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.3.11/lib/poptI.c~    2011-05-08 01:58:28.000000000 +0300
-+++ rpm-5.3.11/lib/poptI.c     2011-10-06 18:36:39.099587792 +0300
-@@ -21,7 +21,7 @@
- /*@-fullinitblock@*/
- /*@unchecked@*/
- struct rpmQVKArguments_s rpmIArgs = {
--#if defined(RPM_VENDOR_MANDRIVA) /* dont-filter-install-file-conflicts */
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD) /* dont-filter-install-file-conflicts */
-     .probFilter = RPMPROB_FILTER_NONE,
- #else
-     .probFilter = (RPMPROB_FILTER_REPLACEOLDFILES | RPMPROB_FILTER_REPLACENEWFILES),
diff --git a/rpm-parseSpec-skip-empty-tags.patch b/rpm-parseSpec-skip-empty-tags.patch
deleted file mode 100644 (file)
index 119cbed..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/build/parseSpec.c.orig  2013-02-25 14:29:07.874848468 +0100
-+++ rpm-5.4.10/build/parseSpec.c       2013-02-25 14:29:25.661698897 +0100
-@@ -92,6 +92,8 @@
-         if (aTags != NULL && aTags[0] != NULL) {
-             ARGV_t av;
-             s = tagCanonicalize(line+1);      /* XXX +1 to skip leading '%' */
-+          if (strlen(s) == 0) /* not a tag, just unknown macro */
-+                  goto exit;
- #if defined(RPM_VENDOR_OPENPKG) /* wildcard-matching-arbitrary-tagnames */
-             av = argvSearchLinear(aTags, s, argvFnmatchCasefold);
- #else
diff --git a/rpm-pattern_Release.patch b/rpm-pattern_Release.patch
deleted file mode 100644 (file)
index f78e9b0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/macros/macros.in~       2012-09-12 13:52:19.305575500 +0200
-+++ rpm-5.4.10/macros/macros.in        2012-09-14 14:15:34.115044785 +0200
-@@ -778,7 +778,7 @@
- %pattern_Name         ^[A-Za-z0-9][A-Za-z0-9+._-]*$
- %pattern_Epoch                ^[0-9]+$
- %pattern_Version      ^[A-Za-z0-9+._~]+$
--%pattern_Release      ^[A-Za-z0-9+._]+$
-+%pattern_Release      ^[A-Za-z0-9+._@{}%]+$
- %pattern_Disttag      ^[A-Za-z0-9]+$
- %pattern_Repotag      ^[A-Za-z0-9]+$
- %pattern_Distepoch    ^[A-Za-z0-9.]+$
diff --git a/rpm-payload-use-hashed-inode.patch b/rpm-payload-use-hashed-inode.patch
deleted file mode 100644 (file)
index 05e2447..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-diff -ur rpm-5.4.10/build/files.c rpm-5.4.10-collision/build/files.c
---- rpm-5.4.10/build/files.c   2013-03-17 13:17:38.233358389 +0100
-+++ rpm-5.4.10-collision/build/files.c 2013-03-17 13:07:37.468483625 +0100
-@@ -1323,6 +1323,26 @@
-     return dalgo;
- }
-+static int isHardLink(FileListRec flp, FileListRec tlp)
-+{
-+    return ((S_ISREG(flp->fl_mode) && S_ISREG(tlp->fl_mode)) &&
-+            ((flp->fl_nlink > 1) && (flp->fl_nlink == tlp->fl_nlink)) &&
-+            (flp->fl_ino == tlp->fl_ino) &&
-+            (flp->fl_dev == tlp->fl_dev));
-+}
-+
-+static int seenHardLink(FileList fl, FileListRec flp, ino_t *fileid)
-+{
-+    FileListRec ilp;
-+    for (ilp = fl->fileList; ilp < flp; ilp++) {
-+        if (isHardLink(flp, ilp)) {
-+            *fileid = ilp - fl->fileList;
-+            return 1;
-+        }
-+    }
-+    return 0;
-+}
-+
- /**
-  * Add file entries to header.
-  * @todo Should directories have %doc/%config attributes? (#14531)
-@@ -1370,6 +1390,7 @@
-     for (i = 0, flp = fl->fileList; i < fl->fileListRecsUsed; i++, flp++) {
-       const char *s;
-+      ino_t fileid = flp - fl->fileList;
-       /* Merge duplicate entries. */
-       while (i < (fl->fileListRecsUsed - 1) &&
-@@ -1437,6 +1458,13 @@
-       /* Leave room for both dirname and basename NUL's */
-       dpathlen += (strlen(flp->diskURL) + 2);
-+      /* Excludes and dupes have been filtered out by now. */
-+      if (S_ISREG(flp->fl_mode)) {
-+          if (flp->fl_nlink == 1 || !seenHardLink(fl, flp, &fileid)) {
-+              fl->totalFileSize += flp->fl_size;
-+          }
-+      }
-+
-       /*
-        * Make the header, the OLDFILENAMES will get converted to a 
-        * compressed file list write before we write the actual package to
-@@ -1519,7 +1547,11 @@
-       /* XXX Hash instead of 64b->32b truncate to prevent aliasing. */
-       {   ino_t _ino = flp->fl_ino;
--          ui32 = hashFunctionString(0, &_ino, sizeof(_ino));
-+      /* don't use hash here, as hash collisions which happen on large packages
-+         cause bus errors in rpmbuild
-+          ui32 = hashFunctionString(0, &_ino, sizeof(_ino));
-+      */
-+          ui32 = fileid + 1;
-       }
-       he->tag = RPMTAG_FILEINODES;
-       he->t = RPM_UINT32_TYPE;
-@@ -1752,39 +1780,6 @@
-               IOSM_MAP_TYPE | IOSM_MAP_MODE | IOSM_MAP_UID | IOSM_MAP_GID;
-       if (isSrc)
-           fi->fmapflags[i] |= IOSM_FOLLOW_SYMLINKS;
--
--      if (S_ISREG(flp->fl_mode)) {
--          int bingo = 1;
--          /* Hard links need be tallied only once. */
--          if (flp->fl_nlink > 1) {
--              FileListRec jlp = flp + 1;
--              int j = i + 1;
--              for (; (unsigned)j < fi->fc; j++, jlp++) {
--                  /* follow outer loop logic */
--                  while (((jlp - fl->fileList) < (fl->fileListRecsUsed - 1)) &&
--                          !strcmp(jlp->fileURL, jlp[1].fileURL))
--                      jlp++;
--                  if (jlp->flags & RPMFILE_EXCLUDE) {
--                      j--;
--                      /*@innercontinue@*/ continue;
--                  }
--                  if (jlp->flags & RPMFILE_GHOST)
--                      /*@innercontinue@*/ continue;
--                  if (!S_ISREG(jlp->fl_mode))
--                      /*@innercontinue@*/ continue;
--                  if (flp->fl_nlink != jlp->fl_nlink)
--                      /*@innercontinue@*/ continue;
--                  if (flp->fl_ino != jlp->fl_ino)
--                      /*@innercontinue@*/ continue;
--                  if (flp->fl_dev != jlp->fl_dev)
--                      /*@innercontinue@*/ continue;
--                  bingo = 0;  /* don't tally hardlink yet. */
--                  /*@innerbreak@*/ break;
--              }
--          }
--          if (bingo)
--              fl->totalFileSize += flp->fl_size;
--      }
-     }
-     ui32 = fl->totalFileSize;
index c99ad2e3e51fa754270c0af85d235c8405ea085f..bd04c599ed949e2b81a5c6a74bebec43ec9f5dc3 100644 (file)
@@ -1,22 +1,17 @@
 --- rpm-5.3.1/configure.ac.wiget       2010-05-22 17:15:11.000000000 +0200
 +++ rpm-5.3.1/configure.ac     2010-05-30 16:37:59.526924459 +0200
-@@ -2198,6 +2198,7 @@ AC_CONFIG_FILES([ po/Makefile.in
-     build/Makefile build/auto/Makefile build/auto/desc build/auto/types
-     tools/Makefile
-     scripts/Makefile
-+    scripts/perl.req scripts/perl.prov
-     rpmdb/DB_CONFIG
-     macros/macros macros/macros.rpmbuild
-     macros/java macros/libtool macros/mono macros/perl 
+@@ -1100,7 +1100,7 @@ AC_CONFIG_FILES([ po/Makefile.in
+ AC_CONFIG_FILES([Makefile
+       rpmio/Makefile lib/Makefile build/Makefile sign/Makefile
+-      po/Makefile.in scripts/Makefile fileattrs/Makefile
++      po/Makefile.in scripts/Makefile scripts/perl.req scripts/perl.prov fileattrs/Makefile
+       misc/Makefile 
+       docs/Makefile
+       docs/man/Makefile
 --- rpm-5.3.1/scripts/perl.req.wiget   2008-10-26 10:50:53.000000000 +0100
 +++ rpm-5.3.1/scripts/perl.req 2010-05-30 16:35:36.999438206 +0200
-@@ -1,4 +1,4 @@
--#!/usr/bin/perl
-+#!@__PERL@
- # RPM (and its source code) is covered under two separate licenses. 
-@@ -41,7 +41,11 @@
+@@ -45,7 +45,11 @@
  
  if ("@ARGV") {
    foreach (@ARGV) {
 +    }
    }
  } else {
-   
-@@ -49,7 +53,11 @@ if ("@ARGV") {
+@@ -53,7 +57,11 @@
    # contents of the file.
-   
    foreach (<>) {
 -    process_file($_);
 +     if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
@@ -42,7 +37,7 @@
    }
  }
  
-@@ -215,19 +223,41 @@ sub process_file {
+@@ -261,19 +269,41 @@
  
        $module =~ s/\(\s*\)$//;
  
        # if module is a number then both require and use interpret that
        # to mean that a particular version of perl is specified
  
--      my $ver=$1;
+-      my $ver = $1;
 -      if ($ver =~ /5.00/) {
--        print "perl >= 0:$ver\n";
+-        $perlreq{"0:$ver"} = 1;
 -        next;
 -      }
 -      else {
--        print "perl >= 1:$ver\n";
+-        $perlreq{"1:$ver"} = 1;
 -        next;
 -      }
 +      my $ver=$2;
  
        };
  
-@@ -244,7 +274,31 @@ sub process_file {
+@@ -290,7 +320,31 @@
        # will be included with the name sys/systeminfo.ph so only use the
        # basename of *.ph files
  
--      ($module  =~ m/\.ph$/) && next;
+-      ($module =~ m/\.ph$/) && next;
 +      # ($module  =~ m/\.ph$/) && ($module =~ s!.*/!!g );
-+ 
++
 +      # there is no need to generate dependencies for ph, pl or test files
 +      # so let's just skip them.
 +
 +
 +      $module =~ s/\(\s*\)$//;
  
-       $require{$module}=$version;
-       $line{$module}=$_;
+       # use base|parent qw(Foo) dependencies
+       if ($statement eq "use" && ($module eq "base" || $module eq "parent")) {
index 2b41d61f9f6f5149fd22ba69f6a49e82ba84f526..1faacf3d57b6a9be2a022269403c24a546c931c5 100644 (file)
@@ -1,11 +1,10 @@
---- lib/rpmfc.c.orig   2014-10-07 15:53:03.185631053 +0100
-+++ lib/rpmfc.c        2014-10-07 16:02:32.487591097 +0100
-@@ -593,7 +593,8 @@
+--- rpm/build/rpmfc.c.orig     2014-10-07 15:53:03.185631053 +0100
++++ rpm/build/rpmfc.c  2014-10-07 16:02:32.487591097 +0100
+@@ -593,6 +593,7 @@
+   { "GNU Info",                       RPMFC_INCLUDE },
  
-   { "Desktop Entry",          RPMFC_DESKTOP_FILE|RPMFC_INCLUDE },
+   { "perl ",                  RPMFC_INCLUDE },
++  { "Perl script",            RPMFC_INCLUDE },
+   { "Perl5 module source text", RPMFC_INCLUDE },
+   { "python ",                        RPMFC_INCLUDE },
  
-   { "perl script text",               RPMFC_PERL|RPMFC_INCLUDE },
-+  { "Perl script",            RPMFC_PERL|RPMFC_INCLUDE },
-   { "Perl5 module source text", RPMFC_PERL|RPMFC_MODULE|RPMFC_INCLUDE },
-   { "PHP script text",                RPMFC_PHP|RPMFC_INCLUDE },
index 5fe81f943d0387afcdfdde5a50fa899c9df02d94..16ad595114be3d0be9e782727e16bdac52d0e75b 100644 (file)
@@ -1,8 +1,8 @@
 --- rpm-4.2/scripts/perl.req.wigperl   Tue Apr  1 13:33:52 2003
 +++ rpm-4.2/scripts/perl.req   Tue Apr  1 13:39:47 2003
-@@ -39,28 +39,20 @@
+@@ -39,28 +39,19 @@
+ eval { require version; $HAVE_VERSION = 1; };
  
- # by Ken Estes Mail.com kestes@staff.mail.com
  
 -if ("@ARGV") {
 -  foreach (@ARGV) {
      }
 -  }
 -} else {
--  
+-
 -  # notice we are passed a list of filenames NOT as common in unix the
 -  # contents of the file.
--  
+-
 -  foreach (<>) {
 -     if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
 -       if (! m=(/(doc|man|info|usr/src)/|\.(so|ph|h|html|pod)$)=) {
 +    delete $require{$_};
 +}
 +delete $require{the}; # don't count "use the sth" as perl module  
-+
  
- foreach $module (sort keys %require) {
-   if (length($require{$module}) == 0) {
+ foreach $perlver (sort keys %perlreq) {
+   print "perl >= $perlver\n";
 @@ -82,6 +74,53 @@
- exit 0;
+   }
+ }
  
 +sub is_perlfile {
 +    my $file = shift;
 +    my $fh = shift;
-+    
++
 +    my $fl = <$fh>;
 +
 +    my $is_perl = 0;
-+  
++
 +    my $nw = 0;
 +
 +    if ($file =~ /\.(so|ph|h|html|pod|gz|bz2|png|gif|jpg|xpm|a|patch|o|mo)$/) {
 +          last if ($. > 30);
 +      }
 +    }
-+    
++
 +    seek($fh, 0, 0);
-+    
++
 +    $is_perl = 1 if ($nw > 1);  # propably perl file
-+    
++
 +    #if (!$is_perl) {
 +    #   print STDERR "NOPERL $file\n";
 +    #   return 0;
 +    return $is_perl;
 +}
 +
  sub process_file {
-   
+   my ($file) = @_;
 @@ -90,6 +129,8 @@
-   
-   open(FILE, "<$file") || return;
-   
+     return;
+   }
 +  return if (!is_perlfile($file, \*FILE));
 +
    while (<FILE>) {
-     
-     # skip the documentation
+     # skip the "= <<" block
 @@ -111,6 +152,10 @@
        last;
      }
index c6db3cdedcf2d58f46df044dc8620af2ce497d79..f15d4010c867505cf5ef90b0668adc6c64962479 100644 (file)
@@ -1,11 +1,9 @@
 --- scripts/perl.req~  2004-04-16 13:27:10.000000000 +0200
 +++ scripts/perl.req   2004-04-26 23:54:42.128568344 +0200
-@@ -39,8 +39,19 @@
+@@ -39,9 +39,18 @@
+ eval { require version; $HAVE_VERSION = 1; };
  
- # by Ken Estes Mail.com kestes@staff.mail.com
  
-+
-+
 +# *inc variables are used to track dependencies on directories for modules.
 +# These directories (especially arch-dependent) are likely to change some day.
 +my @inc = sort { length $b cmp length $a }
 +    if (m=/usr/(sbin|bin|lib|lib64|libx32|share|X11R6/(lib|lib64|libx32|bin))/=) {
        if (! m=(/(doc|man|info|usr/src)/|\.(so|ph|h|html|pod)$)=) {
          process_file($_) if -f;
-@@ -53,8 +64,9 @@
+       }
+@@ -53,7 +64,9 @@
+ foreach $perlver (sort keys %perlreq) {
+   print "perl >= $perlver\n";
  }
- delete $require{the}; # don't count "use the sth" as perl module  
 +print "$_\n" for sort grep $inc{$_}, keys %inc;
++
 -foreach $module (sort keys %require) {
 +foreach my $module (sort grep length, keys %require) {
    if (length($require{$module}) == 0) {
-      if ($module =~ /^[0-9._]+$/) {
-        print "perl-base >= $module\n";
+     print "perl($module)\n";
+   } else {
diff --git a/rpm-php-deps.patch b/rpm-php-deps.patch
deleted file mode 100644 (file)
index a6b90ad..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-4.4.8/lib/rpmfc.c.orig 2007-02-14 07:31:50.000000000 +0100
-+++ rpm-4.4.8/lib/rpmfc.c      2007-04-08 16:48:00.273560592 +0200
-@@ -773,7 +773,7 @@
-     } else
-     if (fc->fcolor->vals[fc->ix] & RPMFC_PHP) {
-       xx = rpmfcHelper(fc, 'P', "php");
--      if (is_executable)
-+      /* not only executable, files run by httpd usually are not */
-           xx = rpmfcHelper(fc, 'R', "php");
-     }
-
index 001b73f507a67048cf788efead5dc04eb9959af1..8166b08600931a174c0de50c2cabc1d8fc8b154d 100644 (file)
@@ -1,9 +1,9 @@
 --- rpm-4.4.9/rpmpopt.in       2008-03-24 22:09:33.709972364 +0200
 +++ rpm-4.4.9/rpmpopt.in       2008-04-04 18:51:45.658923774 +0300
-@@ -240,6 +249,18 @@
-       --POPTdesc=$"override build root" \
-       --POPTargs=$"DIRECTORY"
+@@ -240,5 +246,39 @@
+       --POPTdesc=$"trace macro expansion"
+ rpmspec alias --nodebuginfo   --define 'debug_package %{nil}' \
+       --POPTdesc=$"do not generate debuginfo for this package"
 +# (PLD-specific) Make RPM build tree
 +rpmbuild exec --install-build-tree install-build-tree \
 +      --POPTdesc=$"make all needed dirs for building binary rpms"
 +rpmbuild exec  --bcond find-spec-bcond \
 +      --POPTdesc=$"find all --with/--without values"
 +
- rpmbuild alias --lsb --noautoreq --noautoprov \
-       --define '_use_internal_dependency_generator 0' \
-       --notinlsb
-@@ -595,4 +595,22 @@
- rpmv  alias --httpproxy       --define '_httpproxy !#:+'
++rpm    alias --with           --define "_with_!#:+     --with-!#:+" \
++      --POPTdesc=$"enable configure <option> for build" \
++      --POPTargs=$"<option>"
++rpm   alias --without --define "_without_!#:+  --without-!#:+" \
++      --POPTdesc=$"disable configure <option> for build" \
++      --POPTargs=$"<option>"
++
 +rpm   alias --initdb  -qa --quiet \
 +      --POPTdesc=$"Compatibility option with old rpm. Database is created lazily now."
 +
@@ -34,9 +35,6 @@
 +rpm alias --what-requires --whatrequires \
 +      --POPTdesc=$"find package name that contains a required capability"
 +
-+rpm alias --norepackage --define '_repackage_all_erasures 0' \
-+      --POPTdesc=$"Disable re-package of the files before erasing"
-+
 +rpmbuild alias --disable-debuginfo --define '_enable_debug_packages 0' \
 +   --POPTdesc=$"Disable debuginfo package creation"
 +
diff --git a/rpm-popt-coreutils.patch b/rpm-popt-coreutils.patch
deleted file mode 100644 (file)
index 250ae97..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- rpm-4.5/rpmpopt.in~        2008-06-10 14:24:49.000000000 +0300
-+++ rpm-4.5/rpmpopt.in 2008-06-10 14:26:04.428174732 +0300
-@@ -55,8 +55,8 @@
-       --POPTdesc=$"set permissions of files in a package"
- rpm   alias --setugids -q --qf \
--        '[ch %{FILEUSERNAME:shescape} %{FILEGROUPNAME:shescape} %{FILENAMES:shescape}\n]' \
--        --pipe "(echo 'ch() { chown -h -- \"$1\" \"$3\";chgrp -h -- \"$2\" \"$3\"; }';grep -v \(none\))|sh" \
-+        '[chown -h -- %{FILEUSERNAME:shescape}:%{FILEGROUPNAME:shescape} %{FILENAMES:shescape}\n]' \
-+        --pipe "grep -v '(none)' | sh" \
-       --POPTdesc=$"set user/group ownership of files in a package"
- rpm   alias --conflicts       --qf \
index 2c9b8c0737daaa2a9976c309c120d6185b7eb9ef..2ab88172ec2ccd41836998af6776b4aaa05399bd 100644 (file)
@@ -1,13 +1,13 @@
 --- rpm-4.5/lib/psm.c.org      2008-11-21 17:20:34.293584455 +0100
 +++ rpm-4.5/lib/psm.c  2008-11-21 17:21:41.482728047 +0100
-@@ -2114,8 +2114,8 @@
-           psm->countCorrection = -1;
+@@ -789,8 +789,8 @@
+       }
  
-           if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) {
--              rc = (rpmRC) rpmpsmNext(psm, PSM_SCRIPT);
--              if (rc) break;
-+              if (rpmpsmNext(psm, PSM_SCRIPT))
-+                  rpmlog(RPMLOG_INFO, _("Ignoring failed %%postun scriptlet\n"));
-           }
+       if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) {
+-          rc = runInstScript(psm, RPMTAG_POSTUN);
+-          if (rc) break;
++          if (runInstScript(psm, RPMTAG_POSTUN))
++              rpmlog(RPMLOG_INFO, _("Ignoring failed %%postun scriptlet\n"));
+       }
  
-           if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) {
+       if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) {
diff --git a/rpm-preserve-iterator.patch b/rpm-preserve-iterator.patch
deleted file mode 100644 (file)
index 3764ec5..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- rpm-5.4.10/lib/rpmal.c~    2012-11-30 13:20:59.087249280 +0100
-+++ rpm-5.4.10/lib/rpmal.c     2012-11-30 21:20:20.856611761 +0100
-@@ -403,6 +403,7 @@
-     const char * KName;
-     availablePackage alp;
-     int rc;
-+    int savedIx;
-     if (keyp) *keyp = RPMAL_NOMATCH;
-@@ -450,10 +451,12 @@
-       if (alp->provides != NULL)      /* XXX can't happen */
-       switch (match->type) {
-       case IET_PROVIDES:
-+          savedIx = rpmdsIx(alp->provides);
-           /* XXX single step on rpmdsNext to regenerate DNEVR string */
-           (void) rpmdsSetIx(alp->provides, match->entryIx - 1);
-           if (rpmdsNext(alp->provides) >= 0)
-               rc = rpmdsCompare(alp->provides, ds);
-+          (void) rpmdsSetIx(alp->provides, savedIx);
-           if (rc)
-               rpmdsNotify(ds, _("(added provide)"), 0);
diff --git a/rpm-preserve-tag-type.patch b/rpm-preserve-tag-type.patch
deleted file mode 100644 (file)
index 9956219..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-commit 8241b884f83153dee9cdcddac7a476c6234cf156
-Author: Kacper Kornet <draenog@pld-linux.org>
-Date:   Sun May 5 21:56:02 2013 +0100
-
-    Don't overwrite type of validated tag
-    
-    It caused  headerGet(h, he, HEADERGET_NOI18NSTRING|HEADERGET_NOEXTENSION)
-    to return always he->t = RPMTAG_STRING even when RPM_I18NSTRING_TYPE (char **)
-    was returned in reality.
-
-diff --git a/rpmdb/tagname.c b/rpmdb/tagname.c
-index 540838b..174df60 100644
---- a/rpmdb/tagname.c
-+++ b/rpmdb/tagname.c
-@@ -491,26 +491,28 @@ tagStore_t tagStoreFree(tagStore_t dbiTags, size_t dbiNTags)
- void tagTypeValidate(HE_t he);
- void tagTypeValidate(HE_t he)
- {
-+    HE_s he_s = *he;
-+
-     /* XXX Re-map RPM_I18NSTRING_TYPE -> RPM_STRING_TYPE */
--    if (he->t == RPM_I18NSTRING_TYPE)
--      he->t = RPM_STRING_TYPE;
-+    if (he_s.t == RPM_I18NSTRING_TYPE)
-+      he_s.t = RPM_STRING_TYPE;
-     /* XXX Arbitrary tags are always strings. */
--    if ((he->tag & 0x40000000)
--     && (he->t == RPM_STRING_TYPE || he->t == RPM_STRING_ARRAY_TYPE))
-+    if ((he_s.tag & 0x40000000)
-+     && (he_s.t == RPM_STRING_TYPE || he_s.t == RPM_STRING_ARRAY_TYPE))
-       return;
-     /* XXX Make 0x3fffffff disappear for now. Signature? */
--    if (he->tag == 0x3fffffff && he->t == RPM_BIN_TYPE)
-+    if (he_s.tag == 0x3fffffff && he_s.t == RPM_BIN_TYPE)
-       return;
- /* XXX hack around known borkage for now. */
--if (!(he->tag == 62))
--if (!(he->tag == 261 || he->tag == 269))
--if (!(he->tag == 1000 || he->tag == 1004 || he->tag == 1007))
--if (!(he->tag == 1029))
--if (!(he->tag == 1086 || he->tag == 1087))
--if (he->t != (tagType(he->tag) & 0xffff))
--fprintf(stderr, "==> warning: tag %u type(0x%x) != implicit type(0x%x)\n", (unsigned) he->tag, he->t, tagType(he->tag));
-+if (!(he_s.tag == 62))
-+if (!(he_s.tag == 261 || he_s.tag == 269))
-+if (!(he_s.tag == 1000 || he_s.tag == 1004 || he_s.tag == 1007))
-+if (!(he_s.tag == 1029))
-+if (!(he_s.tag == 1086 || he_s.tag == 1087))
-+if (he_s.t != (tagType(he_s.tag) & 0xffff))
-+fprintf(stderr, "==> warning: tag %u type(0x%x) != implicit type(0x%x)\n", (unsigned) he_s.tag, he_s.t, tagType(he_s.tag));
- }
- #endif
diff --git a/rpm-python-enable-compat-RPMSENSE.patch b/rpm-python-enable-compat-RPMSENSE.patch
deleted file mode 100644 (file)
index e3b7701..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/python/rpmmodule.c~     2012-04-25 22:41:43.000000000 +0200
-+++ rpm-5.4.10/python/rpmmodule.c      2012-09-24 12:22:53.535610753 +0200
-@@ -493,7 +493,7 @@
-     REGISTER_ENUM(RPMSENSE_EQUAL);
-     REGISTER_ENUM(RPMSENSE_NOTEQUAL);
-     REGISTER_ENUM(RPMSENSE_FIND_REQUIRES);
--#if defined(RPM_VENDOR_MANDRIVA)
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD)
-     REGISTER_ENUM(RPMSENSE_PREREQ);
-     REGISTER_ENUM(RPMSENSE_SCRIPT_PRE);
-     REGISTER_ENUM(RPMSENSE_SCRIPT_POST);
diff --git a/rpm-python-sitescriptdir.patch b/rpm-python-sitescriptdir.patch
deleted file mode 100644 (file)
index a2ffddc..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
---- rpm-5.4.10/lib/rpmfc.c~    2012-12-01 21:13:39.985319735 +0100
-+++ rpm-5.4.10/lib/rpmfc.c     2013-01-24 12:21:26.379891972 +0100
-@@ -1142,7 +1142,7 @@
-     /* Generate package and per-file dependencies. */
-     for (fc->ix = 0; fc->fn[fc->ix] != NULL; fc->ix++) {
--      /* XXX Insure that /usr/lib{,64}/python files are marked RPMFC_PYTHON */
-+      /* XXX Insure that /usr/{share,lib{,64}}/python files are marked RPMFC_PYTHON */
-       /* XXX HACK: classification by path is intrinsically stupid. */
-       {   fn = strstr(fc->fn[fc->ix], "/usr/lib");
-           if (fn) {
-@@ -1166,6 +1166,13 @@
-                       fc->fcolor->vals[fc->ix] & RPMFC_LIBRARY)
-                   fc->fcolor->vals[fc->ix] |= (RPMFC_MODULE|RPMFC_SCRIPT);
-           }
-+          fn = strstr(fc->fn[fc->ix], "/usr/share");
-+          if (fn) {
-+              fn += sizeof("/usr/share")-1;
-+              if (!strncmp(fn, "/python", sizeof("/python")-1))
-+                  fc->fcolor->vals[fc->ix] |= RPMFC_PYTHON;
-+              }
-+          }
-       }
-        /* XXX ugly quick & dirty integration of haskell() dependencies */
diff --git a/rpm-python-spec-header.patch b/rpm-python-spec-header.patch
deleted file mode 100644 (file)
index d56b6b2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -ur rpm-5.4.15/python/spec-py.c rpm-5.4.15-pyspec/python/spec-py.c
---- rpm-5.4.15/python/spec-py.c        2016-05-11 21:38:24.970137574 +0200
-+++ rpm-5.4.15-pyspec/python/spec-py.c 2016-05-10 22:47:04.748529737 +0200
-@@ -8,6 +8,9 @@
- #include <rpmio.h>
- #define _MACRO_INTERNAL
- #include <rpmmacro.h>
-+#define       _RPMTAG_INTERNAL
-+#include "header_internal.h"  /* XXX HEADERFLAG_ALLOCATED */
-+#include "header-py.h"
- #include "spec-py.h"
- /** \ingroup python
-@@ -192,6 +195,34 @@
- }
-+static PyObject *
-+spec_get_headers(specObject *s)
-+    /*@*/
-+{
-+    PyObject *headerList;
-+    Spec spec;
-+    Package package;
-+    Header header;
-+
-+    headerList = PyList_New(0);
-+    if (!headerList) {
-+        return NULL;
-+    }
-+    spec = specFromSpec(s);
-+    if ( spec != NULL) {
-+        package = spec->packages;
-+
-+         while (package != NULL) {
-+            header = package->header;
-+          if (header != NULL)
-+                PyList_Append(headerList, (PyObject *) hdr_Wrap(header));
-+            package = package->next;
-+        } 
-+    }
-+
-+    return PyList_AsTuple(headerList);
-+}
-+
- /**
-  */
-  /*@unchecked@*/ /*@observer@*/
-@@ -208,6 +239,7 @@
-     {"clean",   (PyCFunction) spec_get_clean, METH_VARARGS,  NULL },
-     {"buildRoot",   (PyCFunction) spec_get_buildroot, METH_VARARGS,  NULL },
-     {"macros",   (PyCFunction) spec_get_macros, METH_VARARGS,  NULL },
-+    {"headers",   (PyCFunction) spec_get_headers, METH_VARARGS,  NULL },
-     {NULL}  /* Sentinel */
- };
- /*@=fullinitblock@*/
diff --git a/rpm-pythoneggs.patch b/rpm-pythoneggs.patch
deleted file mode 100644 (file)
index 06eef43..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
---- rpm-5.4.15.org/scripts/pythoneggs.py       2012-05-08 00:39:11.000000000 +0200
-+++ rpm-5.4.15/scripts/pythoneggs.py   2018-09-27 10:32:34.661059061 +0200
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/python2
- # -*- coding: utf-8 -*-
- #
- # Copyright 2010 Per Øyvind Karlsen <peroyvind@mandriva.org>
-@@ -16,7 +16,8 @@ from pkg_resources import Distribution,
- from distutils.sysconfig import get_python_lib
- from subprocess import Popen, PIPE, STDOUT
- import os
--
-+import platform
-+import re
- opts, args = getopt(argv[1:], 'hPRSCOEb:',
-         ['help', 'provides', 'requires', 'suggests', 'conflicts', 'obsoletes', 'extras','buildroot='])
-@@ -29,6 +30,13 @@ Obsoletes = False
- Extras = False
- buildroot = None
-+def make_pldver(raw):
-+    if re.match(r'^[0-9\.]+$', raw) == None:
-+      pldver = re.sub(r'([\d\.]+)(.+)', r'\1-0.\2', raw)
-+    else:
-+      pldver = raw
-+    return pldver
-+
- for o, a in opts:
-     if o in ('-h', '--help'):
-         print '-h, --help\tPrint help'
-@@ -125,11 +133,14 @@ for f in files:
-                 if not name in py_deps:
-                     py_deps[name] = []
-                 py_deps[name].append(('==', dist.py_version))
--            name = 'pythonegg(%s)' % dist.key
-+            if dist.py_version .split(".")[0] == '3':
-+                name = 'python3egg(%s)' % dist.key
-+            else:
-+                name = 'pythonegg(%s)' % dist.key
-             if not name in py_deps:
-                 py_deps[name] = []
-             if dist.version:
--                spec = ('==', dist.version)
-+                spec = ('==', make_pldver(dist.version))
-                 if not spec in py_deps[name]:
-                     py_deps[name].append(spec)
-         if Requires or (Suggests and dist.extras):
-@@ -145,6 +156,14 @@ for f in files:
-                 spec = ('==', dist.py_version)
-                 if not spec in py_deps[name]:
-                     py_deps[name].append(spec)
-+            # fake python version for dist.requires(), so deps like
-+            # [:python_version < '3']
-+            # enum34
-+            # will be handled correctly
-+            old_python_version = platform.python_version
-+            def new_python_version():
-+                return dist.py_version
-+            platform.python_version = new_python_version
-             deps = dist.requires()
-             if Suggests:
-                 depsextras = dist.requires(extras=dist.extras)
-@@ -153,15 +172,20 @@ for f in files:
-                         if dep in deps:
-                             depsextras.remove(dep)
-                 deps = depsextras
-+            platform.python_version = old_python_version
-             # add requires/suggests based on egg metadata
-             for dep in deps:
--                name = 'pythonegg(%s)' % dep.key
-+                if dist.py_version .split(".")[0] == '3':
-+                    name = 'python3egg(%s)' % dep.key
-+                else:
-+                    name = 'pythonegg(%s)' % dep.key
-                 for spec in dep.specs:
-                     if spec[0] != '!=':
-                         if not name in py_deps:
-                             py_deps[name] = []
--                        if not spec in py_deps[name]:
--                            py_deps[name].append(spec)
-+                        plddep = (spec[0], make_pldver(spec[1]))
-+                        if not plddep in py_deps[name]:
-+                            py_deps[name].append(plddep)
-                 if not dep.specs:
-                     py_deps[name] = []
-         # Unused, for automatic sub-package generation based on 'extras' from egg metadata
diff --git a/rpm-query-always-noisy.patch b/rpm-query-always-noisy.patch
deleted file mode 100644 (file)
index 4b82476..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
---- rpm-5.4.10/lib/query.c~    2012-05-08 02:06:44.000000000 +0200
-+++ rpm-5.4.10/lib/query.c     2012-09-21 13:42:12.013607913 +0200
-@@ -522,6 +522,10 @@
-     case RPMQV_WHATCONFLICTS:
-     case RPMQV_WHATOBSOLETES:
-       qva->qva_mi = rpmtsInitIterator(ts, (rpmTag) qva->qva_source, arg, 0);
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("key \"%s\" not found in %s table\n"),
-                       arg, tagName((rpmTag)qva->qva_source));
-@@ -593,6 +597,10 @@
-       tag = (qva->qva_source == RPMQV_PKGID
-               ? RPMTAG_SOURCEPKGID : RPMTAG_PKGID);
-       qva->qva_mi = rpmtsInitIterator(ts, (rpmTag) tag, MD5, MD5len);
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("no package matches %s: %s\n"),
-                       "pkgid", arg);
-@@ -610,6 +618,10 @@
-       }
-       qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_SHA1HEADER, arg, 0);
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("no package matches %s: %s\n"),
-                       "hdrid", arg);
-@@ -637,6 +649,10 @@
-             *t = (nibble(s[0]) << 4) | nibble(s[1]);
-       qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_FILEDIGESTS, digest, dlen);
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("no package matches %s: %s\n"),
-                       "fileid", arg);
-@@ -666,6 +682,10 @@
-           return 1;
-       }
-       qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_INSTALLTID, &iid, sizeof(iid));
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("no package matches %s: %s\n"),
-                       "tid", arg);
-@@ -677,6 +697,10 @@
-     case RPMQV_WHATNEEDS:
-     case RPMQV_WHATREQUIRES:
-       qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, arg, 0);
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE, _("no package requires %s\n"), arg);
-           res = 1;
-@@ -688,6 +712,10 @@
-       if (arg[0] != '/') {
-           provides_checked = 1;
-           qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, arg, 0);
-+#if defined(RPM_VENDOR_PLD)
-+          if(rpmmiCount(qva->qva_mi) == 0)
-+              qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-           if (qva->qva_mi == NULL) {
-               rpmlog(RPMLOG_NOTICE, _("no package provides %s\n"), arg);
-               res = 1;
-@@ -732,7 +732,7 @@
-       qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_FILEPATHS, fn, 0);
-       if (qva->qva_mi == NULL && !provides_checked && !gotpattern) {
-           qva->qva_mi = rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, fn, 0);
--#if defined(RPM_VENDOR_MANDRIVA)
-+#if defined(RPM_VENDOR_MANDRIVA) || defined(RPM_VENDOR_PLD)
-       if(rpmmiCount(qva->qva_mi) == 0)
-           qva->qva_mi = rpmmiFree(qva->qva_mi);
- #endif
-@@ -774,6 +802,10 @@
-       }
-       rpmlog(RPMLOG_DEBUG, D_("package record number: %u\n"), (unsigned)hdrNum);
-       qva->qva_mi = rpmtsInitIterator(ts, RPMDBI_PACKAGES, &hdrNum, sizeof(hdrNum));
-+#if defined(RPM_VENDOR_PLD)
-+      if(rpmmiCount(qva->qva_mi) == 0)
-+          qva->qva_mi = rpmmiFree(qva->qva_mi);
-+#endif
-       if (qva->qva_mi == NULL) {
-           rpmlog(RPMLOG_NOTICE,
-               _("record %u could not be read\n"), (unsigned)hdrNum);
diff --git a/rpm-remove-misleading-missing-patch-message.patch b/rpm-remove-misleading-missing-patch-message.patch
deleted file mode 100644 (file)
index a31ec78..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- rpm-5.4.10/rpmio/macro.c~  2012-09-17 14:07:24.201198493 +0200
-+++ rpm-5.4.10/rpmio/macro.c   2012-09-17 18:10:28.221354435 +0200
-@@ -3054,6 +3054,17 @@
- #endif
-     *compressed = COMPRESSED_NOT;
-+#if defined(RPM_VENDOR_PLD)
-+    /*
-+     * Workaround for misleading message:
-+     * error: File %PATCH666: No such file or directory
-+     * It happens when there is no "PatchXXX: " definition
-+     * and spec contains commented out %patchXXX macro
-+     * http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/5d3a3ea257d7f88e59d0ad93c20cc8448fb42f3d
-+     */
-+    if ((strlen(file) > 6) && (strncasecmp(file, "%PATCH", 6) == 0))
-+      return 0;
-+#endif
- #if defined(RPM_VENDOR_OPENPKG) || defined(RPM_VENDOR_FEDORA) || defined(RPM_VENDOR_MANDRIVA) /* extension-based-compression-detection */
-     file_len = strlen(file);
diff --git a/rpm-repackage-dont-force-max-compression.patch b/rpm-repackage-dont-force-max-compression.patch
deleted file mode 100644 (file)
index 7c2a25d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/lib/psm.c~      2013-03-17 13:34:31.534601434 +0100
-+++ rpm-5.4.10/lib/psm.c       2013-03-25 13:46:18.326658890 +0100
-@@ -3017,7 +3017,7 @@
-       psm->rpmio_flags = t = (char *) xmalloc(sizeof("w9.gzdio"));
-       *t = '\0';
--      t = stpcpy(t, ((psm->goal == PSM_PKGSAVE) ? "w9" : "r"));
-+      t = stpcpy(t, ((psm->goal == PSM_PKGSAVE) ? "w6" : "r"));
-       if (!strcmp(payload_compressor, "gzip"))
-           t = stpcpy(t, ".gzdio");
-       if (!strcmp(payload_compressor, "bzip2"))
diff --git a/rpm-revert-gpg-argv-parsing.patch b/rpm-revert-gpg-argv-parsing.patch
deleted file mode 100644 (file)
index a3d0d62..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -urN rpm-5.4.10/rpmdb/signature.c rpm-5.4.12/rpmdb/signature.c
---- rpm-5.4.10/rpmdb/signature.c       2012-04-17 01:43:35.000000000 +0200
-+++ rpm-5.4.12/rpmdb/signature.c       2013-06-28 18:42:13.000000000 +0200
-@@ -12,7 +12,6 @@
- #include <rpmmacro.h> /* XXX for rpmGetPath() */
- #include <rpmhkp.h>
- #include <rpmku.h>
--#include <argv.h>
- #include <rpmtag.h>
- #include "rpmdb.h"
-@@ -503,7 +504,7 @@
-     if (!(pid = fork())) {
-       const char * cmd;
--      ARGV_t av;
-+      char *const *av;
-       int fdno;
-       xx = close(STDIN_FILENO);
-@@ -528,16 +529,13 @@
-               (void) setenv("GNUPGHOME", gpg_path, 1);
-           cmd = rpmExpand("%{?__gpg_check_password_cmd}", NULL);
--          rc = argvSplit(&av, cmd, NULL);
-+          rc = poptParseArgvString(cmd, NULL, (const char ***)&av);
-           if (!rc)
--              rc = execve(av[0], (char *const *)av+1, environ);
-+              rc = execve(av[0], av+1, environ);
-           rpmlog(RPMLOG_ERR, _("Could not exec %s: %s\n"), "gpg",
-                       strerror(errno));
--          cmd = _free(cmd);
--          gpg_path = _free(gpg_path);
-       }
--      av = argvFree(av);
-     }
-     pw = rpmkuPassPhrase(passPhrase);
diff --git a/rpm-rpm2cpio.patch b/rpm-rpm2cpio.patch
deleted file mode 100644 (file)
index 2303561..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -ruNp rpm-5.4.15.orig/scripts/rpm2cpio rpm-5.4.15/scripts/rpm2cpio
---- rpm-5.4.15.orig/scripts/rpm2cpio   2009-03-19 02:01:24.000000000 +0100
-+++ rpm-5.4.15/scripts/rpm2cpio        2020-02-16 03:00:16.280014173 +0100
-@@ -25,13 +25,15 @@ o=`expr $o + $hdrsize`
- EXTRACTOR="dd if=$pkg ibs=$o skip=1"
- COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
--if echo $COMPRESSION |grep -q gzip; then
-+if echo $COMPRESSION |grep -qi gzip; then
-       DECOMPRESSOR=gunzip
--elif echo $COMPRESSION |grep -q bzip2; then
-+elif echo $COMPRESSION |grep -qi bzip2; then
-       DECOMPRESSOR=bunzip2
--elif echo $COMPRESSION |grep -q xz; then
-+elif echo $COMPRESSION |grep -qi xz; then
-       DECOMPRESSOR=unxz
--elif echo $COMPRESSION |grep -q cpio; then
-+elif echo $COMPRESSION |grep -qi zstandard; then
-+      DECOMPRESSOR=unzstd
-+elif echo $COMPRESSION |grep -qi cpio; then
-       DECOMPRESSOR=cat
- else
-       # Most versions of file don't support LZMA, therefore we assume
diff --git a/rpm-rpmspec.patch b/rpm-rpmspec.patch
deleted file mode 100644 (file)
index 6eb9d2d..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-diff -urN rpm-5.4.13/build/parseSpec.c rpm-5.4.13-rpmspec/build/parseSpec.c
---- rpm-5.4.13/build/parseSpec.c       2013-10-22 20:18:34.483039876 +0200
-+++ rpm-5.4.13-rpmspec/build/parseSpec.c       2013-10-22 18:52:02.550664732 +0200
-@@ -474,6 +474,11 @@
-       spec->line[0] = '\0';
-     }
-+    /* Collect parsed line */
-+    if (spec->parsed == NULL)
-+      spec->parsed = rpmiobNew(0);
-+    spec->parsed = rpmiobAppend(spec->parsed, spec->line, 1);
-+
-     /*@-compmempass@*/ /* FIX: spec->readStack->next should be dependent */
-     return 0;
-     /*@=compmempass@*/
-diff -urN rpm-5.4.13/build/rpmspec.h rpm-5.4.13-rpmspec/build/rpmspec.h
---- rpm-5.4.13/build/rpmspec.h 2013-10-22 20:18:34.449706143 +0200
-+++ rpm-5.4.13-rpmspec/build/rpmspec.h 2013-10-22 18:44:37.729692113 +0200
-@@ -193,6 +193,8 @@
- /*@only@*/
-     rpmiob clean;             /*!< %clean scriptlet. */
-+    rpmiob parsed;
-+
-     size_t nfoo;
- /*@only@*/ /*@relnull@*/
-     tagStore_t foo;
---- rpm-5.4.13/build/spec.c~   2013-07-27 02:16:06.000000000 +0200
-+++ rpm-5.4.13/build/spec.c    2013-10-23 13:01:36.596670702 +0200
-@@ -562,6 +562,7 @@
-     spec->install = rpmiobFree(spec->install);
-     spec->check = rpmiobFree(spec->check);
-     spec->clean = rpmiobFree(spec->clean);
-+    spec->parsed = rpmiobFree(spec->parsed);
-     spec->foo = tagStoreFree(spec->foo, spec->nfoo);
-     spec->nfoo = 0;
-diff -urN rpm-5.4.13/tools/Makefile.am rpm-5.4.13-rpmspec/tools/Makefile.am
---- rpm-5.4.13/tools/Makefile.am       2013-10-22 20:18:34.426372530 +0200
-+++ rpm-5.4.13-rpmspec/tools/Makefile.am       2013-10-22 20:02:30.365350944 +0200
-@@ -61,7 +61,7 @@
- pkgbin_PROGRAMS =     \
-       @WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
-       @WITH_SEMANAGE_SEMODULE@ wget \
--      rpmcache rpmdigest rpmrepo rpmspecdump \
-+      rpmcache rpmdigest rpmrepo rpmspecdump rpmspec \
-       rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
- if WITH_DB
- pkgbin_PROGRAMS +=    dbconvert
-@@ -195,6 +195,9 @@
- rpmspecdump_SOURCES = rpmspecdump.c
- rpmspecdump_LDADD =   $(RPMBUILD_LDADD_COMMON)
-+rpmspec_SOURCES =     rpmspec.c
-+rpmspec_LDADD =       $(RPMBUILD_LDADD_COMMON)
-+
- semodule_SOURCES =    semodule.c
- semodule_LDADD =      $(RPMIO_LDADD_COMMON)
-diff -urN rpm-5.4.13/tools/rpmspec.c rpm-5.4.13-rpmspec/tools/rpmspec.c
---- rpm-5.4.13/tools/rpmspec.c 1970-01-01 01:00:00.000000000 +0100
-+++ rpm-5.4.13-rpmspec/tools/rpmspec.c 2013-10-22 20:00:06.075242852 +0200
-@@ -0,0 +1,176 @@
-+#include "system.h"
-+const char *__progname;
-+
-+#define       _AUTOHELP
-+
-+#if defined(IAM_RPM) || defined(__LCLINT__)
-+#define       IAM_RPMBT
-+#define       IAM_RPMDB
-+#define       IAM_RPMEIU
-+#define       IAM_RPMQV
-+#define       IAM_RPMK
-+#endif
-+
-+#include <rpmio.h>
-+#include <rpmiotypes.h>
-+#include <poptIO.h>
-+
-+#include <rpmtypes.h>
-+#include <rpmtag.h>
-+#include "rpmdb.h"
-+
-+#include "rpmversion.h"
-+#include "rpmps.h"
-+#include "rpmts.h"
-+
-+#include <rpmbuild.h>
-+
-+#ifdef        IAM_RPMBT
-+#include "build.h"
-+#define GETOPT_REBUILD                1003
-+#define GETOPT_RECOMPILE      1004
-+#endif
-+
-+#include <rpmcli.h>
-+
-+#include "debug.h"
-+
-+enum modes {
-+    MODE_UNKNOWN      = 0,
-+    MODE_QUERY                = (1 <<  0),
-+    MODE_PARSE                = (1 <<  1),
-+};
-+
-+static int mode = MODE_UNKNOWN;
-+static rpmQVSources source = RPMQV_RPM;
-+static const char *target = NULL;
-+static char *queryformat = NULL;
-+
-+static struct poptOption specOptsTable[] = {
-+    { "parse", 'P', POPT_ARG_VAL, &mode, MODE_PARSE,
-+      N_("parse spec file(s) to stdout"), NULL },
-+    { "query", 'q', POPT_ARG_VAL, &mode, MODE_QUERY,
-+      N_("query spec file(s)"), NULL },
-+    { "rpms", 0, POPT_ARG_VAL, &source, RPMQV_RPM,
-+      N_("operate on binary rpms generated by spec (default)"), NULL },
-+    { "srpm", 0, POPT_ARG_VAL, &source, RPMQV_SPECSRPM,
-+      N_("operate on source rpm generated by spec"), NULL },
-+    { "target", 0, POPT_ARG_STRING, &target, 0,
-+      N_("override target platform"), NULL },
-+    { "queryformat", 0, POPT_ARG_STRING, &queryformat, 0,
-+      N_("use the following query format"), "QUERYFORMAT" },
-+    { "qf", 0, (POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN), &queryformat, 0,
-+      NULL, NULL },
-+    POPT_TABLEEND
-+};
-+
-+/* the structure describing the options we take and the defaults */
-+static struct poptOption optionsTable[] = {
-+    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, specOptsTable, 0,
-+      N_("Spec options:"), NULL },
-+
-+    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0,
-+      N_("Common options for all rpm modes and executables:"), NULL },
-+
-+   POPT_AUTOALIAS
-+   POPT_AUTOHELP
-+   POPT_TABLEEND
-+};
-+
-+/*@exits@*/ static void argerror(const char * desc)
-+      /*@globals __assert_program_name, fileSystem @*/
-+      /*@modifies fileSystem @*/
-+{
-+    fprintf(stderr, _("%s: %s\n"), __progname, desc);
-+    exit(EXIT_FAILURE);
-+}
-+
-+#ifdef        DYING /* XXX rpmIsVerbose alone stops usage spewage with every --eval */
-+static void printVersion(FILE * fp)
-+      /*@globals rpmEVR, fileSystem @*/
-+      /*@modifies *fp, fileSystem @*/
-+{
-+    fprintf(fp, "%s (" RPM_NAME ") %s\n", __progname, rpmEVR);
-+    if (rpmIsVerbose())
-+      fprintf(fp, "rpmlib 0x%08x,0x%08x,0x%08x\n",
-+          rpmlibVersion(), rpmlibTimestamp(), rpmlibVendor());
-+}
-+
-+static void printUsage(poptContext con, FILE * fp, int flags)
-+      /*@globals rpmEVR, fileSystem, internalState @*/
-+      /*@modifies *fp, fileSystem, internalState @*/
-+{
-+    printVersion(fp);
-+    fprintf(fp, "\n");
-+
-+    if (rpmIsVerbose())
-+      poptPrintHelp(con, fp, flags);
-+    else
-+      poptPrintUsage(con, fp, flags);
-+}
-+#endif
-+
-+int main(int argc, char *argv[])
-+{
-+    rpmts ts = NULL;
-+    QVA_t qva = &rpmQVKArgs;
-+
-+    poptContext optCon;
-+    int ec = 0;
-+
-+    optCon = rpmcliInit(argc, argv, optionsTable);
-+
-+    if (target) {
-+      rpmFreeMacros(NULL);
-+      rpmFreeRpmrc();
-+        rpmcliConfigured();
-+    }
-+
-+    ts = rpmtsCreate();
-+    switch (mode) {
-+
-+    case MODE_QUERY:
-+      if (!poptPeekArg(optCon))
-+          argerror(_("no arguments given for query"));
-+
-+      qva->qva_queryFormat = queryformat;
-+      qva->qva_source = source;
-+      qva->qva_specQuery = rpmspecQuery;
-+      ec = rpmcliQuery(ts, qva, (const char **) poptGetArgs(optCon));
-+      break;
-+
-+    case MODE_PARSE: {
-+      const char * spath;
-+      if (!poptPeekArg(optCon))
-+          argerror(_("no arguments given for parse"));
-+
-+      while ((spath = poptGetArg(optCon)) != NULL) {
-+          int ret = parseSpec(ts, spath, "/", 0, NULL, NULL, 1, 1, 0);
-+          if (ret != 0) {
-+              ec++;
-+              continue;
-+          }
-+          Spec spec = rpmtsSpec(ts);
-+          fprintf(stdout, "%s", rpmiobStr(spec->parsed));
-+      }
-+      break;
-+    }
-+
-+    case MODE_UNKNOWN:
-+#ifdef        DYING /* XXX rpmIsVerbose alone stops usage spewage with every --eval */
-+      if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) {
-+          printUsage(optCon, stderr, 0);
-+          ec = argc;
-+      }
-+#endif
-+      break;
-+    }
-+
-+    rpmtsFree(ts);
-+
-+    free(qva->qva_queryFormat);
-+
-+    rpmcliFini(optCon);
-+
-+    return ec;
-+}
diff --git a/rpm-rpmtdnext.patch b/rpm-rpmtdnext.patch
deleted file mode 100644 (file)
index 5b7d486..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- rpm-5.4.15/lib/rpm46compat.h.rpmtdnext     2015-02-02 21:41:55.016116655 +0100
-+++ rpm-5.4.15/lib/rpm46compat.h       2015-02-02 21:47:06.407763121 +0100
-@@ -223,6 +223,9 @@ static inline int headerGet_RPMorg(Heade
-       rflags &= ~HEADERGET_NOI18NSTRING;
-     rc = headerGet(h, (HE_t)he, rflags);
-+    
-+    /* XXX: Hack. headerGet() sets he->ix to 0 whereas rpmtdNext expects it to be -1 initially */
-+    he->ix = -1;
-     return rc;
- }
index 5a9f7871c0cc8e2ed94212d9e5e08052fecdc5a1..6be392ec7792856753674b5bbf1d6909a4e4d0dd 100644 (file)
@@ -1,19 +1,28 @@
---- rpm-4.1/lib/rpminstall.c.wiget     Mon Sep 16 21:06:08 2002
-+++ rpm-4.1/lib/rpminstall.c   Thu Sep 19 00:03:36 2002
-@@ -126,8 +126,15 @@
-               xx = Fclose(fd);
+--- rpm-4.16.0/lib/rpminstall.c.orig   2020-05-28 12:04:25.040136702 +0200
++++ rpm-4.16.0/lib/rpminstall.c        2020-10-03 09:46:49.369707250 +0200
+@@ -4,6 +4,8 @@
+ #include "system.h"
++#include <fcntl.h>
++
+ #include <rpm/rpmcli.h>
+ #include <rpm/rpmtag.h>
+ #include <rpm/rpmlib.h>               /* rpmReadPackageFile, vercmp etc */
+@@ -114,8 +116,15 @@
+               Fclose(fd);
                fd = NULL;
            }
 -      } else
 +      } else {
 +          long oldfl;
-           fd = fdLink(fd, "persist (showProgress)");
+           fd = fdLink(fd);
 +          oldfl=Fcntl(fd, F_GETFD, 0);
 +          if(oldfl >= 0) {
 +              oldfl |= FD_CLOEXEC; /* scripts shouldn't inherit rpm file descriptor */
 +              Fcntl(fd, F_SETFD, (void*)oldfl);
 +          }
 +      }
+       return (void *)fd;
+       break;
  
- #if defined(POSIX_FADV_WILLNEED)
-       (void) Fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
diff --git a/rpm-semanage.patch b/rpm-semanage.patch
deleted file mode 100644 (file)
index 06672d2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
---- rpm-5.4.15/rpmio/macro.c.orig      2017-02-20 18:33:02.615449768 +0100
-+++ rpm-5.4.15/rpmio/macro.c   2017-02-20 19:38:27.348738287 +0100
-@@ -102,7 +102,7 @@
- #include "debug.h"
- /*@unchecked@*/
--#if defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_GPSEE) || defined(WITH_NIX) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL)
-+#if defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_GPSEE) || defined(WITH_NIX) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL) || defined(WITH_SEMANAGE)
- static int _globalI = 0x80000000;
- #endif
-@@ -866,6 +866,8 @@
-     return se;
- }
-+void delMacroAll(MacroContext mc, const char * n);
-+
- /**
-  * Parse (and execute) macro undefinition.
-  * @param mc          macro context
-@@ -1643,7 +1645,7 @@
-  * @retval *avp               invocation args
-  * @return            script string
-  */
--#if defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_GPSEE) || defined(WITH_JNIEMBED) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_MRUBY_EMBED) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL)
-+#if defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_GPSEE) || defined(WITH_JNIEMBED) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_MRUBY_EMBED) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL) || defined(WITH_SEMANAGE)
- static char _FIXME_embedded_interpreter_eval_returned_null[] =
-     "FIXME: embedded interpreter eval returned null.";
- static char * parseEmbedded(const char * s, size_t nb, char *** avp)
diff --git a/rpm-silence-RPM_CHAR_TYPE.patch b/rpm-silence-RPM_CHAR_TYPE.patch
deleted file mode 100644 (file)
index f7213ce..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- rpm-5.4.10/rpmdb/tagname.c~        2012-04-25 22:34:49.000000000 +0200
-+++ rpm-5.4.10/rpmdb/tagname.c 2012-09-07 23:10:04.768327450 +0200
-@@ -508,6 +508,7 @@
- if (!(he->tag == 62))
- if (!(he->tag == 261 || he->tag == 269))
- if (!(he->tag == 1000 || he->tag == 1004 || he->tag == 1007))
-+if (!(he->tag == 1029))
- if (!(he->tag == 1086 || he->tag == 1087))
- if (he->t != (tagType(he->tag) & 0xffff))
- fprintf(stderr, "==> warning: tag %u type(0x%x) != implicit type(0x%x)\n", (unsigned) he->tag, he->t, tagType(he->tag));
diff --git a/rpm-sparc64.patch b/rpm-sparc64.patch
deleted file mode 100644 (file)
index f8e2a01..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
---- rpm-4.4.9/Makefile.am.orig 2007-06-18 17:10:56.000000000 +0200
-+++ rpm-4.4.9/Makefile.am      2007-06-18 17:12:16.000000000 +0200
-@@ -62,19 +62,19 @@
- #rpm_LDFLAGS =                $(myLDFLAGS)
- #rpm_LDADD =          rpm.o $(top_builddir)/build/.libs/librpmbuild.a $(myLDADD)
- rpm.o:        $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $<
- rpmb_SOURCES =                $(top_srcdir)/build.c
- rpmb_LDFLAGS =                $(myLDFLAGS) $(staticLDFLAGS)
- rpmb_LDADD =          rpmb.o $(top_builddir)/build/librpmbuild.la $(myLDADD)
- rpmb.o:       $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMBT -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMBT -o $@ -c $<
- rpmd_SOURCES =
- rpmd_LDFLAGS =                $(myLDFLAGS) $(staticLDFLAGS)
- rpmd_LDADD =          rpmd.o $(myLDADD)
- rpmd.o:       $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMDB -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMDB -o $@ -c $<
- rpmi_SOURCES =
- rpmi_LDFLAGS =                $(myLDFLAGS) # $(staticLDFLAGS)
-@@ -82,19 +82,19 @@
- #rpmi_LDFLAGS =               $(myLDFLAGS)
- #rpmi_LDADD =         rpmi.o $(myLDADD)
- rpmi.o:       $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMEIU -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMEIU -o $@ -c $<
- rpmk_SOURCES =
- rpmk_LDFLAGS =                $(myLDFLAGS) $(staticLDFLAGS)
- rpmk_LDADD =          rpmk.o $(myLDADD)
- rpmk.o:       $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMK -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMK -o $@ -c $<
- rpmq_SOURCES =
- rpmq_LDFLAGS =                $(myLDFLAGS) # $(staticLDFLAGS)
- rpmq_LDADD =          rpmq.o $(top_builddir)/build/librpmbuild.la $(myLDADD)
- rpmq.o:       $(top_srcdir)/rpmqv.c
--      $(COMPILE) -fpie -DIAM_RPMQV -o $@ -c $<
-+      $(COMPILE) -DIAM_RPMQV -o $@ -c $<
- $(PROGRAMS):          @WITH_APIDOCS_TARGET@
---- rpm-4.4.9/configure.ac.orig        2007-06-18 17:11:08.000000000 +0200
-+++ rpm-4.4.9/configure.ac     2007-06-18 17:11:37.000000000 +0200
-@@ -35,7 +35,7 @@
- AC_SUBST(AS)
- if test "$ac_cv_c_compiler_gnu" = yes; then
-     CFLAGS="$CFLAGS -fPIC -DPIC -D_GNU_SOURCE -D_REENTRANT -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
--    LDFLAGS="-pie"
-+    LDFLAGS=""
- fi
- export CFLAGS LDFLAGS
diff --git a/rpm-truncate-cvslog.patch b/rpm-truncate-cvslog.patch
deleted file mode 100644 (file)
index 5d9e977..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# vim:ts=8:sw=4
---- rpm-4.4.6/build/parseChangelog.c~  2006-04-30 17:34:40.334393487 +0300
-+++ rpm-4.4.6/build/parseChangelog.c   2006-05-02 19:46:06.357193264 +0300
-@@ -8,6 +8,9 @@
- #include "rpmbuild.h"
- #include "debug.h"
-+#define CVS_RCSID "$""Log: "
-+#define CVS_REVISION "Revision "
-+
- void addChangelogEntry(Header h, time_t time, const char *name, const char *text)
- {
-     int_32 mytime = time;     /* XXX convert to header representation */
-@@ -123,6 +123,7 @@
-     int nentries = 0;
-     static time_t last = 0;
-     static int oneshot = 0;
-+    int numchangelog = rpmExpandNumeric("%{?_buildchangelogtruncate}");
-     /* Determine changelog truncation criteria. */
-     if (!oneshot++) {
-@@ -222,6 +223,42 @@
-       /* backup to end of description */
-       while ((s > text) && xisspace(*s))
-           *s-- = '\0';
-+
-+      if (numchangelog && (s = strstr(text, CVS_RCSID))) {
-+          /* find end of line */
-+          while(*s && *s != '\n') s++;
-+          if (!*s) {
-+              goto out;
-+          }
-+          s++;
-+          if (!*s) {
-+              goto out;
-+          }
-+
-+          /* we reached place where first Revisions should be */
-+          i = 0;
-+          while (1) {
-+              if (strncmp(s, CVS_REVISION, sizeof(CVS_REVISION) - 1) == 0) {
-+                  if (i++ == numchangelog) {
-+                      break;
-+                  }
-+              }
-+              while(*s && *s != '\n') s++;
-+              if (!*s) {
-+                  break;
-+              }
-+              s++;
-+          }
-+
-+          if (*s) {
-+              s--;
-+              /* backup to the beginning of line */
-+              while ((s > text) && (*s == '\n' || xisspace(*s))) {
-+                  *s-- = '\0';
-+              }
-+          }
-+      }
-+out:
-       
-       /* Add entry if not truncated. */
-       nentries++;
diff --git a/rpm-unglobal.patch b/rpm-unglobal.patch
deleted file mode 100644 (file)
index 2e0d9dd..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
---- rpm-4.5/rpmio/macro.c.org  2009-08-08 15:42:25.574860247 +0200
-+++ rpm-4.5/rpmio/macro.c      2009-08-08 15:47:20.495455961 +0200
-@@ -807,6 +807,41 @@
-     return se;
- }
-+/**
-+ * Parse (and execute) macro undefinition.
-+ * @param mc          macro context
-+ * @param se          macro name to undefine
-+ * @return            address to continue parsing
-+ */
-+/*@dependent@*/ static const char *
-+doUnglobal(MacroContext mc, /*@returned@*/ const char * se)
-+      /*@globals rpmGlobalMacroContext @*/
-+      /*@modifies mc, rpmGlobalMacroContext @*/
-+{
-+    const char *s = se;
-+    char *buf = alloca(_macro_BUFSIZ);
-+    char *n = buf, *ne = n;
-+    int c;
-+
-+    COPYNAME(ne, s, c);
-+
-+    /* Move scan over body */
-+    while (iseol(*s))
-+      s++;
-+    se = s;
-+
-+    /* Names must start with alphabetic or _ and be at least 3 chars */
-+    if (!((c = *n) && (xisalpha(c) || c == '_') && (ne - n) > 2)) {
-+      rpmlog(RPMLOG_ERR,
-+              _("Macro %%%s has illegal name (%%unglobal)\n"), n);
-+      return se;
-+    }
-+
-+    delMacroAll(mc, n);
-+
-+    return se;
-+}
-+
- #ifdef        DYING
- static void
- dumpME(const char * msg, MacroEntry me)
-@@ -1430,6 +1465,10 @@
-               s = doUndefine(mb->mc, se);
-               continue;
-       }
-+      if (STREQ("unglobal", f, fn)) {
-+              s = doUnglobal(mb->mc, se);
-+              continue;
-+      }
-       if (STREQ("echo", f, fn) ||
-           STREQ("warn", f, fn) ||
-@@ -1984,6 +2023,18 @@
-     }
- }
-+void
-+delMacroAll(MacroContext mc, const char * n)
-+{
-+      MacroEntry * mep;
-+
-+      if (mc == NULL) mc = rpmGlobalMacroContext;
-+      /* If name exists, pop entry */
-+      while ((mep = findEntry(mc, n, 0)) != NULL) {
-+              delMacro(mc, n);
-+      }
-+}
-+
- /*@-mustmod@*/ /* LCL: mc is modified through mb->mc, mb is abstract */
- int
- rpmDefineMacro(MacroContext mc, const char * macro, int level)
diff --git a/rpm-verify-ghosts-broken-logic.patch b/rpm-verify-ghosts-broken-logic.patch
deleted file mode 100644 (file)
index a9284c8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- rpm-5.4.10/lib/verify.c.orig       2012-09-22 18:33:59.791810053 +0200
-+++ rpm-5.4.10/lib/verify.c    2012-09-22 18:33:34.921810920 +0200
-@@ -594,7 +594,7 @@
-           continue;
-       /* If not verifying %ghost, skip ghost files. */
--      if (!FF_ISSET(qva->qva_fflags, GHOST) && FF_ISSET(fflags, GHOST))
-+      if (FF_ISSET(qva->qva_fflags, GHOST) && FF_ISSET(fflags, GHOST))
-           continue;
-       /* Gather per-file data into a carrier. */
index 1f41589b49a984b410333c11ed436ac3b5a8f1cd..72f5df9303e56ee2bd9ca6908fce2c6e72bd9841 100644 (file)
@@ -7,31 +7,31 @@ Applications
        [id]:           Aplikasi
        [is]:           Forrit
        [it]:           Applicazioni
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
+       [ja]:           アプリケーション
        [nb]:           Applikasjoner
        [pl]:           Aplikacje
-       [pt]:           Aplicações
-       [pt_BR]:        Aplicações
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ
+       [pt]:           Aplicações
+       [pt_BR]:        Aplicações
+       [ru]:           Приложения
        [sl]:           Programi
-       [sv]:           Tillämpningar
+       [sv]:           Tillämpningar
        [uk]:           Прикладні Програми
 
 Applications/Archiving
-       [cs]:           Aplikace/Archivování
+       [cs]:           Aplikace/Archivování
        [da]:           Programmer/Arkivering
        [de]:           Applikationen/Archivierung
        [es]:           Aplicaciones/Archivar
        [fr]:           Applications/Archivage
-       [is]:           Forrit/Þjöppun
+       [is]:           Forrit/Þjöppun
        [it]:           Applicazioni/Archiviazione
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¢¡¼¥«¥¤¥Ö
+       [ja]:           アプリケーション/アーカイブ
        [nb]:           Applikasjoner/Arkivering
        [pl]:           Aplikacje/Archiwizacja
-       [pt]:           Aplicações/Arquivos
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/áÒÈÉ×ÁÃÉÑ
+       [pt]:           Aplicações/Arquivos
+       [ru]:           Приложения/Архивация
        [sl]:           Programi/Arhiviranje
-       [sv]:           Tillämpningar/Arkivering
+       [sv]:           Tillämpningar/Arkivering
        [uk]:           Прикладні Програми/Архівація
 
 Applications/Communications
@@ -42,13 +42,13 @@ Applications/Communications
        [fr]:           Applications/Transmissions
        [is]:           Forrit/Samskipti
        [it]:           Applicazioni/Comunicazioni
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/ÄÌ¿®
+       [ja]:           アプリケーション/通信
        [nb]:           Applikasjoner/Kommunikasjon
        [pl]:           Aplikacje/Komunikacja
-       [pt]:           Aplicações/Comunicações
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ëÏÍÍÕÎÉËÁÃÉÉ
+       [pt]:           Aplicações/Comunicações
+       [ru]:           Приложения/Коммуникации
        [sl]:           Programi/Komunikacije
-       [sv]:           Tillämpningar/Kommunikation
+       [sv]:           Tillämpningar/Kommunikation
        [uk]:           Прикладні Програми/Комунікації
 
 Applications/Console
@@ -57,17 +57,17 @@ Applications/Console
        [de]:           Applikationen/Konsole
        [es]:           Aplicaciones/Consola
        [fr]:           Applications/Console
-       [is]:           Forrit/Stjórnskjá
+       [is]:           Forrit/Stjórnskjá
        [it]:           Applicazioni/Console
        [nb]:           Applikasjoner/Konsollet
        [pl]:           Aplikacje/Konsola
-       [pt]:           Aplicações/Console
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ëÏÎÓÏÌØ
-       [sv]:           Tillämpningar/Konsolen
+       [pt]:           Aplicações/Console
+       [ru]:           Приложения/Консоль
+       [sv]:           Tillämpningar/Konsolen
        [uk]:           Прикладні Програми/Консоль
 
 Applications/Databases
-       [cs]:           Aplikace/Databáze
+       [cs]:           Aplikace/Databáze
        [da]:           Programmer/Databaser
        [de]:           Applikationen/Datenbanken
        [es]:           Aplicaciones/Bases de Datos
@@ -75,45 +75,45 @@ Applications/Databases
        [id]:           Aplikasi/Database
        [is]:           Forrit/Gagnagrunnar
        [it]:           Applicazioni/Database
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ç¡¼¥¿¥Ù¡¼¥¹
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹
        [nb]:           Applikasjoner/Databaser
        [pl]:           Aplikacje/Bazy Danych
-       [pt]:           Aplicações/Bases de Dados
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/âÁÚÙ ÄÁÎÎÙÈ
+       [pt]:           Aplicações/Bases de Dados
+       [ru]:           Приложения/Базы данных
        [sl]:           Programi/Zbirke podatkov
-       [sv]:           Tillämpningar/Databaser
+       [sv]:           Tillämpningar/Databaser
        [uk]:           Прикладні Програми/Бази даних
 
 Applications/Databases/Interfaces
-       [cs]:           Aplikace/Databáze/Rozhraní
-       [da]:           Programmer/Databaser/Grænsefladen
+       [cs]:           Aplikace/Databáze/Rozhraní
+       [da]:           Programmer/Databaser/Grænsefladen
        [de]:           Applikationen/Datenbanken/Schnittstellen
        [es]:           Aplicaciones/Bases de Datos/Interfaces
        [fr]:           Applications/Bases de données/Interfaces
-       [is]:           Forrit/Gagnagrunnar/Viðmót
+       [is]:           Forrit/Gagnagrunnar/Viðmót
        [it]:           Applicazioni/Database/Interfacce
        [nb]:           Applikasjoner/Databaser/Grensesnitt
        [pl]:           Aplikacje/Bazy Danych/Interfejsy
-       [pt]:           Aplicações/Bases de Dados/Interfaces
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/âÁÚÙ ÄÁÎÎÙÈ/éÎÔÅÒÆÅÊÓÙ
+       [pt]:           Aplicações/Bases de Dados/Interfaces
+       [ru]:           Приложения/Базы данных/Интерфейсы
        [sl]:           Programi/Zbirke podatkov/Vmesniki
-       [sv]:           Tillämpningar/Databaser/Gränssnitten
+       [sv]:           Tillämpningar/Databaser/Gränssnitten
        [uk]:           Прикладні Програми/Бази даних/Інтерфейсі
 
 Applications/Dictionaries
-       [cs]:           Aplikace/Slovníky
-       [da]:           Programmer/Ordbøger
+       [cs]:           Aplikace/Slovníky
+       [da]:           Programmer/Ordbøger
        [de]:           Applikationen/Wörterbücher
        [es]:           Aplicaciones/Diccionarios
        [fr]:           Applications/Dictionaires
-       [is]:           Forrit/Orðabókum
+       [is]:           Forrit/Orðabókum
        [it]:           Applicazioni/Dizionari
-       [nb]:           Applikasjoner/Ordbøker
-       [pl]:           Aplikacje/S³owniki
-       [pt]:           Aplicações/Dicionários
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/óÌÏ×ÁÒÉ
+       [nb]:           Applikasjoner/Ordbøker
+       [pl]:           Aplikacje/Słowniki
+       [pt]:           Aplicações/Dicionários
+       [ru]:           Приложения/Словари
        [sl]:           Programi/Slovarji
-       [sv]:           Tillämpningar/Ordlistor
+       [sv]:           Tillämpningar/Ordlistor
        [uk]:           Прикладні Програми/Словники
 
 Applications/Editors
@@ -124,13 +124,13 @@ Applications/Editors
        [fr]:           Applications/Editeurs
        [is]:           Forrit/Ritlar
        [it]:           Applicazioni/Editor
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\87ã\82£ã\82¿
        [nb]:           Applikasjoner/Editorer
        [pl]:           Aplikacje/Edytory
-       [pt]:           Aplicações/Editores
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ
+       [pt]:           Aplicações/Editores
+       [ru]:           Приложения/Редакторы
        [sl]:           Programi/Urejevalniki
-       [sv]:           Tillämpningar/Editorer
+       [sv]:           Tillämpningar/Editorer
        [uk]:           Прикладні Програми/Редактори
 
 Applications/Editors/Emacs
@@ -141,13 +141,13 @@ Applications/Editors/Emacs
        [fr]:           Applications/Editeurs/Emacs
        [is]:           Forrit/Ritlar/Emacs
        [it]:           Applicazioni/Editor/Emacs
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/Emacs
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\87ã\82£ã\82¿/Emacs
        [nb]:           Applikasjoner/Editorer/Emacs
        [pl]:           Aplikacje/Edytory/Emacs
-       [pt]:           Aplicações/Editores/Emacs
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/Emacs
+       [pt]:           Aplicações/Editores/Emacs
+       [ru]:           Приложения/Редакторы/Emacs
        [sl]:           Programi/Urejevalniki/Emacs
-       [sv]:           Tillämpningar/Editorer/Emacs
+       [sv]:           Tillämpningar/Editorer/Emacs
        [uk]:           Прикладні Програми/Редактори/Emacs
 
 Applications/Editors/Vim
@@ -158,13 +158,13 @@ Applications/Editors/Vim
        [fr]:           Applications/Editeurs/Vim
        [is]:           Forrit/Ritlar/Vim
        [it]:           Applicazioni/Editor/Vim
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/Vim
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\87ã\82£ã\82¿/Vim
        [nb]:           Applikasjoner/Editorer/Vim
        [pl]:           Aplikacje/Edytory/Vim
-       [pt]:           Aplicações/Editores/Vim
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/Vim
+       [pt]:           Aplicações/Editores/Vim
+       [ru]:           Приложения/Редакторы/Vim
        [sl]:           Programi/Urejevalniki/Vim
-       [sv]:           Tillämpningar/Editorer/Vim
+       [sv]:           Tillämpningar/Editorer/Vim
        [uk]:           Прикладні Програми/Редактори/Vim
 
 Applications/Editors/XEmacs
@@ -175,13 +175,13 @@ Applications/Editors/XEmacs
        [fr]:           Applications/Editeurs/XEmacs
        [is]:           Forrit/Ritlar/XEmacs
        [it]:           Applicazioni/Editor/XEmacs
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/XEmacs
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\87ã\82£ã\82¿/XEmacs
        [nb]:           Applikasjoner/Editorer/XEmacs
        [pl]:           Aplikacje/Edytory/XEmacs
-       [pt]:           Aplicações/Editores/XEmacs
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/XEmacs
+       [pt]:           Aplicações/Editores/XEmacs
+       [ru]:           Приложения/Редакторы/XEmacs
        [sl]:           Programi/Urejevalniki/XEmacs
-       [sv]:           Tillämpningar/Editorer/XEmacs
+       [sv]:           Tillämpningar/Editorer/XEmacs
        [uk]:           Прикладні Програми/Редактори/XEmacs
 
 Applications/Emulators
@@ -191,65 +191,65 @@ Applications/Emulators
        [fr]:           Applications/Émulateurs
        [is]:           Forrit/Hermar
        [it]:           Applicazioni/Emulatori
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥ß¥å¥ì¡¼¥¿
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\9fã\83¥ã\83¬ã\83¼ã\82¿
        [nb]:           Applikasjoner/Emulatorer
        [pl]:           Aplikacje/Emulatory
-       [pt]:           Aplicações/Emuladores
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/üÍÕÌÑÔÏÒÙ
+       [pt]:           Aplicações/Emuladores
+       [ru]:           Приложения/Эмуляторы
        [sl]:           Programi/Emulatorji
-       [sv]:           Tillämpningar/Emulatorer
+       [sv]:           Tillämpningar/Emulatorer
        [uk]:           Прикладні Програми/Емулятори
 
 Applications/Engineering
-       [cs]:           Aplikace/In¾enýrské
-       [da]:           Programmer/Ingeniørarbejde
+       [cs]:           Aplikace/Inženýrské
+       [da]:           Programmer/Ingeniørarbejde
        [de]:           Applikationen/Technik
-       [es]:           Aplicaciones/Ingeniería
+       [es]:           Aplicaciones/Ingeniería
        [fr]:           Applications/Ingénierie
-       [is]:           Forrit/Verkfræði
+       [is]:           Forrit/Verkfræði
        [it]:           Applicazioni/Engineering
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥ó¥¸¥Ë¥¢¥ê¥ó¥°
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83³ã\82¸ã\83\8bã\82¢ã\83ªã\83³ã\82°
        [nb]:           Applikasjoner/Teknisk
-       [pl]:           Aplikacje/In¿ynierskie
-       [pt]:           Aplicações/Engenharia
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÎÖÅÎÅÒÎÙÅ ÐÒÉÌÏÖÅÎÉÑ
-       [sl]:           Programi/In¾enirstvo
-       [sv]:           Tillämpningar/Konstruktion
+       [pl]:           Aplikacje/Inżynierskie
+       [pt]:           Aplicações/Engenharia
+       [ru]:           Приложения/Инженерные приложения
+       [sl]:           Programi/Inženirstvo
+       [sv]:           Tillämpningar/Konstruktion
 
 Applications/File
-       [cs]:           Aplikace/Práce se soubory
+       [cs]:           Aplikace/Práce se soubory
        [da]:           Programmer/Filer
        [de]:           Applikationen/Datei
        [es]:           Aplicaciones/Archivos
        [fr]:           Applications/Fichiers
-       [is]:           Forrit/Skráatól
+       [is]:           Forrit/Skráatól
        [it]:           Applicazioni/File
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Õ¥¡¥¤¥ë
+       [ja]:           アプリケーション/ファイル
        [nb]:           Applikasjoner/Fil
        [pl]:           Aplikacje/Pliki
-       [pt]:           Aplicações/Ficheiros
-       [pt_BR]:        Aplicações/Arquivos
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/æÁÊÌÏ×ÙÅ ÕÔÉÌÉÔÙ
+       [pt]:           Aplicações/Ficheiros
+       [pt_BR]:        Aplicações/Arquivos
+       [ru]:           Приложения/Файловые утилиты
        [sl]:           Programi/Datoteke
-       [sv]:           Tillämpningar/Fil
+       [sv]:           Tillämpningar/Fil
        [uk]:           Прикладні Програми/Файлові утиліти
 
 Applications/Graphics
        [cs]:           Aplikace/Grafika
        [da]:           Programmer/Grafik
        [de]:           Applikationen/Graphiken
-       [es]:           Aplicaciones/Gráficos
+       [es]:           Aplicaciones/Gráficos
        [fr]:           Applications/Graphiques
        [id]:           Aplikasi/Grafik
        [is]:           Forrit/Myndvinnsla
        [it]:           Applicazioni/Immagini
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥°¥é¥Õ¥£¥Ã¥¯¥¹
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82°ã\83©ã\83\95ã\82£ã\83\83ã\82¯ã\82¹
        [nb]:           Applikasjoner/Grafikk
        [pl]:           Aplikacje/Grafika
-       [pt]:           Aplicações/Gráficos
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/çÒÁÆÉËÁ
+       [pt]:           Aplicações/Gráficos
+       [ru]:           Приложения/Графика
        [sl]:           Programi/Grafika
-       [sv]:           Tillämpningar/Grafik
+       [sv]:           Tillämpningar/Grafik
        [uk]:           Прикладні Програми/Графіка
 
 Applications/Games
@@ -260,69 +260,69 @@ Applications/Games
        [fr]:           Applications/Jeux
        [is]:           Forrit/Leikir
        [it]:           Applicazioni/Giochi
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥²¡¼¥à
+       [ja]:           アプリケーション/ゲーム
        [nb]:           Applikasjoner/Spill
        [pl]:           Aplikacje/Gry
-       [pt]:           Aplicações/Jogos
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ
+       [pt]:           Aplicações/Jogos
+       [ru]:           Приложения/Игры
        [sl]:           Programi/Igre
-       [sv]:           Tillämpningar/Spel
+       [sv]:           Tillämpningar/Spel
        [uk]:           Прикладні Програми/Ігри
 
 Applications/Games/Boards
        [pl]:           Aplikacje/Gry/Planszowe
 
 Applications/Mail
-       [cs]:           Aplikace/Po¹ta
+       [cs]:           Aplikace/Pošta
        [da]:           Programmer/Post
        [de]:           Applikationen/Post
-       [es]:           Aplicaciones/Correo Electrónico
+       [es]:           Aplicaciones/Correo Electrónico
        [fr]:           Applications/Courrier
-       [is]:           Forrit/Póst
+       [is]:           Forrit/Póst
        [it]:           Applicazioni/Posta
        [nb]:           Applikasjoner/Epost
        [pl]:           Aplikacje/Poczta
-       [pt]:           Aplicações/Correio Eletrônico
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/üÌÅËÔÒÏÎÎÁÑ ÐÏÞÔÁ
-       [sl]:           Programi/Po¹tna
-       [sv]:           Tillämpningar/Post
+       [pt]:           Aplicações/Correio Eletrônico
+       [ru]:           Приложения/Электронная почта
+       [sl]:           Programi/Poštna
+       [sv]:           Tillämpningar/Post
        [uk]:           Прикладні Програми/Пошта
 
 Applications/Math
-       [cs]:           Aplikace/Matematické
+       [cs]:           Aplikace/Matematické
        [da]:           Programmer/Matematik
        [de]:           Applikationen/Mathematik
-       [es]:           Aplicaciones/Matemáticas
+       [es]:           Aplicaciones/Matemáticas
        [fr]:           Applications/Mathématiques
        [it]:           Applicazioni/Matematiche
        [nb]:           Applikasjoner/Matematiske
        [pl]:           Aplikacje/Matematyczne
-       [pt]:           Aplicações/Matemática
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/íÁÔÅÍÁÔÉÞÅÓËÉÅ
-       [sl]:           Programi/Matematièni
-       [sv]:           Tillämpningar/Matemataisk
+       [pt]:           Aplicações/Matemática
+       [ru]:           Приложения/Математические
+       [sl]:           Programi/Matematični
+       [sv]:           Tillämpningar/Matemataisk
        [uk]:           Прикладні Програми/Математика
 
 Applications/Multimedia
-       [cs]:           Aplikace/Multimédia
+       [cs]:           Aplikace/Multimédia
        [da]:           Programmer/Multimedie
        [de]:           Applikationen/Multimedien
        [es]:           Aplicaciones/Multimedia
        [fr]:           Applications/Multimédia
-       [is]:           Forrit/Margmiðlun
+       [is]:           Forrit/Margmiðlun
        [it]:           Applicazioni/Multimedia
-       [ja]:           ¥ê¥±¡¼¥·¥ç¥ó/¥Þ¥ë¥Á¥á¥Ç¥£¥¢
+       [ja]:           ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\9eã\83«ã\83\81ã\83¡ã\83\87ã\82£ã\82¢
        [nb]:           Programmer/Multimedia
        [pl]:           Aplikacje/Multimedia
-       [pt]:           Aplicações/Multimédia
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/íÕÌØÔÉÍÅÄÉÁ
-       [sl]:           Programi/Veèpredstavnost
-       [sv]:           Tillämpningar/Multimedia
+       [pt]:           Aplicações/Multimédia
+       [ru]:           Приложения/Мультимедиа
+       [sl]:           Programi/Večpredstavnost
+       [sv]:           Tillämpningar/Multimedia
        [uk]:           Прикладні Програми/Мультимедіа
 
 Applications/Networking
-       [cs]:           Aplikace/Sí»ové
-       [da]:           Programmer/Netværks
+       [cs]:           Aplikace/Síťové
+       [da]:           Programmer/Netværks
        [de]:           Applikationen/Netzwerkwesen
        [es]:           Aplicaciones/Red
        [fr]:           Applications/Réseau
@@ -330,11 +330,11 @@ Applications/Networking
        [it]:           Applicazioni/Rete
        [nb]:           Applikasjoner/Nettverk
        [pl]:           Aplikacje/Sieciowe
-       [pt]:           Aplicações/Rede
-       [pt_BR]:        Aplicações/Rede
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/óÅÔØ
-       [sl]:           Programi/Omre¾ni
-       [sv]:           Tillämpningar/Nätverk
+       [pt]:           Aplicações/Rede
+       [pt_BR]:        Aplicações/Rede
+       [ru]:           Приложения/Сеть
+       [sl]:           Programi/Omrežni
+       [sv]:           Tillämpningar/Nätverk
        [uk]:           Прикладні Програми/Мережа
 
 Applications/News
@@ -343,133 +343,133 @@ Applications/News
        [de]:           Applikationen/News
        [es]:           Aplicaciones/Noticias
        [fr]:           Applications/Nouvelles
-       [is]:           Forrit/Fréttir
+       [is]:           Forrit/Fréttir
        [it]:           Applicazioni/News
        [nb]:           Applikasjoner/News
        [pl]:           Aplikacje/News
-       [pt]:           Aplicações/News
-       [pt_BR]:        Aplicações/News
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/îÏ×ÏÓÔÉ
-       [sl]:           Programi/Novièarske
-       [sv]:           Tillämpningar/Nyheter
+       [pt]:           Aplicações/News
+       [pt_BR]:        Aplicações/News
+       [ru]:           Приложения/Новости
+       [sl]:           Programi/Novičarske
+       [sv]:           Tillämpningar/Nyheter
        [uk]:           Прикладні Програми/Новини
 
 Applications/Printing
        [cs]:           Aplikace/Tisk
        [da]:           Programmer/Udskrift
        [de]:           Applikationen/Drucken
-       [es]:           Aplicaciones/Impresión
+       [es]:           Aplicaciones/Impresión
        [fr]:           Applications/Impression
-       [is]:           Forrit/Þróað
+       [is]:           Forrit/Þróað
        [it]:           Applicazioni/Stampa
        [nb]:           Applikasjoner/Utskrift
        [pl]:           Aplikacje/Drukowanie
-       [pt]:           Aplicações/Impressão
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ðÅÞÁÔØ
+       [pt]:           Aplicações/Impressão
+       [ru]:           Приложения/Печать
        [sl]:           Programi/Tiskanje
-       [sv]:           Tillämpningar/Utskrift
+       [sv]:           Tillämpningar/Utskrift
        [uk]:           Прикладні Програми/Друк
 
 Applications/Publishing
-       [cs]:           Aplikace/Publikování
+       [cs]:           Aplikace/Publikování
        [da]:           Programmer/Udgivelse
        [de]:           Applikationen/Publizieren
-       [es]:           Aplicaciones/Edición
+       [es]:           Aplicaciones/Edición
        [fr]:           Applications/Edition
        [is]:           Forrit/Umbrot
        [it]:           Applicazioni/Publishing
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°
        [nb]:           Applikasjoner/Publisering
        [pl]:           Aplikacje/Publikowanie
-       [pt]:           Aplicações/Publicação
-       [pt_BR]:        Aplicações/Editoração
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ôÉÐÏÇÒÁÆÉÑ
-       [sl]:           Programi/Zalo¾ni¹tvo
-       [sv]:           Tillämpningar/Publicering
+       [pt]:           Aplicações/Publicação
+       [pt_BR]:        Aplicações/Editoração
+       [ru]:           Приложения/Типография
+       [sl]:           Programi/Založništvo
+       [sv]:           Tillämpningar/Publicering
        [uk]:           Прикладні Програми/Типографія
 
 Applications/Publishing/SGML
-       [cs]:           Aplikace/Publikování/SGML
+       [cs]:           Aplikace/Publikování/SGML
        [da]:           Programmer/Udgivelse/SGML
        [de]:           Applikationen/Publizieren/SGML
-       [es]:           Aplicaciones/Edición/SGML
+       [es]:           Aplicaciones/Edición/SGML
        [fr]:           Applications/Edition/SGML
        [is]:           Forrit/Umbrot/SGML
        [it]:           Applicazioni/Publishing/SGML
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/SGML
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°/SGML
        [nb]:           Applikasjoner/Publisering/SGML
        [pl]:           Aplikacje/Publikowanie/SGML
-       [pt]:           Aplicações/Publicação/SGML
-       [pt_BR]:        Aplicações/Editoração/SGML
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/SGML
-       [sl]:           Programi/Zalo¾ni¹tvo/SGML
-       [sv]:           Tillämpningar/Publicering/SGML
+       [pt]:           Aplicações/Publicação/SGML
+       [pt_BR]:        Aplicações/Editoração/SGML
+       [ru]:           Приложения/Издательство/SGML
+       [sl]:           Programi/Založništvo/SGML
+       [sv]:           Tillämpningar/Publicering/SGML
        [uk]:           Прикладні Програми/Типографія/SGML
 
 Applications/Publishing/TeX
-       [cs]:           Aplikace/Publikování/TeX
+       [cs]:           Aplikace/Publikování/TeX
        [da]:           Programmer/Udgivelse/TeX
        [de]:           Applikationen/Publizieren/TeX
-       [es]:           Aplicaciones/Edición/TeX
+       [es]:           Aplicaciones/Edición/TeX
        [fr]:           Applications/Edition/TeX
        [is]:           Forrit/Umbrot/TeX
        [it]:           Applicazioni/Publishing/TeX
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/TeX
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°/TeX
        [nb]:           Applikasjoner/Publisering/TeX
        [pl]:           Aplikacje/Publikowanie/TeX
-       [pt]:           Aplicações/Publicação/TeX
-       [pt_BR]:        Aplicações/Editoração/TeX
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/TeX
-       [sl]:           Programi/Zalo¾ni¹tvo/TeX
-       [sv]:           Tillämpningar/Publicering/TeX
+       [pt]:           Aplicações/Publicação/TeX
+       [pt_BR]:        Aplicações/Editoração/TeX
+       [ru]:           Приложения/Издательство/TeX
+       [sl]:           Programi/Založništvo/TeX
+       [sv]:           Tillämpningar/Publicering/TeX
        [uk]:           Прикладні Програми/Типографія/TeX
 
 Applications/Publishing/XML
-       [cs]:           Aplikace/Publikování/XML
+       [cs]:           Aplikace/Publikování/XML
        [da]:           Programmer/Udgivelse/XML
        [de]:           Applikationen/Publizieren/XML
-       [es]:           Aplicaciones/Edición/XML
+       [es]:           Aplicaciones/Edición/XML
        [fr]:           Applications/Edition/XML
        [is]:           Forrit/Umbrot/XML
        [it]:           Applicazioni/Publishing/XML
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/XML
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°/XML
        [nb]:           Applikasjoner/Publisering/XML
        [pl]:           Aplikacje/Publikowanie/XML
-       [pt]:           Aplicações/Publicação/XML
-       [pt_BR]:        Aplicações/Editoração/XML
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/XML
-       [sl]:           Programi/Zalo¾ni¹tvo/XML
-       [sv]:           Tillämpningar/Publicering/XML
+       [pt]:           Aplicações/Publicação/XML
+       [pt_BR]:        Aplicações/Editoração/XML
+       [ru]:           Приложения/Издательство/XML
+       [sl]:           Programi/Založništvo/XML
+       [sv]:           Tillämpningar/Publicering/XML
        [uk]:           Прикладні Програми/Типографія/XML
 
 Applications/Publishing/XML/Java
-       [cs]:           Aplikace/Publikování/XML/Java
+       [cs]:           Aplikace/Publikování/XML/Java
        [da]:           Programmer/Udgivelse/XML/Java
        [de]:           Applikationen/Publizieren/XML/Java
-       [es]:           Aplicaciones/Edición/XML/Java
+       [es]:           Aplicaciones/Edición/XML/Java
        [fr]:           Applications/Edition/XML/Java
        [is]:           Forrit/Umbrot/XML/Java
        [it]:           Applicazioni/Publishing/XML/Java
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/XML/Java
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°/XML/Java
        [nb]:           Applikasjoner/Publisering/XML/Java
        [pl]:           Aplikacje/Publikowanie/XML/Java
-       [pt]:           Aplicações/Publicação/XML/Java
-       [pt_BR]:        Aplicações/Editoração/XML/Java
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/XML/Java
-       [sl]:           Programi/Zalo¾ni¹tvo/XML/Java
-       [sv]:           Tillämpningar/Publicering/XML/Java
+       [pt]:           Aplicações/Publicação/XML/Java
+       [pt_BR]:        Aplicações/Editoração/XML/Java
+       [ru]:           Приложения/Издательство/XML/Java
+       [sl]:           Programi/Založništvo/XML/Java
+       [sv]:           Tillämpningar/Publicering/XML/Java
        [uk]:           Прикладні Програми/Типографія/XML/Java
 
 Applications/Science
-       [cs]:           Aplikace/Vìdecké
+       [cs]:           Aplikace/Vědecké
        [de]:           Applikationen/Wissenschaft
        [es]:           Aplicaciones/Ciencia
        [fr]:           Applications/Science
        [it]:           Applicazioni/Sciencia
        [pl]:           Aplikacje/Nauka
-       [pt]:           Aplicações/Ciência
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/îÁÕËÁ
-       [sv]:           Tillämpningar/Vetenskaplig
+       [pt]:           Aplicações/Ciência
+       [ru]:           Приложения/Наука
+       [sv]:           Tillämpningar/Vetenskaplig
        [uk]:           Прикладні Програми/Наука
 
 Applications/Shells
@@ -480,14 +480,14 @@ Applications/Shells
        [fr]:           Applications/Shells
        [is]:           Forrit/Skeljar
        [it]:           Applicazioni/Shell
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥·¥§¥ë
+       [ja]:           アプリケーション/シェル
        [nb]:           Applikasjoner/Skall
-       [pl]:           Aplikacje/Pow³oki
-       [pt]:           Aplicações/Shells
-       [pt_BR]:        Aplicações/Shells
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ëÏÍÁÎÄÎÙÅ ÐÒÏÃÅÓÓÏÒÙ
+       [pl]:           Aplikacje/Powłoki
+       [pt]:           Aplicações/Shells
+       [pt_BR]:        Aplicações/Shells
+       [ru]:           Приложения/Командные процессоры
        [sl]:           Programi/Ukazne lupine
-       [sv]:           Tillämpningar/Skal
+       [sv]:           Tillämpningar/Skal
        [uk]:           Прикладні Програми/Командні процесори
 
 Applications/Sound
@@ -496,53 +496,53 @@ Applications/Sound
        [de]:           Applikationen/Laut
        [es]:           Aplicaciones/Sonido
        [fr]:           Aplications/Son
-       [is]:           Forrit/Hljóð
+       [is]:           Forrit/Hljóð
        [it]:           Applicazioni/Audio
        [nb]:           Applikasjoner/Lyd
-       [pl]:           Aplikacje/D¼wiêk
-       [pt]:           Aplicações/Som
-       [pt_BR]:        Aplicações/Som
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ú×ÕË
+       [pl]:           Aplikacje/Dźwięk
+       [pt]:           Aplicações/Som
+       [pt_BR]:        Aplicações/Som
+       [ru]:           Приложения/Звук
        [sl]:           Programi/Zvok
-       [sv]:           Tillämpningar/Ljud
+       [sv]:           Tillämpningar/Ljud
        [uk]:           Прикладні Програми/Звук
 
 Applications/Spreadsheets
-       [cs]:           Aplikace/Tabulkove procesorý
+       [cs]:           Aplikace/Tabulkove procesorý
        [da]:           Programmer/Regneark
        [de]:           Applikationen/Arbeitsblätter
-       [es]:           Aplicaciones/Hojas de Cálculo
+       [es]:           Aplicaciones/Hojas de Cálculo
        [fr]:           Applications/Tableurs
-       [is]:           Forrit/Töflureikni
+       [is]:           Forrit/Töflureikni
        [it]:           Applicazioni/Fogli di calcolo
        [nb]:           Applikasjoner/Regneark
        [pl]:           Aplikacje/Arkusze kalkulacyjne
-       [pt]:           Aplicações/Folhas de Cálculo
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/üÌÅËÔÒÏÎÎÙÅ ÔÁÂÌÉÃÙ
+       [pt]:           Aplicações/Folhas de Cálculo
+       [ru]:           Приложения/Электронные таблицы
        [sl]:           Programi/Preglednice
-       [sv]:           Tillämpningar/Kalkylark
+       [sv]:           Tillämpningar/Kalkylark
        [uk]:           Прикладні Програми/Електронна таблиця
 
 Applications/System
-       [cs]:           Aplikace/Systém
+       [cs]:           Aplikace/Systém
        [da]:           Programmer/System
        [de]:           Applikationen/System
        [es]:           Aplicaciones/Sistema
        [fr]:           Applications/Système
        [is]:           Forrit/Kerfisforrit
        [it]:           Applicazioni/Sistema
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥·¥¹¥Æ¥à
+       [ja]:           アプリケーション/システム
        [nb]:           Applikasjoner/System
        [pl]:           Aplikacje/System
-       [pt]:           Aplicações/Sistema
-       [pt_BR]:        Aplicações/Sistema
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/óÉÓÔÅÍÁ
+       [pt]:           Aplicações/Sistema
+       [pt_BR]:        Aplicações/Sistema
+       [ru]:           Приложения/Система
        [sl]:           Programi/Sistem
-       [sv]:           Tillämpningar/System
+       [sv]:           Tillämpningar/System
        [uk]:           Прикладні Програми/Система
 
 Applications/Terminal
-       [cs]:           Aplikace/Terminál
+       [cs]:           Aplikace/Terminál
        [da]:           Programmer/Terminal
        [de]:           Applikationen/Terminal
        [es]:           Aplicaciones/Terminal
@@ -551,10 +551,10 @@ Applications/Terminal
        [it]:           Applicazioni/Terminale
        [nb]:           Applikasjoner/Terminal
        [pl]:           Aplikacje/Terminal
-       [pt]:           Aplicações/Terminal
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ôÅÒÍÉÎÁÌ
+       [pt]:           Aplicações/Terminal
+       [ru]:           Приложения/Терминал
        [sl]:           Programi/Terminal
-       [sv]:           Tillämpningar/Terminal
+       [sv]:           Tillämpningar/Terminal
        [uk]:           Прикладні Програми/Термінали
 
 Applications/Text
@@ -565,13 +565,13 @@ Applications/Text
        [fr]:           Applications/Texte
        [is]:           Forrit/Texti
        [it]:           Applicazioni/Testo
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Æ¥­¥¹¥È
+       [ja]:           アプリケーション/テキスト
        [nb]:           Applikasjoner/Tekst
        [pl]:           Aplikacje/Tekst
-       [pt]:           Aplicações/Texto
-       [ru]:           ðÒÉÌÏÖÅÎÉÑ/ôÅËÓÔÏ×ÙÅ ÕÔÉÌÉÔÙ
+       [pt]:           Aplicações/Texto
+       [ru]:           Приложения/Текстовые утилиты
        [sl]:           Programi/Besedilo
-       [sv]:           Tillämpningar/Text
+       [sv]:           Tillämpningar/Text
        [uk]:           Прикладні Програми/Текстові утиліти
 
 Applications/WWW
@@ -583,121 +583,121 @@ Applications/WWW
        [is]:           Forrit/WWW
        [nb]:           Applikasjoner/WWW
        [pl]:           Aplikacje/WWW
-       [pt]:           Aplicações/WWW
+       [pt]:           Aplicações/WWW
        [sl]:           Programi/WWW
-       [sv]:           Tillämpningar/WWW
+       [sv]:           Tillämpningar/WWW
 
 Base
-       [cs]:           Základ
+       [cs]:           Základ
        [da]:           Basal
        [de]:           Grundsätzlich
        [es]:           Base
        [fr]:           Base
        [is]:           Grunnforrit
        [it]:           Base
-       [ja]:           ¥Ù¡¼¥¹
+       [ja]:           ã\83\99ã\83¼ã\82¹
        [nb]:           Basis
        [pl]:           Podstawowe
        [pt]:           Base
        [pt_BR]:        Base
-       [ru]:           âÁÚÁ
+       [ru]:           База
        [sl]:           Osnova
        [sv]:           Bas
        [uk]:           База
 
 Base/Kernel
-       [cs]:           Základ/Jádro
+       [cs]:           Základ/Jádro
        [da]:           Basal/Kerne
        [de]:           Grundsätzlich/Kern
-       [es]:           Base/Núcleo
+       [es]:           Base/Núcleo
        [fr]:           Base/Noyau
        [is]:           Grunnforrit/Kjarninn
        [it]:           Base/Kernel
-       [ja]:           ¥Ù¡¼¥¹/¥«¡¼¥Í¥ë
+       [ja]:           ベース/カーネル
        [nb]:           Basis/Kjerne
-       [pl]:           Podstawowe/J±dro
-       [pt]:           Base/Núcleo
-       [ru]:           âÁÚÁ/ñÄÒÏ
+       [pl]:           Podstawowe/Jądro
+       [pt]:           Base/Núcleo
+       [ru]:           База/Ядро
        [sl]:           Osnova/Jedro
-       [sv]:           Bas/Kärna
+       [sv]:           Bas/Kärna
        [uk]:           База/Ядро
 
 Base/Authentication and Authorization
-       [cs]:           Základ/Autentizace a autorizace
+       [cs]:           Základ/Autentizace a autorizace
        [de]:           Grundsätzlich/Authentisierung und Ermächtigung
-       [es]:           Base/Autenticación y Autorización
+       [es]:           Base/Autenticación y Autorización
        [fr]:           Base/Authentification et autorisation
        [it]:           Base/Autenticazione e autorizzazione
        [pl]:           Podstawowe/Uwierzytelnianie i autoryzacja
-       [pt]:           Base/Autenticação e Autorização
-       [ru]:           âÁÚÁ/áÕÔÅÎÔÉÆÉËÁÃÉÑ É Á×ÔÏÒÉÚÁÃÉÑ
+       [pt]:           Base/Autenticação e Autorização
+       [ru]:           База/Аутентификация и авторизация
        [sl]:           Osnova/Avtentikacija in identifikacija
        [sv]:           Bas/Autentisering och Auktorisering
        [uk]:           База/Аутентикація та авторизація
 
 Base/Utilities
-       [cs]:           Základ/Utility
-       [da]:           Basal/Værktøj
+       [cs]:           Základ/Utility
+       [da]:           Basal/Værktøj
        [de]:           Gründsätzlich/Dienstprogramme
        [es]:           Base/Utilitarios
        [fr]:           Base/Utilitaires
-       [is]:           Grunnforrit/Tól
+       [is]:           Grunnforrit/Tól
        [it]:           Base/Utility
-       [nb]:           Basis/Verktøy
-       [pl]:           Podstawowe/Narzêdzia
+       [nb]:           Basis/Verktøy
+       [pl]:           Podstawowe/Narzędzia
        [pt]:           Base/Utilidades
-       [pt_BR]:        Base/Utilitários
-       [ru]:           âÁÚÁ/õÔÉÌÉÔÙ
-       [sl]:           Osnova/Pripomoèki
+       [pt_BR]:        Base/Utilitários
+       [ru]:           База/Утилиты
+       [sl]:           Osnova/Pripomočki
        [sv]:           Bas/Verktyg
        [uk]:           База/Утиліти
 
 Daemons
-       [cs]:           Démoni
-       [da]:           Dæmoner
+       [cs]:           Démoni
+       [da]:           Dæmoner
        [de]:           Server
        [es]:           Servidores
        [fr]:           Serveurs
-       [is]:           Púkar
+       [is]:           Púkar
        [it]:           Demoni
-       [ja]:           ¥Ç¡¼¥â¥ó
+       [ja]:           デーモン
        [nb]:           Daemoner
        [pl]:           Serwery
        [pt]:           Servidores
-       [ru]:           äÅÍÏÎÙ
-       [sl]:           Stre¾niki
+       [ru]:           Демоны
+       [sl]:           Strežniki
        [sv]:           Demoner
        [uk]:           Демони
 
 Development
-       [cs]:           Vývojové prostøedky
+       [cs]:           Vývojové prostředky
        [da]:           Udvikling
        [de]:           Entwicklung
        [es]:           Desarrollo
        [fr]:           Développement
-       [is]:           Þróunartól
+       [is]:           Þróunartól
        [it]:           Sviluppo
-       [ja]:           ³«È¯
+       [ja]:           開発
        [nb]:           Utvikling
        [pl]:           Programowanie
        [pt]:           Desenvolvimento
        [pt_BR]:        Desenvolvimento
-       [ru]:           òÁÚÒÁÂÏÔËÁ
+       [ru]:           Разработка
        [sl]:           Razvoj
        [sv]:           Utveckling
        [uk]:           Розробка
 
 Development/Building
-       [cs]:           Základ/Vývoj
+       [cs]:           Základ/Vývoj
        [da]:           Udvikling/Bygge
        [de]:           Entwicklung/Bauen
-       [es]:           Desarrollo/Construcción
+       [es]:           Desarrollo/Construcción
        [fr]:           Développement/Construction
        [it]:           Sviluppo/Sviluppo
        [nb]:           Utvikling/Bygge
        [pl]:           Programowanie/Budowanie
-       [pt]:           Desenvolvimento/Criação
-       [ru]:           òÁÚÒÁÂÏÔËÁ/óÔÒÏÅÎÉÅ
+       [pt]:           Desenvolvimento/Criação
+       [ru]:           Разработка/Строение
        [sv]:           Utveckling/Bygga
        [uk]:           Розробка/Будова
 
@@ -705,241 +705,241 @@ Development/Debug
        [pl]:           Programowanie/Odpluskwianie
 
 Development/Debuggers
-       [cs]:           Vývojové prostøedky/Debuggery
+       [cs]:           Vývojové prostředky/Debuggery
        [da]:           Udvikling/Fejlfinding
        [de]:           Entwicklung/Debugger
        [es]:           Desarrollo/Depuradores
        [fr]:           Développement/Débogueurs
-       [is]:           Þróunartól/Aflúsarar
+       [is]:           Þróunartól/Aflúsarar
        [it]:           Sviluppo/Debugger
-       [ja]:           ³«È¯/¥Ç¥Ð¥Ã¥¬
+       [ja]:           é\96\8bç\99º/ã\83\87ã\83\90ã\83\83ã\82¬
        [nb]:           Utvikling/Debuggere
        [pl]:           Programowanie/Odpluskwiacze
        [pt]:           Desenvolvimento/Depuradores
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ïÔÌÁÄÞÉËÉ
-       [sl]:           Razvoj/Razhro¹èevalniki
-       [sv]:           Utveckling/Felsökning
+       [ru]:           Разработка/Отладчики
+       [sl]:           Razvoj/Razhroščevalniki
+       [sv]:           Utveckling/Felsökning
        [uk]:           Розробка/Відладчики
 
 Development/Languages
-       [cs]:           Vývojové prostøedky/Programovací jazyky
+       [cs]:           Vývojové prostředky/Programovací jazyky
        [da]:           Udvikling/Sprog
        [de]:           Entwicklung/Sprachen
        [es]:           Desarrollo/Lenguajes
        [fr]:           Développement/Langues
-       [is]:           Þróunartól/Forritunarmál
+       [is]:           Þróunartól/Forritunarmál
        [it]:           Sviluppo/Linguaggi
-       [ja]:           ³«È¯/¸À¸ì
-       [nb]:           Utvikling/Programmeringsspråk
-       [pl]:           Programowanie/Jêzyki
+       [ja]:           開発/言語
+       [nb]:           Utvikling/Programmeringsspråk
+       [pl]:           Programowanie/Języki
        [pt]:           Desenvolvimento/Linguagens
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ
+       [ru]:           Разработка/Языки
        [sl]:           Razvoj/Jeziki
-       [sv]:           Utveckling/Språk
+       [sv]:           Utveckling/Sprĺk
        [uk]:           Розробка/Мови
 
 Development/Languages/Fortran
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Fortran
+       [cs]:           Vývojové prostředky/Programovací jazyky/Fortran
        [da]:           Udvikling/Sprog/Fortran
        [de]:           Entwicklung/Sprachen/Fortran
        [es]:           Desarrollo/Lenguajes/Fortran
        [fr]:           Développement/Langues/Fortran
-       [is]:           Þróunartól/Forritunarmál/Fortran
+       [is]:           Þróunartól/Forritunarmál/Fortran
        [it]:           Sviluppo/Linguaggi/Fortran
-       [ja]:           ³«È¯/¸À¸ì/Fortran
-       [nb]:           Utvikling/Programmeringsspråk/Fortran
-       [pl]:           Programowanie/Jêzyki/Fortran
+       [ja]:           開発/言語/Fortran
+       [nb]:           Utvikling/Programmeringsspråk/Fortran
+       [pl]:           Programowanie/Języki/Fortran
        [pt]:           Desenvolvimento/Linguagens/Fortran
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Fortran
+       [ru]:           Разработка/Языки/Fortran
        [sl]:           Razvoj/Jeziki/Fortran
-       [sv]:           Utveckling/Språk/Fortran
+       [sv]:           Utveckling/Sprĺk/Fortran
        [uk]:           Розробка/Мови/Fortran
 
 Development/Languages/Java
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Java
+       [cs]:           Vývojové prostředky/Programovací jazyky/Java
        [da]:           Udvikling/Sprog/Java
        [de]:           Entwicklung/Sprachen/Java
        [es]:           Desarrollo/Lenguajes/Java
        [fr]:           Développement/Langues/Java
-       [is]:           Þróunartól/Forritunarmál/Java
+       [is]:           Þróunartól/Forritunarmál/Java
        [it]:           Sviluppo/Linguaggi/Java
-       [ja]:           ³«È¯/¸À¸ì/Java
-       [nb]:           Utvikling/Programmeringsspråk/Java
-       [pl]:           Programowanie/Jêzyki/Java
+       [ja]:           開発/言語/Java
+       [nb]:           Utvikling/Programmeringsspråk/Java
+       [pl]:           Programowanie/Języki/Java
        [pt]:           Desenvolvimento/Linguagens/Java
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Java
+       [ru]:           Разработка/Языки/Java
        [sl]:           Razvoj/Jeziki/Java
-       [sv]:           Utveckling/Språk/Java
+       [sv]:           Utveckling/Sprĺk/Java
        [uk]:           Розробка/Мови/Java
 
 Development/Languages/Modula3
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Modula3
+       [cs]:           Vývojové prostředky/Programovací jazyky/Modula3
        [da]:           Udvikling/Sprog/Modula3
        [de]:           Entwicklung/Sprachen/Modula3
        [es]:           Desarrollo/Lenguajes/Modula3
        [fr]:           Développement/Langues/Modula3
-       [is]:           Þróunartól/Forritunarmál/Modula3
+       [is]:           Þróunartól/Forritunarmál/Modula3
        [it]:           Sviluppo/Linguaggi/Modula3
-       [ja]:           ³«È¯/¸À¸ì/Modula3
-       [nb]:           Utvikling/Programmeringsspråk/Modula3
-       [pl]:           Programowanie/Jêzyki/Modula3
+       [ja]:           開発/言語/Modula3
+       [nb]:           Utvikling/Programmeringsspråk/Modula3
+       [pl]:           Programowanie/Języki/Modula3
        [pt]:           Desenvolvimento/Linguagens/Modula3
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Modula3
+       [ru]:           Разработка/Языки/Modula3
        [sl]:           Razvoj/Jeziki/Modula3
-       [sv]:           Utveckling/Språk/Modula3
+       [sv]:           Utveckling/Sprĺk/Modula3
        [uk]:           Розробка/Мови/Modula3
 
 Development/Languages/PHP
-       [cs]:           Vývojové prostøedky/Programovací jazyky/PHP
+       [cs]:           Vývojové prostředky/Programovací jazyky/PHP
        [da]:           Udvikling/Sprog/PHP
        [de]:           Entwicklung/Sprachen/PHP
        [es]:           Desarrollo/Lenguajes/PHP
        [fr]:           Développement/Langues/PHP
-       [is]:           Þróunartól/Forritunarmál/PHP
+       [is]:           Þróunartól/Forritunarmál/PHP
        [it]:           Sviluppo/Linguaggi/PHP
-       [ja]:           ³«È¯/¸À¸ì/PHP
-       [nb]:           Utvikling/Programmeringsspråk/PHP
-       [pl]:           Programowanie/Jêzyki/PHP
+       [ja]:           開発/言語/PHP
+       [nb]:           Utvikling/Programmeringsspråk/PHP
+       [pl]:           Programowanie/Języki/PHP
        [pt]:           Desenvolvimento/Linguagens/PHP
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/PHP
+       [ru]:           Разработка/Языки/PHP
        [sl]:           Razvoj/Jeziki/PHP
-       [sv]:           Utveckling/Språk/PHP
+       [sv]:           Utveckling/Sprĺk/PHP
        [uk]:           Розробка/Мови/PHP
 
 Development/Languages/Perl
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Perl
+       [cs]:           Vývojové prostředky/Programovací jazyky/Perl
        [da]:           Udvikling/Sprog/Perl
        [de]:           Entwicklung/Sprachen/Perl
        [es]:           Desarrollo/Lenguajes/Perl
        [fr]:           Développement/Langues/Perl
-       [is]:           Þróunartól/Forritunarmál/Perl
+       [is]:           Þróunartól/Forritunarmál/Perl
        [it]:           Sviluppo/Linguaggi/Perl
-       [ja]:           ³«È¯/¸À¸ì/Perl
-       [nb]:           Utvikling/Programmeringsspråk/Perl
-       [pl]:           Programowanie/Jêzyki/Perl
+       [ja]:           開発/言語/Perl
+       [nb]:           Utvikling/Programmeringsspråk/Perl
+       [pl]:           Programowanie/Języki/Perl
        [pt]:           Desenvolvimento/Linguagens/Perl
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Perl
+       [ru]:           Разработка/Языки/Perl
        [sl]:           Razvoj/Jeziki/Perl
-       [sv]:           Utveckling/Språk/Perl
+       [sv]:           Utveckling/Sprĺk/Perl
        [uk]:           Розробка/Мови/Perl
 
 Development/Languages/Python
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Python
+       [cs]:           Vývojové prostředky/Programovací jazyky/Python
        [da]:           Udvikling/Sprog/Python
        [de]:           Entwicklung/Sprachen/Python
        [es]:           Desarrollo/Lenguajes/Python
        [fr]:           Développement/Langues/Python
-       [is]:           Þróunartól/Forritunarmál/Python
+       [is]:           Þróunartól/Forritunarmál/Python
        [it]:           Sviluppo/Linguaggi/Python
-       [ja]:           ³«È¯/¸À¸ì/Python
-       [nb]:           Utvikling/Programmeringsspråk/Python
-       [pl]:           Programowanie/Jêzyki/Python
+       [ja]:           開発/言語/Python
+       [nb]:           Utvikling/Programmeringsspråk/Python
+       [pl]:           Programowanie/Języki/Python
        [pt]:           Desenvolvimento/Linguagens/Python
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Python
+       [ru]:           Разработка/Языки/Python
        [sl]:           Razvoj/Jeziki/Python
-       [sv]:           Utveckling/Språk/Python
+       [sv]:           Utveckling/Sprĺk/Python
        [uk]:           Розробка/Мови/Python
 
 Development/Languages/Scheme
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Scheme
+       [cs]:           Vývojové prostředky/Programovací jazyky/Scheme
        [da]:           Udvikling/Sprog/Scheme
        [de]:           Entwicklung/Sprachen/Scheme
        [es]:           Desarrollo/Lenguajes/Scheme
        [fr]:           Développement/Langues/Scheme
-       [is]:           Þróunartól/Forritunarmál/Scheme
+       [is]:           Þróunartól/Forritunarmál/Scheme
        [it]:           Sviluppo/Linguaggi/Scheme
-       [ja]:           ³«È¯/¸À¸ì/Scheme
-       [nb]:           Utvikling/Programmeringsspråk/Scheme
-       [pl]:           Programowanie/Jêzyki/Scheme
+       [ja]:           開発/言語/Scheme
+       [nb]:           Utvikling/Programmeringsspråk/Scheme
+       [pl]:           Programowanie/Języki/Scheme
        [pt]:           Desenvolvimento/Linguagens/Scheme
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Scheme
+       [ru]:           Разработка/Языки/Scheme
        [sl]:           Razvoj/Jeziki/Scheme
-       [sv]:           Utveckling/Språk/Scheme
+       [sv]:           Utveckling/Sprĺk/Scheme
        [uk]:           Розробка/Мови/Scheme
 
 Development/Languages/Tcl
-       [cs]:           Vývojové prostøedky/Programovací jazyky/Tcl
+       [cs]:           Vývojové prostředky/Programovací jazyky/Tcl
        [da]:           Udvikling/Sprog/Tcl
        [de]:           Entwicklung/Sprachen/Tcl
        [es]:           Desarrollo/Lenguajes/Tcl
        [fr]:           Développement/Langues/Tcl
-       [is]:           Þróunartól/Forritunarmál/Tcl
+       [is]:           Þróunartól/Forritunarmál/Tcl
        [it]:           Sviluppo/Linguaggi/Tcl
-       [ja]:           ³«È¯/¸À¸ì/Tcl
-       [nb]:           Utvikling/Programmeringsspråk/Tcl
-       [pl]:           Programowanie/Jêzyki/Tcl
+       [ja]:           開発/言語/Tcl
+       [nb]:           Utvikling/Programmeringsspråk/Tcl
+       [pl]:           Programowanie/Języki/Tcl
        [pt]:           Desenvolvimento/Linguagens/Tcl
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Tcl
+       [ru]:           Разработка/Языки/Tcl
        [sl]:           Razvoj/Jeziki/Tcl
-       [sv]:           Utveckling/Språk/Tcl
+       [sv]:           Utveckling/Sprĺk/Tcl
        [uk]:           Розробка/Мови/Tcl
 
 Development/Libraries
-       [cs]:           Vývojové prostøedky/Knihovny
+       [cs]:           Vývojové prostředky/Knihovny
        [da]:           Udvikling/Biblioteker
        [de]:           Entwicklung/Bibliotheken
        [es]:           Desarrollo/Bibliotecas
        [fr]:           Développement/Librairies
-       [is]:           Þróunartól/Aðgerðasöfn
+       [is]:           Þróunartól/Aðgerðasöfn
        [it]:           Sviluppo/Librerie
-       [ja]:           ³«È¯/¥é¥¤¥Ö¥é¥ê
+       [ja]:           開発/ライブラリ
        [nb]:           Utvikling/Bibliotek
        [pl]:           Programowanie/Biblioteki
        [pt]:           Desenvolvimento/Bibliotecas
        [pt_BR]:        Desenvolvimento/Bibliotecas
-       [ru]:           òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ
-       [sl]:           Razvoj/Knji¾nice
+       [ru]:           Разработка/Библиотеки
+       [sl]:           Razvoj/Knjižnice
        [sv]:           Utveckling/Bibliotek
        [uk]:           Розробка/Бібліотеки
 
 Development/Libraries/Libc
-       [cs]:           Vývojové prostøedky/Knihovny/Libc
+       [cs]:           Vývojové prostředky/Knihovny/Libc
        [da]:           Udvikling/Biblioteker/Libc
        [de]:           Entwicklung/Bibliotheken/Libc
        [es]:           Desarrollo/Bibliotecas/Libc
        [fr]:           Développement/Librairies/Libc
-       [is]:           Þróunartól/Aðgerðasöfn/Libc
+       [is]:           Þróunartól/Aðgerðasöfn/Libc
        [it]:           Sviluppo/Librerie/Libc
-       [ja]:           ³«È¯/¥é¥¤¥Ö¥é¥ê/Libc
+       [ja]:           開発/ライブラリ/Libc
        [nb]:           Utvikling/Bibliotek/Libc
        [pl]:           Programowanie/Biblioteki/Libc
        [pt]:           Desenvolvimento/Bibliotecas/Libc
        [pt_BR]:        Desenvolvimento/Bibliotecas/Libc
-       [ru]:           òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ/Libc
-       [sl]:           Razvoj/Knji¾nice/Libc
+       [ru]:           Разработка/Библиотеки/Libc
+       [sl]:           Razvoj/Knjižnice/Libc
        [sv]:           Utveckling/Bibliotek/Libc
        [uk]:           Розробка/Бібліотеки/Libc
 
 Development/Tools
-       [cs]:           Vývojové prostøedky/Nástroje
-       [da]:           Udvikling/Værktøj
+       [cs]:           Vývojové prostředky/Nástroje
+       [da]:           Udvikling/Værktøj
        [de]:           Entwicklung/Tools
        [es]:           Desarrollo/Herramientas
        [fr]:           Développement/Outils
-       [is]:           Þróunartól/Tól
+       [is]:           Þróunartól/Tól
        [it]:           Sviluppo/Tool
-       [ja]:           ³«È¯/¥Ä¡¼¥ë
-       [nb]:           Utvikling/Verktøy
-       [pl]:           Programowanie/Narzêdzia
+       [ja]:           開発/ツール
+       [nb]:           Utvikling/Verktøy
+       [pl]:           Programowanie/Narzędzia
        [pt]:           Desenvolvimento/Ferramentas
-       [ru]:           òÁÚÒÁÂÏÔËÁ/éÎÓÔÒÕÍÅÎÔÙ
+       [ru]:           Разработка/Инструменты
        [sl]:           Razvoj/Orodja
        [sv]:           Utveckling/Verktyg
        [uk]:           Розробка/Інструменти
 
 Development/Version Control
-       [cs]:           Vývojové prostøedky/Správ verzí
+       [cs]:           Vývojové prostředky/Správ verzí
        [da]:           Udvikling/Versionskontrol
        [de]:           Entwicklung/Versionkontrolle
        [es]:           Desarrollo/Control de Versiones
        [fr]:           Développement/Contrôle de version
-       [is]:           Þróunartól/Útgáfu Stýring
+       [is]:           Þróunartól/Útgáfu Stýring
        [it]:           Sviluppo/Controllo della versione
        [nb]:           Utvikling/Versjonskontroll
-       [pl]:           Programowanie/Zarz±dzanie wersjami
-       [pt]:           Desenvolvimento/Controlo de Versões
-       [ru]:           òÁÚÒÁÂÏÔËÁ/ëÏÎÔÒÏÌØ ×ÅÒÓÉÊ
-       [sl]:           Razvoj/Nadzor razlièic
+       [pl]:           Programowanie/Zarządzanie wersjami
+       [pt]:           Desenvolvimento/Controlo de Versões
+       [ru]:           Разработка/Контроль версий
+       [sl]:           Razvoj/Nadzor različic
        [sv]:           Utveckling/Versionshantering
        [uk]:           Розробка/Керуванне версіями
 
@@ -947,14 +947,14 @@ Documentation
        [cs]:           Dokumentace
        [da]:           Dokumentationen
        [de]:           Dokumentation
-       [es]:           Documentación
+       [es]:           Documentación
        [fr]:           Documentacion
-       [is]:           Skjölun
+       [is]:           Skjölun
        [it]:           Documentazione
        [nb]:           Dokumentasjonen
        [pl]:           Dokumentacja
-       [pt]:           Documentação
-       [ru]:           äÏËÕÍÅÎÔÁÃÉÑ
+       [pt]:           Documentação
+       [ru]:           Документация
        [sl]:           Dokumentacija
        [sv]:           Dokumentation
        [uk]:           Документація
@@ -965,12 +965,12 @@ Fonts
        [de]:           Zeichensätze
        [es]:           Fuentes
        [fr]:           Polices
-       [is]:           Leturgerðir
+       [is]:           Leturgerðir
        [it]:           Font
        [nb]:           Skrifttyper
        [pl]:           Fonty
        [pt]:           Tipos de Letra
-       [ru]:           ûÒÉÆÔÙ
+       [ru]:           Шрифты
        [sl]:           Pisave
        [sv]:           Typsnitt
        [uk]:           Шрифти
@@ -983,16 +983,16 @@ Libraries
        [de]:           Bibliotheken
        [es]:           Bibliotecas
        [fr]:           Librairies
-       [is]:           Aðgerðasöfn
+       [is]:           Aðgerðasöfn
        [it]:           Librerie
-       [ja]:           ¥é¥¤¥Ö¥é¥ê
+       [ja]:           ライブラリ
        [nb]:           Biblioteker
        [pl]:           Biblioteki
        [pt]:           Bibliotecas
        [pt_BR]:        Bibliotecas
-       [ru]:           âÉÂÌÉÏÔÅËÉ
+       [ru]:           Библиотеки
        [sv]:           Bibliotek
-       [sl]:           Knji¾nice
+       [sl]:           Knjižnice
        [uk]:           Бібліотеки
 
 Libraries/Python
@@ -1001,16 +1001,16 @@ Libraries/Python
        [de]:           Bibliotheken/Python
        [es]:           Bibliotecas/Python
        [fr]:           Librairies/Python
-       [is]:           Aðgerðasöfn/Python
+       [is]:           Aðgerðasöfn/Python
        [it]:           Librerie/Python
-       [ja]:           ¥é¥¤¥Ö¥é¥ê/Python
+       [ja]:           ライブラリ/Python
        [nb]:           Biblioteker/Python
        [pl]:           Biblioteki/Python
        [pt]:           Bibliotecas/Python
        [pt_BR]:        Bibliotecas/Python
-       [ru]:           âÉÂÌÉÏÔÅËÉ/Python
+       [ru]:           Библиотеки/Python
        [sv]:           Bibliotek/Python
-       [sl]:           Knji¾nice/Python
+       [sl]:           Knjižnice/Python
        [uk]:           Бібліотеки/Python
 
 Libraries/Java
@@ -1020,16 +1020,16 @@ Libraries/Java
        [es]:           Bibliotecas/Java
        [et]:           Teegid/Java
        [fr]:           Librairies/Java
-       [is]:           Aðgerðasöfn/Java
+       [is]:           Aðgerðasöfn/Java
        [it]:           Librerie/Java
-       [ja]:           ¥é¥¤¥Ö¥é¥ê/Java
+       [ja]:           ライブラリ/Java
        [nb]:           Biblioteker/Java
        [pl]:           Biblioteki/Java
        [pt]:           Bibliotecas/Java
        [pt_BR]:        Bibliotecas/Java
-       [ru]:           âÉÂÌÉÏÔÅËÉ/Java
+       [ru]:           Библиотеки/Java
        [sv]:           Bibliotek/Java
-       [sl]:           Knji¾nice/Java
+       [sl]:           Knjižnice/Java
        [uk]:           Бібліотеки/Java
 
 Libraries/XML
@@ -1038,21 +1038,21 @@ Libraries/XML
        [de]:           Bibliotheken/XML
        [es]:           Bibliotecas/XML
        [fr]:           Librairies/XML
-       [is]:           Aðgerðasöfn/XML
+       [is]:           Aðgerðasöfn/XML
        [it]:           Librerie/XML
-       [ja]:           ¥é¥¤¥Ö¥é¥ê/XML
+       [ja]:           ライブラリ/XML
        [nb]:           Biblioteker/XML
        [pl]:           Biblioteki/XML
        [pt]:           Bibliotecas/XML
        [pt_BR]:        Bibliotecas/XML
-       [ru]:           âÉÂÌÉÏÔÅËÉ/XML
-       [sl]:           Knji¾nice/XML
+       [ru]:           Библиотеки/XML
+       [sl]:           Knjižnice/XML
        [sv]:           Bibliotek/XML
        [uk]:           Бібліотеки/XML
 
 Networking
-       [cs]:           Sí»ové
-       [da]:           Netværks
+       [cs]:           Síťové
+       [da]:           Netværks
        [de]:           Netzwerkwesen
        [es]:           Red
        [fr]:           Réseau
@@ -1062,217 +1062,217 @@ Networking
        [pl]:           Sieciowe
        [pt]:           Rede
        [pt_BR]:        Rede
-       [ru]:           óÅÔØ
-       [sl]:           Omre¾ni
-       [sv]:           Nätverk
+       [ru]:           Сеть
+       [sl]:           Omrežni
+       [sv]:           Nätverk
        [uk]:           Мережа
 
 Networking/Admin
-       [cs]:           Sí»ové/Administrace
-       [da]:           Netværks/Administration
+       [cs]:           Síťové/Administrace
+       [da]:           Netværks/Administration
        [de]:           Netzwerkwesen/Administration
-       [es]:           Red/Administración
+       [es]:           Red/Administración
        [fr]:           Réseau/Administration
-       [is]:           Net/Stjórnar
+       [is]:           Net/Stjórnar
        [it]:           Rete/Amministrazione
        [nb]:           Nettverks/Administrasjon
        [pl]:           Sieciowe/Administracyjne
-       [pt]:           Rede/Administração
-       [ru]:           óÅÔØ/õÐÒÁ×ÌÅÎÉÅ
-       [sv]:           Nätverk/Administration
+       [pt]:           Rede/Administração
+       [ru]:           Сеть/Управление
+       [sv]:           Nätverk/Administration
        [uk]:           Мережа/Керуванне
 
 Networking/Daemons
-       [cs]:           Sí»ové/Démoni
-       [da]:           Netværks/Dæmoner
+       [cs]:           Síťové/Démoni
+       [da]:           Netværks/Dæmoner
        [de]:           Netzwerkwesen/Server
        [es]:           Red/Servidores
        [fr]:           Réseau/Serveurs
-       [is]:           Net/Púkar
+       [is]:           Net/Púkar
        [it]:           Rete/Demoni
        [nb]:           Nettverks/Daemoner
        [pl]:           Sieciowe/Serwery
        [pt]:           Rede/Servidores
-       [ru]:           óÅÔØ/äÅÍÏÎÙ
-       [sl]:           Omre¾ni/Stre¾niki
-       [sv]:           Nätverk/Demoner
+       [ru]:           Сеть/Демоны
+       [sl]:           Omrežni/Strežniki
+       [sv]:           Nätverk/Demoner
        [uk]:           Мережа/Демони
 
 Networking/Daemons/FTP
-       [cs]:           Sí»ové/Démoni/FTP
-       [da]:           Netværks/Dæmoner/FTP
+       [cs]:           Síťové/Démoni/FTP
+       [da]:           Netværks/Dæmoner/FTP
        [de]:           Netzwerkwesen/Server/FTP
        [es]:           Red/Servidores/FTP
        [fr]:           Réseau/Serveurs/FTP
-       [is]:           Net/Púkar/FTP
+       [is]:           Net/Púkar/FTP
        [it]:           Rete/Demoni/FTP
        [nb]:           Nettverks/Daemoner/FTP
        [pl]:           Sieciowe/Serwery/FTP
        [pt]:           Rede/Servidores/FTP
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/FTP
-       [sl]:           Omre¾ni/Stre¾niki/FTP
-       [sv]:           Nätverk/Demoner/FTP
+       [ru]:           Сеть/Демоны/FTP
+       [sl]:           Omrežni/Strežniki/FTP
+       [sv]:           Nätverk/Demoner/FTP
        [uk]:           Мережа/Демони/FTP
 
 Networking/Daemons/HTTP
-       [cs]:           Sí»ové/Démoni/HTTP
-       [da]:           Netværks/Dæmoner/HTTP
+       [cs]:           Síťové/Démoni/HTTP
+       [da]:           Netværks/Dæmoner/HTTP
        [de]:           Netzwerkwesen/Server/HTTP
        [es]:           Red/Servidores/HTTP
        [fr]:           Réseau/Serveurs/HTTP
-       [is]:           Net/Púkar/HTTP
+       [is]:           Net/Púkar/HTTP
        [it]:           Rete/Demoni/HTTP
        [nb]:           Nettverks/Daemoner/HTTP
        [pl]:           Sieciowe/Serwery/HTTP
        [pt]:           Rede/Servidores/HTTP
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/HTTP
-       [sl]:           Omre¾ni/Stre¾niki/HTTP
-       [sv]:           Nätverk/Demoner/HTTP
+       [ru]:           Сеть/Демоны/HTTP
+       [sl]:           Omrežni/Strežniki/HTTP
+       [sv]:           Nätverk/Demoner/HTTP
        [uk]:           Мережа/Демони/HTTP
 
 Networking/Daemons/Java
-       [cs]:           Sí»ové/Démoni/Java
-       [da]:           Netværks/Dæmoner/Java
+       [cs]:           Síťové/Démoni/Java
+       [da]:           Netværks/Dæmoner/Java
        [de]:           Netzwerkwesen/Server/Java
        [es]:           Red/Servidores/Java
        [fr]:           Réseau/Serveurs/Java
-       [is]:           Net/Púkar/Java
+       [is]:           Net/Púkar/Java
        [it]:           Rete/Demoni/Java
        [nb]:           Nettverks/Daemoner/Java
        [pl]:           Sieciowe/Serwery/Java
        [pt]:           Rede/Servidores/Java
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/Java
-       [sl]:           Omre¾ni/Stre¾niki/Java
-       [sv]:           Nätverk/Demoner/Java
+       [ru]:           Сеть/Демоны/Java
+       [sl]:           Omrežni/Strežniki/Java
+       [sv]:           Nätverk/Demoner/Java
        [uk]:           Мережа/Демони/Java
 
 Networking/Daemons/Java/Extensions
-       [cs]:           Sí»ové/Démoni/Java/Roz¹íøení
-       [da]:           Netværks/Dæmoner/Java/Udvidelser
+       [cs]:           Síťové/Démoni/Java/Rozšíření
+       [da]:           Netværks/Dæmoner/Java/Udvidelser
        [de]:           Netzwerkwesen/Server/Java/Extensionen
        [es]:           Red/Servidores/Java/Extensiones
        [fr]:           Réseau/Serveurs/Java/Extensions
        [it]:           Rete/Demoni/Java/Estensioni
        [nb]:           Nettverks/Daemoner/Java/Utvidelser
        [pl]:           Sieciowe/Serwery/Java/Rozszerzenia
-       [pt]:           Rede/Servidores/Java/Extensões
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/Java/òÁÓÛÉÒÅÎÉÑ
-       [sl]:           Omre¾ni/Stre¾niki/Java/Raz¹iritve
-       [sv]:           Nätverk/Demoner/Java/Utvidgningar
+       [pt]:           Rede/Servidores/Java/Extensões
+       [ru]:           Сеть/Демоны/Java/Расширения
+       [sl]:           Omrežni/Strežniki/Java/Razširitve
+       [sv]:           Nätverk/Demoner/Java/Utvidgningar
        [uk]:           Мережа/Демони/Java/Расширение
 
 Networking/Daemons/Java/Servlets
        [pl]:           Sieciowe/Serwery/Java/Servlety
 
 Networking/Daemons/POP3
-       [cs]:           Sí»ové/Démoni/POP3
-       [da]:           Netværks/Dæmoner/POP3
+       [cs]:           Síťové/Démoni/POP3
+       [da]:           Netværks/Dæmoner/POP3
        [de]:           Netzwerkwesen/Server/POP3
        [es]:           Red/Servidores/POP3
        [fr]:           Réseau/Serveurs/POP3
-       [is]:           Net/Púkar/POP3
+       [is]:           Net/Púkar/POP3
        [it]:           Rete/Demoni/POP3
        [nb]:           Nettverks/Daemoner/POP3
        [pl]:           Sieciowe/Serwery/POP3
        [pt]:           Rede/Servidores/POP3
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/POP3
-       [sl]:           Omre¾ni/Stre¾niki/POP3
-       [sv]:           Nätverk/Demoner/POP3
+       [ru]:           Сеть/Демоны/POP3
+       [sl]:           Omrežni/Strežniki/POP3
+       [sv]:           Nätverk/Demoner/POP3
        [uk]:           Мережа/Демони/POP3
 
 Networking/Daemons/Radius
-       [cs]:           Sí»ové/Démoni/Radius
-       [da]:           Netværks/Dæmoner/Radius
+       [cs]:           Síťové/Démoni/Radius
+       [da]:           Netværks/Dæmoner/Radius
        [de]:           Netzwerkwesen/Server/Radius
        [es]:           Red/Servidores/Radius
        [fr]:           Réseau/Serveurs/Radius
-       [is]:           Net/Púkar/Radius
+       [is]:           Net/Púkar/Radius
        [it]:           Rete/Demoni/Radius
        [nb]:           Nettverks/Daemoner/Radius
        [pl]:           Sieciowe/Serwery/Radius
        [pt]:           Rede/Servidores/Radius
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/Radius
-       [sl]:           Omre¾ni/Stre¾niki/Radius
-       [sv]:           Nätverk/Demoner/Radius
+       [ru]:           Сеть/Демоны/Radius
+       [sl]:           Omrežni/Strežniki/Radius
+       [sv]:           Nätverk/Demoner/Radius
        [uk]:           Мережа/Демони/Radius
 
 Networking/Daemons/SMTP
-       [cs]:           Sí»ové/Démoni/SMTP
-       [da]:           Netværks/Dæmoner/SMTP
+       [cs]:           Síťové/Démoni/SMTP
+       [da]:           Netværks/Dæmoner/SMTP
        [de]:           Netzwerkwesen/Server/SMTP
        [es]:           Red/Servidores/SMTP
        [fr]:           Réseau/Serveurs/SMTP
-       [is]:           Net/Púkar/SMTP
+       [is]:           Net/Púkar/SMTP
        [it]:           Rete/Demoni/SMTP
        [nb]:           Nettverks/Daemoner/SMTP
        [pl]:           Sieciowe/Serwery/SMTP
        [pt]:           Rede/Servidores/SMTP
-       [ru]:           óÅÔØ/äÅÍÏÎÙ/SMTP
-       [sl]:           Omre¾ni/Stre¾niki/SMTP
-       [sv]:           Nätverk/Demoner/SMTP
+       [ru]:           Сеть/Демоны/SMTP
+       [sl]:           Omrežni/Strežniki/SMTP
+       [sv]:           Nätverk/Demoner/SMTP
        [uk]:           Мережа/Демони/SMTP
 
 Networking/News
-       [cs]:           Sí»ové/News
-       [da]:           Netværks/Nyheder
+       [cs]:           Síťové/News
+       [da]:           Netværks/Nyheder
        [de]:           Netzwerkwesen/News
        [es]:           Red/Noticias
        [fr]:           Réseau/Nouvelles
-       [is]:           Net/Fréttir
+       [is]:           Net/Fréttir
        [it]:           Rete/News
        [nb]:           Nettverks/News
        [pl]:           Sieciowe/News
        [pt]:           Rede/News
        [pt_BR]:        Rede/News
-       [ru]:           óÅÔØ/îÏ×ÏÓÔÉ
-       [sl]:           Omre¾ni/Novièarske
-       [sv]:           Nätverk/Nyheter
+       [ru]:           Сеть/Новости
+       [sl]:           Omrežni/Novičarske
+       [sv]:           Nätverk/Nyheter
        [uk]:           Мережа/Новини
 
 Networking/Utilities
-       [cs]:           Sí»ové/Utility
-       [da]:           Netværks/Værktøj
+       [cs]:           Síťové/Utility
+       [da]:           Netværks/Værktøj
        [de]:           Netzwerkwesen/Dienstprogramme
        [es]:           Red/Utilitarios
        [fr]:           Réseau/Utilitaires
-       [is]:           Net/Tól
+       [is]:           Net/Tól
        [it]:           Rete/Utility
-       [nb]:           Nettverks/Verktøy
-       [pl]:           Sieciowe/Narzêdzia
+       [nb]:           Nettverks/Verktøy
+       [pl]:           Sieciowe/Narzędzia
        [pt]:           Rede/Utilidades
-       [pt_BR]:        Rede/Utilitários
-       [ru]:           óÅÔØ/õÔÉÌÉÔÙ
-       [sl]:           Omre¾ni/Pripomoèki
-       [sv]:           Nätverk/Verktyg
+       [pt_BR]:        Rede/Utilitários
+       [ru]:           Сеть/Утилиты
+       [sl]:           Omrežni/Pripomočki
+       [sv]:           Nätverk/Verktyg
        [uk]:           Мережа/Утиліти
 
 Themes
-       [cs]:           Témata
+       [cs]:           Témata
        [da]:           Temaer
        [de]:           Themen
        [es]:           Temas
        [fr]:           Thèmes
-       [is]:           Þemur
+       [is]:           Þemur
        [it]:           Temi
        [nb]:           Temaer
        [pl]:           Motywy
        [pt]:           Temas
-       [ru]:           ôÅÍÙ
+       [ru]:           Темы
        [sv]:           Teman
        [uk]:           Теми
 
 Themes/GTK+
-       [cs]:           Témata/GTK+
+       [cs]:           Témata/GTK+
        [da]:           Temaer/GTK+
        [de]:           Themen/GTK+
        [es]:           Temas/GTK+
        [fr]:           Thèmes/GTK+
-       [is]:           Þemur/GTK+
+       [is]:           Þemur/GTK+
        [it]:           Temi/GTK+
        [nb]:           Temaer/GTK+
        [pl]:           Motywy/GTK+
        [pt]:           Temas/GTK+
-       [ru]:           ôÅÍÙ/GTK+
+       [ru]:           Темы/GTK+
        [sv]:           Teman/GTK+
        [uk]:           Теми/GTK+
 
@@ -1296,7 +1296,7 @@ X11
        [uk]:           X11
 
 X11/Amusements
-       [cs]:           X11/Zábava
+       [cs]:           X11/Zábava
        [da]:           X11/Underholdning
        [de]:           X11/Unterhaltung
        [es]:           X11/Diversiones
@@ -1304,13 +1304,13 @@ X11/Amusements
        [id]:           X11/Hiburan
        [is]:           X11/Skemmtun
        [it]:           X11/Divertimenti
-       [ja]:           X11/¥¢¥ß¥å¡¼¥º¥á¥ó¥È
-       [nb]:           X11/Fornøyelse
+       [ja]:           X11/アミューズメント
+       [nb]:           X11/Fornøyelse
        [pl]:           X11/Rozrywka
        [pt]:           X11/Divertimentos
-       [ru]:           X11/òÁÚ×ÌÅÞÅÎÉÑ
+       [ru]:           X11/Развлечения
        [sl]:           X11/Zabava
-       [sv]:           X11/Underhållning
+       [sv]:           X11/Underhĺllning
        [uk]:           X11/Розваги
 
 X11/Applications
@@ -1322,14 +1322,14 @@ X11/Applications
        [id]:           X11/Aplikasi
        [is]:           X11/Forrit
        [it]:           X11/Applicazioni
-       [ja]:           X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
+       [ja]:           X11/アプリケーション
        [nb]:           X11/Applikasjoner
        [pl]:           X11/Aplikacje
-       [pt]:           X11/Aplicações
-       [pt_BR]:        X11/Aplicações
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ
+       [pt]:           X11/Aplicações
+       [pt_BR]:        X11/Aplicações
+       [ru]:           X11/Приложения
        [sl]:           X11/Programi
-       [sv]:           X11/Tillämpningar
+       [sv]:           X11/Tillämpningar
        [uk]:           X11/Прикладні Програми
 
 X11/Applications/Accessibility
@@ -1342,13 +1342,13 @@ X11/Applications/Editors
        [fr]:           X11/Applications/Editeurs
        [is]:           X11/Forrit/Ritlar
        [it]:           X11/Applicazioni/Editor
-       [ja]:           X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿
+       [ja]:           X11/ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82¨ã\83\87ã\82£ã\82¿
        [nb]:           X11/Applikasjoner/Editorer
        [pl]:           X11/Aplikacje/Edytory
-       [pt]:           X11/Aplicações/Editores
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ
+       [pt]:           X11/Aplicações/Editores
+       [ru]:           X11/Приложения/Редакторы
        [sl]:           X11/Programi/Urejevalniki
-       [sv]:           X11/Tillämpningar/Editorer
+       [sv]:           X11/Tillämpningar/Editorer
        [uk]:           X11/Прикладні Програми/Редактори
 
 X11/Applications/Games
@@ -1359,84 +1359,84 @@ X11/Applications/Games
        [fr]:           X11/Applications/Jeux
        [is]:           X11/Forrit/Leikir
        [it]:           X11/Applicazioni/Giochi
-       [ja]:           X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥²¡¼¥à
+       [ja]:           X11/アプリケーション/ゲーム
        [nb]:           X11/Applikasjoner/Spill
        [pl]:           X11/Aplikacje/Gry
-       [pt]:           X11/Aplicações/Jogos
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ
+       [pt]:           X11/Aplicações/Jogos
+       [ru]:           X11/Приложения/Игры
        [sl]:           X11/Programi/Igre
-       [sv]:           X11/Tillämpningar/Spel
+       [sv]:           X11/Tillämpningar/Spel
        [uk]:           X11/Прикладні Програми/Ігри
 
 X11/Applications/Games/Strategy
-       [cs]:           X11/Aplikace/Hry/Strategické
+       [cs]:           X11/Aplikace/Hry/Strategické
        [da]:           X11/Programmer/Spil/Strategi
        [de]:           X11/Applikationen/Spiele/Strategie
-       [es]:           X11/Aplicaciones/Juegos/Estratégico
+       [es]:           X11/Aplicaciones/Juegos/Estratégico
        [fr]:           X11/Applications/Jeux/Stratégique
        [it]:           X11/Applicazioni/Giochi/Strategico
        [nb]:           X11/Applikasjoner/Spill/Strategi
        [pl]:           X11/Aplikacje/Gry/Strategiczne
-       [pt]:           X11/Aplicações/Jogos/Estratégico
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ/óÔÒÁÔÅÇÉÞÅÓËÉÅ
-       [sl]:           X11/Programi/Igre/Strate¹ke
-       [sv]:           X11/Tillämpningar/Spel/Strategi
+       [pt]:           X11/Aplicações/Jogos/Estratégico
+       [ru]:           X11/Приложения/Игры/Стратегические
+       [sl]:           X11/Programi/Igre/Strateške
+       [sv]:           X11/Tillämpningar/Spel/Strategi
        [uk]:           X11/Прикладні Програми/Ігри/Стратегія
 
 X11/Applications/Graphics
        [cs]:           X11/Aplikace/Grafika
        [da]:           X11/Programmer/Grafik
        [de]:           X11/Applikationen/Grafik
-       [es]:           X11/Aplicaciones/Gráficos
+       [es]:           X11/Aplicaciones/Gráficos
        [fr]:           X11/Applications/Graphiques
        [id]:           X11/Aplikasi/Grafik
        [is]:           X11/Forrit/Myndvinnsla
        [it]:           X11/Applicazioni/Immagini
-       [ja]:           X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥°¥é¥Õ¥£¥Ã¥¯¥¹
+       [ja]:           X11/ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\82°ã\83©ã\83\95ã\82£ã\83\83ã\82¯ã\82¹
        [nb]:           X11/Applikasjoner/Grafikk
        [pl]:           X11/Aplikacje/Grafika
-       [pt]:           X11/Aplicações/Gráficos
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/çÒÁÆÉËÁ
+       [pt]:           X11/Aplicações/Gráficos
+       [ru]:           X11/Приложения/Графика
        [sl]:           X11/Programi/Grafika
-       [sv]:           X11/Tillämpningar/Grafik
+       [sv]:           X11/Tillämpningar/Grafik
        [uk]:           X11/Прикладні Програми/Графіка
 
 X11/Applications/Mail
-       [cs]:           X11/Aplikace/Po¹ta
+       [cs]:           X11/Aplikace/Pošta
        [da]:           X11/Programmer/Post
        [de]:           X11/Applikationen/Post
-       [es]:           X11/Aplicaciones/Correo Electrónico
+       [es]:           X11/Aplicaciones/Correo Electrónico
        [fr]:           X11/Applications/Courrier
-       [is]:           X11/Forrit/Póst
+       [is]:           X11/Forrit/Póst
        [it]:           X11/Applicazioni/Posta
        [nb]:           X11/Applikasjoner/Epost
        [pl]:           X11/Aplikacje/Poczta
-       [pt]:           X11/Aplicações/Correio Eletrônico
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/üÌÅËÔÒÏÎÎÁÑ ÐÏÞÔÁ
-       [sl]:           X11/Programi/Po¹tna
-       [sv]:           X11/Tillämpningar/Post
+       [pt]:           X11/Aplicações/Correio Eletrônico
+       [ru]:           X11/Приложения/Электронная почта
+       [sl]:           X11/Programi/Poštna
+       [sv]:           X11/Tillämpningar/Post
        [uk]:           X11/Прикладні Програми/Пошта
 
 X11/Applications/Multimedia
-       [cs]:           X11/Aplikace/Multimédia
+       [cs]:           X11/Aplikace/Multimédia
        [da]:           X11/Programmer/Multimedie
        [de]:           X11/Applikationen/Multimedien
        [es]:           X11/Aplicaciones/Multimedia
        [fr]:           X11/Applications/Multimédia
-       [is]:           X11/Forrit/Margmiðlun
+       [is]:           X11/Forrit/Margmiðlun
        [it]:           X11/Applicazioni/Multimedia
-       [ja]:           ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Þ¥ë¥Á¥á¥Ç¥£¥¢
+       [ja]:           ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\9eã\83«ã\83\81ã\83¡ã\83\87ã\82£ã\82¢
        [nb]:           X11/Programmer/Multimedia
        [pl]:           X11/Aplikacje/Multimedia
-       [pt]:           X11/Aplicações/Multimédia
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/íÕÌØÔÉÍÅÄÉÁ
-       [sl]:           X11/Programi/Veèpredstavnost
-       [sv]:           X11/Tillämpningar/Multimedia
+       [pt]:           X11/Aplicações/Multimédia
+       [ru]:           X11/Приложения/Мультимедиа
+       [sl]:           X11/Programi/Večpredstavnost
+       [sv]:           X11/Tillämpningar/Multimedia
        [uk]:           X11/Прикладні Програми/Мультимедіа
 
 X11/Applications/Networking
-       [cs]:           X11/Aplikace/Sí»ové
-       [da]:           X11/Programmer/Netværks
+       [cs]:           X11/Aplikace/Síťové
+       [da]:           X11/Programmer/Netværks
        [de]:           X11/Applikationen/Netzwerkwesen
        [es]:           X11/Aplicaciones/Red
        [fr]:           X11/Applications/Réseau
@@ -1444,41 +1444,41 @@ X11/Applications/Networking
        [it]:           X11/Applicazioni/Rete
        [nb]:           X11/Applikasjoner/Nettverks
        [pl]:           X11/Aplikacje/Sieciowe
-       [pt]:           X11/Aplicações/Rede
-       [pt_BR]:        X11/Aplicações/Rede
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/óÅÔØ
-       [sl]:           X11/Programi/Omre¾ni
-       [sv]:           X11/Tillämpningar/Nätverk
+       [pt]:           X11/Aplicações/Rede
+       [pt_BR]:        X11/Aplicações/Rede
+       [ru]:           X11/Приложения/Сеть
+       [sl]:           X11/Programi/Omrežni
+       [sv]:           X11/Tillämpningar/Nätverk
        [uk]:           X11/Прикладні Програми/Мережа
 
 X11/Applications/Publishing
-       [cs]:           X11/Aplikace/Publikování
+       [cs]:           X11/Aplikace/Publikování
        [da]:           X11/Programmer/Udgivelse
        [de]:           X11/Applikationen/Publizieren
-       [es]:           X11/Aplicaciones/Edición
+       [es]:           X11/Aplicaciones/Edición
        [fr]:           X11/Applications/Edition
        [is]:           X11/Forrit/Umbrot
        [it]:           X11/Applicazioni/Publishing
-       [ja]:           X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°
+       [ja]:           X11/ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³/ã\83\91ã\83\96ã\83ªã\83\83ã\82·ã\83³ã\82°
        [nb]:           X11/Applikasjoner/Publisering
        [pl]:           X11/Aplikacje/Publikowanie
-       [pt]:           X11/Aplicações/Publicação
-       [pt_BR]:        X11/Aplicações/Editoração
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/ôÉÐÏÇÒÁÆÉÑ
-       [sl]:           X11/Programi/Zalo¾ni¹tvo
-       [sv]:           X11/Tillämpningar/Publicering
+       [pt]:           X11/Aplicações/Publicação
+       [pt_BR]:        X11/Aplicações/Editoração
+       [ru]:           X11/Приложения/Типография
+       [sl]:           X11/Programi/Založništvo
+       [sv]:           X11/Tillämpningar/Publicering
        [uk]:           X11/Прикладні Програми/Типографія
 
 X11/Applications/Science
-       [cs]:           X11/Aplikace/Vìdecké
+       [cs]:           X11/Aplikace/Vědecké
        [de]:           X11/Applikationen/Wissenschaft
        [es]:           X11/Aplicaciones/Ciencia
        [fr]:           X11/Applications/Science
        [it]:           X11/Applicazioni/Sciencia
        [pl]:           X11/Aplikacje/Nauka
-       [pt]:           X11/Aplicações/Ciência
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/îÁÕËÁ
-       [sv]:           X11/Tillämpningar/Vetenskaplig
+       [pt]:           X11/Aplicações/Ciência
+       [ru]:           X11/Приложения/Наука
+       [sv]:           X11/Tillämpningar/Vetenskaplig
        [uk]:           X11/Прикладні Програми/Наука
 
 X11/Applications/Sound
@@ -1487,48 +1487,48 @@ X11/Applications/Sound
        [de]:           X11/Applikationen/Laut
        [es]:           X11/Aplicaciones/Sonido
        [fr]:           X11/Aplicações/Son
-       [is]:           X11/Forrit/Hljóð
+       [is]:           X11/Forrit/Hljóð
        [it]:           X11/Applicazioni/Audio
        [nb]:           X11/Applikasjoner/Lyd
-       [pl]:           X11/Aplikacje/D¼wiêk
-       [pt]:           X11/Aplicações/Som
-       [pt_BR]:        X11/Aplicações/Som
-       [ru]:           X11/ðÒÉÌÏÖÅÎÉÑ/ú×ÕË
+       [pl]:           X11/Aplikacje/Dźwięk
+       [pt]:           X11/Aplicações/Som
+       [pt_BR]:        X11/Aplicações/Som
+       [ru]:           X11/Приложения/Звук
        [sl]:           X11/Programi/Zvok
-       [sv]:           X11/Tillämpningar/Ljud
+       [sv]:           X11/Tillämpningar/Ljud
        [uk]:           X11/Прикладні Програми/Звук
 
 X11/Development/Libraries
-       [cs]:           X11/Vývojové prostøedky/Knihovny
+       [cs]:           X11/Vývojové prostředky/Knihovny
        [da]:           X11/Udvikling/Biblioteker
        [de]:           X11/Entwicklung/Bibliotheken
        [es]:           X11/Desarrollo/Bibliotecas
        [fr]:           X11/Développement/Librairies
-       [is]:           X11/Þróunartól/Aðgerðasöfn
+       [is]:           X11/Þróunartól/Aðgerðasöfn
        [it]:           X11/Sviluppo/Librerie
-       [ja]:           X11/³«È¯/¥é¥¤¥Ö¥é¥ê
+       [ja]:           X11/開発/ライブラリ
        [nb]:           X11/Applikasjoner/Biblioteker
        [pl]:           X11/Programowanie/Biblioteki
        [pt]:           X11/Desenvolvimento/Bibliotecas
        [pt_BR]:        X11/Desenvolvimento/Bibliotecas
-       [ru]:           X11/òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ
-       [sl]:           X11/Razvoj/Knji¾nice
+       [ru]:           X11/Разработка/Библиотеки
+       [sl]:           X11/Razvoj/Knjižnice
        [sv]:           X11/Utveckling/Bibliotek
        [uk]:           X11/Розробка/Бібліотеки
 
 X11/Development/Tools
-       [cs]:           X11/Vývojové prostøedky/Nástroje
-       [da]:           X11/Udvikling/Værktøj
+       [cs]:           X11/Vývojové prostředky/Nástroje
+       [da]:           X11/Udvikling/Værktøj
        [de]:           X11/Entwicklung/Tools
        [es]:           X11/Desarrollo/Herramientas
        [fr]:           X11/Développement/Outils
-       [is]:           X11/Þróunartól/Tól
+       [is]:           X11/Þróunartól/Tól
        [it]:           X11/Sviluppo/Tool
-       [ja]:           X11/³«È¯/¥Ä¡¼¥ë
-       [nb]:           X11/Applikasjoner/Verktøy
-       [pl]:           X11/Programowanie/Narzêdzia
+       [ja]:           X11/開発/ツール
+       [nb]:           X11/Applikasjoner/Verktøy
+       [pl]:           X11/Programowanie/Narzędzia
        [pt]:           X11/Desenvolvimento/Ferramentas
-       [ru]:           X11/òÁÚÒÁÂÏÔËÁ/éÎÓÔÒÕÍÅÎÔÙ
+       [ru]:           X11/Разработка/Инструменты
        [sl]:           X11/Razvoj/Orodja
        [sv]:           X11/Utveckling/Verktyg
        [uk]:           X11/Розробка/Інструменти
@@ -1539,15 +1539,15 @@ X11/Libraries
        [de]:           X11/Bibliotheken
        [es]:           X11/Bibliotecas
        [fr]:           X11/Librairies
-       [is]:           X11/Aðgerðasöfn
+       [is]:           X11/Aðgerðasöfn
        [it]:           X11/Librerie
-       [ja]:           X11/¥é¥¤¥Ö¥é¥ê
+       [ja]:           X11/ライブラリ
        [nb]:           X11/Biblioteker
        [pl]:           X11/Biblioteki
        [pt]:           X11/Bibliotecas
        [pt_BR]:        X11/Bibliotecas
-       [ru]:           X11/âÉÂÌÉÏÔÅËÉ
-       [sl]:           X11/Knji¾nice
+       [ru]:           X11/Библиотеки
+       [sl]:           X11/Knjižnice
        [sv]:           X11/Bibliotek
        [uk]:           X11/Бібліотеки
 
@@ -1557,44 +1557,44 @@ X11/Servers
        [de]:           X11/Server
        [es]:           X11/Servidores
        [fr]:           X11/Serveurs
-       [is]:           X11/Þjóna
+       [is]:           X11/Þjóna
        [it]:           X11/Server
        [nb]:           X11/Tjenere
        [pl]:           X11/Serwery
        [pt]:           X11/Servidores
-       [ru]:           X11/óÅÒ×ÅÒÙ
-       [sl]:           X11/Stre¾niki
+       [ru]:           X11/Серверы
+       [sl]:           X11/Strežniki
        [sv]:           X11/Servrar
        [uk]:           X11/Сервери
 
 X11/Window Managers
-       [cs]:           X11/Okenní mana¾ery
-       [da]:           X11/Vindueshåndtererene
+       [cs]:           X11/Okenní manažery
+       [da]:           X11/Vindueshåndtererene
        [de]:           X11/Fenstermanagern
        [es]:           X11/Administradores de Ventanas
        [fr]:           X11/Gestionnaires de fenêtres
-       [is]:           X11/Gluggastjórunum
+       [is]:           X11/Gluggastjórunum
        [it]:           X11/Window manager
-       [nb]:           X11/Vindushåndtererene
-       [pl]:           X11/Zarz±dcy okien
+       [nb]:           X11/Vindushåndtererene
+       [pl]:           X11/Zarządcy okien
        [pt]:           X11/Gestores de Janelas
-       [ru]:           X11/ïËÏÎÎÙÅ ÍÅÎÅÄÖÅÒÙ
+       [ru]:           X11/Оконные менеджеры
        [sl]:           X11/Upravljalniki
-       [sv]:           X11/Fönsterhanterarna
+       [sv]:           X11/Fönsterhanterarna
        [uk]:           X11/Віконні менеджери
 
 X11/Window Managers/Tools
-       [cs]:           X11/Okenní mana¾ery/Nástroje
-       [da]:           X11/Vindueshåndtererene/Værktøj
+       [cs]:           X11/Okenní manažery/Nástroje
+       [da]:           X11/Vindueshåndtererene/Værktøj
        [de]:           X11/Fenstermanager/Tools
        [es]:           X11/Administradores de Ventanas/Herramientas
        [fr]:           X11/Gestionnaires de fenêtres/Outils
-       [is]:           X11/Gluggastjórunum/Tól
+       [is]:           X11/Gluggastjórunum/Tól
        [it]:           X11/Window manager/Tool
-       [nb]:           X11/Vindushåndtererene/Verktøy
-       [pl]:           X11/Zarz±dcy okien/Narzêdzia
+       [nb]:           X11/Vindushåndtererene/Verktøy
+       [pl]:           X11/Zarządcy okien/Narzędzia
        [pt]:           X11/Gestores de Janelas/Ferramentas
-       [ru]:           X11/ïËÏÎÎÙÅ ÍÅÎÅÄÖÅÒÙ/éÎÓÔÒÕÍÅÎÔÙ
+       [ru]:           X11/Оконные менеджеры/Инструменты
        [sl]:           X11/Upravljalniki/Orodja
-       [sv]:           X11/Fönsterhanterarna/Verktyg
+       [sv]:           X11/Fönsterhanterarna/Verktyg
        [uk]:           X11/Віконні менеджери/Інструменти
diff --git a/rpm.noautocompressdoc b/rpm.noautocompressdoc
deleted file mode 100644 (file)
index e7bdc79..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# global list of file masks not to be compressed in DOCDIR
index f9d228c498f6f92f7cc51f614b50c03591b80c5a..4ebca67171db31f2dc25967808a5c42105df38b3 100644 (file)
--- a/rpm.spec
+++ b/rpm.spec
@@ -1,43 +1,30 @@
 #
 # TODO:
-# - make key infrastructure code fallback from keyutils to plain mode in case keyctl
-#   returns -ENOSYS
-# - add macros for some ppc, mipsel, alpha and sparc
-#
 # - when adopting, use 4.5 ticket for checklist: https://bugs.launchpad.net/pld-linux/+bug/262985
 #
 # Conditional build:
-%bcond_with    static          # build static rpm+rpmi
-%bcond_without apidocs         # don't generate documentation with doxygen
-%bcond_without python          # don't build python bindings
-%bcond_without selinux         # build without selinux support
-%bcond_without suggest_tags    # build without Suggest tag (bootstrapping)
-%bcond_with    db61            # use DB 6.1 instead of 5.2
-%bcond_with    neon            # build with HTTP/WebDAV support (neon library)
-%bcond_with    sqlite          # build with SQLite support
-%bcond_with    system_lua      # use system lua
-%bcond_without system_pcre     # use system pcre
-%bcond_with    keyutils        # build with keyutils support
-
-%if %{with sqlite}
-# Error: /lib64/librpmio-5.4.so: undefined symbol: sqlite3_enable_load_extension
-%define                sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo ERROR)
+%bcond_without apidocs         # Doxygen based API documentation
+%bcond_without python3         # Python (3) bindings
+%bcond_without plugins         # plugins (all, including: audit, imaevm, selinux, systemd)
+%bcond_without recommends_tags # use of Recommends tag (disable for bootstrapping)
+%bcond_with    imaevm          # IMA/EVM signing support (requires libimaevm from ima-evm-utils)
+%bcond_without audit           # audit plugin
+%bcond_without selinux         # SELinux plugin
+%bcond_without systemd         # systemd inhibit plugin
+%bcond_without fsverity        # fsverity plugin
+
+%define                popt_ver        1.15
+%define                sover           9.3.0
+
+%if "%{_rpmversion}" >= "4.12" && "%{_rpmversion}" < "5"
+%define        with_recommends_tags    1
 %endif
 
-# versions of required libraries
-%if %{with db61}
-%define                reqdb_pkg       db6.1
-%define                reqdb_ver       6.1
-%define                reqdb_pkgver    6.1.19
-%else
-%define                reqdb_pkg       db5.2
-%define                reqdb_ver       5.2
-%define                reqdb_pkgver    5.2.36.0-4
+%if %{without plugins}
+%undefine      with_audit
+%undefine      with_selinux
+%undefine      with_systemd
 %endif
-%define                reqpopt_ver     1.15
-%define                beecrypt_ver    2:4.2.0
-%define                sover           5.4
-
 Summary:       RPM Package Manager
 Summary(de.UTF-8):     RPM Packet-Manager
 Summary(es.UTF-8):     Gestor de paquetes RPM
@@ -46,323 +33,125 @@ Summary(pt_BR.UTF-8):     Gerenciador de pacotes RPM
 Summary(ru.UTF-8):     Менеджер пакетов от RPM
 Summary(uk.UTF-8):     Менеджер пакетів від RPM
 Name:          rpm
-Version:       5.4.15
-Release:       58
-License:       LGPL v2.1
+Version:       4.17.1.1
+Release:       7
+Epoch:         1
+License:       GPL v2 / LGPL v2.1
 Group:         Base
-# http://rpm5.org/files/rpm/rpm-5.4/rpm-5.4.15-0.20140824.src.rpm
-Source0:       %{name}-%{version}.tar.gz
-# Source0-md5: 4067f83ca8b5bf1a21e443c0cff3efa0
-# See README.cpu-os-macros how to update cpu-os-macros.a
-Source100:     cpu-os-macros.a
-Source101:     README.cpu-os-macros
-Source1:       %{name}.groups
-Source2:       macros.pld.in
-Source3:       %{name}-install-tree
-Source5:       %{name}-hrmib-cache
+Source0:       http://ftp.rpm.org/releases/rpm-4.17.x/%{name}-%{version}.tar.bz2
+# Source0-md5: 30e5806bdcb06a17cabf23d8f07b6b0f
+Source1:       ftp://ftp.pld-linux.org/dists/th/PLD-3.0-Th-GPG-key.asc
+# Source1-md5: 23914bb49fafe7153cee87126d966461
+Source2:       macros.local
+Source3:       macros.lang
+Source4:       %{name}.sysconfig
+Source5:       %{name}.groups
 Source6:       %{name}-groups-po.awk
-Source10:      %{name}.sysinfo
-Source11:      perl.prov
-Source12:      %{name}-user_group.sh
-Source13:      %{name}.sysconfig
+Source7:       %{name}-install-tree
+Source9:       %{name}-user_group.sh
 # http://svn.pld-linux.org/banner.sh/
-Source15:      banner.sh
-Source16:      ftp://ftp.pld-linux.org/dists/th/PLD-3.0-Th-GPG-key.asc
-# Source16-md5:        23914bb49fafe7153cee87126d966461
-Source18:      macros.local
-Source19:      %{name}.noautocompressdoc
-Source20:      %{name}.noautoprov
-Source21:      %{name}.noautoprovfiles
-Source22:      %{name}.noautoreq
-Source24:      %{name}.noautoreqfiles
-Source26:      %{name}db_checkversion.c
-Source27:      macros.lang
-Source28:      %{name}db_reset.c
-Source29:      dbupgrade.sh
-Source30:      prov-req-macros
-Patch0:                %{name}-branch.patch
-Patch1:                %{name}-man_pl.patch
-Patch2:                %{name}-popt-aliases.patch
-Patch3:                %{name}-nosetproctitle.patch
-Patch4:                %{name}-perl-macros.patch
-Patch5:                %{name}-perl-req-perlfile.patch
-Patch6:                %{name}-scripts-closefds.patch
-Patch8:                %{name}-gettext-in-header.patch
-Patch9:                %{name}-lua.patch
-Patch10:       %{name}-php-deps.patch
-Patch11:       %{name}-notsc.patch
-Patch12:       %{name}-hack-norpmlibdep.patch
-Patch13:       %{name}-dont-copy-descriptive-tags.patch
-Patch14:       %{name}-perl_req-INC_dirs.patch
-Patch15:       %{name}-debuginfo.patch
-Patch16:       vendor-pld.patch
-Patch17:       %{name}-old-fileconflicts-behaviour.patch
-Patch18:       %{name}-javadeps.patch
-Patch19:       %{name}-truncate-cvslog.patch
-Patch20:       %{name}-libtool-deps.patch
-Patch21:       %{name}-mimetype.patch
-Patch22:       %{name}-sparc64.patch
-Patch23:       %{name}-gendiff.patch
-Patch24:       openmp.patch
-Patch25:       %{name}-URPM-build-fix.patch
-Patch26:       %{name}-semanage.patch
-Patch27:       %{name}-helperEVR-noassert.patch
-Patch28:       %{name}-unglobal.patch
-Patch29:       %{name}-builddir-readlink.patch
-Patch30:       %{name}-changelog_order_check_nonfatal.patch
-Patch31:       %{name}-cleanbody.patch
-Patch32:       %{name}-dirdeps-macro.patch
-Patch33:       %{name}-installbeforeerase.patch
-Patch34:       %{name}-libmagic-locale.patch
-Patch35:       %{name}-namespace-compare.patch
-Patch36:       %{name}-popt-coreutils.patch
-Patch37:       %{name}-postun-nofail.patch
-Patch38:       %{name}-silence-RPM_CHAR_TYPE.patch
-Patch39:       %{name}-fix-missing-types-in-headers.patch
-Patch40:       %{name}-fix--p-interpreter-and-empty-script.patch
-Patch41:       %{name}-db_buffer_small.patch
-Patch42:       %{name}-pattern_Release.patch
-Patch43:       %{name}-fix-___build_pre-macro.patch
-Patch44:       %{name}-missing-patch-file-fails-build.patch
-Patch45:       %{name}-remove-misleading-missing-patch-message.patch
-Patch46:       %{name}-rpm2cpio.patch
-Patch47:       %{name}-query-always-noisy.patch
-Patch48:       %{name}-verify-ghosts-broken-logic.patch
-Patch49:       %{name}-python-enable-compat-RPMSENSE.patch
-Patch50:       %{name}-dont-treat-gstreamer-modules-as-font.patch
-Patch51:       %{name}-gst-inspect-typo.patch
-Patch52:       %{name}-null-term-ascii-digest.patch
-Patch53:       %{name}-lua-enable-extra-libs.patch
-Patch54:       %{name}-fix-filedigests-verify.patch
-Patch55:       %{name}-disable-hmac-verify.patch
-Patch56:       %{name}-macros.patch
-Patch57:       %{name}-db5.2.patch
-Patch58:       %{name}-preserve-iterator.patch
-Patch59:       gcc6-stdlib.patch
-Patch60:       %{name}-python-sitescriptdir.patch
-Patch61:       %{name}-clean-docdir.patch
-Patch62:       %{name}-DB_CONFIG.patch
-Patch63:       %{name}-pythoneggs.patch
-Patch64:       %{name}-fix-compress-doc.patch
-Patch65:       %{name}-parseSpec-skip-empty-tags.patch
-Patch66:       %{name}-payload-use-hashed-inode.patch
-Patch67:       %{name}-repackage-dont-force-max-compression.patch
-Patch68:       rpm-bug-420.patch
-Patch70:       python-%{name}sense-missingok.patch
-Patch71:       %{name}-changelog-encoding.patch
-Patch72:       %{name}-preserve-tag-type.patch
-Patch74:       %{name}-fix-internal-lua-build.patch
-Patch75:       %{name}-double_check_file_deps.patch
-Patch77:       %{name}-lua-expat.patch
-Patch78:       %{name}-double_check_unpackaged_subdirs.patch
-Patch79:       %{name}-rpmspec.patch
-Patch80:       %{name}-revert-gpg-argv-parsing.patch
-Patch81:       %{name}-perl-magic.patch
-Patch82:       %{name}-5.4.15-use-DSA-sig.patch
-Patch83:       %{name}-ignore-missing-macro-files.patch
-Patch84:       x32.patch
-Patch85:       rpm-CVE-2013-6435.patch
-Patch86:       rpm-CVE-2014-8118.patch
-Patch87:       %{name}-file-output-for-ELF.patch
-Patch88:       %{name}-rpmtdnext.patch
-Patch89:       disable-header-verification.patch
-Patch90:       %{name}-cppcompat.patch
-Patch91:       py-disable-fetch.patch
-Patch92:       fast_python_deps.patch
-Patch93:       python2_explicit.patch
-Patch94:       do_not_write_before_macro_buffer.patch
-Patch95:       rpm-python-spec-header.patch
-Patch96:       skip-ldconfig-optimization.patch
-Patch97:       glibc.patch
-Patch98:       extension-based-compression-detection.patch
-Patch99:       %{name}-gpg-pinentry.patch
-Patch100:      dont-install-useless-scripts.patch
-
-# Patches imported from Mandriva
-
-# status: ready to merge, it's already been merged on HEAD, so commiting it to rpm-5_4
-# would basically just mean backporting it..
-Patch1000:     %{name}-5.4.4-add-_specfile-macro.patch
-# status: needs to be cleaned up and properly reviewed together with rest
-# of the patches related to dependency generation
-Patch1001:     %{name}-5.4.9-avoid-dependencies-on-self.patch
-# status: probably ready to merge
-Patch1002:     %{name}-5.4.4-pkgconfigdeps-check-path.patch
-# status: probably okay to merge, but discuss on rpm-devel first
-Patch1003:     %{name}-5.4.4-glob-wildcards-for-loading-macro-files.patch
-# status: needs to be discussed
-Patch1004:     %{name}-5.4.4-allow-installation-of-repackaged-rpms.patch
-# status: ready to merge
-Patch1005:     %{name}-5.4.8-dont-show-suggests-with-requires.patch
-# status: ready for merge
-Patch1006:     %{name}-5.4.9-strip-buildroot-away-from-duplicate-files-list.patch
-# status: probably okay to merge, but discuss on rpm-devel first
-Patch1007:     %{name}-5.4.10-duplicate_files_terminate_build.patch
-# status: same as above
-Patch1008:     %{name}-5.4.10-unpackaged_subdirs_terminate_build.patch
-# mdvbz#64898
-# status: uncertain, might be okay to merge, discuss on rpm-devel first
-Patch1009:     %{name}-5.4.4-rpmbuild-withoutclean.patch
-# no sense in having an additional dependency on 'pkgconfig' on all packages that
-# have a pkgconfig file, it's not needed for them to be made useful and anything
-# actuallly using pkgconfig for this purpose will pull it in as a dependency anyways...
-# status: might be okay to merge, but discuss on rpm-devel first
-Patch1010:     %{name}-5.4.4-drop-useless-auto-generated-pkgconfig-dependency.patch
-# status: ready for merge
-Patch1011:     %{name}-5.4.4-fix-rpmconstant-to-always-use-LC_CTYPE-C-for-case-conversion.patch
-# $RPM_BUILD_DIR isn't necessarily the same as $PWD, it's %%{_builddir}, not
-# %%{_builddir}/%%{?buildsubdir}, messing up paths in debug packages created..
-# status: needs to be discussed and investigated a bit better..
-Patch1012:     %{name}-5.4.4-pass-_builddir-properly-to-find-debuginfo.patch
-# status: probably okay to merge, but discuss on rpm-devel first
-Patch1013:     %{name}-5.4.10-files-listed-twice-terminates-build.patch
-# status: keep locally
-Patch1015:     %{name}-5.4.9-keep-loading-script-macros.patch
-# status: same as for other dep gen patches
-Patch1016:     %{name}-5.4.9-update-rpmfc-when-removing-dependencies-on-self.patch
-# status: idem
-Patch1017:     %{name}-5.4.9-rpmfc-extract-dependencies-for-all-files.patch
-# status: probably okay to merge
-Patch1019:     %{name}-5.4.5-python-export-spec-macros.patch
-# status: idem
-Patch1020:     %{name}-5.4.9-font-provides.patch
-# stauus: idem
-Patch1021:     %{name}-5.4.7-kmod-dependencies.patch
-# status: probably okay to merge, discuss on rpm-devel first
-Patch1022:     %{name}-5.4.5-skip-dependencies-for-character-devices.patch
-# status: probably okay to merge
-Patch1024:     %{name}-5.4.5-rpmfc-apply-python-coloring-from-magic.patch
-# status: probably okay to merge
-Patch1026:     %{name}-5.4.10-dont-try-generate-rpmfc-dependencies-from-doc-files.patch
-# status: ready
-Patch1027:     %{name}-5.4.7-fix-generation-of-ruby-abi-provides.patch
-# crash reproducable with 'rpm -qa --triggers'
-# status: ready
-Patch1028:     %{name}-5.4.7-hdrfmt-fix-unitialized-argv-element.patch
-# status: same as for other dep gen patches
-Patch1029:     %{name}-5.4.7-dont-consider-trigger-dependencies-as-overlapping.patch
-# status: ready
-Patch1030:     %{name}-5.4.7-fix-minor-memleaks.patch
-# status: ready
-Patch1031:     %{name}-5.4.9-mire-fix-strings-lacking-null-terminator.patch
-# status: ready
-Patch1032:     %{name}-5.4.9-rpmpython-fix-input.patch
-# status: ready
-Patch1033:     %{name}-5.4.7-no-seqid_init-on-rdonly-database.patch
-# status: probably ready for merging
-Patch1034:     %{name}-5.4.9-avoid-double-slash-in-path-for-dirname-filetrigger-matching.patch
-# status: probably ready to merge, discuss on rpm-devel first
-Patch1035:     %{name}-5.4.9-fix-verify-segfault.patch
-# Due to rpmdav/neon being written in a different fashion than other rpmio clients,
-# the inconsistent behaviour affects code elsewhere which expects consistent behaviour,
-# with the result being that when unable to download files, neon will save error
-# page as the target file.
-# status: should go upstream, but uncertain about "correct" fix, ie. this is
-# more of a workaround, while rewriting rpmdav code to behave consistently
-# would be "the right thing to do". Yet I'm not fully able to grasp all of the
-# code and don't want to spend more time just to get the API..
-Patch1037:     %{name}-5.4.10-fix-neon-saving-error-pages-as-target-file.patch
-# As the transaction flags for ignoring arch & os are no longer used, there's
-# currently no way to ignore arch & os of packages anymore. This patch adds
-# support for doing this again by defining rpm variables and overriding
-# --ignorearch & --ignoreos to set these.
-# status: needs to be discussed upstream before thinking about merging
-Patch1038:     %{name}-5.4.10-support-ignore-arch-and-os-again.patch
-# status: ready for merge
-Patch1039:     %{name}-5.4.4-fix-same-package-with-epoch-possible-to-upgrade.patch
-# we want that patch too, a bit of builder infrastructure relies on NOSIGNATURES
-Patch1040:     %{name}-5.4.9-support-signatures-and-digest-disablers.patch
-# lack insight on actual functionality, which anyways seems broken, so let's
-# disable it to avoid errors from berkeley db..
-# status: keep locally
-Patch1041:     %{name}-5.4.9-disable-l10ndir.patch
-# status: ready for merge
-Patch1042:     %{name}-5.4.9-fix-rpm_qa-pattern.patch
-# warning: introduces memory leak
-Patch1043:     %{name}-5.4.12-copy-Value-string.patch
-Patch1044:     %{name}-5.4.12-fix-rpmlua-print.patch
-Patch1045:     %{name}-5.4.12-fix-rpmpython-module-import-init.patch
-Patch1046:     %{name}-5.4.12-truncate-output-buffer-after-use.patch
-Patch1047:     %{name}-5.4.13-perl-bindings-do-not-use-xmalloc.patch
-# proyvind:
-# there's a rpmdbchk tool I wrote a while back, which might help you. although
-# the incidents it's able to deal with is rather limited ATM... it might help
-# you out, if not and you'll be able to solve yer problem, you could take a
-# stab at adding support for fixing your specific problem to the util ;)
-# https://abf.io/openmandriva/rpm/raw/master/rpm-5.4.14-rpmdbchk.patch
-Patch1048:     %{name}-5.4.14-rpmdbchk.patch
-# https://abf.io/openmandriva/rpm/raw/master/rpm-5.4.14-no-assert-abort-with-broken-headers.patch
-Patch1049:     %{name}-5.4.14-no-assert-abort-with-broken-headers.patch
-
-Patch1050:     python-libx32.patch
-
-URL:           http://rpm5.org/
-BuildRequires: %{reqdb_pkg}-devel >= %{reqdb_pkgver}
-%if %{with sqlite}
-BuildRequires: sqlite3-devel
-%else
-BuildRequires: %{reqdb_pkg}-sql-devel >= %{reqdb_pkgver}
-%endif
+Source10:      banner.sh
+Source11:      %{name}.noautoprov
+Source12:      %{name}.noautoprovfiles
+Source13:      %{name}.noautoreq
+Source14:      %{name}.noautoreqfiles
+Source15:      perl.prov
+Source16:      libtooldeps.sh
+Source17:      libtool.attr
+Patch0:                %{name}-man_pl.patch
+Patch1:                %{name}-popt-aliases.patch
+Patch2:                %{name}-perl-macros.patch
+Patch3:                %{name}-perl-req-perlfile.patch
+Patch4:                %{name}-scripts-closefds.patch
+Patch5:                %{name}-dir-macros-relative.patch
+Patch6:                %{name}-perl_req-INC_dirs.patch
+Patch7:                %{name}-debuginfo.patch
+Patch9:                %{name}-builddir-readlink.patch
+Patch10:       %{name}-changelog_order_check_nonfatal.patch
+Patch11:       %{name}-postun-nofail.patch
+Patch12:       %{name}-clean-docdir.patch
+Patch13:       %{name}-perl-magic.patch
+Patch14:       %{name}-ignore-missing-macro-files.patch
+Patch15:       x32.patch
+Patch16:       rpm5-db-compat.patch
+Patch17:       python-internal-build.patch
+Patch18:       missing-macros.patch
+Patch19:       pkgconfig.patch
+Patch20:       uname-deps.patch
+Patch21:       arm_abi.patch
+Patch22:       ix86-platforms.patch
+Patch23:       shortcircuited-deps.patch
+Patch24:       cpuinfo-deps.patch
+Patch25:       rpmio-read-proc-files.patch
+Patch26:       allow-at-in-ver-rel.patch
+Patch28:       default-patch-flags.patch
+Patch29:       %{name}-noarch_py_prov.patch
+Patch30:       missing-ghost-terminate-build.patch
+Patch31:       missing-doc-terminate-build.patch
+Patch32:       noexpand.patch
+Patch34:       skip-symlinks.patch
+Patch35:       pl-po.patch
+Patch36:       build-locale.patch
+Patch37:       no-exe-for-elf-req.patch
+Patch38:       gem-in-package-builddir.patch
+Patch39:       sqlite-log-crash.patch
+Patch40:       perl-heredoc-matching.patch
+URL:           https://rpm.org/
+BuildRequires: acl-devel
+%{?with_audit:BuildRequires:   audit-libs-devel}
 BuildRequires: autoconf >= 2.63
-BuildRequires: automake >= 1.4
-BuildRequires: beecrypt-devel >= %{beecrypt_ver}
+BuildRequires: automake >= 1:1.10
 BuildRequires: bzip2-devel >= 1.0.2-17
-BuildRequires: elfutils-devel >= 0.108
+%{?with_plugins:BuildRequires: dbus-devel >= 1.3}
+BuildRequires: elfutils-devel >= 0.159
 BuildRequires: gettext-tools >= 0.19.2
-%{?with_keyutils:BuildRequires:        keyutils-devel}
+%{?with_imaevm:BuildRequires:  ima-evm-utils-devel >= 1.0}
+BuildRequires: libarchive-devel
+BuildRequires: libcap-devel
+BuildRequires: libgcrypt-devel
+BuildRequires: libgomp-devel >= 6:4.5
 BuildRequires: libmagic-devel
-%if %{with selinux}
-BuildRequires: libselinux-devel >= 2.1.0
-BuildRequires: libsemanage-devel >= 2.1.0
-BuildRequires: libsepol-devel >= 2.1.0
-%endif
+%{?with_selinux:BuildRequires: libselinux-devel >= 2.1.0}
 # needed only for AM_PROG_CXX used for CXX substitution in rpm.macros
 BuildRequires: libstdc++-devel
 BuildRequires: libtool >= 1:1.4.2-9
-%if %{with neon}
-BuildRequires: libxml2-devel
-BuildRequires: neon-devel >= 0.25.5
-%endif
-%{?with_system_lua:BuildRequires:      lua52-devel >= 5.2.2}
-BuildRequires: ossp-uuid-devel
+BuildRequires: lua-devel >= 5.3
 BuildRequires: patch >= 2.2
-BuildRequires: popt-devel >= %{reqpopt_ver}
-%{?with_python:BuildRequires:  python-devel >= 1:2.3}
-BuildRequires: python-modules >= 1:2.3
-%{?with_python:BuildRequires:  rpm-pythonprov}
+BuildRequires: pkgconfig
+BuildRequires: popt-devel >= %{popt_ver}
+BuildRequires: python3-modules >= 1:3.2
+%if %{with python3}
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.750
+%endif
+BuildRequires: rpm-build >= 4.6
+BuildRequires: sqlite3-devel >= 3.22.0
 BuildRequires: tcl
 BuildRequires: xz-devel
-BuildRequires: zlib-devel
+BuildRequires: zlib-devel >= 1.0.5
+BuildRequires: zstd-devel >= 1.3.8
 %if %{with apidocs}
 BuildRequires: doxygen
 BuildRequires: ghostscript
 BuildRequires: graphviz
 BuildRequires: tetex-pdftex
 %endif
-%if %{with static}
-# Require static library only for static build
-BuildRequires: %{reqdb_pkg}-static >= %{reqdb_pkgver}
-BuildRequires: beecrypt-static >= %{beecrypt_ver}
-BuildRequires: bzip2-static >= 1.0.2-17
-BuildRequires: elfutils-static
-BuildRequires: glibc-static >= 2.2.94
-BuildRequires: libmagic-static
-%if %{with selinux}
-BuildRequires: libselinux-static >= 2.1.0
-BuildRequires: libsemanage-static >= 2.1.0
-BuildRequires: libsepol-static >= 2.1.0
-%endif
-BuildRequires: popt-static >= %{reqpopt_ver}
-BuildRequires: zlib-static
-%endif
 Requires(posttrans):   coreutils
+Requires:      %{name}-base = %{epoch}:%{version}-%{release}
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
 Requires:      FHS >= 3.0-2
-Requires:      %{name}-base = %{version}-%{release}
-Requires:      %{name}-lib = %{version}-%{release}
-Requires:      beecrypt >= %{beecrypt_ver}
-Requires:      popt >= %{reqpopt_ver}
-Obsoletes:     rpm-getdeps
-%{!?with_static:Obsoletes:     rpm-utils-static}
+Requires:      libgcrypt
+Requires:      popt >= %{popt_ver}
+Requires:      rpm-pld-macros >= 2.002
+%if %{with recommends_tags}
+Recommends:    rpm-plugin-audit
+Recommends:    rpm-plugin-prioreset
+Recommends:    rpm-plugin-syslog
+Recommends:    rpm-plugin-systemd-inhibit
+%endif
+Obsoletes:     rpm-utils-perl < 1:4.15
+Obsoletes:     rpm-utils-static < 1:4.15
 Conflicts:     glibc < 2.2.92
 # db4.6 poldek needed
 Conflicts:     poldek < 0.21-0.20070703.00.3
@@ -374,14 +163,12 @@ BuildRoot:        %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 %define                _binary_payload         w9.gzdio
 
 # don't require very fresh rpm.macros to build
-%define                __gettextize gettextize --copy --force --intl ; cp -f po/Makevars{.template,}
 %define                find_lang sh ./scripts/find-lang.sh $RPM_BUILD_ROOT
-%define                ix86    i386 i486 i586 i686 athlon pentium3 pentium4
+%define                ix86    i386 i486 i586 i686 athlon geode pentium3 pentium4
 %define                ppc     ppc ppc7400 ppc7450
 %define                x8664   amd64 ia32e x86_64
 
 %define                _rpmlibdir /usr/lib/rpm
-%define                _noautocompressdoc      RPM-GPG-KEY
 
 %description
 RPM is a powerful package manager, which can be used to build,
@@ -437,8 +224,8 @@ Summary:    RPM base package - scripts used by rpm packages themselves
 Summary(pl.UTF-8):     Podstawowy pakiet RPM - skrypty używane przez same pakiety rpm
 Group:         Base
 Requires:      filesystem
-Obsoletes:     rpm-scripts
-Obsoletes:     vserver-rpm
+Obsoletes:     rpm-scripts < 4.4
+Obsoletes:     vserver-rpm < 1
 
 %description base
 The RPM base package contains scripts used by rpm packages themselves.
@@ -457,18 +244,13 @@ Zawiera on:
 Summary:       RPMs library
 Summary(pl.UTF-8):     Biblioteki RPM-a
 Group:         Libraries
-Requires:      %{reqdb_pkg} >= %{reqdb_pkgver}
-%if %{with sqlite}
-Requires:      sqlite3 >= %{sqlite_build_version}
-%else
-Requires:      %{reqdb_pkg}-sql >= %{reqdb_pkgver}
-%endif
-Requires:      beecrypt >= %{beecrypt_ver}
+Requires:      elfutils-libs >= 0.159
 Requires:      libmagic >= 1.15-2
-%{?with_selinux:Requires:      libselinux >= 2.1.0}
-Requires:      popt >= %{reqpopt_ver}
-Provides:      rpm-db-ver = %{reqdb_ver}
-Obsoletes:     rpm-libs
+Requires:      popt >= %{popt_ver}
+Requires:      sqlite3-libs >= 3.22.0
+Requires:      zlib >= 1.0.5
+Requires:      zstd >= 1.3.8
+Obsoletes:     rpm-libs < 4.0.2-4
 # avoid SEGV caused by mixed db versions
 Conflicts:     poldek < 0.18.1-16
 
@@ -487,20 +269,27 @@ Summary(pt_BR.UTF-8):     Arquivos de inclusão e bibliotecas para programas de mani
 Summary(ru.UTF-8):     Хедеры и библиотеки для программ, работающих с rpm-пакетами
 Summary(uk.UTF-8):     Хедери та бібліотеки для програм, що працюють з пакетами rpm
 Group:         Development/Libraries
-Requires:      %{name}-lib = %{version}-%{release}
-Requires:      %{reqdb_pkg}-devel >= %{reqdb_pkgver}
-Requires:      beecrypt-devel >= %{beecrypt_ver}
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+Requires:      acl-devel
+%{?with_audit:Requires:        audit-libs-devel}
 Requires:      bzip2-devel
-Requires:      elfutils-devel
-%{?with_keyutils:Requires:     keyutils-devel}
+Requires:      elfutils-devel >= 0.159
+Requires:      libcap-devel
+Requires:      libgcrypt-devel
+Requires:      libgomp-devel >= 6:4.5
 Requires:      libmagic-devel
 %if %{with selinux}
 Requires:      libselinux-devel
 Requires:      libsemanage-devel
 Requires:      libsepol-devel
 %endif
-Requires:      popt-devel >= %{reqpopt_ver}
-Requires:      zlib-devel
+Requires:      lua-devel >= 5.3
+Requires:      popt-devel >= %{popt_ver}
+Requires:      sqlite3-devel >= 3.22.0
+Requires:      xz-devel
+Requires:      zlib-devel >= 1.0.5
+Requires:      zstd-devel >= 1.3.8
+Obsoletes:     rpm-static < 1:4.15
 
 %description devel
 The RPM packaging system includes C libraries that make it easy to
@@ -547,61 +336,16 @@ ferramentas que precisem de conhecimento profundo de pacotes RPM.
 призначена для полегшення створення графічних пакетних менеджерів та
 інших утиліт, що працюють з пакетами RPM.
 
-%package static
-Summary:       RPM static libraries
-Summary(de.UTF-8):     RPMs statische Libraries
-Summary(pl.UTF-8):     Biblioteki statyczne RPM-a
-Summary(pt_BR.UTF-8):  Bibliotecas estáticas para o desenvolvimento de aplicações RPM
-Summary(ru.UTF-8):     Статическая библиотека для программ, работающих с rpm-пакетами
-Summary(uk.UTF-8):     Статична бібліотека для програм, що працюють з пакетами rpm
-Group:         Development/Libraries
-Requires:      %{name}-devel = %{version}-%{release}
-Requires:      %{reqdb_pkg}-static >= %{reqdb_pkgver}
-Requires:      beecrypt-static >= %{beecrypt_ver}
-Requires:      bzip2-static
-Requires:      elfutils-static
-%{?with_keyutils:Requires:     keyutils-static}
-Requires:      libmagic-static
-%if %{with selinux}
-Requires:      libselinux-static
-Requires:      libsemanage-static
-Requires:      libsepol-static
-%endif
-Requires:      popt-static >= %{reqpopt_ver}
-Requires:      zlib-static
-
-%description static
-RPM static libraries.
-
-%description static -l de.UTF-8
-RPMs statische Libraries.
-
-%description static -l pl.UTF-8
-Biblioteki statyczne RPM-a.
-
-%description static -l pt_BR.UTF-8
-Bibliotecas estáticas para desenvolvimento.
-
-%description static -l ru.UTF-8
-Система управления пакетами RPM содержит библиотеку C, которая
-упрощает манипуляцию пакетами RPM и соответствующими базами данных.
-Это статическая библиотека RPM.
-
-%description static -l uk.UTF-8
-Система керування пакетами RPM містить бібліотеку C, котра спрощує
-роботу з пакетами RPM та відповідними базами даних. Це статична
-бібліотека RPM.
-
 %package utils
 Summary:       Additional utilities for managing RPM packages and database
 Summary(de.UTF-8):     Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken
 Summary(pl.UTF-8):     Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami
 Group:         Applications/File
-Requires:      %{name} = %{version}-%{release}
-Requires:      popt >= %{reqpopt_ver}
-%if %{with suggest_tags}
-Suggests:      bzip2
-Suggests:      gzip
+Requires:      %{name} = %{epoch}:%{version}-%{release}
+Requires:      popt >= %{popt_ver}
+%if %{with recommends_tags}
+Recommends:    bzip2
+Recommends:    gzip
 %endif
 Conflicts:     filesystem-debuginfo < 3.0-16
 
@@ -614,42 +358,6 @@ Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken.
 %description utils -l pl.UTF-8
 Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami.
 
-%package utils-perl
-Summary:       Additional utilities for managing RPM packages and database
-Summary(de.UTF-8):     Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken
-Summary(pl.UTF-8):     Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami
-Group:         Applications/File
-Requires:      %{name}-utils = %{version}-%{release}
-Requires:      popt >= %{reqpopt_ver}
-
-%description utils-perl
-Additional utilities for managing RPM packages and database.
-
-%description utils-perl -l de.UTF-8
-Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken.
-
-%description utils-perl -l pl.UTF-8
-Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami.
-
-%package utils-static
-Summary:       Static rpm utilities
-Summary(pl.UTF-8):     Statyczne narzędzia rpm
-Group:         Applications/System
-Requires:      %{name} = %{version}-%{release}
-
-%description utils-static
-Static rpm utilities for repairing system in case something with
-shared libraries used by rpm become broken. Currently it contains rpmi
-binary, which can be used to install/upgrade/remove packages without
-using shared libraries (well, in fact with exception of NSS modules).
-
-%description utils-static -l pl.UTF-8
-Statyczne narzędzia rpm do naprawy systemu w przypadku zepsucia czegoś
-związanego z bibliotekami współdzielonymi używanymi przez rpm-a.
-Aktualnie pakiet zawiera binarkę rpmi, którą można użyć do instalacji,
-uaktualniania lub usuwania pakietów bez udziału bibliotek statycznych
-(z wyjątkiem modułów NSS).
-
 %package build
 Summary:       Scripts for building binary RPM packages
 Summary(de.UTF-8):     Scripts fürs Bauen binärer RPM-Pakete
@@ -660,18 +368,19 @@ Summary(uk.UTF-8):        Скрипти та утиліти, необхідні для
 Group:         Applications/File
 Requires(pretrans):    coreutils
 Requires(pretrans):    findutils
-Requires:      %{name}-pld-macros-build >= 1.744-3
-Requires:      %{name}-utils = %{version}-%{release}
+Requires:      %{name}-utils = %{epoch}:%{version}-%{release}
 Requires:      /bin/id
 Requires:      awk
 Requires:      bzip2
 Requires:      chrpath >= 0.10-4
 Requires:      cpio
+Requires:      debugedit
 Requires:      diffutils
 Requires:      elfutils
 Requires:      file >= 4.17
 Requires:      fileutils
 Requires:      findutils
+Requires:      rpm-pld-macros-build >= 1.744
 %ifarch athlon
 Requires:      gcc >= 3.0.3
 %else
@@ -688,7 +397,6 @@ Requires:   tar >= 1:1.22
 Requires:      textutils
 Requires:      which
 Requires:      xz
-Provides:      rpmbuild(monoautodeps)
 Provides:      rpmbuild(noauto) = 3
 %ifarch %{x8664}
 Conflicts:     automake < 1:1.7.9-2
@@ -721,7 +429,7 @@ Summary:    Additional utilities for checking Perl provides/requires in RPM package
 Summary(de.UTF-8):     Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen
 Summary(pl.UTF-8):     Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w pakietach RPM
 Group:         Applications/File
-Requires:      %{name} = %{version}-%{release}
+Requires:      %{name} = %{epoch}:%{version}-%{release}
 Requires:      perl-Encode
 Requires:      perl-devel
 Requires:      perl-modules
@@ -737,62 +445,188 @@ Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen.
 Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w
 pakietach RPM.
 
-%package pythonprov
-Summary:       Python macros, which simplifies creation of RPM packages with Python software
-Summary(pl.UTF-8):     Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w Pythonie
-Group:         Applications/File
-Requires:      %{name} = %{version}-%{release}
-Requires:      python
-Requires:      python-setuptools
-Requires:      python-modules
-
-%description pythonprov
-Python macros, which simplifies creation of RPM packages with Python
-software.
-
-%description pythonprov -l pl.UTF-8
-Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w
-Pythonie.
-
-%package -n python-rpm
-Summary:       Python interface to RPM library
-Summary(pl.UTF-8):     Pythonowy interfejs do biblioteki RPM-a
-Summary(pt_BR.UTF-8):  Módulo Python para aplicativos que manipulam pacotes RPM
+%package -n python3-rpm
+Summary:       Python 3 interface to RPM library
+Summary(pl.UTF-8):     Interfejs Pythona 3 do biblioteki RPM-a
+Summary(pt_BR.UTF-8):  Módulo Python 3 para aplicativos que manipulam pacotes RPM
 Group:         Development/Languages/Python
-Requires:      %{name} = %{version}-%{release}
-Requires:      python
-Obsoletes:     rpm-python
-
-%description -n python-rpm
-The rpm-python package contains a module which permits applications
-written in the Python programming language to use the interface
+Requires:      %{name} = %{epoch}:%{version}-%{release}
+Requires:      python3
+Obsoletes:     python-rpm < 1:4.16.0
+Obsoletes:     rpm-python < 4.0.2-50
+
+%description -n python3-rpm
+The python3-rpm package contains a module which permits applications
+written in the Python 3 programming language to use the interface
 supplied by RPM (RPM Package Manager) libraries.
 
-This package should be installed if you want to develop Python
+This package should be installed if you want to develop Python 3
 programs that will manipulate RPM packages and databases.
 
-%description -n python-rpm -l pl.UTF-8
-Pakiet rpm-python zawiera moduł, który pozwala aplikacjom napisanym w
-Pythonie na używanie interfejsu dostarczanego przez biblioteki RPM-a.
+%description -n python3-rpm -l pl.UTF-8
+Pakiet python3-rpm zawiera moduł, który pozwala aplikacjom napisanym w
+Pythonie 3 na używanie interfejsu dostarczanego przez biblioteki
+RPM-a.
 
 Pakiet ten powinien zostać zainstalowany, jeśli chcesz pisać w
-Pythonie programy manipulujące pakietami i bazami danych rpm.
+Pythonie programy manipulujące pakietami i bazami danych rpm.
 
-%description -n python-rpm -l pt_BR.UTF-8
-O pacote rpm-python contém um módulo que permite que aplicações
-escritas em Python utilizem a interface fornecida pelas bibliotecas
+%description -n python3-rpm -l pt_BR.UTF-8
+O pacote python3-rpm contém um módulo que permite que aplicações
+escritas em Python utilizem a interface fornecida pelas bibliotecas
 RPM (RPM Package Manager).
 
 Esse pacote deve ser instalado se você quiser desenvolver programas em
-Python para manipular pacotes e bancos de dados RPM.
+Python 3 para manipular pacotes e bancos de dados RPM.
+
+%package plugin-audit
+Summary:       Plugin for logging audit events on package operations
+Summary(pl.UTF-8):     Wtyczka do logowania zdarzeń audytowych przy operacjach na pakietach
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-audit
+Plugin for libaudit support.
+
+%description plugin-audit -l pl.UTF-8
+Wtyczka do obsługi libaudit.
+
+%package plugin-syslog
+Summary:       Plugin for syslog functionality
+Summary(pl.UTF-8):     Wtyczka do funkcjonalności sysloga
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-syslog
+This plugin exports RPM actions to the system log.
+
+%description plugin-syslog -l pl.UTF-8
+Ta wtyczka eksportuje akcje RPM-a do logu systemowego.
+
+%package plugin-systemd-inhibit
+Summary:       Plugin for systemd inhibit functionality
+Summary(pl.UTF-8):     Wtyczka do funkcjonalności systemd inhibit
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+Requires:      dbus >= 1.3
+
+%description plugin-systemd-inhibit
+This plugin blocks systemd from entering idle, sleep or shutdown while
+an rpm transaction is running using the systemd-inhibit mechanism.
+
+%description plugin-systemd-inhibit -l pl.UTF-8
+Ta wtyczka blokuje systemd przed wejściem w stan bezczynności (idle),
+uśpienia (sleep) lub zamykania (shutdown) podczas trwania transakcji
+RPM-a, korzystając z mechanizmu systemd-inhibit.
+
+%package plugin-ima
+Summary:       Plugin for IMA file signatures
+Summary(pl.UTF-8):     Wtyczka do sygnatur plików IMA
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-ima
+This plugin adds support for enforcing and verifying IMA file
+signatures in an rpm.
+
+%description plugin-ima -l pl.UTF-8
+Ta wtyczka dodaje obsługę wymuszania i weryfikacji podpisów plików IMA
+w RPM-ie.
+
+%package plugin-prioreset
+Summary:       Plugin for resetting scriptlet priorities for SysV init
+Summary(pl.UTF-8):     Wtyczka do resetowania priorytetu skryptletów przy inicie SysV
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-prioreset
+This plugin is useful on legacy SysV init systems if you run rpm
+transactions with nice/ionice priorities. Should not be used on
+systemd systems.
+
+%description plugin-prioreset -l pl.UTF-8
+Ta wtyczka jest przydatna w systemach ze starym procesem init w wersji
+SysV, jeżeli transakcje RPM-a są uruchamiane z priorytetami
+nice/ionice. Nie powinna być używana w systemach z systemd.
+
+%package plugin-selinux
+Summary:       Plugin for SELinux functionality
+Summary(pl.UTF-8):     Wtyczka do funkcjonalności SELinux
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+Requires:      libselinux >= 2.1.0
+
+%description plugin-selinux
+Plugin for SELinux functionality.
+
+%description plugin-selinux -l pl.UTF-8
+Wtyczka do funkcjonalności SELinux.
+
+%package plugin-fsverity
+Summary:       Plugin for fsverity file signatures
+Summary(pl.UTF-8):     Wtyczka do sygnatur plików fsverity
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-fsverity
+Plugin for fsverity file signatures.
+
+%description plugin-fsverity -l pl.UTF-8
+Wtyczka do sygnatur plików fsverity.
+
+%package plugin-fapolicyd
+Summary:       Plugin for fapolicyd support
+Summary(pl.UTF-8):     Wtyczka do obsługi fapolicyd
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-fapolicyd
+Plugin for fapolicyd support.
+
+See https://people.redhat.com/sgrubb/fapolicyd/ for information about
+the fapolicyd daemon.
+
+%description plugin-fapolicyd -l pl.UTF-8
+Wtyczka do obsługi fapolicyd.
+
+Informacje na temat demona fapolicyd można znaleźć pod adresem
+<https://people.redhat.com/sgrubb/fapolicyd/>.
+
+%package plugin-dbus-announce
+Summary:       Plugin for announcing transactions on the DBUS
+Summary(pl.UTF-8):     Wtyczka ogłaszająca transakcje przez DBUS
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description plugin-dbus-announce
+The plugin announces basic information about rpm transactions to the
+system DBUS - like packages installed or removed. Other programs can
+subscribe to the signals to get notified when packages on the system
+change.
+
+%description plugin-dbus-announce -l pl.UTF-8
+Ta wtyczka ogłasza przez podstawowe szynę systemową DBUS informacje o
+transakcjach RPM-a, takie jak pakiety, które są instalowane lub
+usuwane. Inne programy mogą zasubskrybować sygnały powiadamiające o
+zmianach w pakietach systemowych.
+
+%package sign
+Summary:       Package signing support
+Summary(pl.UTF-8):     Obsługa podpisywania pakietów
+Group:         Base
+Requires:      %{name}-lib = %{epoch}:%{version}-%{release}
+
+%description sign
+This package contains support for digitally signing RPM packages.
+
+%description sign -l pl.UTF-8
+Ten pakiet zawiera obsługę cyfrowego podpisywania pakietów RPM.
 
 %package apidocs
 Summary:       RPM API documentation and guides
 Summary(pl.UTF-8):     Documentacja API RPM-a i przewodniki
 Group:         Documentation
-%if "%{_rpmversion}" >= "5"
 BuildArch:     noarch
-%endif
 
 %description apidocs
 Documentation for RPM API and guides in HTML format generated from rpm
@@ -804,28 +638,20 @@ Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze
 
 %prep
 %setup -q -n %{name}-%{version}%{?subver}
-install -d platform
-cd platform
-ar x %{SOURCE100}
-cd -
-
-#patch0 -p1
+%patch0 -p1
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
-%patch6 -p1
-%patch8 -p1
-%{?with_system_lua:%patch9 -p1}
+%patch6 -p0
+%patch7 -p1
+#%patch9 -p1
 %patch10 -p1
-%ifnarch i386 i486
-# enable TSC for capable archs
 %patch11 -p1
-%endif
 %patch12 -p1
 %patch13 -p1
-%patch14 -p0
+%patch14 -p1
 %patch15 -p1
 %patch16 -p1
 %patch17 -p1
@@ -833,20 +659,16 @@ cd -
 %patch19 -p1
 %patch20 -p1
 %patch21 -p1
-%ifarch sparc64
 %patch22 -p1
-%endif
 %patch23 -p1
 %patch24 -p1
 %patch25 -p1
 %patch26 -p1
-%patch27 -p1
 %patch28 -p1
-%patch29 -p1
+#%patch29 -p1
 %patch30 -p1
 %patch31 -p1
 %patch32 -p1
-%patch33 -p1
 %patch34 -p1
 %patch35 -p1
 %patch36 -p1
@@ -854,455 +676,187 @@ cd -
 %patch38 -p1
 %patch39 -p1
 %patch40 -p1
-%{?with_db61:%patch41 -p1}
-%patch42 -p1
-%patch43 -p1
-%patch44 -p1
-%patch45 -p1
-%patch46 -p1
-%patch47 -p1
-%patch48 -p1
-%patch49 -p1
-%patch50 -p1
-%patch51 -p1
-%patch52 -p0
-%patch53 -p1
-%patch54 -p1
-%patch55 -p1
-%patch56 -p1
-%{!?with_db61:%patch57 -p1}
-%patch58 -p1
-%patch59 -p1
-%patch60 -p1
-%patch61 -p1
-%patch62 -p1
-%patch63 -p1
-%patch64 -p1
-%patch65 -p1
-%patch66 -p1
-%patch67 -p1
-%patch68 -p1
-%patch70 -p1
-%patch71 -p1
-%patch72 -p1
-%patch74 -p1
-%patch75 -p1
-%patch77 -p0
-%patch78 -p1
-%patch79 -p1
-%patch80 -p1
-%patch81 -p0
-%patch82 -p1
-%patch84 -p1
-%patch85 -p1
-%patch86 -p1
-%patch87 -p1
-%patch88 -p1
-%patch89 -p1
-%patch90 -p1
-%patch91 -p1
-%patch99 -p1
-
-%patch1000 -p1
-%patch1001 -p1
-%patch1002 -p1
-%patch1003 -p1
-%patch1004 -p1
-%patch1005 -p1
-%patch1006 -p1
-%patch1007 -p1
-%patch1008 -p1
-%patch1009 -p1
-%patch1010 -p1
-%patch1011 -p1
-%patch1012 -p1
-%patch1013 -p1
-%patch1015 -p1
-%patch1016 -p1
-%patch1017 -p1
-%patch1019 -p1
-%patch1020 -p1
-%patch1021 -p1
-%patch1022 -p1
-%patch1024 -p1
-%patch1026 -p1
-%patch1027 -p1
-%patch1028 -p1
-%patch1029 -p1
-%patch1030 -p1
-%patch1031 -p1
-%patch1032 -p1
-%patch1033 -p1
-%patch1034 -p1
-%patch1035 -p1
-%patch1037 -p1
-%patch1038 -p1
-%patch1039 -p1
-%patch1040 -p1
-# don't delete, may be usefull if jbj descides to enable this again
-#%patch1041 -p1
-%patch1042 -p1
-%patch1043 -p1
-%patch1044 -p1
-%patch1045 -p1
-%patch1046 -p1
-%patch1047 -p1
-%patch1048 -p1
-%patch1049 -p1
-
-%patch83 -p1
-%patch92 -p1
-%patch93 -p1
-%patch94 -p1
-%patch95 -p1
-%patch96 -p1
-%patch97 -p1
-%patch98 -p1
-%patch100 -p1
-
-%patch1050 -p1
-
-install %{SOURCE2} macros/pld.in
-install %{SOURCE11} scripts/perl.prov.in
-
-rm scripts/find-php*
-
-%{__mv} -f scripts/perl.req{,.in}
 
-# generate Group translations to *.po
-awk -f %{SOURCE6} %{SOURCE1}
+%{__rm} po/*.gmo
 
-install %{SOURCE26} tools/rpmdb_checkversion.c
-install %{SOURCE28} tools/rpmdb_reset.c
+install %{SOURCE15} scripts/perl.prov.in
 
-for extlib in beecrypt neon %{?with_system_pcre:pcre} popt; do
-       [ -d $extlib ] && %{__rm} -r $extlib
-done
+%{__mv} scripts/perl.req{,.in}
+
+# generate Group translations to *.po
+awk -f %{SOURCE6} %{SOURCE5}
 
 %build
 %{__libtoolize}
-#%{__autopoint}
 %{__aclocal}
 %{__autoheader}
 %{__autoconf}
 %{__automake}
 
 # rpm checks for CPU type at runtime, but it looks better
-sed -i \
+%{__sed} -i \
        -e 's|@host@|%{_target_cpu}-%{_target_vendor}-%{_target_os}|' \
        -e 's|@host_cpu@|%{_target_cpu}|' \
        -e 's|@host_os@|%{_target_os}|' \
-       macros/macros.in
+       macros.in
 
-%{?with_system_lua:CPPFLAGS="-I/usr/include/lua51 %{rpmcppflags}"}
 %configure \
+       PYTHON=python3 \
        WITH_PERL_VERSION=no \
        __GST_INSPECT=%{_bindir}/gst-inspect-1.0 \
        __GPG=%{_bindir}/gpg \
+       --enable-bdb-ro \
+       --enable-ndb \
+       %{!?with_plugins:--disable-plugins} \
+       %{!?with_systemd:--disable-inhibit-plugin} \
        --disable-silent-rules \
-       --enable-shared \
-       --enable-static \
-       %{!?with_apidocs:--without-apidocs} \
-       --with-beecrypt=external \
-       --with-bugreport="http://bugs.pld-linux.org/" \
-       --with-bzip2=external \
-       --with-db=external \
-       --with-dbapi=db \
-       --with-file=external \
-       --with-keyutils=%{?with_keyutils:external}%{!?with_keyutils:no} \
-       --with-libelf \
-       --with-lua=%{!?with_system_lua:internal}%{?with_system_lua:external} \
-       --with-lzma=external \
-       --with-neon=%{?with_neon:external}%{!?with_neon:no} \
-       --with-path-macros='%{_rpmlibdir}/macros:%{_rpmlibdir}/macros.d/pld:%{_rpmlibdir}/pld/macros:%{_rpmlibdir}/%%{_target}/macros:%{_rpmlibdir}/macros.build:%{_sysconfdir}/rpm/macros.*:%{_sysconfdir}/rpm/macros:%{_sysconfdir}/rpm/%%{_target}/macros:%{_sysconfdir}/rpm/macros.d/*.macros:~/etc/.rpmmacros:~/.rpmmacros' \
-       --without-path-versioned \
-       --with-pcre=%{!?with_system_pcre:internal}%{?with_system_pcre:external} \
-       --with-popt=external \
-       %{?with_python:--with-python=%{py_ver} --with-python-lib-dir=%{py_sitedir}} \
-       %{!?with_python:--without-python} \
-       --with-selinux=%{!?with_selinux:no}%{?with_selinux:external} \
-       --with-semanage=%{!?with_selinux:no}%{?with_selinux:external} \
-       --with-sepol=%{!?with_selinux:no}%{?with_selinux:external} \
-       --with-sqlite=%{?with_sqlite:yes}%{!?with_sqlite:no} \
-       --with-uuid=%{_libdir}:%{_includedir}/ossp-uuid \
-       --with-vendor=pld \
-       --with-xz=external \
-       --with-zlib=external
+       --enable-sqlite \
+       --enable-zstd \
+       --with-acl \
+       --with-archive \
+       --with-audit%{!?with_audit:=no} \
+       --with-cap \
+       --with-fapolicyd \
+       %{?with_imaevm:--with-imaevm} \
+       %{?with_python3:--enable-python} \
+       --with-selinux%{!?with_selinux:=no} \
+       --with-vendor=pld
 
 %{__make}
 
-%{?with_apidocs:%{__make} apidocs}
+%{__make} -C po update-gmo
 
-%{__cc} %{rpmcflags} -I/usr/include/db%{reqdb_ver} tools/rpmdb_checkversion.c \
-       -o tools/rpmdb_checkversion -ldb-%{reqdb_ver}
-%{__cc} %{rpmcflags} -I/usr/include/db%{reqdb_ver} tools/rpmdb_reset.c \
-       -o tools/rpmdb_reset -ldb-%{reqdb_ver}
-
-if tools/rpmdb_checkversion -V 2>&1 | grep "t match library version"; then
-       echo "Error linking rpmdb tools!"
-       exit 1
-fi
-if tools/rpmdb_reset -V 2>&1 | grep "t match library version"; then
-       echo "Error linking rpmdb tools!"
-       exit 1
-fi
+%if %{with python3}
+cd python
+%py3_build
+%endif
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/bin,/%{_lib},/etc/sysconfig,%{_sysconfdir}/rpm} \
-       $RPM_BUILD_ROOT{/var/lib/banner,/var/cache/hrmib,/etc/pki/rpm-gpg,%{_rpmlibdir}/pld}
+install -d $RPM_BUILD_ROOT{/bin,/%{_lib},/etc/sysconfig,%{_sysconfdir}/{rpm,pki/rpm-gpg}} \
+       $RPM_BUILD_ROOT/var/lib/{banner,rpm}
 
-install %{SOURCE16} $RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg/PLD-3.0-Th-GPG-key.asc
+cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg/PLD-3.0-Th-GPG-key.asc
 
 %{__make} install \
        pkgconfigdir=%{_pkgconfigdir} \
        DESTDIR=$RPM_BUILD_ROOT
 
-# install platform macros
-for f in platform/*macros; do
-       bn=${f#*/}
-       fn=${bn%.macros}/macros
-       install -m644 $f -D %{buildroot}%{_rpmlibdir}/$fn
-done
-
 # cleanup
 %ifnarch %{ix86} %{x8664} x32
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/athlon-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/i386-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/i486-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/i586-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/i686-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/pentium3-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/pentium4-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/athlon-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/geode-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i386-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i486-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i586-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i686-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/pentium3-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/pentium4-linux/macros
 %endif
 
 %ifnarch %{x8664} x32
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/amd64-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/ia32e-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/x32-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/x86_64-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/amd64-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ia32e-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/x32-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/x86_64-linux/macros
 %endif
 
 %ifnarch %{ppc}
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/ppc-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/m68k-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc32dy4-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc64*-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8260-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8560-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc*series-linux/macros
 %endif
 
 %ifnarch aarch64
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/aarch64-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/aarch64-linux/macros
 %endif
 
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/alpha*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/arm*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/ia64-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/k6-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/mips*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/ppc*series-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/ppc64*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/s390*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/sparc*-linux/macros
+%ifnarch %{arm}
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/arm*-linux/macros
+%endif
+
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/alpha*-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ia64-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/mips*-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/riscv64-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/s390*-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sh*-linux/macros
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sparc*-linux/macros
 
 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
-# first platform file entry can't contain regexps
 %ifarch x32
 %{_target_cpu}-%{_target_vendor}-linux-gnux32
 %else
 %{_target_cpu}-%{_target_vendor}-linux
 %endif
-
-%ifarch x86_64
-x86_64-[^-]*-[Ll]inux(-gnu)?
-amd64-[^-]*-[Ll]inux(-gnu)?
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-%endif
-%ifarch amd64
-amd64-[^-]*-[Ll]inux(-gnu)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-%endif
-%ifarch ia32e
-ia32e-[^-]*-[Ll]inux(-gnu)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch x32
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-amd64-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch athlon %{x8664} x32
-athlon-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch pentium4 athlon %{x8664} x32
-pentium4-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch pentium3 pentium4 athlon %{x8664} x32
-pentium3-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i686 pentium3 pentium4 athlon %{x8664} x32
-i686-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i586 i686 pentium3 pentium4 athlon %{x8664} x32
-i586-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i486 i586 i686 pentium3 pentium4 athlon %{x8664} x32
-i486-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch %{ix86} %{x8664} x32
-i386-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch alpha
-alpha-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch aarch64
-aarch64-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch ia64
-ia64-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch ppc64
-powerpc64-[^-]*-[Ll]inux(-gnu)?
-ppc64-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch %{ppc} ppc64
-powerpc-[^-]*-[Ll]inux(-gnu)?
-ppc-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch s390x
-s390x-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch s390 s390x
-s390-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch sparc64
-sparc64-[^-]*-[Ll]inux(-gnu)?
-sparcv8-[^-]*-[Ll]inux(-gnu)?
-sparcv9-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch sparcv9
-sparcv8-[^-]*-[Ll]inux(-gnu)?
-sparcv9-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch sparc sparcv9 sparc64
-sparc-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-noarch-[^-]*-.*
 EOF
 
-# Squash Extra Blank Lines
-%{__sed} -i -e '/./,/^$/!d' $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
-
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/vpkg-provides*
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-{prov,req}.pl
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-{provides,requires}.perl
 %{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.a
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/lib/liblua.la
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-provides
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/mono-find-requires
-
-# not installed since 4.4.8 (-tools-perl subpackage)
-install scripts/rpmdiff scripts/rpmdiff.cgi $RPM_BUILD_ROOT%{_rpmlibdir}
-
-install %{SOURCE1} doc/manual/groups
-install %{SOURCE3} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
-install %{SOURCE12} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
-install %{SOURCE5} $RPM_BUILD_ROOT%{_rpmlibdir}/hrmib-cache
-install %{SOURCE13} $RPM_BUILD_ROOT/etc/sysconfig/rpm
-
-install %{SOURCE15} $RPM_BUILD_ROOT%{_bindir}/banner.sh
-
-install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo
-
-install %{SOURCE18} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros
-install %{SOURCE27} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.lang
-install %{SOURCE19} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautocompressdoc
-install %{SOURCE20} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprov
-install %{SOURCE21} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprovfiles
-install %{SOURCE22} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreq
-install %{SOURCE24} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreqfiles
-
-touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Conflictname
-touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Dirnames
-install %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Filelinktos
-touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Obsoletename
-touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Providename
-touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Requirename
-
-install tools/rpmdb_checkversion $RPM_BUILD_ROOT%{_rpmlibdir}/bin
-install tools/rpmdb_reset $RPM_BUILD_ROOT%{_rpmlibdir}/bin
-install %{SOURCE29} $RPM_BUILD_ROOT%{_rpmlibdir}/bin/dbupgrade.sh
-
-# create macro loading wrappers for backward compatibility
-for m in gstreamer libtool mono pkgconfig selinux; do
-       %{__mv} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.d/{$m,macros.$m}
-done
 
-install %{SOURCE30} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.d/macros.prov-req
+install -d $RPM_BUILD_ROOT%{_rpmlibdir}/pld
+
+cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
+cp -p %{SOURCE9} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
+cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/rpm
 
-# moved to rpm-pld-macros-macros 1.699
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.d/kernel
-# moved to rpm-pld-macros-build 1.744
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/javadeps.sh
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/{gem_helper,rubygems}.rb
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/php.{prov,req}
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.d/{cmake,java,perl,php,python,ruby,tcl}
+cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_bindir}/banner.sh
 
-# for rpm -e|-U --repackage
-install -d $RPM_BUILD_ROOT/var/{spool/repackage,lock/rpm}
-touch $RPM_BUILD_ROOT/var/lock/rpm/transaction
+cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros
+cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.lang
+cp -p %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprov
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprovfiles
+cp -p %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreq
+cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreqfiles
+
+cp -p %{SOURCE16} $RPM_BUILD_ROOT%{_rpmlibdir}/libtooldeps.sh
+cp -p %{SOURCE17} $RPM_BUILD_ROOT%{_rpmlibdir}/fileattrs/libtool.attr
 
 # move rpm to /bin
-mv $RPM_BUILD_ROOT%{_bindir}/rpm $RPM_BUILD_ROOT/bin
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/rpm $RPM_BUILD_ROOT/bin
+ln -sf /bin/rpm $RPM_BUILD_ROOT%{_bindir}/rpmquery
+ln -sf /bin/rpm $RPM_BUILD_ROOT%{_bindir}/rpmverify
+
 # move essential libs to /lib (libs that /bin/rpm links to)
-for a in librpm-%{sover}.so librpmdb-%{sover}.so librpmio-%{sover}.so librpmbuild-%{sover}.so librpmmisc-%{sover}.so librpmconstant-%{sover}.so; do
-       mv -f $RPM_BUILD_ROOT%{_libdir}/$a $RPM_BUILD_ROOT/%{_lib}
-       ln -s /%{_lib}/$a $RPM_BUILD_ROOT%{_libdir}/$a
+for a in librpm.so librpmbuild.so librpmio.so librpmsign.so; do
+       mv -f $RPM_BUILD_ROOT%{_libdir}/${a}.* $RPM_BUILD_ROOT/%{_lib}
+       ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/${a}.*.*.*) $RPM_BUILD_ROOT%{_libdir}/${a}
 done
 
-# Bourne shell script vs ELF executable linked with rpm,rpmdb,rpmio
-mv $RPM_BUILD_ROOT{%{_rpmlibdir},%{_bindir}}/rpm2cpio
-
-%if %{with python}
-%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
-%py_comp $RPM_BUILD_ROOT%{py_sitedir}
+# init an empty database for %ghost'ing for all supported backends
+for be in sqlite bdb ndb; do
+       ./rpmdb \
+               --macros=$RPM_BUILD_ROOT%{_rpmlibdir}/macros \
+               --rcfile=$RPM_BUILD_ROOT%{_rpmlibdir}/rpmrc \
+               --dbpath=${PWD}/${be} \
+               --define "_db_backend ${be}" \
+               --initdb
+       cp -va ${be}/. $RPM_BUILD_ROOT/var/lib/rpm/
+done
 
-%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/rpm/*.{la,a,py}
+%if %{with python3}
+# Remove anything that rpm make install might put there
+%{__rm} -rf $RPM_BUILD_ROOT%{py3_sitedir}
+cd python
+%py3_install
+cd ..
 %endif
 
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/rpm-plugins/*.la
+
 # wrong location, not used anyway
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/rpm.{daily,log,xinetd}
-# utils dropped in 5.4 -- their manuals
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/rpmgrep.1
-# script obsoleted by /usr/lib/rpm/bin/dbconvert binary
-%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/dbconvert.sh
+%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/rpm.{daily,log}
 
 %find_lang %{name}
 
-%{__rm} -rf manual
-cp -a doc/manual manual
-%{__rm} -f manual/Makefile*
-
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%pretrans
-# this needs to be a dir
-if [ -f %{_sysconfdir}/rpm/sysinfo ]; then
-       umask 022
-       mv -f %{_sysconfdir}/rpm/sysinfo{,.rpmsave}
-       mkdir %{_sysconfdir}/rpm/sysinfo
-fi
-
 %posttrans
-if [ -e /var/lib/rpm/Packages ] && \
-               ! %{_rpmlibdir}/bin/rpmdb_checkversion -h /var/lib/rpm -d /var/lib/rpm; then
+if [ -e /var/lib/rpm/Packages ]; then
        if [ ! -e /var/lib/rpm.rpmbackup-%{version}-%{release} ] && \
                        /bin/cp -a /var/lib/rpm /var/lib/rpm.rpmbackup-%{version}-%{release}; then
                echo
@@ -1313,11 +867,25 @@ if [ -e /var/lib/rpm/Packages ] && \
        echo 'If poldek aborts after migration with rpmdb error, this is expected behaviour,'
        echo 'you should ignore it and restart poldek'
        echo
-       %{_rpmlibdir}/bin/dbupgrade.sh
+       %{__rm} -rf /var/lib/rpm/log >/dev/null 2>/dev/null || :
+       %{__rm} -rf /var/lib/rpm/tmp >/dev/null 2>/dev/null || :
+       # Unlock database for rebuild, safe since this is posttrans
+       %{__rm} -f /var/lib/rpm/.rpm.lock >/dev/null 2>/dev/null || :
+       if ! /usr/bin/rpmdb --rebuilddb; then
+               echo
+               echo "rpm database conversion failed!"
+               echo "You have to run '/usr/bin/rpmdb --rebuilddb' manually"
+               echo
+               exit 1
+       fi
 fi
 
-%triggerpostun -- %{name} < 4.4.9-44
-%{_rpmlibdir}/hrmib-cache
+%post
+if [ -d /var/cache/hrmib ]; then
+       %{__rm} -rf /var/cache/hrmib
+       echo "HR-MIB is not supported by this rpm version."
+       echo "/var/cache/hrmib has been removed."
+fi
 
 %post  lib -p /sbin/ldconfig
 %postun lib -p /sbin/ldconfig
@@ -1327,85 +895,85 @@ find %{_rpmlibdir} -name '*-linux' -type l | xargs rm -f
 
 %files -f %{name}.lang
 %defattr(644,root,root,755)
-%doc CHANGES CREDITS README pubkeys/JBJ-GPG-KEY manual/*
+%doc ChangeLog CREDITS README
 
 %dir /etc/pki/rpm-gpg
 /etc/pki/rpm-gpg/PLD-3.0-Th-GPG-key.asc
 
 %attr(755,root,root) /bin/rpm
+%attr(755,root,root) %{_bindir}/rpmdb
+%attr(755,root,root) %{_bindir}/rpmkeys
+%attr(755,root,root) %{_bindir}/rpmquery
+%attr(755,root,root) %{_bindir}/rpmverify
 
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/macros
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/macros.lang
-%dir %{_sysconfdir}/rpm/sysinfo
-# these are ok to be replaced
-%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/sysinfo/*
+# this is ok to be replaced
 %config %verify(not md5 mtime size) %{_sysconfdir}/rpm/platform
 
 %{_mandir}/man8/rpm.8*
+%{_mandir}/man8/rpmdb.8*
+%{_mandir}/man8/rpmkeys.8*
+%{_mandir}/man8/rpm-misc.8*
+%{?with_plugins:%{_mandir}/man8/rpm-plugins.8*}
 %lang(fr) %{_mandir}/fr/man8/rpm.8*
 %lang(ja) %{_mandir}/ja/man8/rpm.8*
+%lang(ko) %{_mandir}/ko/man8/rpm.8*
 %lang(pl) %{_mandir}/pl/man8/rpm.8*
 %lang(ru) %{_mandir}/ru/man8/rpm.8*
 %lang(sk) %{_mandir}/sk/man8/rpm.8*
 
 %dir /var/lib/rpm
-%dir /var/lib/rpm/log
-%dir /var/lib/rpm/tmp
-%config(noreplace) %verify(not md5 mtime size) /var/lib/rpm/DB_CONFIG
-%dir %attr(700,root,root) /var/spool/repackage
-%dir /var/lock/rpm
-/var/lock/rpm/transaction
-
-# exported package NVRA (stamped with install tid)
-# net-snmp hrSWInstalledName queries, bash-completions
-%dir /var/cache/hrmib
-
-%{_rpmlibdir}/qf
+%ghost %config(missingok,noreplace) /var/lib/rpm/*
+%ghost /var/lib/rpm/.*.lock
+
 %{_rpmlibdir}/rpmpopt*
+%{_rpmlibdir}/rpmrc
 %{_rpmlibdir}/macros
 %dir %{_rpmlibdir}/macros.d
-%{_rpmlibdir}/macros.d/pld
-%dir %{_rpmlibdir}/pld
-%{_rpmlibdir}/cpuinfo.yaml
-%{_rpmlibdir}/noarch-*
+%dir %{_rpmlibdir}/platform
+%{_rpmlibdir}/platform/noarch-*
 %ifarch %{ix86} %{x8664} x32
-%{_rpmlibdir}/i?86*
-%{_rpmlibdir}/pentium*
-%{_rpmlibdir}/athlon*
+%{_rpmlibdir}/platform/athlon*
+%{_rpmlibdir}/platform/geode*
+%{_rpmlibdir}/platform/i?86*
+%{_rpmlibdir}/platform/pentium*
+%endif
+%ifarch %{x8664} x32
+%{_rpmlibdir}/platform/amd64*
+%{_rpmlibdir}/platform/ia32e*
+%{_rpmlibdir}/platform/x86_64*
+%{_rpmlibdir}/platform/x32*
 %endif
 %ifarch alpha
-%{_rpmlibdir}/alpha*
+%{_rpmlibdir}/platform/alpha*
 %endif
 %ifarch aarch64
-%{_rpmlibdir}/aarch64*
+%{_rpmlibdir}/platform/aarch64*
+%endif
+%ifarch %{arm}
+%{_rpmlibdir}/platform/arm*
 %endif
 %ifarch ia64
-%{_rpmlibdir}/ia64*
+%{_rpmlibdir}/platform/ia64*
 %endif
 %ifarch mips mipsel mips64 mips64el
-%{_rpmlibdir}/mips*
+%{_rpmlibdir}/platform/mips*
 %endif
 %ifarch %{ppc}
-%{_rpmlibdir}/ppc*
+%{_rpmlibdir}/platform/ppc*
 %endif
 %ifarch sparc sparc64
-%{_rpmlibdir}/sparc*
-%endif
-%ifarch %{x8664} x32
-%{_rpmlibdir}/amd64*
-%{_rpmlibdir}/ia32e*
-%{_rpmlibdir}/x86_64*
-%{_rpmlibdir}/x32*
+%{_rpmlibdir}/platform/sparc*
 %endif
 
-%attr(755,root,root) %{_rpmlibdir}/hrmib-cache
+%dir %{_rpmlibdir}/pld
+
+%attr(755,root,root) %{_rpmlibdir}/rpmdb_dump
+%attr(755,root,root) %{_rpmlibdir}/rpmdb_load
 
-%dir %{_rpmlibdir}/bin
-%attr(755,root,root) %{_rpmlibdir}/bin/dbconvert
-%attr(755,root,root) %{_rpmlibdir}/bin/dbupgrade.sh
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmdb_checkversion
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmdb_reset
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmdbchk
+# valgrind suppression file for rpm
+%{_rpmlibdir}/rpm.supp
 
 %files base
 %defattr(644,root,root,755)
@@ -1418,153 +986,168 @@ find %{_rpmlibdir} -name '*-linux' -type l | xargs rm -f
 
 %files lib
 %defattr(644,root,root,755)
-%attr(755,root,root) /%{_lib}/librpm-%{sover}.so
-%attr(755,root,root) /%{_lib}/librpmdb-%{sover}.so
-%attr(755,root,root) /%{_lib}/librpmio-%{sover}.so
-%attr(755,root,root) /%{_lib}/librpmbuild-%{sover}.so
-%attr(755,root,root) /%{_lib}/librpmmisc-%{sover}.so
-%attr(755,root,root) /%{_lib}/librpmconstant-%{sover}.so
+%attr(755,root,root) /%{_lib}/librpm.so.9
+%attr(755,root,root) /%{_lib}/librpm.so.%{sover}
+%attr(755,root,root) /%{_lib}/librpmbuild.so.9
+%attr(755,root,root) /%{_lib}/librpmbuild.so.%{sover}
+%attr(755,root,root) /%{_lib}/librpmio.so.9
+%attr(755,root,root) /%{_lib}/librpmio.so.%{sover}
+%attr(755,root,root) /%{_lib}/librpmsign.so.9
+%attr(755,root,root) /%{_lib}/librpmsign.so.%{sover}
+%{?with_plugins:%dir %{_libdir}/rpm-plugins}
 
 %files devel
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/librpm.so
-%attr(755,root,root) %{_libdir}/librpm-%{sover}.so
 %attr(755,root,root) %{_libdir}/librpmbuild.so
-%attr(755,root,root) %{_libdir}/librpmbuild-%{sover}.so
-%attr(755,root,root) %{_libdir}/librpmconstant.so
-%attr(755,root,root) %{_libdir}/librpmconstant-%{sover}.so
-%attr(755,root,root) %{_libdir}/librpmdb.so
-%attr(755,root,root) %{_libdir}/librpmdb-%{sover}.so
 %attr(755,root,root) %{_libdir}/librpmio.so
-%attr(755,root,root) %{_libdir}/librpmio-%{sover}.so
-%attr(755,root,root) %{_libdir}/librpmmisc.so
-%attr(755,root,root) %{_libdir}/librpmmisc-%{sover}.so
-%{_libdir}/librpm*.la
+%attr(755,root,root) %{_libdir}/librpmsign.so
+%{_libdir}/librpm.la
+%{_libdir}/librpmbuild.la
+%{_libdir}/librpmio.la
+%{_libdir}/librpmsign.la
 %{_includedir}/rpm
-%{_pkgconfigdir}/*.pc
-
-%files static
-%defattr(644,root,root,755)
-%{_libdir}/librpm*.a
+%{_pkgconfigdir}/rpm.pc
 
 %files utils
 %defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/rpm2archive
 %attr(755,root,root) %{_bindir}/rpm2cpio
-%attr(755,root,root) %{_bindir}/rpmconstant
-%attr(755,root,root) %{_rpmlibdir}/find-debuginfo.sh
-%attr(755,root,root) %{_rpmlibdir}/rpmdb_loadcvt
+%attr(755,root,root) %{_bindir}/rpmgraph
+%attr(755,root,root) %{_rpmlibdir}/rpm2cpio.sh
 %attr(755,root,root) %{_rpmlibdir}/tgpg
-%attr(755,root,root) %{_rpmlibdir}/bin/chroot
-%attr(755,root,root) %{_rpmlibdir}/bin/cp
-%attr(755,root,root) %{_rpmlibdir}/bin/debugedit
-%attr(755,root,root) %{_rpmlibdir}/bin/find
-%attr(755,root,root) %{_rpmlibdir}/bin/mtree
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmcache
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmcmp
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmdeps
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmdigest
-%if %{with selinux}
-%attr(755,root,root) %{_rpmlibdir}/bin/semodule
-%attr(755,root,root) %{_rpmlibdir}/bin/spooktool
-%endif
-%if %{without system_lua}
-%attr(755,root,root) %{_rpmlibdir}/bin/lua
-%attr(755,root,root) %{_rpmlibdir}/bin/luac
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmlua
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmluac
-%endif
-%{?with_keyutils:%attr(755,root,root) %{_rpmlibdir}/bin/rpmkey}
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmrepo
+%attr(755,root,root) %{_rpmlibdir}/rpmdeps
+%{_mandir}/man8/rpm2archive.8*
 %{_mandir}/man8/rpm2cpio.8*
-%{_mandir}/man8/rpmconstant.8*
 %{_mandir}/man8/rpmdeps.8*
-%{_mandir}/man8/rpmmtree.8*
+%{_mandir}/man8/rpmgraph.8*
 %lang(ja) %{_mandir}/ja/man8/rpm2cpio.8*
+%lang(ko) %{_mandir}/ko/man8/rpm2cpio.8*
 %lang(pl) %{_mandir}/pl/man8/rpm2cpio.8*
-%lang(pl) %{_mandir}/pl/man8/rpmdeps.8*
 %lang(ru) %{_mandir}/ru/man8/rpm2cpio.8*
-
-%files utils-perl
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_rpmlibdir}/rpmdiff*
-
-%if %{with static}
-%files utils-static
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/rpm[ieu]
-%attr(755,root,root) %{_rpmlibdir}/rpm[ieu]
-%endif
+%lang(pl) %{_mandir}/pl/man8/rpmdeps.8*
+%lang(ja) %{_mandir}/ja/man8/rpmgraph.8*
+%lang(pl) %{_mandir}/pl/man8/rpmgraph.8*
 
 %files build
 %defattr(644,root,root,755)
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/noauto*
 %attr(755,root,root) %{_rpmlibdir}/brp-*
 %attr(755,root,root) %{_rpmlibdir}/check-files
-%attr(755,root,root) %{_rpmlibdir}/cross-build
-%attr(755,root,root) %{_rpmlibdir}/getpo.sh
 %attr(755,root,root) %{_rpmlibdir}/install-build-tree
-%attr(755,root,root) %{_rpmlibdir}/u_pkg.sh
-%attr(755,root,root) %{_rpmlibdir}/executabledeps.sh
+%attr(755,root,root) %{_rpmlibdir}/elfdeps
 %attr(755,root,root) %{_rpmlibdir}/libtooldeps.sh
 # needs hacked pkg-config to return anything
 %attr(755,root,root) %{_rpmlibdir}/pkgconfigdeps.sh
-%{!?with_sqlite:%attr(755,root,root) %{_rpmlibdir}/bin/dbsql}
-%attr(755,root,root) %{_rpmlibdir}/bin/install-sh
-%attr(755,root,root) %{_rpmlibdir}/bin/mkinstalldirs
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmspec
-%attr(755,root,root) %{_rpmlibdir}/bin/rpmspecdump
-%attr(755,root,root) %{_rpmlibdir}/bin/sqlite3
-%attr(755,root,root) %{_rpmlibdir}/bin/wget
-%attr(755,root,root) %{_rpmlibdir}/vcheck
-# we always used scripts provided by mono-devel, maybe move them here
-#%attr(755,root,root) %{_rpmlibdir}/mono-find-provides
-#%attr(755,root,root) %{_rpmlibdir}/mono-find-requires
-
+%attr(755,root,root) %{_rpmlibdir}/mkinstalldirs
 %attr(755,root,root) %{_rpmlibdir}/fontconfig.prov
-%{_rpmlibdir}/macros.d/macros.gstreamer
-%{_rpmlibdir}/macros.d/macros.libtool
-%{_rpmlibdir}/macros.d/macros.mono
-%{_rpmlibdir}/macros.d/macros.pkgconfig
-%{_rpmlibdir}/macros.d/macros.prov-req
-%{_rpmlibdir}/macros.d/macros.selinux
-%{_rpmlibdir}/macros.rpmbuild
-
-%attr(755,root,root) %{_rpmlibdir}/gstreamer.sh
-%attr(755,root,root) %{_rpmlibdir}/kmod-deps.sh
+%attr(755,root,root) %{_rpmlibdir}/check-buildroot
+%attr(755,root,root) %{_rpmlibdir}/check-prereqs
+%attr(755,root,root) %{_rpmlibdir}/check-rpaths
+%attr(755,root,root) %{_rpmlibdir}/check-rpaths-worker
+%attr(755,root,root) %{_rpmlibdir}/find-provides
+%attr(755,root,root) %{_rpmlibdir}/find-requires
+%attr(755,root,root) %{_rpmlibdir}/ocamldeps.sh
+%attr(755,root,root) %{_rpmlibdir}/script.req
+
+%dir %{_rpmlibdir}/fileattrs
+%{_rpmlibdir}/fileattrs/debuginfo.attr
+%{_rpmlibdir}/fileattrs/desktop.attr
+%{_rpmlibdir}/fileattrs/elf.attr
+%{_rpmlibdir}/fileattrs/font.attr
+%{_rpmlibdir}/fileattrs/libtool.attr
+%{_rpmlibdir}/fileattrs/metainfo.attr
+%{_rpmlibdir}/fileattrs/ocaml.attr
+%{_rpmlibdir}/fileattrs/pkgconfig.attr
+%{_rpmlibdir}/fileattrs/script.attr
 
 %attr(755,root,root) %{_bindir}/gendiff
 %attr(755,root,root) %{_bindir}/rpmbuild
-
-%dir %{_rpmlibdir}/helpers
-%attr(755,root,root) %{_rpmlibdir}/helpers/makeshlibs
+%attr(755,root,root) %{_bindir}/rpmspec
 
 %{_mandir}/man1/gendiff.1*
+%lang(pl) %{_mandir}/pl/man1/gendiff.1*
 %{_mandir}/man8/rpmbuild.8*
 %lang(ja) %{_mandir}/ja/man8/rpmbuild.8*
-%lang(pl) %{_mandir}/pl/man1/gendiff.1*
 %lang(pl) %{_mandir}/pl/man8/rpmbuild.8*
+%{_mandir}/man8/rpmspec.8*
 
 %files perlprov
 %defattr(644,root,root,755)
+%{_rpmlibdir}/fileattrs/perl.attr
+%{_rpmlibdir}/fileattrs/perllib.attr
 %attr(755,root,root) %{_rpmlibdir}/perl.*
-%attr(755,root,root) %{_rpmlibdir}/osgideps.pl
-%attr(755,root,root) %{_rpmlibdir}/perldeps.pl
 
-%files pythonprov
+%if %{with python3}
+%files -n python3-rpm
+%defattr(644,root,root,755)
+%dir %{py3_sitedir}/rpm
+%attr(755,root,root) %{py3_sitedir}/rpm/*.so
+%{py3_sitedir}/rpm/*.py
+%{py3_sitedir}/rpm-%{version}-py*.egg-info
+%{py3_sitedir}/rpm/__pycache__
+%endif
+
+%if %{with plugins}
+%files plugin-audit
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/audit.so
+%{_mandir}/man8/rpm-plugin-audit.8*
+
+%files plugin-syslog
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/syslog.so
+%{_mandir}/man8/rpm-plugin-syslog.8*
+
+%if %{with systemd}
+%files plugin-systemd-inhibit
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/systemd_inhibit.so
+%{_mandir}/man8/rpm-plugin-systemd-inhibit.8*
+%endif
+
+%files plugin-ima
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_rpmlibdir}/pythoneggs.py
-%attr(755,root,root) %{_rpmlibdir}/pythondeps.sh
+%attr(755,root,root) %{_libdir}/rpm-plugins/ima.so
+%{_mandir}/man8/rpm-plugin-ima.8*
 
-%if %{with python}
-%files -n python-rpm
+%files plugin-prioreset
 %defattr(644,root,root,755)
-%dir %{py_sitedir}/rpm
-%attr(755,root,root) %{py_sitedir}/rpm/*.so
-%{py_sitedir}/rpm/*.py[co]
+%attr(755,root,root) %{_libdir}/rpm-plugins/prioreset.so
+%{_mandir}/man8/rpm-plugin-prioreset.8*
+
+%files plugin-selinux
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/selinux.so
+%{_mandir}/man8/rpm-plugin-selinux.8*
+
+%if %{with fsverity}
+%files plugin-fsverity
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/fsverity.so
+%endif
+
+%files plugin-fapolicyd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/fapolicyd.so
+%{_mandir}/man8/rpm-plugin-fapolicyd.8*
+
+%if %{with systemd}
+%files plugin-dbus-announce
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/rpm-plugins/dbus_announce.so
+%{_mandir}/man8/rpm-plugin-dbus-announce.8*
+%{_sysconfdir}/dbus-1/system.d/org.rpm.conf
 %endif
+%endif
+
+%files sign
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/rpmsign
+%{_mandir}/man8/rpmsign.8*
 
 %if %{with apidocs}
 %files apidocs
 %defattr(644,root,root,755)
-%doc apidocs
+%doc docs/librpm/html/*
 %endif
diff --git a/rpm.sysinfo b/rpm.sysinfo
deleted file mode 100644 (file)
index 71bed23..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/proc/self/fd
-/dev/fd/0
-/dev/fd/1
-/dev/fd/2
diff --git a/rpm5-db-compat.patch b/rpm5-db-compat.patch
new file mode 100644 (file)
index 0000000..6d8ec64
--- /dev/null
@@ -0,0 +1,15 @@
+--- rpm-4.15.1/lib/header.c~   2019-11-04 21:13:13.000000000 +0900
++++ rpm-4.15.1/lib/header.c    2019-12-31 19:48:06.709777565 +0900
+@@ -277,6 +277,12 @@
+     for (i = 0; i < il; i++) {
+       ei2h(&pe[i], &info);
++      /* XXX rpm5 compat: convert RPMTAG_FILESTATE to RPM_CHAR_TYPE. */
++      if (info.tag == RPMTAG_FILESTATES && info.type == RPM_INT8_TYPE) {
++          info.type = RPM_CHAR_TYPE;
++          pe[i].type = htonl(info.type);
++      }
++
+       /* Previous data must not overlap */
+       if (end > info.offset)
+           goto err;
diff --git a/rpmdb_checkversion.c b/rpmdb_checkversion.c
deleted file mode 100644 (file)
index 58a169c..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <db.h>
-
-int    version_check __P((void));
-
-const char *progname = "rpmdb_checkversion";           /* Program name. */
-
-/*
- * A very simple program to check for a Berkeley DB environment mismatch.
- */
-int
-main(int argc, char *argv[])
-{
-       extern char *optarg;
-       extern int optind;
-       const char *data_dir, *home;
-       int ch, quiet;
-       DB_ENV *dbenv;
-       int ret;
-
-       if ((ret = version_check()) != 0)
-               return (EXIT_FAILURE);
-
-       /*
-        * All of the shared database files live in home, but
-        * data files will live in data_dir.
-        */
-       quiet = 0;
-       home = "/var/lib/rpm";
-       data_dir = "/var/lib/rpm";
-       while ((ch = getopt(argc, argv, "h:d:qV")) != EOF)
-               switch (ch) {
-               case 'h':
-                       home = optarg;
-                       break;
-               case 'd':
-                       data_dir = optarg;
-                       break;
-               case 'q':
-                       quiet = 1;
-                       break;
-               case 'V':
-                       printf("%s\n", db_version(NULL, NULL, NULL));
-                       return (EXIT_SUCCESS);
-               case '?':
-               default:
-                       (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
-                       return (1);
-               }
-       argc -= optind;
-       argv += optind;
-
-       if (argc != 0) {
-               (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
-               return (1);
-       }
-
-       /*
-        * Create an environment object and initialize it for error
-        * reporting.
-        */
-       if ((ret = db_env_create(&dbenv, 0)) != 0) {
-               if (!quiet)
-                       fprintf(stderr, "%s: %s\n", progname, db_strerror(ret));
-               return (1);
-       }
-       if (quiet) {
-               dbenv->set_errfile(dbenv, NULL);
-       } else {
-               dbenv->set_errfile(dbenv, stderr);
-       }
-       dbenv->set_errpfx(dbenv, progname);
-
-       /*
-        * We want to specify the shared memory buffer pool cachesize,
-        * but everything else is the default.
-        */
-       if ((ret = dbenv->set_cachesize(dbenv, 0, 64 * 1024, 0)) != 0) {
-               dbenv->err(dbenv, ret, "set_cachesize");
-               dbenv->close(dbenv, 0);
-               return (1);
-       }
-
-       /* Databases are in a subdirectory. */
-       (void)dbenv->set_data_dir(dbenv, data_dir);
-
-       /* Open the environment with full transactional support. */
-       ret = dbenv->open(dbenv, home, DB_INIT_MPOOL, 0644);
-       /* Close the environment handle. */
-       dbenv->close(dbenv, 0);
-#if 0
-       if (ret == DB_VERSION_MISMATCH) {
-#else
-       if (ret != 0) {
-#endif
-               return (1);
-       }
-
-       return (0);
-}
-
-int
-version_check()
-{
-       int v_major, v_minor, v_patch;
-
-       /* Make sure we're loaded with the right version of the DB library. */
-       (void)db_version(&v_major, &v_minor, &v_patch);
-       if (v_major != DB_VERSION_MAJOR || v_minor != DB_VERSION_MINOR) {
-               fprintf(stderr,
-                   "%s: version %d.%d doesn't match library version %d.%d\n",
-                   progname, DB_VERSION_MAJOR,
-                   DB_VERSION_MINOR, v_major, v_minor);
-               return (EXIT_FAILURE);
-       }
-       return (0);
-}
diff --git a/rpmdb_reset.c b/rpmdb_reset.c
deleted file mode 100644 (file)
index 431d7cb..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <db.h>
-
-typedef struct {                       /* XXX: Globals. */
-       const char *progname;           /* Program name. */
-       char    *hdrbuf;                /* Input file header. */
-       u_long  lineno;                 /* Input file line number. */
-       u_long  origline;               /* Original file line number. */
-       int     endodata;               /* Reached the end of a database. */
-       int     endofile;               /* Reached the end of the input. */
-       int     version;                /* Input version. */
-       char    *home;                  /* Env home. */
-       char    *passwd;                /* Env passwd. */
-       int     private;                /* Private env. */
-       u_int32_t cache;                /* Env cache size. */
-} LDG;
-
-int    db_init __P((DB_ENV *, char *, u_int32_t, int *));
-int    env_create __P((DB_ENV **, LDG *));
-int    main __P((int, char *[]));
-int    usage __P((void));
-int    version_check __P((void));
-
-const char *progname = "rpmdb_reset";
-
-int
-main(argc, argv)
-       int argc;
-       char *argv[];
-{
-       enum { NOTSET, FILEID_RESET, LSN_RESET, STANDARD_LOAD } mode;
-       extern char *optarg;
-       extern int optind;
-       DBTYPE dbtype;
-       DB_ENV  *dbenv;
-       LDG ldg;
-       u_int ldf;
-       int ch, exitval, ret;
-
-       if ((exitval = version_check()) != 0)
-               goto done;
-
-       ldg.progname = progname;
-       ldg.lineno = 0;
-       ldg.endodata = ldg.endofile = 0;
-       ldg.version = 1;
-       ldg.cache = (1024 * 1024);
-       ldg.hdrbuf = NULL;
-       ldg.home = NULL;
-       ldg.passwd = NULL;
-
-       mode = NOTSET;
-       ldf = 0;
-       exitval = 0;
-       dbtype = DB_UNKNOWN;
-
-       /*
-        * There are two modes for db_load: -r and everything else.  The -r
-        * option zeroes out the database LSN's or resets the file ID, it
-        * doesn't really "load" a new database.  The functionality is in
-        * db_load because we don't have a better place to put it, and we
-        * don't want to create a new utility for just that functionality.
-        */
-       while ((ch = getopt(argc, argv, "h:r:V")) != EOF)
-               switch (ch) {
-               case 'h':
-                       ldg.home = optarg;
-                       break;
-               case 'r':
-                       if (strcmp(optarg, "lsn") == 0)
-                               mode = LSN_RESET;
-                       else if (strcmp(optarg, "fileid") == 0)
-                               mode = FILEID_RESET;
-                       else {
-                               exitval = usage();
-                               goto done;
-                       }
-                       break;
-               case 'V':
-                       printf("%s\n", db_version(NULL, NULL, NULL));
-                       return (EXIT_SUCCESS);
-               case '?':
-               default:
-                       exitval = usage();
-                       goto done;
-               }
-       argc -= optind;
-       argv += optind;
-
-       if (argc != 1 || mode == NOTSET) {
-               exitval = usage();
-               goto done;
-       }
-
-       /*
-        * Create an environment object initialized for error reporting, and
-        * then open it.
-        */
-       if (env_create(&dbenv, &ldg) != 0)
-               goto err;
-
-       /* If we're resetting the LSNs, that's an entirely separate path. */
-       switch (mode) {
-       case FILEID_RESET:
-               exitval = dbenv->fileid_reset(dbenv, argv[0], 0);
-               break;
-       case LSN_RESET:
-               exitval = dbenv->lsn_reset(dbenv, argv[0], 0);
-               break;
-       case NOTSET:
-               break;
-       }
-
-       if (0) {
-err:           exitval = 1;
-       }
-       if ((ret = dbenv->close(dbenv, 0)) != 0) {
-               exitval = 1;
-               fprintf(stderr,
-                   "%s: dbenv->close: %s\n", ldg.progname, db_strerror(ret));
-       }
-
-       if (ldg.passwd != NULL)
-               free(ldg.passwd);
-
-done:
-       return (exitval);
-}
-
-/*
- * env_create --
- *     Create the environment and initialize it for error reporting.
- */
-int
-env_create(dbenvp, ldg)
-       DB_ENV **dbenvp;
-       LDG *ldg;
-{
-       DB_ENV *dbenv;
-       int ret;
-
-       if ((ret = db_env_create(dbenvp, 0)) != 0) {
-               fprintf(stderr, "%s: db_env_create: %s\n",
-                   ldg->progname, db_strerror(ret));
-               return (ret);
-       }
-       dbenv = *dbenvp;
-       dbenv->set_errfile(dbenv, stderr);
-       dbenv->set_errpfx(dbenv, ldg->progname);
-       if (ldg->passwd != NULL && (ret = dbenv->set_encrypt(dbenv,
-           ldg->passwd, DB_ENCRYPT_AES)) != 0) {
-               dbenv->err(dbenv, ret, "set_passwd");
-               return (ret);
-       }
-       if ((ret = db_init(dbenv, ldg->home, ldg->cache, &ldg->private)) != 0)
-               return (ret);
-       dbenv->app_private = ldg;
-
-       return (0);
-}
-
-/*
- * db_init --
- *     Initialize the environment.
- */
-int
-db_init(dbenv, home, cache, is_private)
-       DB_ENV *dbenv;
-       char *home;
-       u_int32_t cache;
-       int *is_private;
-{
-       u_int32_t flags;
-       int ret;
-
-       *is_private = 0;
-       /* We may be loading into a live environment.  Try and join. */
-       flags = DB_USE_ENVIRON |
-           DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN;
-       if ((ret = dbenv->open(dbenv, home, flags, 0)) == 0)
-               return (0);
-       if (ret == DB_VERSION_MISMATCH)
-               goto err;
-
-       /*
-        * We're trying to load a database.
-        *
-        * An environment is required because we may be trying to look at
-        * databases in directories other than the current one.  We could
-        * avoid using an environment iff the -h option wasn't specified,
-        * but that seems like more work than it's worth.
-        *
-        * No environment exists (or, at least no environment that includes
-        * an mpool region exists).  Create one, but make it private so that
-        * no files are actually created.
-        */
-#define        LF_SET(f)       ((flags) |= (f))
-#define        LF_CLR(f)       ((flags) &= ~(f))
-       LF_CLR(DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN);
-       LF_SET(DB_CREATE | DB_PRIVATE);
-       *is_private = 1;
-       if ((ret = dbenv->set_cachesize(dbenv, 0, cache, 1)) != 0) {
-               dbenv->err(dbenv, ret, "set_cachesize");
-               return (1);
-       }
-       if ((ret = dbenv->open(dbenv, home, flags, 0)) == 0)
-               return (0);
-
-       /* An environment is required. */
-err:   dbenv->err(dbenv, ret, "DB_ENV->open");
-       return (1);
-}
-
-/*
- * usage --
- *     Display the usage message.
- */
-int
-usage()
-{
-       (void)fprintf(stderr, "usage: %s %s\n\t%s %s\n",
-           progname, "[-V]",
-           progname, "-r lsn | fileid [-h home] db_file");
-       return (EXIT_FAILURE);
-}
-
-int
-version_check()
-{
-       int v_major, v_minor, v_patch;
-
-       /* Make sure we're loaded with the right version of the DB library. */
-       (void)db_version(&v_major, &v_minor, &v_patch);
-       if (v_major != DB_VERSION_MAJOR || v_minor != DB_VERSION_MINOR) {
-               fprintf(stderr,
-                   "%s: version %d.%d doesn't match library version %d.%d\n",
-                   progname, DB_VERSION_MAJOR,
-                   DB_VERSION_MINOR, v_major, v_minor);
-               return (EXIT_FAILURE);
-       }
-       return (0);
-}
diff --git a/rpmio-read-proc-files.patch b/rpmio-read-proc-files.patch
new file mode 100644 (file)
index 0000000..27118bf
--- /dev/null
@@ -0,0 +1,25 @@
+--- rpm-4.16.0/rpmio/rpmio.c~  2020-08-27 15:13:08.000000000 +0200
++++ rpm-4.16.0/rpmio/rpmio.c   2020-11-08 21:31:26.311430982 +0100
+@@ -1709,6 +1709,22 @@
+       }
+       b[blen] = '\0';
+     }
++#if defined(__linux__)
++    /* XXX st->st_size = 0 for /proc files on linux, see stat(2). */
++    /* XXX glibc mmap'd libio no workie for /proc files on linux?!? */
++    else if (!strncmp(fn, "/proc/", sizeof("/proc/")-1)) {
++      blen = blenmax;
++      b = xmalloc(blen+1);
++      b[0] = '\0';
++
++      size = read(Fileno(fd), b, blen);
++      if (size < 0) {
++              rc = 1;
++              goto exit;
++      }
++      blen = size;
++    }
++#endif
+ exit:
+     if (fd) (void) Fclose(fd);
diff --git a/shortcircuited-deps.patch b/shortcircuited-deps.patch
new file mode 100644 (file)
index 0000000..2fc2cc4
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.0/build/build.c~  2020-05-28 12:04:24.000000000 +0200
++++ rpm-4.16.0/build/build.c   2020-10-31 18:57:03.678941782 +0100
+@@ -401,7 +401,7 @@
+               goto exit;
+       if (((what & RPMBUILD_PACKAGEBINARY) && !test) &&
+-          (rc = packageBinaries(spec, cookie, (didBuild == 0))))
++          (rc = packageBinaries(spec, cookie, ((didBuild == 0) && !rpmExpandNumeric("%{?disable_short_circuited_deps}")))))
+               goto exit;
+       
+       if ((what & RPMBUILD_CLEAN) &&
diff --git a/skip-ldconfig-optimization.patch b/skip-ldconfig-optimization.patch
deleted file mode 100644 (file)
index 917a8fc..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2016-May/024910.html
-
-patch from jbj answer:
-http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2016-May/024913.html
-
-On May 31, 2016, at 2:52 AM, Elan Ruusamäe wrote:
-
-> On 31.05.2016 09:45, Elan Ruusamäe wrote:
->> [root@57c8cccdc671 bin]# poldek -u procps 
-> oh, and it's 100% reproducible:
->
-
-Yes. And it has been discussed many times over the last 15y,
-several times on this list.
-
-Short answer:
-       Disable the mechanism with attached patch to lib/psm.c
-               - OR --
-       Don't use
-               %scriptlet -p /sbin/ldconfig
-       in packages that are known to invoke an executable that depends on
-       a new library.
-
-Longer answer:
-       Libraries often have scriptlets like this:
-               %post -p /sbin/ldconfig
-               %postun -p /sbin/ldconfig
-       (or the equivalent within a scriptlet body).
-
-       On upgrade, with install before erase, this results in 2 executions of /sbin/ldconfig.
-
-       One of those invocations is redundant when a library is being replaced, the
-       install %post is sufficient to make the library avaialble for loading.
-
-       The redundant invocation of /sbin/ldconfig  was deemed a performance flaw @redhat,
-       where I was asked to implement the current optimization.
-
-       So the RPM optimization detects when /sbin/ldconfig has just been run, and skips the next
-               %scriptlet -p /sbin/ldconfig
-       (when written exactly like that) if /sbin/ldconfig has been executed.
-
-       Issues are only seen when a scriptlet contains an executable that needs
-       a changed API: this is usually a very rare occurrence
-
-       There are other flaws with the optimization when dependency loops break the sorted order
-       (and/or --noorder is used). , and the fix of running /sbin/ldconfig manually is rather simple
-       (even if the problem is obscure).
-
-       There is another flaw (as in your report), when the very last package
-       has a pending skipped /sbin/ldconfig invocation.
-
-       The fix of running /sbin/ldconfig manually is rather simple
-       (even if the problem is obscure).
-
-hth
-
-73 de Jeff
-===================================================================
-RCS file: /v/rpm/cvs/rpm/lib/psm.c,v
-retrieving revision 2.399.2.20
-diff -p -u -w -r2.399.2.20 psm.c
---- ./lib/psm.c        11 May 2015 21:10:16 -0000      2.399.2.20
-+++ ./lib/psm.c        31 May 2016 15:19:20 -0000
-@@ -800,7 +800,7 @@ static rpmRC runEmbeddedScript(rpmpsm ps
- static int ldconfig_done = 0;
- /*@unchecked@*/ /*@observer@*/ /*@null@*/
--static const char * ldconfig_path = "/sbin/ldconfig";
-+static const char * ldconfig_path = NULL;
- /**
-  * Run scriptlet with args.
-
-
diff --git a/skip-symlinks.patch b/skip-symlinks.patch
new file mode 100644 (file)
index 0000000..1f3eea5
--- /dev/null
@@ -0,0 +1,11 @@
+--- rpm-4.16.1.2/build/rpmfc.c~        2021-01-24 09:43:15.000000000 +0100
++++ rpm-4.16.1.2/build/rpmfc.c 2021-02-19 09:14:46.031544586 +0100
+@@ -1231,7 +1231,7 @@
+       size_t slen = strlen(s);
+       int fcolor = RPMFC_BLACK;
+       rpm_mode_t mode = (fmode ? fmode[ix] : 0);
+-      int is_executable = (mode & (S_IXUSR|S_IXGRP|S_IXOTH));
++      int is_executable = ((mode & S_IFREG) && (mode & (S_IXUSR|S_IXGRP|S_IXOTH)));
+       switch (mode & S_IFMT) {
+       case S_IFCHR:   ftype = "character special";    break;
diff --git a/sqlite-log-crash.patch b/sqlite-log-crash.patch
new file mode 100644 (file)
index 0000000..87137f5
--- /dev/null
@@ -0,0 +1,48 @@
+From ea3187cfcf9cac87e5bc5e7db79b0338da9e355e Mon Sep 17 00:00:00 2001
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Mon, 26 Jun 2023 12:45:09 +0300
+Subject: [PATCH] Don't muck with per-process global sqlite configuration from
+ the db backend
+
+sqlite3_config() affects all in-process uses of sqlite. librpm being a
+low-level library, it has no business whatsoever making such decisions
+for the applications running on top of it. Besides that, the callback can
+easily end up pointing to an already closed database, causing an
+innocent API user to crash in librpm on an entirely unrelated error on
+some other database. "Oops."
+
+The sqlite API doesn't seem to provide any per-db or non-global context
+for logging errors, thus we can only remove the call and let sqlite output
+errors the way it pleases (print through stderr, presumably).
+
+Thanks to Jan Palus for spotting and reporting!
+---
+ lib/backend/sqlite.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/lib/backend/sqlite.c b/lib/backend/sqlite.c
+index 5a029d575a..b612732267 100644
+--- a/lib/backend/sqlite.c
++++ b/lib/backend/sqlite.c
+@@ -44,13 +44,6 @@ static void rpm_match3(sqlite3_context *sctx, int argc, sqlite3_value **argv)
+     sqlite3_result_int(sctx, match);
+ }
+-static void errCb(void *data, int err, const char *msg)
+-{
+-    rpmdb rdb = data;
+-    rpmlog(RPMLOG_WARNING, "%s: %s: %s\n",
+-              rdb->db_descr, sqlite3_errstr(err), msg);
+-}
+-
+ static int dbiCursorReset(dbiCursor dbc)
+ {
+     if (dbc->stmt) {
+@@ -170,7 +163,6 @@ static int sqlite_init(rpmdb rdb, const char * dbhome)
+        * the "database is locked" errors at every cost
+        */
+       sqlite3_busy_timeout(sdb, 10000);
+-      sqlite3_config(SQLITE_CONFIG_LOG, errCb, rdb);
+       sqlexec(sdb, "PRAGMA secure_delete = OFF");
+       sqlexec(sdb, "PRAGMA case_sensitive_like = ON");
diff --git a/uname-deps.patch b/uname-deps.patch
new file mode 100644 (file)
index 0000000..61ba652
--- /dev/null
@@ -0,0 +1,140 @@
+diff --git a/lib/depends.c b/lib/depends.c
+index 28a4a784d..1d8ce1f8a 100644
+--- a/lib/depends.c
++++ b/lib/depends.c
+@@ -690,6 +690,17 @@ retry:
+       goto unsatisfied;
+     }
++    char * N = rpmdsN(dep);
++    if (strstr(N, "uname(") == N) {
++      if (tsmem->uname == NULL)
++          rpmdsUnamePool(rpmtsPool(ts), &(tsmem->uname));
++      
++      if (tsmem->uname != NULL && rpmdsSearch(tsmem->uname, dep) >= 0) {
++          rpmdsNotify(dep, "(uname provides)", rc);
++          goto exit;
++      }
++    }
++
+     /* Dont look at pre-requisites of already installed packages */
+     if (!adding && isTransientReq(dsflags))
+       goto exit;
+diff --git a/lib/rpmds.c b/lib/rpmds.c
+index f7ee76392..754969e39 100644
+--- a/lib/rpmds.c
++++ b/lib/rpmds.c
+@@ -2,6 +2,7 @@
+  * \file lib/rpmds.c
+  */
+ #include "system.h"
++#include <sys/utsname.h>
+ #include <rpm/rpmtypes.h>
+ #include <rpm/rpmlib.h>               /* rpmvercmp */
+@@ -1596,3 +1597,60 @@ rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op,
+     return rc;
+ }
++/**
++ * Merge a single provides, wrapping N as "NS(N)".
++ */
++static int rpmdsNSAdd(rpmstrPool pool, rpmds *dsp, const char * NS,
++              const char *N, const char *EVR, rpmsenseFlags Flags)
++{
++    char *t;
++    rpmds ds;
++    int rc;
++
++    t = (char *) alloca(strlen(NS)+sizeof("()")+strlen(N));
++    *t = '\0';
++    (void) stpcpy( stpcpy( stpcpy( stpcpy(t, NS), "("), N), ")");
++
++    ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, t, EVR, Flags);
++    rc = rpmdsMerge(dsp, ds);
++    rpmdsFree(ds);
++    return rc;
++}
++
++int rpmdsUnamePool(rpmstrPool pool, rpmds * dsp)
++{
++    int rc = -1;
++    static const char * NS = "uname";
++    struct utsname un;
++
++    if (uname(&un) < 0)
++      goto exit;
++
++    rc = rpmdsNSAdd(pool, dsp, NS, "sysname", un.sysname, RPMSENSE_EQUAL);
++    if (rc < 0)
++      goto exit;
++    rc = rpmdsNSAdd(pool, dsp, NS, "nodename", un.nodename, RPMSENSE_EQUAL);
++    if (rc < 0)
++      goto exit;
++    rc = rpmdsNSAdd(pool, dsp, NS, "release", un.release, RPMSENSE_EQUAL);
++    if (rc < 0)
++      goto exit;
++    rc = rpmdsNSAdd(pool, dsp, NS, "machine", un.machine, RPMSENSE_EQUAL);
++    if (rc < 0)
++      goto exit;
++#if defined(__linux__)
++    rc = rpmdsNSAdd(pool, dsp, NS, "domainname", un.domainname, RPMSENSE_EQUAL);
++    if (rc < 0)
++      goto exit;
++#endif
++exit:
++    /* freeze the pool to save memory, but only if private pool */
++    if (*dsp && (*dsp)->pool != pool)
++      rpmstrPoolFreeze((*dsp)->pool, 0);
++    return (rc < 0) ? -1 : 0;
++}
++
++int rpmdsUname(rpmds * dsp)
++{
++    return rpmdsUnamePool(NULL, dsp);
++}
+diff --git a/lib/rpmds.h b/lib/rpmds.h
+index 90d54aa27..558252c04 100644
+--- a/lib/rpmds.h
++++ b/lib/rpmds.h
+@@ -412,6 +412,13 @@ int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
+  */
+ int rpmdsRpmlib(rpmds * dsp, const void * tblp);
++/**
++ * Load uname provides into a dependency set.
++ * @retval *dsp               (loaded) dependency set
++ * @return            0 on success
++ */
++int rpmdsUname(rpmds * dsp);
++
+ /** \ingroup rpmds
+  * Create and load a dependency set.
+  * @param pool                shared string pool (or NULL for private pool)
+@@ -468,6 +475,14 @@ rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN,
+  */
+ int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
++/**
++ * Load uname provides into a dependency set.
++ * @param pool                shared string pool (or NULL for private pool)
++ * @retval *dsp               (loaded) dependency set
++ * @return            0 on success
++ */
++int rpmdsUnamePool(rpmstrPool pool, rpmds * dsp);
++
+ typedef enum rpmrichOp_e {
+     RPMRICHOP_SINGLE  = 1,
+diff --git a/lib/rpmts_internal.h b/lib/rpmts_internal.h
+index e69ef2584..ecdb12f0c 100644
+--- a/lib/rpmts_internal.h
++++ b/lib/rpmts_internal.h
+@@ -21,6 +21,7 @@ typedef struct tsMembers_s {
+     rpmal addedPackages;      /*!< Set of packages being installed. */
+     rpmds rpmlib;             /*!< rpmlib() dependency set. */
++    rpmds uname;              /*!< uname() dependency set. */
+     rpmte * order;            /*!< Packages sorted by dependencies. */
+     int orderCount;           /*!< No. of transaction elements. */
+     int orderAlloced;         /*!< No. of allocated transaction elements. */
diff --git a/vendor-pld.patch b/vendor-pld.patch
deleted file mode 100644 (file)
index cd77531..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---- rpm-5.2.0/configure.ac.wig 2010-04-25 22:53:46.360198235 +0200
-+++ rpm-5.2.0/configure.ac     2010-04-25 22:54:14.100214966 +0200
-@@ -1872,6 +1872,9 @@ AC_ARG_WITH(
-           "fedora")
-                   AC_DEFINE([RPM_VENDOR_FEDORA], 1, Vendor is Fedora)
-                   ;;
-+          "pld")
-+                  AC_DEFINE([RPM_VENDOR_PLD], 1, Vendor is PLD)
-+                  ;;
-           esac
-           AC_MSG_RESULT([$withval])
-     else
-@@ -2485,7 +2485,7 @@
-     rpmdb/DB_CONFIG
-     macros/macros macros/macros.rpmbuild
-     macros/cmake macros/gstreamer macros/java macros/kernel macros/libtool
--    macros/mandriva macros/suse macros/fedora macros/mono macros/perl macros/pkgconfig macros/php
-+    macros/pld macros/mandriva macros/suse macros/fedora macros/mono macros/perl macros/pkgconfig macros/php
-     macros/python macros/ruby macros/selinux macros/tcl
-     doc/Makefile
-     doc/manual/Makefile doc/fr/Makefile doc/ja/Makefile doc/ko/Makefile
---- rpm-5.4.10/Makefile.am~    2012-03-17 01:24:19.000000000 +0100
-+++ rpm-5.4.10/Makefile.am     2012-09-03 00:08:35.599623394 +0200
-@@ -117,7 +117,7 @@
- pkgcfgdir =   $(pkgdatadir)/macros.d
- pkgcfg_DATA = \
-       macros/cmake macros/gstreamer macros/java macros/kernel macros/libtool \
--      macros/mandriva macros/mono macros/perl macros/pkgconfig macros/php \
-+      macros/pld macros/mono macros/perl macros/pkgconfig macros/php \
-       macros/python macros/ruby macros/selinux macros/tcl
- noinst_HEADERS = build.h debug.h system.h
index 900aa64ff2772dd4338e95d52126d3fbe7996d13..9eab78d44a1c49e7460041e9cf456067426db8b0 100644 (file)
--- a/x32.patch
+++ b/x32.patch
@@ -1,43 +1,43 @@
---- rpm-5.4.15/configure.ac~   2014-12-20 16:50:32.000000000 +0100
-+++ rpm-5.4.15/configure.ac    2014-12-20 16:54:38.036853187 +0100
-@@ -2200,8 +2200,9 @@
- case "${target_cpu}" in
- *86)          RPMCANONARCH=i386 ;;
- ia32e*)               RPMCANONARCH=ia32e ;;
--amd64*)               RPMCANONARCH=amd64 ;;
--x86_64*)      RPMCANONARCH=x86_64 ;;
-+amd64*)               RPMCANONCOLOR=7; RPMCANONARCH=amd64 ;;
-+x86_64*)      RPMCANONCOLOR=7; RPMCANONARCH=x86_64 ;;
-+x32)          RPMCANONARCH=x32 ;;
- alpha*)               RPMCANONARCH=alpha ;;
- sparc64*)     RPMCANONARCH=sparc64 ;;
- sparc*)               RPMCANONARCH=sparc ;;
---- rpm-5.4.15/lib/rpmfc.c.orig        2014-12-20 16:50:32.000000000 +0100
-+++ rpm-5.4.15/lib/rpmfc.c     2014-12-20 18:32:11.641808153 +0100
-@@ -581,6 +581,7 @@
-   { "MIPS, N32 MIPS32",               RPMFC_ELFMIPSN32|RPMFC_INCLUDE },
+diff -ur rpm-4.16.1.2/build/rpmfc.c rpm-4.16.1.2.x32/build/rpmfc.c
+--- rpm-4.16.1.2/build/rpmfc.c 2021-03-21 21:51:28.231530270 +0100
++++ rpm-4.16.1.2.x32/build/rpmfc.c     2021-03-21 21:50:04.127398387 +0100
+@@ -641,6 +641,7 @@
    { "ELF 32-bit",             RPMFC_ELF32|RPMFC_INCLUDE },
    { "ELF 64-bit",             RPMFC_ELF64|RPMFC_INCLUDE },
 +//  { "ELF 32-bit",           RPMFC_ELFX32|RPMFC_INCLUDE },
  
-   { " script",                        RPMFC_SCRIPT },
-   { " text",                  RPMFC_TEXT },
-@@ -685,7 +686,11 @@
-     for (fct = rpmfcTokens; fct->token != NULL; fct++) {
+   { "troff or preprocessor input",    RPMFC_INCLUDE },
+   { "GNU Info",                       RPMFC_INCLUDE },
+@@ -746,7 +747,11 @@
        if (strstr(fmstr, fct->token) == NULL)
            continue;
 -      fcolor |= fct->colors;
 +      // This is a nasty hack, but will have to do for now
 +      if ((fct->colors & RPMFC_ELF32) && (strstr(fmstr, "x86-64") != NULL))
-+        fcolor |= RPMFC_ELFX32|RPMFC_INCLUDE;
++          fcolor |= RPMFC_ELFX32|RPMFC_INCLUDE;
 +      else
-+        fcolor |= fct->colors;
++          fcolor |= fct->colors;
        if (fcolor & RPMFC_INCLUDE)
-           return fcolor;
+           break;
      }
---- rpm-5.4.15/lib/rpmfc.h.orig        2014-12-20 17:51:48.584934979 +0100
-+++ rpm-5.4.15/lib/rpmfc.h     2014-12-20 17:56:14.690160030 +0100
-@@ -20,8 +20,9 @@
+@@ -1147,7 +1152,10 @@
+               color = RPMFC_ELF64;
+               break;
+           case ELFCLASS32:
+-              color = RPMFC_ELF32;
++              if (ehdr.e_machine == EM_X86_64)
++                  color = RPMFC_ELFX32;
++              else
++                  color = RPMFC_ELF32;
+               break;
+           }
+           elf_end(elf);
+diff -ur rpm-4.16.1.2/build/rpmfc.h rpm-4.16.1.2.x32/build/rpmfc.h
+--- rpm-4.16.1.2/build/rpmfc.h 2020-05-28 12:04:25.011136544 +0200
++++ rpm-4.16.1.2.x32/build/rpmfc.h     2021-03-21 21:50:04.127398387 +0100
+@@ -26,8 +26,9 @@
      RPMFC_BLACK                       = 0,
      RPMFC_ELF32                       = (1 <<  0),
      RPMFC_ELF64                       = (1 <<  1),
 +#define       RPMFC_ELF       (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFX32|RPMFC_ELFMIPSN32)
        /* (1 << 3) leaks into package headers, reserved */
  
-     RPMFC_DESKTOP_FILE                = (1 <<  4),
-diff -ur rpm-5.4.15/autodeps/linux.prov rpm-5.4.15.x32/autodeps/linux.prov
---- rpm-5.4.15/autodeps/linux.prov     2010-03-18 10:54:56.000000000 +0100
-+++ rpm-5.4.15.x32/autodeps/linux.prov 2014-12-20 19:18:57.339941715 +0100
-@@ -16,8 +16,12 @@
- #
- # --- Alpha does not mark 64bit dependencies
-+# --- Only x86_64 has x32bit dependencies
-+markx32=""
- case `uname -m` in
-   alpha*)     mark64="" ;;
-+  x86_64)     markx32="()(x32bit)"
-+              mark64="()(64bit)" ;;
-   *)          mark64="()(64bit)" ;;
- esac
-@@ -28,6 +32,10 @@
-     lib64=`if file -L $f 2>/dev/null | \
-       grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
-+    libx32=`if file -L $f 2>/dev/null | \
-+      grep "ELF 32-bit.*x86-64" > /dev/null; \
-+      then echo "$markx32"; fi`
-+    lib64="$lib64$libx32"
-     if [ "$soname" != "" ]; then
-       if [ ! -L $f ]; then
-           echo $soname$lib64
-Only in rpm-5.4.15.x32/autodeps: linux.prov.orig
-diff -ur rpm-5.4.15/autodeps/linux.req rpm-5.4.15.x32/autodeps/linux.req
---- rpm-5.4.15/autodeps/linux.req      2010-03-18 10:54:56.000000000 +0100
-+++ rpm-5.4.15.x32/autodeps/linux.req  2014-12-20 19:20:04.622910545 +0100
-@@ -38,8 +38,12 @@
- #
- # --- Alpha does not mark 64bit dependencies
-+# --- Only x86_64 has x32bit dependencies
-+markx32=""
- case `uname -m` in
-   alpha*)     mark64="" ;;
-+  x86_64)     markx32="()(x32bit)"
-+              mark64="()(64bit)" ;;
-   *)          mark64="()(64bit)" ;;
- esac
-@@ -50,6 +54,9 @@
-     [ -r $f -a -x $f ] || continue
-     lib64=`if file -L $f 2>/dev/null | \
-       grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
-+    libx32=`if file -L $f 2>/dev/null | \
-+      grep "ELF 32-bit.*x86-64" >/dev/null; then echo "$markx32"; fi`
-+    lib64="$lib64$libx32"
-     ldd $f | awk '/=>/ {
-       if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
-           gsub(/'\''"/,"\\&",$1);
-@@ -64,6 +71,9 @@
-     [ -r $f ] || continue
-     lib64=`if file -L $f 2>/dev/null | \
-       grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
-+    libx32=`if file -L $f 2>/dev/null | \
-+      grep "ELF 32-bit.*x86-64" >/dev/null; then echo "$markx32"; fi`
-+    lib64="$lib64$libx32"
-     ldd $f | awk '/=>/ {
-       if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
-           gsub(/'\''"/,"\\&",$1);
-@@ -98,6 +108,9 @@
-     [ -r $f ] || continue
-     lib64=`if file -L $f 2>/dev/null | \
-       grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
-+    libx32=`if file -L $f 2>/dev/null | \
-+      grep "ELF 32-bit.*x86-64" >/dev/null; then echo "$markx32"; fi`
-+    lib64="$lib64$libx32"
-     $OBJDUMP -p $f | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; }
-       /^$/ { START=0; }
-       /^Dynamic Section:$/ { START=1; }
-diff -ur rpm-5.4.15/lib/rpmds.c rpm-5.4.15.x32/lib/rpmds.c
---- rpm-5.4.15/lib/rpmds.c     2014-12-20 19:35:31.114557975 +0100
-+++ rpm-5.4.15.x32/lib/rpmds.c 2014-12-20 19:34:54.958087185 +0100
-@@ -2922,19 +2922,26 @@
-  * @retval t          soname dependency
-  * @param s           elf string (NULL uses "")
-  * @param isElf64     is this an ELF64 symbol?
-+ * @param isX32               is this an X32 symbol?
-  */
- #if defined(HAVE_GELF_H) && defined(HAVE_LIBELF) && !defined(__FreeBSD__)
--static char * sonameDep(/*@returned@*/ char * t, const char * s, int isElf64)
-+static char * sonameDep(/*@returned@*/ char * t, const char * s, int isElf64, int isX32)
-       /*@modifies t @*/
- {
-     *t = '\0';
- #if !defined(__alpha__) && !defined(__sun)
-     if (isElf64) {
-       if (s[strlen(s)-1] != ')')
-       (void) stpcpy( stpcpy(t, s), "()(64bit)");
-     else
-           (void) stpcpy( stpcpy(t, s), "(64bit)");
-     }else
-+      if (isX32) {
-+        if (s[strlen(s)-1] != ')')
-+          (void) stpcpy( stpcpy(t, s), "()(x32bit)");
-+        else
-+          (void) stpcpy( stpcpy(t, s), "(x32bit)");
-+      } else
- #endif
-       (void) stpcpy(t, s);
-     return t;
-@@ -2967,6 +2975,7 @@
-     char * t;
-     int xx;
-     int isElf64;
-+    int isX32;
-     int isDSO;
-     int gotSONAME = 0;
-     int gotDEBUG = 0;
-@@ -3009,6 +3018,7 @@
- /*@=evalorder@*/
-     isElf64 = ehdr->e_ident[EI_CLASS] == ELFCLASS64;
-+    isX32 = (ehdr->e_ident[EI_CLASS] == ELFCLASS32) && (ehdr->e_machine == EM_X86_64);
-     isDSO = ehdr->e_type == ET_DYN;
-     /*@-uniondef @*/
-@@ -3110,7 +3120,7 @@
-                           /* Add next provide dependency. */
-                           ds = rpmdsSingle(RPMTAG_PROVIDES,
--                                      sonameDep(t, buf, isElf64),
-+                                      sonameDep(t, buf, isElf64, isX32),
-                                       "", RPMSENSE_FIND_PROVIDES);
-                           xx = add(context, ds);
-                           (void)rpmdsFree(ds);
-@@ -3163,7 +3173,7 @@
-                           /* Add next require dependency. */
-                           ds = rpmdsSingle(RPMTAG_REQUIRENAME,
--                                      sonameDep(t, buf, isElf64),
-+                                      sonameDep(t, buf, isElf64, isX32),
-                                       "", RPMSENSE_FIND_REQUIRES);
-                           xx = add(context, ds);
-                           (void)rpmdsFree(ds);
-@@ -3205,7 +3215,7 @@
- assert(s != NULL);
-                       buf[0] = '\0';
-                       ds = rpmdsSingle(RPMTAG_REQUIRENAME,
--                              sonameDep(buf, s, isElf64),
-+                              sonameDep(buf, s, isElf64, isX32),
-                               "", RPMSENSE_FIND_REQUIRES);
-                       xx = add(context, ds);
-                       (void)rpmdsFree(ds);
-@@ -3220,7 +3230,7 @@
-                       /* Add next provide dependency. */
-                       buf[0] = '\0';
-                       ds = rpmdsSingle(RPMTAG_PROVIDENAME,
--                              sonameDep(buf, s, isElf64),
-+                              sonameDep(buf, s, isElf64, isX32),
-                               "", RPMSENSE_FIND_PROVIDES);
-                       xx = add(context, ds);
-                       (void)rpmdsFree(ds);
-@@ -3256,7 +3266,7 @@
-       /* Add next provide dependency. */
-       buf[0] = '\0';
-       ds = rpmdsSingle(RPMTAG_PROVIDENAME,
--              sonameDep(buf, s, isElf64), "", RPMSENSE_FIND_PROVIDES);
-+              sonameDep(buf, s, isElf64, isX32), "", RPMSENSE_FIND_PROVIDES);
-       xx = add(context, ds);
-       (void)rpmdsFree(ds);
-       ds = NULL;
-diff -ur rpm-5.4.15/build/parseSpec.c rpm-5.4.15-fixed/build/parseSpec.c
---- rpm-5.4.15/build/parseSpec.c       2015-04-02 20:52:18.192956656 +0200
-+++ rpm-5.4.15-fixed/build/parseSpec.c 2015-04-02 20:49:57.416291008 +0200
-@@ -707,10 +708,25 @@
-     /* Check for description in each package and add arch and os */
-   {
--    const char *platform = rpmExpand("%{_target_platform}", NULL);
--    const char *platformNoarch = NULL;
-+    const char *platform = NULL;
-     const char *arch = rpmExpand("%{_target_cpu}", NULL);
-     const char *os = rpmExpand("%{_target_os}", NULL);
-+#ifdef RPM_VENDOR_PLD
-+/*
-+ * This is a hack for x32 compatibility, on x32 _target_platform
-+ * does not use _target_cpu, it must use hardcoded x86-64.
-+ * This results in noarch packages using platform x86_64-pld-linux-gnux32
-+ * and being unusable on ix86.
-+ */
-+    const char *platformNoarch = xstrdup("noarch-pld-linux");
-+    if (strcmp(arch,"noarch"))
-+        platform = rpmExpand("%{_target_platform}", NULL);
-+    else
-+        platform = xstrdup("noarch-pld-linux");
-+#else
-+    const char *platformNoarch = NULL;
-+    platform = rpmExpand("%{_target_platform}", NULL);
-+#endif
-     for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-       he->tag = RPMTAG_OS;
+     RPMFC_WHITE                       = (1 << 29),
+diff -ur rpm-4.16.1.2/configure.ac rpm-4.16.1.2.x32/configure.ac
+--- rpm-4.16.1.2/configure.ac  2021-03-21 21:51:28.221530479 +0100
++++ rpm-4.16.1.2.x32/configure.ac      2021-03-21 21:50:04.127398387 +0100
+@@ -930,6 +930,10 @@
+ if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
+       host_os=`echo "${host_os}" | sed 's/-gnu$//'`
+ fi
++if echo "$host_os" | grep '.*-gnux32' > /dev/null ; then
++      host_os=`echo "${host_os}" | sed 's/-gnux32$//'`
++      host_os_gnu=-gnux32
++fi
+ changequote(<, >)
+ host_os_exact="${host_os}"
+diff -ur rpm-4.16.1.2/installplatform rpm-4.16.1.2.x32/installplatform
+--- rpm-4.16.1.2/installplatform       2020-05-28 12:04:25.027136631 +0200
++++ rpm-4.16.1.2.x32/installplatform   2021-03-21 21:51:47.671145954 +0100
+@@ -21,6 +21,9 @@
+   ARCH_INSTALL_POST='%{nil}'
+   LIB=lib
++  TARGETCPU="%{_target_cpu}"
++  APPEND_TARGET_ABI=
++  PREFERCOLOR=
+   # XXX FIXME: incomplete and quite likely wrong too in places,
+   # consult various arch folks for correct names etc.
+@@ -82,7 +84,16 @@
+       ISANAME=x86
+       ISABITS=64
+       CANONARCH=x86_64
+-      CANONCOLOR=3
++      CANONCOLOR=7
++      ;;
++    x32)
++      ISANAME=x86
++      ISABITS=x32
++      CANONARCH=x32
++      CANONCOLOR=7
++      APPEND_TARGET_ABI=1
++      TARGETCPU="x86_64"
++      PREFERCOLOR=4
+       ;;
+     ia64)
+       ISANAME=ia
+@@ -190,10 +200,14 @@
+   # skip architectures for which we dont have full config parameters
+   [ -z "$CANONARCH" ] && continue
+-  if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
++  if [ "$OS" = "linux" ] && ( [ "$CANONCOLOR" = 3 ] || [ "$CANONARCH" = "x86_64" ] ); then
+       LIB=${LIB}64
+   fi
++  if [ "$OS" = "linux" ] && [ "$CANONARCH" = "x32" ]; then
++      LIB=${LIB}x32
++  fi
++
+   PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
+   [ -d $PPD ] || mkdir -p $PPD
+@@ -202,7 +216,10 @@
+   | sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
+       -e "s,@RPMCANONARCH@,$CANONARCH,g" \
+       -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
++      -e "s,@RPMPREFERCOLOR@,${PREFERCOLOR:+%_prefer_color\\t$PREFERCOLOR}," \
+       -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
++      -e "s,@TARGET_ABI@,${APPEND_TARGET_ABI:+%{?_gnu\}}," \
++      -e "s,@TARGETCPU@,$TARGETCPU," \
+       -e "s,@LIB@,$LIB," \
+       -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
+       -e '/\${\w*:-/!s,\${,%{_,' \
+diff -ur rpm-4.16.1.2/platform.in rpm-4.16.1.2.x32/platform.in
+--- rpm-4.16.1.2/platform.in   2020-05-28 12:04:25.047136741 +0200
++++ rpm-4.16.1.2.x32/platform.in       2021-03-21 21:51:47.671145954 +0100
+@@ -8,7 +8,7 @@
+ %_vendor              @RPMCANONVENDOR@
+ %_os                  @RPMCANONOS@
+ %_gnu                 @RPMRC_GNU@
+-%_target_platform     %{_target_cpu}-%{_vendor}-%{_target_os}
++%_target_platform     @TARGETCPU@-%{_vendor}-%{_target_os}@TARGET_ABI@
+ %optflags             @RPMRC_OPTFLAGS@
+ %__isa_name           @ISANAME@
+@@ -21,6 +21,7 @@
+ #     1       Elf32 permitted
+ #     2       Elf64 permitted
+ %_transaction_color   @RPMCANONCOLOR@
++@RPMPREFERCOLOR@
+ #==============================================================================
+ # ---- configure macros.
+diff -ur rpm-4.16.1.2/rpmrc.in rpm-4.16.1.2.x32/rpmrc.in
+--- rpm-4.16.1.2/rpmrc.in      2020-05-28 12:04:25.075136894 +0200
++++ rpm-4.16.1.2.x32/rpmrc.in  2021-03-21 21:50:04.127398387 +0100
+@@ -24,6 +24,7 @@
+ optflags: x86_64 -O2 -g
+ optflags: amd64 -O2 -g
+ optflags: ia32e -O2 -g
++optflags: x32 -O2 -g -mtune=generic -march=x86-64
+ optflags: alpha -O2 -g -mieee
+ optflags: alphaev5 -O2 -g -mieee -mtune=ev5
+@@ -155,6 +156,8 @@
+ archcolor: riscv64 2
++archcolor: x32 4
++
+ #############################################################
+ # Canonical arch names and numbers
+@@ -170,6 +173,7 @@
+ arch_canon:   amd64:  amd64   1
+ arch_canon:   ia32e:  ia32e   1
+ arch_canon:   em64t:  em64t   1
++arch_canon:   x32: x32        1
+ arch_canon:   alpha:  alpha   2
+ arch_canon:   alphaev5: alphaev5      2
+@@ -379,6 +383,8 @@
+ buildarchtranslate: amd64: x86_64
+ buildarchtranslate: ia32e: x86_64
++buildarchtranslate: x32: x32
++
+ buildarchtranslate: sh3: sh3
+ buildarchtranslate: sh4: sh4
+ buildarchtranslate: sh4a: sh4
+@@ -486,10 +492,12 @@
+ arch_compat: ia64: noarch
+-arch_compat: x86_64: amd64 em64t athlon noarch
++arch_compat: x86_64: amd64 em64t athlon x32 noarch
+ arch_compat: amd64: x86_64 em64t athlon noarch
+ arch_compat: ia32e: x86_64 em64t athlon noarch
++arch_compat: x32: x32 x86_64 noarch
++
+ arch_compat: sh3: noarch
+ arch_compat: sh4: noarch
+ arch_compat: sh4a: sh4
+@@ -628,6 +636,8 @@
+ buildarch_compat: amd64: x86_64
+ buildarch_compat: ia32e: x86_64
++buildarch_compat: x32: noarch
++
+ buildarch_compat: sh3: noarch
+ buildarch_compat: sh4: noarch
+ buildarch_compat: sh4a: sh4
+diff -ur rpm-4.16.1.2/tools/elfdeps.c rpm-4.16.1.2.x32/tools/elfdeps.c
+--- rpm-4.16.1.2/tools/elfdeps.c       2020-05-28 12:04:25.084136944 +0200
++++ rpm-4.16.1.2.x32/tools/elfdeps.c   2021-03-21 21:50:04.127398387 +0100
+@@ -94,6 +94,9 @@
+           break;
+       }
+     }
++    if ((ehdr->e_ident[EI_CLASS] == ELFCLASS32) && (ehdr->e_machine == EM_X86_64)) {
++      marker = "(x32bit)";
++    }
+     return marker;
+ }
This page took 1.61904 seconds and 4 git commands to generate.