eth0s/01-toolchain

127 lines
2.2 KiB
Text
Raw Normal View History

#!/bin/bash
fetch() {
tarballname=$(echo $1 | rev | cut -d / -f 1 | rev)
WGETCMD="wget --passive-ftp --tries=3 --waitretry=3 --output-document=$2/$tarballname.partial"
WGETRESUME="-c"
if [ -f $2/$tarballname ]; then
echo "Source file $tarballname found."
return 0
else
if [ -f $2/$tarballname.partial ]; then
echo "Resuming $1"
$WGETCMD $WGETRESUME $1
else
mkdir -p "$2"
echo "Downloading $1"
$WGETCMD $1
fi
fi
if [ $? = 0 ]; then
mv $2/$tarballname.partial $2/$tarballname
fi
}
fetch_src() {
if [ "${#source[@]}" -gt 0 ]; then
for s in ${source[@]}; do
fetch $s $SRCDIR
done
fi
}
extract_src() {
[ "$name" ] && rm -fr $WORKDIR/$name
mkdir -p $WORKDIR/$name
if [ "${#source[@]}" -gt 0 ]; then
for s in ${source[@]}; do
filename=$(basename $s)
case $filename in
*.tar|*.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm)
tar xvf $SRCDIR/$filename -C $WORKDIR/$name || exit 1;;
*)
cp -v $SRCDIR/$filename $WORKDIR/$name || exit 1;;
esac
done
fi
}
build_src() {
cd $WORKDIR/$name
if [ "$(type -t build)" = function ]; then
(set -e -x; build)
fi
if [ $? -ne 0 ]; then
echo "!!! build $name-$version failed !!!"
exit 1
else
echo "--- build $name-$version success ---"
fi
[ "$name" ] && rm -fr $WORKDIR/$name
register
}
register() {
echo $name-$version > $LFS/tools/$(basename $script)
}
checkdone() {
if [ -e $LFS/tools/$(basename $script) ]; then
echo "*** skip $(basename $script) ***"
return 1
fi
return 0
}
build_stage1() {
cd $CWD
source $1 || exit 1
fetch_src
extract_src
build_src
unset source name version build
}
main() {
for script in $TCDIR/[0-9][0-9]-*; do
checkdone || continue
build_stage1 $script
done
sudo chown -Rv 0:0 $LFS
}
2018-12-01 00:12:45 +08:00
2018-12-02 08:19:43 +08:00
if [ $(id -u) = 0 ]; then
echo "$0 script need to run as regular user!"
exit 1
fi
CWD=$PWD
2018-12-01 00:12:45 +08:00
source $CWD/config
2018-12-02 08:19:43 +08:00
PATH=/tools/bin:/bin:/usr/bin
2018-12-02 08:19:43 +08:00
export LC_ALL=C PATH MAKEFLAGS LFS LFS_TGT
mkdir -p $TCDIR $SRCDIR $WORKDIR
if [ ! -d $LFS/tools ]; then
sudo mkdir -pv $LFS/tools
2018-12-02 08:19:43 +08:00
fi
if [ ! -w $LFS ]; then
sudo chown -Rv $USER:$USER $LFS
fi
2018-12-01 00:12:45 +08:00
if [ ! -L /tools ] || [ $(realpath /tools) != $LFS/tools ]; then
sudo ln -svf $LFS/tools /
fi
2018-12-01 00:12:45 +08:00
main $@
2018-12-01 00:12:45 +08:00
exit 0