jw-pkg/make
Jan Lindemann 3e897f4df8 lib.Distro, ExecContext: Add classes, refactor lib.distro
The code below lib.distro, as left behind by the previous commit, is
geared towards being directly used as a command-line API. This commit
introduces the abstract base class Distro, a proxy for
distribution-specific interactions. The proxy abstracts distro
specifics into an API with proper method prototypes, not
argparse.Namespace contents, and can thus be more easily driven by
arbitrary code.

The Distro class is initialized with a member variable of type
ExecContext, another new class introduced by this commit. It is
designed to abstract the communication channel to the distribution
instance.  Currently only one specialization exists, Local, which
interacts with the distribution and root file system it is running
in, but is planned to be subclassed to support interaction via SSH,
serial, chroot, or chains thereof.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-06 14:56:46 +01:00
..
backup.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
bin.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
cache.mk make: Install cache-projects.mk 2026-02-01 09:50:52 +01:00
cleandirs.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
conf.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
cpp-extra-targets.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
cpp.mk cpp.mk, swig.mk: Re-add files necessary for building auth 2025-11-14 16:17:21 +01:00
debugger.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
defs-cpp.mk Everywhere: Replace "JW_BUILD" by "JW_PKG" 2025-11-28 13:35:56 +01:00
defs-dev.mk defs-[dev|dist].mk: Add DATA_DIR, JSON_DIR 2025-12-03 20:48:32 +01:00
defs-dirs.mk defs-dirs.mk: Add support for EXTRA_SUBDIR_TARGETS 2020-04-10 12:03:42 +00:00
defs-dist.mk defs-dist.mk: HTMLDIROWNER wwwrun -> root 2026-01-13 15:41:46 +01:00
defs.mk defs.mk: Move PKG_FORMAT definition into platform.mk 2026-03-02 12:55:36 +00:00
depend.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
dev-utils.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
dirs.mk Fix: Failing $(PREREQ_DIRS_DONE) doesn\'t have sub-subdirectories rebuilt 2019-07-01 17:59:09 +00:00
doc-rules.mk Everywhere: Purge spaces in text files 2019-03-06 12:38:20 +00:00
doc.mk Everywhere: Rename MODDIR -> JWBDIR 2019-06-29 21:34:18 +00:00
dummy.mk std-targets.mk: Add file 2026-01-26 17:17:23 +01:00
exe.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
gettext.mk gettext.mk: Re-add files necessary for building bootstrap 2025-11-14 16:22:40 +01:00
git-cvs-bridge.mk git-cvs-bridge.mk: Add support for GIT_CVSIMPORT_EXTRA_ARGS 2019-01-08 11:03:36 +00:00
git-submod.mk Everywhere: Rename package "jw-build" to "jw-pkg" 2025-11-28 13:35:56 +01:00
htdocs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
include.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
install-files.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
js.mk js.mk: Don't minify without minifier 2025-12-11 17:23:22 +01:00
ldlibpath.mk ldlibpath.mk: Replace ifndef by ifeq ($(origin, ...)) 2026-01-28 15:24:13 +01:00
lib.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
list-files.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
lo.mk lo.mk: Fix warning that targets were not remade 2026-02-10 09:57:59 +01:00
make.mk platform.mk: Add HOST_DISTRO_INFO 2026-03-03 05:32:47 +01:00
Makefile make: Install cache-projects.mk 2026-02-01 09:50:52 +01:00
path-rules.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
platform.mk platform.mk: Add HOST_DISTRO_INFO 2026-03-03 05:32:47 +01:00
profile.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
profiler-defs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
profiler-rules-run.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
profiler.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
proj.mk proj.mk: Set JANWARE_URL_DOC_PROJECT to jw-build cheat sheet 2020-02-24 12:19:05 +00:00
project.conf project.conf: Remove nonsensical maintainer scripts 2026-03-06 12:06:28 +01:00
projects+project.mk projects+project.mk: Add file 2026-02-18 01:20:26 +01:00
projects-dir-include.mk projects+project.mk: Add file 2026-02-18 01:20:26 +01:00
projects-dir-minimal.mk projects-dir-minimal.mk: Add target init 2026-02-18 01:20:26 +01:00
projects-dir.mk lib.Distro, ExecContext: Add classes, refactor lib.distro 2026-03-06 14:56:46 +01:00
projects.mk projects.mk -> platform.mk: Move definitions up 2026-03-02 12:55:36 +00:00
py-defs.mk py-defs.mk: Remove PY_PREREQ_BUILD[_DIRS] 2026-01-26 17:17:23 +01:00
py-mod.mk py-defs.mk, py-mod.mk: Support PY_UPDATE_INIT_PY 2025-11-16 18:42:58 +01:00
py-mods.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
py-rules.mk make: Re-add files necessary for building jw-python 2025-11-13 17:27:14 +01:00
py-run.mk py-run.mk, python-tools.sh: Re-add files necessary for jw-client-devops-web 2025-11-14 17:15:24 +01:00
py-version.mk projects.mk, py-defs.mk, py-version.mk: Add py-version.mk 2025-02-22 09:04:17 +00:00
rpmdist.mk topdir.mk: git-get-% -> current-branch 2026-02-21 15:54:53 +01:00
rules.mk defs.mk: Define Q and use it in *.mk 2026-01-26 17:58:23 +01:00
run.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
scripts-targets.mk make, scripts: Flip some more switches from pathon 2 to 3 (untested!) 2019-06-02 12:28:13 +00:00
scripts.mk Everywhere: Rename MODDIR -> JWBDIR 2019-06-29 21:34:18 +00:00
so.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
srcdist.mk Everywhere: Rename MODDIR -> JWBDIR 2019-06-29 21:34:18 +00:00
std-targets.mk std-targets.mk: Add file 2026-01-26 17:17:23 +01:00
std-tools.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
subdirs.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
svg-to-pixmap.mk Rename svg.mk to svg-to-pixmap.mk 2025-12-21 20:24:56 +01:00
swig.mk cpp.mk, swig.mk: Re-add files necessary for building auth 2025-11-14 16:17:21 +01:00
tag-defs.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
tag-rules.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
tailwind.mk tailwind.mk: Add file 2025-12-06 15:12:35 +01:00
targets-tools.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
test-exe.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
text.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
tmpl.mk tmpl.mk: Re-add because it's useful 2025-12-23 11:07:37 +01:00
tools.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00
topdir.mk lib.Distro, ExecContext: Add classes, refactor lib.distro 2026-03-06 14:56:46 +01:00
upload-defs-rpm.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
upload-defs.mk upload-defs.mk: Add support for UPLOAD_PROTOCOL 2023-12-18 13:00:43 +00:00
upload-rules.mk bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
vim.mk vim.mk: Re-add files necessary for building jw-ws 2025-11-14 17:18:31 +01:00
yapp.mk make, scripts: Re-add files necessary for building ytools 2025-11-14 15:59:49 +01:00