redox/cook.sh
2016-10-31 15:21:06 -06:00

91 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
export RUST_TARGET_PATH="$PWD/targets"
export RUSTFLAGS="--cfg redox"
export CARGOFLAGS=
TARGET=x86_64-unknown-redox
REPO="$PWD/repo/$TARGET"
set -e
function op {
echo "$1" "$2"
case "$2" in
fetch)
if [ ! -d build ]
then
git clone --recursive "$GIT" build
fi
pushd build > /dev/null
git pull
git submodule sync
git submodule update --init --recursive
popd > /dev/null
;;
unfetch)
rm -rfv build
;;
update)
pushd build > /dev/null
xargo update
popd > /dev/null
;;
build)
pushd build > /dev/null
xargo build --target "$TARGET" $CARGOFLAGS
popd > /dev/null
;;
clean)
pushd build > /dev/null
xargo clean
popd > /dev/null
;;
stage)
mkdir -p stage/bin
pushd build > /dev/null
#TODO xargo install --root "../stage" $CARGOFLAGS
cp -v $(find target/x86_64-unknown-redox/debug/ -maxdepth 1 -type f ! -name "*.*") ../stage/bin
popd > /dev/null
;;
unstage)
rm -rfv stage
;;
tar)
pushd stage > /dev/null
tar cfv ../stage.tar .
popd > /dev/null
;;
untar)
rm -rfv stage.tar
;;
publish)
mkdir -p "$REPO"
cp -v stage.tar "$REPO/$1.tar"
;;
unpublish)
rm -rfv "$REPO/$1.tar"
;;
*)
echo "cook.sh $1 {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}"
;;
esac
}
if [ -n "$1" ]
then
if [ -d "recipes/$1" ]
then
cd "recipes/$1"
source recipe.sh
for arg in "${@:2}"
do
op "$1" "$arg"
done
else
echo "cook.sh: recipe '$1' not found"
fi
else
echo "cook.sh {package} {build|clean|fetch|unfetch|publish|unpublish|stage|unstage|tar|untar|update}"
fi