mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
f25b072fa0
Three host-portability fixes to the docker/ toolchain from #8564 so it runs on macOS as well as Linux. All three are no-ops on native amd64 Linux. 1. Dockerfile: only groupadd when the target GID is free. macOS's default primary group `staff` is GID 20, which already exists as `games` in rockylinux:9, so `groupadd -g 20` aborted the image build. Guard with `getent group "${USER_GID}" || groupadd ...`; useradd -g accepts the existing GID. 2. ifcos_env unique(): replace GNU-only `sed -si` (BSD/macOS sed errors "illegal option -- s") with a portable `sed > tmp && mv` rewrite of the UNIQUE_ID line. Verified against macOS BSD sed. 3. create() + compose.yaml: build with an explicit `--platform linux/amd64` so the locally built image's platform matches the `platform: linux/amd64` pin in compose.yaml. Without it, on arm64 the local image is tagged linux/arm64, compose treats the platform-mismatched image as absent and tries to pull `ifcopenshell-build-env:updated` from Docker Hub (which does not exist -> access denied). Also add `pull_policy: never` as a safety net so a future mismatch surfaces as a clear "image not found" rather than a registry auth error. Note: on Apple Silicon the amd64 build runs under emulation and a cold full build is slow; ccache makes incremental rebuilds tolerable. A native Linux/Intel host or CI remains the better choice for routine use, but these fixes turn "hard broken" into "works with a caveat" on macOS. This change was made with the assistance of an AI tool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
23 lines
842 B
YAML
23 lines
842 B
YAML
name: ifcopenshell-${UNIQUE_ID}
|
|
services:
|
|
ifcopenshell:
|
|
container_name: ifcopenshell-${UNIQUE_ID}
|
|
image: ifcopenshell-build-env:updated
|
|
platform: linux/amd64
|
|
# There's no `build:` section - the image is always produced ahead of
|
|
# time by `./ifcos_env create` (`docker build`, not `docker compose
|
|
# build`). Without this, a platform mismatch between the pin above and
|
|
# whatever's in the local image store makes compose treat the image as
|
|
# absent and fall back to pulling ifcopenshell-build-env:updated from
|
|
# Docker Hub, where it doesn't exist. Fail fast with a clear "not
|
|
# found" instead of an obscure registry access-denied error.
|
|
pull_policy: never
|
|
volumes:
|
|
- type: bind
|
|
source: ../
|
|
target: /__w/IfcOpenShell/IfcOpenShell
|
|
- ccache:/ccache
|
|
|
|
volumes:
|
|
ccache:
|