#!/bin/sh # *********************************************************************** # Да не се редактират: TMP="/tmp/packagesbuild/" CWD=`pwd` # *********************************************************************** # Променливи за редактиране: # Името на пакета: NAME=wput # Версия на архива с изходния код: VERSION=0.6 VERSION_PKG=$VERSION # Версия на кръпката, която ще се приложи върху изходния код: VERSION_patch= # Името на архива с изходния код: NAME_src=${NAME} #NAME_src=${NAME}-src # Името на поддиректорията, която се получава при разархивиране: NAME_extr_subdir=$NAME_src #NAME_extr_subdir=${NAME}-src #NAME_extr_subdir=някакво_съвсем_различно_име_на_директория #Разширението на архива с изходния код: EXT="tgz" #EXT="tar.gz" #EXT="tgz" ARCH=i486 BUILD=vs0 # Къде ще се инсталира: #vslive_PREFIX="/usr" # програмата не е от КДЕ vslive_PREFIX=`kde-config --prefix` # програмата е от КДЕ # Пътят на директорията, която се получава при разархивиране: TMP_extr_dir=$TMP/$NAME_extr_subdir #TMP_extr_dir=$TMP/$NAME_extr_subdir-$VERSION #TMP_extr_dir=$TMP/$NAME_extr_subdir-$VERSION.orig # Пътят на файла с изходния код (в някои случаи името съдържа .orig след версията) FILE_src=$CWD/${NAME_src}-${VERSION}.${EXT} #FILE_src=$CWD/${NAME_src}-${VERSION}.orig.${EXT} #FILE_src=$CWD/${NAME_src}_${VERSION}.orig.${EXT} # Временната директория, където ще се инсталира програмата: PKG=$TMP/package-$NAME if [ "$VERSION_patch" = "" ]; then PKG_filename=$NAME-$VERSION_PKG-$ARCH-$BUILD.tgz docs_dir=$PKG/usr/doc/$NAME-$VERSION_PKG else #PKG_filename=$NAME-${VERSION}.${VERSION_patch}-$ARCH-$BUILD.tgz #docs_dir=$PKG/usr/doc/$NAME-$VERSION.${VERSION_patch} PKG_filename=$NAME-${VERSION_PKG}.${VERSION_patch}-$ARCH-$BUILD.tgz docs_dir=$PKG/usr/doc/$NAME-$VERSION_PKG.${VERSION_patch} fi # *********************************************************************** # Подпрограми: print_msg(){ echo "|*****************************************************************" echo "| $1" echo "|*****************************************************************" } # *********************************************************************** if [ ! -d $TMP ]; then mkdir -p $TMP fi if [ ! -d $PKG ]; then mkdir -p $PKG fi print_msg "Започна създаването на пакета $NAME-$VERSION-$ARCH-$BUILD.tgz" cd $TMP if [ ! "$?" = "0" ]; then print_msg "Грешка при влизане в директорията $TMP." exit 1 fi #tar xzvf $CWD/$NAME-$VERSION.tar.gz #tar xzvf $CWD/$NAME-src-$VERSION.tar.gz #tar xjvf $CWD/$NAME-$VERSION.tar.bz2 print_msg "Разархивиране..." if [ "$EXT" = "tar.bz2" ]; then tar xjvf $FILE_src if [ ! "$?" = "0" ]; then print_msg "Грешка при разархивиране на архива $FILE_src." exit 1 fi elif [ "$EXT" = "tar.gz" ]; then tar xzvf $FILE_src if [ ! "$?" = "0" ]; then print_msg "Грешка при разархивиране на архива $FILE_src." exit 1 fi elif [ "$EXT" = "tgz" ]; then tar xzvf $FILE_src if [ ! "$?" = "0" ]; then print_msg "Грешка при разархивиране на архива $FILE_src." exit 1 fi else print_msg "Грешка: Неизвестен архив." exit 1 fi cd $TMP_extr_dir if [ ! "$?" = "0" ]; then print_msg "Грешка при влизане в директорията $TMP_extr_dir" exit 1 fi if [ "$VERSION_patch" != "" ]; then print_msg "Закърпване..." gzip -cd $CWD/${NAME_src}_${VERSION}-${VERSION_patch}.diff.gz | patch -p1 if [ ! "$?" = "0" ]; then print_msg "Грешка при прилагане на кръпката." exit 1 fi fi print_msg "Изпълнение на ./configure..." CFLAGS="-O2 -march=i486 -mtune=i686" ./configure --prefix="$vslive_PREFIX" #CFLAGS="-O2 -march=i486 -mcpu=i686" ./configure --prefix=/usr \ # --localstatedir=/var/lib \ # $ARCH-slackware-linux if [ ! "$?" = "0" ]; then print_msg "Грешка." exit 1 fi print_msg "Изпълнение на make..." make if [ ! "$?" = "0" ]; then print_msg "Грешка." exit 1 fi print_msg "Допълнителни неща..." # включване на кратка документация (лиценза, README-то и др.) mkdir -p $docs_dir cp Cop* ANNOUNCE* HACKING* *MAINTAINERS* DEV* FAQ* THANKS* ABOUT-NLS* AUTHORS* VERS* UPGRADE* \ KNOWNBUGS* PERMISSIONS* \ BUGS* USING* ChangeLog* CHANGELOG* COPYING* INSTALL* README* TODO* LICENSE* CREDIT* \ $docs_dir cp $CWD/wput.SlackBuild $docs_dir mkdir -p $PKG/usr/bin/ mkdir -p $PKG/usr/share/man/man1/ install -m 755 wput $PKG/usr/bin/ install -m 644 doc/wput.1.gz $PKG/usr/share/man/man1/ mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc ( cd $PKG 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 ) #gzip `find $PKG/usr/man/ -type f 2>/dev/null | grep -v ".gz$"` # Горния ред, но написан по-красиво: find $PKG/usr/man/ -type f ! -name '*.gz' -exec gzip {} \; mv $PKG/usr/info/dir $PKG/usr/info/dir-$NAME cd $PKG # Примерно включване на икона в /usr/share/pixmaps: #mkdir -p $PKG/usr/share/pixmaps #cp $CWD/*.png $PKG/usr/share/pixmaps/ # Примерно включване на елемент от менюто на КДЕ: #mkdir -p $PKG/opt/kde/share/applnk/Multimedia/ #cp $CWD/*.desktop $PKG/opt/kde/share/applnk/Multimedia/ # Примерно включване на елемент от меню: #mkdir -p $PKG/usr/share/applications #cp $CWD/*.desktop $PKG/usr/share/applications/ # Примерно копиране на превод (КДЕ): #mkdir -p $PKG/opt/kde/share/locale/bg/LC_MESSAGES/ #cp $CWD/*.mo $PKG/opt/kde/share/locale/bg/LC_MESSAGES/ # Примерно копиране на превод (QT): #mkdir -p $PKG/usr/share/$NAME/locale/ #cp $CWD/*.ts $PKG/usr/share/$NAME/locale/ # Примерно копиране на превод: #mkdir -p $PKG/usr/share/locale/bg/LC_MESSAGES/ #cp $CWD/*.mo $PKG/usr/share/locale/bg/LC_MESSAGES/ mkdir -p $PKG/install cp $CWD/doinst.sh $PKG/install chmod 644 $PKG/install/doinst.sh chown -R root.root $PKG/usr chown -R root.root $PKG/opt #chown -R root.root $PKG/usr/man #chown -R root.root $PKG/usr/share chown root.bin $PKG/bin/* chown root.bin $PKG/sbin/* chown root.bin $PKG/usr/bin/* chown root.bin $PKG/usr/sbin/* chmod 755 $PKG/bin chmod 755 $PKG/sbin chmod 755 $PKG/lib chmod -R 644 $docs_dir/* #chmod 755 `find $PKG/usr -type d 2>/dev/null` # Горния ред, но написан по-красиво: find $PKG/usr -type d -exec chmod 755 {} \; #chown -R root.root $docs_dir #chmod 755 `find $PKG/usr/doc/ -type d 2>/dev/null` makepkg -l y -c n $TMP/$PKG_filename if [ ! "$?" = "0" ]; then print_msg "Грешка при изпълнение на програмата makepkg." exit 1 fi if [ "$1" = "--cleanup" ]; then rm -rf $TMP_extr_dir rm -rf $PKG fi