1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#!/usr/bin/env bash
set -x
set -e
#------------------------------------------------------------------------------
# parse parameters
#------------------------------------------------------------------------------
Usage="Usage: $0 <LazarusSrcDir> <FPCFullVersion> [append-revision]"
LazSrcDir=$1
shift
if [ "x$LazSrcDir" = "x" ]; then
echo $Usage
exit -1
fi
if [ ! -d $LazSrcDir/lcl ]; then
echo "The directory $LazSrcDir does not look like a lazarus source directory"
exit -1
fi
if [ ! -d $LazSrcDir/.svn ]; then
echo "The directory $LazSrcDir does not look like a svn working directory"
exit -1
fi
FpcFullVersion=$1
shift
if [ "x$FpcFullVersion" = "x" ]; then
echo $Usage
exit -1
fi
cd $(dirname $0)
if [ "$1" = "append-revision" ]; then
LazVersionPostfix=$(./get_svn_revision_number.sh $LazSrcDir)
if [ -n "$LazVersionPostfix" ]; then
LazVersionPostfix=.$LazVersionPostfix
fi
shift
fi
Date=`date +%Y%m%d`
# get fpc snapshot rpm
RPMDIR=$(rpm/get_rpm_source_dir.sh)
ARCH=`rpm --eval "%{_arch}"`
LIB=`rpm --eval "%{_lib}"`
FPCRPM=$RPMDIR/RPMS/$ARCH/fpc-$FpcFullVersion-$Date.$ARCH.rpm
if [ ! -f $FPCRPM ]; then
echo ERROR: fpc rpm $FPCRPM not available
exit
fi
# extract the fpc snapshot, so we don't need to install it
TmpFPCDir=~/tmp/fpc
if [ -e $TmpFPCDir ]; then
rm -rf $TmpFPCDir
fi
mkdir -p $TmpFPCDir
cd $TmpFPCDir
rpm2cpio $FPCRPM | cpio -id
FPCVersion=`usr/bin/fpc -iV`
FPCFullVersion=`usr/bin/fpc -iW`
usr/$LIB/fpc/$FPCVersion/samplecfg $TmpFPCDir/usr/$LIB/fpc/$FPCVersion .
FPCCfg=$TmpFPCDir/fpc.cfg
export FPCCfg
FPC=$TmpFPCDir/usr/bin/fpc
export FPC
FPCDIR=$TmpFPCDir/usr/$LIB/fpc/$FPCVersion
export FPCDIR
cd -
# create a temporary copy of the lazarus sources for packaging
LazVersion=$(./get_lazarus_version.sh)$LazVersionPostfix
LazRelease=`echo $FPCRPM | sed -e 's/-/_/g'`
TmpLazDir=~/tmp/lazarus
rm -rf $TmpLazDir
echo "extracting Lazarus source from local svn ..."
svn export $LazSrcDir $TmpLazDir
if [ ! -e ../svn2revisioninc ]; then
make -C ../.. tools OPT="-n @$FPCCfg"
fi
../svn2revisioninc $LazSrcDir $TmpLazDir/ide/revision.inc
# create a source tar.gz
cd $TmpLazDir/..
tar -czf $RPMDIR/SOURCES/lazarus-$LazVersion-$Date.tar.gz lazarus
# remove the tempdir
cd -
rm -rf $TmpLazDir
# create spec file
SpecFile=$RPMDIR/SPECS/lazarus-$LazVersion-$Date.spec
cat rpm/lazarus.spec.template | \
sed -e "s/LAZVERSION/$LazVersion/g" \
-e "s/LAZRELEASE/$Date/g" \
-e "s/FPCVERSION/$FPCFullVersion/g" \
-e "s/FPCSRCVERSION/$FPCFullVersion/g" \
> $SpecFile
# build rpm
rpmbuild --target $ARCH -ba $SpecFile --nodeps
# remove the temp fpc dir
rm -rf $TmpFPCDir
# end.
|