Надоело собирать руками сотню пакетов и решил написать общий скрипт для этого. Использую скритпы из slackbuilds и этот свой. Подскажите какие есть варианты/аналоги. Использую для Porteus, Slax, Slackware.
Может кому пригодится. Пример: buildpkg dunelegacy-0.96.2-src.tar.bz2
#!/bin/sh
if [ $# -ne 1 ]; then
echo "build package from source"
echo "usage: `basename $0` filename.{tar.gz|tar.bz2|tar.xz}"
exit 1
fi
CWD=$PWD
TMP=/tmp/`uuidgen`
PKG=`realpath $1`
PREFIX=/usr
case "$( uname -m )" in
x86_64) LIBDIR=$PREFIX/lib64 ;;
i?86) LIBDIR=$PREFIX/lib ;;
*) LIBDIR=$PREFIX/lib ;;
esac
mkdir $TMP
cd $TMP
tar -xvf $PKG || exit 1
PKGNAME=`ls $TMP`
cd $PKGNAME
[ -f CMakeLists.txt ] && cmake . -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DLIB_SUFFIX:PATH=$LIBDIR
#-DCMAKE_C_FLAGS:STRING="" \
#-DCMAKE_CXX_FLAGS:STRING="" \
#-DMAN_INSTALL_DIR=/usr/man \
#-DCMAKE_BUILD_TYPE=Release ..
[ -f configure ] && ./configure --prefix=$PREFIX --libdir=$LIBDIR
make -j4 || exit 1
mkdir $TMP/root
make install DESTDIR=$TMP/root # make install-strip DESTDIR=$TMP/root
cd $TMP/root
# strip binaries:
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
cd $TMP/root
tar cf - . | gzip > /tmp/$PKGNAME.tgz
echo ----------------------------------------------------------
echo Package /tmp/$PKGNAME.tgz built
rm -rf $TMP