Installation and archiving scripts
This commit is contained in:
Executable
+23
@@ -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"
|
||||
|
||||
Executable
+252
@@ -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\"");
|
||||
}
|
||||
|
||||
|
||||
Executable
+55
@@ -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/
|
||||
|
||||
Reference in New Issue
Block a user