summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules2
-rw-r--r--Makefile13
-rwxr-xr-xbootstrap16
m---------build-scripts0
m---------build-system/taler-build-scripts0
-rwxr-xr-x[l---------]configure84
-rw-r--r--[l---------]configure.py23
7 files changed, 123 insertions, 15 deletions
diff --git a/.gitmodules b/.gitmodules
index 1e5ac3730..1b331f8b4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "build-scripts"]
- path = build-scripts
+ path = build-system/taler-build-scripts
url = git://taler.net/taler-build-scripts
diff --git a/Makefile b/Makefile
index 622227316..31142ede5 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ ava = node_modules/ava/cli.js
nyc = node_modules/nyc/bin/nyc.js
tslint = node_modules/tslint/bin/tslint
--include config.mk
+include config.mk
.PHONY: tsc
tsc: tsconfig.json yarn-install
@@ -39,10 +39,8 @@ typedoc:
clean:
rm -rf dist/ config.mk
-submodules/init:
- git submodule update --init --recursive
-
-submodules/update:
+.PHONY: submodules-update
+submodules-update:
git submodule update --recursive --remote
.PHONY: check
@@ -59,7 +57,7 @@ lint: tsc yarn-install
.PHONY: yarn-install
yarn-install:
- $(yarnexe) install
+ $(yarn) install
.PHONY: i18n
@@ -89,10 +87,9 @@ else
.PHONY: install
install: tsc
@echo "installing to" $(prefix)
- yarn global add file://$(CURDIR) --prefix $(prefix)
+ $(yarn) global add file://$(CURDIR) --prefix $(prefix)
endif
.PHONY: watch
watch: tsconfig.json
-
./node_modules/.bin/webpack --watch
diff --git a/bootstrap b/bootstrap
index 90fc6a32d..82700e1b2 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,6 +1,14 @@
#!/bin/sh
-git submodule update --init --recursive
-git submodule update --recursive --remote
-ln -sf build-scripts/configure configure
-ln -sf build-scripts/configure.py configure.py
+# Bootstrap the repository. Used when the repository is checked out from git.
+# When using the source tarball, running this script is not necessary.
+
+set -eu
+
+if ! git --version >/dev/null; then
+ echo "git not installed"
+ exit 1
+fi
+
+git submodule update --init
+cp build-system/taler-build-scripts/configure ./configure
diff --git a/build-scripts b/build-scripts
deleted file mode 160000
-Subproject c49278458aad2d2bfbf91b3e4ee4dd1650bf960
diff --git a/build-system/taler-build-scripts b/build-system/taler-build-scripts
new file mode 160000
+Subproject b2c9672f2e493db810865b7de1e568a466b5936
diff --git a/configure b/configure
index 5ea41c58a..644d471de 120000..100755
--- a/configure
+++ b/configure
@@ -1 +1,83 @@
-build-scripts/configure \ No newline at end of file
+#!/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
+
+# 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
+}
+
+# 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
+ python="python3"
+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)')
+#echo $PYTHON
+
+
+# Call configure.py, assuming all went well.
+# $1 is read by configure.py as the prefix.
+# If $1 is empty, the python script checks the
+# environment for PREFIX. We might need more
+# variables and switches, such as DESTDIR.
+exec $PYTHON ./configure.py $@
diff --git a/configure.py b/configure.py
index 51dc3d24b..3a5a8de1c 120000..100644
--- a/configure.py
+++ b/configure.py
@@ -1 +1,22 @@
-build-scripts/configure.py \ No newline at end of file
+#!/usr/bin/env python3
+
+import sys
+from pathlib import Path
+
+base_dir = Path(__file__, "../build-system/taler-build-scripts").resolve()
+if not base_dir.exists():
+ print(
+ f"build system directory ({base_dir}) missing", file=sys.stderr
+ )
+ sys.exit(1)
+sys.path.insert(0, str(base_dir))
+
+from talerbuildconfig import *
+
+b = BuildConfig()
+b.enable_prefix()
+b.enable_configmk()
+b.add_tool(PosixTool("find"))
+b.add_tool(NodeJsTool())
+b.add_tool(YarnTool())
+b.run()