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