diff --git a/docker/Dockerfile.alpine-latest b/docker/Dockerfile.alpine-latest index 94343447..807743fb 100644 --- a/docker/Dockerfile.alpine-latest +++ b/docker/Dockerfile.alpine-latest @@ -10,7 +10,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.arch-latest b/docker/Dockerfile.arch-latest new file mode 100644 index 00000000..9f6ea917 --- /dev/null +++ b/docker/Dockerfile.arch-latest @@ -0,0 +1,26 @@ +FROM archlinux:latest + +RUN pacman -Syu --noconfirm \ + clang \ + diffutils \ + make \ + python + +ARG UID=1000 +ARG GID=1000 +ARG ARCHIVE + +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src + +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 +ENV PYTEST_ADDOPTS "-p no:cacheprovider" + +ADD ${ARCHIVE} . + +RUN sh venv + +ENV PATH=".venv/bin:${PATH}" + +USER ${UID}:${GID} diff --git a/docker/Dockerfile.debian-bookworm b/docker/Dockerfile.debian-bookworm index 9998331c..8f3f9a6e 100644 --- a/docker/Dockerfile.debian-bookworm +++ b/docker/Dockerfile.debian-bookworm @@ -13,7 +13,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.debian-bullseye b/docker/Dockerfile.debian-bullseye index d1f2d63f..2a8da6fe 100644 --- a/docker/Dockerfile.debian-bullseye +++ b/docker/Dockerfile.debian-bullseye @@ -13,7 +13,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.debian-trixie b/docker/Dockerfile.debian-trixie index fadb64ec..3d111f9d 100644 --- a/docker/Dockerfile.debian-trixie +++ b/docker/Dockerfile.debian-trixie @@ -13,7 +13,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.fedora-39 b/docker/Dockerfile.fedora-39 index 948ac250..c9e53dd1 100644 --- a/docker/Dockerfile.fedora-39 +++ b/docker/Dockerfile.fedora-39 @@ -12,7 +12,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.fedora-40 b/docker/Dockerfile.fedora-40 index 581ece19..95e308eb 100644 --- a/docker/Dockerfile.fedora-40 +++ b/docker/Dockerfile.fedora-40 @@ -12,7 +12,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.fedora-41 b/docker/Dockerfile.fedora-41 index 9f335b48..fe536aca 100644 --- a/docker/Dockerfile.fedora-41 +++ b/docker/Dockerfile.fedora-41 @@ -12,7 +12,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.fedora-rawhide b/docker/Dockerfile.fedora-rawhide index d577c671..60be59bc 100644 --- a/docker/Dockerfile.fedora-rawhide +++ b/docker/Dockerfile.fedora-rawhide @@ -12,7 +12,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Dockerfile.ubuntu-latest b/docker/Dockerfile.ubuntu-latest index 6c75965f..bfbf1002 100644 --- a/docker/Dockerfile.ubuntu-latest +++ b/docker/Dockerfile.ubuntu-latest @@ -13,7 +13,8 @@ ARG UID=1000 ARG GID=1000 ARG ARCHIVE -WORKDIR /src +# Make it harder for libclang to find headers by coincidence +WORKDIR /path/to/src ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 diff --git a/docker/Makefile.local b/docker/Makefile.local index c5a092e6..9e7213f6 100644 --- a/docker/Makefile.local +++ b/docker/Makefile.local @@ -19,24 +19,32 @@ $(HAWKMOTH_ARCHIVE): FORCE @echo "error: git not available or not inside a git work tree" && false endif +DOCKER_DISTROS := $(shell find $(docker_dir) -name 'Dockerfile.*' | sed 's/.*\.//' | sort) + # Containers for local testing DOCKER_TEST_OUT_MOUNT = --mount type=bind,src=$(PWD)/doc/_build,dst=/out hawkmoth-test.%: $(HAWKMOTH_ARCHIVE) FORCE docker build --file $(docker_dir)/Dockerfile$(suffix $@) --build-arg UID=$(shell id -u) --build-arg GID=$(shell id -g) --build-arg ARCHIVE=$< --tag $@ . +docker-test-all: $(foreach distro,$(DOCKER_DISTROS),docker-test.$(distro)) FORCE + docker-test.%: hawkmoth-test.% FORCE docker run $< make test +docker-check-all: $(foreach distro,$(DOCKER_DISTROS),docker-check.$(distro)) FORCE + docker-check.%: hawkmoth-test.% FORCE docker run $< make check +docker-html-all: $(foreach distro,$(DOCKER_DISTROS),docker-html.$(distro)) FORCE + docker-html.%: hawkmoth-test.% FORCE mkdir -p doc/_build docker run $(DOCKER_TEST_OUT_MOUNT) $< make BUILDDIR=/out html # Generate targets for auto-completion -$(shell find $(docker_dir) -name 'Dockerfile.*' | sed 's/.*\.\(.*\)/docker-test.\1 docker-check.\1 docker-html.\1/'): +$(foreach distro,$(DOCKER_DISTROS),docker-test.$(distro) docker-check.$(distro) docker-html.$(distro)): FORCE: