File: create_lazarus_snapshot_rpm.sh

package info (click to toggle)
lazarus 2.0.10%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 219,188 kB
  • sloc: pascal: 1,867,962; xml: 265,716; cpp: 56,595; sh: 3,005; java: 609; makefile: 568; perl: 297; sql: 222; ansic: 137
file content (112 lines) | stat: -rwxr-xr-x 2,658 bytes parent folder | download | duplicates (12)
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.