Hello,
On 10/28/21 14:35, schumaker.anna@xxxxxxxxx wrote:
From: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx>
And create a shell script that launches the python program from the
$(libdir)
Signed-off-by: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx>
---
configure.ac | 1 +
tools/Makefile.am | 2 +-
tools/rpcctl/Makefile.am | 20 ++++++++++++++++++++
tools/rpcctl/rpcctl | 5 +++++
4 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 tools/rpcctl/Makefile.am
create mode 100644 tools/rpcctl/rpcctl
diff --git a/configure.ac b/configure.ac
index 93626d62be40..dcd3be0c8a8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -737,6 +737,7 @@ AC_CONFIG_FILES([
tools/rpcgen/Makefile
tools/mountstats/Makefile
tools/nfs-iostat/Makefile
+ tools/rpcctl/Makefile
tools/nfsdclnts/Makefile
tools/nfsconf/Makefile
tools/nfsdclddb/Makefile
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 9b4b0803db39..c3feabbec681 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -12,6 +12,6 @@ if CONFIG_NFSDCLD
OPTDIRS += nfsdclddb
endif
-SUBDIRS = locktest rpcdebug nlmtest mountstats nfs-iostat nfsdclnts $(OPTDIRS)
+SUBDIRS = locktest rpcdebug nlmtest mountstats nfs-iostat rpcctl nfsdclnts $(OPTDIRS)
MAINTAINERCLEANFILES = Makefile.in
diff --git a/tools/rpcctl/Makefile.am b/tools/rpcctl/Makefile.am
new file mode 100644
index 000000000000..f4237dbc89e5
--- /dev/null
+++ b/tools/rpcctl/Makefile.am
@@ -0,0 +1,20 @@
+## Process this file with automake to produce Makefile.in
+PYTHON_FILES = rpcctl.py client.py switch.py sysfs.py xprt.py
+tooldir = $(DESTDIR)$(libdir)/rpcctl
+
+man8_MANS = rpcctl.man
+
+all-local: $(PYTHON_FILES)
+
+install-data-hook:
+ mkdir -p $(tooldir)
+ for f in $(PYTHON_FILES) ; do \
+ $(INSTALL) -m 644 $$f $(tooldir)/$$f ; \
+ done
+ chmod +x $(tooldir)/rpcctl.py
+ $(INSTALL) -m 755 rpcctl $(DESTDIR)$(sbindir)/rpcctl
+ sed -i "s|LIBDIR=.|LIBDIR=$(tooldir)|" $(DESTDIR)$(sbindir)/rpcctl
A couple issues here....
* Changing a file after installed breaks rpm process since it
changes the checksum of the file so the process thinks it is
an undeclared file.
* Why is the $(sbindir)/rpcctl wrapper even needed?
Why not simply put the code that is in $(tooldir)/rpcctl.py
in the /usr/sbin/rpcctl?
* It appears the proper place to put .py modules is
under /usr/lib/python-<ver>/rpcctl not /usr/lib64/rpcctl
Finally when I manually set LIBDIR=/usr/lib64/rpcctl in
the /usr/sbin/rpcctl wrapper all I got was
# rpcctl --help
ERROR: sysfs is not mounted
So I know it was seeing sys.py module but not seeing
/sys/kernel/sunrpc/ which does exist.
# ls /sys/kernel/sunrpc/
./ ../ rpc-clients/ xprt-switches/
So my suggestion is get rid of that wrapper
and look under /usr/lib/python-<ver>/rpcctl
for the .py modules.
steved.
+
+
+
+MAINTAINERCLEANFILES=Makefile.in
diff --git a/tools/rpcctl/rpcctl b/tools/rpcctl/rpcctl
new file mode 100644
index 000000000000..4cc35e1ea3f9
--- /dev/null
+++ b/tools/rpcctl/rpcctl
@@ -0,0 +1,5 @@
+#!/bin/bash
+LIBDIR=.
+PYTHON3=/usr/bin/python
+
+exec $PYTHON3 $LIBDIR/rpcctl.py $*