1#!/usr/bin/env python3 2import os 3import sys 4import platform 5import subprocess 6 7p = subprocess.Popen(["file", "-L", "/bin/sh"], stdout=subprocess.PIPE) 8exe_info = p.stdout.read().decode("UTF-8") 9if "386" in exe_info: 10 arch = "x86" 11elif "x86-64" in exe_info: 12 arch = "x86-64" 13else: 14 raise Exception("unrecognized arch " + repr(exe_info)) 15 16if os.environ.get("STEAMOS", ""): 17 os_name = "steamos" 18else: 19 os_name = "linux" 20 os_name_pretty = "Linux" 21 22version = sys.argv[1] 23package_name = "fs-uae_{0}_{1}_{2}".format(version, os_name, arch) 24package_name_2 = "FS-UAE_{0}_{1}_{2}".format(version, os_name_pretty, arch) 25package_dir = "../{}/FS-UAE/{}/{}".format(os_name, os_name_pretty, arch) 26 27 28def s(command): 29 c = command.format(**globals()) 30 print(c) 31 assert os.system(c) == 0 32 33 34def wrap(name, target=None, args=None): 35 if target is None: 36 target = name + ".bin" 37 os.rename(os.path.join(package_dir, name), 38 os.path.join(package_dir, target)) 39 if args is None: 40 args = ["$@"] 41 path = os.path.join(package_dir, name) 42 with open(path, "w") as f: 43 f.write("#!/bin/sh\n") 44 f.write("MYDIR=$(dirname \"$0\")\n") 45 # f.write("export LD_LIBRARY_PATH=\"$MYDIR:$LD_LIBRARY_PATH\"\n") 46 command = "\"$MYDIR/{0}\"".format(target) 47 for arg in args: 48 command += " \"{0}\"".format(arg) 49 if os_name == "steamos": 50 # if arch == "i686": 51 if arch == "x86": 52 bin_dir = "bin32" 53 # elif arch == "amd64": 54 elif arch == "x86-64": 55 bin_dir = "bin32" 56 else: 57 raise Exception("unsupported steamos arch?") 58 f.write("if [ -e \"$HOME/.steam/{0}/steam-runtime/" 59 "run.sh\" ]; then\n".format(bin_dir)) 60 f.write("RUN_SH=\"$HOME/.steam/{0}/steam-runtime/" 61 "run.sh\"\n".format(bin_dir)) 62 f.write("else\n") 63 f.write("RUN_SH=\"/home/steam/.steam/{0}/steam-runtime/" 64 "run.sh\"\n".format(bin_dir)) 65 f.write("fi\n") 66 f.write("exec $RUN_SH {0}\n".format(command)) 67 else: 68 f.write("exec {0}\n".format(command)) 69 os.chmod(path, 0o755) 70 71 72s("rm -Rf FS-UAE") 73s("mkdir -p {package_dir}") 74if os.environ.get("BUILD") == "0": 75 pass 76else: 77 s("cd ../.. && ./configure") 78 s("make -C ../..") 79 80s("cp -a ../../fs-uae {package_dir}/fs-uae") 81# s("cp -a ../../fs-uae.dat {package_dir}/fs-uae.dat") 82# s("PYTHONPATH=../../../fs-uae-launcher:../../../../fs-uae-launcher " 83# "python3 -m fspy.zipfile deterministic {package_dir}/fs-uae.dat") 84s("cp -a ../../fs-uae-device-helper {package_dir}/fs-uae-device-helper") 85 86s("mkdir FS-UAE/Data") 87s("cp -a ../../fs-uae.dat FS-UAE/Data/fs-uae.dat") 88# FIXME: Disabled for now since it references another project 89# s("PYTHONPATH=../../../fs-uae-launcher:../../../../fs-uae-launcher " 90# "python3 -m fspy.zipfile deterministic FS-UAE/Data/fs-uae.dat") 91# s("mkdir -p {package_dir}/share") 92# s("cp -a ../../share/locale {package_dir}/share/locale") 93s("cp -a ../../share/locale FS-UAE/Data/Locale") 94# s("mkdir -p {package_dir}/share/fs-uae") 95# s("touch {package_dir}/share/fs-uae/share-dir") 96 97s("cp -a ../../licenses FS-UAE/Licenses") 98s("cp -a ../../README FS-UAE/ReadMe.txt") 99s("./standalone-linux.py --strip --rpath='$ORIGIN' {package_dir}") 100s("find {package_dir} -name '*.standalone' -delete") 101s("echo {version} > FS-UAE/Version.txt") 102s("echo {version} > {package_dir}/Version.txt") 103 104if os_name == "steamos": 105 wrap("fs-uae") 106 wrap("fs-uae-device-helper") 107 108if os.environ.get("PACKAGE", "") != "0": 109 # s("cd {package_dir} && tar Jcfv ../../../{package_name}.tar.xz *") 110 s("tar Jcfv ../../{package_name}.tar.xz FS-UAE") 111 print(package_name) 112 s("cp ../../{package_name}.tar.xz ../../{package_name_2}.tar.xz") 113 print(package_name_2) 114print("OK") 115 116#s("rm -Rf {dbg_package_dir}") 117#s("mkdir {dbg_package_dir}") 118#s("cp -a ../../fs-uae.dbg {dbg_package_dir}/") 119#s("cp -a ../../fs-uae-device-helper.dbg {dbg_package_dir}/") 120#s("cd {dbg_package_dir} && tar Jcfv ../../../{dbg_package_dir}.tar.xz *") 121