diff options
author | Eric Hameleers <alien@slackware.com> | 2008-07-04 14:42:07 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2008-07-04 14:42:07 +0000 |
commit | eaf0056157bdddb53defa0ef8ac8da210935cddc (patch) | |
tree | e6d5846c918cf8f412b0e6f213d5d698ba733b0a /truecrypt | |
parent | 45ed2d4aefdb3b7a4492e040eb2c4796947152f1 (diff) | |
download | asb-eaf0056157bdddb53defa0ef8ac8da210935cddc.tar.gz asb-eaf0056157bdddb53defa0ef8ac8da210935cddc.tar.xz |
The SlackBuild was updated for 5.1a (includes a wxGTK gui)
Diffstat (limited to 'truecrypt')
-rwxr-xr-x | truecrypt/build/truecrypt.SlackBuild | 306 |
1 files changed, 137 insertions, 169 deletions
diff --git a/truecrypt/build/truecrypt.SlackBuild b/truecrypt/build/truecrypt.SlackBuild index 110bf86f..9220fed5 100755 --- a/truecrypt/build/truecrypt.SlackBuild +++ b/truecrypt/build/truecrypt.SlackBuild @@ -1,33 +1,35 @@ #!/bin/sh # $Id$ -# ----------------------------------------------------------------------------- -# Copyright (c) 2006,2007 Eric Hameleers <alien@slackware.com> -# Permission to use, copy, modify, and distribute this software for -# any purpose with or without fee is hereby granted, provided that -# the above copyright notice and this permission notice appear in all -# copies. +# Copyright (c) 2006-2008 Eric Hameleers <alien@slackware.com> +# All rights reserved. +# +# Permission to use, copy, modify, and distribute this software for +# any purpose with or without fee is hereby granted, provided that +# the above copyright notice and this permission notice appear in all +# copies. # -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR -# CONTRIBUTORS 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. +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR +# CONTRIBUTORS 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. # ----------------------------------------------------------------------------- # # Slackware SlackBuild script # =========================== -# By: Eric Hameleers <alien@slackware.com> -# For: truecrypt -# URL: http://www.truecrypt.org/ -# Needs: device-mapper >= 1.00.08 (for Slackware older than 12.0) -# Changelog: +# By: Eric Hameleers <alien@slackware.com> +# For: truecrypt +# Descr: On-the-fly disk encryption +# URL: http://truecrypt.org +# Needs: +# Changelog: # 4.0-1: 02/Nov/2005 by Eric Hameleers <alien@slackware.com> # * Initial build. # 4.2-1: 18/apr/2006 by Eric Hameleers <alien@slackware.com> @@ -46,47 +48,42 @@ # list it as a dependency. # 4.3a-3: 13/oct/2007 by Eric Hameleers <alien@slackware.com> # * Add patch to support kernel >= 2.6.23 +# 5.1a-1: 04/Jul/2008 by Eric Hameleers <alien@slackware.com> +# * New release requires wxWindows for the GUI, no longer is +# kernel version dependant (by using fuse). # -# Run 'sh SlackBuild --cleanup' to build a Slackware package. +# Run 'sh truecrypt.SlackBuild --cleanup' to build a Slackware package. # The package (.tgz) plus descriptive .txt file are created in /tmp . # Install using 'installpkg'. # # ----------------------------------------------------------------------------- -# --- INIT --- +# Set initial variables: PRGNAM=truecrypt -VERSION=${VERSION:-4.3a} +VERSION=${VERSION:-5.1a} ARCH=${ARCH:-i486} -BUILD=3 - -DOCS="README.1st Readme.txt License.txt userguide.pdf" +BUILD=${BUILD:-1} +TAG=${TAG:-alien} -KVER=${KVER:-$(uname -r)} -KSRC=${KSRC:-/lib/modules/{KVER}/build} - -SLACKMAJ=$( cat /etc/slackware-version | cut -f2 -d\ | cut -f1 -d. ) +DOCS="Readme.txt License.txt userguide.pdf \ + Release/Setup\ Files/TrueCrypt\ User\ Guide.pdf" +WXGTK=${WXGTK:-2.8.8} # for the GUI # Where do we look for sources? -CWD=$(pwd) -SRCDIR=$(dirname $0) -[ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR} - -SRCURL="http://www.truecrypt.org/downloads/${PRGNAM}-${VERSION}-source-code.tar.gz" -SOURCE="${SRCDIR}/${PRGNAM}-${VERSION}-source-code.tar.gz" - -PATCH0="${SRCDIR}/${PRGNAM}-${VERSION}_ksrc.patch" -PATCH1="${SRCDIR}/${PRGNAM}-${VERSION}_kernel_2.6.23.patch" +SRCDIR=$(cd $(dirname $0); pwd) # Place to build (TMP) package (PKG) and output (OUTPUT) the program: TMP=${TMP:-/tmp/build} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -# ------------------------------------------------------------------------ -# truecrypt used to be installed with setuid root - as of 4.3a the program -# will use 'sudo' to get elevated rights. -# ------------------------------------------------------------------------ +# If you want automatic download to work, supply a URL for 'SRCURL' below: +SOURCE[0]="$SRCDIR/${PRGNAM}-${VERSION}-source.tar.gz" +SRCURL[0]="" + +SOURCE[1]="$SRCDIR/${PRGNAM}-${VERSION}.tar.gz" +SRCURL[1]="http://downloads.sourceforge.net/wxwindows/wxGTK-${WXGTK}.tar.gz" ## ## --- with a little luck, you won't have to edit below this point --- ## @@ -94,7 +91,7 @@ OUTPUT=${OUTPUT:-/tmp} # Exit the script on errors: set -e -trap 'echo "$0 FAILED!" | tee $OUTPUT/error-${PRGNAM}.log' ERR +trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR # Catch unitialized variables: set -u P1=${1:-1} @@ -107,9 +104,6 @@ else fi case "$ARCH" in - i386) SLKCFLAGS="-O2 -march=i386 -m${MOPT}=i686" - SLKLDFLAGS=""; LIBDIRSUFFIX="" - ;; i486) SLKCFLAGS="-O2 -march=i486 -m${MOPT}=i686" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; @@ -127,158 +121,132 @@ case "$ARCH" in ;; esac -# Prepare build environment: +# Create working directories: +mkdir -p $OUTPUT # place for the package to be saved mkdir -p $TMP/tmp-$PRGNAM # location to build the source +mkdir -p $PKG # place for the package to be built +rm -rf $PKG/* # always erase old package's contents rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build -mkdir -p $PKG # place for the package to be built -rm -rf $PKG/* # We always erase old package's contents: -mkdir -p $OUTPUT # place for the package to be saved # Source file availability: -if ! [ -f ${SOURCE} ]; then - if ! [ "x${SRCURL}" == "x" ]; then - # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT - [ -w "$SRCDIR" ] || SOURCE="$OUTPUT/$(basename $SOURCE)" - echo "Source '$(basename ${SOURCE})' not available yet..." - echo "Will download file to $(dirname $SOURCE)" - wget -nv --connect-timeout=30 -O "${SOURCE}" "${SRCURL}" || true - if [ $? -ne 0 -o ! -s "${SOURCE}" ]; then - echo "Downloading '$(basename ${SOURCE})' failed... aborting the build." - mv -f "${SOURCE}" "${SOURCE}".FAIL +for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do + if ! [ -f ${SOURCE[$i]} ]; then + if ! [ "x${SRCURL[$i]}" == "x" ]; then + # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT + [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})" + echo "Source '$(basename ${SOURCE[$i]})' not available yet..." + echo "Will download file to $(dirname $SOURCE[$i])" + wget -nv -T 20 -O "${SOURCE[$i]}" "${SRCURL[$i]}" || true + if [ $? -ne 0 -o ! -s "${SOURCE[$i]}" ]; then + echo "Downloading '$(basename ${SOURCE[$i]})' failed.. aborting the build." + mv -f "${SOURCE[$i]}" "${SOURCE[$i]}".FAIL + exit 1 + fi + else + echo "File '$(basename ${SOURCE[$i]})' not available.. aborting the build." exit 1 fi - else - echo "File '$(basename ${SOURCE})' not available... aborting the build." - exit 1 fi +done + +if [ "$P1" == "--download" ]; then + echo "Download complete." + exit 0 fi -# Package building: +# --- PACKAGE BUILDING --- + echo "++" echo "|| $PRGNAM-$VERSION" echo "++" cd $TMP/tmp-$PRGNAM -echo "Extracting the program tarball(s) for $PRGNAM..." -tar -xzvf ${SOURCE} -mv ${PRGNAM}-${VERSION}-source-code ${PRGNAM}-${VERSION} || true +echo "Extracting the source archive(s) for $PRGNAM..." +for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do + if $(file ${SOURCE[$i]} | grep -q ": bzip2"); then + tar -xjvf ${SOURCE[$i]} + elif $(file ${SOURCE[$i]} | grep -q ": gzip"); then + tar -xzvf ${SOURCE[$i]} + fi +done +mv ${PRGNAM}-${VERSION}-source ${PRGNAM}-${VERSION} cd ${PRGNAM}-${VERSION} -chown -R root.root * -find . -perm 777 -exec chmod 755 {} \; -find . -exec chmod +r {} \; - -echo "Building ..." - -cd Linux -# Patches first: -# Verbose compilation output: -patch -p0 < ${PATCH0} 2>&1 | tee $OUTPUT/patch-${PRGNAM}.log -# Support for kernels >= 2.6.23 : -patch -p1 < ${PATCH1} 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +# Fix dismount failure: +cat $SRCDIR/${PRGNAM}_umount.patch | patch -p1 \ + 2>&1 | tee $OUTPUT/patch-${PRGNAM}.log +# If you use gcc 4.3 you'll need this: +if [ $(gcc -dumpversion | tr -d '.' |cut -c 1-2) -ge 43 ]; then + cat $SRCDIR/${PRGNAM}_gcc43.patch | patch -p1 \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +fi +chown -R root:root . +chmod -R u+w,go+r-w,a-s . -CFLAGS="$SLKCFLAGS" \ -KERNEL_VER=$KVER KERNEL_SRC=$KSRC \ -./build.sh 2>&1 | tee $OUTPUT/make-${PRGNAM}.log +echo Building ... +export LDFLAGS="$SLKLDFLAGS" +export CXXFLAGS="$SLKCFLAGS" +export CFLAGS="$SLKCFLAGS" -# Run a test -./Cli/truecrypt --test 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log +# First build a static wxGTK, then build truecrypt: +make WX_ROOT==$(cd ../wxGTK-$WXGTK; pwd) wxbuild 2>&1 | tee $OUTPUT/make-${PRGNAM}.log +make 2>&1 | tee -a $OUTPUT/make-${PRGNAM}.log -# Install all the needed stuff to the package dir: +# Install the binary: mkdir -p $PKG/usr/bin -mkdir -p $PKG/usr/man/man1 -mkdir -p $PKG/lib/modules/$KVER/extra - -cp -a Cli/truecrypt $PKG/usr/bin/ -cp -a Cli/Man/truecrypt.1 $PKG/usr/man/man1/ -cp -a Kernel/truecrypt.ko $PKG/lib/modules/$KVER/extra -chmod 600 $PKG/lib/modules/$KVER/extra/truecrypt.ko - -cd .. +cp Main/truecrypt $PKG/usr/bin + +# Add a desktop entry: +mkdir -p $PKG/usr/share/{applications,pixmaps} +cp $SRCDIR/truecrypt.png $PKG/usr/share/pixmaps/ +cat <<-EOT > $PKG/usr/share/applications/truecrypt.desktop + [Desktop Entry] + Name=Truecrypt + Comment=Disk encryption software + Exec=truecrypt + Icon=truecrypt.png + Terminal=0 + Type=Application + Encoding=UTF-8 + Categories=System;Application; + EOT + +# Add this to the doinst.sh: +! [ -d $PKG/install ] && mkdir -p $PKG/install +cat <<EOT >> $PKG/install/doinst.sh +# Update the desktop database: +if [ -x usr/bin/update-desktop-database ]; then + chroot . /usr/bin/update-desktop-database /usr/share/applications > /dev/null 2>&1 +fi -# And now write the doinst.sh : -mkdir -p $PKG/install -cat <<-EEOOTT > $PKG/install/doinst.sh - # TrueCrypt install script - # Determine the rc.modules to use: - if [ -f etc/rc.d/rc.modules.local ]; then - RCMODULES="etc/rc.d/rc.modules.local" - elif [ -f etc/rc.d/rc.modules-$(uname -r) ]; then - RCMODULES="etc/rc.d/rc.modules-$(uname -r)" - else - RCMODULES="etc/rc.d/rc.modules" - fi - - if [ ! -x usr/sbin/dmsetup -a ! -x sbin/dmsetup ] ; then - echo "TrueCrypt requires device mapper tools (dmsetup) 1.00.08 or later." - echo "Please install the 'device-mapper' package before trying to use truecrypt." - fi - - # Make the device mapper module load on boot: - if ! grep -e "^[^#]* dm-mod" \${RCMODULES} >/dev/null ; then - echo "# Loading device mapper module (for truecrypt amongst others)" >> \${RCMODULES} - echo "/sbin/modprobe dm-mod" >> \${RCMODULES} - fi - - # Make truecrypt module load on boot: - if ! grep -e "^[^#]* truecrypt" \${RCMODULES} >/dev/null ; then - echo "# TrueCrypt OTFE (On The Fly Encryption)" >> \${RCMODULES} - echo "/sbin/modprobe truecrypt" >> \${RCMODULES} - fi - - # Only run depmod on matching running kernel - # Slackware will run depmod anyway on reboot): - MYMODVER=$KVER - MYKERNEL=\`uname -r\` - - if [ "\$MYKERNEL" = "\$MYMODVER" ]; then - if [ -x sbin/depmod ]; then - chroot . /sbin/depmod -a \$MYKERNEL 1> /dev/null 2> /dev/null - # This probably doesn't hurt: - modprobe -r truecrypt >/dev/null 2>&1 - modprobe dm-mod >/dev/null 2>&1 - modprobe truecrypt >/dev/null 2>&1 - fi - fi - EEOOTT +EOT # Add documentation: -cp Release/Readme.txt README.1st -cp Release/Setup\ Files/TrueCrypt\ User\ Guide.pdf userguide.pdf - mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a $DOCS \ - $PKG/usr/doc/$PRGNAM-$VERSION -chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/* - -# Compress the man page(s): -if [ -d $PKG/usr/man ]; then - find $PKG/usr/man -name "*.?" -type f -exec gzip -9f {} \; -fi +cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true +cp -a $SRCDIR/$(basename $0) $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION +find $PKG/usr/doc -type f -exec chmod 644 {} \; # Strip binaries: -( 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 -) +cd $PKG +find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +cd - # Add a package description: mkdir -p $PKG/install cat $SRCDIR/slack-desc > $PKG/install/slack-desc -# Substitute correct versions -sed -i -e "s#\@\@KERNELVERS\@\@#${KVER}#g" $PKG/install/slack-desc -if [ -f $SRCDIR/slack-required -a $SLACKMAJ -lt 12 ]; then - cat $SRCDIR/slack-required > $PKG/install/slack-required +if [ -f $SRCDIR/doinst.sh ]; then + cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh fi # Build the package: cd $PKG -makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz \ - 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log -(cd $OUTPUT && md5sum ${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz > ${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz.md5) -cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.txt -if [ -f $PKG/install/slack-required ]; then - cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.dep -fi +makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log +cd $OUTPUT +md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz.md5 +cd - +cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txt # Clean up the extra stuff: if [ "$P1" = "--cleanup" ]; then |