[packages/rpm/rpm.org] - do not rely on install setting ELF file permissions for generating req/prov

baggins baggins at pld-linux.org
Sat Nov 21 19:39:03 CET 2020


commit ca5bc75f9b83c304a364d7aab3d12bc2954a6a5a
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sat Nov 21 19:38:02 2020 +0100

    - do not rely on install setting ELF file permissions for generating req/prov

 no-exeonly-for-elf-reqprov.patch | 53 ++++++++++++++++++++++++++++++++++++++++
 rpm.spec                         |  2 ++
 2 files changed, 55 insertions(+)
---
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
 
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
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/ca5bc75f9b83c304a364d7aab3d12bc2954a6a5a



More information about the pld-cvs-commit mailing list