summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2019-09-12 16:32:32 -0400
committerBrian Behlendorf <[email protected]>2019-09-12 13:32:32 -0700
commit4f342e45be19d0bb8e32f38664dc29a12092dfe9 (patch)
tree685ca60e63c7b977750249f326143cf305699203
parentb01a6574aebbf50504db2c1b28de5a9d288be1a5 (diff)
Canonicalize Python shebangs
/usr/bin/env python3 is the suggested[1] shebang for Python in general (likewise for python2) and is conventional across platforms. This eases development on systems where python is not installed in /usr/bin (FreeBSD for example) and makes it possible to develop in virtual environments (venv) for isolating dependencies. Many packaging guidelines discourage the use of /usr/bin/env, but since this is the canonical way of writing shebangs in the Python community, many packaging scripts are already equipped to handle substituting the appropriate absolute path to python automatically. Some RPM package builders lacking brp-mangle-shebangs need a small fallback mechanism in the package spec to stamp the appropriate shebang on installed Python scripts. [1]: https://docs.python.org/3/using/unix.html?#miscellaneous Reviewed-by: Richard Laager <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: George Melikov <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #9314
-rwxr-xr-xcmd/arc_summary/arc_summary22
-rwxr-xr-xcmd/arc_summary/arc_summary32
-rw-r--r--cmd/arcstat/Makefile.am2
-rwxr-xr-xcmd/arcstat/arcstat2
-rw-r--r--cmd/dbufstat/Makefile.am2
-rwxr-xr-xcmd/dbufstat/dbufstat2
-rw-r--r--rpm/generic/zfs.spec.in12
-rw-r--r--tests/test-runner/bin/Makefile.am2
-rwxr-xr-xtests/test-runner/bin/test-runner.py2
-rwxr-xr-xtests/test-runner/bin/zts-report.py2
10 files changed, 17 insertions, 13 deletions
diff --git a/cmd/arc_summary/arc_summary2 b/cmd/arc_summary/arc_summary2
index 734fb708b..2946ee195 100755
--- a/cmd/arc_summary/arc_summary2
+++ b/cmd/arc_summary/arc_summary2
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python2
#
# $Id: arc_summary.pl,v 388:e27800740aa2 2011-07-08 02:53:29Z jhell $
#
diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3
index ebdf83218..a32b2caee 100755
--- a/cmd/arc_summary/arc_summary3
+++ b/cmd/arc_summary/arc_summary3
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
#
# Copyright (c) 2008 Ben Rockwood <[email protected]>,
# Copyright (c) 2010 Martin Matuska <[email protected]>,
diff --git a/cmd/arcstat/Makefile.am b/cmd/arcstat/Makefile.am
index 2d59faa9c..8166778a1 100644
--- a/cmd/arcstat/Makefile.am
+++ b/cmd/arcstat/Makefile.am
@@ -8,6 +8,6 @@ dist_bin_SCRIPTS = arcstat
#
if USING_PYTHON_2
install-exec-hook:
- sed --in-place 's|^#!/usr/bin/python3|#!/usr/bin/python2|' \
+ sed --in-place 's|^#!/usr/bin/env python3|#!/usr/bin/env python2|' \
$(DESTDIR)$(bindir)/arcstat
endif
diff --git a/cmd/arcstat/arcstat b/cmd/arcstat/arcstat
index 57a2d621f..003499928 100755
--- a/cmd/arcstat/arcstat
+++ b/cmd/arcstat/arcstat
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
#
# Print out ZFS ARC Statistics exported via kstat(1)
# For a definition of fields, or usage, use arctstat.pl -v
diff --git a/cmd/dbufstat/Makefile.am b/cmd/dbufstat/Makefile.am
index 06923d38b..a3f0c6e50 100644
--- a/cmd/dbufstat/Makefile.am
+++ b/cmd/dbufstat/Makefile.am
@@ -8,6 +8,6 @@ dist_bin_SCRIPTS = dbufstat
#
if USING_PYTHON_2
install-exec-hook:
- sed --in-place 's|^#!/usr/bin/python3|#!/usr/bin/python2|' \
+ sed --in-place 's|^#!/usr/bin/env python3|#!/usr/bin/env python2|' \
$(DESTDIR)$(bindir)/dbufstat
endif
diff --git a/cmd/dbufstat/dbufstat b/cmd/dbufstat/dbufstat
index e6c947fbc..4a57d8113 100755
--- a/cmd/dbufstat/dbufstat
+++ b/cmd/dbufstat/dbufstat
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
#
# Print out statistics for all cached dmu buffers. This information
# is available through the dbufs kstat and may be post-processed as
diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in
index 5ef6f7bcf..545627d4b 100644
--- a/rpm/generic/zfs.spec.in
+++ b/rpm/generic/zfs.spec.in
@@ -53,10 +53,6 @@
%bcond_with asan
%bcond_with systemd
-# Exclude test-runner.py from the rpmbuild shebang check to allow it to run
-# under Python 2 and 3.
-%global __brp_mangle_shebangs_exclude_from test-runner.py
-
# Generic enable switch for systemd
%if %{with systemd}
%define _systemd 1
@@ -354,6 +350,14 @@ make %{?_smp_mflags}
%{__rm} -rf $RPM_BUILD_ROOT
make install DESTDIR=%{?buildroot}
find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
+%if 0%{!?__brp_mangle_shebangs:1}
+find %{?buildroot}%{_bindir} \
+ \( -name arc_summary -or -name arcstat -or -name dbufstat \) \
+ -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
+find %{?buildroot}%{_datadir} \
+ \( -name test-runner.py -or -name zts-report.py \) \
+ -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
+%endif
%post
%if 0%{?_systemd}
diff --git a/tests/test-runner/bin/Makefile.am b/tests/test-runner/bin/Makefile.am
index e1ae21548..2c031f745 100644
--- a/tests/test-runner/bin/Makefile.am
+++ b/tests/test-runner/bin/Makefile.am
@@ -9,7 +9,7 @@ dist_pkgdata_SCRIPTS = \
#
if USING_PYTHON_2
install-data-hook:
- sed --in-place 's|^#!/usr/bin/python3|#!/usr/bin/python2|' \
+ sed --in-place 's|^#!/usr/bin/env python3|#!/usr/bin/env python2|' \
$(DESTDIR)$(pkgdatadir)/test-runner.py \
$(DESTDIR)$(pkgdatadir)/zts-report.py
endif
diff --git a/tests/test-runner/bin/test-runner.py b/tests/test-runner/bin/test-runner.py
index bf2c77c18..ca08b3754 100755
--- a/tests/test-runner/bin/test-runner.py
+++ b/tests/test-runner/bin/test-runner.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
#
# This file and its contents are supplied under the terms of the
diff --git a/tests/test-runner/bin/zts-report.py b/tests/test-runner/bin/zts-report.py
index b6f3cf22c..65233c41b 100755
--- a/tests/test-runner/bin/zts-report.py
+++ b/tests/test-runner/bin/zts-report.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
#
# This file and its contents are supplied under the terms of the