Commit 816b1e8c authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch 'ynl-another-license-adjustment'

Jakub Kicinski says:

====================
ynl: another license adjustment

Hopefully the last adjustment to the licensing of the specs.
I'm still the author so should be fine to do this.
====================

Link: https://lore.kernel.org/r/20230315230351.478320-1-kuba@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 0d2be75c cfab77c0
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
%YAML 1.2 %YAML 1.2
--- ---
$id: http://kernel.org/schemas/netlink/genetlink-c.yaml# $id: http://kernel.org/schemas/netlink/genetlink-c.yaml#
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
%YAML 1.2 %YAML 1.2
--- ---
$id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml# $id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml#
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
%YAML 1.2 %YAML 1.2
--- ---
$id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml# $id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml#
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
name: ethtool name: ethtool
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
name: fou name: fou
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
name: netdev name: netdev
......
...@@ -24,7 +24,8 @@ YAML specifications can be found under ``Documentation/netlink/specs/`` ...@@ -24,7 +24,8 @@ YAML specifications can be found under ``Documentation/netlink/specs/``
This document describes details of the schema. This document describes details of the schema.
See :doc:`intro-specs` for a practical starting guide. See :doc:`intro-specs` for a practical starting guide.
All specs must be licensed under ``GPL-2.0-only OR BSD-3-Clause`` All specs must be licensed under
``((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)``
to allow for easy adoption in user space code. to allow for easy adoption in user space code.
Compatibility levels Compatibility levels
......
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/fou.yaml */ /* Documentation/netlink/specs/fou.yaml */
/* YNL-GEN uapi header */ /* YNL-GEN uapi header */
......
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/netdev.yaml */ /* Documentation/netlink/specs/netdev.yaml */
/* YNL-GEN uapi header */ /* YNL-GEN uapi header */
......
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/netdev.yaml */ /* Documentation/netlink/specs/netdev.yaml */
/* YNL-GEN kernel source */ /* YNL-GEN kernel source */
......
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/netdev.yaml */ /* Documentation/netlink/specs/netdev.yaml */
/* YNL-GEN kernel header */ /* YNL-GEN kernel header */
......
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/fou.yaml */ /* Documentation/netlink/specs/fou.yaml */
/* YNL-GEN kernel source */ /* YNL-GEN kernel source */
......
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/fou.yaml */ /* Documentation/netlink/specs/fou.yaml */
/* YNL-GEN kernel header */ /* YNL-GEN kernel header */
......
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* Do not edit directly, auto-generated from: */ /* Do not edit directly, auto-generated from: */
/* Documentation/netlink/specs/netdev.yaml */ /* Documentation/netlink/specs/netdev.yaml */
/* YNL-GEN uapi header */ /* YNL-GEN uapi header */
......
...@@ -274,6 +274,7 @@ class SpecFamily(SpecElement): ...@@ -274,6 +274,7 @@ class SpecFamily(SpecElement):
Attributes: Attributes:
proto protocol type (e.g. genetlink) proto protocol type (e.g. genetlink)
license spec license (loaded from an SPDX tag on the spec)
attr_sets dict of attribute sets attr_sets dict of attribute sets
msgs dict of all messages (index by name) msgs dict of all messages (index by name)
...@@ -283,6 +284,13 @@ class SpecFamily(SpecElement): ...@@ -283,6 +284,13 @@ class SpecFamily(SpecElement):
""" """
def __init__(self, spec_path, schema_path=None): def __init__(self, spec_path, schema_path=None):
with open(spec_path, "r") as stream: with open(spec_path, "r") as stream:
prefix = '# SPDX-License-Identifier: '
first = stream.readline().strip()
if not first.startswith(prefix):
raise Exception('SPDX license tag required in the spec')
self.license = first[len(prefix):]
stream.seek(0)
spec = yaml.safe_load(stream) spec = yaml.safe_load(stream)
self._resolution_list = [] self._resolution_list = []
...@@ -387,7 +395,8 @@ class SpecFamily(SpecElement): ...@@ -387,7 +395,8 @@ class SpecFamily(SpecElement):
def resolve(self): def resolve(self):
self.resolve_up(super()) self.resolve_up(super())
for elem in self.yaml['definitions']: definitions = self.yaml.get('definitions', [])
for elem in definitions:
if elem['type'] == 'enum' or elem['type'] == 'flags': if elem['type'] == 'enum' or elem['type'] == 'flags':
self.consts[elem['name']] = self.new_enum(elem) self.consts[elem['name']] = self.new_enum(elem)
else: else:
......
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
import argparse import argparse
import collections import collections
...@@ -2059,6 +2059,10 @@ def main(): ...@@ -2059,6 +2059,10 @@ def main():
try: try:
parsed = Family(args.spec) parsed = Family(args.spec)
if parsed.license != '((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)':
print('Spec license:', parsed.license)
print('License must be: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)')
os.sys.exit(1)
except yaml.YAMLError as exc: except yaml.YAMLError as exc:
print(exc) print(exc)
os.sys.exit(1) os.sys.exit(1)
...@@ -2067,13 +2071,10 @@ def main(): ...@@ -2067,13 +2071,10 @@ def main():
cw = CodeWriter(BaseNlLib(), out_file) cw = CodeWriter(BaseNlLib(), out_file)
_, spec_kernel = find_kernel_root(args.spec) _, spec_kernel = find_kernel_root(args.spec)
if args.mode == 'uapi': if args.mode == 'uapi' or args.header:
cw.p('/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */') cw.p(f'/* SPDX-License-Identifier: {parsed.license} */')
else: else:
if args.header: cw.p(f'// SPDX-License-Identifier: {parsed.license}')
cw.p('/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */')
else:
cw.p('// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause')
cw.p("/* Do not edit directly, auto-generated from: */") cw.p("/* Do not edit directly, auto-generated from: */")
cw.p(f"/*\t{spec_kernel} */") cw.p(f"/*\t{spec_kernel} */")
cw.p(f"/* YNL-GEN {args.mode} {'header' if args.header else 'source'} */") cw.p(f"/* YNL-GEN {args.mode} {'header' if args.header else 'source'} */")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment