+++ /dev/null
-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'
--- /dev/null
+--- 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)
+
--- /dev/null
+--- 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
--- /dev/null
+--- 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}\"\
+++ /dev/null
-!<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.]*)$
-
--- /dev/null
+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. */
+++ /dev/null
-#!/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
--- /dev/null
+--- 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.
+++ /dev/null
-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))
+++ /dev/null
-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++;
- }
+++ /dev/null
---- 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}
-
+++ /dev/null
---- 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 */
+++ /dev/null
-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"))) {
+++ /dev/null
-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;
-
--- /dev/null
+--- 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);
+++ /dev/null
-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;
--- /dev/null
+--- 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
--- /dev/null
+%__libtool_provides %{_rpmconfigdir}/libtooldeps.sh --provides %{buildroot} %{name}
+%__libtool_requires %{_rpmconfigdir}/libtooldeps.sh --requires %{buildroot} %{name}
+%__libtool_path ^%{_libdir}/.*\.la$
--- /dev/null
+#!/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
%_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
+++ /dev/null
-# 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}
--- /dev/null
+--- 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;
+ }
+ }
+
--- /dev/null
+--- 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;
--- /dev/null
+--- 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@
--- /dev/null
+--- 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);
--- /dev/null
+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)
+
+++ /dev/null
---- 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
--- /dev/null
+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;
# 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 = '';
--- /dev/null
+--- 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@
--- /dev/null
+--- 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
+++ /dev/null
-%__perl_provides %{_rpmhome}/perl.prov
-%__perl_requires %{_rpmhome}/perl.req
-%__python_provides %{_rpmhome}/pythoneggs.py --provides
-%__python_requires %{_rpmhome}/pythoneggs.py --requires
+++ /dev/null
-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");
--- /dev/null
+--- 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@',
+++ /dev/null
---- 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;
+++ /dev/null
---- 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);
+++ /dev/null
---- 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)
+++ /dev/null
---- 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;
- }
+++ /dev/null
---- 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
+++ /dev/null
---- 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
+++ /dev/null
---- 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;
+++ /dev/null
---- 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" \
+++ /dev/null
---- 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
+++ /dev/null
---- 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;
- }
-
+++ /dev/null
---- 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);
+++ /dev/null
---- 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
-
+++ /dev/null
---- 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 = "";
- }
+++ /dev/null
---- 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)));
+++ /dev/null
---- 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;
+++ /dev/null
---- 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;
-+}
+++ /dev/null
---- 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:
+++ /dev/null
---- 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);
-
+++ /dev/null
---- 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) {
+++ /dev/null
---- 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
- ;;
+++ /dev/null
---- 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)
+++ /dev/null
---- 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);
+++ /dev/null
---- 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;
+++ /dev/null
-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")
+++ /dev/null
---- 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
+++ /dev/null
---- 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
- #*/
+++ /dev/null
---- 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@*/
+++ /dev/null
---- 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 },
+++ /dev/null
---- 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);
- }
- }
-
+++ /dev/null
---- 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]);
+++ /dev/null
---- 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);
-+ }
- }
- }
- }
+++ /dev/null
---- 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)
+++ /dev/null
---- 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)
+++ /dev/null
---- 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
+++ /dev/null
---- 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);
-
+++ /dev/null
---- 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
-
+++ /dev/null
---- 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) {
+++ /dev/null
---- 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;
+++ /dev/null
---- 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
- #
+++ /dev/null
---- 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);
+++ /dev/null
---- 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;
+++ /dev/null
---- 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 \
+++ /dev/null
---- 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
- #*/
+++ /dev/null
---- 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;
+++ /dev/null
---- 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
+++ /dev/null
---- 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();
+++ /dev/null
---- 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;
+++ /dev/null
-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
+++ /dev/null
---- 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) {
+++ /dev/null
---- 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;
-
+++ /dev/null
---- 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. */
+++ /dev/null
---- 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
-
+++ /dev/null
---- 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)
+++ /dev/null
-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
+++ /dev/null
---- 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;
--- 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
+ $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
+++ /dev/null
-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);
--- 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);
--- 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++) {
+++ /dev/null
---- 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
+++ /dev/null
---- 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);
+++ /dev/null
---- 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 ])
+++ /dev/null
-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@*/
---- 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?
--- /dev/null
+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@
+++ /dev/null
---- 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
-
+++ /dev/null
---- 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);
+++ /dev/null
---- 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,
+++ /dev/null
---- 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");
+++ /dev/null
-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));
+++ /dev/null
-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 = '/';
+++ /dev/null
-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" && \
+++ /dev/null
---- 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))
+++ /dev/null
---- 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}\"\
+++ /dev/null
---- 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);
-+ }
- }
- }
-
+++ /dev/null
---- 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)
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
---- ./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
+++ /dev/null
---- 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;
- }
-
- /**
+++ /dev/null
-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} \
+++ /dev/null
---- 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,
- #
+++ /dev/null
---- 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");
-
+++ /dev/null
---- 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@*/
-
+++ /dev/null
-#!/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
--- 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}
+++ /dev/null
- 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
+++ /dev/null
---- 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@*/
+++ /dev/null
---- 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;
- }
- }
+++ /dev/null
---- 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
+++ /dev/null
---- 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}
- };
-
+++ /dev/null
---- 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 \
+++ /dev/null
---- 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)
+++ /dev/null
---- 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.
---- 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
+++ /dev/null
-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),
+++ /dev/null
-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\
- }
-
- #
+++ /dev/null
---- 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;
--- /dev/null
+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)$
+++ /dev/null
---- 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
-
+++ /dev/null
---- 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)
+++ /dev/null
-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;
+++ /dev/null
---- 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),
+++ /dev/null
---- 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
+++ /dev/null
---- 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.]+$
+++ /dev/null
-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;
--- 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))/=) {
}
}
-@@ -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")) {
---- 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 },
--- 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;
}
--- 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 {
+++ /dev/null
---- 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");
- }
-
-
--- 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."
+
+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"
+
+++ /dev/null
---- 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 \
--- 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)) {
+++ /dev/null
---- 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);
+++ /dev/null
-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
+++ /dev/null
---- 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);
+++ /dev/null
---- 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 */
+++ /dev/null
-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@*/
+++ /dev/null
---- 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
+++ /dev/null
---- 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);
+++ /dev/null
---- 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);
+++ /dev/null
---- 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"))
+++ /dev/null
-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);
+++ /dev/null
-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
+++ /dev/null
-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;
-+}
+++ /dev/null
---- 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;
- }
---- 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);
+++ /dev/null
---- 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)
+++ /dev/null
---- 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));
+++ /dev/null
---- 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
-
+++ /dev/null
-# 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++;
+++ /dev/null
---- 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)
+++ /dev/null
---- 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. */
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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]: Розробка/Будова
[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]: Розробка/Керуванне версіями
[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]: Документація
[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]: Шрифти
[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
[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
[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
[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
[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+
[uk]: X11
X11/Amusements
- [cs]: X11/Zábava
+ [cs]: X11/Zábava
[da]: X11/Underholdning
[de]: X11/Unterhaltung
[es]: X11/Diversiones
[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
[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
[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
[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
[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
[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/Розробка/Інструменти
[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/Бібліотеки
[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/Віконні менеджери/Інструменти
+++ /dev/null
-# global list of file masks not to be compressed in DOCDIR
#
# 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
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
%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,
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.
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
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
призначена для полегшення створення графічних пакетних менеджерів та
інших утиліт, що працюють з пакетами 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
%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
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
Requires: textutils
Requires: which
Requires: xz
-Provides: rpmbuild(monoautodeps)
Provides: rpmbuild(noauto) = 3
%ifarch %{x8664}
Conflicts: automake < 1:1.7.9-2
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
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 3 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 3 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
%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
%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
%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
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
%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)
%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
+++ /dev/null
-/proc/self/fd
-/dev/fd/0
-/dev/fd/1
-/dev/fd/2
--- /dev/null
+--- 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;
+++ /dev/null
-#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);
-}
+++ /dev/null
-#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);
-}
--- /dev/null
+--- 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);
--- /dev/null
+--- 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) &&
+++ /dev/null
-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.
-
-
--- /dev/null
+--- 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;
--- /dev/null
+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");
--- /dev/null
+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. */
+++ /dev/null
---- 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
---- 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;
+ }
+