about summary refs log tree commit diff
path: root/scripts/build.py
blob: 4dd413b020fa4861f99a16cce2504dcd7c6b53aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import os, sys, shutil, httplib, zipfile

version = sys.argv[1]

flag_download = True
flag_clean = True

if os.name == "nt":
	platform = "win32"
else:
	# get name
	name = os.popen("uname").readline().strip().lower()
	if name == "darwin":
		name = "osx"
		
	# get arch
	machine = os.popen("uname -m").readline().strip().lower()
	arch = "unknown"
	
	if machine[0] == "i" and machine[2:] == "86":
		arch = "x86"
	elif machine == "x86_64":
		arch = "x86_64"
	elif "power" in machine.lower():
		arch = "ppc"
		
	platform = name + "_" + arch

print "teewars-%s-%s" % (version, platform)

src_package = "teewars-%s-src.zip" % version

root_dir = os.getcwd() + "/work"
src_dir = ""

def fetch_file(server, url, local):
	try:
		conn = httplib.HTTPConnection(server)
		conn.request("GET", url)
		response = conn.getresponse()
		if response.status != 200:
			return False
		
		f = file(local, "wb")
		f.write(response.read())
		f.close()
		conn.close()
		return True
	except:
		pass
	return False

def unzip(filename, where):
	z = zipfile.ZipFile(filename, "r")
	for name in z.namelist():
		try: os.makedirs(where+"/"+os.path.dirname(name))
		except: pass
		f = file(where+"/"+name, "wb")
		f.write(z.read(name))
		f.close()
	z.close()


def path_exist(d):
	try: os.stat(d)
	except: return False
	return True

def bail(reason):
	print reason
	os.chdir(root_dir)
	sys.exit(-1)

# clean
if flag_clean:
	print "*** cleaning ***"
	try: shutil.rmtree("work")
	except: pass
	
# make dir
try: os.mkdir("work")
except: pass

# change dir
os.chdir(root_dir)

# download
if flag_download:
	print "*** downloading bam source package ***"
	if not fetch_file("www.teewars.com", "/files/bam.zip", "bam.zip"):
		if not fetch_file("www.teewars.com", "/files/beta/bam.zip", "bam.zip"):
			bail("couldn't find source package and couldn't download it")
		
	print "*** downloading teewars source package ***"
	if not fetch_file("www.teewars.com", "/files/%s" % src_package, src_package):
		if not fetch_file("www.teewars.com", "/files/beta/%s" % src_package, src_package):
			bail("couldn't find source package and couldn't download it")

# unpack
print "*** unpacking source ***"
unzip("bam.zip", ".")
unzip(src_package, "teewars")
src_dir = "teewars/"+ os.listdir("teewars/")[0]

# build bam
if 1:
	print "*** building bam ***"
	os.chdir("bam")
	output = "bam"
	bam_cmd = "./bam"
	if os.name == "nt":
		if os.system("make_win32_msvc2005.bat") != 0:
			bail("failed to build bam")
		output += ".exe"
		bam_cmd = "bam"
	else:
		if os.system("sh make_unix.sh") != 0:
			bail("failed to build bam")
	os.chdir(root_dir)
	shutil.copy("bam/src/"+output, src_dir+"/"+output)

# build teewars
if 1:
	print "*** building teewars ***"
	os.chdir(src_dir)
	if os.system("%s server_release client_release" % bam_cmd) != 0:
		bail("failed to build teewars")
	os.chdir(root_dir)

# make release
if 1:
	print "*** making release ***"
	os.chdir(src_dir)
	if os.system("python scripts/make_release.py %s %s" % (version, platform)) != 0:
		bail("failed to make a relase of teewars")
	final_output = "FAIL"
	for f in os.listdir("."):
		if version in f and platform in f and "teewars" in f and (".zip" in f or ".tar.gz" in f):
			final_output = f
	os.chdir(root_dir)
	shutil.copy("%s/%s" % (src_dir, final_output), "../"+final_output)

print "*** all done ***"