From b0735cb810bc1132c4ade677b5c742db03225bac Mon Sep 17 00:00:00 2001 From: Chunmei Xu Date: Fri, 14 Oct 2022 15:50:10 +0800 Subject: [PATCH] add generate-compatibiliy-deps to generate abi/api files Signed-off-by: Chunmei Xu --- abi.attr | 2 +- api.attr | 2 +- compatibiliy-deps.sh => compatibility-deps.sh | 0 generate-compatibility-deps | 42 +++++++++++++++++++ macros | 5 +++ system-rpm-config.spec | 15 +++++-- 6 files changed, 60 insertions(+), 6 deletions(-) rename compatibiliy-deps.sh => compatibility-deps.sh (100%) create mode 100755 generate-compatibility-deps diff --git a/abi.attr b/abi.attr index ea38bda..ac5dbed 100644 --- a/abi.attr +++ b/abi.attr @@ -1,2 +1,2 @@ -%__abi_provides %{_rpmconfigdir}/compatibiliy-deps.sh abi %{name} %{version} +%__abi_provides %{_rpmconfigdir}/compatibility-deps.sh abi %{name} %{version} %__abi_path ^/usr/lib/compatibility/[^/]+/[^/]+\.dump$ diff --git a/api.attr b/api.attr index 25defec..161f05f 100644 --- a/api.attr +++ b/api.attr @@ -1,2 +1,2 @@ -%__api_provides %{_rpmconfigdir}/compatibiliy-deps.sh api %{name} %{version} +%__api_provides %{_rpmconfigdir}/compatibility-deps.sh api %{name} %{version} %__api_path ^/usr/lib/compatibility/[^/]+/[^/]+*\.option.list$ diff --git a/compatibiliy-deps.sh b/compatibility-deps.sh similarity index 100% rename from compatibiliy-deps.sh rename to compatibility-deps.sh diff --git a/generate-compatibility-deps b/generate-compatibility-deps new file mode 100755 index 0000000..60b429b --- /dev/null +++ b/generate-compatibility-deps @@ -0,0 +1,42 @@ +#! /bin/bash + +if [ $# != 1 ]; then + echo "No name specified" >&2 + exit 1 +fi + +if [ -z "$RPM_BUILD_ROOT" ]; then + echo "No build root defined" >&2 + exit 1 +fi + +if [ ! -d "$RPM_BUILD_ROOT" ]; then + echo "Invalid build root" >&2 + exit 1 +fi + +name=$1 +abidir=usr/lib/compatibility/$name +mkdir -p $RPM_BUILD_ROOT/$abidir +pushd $RPM_BUILD_ROOT/$abidir +for full_name in $(find $RPM_BUILD_ROOT -name "*.so*") ; do + f=`echo ${full_name##*/}` + ff=`echo ${f%%\.so*}` + file $full_name | grep "shared object" > /dev/null 2>&1 && abi-dumper $full_name -o $ff.dump > /dev/null 2>&1 || : +done +popd + +libdir=`rpm -E %{_libdir}` +sbindir=`rpm -E %{_sbindir}` +bindir=`rpm -E %{_bindir}` +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RPM_BUILD_ROOT/$libdir +pushd $RPM_BUILD_ROOT/$abidir +for dir in $sbindir $bindir ; do + if [ ! -d $RPM_BUILD_ROOT/$dir ]; then + continue + fi + for f in $(ls $RPM_BUILD_ROOT/$dir) ; do + full_name=$RPM_BUILD_ROOT/$dir/$f + file $full_name | grep executable > /dev/null 2>&1 && $full_name --help > $f-option.list > /dev/null 2>&1 || : + done +done diff --git a/macros b/macros index f26b246..8af530e 100644 --- a/macros +++ b/macros @@ -274,6 +274,9 @@ print(result) %{__os_install_post_python} \ %{nil} +%__generate_compatibility_deps /usr/lib/rpm/anolis/generate-compatibility-deps %{name} +%generate_compatibility_deps %{?__generate_compatibility_deps} + %__spec_install_post\ %[ "%{toolchain}" == "clang" ? "%{?__brp_llvm_compile_lto_elf}" : "%{nil}" ] \ %{?__debug_package:%{__debug_install_post}}\ @@ -397,3 +400,5 @@ print(result) %global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \ %global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \ } + +%abidir %{_prefix}/lib/compatibility/%{name} diff --git a/system-rpm-config.spec b/system-rpm-config.spec index 03ffe91..bec61bf 100644 --- a/system-rpm-config.spec +++ b/system-rpm-config.spec @@ -1,4 +1,4 @@ -%define anolis_release 9 +%define anolis_release 10 Summary: Anolis OS specific rpm configuration files Name: system-rpm-config @@ -54,6 +54,7 @@ Source400: dist.sh Source401: gpgverify Source402: remove-info-dir Source403: fix-dlsearch-path-in-libtool +Source404: generate-compatibility-deps # 2022-05-25 Snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git Source500: config.guess @@ -70,7 +71,7 @@ Source701: brp-strip-lto Source800: common.lua Source801: forge.lua -Source900: compatibiliy-deps.sh +Source900: compatibility-deps.sh Source901: abi.attr Source902: api.attr @@ -103,6 +104,7 @@ Requires: python3-rpm-macros Requires: efi-srpm-macros Requires: perl-srpm-macros Requires: rust-srpm-macros +Requires: abi-dumper %global rrcdir /usr/lib/rpm/anolis @@ -126,6 +128,7 @@ install -p -m 755 -t %{buildroot}%{rrcdir} gpgverify install -p -m 755 -t %{buildroot}%{rrcdir} brp-* install -p -m 755 -t %{buildroot}%{rrcdir} remove-info-dir install -p -m 755 -t %{buildroot}%{rrcdir} fix-dlsearch-path-in-libtool +install -p -m 755 -t %{buildroot}%{rrcdir} generate-compatibility-deps install -p -m 755 -t %{buildroot}%{rrcdir} find-* mkdir -p %{buildroot}%{rrcdir}/find-provides.d @@ -133,7 +136,7 @@ mkdir -p %{buildroot}%{rrcdir}/find-provides.d install -p -m 755 -t %{buildroot}%{rrcdir} brp-* mkdir -p %{buildroot}%{_rpmconfigdir} -install -p -m 755 -t %{buildroot}%{_rpmconfigdir} compatibiliy-deps.sh +install -p -m 755 -t %{buildroot}%{_rpmconfigdir} compatibility-deps.sh mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* @@ -159,8 +162,9 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %{rrcdir}/brp-ldconfig %{rrcdir}/remove-info-dir %{rrcdir}/fix-dlsearch-path-in-libtool +%{rrcdir}/generate-compatibility-deps %{_fileattrsdir}/*.attr -%{_rpmconfigdir}/compatibiliy-deps.sh +%{_rpmconfigdir}/compatibility-deps.sh %{_rpmconfigdir}/macros.d/macros.*-srpm %{_rpmconfigdir}/macros.d/macros.dwz %{_rpmconfigdir}/macros.d/macros.anolis-misc @@ -176,6 +180,9 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %license MulanPSL %changelog +* Fri Oct 14 2022 Chunmei Xu - 23.10 +- add generate-compatibility-deps to generate abi/api files + * Tue Oct 11 2022 happy_orange - 23.9 - change the filter matching rules for abi and api fileattr. -- Gitee