mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-09-01 08:09:48 +02:00
64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
#!/usr/bin/python3
|
|
# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
|
|
from distutils.dir_util import mkpath
|
|
import os
|
|
from pathlib import Path
|
|
from util import run, run_and_capture_output, cd_repo_root_path
|
|
from sys import stdout
|
|
|
|
stdout.reconfigure(encoding='utf-8')
|
|
|
|
def listfiles(path):
|
|
files = []
|
|
extensions = ('.dylib', '.so','')
|
|
ignored = ('qmldir')
|
|
print(f"WALK: {path}")
|
|
for dirName, subdirList, fileList in os.walk(path):
|
|
dir = dirName.replace(path, '')
|
|
for fname in fileList:
|
|
if Path(fname).suffix in extensions and not fname in ignored:
|
|
file = path + os.path.join(dir, fname)
|
|
if(os.path.isfile(file)):
|
|
files.append(file)
|
|
if os.path.islink(file):
|
|
print(f"Warning: file {file} is a symlink!")
|
|
print("Symlink target: ", os.readlink(file))
|
|
return files
|
|
|
|
# Merges x64 and arm64 build into universal
|
|
def run_lipo() :
|
|
root_path = cd_repo_root_path()
|
|
|
|
# Looks like it is ok the contain symlinks otherwise we get these errors for qml plugins:
|
|
# bundle format is ambiguous (could be app or framework)
|
|
# https://bugreports.qt.io/browse/QTBUG-101338
|
|
run("cp -a build-x64-osx-release build-universal-osx-release",root_path)
|
|
|
|
apps = ["ScreenPlay","ScreenPlayWallpaper", "ScreenPlayWidget"]
|
|
for app in apps:
|
|
arm64_dir = str(Path.joinpath(root_path, f"build-arm64-osx-release/bin/ScreenPlay.app/Contents/MacOS/{app}"))
|
|
x64_dir = str(Path.joinpath(root_path, f"build-x64-osx-release/bin/ScreenPlay.app/Contents/MacOS/{app}"))
|
|
universal_dir = str(Path.joinpath(root_path, f"build-universal-osx-release/bin/ScreenPlay.app/Contents/MacOS/{app}"))
|
|
run(f"lipo -create {arm64_dir} {x64_dir} -output {universal_dir}")
|
|
run(f"lipo -info {universal_dir}")
|
|
|
|
def check_fat_binary():
|
|
# Make sure the script is always started from the same folder
|
|
root_path = Path.cwd()
|
|
if root_path.name == "Tools":
|
|
root_path = root_path.parent
|
|
print(f"Change root directory to: {root_path}")
|
|
os.chdir(root_path)
|
|
|
|
dir = 'build-universal-osx-release/bin/'
|
|
files = listfiles(str(Path.joinpath(root_path, dir)))
|
|
|
|
for file in files:
|
|
out = run_and_capture_output(f"lipo -info {file}")
|
|
if out.startswith('Non-fat'):
|
|
print(out)
|
|
|
|
if __name__ == "__main__":
|
|
run_lipo()
|
|
check_fat_binary()
|