allow environment variable notarytool (sic) overriding `xcrun notarytool`
(currently needed internally for alt builds to be able to use the sign.sh
script, because the notarytool is not in standard path /actually used
XCode 13 for higher macOS version/)
to be able to compile normally without setting std in CFLAGS
+ remove it from macos-14 CI
clang 15 as in macOS 14 doesn't support c23 [[attributes]] such as
[[gnu::always_inline]]
Improves the commit 4136c263 from last week - we usually expect gnu
extensions, although doesn't seem to cause problems in this case (but eg.
the asm keywords won't work /not used here because is arm64/ - __asm__
would be required instead).
compute SHA256 checksums for builds
this is useful at least for 2 reasons:
1. user can ensure that the build comes really from the CI (isn't
tampered)
2. can identify or match version with appropriate action run (the $VERSION
is usually always "continuous", except for releases)
The sha256 sum is currently only show in the protocol, not uploaded
to GH releases - this doesn't seem to be needed because GH currently
already prints the checksum by itself on the download (releases) page.
Skip computing checksum in Win when uplad-artifact is used - the zip
is actually created by the Action so we cannot compute the checksum
on it.
/sbin/sha256sum is not present in CI mac workers for some reason
This simplifies things a bit at the expense that the soundfont is always
included/installed (91 kB).
Added get_data_path() function for generic handling the path to common
data (eg. /usr/local/share/ultragrid if installed). The idea is to catch
all cases - installed (run with absolute or relative path) or run from
inside the source directory in one place.
THe problem seems to be that there is preinstalled pkg-config@0.29.2 in
CI but the version that is being to be installed is an alias for pkgconf.
The problem seems to be cumbersome, because installing pkgconf fails, pkg-config
as well (tries to install pkgconf 2.3.0; installed version of pkg-config
is pkg-config@0.29.2).
So made just a workaround, that will not be needed after the updated
pkg-config (linked to pkgconf) applies to all macos runners (will be
preinstalled).
The problematic package is pkg-config in current macos-13 runner but
pkg-config@0.29.2 in macos-14 image.
suppress `brew list` output
It is used just to check if a package is installed and the output is
print is output to stdout. To stderr is print that it if the package is
not installed.
pkgconf is more modern version and the CI on macos-14 now fails
because both pkg-config and pkgconf (presumably as a dependency) are to
be installed.
The erroa (the beginning, additional info omittedr):
```
==> Pouring pkgconf--2.3.0_1.arm64_sonoma.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /opt/homebrew
Could not symlink bin/pkg-config
Target /opt/homebrew/bin/pkg-config
is a symlink belonging to pkg-config@0.29.2. You can unlink it:
brew unlink pkg-config@0.29.2
```
Both pkgconf and pkg-config can be installed automatically as a dependency
of some other packages so ensure a defined state (both installed,
pkg-config disabled).
needed for DELTACAST, otherwise manpage generation fails with:
```
dyld[40232]: Library not loaded: @rpath/VideoMasterHD.framework/Versions/A/VideoMasterHD
Referenced from: <3D8A8CBA-1094-3538-9770-331DE9A2D6D2> /Users/runner/work/UltraGrid/UltraGrid/bin/uv
Reason: tried: '/usr/local/lib/VideoMasterHD.framework/Versions/A/VideoMasterHD' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/VideoMasterHD.framework/Versions/A/VideoMasterHD' (no such file), '/usr/local/lib/VideoMasterHD.framework/Versions/A/VideoMasterHD' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/VideoMasterHD.framework/Versions/A/VideoMasterHD' (no such file)
Could not obtain data from UG/reflector output!
```
The file name has changed and --enable-deltacast was used just if the
download succeeded (which didn't).
Fixes the commit 98d4969b (2024-05-24) that disabled deltacast, because
the archive was not downloaded due to wrong name.
the build fails after switch to macos-13 on manual page generation:
```
dyld[41003]: Symbol not found: __Z11IsRGBFormat21NTV2FrameBufferFormat
Referenced from: <2945C378-5453-3610-9AA4-63E2723BBA5D> /Users/runner/work/UltraGrid/UltraGrid/bin/uv
Expected in: <no uuid> unknown
Could not obtain data from UG/reflector output!
make: *** [uv.1] Error 3
make: *** Waiting for unfinished jobs....
```
which tries to run bin/uv with --fullhelp.
(this fails only if run within the script data/make_man.sh, not when run directly)
Note that the printed now is the runtime version, while in the previous
version it wash the version used (just) for the compilation. Current
inmplementation seem to be better, anyways.
the message: `Error: No such keg: /opt/homebrew/Cellar/asciidoctor`
is now print on stderr, which disturbs GitHub CI (complains about it in
action summary annotations; just a warning).
`
- moved ultragrid-bugreport-collect.sh to doc (will be bundled automatically)
- moved data/MacOS-bundle-template to data/template (just a move)
- added data/template/README.md
The GitHub actions now complain if trying to install a formula, that is
already installed, eg:
```
run macOS (macos-14)
pkg-config 0.29.2_3 is already installed and up-to-date. To reinstall 0.29.2_3, run: brew reinstall pkg-config
```
As a workaround, install just the formulas, that are not already
installed.
\+ error from the notarize script if called
Previously (since commit 1c7c3ac1), the script silently exitted without
cigning and notarizing the app, which may harden debugging. Now the skip
is explicit and if the script is called anyways, it returns error.
enhances the commit 1c7c3ac1 (2024-03-22)
If no signing keys available, the expected behavior is rather to skip
signing instead of failing, which is unintended because of shell check
for unset variables (set -u).
The size is only some 90 kB when compressed so it is perhaps not worth
downloading from external source and depend on it.
It could be even bundled directly, not by CI. Now it is actually the case
in Linux (create-appimage.sh) but it is also possible for other platforms.
In CI on x86_64, for some reason, the path defaults to
/Library/Frameworks, while otherwhere to @rpath. So enforce to
/Library/Frameworks to be deterministic.
\+ build x86_64 from source as well to:
1. be consistent with the arm64 build
2. the binary x86_64 already had hardcoded the path @loader_path/../Frameworks/
instead of @rpath, which would require yet another handling
Use the installer and rely on dylibbundler v2 to deploy the framework
correctly.
Note: in the macOS/install_others.sh script, make sure that the env var
modification is global (== not just in the subshell) in order to be updated
by subsequent commands in the same script.
disabled in 3a076d24
The VideoMasterHD[_audio] did have invalid signature because of tweaked
internal paths, which caused Apple runtime to kill the process. Removing
the signature is not sufficient (the runtime requires signature) so we
sign it by our key.
Remove absolute path from library location - we are in the directory
anyways.
This will be useful for local use (to copy and paste) when the library
is already copied to `$(xcrun --show-sdk-path)..` etc.
\+ early return