From 7292390de5903b96e1f9798fbd8ae8a4ec65b85c Mon Sep 17 00:00:00 2001 From: Martin Ebourne Date: Sat, 4 Mar 2006 01:38:13 +0000 Subject: This is part 2 of a patch from James O'Gorman. This just renames all of the files that configure now substitutes - no changes to any of the files. --- infrastructure/makeparcels.pl.in | 190 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100755 infrastructure/makeparcels.pl.in (limited to 'infrastructure/makeparcels.pl.in') diff --git a/infrastructure/makeparcels.pl.in b/infrastructure/makeparcels.pl.in new file mode 100755 index 00000000..e70dcf29 --- /dev/null +++ b/infrastructure/makeparcels.pl.in @@ -0,0 +1,190 @@ +#!@PERL@ + +use strict; +use lib 'infrastructure'; +use BoxPlatform; + +my @parcels; +my %parcel_contents; + +open PARCELS,"parcels.txt" or die "Can't open parcels file"; +{ + my $cur_parcel = ''; + while() + { + chomp; s/#.+\Z//; s/\s+\Z//; s/\s+/ /g; + next unless m/\S/; + + # omit bits on some platforms? + next if m/\AEND-OMIT/; + if(m/\AOMIT:(.+)/) + { + if($1 eq $build_os or $1 eq $target_os) + { + while() + { + last if m/\AEND-OMIT/; + } + } + next; + } + + if (m'\AONLY:(.+)') + { + my @only_targets = split m'\,', $1; + + if (not grep {$_ eq $build_os or $_ eq $target_os} + @only_targets) + { + while () + { + last if m'\AEND-ONLY'; + } + } + next; + } + next if (m'\AEND-ONLY'); + + # new parcel, or a new parcel definition? + if(m/\A\s+(.+)\Z/) + { + push @{$parcel_contents{$cur_parcel}},$1 + } + else + { + $cur_parcel = $_; + push @parcels,$_; + } + } +} +close PARCELS; + +# create parcels directory +mkdir "parcels",0755; +mkdir "parcels/scripts",0755; + +# write master makefile + +open MAKE,">Makefile" or die "Can't open master Makefile for writing"; + +print MAKE <<__E; +# +# AUTOMATICALLY GENERATED FILE +# do not edit! +# +# + +MAKE = $make_command + +__E + +print MAKE "all:\t",join(' ',map {parcel_target($_)} @parcels),"\n\n"; + +print MAKE "clean:\n"; +for my $parcel (@parcels) +{ + print MAKE "\trm -rf ",parcel_dir($parcel),"\n"; + print MAKE "\trm -f ",parcel_target($parcel),"\n"; +} +print MAKE "\n"; + +print MAKE "test:\trelease/common/test\n\nrelease/common/test:\n\t./runtest.pl ALL release\n\n"; + +my $release_flag = BoxPlatform::make_flag('RELEASE'); + +for my $parcel (@parcels) +{ + my $target = parcel_target($parcel); + print MAKE $target,":\n"; + + my $dir = parcel_dir($parcel); + print MAKE "\ttest -d $dir || mkdir $dir\n"; + + open SCRIPT,">parcels/scripts/install-$parcel" or die "Can't open installer script for $parcel for writing"; + print SCRIPT "#!/bin/sh\n\n"; + + for(@{$parcel_contents{$parcel}}) + { + my ($type,$name) = split /\s+/; + my $optional = ''; + + if ($type eq 'optional') + { + ($optional,$type,$name) = split /\s+/; + } + + if($type eq 'bin') + { + my $exeext = $platform_exe_ext; + print MAKE "\t(cd bin/$name; \$(MAKE) $release_flag)\n"; + print MAKE "\tcp release/bin/$name/$name$exeext $dir\n"; + } + elsif ($type eq 'script') + { + if ($optional) + { + print MAKE "\ttest -r $name && cp $name $dir\n"; + } + else + { + print MAKE "\tcp $name $dir\n"; + } + # remove path from script name + $name =~ m~/([^/]+)\Z~; + $name = $1; + } + + print SCRIPT "install $name $install_into_dir\n"; + } + + close SCRIPT; + + chmod 0755,"parcels/scripts/install-$parcel"; + + my $root = parcel_root($parcel); + print MAKE "\tcp parcels/scripts/install-$parcel $dir\n"; + print MAKE "\t(cd parcels; tar cf - $root | gzip -9 - > $root.tgz )\n"; + + print MAKE "\n"; + + print MAKE "install-$parcel:\n"; + print MAKE "\t(cd $dir; ./install-$parcel)\n\n"; +} + +print MAKE <<__E; +install: + cat local/install.msg + +__E + +close MAKE; + +open INSTALLMSG,">local/install.msg" or die "Can't open install message file for writing"; +print INSTALLMSG <<__E; + +Parcels need to be installed separately, and as root. Type one of the following: + +__E + +for(@parcels) +{ + print INSTALLMSG " $make_command install-".$_."\n"; +} +print INSTALLMSG "\n"; + +close INSTALLMSG; + +sub parcel_root +{ + $product_name.'-'.$product_version.'-'.$_[0].'-'.$target_os +} + +sub parcel_dir +{ + 'parcels/'.parcel_root($_[0]) +} + +sub parcel_target +{ + parcel_dir($_[0]).'.tgz' +} -- cgit v1.2.3