summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-26 07:25:54 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-26 07:25:54 +0000
commit1bee4fd305174b56955aa02434b778e0b46f515e (patch)
tree5f4f9ed56e151fa122fef773f15b0eaa93ad2ab9
parent257b43610b08c33aa43ae1f4caff079ff81f89fe (diff)
automatic import of openEuler-rpm-configopeneuler22.03_LTS_SP4openeuler22.03_LTS_SP3
-rw-r--r--Add-support-for-selecting-clang-as-a-toolchain.patch113
-rw-r--r--Call-set_build_flags-cc-before-build-check-and-insta.patch49
-rw-r--r--Feature-support-EBS-sign-for-IMA-digest-list.patch344
-rw-r--r--add-common-script.patch313
-rw-r--r--add-loongarch64-support-for-config.guess-and-config.sub.patch8
-rw-r--r--add-loongarch64-to-generic_arches.patch4
-rw-r--r--add-powerpc64le-and-ppc64le-support.patch29
-rw-r--r--add-pytest-and-tox-macros.patch42
-rw-r--r--add-riscv64-to-some-arches-macro.patch12
-rwxr-xr-xadd-sw-arch-support.patch63
-rw-r--r--backport-Enable-as-needed-by-default.patch31
-rw-r--r--openEuler-rpm-config-add-optflags-for-loongarch64-and-sw_64.patch26
-rw-r--r--openEuler-rpm-config.spec133
13 files changed, 990 insertions, 177 deletions
diff --git a/Add-support-for-selecting-clang-as-a-toolchain.patch b/Add-support-for-selecting-clang-as-a-toolchain.patch
new file mode 100644
index 0000000..c38c7cb
--- /dev/null
+++ b/Add-support-for-selecting-clang-as-a-toolchain.patch
@@ -0,0 +1,113 @@
+From f2a6af2ce79e26bf47604b610056d8c524b647f2 Mon Sep 17 00:00:00 2001
+From: liyunfei <liyunfei33@huawei.com>
+Date: Tue, 9 Jan 2024 20:39:10 +0800
+Subject: [PATCH 1/2] Add support for selecting clang as a toolchain
+
+---
+ generic-hardened-clang.cfg | 1 +
+ macros | 56 ++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 57 insertions(+), 3 deletions(-)
+ create mode 100644 generic-hardened-clang.cfg
+
+diff --git a/generic-hardened-clang.cfg b/generic-hardened-clang.cfg
+new file mode 100644
+index 0000000..ac596df
+--- /dev/null
++++ b/generic-hardened-clang.cfg
+@@ -0,0 +1 @@
++-fPIE
+\ No newline at end of file
+diff --git a/macros b/macros
+index 5fdaf0a..0062126 100755
+--- a/macros
++++ b/macros
+@@ -23,6 +23,46 @@
+
+ %_build_id_links none
+
++# GCC toolchain
++%__cc_gcc gcc
++%__cxx_gcc g++
++%__cpp_gcc gcc -E
++
++# Clang toolchain
++%__cc_clang clang
++%__cxx_clang clang++
++%__cpp_clang clang-cpp
++
++# Default to the GCC toolchain
++#
++# It is enough to override `toolchain` macro and all relevant macro for C/C++
++# compilers will be switched. Either in the spec or in the command-line.
++#
++# %global toolchain clang
++#
++# or:
++#
++# rpmbuild -D "toolchain clang" …
++#
++# Inside a spec file it is also possible to determine which toolchain is in use
++# by testing the same macro. For example:
++#
++# %if "%{toolchain}" == "gcc"
++# BuildRequires: gcc
++# %endif
++#
++# or:
++#
++# %if "%{toolchain}" == "clang"
++# BuildRequires: clang compiler-rt
++# %endif
++#
++%toolchain gcc
++
++%__cc %{expand:%%{__cc_%{toolchain}}}
++%__cxx %{expand:%%{__cxx_%{toolchain}}}
++%__cpp %{expand:%%{__cpp_%{toolchain}}}
++
+ #==============================================================================
+ # ---- compiler flags.
+
+@@ -31,7 +71,13 @@
+ %build_fflags %{optflags} -fexceptions -I%{_fmoddir}
+ %build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
+
++%set_build_cc \
++ CC=%{__cc}; export CC ; \
++ CXX=%{__cxx}; export CXX ; \
++ CCC="${CCC:-%{__cxx}}" ; export CCC
++
+ %set_build_flags \
++ %[ "%{toolchain}" == "gcc" ? "" : "%{set_build_cc};" ] \
+ CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \
+ CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \
+ FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
+@@ -162,8 +208,10 @@
+ # secure options for rpmbuild
+ #
+ # #hardened options
+-%_hardening_cflags -specs=/usr/lib/rpm/generic-hardened-cc1
+-%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld
++%_hardening_gcc_cflags -specs=/usr/lib/rpm/generic-hardened-cc1
++%_hardening_clang_cflags --config /usr/lib/rpm/generic-hardened-clang.cfg
++%_hardening_cflags %{expand:%%{_hardening_%{toolchain}_cflags}}
++%_hardening_ldflags -Wl,-z,now %[ "%{toolchain}" == "gcc" ? "-specs=/usr/lib/rpm/generic-hardened-ld" : "" ]
+ # Use "%undefine _hardened_build" to disable.
+ %_hardened_build 1
+ %_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
+@@ -195,7 +243,11 @@
+ #%_ld_as_needed 1
+ %_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
+
+-%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags}
++%_general_options -O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong %[ "%{toolchain}" == "clang" ? "-fgcc-compatible" : "" ]
++%_warning_options -Wall -Werror=format-security
++%_preprocessor_defines -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
++
++%__global_compiler_flags %{_general_options} %{_warning_options} %{_preprocessor_defines} %{_hardened_cflags}
+
+ # Automatically trim changelog entries after 2 years
+ %_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
+--
+2.27.0
+
diff --git a/Call-set_build_flags-cc-before-build-check-and-insta.patch b/Call-set_build_flags-cc-before-build-check-and-insta.patch
new file mode 100644
index 0000000..8f69298
--- /dev/null
+++ b/Call-set_build_flags-cc-before-build-check-and-insta.patch
@@ -0,0 +1,49 @@
+From c6b15b8c17f957d736dd975d106b10d419070ebd Mon Sep 17 00:00:00 2001
+From: liyunfei <liyunfei33@huawei.com>
+Date: Tue, 9 Jan 2024 20:50:34 +0800
+Subject: [PATCH 2/2] Call %set_build_flags&cc before %build, %check, and
+ %install stages
+
+---
+ macros | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/macros b/macros
+index 0062126..8c16706 100755
+--- a/macros
++++ b/macros
+@@ -83,6 +83,22 @@
+ FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
+ LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS
+
++# Automatically use set_build_flags macro for build, check, and
++# install phases.
++# Use "%undefine _auto_set_build_flags" to disable"
++# Automatically use set_build_cc macro for build, check, and
++# install phases.
++# Use "%undefine _auto_set_build_cc" to disable"
++%_auto_set_build_cc %["%{toolchain}" == "gcc" ? 0 : 1]
++%_auto_set_build_flags 0
++
++%__spec_build_pre %{___build_pre} \
++ %[0%{?_auto_set_build_cc} ? "%{set_build_cc}" : ""] \
++ %[0%{?_auto_set_build_flags} ? "%{set_build_flags}" : ""]
++%__spec_check_pre %{___build_pre} \
++ %[0%{?_auto_set_build_cc} ? "%{set_build_cc}" : ""] \
++ %[0%{?_auto_set_build_flags} ? "%{set_build_flags}" : ""]
++
+ #For backwards compatibility only.
+ %__global_cflags %{build_cflags}
+ %__global_cxxflags %{build_cxxflags}
+@@ -144,6 +158,8 @@
+ [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
+ mkdir -p `dirname "$RPM_BUILD_ROOT"`\
+ mkdir "$RPM_BUILD_ROOT"\
++ %[0%{?_auto_set_build_cc} ? "%{set_build_cc}" : ""]\
++ %[0%{?_auto_set_build_flags} ? "%{set_build_flags}" : ""]\
+ %{nil}
+
+ # ---- Expanded at end of %install scriptlet.
+--
+2.27.0
+
diff --git a/Feature-support-EBS-sign-for-IMA-digest-list.patch b/Feature-support-EBS-sign-for-IMA-digest-list.patch
index 39b6aae..bd0fed0 100644
--- a/Feature-support-EBS-sign-for-IMA-digest-list.patch
+++ b/Feature-support-EBS-sign-for-IMA-digest-list.patch
@@ -4,79 +4,323 @@ Date: Mon, 12 Dec 2022 00:16:01 +0800
Subject: [PATCH] support EBS sign for IMA digest list
Signed-off-by: Huaxin Lu <luhuaxin1@huawei.com>
+Signed-off-by: zhangguangzhi <zhangguangzhi3@huawei.com>
+
---
- brp-digest-list | 16 ++++++++++++++++
- brp-ebs-sign | 34 ++++++++++++++++++++++++++++++++++
- 2 files changed, 50 insertions(+)
+ brp-digest-list | 46 +++++-----
+ brp-ebs-sign | 238 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 262 insertions(+), 22 deletions(-)
create mode 100644 brp-ebs-sign
diff --git a/brp-digest-list b/brp-digest-list
-index e698b7a..9ec50a2 100644
+index e698b7a..d1e2600 100644
--- a/brp-digest-list
+++ b/brp-digest-list
-@@ -84,6 +84,22 @@ if [[ "$(basename $BIN_PKG_FILES)" =~ "digest-list-tools" && \
- chmod 644 $f
- echo $f
+@@ -26,7 +26,6 @@ fi
+ DIGEST_LIST_DIR=$RPM_BUILD_ROOT/$2/etc/ima/digest_lists
+ mkdir -p $DIGEST_LIST_DIR
+ mkdir -p $DIGEST_LIST_DIR.tlv
+-mkdir -p $DIGEST_LIST_DIR.sig
-+ # do EBS sign
-+ export PUBLISHER_HOST=$(grep PUBLISHER_HOST /lkp/scheduled/job.yaml | awk '{print $2}')
-+ export PUBLISHER_PORT=$(grep PUBLISHER_PORT /lkp/scheduled/job.yaml | awk '{print $2}')
-+ if [[ -n "$PUBLISHER_HOST" && -n "$PUBLISHER_PORT" ]]; then
-+ [ -f /usr/lib/rpm/brp-ebs-sign ] || exit 0
-+ for f in $(ls $DIGEST_LIST_DIR); do
-+ sh /usr/lib/rpm/brp-ebs-sign $DIGEST_LIST_DIR/$f &> /dev/null
-+ [ -f $DIGEST_LIST_DIR/$f.sig ] || exit 0
-+ chmod 644 $DIGEST_LIST_DIR/$f.sig
-+ mv $DIGEST_LIST_DIR/$f.sig $DIGEST_LIST_DIR.sig/$f.sig
-+ echo $DIGEST_LIST_DIR.sig/$f.sig
-+ done
-+ exit 0
-+ fi
+ # Generate digest list for the kernel
+ gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR -i l:policy \
+@@ -70,28 +69,31 @@ DIGEST_LIST_TLV_PATH="$DIGEST_LIST_DIR.tlv/0-metadata_list-compact_tlv-$(basenam
+ chmod 644 $DIGEST_LIST_TLV_PATH
+ echo $DIGEST_LIST_TLV_PATH
+
+-if [[ "$(basename $BIN_PKG_FILES)" =~ "digest-list-tools" && \
+- ! $(basename $BIN_PKG_FILES) =~ "debug" ]]; then
+- # Generate digest list for the user space parsers
+- LD_LIBRARY_PATH=$RPM_BUILD_ROOT/usr/lib64 \
+- $RPM_BUILD_ROOT/usr/bin/gen_digest_lists \
+- -d $DIGEST_LIST_DIR -t parser -f compact -m immutable \
+- -i I:$RPM_BUILD_ROOT/usr/libexec -o add -p -1 -i i:
+-
+- f="$DIGEST_LIST_DIR/0-parser_list-compact-libexec"
+- [ -f $f ] || exit 0
+-
+- chmod 644 $f
+- echo $f
++#if [[ "$(basename $BIN_PKG_FILES)" =~ "digest-list-tools" && \
++# ! $(basename $BIN_PKG_FILES) =~ "debug" ]]; then
++# Generate digest list for the user space parsers
+
-+ # do OBS sign
- [ -f /usr/lib/rpm/brp-suse.d/brp-99-pesign ] || exit 0
++# do EBS sign
++export PUBLISHER_HOST=$(grep PUBLISHER_HOST /lkp/scheduled/job.yaml | awk '{print $2}')
++export PUBLISHER_PORT=$(grep PUBLISHER_PORT /lkp/scheduled/job.yaml | awk '{print $2}')
++if [[ -n "$PUBLISHER_HOST" && -n "$PUBLISHER_PORT" ]]; then
++ [ -f /usr/lib/rpm/brp-ebs-sign ] || exit 0
++ sh /usr/lib/rpm/brp-ebs-sign --ima-digestlist $DIGEST_LIST_PATH 1>&2
++ [ -f $DIGEST_LIST_PATH.sig ] || exit 0
++ chmod 644 $DIGEST_LIST_PATH.sig
++ mv $DIGEST_LIST_PATH.sig $DIGEST_LIST_PATH
++ exit 0
++fi
+
+- [ -f /usr/lib/rpm/brp-suse.d/brp-99-pesign ] || exit 0
++# do OBS sign
++[ -f /usr/lib/rpm/brp-suse.d/brp-99-pesign ] || exit 0
- export BRP_PESIGN_FILES="$2/etc/ima/digest_lists/*"
+- export BRP_PESIGN_FILES="$2/etc/ima/digest_lists/*"
+- export RPM_BUILD_ROOT
+- export RPM_PACKAGE_NAME="digest-list-tools"
+- export RPM_SOURCE_DIR="$(rpm --eval %_topdir)/SOURCES"
++export BRP_PESIGN_FILES="$2/etc/ima/digest_lists/*"
++export RPM_BUILD_ROOT
++export RPM_PACKAGE_NAME="digest-list-tools"
++export RPM_SOURCE_DIR="$(rpm --eval %_topdir)/SOURCES"
+
+- if [ -f "/usr/lib/rpm/brp-suse.d/brp-99-pesign" ]; then
+- /usr/lib/rpm/brp-suse.d/brp-99-pesign &> /dev/null
+- fi
++if [ -f "/usr/lib/rpm/brp-suse.d/brp-99-pesign" ]; then
++ /usr/lib/rpm/brp-suse.d/brp-99-pesign &> /dev/null
+ fi
++#fi
diff --git a/brp-ebs-sign b/brp-ebs-sign
new file mode 100644
-index 0000000..662a9f7
+index 0000000..a7a83e5
--- /dev/null
+++ b/brp-ebs-sign
-@@ -0,0 +1,34 @@
+@@ -0,0 +1,238 @@
+#!/bin/bash
+
-+# config
-+PUBLISHER_ADDR="http://${PUBLISHER_HOST}:${PUBLISHER_PORT}/sign-files"
-+POST_KEY_BASE64="encoded_file_content"
-+POST_KEY_MD5="file_md5"
-+REQ_KEY_BASE64="signed_file_content"
-+REQ_KEY_MD5="signed_file_md5"
++INPUT_TYPE=$1
++INPUT_FILE=$2
++SIGN_FILE=$INPUT_FILE
++PROJECT_CONF="/lkp/scheduled/job.yaml"
++POST_ADDR=""
++POST_FILE_SHA256=""
++POST_KEY_NAME=""
++POST_KEY_TYPE=""
++POST_FILE_TYPE=""
++POST_SIGN_TYPE=""
++POST_JOB_ID=""
++POST_OS_ORIJECT=""
++CONFIG_RETEST_COUNT=5
++SIGN_RESULT=0
++FAILED_SIGN_PERMISSION_DENIED=2
+
-+# function definition
++# Tool functions for JSON
+get_json_value(){
-+ echo "$1" | awk -F "[{,:}]" '{for(i=1;i<NF;i++){if($i~"'$2'"){print $(i+1)}}}' | sed 's/\"//g'
++ echo "$1" | \
++ awk -F "[{,:}]" '{for(i=1;i<NF;i++){if($i~"'$2'"){print $(i+1)}}}' | \
++ sed 's/\"//g'
++}
++
++get_post_json() {
++ printf '{'
++ printf '"file_sha256":"%s",' $POST_FILE_SHA256
++ printf '"key_name":"%s",' $POST_KEY_NAME
++ printf '"key_type":"%s",' $POST_KEY_TYPE
++ printf '"file_type":"%s",' $POST_FILE_TYPE
++ printf '"sign_type":"%s",' $POST_SIGN_TYPE
++ printf '"job_id":"%s",' $POST_JOB_ID
++ printf '"os_project":"%s"' $POST_OS_ORIJECT
++ printf '}'
+}
+
-+file="$1"
-+file_base64="$(base64 -w0 $file)"
-+file_md5="$(md5sum $file | awk '{printf $1}')"
-+json="{\"$POST_KEY_BASE64\":\"$file_base64\", \"$POST_KEY_MD5\":\"$file_md5\"}"
++# Prepare sign functions for each sign type
++module_sign_pre() {
++ if [[ "$INPUT_FILE" != *.ko ]]; then
++ echo "The module file must has the .ko extension"
++ return 1
++ fi
++
++ SIGN_FILE="$INPUT_FILE"
++ POST_KEY_NAME="openeuler-kernel-module-ee"
++ POST_KEY_TYPE="x509ee"
++ POST_FILE_TYPE="kernel-module"
++ POST_SIGN_TYPE="cms"
++}
+
-+req="$(curl -X POST "$PUBLISHER_ADDR" -H 'Content-Type: application/json' -d "$json")"
-+[ $? -eq 0 ] || { echo "Fail to post sign service, REQ="; echo "req"; exit 1; }
++ima_digestlist_sign_pre() {
++ cp -f $INPUT_FILE $INPUT_FILE.ko
++ SIGN_FILE="$INPUT_FILE.ko"
++ POST_KEY_NAME="openeuler-ima-ee"
++ POST_KEY_TYPE="x509ee"
++ POST_FILE_TYPE="kernel-module"
++ POST_SIGN_TYPE="cms"
++}
+
-+sig_base64=$(get_json_value "$req" "$REQ_KEY_BASE64")
-+[ $? -eq 0 ] || { echo "Fail to parser $REQ_KEY_BASE64"; exit 1; }
-+echo -e "$sig_base64" | base64 -d > $file.sig
-+[ $? -eq 0 ] || { echo "Fail to decode value of $key"; exit 1; }
++efi_sign_pre() {
++ SIGN_FILE="$INPUT_FILE"
++ POST_KEY_NAME="default-x509ee"
++ POST_KEY_TYPE="x509ee"
++ POST_FILE_TYPE="efi-image"
++ POST_SIGN_TYPE="authenticode"
++}
++
++kernel_sign_pre() {
++ SIGN_FILE="$INPUT_FILE"
++ POST_KEY_NAME="default-x509ee"
++ POST_KEY_TYPE="x509ee"
++ POST_FILE_TYPE="efi-image"
++ POST_SIGN_TYPE="authenticode"
++}
+
-+sig_md5=$(get_json_value "$req" "$REQ_KEY_MD5")
-+[ $? -eq 0 ] || { echo "Fail to parser $REQ_KEY_MD5"; exit 1; }
-+md5sum $file.sig | grep "$sig_md5"
-+[ $? -eq 0 ] || { echo "Fail to check md5 of $file.sig"; exit 1; }
++# Post sign functions for each sign type
++module_sign_post() {
++ :
++}
++
++ima_digestlist_sign_post() {
++ rm -f $INPUT_FILE.ko
++}
++
++efi_sign_post() {
++ :
++}
++
++kernel_sign_post() {
++ :
++}
++
++# Global configuration
++sign_config() {
++ if [ -z "$INPUT_TYPE" ] || [ -z "$INPUT_FILE" ]; then
++ echo "Please input the sign type and file"
++ exit 1
++ fi
++
++ if [ ! -f "$INPUT_FILE" ]; then
++ echo "The input file is invalid"
++ exit 1
++ fi
++
++ POST_FILE_SHA256=$(sha256sum "$INPUT_FILE" | awk '{ print $1 }')
++ if [ $? -ne 0 ]; then
++ echo "Failed to calculate file hash"
++ fi
++
++ PUBLISHER_HOST=$(grep PUBLISHER_HOST $PROJECT_CONF | awk '{print $2}')
++ PUBLISHER_PORT=$(grep PUBLISHER_PORT $PROJECT_CONF | awk '{print $2}')
++ if [ -z "$PUBLISHER_HOST" ] || [ -z "$PUBLISHER_PORT" ]; then
++ echo "Please set PUBLISHER_HOST and PUBLISHER_PORT"
++ exit 1
++ fi
++
++ POST_ADDR="http://${PUBLISHER_HOST}:${PUBLISHER_PORT}/code-sign"
++
++ POST_JOB_ID="$(grep -rwn 'id\:' $PROJECT_CONF | awk '{print $2}')"
++ POST_OS_ORIJECT="$(grep -rwn 'os_project\:' $PROJECT_CONF | awk '{print $2}')"
++ if [ -z "$POST_JOB_ID" ] || [ -z "$POST_OS_ORIJECT" ]; then
++ echo "Failed to get POST_JOB_ID and POST_OS_ORIJECT"
++ exit 1
++ fi
++}
++
++sign_pre() {
++ sign_config
++
++ case $INPUT_TYPE in
++ --efi)
++ efi_sign_pre
++ ;;
++ --module)
++ module_sign_pre
++ ;;
++ --ima-digestlist)
++ ima_digestlist_sign_pre
++ ;;
++ --kernel)
++ kernel_sign_pre
++ ;;
++ *)
++ echo "Unsupported sign type: $INPUT_TYPE"
++ exit 1
++ ;;
++ esac
++}
++
++sign() {
++ # 1. send the request to the sign service
++ # echo "curl "$POST_ADDR" \
++ # -F "file=@$SIGN_FILE" \
++ # -F "data=$(get_post_json);type=application/json""
++ req="$(curl "$POST_ADDR" \
++ -F "file=@$SIGN_FILE" \
++ -F "data=$(get_post_json);type=application/json")"
++ if [ $? -ne 0 ]; then
++ echo "Failed to post the sign service"
++ return 1
++ fi
++
++ req_err_msg=$(get_json_value "$req" "err_msg")
++ if [ -n "$req_err_msg" ]; then
++ echo "Failed, err_msg: [$req_err_msg]"
++ if [ "$req_err_msg" == "SIGN_PERMISSION_DENIED" ]; then
++ return $FAILED_SIGN_PERMISSION_DENIED
++ fi
++ return 1
++ fi
++
++ # 2. write the file content
++ encoded_file_content=$(get_json_value "$req" "encoded_file_content")
++ if [ $? -ne 0 ]; then
++ echo "Failed to get encoded file content"
++ return 1
++ fi
++
++ echo -ne "$encoded_file_content" | base64 -d > $INPUT_FILE.sig
++ if [ $? -ne 0 ]; then
++ echo "Failed to write the signed file"
++ return 1
++ fi
++
++ # for test
++ # cp -f $INPUT_FILE $INPUT_FILE.sig
++ # req="{file_sha256:41c68fca7b3870cc9ef13a828a74af933bd8e4ff345fcfa316}"
++
++ # 3. check the hash
++ sha256_cal=$(sha256sum $INPUT_FILE.sig | awk '{print $1}')
++ sha256_get=$(get_json_value "$req" "file_sha256" | tr '[:upper:]' '[:lower:]')
++ if [ "$sha256_cal" != "$sha256_get" ]; then
++ echo "Failed to verify the hash value"
++ return 1
++ fi
++}
++
++sign_post() {
++ case $INPUT_TYPE in
++ --efi)
++ efi_sign_post
++ ;;
++ --module)
++ module_sign_post
++ ;;
++ --ima-digestlist)
++ ima_digestlist_sign_post
++ ;;
++ --kernel)
++ kernel_sign_post
++ ;;
++ esac
++}
++
++# Main function
++sign_pre
++
++for ((i=1; i<=$CONFIG_RETEST_COUNT; i++)); do
++ sign
++ ret_sign=$?
++ if [ $ret_sign -eq 0 ]; then
++ echo "Succeed to sign file"
++ break;
++ elif [ $ret_sign -eq $FAILED_SIGN_PERMISSION_DENIED ]; then
++ echo "Failed to sign file, permission denied"
++ SIGN_RESULT=$FAILED_SIGN_PERMISSION_DENIED
++ break;
++ elif [ $i -ne $CONFIG_RETEST_COUNT ]; then
++ echo "Failed to sign file, try again"
++ elif [ $i -eq $CONFIG_RETEST_COUNT ]; then
++ echo "Failed to sign file"
++ SIGN_RESULT=1
++ fi
++done
+
-+echo "Sign $file ok!"
-+exit 0
++sign_post
++exit $SIGN_RESULT
--
2.33.0
diff --git a/add-common-script.patch b/add-common-script.patch
new file mode 100644
index 0000000..bb7892e
--- /dev/null
+++ b/add-common-script.patch
@@ -0,0 +1,313 @@
+From 4db504b19f6dd04a44e46b43b3aff4e6cab9214d Mon Sep 17 00:00:00 2001
+From: wangkerong <wangkerong@huawei.com>
+Date: Wed, 13 Oct 2021 10:04:33 +0800
+Subject: [PATCH] add_commom_script
+
+---
+ common.lua | 294 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 294 insertions(+)
+ create mode 100644 common.lua
+
+diff --git a/common.lua b/common.lua
+new file mode 100644
+index 0000000..884ee4d
+--- /dev/null
++++ b/common.lua
+@@ -0,0 +1,294 @@
++-- Convenience Lua functions that can be used within rpm macros
++
++-- Reads an rpm variable. Unlike a basic rpm.expand("{?foo}"), returns nil if
++-- the variable is unset, which is convenient in lua tests and enables
++-- differentiating unset variables from variables set to ""
++local function read(rpmvar)
++ if not rpmvar or
++ (rpm.expand("%{" .. rpmvar .. "}") == "%{" .. rpmvar .. "}") then
++ return nil
++ else
++ return rpm.expand("%{?" .. rpmvar .. "}")
++ end
++end
++
++-- Returns true if the macro that called this function had flag set
++-- – for example, hasflag("z") would give the following results:
++-- %foo -z bar → true
++-- %foo -z → true
++-- %foo → false
++local function hasflag(flag)
++ return (rpm.expand("%{-" .. flag .. "}") ~= "")
++end
++
++-- Returns the argument passed to flag in the macro that called this function
++-- – for example, readflag("z") would give the following results:
++-- %foo -z bar → bar
++-- %foo → nil
++-- %foo -z "" → empty string
++-- %foo -z '' → empty string
++local function readflag(flag)
++ if not hasflag(flag) then
++ return nil
++ else
++ local a = rpm.expand("%{-" .. flag .. "*}")
++ -- Handle "" and '' as empty strings
++ if (a == '""') or (a == "''") then
++ a = ''
++ end
++ return a
++ end
++end
++
++-- Sets a spec variable; echoes the result if verbose
++local function explicitset(rpmvar, value, verbose)
++ local value = value
++ if (value == nil) or (value == "") then
++ value = "%{nil}"
++ end
++ rpm.define(rpmvar .. " " .. value)
++ if verbose then
++ rpm.expand("%{warn:Setting %%{" .. rpmvar .. "} = " .. value .. "}")
++ end
++end
++
++-- Unsets a spec variable if it is defined; echoes the result if verbose
++local function explicitunset(rpmvar, verbose)
++ if (rpm.expand("%{" .. rpmvar .. "}") ~= "%{" .. rpmvar .. "}") then
++ rpm.define(rpmvar .. " %{nil}")
++ if verbose then
++ rpm.expand("%{warn:Unsetting %%{" .. rpmvar .. "}}")
++ end
++ end
++end
++
++-- Sets a spec variable, if not already set; echoes the result if verbose
++local function safeset(rpmvar, value, verbose)
++ if (rpm.expand("%{" .. rpmvar .. "}") == "%{" .. rpmvar .. "}") then
++ explicitset(rpmvar,value,verbose)
++ end
++end
++
++-- Aliases a list of rpm variables to the same variables suffixed with 0 (and
++-- vice versa); echoes the result if verbose
++local function zalias(rpmvars, verbose)
++ for _, sfx in ipairs({{"","0"},{"0",""}}) do
++ for _, rpmvar in ipairs(rpmvars) do
++ local toalias = "%{?" .. rpmvar .. sfx[1] .. "}"
++ if (rpm.expand(toalias) ~= "") then
++ safeset(rpmvar .. sfx[2], toalias, verbose)
++ end
++ end
++ end
++end
++
++-- Takes a list of rpm variable roots and a suffix and alias current<root> to
++-- <root><suffix> if it resolves to something not empty
++local function setcurrent(rpmvars, suffix, verbose)
++ for _, rpmvar in ipairs(rpmvars) do
++ if (rpm.expand("%{?" .. rpmvar .. suffix .. "}") ~= "") then
++ explicitset( "current" .. rpmvar, "%{" .. rpmvar .. suffix .. "}", verbose)
++ else
++ explicitunset("current" .. rpmvar, verbose)
++ end
++ end
++end
++
++-- Echo the list of rpm variables, with suffix, if set
++local function echovars(rpmvars, suffix)
++ for _, rpmvar in ipairs(rpmvars) do
++ rpmvar = rpmvar .. suffix
++ local header = string.sub(" " .. rpmvar .. ": ",1,21)
++ rpm.expand("%{?" .. rpmvar .. ":%{echo:" .. header .. "%{?" .. rpmvar .. "}}}")
++ end
++end
++
++-- Returns an array, indexed by suffix, containing the non-empy values of
++-- <rpmvar><suffix>, with suffix an integer string or the empty string
++local function getsuffixed(rpmvar)
++ local suffixes = {}
++ zalias({rpmvar})
++ for suffix=0,9999 do
++ local value = rpm.expand("%{?" .. rpmvar .. suffix .. "}")
++ if (value ~= "") then
++ suffixes[tostring(suffix)] = value
++ end
++ end
++ -- rpm convention is to alias no suffix to zero suffix
++ -- only add no suffix if zero suffix is different
++ local value = rpm.expand("%{?" .. rpmvar .. "}")
++ if (value ~= "") and (value ~= suffixes["0"]) then
++ suffixes[""] = value
++ end
++ return suffixes
++end
++
++-- Returns the list of suffixes, including the empty string, for which
++-- <rpmvar><suffix> is set to a non empty value
++local function getsuffixes(rpmvar)
++ suffixes = {}
++ for suffix in pairs(getsuffixed(rpmvar)) do
++ table.insert(suffixes,suffix)
++ end
++ table.sort(suffixes,
++ function(a,b) return (tonumber(a) or 0) < (tonumber(b) or 0) end)
++ return suffixes
++end
++
++-- Returns the suffix for which <rpmvar><suffix> has a non-empty value that
++-- matches best the beginning of the value string
++local function getbestsuffix(rpmvar, value)
++ local best = nil
++ local currentmatch = ""
++ for suffix, setvalue in pairs(getsuffixed(rpmvar)) do
++ if (string.len(setvalue) > string.len(currentmatch)) and
++ (string.find(value, "^" .. setvalue)) then
++ currentmatch = setvalue
++ best = suffix
++ end
++ end
++ return best
++end
++
++-- %writevars core
++local function writevars(macrofile, rpmvars)
++ for _, rpmvar in ipairs(rpmvars) do
++ print("sed -i 's\029" .. string.upper("@@" .. rpmvar .. "@@") ..
++ "\029" .. rpm.expand( "%{" .. rpmvar .. "}" ) ..
++ "\029g' " .. macrofile .. "\n")
++ end
++end
++
++-- https://github.com/rpm-software-management/rpm/issues/566
++-- Reformat a text intended to be used used in a package description, removing
++-- rpm macro generation artefacts.
++-- – remove leading and ending empty lines
++-- – trim intermediary empty lines to a single line
++-- – fold on spaces
++-- Should really be a %%{wordwrap:…} verb
++local function wordwrap(text)
++ text = rpm.expand(text .. "\n")
++ text = string.gsub(text, "\t", " ")
++ text = string.gsub(text, "\r", "\n")
++ text = string.gsub(text, " +\n", "\n")
++ text = string.gsub(text, "\n+\n", "\n\n")
++ text = string.gsub(text, "^\n", "")
++ text = string.gsub(text, "\n( *)[-*—][ ]+", "\n%1– ")
++ output = ""
++ for line in string.gmatch(text, "[^\n]*\n") do
++ local pos = 0
++ local advance = ""
++ for word in string.gmatch(line, "%s*[^%s]*\n?") do
++ local wl, bad = utf8.len(word)
++ if not wl then
++ print("%{warn:Invalid UTF-8 sequence detected in:}" ..
++ "%{warn:" .. word .. "}" ..
++ "%{warn:It may produce unexpected results.}")
++ wl = bad
++ end
++ if (pos == 0) then
++ advance, n = string.gsub(word, "^(%s*– ).*", "%1")
++ if (n == 0) then
++ advance = string.gsub(word, "^(%s*).*", "%1")
++ end
++ advance = string.gsub(advance, "– ", " ")
++ pos = pos + wl
++ elseif (pos + wl < 81) or
++ ((pos + wl == 81) and string.match(word, "\n$")) then
++ pos = pos + wl
++ else
++ word = advance .. string.gsub(word, "^%s*", "")
++ output = output .. "\n"
++ pos = utf8.len(word)
++ end
++ output = output .. word
++ if pos > 80 then
++ pos = 0
++ if not string.match(word, "\n$") then
++ output = output .. "\n"
++ end
++ end
++ end
++ end
++ output = string.gsub(output, "\n*$", "\n")
++ return output
++end
++
++-- Because rpmbuild will fail if a subpackage is declared before the source
++-- package itself, provide a source package declaration shell as fallback.
++local function srcpkg(verbose)
++ if verbose then
++ rpm.expand([[
++%{echo:Creating a header for the SRPM from %%{source_name}, %%{source_summary} and}
++%{echo:%%{source_description}. If that is not the intended result, please declare the}
++%{echo:SRPM header and set %%{source_name} in your spec file before calling a macro}
++%{echo:that creates other package headers.}
++]])
++ end
++ print(rpm.expand([[
++Name: %{source_name}
++Summary: %{source_summary}
++%description
++%wordwrap -v source_description
++]]))
++ explicitset("currentname", "%{source_name}", verbose)
++end
++
++-- %new_package core
++local function new_package(source_name, pkg_name, name_suffix, first, verbose)
++ -- Safety net when the wrapper is used in conjunction with traditional syntax
++ if (not first) and (not source_name) then
++ rpm.expand([[
++%{warn:Something already set a package name. However, %%{source_name} is not set.}
++%{warn:Please set %%{source_name} to the SRPM name to ensure reliable processing.}
++]])
++ if name_suffix then
++ print(rpm.expand("%package " .. name_suffix))
++ else
++ print(rpm.expand("%package -n " .. pkg_name))
++ end
++ return
++ end
++ -- New processing
++ if not (pkg_name or name_suffix or source_name) then
++ rpm.expand([[
++%{error:You need to set %%{source_name} or provide explicit package naming!}
++]])
++ end
++ if name_suffix then
++ print(rpm.expand("%package " .. name_suffix))
++ explicitset("currentname", "%{source_name}-" .. name_suffix, verbose)
++ else
++ if not source_name then
++ source_name = pkg_name
++ end
++ if (pkg_name == source_name) then
++ safeset("source_name", source_name, verbose)
++ print(rpm.expand("Name: %{source_name}"))
++ else
++ if source_name and first then
++ srcpkg(verbose)
++ end
++ print(rpm.expand("%package -n " .. pkg_name))
++ end
++ explicitset("currentname", pkg_name, verbose)
++ end
++end
++
++return {
++ read = read,
++ hasflag = hasflag,
++ readflag = readflag,
++ explicitset = explicitset,
++ explicitunset = explicitunset,
++ safeset = safeset,
++ zalias = zalias,
++ setcurrent = setcurrent,
++ echovars = echovars,
++ getsuffixed = getsuffixed,
++ getsuffixes = getsuffixes,
++ getbestsuffix = getbestsuffix,
++ writevars = writevars,
++ wordwrap = wordwrap,
++ new_package = new_package,
++}
+--
+2.27.0
+
diff --git a/add-loongarch64-support-for-config.guess-and-config.sub.patch b/add-loongarch64-support-for-config.guess-and-config.sub.patch
index 9dcec43..acc2f83 100644
--- a/add-loongarch64-support-for-config.guess-and-config.sub.patch
+++ b/add-loongarch64-support-for-config.guess-and-config.sub.patch
@@ -1,8 +1,8 @@
diff --git a/config.guess b/config.guess
-index 0ff02d1..1caf3a6 100644
+index 463631a..2985f85 100644
--- a/config.guess
+++ b/config.guess
-@@ -983,6 +983,9 @@ EOF
+@@ -975,6 +975,9 @@ EOF
k1om:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
@@ -13,10 +13,10 @@ index 0ff02d1..1caf3a6 100644
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
diff --git a/config.sub b/config.sub
-index 6107010..aca1d40 100644
+index 39dbf60..39870d3 100644
--- a/config.sub
+++ b/config.sub
-@@ -269,6 +269,7 @@ case $basic_machine in
+@@ -268,6 +268,7 @@ case $basic_machine in
| k1om \
| le32 | le64 \
| lm32 \
diff --git a/add-loongarch64-to-generic_arches.patch b/add-loongarch64-to-generic_arches.patch
index 5a911c1..cf3dc63 100644
--- a/add-loongarch64-to-generic_arches.patch
+++ b/add-loongarch64-to-generic_arches.patch
@@ -6,8 +6,8 @@ index d6b2c80..a66eb2e 100644
%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
#arches macros
--%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64
-+%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64
+-%generic_arches %{ix86} x86_64 %{arm} aarch64
++%generic_arches %{ix86} x86_64 %{arm} aarch64 loongarch64
%ldc_arches %{generic_arches}
%valgrind_arches %{generic_arches}
%nodejs_arches %{generic_arches}
diff --git a/add-powerpc64le-and-ppc64le-support.patch b/add-powerpc64le-and-ppc64le-support.patch
index 9c0cd9d..8840182 100644
--- a/add-powerpc64le-and-ppc64le-support.patch
+++ b/add-powerpc64le-and-ppc64le-support.patch
@@ -1,38 +1,39 @@
-From fc04d33640534f5046210b4cb60fd4c595955781 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=E9=82=B9=E9=B9=8F?= <peng.zou@shingroup.cn>
-Date: Thu, 22 Feb 2024 14:42:38 +0800
+From c6d355a6997ac10403181015b5ca9d17dcf8d1a7 Mon Sep 17 00:00:00 2001
+From: JianChunfu <chunfu.jian@shingroup.cn>
+Date: Tue, 24 Oct 2023 18:38:38 +0800
Subject: [PATCH] add powerpc64le and ppc64le support
---
macros | 2 +-
- rpmrc | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
+ rpmrc | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/macros b/macros
-index d241ce3..ddee753 100644
+index 5c7447b..38dc694 100644
--- a/macros
+++ b/macros
-@@ -241,7 +241,7 @@
+@@ -225,7 +225,7 @@
%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
#arches macros
--%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64
-+%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64 powerpc64le ppc64le
+-%generic_arches %{ix86} x86_64 %{arm} aarch64 loongarch64
++%generic_arches %{ix86} x86_64 %{arm} aarch64 loongarch64 powerpc64le ppc64le
%ldc_arches %{generic_arches}
%valgrind_arches %{generic_arches}
%nodejs_arches %{generic_arches}
diff --git a/rpmrc b/rpmrc
-index 8ba756d..6a29bcb 100644
+in
+dex 8ba756d..10d7c86 100644
--- a/rpmrc
+++ b/rpmrc
-@@ -7,6 +7,7 @@ optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-u
-
+@@ -8,6 +8,8 @@ optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-u
optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
-+optflags: ppc64le %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
++optflags: ppc64le %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
++
buildarchtranslate: athlon: i686
buildarchtranslate: geode: i686
+ buildarchtranslate: pentium4: i686
--
2.33.0
-
diff --git a/add-pytest-and-tox-macros.patch b/add-pytest-and-tox-macros.patch
new file mode 100644
index 0000000..b76444e
--- /dev/null
+++ b/add-pytest-and-tox-macros.patch
@@ -0,0 +1,42 @@
+From 2f7b74e83fc52d326d5db7de2bcfab2c8d921f29 Mon Sep 17 00:00:00 2001
+From: desert-sailor <dxwangk@isoftstone.com>
+Date: Mon, 24 Jul 2023 11:36:52 +0800
+Subject: [PATCH] add pytest and tox macros
+
+---
+ macros.python | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/macros.python b/macros.python
+index 1cc6e70..334c0ab 100644
+--- a/macros.python
++++ b/macros.python
+@@ -304,3 +304,25 @@ find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $pyth
+ %python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib())")
+ %python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
+ %python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")
++
++# New python test macros
++%pytest() %{expand:\\\
++CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" \\
++PATH="%{buildroot}%{_bindir}:$PATH" \\
++PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \\
++PYTHONDONTWRITEBYTECODE=1 \\
++%{?__pytest_addopts:PYTEST_ADDOPTS="${PYTEST_ADDOPTS:-} %{__pytest_addopts}"} \\
++PYTEST_XDIST_AUTO_NUM_WORKERS=%{_smp_build_ncpus} \\
++%{_bindir}/pytest %{?*}
++}
++
++%tox() %{expand:\\\
++TOX_TESTENV_PASSENV="${TOX_TESTENV_PASSENV:-*}" \\
++CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" \\
++PATH="%{buildroot}%{_bindir}:$PATH" \\
++PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \\
++PYTHONDONTWRITEBYTECODE=1 \\
++%{?__pytest_addopts:PYTEST_ADDOPTS="${PYTEST_ADDOPTS:-} %{__pytest_addopts}"} \\
++PYTEST_XDIST_AUTO_NUM_WORKERS=%{_smp_build_ncpus} \\
++%{__python3} -m tox -e py%{python3_version_nodots} --current-env %{?*}
++}
+--
+2.33.0
+
diff --git a/add-riscv64-to-some-arches-macro.patch b/add-riscv64-to-some-arches-macro.patch
index 0dca59b..987acea 100644
--- a/add-riscv64-to-some-arches-macro.patch
+++ b/add-riscv64-to-some-arches-macro.patch
@@ -1,6 +1,6 @@
-From 7332245a8f59de83485208282f2a15beaf5e544f Mon Sep 17 00:00:00 2001
+From 09e746df9d0c333fef9aabcec3047f68c9d1fc60 Mon Sep 17 00:00:00 2001
From: laokz <zhangkai@iscas.ac.cn>
-Date: Tue, 7 May 2024 10:21:52 +0800
+Date: Sat, 27 Apr 2024 15:09:30 +0800
Subject: [PATCH] add riscv64 to some arches macro
---
@@ -8,11 +8,11 @@ Subject: [PATCH] add riscv64 to some arches macro
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/macros b/macros
-index ddee753..bf82bc5 100644
+index 218cd23..c609e85 100644
--- a/macros
+++ b/macros
-@@ -244,7 +244,7 @@
- %generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64 powerpc64le ppc64le
+@@ -310,7 +310,7 @@
+ %generic_arches %{ix86} x86_64 %{arm} aarch64 loongarch64 powerpc64le ppc64le
%ldc_arches %{generic_arches}
%valgrind_arches %{generic_arches}
-%nodejs_arches %{generic_arches}
@@ -20,7 +20,7 @@ index ddee753..bf82bc5 100644
%ldc_arches %{generic_arches}
%mono_arches %{generic_arches}
%fpc_arches %{generic_arches}
-@@ -253,11 +253,10 @@
+@@ -319,11 +319,10 @@
%GNAT_arches %{GPRbuild_arches} %{generic_arches}
%GPRbuild_arches %{generic_arches}
%nim_arches %{generic_arches}
diff --git a/add-sw-arch-support.patch b/add-sw-arch-support.patch
deleted file mode 100755
index 844a22d..0000000
--- a/add-sw-arch-support.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -Naur openEuler-rpm-config.org/config.guess openEuler-rpm-config.sw/config.guess
---- openEuler-rpm-config.org/config.guess 2022-09-28 02:14:20.761824000 +0000
-+++ openEuler-rpm-config.sw/config.guess 2022-09-28 02:15:03.761824000 +0000
-@@ -915,6 +915,14 @@
- UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
-+ sw_64:Linux:*:*)
-+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+ sw) UNAME_MACHINE=sw_64 ;;
-+ esac
-+ objdump --private-headers /bin/sh | grep -q ld.so.1
-+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-+ echo ${UNAME_MACHINE}-sunway-linux-${LIBC}
-+ exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
-@@ -1459,4 +1467,4 @@
- # time-stamp-start: "timestamp='"
- # time-stamp-format: "%:y-%02m-%02d"
- # time-stamp-end: "'"
--# End:
-\ No newline at end of file
-+# End:
-diff -Naur openEuler-rpm-config.org/config.sub openEuler-rpm-config.sw/config.sub
---- openEuler-rpm-config.org/config.sub 2022-09-28 02:14:20.761824000 +0000
-+++ openEuler-rpm-config.sw/config.sub 2022-09-28 02:24:48.291824000 +0000
-@@ -247,6 +247,7 @@
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
-+ | sw_64 \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-@@ -370,6 +371,7 @@
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
-+ | sw_64-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-@@ -1820,4 +1822,4 @@
- # time-stamp-start: "timestamp='"
- # time-stamp-format: "%:y-%02m-%02d"
- # time-stamp-end: "'"
--# End:
-\ No newline at end of file
-+# End:
-diff -Naur openEuler-rpm-config.org/macros openEuler-rpm-config.sw/macros
---- openEuler-rpm-config.org/macros 2022-09-28 02:14:20.761824000 +0000
-+++ openEuler-rpm-config.sw/macros 2022-09-28 02:15:49.081824000 +0000
-@@ -225,7 +225,7 @@
- %pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
-
- #arches macros
--%generic_arches %{ix86} x86_64 %{arm} aarch64
-+%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64
- %ldc_arches %{generic_arches}
- %valgrind_arches %{generic_arches}
- %nodejs_arches %{generic_arches}
diff --git a/backport-Enable-as-needed-by-default.patch b/backport-Enable-as-needed-by-default.patch
new file mode 100644
index 0000000..182e388
--- /dev/null
+++ b/backport-Enable-as-needed-by-default.patch
@@ -0,0 +1,31 @@
+From 210649d3a50eb862eb95caec54c52cd1513a1dda Mon Sep 17 00:00:00 2001
+From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
+Date: Wed, 15 Aug 2018 07:00:14 +0200
+Subject: [PATCH] Enable --as-needed by default
+
+Conflict:adapt context
+Reference:https://src.fedoraproject.org/rpms/redhat-rpm-config/c/357550f7ba4495b01399c904d389369eb0666837
+
+Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
+---
+ macros | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/macros b/macros
+index cb96614..0d54994 100644
+--- a/macros
++++ b/macros
+@@ -257,8 +257,8 @@
+ #%_ld_strict_symbol_defs 1
+ %_ld_symbols_flags %{?_ld_strict_symbol_defs:-Wl,-z,defs}
+
+-# use "%define _ld_as_needed 1" to enable.
+-#%_ld_as_needed 1
++# use "%undefine _ld_as_needed" to disable.
++%_ld_as_needed 1
+ %_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
+
+ %_general_options -O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong %[ "%{toolchain}" == "clang" ? "-fgcc-compatible" : "" ]
+--
+2.33.0
+
diff --git a/openEuler-rpm-config-add-optflags-for-loongarch64-and-sw_64.patch b/openEuler-rpm-config-add-optflags-for-loongarch64-and-sw_64.patch
new file mode 100644
index 0000000..a50dd54
--- /dev/null
+++ b/openEuler-rpm-config-add-optflags-for-loongarch64-and-sw_64.patch
@@ -0,0 +1,26 @@
+From ed8b90665c3bda8ca6bea1bf541e0232f03fb371 Mon Sep 17 00:00:00 2001
+From: yueyuankun <yueyuankun@kylinos.cn>
+Date: Fri, 15 Mar 2024 11:17:38 +0800
+Subject: [PATCH] add optflags for loongarch64 and sw_64
+
+---
+ rpmrc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rpmrc b/rpmrc
+index 10d7c86..45840e6 100644
+--- a/rpmrc
++++ b/rpmrc
+@@ -8,6 +8,9 @@ optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-u
+ optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
+ optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
+
++optflags: loongarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
++optflags: sw_64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
++
+ optflags: ppc64le %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
+
+ buildarchtranslate: athlon: i686
+--
+2.43.0
+
diff --git a/openEuler-rpm-config.spec b/openEuler-rpm-config.spec
index 441ccaf..b6d62ff 100644
--- a/openEuler-rpm-config.spec
+++ b/openEuler-rpm-config.spec
@@ -3,7 +3,7 @@
Name: %{vendor}-rpm-config
Version: 30
-Release: 42
+Release: 58
License: GPL+
Summary: specific rpm configuration files
URL: https://gitee.com/openeuler/openEuler-rpm-config
@@ -17,24 +17,29 @@ Patch3: change-the-vendor-to-generic-for-common-use.patch
Patch4: remove-fexceptions.patch
Patch5: exclude-kernel-source-and-EFI-files-in-digest-list-building.patch
Patch6: add-brp-scripts-to-delete-rpath.patch
-Patch7: Fix-python3_version-macros-for-Python-3.10.patch
-Patch8: Give-a-warning-when-using-kabi-outside-our-stablelis.patch
-Patch9: fixed-a-bug-that-missing_-p-in-macros.kmp.patch
-Patch10: add-sw-arch-support.patch
+Patch7: add-common-script.patch
+Patch8: Fix-python3_version-macros-for-Python-3.10.patch
+Patch9: Give-a-warning-when-using-kabi-outside-our-stablelis.patch
+Patch10: fixed-a-bug-that-missing_-p-in-macros.kmp.patch
Patch11: update-config.guess-and-config.sub-for-loongarch64.patch
Patch12: add-loongarch64-to-generic_arches.patch
-Patch13: add-loongarch64-support-for-config.guess-and-config.sub.patch
+Patch13: add-loongarch64-support-for-config.guess-and-config.sub.patch
Patch14: backport-kmp-feature.patch
Patch15: 0001-add-loongarch64-for-golang_arches.patch
Patch16: fix-config-error-for-loongarch64.patch
Patch17: Feature-support-EBS-sign-for-IMA-digest-list.patch
Patch18: fix-brp-ldconfig-riscv-default-library-directory.patch
-Patch19: check-if-the-file-is-a-symbolic-link-in-brp-digest-list.patch
-Patch20: fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
-Patch21: add-powerpc64le-and-ppc64le-support.patch
-Patch22: Delete-the-commented-code.patch
-Patch23: add-riscv64-to-some-arches-macro.patch
-Patch24: add-pyproject-macros.patch
+Patch19: add-pyproject-macros.patch
+Patch20: add-pytest-and-tox-macros.patch
+Patch21: check-if-the-file-is-a-symbolic-link-in-brp-digest-list.patch
+Patch22: fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
+Patch23: add-powerpc64le-and-ppc64le-support.patch
+Patch24: Delete-the-commented-code.patch
+Patch25: Add-support-for-selecting-clang-as-a-toolchain.patch
+Patch26: Call-set_build_flags-cc-before-build-check-and-insta.patch
+Patch27: openEuler-rpm-config-add-optflags-for-loongarch64-and-sw_64.patch
+Patch28: add-riscv64-to-some-arches-macro.patch
+Patch29: backport-Enable-as-needed-by-default.patch
Provides: python-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: python2-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
@@ -120,6 +125,9 @@ install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ macros.perl macros.p
mkdir -p %{buildroot}%{_fileattrsdir}
+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}`
@@ -132,6 +140,7 @@ sed -i "s/__vendor/%{vendor}/g" `grep "__vendor" -rl %{buildroot}%{_rpmconfigdir
%{_rpmconfigdir}/generic-*
%{_fileattrsdir}/
%{_rpmconfigdir}/macros.d/
+%{_rpmluadir}/%{_vendor}/*.lua
%exclude %{_rpmconfigdir}/macros.d/macros.kmp
%files -n kernel-rpm-macros
@@ -142,68 +151,116 @@ sed -i "s/__vendor/%{vendor}/g" `grep "__vendor" -rl %{buildroot}%{_rpmconfigdir
%{rpmvdir}/find-requires.ksyms
%changelog
-* Tue May 07 2024 laokz <zhangkai@iscas.ac.cn> - 30-42
-- add riscv64 to some arches macro
+* Tue Aug 6 2024 liyunfei <liyunfei33@huawei.com> - 30-58
+- Fix for "%undefine _auto_set_build_XX" usage
+
+* Wed Jul 10 2024 xujing <xujing125@huawei.com> - 30-57
+- enable --as-needed by default
-* Mon Apr 29 2024 xujing <xujing125@huawei.com> - 30-41
+* Mon Apr 29 2024 xujing <xujing125@huawei.com> - 30-56
- don't delete the commented code in macros
-* Tue Mar 5 2024 hongjinghao <hongjinghao@huawei.com> - 30-40
+* Sun Apr 28 2024 laokz <zhangkai@iscas.ac.cn> - 30-55
+- add riscv64 to some arches macro
+
+* Sun Apr 7 2024 zhangguangzhi <zhangguangzhi3@huawei.com> - 30-54
+- ima digest list ebs sign ret 2 when errmsg is SIGN_PERMISSION_DENIED
+
+* Fri Mar 29 2024 zhangguangzhi <zhangguangzhi3@huawei.com> - 30-53
+- ima digest list ebs sign use file path and check errmsg
+
+* Fri Mar 22 2024 zhangguangzhi <zhangguangzhi3@huawei.com> - 30-52
+- ima digest list ebs sign support modsig
+
+* Fri Mar 15 2024 yueyuankun <yueyuankun@kylinos.cn> - 30-51
+- Add optflags for loongarch64 and sw_64
+
+* Tue Mar 12 2024 liyunfei <liyunfei33@huawei.com> - 30-50
+- Add clang toolchain support
+
+* Tue Mar 5 2024 hongjinghao <hongjinghao@huawei.com> - 30-49
- Delete the commented code
-* Thu Feb 22 2024 peng.zou <peng.zou@shingroup.cn> - 30-39
-- add powerpc64le and ppc64le support
+* Tue Feb 20 2024 peng.zou <peng.zou@shingroup.cn> - 30-48
+- add powerpc64le to generic_arches
+
+* Mon Dec 11 2023 jiahua.yu <jiahua.yu@shingroup.cn> - 30-47
+- Init support for arch ppc64le
-* Tue Nov 21 2023 xujing <xujing125@huawei.com> - 30-38
+* Wed Nov 22 2023 xujing <xujing125@huawei.com> - 30-46
- add the scanning path of the rpath
fix the ELF file cannot be found due to escape of '\'
excute brp_chrpath before arch_install_post
-* Fri Nov 03 2023 fuanan <fuanan3@h-partners.com> - 30-37
+* Fri Nov 03 2023 fuanan <fuanan3@h-partners.com> - 30-45
- check if the file is a symbolic link in brp-digest-list
-* Thu Nov 2 2023 Yang Yanchao <yangyanchao6@huawei.com> - 30-36
+* Thu Nov 2 2023 Yang Yanchao <yangyanchao6@huawei.com> - 30-44
- kmodtool: use tmp.$$ instand of tmp.txt
-* Mon Apr 10 2023 laokz <zhangkai@iscas.ac.cn> - 30-35
+* Mon Aug 28 2023 liyunfei <liyunfei33@huawei.com> - 30-43
+- Revert backport toolchain selecting and %%auto_set_build_flags patches
+
+* Thu Aug 17 2023 liyunfei <liyunfei33@huawei.com> - 30-42
+- Backport Call %%set_build_flags before %%build, %%check, and %%install stages
+
+* Thu Aug 17 2023 liyunfei <liyunfei33@huawei.com> - 30-41
+- Backport Add support for selecting a clang as a tool
+
+* Mon Jul 24 2023 Dongxing Wang <dxwangk@isoftstone.com> - 30-40
+- add pytest and tox macros
+
+* Thu May 11 2023 caodongxia <caodongxia@h-partners.com> - 30-39
+- improve pyproject_install macro
+
+* Thu Apr 20 2023 caodongxia <caodongxia@h-partners.com> - 30-38
+- support pyproject compilation
+
+* Fri Mar 24 2023 laokz <zhangkai@iscas.ac.cn> - 30-37
- fix riscv64 default library directory of brp-ldconfig
-* Tue Mar 28 2023 Xinliang Liu <xinliang.liu@linaro.org> - 30-34
-- Fix kmod install failed.
+* Fri Mar 17 2023 Xinliang Liu <xinliang.liu@linaro.org> - 30-36
+- Fix kmod rpm install failed.
-* Wed Dec 21 2022 luhuaxin <luhuaxin1@huawei.com> - 30-33
+* Sat Jan 14 2023 luhuaxin <luhuaxin1@huawei.com> - 30-35
- support EBS sign
-* Wed Dec 14 2022 huajingyun <huajingyun@loongson.cn> - 30-32
+* Wed Dec 14 2022 huajingyun <huajingyun@loongson.cn> - 30-34
- fix config error for loongarch64
-* Tue Dec 13 2022 Wenlong Zhang <zhangwenlong@loongson.cn> - 30-31
+* Tue Dec 13 2022 Wenlong Zhang <zhangwenlong@loongson.cn> - 30-33
- add loongarch64 for golang_arches
-* Wed Dec 7 2022 yangmingtai <yangmingtai@huawei.com> - 30-30
+* Wed Dec 7 2022 yangmingtai <yangmingtai@huawei.com> - 30-32
- fix latest_kernel macro
-* Wed Dec 7 2022 Yang Yanchao <yangyanchao6@huawei.com> - 30-29
+* Wed Dec 7 2022 Yang Yanchao <yangyanchao6@huawei.com> - 30-31
- backport kmp feature
-* Wed Nov 30 2022 yangmingtai <yangmingtai@huawei.com> - 30-28
-- support adaptive according to vendor
+* Wed Nov 30 2022 yangmingtai <yangmingtai@huawei.com> - 30-30
+- support Adaptive according to vendor
-* Mon Nov 21 2022 huajingyun <huajingyun@loongson.cn> - 30-27
+* Mon Nov 21 2022 huajingyun <huajingyun@loongson.cn> - 30-29
- add loongarch64 support
-* Mon Oct 24 2022 wuzx<wuzx1226@qq.com> - 30-26
-- Add sw64 architecture
-
-* Wed Oct 12 2022 yangmingtai <yangmingtai@huawei.com> - 30-25
+* Wed Oct 12 2022 yangmingtai <yangmingtai@huawei.com> - 30-28
- macro.kmp support -p preamble
-* Thu Sep 8 2022 yangmingtai <yangmingtai@huawei.com> - 30-24
+* Thu Sep 8 2022 yangmingtai <yangmingtai@huawei.com> - 30-27
- add find-requires and find-requires.ksyms
-* Fri Jan 21 2022 Liu Zixian <liuzixian4@huawei.com> - 30-23
+* Mon Jun 13 2022 yangmingtai <yangmingtai@huawei.com> - 30-26
+- fix build failed, bare words are no longer supported
+
+* Mon Dec 13 2021 Liu Zixian <liuzixian4@huawei.com> - 30-25
- fix python macros
+* Fri Nov 26 2021 shixuantong <shixuantong@huawei.com> - 30-24
+- update the definition of python3_version
+
+* Wed Oct 13 2021 wangkerong <wangkerong@huawei.com> - 30-23
+- add common lua scripts resolve "%fontpkg" macro translation failure
+
* Sat Sep 4 2021 yangmingtai <yangmingtai@huawei.com> - 30-22
- add brp scripts to delete rpath