teknoraver / rpms / rpm

Forked from rpms/rpm 2 months ago
Clone

Blame 0001-Add-SourceLicense-tag-to-spec-syntax.patch

Michal Domonkos a93a04
From 1dc9372821487ccace23ff1ae9cba6b30f02c91c Mon Sep 17 00:00:00 2001
Michal Domonkos a93a04
From: Florian Festi <ffesti@redhat.com>
Michal Domonkos a93a04
Date: Tue, 5 Jul 2022 16:34:08 +0200
Michal Domonkos a93a04
Subject: [PATCH] Add SourceLicense tag to spec syntax
Michal Domonkos a93a04
Michal Domonkos a93a04
to set a separate license to the source RPM. This can be useful if the
Michal Domonkos a93a04
sources have code under additional licenses that do not end up in the
Michal Domonkos a93a04
binary packeges.
Michal Domonkos a93a04
Michal Domonkos a93a04
Resolves: #2079
Michal Domonkos a93a04
Michal Domonkos a93a04
Note on the backport:  The spec document on this branch is ancient and
Michal Domonkos a93a04
doesn't even contain the License tag's description so this backport
Michal Domonkos a93a04
leaves the documentation part out.
Michal Domonkos a93a04
Michal Domonkos a93a04
(backported from commit 9ed9d3fce34bc3c8121989e0cf263528e7e68756)
Michal Domonkos a93a04
---
Michal Domonkos a93a04
 build/parsePreamble.c       |  6 ++++++
Michal Domonkos a93a04
 lib/rpmtag.h                |  3 +++
Michal Domonkos a93a04
 tests/data/SPECS/foo.spec   |  1 +
Michal Domonkos a93a04
 tests/data/SPECS/hello.spec |  1 +
Michal Domonkos a93a04
 tests/rpmbuild.at           | 11 +++++++++++
Michal Domonkos a93a04
 tests/rpmspec.at            |  1 +
Michal Domonkos a93a04
 6 files changed, 23 insertions(+)
Michal Domonkos a93a04
Michal Domonkos a93a04
diff --git a/build/parsePreamble.c b/build/parsePreamble.c
Michal Domonkos a93a04
index e7d6d8752..bd07ecdf0 100644
Michal Domonkos a93a04
--- a/build/parsePreamble.c
Michal Domonkos a93a04
+++ b/build/parsePreamble.c
Michal Domonkos a93a04
@@ -831,6 +831,11 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
Michal Domonkos a93a04
 	if (addLangTag(spec, pkg->header, tag, field, lang))
Michal Domonkos a93a04
 	    goto exit;
Michal Domonkos a93a04
 	break;
Michal Domonkos a93a04
+    case RPMTAG_SOURCELICENSE:
Michal Domonkos a93a04
+	if (addLangTag(spec, spec->sourcePackage->header,
Michal Domonkos a93a04
+		       RPMTAG_LICENSE, field, lang))
Michal Domonkos a93a04
+	    goto exit;
Michal Domonkos a93a04
+	break;
Michal Domonkos a93a04
     case RPMTAG_BUILDROOT:
Michal Domonkos a93a04
 	/* just silently ignore BuildRoot */
Michal Domonkos a93a04
 	break;
Michal Domonkos a93a04
@@ -1012,6 +1017,7 @@ static struct PreambleRec_s const preambleList[] = {
Michal Domonkos a93a04
     {RPMTAG_EPOCH,		0, 0, 1, LEN_AND_STR("epoch")},
Michal Domonkos a93a04
     {RPMTAG_SUMMARY,		1, 0, 1, LEN_AND_STR("summary")},
Michal Domonkos a93a04
     {RPMTAG_LICENSE,		0, 0, 1, LEN_AND_STR("license")},
Michal Domonkos a93a04
+    {RPMTAG_SOURCELICENSE,	0, 0, 1, LEN_AND_STR("sourcelicense")},
Michal Domonkos a93a04
     {RPMTAG_DISTRIBUTION,	0, 0, 1, LEN_AND_STR("distribution")},
Michal Domonkos a93a04
     {RPMTAG_DISTURL,		0, 0, 1, LEN_AND_STR("disturl")},
Michal Domonkos a93a04
     {RPMTAG_VENDOR,		0, 0, 1, LEN_AND_STR("vendor")},
Michal Domonkos a93a04
diff --git a/lib/rpmtag.h b/lib/rpmtag.h
Michal Domonkos a93a04
index 7d1943835..1fd829118 100644
Michal Domonkos a93a04
--- a/lib/rpmtag.h
Michal Domonkos a93a04
+++ b/lib/rpmtag.h
Michal Domonkos a93a04
@@ -375,6 +375,9 @@ typedef enum rpmTag_e {
Michal Domonkos a93a04
     RPMTAG_MODULARITYLABEL	= 5096, /* s */
Michal Domonkos a93a04
     RPMTAG_PAYLOADDIGESTALT	= 5097, /* s[] */
Michal Domonkos a93a04
 
Michal Domonkos a93a04
+    /* Backports */
Michal Domonkos a93a04
+    RPMTAG_SOURCELICENSE	= 5102, /* internal */
Michal Domonkos a93a04
+
Michal Domonkos a93a04
     RPMTAG_FIRSTFREE_TAG	/*!< internal */
Michal Domonkos a93a04
 } rpmTag;
Michal Domonkos a93a04
 
Michal Domonkos a93a04
diff --git a/tests/data/SPECS/foo.spec b/tests/data/SPECS/foo.spec
Michal Domonkos a93a04
index 859e98142..9b1087094 100644
Michal Domonkos a93a04
--- a/tests/data/SPECS/foo.spec
Michal Domonkos a93a04
+++ b/tests/data/SPECS/foo.spec
Michal Domonkos a93a04
@@ -8,6 +8,7 @@ Source: hello-2.0.tar.gz
Michal Domonkos a93a04
 Patch1: hello-1.0-modernize.patch
Michal Domonkos a93a04
 Group: Testing
Michal Domonkos a93a04
 License: GPLv2+
Michal Domonkos a93a04
+SourceLicense: GPL, ASL 1.0
Michal Domonkos a93a04
 BuildArch: noarch
Michal Domonkos a93a04
 
Michal Domonkos a93a04
 %description
Michal Domonkos a93a04
diff --git a/tests/data/SPECS/hello.spec b/tests/data/SPECS/hello.spec
Michal Domonkos a93a04
index 5bc9cfaf7..4b9053aca 100644
Michal Domonkos a93a04
--- a/tests/data/SPECS/hello.spec
Michal Domonkos a93a04
+++ b/tests/data/SPECS/hello.spec
Michal Domonkos a93a04
@@ -4,6 +4,7 @@ Version: 1.0
Michal Domonkos a93a04
 Release: 1
Michal Domonkos a93a04
 Group: Utilities
Michal Domonkos a93a04
 License: GPL
Michal Domonkos a93a04
+SourceLicense: GPL, ASL 1.0
Michal Domonkos a93a04
 Distribution: RPM test suite.
Michal Domonkos a93a04
 Vendor: Red Hat Software
Michal Domonkos a93a04
 Packager: Red Hat Software <bugs@redhat.com>
Michal Domonkos a93a04
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
Michal Domonkos a93a04
index bff65303b..7680f1502 100644
Michal Domonkos a93a04
--- a/tests/rpmbuild.at
Michal Domonkos a93a04
+++ b/tests/rpmbuild.at
Michal Domonkos a93a04
@@ -31,6 +31,17 @@ run rpmbuild \
Michal Domonkos a93a04
 [0],
Michal Domonkos a93a04
 [ignore],
Michal Domonkos a93a04
 [ignore])
Michal Domonkos a93a04
+
Michal Domonkos a93a04
+AT_CHECK([
Michal Domonkos a93a04
+
Michal Domonkos a93a04
+runroot rpm -qp --qf "%{license}\n" /build/SRPMS/hello-1.0-1.src.rpm
Michal Domonkos a93a04
+runroot rpm -qp --qf "%{license}\n" /build/RPMS/*/hello-1.0-1.*.rpm
Michal Domonkos a93a04
+],
Michal Domonkos a93a04
+[0],
Michal Domonkos a93a04
+[GPL, ASL 1.0
Michal Domonkos a93a04
+GPL
Michal Domonkos a93a04
+],
Michal Domonkos a93a04
+[])
Michal Domonkos a93a04
 AT_CLEANUP
Michal Domonkos a93a04
 
Michal Domonkos a93a04
 AT_SETUP([rpmbuild -ba autosetup])
Michal Domonkos a93a04
diff --git a/tests/rpmspec.at b/tests/rpmspec.at
Michal Domonkos a93a04
index 2b11201db..c898ee654 100644
Michal Domonkos a93a04
--- a/tests/rpmspec.at
Michal Domonkos a93a04
+++ b/tests/rpmspec.at
Michal Domonkos a93a04
@@ -243,6 +243,7 @@ Source: hello-2.0.tar.gz
Michal Domonkos a93a04
 Patch1: hello-1.0-modernize.patch
Michal Domonkos a93a04
 Group: Testing
Michal Domonkos a93a04
 License: GPLv2+
Michal Domonkos a93a04
+SourceLicense: GPL, ASL 1.0
Michal Domonkos a93a04
 BuildArch: noarch
Michal Domonkos a93a04
 
Michal Domonkos a93a04
 %description
Michal Domonkos a93a04
-- 
Michal Domonkos a93a04
2.45.2
Michal Domonkos a93a04