fix failure to recompile with rpmrebuild and file conflicts between rpmrebuild and rpm-build

(cherry picked from commit 0769ea737c8338dec13e85a7aec77165e20fd091)
This commit is contained in:
dongyuzhen 2024-01-15 21:13:08 +08:00 committed by openeuler-sync-bot
parent 9f21e7167f
commit d0dc7e0b5c
3 changed files with 120 additions and 2 deletions

View File

@ -0,0 +1,50 @@
From b1ef9afb58b2a2ba2224d777a57ffbf0666eff3f Mon Sep 17 00:00:00 2001
From: lirui <lirui130@huawei.com>
Date: Thu, 28 Jan 2021 10:09:57 +0800
Subject: [PATCH] Add macros _binaries_in_noarch_packages_terminate_build and
_build_id_links
Some noarch packages use macro _binaries_in_noarch_packages_terminate_build to
package binary files. But when rpmrebuild can't read macro
_binaries_in_noarch_packages_terminate_build, it causes a problem, so add macro
_binaries_in_noarch_packages_terminate_build to the noarch package.
On the compilation environment, the macro _build_id_links is compat,and the
compiled package does not contain build-id. But during rpmrebuild, build-id
will be generated, but the buildroot directory is read-only, causing failure,
so set macro _build_id_links to none
---
rpmrebuild.sh | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/rpmrebuild.sh b/rpmrebuild.sh
index 2da043e..8b7f33d 100755
--- a/rpmrebuild.sh
+++ b/rpmrebuild.sh
@@ -216,10 +216,19 @@ function RpmBuild
return 1
}
fi
- eval $change_arch $BUILDCMD --define "'buildroot $BUILDROOT'" $rpm_defines -bb $rpm_verbose $additional ${FIC_SPEC} || {
- Error "(RpmBuild) package '${PAQUET}' $BuildFailed"
- return 1
- }
+
+ # Add macros %_binaries_in_noarch_packages_terminate_build to the noarch architecture
+ if [ "$pac_arch" = "noarch" ]; then
+ eval $change_arch $BUILDCMD --define "'buildroot $BUILDROOT'" --define "'_build_id_links none'" --define "'%_binaries_in_noarch_packages_terminate_build 0'" $rpm_defines -bb $rpm_verbose $additional ${FIC_SPEC} || {
+ Error "package '${PAQUET}' $BuildFailed"
+ return 1
+ }
+ else
+ eval $change_arch $BUILDCMD --define "'buildroot $BUILDROOT'" --define "'_build_id_links none'" $rpm_defines -bb $rpm_verbose $additional ${FIC_SPEC} || {
+ Error "package '${PAQUET}' $BuildFailed"
+ return 1
+ }
+ fi
return 0
}
--
2.33.0

View File

@ -1,6 +1,6 @@
Name: rpmrebuild
Version: 2.16
Release: 10
Release: 11
Summary: A tool to build a rpm file from the rpm database
License: GPLv2+
URL: http://rpmrebuild.sourceforge.net
@ -14,10 +14,15 @@ Patch9004: fix-cap-from-fs-does-not-work.patch
Patch9005: fix-comment-missing-n-does-not-work.patch
Patch9006: fix-r-does-not-work.patch
Patch9007: fix-errors-found-from-shellcheck-scan.patch
Patch9008: Add-macros-_binaries_in_noarch_packages_terminate_bu.patch
Patch9009: use-backups-of-rpmbuild-and-rpmspec-to-avoid-conflicts.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
Requires: rpm grep bash cpio textutils rpm-build
BuildRequires: rpm-build
Requires: grep bash cpio textutils
%define _binaries_in_noarch_packages_terminate_build 0
%description
%{name} allows to build an rpm file from an installed rpm, or from
@ -43,6 +48,8 @@ install -d -p $RPM_BUILD_ROOT%{_mandir}/fr/man1/
mv $RPM_BUILD_ROOT%{_mandir}/fr_FR.UTF-8/man1/* $RPM_BUILD_ROOT%{_mandir}/fr/man1/
rm -rf $RPM_BUILD_ROOT%{_mandir}/fr_FR.UTF-8/man1/
cp /usr/bin/rpmbuild $RPM_BUILD_ROOT%{_bindir}/rpmbuild-rebuild
cp /usr/bin/rpmspec $RPM_BUILD_ROOT%{_bindir}/rpmspec-rebuild
%files
%defattr(-,root,root)
@ -56,6 +63,8 @@ rm -rf $RPM_BUILD_ROOT%{_mandir}/fr_FR.UTF-8/man1/
%{_prefix}/lib/rpmrebuild/plugins/*.plug
%{_prefix}/lib/rpmrebuild/locale/*
%{_prefix}/lib/rpmrebuild/optional_tags.cfg
%{_bindir}/rpmbuild-rebuild
%{_bindir}/rpmspec-rebuild
%files help
%defattr(-,root,root)
@ -65,6 +74,12 @@ rm -rf $RPM_BUILD_ROOT%{_mandir}/fr_FR.UTF-8/man1/
%{_mandir}/fr/man1/*.gz
%changelog
* Mon Jan 15 2024 dongyuzhen <dongyuzhen@h-partners.com> - 2.16-11
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:fix failure when recompiling noarch rpm and remove the require to rpm-build
* Fri Jan 12 2024 dongyuzhen <dongyuzhen@h-partners.com> - 2.16-10
- Type:bugfix
- CVE:NA

View File

@ -0,0 +1,53 @@
From 407ceacb5f5b987db692b48be9adc97d41f7544a Mon Sep 17 00:00:00 2001
From: lirui <lirui130@huawei.com>
Date: Mon, 26 Apr 2021 09:36:10 +0800
Subject: [PATCH] Use backups of rpmbuild and rpmspec to avoid conflicts
Because the rpmrebuild package contains the rpmbuild and rpmspec commands,
when you install the rpmrebuild and RPM -build packages at the same time,
the upgrade of one of the packages will fail due to the same name file conflict.
So rename the rpmbuild and rpmspec commands and package them.
---
rpmrebuild.sh | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/rpmrebuild.sh b/rpmrebuild.sh
index 2da043e..5800cca 100755
--- a/rpmrebuild.sh
+++ b/rpmrebuild.sh
@@ -192,6 +192,9 @@ function RpmBuild
if [ -x /usr/bin/rpmbuild ]
then
local BUILDCMD=/usr/bin/rpmbuild
+ elif [ -x /usr/bin/rpmbuild-rebuild ]
+ then
+ local BUILDCMD=/usr/bin/rpmbuild-rebuild
else
local BUILDCMD=rpm
@@ -231,10 +234,19 @@ function RpmFileName
local QF_RPMFILENAME=$(eval $change_arch rpm $rpm_defines --eval %_rpmfilename) || return
#Debug " QF_RPMFILENAME=$QF_RPMFILENAME"
# from generated specfile
- RPMFILENAME=$(eval $change_arch rpm $rpm_defines --specfile --query --queryformat "${QF_RPMFILENAME}" ${FIC_SPEC}) || return
-
+ if [ -x /usr/bin/rpmspec ]
+ then
+ RPMFILENAME=$(eval $change_arch rpm $rpm_defines --specfile --query --queryformat "${QF_RPMFILENAME}" ${FIC_SPEC}) || return
+ else
+ RPMFILENAME=$(eval $change_arch rpmspec-rebuild $rpm_defines --query --queryformat "${QF_RPMFILENAME}" ${FIC_SPEC}) || return
+ fi
# workaround for redhat 6.x / rpm 3.x
- local arch=$(eval $change_arch rpm $rpm_defines --specfile --query --queryformat "%{ARCH}" ${FIC_SPEC})
+ if [ -x /usr/bin/rpmspec ]
+ then
+ local arch=$(eval $change_arch rpm $rpm_defines --specfile --query --queryformat "%{ARCH}" ${FIC_SPEC})
+ else
+ local arch=$(eval $change_arch rpmspec-rebuild $rpm_defines --query --queryformat "%{ARCH}" ${FIC_SPEC})
+ fi
if [ "$arch" = "(none)" ]
then
Debug ' workaround for rpm 3.x'
--
2.33.0