From 52d82a4ada9ff9c78a152f7c56c08347b807298f Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Wed, 12 Mar 2025 14:36:54 +0800 Subject: [PATCH] Add package information on ELF objects & unify vendor macro usage --- macros | 2 +- macros.package-notes-srpm | 21 +++++++++++++++++++++ openEuler-rpm-config.spec | 23 ++++++++++++++++++----- package-notes.in | 2 ++ 4 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 macros.package-notes-srpm create mode 100644 package-notes.in diff --git a/macros b/macros index 7e393a4..1d0a8ce 100644 --- a/macros +++ b/macros @@ -75,7 +75,7 @@ # flag when linking. %_clang_extra_ldflags %{?_lto_cflags} -%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags} %[ "%{toolchain}" == "clang" ? "%{?_clang_extra_ldflags}" : "" ] +%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags} %[ "%{toolchain}" == "clang" ? "%{?_clang_extra_ldflags}" : "" ] %{?_package_note_flags} %set_build_cc \ CC=%{__cc}; export CC ; \ diff --git a/macros.package-notes-srpm b/macros.package-notes-srpm new file mode 100644 index 0000000..3aa6bbb --- /dev/null +++ b/macros.package-notes-srpm @@ -0,0 +1,21 @@ +# This file is part of the package-notes package. +# +# Add an ELF note with information about the package the code was compiled for. +# See https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects +# for details. +# +# To opt out of the use of this feature completely, include this in the spec +# file: +# +# %undefine _package_note_flags +# + +# Overall status: 1 if looks like we can insert the note, 0 otherwise +# Unfortunately "clang" does not support specs files so the note insertion is disabled when using it. +%_package_note_status %{!?_package_note_flags:0}%{?_package_note_flags:%[0%{?name:1} && "%_target_cpu" != "noarch" && "%{toolchain}" != "clang" ? 1 : 0]} + + +# The linker flags to be passed to the compiler to insert the notes section will +# be created by the spec file, to avoid issues with quoting and escaping across +# different build systems and shells. +%_package_note_flags %[%_package_note_status ? "-specs=/usr/lib/rpm/@VENDOR@/@VENDOR@-package-notes" : ""] diff --git a/openEuler-rpm-config.spec b/openEuler-rpm-config.spec index 9397e68..1b8db19 100644 --- a/openEuler-rpm-config.spec +++ b/openEuler-rpm-config.spec @@ -3,7 +3,7 @@ Name: %{vendor}-rpm-config Version: 31 -Release: 19 +Release: 20 License: GPL+ AND MIT Summary: specific rpm configuration files URL: https://gitee.com/src-openeuler/openEuler-rpm-config @@ -31,6 +31,7 @@ Source102: macros.go Source103: macros.python Source104: macros.kmp Source105: macros.shell-completions +Source106: macros.package-notes-srpm # Dependency generator scripts Source200: find-requires.ksyms @@ -56,6 +57,7 @@ Source210: find-provides.golang-vendor-bundled Source300: kmodtool Source301: find-requires Source303: fix-libtool-from-moving-options-after-libs +Source304: package-notes.in # Snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git Source500: config.guess @@ -91,6 +93,7 @@ Provides: rust-srpm-macros = 10-1 Provides: go-srpm-macros = 2-18 Provides: perl-macros = 4:5.32.0-1 Provides: nbdkit-srpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: package-notes-srpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: perl-macros < 4:5.32.0-1 Obsoletes: python-rpm-macros < %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: python2-rpm-macros < %{?epoch:%{epoch}:}%{version}-%{release} @@ -114,6 +117,8 @@ Obsoletes: openEuler-rpm-config < %{?epoch:%{epoch}:}%{version}-%{release} Requires: efi-srpm-macros Requires: qt5-srpm-macros +BuildRequires: %{vendor}-release + Requires: rpm >= 4.17.0 Requires: rpm-build >= 4.17.0 Requires: zip @@ -166,18 +171,20 @@ install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kabi.sh install -p -m 755 -t %{buildroot}%{rpmvdir} kmodtool install -p -m 755 -t %{buildroot}%{rpmvdir} find-requires* install -p -m 755 -t %{buildroot}%{rpmvdir} find-provides* +install -p -m 755 package-notes.in %{buildroot}%{rpmvdir}/%{vendor}-package-notes mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d -install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ macros.perl macros.python macros.go macros.forge macros.kmp macros.shell-completions +install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ macros.* mkdir -p %{buildroot}%{_fileattrsdir} install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr -mkdir -p %{buildroot}%{_rpmluadir}/%{_vendor}/{rpm,srpm} -install -p -m 644 -t %{buildroot}%{_rpmluadir}/%{_vendor} common.lua +mkdir -p %{buildroot}%{_rpmluadir}/%{vendor}/{rpm,srpm} +install -p -m 644 -t %{buildroot}%{_rpmluadir}/%{vendor} common.lua # Adaptive according to vendor sed -i "s/@VENDOR@/%{vendor}/g" `grep "@VENDOR@" -rl %{buildroot}%{_rpmconfigdir}` +sed -i "s|@OSCPE@|$(cat /etc/system-release-cpe)|" %{buildroot}%{rpmvdir}/%{vendor}-package-notes %files %dir %{rpmvdir} @@ -187,12 +194,13 @@ sed -i "s/@VENDOR@/%{vendor}/g" `grep "@VENDOR@" -rl %{buildroot}%{_rpmconfigdir %{rpmvdir}/config.* %{rpmvdir}/find-provides.nbdkit %{rpmvdir}/find-provides.golang-vendor-bundled +%{rpmvdir}/%{vendor}-package-notes %{_rpmconfigdir}/generic-* %{_rpmconfigdir}/fix-libtool-from-moving-options-after-libs %{_fileattrsdir}/*.attr %{_rpmconfigdir}/kabi.sh %{_rpmconfigdir}/macros.d/ -%{_rpmluadir}/%{_vendor}/*.lua +%{_rpmluadir}/%{vendor}/*.lua %exclude %{_rpmconfigdir}/macros.d/macros.kmp %files -n kernel-rpm-macros @@ -202,6 +210,11 @@ sed -i "s/@VENDOR@/%{vendor}/g" `grep "@VENDOR@" -rl %{buildroot}%{_rpmconfigdir %{rpmvdir}/find-requires.ksyms %changelog +* Sat Mar 08 2025 Funda Wang - 31-20 +- Add package information on ELF objects +- buildrequires vendor-release for /etc/system-release-cpe file +- unify vendor macro usage + * Tue Feb 25 2025 Funda Wang - 31-19 - fix golang-vendor-provides script for kubernetes - move kabi and kmod attr into system-rpm-config so that it could be used when building kernel diff --git a/package-notes.in b/package-notes.in new file mode 100644 index 0000000..3a19b1b --- /dev/null +++ b/package-notes.in @@ -0,0 +1,2 @@ +*link: ++ --package-metadata={\"type\":\"rpm\",\"name\":\"%:getenv(RPM_PACKAGE_NAME \",\"version\":\"%:getenv(RPM_PACKAGE_VERSION -%:getenv(RPM_PACKAGE_RELEASE \",\"architecture\":\"%:getenv(RPM_ARCH \",\"osCpe\":\"@OSCPE@\"})))) -- Gitee