redox/cook.sh
2016-12-28 19:32:39 -07:00

106 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
export RUST_TARGET_PATH="$PWD/targets"
export CARGOFLAGS=
export CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE"
TARGET=x86_64-unknown-redox
ROOT="$PWD"
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
cp -r "$ROOT/Xargo.toml" "$ROOT/libc-artifacts" .
xargo build --target "$TARGET" --release $CARGOFLAGS
popd > /dev/null
;;
clean)
pushd build > /dev/null
xargo clean
popd > /dev/null
;;
stage)
mkdir -p stage
pushd build > /dev/null
if [ "$(type -t recipe_stage)" = "function" ]
then
recipe_stage ../stage
fi
#TODO xargo install --root "../stage" $CARGOFLAGS
bins="$(find target/x86_64-unknown-redox/release/ -maxdepth 1 -type f ! -name '*.*')"
if [ -n "$bins" ]
then
mkdir -p ../stage/bin
for bin in $bins
do
cp -v "$bin" "../stage/bin/$(basename $bin)"
strip -v "../stage/bin/$(basename $bin)"
done
fi
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