summaryrefslogtreecommitdiff
path: root/sh/lib.sh
diff options
context:
space:
mode:
authorng0 <ng0@n0.is>2019-10-22 16:32:07 +0000
committerng0 <ng0@n0.is>2019-10-22 16:32:07 +0000
commitdd8a253d1a3cc778410eeca48a763d106a396c44 (patch)
treeb07c5b7f8baa9d9cba1ba541885f69ecac2018e1 /sh/lib.sh
parentaae7f00662634db4c314acfa6d8008e0322a21f5 (diff)
downloadbuild-common-dd8a253d1a3cc778410eeca48a763d106a396c44.tar.gz
build-common-dd8a253d1a3cc778410eeca48a763d106a396c44.tar.bz2
build-common-dd8a253d1a3cc778410eeca48a763d106a396c44.zip
start to make sh code reusable.
hope the configure doesn't blow up, locally tested. this now requires readlink(1) and so far only serves the purpose to get to call python indepent of setting a python version in a Makefile for which with the current layout we'd have to run configure which would require python. Or we just record the location or name of the python executable in config.mk...
Diffstat (limited to 'sh/lib.sh')
-rw-r--r--sh/lib.sh/existence.sh27
-rw-r--r--sh/lib.sh/existence_python.sh76
2 files changed, 103 insertions, 0 deletions
diff --git a/sh/lib.sh/existence.sh b/sh/lib.sh/existence.sh
new file mode 100644
index 0000000..a888dee
--- /dev/null
+++ b/sh/lib.sh/existence.sh
@@ -0,0 +1,27 @@
+# This file is part of TALER
+# (C) 2019 GNUnet e.V.
+#
+# Authors:
+# Author: ng0 <ng0@taler.net>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
+# LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+# THIS SOFTWARE.
+#
+# SPDX-License-Identifier: 0BSD
+
+# there is a function used in curl to replicate which(1), but
+# it uses too many other tools. this one uses command and in
+# gnunet so far has no reports about failures.
+existence()
+{
+ command -v "$1" >/dev/null 2>&1
+}
diff --git a/sh/lib.sh/existence_python.sh b/sh/lib.sh/existence_python.sh
new file mode 100644
index 0000000..f32975a
--- /dev/null
+++ b/sh/lib.sh/existence_python.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# This file is part of TALER
+# (C) 2019 GNUnet e.V.
+#
+# This is very simple POSIX sh script which
+# identifies the first matching
+# python3 identifier in $PATH and produces
+# configure.py from configure.py.in, and then
+# calls the new executable configure.py.
+#
+# It should be portable on Unices. Report bugs on
+# the bugtracker if you discover that it isn't
+# working as intended.
+#
+# Authors:
+# Author: ng0 <ng0@taler.net>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
+# LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+# THIS SOFTWARE.
+#
+# SPDX-License-Identifier: 0BSD
+
+existence_python()
+{
+ # We have to check every possible variant of the
+ # executable name because there is a PEP which
+ # defines the executable to be like this.
+ if existence python3; then
+ if test ! -z "`python3 --version | awk '$2 ~ /3.7/ { print }'`"; then
+ python="python3"
+ else
+ echo "*** At least python 3.7 is required for the buildsystem"
+ exit 1
+ fi
+ # elif existence python3.1; then
+ # python="python3.1"
+ # elif existence python3.2; then
+ # python="python3.2"
+ # elif existence python3.3; then
+ # python="python3.3"
+ # elif existence python3.4; then
+ # python="python3.4"
+ # elif existence python3.5; then
+ # python="python3.5"
+ # elif existence python3.6; then
+ # python="python3.6"
+ elif existence python3.7; then
+ python="python3.7"
+ elif existence python3.8; then
+ python="python3.8"
+ else
+ echo "*** No known python3 executable found in path ***"
+ echo "*** falling back to env(1) python ***"
+ # Unreliable, but if env finds no python, we still can
+ # not assume python in a fixed location.
+ # TODO: Check this in a clean chroot!
+ python="env python"
+ fi
+
+ # we could check the return value here via || echo "blafoo"
+ # or fail anyway once configure.py is invoked because we
+ # don't have python if we reach the point to fail.
+ PYTHON=$($python -c 'import sys; print(sys.executable)')
+}
+
+existence_python