th0ma7 · GitHub

and others added 2 commits

June 26, 2026 12:52
Structural 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>
Reflect the new layout in makefile-system.md (file-organization tables and the
include hierarchy, with new spksrc.wheel/ and spksrc.service/ subtrees),
architecture.md (spksrc.spk-meta/ meta files), and the references in
ash-pid-issue.md and reference/permissions.md.
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.
…ectory node
Match the cross/native presentation: the spk.mk tree now branches to the
spksrc.spk/ directory and then to copy/strip/icon/publish (wheel.mk and
service.mk keep their own subtrees below).

@th0ma7 th0ma7 changed the title mk: reorganize spk/service/wheel into functional submodules mk: reorganize into functional submodules (spk/service/wheel/cross/native)

Jun 26, 2026
…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, 2026

Closed

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>
Add the new build-pipeline aggregator to the Build Pipeline table and the
include hierarchy, and note that plist is not part of it (it stays a direct
include for the packaged entry points: cross-cc, kernel, main-depends).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Merged

@th0ma7

@th0ma7

th0ma7 deleted the mk-spk-restructure branch

June 28, 2026 11:44

Merged

th0ma7 added a commit to th0ma7/spksrc that referenced this pull request

Jul 15, 2026
The 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`.

Read the original on github.com ↗