diff mbox series

create-spdx: support line numbers

Message ID 1e91d93673d7414baea355383b0f0ebe@diehl.com
State Accepted, archived
Commit 8e7ee19fc9e74cf042880f4bc317782482ba6f66
Headers show
Series create-spdx: support line numbers | expand

Commit Message

Denis OSTERLAND-HEIM Jan. 20, 2025, 1:04 p.m. UTC
LIC_FILES_CHKSUM supports begin-/endline for licenses included in
for instance header files. This patch adds support for line numbers
to NO_GENERIC_LICENSE, too.

Signed-off-by: Denis Osterland-Heim <denis.osterland@diehl.com>
---
Resent without signature

 meta/classes/create-spdx-2.2.bbclass | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

--
2.45.2
Diehl Metering GmbH, Donaustrasse 120, 90451 Nuernberg
Sitz der Gesellschaft: Ansbach, Registergericht: Ansbach HRB 69
Geschaeftsfuehrer: Dr. Christof Bosbach (Sprecher), Dipl.-Dolm. Annette Geuther, Dipl.-Kfm. Reiner Edel, Jean-Claude Luttringer

Bitte denken Sie an die Umwelt, bevor Sie diese E-Mail drucken. Diese E-Mail kann vertrauliche Informationen enthalten. Sollten die in dieser E-Mail enthaltenen Informationen nicht für Sie bestimmt sein, informieren Sie bitte unverzueglich den Absender per E-Mail und loeschen Sie diese E-Mail in Ihrem System. Jede unberechtigte Form der Reproduktion, Bekanntgabe, Aenderung, Verteilung und/oder Publikation dieser E-Mail ist strengstens untersagt. Informationen zum Datenschutz finden Sie auf unserer Homepage<https://www.diehl.com/metering/de/impressum-und-rechtliche-hinweise/>.

Before printing, think about environmental responsibility.This message may contain confidential information. If you are not authorized to receive this information please advise the sender immediately by reply e-mail and delete this message without making any copies. Any form of unauthorized use, publication, reproduction, copying or disclosure of the e-mail is not permitted. Information about data protection can be found on our homepage<https://www.diehl.com/metering/en/data-protection/>.

Comments

Joshua Watt Jan. 21, 2025, 3:36 p.m. UTC | #1
On Mon, Jan 20, 2025 at 6:10 AM Denis OSTERLAND-HEIM via
lists.openembedded.org
<denis.osterland=diehl.com@lists.openembedded.org> wrote:
>
> LIC_FILES_CHKSUM supports begin-/endline for licenses included in
> for instance header files. This patch adds support for line numbers
> to NO_GENERIC_LICENSE, too.
>
> Signed-off-by: Denis Osterland-Heim <denis.osterland@diehl.com>

LGTM

Reviewed-by: Joshua Watt <JPEWhacker@gmail.com>

> ---
> Resent without signature
>
>  meta/classes/create-spdx-2.2.bbclass | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/create-spdx-2.2.bbclass b/meta/classes/create-spdx-2.2.bbclass
> index 27242ecf70..494bde117f 100644
> --- a/meta/classes/create-spdx-2.2.bbclass
> +++ b/meta/classes/create-spdx-2.2.bbclass
> @@ -75,11 +75,17 @@ def convert_license_to_spdx(lic, license_data, document, d, existing={}):
>                      pass
>              if extracted_info.extractedText is None:
>                  # If it's not SPDX or PD, then NO_GENERIC_LICENSE must be set
> -                filename = d.getVarFlag('NO_GENERIC_LICENSE', name)
> +                entry = d.getVarFlag('NO_GENERIC_LICENSE', name).split(';')
> +                filename = entry[0]
> +                params = {i.split('=')[0]: i.split('=')[1] for i in entry[1:] if '=' in i}
> +                beginline = int(params.get('beginline', 1))
> +                endline = params.get('endline', None)
> +                if endline:
> +                    endline = int(endline)
>                  if filename:
>                      filename = d.expand("${S}/" + filename)
>                      with open(filename, errors="replace") as f:
> -                        extracted_info.extractedText = f.read()
> +                        extracted_info.extractedText = "".join(line for idx, line in enumerate(f, 1) if beginline <= idx and idx <= (endline or idx))
>                  else:
>                      bb.fatal("Cannot find any text for license %s" % name)
>
> --
> 2.45.2
> Diehl Metering GmbH, Donaustrasse 120, 90451 Nuernberg
> Sitz der Gesellschaft: Ansbach, Registergericht: Ansbach HRB 69
> Geschaeftsfuehrer: Dr. Christof Bosbach (Sprecher), Dipl.-Dolm. Annette Geuther, Dipl.-Kfm. Reiner Edel, Jean-Claude Luttringer
>
> Bitte denken Sie an die Umwelt, bevor Sie diese E-Mail drucken. Diese E-Mail kann vertrauliche Informationen enthalten. Sollten die in dieser E-Mail enthaltenen Informationen nicht für Sie bestimmt sein, informieren Sie bitte unverzueglich den Absender per E-Mail und loeschen Sie diese E-Mail in Ihrem System. Jede unberechtigte Form der Reproduktion, Bekanntgabe, Aenderung, Verteilung und/oder Publikation dieser E-Mail ist strengstens untersagt. Informationen zum Datenschutz finden Sie auf unserer Homepage<https://www.diehl.com/metering/de/impressum-und-rechtliche-hinweise/>.
>
> Before printing, think about environmental responsibility.This message may contain confidential information. If you are not authorized to receive this information please advise the sender immediately by reply e-mail and delete this message without making any copies. Any form of unauthorized use, publication, reproduction, copying or disclosure of the e-mail is not permitted. Information about data protection can be found on our homepage<https://www.diehl.com/metering/en/data-protection/>.
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#210028): https://lists.openembedded.org/g/openembedded-core/message/210028
> Mute This Topic: https://lists.openembedded.org/mt/110713816/3616693
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [JPEWhacker@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/classes/create-spdx-2.2.bbclass b/meta/classes/create-spdx-2.2.bbclass
index 27242ecf70..494bde117f 100644
--- a/meta/classes/create-spdx-2.2.bbclass
+++ b/meta/classes/create-spdx-2.2.bbclass
@@ -75,11 +75,17 @@  def convert_license_to_spdx(lic, license_data, document, d, existing={}):
                     pass
             if extracted_info.extractedText is None:
                 # If it's not SPDX or PD, then NO_GENERIC_LICENSE must be set
-                filename = d.getVarFlag('NO_GENERIC_LICENSE', name)
+                entry = d.getVarFlag('NO_GENERIC_LICENSE', name).split(';')
+                filename = entry[0]
+                params = {i.split('=')[0]: i.split('=')[1] for i in entry[1:] if '=' in i}
+                beginline = int(params.get('beginline', 1))
+                endline = params.get('endline', None)
+                if endline:
+                    endline = int(endline)
                 if filename:
                     filename = d.expand("${S}/" + filename)
                     with open(filename, errors="replace") as f:
-                        extracted_info.extractedText = f.read()
+                        extracted_info.extractedText = "".join(line for idx, line in enumerate(f, 1) if beginline <= idx and idx <= (endline or idx))
                 else:
                     bb.fatal("Cannot find any text for license %s" % name)