source: ProjectBuilder/devel/pb/bin/cms2build.pl@ 4

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

reorg bis

  • Property svn:executable set to *
File size: 5.4 KB
RevLine 
[2]1#!/usr/bin/perl -w
2#
3# Creates build environment and files for packages creation from CMS repository
4#
5# $Id$
6#
7
8use strict;
9use common.pm;
10use proj.pm;
11use cms.pm;
12
13set_env();
14
15VER=`cat ${TOOLHOME}/VERSION`
16TAG=`cat ${TOOLHOME}/TAG`
[3]17my $DEST=$ENV{'TOPDIR'}."/".$VER."-".$TAG
[2]18TEST="false"
19OPT=""
20mkdir -p $DEST
21
22if [ "$1" = "--test" ]; then
23 TEST="true"
24 #OPT="-r BASE"
25 shift
26fi
27
28if [ "$1" = "" ]; then
29 c="$DEFPKG[*]"
30else
31 if [ "$1" = "all" ]; then
32 c="$ALLPKG[*]"
33 else
34 c="$*"
35 fi
36fi
37
38# Make it safe for CMS commands
39cd ${TOOLHOME}/..
40
41for pkg in $c; do
42 p=$PKGDIR[
43 v=`cat ${TOOLHOME}/../$p/VERSION`
44 tag=`cat ${TOOLHOME}/../$p/TAG`
45 echo "Management of $p $v-$tag (rev $REVISION)"
46 dest="$DEST/$p-$v"
47 rm -fr $dest
48 $CMSEXP $OPT ${TOOLHOME}/../$p $dest
49 echo "$REVISION" > $dest/REVISION
50 echo "Generating SVN log file ..."
51 $SVNLOG $OPT -v ${TOOLHOME}/../$p > $dest/history.log
52
53 for d in `cat ${TOOLHOME}/DISTROS`; do
54 export ddir=`echo $d | cut -d_ -f1`
55 export dver=`echo $d | cut -d_ -f2`
56 echo "Generating build files for $ddir ($dver)"
57 . $TOOLHOME/distro-env
58
59 ddd=`LANG=C ; date '+%Y-%m-%d'`
60 cat > $PROJTMP/mondorescue.mc << EOF
61define(\`TTT', ${tag})dnl
62define(\`RRR', ${tag}${suf})dnl
63define(\`VVV', ${v})dnl
64define(\`DDD', ${ddd})dnl
65EOF
66
67 mkdir -p $dest/distributions/$ddir $dest/distributions/${ddir}-$dver
68 if [ "$dtype" = "rpm" ]; then
69 if [ -f $dest/distributions/$ddir/spec.m4 ]; then
70 inc=$dest/distributions/$ddir/spec.m4
71 elif [ -f $dest/distributions/$dfam/spec.m4 ]; then
72 inc=$dest/distributions/$dfam/spec.m4
73 else
74 echo "Unable to build the RPM specfile for this distro. Please report to authors"
75 exit -1
76 fi
77
78 if [ $ddir = "fedora" ]; then
79 $TOOLHOME/mkchangelog.pl fc $p $PROJTMP/$p-fc.spec
80 m4 $PROJTMP/mondorescue.mc $inc $dest/distributions/rpm/$p.spec $MONDOTMP/$p-fc.spec > $dest/distributions/${ddir}-$dver/$p-fc.spec
81 fi
82 $TOOLHOME/mkchangelog.pl $dtype $p $PROJTMP/$p.spec
83 if [ $? -ne 0 ]; then
84 echo "Unable to create changelog for ${ddir}-$dver/$p.spec"
85 exit -1
86 fi
87 m4 $PROJTMP/mondorescue.mc $inc $dest/distributions/rpm/$p.spec $MONDOTMP/$p.spec > $dest/distributions/${ddir}-$dver/$p.spec
88 if [ _"`/bin/arch`" = _"x86_64" ] && [ $ddir = "rhel" ]; then
89 # Bug on x86_64 on _sysconfdir on rhel4 at least
90 perl -pi -e 's~^export CONFDIR=.*~export CONFDIR=/etc~' $dest/distributions/${ddir}-$dver/$p.spec
91 fi
92
93 rm -f $PROJTMP/$p.spec
94 elif [ "$dtype" = "ebuild" ]; then
95 m4 $PROJTMP/mondorescue.mc $dest/distributions/$dfam/$p.ebuild > $dest/distributions/${ddir}-$dver/$p-$v.ebuild
96 elif [ "$dtype" = "tgz" ]; then
97 m4 $PROJTMP/mondorescue.mc $dest/distributions/$dfam/slack-desc > $dest/distributions/${ddir}-$dver/slack-desc
98 elif [ "$dtype" = "port" ]; then
99 m4 $PROJTMP/mondorescue.mc $dest/distributions/$dfam/Makefile > $dest/distributions/${ddir}-$dver/Makefile
100 elif [ "$dtype" = "deb" ]; then
101 if [ -f $dest/distributions/$ddir/rules ]; then
102 cp -a $dest/distributions/$ddir/* $dest/distributions/${ddir}-$dver
103 inc=$dest/distributions/$ddir/rules
104 elif [ -f $dest/distributions/$dfam/rules ]; then
105 cp -a $dest/distributions/$dfam/* $dest/distributions/${ddir}-$dver
106 inc=$dest/distributions/$dfam/rules
107 else
108 echo "Unable to build the .deb build files for this distro. Please report to authors"
109 exit -1
110 fi
111 m4 $PROJTMP/mondorescue.mc $inc > $dest/distributions/${ddir}-$dver/rules
112 $TOOLHOME/mkchangelog.pl $dtype $p $dest/distributions/${ddir}-$dver/changelog
113 if [ $? -ne 0 ]; then
114 echo "Unable to create changelog for ${ddir}-$dver/changelog"
115 exit -1
116 fi
117 else
118 echo "Unknown Build"
119 fi
120 done
121
122 # The rest is done there
123 cd $DEST
124 if [ _"`echo $p | grep mondo-doc`" != _"" ]; then
125 cd $dest
126 for f in mondorescue-howto.sgml *8; do
127 m4 $PROJTMP/mondorescue.mc $f > ${f}.new
128 mv ${f}.new $f
129 done
130 make -f Makefile.howto
131 if [ $? != 0 ]; then
132 exit -1
133 fi
134 make -f Makefile.man
135 if [ $? != 0 ]; then
136 exit -1
137 fi
138 cd ..
139 fi
140 if [ _"`echo $p | grep 'busybox'`" != _"" ]; then
141 cd $dest
142 mv Rules.mak Rules.mak.orig
143 cat Rules.mak.orig | sed "s/^EXTRAVERSION\([\t ]*\):=/EXTRAVERSION\1:=-$tag-r$REVISION/" > Rules.mak
144 cd ..
145 fi
146
147 if [ _"`echo $p | grep -vE 'kernel|busybox' | grep mindi`" != _"" ]; then
148 v1=`cat ${TOOLHOME}/../mondo-doc/VERSION`
149 if [ ! -d mondo-doc-$v1 ]; then
150 echo "mondo-doc should be created before $p"
151 exit -1
152 fi
153 (cd mondo-doc-$v1 ; make -f Makefile.man install-$p INSTALLDIR=../$p-$v)
154 rm -f $dest/rootfs/sbin/parted2fdisk-ia64
155 fi
156 if [ "`echo $p | grep -v doc | grep mondo`" != "" ]; then
157 v1=`cat ${TOOLHOME}/../mondo-doc/VERSION`
158 if [ ! -d mondo-doc-$v1 ]; then
159 echo "mondo-doc should be created before $p"
160 exit -1
161 fi
162 (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)
163 (cd $dest ; echo "Bootstraping mondo ... " ; ./bootstrap)
164 fi
165
166 # Finally creates the tar files
167 echo -n "Creating $p tar files (gzip... "
168 tar cfphz ${DEST}/$p-$v.tar.gz $p-$v
169 if [ $TEST = "false" ]; then
170 echo -n " bzip2..."
171 tar cfphj ${DEST}/$p-$v.tar.bz2 $p-$v
172 fi
173 echo " )"
174 if [ $TEST = "true" ]; then
175 echo "Use source under $DEST/$p-$v"
176 fi
177done
178
179rm -rf $PROJTMP
180
181echo "Version delivered :"
182echo "-------------------"
183echo "${VER}-$TAG"
184echo "-------------------"
185echo "${VER}-$TAG" > ${TOPDIR}/LAST
186exit 0
187) 2>&1 | tee /tmp/cms2build.log
Note: See TracBrowser for help on using the repository browser.