Installation and archiving scripts

This commit is contained in:
Glenn Maynard
2003-09-16 21:48:53 +00:00
parent e57bddddb9
commit 17af33f7b5
3 changed files with 330 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
set -e
if test "$1" = ""; then
echo Expected argument
exit 1
fi
if ! test -e $1; then
echo "File $1 doesn't exist"
exit 1
fi
PRODUCT=`cat $1 | grep -w '^#define PRODUCT_NAME' | sed -e 's/.*"\(.*\)"/\1/'`
VER=`cat $1 | grep -w '^#define PRODUCT_VER' | sed -e 's/.*"\(.*\)"/\1/'`
# "3.9 alpha 1" -> "3.9 alpha1"
VER=`echo "$VER" | sed -e 's/alpha /alpha/'`
# "3.9 alpha1" -> "3.9-alpha1"
VER=`echo "$VER" | sed -e 's/ /-/g'`
PRODUCTVER="$PRODUCT-$VER"
+252
View File
@@ -0,0 +1,252 @@
#!/usr/bin/perl
use warnings;
use strict;
sub ReadCommand
{
while(my $line = <F>)
{
chomp $line;
$line =~ s/[;#].*//;
$line =~ s/^ *//;
$line =~ s/ *$//;
# \foo\bar -> /foo/bar
$line =~ s-\\-/-g;
my $cur = 0;
my $quote = 0; # none
my @ret;
for(my $i = 0; $i < length($line); ++$i)
{
my $ch = substr($line,$i,1);
# Check for quotes. Any quote causes the parameter to
# be created; eg:
# Foo "" bar
# is "Foo", "", "bar".
if( $quote == 0 && $ch eq '\'' )
{
$ret[$cur] .= "";
$quote = 1;
next;
}
elsif( $quote == 0 && $ch eq '"' )
{
$ret[$cur] .= "";
$quote = 2;
next;
}
elsif( $quote == 1 && $ch eq '\'' )
{
$ret[$cur] .= "";
$quote = 0;
next;
}
elsif( $quote == 2 && $ch eq '"' )
{
$ret[$cur] .= "";
$quote = 0;
next;
}
elsif( $quote == 0 && $ch eq ' ' )
{
if( defined $ret[$cur] )
{
++$cur;
}
next;
}
$ret[$cur] .= $ch;
}
return @ret;
}
print "guh\n";
return 0;
}
if ($#ARGV == -1)
{
print "Install where? (eg. /usr/games/stepmania)\n";
exit 1;
}
my $instdir = $ARGV[0];
print "Installing to $instdir\n";
# Normally, this script is run after building, which means we probably have a Makefile
# available. Look for it, and pull out vpath, if any, to see where the real source
# directory is.
my $bin_path;
if( -e "Makefile" )
{
my $vpath=`grep 'VPATH =' Makefile`;
chomp $vpath;
if( $vpath =~ /^VPATH = (.*)/ )
{
print "Vpath: $1\n";
$bin_path = `pwd`; # arr?
chomp $bin_path;
$bin_path .= "/src/";
chdir("$1") || die "chdir($1): $!";
}
}
if( !defined($bin_path) )
{
$bin_path="";
}
print "Binary path: $bin_path\n";
open F, "stepmania.nsi" || die "Couldn't open stepmania.nsi: $!";
# Search for the default installation section.
my $FoundSection = 0;
while(!eof(F))
{
my @line=ReadCommand();
$#line == -1 && next;
if( $#line >= 1 && $line[0] eq "Section" && $line[1] eq "" )
{
$FoundSection = 1;
last;
}
}
$FoundSection || die "stepmania.nsi parse error";
my $FoundEnd = 0;
if( ! -d $instdir )
{
mkdir($instdir) || die "mkdir($instdir): $!";
}
my $OutPath = "";
while(!eof(F))
{
my @line=ReadCommand();
$#line == -1 && next;
if ( $line[0] eq "SectionEnd" )
{
$FoundEnd = 1;
last;
}
my $ignore=0;
for( my $i = 0; $i <= $#line; ++$i )
{
$line[$i] =~ s/\$INSTDIR/$instdir/g;
# If any arguments contain $SMPROGRAMS, it's related to the start menu; ignore it.
if( $line[$i] =~ /\$SMPROGRAMS/ )
{
$ignore=1;
}
}
$ignore && next;
# if ( $line[0] eq "CreateDirectory" )
# {
# if( ! -d $line[1] )
# {
# mkdir($line[1]) || die "mkdir($line[1]): $!";
# }
#
# next;
# }
if ( $line[0] eq "SetOutPath" )
{
$OutPath = $line[1];
my @dirs = split /\//, $OutPath;
my $dir = "";
for( my $i = 0; $i <= $#dirs; ++$i )
{
$dir .= $dirs[$i] . "/";
if( ! -d $dir )
{
mkdir($dir) || die "mkdir($dir): $!";
}
}
next;
}
if ( $line[0] eq "File" )
{
my $pos = 1;
my $recurse = 0;
if( $line[$pos] eq "/r" )
{
++$pos;
$recurse = 1;
}
my $fn = $line[$pos];
# Ignore Windows binaries.
if ( $fn =~ /.*dll/i || $fn =~ /.*exe/i || $fn =~ /.*vdi/i )
{
next;
}
my $args="-p";
if( $recurse )
{
$args="$args -r";
}
print "$fn -> $OutPath\n";
system("cp $args \"$fn\" \"$OutPath\"") && die;
next;
}
if ( $line[0] eq "RMDir" )
{
my $pos = 1;
my $recurse = 0;
if( $line[$pos] eq "/r" )
{
++$pos;
$recurse = 1;
}
my $dir = $line[$pos];
my $args="-f";
if( $recurse )
{
$args="$args -r";
}
if( -d $dir )
{
system("rm $args \"$dir\"");
}
next;
}
}
$FoundSection || print "warning: SectionEnd not found\n";
close F;
system("cp -vp \"" . $bin_path . "stepmania\" \"$instdir\"");
if( -e $bin_path . "GtkModule.so" )
{
system("cp -vp \"" . $bin_path . "GtkModule.so\" \"$instdir\"");
}
+55
View File
@@ -0,0 +1,55 @@
#!/bin/bash
set -e
test -e ProductInfo.h && cd ..
if ! test -d src; then
echo Run this script from the top directory.
exit 1
fi
source Utils/GetProductVer.sh src/ProductInfo.h
if test -e $PRODUCTVER; then
echo "\"$PRODUCTVER\" already exists."
exit 1
fi
echo Copying...
mkdir $PRODUCTVER
cp -a autoconf $PRODUCTVER/
cp -a Utils $PRODUCTVER/
cp -a src $PRODUCTVER/
cp BUGS COPYING.txt NEWS README-FIRST.html README-GUIDELINES Makefile.am aclocal.m4 \
autogen.sh configure Makefile.in configure.ac $PRODUCTVER
echo Pruning...
cd $PRODUCTVER/src
# Obsolete and going away:
rm -rf SDL-1.2.5
# Incomplete:
rm -rf Texture Font Generator
# Xbox:
rm -rf SDLx-0.02
# Unused:
rm -rf smlobby
rm -rf SDL_net-1.2.5
# Windows-only stuff. Let's leave some in the archive to make the GPL happy.
# I don't want to spend an extra half hour to upload separate Windows and
# *nix source archives.
#rm -rf mad-0.15.0b
#rm -rf SDL_image-1.2
rm -rf vorbis
rm -rf BaseClasses
rm -rf ddk
rm -rf smpackage
find -type d -name 'CVS' | xargs rm -rf
find -type f -name '*.lib' | xargs rm -rf
cd ../..
echo Archiving...
tar zchvf "$PRODUCTVER".tar.gz $PRODUCTVER/