slackbuilds/ap/chrpath/chrpath.SlackBuild
Gwenhael Le Moine 2d3c96f8e7 replace TMP by OUTPUT
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
2011-02-17 11:54:04 +07:00

215 lines
6.2 KiB
Bash
Executable file

#!/bin/sh
#-- chrpath for Slackware --
# Build script by Phantom X <megaphantomx@bol.com.br>
# Suggested usage: $ chrpath.SlackBuild 2>&1 | tee build.log
#--
# Copyright 2008, 2009, 2010 Phantom X, Goiania, Brazil.
# Copyright 2006 Martijn Dekker, Groningen, Netherlands.
#
# 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.
# ftp://ftp.hungry.com/pub/hungry/chrpath/
PACKAGER_ID=cyco
# Set YES for native build with gcc >= 4.2
SB_NATIVE=${SB_NATIVE:-YES}
# Set to YES to replicate slackbuild and patches
SB_REP=${SB_REP:-YES}
CWD=$(pwd)
TAG=cyco
TMP=${TMP:-/tmp}
if [ ! -d ${TMP} ]; then
mkdir -p ${TMP}
fi
NAME=chrpath
PKG=${PKG:-${TMP}/pkg-${NAME}}
VERSION=${VERSION:-0.13}
if [ "${SB_NATIVE}" = "YES" ] ;then
ARCH=${ARCH:-$(uname -m)}
else
ARCH=${ARCH:-i686}
fi
if [ "${ARCH}" = "x86_64" ] ;then
SLKTARGET=${SLKTARGET:-x86_64}
else
SLKTARGET=${SLKTARGET:-i486}
fi
SLKDTARGET=${SLKDTARGET:-slackware}
BUILD=${BUILD:-5}
NJOBS=${NJOBS:-$(( $(getconf _NPROCESSORS_ONLN) + 1 ))}
DOCDIR=${PKG}/usr/doc/${NAME}-${VERSION}
SBDIR=${PKG}/usr/src/slackbuilds/${NAME}
PKGDEST=${PKGDEST:-${CWD}}
PKGFORMAT=${PKGFORMAT:-txz}
PKGNAME=${NAME}-$(echo ${VERSION} | tr - . )-${ARCH}-${BUILD}${PACKAGER_ID}
DATE=$(LC_ALL=C date +%Y.%m.%d_%H.%M)
SRCDIR=${NAME}-${VERSION}
SRCARCHIVE=${SRCDIR}.tar.gz
DL_PROG=${DL_PROG:-wget}
DL_TO=${DL_TO:-5}
DL_OPTS=${DL_OPTS:-"--timeout=${DL_TO}"}
DL_URL="ftp://ftp.hungry.com/pub/hungry/${NAME}/${SRCARCHIVE}"
FEDORACVS=fedora-cvs.sh
FEDORABRANCH=${FEDORABRANCH:-devel}
# if source is not present, download in source rootdir if possible
test -r ${CWD}/${SRCARCHIVE} || ${DL_PROG} ${DL_OPTS} ${DL_URL} \
|| sh ${CWD}/${FEDORACVS} ${NAME} ${FEDORABRANCH} ${SRCARCHIVE} || exit 1
if [ "${SB_NATIVE}" = "YES" ] ;then
SLKCFLAGS="-O2 -march=native -mtune=native ${SB_ECFLAGS} -pipe"
else
case "${ARCH}" in
i[3-6]86) SLKCFLAGS="-O2 -march=${ARCH} -mtune=i686"
;;
s390) SLKCFLAGS="-O2"
;;
x86_64) SLKCFLAGS="-O2 -fPIC"
;;
esac
fi
if [ "${ARCH}" = "x86_64" ] ;then
LIBDIRSUFFIX="64"
SLKCFLAGS="${SLKCFLAGS} -fPIC"
else
LIBDIRSUFFIX=""
fi
if [ -d ${PKG} ]; then
# Clean up a previous build
rm -rf ${PKG}
fi
mkdir -p ${PKG}
cd ${TMP}
rm -rf ${SRCDIR}
tar -xvf ${CWD}/${SRCARCHIVE} || exit 1
cd ${SRCDIR} || exit 1
chmod -R u+w,go+r-w,a-s .
# zcat ${CWD}/${NAME}.patch.gz | patch -p0 -E --backup --verbose || exit 1
zcat ${CWD}/${NAME}-multilib.patch.gz | patch -p1 -E --backup --verbose || exit 1
zcat ${CWD}/${NAME}-keepgoing.patch.gz | patch -p1 -E --backup --verbose || exit 1
autoreconf -ivf || exit 1
CFLAGS="${SLKCFLAGS}" \
CXXFLAGS="${SLKCFLAGS}" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var/lib \
--infodir=/usr/info \
--mandir=/usr/man \
--disable-static \
--build=${SLKTARGET}-${SLKDTARGET}-linux || exit 1
make -j${NJOBS} || make || exit 1
make install DESTDIR=${PKG} || exit 1
rm -f ${PKG}/usr/lib*/*.la
find ${PKG} | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Add a documentation directory:
rm -rf ${DOCDIR}
mkdir -p ${DOCDIR}
cp -a \
AUTHORS COPYING README NEWS ChangeLog* ${CWD}/ChangeLog.SB \
${DOCDIR}/
find ${DOCDIR}/ -type d -print0 | xargs -0 chmod 0755
find ${DOCDIR}/ -type f -print0 | xargs -0 chmod 0644
# Compress and link manpages, if any:
if [ -d ${PKG}/usr/share/man ]; then
mv ${PKG}/usr/share/man ${PKG}/usr/man
fi
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
mkdir -p ${PKG}/install
cat ${CWD}/slack-desc > ${PKG}/install/slack-desc
cat ${CWD}/slack-required > ${PKG}/install/slack-required
sed -i "s|_PACKAGER|${PACKAGER}|g; s|_BUILD_DATE|${DATE}|g" \
${PKG}/install/slack-desc
if [ "${SB_REP}" = "YES" ] ;then
# Replicate slackbuild and patches
mkdir -p ${SBDIR}
install -m0644 ${CWD}/slack-desc ${CWD}/slack-required ${CWD}/ChangeLog.SB \
${CWD}/${FEDORACVS} ${CWD}/${NAME}-*.patch.gz ${SBDIR}/
install -m0755 ${CWD}/${NAME}.SlackBuild \
${SBDIR}/${NAME}.SlackBuild
fi
# Build package:
set +o xtrace # no longer print commands upon execution
ROOTCOMMANDS="set -o errexit -o xtrace ; cd ${PKG} ;
/bin/chown --recursive root:root . ;"
ROOTCOMMANDS="${ROOTCOMMANDS}
/sbin/makepkg --linkadd y --chown n ${PKGDEST}/${PKGNAME}.${PKGFORMAT} "
if test ${UID} = 0; then
eval ${ROOTCOMMANDS}
set +o xtrace
elif test "$(type -t fakeroot)" = 'file'; then
echo -e "\e[1mEntering fakeroot environment.\e[0m"
echo ${ROOTCOMMANDS} | fakeroot
else
echo -e "\e[1mPlease enter your root password.\e[0m (Consider installing fakeroot.)"
/bin/su -c "${ROOTCOMMANDS}"
fi
# Clean up the extra stuff:
if [ "$1" = "--cleanup" ]; then
echo "Cleaning..."
if [ -d ${TMP}/${SRCDIR} ]; then
rm -rf ${TMP}/${SRCDIR} && echo "${TMP}/${SRCDIR} cleanup completed"
fi
if [ -d ${PKG} ]; then
rm -rf ${PKG} && echo "${PKG} cleanup completed"
fi
rmdir ${TMP} && echo "${TMP} cleanup completed"
fi
exit 0