| From 53c9e8d00983b0d99caefc0ef94a18184c0ba85c Mon Sep 17 00:00:00 2001 |
| Message-Id: <53c9e8d00983b0d99caefc0ef94a18184c0ba85c.1488964568.git.pmatilai@redhat.com> |
| In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> |
| References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> |
| From: Panu Matilainen <pmatilai@redhat.com> |
| Date: Wed, 9 Nov 2016 09:16:48 +0200 |
| Subject: [PATCH 06/11] Fix debuginfo etc when subpackages have different |
| versions (RhBug:1051407) |
| |
| 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! |
| |
| 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 |
| index 6215bf8..2ede463 100644 |
| |
| |
| @@ -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 |
| index 933f734..6be4403 100644 |
| |
| |
| @@ -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 |
| index 68bf391..4d90282 100644 |
| |
| |
| @@ -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:)\ |
| -- |
| 2.9.3 |
| |