Initial commit.

This commit is contained in:
Asher Baker
2011-07-19 17:07:38 +01:00
commit a67ef4d482
30 changed files with 3539 additions and 0 deletions
+109
View File
@@ -0,0 +1,109 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os
import shutil
import ambuild.osutil as osutil
from ambuild.command import Command
job = AMBuild.AddJob('package')
class DestroyPath(Command):
def __init__(self, folder):
Command.__init__(self)
self.folder = folder
def destroy(self, path):
entries = os.listdir(path)
for entry in entries:
newpath = os.path.join(path, entry)
if os.path.isdir(newpath):
self.destroy(newpath)
os.rmdir(newpath)
elif os.path.isfile(newpath):
os.remove(newpath)
def run(self, runner, job):
runner.PrintOut('rm -rf {0}/*'.format(self.folder))
self.destroy(self.folder)
class CreateFolders(Command):
def __init__(self, folders):
Command.__init__(self)
self.folders = folders
def run(self, runner, job):
for folder in self.folders:
path = os.path.join(*folder)
runner.PrintOut('mkdir {0}'.format(path))
os.makedirs(path)
#Shallow folder copy
class CopyFolder(Command):
def __init__(self, fromList, toList, excludes = []):
Command.__init__(self)
self.fromPath = os.path.join(AMBuild.sourceFolder, *fromList)
self.toPath = os.path.join(*toList)
self.excludes = excludes
def run(self, runner, job):
entries = os.listdir(self.fromPath)
for entry in entries:
if entry in self.excludes:
continue
path = os.path.join(self.fromPath, entry)
if not os.path.isfile(path):
continue
runner.PrintOut('copy {0} to {1}'.format(path, self.toPath))
shutil.copy(path, self.toPath)
#Single file copy
class CopyFile(Command):
def __init__(self, fromFile, toPath):
Command.__init__(self)
self.fromFile = fromFile
self.toPath = toPath
def run(self, runner, job):
runner.PrintOut('copy {0} to {1}'.format(self.fromFile, self.toPath))
shutil.copy(self.fromFile, self.toPath)
folders = [['addons', 'sourcemod', 'extensions'], ['addons', 'sourcemod', 'gamedata'], ['addons', 'sourcemod', 'scripting', 'include']]
#Setup
job.AddCommand(DestroyPath(os.path.join(AMBuild.outputFolder, 'package')))
job.AddCommand(CreateFolders(folders))
#Copy Files
job.AddCommand(CopyFile(os.path.join(AMBuild.sourceFolder, 'connect.games.txt'),
os.path.join('addons', 'sourcemod', 'gamedata')))
job.AddCommand(CopyFile(os.path.join(AMBuild.sourceFolder, 'connect.inc'),
os.path.join('addons', 'sourcemod', 'scripting', 'include')))
job.AddCommand(CopyFile(os.path.join(AMBuild.sourceFolder, 'connect.sp'),
os.path.join('addons', 'sourcemod', 'scripting')))
bincopies = []
def AddNormalLibrary(name, dest):
dest = os.path.join('addons', 'sourcemod', dest)
bincopies.append(CopyFile(os.path.join('..', name, name + osutil.SharedLibSuffix()), dest))
#pdb_list.append(name + '\\' + name + '.pdb')
def AddHL2Library(name, dest):
for i in SM.sdkInfo:
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
AddNormalLibrary(name + '.ext.' + sdk['ext'], dest)
#pdb_list = []
AddHL2Library('connect', 'extensions')
job.AddCommandGroup(bincopies)
#if AMBuild.target['platform'] == 'windows':
# pdblog = open(os.path.join(AMBuild.outputFolder, 'pdblog.txt'), 'wt')
# for pdb in pdb_list:
# pdblog.write(pdb + '\n')
# pdblog.close()
+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/perl
# vim: set ts=2 sw=2 tw=99 noet:
use strict;
use Cwd;
use File::Basename;
use File::Path;
my ($myself, $path) = fileparse($0);
chdir($path);
require 'helpers.pm';
#Go back above build dir
chdir(Build::PathFormat('../..'));
#Get the source path.
our ($root) = getcwd();
rmtree('OUTPUT');
mkdir('OUTPUT') or die("Failed to create output folder: $!\n");
chdir('OUTPUT');
my ($result);
print "Attempting to reconfigure...\n";
#update and configure shiz
if ($^O eq "linux") {
my @sdks = ('sourcemod-1.3', 'mmsource-1.8', 'hl2sdk-ob-valve');
my ($sdk);
foreach $sdk (@sdks) {
print "Updating checkout of ", $sdk, " on ", $^O, "\n";
$result = `hg pull -u /home/builds/common/$sdk`;
print $result;
}
$ENV{'SOURCEMOD13'} = '/home/builds/common/sourcemod-1.3';
$ENV{'MMSOURCE18'} = '/home/builds/common/mmsource-1.8';
$ENV{'HL2SDKOBVALVE'} = '/home/builds/common/hl2sdk-ob-valve';
} elsif ($^O eq "darwin") {
my @sdks = ('sourcemod-1.3', 'mmsource-1.8', 'hl2sdk-ob-valve');
my ($sdk);
foreach $sdk (@sdks) {
print "Updating checkout of ", $sdk, " on ", $^O, "\n";
$result = `hg pull -u /Users/builds/builds/common/$sdk`;
print $result;
}
$ENV{'SOURCEMOD13'} = '/Users/builds/builds/common/sourcemod-1.3';
$ENV{'MMSOURCE18'} = '/Users/builds/builds/common/mmsource-1.8';
$ENV{'HL2SDKOBVALVE'} = '/Users/builds/builds/common/hl2sdk-ob-valve';
} else {
my @sdks = ('sourcemod-1.3', 'mmsource-1.8', 'hl2sdk-ob-valve');
my ($sdk);
foreach $sdk (@sdks) {
print "Updating checkout of ", $sdk, " on ", $^O, "\n";
$result = `hg pull -u C:/Scripts/common/$sdk`;
print $result;
}
$ENV{'SOURCEMOD13'} = 'C:/Scripts/common/sourcemod-1.3';
$ENV{'MMSOURCE18'} = 'C:/Scripts/common/mmsource-1.8';
$ENV{'HL2SDKOBVALVE'} = 'C:/Scripts/common/hl2sdk-ob-valve';
}
#configure AMBuild
if ($^O eq "linux") {
$result = `CC=gcc-4.1 CXX=gcc-4.1 python3.1 ../build/configure.py --enable-optimize`;
} elsif ($^O eq "darwin") {
$result = `CC=gcc-4.2 CXX=gcc-4.2 python3.1 ../build/configure.py --enable-optimize`;
} else {
$result = `C:\\Python31\\Python.exe ..\\build\\configure.py --enable-optimize`;
}
print "$result\n";
if ($? != 0) {
die('Could not configure!');
}
+94
View File
@@ -0,0 +1,94 @@
#!/usr/bin/perl
use strict;
use Cwd;
package Build;
sub HgRevNum
{
my ($path) = (@_);
my ($cd, $text, $rev);
$cd = Cwd::cwd();
chdir($path);
$text = `hg identify -n`;
chdir($cd);
chomp $text;
if ($text =~ /^(\d+)/)
{
return $1;
}
return 0;
}
sub ProductVersion
{
my ($file) = (@_);
my ($version);
open(FILE, $file) or die "Could not open $file: $!\n";
$version = <FILE>;
close(FILE);
chomp $version;
return $version;
}
sub Delete
{
my ($str)=(@_);
if ($^O =~ /MSWin/)
{
Command("del /S /F /Q \"$str\"");
Command("rmdir /S /Q \"$str\"");
} else {
Command("rm -rf $str");
}
return !(-e $str);
}
sub Copy
{
my ($src,$dest)=(@_);
if ($^O =~ /MSWin/)
{
Command("copy \"$src\" \"$dest\" /y");
} else {
Command("cp \"$src\" \"$dest\"");
}
return (-e $dest);
}
sub Move
{
my ($src,$dest)=(@_);
if ($^O =~ /MSWin/)
{
Command("move \"$src\" \"$dest\"");
} else {
Command("mv \"$src\" \"$dest\"");
}
return (-e $dest);
}
sub Command
{
my($cmd)=(@_);
print "$cmd\n";
return `$cmd`;
}
sub PathFormat
{
my ($str)=(@_);
if ($^O =~ /MSWin/)
{
$str =~ s#/#\\#g;
} else {
$str =~ s#\\#/#g;
}
return $str;
}
return 1;
+82
View File
@@ -0,0 +1,82 @@
#!/usr/bin/perl
use strict;
use Cwd;
use File::Basename;
use Net::FTP;
my ($ftp_host, $ftp_user, $ftp_pass, $ftp_path);
$ftp_host = $ARGV[0];
$ftp_user = $ARGV[1];
$ftp_pass = $ARGV[2];
$ftp_path = $ARGV[3];
my ($myself, $path) = fileparse($0);
chdir($path);
require 'helpers.pm';
my ($version);
$version = Build::ProductVersion(Build::PathFormat('product.version'));
$version .= '-hg' . Build::HgRevNum('.');
# Append OS to package version
if ($^O eq "darwin")
{
$version .= '-mac';
}
elsif ($^O =~ /MSWin/)
{
$version .= '-windows';
}
else
{
$version .= '-' . $^O;
}
#Switch to the output folder.
chdir(Build::PathFormat('../../OUTPUT/package'));
my ($filename);
$filename = 'vanillaweps-' . $version;
if ($^O eq "linux")
{
$filename .= '.tar.gz';
print "tar zcvf $filename addons\n";
system("tar zcvf $filename addons");
}
else
{
$filename .= '.zip';
print "zip -r $filename addons\n";
system("zip -r $filename addons");
}
#my ($major,$minor) = ($version =~ /^(\d+)\.(\d+)/);
#$ftp_path .= "/$major.$minor";
my ($ftp);
$ftp = Net::FTP->new($ftp_host, Debug => 0)
or die "Cannot connect to host $ftp_host : $@";
$ftp->login($ftp_user, $ftp_pass)
or die "Cannot connect to host $ftp_host as $ftp_user : " . $ftp->message . "\n";
if ($ftp_path ne '')
{
$ftp->cwd($ftp_path)
or die "Cannot change to folder $ftp_path : " . $ftp->message . "\n";
}
$ftp->binary();
$ftp->put($filename)
or die "Cannot drop file $filename ($ftp_path) : " . $ftp->message . "\n";
$ftp->close();
print "File sent to drop site as $filename -- build succeeded.\n";
exit(0);
+1
View File
@@ -0,0 +1 @@
1.0.0
View File
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/perl
# vim: set ts=2 sw=2 tw=99 noet:
use File::Basename;
my ($myself, $path) = fileparse($0);
chdir($path);
require 'helpers.pm';
chdir('../../OUTPUT');
if ($^O eq "linux" || $^O eq "darwin") {
system("python3.1 build.py 2>&1");
} else {
system("C:\\Python31\\python.exe build.py 2>&1");
}
if ($? != 0)
{
die "Build failed: $!\n";
}
else
{
exit(0);
}