From: Jan Rękorajski Date: Sat, 21 Nov 2020 18:38:02 +0000 (+0100) Subject: - do not rely on install setting ELF file permissions for generating req/prov X-Git-Tag: auto/th/rpm-4.16.1.2-1~25 X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=commitdiff_plain;h=ca5bc75f9b83c304a364d7aab3d12bc2954a6a5a;ds=sidebyside - do not rely on install setting ELF file permissions for generating req/prov --- diff --git a/no-exeonly-for-elf-reqprov.patch b/no-exeonly-for-elf-reqprov.patch new file mode 100644 index 0000000..3eb4f00 --- /dev/null +++ b/no-exeonly-for-elf-reqprov.patch @@ -0,0 +1,53 @@ +* Provides for libraries are not populated if %install does not set + executable bit on ELF file. One such notable example is libgcc_s + installed with mode 644 by `make install`: + +rpm5: + +$ rpm -q --provides libgcc | grep libgcc_s +libgcc_s.so.1 +libgcc_s.so.1(GCC_3.0) +libgcc_s.so.1(GCC_3.3) +libgcc_s.so.1(GCC_3.3.1) +libgcc_s.so.1(GCC_3.4) +libgcc_s.so.1(GCC_3.4.2) +libgcc_s.so.1(GCC_4.0.0) +libgcc_s.so.1(GCC_4.2.0) +libgcc_s.so.1(GCC_4.3.0) +libgcc_s.so.1(GCC_4.4.0) +libgcc_s.so.1(GCC_4.5.0) +libgcc_s.so.1(GCC_4.7.0) +libgcc_s.so.1(GCC_4.8.0) +libgcc_s.so.1(GCC_7.0.0) +libgcc_s.so.1(GLIBC_2.0) +libgcc_s.so.1()(64bit) +libgcc_s.so.1(GCC_3.0)(64bit) +libgcc_s.so.1(GCC_3.3)(64bit) +libgcc_s.so.1(GCC_3.3.1)(64bit) +libgcc_s.so.1(GCC_3.4)(64bit) +libgcc_s.so.1(GCC_3.4.2)(64bit) +libgcc_s.so.1(GCC_3.4.4)(64bit) +libgcc_s.so.1(GCC_4.0.0)(64bit) +libgcc_s.so.1(GCC_4.2.0)(64bit) +libgcc_s.so.1(GCC_4.3.0)(64bit) +libgcc_s.so.1(GCC_4.7.0)(64bit) +libgcc_s.so.1(GCC_4.8.0)(64bit) +libgcc_s.so.1(GCC_7.0.0)(64bit) + +rpm4: + +$ rpm -q --provides -p libgcc-10.2.0-1.x86_64.rpm | grep libgcc_s +(empty) + +Aa a workaround we could remove "exeonly" from %__elf_flags in +/usr/lib/rpm/fileattrs/elf.attr but ideally RPM should not look at +actual file mode on disk but rather on mode configured in %files. + +--- rpm-4.16.0/fileattrs/elf.attr~ 2020-05-28 12:04:25.000000000 +0200 ++++ rpm-4.16.0/fileattrs/elf.attr 2020-11-21 19:35:52.405659895 +0100 +@@ -1,4 +1,4 @@ + %__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private} + %__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private} + %__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$ +-%__elf_flags exeonly ++#__elf_flags exeonly diff --git a/rpm.spec b/rpm.spec index 2cba870..3f3cf5f 100644 --- a/rpm.spec +++ b/rpm.spec @@ -77,6 +77,7 @@ Patch23: shortcircuited-deps.patch Patch24: cpuinfo-deps.patch Patch25: rpmio-read-proc-files.patch Patch26: allow-at-in-ver-rel.patch +Patch27: no-exeonly-for-elf-reqprov.patch URL: https://rpm.org/ BuildRequires: acl-devel BuildRequires: db-devel >= %{db_ver} @@ -569,6 +570,7 @@ Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze %patch24 -p1 %patch25 -p1 %patch26 -p1 +%patch27 -p1 install %{SOURCE15} scripts/perl.prov.in