1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ssbroom_ynh.git synced 2024-09-03 20:26:29 +02:00
ssbroom_ynh/compile_binaries/cross_compile_ssbroom.py
2021-10-19 12:57:07 +02:00

80 lines
3.3 KiB
Python

"""
script to cross-compile go-ssb-room for arm64 and other architectures
before running, run:
- sudo apt install gcc-aarch64-linux-gnu
- sudo apt install gcc-arm-linux-gnueabi
"""
import subprocess
import os
# path to project directory
PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
WORKING_DIR = "/srv/build_ssbroom"
GIT_URL = "https://github.com/ssb-ngi-pointer/go-ssb-room.git"
OUTPUT_DIR = "/srv/files.commoninternet.net"
def pull_repo():
if not os.path.exists(WORKING_DIR):
subprocess.check_call(["git", "clone", GIT_URL, WORKING_DIR])
else:
subprocess.check_call(["git", "pull"], cwd=WORKING_DIR)
def crosscompile_go_ssb_room_for_arm64():
subprocess.check_call(["git", "pull"], cwd=WORKING_DIR)
print("[CROSS-COMPILING go-ssb-room/server]")
subprocess.check_call(["env", "CGO_ENABLED=1", "CC=aarch64-linux-gnu-gcc",
"CC_FOR_TARGET=gcc-aarch64-linux-gnu", "GOOS=linux",
"GOARCH=arm64", "go", "build", "./cmd/server"], cwd=WORKING_DIR)
print("[CROSS-COMPILING go-ssb-room/insert-user]")
subprocess.check_call(["env", "CGO_ENABLED=1", "CC=aarch64-linux-gnu-gcc",
"CC_FOR_TARGET=gcc-aarch64-linux-gnu", "GOOS=linux",
"GOARCH=arm64", "go", "build", "./cmd/insert-user"], cwd=WORKING_DIR)
publish(architecture="aarch64")
def crosscompile_go_ssb_room_for_arm7():
subprocess.check_call(["git", "pull"], cwd=WORKING_DIR)
print("[CROSS-COMPILING for arm7 go-ssb-room/server]")
subprocess.check_call(["env", "CGO_ENABLED=1", "CC=arm-linux-gnueabi-gcc",
"GOOS=linux",
"GOARCH=arm", "GOARM=7", "go", "build", "./cmd/server"], cwd=WORKING_DIR)
print("[CROSS-COMPILING for arm7 go-ssb-room/insert-user]")
subprocess.check_call(["env", "CGO_ENABLED=1", "CC=arm-linux-gnueabi-gcc",
"GOOS=linux",
"GOARCH=arm", "GOARM=7", "go", "build", "./cmd/insert-user"], cwd=WORKING_DIR)
publish(architecture="arm7")
def compile_go_ssb_room():
subprocess.check_call(["git", "pull"], cwd=WORKING_DIR)
print("[COMPILING go-ssb-room/server for amd64]")
subprocess.check_call(["go", "build", "./cmd/server"], cwd=WORKING_DIR)
print("[COMPILING go-ssb-room/insert-user for amd64]")
subprocess.check_call(["go", "build", "./cmd/insert-user"], cwd=WORKING_DIR)
publish(architecture="amd64")
def publish(architecture):
subprocess.check_call(["mkdir", "-p", OUTPUT_DIR])
binaries = ["insert-user", "server"]
output_folder_name = "go-ssb-room_2.0.6_Linux_{}".format(architecture)
output_folder_path = os.path.join(OUTPUT_DIR, output_folder_name)
subprocess.check_call(["mkdir", "-p", output_folder_path])
for binary in binaries:
f_path = os.path.join(WORKING_DIR, binary)
output_path = os.path.join(output_folder_path, binary)
subprocess.check_call(["cp", f_path, output_path])
# create a tar
tar_path = output_folder_path + ".tar.gz"
subprocess.check_call(["tar", "-czvf", tar_path, "-C", output_folder_path, "."])
if __name__ == '__main__':
pull_repo()
crosscompile_go_ssb_room_for_arm64()
crosscompile_go_ssb_room_for_arm7()
compile_go_ssb_room()