From 11511043287868c7a9eafd9639aa8d692f29cfac Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Mon, 21 Sep 2026 05:42:08 +0200 Subject: [PATCH] projects-dir.mk: Derive DEP_PROJECTS from the build order DEP_PROJECTS is computed with pkg-requires --recursive, which follows [pkg.requires.jw] only. That set does not match what the build actually builds, and it omits seed projects that no other project of the closure depends on. Derive DEP_PROJECTS from projects build --build-order with the same dependency flavours as make all, the very command the build-order make target and the workspace mount closure (mount-projects-dir.sh) use. DEP_PROJECTS is now exactly the build closure, so the file listings, the text-files cache and the git helpers of a workspace cover the same project set as make all. Introduce the PKG_RELATIONS_BUILD variable, defaulting to requires, and pass it through JW_PKG_PY_BUILD to every build invocation of the workspace, so the relations of the build closure are a workspace property. Signed-off-by: Jan Lindemann Assisted-by: unsloth/Qwen3.8-27B-GGUF:Q4_K_M with pi.dev v0.86.1 --- make/projects-dir.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/make/projects-dir.mk b/make/projects-dir.mk index d37fc50a..614f171e 100644 --- a/make/projects-dir.mk +++ b/make/projects-dir.mk @@ -124,7 +124,8 @@ ifeq ($(TIME),) endif endif JW_PKG_PY_PROJECTS = $(JW_PKG_PY) projects -JW_PKG_PY_BUILD = $(JW_PKG_PY_PROJECTS) build $(JW_PKG_PY_EXTRA_BUILD_OPTS) +PKG_RELATIONS_BUILD ?= requires +JW_PKG_PY_BUILD = $(JW_PKG_PY_PROJECTS) build --pkg-relations "$(PKG_RELATIONS_BUILD)" $(JW_PKG_PY_EXTRA_BUILD_OPTS) PKG_MANAGER ?= $(TIME) $(JW_PKG_PY) --interactive=$(INTERACTIVE) pkg ifneq ($(origin PROJECTS_DIR_REMOTE_BASE),undefined) @@ -152,7 +153,7 @@ JANWARE_PACKAGE_FILTER = url =~ janware # ------------ projects to be built TARGET_PROJECTS = $(filter-out $(EXCLUDE_FROM_BUILD),$(PROJECTS)) -DEP_PROJECTS = $(shell $(JW_PKG_PY_PROJECTS) pkg-requires --recursive --syntax names-only --no-subpackages --delimiter ' ' --subsections jw run,build,devel,release $(TARGET_PROJECTS)) +DEP_PROJECTS = $(shell JW_DEFAULT_LOG_LEVEL=WARNING $(JW_PKG_PY_BUILD) --build-order --dep-flavours="$(BUILD_DEP_FLAVOURS)" all $(TARGET_PROJECTS)) GIT_PROJECTS = $(patsubst %/,%,$(dir $(wildcard $(addsuffix /.git,$(DEP_PROJECTS))))) PROJECTS_WITH_PROJECT_CONF = $(patsubst %/make/project.conf,%,$(wildcard $(addsuffix /make/project.conf,$(DEP_PROJECTS))))