Commit Graph
356 Commits
Author SHA1 Message Date
Isaac ConnorandClaude Opus 5 d8353aa3c3 ci: make package versions unique per build
The snapshot component is date plus the number of commits since version.txt
last changed, so every build of the same tip on the same day produces the same
version string. The repo operator reports 96% of version+dist pairs published
more than once, and 1.39.34~20260912.22-bookworm1 uploaded six times in about
half an hour, each upload overwriting the last with different bytes.

Nothing on the repo server can close that. Reindexing shrinks the window but a
client that read Packages before a republish and fetched the .deb after it still
gets a hash mismatch, because the version no longer identifies the content.

Append GITHUB_RUN_ID and GITHUB_RUN_ATTEMPT, which are unique per build and
never reused. Outside Actions the string is unchanged, so a local build still
produces the version it always did.

Checked that the longer string still sorts after the versions already published
and before the next version.txt bump, with dpkg --compare-versions and
rpm.vercmp.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UkQwahn9pi1y4wJe9BTxjM
2026-09-12 11:54:25 -04:00
Isaac ConnorandClaude Opus 5 c450b957e8 Publish packages to zmrepo.zoneminder.com
The upload target in do_debian_package.sh still pointed at
zmrepo.connortechnology.com. ZoneMinder infrastructure should live under
zoneminder.com, so the hostname no longer implies the repo is one person's
personal box.

zmrepo.zoneminder.com already resolves to the same host (158.69.226.113), so
this is a rename in front of unchanged infrastructure. Nothing moves and no
existing client configuration breaks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 10:17:22 -04:00
Isaac Connor c96774a59f fix: build only arch-dependent packages on aarch64 so _all debs upload once
The amd64 and aarch64 deb workflows build the same distro matrix, so both
produced zoneminder-doc_<version>_all.deb and uploaded it to the same
mini-dinstall incoming directory at the same time, racing each other and
offering mini-dinstall the same file twice.

Add a binary-arch build type to do_debian_package.sh that runs debuild -B,
and use it from the aarch64 workflow. The arm .changes then references only
arm64 packages and the arch-independent debs come from amd64 alone.
2026-08-20 18:21:08 -04:00
Isaac ConnorandClaude Opus 5 cd0c39f0ca ci: check the SharedData 32bit/64bit ABI in the warnings build
Every CI runner is 64bit, so nothing in CI exercised the 32bit SharedData
layout that zmc/zma/zms, ZoneMinder::Memory and web/includes/Monitor.php
all have to agree on. The i386 alignment divergence that broke the 32bit
build was only caught downstream.

utils/check-shareddata-abi.py lifts the struct body and its static_asserts
out of zm_monitor.h, compiles them standalone at -m32 and -m64, and
requires the size and every member offset to match. Compiling only the
struct avoids needing a 32bit copy of the ffmpeg, mysql and curl headers;
gcc-multilib alone is enough and the check takes about a second, so it
runs before the build rather than after it.

The expected size is never duplicated in the script. It comes from the
assertions in the header, so there is one source of truth and the script
cannot drift from it. Removing the assertions is itself reported as a
failure, since deleting the guard is the tempting way to silence a 32bit
build error.

Verified by reverting the epadding members, which reproduces the original
downstream failure (880 == 888) and additionally names capture_fps,
startup_time and control_state, and by deleting the assertions, which is
reported as a missing guard.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 08:38:27 -04:00
Isaac ConnorandClaude Opus 5 2338be004d chore: add Fedora 44 to RPM package build workflows
Add fedora:44 to the build matrix in build-rpm-packages.yml and
build-rpm-packages-aarch64.yml, and to the DISTROS list in
utils/zmrepo_mkdirs.sh so the repo tree gets an rpm/master/fedora/44
directory for the deploy rsync.

Fall back to rpmfusion-free-release-rawhide.noarch.rpm in the x86_64
workflow when the versioned release RPM is missing, matching what the
aarch64 workflow already does. Fedora 44 is rawhide, so
rpmfusion-free-release-44.noarch.rpm does not exist yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NZhAPb2indRrLWSEJ87kf8
2026-07-29 18:17:00 -04:00
Isaac ConnorandClaude Opus 4.8 f806ff5748 fix: make homoglyph guard pass its own check
The initial utils/check-homoglyphs.py expressed the Cyrillic/Greek ranges as
literal characters in its regex and used a literal Cyrillic C in an example
string, so the script flagged itself and CI Homoglyphs failed on master.
Express the character-class bounds with \u escapes and describe the example by
codepoint only, keeping the file pure ASCII while matching the same ranges.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KQipwf632JGgNH4W7p8cqs
2026-07-19 23:25:12 -04:00
Isaac ConnorandClaude Opus 4.8 d9d921e136 ci: add homoglyph guard for first-party source
Cyrillic/Greek characters that look like ASCII letters keep landing in the
tree from pasted contributions (discussions #4993, #4678, PR #4678), breaking
lookups and getting corrupted by reverse proxies. utils/check-homoglyphs.py
scans the git-tracked source for characters in the Cyrillic (U+0400-U+04FF)
and Greek (U+0370-U+03FF) blocks and exits non-zero on any hit, excluding
translations (web/lang/) and vendored/minified assets where they are
legitimate. A CI Homoglyphs workflow runs it on push and pull request, and it
can be run locally with python3 utils/check-homoglyphs.py.

refs https://github.com/ZoneMinder/zoneminder/discussions/4993

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KQipwf632JGgNH4W7p8cqs
2026-07-19 23:20:54 -04:00
Isaac ConnorandClaude Opus 4.8 c102f1ec02 fix: pre-create ZMREPO rpm target dirs before rsync deploy
The build-rpm-packages workflows deploy with easingthemes/ssh-deploy using
rsync args -rltgoDzvO, which does not create missing parent directories on
the remote. When the zmrepo directory tree was deleted the deploy step
failed.

--mkpath is not a viable fix: it is parsed by the local rsync in the build
container, and Rocky 8 ships rsync 3.1.3 which predates the flag (3.2.3+).

Add a pre-deploy step that creates rpm/master/<family>/<releasever>/<arch>/
over ssh with mkdir -p, which has no rsync version dependency. Also add
utils/zmrepo_mkdirs.sh to recreate the full tree manually.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 19:18:23 -04:00
Isaac ConnorandClaude Opus 4.6 47e6f2f4f4 fix: exclude orig tarball from deb uploads to zmrepo
Two changes that together stop the .orig.tar.gz from landing in
mini-dinstall's incoming dir and causing cross-distro filename
collisions:

- do_debian_package.sh: quote DEBUILD assignment so the -b flag is
  actually passed to debuild. Without quotes, bash parsed it as
  "run -b with DEBUILD=debuild as one-shot env", dropping the binary
  flag and falling back to a full source build that included the orig
  tarball in .changes.
- build-deb-packages{,-aarch64}.yml: drop *.dsc, *.tar.xz, *.tar.gz
  from the artifact collection mv. Only .deb, .buildinfo, and .changes
  are needed for binary uploads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 16:31:52 -04:00
Isaac Connor 7532cfbabf Try out recommended options for debuild when doing binary 2026-03-07 22:38:03 -05:00
Isaac ConnorandClaude Opus 4.6 874f43b198 feat: add --local-source option to do_debian_package.sh
Allow specifying a local git directory to clone from without pulling it
first. Accepts -l=DIR / --local-source=DIR flag or a trailing positional
argument that is an existing directory. Skips all git pull operations on
the source, using the directory contents as-is.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 20:12:25 -05:00
Isaac Connor 09d932a4f8 Update RtspServer for rpm builds 2026-02-02 13:07:20 -05:00
Isaac Connor 063dfa6376 Use eaf46c0207df24853a238d4499e7f4426d9d234c instead of 0.3 for CxxUrl 2025-12-08 12:27:13 -05:00
Isaac Connor db59c08862 Always start clean with CxxUrl 2025-12-08 11:52:15 -05:00
Isaac Connor c87640e03f Use rm -r instad of rmdir 2025-12-08 11:35:44 -05:00
Isaac Connor f13a0eb2a5 Handle the fact that the dir in the .tar.gz doesn't have the v 2025-12-08 10:22:48 -05:00
Isaac Connor 0d96383fb2 Fix typo preventing packpack builds 2025-12-08 10:05:28 -05:00
Isaac Connor 09598fd84d Do some early output and fixup some exit statuses 2025-10-28 14:07:14 -04:00
Isaac Connor 42073929d1 Fix url to CxxUrl targz 2025-09-04 17:23:07 -04:00
Isaac Connor 3ea34aef2d Add CxxUrl 2025-09-04 15:59:07 -04:00
Andrew Bauer 35f1d87f11 Update startpackpack.sh
update packpack to pull the latest commit from RTSPServer project
2025-01-25 09:39:01 -06:00
Isaac Connor 24933462df Add noble and do package install test for jammy 2024-08-19 12:25:45 -04:00
Isaac Connor 399bc7e6e0 Only look for version.txt in the root 2024-05-08 14:31:02 -04:00
Aaron Kling 2da562dad0 packpack: Pass platform to docker if cross-compiling 2024-03-25 15:04:20 -05:00
Isaac Connor c275f5aec3 Add debug to dput 2024-03-20 12:43:43 -04:00
Isaac Connor f224bf7262 Use either version or version.txt. Fixes #3798 2023-12-29 12:35:59 -05:00
Alejandro Criado-Pérez 6fd119157a Text corrections 2023-08-27 02:00:59 +02:00
Isaac Connor df657db65c Add bookwork support 2023-06-27 15:06:42 -04:00
Isaac Connor 9606b1d855 version to version.txt 2023-06-21 19:01:36 -04:00
Isaac Connor 02bb120f6e version has been moved to version.txt 2023-06-12 09:44:32 -04:00
Isaac Connor f8915aa363 Update to reflect the change of version to version.txt 2023-06-12 09:35:07 -04:00
Jonathan Mathews 7cc8cb17fa Enable building on ubuntu jammy 2022-07-26 09:36:27 -05:00
Isaac Connor 641613fe48 echo the scp command so we can cutnpaste it later 2022-04-06 10:39:19 -04:00
Isaac Connor 4874dedc1f Bump version of RtspServer used 2022-02-02 10:28:23 -05:00
Isaac Connor 185dc4a50d Do a git pull instead of fetch so as to actually get the changes 2021-12-22 11:28:00 -05:00
Isaac Connor 4c351a6c54 When orig.tar.bz2 doesn't exist, just create it without asking 2021-12-14 09:39:29 -05:00
Isaac Connor cfcc39defb Merge branch 'master' of github.com:ZoneMinder/zoneminder 2021-12-14 09:29:03 -05:00
Isaac Connor 7bc46ba7a8 Create the .tar.gz by default if it doesn't exist. Only warn if it already exists. 2021-12-09 15:19:49 -05:00
Isaac Connor b5098a1ab9 Do not guess multiple distros. release building will have automated distro specification. 2021-11-29 16:26:23 -05:00
Isaac Connor 089563d1ce rework do_debian_package to properly support the CURRENT style of snapshots and make the code a little easier to read 2021-11-29 14:14:56 -05:00
Isaac Connor 8868a0fc41 enforce default action 2021-11-12 15:11:48 -05:00
Isaac Connor 126a102426 confirm before tar-gzipping orig. Fix default behaviour in dput prompt 2021-10-12 14:12:16 -04:00
Isaac Connor 03f0762709 Add support for package version 2021-09-14 18:08:50 -04:00
Isaac Connor 9d461203bd Merge branch 'master' of github.com:ZoneMinder/zoneminder 2021-09-04 10:17:52 -04:00
Isaac Connor 8c45739875 Add impish to possible distros to build 2021-09-04 10:17:41 -04:00
Isaac Connor fe6f71e1dc Leave the zoneminder source dir during build-deps step so that we don't pollute it. Seems to be an issue with newer ubuntu builds. 2021-09-03 21:57:54 -04:00
Isaac Connor 45bf28a104 Merge pull request #3321 from anon8675309/gitlab-ci
Gitlab ci
2021-08-05 13:34:05 -04:00
Peter Keresztes Schmidt 2c0cf7a5a7 utils/startpackpack: Add support for Debian Bullseye 2021-08-03 23:33:35 +02:00
Peter Keresztes Schmidt b5765b4535 utils/startpackpack: Fix build for Ubuntu Bionic 2021-08-03 23:33:35 +02:00
Peter Keresztes Schmidt 7d84568b65 utils: Remove support for Ubuntu Groovy
Groovy went EOL as on July 22, 2021. See
https://fridge.ubuntu.com/2021/07/25/ubuntu-20-10-groovy-gorilla-end-of-life-reached-on-july-22-2021/
2021-08-03 23:33:35 +02:00