Flatten repo + fix Makefile/CI for clean packaging#1
Merged
Conversation
Every Start9 service-wrapper repo (bitcoin-core-startos, albyhub-startos, synapse-startos, etc.) places package files at the repo root. The previous nested namecoin-core-startos/ directory broke that convention and forced the CI workflow to work-around with 'working-directory:'. Removed the duplicate inner LICENSE and inner .github/workflows/ that were identical to the top-level copies. Kept the inner LICENSE's more project-style copyright line.
Makefile:
- Make 'all' the default and have it actually build the s9pk
(previously 'verify' was default and depended on a file produced
only by a prior successful build, so 'git clone && make' failed)
- Drop the broken $(S9PK_PATH) shell-find at parse time and use a
simple PKG_ID-based path; verify now runs against the actual file
- Spell out asset and script dependencies explicitly so changing
one of them invalidates the build
- Tighten 'clean' to remove the s9pk by name
CI workflow (.github/workflows/build-s9pk.yml):
- Replace ad-hoc ISO-mining and silent 'skip pack' fallback with a
three-stage pipeline:
1) build-sdk: build start-sdk image from existing Dockerfile.sdk
2) build (matrix x86_64/aarch64): build per-arch Docker tarballs
via 'make x86' / 'make arm' so CI and local builds use the
same path; aarch64 uses QEMU
3) pack: load both arch tarballs + SDK image, run 'start-sdk
pack' inside the SDK container, then 'start-sdk verify'
- Drop 'defaults.run.working-directory' (no longer needed after
flatten)
- Run 'docker load' + smoke test on the x86_64 image
- Attach the s9pk to GitHub releases automatically on tag push
- Pass actionlint cleanly
.dockerignore:
- Add to prevent baking docker-images/, .git, README/etc. into the
build context
.gitignore:
- Add sdk.tar.gz and *.tar.gz from the new SDK artifact pipeline
README.md:
- Note that this targets StartOS v0.3.5.x specifically; v0.4.0 is a
rewrite and would require a separate branch
- Fix the clone URL placeholder to the real repo
- Document that CI uses Dockerfile.sdk to extract start-sdk
start-sdk shells out to 'git' to compute a content hash for the s9pk. When the workspace is bind-mounted into the SDK container the file ownership doesn't match the container user, so git refuses with 'detected dubious ownership' and start-sdk fails with 'Could not get hash'. Mark /workspace as a safe.directory before invoking start-sdk in both the pack and verify steps.
mstrofnone
pushed a commit
that referenced
this pull request
May 27, 2026
Port to StartOS 0.4 (TypeScript SDK, start-sdk 1.5.3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Audit pass that gets the repo to a state where
git clone && makeproduces a validnamecoind.s9pkand CI builds it deterministically.Changes
1. Flatten directory structure
Moved every package file from the nested
namecoin-core-startos/directory up to the repo root. This matches the convention used by every other*-startoswrapper repo (bitcoin-core-startos,albyhub-startos,synapse-startos, etc.) and removes the need fordefaults.run.working-directory:workarounds in CI. Removed the duplicate innerLICENSEand inner.github/workflows/(both identical to the top-level copies).2. Fix Makefile
makenow actually builds the s9pk. Previously the default target wasverify, which depended on a file ($(S9PK_PATH)) computed viafindat parse time — meaninggit clone && makealways failed because the file didn't exist yet.S9PK_PATHlookup with a deterministicS9PK := $(PKG_ID).s9pk.cleanto remove the s9pk by name.3. Fix CI workflow (
.github/workflows/build-s9pk.yml)Replaced the ad-hoc StartOS ISO-mining + silent
echo \"start-sdk not available, skipping pack step\"fallback with a clean three-stage pipeline:Dockerfile.sdkimage once and uploads it as an artifact.x86_64/aarch64) — runsmake x86andmake armso CI and local builds use the same path. aarch64 builds via QEMU.start-sdk packandstart-sdk verifyinside the SDK container, then attaches the s9pk to GitHub releases on tag push.Also passes
actionlintcleanly.4. Add
.dockerignorePrevents
docker-images/,.git,README.md, etc. from being baked into the build context.5. README updates
Verification
manifest.yamlhas all required v0.3.5.x fields ✅make -ncleanly resolves the dependency chain ✅actionlint .github/workflows/build-s9pk.ymlis clean ✅Out of scope
Local end-to-end build wasn't run (Docker daemon not running on this box and a full Namecoin Core compile takes 15-30 min). Recommend triggering the workflow on this branch via
workflow_dispatchto confirm the CI side, then taggingv30.2.0.2to test the release-attach path.