diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-11-10 10:27:09 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-11-10 10:27:09 +0000 |
commit | 5e8e9500102800e68c9e7fcac9e85c1668b71a36 (patch) | |
tree | 81d79ac70ffbb127e8063f18c8f55475ca169ee1 /Build/source/texk/web2c/ctangleboot-sh.in | |
parent | e6a9c88ada2f11dd61e4c4e39dff84944bed5787 (diff) |
towards TL2010: texk/web2c
git-svn-id: svn://tug.org/texlive/trunk@15964 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/ctangleboot-sh.in')
-rw-r--r-- | Build/source/texk/web2c/ctangleboot-sh.in | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/ctangleboot-sh.in b/Build/source/texk/web2c/ctangleboot-sh.in new file mode 100644 index 00000000000..7d747fc28cc --- /dev/null +++ b/Build/source/texk/web2c/ctangleboot-sh.in @@ -0,0 +1,69 @@ +#! @SHELL@ +# ctangleboot-sh: shell script to invoke ctangleboot and if required +# update c{tangle,web}boot.[ch]in from c{tangle,web}.[ch]. +# For details see tangle.sh. +# +# Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +# +# This file is free software; the copyright holder +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# +target=$1; shift +base=$1 +case $base in + common) file=cweb; exts='c h';; + ctangle) file=ctangle; exts=c;; + *) echo "Usage: $0 TARGET {common|ctangle} [CHANGEFILE]" >&2; exit 1;; +esac + +TEXMFCNF=@srcdir@/../kpathsea; export TEXMFCNF +CWEBINPUTS=@srcdir@/cwebdir; export CWEBINPUTS + +stamp=$base-ctangle +case $target in + $stamp) + # Normal build. + rm -f $stamp.tmp + echo timestamp >$stamp.tmp + echo "@CTANGLEBOOT@ $@" + @CTANGLEBOOT@ "$@" || exit 1 + mv -f $stamp.tmp $stamp + ;; + *) + # Recover from removal of $target + test -f $target && exit 0 + trap "rm -rf $stamp $stamp.lock" 1 2 13 15 + if mkdir $stamp.lock 2>/dev/null; then + # Code executed by the first process. + rm -f $stamp $stamp.tmp + echo timestamp >$stamp.tmp + echo "@CTANGLEBOOT@ $@" + @CTANGLEBOOT@ "$@" || exit 1 + mv -f $stamp.tmp $stamp + rmdir $stamp.lock + else + # Code executed by the follower processes. + # Wait until the first process is done. + while test -d $stamp.lock; do sleep 1; done + # Succeed if and only if the first process succeeded. + test -f $stamp; exit $? + fi + ;; +esac + +for ext in $exts; do + src=$file.$ext + dst=@srcdir@/${file}boot.${ext}in + sed -e 's,@srcdir@/cwebdir,cwebdir,' \ + -e 's,^#include "cweb.h",#include "cwebboot.h",' \ + $src >$stamp.tmp + if cmp -s $stamp.tmp $dst; then + rm -f $stamp.tmp + else + echo "Updating $src => $dst" + mv -f $stamp.tmp $dst || exit 1 + fi +done + +exit 0 |