Improve Makefile variable caching: PREREQ, JW_PKG_NO_CACHE, subsections #28

Merged
Jan Lindemann merged 6 commits from jan/feature/20260617-py-path-ldlibpath-mk-space-separate-jw-pkg-xxx-path into master 2026-06-17 20:46:13 +02:00 AGit

2026-06-17

py-path|ldlibpath.mk: Space-separate JW_PKG_XXX_PATH
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m45s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m31s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m10s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m1s
CI / Packaging test (push) Successful in 0s
The following variables contain colons as path-separators:

  - JW_PKG_PYTHON_PATH
  - JW_PKG_EXE_PATH
  - JW_PKG_LD_LIBRARY_PATH

This commit makes them use spaces instead, so they can be  more
easily amended by Makefiles using them. Also define them in a more
uniform way, and use the newly introduced PREREQ_RUN variable to fill
them, which in turn can also be appended to before that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:29 +02:00
cmds.projects.Cmd[Ldlibpath|Exepath]: Support --delimiter
Support a --delimiter option to the ldlibpath and exepath commands.
Notable use case are the JW_PKG_XXX_PATH variables, which should use
spaces instead of colons.

TODO: Merging those two command modules with BaseCmdPkgRelations
would have made introducing this redundancy unnecessary, check if
that's a possibility.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:29 +02:00
cmds.projects.BaseCmdPkgRelations: Support spaces as delimiter
Some options to the pkg-xxx commands, like flavour, --subsections and
--ignore understand a comma as delimiter if multiple option values
are specified. The comma character is not very friendly to use in
$(call ...) macros, though, so support spaces and pipe characters as
well.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:29 +02:00
topdir.mk: Move PREREQ definition into defs.mk
At present, the PREREQ-variable is effectively only used to detect if
prerequiste packages haven't run "make all" before make is run in a
given package. Also, it's only useful in $(TOPDIR). This commit
splits the variable up into PREREQ_BUILD and PREREQ_RUN, and makes
the variables available in every Makefile of a package by placing
them in defs.mk instead of topdir.mk.

This also fixes a problem that PREREQ was cached before being filled,
hence empty. Which effectively wasn't much of a problem, because it
was basically unused, but still.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:29 +02:00
cache.mk: Support JW_PKG_NO_CACHE
cache.mk generates .project-cache.mk, and this commit supports
disabling the definitions in the generated cache by setting
JW_PKG_NO_CACHE=true.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:29 +02:00
cache-projects.mk: Remove unused ifndef / endif
make/Makefile is responsible to generate $(TOPDIR)/cache-projects.mk.
The variables are taken from .cache-project.mk, with some variables
intentionally omitted, but their ifndef / endif blocks remain in
place. Not harmful but ugly. Make sed range-delete the left-over
blocks entirely.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 20:16:12 +02:00