mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-17 21:48:19 +00:00
151 lines
3.3 KiB
Python
151 lines
3.3 KiB
Python
import os, sys, shutil, httplib, zipfile
|
|
|
|
name = "teeworlds"
|
|
domain = "www.%s.com" % name
|
|
version = sys.argv[1]
|
|
|
|
|
|
|
|
flag_download = True
|
|
flag_clean = True
|
|
|
|
if os.name == "nt":
|
|
platform = "win32"
|
|
else:
|
|
# get name
|
|
osname = os.popen("uname").readline().strip().lower()
|
|
if osname == "darwin":
|
|
osname = "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 = osname + "_" + arch
|
|
|
|
print "%s-%s-%s" % (name,version, platform)
|
|
|
|
src_package = "%s-%s-src.zip" % (name, version)
|
|
|
|
root_dir = os.getcwd() + "/work"
|
|
src_dir = ""
|
|
|
|
def fetch_file(server, url, local):
|
|
try:
|
|
conn = httplib.HTTPConnection(server)
|
|
print "trying %s%s" % (server, url)
|
|
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(domain, "/files/bam.zip", "bam.zip"):
|
|
if not fetch_file(domain, "/files/beta/bam.zip", "bam.zip"):
|
|
bail("couldn't find source package and couldn't download it")
|
|
|
|
print "*** downloading %s source package ***" % name
|
|
if not fetch_file(domain, "/files/%s" % src_package, src_package):
|
|
if not fetch_file(domain, "/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, name)
|
|
src_dir = name+"/"+ os.listdir(name+"/")[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 the game
|
|
if 1:
|
|
print "*** building %s ***" % name
|
|
os.chdir(src_dir)
|
|
if os.system("%s server_release client_release" % bam_cmd) != 0:
|
|
bail("failed to build %s" % name)
|
|
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 %s"%name)
|
|
final_output = "FAIL"
|
|
for f in os.listdir("."):
|
|
if version in f and platform in f and name 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 ***"
|
|
|
|
|