2d3c96f8e7
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
215 lines
6.2 KiB
Bash
Executable file
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
|