and others added 2 commits
June 26, 2026 12:52Structural refactor only (no behavioral change), following the spksrc.spk-meta.mk naming and the layout from SynoCommunity#6984: - mk/spksrc.spk/ -> mk/spksrc.spk-meta/ (base, ffmpeg, python, videodriver, meta) - new mk/spksrc.spk/ <- the spk.mk-specific steps: copy, strip, icon, publish - new mk/spksrc.service/ <- the service templates (create_links, installer.*, start-stop-status, ...); spksrc.service.mk stays as the entry point - new mk/spksrc.wheel/ <- compile, download, env, install, and requirement (renamed from spksrc.python-requirement.mk); spksrc.wheel.mk stays as the entry Entry-point .mk files remain at the mk/ root; all include paths updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replicate the SynoCommunity#6984 convention (entry-point .mk files stay at the mk/ root): - mk/spksrc.cross/ <- env-default (was spksrc.cross-env.mk), env-cmake, env-meson, env-go, env-rust, env-dotnet, cmake-toolchainfile, meson-crossfile - mk/spksrc.native/ <- env-default (was spksrc.native-env.mk, named env-default to align with cross/), env-cmake, env-meson All include paths updated; build-system entry points (cross-cc/cmake/meson/go/ rust/dotnet.mk, native-cc/cmake/meson/install.mk) remain at the root. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reflect spksrc.cross/ and spksrc.native/ in makefile-system.md (file tables and include hierarchy, with new cross/ and native/ subtrees) and the build-rules / cross-compilation references.
th0ma7
changed the title
mk: reorganize spk/service/wheel into functional submodules
mk: reorganize into functional submodules (spk/service/wheel/cross/native)
…r dirs) Present every subsystem the same way: the entry-point .mk file(s) at the first level (alphabetical), then the spksrc.<name>/ directory with its helper files. Cross and native now list each entry point individually; the shared Core/Build-Pipeline files are covered by the file-organization tables above.
Replicate the SynoCommunity#6984 spksrc.build/ submodule: the per-package compilation pipeline (download, checksum, extract, patch, configure, compile, install, plist) plus ninja.mk. These are included by the cross/spk/kernel entry points; plist.mk (the final step) lives here too. All include paths updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update the Build Pipeline file table to spksrc.build/* and add a spksrc.build/ block (download -> ... -> plist, plus ninja) to the include hierarchy.
- new mk/spksrc.rules/ <- depend, dependency-tree, generate-digests, pre-check, status, supported, tests (renamed from test-rules.mk) - mk/spksrc.directories.mk -> mk/spksrc.common/directories.mk; since common.mk already sets MKDIR/BASEDIR and loads macros before including it, drop the redundant bootstrap from directories.mk and remove the now-redundant direct 'include spksrc.directories.mk' from every entry point (common.mk pulls it in). Validated: BASEDIR/WORK_DIR resolve correctly for cross (autotools/cmake), spk, native, python wheel, toolchain and kernel; all includes resolve. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a Rules file-organization section and a spksrc.rules/ block to the include hierarchy; list directories.mk under spksrc.common/; update the migrated paths.
This was referenced
Jun 26, 2026Closed
Open
…ry point Make spksrc.rules.mk the single entry point for the rules subsystem: it carries the shared targets (clean, smart-clean, changelog, rustup) and aggregates dependency-tree.mk + generate-digests.mk (plus kernel/required.mk). Drop the now-redundant direct includes of spksrc.rules/generate-digests.mk from spksrc.kernel.mk, spksrc.toolchain.mk and spksrc.toolkit.mk, since they already include spksrc.rules.mk which pulls it in (these were previously double-included). Update the remaining include references and the makefile-system documentation accordingly. No functional change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Revert the temporary SPK_REV bumps made for CI testing (python314-wheels 2 -> 1, tvheadend 48 -> 47). Correct the stale "[borgbackup]" OpenSSL comment in borgbackup, python311-wheels, python312-wheels and python314-wheels: the OpenSSL path (OPENSSL_STAGING_INSTALL_PREFIX) comes from a single source of truth, spksrc.cross/env-default.mk, included via spksrc.cross-cc.mk - not from the now-removed wheel/env.mk or spk-meta.mk. Drop the no-longer-relevant Media/other comment in tvheadend. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merged
…C_MK) SPKSRC_MK was defined in spksrc.service.mk with a recursive '=', so $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) was evaluated at recipe time against the *last* included makefile. While every mk file lived flat under mk/ that always yielded mk/, but since the reorg the last include can be a subdirectory (e.g. mk/spksrc.spk/), so SPKSRC_MK became mk/spksrc.spk/ inside recipes. That broke the DSM7 `wizards` target (find mk/spksrc.spk/wizard -> No such file) and the $(SPKSRC_MK)spksrc.service/* references, failing every spk build on DSM7 archs (DSM6 was spared, the wizard step being DSM7-only). SPKSRC_MK was just the mk/ directory, which spksrc.common.mk already exposes as MKDIR (set once with ':=', always included before spksrc.service.mk). Drop the redundant SPKSRC_MK and reference $(MKDIR)/ directly. Single source of truth, stable regardless of include order. No behavioral change beyond restoring the pre-reorg path resolution. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The download->install pipeline (download, checksum, extract, patch, configure, compile, install) was duplicated verbatim in spksrc.cross-cc.mk and spksrc.native-cc.mk. Factor it into a new env-agnostic spksrc.build.mk that both entry points include, after their own env (cross/env-default vs native/env-default) and the depend/status rules. plist is deliberately left out of the shared pipeline: native build-host tools are not packaged, so spksrc.native-cc.mk has no plist step. The packaged entry points (cross-cc, kernel, main-depends) keep including spksrc.build/plist.mk themselves, so plist stays under spksrc.build/ as a build-pipeline step. Verified the make target graph (make -p) is byte-identical before/after for a cross (nmap) and a native (cmake) package, and that cmake/meson/go/rust cross packages parse with no errors or recipe-override warnings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The crossenv pipeline is python/wheel-specific (included only by spksrc.python-module.mk, spksrc.python-wheel.mk, spksrc.python-wheel-meson.mk and spksrc.wheel.mk). Prefix it with python- so it sorts next to the other python-* entry points in an mk/ directory listing. Reference updated repo-wide, including the wheel/requirement.mk comment and the makefile-system docs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merged
th0ma7 deleted the mk-spk-restructure branch
June 28, 2026 11:44Merged
th0ma7 added a commit to th0ma7/spksrc that referenced this pull request
Jul 15, 2026The mk/ reorganization entry credited only SynoCommunity#7237, but the flat-to-submodule move was an eight-PR effort spread over six months (SynoCommunity#6906, SynoCommunity#6914, SynoCommunity#6973, SynoCommunity#6994, SynoCommunity#7008, SynoCommunity#7237, plus the SynoCommunity#7243 and SynoCommunity#7251 renames). Rewrite it as a single grouped entry with the individual PRs nested, and add an annotated tree of the final mk/ layout so a reader can see where each concern now lives and that the entry-point files a Makefile includes stayed at the root. Add a "Highlights" section at the top: the handful of things a package author most needs to know (context-aware `make help`, the unified CONFIGURE_ARGS / COMPILE_ARGS / INSTALL_ARGS / BUILD_DIR variables, PKG_DIST_MIRRORS, including spksrc.common.mk before version_* macros, and DISABLED vs BROKEN), each linking into the detailed log or the reference docs. While there, backfill the notable framework changes from January to May that the page skipped: - Faster, parallel dependency resolution (SynoCommunity#6894, SynoCommunity#6952, SynoCommunity#7028, SynoCommunity#7121, SynoCommunity#7124) - Deduplicate applied patches (SynoCommunity#7098, SynoCommunity#7104) - Standardize meta package variable names (SynoCommunity#7041, SynoCommunity#7043, SynoCommunity#7044, SynoCommunity#7045) - stage0 minimal environment (SynoCommunity#7031, SynoCommunity#7032, SynoCommunity#7078), which the June stage-0 bootstrap entry builds on - Multi-arch download orchestration (SynoCommunity#6947) Package-specific work (version bumps, individual package fixes) is left out -- this page tracks the framework, not the catalogue. Coverage goes from 17 to 37 PRs. Verified with `mkdocs build --strict`. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QEH1b4ASNYSrZFQnEeroj8
th0ma7 added a commit that referenced this pull request
Jul 15, 2026…variables (#7297) * docs: expand the Framework Changes page and add a Highlights section The mk/ reorganization entry credited only #7237, but the flat-to-submodule move was an eight-PR effort spread over six months (#6906, #6914, #6973, #6994, #7008, #7237, plus the #7243 and #7251 renames). Rewrite it as a single grouped entry with the individual PRs nested, and add an annotated tree of the final mk/ layout so a reader can see where each concern now lives and that the entry-point files a Makefile includes stayed at the root. Add a "Highlights" section at the top: the handful of things a package author most needs to know (context-aware `make help`, the unified CONFIGURE_ARGS / COMPILE_ARGS / INSTALL_ARGS / BUILD_DIR variables, PKG_DIST_MIRRORS, including spksrc.common.mk before version_* macros, and DISABLED vs BROKEN), each linking into the detailed log or the reference docs. While there, backfill the notable framework changes from January to May that the page skipped: - Faster, parallel dependency resolution (#6894, #6952, #7028, #7121, #7124) - Deduplicate applied patches (#7098, #7104) - Standardize meta package variable names (#7041, #7043, #7044, #7045) - stage0 minimal environment (#7031, #7032, #7078), which the June stage-0 bootstrap entry builds on - Multi-arch download orchestration (#6947) Package-specific work (version bumps, individual package fixes) is left out -- this page tracks the framework, not the catalogue. Coverage goes from 17 to 37 PRs. * help + docs: document DEPENDS_TYPE and EXCLUDE_DEPENDS The dependency-tree.mk targets grew two useful modifiers -- DEPENDS_TYPE and EXCLUDE_DEPENDS (#7028), plus ARCH/TCVERSION context (#7121, #7124) -- but they were only described in the file's own header. Neither `make help` nor the docs hinted that the dependency-* output could be filtered. Surface them everywhere they apply: - Package-level `make help` (spksrc.common/help.mk) now shows DEPENDS_TYPE, EXCLUDE_DEPENDS and ARCH/TCVERSION under the Inspect section. - Root `make help` gains an Inspect section for dependency-list-spk, the root-level target that resolves every spk's dependencies and honors the same variables (they propagate to the per-package sub-makes via MAKEFLAGS). - docs/developer-guide/packaging/build-rules.md gains an "Inspecting the dependency graph" subsection with a table, worked examples, and the root-level dependency-list-spk variant. All taken from the authoritative description in mk/spksrc.rules/dependency-tree.mk. Verified with `make help` at both levels (and `make dependency-list-spk DEPENDS_TYPE=NATIVE_DEPENDS`) and `mkdocs build --strict`.