From f544a9d009efcc99e38036d0ef5c160566a38da3 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:17:03 -0700 Subject: [PATCH 01/14] Add OpenBSD package build workflow --- .github/workflows/openbsd-build.yml | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/openbsd-build.yml diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml new file mode 100644 index 00000000..9e2a16cb --- /dev/null +++ b/.github/workflows/openbsd-build.yml @@ -0,0 +1,62 @@ +name: OpenBSD Package + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + openbsd_package: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Build OpenBSD package + uses: vmactions/openbsd-vm@v1 + with: + release: '7.4' + usesh: true + run: | + set -eux + pkg_add \ + git \ + meson ninja pkgconf gmake \ + gettext-tools \ + glib2 gtk+2 dbus-glib libcanberra \ + luajit openssl + cd "$GITHUB_WORKSPACE" + rm -rf build staging artifacts + meson setup build \ + -Dtext-frontend=true \ + -Dtheme-manager=true \ + -Dplugin=false \ + -Dauto_features=enabled + ninja -C build + DESTDIR="$PWD/staging" ninja -C build install + + version="$(meson introspect --projectinfo build | sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')" + pkg_name="zoitechat-${version}" + plist="$PWD/openbsd-plist" + + { + echo "@name ${pkg_name}" + echo "@comment OpenBSD package built by GitHub Actions" + echo "@cwd /usr/local" + find "$PWD/staging/usr/local" -type f -o -type l | sort | sed "s#^$PWD/staging/usr/local/##" + find "$PWD/staging/usr/local" -mindepth 1 -type d | sort -r | sed "s#^$PWD/staging/usr/local#@dir #" + } > "$plist" + + pkg_create -p /usr/local -f "$plist" -U "$PWD/${pkg_name}.tgz" + mkdir -p "$PWD/artifacts" + mv "$PWD/${pkg_name}.tgz" "$PWD/artifacts/" + + - name: Upload OpenBSD package + uses: actions/upload-artifact@v4 + with: + name: openbsd-package + path: artifacts/*.tgz From 9e6850eb4f6e7871bcdada0dc371a3d4472c4a9f Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:51:31 -0700 Subject: [PATCH 02/14] Change OpenBSD package release to 7.5 Updated OpenBSD package release from 7.4 to 7.5. --- .github/workflows/openbsd-build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 9e2a16cb..97f03b4e 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -19,11 +19,12 @@ jobs: - name: Build OpenBSD package uses: vmactions/openbsd-vm@v1 with: - release: '7.4' + release: '7.5' usesh: true run: | set -eux - pkg_add \ + export PKG_PATH="https://cdn.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" + pkg_add -U \ git \ meson ninja pkgconf gmake \ gettext-tools \ From 37babfa29abcfc53bed62642fab52f95a579c280 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Tue, 13 Jan 2026 23:56:23 -0700 Subject: [PATCH 03/14] Update PKG_PATH to use ftp mirror --- .github/workflows/openbsd-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 97f03b4e..0ad40b77 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -23,7 +23,7 @@ jobs: usesh: true run: | set -eux - export PKG_PATH="https://cdn.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" + export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" pkg_add -U \ git \ meson ninja pkgconf gmake \ From de4812cf93f7b5854cbd798e179150ca94aaae65 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:03:35 -0700 Subject: [PATCH 04/14] Update dependencies in OpenBSD build workflow --- .github/workflows/openbsd-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 0ad40b77..43b93861 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -29,7 +29,7 @@ jobs: meson ninja pkgconf gmake \ gettext-tools \ glib2 gtk+2 dbus-glib libcanberra \ - luajit openssl + luajit mono libgdiplus openssl cd "$GITHUB_WORKSPACE" rm -rf build staging artifacts meson setup build \ From 212b6d8a5708f8ff9b50379b82ce95dc9c792188 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:14:41 -0700 Subject: [PATCH 05/14] Fix directory listing format in OpenBSD build workflow --- .github/workflows/openbsd-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 43b93861..abd2a6bc 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -49,7 +49,7 @@ jobs: echo "@comment OpenBSD package built by GitHub Actions" echo "@cwd /usr/local" find "$PWD/staging/usr/local" -type f -o -type l | sort | sed "s#^$PWD/staging/usr/local/##" - find "$PWD/staging/usr/local" -mindepth 1 -type d | sort -r | sed "s#^$PWD/staging/usr/local#@dir #" + find "$PWD/staging/usr/local" -mindepth 1 -type d | sort -r | sed "s#^$PWD/staging/usr/local/##" | sed 's#^#@dir #' } > "$plist" pkg_create -p /usr/local -f "$plist" -U "$PWD/${pkg_name}.tgz" From 369001193358352ff9594128a6925b972d3e7ccc Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:22:20 -0700 Subject: [PATCH 06/14] Update pkg_create command to include staging path --- .github/workflows/openbsd-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index abd2a6bc..19ad7195 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -52,7 +52,7 @@ jobs: find "$PWD/staging/usr/local" -mindepth 1 -type d | sort -r | sed "s#^$PWD/staging/usr/local/##" | sed 's#^#@dir #' } > "$plist" - pkg_create -p /usr/local -f "$plist" -U "$PWD/${pkg_name}.tgz" + pkg_create -B "$PWD/staging" -p /usr/local -f "$plist" -U "$PWD/${pkg_name}.tgz" mkdir -p "$PWD/artifacts" mv "$PWD/${pkg_name}.tgz" "$PWD/artifacts/" From 4ebdaf7c1e34fbe5738f30f51c861bb75e352376 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:33:08 -0700 Subject: [PATCH 07/14] Enable sync option in OpenBSD build workflow --- .github/workflows/openbsd-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 19ad7195..0b3689ee 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -21,6 +21,7 @@ jobs: with: release: '7.5' usesh: true + sync: true run: | set -eux export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" From 4373516256f0fd673c39f6f1837d0cb80c76290c Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:40:08 -0700 Subject: [PATCH 08/14] Add ntpd command to OpenBSD build workflow --- .github/workflows/openbsd-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 0b3689ee..be2b6f23 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -24,6 +24,7 @@ jobs: sync: true run: | set -eux + ntpd -s export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" pkg_add -U \ git \ From 5e4bc8966c9721702d3510fda59722a09b38c0a0 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:45:26 -0700 Subject: [PATCH 09/14] Replace ntpd with rdate for time synchronization --- .github/workflows/openbsd-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index be2b6f23..2f2c63be 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -24,7 +24,7 @@ jobs: sync: true run: | set -eux - ntpd -s + rdate -n pool.ntp.org export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" pkg_add -U \ git \ From d8460692ac6a2d044cd8ea73ae83a1e78161b1e4 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 01:03:55 -0700 Subject: [PATCH 10/14] Update OpenBSD build workflow with rsync and staging --- .github/workflows/openbsd-build.yml | 48 +++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 2f2c63be..1e3d3240 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -21,42 +21,70 @@ jobs: with: release: '7.5' usesh: true - sync: true + sync: rsync # IMPORTANT: don't use `true` run: | set -eux + + # Keep time sane rdate -n pool.ntp.org + export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" + pkg_add -U \ git \ meson ninja pkgconf gmake \ gettext-tools \ glib2 gtk+2 dbus-glib libcanberra \ luajit mono libgdiplus openssl - cd "$GITHUB_WORKSPACE" - rm -rf build staging artifacts + + # Build on local disk (NOT the synced/mounted workspace) + work="$(mktemp -d /tmp/zoitechat.XXXXXX)" + trap 'rm -rf "$work"' EXIT + rsync -a --delete "$GITHUB_WORKSPACE"/ "$work/src/" + cd "$work/src" + + rm -rf build meson setup build \ + --prefix=/usr/local \ -Dtext-frontend=true \ -Dtheme-manager=true \ -Dplugin=false \ -Dauto_features=enabled + ninja -C build - DESTDIR="$PWD/staging" ninja -C build install + + staging="$work/staging" + rm -rf "$staging" + DESTDIR="$staging" ninja -C build install + + # Force flush in case the FS is weird + sync version="$(meson introspect --projectinfo build | sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')" pkg_name="zoitechat-${version}" - plist="$PWD/openbsd-plist" + plist="$work/openbsd-plist" { echo "@name ${pkg_name}" echo "@comment OpenBSD package built by GitHub Actions" echo "@cwd /usr/local" - find "$PWD/staging/usr/local" -type f -o -type l | sort | sed "s#^$PWD/staging/usr/local/##" - find "$PWD/staging/usr/local" -mindepth 1 -type d | sort -r | sed "s#^$PWD/staging/usr/local/##" | sed 's#^#@dir #' + + # Files + symlinks + find "$staging/usr/local" \( -type f -o -type l \) -print \ + | LC_ALL=C sort \ + | sed "s#^$staging/usr/local/##" + + # Directories (reverse so children removed first) + find "$staging/usr/local" -mindepth 1 -type d -print \ + | LC_ALL=C sort -r \ + | sed "s#^$staging/usr/local/##" \ + | sed 's#^#@dir #' } > "$plist" - pkg_create -B "$PWD/staging" -p /usr/local -f "$plist" -U "$PWD/${pkg_name}.tgz" - mkdir -p "$PWD/artifacts" - mv "$PWD/${pkg_name}.tgz" "$PWD/artifacts/" + pkg_create -B "$staging" -p /usr/local -f "$plist" -U "$work/${pkg_name}.tgz" + + mkdir -p "$GITHUB_WORKSPACE/artifacts" + cp "$work/${pkg_name}.tgz" "$GITHUB_WORKSPACE/artifacts/" - name: Upload OpenBSD package uses: actions/upload-artifact@v4 From 758f879700ff10dc900d0eb548137bd83de1d868 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 09:17:27 -0700 Subject: [PATCH 11/14] Refactor OpenBSD build workflow for clarity and efficiency --- .github/workflows/openbsd-build.yml | 47 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 1e3d3240..8830beab 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -21,13 +21,11 @@ jobs: with: release: '7.5' usesh: true - sync: rsync # IMPORTANT: don't use `true` + sync: rsync run: | set -eux - # Keep time sane rdate -n pool.ntp.org - export PKG_PATH="https://ftp.openbsd.org/pub/OpenBSD/7.5/packages/$(uname -m)/" pkg_add -U \ @@ -37,9 +35,9 @@ jobs: glib2 gtk+2 dbus-glib libcanberra \ luajit mono libgdiplus openssl - # Build on local disk (NOT the synced/mounted workspace) work="$(mktemp -d /tmp/zoitechat.XXXXXX)" trap 'rm -rf "$work"' EXIT + rsync -a --delete "$GITHUB_WORKSPACE"/ "$work/src/" cd "$work/src" @@ -55,33 +53,54 @@ jobs: staging="$work/staging" rm -rf "$staging" - DESTDIR="$staging" ninja -C build install + mkdir -p "$staging" + + # Staged install + DESTDIR="$staging" meson install -C build --no-rebuild + + # If these exist, something ignored DESTDIR (install scripts are leaking) + ls -l /usr/local/bin/zoitechat /usr/local/bin/thememan 2>/dev/null || true - # Force flush in case the FS is weird sync + sleep 1 + sync + + # Freeze staged tree so pkg_create doesn't see moving targets + snap="$work/staging-snap" + rm -rf "$snap" + mkdir -p "$snap" + (cd "$staging" && pax -rw -pe . "$snap") version="$(meson introspect --projectinfo build | sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')" pkg_name="zoitechat-${version}" plist="$work/openbsd-plist" + desc="$work/DESCR" + + cat >"$desc" <<'EOF' +ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. +EOF { echo "@name ${pkg_name}" - echo "@comment OpenBSD package built by GitHub Actions" echo "@cwd /usr/local" - # Files + symlinks - find "$staging/usr/local" \( -type f -o -type l \) -print \ + find "$snap/usr/local" \( -type f -o -type l \) -print \ | LC_ALL=C sort \ - | sed "s#^$staging/usr/local/##" + | sed "s#^$snap/usr/local/##" - # Directories (reverse so children removed first) - find "$staging/usr/local" -mindepth 1 -type d -print \ + find "$snap/usr/local" -mindepth 1 -type d -print \ | LC_ALL=C sort -r \ - | sed "s#^$staging/usr/local/##" \ + | sed "s#^$snap/usr/local/##" \ | sed 's#^#@dir #' } > "$plist" - pkg_create -B "$staging" -p /usr/local -f "$plist" -U "$work/${pkg_name}.tgz" + pkg_create \ + -B "$snap" \ + -p /usr/local \ + -f "$plist" \ + -c "ZoiteChat IRC client" \ + -d "$desc" \ + "$work/${pkg_name}.tgz" mkdir -p "$GITHUB_WORKSPACE/artifacts" cp "$work/${pkg_name}.tgz" "$GITHUB_WORKSPACE/artifacts/" From 3225a28e123254c69e0e9674ae2d804e778214af Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 09:28:31 -0700 Subject: [PATCH 12/14] Fix EOF syntax in openbsd-build.yml --- .github/workflows/openbsd-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 8830beab..42d9a70e 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -77,8 +77,8 @@ jobs: desc="$work/DESCR" cat >"$desc" <<'EOF' -ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. -EOF + ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. + EOF { echo "@name ${pkg_name}" From cc359bd3e35f082adc8ac19a7236cb1ba0f38a4f Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:26:47 -0700 Subject: [PATCH 13/14] Modify OpenBSD package creation for ZoiteChat Update package creation script for ZoiteChat to include full package path and comment. --- .github/workflows/openbsd-build.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 42d9a70e..81a7e47f 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -73,37 +73,43 @@ jobs: version="$(meson introspect --projectinfo build | sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')" pkg_name="zoitechat-${version}" + pkg_file="${pkg_name}.tgz" plist="$work/openbsd-plist" desc="$work/DESCR" cat >"$desc" <<'EOF' - ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. - EOF +ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. +EOF { - echo "@name ${pkg_name}" echo "@cwd /usr/local" + # Files + symlinks find "$snap/usr/local" \( -type f -o -type l \) -print \ | LC_ALL=C sort \ | sed "s#^$snap/usr/local/##" + # Directories (reverse so children removed first) find "$snap/usr/local" -mindepth 1 -type d -print \ | LC_ALL=C sort -r \ | sed "s#^$snap/usr/local/##" \ | sed 's#^#@dir #' } > "$plist" + # OpenBSD pkg_create: COMMENT is set via -D COMMENT=... (mandatory), no -c flag exists. + # Create the .tgz in $work so we can copy it back out. + cd "$work" pkg_create \ -B "$snap" \ -p /usr/local \ -f "$plist" \ - -c "ZoiteChat IRC client" \ -d "$desc" \ - "$work/${pkg_name}.tgz" + -D "COMMENT=ZoiteChat IRC client" \ + -D "FULLPKGPATH=net/zoitechat" \ + "$pkg_file" mkdir -p "$GITHUB_WORKSPACE/artifacts" - cp "$work/${pkg_name}.tgz" "$GITHUB_WORKSPACE/artifacts/" + cp "$work/$pkg_file" "$GITHUB_WORKSPACE/artifacts/" - name: Upload OpenBSD package uses: actions/upload-artifact@v4 From 8cdc6cb966333eecb8c87c8c55a47f2ebd417cfd Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:27:33 -0700 Subject: [PATCH 14/14] Fix EOF syntax in openbsd-build.yml --- .github/workflows/openbsd-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openbsd-build.yml b/.github/workflows/openbsd-build.yml index 81a7e47f..68fd8e39 100644 --- a/.github/workflows/openbsd-build.yml +++ b/.github/workflows/openbsd-build.yml @@ -78,8 +78,8 @@ jobs: desc="$work/DESCR" cat >"$desc" <<'EOF' -ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. -EOF + ZoiteChat is an IRC client (HexChat-derived) with a GTK UI and optional tools. + EOF { echo "@cwd /usr/local"