2019-09-28 00:17:56 +08:00
|
|
|
#!/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
|
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
CWD=$PWD
|
2018-12-01 00:12:45 +08:00
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
source $CWD/config
|
2018-12-02 08:19:43 +08:00
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
PATH=/tools/bin:/bin:/usr/bin
|
2018-12-02 08:19:43 +08:00
|
|
|
|
2019-09-28 00:17:56 +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
|
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
if [ ! -w $LFS ]; then
|
|
|
|
sudo chown -Rv $USER:$USER $LFS
|
|
|
|
fi
|
2018-12-01 00:12:45 +08:00
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
if [ ! -L /tools ] || [ $(realpath /tools) != $LFS/tools ]; then
|
|
|
|
sudo ln -svf $LFS/tools /
|
|
|
|
fi
|
2018-12-01 00:12:45 +08:00
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
main $@
|
2018-12-01 00:12:45 +08:00
|
|
|
|
2019-09-28 00:17:56 +08:00
|
|
|
exit 0
|