nolimips nolimips-0.9-17-gff5ce5b build-aux: update tools

Import from Vaucanson. * build-aux/bin/bison++.in: No longer "cd", this produces more accurate error message locations, which is nice when compiling under Emacs. * build-aux/bin/move-if-change: Beware that colordiff might now hang on stdin. Signed-off-by: Roland Levillain <roland@lrde.epita.fr> --- ChangeLog | 12 ++++ build-aux/bin/bison++.in | 151 +++++++++++++++++++++--------------------- build-aux/bin/move-if-change | 2 +- 3 files changed, 88 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd95139..63e9de1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-10-17 Akim Demaille <akim@lrde.epita.fr> + + build-aux: update tools + + Import from Vaucanson. + + * build-aux/bin/bison++.in: No longer "cd", this produces + more accurate error message locations, which is nice when + compiling under Emacs. + * build-aux/bin/move-if-change: Beware that colordiff + might now hang on stdin. + 2012-02-22 Roland Levillain <roland@lrde.epita.fr> Distribute build-aux/bin/fuse-switch. diff --git a/build-aux/bin/bison++.in b/build-aux/bin/bison++.in index a22c7d2..733750b 100755 --- a/build-aux/bin/bison++.in +++ b/build-aux/bin/bison++.in @@ -1,13 +1,8 @@ #! /bin/sh -# Exit status. -status=0 - # Any tool failure is a failure of the script. set -e -: ${BISON='@BISON@'} - stderr () { local i @@ -46,11 +41,6 @@ EOF exit 0 } -me=$(basename $0) -fuse_switch='@abs_srcdir@/fuse-switch' -move_if_change='@abs_srcdir@/move-if-change --color' -verbose=false - ## ---------------------- ## ## Command line parsing. ## ## ---------------------- ## @@ -88,53 +78,10 @@ get_options () bisonflags="$@" } - -## ------ ## -## Main. ## -## ------ ## - -get_options "$@" - -input_base=$(basename "$input") -input_dir=$(dirname "$input") - -output_base=$(basename "$output") -output_base_noext=$(echo "$output_base" | sed -e 's/\.[^.]*//') -output_dir=$(dirname "$output") - -: ${location_dir=$output_dir} - -# The namespace we are in. -# FIXME: We need $srcdir to be able to compute it. -namespace=parse - -if $BISON --xml --version >/dev/null 2>&1; then - bisonflags="$bisonflags --xml" -fi - -# Alexandre Duret-Lutz also notes that in VPATH-builds $(srcdir) can -# be an absolute path depending on how ./configure is called ... -# In that case - -# bison $(srcdir)/parsetiger.yy [...] - -# will hard code the path in the maintainer's tree. Hence, do not use -# paths with Bison, chdir there. - -# A tmp dir. -tmp=$output_base_noext.dir -rm -rf $tmp -mkdir $tmp - -# Compile in this dir. -# Don't use `ln -s' as its semantics of paths sucks. -cp $input $tmp -cd $tmp -set +e -$BISON $bisonflags $input_base -o $output_base -status=$? -set -e - +noext () +{ + echo "$1" | sed -e 's/\.[^.]*$//' +} # fix_bison_output FILE # --------------------- @@ -142,26 +89,34 @@ set -e fix_bison_output () { local file="$1" - local base - base=$(basename "$file") - local base_noext - base_noext=$(echo "$file" | sed -e 's/\..*//') - perl -pi -e " -# Fix doxygen tags. -s|\Q\\file $base\E\b|\\\\file $namespace/$base|g; - -# Fix sync lines for composite paths. -s|(^#line.*)$base_noext|\$1$input_dir/$base_noext|g - if '$input_dir' ne '$output_dir'; + perl -pi \ + -e " +BEGIN +{ + \$location_prefix = '$location_prefix'; + \$namespace = '$namespace'; + \$output_dir = '$output_dir'; + \$tmp = '$tmp'; +}" \ + -e ' +BEGIN +{ + ($TMP = uc $tmp) =~ s/[^A-Z0-9]+/_/g; + ($OUTPUT_DIR = uc $output_dir) =~ s/[^A-Z0-9]+/_/g; +} + +# We compiled in a tmp directory, remove references to it. +s{$tmp/}{$output_dir/}g; +s{$TMP}{$OUTPUT_DIR}g; # In case position.hh and location.hh were moved. s{include \"(position.hh|location.hh)\"} {include <$location_prefix\$1>}g - if '$location_prefix' ne ''; + if $location_prefix ne ""; # Kill trailing blanks. -s/[ \t]+\$//; -" "$1" +s/[ \t]+$//; +' "$file" # Fuse the switches of the parser. case $file in @@ -221,7 +176,7 @@ out () esac } -# out FILE +# tmp FILE # -------- # Return path name of FILE in the tmp directory. tmp () @@ -243,13 +198,57 @@ install () $move_if_change "$(tmp "$1")" "$dest" } -# Go back to where we were and use relative paths instead of using -# absolute file names. The messages look nicer. -cd .. +## ------ ## +## Main. ## +## ------ ## + +# Exit status. +status=0 + +: ${BISON='@BISON@'} + +me=$(basename $0) +fuse_switch='@abs_srcdir@/fuse-switch' +move_if_change='@abs_srcdir@/move-if-change --color' +verbose=false + +get_options "$@" + +input_base=$(basename "$input") +input_dir=$(dirname "$input") + +output_noext=$(noext "$output") +output_base=$(basename "$output") +output_base_noext=$(noext "$output_base") +output_dir=$(dirname "$output") + +: ${location_dir=$output_dir} + +# The namespace we are in. +# FIXME: We need $srcdir to be able to compute it. +namespace=parse + +if $BISON --xml --version >/dev/null 2>&1; then + bisonflags="$bisonflags --xml" +fi + +# A tmp dir. +tmp=$output_noext.dir +rm -rf $tmp +mkdir -p $tmp + +# Compile in this dir. +# Don't use `ln -s' as its semantics of paths sucks. +set +e +$BISON $bisonflags $input -o $tmp/$output_base +status=$? +set -e + for file in $tmp/* do + test $file != "$tmp/*" || + fatal "did not find any file in $tmp" base=$(basename $file) - base_noext=$(echo "$base" | sed -e 's/\.[^.]*//') case $status:$base in (*:$input_base) # Leave it here. diff --git a/build-aux/bin/move-if-change b/build-aux/bin/move-if-change index 985fbb8..509801a 100755 --- a/build-aux/bin/move-if-change +++ b/build-aux/bin/move-if-change @@ -32,7 +32,7 @@ do (-c|--color) # The Emacs shell and compilation-mode are really bad at # displaying colors. - if (colordiff --version) >/dev/null 2>&1 \ + if (colordiff /dev/null /dev/null) >/dev/null 2>&1 \ && test -z "$INSIDE_EMACS"; then diff=colordiff fi -- 1.7.2.5
participants (1)
-
Akim Demaille