|
|
#!/bin/bash
|
|
|
|
|
|
cd "$( dirname "$0" )"
|
|
|
ARGS=""
|
|
|
|
|
|
DIST="$(rpmdist.sh --dist)"
|
|
|
|
|
|
# CCACHE related stuff
|
|
|
if [ ! -d /var/cache/ccache ]; then
|
|
|
[ -z "${DIST}" ] && DIST="$(rpm -E "%{dist}")"
|
|
|
if [ -n "${DIST}" ]; then
|
|
|
export CCACHE_DIR=~/.ccache${DIST}.$(uname -m)
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
while [ $# -gt 0 ]; do
|
|
|
case "$1" in
|
|
|
"--auto"|"-a") AUTO=1;;
|
|
|
"--version"|"-v") REQVERSION="$2"; shift;;
|
|
|
"--"*) ARGS="${ARGS} $1";;
|
|
|
*) COMP="${1%%/}";;
|
|
|
esac
|
|
|
shift
|
|
|
done
|
|
|
|
|
|
if [ -d ~/tde/tde-tarballs/${REQVERSION} ]; then
|
|
|
eval TARBALLS_DIR=~/tde/tde-tarballs/${REQVERSION}
|
|
|
else
|
|
|
eval TARBALLS_DIR=~/tde/tde-tarballs/3.5.13.2
|
|
|
#eval TARBALLS_DIR=~/tde/tde-tarballs/14.0.0
|
|
|
fi
|
|
|
|
|
|
clear
|
|
|
cat <<EOF
|
|
|
$(< /etc/redhat-release) [$(uname -m)]
|
|
|
This script generates RPM of TDE from source tarball.
|
|
|
|
|
|
EOF
|
|
|
|
|
|
# Checks RPMBUILD environment
|
|
|
RHEL="$( rpm -E "%{rhel}" )"
|
|
|
FEDORA="$( rpm -E "%{fedora}" )"
|
|
|
SUSE="$( rpm -E "%{suse_version}" )"
|
|
|
PCLINUXOS="$( rpm -E "%{pclinuxos}" )"
|
|
|
MGAVERSION="$( rpm -E "%{mgaversion}" )"
|
|
|
if [ "${RHEL}" = "%{rhel}" ] && [ "${FEDORA}" = "%{fedora}" ] && [ "${SUSE}" = "%{suse_version}" ] && [ "${PCLINUXOS}" = "%{pclinuxos}" ] && [ "${MGAVERSION}" = "%{mgaversion}" ] ; then
|
|
|
cat <<EOF
|
|
|
Error: RPM macro %rhel or %fedora must be set to the distribution version to build !
|
|
|
E.g:
|
|
|
%rhel 6
|
|
|
or:
|
|
|
%fedora 15
|
|
|
EOF
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
# Checks TDE version to use
|
|
|
#if [ -z "${REQVERSION}" ]; then
|
|
|
# REQVERSION="3.5.13"
|
|
|
#fi
|
|
|
|
|
|
if [ -z "${COMP}" ]; then
|
|
|
select COMP in $( cut -f1 "components.txt" | grep -v "^#" ) ; do break; done
|
|
|
fi
|
|
|
|
|
|
# Gets package version from 'components.txt' file
|
|
|
VERSION=$( awk '{ if ($1 == "'${COMP}'") { print $2; } }' components.txt )
|
|
|
|
|
|
# If no version is set in text file, get version number from source tarball name
|
|
|
COMPNAME="${COMP##*/}"
|
|
|
if [ -z "${VERSION}" ]; then
|
|
|
for d in "${TARBALLS_DIR}/main/${COMP%/*}" "${TARBALLS_DIR}/main/" "${PWD}/main/${COMP}/"; do
|
|
|
for n in "trinity-${COMPNAME}-${REQVERSION:-*}.tar.gz" "trinity-${COMPNAME}?-${REQVERSION:-*}.tar.gz" "trinity-${COMPNAME/kde/tde}-${REQVERSION:-*}.tar.gz" "trinity-${COMPNAME/kde/tde}-${REQVERSION:-*}*.tar.gz"; do
|
|
|
# echo $d/$n
|
|
|
set $d/$n
|
|
|
if [ $# -eq 0 ]; then
|
|
|
echo "No tarball found !"
|
|
|
exit 1
|
|
|
elif [ $# -eq 1 ] && [ -r "$1" ]; then
|
|
|
TARBALL=$1
|
|
|
elif [ $# -gt 1 ]; then
|
|
|
select TARBALL in $*; do break; done
|
|
|
fi
|
|
|
done
|
|
|
done
|
|
|
|
|
|
echo "TARBALL is ${TARBALL##*/}"
|
|
|
fi
|
|
|
|
|
|
# Checks for version
|
|
|
if [ -z "${VERSION}" ] && [ -n "${REQVERSION}" ]; then
|
|
|
VERSION="${REQVERSION}"
|
|
|
fi
|
|
|
|
|
|
# Checks for preversion (non-final)
|
|
|
if [ "${TARBALL}" != "${TARBALL%%~pre*}" ]; then
|
|
|
PREVERSION="${TARBALL##*~}"
|
|
|
PREVERSION="${PREVERSION%.tar*}"
|
|
|
fi
|
|
|
|
|
|
# Chooses a spec file (if many)
|
|
|
set $( cd "${COMP}"; echo *${COMP##*/}*.spec )
|
|
|
if [ $# -gt 1 ]; then
|
|
|
if [ -n "${REQVERSION}" ]; then
|
|
|
set $( cd "${COMP}"; echo *-${REQVERSION}.spec )
|
|
|
SPEC="$1"
|
|
|
else
|
|
|
select SPEC in $*; do break; done
|
|
|
fi
|
|
|
elif [ -r "${COMP}/$1" ]; then
|
|
|
SPEC="$1"
|
|
|
else
|
|
|
echo "Fatal: no spec file found !"
|
|
|
echo $1
|
|
|
exit 2
|
|
|
fi
|
|
|
|
|
|
cat <<EOF
|
|
|
|
|
|
About to build '${COMP}':
|
|
|
Version: '${VERSION}'
|
|
|
Preversion: '${PREVERSION}'
|
|
|
Spec file: '${SPEC}'
|
|
|
Tarball: '${TARBALL}'
|
|
|
|
|
|
CCACHE_DIR='${CCACHE_DIR}'
|
|
|
|
|
|
Press ENTER to build, or CTRL+C to abort.
|
|
|
EOF
|
|
|
[ -z "${AUTO}" ] && read rep
|
|
|
|
|
|
# Specific prefix for installation of some components
|
|
|
case "${COMP##*/}" in
|
|
|
"qt3") PREFIX="/usr";;
|
|
|
esac
|
|
|
|
|
|
# Determines if we are running an i386 or x86_64 distro
|
|
|
if [ "$(rpm -q --qf '%{arch}\n' kernel | tail -n 1)" = "i686" ]; then
|
|
|
ARGS="${ARGS} --target=i686"
|
|
|
fi
|
|
|
|
|
|
LOGFILE=/tmp/log.${COMP##*/}
|
|
|
|
|
|
SOURCEDIR="$(mktemp -d)"
|
|
|
# Puts the GIT files in SOURCEDIR
|
|
|
#rsync -rLv "${PWD}/${COMP}/" "${SOURCEDIR}/"
|
|
|
while read a b; do
|
|
|
case "${a}" in
|
|
|
"Source"*|"Patch"*)
|
|
|
b=$(rpm -E "${b##*/}")
|
|
|
[ -r "${COMP}/${b}" ] && cp -fv "${COMP}/${b}" "${SOURCEDIR}"
|
|
|
;;
|
|
|
esac
|
|
|
done < "${COMP}/${SPEC}"
|
|
|
|
|
|
# Copies the SPEC file
|
|
|
cp -f "${COMP}/${SPEC}" "${SOURCEDIR}"
|
|
|
|
|
|
# Puts the TARBALL in SOURCEDIR
|
|
|
#cp -f "${TARBALLS_DIR}/${COMP}-"*.tar* "${SOURCEDIR}"
|
|
|
echo "Copying TARBALL ..."
|
|
|
cp -fv "${TARBALL}" "${SOURCEDIR}"
|
|
|
|
|
|
BUILDDIR="/dev/shm/BUILD${DIST}.$(uname -i)"
|
|
|
BUILDROOTDIR="/dev/shm/BUILDROOT${DIST}.$(uname -i)"
|
|
|
|
|
|
TOPSRCRPMDIR="$(rpm -E %_srcrpmdir)"
|
|
|
TOPRPMDIR="$(rpm -E %_rpmdir)"
|
|
|
SUBDIR="${COMP%/*}"
|
|
|
if [ "${SUBDIR}" = "${COMP}" ]; then
|
|
|
SUBDIR="main"
|
|
|
fi
|
|
|
RPMDIR="${TOPRPMDIR}/${SUBDIR}"
|
|
|
SRCRPMDIR="${TOPSRCRPMDIR}/${SUBDIR}"
|
|
|
|
|
|
[ -d "${BUILDDIR}" ] || mkdir "${BUILDDIR}"
|
|
|
[ -d "${BUILDROOTDIR}" ] || mkdir "${BUILDROOTDIR}"
|
|
|
|
|
|
set -x
|
|
|
(
|
|
|
rpmbuild -ba \
|
|
|
${ARGS} \
|
|
|
--define "_specdir ${SOURCEDIR}" \
|
|
|
--define "_sourcedir ${SOURCEDIR}" \
|
|
|
--define "_builddir ${BUILDDIR}" \
|
|
|
--define "_buildrootdir ${BUILDROOTDIR}" \
|
|
|
--define "tde_prefix ${PREFIX:-/opt/trinity}" \
|
|
|
--define "version ${VERSION:-3.5.13.2}" \
|
|
|
--define "preversion ${PREVERSION}" \
|
|
|
${SOURCEDIR}/${SPEC}
|
|
|
echo "RET=$?"
|
|
|
) 2>&1 | tee ${LOGFILE}
|
|
|
eval "$(grep ^RET= ${LOGFILE})"
|
|
|
set +x
|
|
|
|
|
|
# Removes temporary source directory
|
|
|
rm -rf "${SOURCEDIR}"
|
|
|
|
|
|
if [ "${RET}" -gt 0 ]; then
|
|
|
exit ${RET}
|
|
|
fi
|
|
|
|
|
|
if grep -q "error: Failed build dependencies:" ${LOGFILE}; then
|
|
|
# DEPS=$( sed -n -e "/.* is needed by .*/ s/^[ \t]*\([a-zA-Z2-9_-]*\) .*/\1/p" ${LOGFILE} )
|
|
|
set $( grep " is needed by " ${LOGFILE} | cut -d " " -f1 )
|
|
|
exit 2
|
|
|
fi
|
|
|
|
|
|
rm -rf "${SOURCEDIR}"
|
|
|
|
|
|
# Removes BUILDDIR if build succeeded
|
|
|
rm -rf "${BUILDDIR}/"*${COMP##*/}-${VERSION}*
|