]>
git.ipfire.org Git - people/ms/strongswan.git/blob - packaging/utils/disttools.pl
4 # $Id: disttools.pl,v 1.1 2004/03/15 20:35:27 as Exp $
6 # $Log: disttools.pl,v $
7 # Revision 1.1 2004/03/15 20:35:27 as
8 # added files from freeswan-2.04-x509-1.5.3
10 # Revision 1.13 2003/06/17 22:30:06 build
11 # adjusted userid to pick
12 # use key that is offline.
14 # Revision 1.12 2002/09/30 16:02:17 mcr
15 # added handling for date stamp.
17 # Revision 1.11 2002/08/30 01:30:25 mcr
18 # changed code to write maintain local copy of FTP site,
19 # and rsync things up when needed.
21 # Revision 1.10 2002/07/29 05:13:33 mcr
22 # append .gz to patch files before they are signed.
24 # Revision 1.9 2002/07/29 04:02:21 mcr
25 # removed errant ) from tar copy line.
27 # Revision 1.8 2002/07/29 03:57:59 mcr
28 # produce kernel patches as part of the snapshots, candidates
31 # Revision 1.7 2002/06/07 18:23:49 mcr
32 # adjusted sendfiles to use tar to copy rather than scp.
33 # mkcand now prints usage if you don't give it enough arguments.
34 # It also now updates the "CANDIDATE" symlink.
35 # mksnap properly quotes the wildcards in the -name for find.
37 # Revision 1.6 2002/06/03 03:10:58 mcr
38 # "upload" now takes argument to indicate name to
39 # install/upload for the symlink.
41 # Revision 1.5 2002/06/03 02:19:40 mcr
42 # fixed bug in datelettername() - y/sed was not applied to $let,
45 # Revision 1.4 2002/06/03 02:14:16 mcr
46 # die statements are now numbered for easier backtracking.
47 # candidate checks are now done if $candidate arg=1: edit README
48 # and CHANGES file for mkcand.
50 # Revision 1.3 2002/05/30 23:24:22 mcr
51 # working "mksnap" and disttools.pl.
53 # Revision 1.2 2002/05/30 22:20:56 mcr
54 # initial debugging done.
56 # Revision 1.1 2002/05/30 21:24:00 mcr
61 @supportedkernels=("2.0", "2.2", "2.4");
65 print STDERR
"System: ",join(' ',@_)."\n";
76 local($pkgname, $ver)=@_;
79 $name = $pkgname.".k".$ver.".patch";
85 @MoY = ('jan','feb','mar','apr','may','jun',
86 'jul','aug','sep','oct','nov','dec');
88 $letters="abcdefghjklmnpqrstuvwxyz";
90 ($sec, $min, $hour, $mday, $mon, $year) = gmtime(time);
92 $let=substr($letters, $hour-1, 1);
101 $ver=sprintf("%04d%s%02d%s", $year, $MoY[$mon], $mday, $let);
107 $snapname=$prefix.&datelettername
;
112 $envvar=$ENV{'HOME'}."/freeswan-regress-env.sh";
116 open(SHVARS
, $envvar) || die "001: Can not open $envvar: $!\n";
133 local($var,$value)=@_;
135 if(!defined($ENV{$var})) {
141 &defvar
('BTMP', '/btmp');
142 if($ENV{'DEBUGFREESWANDIST'}) {
143 $debug=$ENV{'DEBUGFREESWANDIST'};
150 $lastrel =~ y/\./\_/;
152 $ENV{'PGPPATH'}=$ENV{'SNAPSHOTSIGDIR'}."/BASEPRE$lastrel";
153 $ENV{'PGPNAME'}="build+snap".$lastrel."\@freeswan.org";
160 $tarfile=$pkgname.".tar";
162 $userid=$ENV{'PGPNAME'};
163 &nicesystem
("pgp -sba $tarfile.gz -u $userid -o $tarfile.gz.sig") || die "002: PGP failed: $?\n";
164 &nicesystem
("chmod a+r $tarfile.gz.sig");
166 foreach $ver (@supportedkernels) {
167 $file=&kpatchname
($pkgname,$ver).".gz";
168 &nicesystem
("pgp -sba $file -u $userid -o $file.sig") || die "002: PGP failed: $?\n";
169 &nicesystem
("chmod a+r $file.sig");
174 # this function now does two things:
175 # 1) makes the tar file of old
176 # 2) makes the kernel patch file of new.
179 sub makedisttarfile
{
180 local($tmpdir, $pkgname, $vername, $dirname, $date, $relopt, $candidate)=@_;
183 &nicesystem
("mkdir -p $tmpdir") || die "003: Can not mkdir $tmpdir\n";
184 chdir($tmpdir) || die "004: makedisttarfile: Can not chdir to $tmpdir\n";
186 # nuke anything that was there before
187 &nicesystem
("rm -rf $dirname");
189 if(defined($date) && $date ne '') {
190 $minusD="-D \"${date}\"";
193 print "cvs -Q export $minusD ${relopt} -d ${dirname} freeswan\n";
195 &nicesystem
("cvs -Q export $minusD ${relopt} -d ${dirname} freeswan") || die "005: CVS failed!\n";
197 chdir($dirname) || die "006: Can not chdir to $dirname\n";
199 open(VERSIONFILE
, ">Makefile.ver") || die "007: failed to open Makefile.ver\n";
200 print VERSIONFILE
"IPSECVERSION=".$vername."\n";
204 open(README
, "README") || die "008: Can not edit README: $!\n";
205 $nreadme="README.$$";
206 open(NREADME
, ">$nreadme") || die "009: Can not write README: $!\n";
213 # print STDERR "README not ready, run prepcand first\n";
221 unlink("README") || die "010: Can not remove README: $!\n";
222 rename("$nreadme", "README") || die "011: Can not rename $nreadme to README: $!\n";
224 # now edit CHANGES file
225 open(CHANGES
, "CHANGES") || die "012: Can not edit README: $!\n";
226 $nchanges="CHANGES.$$";
227 open(NCHANGES
,">$nchanges") || die "013: Can not write README: $!\n";
231 if(/since last release/) {
232 die "CHANGES not ready, run prepcand first";
241 unlink("CHANGES") || die "014: Can not remove CHANGES: $!\n";
242 rename("$nchanges", "CHANGES") || die "015: Can not rename $nreadme to README: $!\n";
245 &nicesystem
("make -f dtrmakefile -s snapready") || die "016: failed to make snapshot ready for distribution: $?\n";
247 chdir("..") || die "017: failed to go to parent dir: $!\n";
249 unlink("$pkgname.tar");
250 unlink("$pkgname.tar.gz");
251 unlink("$pkgname.tar.gz.md5");
253 &nicesystem
("tar -cf $pkgname.tar $dirname") || die "018: Failed to tar file: $?\n";
255 # make the kernelpatch for each of 2.0, 2.2, and 2.4.
256 foreach $ver (@supportedkernels) {
257 $file=&kpatchname
($pkgname,$ver);
258 &nicesystem
("make -C $dirname kernelpatch$ver >$file");
259 &nicesystem
("gzip -9 $file");
262 &nicesystem
("rm -rf $dirname") || warn "failed to cleanup $dirname\n";
264 &nicesystem
("gzip -9 $pkgname.tar") || die "019: gzip died: $?\n";
266 &nicesystem
("ls -l $pkgname.tar.gz");
268 &nicesystem
("md5sum $pkgname.tar.gz >$pkgname.tar.gz.md5");
269 &nicesystem
("chmod a+r $pkgname.tar.gz");
275 local($file, $localroot);
277 if($ENV{'DEV_DIR'}) { $localroot=$ENV{'DEV_DIR'}; } else { $localroot=$ENV{'LOCAL_ARCHIVE'}; }
279 foreach $file (@thefiles) {
281 if(!($dir =~ s
,(.*)/([^/]*),\
1,)) {
287 &nicesystem
("tar -C $dir -c -f - $file | tar -C ${localroot} -x -f -");
295 $distuser=$ENV{'DISTUSER'};
296 $disthost=$ENV{'DISTHOST'};
297 $distdir =$ENV{'DISTDIR'};
300 &nicesystem
("$ssh -l $distuser $disthost '$cmd'");
305 local($pkgname, $symlinkname)=@_;
309 if($ENV{'DEV_DIR'}) { $localroot=$ENV{'DEV_DIR'}; } else { $localroot=$ENV{'LOCAL_ARCHIVE'}; }
311 &sendfiles
("$pkgname.tar.gz",
312 "$pkgname.tar.gz.sig",
313 "$pkgname.tar.gz.md5");
315 foreach $ver (@supportedkernels) {
316 $file=&kpatchname
($pkgname,$ver).".gz";
317 &sendfiles
($file, "$file.sig");
320 if(defined($symlinkname)) {
321 &sendfiles
($symlinkname.".tar.gz.md5");
322 &nicesystem
("cd $localroot && ln -f -s $pkgname.tar.gz $symlinkname.tar.gz && ln -f -s $pkgname.tar.gz.sig $symlinkname.tar.gz.sig");
324 foreach $ver (@supportedkernels) {
325 $file=&kpatchname
($pkgname,$ver);
326 $newname=&kpatchname
($symlinkname,$ver);
327 &nicesystem
("cd $localroot && ln -f -s $file.gz $newname.gz && ln -f -s $file.gz.sig $newname.gz.sig");
335 local($localroot, $distuser, $disthost, $distdir, $spoolhost, $spooluser);
336 local($masterhost, $masteruser, $masterdir);
338 $localroot=$ENV{'LOCAL_ARCHIVE'};
339 $distuser=$ENV{'DISTUSER'};
340 $disthost=$ENV{'DISTHOST'};
341 $distdir =$ENV{'DISTDIR'};
343 $masterhost = $ENV{'MASTERHOST'};
344 $masteruser = $ENV{'MASTERUSER'};
345 $masterdir = $ENV{'MASTERDIR'};
347 # sync stuff to distribution site.
348 &nicesystem
("rsync -e $ssh -r --delete -a -v -c $localroot/ $masteruser\@$masterhost:$masterdir/");
350 # sync stuff to xs4all site.
351 &nicesystem
(print "rsync -e $ssh -r --delete -a -v -c $localroot/ $distuser\@$disthost:$distdir/");
352 &nicesystem
("rsync -e $ssh -r --delete -a -v -c $localroot/ $distuser\@$disthost:$distdir/");