* [PATCH 0/5] tools: ynl: add install target
@ 2024-12-03 9:26 Jan Stancek
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:26 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
This series adds an install target for ynl. The python code
is moved to a subdirectory, so it can be used as a package
with flat layout, as well as directly from the tree.
To try the install as a non-root user you can run:
$ mkdir /tmp/myroot
$ make DESTDIR=/tmp/myroot install
$ PATH="/tmp/myroot/usr/bin:$PATH" PYTHONPATH="$(ls -1d /tmp/myroot/usr/lib/python*/site-packages)" ynl --help
Proposed install layout is described in last patch.
Jan Stancek (5):
tools: ynl: move python code to separate sub-directory
tools: ynl: rename ynl-gen-[c|rst] to ynl_gen_[c|rst]
tools: ynl: add initial pyproject.toml for packaging
tools: ynl: add install target for specs and docs
tools: ynl: add main install target
tools/net/ynl/Makefile | 24 ++++++++++++-
tools/net/ynl/generated/.gitignore | 1 +
tools/net/ynl/generated/Makefile | 36 ++++++++++++++++---
tools/net/ynl/lib/.gitignore | 1 -
tools/net/ynl/lib/Makefile | 1 -
tools/net/ynl/pyproject.toml | 26 ++++++++++++++
tools/net/ynl/pyynl/__init__.py | 0
tools/net/ynl/{ => pyynl}/cli.py | 0
tools/net/ynl/{ => pyynl}/ethtool.py | 0
tools/net/ynl/pyynl/lib/.gitignore | 1 +
tools/net/ynl/{ => pyynl}/lib/__init__.py | 0
tools/net/ynl/{ => pyynl}/lib/nlspec.py | 0
tools/net/ynl/{ => pyynl}/lib/ynl.py | 0
.../ynl/{ynl-gen-c.py => pyynl/ynl_gen_c.py} | 0
.../{ynl-gen-rst.py => pyynl/ynl_gen_rst.py} | 0
tools/net/ynl/ynl-regen.sh | 2 +-
16 files changed, 84 insertions(+), 8 deletions(-)
create mode 100644 tools/net/ynl/pyproject.toml
create mode 100644 tools/net/ynl/pyynl/__init__.py
rename tools/net/ynl/{ => pyynl}/cli.py (100%)
rename tools/net/ynl/{ => pyynl}/ethtool.py (100%)
create mode 100644 tools/net/ynl/pyynl/lib/.gitignore
rename tools/net/ynl/{ => pyynl}/lib/__init__.py (100%)
rename tools/net/ynl/{ => pyynl}/lib/nlspec.py (100%)
rename tools/net/ynl/{ => pyynl}/lib/ynl.py (100%)
rename tools/net/ynl/{ynl-gen-c.py => pyynl/ynl_gen_c.py} (100%)
rename tools/net/ynl/{ynl-gen-rst.py => pyynl/ynl_gen_rst.py} (100%)
--
2.43.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/5] tools: ynl: move python code to separate sub-directory
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
@ 2024-12-03 9:27 ` Jan Stancek
2024-12-03 16:52 ` Stanislav Fomichev
2024-12-03 19:50 ` Donald Hunter
2024-12-03 9:27 ` [PATCH 2/5] tools: ynl: rename ynl-gen-[c|rst] to ynl_gen_[c|rst] Jan Stancek
` (3 subsequent siblings)
4 siblings, 2 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:27 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
Move python code to a separate directory so it can be
packaged as a python module.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
tools/net/ynl/Makefile | 1 +
tools/net/ynl/generated/Makefile | 2 +-
tools/net/ynl/lib/.gitignore | 1 -
tools/net/ynl/lib/Makefile | 1 -
tools/net/ynl/pyynl/__init__.py | 0
tools/net/ynl/{ => pyynl}/cli.py | 0
tools/net/ynl/{ => pyynl}/ethtool.py | 0
tools/net/ynl/pyynl/lib/.gitignore | 1 +
tools/net/ynl/{ => pyynl}/lib/__init__.py | 0
tools/net/ynl/{ => pyynl}/lib/nlspec.py | 0
tools/net/ynl/{ => pyynl}/lib/ynl.py | 0
tools/net/ynl/{ => pyynl}/ynl-gen-c.py | 0
tools/net/ynl/{ => pyynl}/ynl-gen-rst.py | 0
tools/net/ynl/ynl-regen.sh | 2 +-
14 files changed, 4 insertions(+), 4 deletions(-)
create mode 100644 tools/net/ynl/pyynl/__init__.py
rename tools/net/ynl/{ => pyynl}/cli.py (100%)
rename tools/net/ynl/{ => pyynl}/ethtool.py (100%)
create mode 100644 tools/net/ynl/pyynl/lib/.gitignore
rename tools/net/ynl/{ => pyynl}/lib/__init__.py (100%)
rename tools/net/ynl/{ => pyynl}/lib/nlspec.py (100%)
rename tools/net/ynl/{ => pyynl}/lib/ynl.py (100%)
rename tools/net/ynl/{ => pyynl}/ynl-gen-c.py (100%)
rename tools/net/ynl/{ => pyynl}/ynl-gen-rst.py (100%)
diff --git a/tools/net/ynl/Makefile b/tools/net/ynl/Makefile
index d1cdf2a8f826..617b405d9ef8 100644
--- a/tools/net/ynl/Makefile
+++ b/tools/net/ynl/Makefile
@@ -21,5 +21,6 @@ clean distclean:
fi \
done
rm -f libynl.a
+ rm -rf pyynl/lib/__pycache__
.PHONY: all clean distclean $(SUBDIRS)
diff --git a/tools/net/ynl/generated/Makefile b/tools/net/ynl/generated/Makefile
index 7db5240de58a..36519ea2792a 100644
--- a/tools/net/ynl/generated/Makefile
+++ b/tools/net/ynl/generated/Makefile
@@ -12,7 +12,7 @@ include ../Makefile.deps
YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \
--exclude-op stats-get
-TOOL:=../ynl-gen-c.py
+TOOL:=../pyynl/ynl-gen-c.py
GENS_PATHS=$(shell grep -nrI --files-without-match \
'protocol: netlink' \
diff --git a/tools/net/ynl/lib/.gitignore b/tools/net/ynl/lib/.gitignore
index 296c4035dbf2..a4383358ec72 100644
--- a/tools/net/ynl/lib/.gitignore
+++ b/tools/net/ynl/lib/.gitignore
@@ -1,2 +1 @@
-__pycache__/
*.d
diff --git a/tools/net/ynl/lib/Makefile b/tools/net/ynl/lib/Makefile
index 94c49cca3dca..4b2b98704ff9 100644
--- a/tools/net/ynl/lib/Makefile
+++ b/tools/net/ynl/lib/Makefile
@@ -19,7 +19,6 @@ ynl.a: $(OBJS)
clean:
rm -f *.o *.d *~
- rm -rf __pycache__
distclean: clean
rm -f *.a
diff --git a/tools/net/ynl/pyynl/__init__.py b/tools/net/ynl/pyynl/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/tools/net/ynl/cli.py b/tools/net/ynl/pyynl/cli.py
similarity index 100%
rename from tools/net/ynl/cli.py
rename to tools/net/ynl/pyynl/cli.py
diff --git a/tools/net/ynl/ethtool.py b/tools/net/ynl/pyynl/ethtool.py
similarity index 100%
rename from tools/net/ynl/ethtool.py
rename to tools/net/ynl/pyynl/ethtool.py
diff --git a/tools/net/ynl/pyynl/lib/.gitignore b/tools/net/ynl/pyynl/lib/.gitignore
new file mode 100644
index 000000000000..c18dd8d83cee
--- /dev/null
+++ b/tools/net/ynl/pyynl/lib/.gitignore
@@ -0,0 +1 @@
+__pycache__/
diff --git a/tools/net/ynl/lib/__init__.py b/tools/net/ynl/pyynl/lib/__init__.py
similarity index 100%
rename from tools/net/ynl/lib/__init__.py
rename to tools/net/ynl/pyynl/lib/__init__.py
diff --git a/tools/net/ynl/lib/nlspec.py b/tools/net/ynl/pyynl/lib/nlspec.py
similarity index 100%
rename from tools/net/ynl/lib/nlspec.py
rename to tools/net/ynl/pyynl/lib/nlspec.py
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/pyynl/lib/ynl.py
similarity index 100%
rename from tools/net/ynl/lib/ynl.py
rename to tools/net/ynl/pyynl/lib/ynl.py
diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/pyynl/ynl-gen-c.py
similarity index 100%
rename from tools/net/ynl/ynl-gen-c.py
rename to tools/net/ynl/pyynl/ynl-gen-c.py
diff --git a/tools/net/ynl/ynl-gen-rst.py b/tools/net/ynl/pyynl/ynl-gen-rst.py
similarity index 100%
rename from tools/net/ynl/ynl-gen-rst.py
rename to tools/net/ynl/pyynl/ynl-gen-rst.py
diff --git a/tools/net/ynl/ynl-regen.sh b/tools/net/ynl/ynl-regen.sh
index a37304dcc88e..3212dab1cc6e 100755
--- a/tools/net/ynl/ynl-regen.sh
+++ b/tools/net/ynl/ynl-regen.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
-TOOL=$(dirname $(realpath $0))/ynl-gen-c.py
+TOOL=$(dirname $(realpath $0))/pyynl/ynl-gen-c.py
force=
search=
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/5] tools: ynl: rename ynl-gen-[c|rst] to ynl_gen_[c|rst]
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
@ 2024-12-03 9:27 ` Jan Stancek
2024-12-03 9:27 ` [PATCH 3/5] tools: ynl: add initial pyproject.toml for packaging Jan Stancek
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:27 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
Don't use dashes as these prevent easy imports for entrypoints.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
tools/net/ynl/generated/Makefile | 2 +-
tools/net/ynl/pyynl/{ynl-gen-c.py => ynl_gen_c.py} | 0
tools/net/ynl/pyynl/{ynl-gen-rst.py => ynl_gen_rst.py} | 0
tools/net/ynl/ynl-regen.sh | 2 +-
4 files changed, 2 insertions(+), 2 deletions(-)
rename tools/net/ynl/pyynl/{ynl-gen-c.py => ynl_gen_c.py} (100%)
rename tools/net/ynl/pyynl/{ynl-gen-rst.py => ynl_gen_rst.py} (100%)
diff --git a/tools/net/ynl/generated/Makefile b/tools/net/ynl/generated/Makefile
index 36519ea2792a..00af721b1571 100644
--- a/tools/net/ynl/generated/Makefile
+++ b/tools/net/ynl/generated/Makefile
@@ -12,7 +12,7 @@ include ../Makefile.deps
YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \
--exclude-op stats-get
-TOOL:=../pyynl/ynl-gen-c.py
+TOOL:=../pyynl/ynl_gen_c.py
GENS_PATHS=$(shell grep -nrI --files-without-match \
'protocol: netlink' \
diff --git a/tools/net/ynl/pyynl/ynl-gen-c.py b/tools/net/ynl/pyynl/ynl_gen_c.py
similarity index 100%
rename from tools/net/ynl/pyynl/ynl-gen-c.py
rename to tools/net/ynl/pyynl/ynl_gen_c.py
diff --git a/tools/net/ynl/pyynl/ynl-gen-rst.py b/tools/net/ynl/pyynl/ynl_gen_rst.py
similarity index 100%
rename from tools/net/ynl/pyynl/ynl-gen-rst.py
rename to tools/net/ynl/pyynl/ynl_gen_rst.py
diff --git a/tools/net/ynl/ynl-regen.sh b/tools/net/ynl/ynl-regen.sh
index 3212dab1cc6e..81b4ecd89100 100755
--- a/tools/net/ynl/ynl-regen.sh
+++ b/tools/net/ynl/ynl-regen.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
-TOOL=$(dirname $(realpath $0))/pyynl/ynl-gen-c.py
+TOOL=$(dirname $(realpath $0))/pyynl/ynl_gen_c.py
force=
search=
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/5] tools: ynl: add initial pyproject.toml for packaging
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
2024-12-03 9:27 ` [PATCH 2/5] tools: ynl: rename ynl-gen-[c|rst] to ynl_gen_[c|rst] Jan Stancek
@ 2024-12-03 9:27 ` Jan Stancek
2024-12-03 9:27 ` [PATCH 4/5] tools: ynl: add install target for specs and docs Jan Stancek
2024-12-03 9:27 ` [PATCH 5/5] tools: ynl: add main install target Jan Stancek
4 siblings, 0 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:27 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
And define entrypoints for cli tools.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
tools/net/ynl/pyproject.toml | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 tools/net/ynl/pyproject.toml
diff --git a/tools/net/ynl/pyproject.toml b/tools/net/ynl/pyproject.toml
new file mode 100644
index 000000000000..677ea8f4c185
--- /dev/null
+++ b/tools/net/ynl/pyproject.toml
@@ -0,0 +1,26 @@
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "pyynl"
+authors = [
+ {name = "Donald Hunter", email = "donald.hunter@gmail.com"},
+ {name = "Jakub Kicinski", email = "kuba@kernel.org"},
+]
+description = "yaml netlink (ynl)"
+version = "0.0.1"
+requires-python = ">=3.9"
+dependencies = [
+ "pyyaml==6.*",
+ "jsonschema==4.*"
+]
+
+[tool.setuptools.packages.find]
+include = ["pyynl", "pyynl.lib"]
+
+[project.scripts]
+ynl = "pyynl.cli:main"
+ynl-ethtool = "pyynl.ethtool:main"
+ynl-gen-c = "pyynl.ynl_gen_c:main"
+ynl-gen-rst = "pyynl.ynl_gen_rst:main"
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/5] tools: ynl: add install target for specs and docs
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
` (2 preceding siblings ...)
2024-12-03 9:27 ` [PATCH 3/5] tools: ynl: add initial pyproject.toml for packaging Jan Stancek
@ 2024-12-03 9:27 ` Jan Stancek
2024-12-03 9:27 ` [PATCH 5/5] tools: ynl: add main install target Jan Stancek
4 siblings, 0 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:27 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
Generate docs using ynl_gen_rst and add install target for
both specs and generates rst files.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
tools/net/ynl/generated/.gitignore | 1 +
tools/net/ynl/generated/Makefile | 34 +++++++++++++++++++++++++++---
2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/tools/net/ynl/generated/.gitignore b/tools/net/ynl/generated/.gitignore
index ade488626d26..859a6fb446e1 100644
--- a/tools/net/ynl/generated/.gitignore
+++ b/tools/net/ynl/generated/.gitignore
@@ -1,2 +1,3 @@
*-user.c
*-user.h
+*.rst
diff --git a/tools/net/ynl/generated/Makefile b/tools/net/ynl/generated/Makefile
index 00af721b1571..d28509ac0573 100644
--- a/tools/net/ynl/generated/Makefile
+++ b/tools/net/ynl/generated/Makefile
@@ -7,12 +7,18 @@ ifeq ("$(DEBUG)","1")
CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
endif
+INSTALL ?= install
+prefix ?= /usr
+datarootdir ?= $(prefix)/share
+docdir ?= $(datarootdir)/doc
+
include ../Makefile.deps
YNL_GEN_ARG_ethtool:=--user-header linux/ethtool_netlink.h \
--exclude-op stats-get
TOOL:=../pyynl/ynl_gen_c.py
+TOOL_RST:=../pyynl/ynl_gen_rst.py
GENS_PATHS=$(shell grep -nrI --files-without-match \
'protocol: netlink' \
@@ -22,7 +28,11 @@ SRCS=$(patsubst %,%-user.c,${GENS})
HDRS=$(patsubst %,%-user.h,${GENS})
OBJS=$(patsubst %,%-user.o,${GENS})
-all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI)
+SPECS_PATHS=$(wildcard ../../../../Documentation/netlink/specs/*.yaml)
+SPECS=$(patsubst ../../../../Documentation/netlink/specs/%.yaml,%,${SPECS_PATHS})
+RSTS=$(patsubst %,%.rst,${SPECS})
+
+all: protos.a $(HDRS) $(SRCS) $(KHDRS) $(KSRCS) $(UAPI) $(RSTS)
protos.a: $(OBJS)
@echo -e "\tAR $@"
@@ -40,8 +50,12 @@ protos.a: $(OBJS)
@echo -e "\tCC $@"
@$(COMPILE.c) $(CFLAGS_$*) -o $@ $<
+%.rst: ../../../../Documentation/netlink/specs/%.yaml $(TOOL2)
+ @echo -e "\tGEN_RST $@"
+ @$(TOOL_RST) -o $@ -i $<
+
clean:
- rm -f *.o
+ rm -f *.o *.rst
distclean: clean
rm -f *.c *.h *.a
@@ -49,5 +63,19 @@ distclean: clean
regen:
@../ynl-regen.sh
-.PHONY: all clean distclean regen
+install-rsts:
+ @echo -e "\tINSTALL generated docs"
+ @$(INSTALL) -d $(DESTDIR)$(docdir)/ynl
+ @$(INSTALL) -m 0644 $(RSTS) $(DESTDIR)$(docdir)/ynl/
+
+install-specs:
+ @echo -e "\tINSTALL specs"
+ @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl
+ @$(INSTALL) -m 0644 ../../../../Documentation/netlink/*.yaml $(DESTDIR)$(datarootdir)/ynl/
+ @$(INSTALL) -d $(DESTDIR)$(datarootdir)/ynl/specs
+ @$(INSTALL) -m 0644 ../../../../Documentation/netlink/specs/*.yaml $(DESTDIR)$(datarootdir)/ynl/specs/
+
+install: install-rsts install-specs
+
+.PHONY: all clean distclean regen install
.DEFAULT_GOAL: all
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/5] tools: ynl: add main install target
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
` (3 preceding siblings ...)
2024-12-03 9:27 ` [PATCH 4/5] tools: ynl: add install target for specs and docs Jan Stancek
@ 2024-12-03 9:27 ` Jan Stancek
4 siblings, 0 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-03 9:27 UTC (permalink / raw)
To: donald.hunter, kuba
Cc: pabeni, davem, edumazet, horms, netdev, linux-kernel, jstancek
This will install C library, specs, rsts and pyynl. The initial
structure is:
$ mkdir /tmp/myroot
$ make DESTDIR=/tmp/myroot install
/usr
/usr/lib64
/usr/lib64/libynl.a
/usr/lib/python3.XX/site-packages/pyynl/*
/usr/lib/python3.XX/site-packages/pyynl-0.0.1.dist-info/*
/usr/bin
/usr/bin/ynl
/usr/bin/ynl-ethtool
/usr/bin/ynl-gen-c
/usr/bin/ynl-gen-rst
/usr/share
/usr/share/doc
/usr/share/doc/ynl
/usr/share/doc/ynl/*.rst
/usr/share/ynl
/usr/share/ynl/genetlink-c.yaml
/usr/share/ynl/genetlink-legacy.yaml
/usr/share/ynl/genetlink.yaml
/usr/share/ynl/netlink-raw.yaml
/usr/share/ynl/specs
/usr/share/ynl/specs/devlink.yaml
/usr/share/ynl/specs/dpll.yaml
/usr/share/ynl/specs/ethtool.yaml
/usr/share/ynl/specs/fou.yaml
/usr/share/ynl/specs/handshake.yaml
/usr/share/ynl/specs/mptcp_pm.yaml
/usr/share/ynl/specs/netdev.yaml
/usr/share/ynl/specs/net_shaper.yaml
/usr/share/ynl/specs/nfsd.yaml
/usr/share/ynl/specs/nftables.yaml
/usr/share/ynl/specs/nlctrl.yaml
/usr/share/ynl/specs/ovs_datapath.yaml
/usr/share/ynl/specs/ovs_flow.yaml
/usr/share/ynl/specs/ovs_vport.yaml
/usr/share/ynl/specs/rt_addr.yaml
/usr/share/ynl/specs/rt_link.yaml
/usr/share/ynl/specs/rt_neigh.yaml
/usr/share/ynl/specs/rt_route.yaml
/usr/share/ynl/specs/rt_rule.yaml
/usr/share/ynl/specs/tcp_metrics.yaml
/usr/share/ynl/specs/tc.yaml
/usr/share/ynl/specs/team.yaml
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
tools/net/ynl/Makefile | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/tools/net/ynl/Makefile b/tools/net/ynl/Makefile
index 617b405d9ef8..e18a7f68cf5c 100644
--- a/tools/net/ynl/Makefile
+++ b/tools/net/ynl/Makefile
@@ -1,5 +1,16 @@
# SPDX-License-Identifier: GPL-2.0
+include ../../scripts/Makefile.arch
+
+INSTALL ?= install
+prefix ?= /usr
+ifeq ($(LP64), 1)
+ libdir_relative = lib64
+else
+ libdir_relative = lib
+endif
+libdir ?= $(prefix)/$(libdir_relative)
+
SUBDIRS = lib generated samples
all: $(SUBDIRS) libynl.a
@@ -22,5 +33,15 @@ clean distclean:
done
rm -f libynl.a
rm -rf pyynl/lib/__pycache__
+ rm -rf pyynl.egg-info
+ rm -rf build
+
+install: libynl.a
+ @echo -e "\tINSTALL libynl.a"
+ @$(INSTALL) -d $(DESTDIR)$(libdir)
+ @$(INSTALL) -m 0644 libynl.a $(DESTDIR)$(libdir)/libynl.a
+ @echo -e "\tINSTALL pyynl"
+ @pip install --prefix=$(DESTDIR)$(prefix) .
+ @make -C generated install
-.PHONY: all clean distclean $(SUBDIRS)
+.PHONY: all clean distclean install $(SUBDIRS)
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/5] tools: ynl: move python code to separate sub-directory
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
@ 2024-12-03 16:52 ` Stanislav Fomichev
2024-12-04 14:53 ` Jan Stancek
2024-12-03 19:50 ` Donald Hunter
1 sibling, 1 reply; 9+ messages in thread
From: Stanislav Fomichev @ 2024-12-03 16:52 UTC (permalink / raw)
To: Jan Stancek
Cc: donald.hunter, kuba, pabeni, davem, edumazet, horms, netdev,
linux-kernel
On 12/03, Jan Stancek wrote:
> Move python code to a separate directory so it can be
> packaged as a python module.
There is a bunch of selftests that depend on this location:
make -C tools/testing/selftests TARGETS="drivers/net" TEST_PROGS=ping.py TTEST_GEN_PROGS="" run_tests
make: Entering directory '/home/virtme/testing-18/tools/testing/selftests'
make[1]: Entering directory '/home/virtme/testing-18/tools/testing/selftests/drivers/net'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/virtme/testing-18/tools/testing/selftests/drivers/net'
make[1]: Entering directory '/home/virtme/testing-18/tools/testing/selftests/drivers/net'
TAP version 13
1..1
# overriding timeout to 90
# selftests: drivers/net: ping.py
# Traceback (most recent call last):
# File "/home/virtme/testing-18/tools/testing/selftests/drivers/net/./ping.py", line 4, in <module>
# from lib.py import ksft_run, ksft_exit
# File "/home/virtme/testing-18/tools/testing/selftests/drivers/net/lib/py/__init__.py", line 10, in <module>
# from net.lib.py import *
# File "/home/virtme/testing-18/tools/testing/selftests/net/lib/py/__init__.py", line 8, in <module>
# from .ynl import NlError, YnlFamily, EthtoolFamily, NetdevFamily, RtnlFamily
# File "/home/virtme/testing-18/tools/testing/selftests/net/lib/py/ynl.py", line 23, in <module>
# from net.ynl.lib import YnlFamily, NlError
# ImportError: cannot import name 'YnlFamily' from 'net.ynl.lib' (unknown location)
not ok 1 selftests: drivers/net: ping.py # exit=1
make[1]: Leaving directory '/home/virtme/testing-18/tools/testing/selftests/drivers/net'
make: Leaving directory '/home/virtme/testing-18/tools/testing/selftests'
xx__-> echo $?
0
xx__-> echo scan > /sys/kernel/debug/kmemleak && cat /sys/kernel/debug/kmemleak
xx__->
---
pw-bot: cr
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/5] tools: ynl: move python code to separate sub-directory
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
2024-12-03 16:52 ` Stanislav Fomichev
@ 2024-12-03 19:50 ` Donald Hunter
1 sibling, 0 replies; 9+ messages in thread
From: Donald Hunter @ 2024-12-03 19:50 UTC (permalink / raw)
To: Jan Stancek; +Cc: kuba, pabeni, davem, edumazet, horms, netdev, linux-kernel
On Tue, 3 Dec 2024 at 09:27, Jan Stancek <jstancek@redhat.com> wrote:
>
> Move python code to a separate directory so it can be
> packaged as a python module.
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
> tools/net/ynl/Makefile | 1 +
> tools/net/ynl/generated/Makefile | 2 +-
> tools/net/ynl/lib/.gitignore | 1 -
> tools/net/ynl/lib/Makefile | 1 -
> tools/net/ynl/pyynl/__init__.py | 0
> tools/net/ynl/{ => pyynl}/cli.py | 0
Perhaps we could have a symlink to cli.py from the original location
for compatibility with existing in-place usage. Same for ethtool.py
and other user-facing scripts.
> tools/net/ynl/{ => pyynl}/ethtool.py | 0
> tools/net/ynl/pyynl/lib/.gitignore | 1 +
> tools/net/ynl/{ => pyynl}/lib/__init__.py | 0
> tools/net/ynl/{ => pyynl}/lib/nlspec.py | 0
> tools/net/ynl/{ => pyynl}/lib/ynl.py | 0
> tools/net/ynl/{ => pyynl}/ynl-gen-c.py | 0
> tools/net/ynl/{ => pyynl}/ynl-gen-rst.py | 0
The documentation build depends on this location. This patch is
required to fix it:
diff --git a/Documentation/Makefile b/Documentation/Makefile
index fa71602ec961..52c6c5a3efa9 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -104,7 +104,7 @@ quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath
$(BUILDDIR)/$3/$4)
YNL_INDEX:=$(srctree)/Documentation/networking/netlink_spec/index.rst
YNL_RST_DIR:=$(srctree)/Documentation/networking/netlink_spec
YNL_YAML_DIR:=$(srctree)/Documentation/netlink/specs
-YNL_TOOL:=$(srctree)/tools/net/ynl/ynl-gen-rst.py
+YNL_TOOL:=$(srctree)/tools/net/ynl/pyynl/ynl_gen_rst.py
YNL_RST_FILES_TMP := $(patsubst %.yaml,%.rst,$(wildcard
$(YNL_YAML_DIR)/*.yaml))
YNL_RST_FILES := $(patsubst $(YNL_YAML_DIR)%,$(YNL_RST_DIR)%,
$(YNL_RST_FILES_TMP))
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/5] tools: ynl: move python code to separate sub-directory
2024-12-03 16:52 ` Stanislav Fomichev
@ 2024-12-04 14:53 ` Jan Stancek
0 siblings, 0 replies; 9+ messages in thread
From: Jan Stancek @ 2024-12-04 14:53 UTC (permalink / raw)
To: Stanislav Fomichev, donald.hunter
Cc: kuba, pabeni, davem, edumazet, horms, netdev, linux-kernel
On Tue, Dec 3, 2024 at 5:52 PM Stanislav Fomichev <stfomichev@gmail.com> wrote:
>
> On 12/03, Jan Stancek wrote:
> > Move python code to a separate directory so it can be
> > packaged as a python module.
>
> There is a bunch of selftests that depend on this location:
Sorry about that, I haven't realized other places it's already used at.
> Perhaps we could have a symlink to cli.py from the original location
> for compatibility with existing in-place usage. Same for ethtool.py
> and other user-facing scripts.
I can add those, but I'd still update docs references with new path.
Thanks,
Jan
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-12-04 14:53 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-03 9:26 [PATCH 0/5] tools: ynl: add install target Jan Stancek
2024-12-03 9:27 ` [PATCH 1/5] tools: ynl: move python code to separate sub-directory Jan Stancek
2024-12-03 16:52 ` Stanislav Fomichev
2024-12-04 14:53 ` Jan Stancek
2024-12-03 19:50 ` Donald Hunter
2024-12-03 9:27 ` [PATCH 2/5] tools: ynl: rename ynl-gen-[c|rst] to ynl_gen_[c|rst] Jan Stancek
2024-12-03 9:27 ` [PATCH 3/5] tools: ynl: add initial pyproject.toml for packaging Jan Stancek
2024-12-03 9:27 ` [PATCH 4/5] tools: ynl: add install target for specs and docs Jan Stancek
2024-12-03 9:27 ` [PATCH 5/5] tools: ynl: add main install target Jan Stancek
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.