Live video on the AT Protocol

build: build darwin packages on linux (!) (#256)

* ci: add osxcross

* ci: build-mac

* ci: working darwin-amd64 build

* ci: dockerfile build stage

* build: use clang from llvm repos

* ci: builder-rebuild is a tiny job

* ci: skip desktop for now

* ci: add darwin codesigning

* ci: cargo install apple-codesign

* ci: cstreamplace for everyone but darwin

* this commit left blank

* ci: recombine images now that it's fast

* ci: arch typo

* ci: add notarization

* ci: gradle no daemon

* ci: zip it uppppp

* empty commit for build

* one last empty commit for build

* github ci: clean disk a bit before building

* ci: re-add darwin desktop build and ios build

* github: simpler approach for saving build space

* gitlab: handle command with spaces

* Makefile: typo

* Makefile: semi colons

* unlock keychain for signing

* build tweaks

* nothing to be done lmao

* ci: we should really build darwin-amd64 i guess

* asodfij

* codesign codemine

authored by

Eli Mallon and committed by
GitHub
895f59f4 49894e6a

+308 -53
+1 -1
.ci/dockerfile-hash.yaml
··· 1 1 variables: 2 - DOCKERFILE_HASH: fb5480a73648575c1b7b2b32039211ba2d32e78d 2 + DOCKERFILE_HASH: 073dbc89ff3297c1964771258283b2dd465b8fa1
+4
.github/workflows/build.yaml
··· 27 27 - name: android 28 28 cmd: "make app && make android-release" 29 29 steps: 30 + - name: Maximize build space 31 + run: | 32 + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL 33 + 30 34 - name: Check out code 31 35 uses: actions/checkout@v4.1.7 32 36 with:
+36 -3
.gitlab-ci.yml
··· 27 27 entrypoint: [""] 28 28 variables: 29 29 FQ_IMAGE_NAME: "$DOCKER_REPO:builder-$DOCKERFILE_HASH" 30 + TARGET: builder 30 31 timeout: 2 hours 31 32 script: 32 33 - mkdir -p /kaniko/.docker ··· 38 39 --context "${CI_PROJECT_DIR}" 39 40 --dockerfile "${CI_PROJECT_DIR}/docker/build.Dockerfile" 40 41 --destination "$FQ_IMAGE_NAME" 42 + --target "$TARGET" 41 43 42 44 builder-rebuild: 45 + tags: 46 + - tiny-job 43 47 stage: build 44 48 allow_failure: true 45 49 interruptible: true ··· 89 93 - .build 90 94 variables: 91 95 TARGET: windows-amd64 96 + 97 + build-darwin-arm64: 98 + extends: 99 + - .build 100 + variables: 101 + TARGET: darwin-arm64 102 + 103 + build-darwin-amd64: 104 + extends: 105 + - .build 106 + variables: 107 + TARGET: darwin-amd64 92 108 93 109 leak-test-viewers: 94 110 stage: build ··· 261 277 variables: 262 278 TARGET: ci-android-release 263 279 264 - build-mac: 280 + .build-on-mac: 265 281 stage: build 266 282 interruptible: true 267 283 image: macos-sonoma-xcode-big ··· 299 315 && python3 -m virtualenv ~/venv 300 316 && source ~/venv/bin/activate 301 317 && python3 -m pip install meson 302 - && make ci-macos -j16 318 + && ${=COMMAND} 319 + # ^^ zsh-ism for running command with spaces 320 + 321 + build-ios: 322 + extends: 323 + - .build-on-mac 324 + variables: 325 + COMMAND: make ci-ios -j16 326 + 327 + build-desktop-darwin: 328 + extends: 329 + - .build-on-mac 330 + needs: 331 + - build-darwin-amd64 332 + - build-darwin-arm64 333 + variables: 334 + COMMAND: make ci-desktop-darwin 303 335 304 336 windows-selftest: 305 337 interruptible: true ··· 323 355 interruptible: true 324 356 image: "$DOCKER_REPO:builder-$DOCKERFILE_HASH" 325 357 needs: 326 - - build-mac 358 + - build-darwin-amd64 359 + - build-darwin-arm64 327 360 - build-android-debug 328 361 - build-android-release 329 362 - build-docker-amd64
+66 -25
Makefile
··· 210 210 .PHONY: ci 211 211 ci: version install app node-all-platforms ci-upload-node 212 212 213 - .PHONY: ci-macos 214 - ci-macos: version install app node-all-platforms-macos ci-upload-node-macos ios ci-upload-ios 213 + .PHONY: ci-ios 214 + ci-ios: version install app 215 + $(MAKE) ios 216 + $(MAKE) ci-upload-ios 217 + 218 + .PHONY: ci-desktop-darwin 219 + ci-desktop-darwin: version install 220 + ./util/mac-codesign.sh \ 221 + && for arch in amd64 arm64; do \ 222 + curl -v --fail-with-body -O "$$CI_API_V4_URL/projects/$$CI_PROJECT_ID/packages/generic/$(BRANCH)/$(VERSION)/streamplace-$(VERSION)-darwin-$$arch.tar.gz" || exit 1 \ 223 + && tar -xzvf streamplace-$(VERSION)-darwin-$$arch.tar.gz \ 224 + && ./streamplace --version \ 225 + && ./streamplace self-test \ 226 + && mkdir -p build-darwin-$$arch \ 227 + && mv ./streamplace ./build-darwin-$$arch/streamplace; \ 228 + done \ 229 + && $(MAKE) desktop-darwin \ 230 + && for arch in amd64 arm64; do \ 231 + export file=streamplace-desktop-$(VERSION)-darwin-$$arch.zip \ 232 + && $(MAKE) ci-upload-file upload_file=$$file \ 233 + && export file=streamplace-desktop-$(VERSION)-darwin-$$arch.dmg \ 234 + && $(MAKE) ci-upload-file upload_file=$$file; \ 235 + done 215 236 216 237 .PHONY: ci-android 217 238 ci-android: version install android ci-upload-android ··· 414 435 windows-amd64-startup-test: 415 436 bash -c 'set -euo pipefail && unbuffer wine64 ./build-windows-amd64/streamplace.exe self-test | cat' 416 437 417 - .PHONY: node-all-platforms-macos 418 - node-all-platforms-macos: app 419 - meson setup --buildtype debugoptimized build-darwin-arm64 $(OPTS) 420 - meson compile -C build-darwin-arm64 421 - ./util/mac-codesign.sh ./build-darwin-arm64/streamplace 422 - cd build-darwin-arm64 \ 423 - && tar -czvf ../bin/streamplace-$(VERSION)-darwin-arm64.tar.gz ./streamplace \ 424 - && cd - 425 - ./build-darwin-arm64/streamplace --version 426 - ./build-darwin-arm64/streamplace self-test 427 - $(MAKE) link-test-macos 428 - rustup target add x86_64-apple-darwin 429 - meson setup --buildtype debugoptimized --cross-file util/darwin-amd64-apple.ini build-darwin-amd64 $(OPTS) 430 - meson compile -C build-darwin-amd64 431 - ./util/mac-codesign.sh ./build-darwin-amd64/streamplace 432 - cd build-darwin-amd64 \ 438 + .PHONY: darwin-amd64 439 + darwin-amd64: 440 + export CC=x86_64-apple-darwin24.4-clang \ 441 + && export CROSS_COMPILE=1 \ 442 + && meson setup --buildtype debugoptimized --cross-file util/osxcross-darwin-amd64.ini build-darwin-amd64 $(OPTS) \ 443 + && meson compile -C build-darwin-amd64 streamplace \ 444 + && ./util/osxcross-codesign.sh ./build-darwin-amd64/streamplace \ 445 + && mkdir -p bin \ 446 + && cd build-darwin-amd64 \ 433 447 && tar -czvf ../bin/streamplace-$(VERSION)-darwin-amd64.tar.gz ./streamplace \ 434 448 && cd - 435 - ./build-darwin-amd64/streamplace --version 436 - ./build-darwin-arm64/streamplace self-test 437 - $(MAKE) desktop-macos 438 - meson test -C build-darwin-arm64 go-tests 439 449 440 - .PHONY: desktop-macos 441 - desktop-macos: 450 + .PHONY: desktop-darwin-amd64 451 + desktop-darwin-amd64: 452 + echo "TODO" 453 + 454 + .PHONY: darwin-amd64 455 + darwin-arm64: 456 + export CC=aarch64-apple-darwin24.4-clang \ 457 + && export CROSS_COMPILE=1 \ 458 + && meson setup --buildtype debugoptimized --cross-file util/osxcross-darwin-arm64.ini build-darwin-arm64 $(OPTS) \ 459 + && meson compile -C build-darwin-arm64 streamplace \ 460 + && ./util/osxcross-codesign.sh ./build-darwin-arm64/streamplace \ 461 + && mkdir -p bin \ 462 + && cd build-darwin-arm64 \ 463 + && tar -czvf ../bin/streamplace-$(VERSION)-darwin-arm64.tar.gz ./streamplace \ 464 + && cd - 465 + 466 + .PHONY: desktop-darwin-arm64 467 + desktop-darwin-arm64: 468 + echo "TODO" 469 + 470 + .PHONY: desktop-darwin 471 + desktop-darwin: 442 472 export DEBUG="electron-osx-sign*" \ 443 473 && cd js/desktop \ 444 474 && pnpm run make --platform darwin --arch arm64 \ ··· 487 517 .PHONY: docker-test 488 518 docker-test: docker-build-builder docker-test-in-container 489 519 520 + BUILDER_TARGET?=builder 490 521 .PHONY: docker-build-builder 491 522 docker-build-builder: 492 - podman build --target=builder --os=linux --arch=amd64 -f docker/build.Dockerfile -t dist.stream.place/streamplace/streamplace:builder . 523 + podman build --target=$(BUILDER_TARGET) --os=linux --arch=amd64 -f docker/build.Dockerfile -t dist.stream.place/streamplace/streamplace:$(BUILDER_TARGET) . 493 524 494 525 .PHONY: golangci-lint-container 495 526 golangci-lint-container: docker-build-builder ··· 555 586 export file=streamplace-$(VERSION)-linux-arm64.tar.gz \ 556 587 && $(MAKE) ci-upload-file upload_file=$$file; \ 557 588 export file=streamplace-desktop-$(VERSION)-linux-arm64.AppImage \ 589 + && $(MAKE) ci-upload-file upload_file=$$file; 590 + 591 + .PHONY: ci-upload-node-darwin-arm64 592 + ci-upload-node-darwin-arm64: 593 + export file=streamplace-$(VERSION)-darwin-arm64.tar.gz \ 594 + && $(MAKE) ci-upload-file upload_file=$$file; 595 + 596 + .PHONY: ci-upload-node-darwin-amd64 597 + ci-upload-node-darwin-amd64: 598 + export file=streamplace-$(VERSION)-darwin-amd64.tar.gz \ 558 599 && $(MAKE) ci-upload-file upload_file=$$file; 559 600 560 601 .PHONY: ci-upload-node-windows-amd64
+18 -3
docker/build.Dockerfile
··· 1 + # syntax=docker/dockerfile:1 1 2 FROM ubuntu:22.04 AS builder 2 3 3 4 ARG TARGETARCH ··· 12 13 13 14 ADD docker/sources.list /etc/apt/sources.list 14 15 ADD docker/winehq.key /etc/apt/keyrings/winehq-archive.key 16 + ADD docker/llvm-snapshot.key /etc/apt/keyrings/llvm-snapshot.key 17 + 15 18 RUN dpkg --add-architecture i386 && dpkg --add-architecture arm64 16 19 17 20 # Haven't automated it yet, so here's my instructors for mirroring winehq: ··· 27 30 28 31 RUN apt update \ 29 32 && apt install -y build-essential curl git openjdk-17-jdk unzip jq g++ python3-pip ninja-build \ 30 - gcc-aarch64-linux-gnu g++-aarch64-linux-gnu clang lld qemu-user-static pkg-config \ 33 + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qemu-user-static pkg-config \ 31 34 nasm gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools zip bison flex expect \ 32 35 mono-runtime nuget mono-xsp4 squashfs-tools \ 33 36 libc6:arm64 libstdc++6:arm64 \ ··· 37 40 && rm go.tar.gz 38 41 39 42 RUN echo 'deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://storage.googleapis.com/streamplace-crap/dl.winehq.org/wine-builds/ubuntu/ jammy main' >> /etc/apt/sources.list \ 43 + && echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/llvm-snapshot.key] http://apt.llvm.org/jammy/ llvm-toolchain-jammy main' >> /etc/apt/sources.list \ 40 44 && apt update \ 41 - && apt install -y --install-recommends winehq-stable 45 + && apt install -y --install-recommends winehq-stable \ 46 + clang-21 lldb-21 lld-21 clangd-21 42 47 43 - ENV PATH $PATH:/usr/local/go/bin:/root/go/bin:/root/.cargo/bin 48 + ENV PATH /usr/lib/llvm-21/bin:$PATH:/usr/local/go/bin:/root/go/bin:/root/.cargo/bin 44 49 45 50 RUN export NODEARCH="$TARGETARCH" \ 46 51 && if [ "$TARGETARCH" = "amd64" ]; then export NODEARCH="x64"; fi \ ··· 86 91 && tar -xf golangci-lint.tar.gz \ 87 92 && mv golangci-lint-2.1.6-linux-amd64/golangci-lint /usr/local/bin/ \ 88 93 && rm -rf golangci-lint.tar.gz golangci-lint-2.1.6-linux-amd64 94 + 95 + WORKDIR /osxcross 96 + 97 + RUN git clone https://github.com/tpoechtrager/osxcross.git . \ 98 + && git checkout 2.0-llvm-based 99 + # RUN UNATTENDED=1 ./build_apple_clang.sh 100 + RUN curl -L --fail https://github.com/joseluisq/macosx-sdks/releases/download/15.4/MacOSX15.4.sdk.tar.xz -o /osxcross/tarballs/MacOSX15.4.sdk.tar.xz 101 + RUN UNATTENDED=1 ./build.sh 102 + RUN cargo install apple-codesign 103 + ENV PATH /osxcross/target/bin:$PATH 89 104 90 105 LABEL org.opencontainers.image.authors="support@stream.place"
+52
docker/llvm-snapshot.key
··· 1 + -----BEGIN PGP PUBLIC KEY BLOCK----- 2 + Version: GnuPG v1.4.12 (GNU/Linux) 3 + 4 + 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 50 + bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw== 51 + =j+4q 52 + -----END PGP PUBLIC KEY BLOCK-----
+1 -1
js/app/package.json
··· 13 13 "build:web": "pnpm run export && node exportClientExpoConfig.js > dist/expoConfig.json", 14 14 "export": "expo export --dump-sourcemap || expo export --dump-sourcemap", 15 15 "check": "bash -c 'set -euo pipefail;export OUT=$(mktemp -d); npx tsc -p . --outDir $OUT; rm -rf $OUT'", 16 - "prebuild": "EXPO_NO_GIT_STATUS=1 expo prebuild --clean && sed -i.bak 's/org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m/org.gradle.jvmargs=-Xmx8192m -XX:MaxMetaspaceSize=2048m/' android/gradle.properties && pnpm run find-node", 16 + "prebuild": "EXPO_NO_GIT_STATUS=1 expo prebuild --clean && sed -i.bak 's/org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m/org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m/' android/gradle.properties && pnpm run find-node", 17 17 "postinstall": "which pod && pnpm run postinstall-ios || echo 'not a mac, not installing pods'", 18 18 "postinstall-ios": "cd ios && pod install && pnpm run find-node", 19 19 "find-node": "node -p '`NODE_BINARY=${process.argv[0]}`' > ios/.xcode.env.local",
+44 -9
meson.build
··· 22 22 output: ['flagbuilder'], 23 23 command: [prog_go, 'build', '-o', '@OUTPUT0@', '@INPUT@'], 24 24 build_always_stale: true, 25 + env: { 26 + 'CGO_ENABLED': '0', 27 + }, 25 28 ) 26 29 27 30 flags = custom_target( ··· 32 35 build_always_stale: true, 33 36 ) 34 37 35 - version_cmd = run_command(prog_go, 'run', 'pkg/config/git/git.go', '-v', check: true) 38 + version_cmd = run_command(prog_go, 'run', 'pkg/config/git/git.go', '-v', check: true, env: { 39 + 'CGO_ENABLED': '0', 40 + }) 36 41 version = version_cmd.stdout().strip() 37 42 38 43 streamplace_go = custom_target( ··· 250 255 description: 'all streamplace dependencies bundled for easy inclusion', 251 256 ) 252 257 253 - streamplace = executable( 254 - 'streamplace', 255 - ['cmd/streamplace/streamplace.c', libstreamplace], 256 - dependencies: [ 257 - streamplace_deps, 258 - ], 259 - link_with: [c2pa_go_dep], 260 - ) 258 + if build_machine.system() == 'linux' and host_machine.system() == 'darwin' 259 + # this only exists to convince meson to build all of the streamplace dependencies 260 + # the real binary comes from the `go build` command below 261 + cstreamplace = executable( 262 + 'cstreamplace', 263 + ['cmd/streamplace/streamplace.c', libstreamplace], 264 + dependencies: [ 265 + streamplace_deps, 266 + ], 267 + link_with: [c2pa_go_dep], 268 + ) 269 + 270 + streamplace = custom_target( 271 + 'streamplace', 272 + input: [cstreamplace, flags], 273 + output: ['streamplace'], 274 + command: [ 275 + prog_go, 276 + 'build', 277 + '-o', '@OUTPUT0@', 278 + '-tags', 'netgo', 279 + 'streamplace.go', 280 + '@INPUT1@' 281 + ], 282 + build_always_stale: true, 283 + env: env, 284 + ) 285 + else 286 + streamplace = executable( 287 + 'streamplace', 288 + ['cmd/streamplace/streamplace.c', libstreamplace], 289 + dependencies: [ 290 + streamplace_deps, 291 + ], 292 + link_with: [c2pa_go_dep], 293 + ) 294 + endif 295 + 261 296 262 297 if not meson.is_cross_build() 263 298 test(
+9 -11
util/mac-codesign.sh
··· 21 21 if [[ "${KEYCHAIN_FILE:-}" == "" ]]; then 22 22 KEYCHAIN_FILE="$(security default-keychain | sed -e 's:^["\t ]*::;s:["\t ]*$::')" 23 23 fi 24 - } 25 - 26 - function livepeer-codesign() { 27 24 echo "${DEVELOPER_CERTIFICATE_BASE64}" | base64 -d >"$CERTIFICATE_FILE" 28 25 security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME" 29 26 security import "${CERTIFICATE_FILE}" -f pkcs12 -k "$KEYCHAIN_NAME" -T "$CODESIGN" -P "${DEVELOPER_CERTIFICATE_PASSWORD}" 30 27 security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME" 31 - $CODESIGN --force --sign "${DEVELOPER_CERTIFICATE_ID}" -o runtime "${BINARY_PATH}" 32 28 rm -f "${CERTIFICATE_FILE}" 29 + } 30 + 31 + function livepeer-codesign() { 32 + $CODESIGN --force --sign "${DEVELOPER_CERTIFICATE_ID}" -o runtime "${BINARY_PATH}" 33 33 zip -9r "${NOTARIZATION_FILE}" "${BINARY_PATH}" 34 34 } 35 35 ··· 57 57 rm -f "${NOTARIZATION_FILE}" 58 58 } 59 59 60 - function main() { 61 - livepeer-keychain 60 + export BINARY_PATH="${1:-}" 61 + livepeer-keychain 62 + if [[ "${BINARY_PATH:-}" != "" ]]; then 62 63 livepeer-codesign 63 64 livepeer-notarize 64 - } 65 - 66 - export BINARY_PATH="$1" 67 - main 68 - codesign -dvv "$BINARY_PATH" 65 + codesign -dvv "$BINARY_PATH" 66 + fi
+21
util/osxcross-codesign.sh
··· 1 + #!/bin/bash 2 + 3 + set -euo pipefail 4 + 5 + CERTIFICATE_FILE="certificate.p12" 6 + if [[ "${DEVELOPER_CERTIFICATE_BASE64:-}" == "" ]]; then 7 + echo "DEVELOPER_CERTIFICATE_BASE64 is not set, skipping codesign" 8 + exit 0 9 + fi 10 + echo "${DEVELOPER_CERTIFICATE_BASE64}" | base64 -d >"$CERTIFICATE_FILE" 11 + rcodesign sign \ 12 + --p12-file "$CERTIFICATE_FILE" \ 13 + --p12-password "${DEVELOPER_CERTIFICATE_PASSWORD}" \ 14 + --code-signature-flags runtime \ 15 + "$1" 16 + rm -f "$CERTIFICATE_FILE" 17 + 18 + if [[ "$APPLE_CODESIGN_API_KEY:-" != "" ]]; then 19 + zip "$1.zip" "$1" 20 + rcodesign notary-submit --api-key-file "$APPLE_CODESIGN_API_KEY" "$1.zip" 21 + fi
+28
util/osxcross-darwin-amd64.ini
··· 1 + [binaries] 2 + c = 'x86_64-apple-darwin24.4-clang' 3 + cpp = 'x86_64-apple-darwin24.4-clang++' 4 + objc = 'x86_64-apple-darwin24.4-clang' 5 + objcpp = 'x86_64-apple-darwin24.4-clang' 6 + ; ar = 'llvm-ar' 7 + ; strip = 'llvm-strip' 8 + 9 + [built-in options] 10 + c_args = ['--target=x86_64-apple-darwin'] 11 + c_link_args = ['--target=x86_64-apple-darwin'] 12 + cpp_args = ['--target=x86_64-apple-darwin'] 13 + cpp_link_args = ['--target=x86_64-apple-darwin'] 14 + objc_args = ['--target=x86_64-apple-darwin'] 15 + objc_link_args = ['--target=x86_64-apple-darwin'] 16 + objcpp_args = ['-arch', 'x86_64'] 17 + objcpp_link_args = ['-arch', 'x86_64'] 18 + 19 + [host_machine] 20 + system = 'darwin' 21 + cpu_family = 'x86_64' 22 + cpu = 'x86_64' 23 + endian = 'little' 24 + 25 + [properties] 26 + GOOS = 'darwin' 27 + GOARCH = 'amd64' 28 + RUST_TRIPLE = 'x86_64-apple-darwin'
+28
util/osxcross-darwin-arm64.ini
··· 1 + [binaries] 2 + c = 'aarch64-apple-darwin24.4-clang' 3 + cpp = 'aarch64-apple-darwin24.4-clang++' 4 + objc = 'aarch64-apple-darwin24.4-clang' 5 + objcpp = 'aarch64-apple-darwin24.4-clang' 6 + ; ar = 'llvm-ar' 7 + ; strip = 'llvm-strip' 8 + 9 + [built-in options] 10 + c_args = ['--target=aarch64-apple-darwin'] 11 + c_link_args = ['--target=aarch64-apple-darwin'] 12 + cpp_args = ['--target=aarch64-apple-darwin'] 13 + cpp_link_args = ['--target=aarch64-apple-darwin'] 14 + objc_args = ['--target=aarch64-apple-darwin'] 15 + objc_link_args = ['--target=aarch64-apple-darwin'] 16 + objcpp_args = ['-arch', 'arm64'] 17 + objcpp_link_args = ['-arch', 'arm64'] 18 + 19 + [host_machine] 20 + system = 'darwin' 21 + cpu_family = 'aarch64' 22 + cpu = 'aarch64' 23 + endian = 'little' 24 + 25 + [properties] 26 + GOOS = 'darwin' 27 + GOARCH = 'arm64' 28 + RUST_TRIPLE = 'aarch64-apple-darwin'