Files
harbour-core/harbour/mpkg_tgz.sh
Viktor Szakats 5a4a67ee72 2010-06-15 02:31 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* mpkg_deb.sh
  * mpkg_rpm.sh
  * mpkg_rpm_win.sh
  * mpkg_nightly.sh
  * mpkg_src.sh
  * mpkg_rpm_wce.sh
  * mpkg_tgz.sh
  * bin/hb-mkdyn.sh
  * bin/hb-func.sh
  * bin/postinst.sh
    - Do not force bash.
      (QNX by default doesn't have bash f.e., and now with the
      limited amount of .sh code in SVN, we can focus on making
      the code POSIX compliant.)

  * ChangeLog
    ! One QNX TODO marked as DONE.
2010-06-15 00:38:55 +00:00

175 lines
4.6 KiB
Bash
Executable File

#!/bin/sh
#
# $Id$
#
# ---------------------------------------------------------------
# Copyright 2003 Przemyslaw Czerpak <druzus@polbox.com>
# simple script to build binaries .tgz from Harbour sources
#
# See COPYING for licensing terms.
# ---------------------------------------------------------------
cd `dirname $0`
. bin/hb-func.sh
name="harbour"
hb_ver=`get_hbver`
hb_verstat=`get_hbverstat`
hb_platform=`get_hbplatform`
[ "${hb_verstat}" = "" ] || hb_ver="${hb_ver}-${hb_verstat}"
[ "${hb_platform}" = "" ] || hb_platform="-${hb_platform}${HB_BUILDSUF}"
[ "${HB_XBUILD}" = "" ] || hb_platform="-${HB_XBUILD}"
hb_archfile="${name}-${hb_ver}${hb_platform}.bin.tar.gz"
hb_instfile="${name}-${hb_ver}${hb_platform}.inst.sh"
hb_pref="hb"
hb_sysdir="yes"
[ -z "$HB_INSTALL_PREFIX" ] && [ -n "$PREFIX" ] && export HB_INSTALL_PREFIX="$PREFIX"
if [ -z "$TMPDIR" ]; then TMPDIR="/tmp"; fi
HB_INST_PKGPREF="$TMPDIR/$name.bin.$USER.$$"
if [ -z "$HB_PLATFORM" ]; then
if [ "$OSTYPE" = "msdosdjgpp" ]; then
hb_plat="dos"
else
hb_plat=`uname -s | tr -d "[-]" | tr '[A-Z]' '[a-z]' 2>/dev/null`
case "$hb_plat" in
*windows*|*mingw32*|msys*) hb_plat="win" ;;
*os/2*) hb_plat="os2" ;;
*dos) hb_plat="dos" ;;
*bsd) hb_plat="bsd" ;;
esac
fi
export HB_PLATFORM="$hb_plat"
fi
ETC="/etc"
# Select the platform-specific installation prefix and ownership
HB_INSTALL_OWNER="root"
HB_INSTALL_GROUP="root"
case "$HB_PLATFORM" in
darwin)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local"
HB_INSTALL_GROUP="wheel"
ETC="/private/etc"
;;
bsd)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local"
HB_INSTALL_GROUP="wheel"
;;
linux)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local"
;;
sunos)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/opt"
;;
haiku)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/boot/common"
;;
win)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local"
HB_INSTALL_GROUP="0"
hb_sysdir="no"
hb_instfile=""
;;
dos)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/${name}"
hb_sysdir="no"
hb_instfile=""
hb_archfile="${name}.tgz"
HB_INST_PKGPREF="$TMPDIR/hb-$$"
;;
*)
[ -z "$HB_INSTALL_PREFIX" ] && HB_INSTALL_PREFIX="/usr/local"
;;
esac
export HB_INST_PKGPREF
# Select the platform-specific command names
MAKE=make
TAR=tar
hb_gnutar=yes
if gtar --version >/dev/null 2>&1; then
TAR=gtar
elif ! tar --version >/dev/null 2>&1; then
hb_gnutar=no
echo "Warning!!! Cannot find GNU TAR"
else
# tar is mapped to bsdtar starting OS X 10.6
case `tar --version` in
*bsdtar*) hb_gnutar=no ;;
esac
fi
if gmake --version >/dev/null 2>&1; then
MAKE=gmake
elif ! make --version >/dev/null 2>&1; then
echo "Warning!!! Cannot find GNU MAKE"
fi
# build
umask 022
$MAKE clean "$@" || exit
$MAKE "$@" || exit
# install
rm -fR "${HB_INST_PKGPREF}"
$MAKE install "$@" || exit
if [ "${hb_sysdir}" = "yes" ]; then
mkdir -p $HB_INST_PKGPREF$ETC/harbour
cp -f src/rtl/gtcrs/hb-charmap.def $HB_INST_PKGPREF$ETC/harbour/hb-charmap.def
chmod 644 $HB_INST_PKGPREF$ETC/harbour/hb-charmap.def
fi
CURDIR=$(pwd)
if [ $hb_gnutar = yes ]; then
(cd "${HB_INST_PKGPREF}"; $TAR czvf "${CURDIR}/${hb_archfile}" --owner=${HB_INSTALL_OWNER} --group=${HB_INSTALL_GROUP} .)
UNTAR_OPT=xvpf
elif [ $TAR = bsdtar ]; then
(cd "${HB_INST_PKGPREF}"; $TAR czvf "${CURDIR}/${hb_archfile}" .)
UNTAR_OPT=xvpf
else
(cd "${HB_INST_PKGPREF}"; $TAR covf - . | gzip > "${CURDIR}/${hb_archfile}")
UNTAR_OPT=xvf
fi
rm -fR "${HB_INST_PKGPREF}"
if [ -n "${hb_instfile}" ]; then
if [ "${HB_PLATFORM}" = linux ]; then
DO_LDCONFIG="&& ldconfig"
else
DO_LDCONFIG=""
fi
# In the generated script use tar instead of $TAR because we can't be sure
# if $TAR exists in the installation environment
size=`wc -c "${hb_archfile}"|(read size file; echo $size)`
cat > "${hb_instfile}" <<EOF
#!/bin/sh
[ "\$BASH" ] || exec bash \`which \$0\` \${1+"\$@"}
if [ "\$1" = "--extract" ]; then
tail -c $size "\$0" > "${hb_archfile}"
exit
fi
if [ \`id -u\` != 0 ]; then
echo "This package has to be installed from root account."
exit 1
fi
echo "Do you want to install ${name} (y/n)"
read ASK
if [ "\${ASK}" != "y" ] && [ "\${ASK}" != "Y" ]; then
exit 1
fi
(tail -c $size "\$0" | gzip -cd | (cd /;tar ${UNTAR_OPT} -)) ${DO_LDCONFIG}
exit \$?
HB_INST_EOF
EOF
cat "${hb_archfile}" >> "${hb_instfile}"
chmod +x "${hb_instfile}"
rm -f "${hb_archfile}"
fi