#!/usr/bin/bash # This script assumes it will be launched within "/NAME/VERSION/src" dir. # With all sources in "src" Your Vector Linux .tlz package, slack-desc, # and slack-required will be found in "VERSION" dir. The extraction and # build will be in a temp dir created in "NAME" dir, and then removed on exit. # Comment out second to last line to keep this dir intact. # # This Template was compiled from the contributions of many users of the Vector # Linux forum at http://forum.vectorlinux.com and from tidbits collected # from all over the internet. # # Generated by sbbuilder-0.4.12.3, written by Rodrigo Bistolfi # (rbistolfi) and Raimon Grau Cuscó (Kidd) for VectorLinux. # # Please put your name below if you add some original scripting lines. # AUTHORS = NAME="samba" #Enter package Name! VERSION=${VERSION:-"3.6.1"} #Enter package Version! VER=$(echo $VERSION|sed 's/-/_/') #this fixes - in version VL_PACKAGER=${VL_PACKAGER:-"hata_ph"} #Enter your Name! LINK=${LINK:-"http://www.samba.org/samba/ftp/stable/$NAME-$VERSION.tar.gz"} #Enter URL for package here! #SYSTEM VARIABLES #---------------------------------------------------------------------------- BUILDNUM=${BUILDNUM:-"1"} VL_VERSION=${VL_VERSION:-"$(ls /var/log/packages/|grep vlconfig2|cut -d "-" -f4|cut -c 2-5)"} BUILD=${BUILD:-"$BUILDNUM""$VL_VERSION"} ARCH=${ARCH:-"$(uname -m)"} CONFIG_OPTIONS=${CONFIG_OPTIONS:-""} LDFLAG_OPTIONS=${LDFLAG_OPTIONS:-""} ADDRB=${ADDRB:-""} #Add deps that need to be added to the slack-required file here EXRB=${EXRB:-""} #Add deps that need to be excluded from the slack-required file here #---------------------------------------------------------------------------- #SETUP PACKAGING ENVIRONMENT #-------------------------------------------- CWD=$(pwd) cd ../ RELEASEDIR=$(pwd) cd $CWD mkdir -p $RELEASEDIR/tmp TMP=$RELEASEDIR/tmp PKG=$TMP/package-$NAME #-------------------------------------------- if [ $UID != 0 ]; then echo "You are not authorized to run this script. Please login as root" exit 1 fi if [ ! -x /usr/bin/requiredbuilder ]; then echo "Requiredbuilder not installed, or not executable." exit 1 fi if [ $VL_PACKAGER = "YOURNAME" ]; then echo 'Who are you? Please edit VL_PACKAGER=${VL_PACKAGER:-YOURNAME} in this script. Change the word "YOURNAME" to your VectorLinux packager name. You may also export VL_PACKAGER, or call this script with VL_PACKAGER="YOUR NAME HERE"' exit 1 fi #CFLAGS SETUP #-------------------------------------------- if [[ "$ARCH" = i?86 ]]; then ARCH=i586 SLKCFLAGS="-O2 -march=i586 -mtune=i686" CONFIGURE_TRIPLET="i486-slackware-linux" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fpic" CONFIGURE_TRIPLET="x86_64-slackware-linux" LIBDIRSUFFIX="64" elif [ "$ARCH" = "powerpc" ]; then SLKCFLAGS="-O2" CONFIGURE_TRIPLET="powerpc-vlocity-linux" LIBDIRSUFFIX="" fi export CFLAGS="$SLKCFLAGS $CFLAG_OPTIONS" export CXXFLAGS=$CFLAGS export LDFLAGS="$LDFLAGS $LDFLAG_OPTIONS" #-------------------------------------------- #GET THE SOURCE #-------------------------------------------- for SRC in $(echo $LINK);do if [ ! -f $CWD/$(basename $SRC) ] then wget -c $SRC fi done #-------------------------------------------- rm -rf $PKG mkdir -p $PKG cd $TMP rm -rf $NAME-$VERSION #EXTRACT SOURCES #----------------------------------------------------- echo "Extracting source..." tar xvf $CWD/$NAME-$VERSION.tar.* || exit 1 #----------------------------------------------------- cd $TMP/$NAME-$VERSION # Put any Patches into a patches folder in the src dir #----------------------------------------------------- #for i in $CWD/patches/*;do # patch -p1 <$i #done #----------------------------------------------------- if [ ! -d source3/lib/cmdline ]; then ( cd source3/lib mkdir cmdline cd cmdline ln -sf ../../../source3/include/popt_common.h . ) fi #SET PERMISSIONS #----------------------------------------- echo "Setting permissions..." chown -R root:root . find . -perm 664 -exec chmod 644 {} \; find . -perm 777 -exec chmod 755 {} \; find . -perm 2777 -exec chmod 755 {} \; find . -perm 775 -exec chmod 755 {} \; find . -perm 2755 -exec chmod 755 {} \; find . -perm 774 -exec chmod 644 {} \; find . -perm 666 -exec chmod 644 {} \; find . -perm 600 -exec chmod 644 {} \; find . -perm 444 -exec chmod 644 {} \; find . -perm 400 -exec chmod 644 {} \; find . -perm 440 -exec chmod 644 {} \; find . -perm 511 -exec chmod 755 {} \; find . -perm 711 -exec chmod 755 {} \; find . -perm 555 -exec chmod 755 {} \; #----------------------------------------- #CONFIGURE & MAKE #---------------------------------------------------------------------- # If you are building a KDE-related app, then change the following # arguments in the script below: # --prefix=$(kde-config -prefix) \ # --sysconfdir=/etc/kde \ # # Making these changes will ensure that your package will build in the # correct path and that it will work seamlessly within the KDE environment. # #----------------------------------------------------------------------- echo "Configuring source..." cd source3 ./configure --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --infodir=/usr/info \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/man \ --with-configdir=/etc/samba \ --with-piddir=/var/run \ --with-privatedir=/etc/samba/private \ --localstatedir=/var \ --with-lockdir=/var/cache/samba \ --with-swatdir=/usr/share/swat \ --with-logfilebase=/var/log/samba \ --enable-cups \ --enable-external-libtalloc=no \ --enable-static=no \ --enable-shared=yes \ --with-acl-support=yes \ --with-automount \ --with-cifsmount \ --with-cifsumount \ --with-quotas \ --with-syslog \ --with-utmp \ --with-libsmbclient \ --with-winbind \ --with-ldap \ --disable-debug \ --program-prefix="" \ --program-suffix="" \ --build=$CONFIGURE_TRIPLET \ $CONFIG_OPTIONS || exit 1 make || exit 1 make install-everything DESTDIR=$PKG || exit # Install libnss_win* libraries: mkdir -p $PKG/lib${LIBDIRSUFFIX} cp -a ../nsswitch/libnss_winbind.so $PKG/lib${LIBDIRSUFFIX}/libnss_winbind.so.2 cp -a ../nsswitch/libnss_wins.so $PKG/lib${LIBDIRSUFFIX}/libnss_wins.so.2 ( cd $PKG/lib${LIBDIRSUFFIX} ln -sf libnss_winbind.so.2 libnss_winbind.so ln -sf libnss_wins.so.2 libnss_wins.so ) # Install a pkgconfig file for libtalloc: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig if [ ! -r $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/talloc.pc ]; then cat $CWD/talloc.pc | sed -e "s/\/lib/\/lib${LIBDIRSUFFIX}/" > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/talloc.pc fi cd .. ####################################################################### #Miscellenious tweaks and things outside a normal ./configure go here # ####################################################################### mkdir -p \ $PKG/usr/doc/samba-$VERSION \ $PKG/var/spool/samba \ $PKG/var/log/samba \ $PKG/etc/samba/private \ $PKG/var/cache/samba chmod 700 $PKG/etc/samba/private chmod 1777 $PKG/var/spool/samba # Add some (u)mount links: mkdir -p $PKG/sbin ( cd $PKG/sbin # SMBFS is obsolete in the kernel now -- use mount.cifs #rm -f mount.smbfs ; ln -sf /usr/bin/smbmount mount.smbfs # Add a wrapper script from Debian that's included in the upstream Samba # sources to help out people (like me ;-) who don't read every speck of # documentation: cat $TMP/samba-$VERSION/examples/scripts/mount/mount.smbfs > mount.smbfs chmod 755 $PKG/sbin/mount.smbfs # I suppose this wouldn't be the worst idea in the world, either: ( cd $PKG/usr/bin ; ln -sf /sbin/mount.smbfs smbmount ) rm -f mount.cifs ; ln -sf /usr/sbin/mount.cifs mount.cifs # smbumount was giving me problems so it seems wise to play it safe #rm -f umount.smbfs ; ln -sf /usr/bin/smbumount umount.smbfs #rm -f umount.cifs ; ln -sf /usr/sbin/umount.cifs umount.cifs ) # Add a sample config file: cat $CWD/smb.conf.default > $PKG/etc/samba/smb.conf-sample if [ ! -r $PKG/usr/bin/smbget ]; then rm -f $PKG/usr/share/man/man1/smbget.1 rm -f $PKG/usr/share/swat/help/smbget.1.html fi # We'll add rc.samba to the init directory, but chmod 644 so that it doesn't # start by default: mkdir -p $PKG/etc/rc.d cat $CWD/rc.samba > $PKG/etc/rc.d/rc.samba.new chmod 644 $PKG/etc/rc.d/rc.samba.new mkdir -p $PKG/usr/doc/$NAME-$VERSION cp -a ANNOUNCE* AUTHORS* BUGS* COPYING* ChangeLog* CHANGELOG* Credits* DEVELOPERS \ LICENSE* MANIFEST PROVENANCE README* TODO* Exception_to_GPL_for_Qt.txt \ $PKG/usr/doc/$NAME-$VERSION cat $CWD/$NAME.SlackBuild > $PKG/usr/doc/$NAME-$VERSION/$NAME.SlackBuild #---------------------------------------------------------------------- if [ -d $PKG/usr/share/man ] ; then mkdir -p $PKG/usr/man mv $PKG/usr/share/man/* $PKG/usr/man rm -rf $PKG/usr/share/man fi find $PKG/usr/man -type f -exec gzip -9 {} \; if [ -d $PKG/usr/share/info ] ; then mkdir -p $PKG/usr/info mv $PKG/usr/share/info/* $PKG/usr/info rm -rf $PKG/usr/share/info fi find $PKG/usr/info -type f -exec gzip -9 {} \; mkdir -p $PKG/install cp $CWD/doinst.sh $PKG/install if [ -d $PKG/usr/info ] ; then cat >> $PKG/install/doinst.sh << EOF CWD=\$(pwd) cd usr/info if [ -f dir ];then rm dir fi if [ -f dir.gz ];then rm dir.gz fi for i in *.info.gz;do install-info \$i dir done cd \$CWD EOF fi # Add schemas install to the doinst.sh if schemas are found. [ -d $PKG/etc/gconf/schemas ] && { # Make sure we have gconftool installed echo "if [ -x usr/bin/gconftool-2 ]; then" >> $PKG/install/doinst.sh ( cd $PKG/etc/gconf/schemas for schema in *.schemas; do # Install schemas echo "GCONF_CONFIG_SOURCE=\"xml::etc/gconf/gconf.xml.defaults\" \ usr/bin/gconftool-2 --makefile-install-rule \ etc/gconf/schemas/${schema} >/dev/null 2>&1" \ >> $PKG/install/doinst.sh done; ) # Finish off gconf block echo "fi" >> $PKG/install/doinst.sh } mkdir -p $PKG/install cat >> $PKG/install/doinst.sh << EOF # update rarian database if [ -x usr/bin/rarian-sk-update ]; then usr/bin/rarian-sk-update 1> /dev/null 2> /dev/null fi # update mime database if [ -x usr/bin/update-mime-database ]; then usr/bin/update-mime-database usr/share/mime 1> /dev/null 2> /dev/null fi # update desktop entries if [ -x usr/bin/update-desktop-database ]; then usr/bin/update-desktop-database 1> /dev/null 2> /dev/null fi # update hicolor icons if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then rm -f usr/share/icons/hicolor/icon-theme.cache fi usr/bin/gtk-update-icon-cache -f -q usr/share/icons/hicolor 1>/dev/null 2>/dev/null if [ -x /usr/bin/glib-compile-schemas ]; then /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas/ >/dev/null 2>&1 fi # Restart gconfd-2 if running to reload new gconf settings if ps acx | grep -q gconfd-2 ; then killall -HUP gconfd-2 ; fi EOF #if there is a slack-desc in src dir use it if test -f $CWD/slack-desc; then cp $CWD/slack-desc $RELEASEDIR/slack-desc else # This creates the white space in front of "handy-ruler" in slack-desc below. LENGTH=$(expr length "$NAME") SPACES=0 SHIM="" until [ "$SPACES" = "$LENGTH" ]; do SHIM="$SHIM " let SPACES=$SPACES+1 done # Fill in the package summary between the () below. # Then package the description, License, Author and Website. # There may be no more then 11 $NAME: lines in a valid slack-desc. cat > $RELEASEDIR/slack-desc << EOF # HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' # on the right side marks the last column you can put a character in. You must # make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':'. $SHIM|-----handy-ruler------------------------------------------------------| $NAME: $NAME (SMB/CIFS file and print server) $NAME: $NAME: Samba is an SMB/CIFS file and print server for SMB and CIFS clients. $NAME: It allows you to make file space or printers on a Samba host $NAME: available to SMB/CIFS clients (such as PCs running Windows). $NAME: $NAME: $NAME: License: GPL $NAME: Authors: http://www.samba.org/ $NAME: Website: http://www.samba.org/ EOF fi cat >> $RELEASEDIR/slack-desc << EOF #---------------------------------------- BUILDDATE: $(date) PACKAGER: $VL_PACKAGER HOST: $(uname -srm) DISTRO: $(cat /etc/vector-version) CFLAGS: $CFLAGS LDFLAGS: $LDFLAGS CONFIGURE: $(awk "/\.\/configure\ /" $TMP/$NAME-$VERSION/config.log) EOF cat $RELEASEDIR/slack-desc > $PKG/install/slack-desc #STRIPPING #------------------------------------------------------------------------------------------------------------------ cd $PKG echo " " echo "Stripping...." echo " " 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 #------------------------------------------------------------------------------------------------------------------ #FINISH PACKAGE #-------------------------------------------------------------- echo "Finding dependencies..." ADD="$ADDRB" EXCLUDE="$EXRB" requiredbuilder -v -y -s $RELEASEDIR $PKG echo "Creating package $NAME-$VERSION-$ARCH-$BUILD.txz" makepkg -l y -c n $RELEASEDIR/$NAME-$VERSION-$ARCH-$BUILD.txz cd $CWD echo "Cleaning up temp files..." && rm -rf $TMP echo "Package Complete" #-------------------------------------------------------------- # vim: set tabstop=4 shiftwidth=4 foldmethod=marker : ##