Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris.

This adds a configure option --enable-path-for-scripts=PREFIX
which defaults to empty except on Solaris it is /usr/xpg4/bin
to make POSIX grep and others available. The Solaris case had
been documented in INSTALL with a manual fix but it's better
to do this automatically since it is needed on most Solaris
systems anyway.

Thanks to Daniel Richard G.
This commit is contained in:
Lasse Collin 2019-09-24 23:02:40 +03:00
parent 6a89e656eb
commit 43ce4ea7c7
6 changed files with 65 additions and 8 deletions

43
INSTALL
View File

@ -123,8 +123,11 @@ XZ Utils Installation
as an argument to the configure script. as an argument to the configure script.
test_scripts.sh in "make check" may fail if good enough tools are test_scripts.sh in "make check" may fail if good enough tools are
missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). See sections missing from PATH (/usr/xpg4/bin or /usr/xpg6/bin). Nowadays
4.5 and 3.2 for more information. /usr/xpg4/bin is added to the script PATH by default on Solaris
(see --enable-path-for-scripts=PREFIX in section 2), but old xz
releases needed extra steps. See sections 4.5 and 3.2 for more
information.
1.2.6. Tru64 1.2.6. Tru64
@ -438,6 +441,23 @@ XZ Utils Installation
and should work on most systems. This has no effect on the and should work on most systems. This has no effect on the
resulting binaries. resulting binaries.
--enable-path-for-scripts=PREFIX
If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in
the beginning of the scripts (xzgrep and others).
The default is empty except on Solaris the default is
/usr/xpg4/bin.
This can be useful if the default PATH doesn't contain
modern POSIX tools (as can be the case on Solaris) or if
one wants to ensure that the correct xz binary is in the
PATH for the scripts. Note that the latter use can break
"make check" if the prefixed PATH causes a wrong xz binary
(other than the one that was just built) to be used.
Older xz releases support a different method for setting
the PATH for the scripts. It is described in section 3.2
and is supported in this xz version too.
2.1. Static vs. dynamic linking of liblzma 2.1. Static vs. dynamic linking of liblzma
@ -510,11 +530,17 @@ XZ Utils Installation
3.2. PATH 3.2. PATH
The method described below is supported by older xz releases.
It is supported by the current version too, but the newer
--enable-path-for-scripts=PREFIX described in section 2 may be
more convenient.
The scripts assume that the required tools (standard POSIX utilities, The scripts assume that the required tools (standard POSIX utilities,
mktemp, and xz) are in PATH; the scripts don't set the PATH themselves. mktemp, and xz) are in PATH; the scripts don't set the PATH themselves
Some people like this while some think this is a bug. Those in the (except as described for --enable-path-for-scripts=PREFIX). Some
latter group can easily patch the scripts before running the configure people like this while some think this is a bug. Those in the latter
script by taking advantage of a placeholder line in the scripts. group can easily patch the scripts before running the configure script
by taking advantage of a placeholder line in the scripts.
For example, to make the scripts prefix /usr/bin:/bin to PATH: For example, to make the scripts prefix /usr/bin:/bin to PATH:
@ -588,8 +614,9 @@ XZ Utils Installation
some tools are missing from the current PATH or the tools lack some tools are missing from the current PATH or the tools lack
support for some POSIX features. This can happen at least on support for some POSIX features. This can happen at least on
Solaris where the tools in /bin may be ancient but good enough Solaris where the tools in /bin may be ancient but good enough
tools are available in /usr/xpg4/bin or /usr/xpg6/bin. One fix tools are available in /usr/xpg4/bin or /usr/xpg6/bin. For possible
for this problem is described in section 3.2 of this file. fixes, see --enable-path-for-scripts=PREFIX in section 2 and the
older alternative method described in section 3.2 of this file.
If tests other than test_scripts.sh fail, a likely reason is that If tests other than test_scripts.sh fail, a likely reason is that
libtool links the test programs against an installed version of libtool links the test programs against an installed version of

View File

@ -516,6 +516,32 @@ case $enable_sandbox in
esac esac
###########################
# PATH prefix for scripts #
###########################
# The scripts can add a prefix to the search PATH so that POSIX tools
# or the xz binary is always in the PATH.
AC_ARG_ENABLE([path-for-scripts],
[AS_HELP_STRING([--enable-path-for-scripts=PREFIX],
[If PREFIX isn't empty, PATH=PREFIX:$PATH will be set in
the beginning of the scripts (xzgrep and others).
The default is empty except on Solaris the default is
/usr/xpg4/bin.])],
[], [
case $host_os in
solaris*) enable_path_for_scripts=/usr/xpg4/bin ;;
*) enable_path_for_scripts= ;;
esac
])
if test -n "$enable_path_for_scripts" && test "x$enable_path_for_scripts" != xno ; then
enable_path_for_scripts="PATH=$enable_path_for_scripts:\$PATH"
else
enable_path_for_scripts=
fi
AC_SUBST([enable_path_for_scripts])
############################################################################### ###############################################################################
# Checks for programs. # Checks for programs.
############################################################################### ###############################################################################

View File

@ -15,6 +15,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
@enable_path_for_scripts@
#SET_PATH - This line is a placeholder to ease patching this script. #SET_PATH - This line is a placeholder to ease patching this script.
# Instead of unsetting XZ_OPT, just make sure that xz will use file format # Instead of unsetting XZ_OPT, just make sure that xz will use file format

View File

@ -18,6 +18,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
@enable_path_for_scripts@
#SET_PATH - This line is a placeholder to ease patching this script. #SET_PATH - This line is a placeholder to ease patching this script.
# Instead of unsetting XZ_OPT, just make sure that xz will use file format # Instead of unsetting XZ_OPT, just make sure that xz will use file format

View File

@ -15,6 +15,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
@enable_path_for_scripts@
#SET_PATH - This line is a placeholder to ease patching this script. #SET_PATH - This line is a placeholder to ease patching this script.
# Instead of unsetting XZ_OPT, just make sure that xz will use file format # Instead of unsetting XZ_OPT, just make sure that xz will use file format

View File

@ -15,6 +15,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
@enable_path_for_scripts@
#SET_PATH - This line is a placeholder to ease patching this script. #SET_PATH - This line is a placeholder to ease patching this script.
# Instead of unsetting XZ_OPT, just make sure that xz will use file format # Instead of unsetting XZ_OPT, just make sure that xz will use file format