From a93a04ca0b266913e521aa9f984e76dd526c2c5e Mon Sep 17 00:00:00 2001 From: Michal Domonkos Date: Jul 11 2024 15:49:47 +0000 Subject: Add SourceLicense tag to spec syntax Resolves: RHEL-28798 --- diff --git a/0001-Add-SourceLicense-tag-to-spec-syntax.patch b/0001-Add-SourceLicense-tag-to-spec-syntax.patch new file mode 100644 index 0000000..0f48138 --- /dev/null +++ b/0001-Add-SourceLicense-tag-to-spec-syntax.patch @@ -0,0 +1,124 @@ +From 1dc9372821487ccace23ff1ae9cba6b30f02c91c Mon Sep 17 00:00:00 2001 +From: Florian Festi +Date: Tue, 5 Jul 2022 16:34:08 +0200 +Subject: [PATCH] Add SourceLicense tag to spec syntax + +to set a separate license to the source RPM. This can be useful if the +sources have code under additional licenses that do not end up in the +binary packeges. + +Resolves: #2079 + +Note on the backport: The spec document on this branch is ancient and +doesn't even contain the License tag's description so this backport +leaves the documentation part out. + +(backported from commit 9ed9d3fce34bc3c8121989e0cf263528e7e68756) +--- + build/parsePreamble.c | 6 ++++++ + lib/rpmtag.h | 3 +++ + tests/data/SPECS/foo.spec | 1 + + tests/data/SPECS/hello.spec | 1 + + tests/rpmbuild.at | 11 +++++++++++ + tests/rpmspec.at | 1 + + 6 files changed, 23 insertions(+) + +diff --git a/build/parsePreamble.c b/build/parsePreamble.c +index e7d6d8752..bd07ecdf0 100644 +--- a/build/parsePreamble.c ++++ b/build/parsePreamble.c +@@ -831,6 +831,11 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, + if (addLangTag(spec, pkg->header, tag, field, lang)) + goto exit; + break; ++ case RPMTAG_SOURCELICENSE: ++ if (addLangTag(spec, spec->sourcePackage->header, ++ RPMTAG_LICENSE, field, lang)) ++ goto exit; ++ break; + case RPMTAG_BUILDROOT: + /* just silently ignore BuildRoot */ + break; +@@ -1012,6 +1017,7 @@ static struct PreambleRec_s const preambleList[] = { + {RPMTAG_EPOCH, 0, 0, 1, LEN_AND_STR("epoch")}, + {RPMTAG_SUMMARY, 1, 0, 1, LEN_AND_STR("summary")}, + {RPMTAG_LICENSE, 0, 0, 1, LEN_AND_STR("license")}, ++ {RPMTAG_SOURCELICENSE, 0, 0, 1, LEN_AND_STR("sourcelicense")}, + {RPMTAG_DISTRIBUTION, 0, 0, 1, LEN_AND_STR("distribution")}, + {RPMTAG_DISTURL, 0, 0, 1, LEN_AND_STR("disturl")}, + {RPMTAG_VENDOR, 0, 0, 1, LEN_AND_STR("vendor")}, +diff --git a/lib/rpmtag.h b/lib/rpmtag.h +index 7d1943835..1fd829118 100644 +--- a/lib/rpmtag.h ++++ b/lib/rpmtag.h +@@ -375,6 +375,9 @@ typedef enum rpmTag_e { + RPMTAG_MODULARITYLABEL = 5096, /* s */ + RPMTAG_PAYLOADDIGESTALT = 5097, /* s[] */ + ++ /* Backports */ ++ RPMTAG_SOURCELICENSE = 5102, /* internal */ ++ + RPMTAG_FIRSTFREE_TAG /*!< internal */ + } rpmTag; + +diff --git a/tests/data/SPECS/foo.spec b/tests/data/SPECS/foo.spec +index 859e98142..9b1087094 100644 +--- a/tests/data/SPECS/foo.spec ++++ b/tests/data/SPECS/foo.spec +@@ -8,6 +8,7 @@ Source: hello-2.0.tar.gz + Patch1: hello-1.0-modernize.patch + Group: Testing + License: GPLv2+ ++SourceLicense: GPL, ASL 1.0 + BuildArch: noarch + + %description +diff --git a/tests/data/SPECS/hello.spec b/tests/data/SPECS/hello.spec +index 5bc9cfaf7..4b9053aca 100644 +--- a/tests/data/SPECS/hello.spec ++++ b/tests/data/SPECS/hello.spec +@@ -4,6 +4,7 @@ Version: 1.0 + Release: 1 + Group: Utilities + License: GPL ++SourceLicense: GPL, ASL 1.0 + Distribution: RPM test suite. + Vendor: Red Hat Software + Packager: Red Hat Software +diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at +index bff65303b..7680f1502 100644 +--- a/tests/rpmbuild.at ++++ b/tests/rpmbuild.at +@@ -31,6 +31,17 @@ run rpmbuild \ + [0], + [ignore], + [ignore]) ++ ++AT_CHECK([ ++ ++runroot rpm -qp --qf "%{license}\n" /build/SRPMS/hello-1.0-1.src.rpm ++runroot rpm -qp --qf "%{license}\n" /build/RPMS/*/hello-1.0-1.*.rpm ++], ++[0], ++[GPL, ASL 1.0 ++GPL ++], ++[]) + AT_CLEANUP + + AT_SETUP([rpmbuild -ba autosetup]) +diff --git a/tests/rpmspec.at b/tests/rpmspec.at +index 2b11201db..c898ee654 100644 +--- a/tests/rpmspec.at ++++ b/tests/rpmspec.at +@@ -243,6 +243,7 @@ Source: hello-2.0.tar.gz + Patch1: hello-1.0-modernize.patch + Group: Testing + License: GPLv2+ ++SourceLicense: GPL, ASL 1.0 + BuildArch: noarch + + %description +-- +2.45.2 + diff --git a/rpm.spec b/rpm.spec index 8a52d3c..dcedae4 100644 --- a/rpm.spec +++ b/rpm.spec @@ -112,6 +112,7 @@ Patch143: 0001-Don-t-segfault-on-missing-priority-tag.patch Patch144: 0001-Use-unsigned-integers-for-buildtime-too-for-Y2K38-sa.patch Patch145: 0001-Fix-potential-use-of-uninitialized-pipe-array.patch Patch146: 0001-Fix-potential-use-of-uninitialized-pgp-struct.patch +Patch147: 0001-Add-SourceLicense-tag-to-spec-syntax.patch # These are not yet upstream Patch906: rpm-4.7.1-geode-i686.patch @@ -666,6 +667,7 @@ fi - Fix potential use of uninitialized pipe array (RHEL-22604) - Fix potential use of uninitialized pgp struct (RHEL-22605) - Don't confuse OpenScanHub with false array overrun (RHEL-22607) +- Add SourceLicense tag to spec syntax (RHEL-28798) * Mon Jun 03 2024 Michal Domonkos - 4.16.1.3-30 - Don't segfault on missing priority tag (RHEL-35249)