Hopefully beat the OSX build into working.

This commit is contained in:
David Given
2025-04-24 01:16:54 +02:00
parent 42aec98368
commit 8a2a58b1a5
4 changed files with 65 additions and 39 deletions

View File

@@ -26,7 +26,7 @@ def main():
print("link", sf)
os.makedirs(dirname(sf), exist_ok=True)
try:
os.link(abspath(f), sf)
os.symlink(abspath(f), sf)
except PermissionError:
shutil.copy(f, sf)

25
build/_zip.py Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/python3
from os.path import *
import argparse
import os
from zipfile import ZipFile
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-z", "--zipfile")
parser.add_argument("-v", "--verbose", action="store_true")
parser.add_argument("-f", "--file", nargs=2, action="append")
args = parser.parse_args()
assert args.zipfile, "You must specify a zipfile to create"
with ZipFile(args.zipfile, mode="w") as zf:
for zipname, filename in args.file:
if args.verbose:
print(filename, "->", zipname)
zf.write(filename, arcname=zipname)
main()

View File

@@ -1,6 +1,9 @@
from build.ab import simplerule, simplerule
from build.utils import objectify
from build.c import clibrary
from build.zip import zip
from glob import glob
from os.path import *
icons = ["fluxfile", "hardware", "icon", "imagefile"]
@@ -15,24 +18,17 @@ clibrary(
)
simplerule(
name="fluxengine_iconset",
name="fluxengine_icns",
ins=["./icon.png"],
outs=["=fluxengine.iconset"],
outs=["=fluxengine.icns"],
commands=[
"mkdir -p $[outs[0]]",
"sips -z 64 64 $[ins[0]] --out $[outs[0]]/icon_32x32@2x.png > /dev/null",
"mkdir -p fluxengine.iconset",
"sips -z 64 64 $[ins[0]] --out fluxengine.iconset/icon_32x32@2x.png > /dev/null",
"iconutil -c icns -o $[outs[0]] fluxengine.iconset",
],
label="ICONSET",
)
simplerule(
name="fluxengine_icns",
ins=[".+fluxengine_iconset"],
outs=["=fluxengine.icns"],
commands=["iconutil -c icns -o $[outs[0]] $[ins[0]]"],
label="ICONUTIL",
)
simplerule(
name="fluxengine_ico",
ins=["./icon.png"],
@@ -40,3 +36,18 @@ simplerule(
commands=["png2ico $[outs[0]] $[ins[0]]"],
label="MAKEICON",
)
template_files = [
f
for f in glob(
"**", recursive=True, root_dir="extras/FluxEngine.app.template"
)
if isfile(join("extras/FluxEngine.app.template", f))
]
zip(
name="fluxengine_template",
items={
join("FluxEngine.app", k): join("extras/FluxEngine.app.template", k)
for k in template_files
},
)

View File

@@ -58,38 +58,28 @@ cxxprogram(
if config.osx:
simplerule(
name="fluxengine_pkg",
ins=[".+fluxengine_app"],
outs=["=FluxEngine.pkg"],
commands=[
"pkgbuild --quiet --install-location /Applications --component $[ins[0]] $[outs[0]]"
],
label="PKGBUILD",
)
simplerule(
name="fluxengine_app",
ins=[
".+gui",
"extras+fluxengine_icns",
"extras/FluxEngine.app.template/",
"extras+fluxengine_template",
],
outs=["=FluxEngine.app"],
outs=["=FluxEngine.pkg"],
commands=[
"rm -rf $[outs[0]]",
"cp -a $[ins[2]] $[outs[0]]",
"touch $[outs[0]]",
"cp $[ins[0]] $[outs[0]]/Contents/MacOS/fluxengine-gui",
"mkdir -p $[outs[0]]/Contents/Resources",
"cp $[ins[1]] $[outs[0]]/Contents/Resources/FluxEngine.icns",
"dylibbundler -of -x $[outs[0]]/Contents/MacOS/fluxengine-gui -b -d $[outs[0]]/Contents/libs -cd > /dev/null",
"cp $$(brew --prefix wxwidgets)/README.md $[outs[0]]/Contents/libs/wxWidgets.md",
"cp $$(brew --prefix protobuf)/LICENSE $[outs[0]]/Contents/libs/protobuf.txt",
"cp $$(brew --prefix fmt)/LICENSE* $[outs[0]]/Contents/libs/fmt.rst",
"cp $$(brew --prefix libpng)/LICENSE $[outs[0]]/Contents/libs/libpng.txt",
"cp $$(brew --prefix libjpeg)/README $[outs[0]]/Contents/libs/libjpeg.txt",
"cp $$(brew --prefix abseil)/LICENSE $[outs[0]]/Contents/libs/abseil.txt",
"cp $$(brew --prefix libtiff)/LICENSE.md $[outs[0]]/Contents/libs/libtiff.txt",
"cp $$(brew --prefix zstd)/LICENSE $[outs[0]]/Contents/libs/zstd.txt",
"unzip -q $[ins[2]]", # creates FluxEngine.app
"cp $[ins[0]] FluxEngine.app/Contents/MacOS/fluxengine-gui",
"mkdir -p FluxEngine.app/Contents/Resources",
"cp $[ins[1]] FluxEngine.app/Contents/Resources/FluxEngine.icns",
"dylibbundler -of -x FluxEngine.app/Contents/MacOS/fluxengine-gui -b -d FluxEngine.app/Contents/libs -cd > /dev/null",
"cp $$(brew --prefix wxwidgets)/README.md FluxEngine.app/Contents/libs/wxWidgets.md",
"cp $$(brew --prefix protobuf)/LICENSE FluxEngine.app/Contents/libs/protobuf.txt",
"cp $$(brew --prefix fmt)/LICENSE* FluxEngine.app/Contents/libs/fmt.rst",
"cp $$(brew --prefix libpng)/LICENSE FluxEngine.app/Contents/libs/libpng.txt",
"cp $$(brew --prefix libjpeg)/README FluxEngine.app/Contents/libs/libjpeg.txt",
"cp $$(brew --prefix abseil)/LICENSE FluxEngine.app/Contents/libs/abseil.txt",
"cp $$(brew --prefix libtiff)/LICENSE.md FluxEngine.app/Contents/libs/libtiff.txt",
"cp $$(brew --prefix zstd)/LICENSE FluxEngine.app/Contents/libs/zstd.txt",
"pkgbuild --quiet --install-location /Applications --component FluxEngine.app $[outs[0]]",
],
label="MKAPP",
)