lazarus/tools/install/macosx/makefpcsnapshot.sh
mattias f9071f775b install scripts: using ~/tmp instead of /tmp
git-svn-id: trunk@16431 -
2008-09-05 12:00:42 +00:00

154 lines
4.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
set -x
PPC_RELEASE=$1
if [ ! -e "$PPC_RELEASE" ]; then
PPC_RELEASE=/usr/local/lib/fpc/2.0.2/ppcppc
echo "Using default PPC_RELEASE: $PPC_RELEASE"
fi
FPCSVNDIR=$2
if [ ! -d "$FPCSVNDIR" ]; then
FPCSVNDIR=~/src/fpcbuild/2.0.4
echo "Using default FPCSVNDIR: $FPCSVNDIR"
fi
FREEZE=/usr/local/bin/freeze
if [ ! -e "$FREEZE" ]; then
FREEZE=/usr/bin/freeze
fi
if [ ! -e "$FREEZE" ]; then
echo "Cannot find freeze"
fi
HDIUTIL=/usr/bin/hdiutil
UPDATELIST=~/tmp/updatelist
TEMPLATEDIR=`dirname $0`
FPCSOURCEDIR=$FPCSVNDIR/fpcsrc
BUILDDIR=~/tmp/build
FPCBUILDDIR=$BUILDDIR/fpc
INSTALLDIR=~/tmp/fpc
INSTALLFPCDIR=~/fpc
TRASHDIR=~/tmp/trash
PPCARCH=ppcppc
CREATECROSSPPC=0
ARCH=`uname -p`
if [ "$ARCH" = "i386" ]; then
PPCARCH=ppc386
CREATECROSSPPC=1
fi
SVN=`which svn`
if [ ! -e "$SVN" ]; then
SVN=/usr/local/bin/svn
fi
if [ ! -e "$SVN" ]; then
SVN=/sw/bin/svn
fi
if [ ! -e "$SVN" ]; then
echo "Cannot find a svn executable"
fi
DATESTAMP=`date +%Y%m%d`
FPCPACKPROJ=fpc.packproj
cd $FPCSVNDIR
$SVN update
if [ ! -d $BUILDDIR ] ; then
mkdir -p $BUILDDIR
else
if [ -d $FPCBUILDDIR ] ; then
rm -rf $FPCBUILDDIR
fi
fi
$SVN export $FPCSVNDIR $FPCBUILDDIR
if [ ! -d "$FPCBUILDDIR/fpcsrc" ]; then
# old versions of svn did not export external repositories
$SVN export $FPCSVNDIR/fpcsrc $FPCBUILDDIR/fpcsrc
$SVN export $FPCSVNDIR/fpcdocs $FPCBUILDDIR/fpcdocs
fi
cd $FPCBUILDDIR
export NOGDB=1
make distclean PP=$PPC_RELEASE
make build PP=$PPC_RELEASE DATA2INC=$FPCBUILDDIR/fpcsrc/utils/data2inc
COMPILER=$FPCBUILDDIR/fpcsrc/compiler/$PPCARCH
FPCVERSION=`$COMPILER -iV`
FPCFULLVERSION=`$COMPILER -iW`
FPCARCH=`$COMPILER -iSP`
# clean installdir: since I am not root and the install dir can contain files owned by root
# created by a previous freeze, I just move it out of the way
mkdir -p $TRASHDIR
set +e
rm -rf $INSTALLDIR
set -e
if [ -d $INSTALLDIR ]; then
mv $INSTALLDIR $TRASHDIR
fi
mkdir -p $INSTALLDIR
make install PP=$COMPILER INSTALL_PREFIX=$INSTALLDIR
# install for use by lazarus
make -C fpcsrc compiler_install rtl_install packages_install utils_install \
INSTALL_PREFIX=$INSTALLFPCDIR PP=$COMPILER FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake
make -C fpcsrc/compiler installsymlink PP=$COMPILER INSTALL_PREFIX=$INSTALLFPCDIR
if [ $CREATECROSSPPC == 1 ]; then
make all PP=$PPC_RELEASE CPU_TARGET=powerpc CROSSINSTALL=0
CROSSCOMPILER=$FPCBUILDDIR/fpcsrc/compiler/ppcrossppc
make -C fpcsrc compiler_install rtl_install packages_install CPU_TARGET=powerpc FPC=$CROSSCOMPILER CROSSINSTALL=0 \
INSTALL_PREFIX=$INSTALLDIR FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake
# install for use by lazarus
make -C fpcsrc compiler_install rtl_install packages_install CPU_TARGET=powerpc FPC=$CROSSCOMPILER CROSSINSTALL=0 \
INSTALL_PREFIX=$INSTALLFPCDIR FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake EXENAME=ppcppc
#make -C fpcsrc/compiler CPU_TARGET=powerpc installsymlink FPC=$CROSSCOMPILER INSTALL_PREFIX=$INSTALLFPCDIR CROSSINSTALL=0
ln -sf ../lib/fpc/$FPCVERSION/ppcrossppc $INSTALLFPCDIR/bin/ppcppc
ln -sf ../lib/fpc/$FPCVERSION/ppcrossppc $INSTALLDIR/bin/ppcppc
fi
# create symlink using relative paths, make symlinkinstall uses absolute path,
# which then ends up as link to the temporary build path
# on the user's machine after installation
ln -sf ../lib/fpc/$FPCVERSION/$PPCARCH $INSTALLDIR/bin/$PPCARCH
# fill in packproj template.
OLDIFS=$IFS
IFS=.
FPCMAJORVERSION=`set $FPCVERSION; echo $1`
FPCMINORVERSION=`set $FPCVERSION; echo $2$3`
IFS=$OLDIFS
sed -e "s|_PPCARCH_|$PPCARCH|g" -e "s|_FPCSRCDIR_|$FPCSVNDIR|g" \
-e "s|_FPCVERSION_|$FPCVERSION|g" -e "s|_FPCFULLVERSION_|$FPCFULLVERSION|g" \
-e "s|_DATESTAMP_|$DATESTAMP|g" -e s/_FPCMAJORVERSION_/$FPCMAJORVERSION/g \
-e "s/_FPCMINORVERSION_/$FPCMINORVERSION/g" -e "s/_FPCARCH_/$FPCARCH/g" \
$TEMPLATEDIR/$FPCPACKPROJ.template > $INSTALLDIR/$FPCPACKPROJ
# build package
$FREEZE -v $INSTALLDIR/$FPCPACKPROJ
DMGFILE=~/pkg/fpc-$FPCFULLVERSION-$DATESTAMP-$FPCARCH-macosx.dmg
rm -rf $DMGFILE
$HDIUTIL create -anyowners -volname fpc-$FPCVERSION -imagekey zlib-level=9 -format UDZO -srcfolder $INSTALLDIR/build $DMGFILE
if [ -e $DMGFILE ]; then
#update lazarus snapshot web page
echo "$DMGFILE fpc-$FPCFULLVERSION-*-$FPCARCH-macosx.dmg" >> $UPDATELIST
fi