LINUX.ORG.RU

Есть ли скрипты для автоматической сборки пакетов

 ,


0

1

Надоело собирать руками сотню пакетов и решил написать общий скрипт для этого. Использую скритпы из 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



Последнее исправление: peter_t (всего исправлений: 4)

Когда-то несколько товарищей тоже начали писать такие вот скрипты. Так появилась Gentoo.

P. S. Я тоже со Слаки перешел.

Kroz ★★★★★
()

portage и makepkg изобрел ты, юный падаван.

vurdalak ★★★★★
()

Может кому пригодится

А если патчик наложить надо? Или собрать в два прохода: сначала статик, потом динамик (привет zlib)? Да куча нештатных ситуаций при сборке. Поэтому нужен более «умный» скрипт.

anonymous
()
Ответ на: комментарий от anonymous

Да это для общего сборки по умолчанию, для индивидуальной сборки пока думаю как сделать. Но скрит мне очень нравится, то что делал раньше занимало много времени, сейчас за 1.5 часа. Не нравится что slackbuild собирает в 1 поток (см. make -j ). боятся больше использовать из-за каких либо ошибок.

peter_t
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.