diff --git a/makefiles/docker.inc.mk b/makefiles/docker.inc.mk index 1fd8766a096891e3731f62e162e50d6f13fdc9ca..3c6cb920297829e60f2801b6201fdd115a3a48b7 100644 --- a/makefiles/docker.inc.mk +++ b/makefiles/docker.inc.mk @@ -89,6 +89,11 @@ DOCKER ?= docker DOCKER_VOLUMES_AND_ENV += $(if $(wildcard $(GIT_CACHE_DIR)),-v $(GIT_CACHE_DIR):$(DOCKER_BUILD_ROOT)/gitcache) DOCKER_VOLUMES_AND_ENV += $(if $(wildcard $(GIT_CACHE_DIR)),-e GIT_CACHE_DIR=$(DOCKER_BUILD_ROOT)/gitcache) +# Handle worktree by mounting the git common dir in the same location +_is_git_worktree = $(shell grep '^gitdir: ' $(RIOTBASE)/.git 2>/dev/null) +GIT_WORKTREE_COMMONDIR = $(shell git rev-parse --git-common-dir) +DOCKER_VOLUMES_AND_ENV += $(if $(_is_git_worktree),-v $(GIT_WORKTREE_COMMONDIR):$(GIT_WORKTREE_COMMONDIR)) + # This will execute `make $(DOCKER_MAKECMDGOALS)` inside a Docker container. # We do not push the regular $(MAKECMDGOALS) to the container's make command in # order to only perform building inside the container and defer executing any