diff options
| author | Michael Forney <mforney@mforney.org> | 2018-02-15 21:24:24 -0800 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2018-02-16 02:52:34 -0800 |
| commit | 741d25282274e59c785b9cbee23cefff3d2721a2 (patch) | |
| tree | b7eaf7402cb1a61c220a3f0eecc3bc63cec14eaa /scripts | |
| parent | 83d57181d1565d9c12b7d2467be9008d2b6edeab (diff) | |
Port build scripts to POSIX shell
Since we are now using Lua to generate ninja files, use of rc in build scripts
seems unnecessary and adds an additional bootstrap dependency. None of them are
too fancy, so just port to POSIX sh instead.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/commit.rc | 19 | ||||
| -rw-r--r-- | scripts/commit.sh | 16 | ||||
| -rw-r--r-- | scripts/configheader.rc | 18 | ||||
| -rw-r--r-- | scripts/fetch-curl.rc | 45 | ||||
| -rw-r--r-- | scripts/fetch-curl.sh | 40 | ||||
| -rw-r--r-- | scripts/fetch-git.rc | 15 | ||||
| -rw-r--r-- | scripts/fetch-git.sh | 13 | ||||
| -rw-r--r-- | scripts/hash.rc | 24 | ||||
| -rw-r--r-- | scripts/hash.sh | 18 | ||||
| -rw-r--r-- | scripts/probe.rc | 7 | ||||
| -rw-r--r-- | scripts/probe.sh | 7 | ||||
| -rw-r--r-- | scripts/tree.rc | 30 | ||||
| -rw-r--r-- | scripts/tree.sh | 19 |
13 files changed, 113 insertions, 158 deletions
diff --git a/scripts/commit.rc b/scripts/commit.rc deleted file mode 100644 index 870d7ab3..00000000 --- a/scripts/commit.rc +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/rc - -flag e + - -repo=$1 -branch=$2 -tag=$3 -out=$4 - -fn checkstatus {} - -if(git -C $repo show-ref -q --verify refs/heads/$branch) - parent=(-p $branch) -if not parent=() - -message='oasis built by '`{id -un} -commit=`{echo $message | git -C $repo commit-tree $tag $parent} ; checkstatus -git -C $repo update-ref refs/heads/$branch $commit -echo $commit > $out.tmp && mv $out.tmp $out diff --git a/scripts/commit.sh b/scripts/commit.sh new file mode 100644 index 00000000..b4959f48 --- /dev/null +++ b/scripts/commit.sh @@ -0,0 +1,16 @@ +set -e + +repo=$1 +branch=$2 +tag=$3 +out=$4 + +if git -C "$repo" show-ref -q --verify "refs/heads/$branch" ; then + set -- -p "$branch" +else + set -- +fi + +commit=$(git -C "$repo" commit-tree -m "oasis built by $(id -un)" "$@" "$tag") +git -C "$repo" update-ref "refs/heads/$branch" "$commit" +echo "$commit" >"$out.tmp" && mv "$out.tmp" "$out" diff --git a/scripts/configheader.rc b/scripts/configheader.rc deleted file mode 100644 index c1655f91..00000000 --- a/scripts/configheader.rc +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/rc - -flag e + - -fn checkstatus {} - -posix_defines=`{mktemp} -checkstatus - -fn sigexit { - status=() rm $posix_defines -} - -awk '{if($1 == "#define") print $2 ; if($2 == "#undef") print $3}' include/config-posix.h >$posix_defines -defines=`{awk '{if($1 == "#undef") print $2}' $1 | grep -F -x -v -f $posix_defines} -checkstatus - -printf '#undef %s\n' $defines diff --git a/scripts/fetch-curl.rc b/scripts/fetch-curl.rc deleted file mode 100644 index a525bcdf..00000000 --- a/scripts/fetch-curl.rc +++ /dev/null @@ -1,45 +0,0 @@ -flag e + - -if(~ $#* 0) { - echo 'usage: fetch-curl.rc dir [paxflags...]' >[1=2] - exit 2 -} - -cd $1 -shift - -if([ -e src ]) rm -rf src - -if(! sha256sum -c sha256 >[2]/dev/null) { - curl -L -K url -O - sha256sum -c sha256 -} - -for(archive in `{awk '{print $2}' sha256}) { - switch($archive) { - case *.tar.gz *.tgz - tool=zcat - case *.tar.bz2 - tool=bzcat - case *.tar.xz - tool=xzcat - case * - tool=() - } - flags=() - while(! ~ $1 '' ';') { - flags=($flags $1) - shift - } - if(~ $#flags 0) - flags=(-s '/^\.\|[^\/]*/src/' '*/*') - shift - if(! ~ $#tool 0) $tool $archive | pax -r $flags -} - -if([ -d patch ]) { - if(prefix=`{git rev-parse --show-prefix >[2]/dev/null}) dir=$prefix^src - if not dir=src - git apply -v '--whitespace=nowarn' --directory $dir patch/* -} -status=() diff --git a/scripts/fetch-curl.sh b/scripts/fetch-curl.sh new file mode 100644 index 00000000..86f7598e --- /dev/null +++ b/scripts/fetch-curl.sh @@ -0,0 +1,40 @@ +set -e + +if [ "$#" != 1 ] ; then + echo 'usage: fetch-curl.sh dir' >&2 + exit 2 +fi + +dir=$1 +shift + +cd "$dir" + +if [ -e src ] ; then + rm -rf src +fi + +if ! sha256sum -c sha256 2>/dev/null ; then + curl -L -K url -O + sha256sum -c sha256 +fi + +while read -r checksum archive ; do + case $archive in + *.tar.gz|*.tgz) + tool=zcat ;; + *.tar.bz2) + tool=bzcat ;; + *.tar.xz) + tool=xzcat ;; + *) + tool= + esac + if [ -n "$tool" ] ; then + "$tool" "$archive" | pax -r -s '/^\.\|[^\/]*/src/' '*/*' + fi +done <sha256 + +if [ -d patch ] ; then + git apply -v --whitespace=nowarn --directory "$dir/src" patch/* +fi diff --git a/scripts/fetch-git.rc b/scripts/fetch-git.rc deleted file mode 100644 index 14f28afc..00000000 --- a/scripts/fetch-git.rc +++ /dev/null @@ -1,15 +0,0 @@ -flag e + - -if(! ~ $#* 1) { - echo 'usage: fetch-git.rc dir' >[1=2] - exit 2 -} - -cd $1 - -git submodule update --init --checkout src -if([ -d patch ]) { - patches=patch/* - git -C src am '--whitespace=nowarn' ../$patches -} -status=() diff --git a/scripts/fetch-git.sh b/scripts/fetch-git.sh new file mode 100644 index 00000000..eea32d1c --- /dev/null +++ b/scripts/fetch-git.sh @@ -0,0 +1,13 @@ +set -e + +if [ "$#" != 1 ] ; then + echo 'usage: fetch-git.sh dir' >&2 + exit 2 +fi + +cd "$1" + +git submodule update --init --checkout src +if [ -d patch ] ; then + git -C src am --whitespace=nowarn "$PWD"/patch/* +fi diff --git a/scripts/hash.rc b/scripts/hash.rc deleted file mode 100644 index 90151183..00000000 --- a/scripts/hash.rc +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/rc - -flag e + - -repo=$1 -mode=$2 -name=$3 -shift 3 - -fn checkstatus {} - -hash=`{ - switch($mode) { - case 12???? - printf %s $1 | git -C $repo hash-object -w --stdin - case 10???? - git -C $repo hash-object -w --stdin <$1 - case * - status=1 - } -} -checkstatus - -printf '%s %s\t%s\n' $mode $hash $name diff --git a/scripts/hash.sh b/scripts/hash.sh new file mode 100644 index 00000000..15861d27 --- /dev/null +++ b/scripts/hash.sh @@ -0,0 +1,18 @@ +set -e + +repo=$1 +mode=$2 +name=$3 +shift 3 + +case "$mode" in +12????) + hash=$(printf %s "$1" | git -C "$repo" hash-object -w --stdin) ;; +10????) + hash=$(git -C "$repo" hash-object -w --stdin <"$1") ;; +*) + echo "invalid mode: $mode" + exit 1 +esac + +printf '%s %s\t%s\n' "$mode" "$hash" "$name" diff --git a/scripts/probe.rc b/scripts/probe.rc deleted file mode 100644 index aba1099d..00000000 --- a/scripts/probe.rc +++ /dev/null @@ -1,7 +0,0 @@ -flag e + - -var=$1 -shift -if($* >[2]/dev/null) - echo '#define '$var' 1' -status=() diff --git a/scripts/probe.sh b/scripts/probe.sh new file mode 100644 index 00000000..70867cdb --- /dev/null +++ b/scripts/probe.sh @@ -0,0 +1,7 @@ +set -e + +var=$1 +shift +if "$@" 2>/dev/null ; then + echo "#define $var 1" +fi diff --git a/scripts/tree.rc b/scripts/tree.rc deleted file mode 100644 index c14e87e0..00000000 --- a/scripts/tree.rc +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/rc - -flag e + - -repo=$1 -tag=$2 -index=$3 -out=$4 -ifs=' -' - -fn checkstatus {} - -GIT_INDEX_FILE=`{pwd}^/$out.index { - checkstatus - git -C $repo read-tree --empty - git -C $repo update-index --index-info <$index - tree=`{git -C $repo write-tree} ; checkstatus - rm $out.index -} -git -C $repo update-ref refs/tags/$tag $tree - -if([ -e $out ]) { - oldtree=`{cat $out} ; checkstatus - if(~ $tree $oldtree) - exit 0 -} - -echo $tree >$out.tmp -mv $out.tmp $out diff --git a/scripts/tree.sh b/scripts/tree.sh new file mode 100644 index 00000000..15ae6991 --- /dev/null +++ b/scripts/tree.sh @@ -0,0 +1,19 @@ +set -e + +repo=$1 +tag=$2 +index=$3 +out=$4 + +export GIT_INDEX_FILE="$PWD/$out.index" +git -C "$repo" read-tree --empty +git -C "$repo" update-index --index-info <"$index" +tree=$(git -C "$repo" write-tree) +git -C "$repo" update-ref "refs/tags/$tag" "$tree" + +printf '%s\n' "$tree" >"$out.tmp" +if cmp -s "$out" "$out.tmp" ; then + rm "$out.tmp" +else + mv "$out.tmp" "$out" +fi |
