Commit graph

12 commits

Author SHA1 Message Date
e6fd22f8a1
switch release workflow from GitHub Actions to Forgejo Actions
Some checks failed
release.yml / switch release workflow from GitHub Actions to Forgejo Actions (push) Failing after 0s
release.yml / switch release workflow from GitHub Actions to Forgejo Actions (pull_request) Failing after 0s
The GitHub channel gave nothing but chaos (failed runs on tag push,
auth issues with gh CLI on this side). Forgejo is the source of
truth (cf. USER.md 'Remote setup' for the yavsc mirror setup), so
move the .deb release workflow there.

- Remove .github/workflows/build-and-release-deb.yml.
- Add .forgejo/workflows/release.yml, mirroring the structure of
  yavsc/.forgejo/workflows/release.yml (single job, no Node, bash
  + jq + curl). amd64 and arm64 .deb built sequentially (matrix
  is impossible because actions/upload-artifact needs Node, which
  the runner image pazof/yavsc-build-env doesn't ship — same
  constraint as documented in MEMORY.md).
- Reuse existing release on tag collision (PATCH instead of POST)
  to keep the /releases/tag/<tag> permalink stable — re-tag = le
  mal, but a re-build of the same tag should not duplicate releases.
2026-08-17 15:28:39 +01:00
0c45511bd9
comment 2026-08-17 15:23:50 +01:00
122fb32124
release 1.0.6: bump packaging defaults, add CHANGELOG, CI workflow
Some checks failed
Build and Release postit-deb / publish-release (push) Has been cancelled
Build and Release postit-deb / validate-release (push) Has been cancelled
Build and Release postit-deb / Build .deb (linux-arm64) (push) Has been cancelled
Build and Release postit-deb / Build .deb (linux-x64) (push) Has been cancelled
- Makefile + debian/rules: POSTIT_GIT_TAG default 1.0.0 → 1.0.6.
- CHANGELOG.md: document the 1.0.6 release (workflow rollout).
- .github/workflows/build-and-release-deb.yml: GitHub Actions workflow
  that builds postit_*.deb (matrix amd64+arm64 via cross-RID .NET on
  amd64 runners) from a tag pushed to this repo, validates the tag
  (semver, patch-parity channel, CHANGELOG section), and publishes a
  GitHub Release with both .deb as assets. Refuses to re-tag an
  existing release by default (re-tag = le mal); opt-in via
  workflow_dispatch + force_republish=true.

Pattern mirrors yavsc/.github/workflows/docker-publish-android.yml.
2026-08-17 14:53:07 +01:00
2e39546715 build the specified version 2026-06-28 14:26:41 +01:00
Lum
7f57952a92 postit-debian: support POSTIT_GIT_TAG as a tag (not just a branch)
The previous override_dh_auto_build used 'git clone --branch <tag>'
which only accepts branch names. Feeding it 1.0.1-rc02 (a tag,
not yet pushed to origin) failed with 'La branche distante
1.0.1-rc02 n'a pas ete trouvee' and aborted the package build.

Switch to a 'git init + remote add + fetch --depth=1 origin <ref>
+ checkout FETCH_HEAD' sequence, which works for both branches
and tags, including local-only tags fetched via file:// (the
typical RC-staging workflow: 'git tag' on the local checkout,
then 'make POSTIT_GIT_URL=file:///... POSTIT_GIT_TAG=<tag>'
before pushing).

The fetch error now carries a diagnostic that points the operator
at the file:// override and at the missing 'git push'.

Adds tests/test-fetch-upstream.sh with four cases against the
real pazof/yavsc remote and a synthetic local repo: tag on
GitHub, branch on GitHub, .git reuse, and tag via file://.
Wired into 'make test'.
2026-06-28 13:47:15 +01:00
Lum
69ec916c4e packaging: derive Debian version from POSTIT_GIT_TAG via a changelog template
The .deb was hardcoded to 1.0.0-1 in debian/changelog regardless of
POSTIT_GIT_TAG, so 'make POSTIT_GIT_TAG=1.0.1-rc01' produced a
postit_1.0.0-1_amd64.deb (wrong name) and the trailing mv into
POSTIT_OUT_DIR silently fell back to the same wrong-name glob.

Move the version into a @VERSION@-bearing debian/changelog.in
template and render debian/changelog from it in the Makefile, before
dpkg-buildpackage runs (it reads debian/changelog during
dpkg-source --before-build, before any rule fires). debian/changelog
is .gitignored; the template is the source of truth.

debian/rules re-renders the changelog as a safety net for direct
dpkg-buildpackage invocations and adds it to override_dh_auto_clean
so partial builds leave no stale rendered file behind.
2026-06-28 13:20:17 +01:00
28303435cc debian+makefile: expose POSTIT_RUNTIME override for arm64 builds
Default stays linux-x64 (the only architecture built today).
Override on the command line to target arm64 (or any other
RID supported by Avalonia 12 on Linux):

  make deb POSTIT_RUNTIME=linux-arm64

The Makefile passes POSTIT_RUNTIME through to dpkg-buildpackage,
which propagates it to debian/rules, which threads it into
dotnet publish --runtime.

Note: the .deb is mono-architecture. For a multi-arch .deb,
the build must run twice (once per RID) and the resulting .debs
can be combined with dpkg-gencontrol / Multi-Arch: same.

Update README accordingly.
2026-06-28 00:51:14 +01:00
a0b9912709 debian: add postit.install listing files for dh_install
dh_install, by default, only installs files explicitly listed
in debian/<package>.install. Without that file, it silently
installs nothing — the build pipeline ends with an empty .deb
of just changelog and copyright.

List:
  /usr/lib/postit/*  (managed assemblies)
  /usr/bin/postit    (wrapper script)
  /usr/share/applications/postit.desktop
  /usr/share/icons/hicolor/{16,32,48,64,128,256}x{...}/apps/postit.png
  /usr/share/icons/hicolor/scalable/apps/postit.svg
2026-06-28 00:49:14 +01:00
b23f2bdec2 gitignore: cover debhelper-generated dirs and stray .deb artifacts
The original .gitignore caught *.deb in the source tree but not:
- debian/.debhelper/  (cache populated by every dh_* helper)
- debian/debhelper-build-stamp, debian/postit.debhelper.log,
  debian/postit.substvars (regenerated per build)
- debian/tmp/         (staging tree for dh_install)
- postit_*.{deb,changes,buildinfo} in the parent workspace
  (where dpkg-buildpackage drops artifacts)
2026-06-28 00:48:53 +01:00
78a56d3e68 debian: stage under debian/tmp/ via dh_install override
Initial debian/rules wrote into debian/postit/usr/... directly.
That fails: dh_clean (run between override_dh_auto_build and
dh_install) wipes the package staging dir, and dh_install needs
debian/tmp/ as the canonical staging area to install files
into debian/postit/.

Move the cp-and-convert block out of override_dh_auto_build into
a 'stage_postit' make define, and call it from override_dh_install
right before dh_install moves files into the package tree.

Also: simplify POSTIT_* path variables — drop the duplicated
POSTIT_APP_DIR / POSTIT_LIB_DIR / POSTIT_BIN_DIR / POSTIT_SHARE_DIR
set (they all derived from debian/postit which is now what dh_install
populates).
2026-06-28 00:48:18 +01:00
8cda50c1fb debian: drop debhelper-compat from Build-Depends (set in compat)
Build-Depends already includes dotnet-sdk-10.0, imagemagick,
librsvg2-bin, git, ca-certificates. The debhelper-compat (= 13)
line was duplicated: the same version is set in debian/compat
(debhelper reads it from there by convention). dh errors out
with:

  dh: error: debhelper compat level specified both in
     debian/compat and in debian/control

Drop the line in control.
2026-06-28 00:47:30 +01:00
9703ebf4dd Initial Debian package for PostIt.Desktop (yavsc) 2026-06-28 00:10:15 +01:00