* [PATCH] devtools: enhance the license check
@ 2024-12-10 9:10 David Marchand
2024-12-10 17:00 ` Stephen Hemminger
0 siblings, 1 reply; 6+ messages in thread
From: David Marchand @ 2024-12-10 9:10 UTC (permalink / raw)
To: dev; +Cc: thomas, techboard
Reformat the license/exceptions.txt file to make it easier to build
a list of exempted files.
Display all files committed in DPDK that are non compliant
with BSD-3 license.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
devtools/check-spdx-tag.sh | 59 +++++++++++++++++++++++++++-----------
license/exceptions.txt | 11 ++++---
2 files changed, 47 insertions(+), 23 deletions(-)
diff --git a/devtools/check-spdx-tag.sh b/devtools/check-spdx-tag.sh
index b983268b1e..f893003af6 100755
--- a/devtools/check-spdx-tag.sh
+++ b/devtools/check-spdx-tag.sh
@@ -4,7 +4,8 @@
#
# Produce a list of files with incorrect license tags
-errors=0
+missing_spdx=0
+wrong_license=0
warnings=0
quiet=false
verbose=false
@@ -14,23 +15,44 @@ print_usage () {
exit 1
}
+no_license_list=\
+':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION :^ABI_VERSION :^*/Kbuild '\
+':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
+':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version :^*.cocci :^*.abignore '\
+':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg :^*.png'
+
check_spdx() {
- if $verbose; then
+ if $verbose ; then
echo "Files without SPDX License"
echo "--------------------------"
fi
- git grep -L SPDX-License-Identifier -- \
- ':^.git*' ':^.mailmap' ':^.ci/*' \
- ':^README' ':^MAINTAINERS' ':^VERSION' ':^ABI_VERSION' \
- ':^*/Kbuild' ':^*/README*' \
- ':^license/' ':^config/' ':^buildtools/' ':^*/poetry.lock' \
- ':^kernel/linux/uapi/.gitignore' ':^kernel/linux/uapi/version' \
- ':^*.cocci' ':^*.abignore' \
- ':^*.map' ':^*.ini' ':^*.data' ':^*.json' ':^*.cfg' ':^*.txt' \
- ':^*.svg' ':^*.png' \
- > $tmpfile
-
- errors=$(wc -l < $tmpfile)
+ git grep -L SPDX-License-Identifier -- $no_license_list > $tmpfile
+
+ missing_spdx=$(wc -l < $tmpfile)
+ $quiet || cat $tmpfile
+}
+
+build_exceptions_list() {
+ grep '.*|.*|.*|.*' license/exceptions.txt | grep -v 'TB Approval Date' |
+ while IFS='|' read license tb_date gb_date pattern ; do
+ unset IFS
+ license=${license## *}
+ license=${license%% *}
+ git grep -l "SPDX-License-Identifier:[[:space:]]*$license" $pattern |
+ sed -e 's/^/:^/'
+ done
+}
+
+check_licenses() {
+ if $verbose ; then
+ echo "Files with wrong license and no exception"
+ echo "-----------------------------------------"
+ fi
+ exceptions=$(build_exceptions_list)
+ git grep -l SPDX-License-Identifier: -- $no_license_list $exceptions |
+ xargs grep -L -E 'SPDX-License-Identifier:[[:space:]]*\(?BSD-3-Clause' > $tmpfile
+
+ wrong_license=$(wc -l < $tmpfile)
$quiet || cat $tmpfile
}
@@ -64,8 +86,11 @@ trap 'rm -f -- "$tmpfile"' INT TERM HUP EXIT
check_spdx
$quiet || echo
-check_boilerplate
+check_licenses
+$quiet || echo
+check_boilerplate
$quiet || echo
-echo "total: $errors errors, $warnings warnings"
-exit $errors
+
+echo "total: $missing_spdx missing SPDX errors, $wrong_license license errors, $warnings warnings"
+exit $((missing_spdx + wrong_license))
diff --git a/license/exceptions.txt b/license/exceptions.txt
index 1ded290eee..d12fac2034 100644
--- a/license/exceptions.txt
+++ b/license/exceptions.txt
@@ -10,11 +10,10 @@ Note that following licenses are not exceptions:-
- GPL-2.0 (*Only for kernel code*)
---------------------------------------------------------------------------------------------------
-SPDX Identifier TB Approval Date GB Approval Date File name
+SPDX Identifier | TB Approval Date | GB Approval Date | File name
---------------------------------------------------------------------------------------------------
-1.MIT 10/23/2019 02/10/2020 lib/eal/windows/include/dirent.h
-2.BSD-2-Clause 10/23/2019 12/18/2019 lib/eal/windows/include/getopt.h
-3.ISC AND
- BSD-2-Clause 10/23/2019 12/18/2019 lib/eal/windows/getopt.c
-4. MIT 10/19/2022 10/18/2022 drivers/net/gve/base/*
+MIT | 10/23/2019 | 02/10/2020 | lib/eal/windows/include/dirent.h
+BSD-2-Clause | 10/23/2019 | 12/18/2019 | lib/eal/windows/include/getopt.h
+ISC AND BSD-2-Clause | 10/23/2019 | 12/18/2019 | lib/eal/windows/getopt.c
+MIT | 10/19/2022 | 10/18/2022 | drivers/net/gve/base/*
---------------------------------------------------------------------------------------------------
--
2.47.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] devtools: enhance the license check
2024-12-10 9:10 [PATCH] devtools: enhance the license check David Marchand
@ 2024-12-10 17:00 ` Stephen Hemminger
2024-12-11 9:00 ` David Marchand
0 siblings, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2024-12-10 17:00 UTC (permalink / raw)
To: David Marchand; +Cc: dev, thomas, techboard
On Tue, 10 Dec 2024 10:10:39 +0100
David Marchand <david.marchand@redhat.com> wrote:
> +no_license_list=\
> +':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION :^ABI_VERSION :^*/Kbuild '\
> +':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
> +':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version :^*.cocci :^*.abignore '\
> +':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg :^*.png'
> +
What is poetry.lock?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] devtools: enhance the license check
2024-12-10 17:00 ` Stephen Hemminger
@ 2024-12-11 9:00 ` David Marchand
2024-12-11 14:55 ` Stephen Hemminger
0 siblings, 1 reply; 6+ messages in thread
From: David Marchand @ 2024-12-11 9:00 UTC (permalink / raw)
To: Stephen Hemminger, Paul Szczepanek, Patrick Robb; +Cc: dev, thomas, techboard
On Tue, Dec 10, 2024 at 6:00 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> On Tue, 10 Dec 2024 10:10:39 +0100
> David Marchand <david.marchand@redhat.com> wrote:
>
> > +no_license_list=\
> > +':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION :^ABI_VERSION :^*/Kbuild '\
> > +':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
> > +':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version :^*.cocci :^*.abignore '\
> > +':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg :^*.png'
> > +
>
> What is poetry.lock?
I don't know.
It looks like some python packaging config for dts, and it is a generated file.
# This file is automatically @generated by Poetry 1.8.3 and should not
be changed by hand.
Cc: dts maintainers.
--
David Marchand
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] devtools: enhance the license check
2024-12-11 9:00 ` David Marchand
@ 2024-12-11 14:55 ` Stephen Hemminger
2024-12-11 15:01 ` Thomas Monjalon
0 siblings, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2024-12-11 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Paul Szczepanek, Patrick Robb, dev, thomas, techboard
On Wed, 11 Dec 2024 10:00:38 +0100
David Marchand <david.marchand@redhat.com> wrote:
> On Tue, Dec 10, 2024 at 6:00 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > On Tue, 10 Dec 2024 10:10:39 +0100
> > David Marchand <david.marchand@redhat.com> wrote:
> >
> > > +no_license_list=\
> > > +':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION :^ABI_VERSION :^*/Kbuild '\
> > > +':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
> > > +':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version :^*.cocci :^*.abignore '\
> > > +':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg :^*.png'
> > > +
> >
> > What is poetry.lock?
>
> I don't know.
> It looks like some python packaging config for dts, and it is a generated file.
> # This file is automatically @generated by Poetry 1.8.3 and should not
> be changed by hand.
>
> Cc: dts maintainers.
>
>
Put it in .gitignore then please, and the script will ignore that.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] devtools: enhance the license check
2024-12-11 14:55 ` Stephen Hemminger
@ 2024-12-11 15:01 ` Thomas Monjalon
2024-12-11 21:22 ` Patrick Robb
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2024-12-11 15:01 UTC (permalink / raw)
To: David Marchand, Stephen Hemminger
Cc: Paul Szczepanek, Patrick Robb, dev, techboard
11/12/2024 15:55, Stephen Hemminger:
> On Wed, 11 Dec 2024 10:00:38 +0100
> David Marchand <david.marchand@redhat.com> wrote:
>
> > On Tue, Dec 10, 2024 at 6:00 PM Stephen Hemminger
> > <stephen@networkplumber.org> wrote:
> > >
> > > On Tue, 10 Dec 2024 10:10:39 +0100
> > > David Marchand <david.marchand@redhat.com> wrote:
> > >
> > > > +no_license_list=\
> > > > +':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION :^ABI_VERSION :^*/Kbuild '\
> > > > +':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
> > > > +':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version :^*.cocci :^*.abignore '\
> > > > +':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg :^*.png'
> > > > +
> > >
> > > What is poetry.lock?
> >
> > I don't know.
> > It looks like some python packaging config for dts, and it is a generated file.
> > # This file is automatically @generated by Poetry 1.8.3 and should not
> > be changed by hand.
> >
> > Cc: dts maintainers.
> >
> >
>
> Put it in .gitignore then please, and the script will ignore that.
How is it related?
I don't like adding versioned files to .gitignore.
(this poetry file is in the repository)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] devtools: enhance the license check
2024-12-11 15:01 ` Thomas Monjalon
@ 2024-12-11 21:22 ` Patrick Robb
0 siblings, 0 replies; 6+ messages in thread
From: Patrick Robb @ 2024-12-11 21:22 UTC (permalink / raw)
To: Thomas Monjalon
Cc: David Marchand, Stephen Hemminger, Paul Szczepanek, dev, techboard
[-- Attachment #1: Type: text/plain, Size: 2331 bytes --]
https://python-poetry.org/docs/basic-usage/#committing-your-poetrylock-file-to-version-control
I agree at first glance it appears like poetry.lock should go in the
.gitignore. However, the official docs state that in the case of developing
an application (like DTS), one should commit the generated poetry.lock file
to version control, as it provides a universal lock on python dependencies,
across all minor versions of python specified in the pyproject.toml, and it
also speeds up the dependency resolution process.
I gather from reading some posts online that some folks do opt to
.gitignore their poetry.lock files for shippable applications, relying
solely on the pyproject.toml as a source of truth for dependency versions.
But, again this approach does not guarantee common dependencies across all
the python minor versions supported by the project.
I will bring this up at the CI call tomorrow morning for feedback though.
On Wed, Dec 11, 2024 at 10:01 AM Thomas Monjalon <thomas@monjalon.net>
wrote:
> 11/12/2024 15:55, Stephen Hemminger:
> > On Wed, 11 Dec 2024 10:00:38 +0100
> > David Marchand <david.marchand@redhat.com> wrote:
> >
> > > On Tue, Dec 10, 2024 at 6:00 PM Stephen Hemminger
> > > <stephen@networkplumber.org> wrote:
> > > >
> > > > On Tue, 10 Dec 2024 10:10:39 +0100
> > > > David Marchand <david.marchand@redhat.com> wrote:
> > > >
> > > > > +no_license_list=\
> > > > > +':^.git* :^.mailmap :^.ci/* :^README :^MAINTAINERS :^VERSION
> :^ABI_VERSION :^*/Kbuild '\
> > > > > +':^*/README* :^license/ :^config/ :^buildtools/ :^*/poetry.lock '\
> > > > > +':^kernel/linux/uapi/.gitignore :^kernel/linux/uapi/version
> :^*.cocci :^*.abignore '\
> > > > > +':^*.map :^*.ini :^*.data :^*.json :^*.cfg :^*.txt :^*.svg
> :^*.png'
> > > > > +
> > > >
> > > > What is poetry.lock?
> > >
> > > I don't know.
> > > It looks like some python packaging config for dts, and it is a
> generated file.
> > > # This file is automatically @generated by Poetry 1.8.3 and should not
> > > be changed by hand.
> > >
> > > Cc: dts maintainers.
> > >
> > >
> >
> > Put it in .gitignore then please, and the script will ignore that.
>
> How is it related?
>
> I don't like adding versioned files to .gitignore.
> (this poetry file is in the repository)
>
>
>
[-- Attachment #2: Type: text/html, Size: 3308 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-12-11 21:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-10 9:10 [PATCH] devtools: enhance the license check David Marchand
2024-12-10 17:00 ` Stephen Hemminger
2024-12-11 9:00 ` David Marchand
2024-12-11 14:55 ` Stephen Hemminger
2024-12-11 15:01 ` Thomas Monjalon
2024-12-11 21:22 ` Patrick Robb
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).