From d626cdb13610db2f0c36e3acd89c2d7334aae9e9 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 31 Oct 2018 19:53:33 +0100 Subject: [PATCH] build: Fixes. * build-aux/trace.sh: Import from Mes. * build-aux/build-guile.sh: Update from Mes. * makefile: Avoid endless reconfigure. --- build-aux/build-guile.sh | 142 ++++++++++++++++++++------------------- build-aux/trace.sh | 41 +++++++++++ makefile | 9 ++- 3 files changed, 119 insertions(+), 73 deletions(-) create mode 100644 build-aux/trace.sh diff --git a/build-aux/build-guile.sh b/build-aux/build-guile.sh index 50533d7..dae985e 100755 --- a/build-aux/build-guile.sh +++ b/build-aux/build-guile.sh @@ -10,28 +10,19 @@ # the Free Software Foundation; either version 3 of the License, or (at # your option) any later version. # -# Gash is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Gash is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. # # You should have received a copy of the GNU General Public License # along with Gash. If not, see . -if [ -n "$BUILD_DEBUG" ]; then - set -x -fi +srcdir=${srcdir-.} +. ${srcdest}build-aux/trace.sh export GUILE export GUILE_AUTO_COMPILE -export GUILE_LOAD_PATH -export GUILE_LOAD_COMPILED_PATH - -GUILE_LOAD_PATH=$HOME/src/geesh:$GUILE_LOAD_PATH -GUILE_LOAD_COMPILED_PATH=$HOME/src/geesh:$GUILE_LOAD_COMPILED_PATH - -GUILE_LOAD_PATH=$(pwd):$GUILE_LOAD_PATH -GUILE_LOAD_COMPILED_PATH=$(pwd):$GUILE_LOAD_COMPILED_PATH GUILE=${GUILE-$(command -v guile)} GUILE_TOOLS=${GUILE_TOOLS-$(command -v guile-tools)} GUILE_AUTO_COMPILE=0 @@ -39,68 +30,79 @@ GUILE_AUTO_COMPILE=0 set -e SCM_FILES=" -gash/bournish-commands.scm -gash/guix-utils.scm -gash/builtins.scm -gash/compress.scm -gash/config.scm -gash/environment.scm -gash/geesh.scm -gash/gash.scm -gash/io.scm -gash/job.scm -gash/lzw.scm -gash/peg.scm -gash/pipe.scm -gash/readline.scm -gash/script.scm -gash/shell-utils.scm -gash/ustar.scm -gash/util.scm +${srcdest}gash/bournish-commands.scm +${srcdest}gash/guix-utils.scm +${srcdest}gash/builtins.scm +${srcdest}gash/compress.scm +${srcdest}gash/config.scm +${srcdest}gash/environment.scm +${srcdest}gash/geesh.scm +${srcdest}gash/gash.scm +${srcdest}gash/io.scm +${srcdest}gash/job.scm +${srcdest}gash/lzw.scm +${srcdest}gash/peg.scm +${srcdest}gash/pipe.scm +${srcdest}gash/readline.scm +${srcdest}gash/script.scm +${srcdest}gash/shell-utils.scm +${srcdest}gash/ustar.scm +${srcdest}gash/util.scm + +${srcdest}gash/commands/cat.scm +${srcdest}gash/commands/compress.scm +${srcdest}gash/commands/cp.scm +${srcdest}gash/commands/find.scm +${srcdest}gash/commands/grep.scm +${srcdest}gash/commands/ls.scm +${srcdest}gash/commands/reboot.scm +${srcdest}gash/commands/rm.scm +${srcdest}gash/commands/sed.scm +${srcdest}gash/commands/tar.scm +${srcdest}gash/commands/wc.scm +${srcdest}gash/commands/which.scm -gash/commands/cat.scm -gash/commands/compress.scm -gash/commands/cp.scm -gash/commands/find.scm -gash/commands/grep.scm -gash/commands/ls.scm -gash/commands/reboot.scm -gash/commands/sed.scm -gash/commands/tar.scm -gash/commands/wc.scm -gash/commands/which.scm " -export srcdir=. -export host=$($GUILE -c "(display %host-type)") - -for i in $SCM_FILES; do - go=${i%%.scm}.go - if [ $i -nt $go ]; then - echo " GUILEC $i" - $GUILE_TOOLS compile -L bin -L gash -o $go $i - fi -done - SCRIPTS=" -bin/cat -bin/compress -bin/cp -bin/find -bin/gash -bin/grep -bin/ls -bin/reboot -bin/sed -bin/tar -bin/wc -bin/which +${srcdest}bin/cat +${srcdest}bin/compress +${srcdest}bin/cp +${srcdest}bin/find +${srcdest}bin/gash +${srcdest}bin/grep +${srcdest}bin/ls +${srcdest}bin/reboot +${srcdest}bin/sed +${srcdest}bin/tar +${srcdest}bin/wc +${srcdest}bin/which " -for i in $SCRIPTS; do +export host=$($GUILE -c "(display %host-type)") + +abs=$srcdest +if [ "$GUILE_EFFECTIVE_VERSION" = "2.0" ]; then + srcdest=$abs_top_srcdir/ +fi + +GUILE_AUTO_COMPILE=0 +WARNINGS=" +--warn=unsupported-warning +--warn=unused-variable +--warn=unused-toplevel +--warn=unbound-variable +--warn=macro-use-before-definition +--warn=arity-mismatch +--warn=duplicate-case-datum +--warn=bad-case-datum +--warn=format +" + +for i in $SCM_FILES $SCRIPTS; do + b=$(basename $i) go=${i%%.scm}.go if [ $i -nt $go ]; then - echo " GUILEC $i" - $GUILE_TOOLS compile -L guile -L scripts -o $go $i + trace "GUILEC $b" $GUILE_TOOLS compile -L ${srcdir} $WARNINGS -o $go $i fi done diff --git a/build-aux/trace.sh b/build-aux/trace.sh new file mode 100644 index 0000000..6f5d0ef --- /dev/null +++ b/build-aux/trace.sh @@ -0,0 +1,41 @@ +# Gash --- Guile As SHell +# Copyright © 2018 Jan (janneke) Nieuwenhuizen +# +# This file is part of Gash. +# +# Gash is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# Gash is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License +# along with Gash. If not, see . + +if [ -z "$V" -o "$V0" = 0 ]; then + trace () { + echo " $1" + shift + eval "$@" $LOG + } + LOG=" >>build.log 2>&1" +fi +if [ "$V" = 1 ]; then + trace () { + shift + echo "$@" + eval "$@ $LOG" + } + LOG=" >>build.log 2>&1" +fi +if [ "$V" = 2 ]; then + set -x + trace () { + shift + eval "$@" + } +fi diff --git a/makefile b/makefile index 62a7df9..2854861 100644 --- a/makefile +++ b/makefile @@ -5,15 +5,18 @@ default: all .config.make: makefile -bin/gash: bin/gash.in | do-configure -bin/tar: bin/tar.in | do-configure +bin/gash: bin/gash.in + $(MAKE) do-configure + +gash/config.scm: + $(MAKE) do-configure do-configure: ./configure --prefix=$(prefix) all: all-go -all-go: | do-configure +all-go: | gash/config.scm build-aux/build-guile.sh clean: