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) print("link", sf)
os.makedirs(dirname(sf), exist_ok=True) os.makedirs(dirname(sf), exist_ok=True)
try: try:
os.link(abspath(f), sf) os.symlink(abspath(f), sf)
except PermissionError: except PermissionError:
shutil.copy(f, sf) 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.ab import simplerule, simplerule
from build.utils import objectify from build.utils import objectify
from build.c import clibrary from build.c import clibrary
from build.zip import zip
from glob import glob
from os.path import *
icons = ["fluxfile", "hardware", "icon", "imagefile"] icons = ["fluxfile", "hardware", "icon", "imagefile"]
@@ -15,24 +18,17 @@ clibrary(
) )
simplerule( simplerule(
name="fluxengine_iconset", name="fluxengine_icns",
ins=["./icon.png"], ins=["./icon.png"],
outs=["=fluxengine.iconset"], outs=["=fluxengine.icns"],
commands=[ commands=[
"mkdir -p $[outs[0]]", "mkdir -p fluxengine.iconset",
"sips -z 64 64 $[ins[0]] --out $[outs[0]]/icon_32x32@2x.png > /dev/null", "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", label="ICONSET",
) )
simplerule(
name="fluxengine_icns",
ins=[".+fluxengine_iconset"],
outs=["=fluxengine.icns"],
commands=["iconutil -c icns -o $[outs[0]] $[ins[0]]"],
label="ICONUTIL",
)
simplerule( simplerule(
name="fluxengine_ico", name="fluxengine_ico",
ins=["./icon.png"], ins=["./icon.png"],
@@ -40,3 +36,18 @@ simplerule(
commands=["png2ico $[outs[0]] $[ins[0]]"], commands=["png2ico $[outs[0]] $[ins[0]]"],
label="MAKEICON", 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: if config.osx:
simplerule( simplerule(
name="fluxengine_pkg", 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=[ ins=[
".+gui", ".+gui",
"extras+fluxengine_icns", "extras+fluxengine_icns",
"extras/FluxEngine.app.template/", "extras+fluxengine_template",
], ],
outs=["=FluxEngine.app"], outs=["=FluxEngine.pkg"],
commands=[ commands=[
"rm -rf $[outs[0]]", "rm -rf $[outs[0]]",
"cp -a $[ins[2]] $[outs[0]]", "unzip -q $[ins[2]]", # creates FluxEngine.app
"touch $[outs[0]]", "cp $[ins[0]] FluxEngine.app/Contents/MacOS/fluxengine-gui",
"cp $[ins[0]] $[outs[0]]/Contents/MacOS/fluxengine-gui", "mkdir -p FluxEngine.app/Contents/Resources",
"mkdir -p $[outs[0]]/Contents/Resources", "cp $[ins[1]] FluxEngine.app/Contents/Resources/FluxEngine.icns",
"cp $[ins[1]] $[outs[0]]/Contents/Resources/FluxEngine.icns", "dylibbundler -of -x FluxEngine.app/Contents/MacOS/fluxengine-gui -b -d FluxEngine.app/Contents/libs -cd > /dev/null",
"dylibbundler -of -x $[outs[0]]/Contents/MacOS/fluxengine-gui -b -d $[outs[0]]/Contents/libs -cd > /dev/null", "cp $$(brew --prefix wxwidgets)/README.md FluxEngine.app/Contents/libs/wxWidgets.md",
"cp $$(brew --prefix wxwidgets)/README.md $[outs[0]]/Contents/libs/wxWidgets.md", "cp $$(brew --prefix protobuf)/LICENSE FluxEngine.app/Contents/libs/protobuf.txt",
"cp $$(brew --prefix protobuf)/LICENSE $[outs[0]]/Contents/libs/protobuf.txt", "cp $$(brew --prefix fmt)/LICENSE* FluxEngine.app/Contents/libs/fmt.rst",
"cp $$(brew --prefix fmt)/LICENSE* $[outs[0]]/Contents/libs/fmt.rst", "cp $$(brew --prefix libpng)/LICENSE FluxEngine.app/Contents/libs/libpng.txt",
"cp $$(brew --prefix libpng)/LICENSE $[outs[0]]/Contents/libs/libpng.txt", "cp $$(brew --prefix libjpeg)/README FluxEngine.app/Contents/libs/libjpeg.txt",
"cp $$(brew --prefix libjpeg)/README $[outs[0]]/Contents/libs/libjpeg.txt", "cp $$(brew --prefix abseil)/LICENSE FluxEngine.app/Contents/libs/abseil.txt",
"cp $$(brew --prefix abseil)/LICENSE $[outs[0]]/Contents/libs/abseil.txt", "cp $$(brew --prefix libtiff)/LICENSE.md FluxEngine.app/Contents/libs/libtiff.txt",
"cp $$(brew --prefix libtiff)/LICENSE.md $[outs[0]]/Contents/libs/libtiff.txt", "cp $$(brew --prefix zstd)/LICENSE FluxEngine.app/Contents/libs/zstd.txt",
"cp $$(brew --prefix zstd)/LICENSE $[outs[0]]/Contents/libs/zstd.txt", "pkgbuild --quiet --install-location /Applications --component FluxEngine.app $[outs[0]]",
], ],
label="MKAPP", label="MKAPP",
) )