Improve rebuild logic

This commit is contained in:
Jeremy Soller 2017-05-12 20:26:09 -06:00
parent b3ad568eda
commit a48475e408
2 changed files with 35 additions and 19 deletions

22
cook.sh
View File

@ -14,6 +14,8 @@ function usage {
echo " clean" >&2
echo " fetch" >&2
echo " unfetch" >&2
echo " prepare" >&2
echo " unprepare" >&2
echo " publish" >&2
echo " unpublish" >&2
echo " stage" >&2
@ -32,7 +34,7 @@ function op {
case "$2" in
dist)
op $1 fetch
op $1 prepare
op $1 update
op $1 build
op $1 stage
@ -41,7 +43,7 @@ function op {
distclean)
op $1 untar
op $1 unstage
op $1 unfetch
op $1 unprepare
;;
fetch)
if [ -n "$TAR" ]
@ -56,9 +58,6 @@ function op {
mkdir source
tar xvf source.tar -C source --strip-components 1
fi
rm -rf build
cp -r source build
elif [ -n "$GIT" ]
then
if [ ! -d source ]
@ -71,19 +70,22 @@ function op {
git submodule sync
git submodule update --init --recursive
popd > /dev/null
rm -rf build
cp -r source build
fi
;;
unfetch)
rm -rfv build source
rm -rfv source
if [ -n "$TAR" ]
then
rm -f source.tar
fi
;;
prepare)
rm -rf build
cp -r source build
;;
unprepare)
rm -rf build
;;
version)
pushd build > /dev/null
skip="0"

32
repo.sh
View File

@ -17,19 +17,33 @@ do
./cook.sh "$recipe" fetch
fi
if [ ! -f "recipes/$recipe/stage.tar" ]
if [ ! -d "recipes/$recipe/build" ]
then
echo -e "\033[01;38;5;215mrepo - building $recipe\033[0m" >&2
./cook.sh $recipe update build stage tar
echo -e "\033[01;38;5;155mrepo - preparing $recipe\033[0m" >&2
./cook.sh "$recipe" prepare
else
TIME_SOURCE="$(find recipes/$recipe/source -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)"
TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)"
if [ "$TIME_SOURCE" -ge "$TIME_STAGE" ]
TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)"
if [ "$TIME_SOURCE" -gt "$TIME_BUILD" ]
then
echo -e "\033[01;38;5;215mrepo - rebuilding $recipe\033[0m" >&2
echo -e "\033[01;38;5;155mrepo - repreparing $recipe\033[0m" >&2
./cook.sh "$recipe" unprepare prepare
fi
fi
if [ ! -f "recipes/$recipe/stage.tar" ]
then
echo -e "\033[01;38;5;155mrepo - building $recipe\033[0m" >&2
./cook.sh "$recipe" update build stage tar
else
TIME_BUILD="$(find recipes/$recipe/build -type f -not -path '*/.git*' -printf "%Ts\n" | sort -nr | head -n 1)"
TIME_STAGE="$(stat -c "%Y" recipes/$recipe/stage.tar)"
if [ "$TIME_BUILD" -gt "$TIME_STAGE" ]
then
echo -e "\033[01;38;5;155mrepo - rebuilding $recipe\033[0m" >&2
./cook.sh "$recipe" untar unstage update build stage tar
else
echo -e "\033[01;38;5;215mrepo - $recipe up to date\033[0m" >&2
echo -e "\033[01;38;5;155mrepo - $recipe up to date\033[0m" >&2
fi
fi
done
@ -38,12 +52,12 @@ for recipe in $recipes
do
if [ "recipes/$recipe/stage.tar" -nt "$REPO/$recipe.tar" ]
then
echo -e "\033[01;38;5;215mrepo - publishing $recipe\033[0m" >&2
echo -e "\033[01;38;5;155mrepo - publishing $recipe\033[0m" >&2
./cook.sh $recipe publish
fi
done
echo -e "\033[01;38;5;215mrepo - generating repo.toml\033[0m" >&2
echo -e "\033[01;38;5;155mrepo - generating repo.toml\033[0m" >&2
echo "[packages]" > "$REPO/repo.toml"
for toml in "$REPO/"*".toml"