2017-06-30 15:03:35 +00:00
|
|
|
From 932c2170e961d393569992b2f9c3ab8ee415f01b Mon Sep 17 00:00:00 2001
|
2017-03-08 09:25:36 +00:00
|
|
|
From: Panu Matilainen <pmatilai@redhat.com>
|
|
|
|
Date: Wed, 9 Nov 2016 09:16:48 +0200
|
2017-07-18 13:49:11 +00:00
|
|
|
Subject: [PATCH] Fix debuginfo etc when subpackages have different versions
|
|
|
|
(RhBug:1051407)
|
2017-03-08 09:25:36 +00:00
|
|
|
|
|
|
|
Rpm has always been a bit dazed and confused when it comes to specs
|
|
|
|
with sub-packages having different version etc from the main package.
|
|
|
|
Many things work fine in that case .. except .. when they dont. Debuginfo
|
|
|
|
picking up wrong versions (RhBug:1051407) is just one example, there
|
|
|
|
are countless more in bugzilla wrt buildroot paths and whatnot.
|
|
|
|
The simple and sane solution would be not piling on them macros
|
|
|
|
from sub-packages, but that would surely break somebodys precious
|
|
|
|
spec tricks.
|
|
|
|
|
|
|
|
The ugly but brutally simple and compatible solution to this all is to
|
|
|
|
create separate set of macros when on the main package, this lets users
|
|
|
|
in and out of rpm pick which one (latest or main) they want. To hopefully
|
|
|
|
avoid stomping on anybodys toes, use uppercasing for the macro name (other
|
|
|
|
variants like %pkg_release are awfully commonly used). Pile 'em on, yay!
|
2017-06-30 15:03:35 +00:00
|
|
|
|
|
|
|
(cherry picked from commit ccdb1aa5c675d917b1ba8d026c44fd95bab79e6c)
|
|
|
|
|
|
|
|
Conflicts:
|
|
|
|
build/parsePreamble.c
|
|
|
|
macros.in
|
2017-03-08 09:25:36 +00:00
|
|
|
---
|
|
|
|
build/files.c | 2 +-
|
|
|
|
build/parsePreamble.c | 11 ++++++++++-
|
|
|
|
macros.in | 18 +++++++++---------
|
|
|
|
3 files changed, 20 insertions(+), 11 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/build/files.c b/build/files.c
|
2017-06-30 15:03:35 +00:00
|
|
|
index 6215bf85c..2ede463a1 100644
|
2017-03-08 09:25:36 +00:00
|
|
|
--- a/build/files.c
|
|
|
|
+++ b/build/files.c
|
|
|
|
@@ -1797,7 +1797,7 @@ static int generateBuildIDs(FileList fl)
|
|
|
|
int unique_debug_names =
|
|
|
|
rpmExpandNumeric("%{?_unique_debug_names}");
|
|
|
|
if (unique_debug_names == 1)
|
|
|
|
- vra = rpmExpand("-%{version}-%{release}.%{_arch}", NULL);
|
|
|
|
+ vra = rpmExpand("-%{VERSION}-%{RELEASE}.%{_arch}", NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Now add a subdir and symlink for each buildid found. */
|
|
|
|
diff --git a/build/parsePreamble.c b/build/parsePreamble.c
|
2017-06-30 15:03:35 +00:00
|
|
|
index 933f7340f..6be440369 100644
|
2017-03-08 09:25:36 +00:00
|
|
|
--- a/build/parsePreamble.c
|
|
|
|
+++ b/build/parsePreamble.c
|
|
|
|
@@ -909,8 +909,17 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
- if (macro)
|
|
|
|
+ if (macro) {
|
|
|
|
addMacro(spec->macros, macro, NULL, field, RMIL_SPEC);
|
|
|
|
+ /* Add a separate uppercase macro for tags from the main package */
|
|
|
|
+ if (pkg == spec->packages) {
|
|
|
|
+ char *m = xstrdup(macro);
|
|
|
|
+ for (char *p = m; *p; ++p)
|
|
|
|
+ *p = rtoupper(*p);
|
|
|
|
+ addMacro(spec->macros, m, NULL, field, RMIL_SPEC);
|
|
|
|
+ free(m);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
rc = RPMRC_OK;
|
|
|
|
exit:
|
|
|
|
return rc;
|
|
|
|
diff --git a/macros.in b/macros.in
|
2017-06-30 15:03:35 +00:00
|
|
|
index 68bf39194..4d9028254 100644
|
2017-03-08 09:25:36 +00:00
|
|
|
--- a/macros.in
|
|
|
|
+++ b/macros.in
|
|
|
|
@@ -180,7 +180,7 @@
|
|
|
|
# the script. See the script for details.
|
|
|
|
#
|
|
|
|
%__debug_install_post \
|
|
|
|
- %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_include_gdb_index:-i} %{?_unique_build_ids:--ver-rel "%{version}-%{release}"} %{?_unique_debug_names:--unique-debug-arch "%{_arch}"} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
|
|
|
|
+ %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_include_gdb_index:-i} %{?_unique_build_ids:--ver-rel "%{VERSION}-%{RELEASE}"} %{?_unique_debug_names:--unique-debug-arch "%{_arch}"} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
# Template for debug information sub-package.
|
|
|
|
@@ -232,7 +232,7 @@ package or when debugging this package.\
|
|
|
|
%_buildrootdir %{_topdir}/BUILDROOT
|
|
|
|
|
|
|
|
# Build root path, where %install installs the package during build.
|
|
|
|
-%buildroot %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
|
|
|
|
+%buildroot %{_buildrootdir}/%{NAME}-%{VERSION}-%{RELEASE}.%{_arch}
|
|
|
|
|
|
|
|
# Directory where temporaray files can be created.
|
|
|
|
%_tmppath %{_var}/tmp
|
|
|
|
@@ -484,7 +484,7 @@ package or when debugging this package.\
|
|
|
|
|
|
|
|
# Whether build-ids should be made unique between package version/releases
|
|
|
|
# when generating debuginfo packages. If set to 1 this will pass
|
|
|
|
-# --ver-rel "%{version}-%{release}" to find-debuginfo.sh which will pass it
|
|
|
|
+# --ver-rel "%{VERSION}-%{RELEASE}" to find-debuginfo.sh which will pass it
|
|
|
|
# onto debugedit --build-id-seed to be used to prime the build-id note hash.
|
|
|
|
%_unique_build_ids 1
|
|
|
|
|
|
|
|
@@ -705,9 +705,9 @@ package or when debugging this package.\
|
|
|
|
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\
|
|
|
|
RPM_DOC_DIR=\"%{_docdir}\"\
|
|
|
|
export RPM_DOC_DIR\
|
|
|
|
- RPM_PACKAGE_NAME=\"%{name}\"\
|
|
|
|
- RPM_PACKAGE_VERSION=\"%{version}\"\
|
|
|
|
- RPM_PACKAGE_RELEASE=\"%{release}\"\
|
|
|
|
+ RPM_PACKAGE_NAME=\"%{NAME}\"\
|
|
|
|
+ RPM_PACKAGE_VERSION=\"%{VERSION}\"\
|
|
|
|
+ RPM_PACKAGE_RELEASE=\"%{RELEASE}\"\
|
|
|
|
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\
|
|
|
|
LANG=C\
|
|
|
|
export LANG\
|
|
|
|
@@ -1146,7 +1146,7 @@ done \
|
|
|
|
%__scm_setup_hg(q)\
|
|
|
|
%{__hg} init %{-q} .\
|
|
|
|
%{__hg} add %{-q} .\
|
|
|
|
-%{__hg} commit %{-q} --user "%{__scm_author}" -m "%{name}-%{version} base"
|
|
|
|
+%{__hg} commit %{-q} --user "%{__scm_author}" -m "%{NAME}-%{VERSION} base"
|
|
|
|
|
|
|
|
%__scm_apply_hg(qp:m:)\
|
|
|
|
%{__hg} import - %{-p:-p%{-p*}} %{-q} -m %{-m*} --user "%{__scm_author}"
|
|
|
|
@@ -1158,7 +1158,7 @@ done \
|
|
|
|
%{__git} config user.email "%{__scm_usermail}"\
|
|
|
|
%{__git} add .\
|
|
|
|
%{__git} commit %{-q} -a\\\
|
|
|
|
- --author "%{__scm_author}" -m "%{name}-%{version} base"
|
|
|
|
+ --author "%{__scm_author}" -m "%{NAME}-%{VERSION} base"
|
|
|
|
|
|
|
|
%__scm_apply_git(qp:m:)\
|
|
|
|
%{__git} apply --index %{-p:-p%{-p*}} -\
|
|
|
|
@@ -1181,7 +1181,7 @@ done \
|
|
|
|
%{__bzr} init %{-q}\
|
|
|
|
%{__bzr} whoami --branch "%{__scm_author}"\
|
|
|
|
%{__bzr} add .\
|
|
|
|
-%{__bzr} commit %{-q} -m "%{name}-%{version} base"
|
|
|
|
+%{__bzr} commit %{-q} -m "%{NAME}-%{VERSION} base"
|
|
|
|
|
|
|
|
# bzr doesn't seem to have its own command to apply patches?
|
|
|
|
%__scm_apply_bzr(qp:m:)\
|