source: MondoRescue/trunk/tools/svn2build@ 900

Last change on this file since 900 was 900, checked in by Bruno Cornec, 17 years ago

Huge patch to introduce low level functions that will bw used everywhere (mr_free, mr_asprintf, ...)
Nearly linking now due to that.

  • Property svn:executable set to *
File size: 4.0 KB
Line 
1#!/bin/bash
2#
3# Creates build environment and files for packages creation from SVN repository
4#
5# $Id$
6#
7
8(
9dname=`dirname $0`
10prem=`echo $dname |cut -c1`
11if [ ${prem} == "/" ]; then
12 export TOOLHOME=$dname
13else
14 export TOOLHOME=${PWD}/$dname
15fi
16
17cd $TOOLHOME
18. ./common-env
19. ./svn-env
20
21DEST=${TOPDIR}/${VER}-$TAG
22mkdir -p $DEST
23
24if [ "$1" = "" ]; then
25 c="mondo-doc mindi mindi-busybox mondo"
26else
27 if [ "$1" = "all" ]; then
28 c="mindi-kernel mondo-doc mindi mindi-busybox mondo"
29 else
30 c=$1
31 fi
32fi
33
34# Make it safe for SVN commands
35cd ${TOOLHOME}/..
36
37for p in $c; do
38 v=`cat ${TOOLHOME}/../$p/VERSION`
39 echo "Management of $p $v-$TAG (rev $REVISION)"
40 dest="$DEST/$p-$v"
41 rm -fr $dest
42 svn export ${TOOLHOME}/../$p $dest
43 echo "$REVISION" > $dest/REVISION
44 echo "Generating SVN log file ..."
45 svn log -v ${TOOLHOME}/../$p > $dest/svn.log
46
47 for d in `cat ${TOOLHOME}/DISTROS`; do
48 export ddir=`echo $d | cut -d_ -f1`
49 export dver=`echo $d | cut -d_ -f2`
50 echo "Generating build files for $ddir ($dver)"
51 . $TOOLHOME/distro-env
52
53 ddd=`LANG=C ; date '+%Y-%m-%d'`
54 cat > $MONDOTMP/mondorescue.mc << EOF
55define(\`TTT', ${TAG})dnl
56define(\`RRR', ${TAG}${suf})dnl
57define(\`VVV', ${v})dnl
58define(\`DDD', ${ddd})dnl
59EOF
60
61 mkdir -p $dest/distributions/$ddir $dest/distributions/${ddir}-$dver
62 if [ "$dtype" = "rpm" ]; then
63 if [ -f $dest/distributions/$ddir/spec.m4 ]; then
64 inc=$dest/distributions/$ddir/spec.m4
65 elif [ -f $dest/distributions/$dfam/spec.m4 ]; then
66 inc=$dest/distributions/$dfam/spec.m4
67 else
68 echo "Unable to build the RPM specfile for this distro. Please report to authors"
69 exit -1
70 fi
71 echo "Using $inc customization to build SPEC file"
72
73 $TOOLHOME/mkchangelog.pl $dtype $p $MONDOTMP/$p.spec
74 if [ $? -ne 0 ]; then
75 echo "Unable to create changelog for ${ddir}-$dver/$p.spec"
76 exit -1
77 fi
78 m4 $MONDOTMP/mondorescue.mc $inc $dest/distributions/rpm/$p.spec $MONDOTMP/$p.spec > $dest/distributions/${ddir}-$dver/$p.spec
79
80 rm -f $MONDOTMP/$p.spec
81 elif [ "$dtype" = "ebuild" ]; then
82 m4 $MONDOTMP/mondorescue.mc $dest/distributions/$dfam/$p.ebuild > $dest/distributions/${ddir}-$dver/$p-$v.ebuild
83 elif [ "$dtype" = "deb" ]; then
84 cp -a $dest/distributions/$ddir/* $dest/distributions/${ddir}-$dver
85 m4 $MONDOTMP/mondorescue.mc $dest/distributions/$ddir/rules > $dest/distributions/${ddir}-$dver/rules
86 $TOOLHOME/mkchangelog.pl $dtype $p $dest/distributions/${ddir}-$dver/changelog
87 if [ $? -ne 0 ]; then
88 echo "Unable to create changelog for ${ddir}-$dver/changelog"
89 exit -1
90 fi
91 else
92 echo "Unknown Build"
93 fi
94 done
95
96 # The rest is done there
97 cd $DEST
98 if [ _"`echo $p | grep mondo-doc`" != _"" ]; then
99 cd $dest
100 for f in mondorescue-howto.sgml *8; do
101 m4 $MONDOTMP/mondorescue.mc $f > ${f}.new
102 mv ${f}.new $f
103 done
104 make -f Makefile.howto
105 if [ $? != 0 ]; then
106 exit -1
107 fi
108 make -f Makefile.man
109 if [ $? != 0 ]; then
110 exit -1
111 fi
112 cd ..
113 fi
114
115 if [ _"`echo $p | grep -vE 'kernel|busybox' | grep mindi`" != _"" ]; then
116 v1=`cat ${TOOLHOME}/../mondo-doc/VERSION`
117 if [ ! -d mondo-doc-$v1 ]; then
118 echo "mondo-doc should be created before $p"
119 exit -1
120 fi
121 (cd mondo-doc-$v1 ; make -f Makefile.man install-$p INSTALLDIR=../$p-$v)
122 rm -f $dest/rootfs/sbin/parted2fdisk-ia64
123 fi
124 if [ "`echo $p | grep -v doc | grep mondo`" != "" ]; then
125 v1=`cat ${TOOLHOME}/../mondo-doc/VERSION`
126 if [ ! -d mondo-doc-$v1 ]; then
127 echo "mondo-doc should be created before $p"
128 exit -1
129 fi
130 (cd mondo-doc-$v1 ; make -f Makefile.howto install INSTALLDIR=../$p-$v/docs/en ; make -f Makefile.man install-$p INSTALLDIR=../$p-$v/docs/man)
131 (cd $dest ; echo "Bootstraping mondo ... " ; ./bootstrap)
132 fi
133
134 # Finally creates the tar files
135 echo -n "Creating $p tar files (gzip... "
136 tar cfphz ${DEST}/$p-$v.tar.gz $p-$v
137 echo -n " bzip2..."
138 tar cfphj ${DEST}/$p-$v.tar.bz2 $p-$v
139 echo " )"
140done
141
142rm -rf $MONDOTMP
143
144echo "Version delivered :"
145echo "-------------------"
146echo "${VER}-$TAG"
147echo "-------------------"
148echo "${VER}-$TAG" > ${TOPDIR}/LAST
149exit 0
150) 2>&1 | tee /tmp/svn2build.log
Note: See TracBrowser for help on using the repository browser.