From 17af33f7b53fae5a2b30d9fbb1bcc788f0780ebe Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 16 Sep 2003 21:48:53 +0000 Subject: [PATCH] Installation and archiving scripts --- stepmania/Utils/GetProductVer.sh | 23 +++ stepmania/Utils/install-stepmania.pl | 252 +++++++++++++++++++++++++++ stepmania/Utils/make-src-archive.sh | 55 ++++++ 3 files changed, 330 insertions(+) create mode 100755 stepmania/Utils/GetProductVer.sh create mode 100755 stepmania/Utils/install-stepmania.pl create mode 100755 stepmania/Utils/make-src-archive.sh diff --git a/stepmania/Utils/GetProductVer.sh b/stepmania/Utils/GetProductVer.sh new file mode 100755 index 0000000000..83adf19785 --- /dev/null +++ b/stepmania/Utils/GetProductVer.sh @@ -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" + diff --git a/stepmania/Utils/install-stepmania.pl b/stepmania/Utils/install-stepmania.pl new file mode 100755 index 0000000000..3c232b23ca --- /dev/null +++ b/stepmania/Utils/install-stepmania.pl @@ -0,0 +1,252 @@ +#!/usr/bin/perl +use warnings; +use strict; + +sub ReadCommand +{ + while(my $line = ) + { + 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\""); +} + + diff --git a/stepmania/Utils/make-src-archive.sh b/stepmania/Utils/make-src-archive.sh new file mode 100755 index 0000000000..4ecb658616 --- /dev/null +++ b/stepmania/Utils/make-src-archive.sh @@ -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/ +