#!/bin/sh # Heavily based on the Slackware 12.0 SlackBuild # http://www.xfce.org/index.php # Copyright 2003 Slackware Linux, Inc., Concord, CA, USA # Copyright 2007 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # dependecies: dbus, dbus-glib, hal, uri, vte, intltool # mod by submax NAME=xfce VERSION=4.4.2 ARCH=${ARCH:-i686} TMP=${TMP:-/tmp/tgz} PKG=$TMP/package-$NAME CWD="$(pwd)" BUILD=1sm SOURCE=http://switch.dl.sourceforge.net/sourceforge/$NAME/$NAME-$VERSION-src.tar.bz2 #http://foo-projects.org/~benny/projects/thunar-volman/index.html #The Thunar Volume Manager is an extension for the Thunar file manager, which enables automatic management of removable drives and media. #For example, if thunar-volman is installed and configured properly, and you plug in your digital camera, it will automatically launch #your preferred photo application and import the new pictures from the camera into your photo collection. VERSION_VOLMAN=0.2.0 SOURCE_VOLMAN=http://download.berlios.de/xfce-goodies/thunar-volman-$VERSION_VOLMAN.tar.bz2 if [ ! -e $NAME-$VERSION-src.tar.bz2 ]; then wget -c $SOURCE || exit fi if [ ! -e thunar-volman-$VERSION_VOLMAN.tar.bz2 ]; then wget -c $SOURCE_VOLMAN || exit fi # CHOST arch should be set to i486 for any 32-bit x86, unless # you want problems finding your compiler. case $ARCH in "i486") SLKCFLAGS="-O2 -march=i486 -mtune=i686" ; SLKLIBDIR=lib ; CHOST=i486 ;; "i686") SLKCFLAGS="-O3 -march=i686 -pipe -fomit-frame-pointer" ; SLKLIBDIR=lib ; CHOST=i486 ;; "x86_64_slamd64") SLKCFLAGS="-O2" ; SLKLIBDIR=lib64 ; CHOST=x86_64 ;; # multilib /lib and /lib64 "x86_64") SLKCFLAGS="-O2" ; SLKLIBDIR=lib ; CHOST=x86_64 ;; # pure /lib only es. sflack "s390") SLKCFLAGS="-O2" ; SLKLIBDIR=lib ; CHOST=s390 ;; esac # clean necessary before compile after old run rm -rf $PKG 2> /dev/null mkdir -p $PKG rm -rf $TMP/$NAME-$VERSION 2> /dev/null #decompress sources cd $TMP tar xjvf "$CWD"/$NAME-$VERSION-src.tar.bz2 || exit 1 cd $NAME-$VERSION/src #test checksum md5sum -c $NAME-$VERSION.md5 if [ $? != 0 ];then echo "checksum sources error" exit 2 fi for file in $(ls *.tar.bz2) do tar xjf $file || exit 1 done #decompress external package volman cp "$CWD"/thunar-volman-$VERSION_VOLMAN.tar.bz2 $TMP/$NAME-$VERSION/src tar xjvf $TMP/$NAME-$VERSION/src/thunar-volman-$VERSION_VOLMAN.tar.bz2 || exit 1 # change permissions chown -R root:root . find . \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) -exec chmod 755 {} \; find . \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; mkdir -p $PKG/etc/profile.d cp -a "$CWD"/profile.d/* $PKG/etc/profile.d chown root:root $PKG/etc/profile.d/* chmod 755 $PKG/etc/profile.d/* ## compile ## #IMP http://www.xfce.org/documentation/requirements LIST_SOURCES_ORDERED="xfce4-dev-tools \ libxfce4util \ libxfcegui4 \ libxfce4mcs \ xfce-mcs-manager \ exo \ xfce-mcs-plugins \ xfce4-panel \ Thunar \ xfce4-session \ xfwm4 \ xfdesktop \ xfce-utils \ xfprint \ gtk-xfce-engine \ mousepad \ Terminal \ xfce4-appfinder \ xfce4-mixer \ xfce4-icon-theme \ xfwm4-themes \ orage \ thunar-volman" #add external for package in $LIST_SOURCES_ORDERED do ( file="$(ls | egrep "^$package\-([0-9]+)\.([0-9]+)\.([0-9]*).*\.tar\.bz2$")" if [ -z "$file" ];then echo "package \"$package\" not find" exit 4 fi package_dir=$(basename $file .tar.bz2) cd $package_dir echo echo "Compile package \"$package_dir\" start..." echo # fix: *** glibc detected *** corrupted double-linked list: 0x0e360c20 *** # new versions of glibc added checks for code sanity at execution, which make things that used to work now crash. # I know the malloc check could be disabled with adding follow line #export MALLOC_CHECK_=0 # Here's where we patch or set up any other package-specific stuff: if [ "$package" = "xfce4-mixer" ]; then PACKAGE_SPECIFIC_OPTIONS="--with-sound=alsa" fi # Official patch from Thunar developer # http://foo-projects.org/pipermail/xfce4-dev/2007-December/023857.html if [ "$package" = "Thunar" ]; then zcat "$CWD"/thunar-vfs-volume-hal_missing-audio-cds-for-volman.patch.gz | patch -p0 --verbose || exit 2 zcat "$CWD"/thunar-0.9.0-help-directory.patch.gz | patch -p0 --verbose || exit 2 fi if [ "$package" = "Terminal" ]; then zcat "$CWD"/terminal-0.2.8-help-directory.patch.gz | patch -p0 --verbose || exit 2 fi LDFLAGS="-L/usr/$SLKLIBDIR -L/$SLKLIBDIR" \ CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure --prefix=/usr \ --libdir=/usr/$SLKLIBDIR \ --mandir=/usr/man \ --sysconfdir=/etc/X11 \ --enable-compositor \ --enable-static=no \ --enable-xinerama \ --enable-debug=no \ $PACKAGE_SPECIFIC_OPTIONS \ --enable-final \ --build=$CHOST-slackware-linux # Unset this now -- we're done with it unset PACKAGE_SPECIFIC_OPTIONS # I had a few things blow up with # -j > 1... make -j1 # -j1 fix problem xfce4-mixer 4.4.1 with "libtool: link: cannot find the library # `libxfce4mixer.la' or unhandled argument `libxfce4mixer.la'" # Parallel make failure in 4.4.1, "-j2" or higher is broken, needs some love :) if [ $? != 0 ]; then echo "[ERROR] make [ERROR]" echo echo "Compile package \"$package_dir\": FAIL." echo exit 3 fi echo echo "Compile package \"$package_dir\": DONE." echo make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$package_dir # This will cause errors, but won't miss any docs: cp -a AUTHORS BUGS COMPOSITOR COPYING COPYING.LIB COPYING_LIBS FAQ HACKING \ INSTALL NEWS NOTES README README.Kiosk README.Plugins THANKS TODO \ example.gtkrc-2.0 \ $PKG/usr/doc/$package_dir 2> /dev/null if [ "$package" = "Thunar" ] || [ "$package" = "Terminal" ]; then cp -a $PKG/usr/share/doc/$package/* $PKG/usr/doc/$package_dir rm -rf $PKG/usr/share/doc/ fi exit 0 ) if [ $? != 0 ]; then exit; fi done #cicle for uninstall packages temp installed for compilation for file in $(ls *.tar.bz2) do ( cd $(basename $file .tar.bz2) make uninstall ) done # strip exe file ( 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 ) # Compress and if needed symlink the man pages: if [ -d $PKG/usr/man ]; then ( cd $PKG/usr/man for manpagedir in $(find . -type d -name "man*") ; do ( cd $manpagedir for eachpage in $( find . -type l -maxdepth 1) ; do ln -s $( readlink $eachpage ).gz $eachpage.gz rm $eachpage done gzip -9 *.? ) done ) fi # fix xinitrc mkdir -p $PKG/etc/X11/xinit cp $PKG/etc/X11/xdg/xfce4/xinitrc $PKG/etc/X11/xinit/xinitrc.xfce chmod 755 $PKG/etc/X11/xdg/xfce4/xinitrc chmod 755 $PKG/etc/X11/xinit/xinitrc.xfce # Add src inside package mkdir -p $PKG/usr/doc/$NAME-$VERSION/SlackBuild/ cat "$CWD"/$NAME.SlackBuild > $PKG/usr/doc/$NAME-$VERSION/SlackBuild/$NAME.SlackBuild cat "$CWD"/slack-desc > $PKG/usr/doc/$NAME-$VERSION/SlackBuild/slack-desc cp "$CWD"/doinst.sh.gz $PKG/usr/doc/$NAME-$VERSION/SlackBuild/ cp "$CWD"/*.patch.gz $PKG/usr/doc/$NAME-$VERSION/SlackBuild/ mkdir -p $PKG/usr/doc/$NAME-$VERSION/SlackBuild/profile.d cp -a "$CWD"/profile.d/* $PKG/usr/doc/$NAME-$VERSION/SlackBuild/profile.d mkdir -p $PKG/install cat "$CWD"/slack-desc > $PKG/install/slack-desc zcat "$CWD"/doinst.sh.gz > $PKG/install/doinst.sh cd $PKG chown -R root:root $PKG if [ -x "$(which requiredbuilder)" ]; then requiredbuilder -y -v -s "$CWD" $PKG fi makepkg -l y -c n "$CWD"/../$NAME-$VERSION-$ARCH-$BUILD.tgz (cd "$CWD"/.. md5sum $NAME-$VERSION-$ARCH-$BUILD.tgz > $NAME-$VERSION-$ARCH-$BUILD.tgz.md5 cat $PKG/install/slack-desc | grep "^$NAME" > $NAME-$VERSION-$ARCH-$BUILD.txt ) # optional clean if [ "$1" = "--cleanup" ]; then if [ "$TMP" != "/" ]; then rm -rf $TMP fi fi