собираю lfs, задолбался вводить однообразные команды, написал скрипт:
#!/bin/bash
DISTDIR=$LFS/usr/src/distros/distfiles
SRCDIR=$LFS/usr/src
WORKDIR=$LFS/usr/src/build
die()
{
echo $@
exit -1
}
usage()
{
echo "usage: ebuild.sh <package> <action>"
echo "action: untar|config|compile|install"
}
untar() {
local COMPRESSOR
case $PF in
*.tar.gz | *.tgz) COMPRESSOR=gzip ;;
*.tar.bz2 | *.tbz2) COMPRESSOR=bzip2 ;;
*.tar.xz | *.txz) COMPRESSOR=xz ;;
*) die unknown archive ;;
esac
($COMPRESSOR -dc $PD || die "decompress failed") | (tar -xC $SRCDIR || die "tar failed")
}
post_untar()
{
S="$(ls -d $SRCDIR/$PN* | tail -1)"
if [ -z "$S" ] ; then
die no such source directory: $PN
fi
PS=$WORKDIR/$PN
mkdir -p $PS
}
config()
{
post_untar
(
cd $PS
$S/configure $CONFIGOPTS
) || die configure failed
}
compile()
{
post_untar
(
cd $PS
make $MAKEOPTS $@
) || die make failed
}
check()
{
compile check
}
inst()
{
compile install
}
PN=$1
PD="$(ls $DISTDIR/$PN* | tail -1)"
if [ -z "$PD" ] ; then
die no such package: $PN
fi
PF="$(basename $PD)"
PS=""
S=""
case $2 in
untar) untar; post_untar; ;;
config) config;;
compile) compile;;
check) check;;
install) inst;;
pre_install)
untar;
config;
compile; ;;
all)
untar;
config;
compile;
check;
inst; ;;
*) usage; exit -1;;
esac
мне одному кажется, что я начал изобретать велосипед? :o


