[Bug 297378] net-mgmt/semaphore: update to 2.19.7, restore web UI

[email protected] Sat, 08 Aug 2026 21:18:33 +0000
Newsgroups gmane.os.freebsd.devel.ports.bugs
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297378

            Bug ID: 297378
           Summary: net-mgmt/semaphore: update to 2.19.7, restore web UI
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
          Assignee: [email protected]
             Flags: maintainer-feedback?([email protected])

Created attachment 273558
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=273558&action=edit
patch

Summary
-------
The port has been frozen at 2.9.2 and installed only the REST API server;
the bundled web UI was never built, so every UI route returned 404.  This
updates net-mgmt/semaphore to 2.19.7 and restores the embedded Vue UI.

All changes in this patch
-------------------------
- Makefile: 2.9.2 -> 2.19.7; GH_ACCOUNT semaphoreui (repo moved from
  ansible-semaphore/semaphore to semaphoreui/semaphore); USES=go:1.26;
  regenerated GH_TUPLE + added GL_TUPLE; version via -ldflags -X util.Ver;
  post-extract places the web UI and the vendored "pro" module.
- distinfo: regenerated for 2.19.7 (source, all module distfiles, and the
  two supplemental distfiles below).
- files/semaphore.in: fixed the rc invocation, "semaphore server --config"
  (2.x). The old script used the 1.x form "semaphore -config" and never
  started.
- files/config.json.sample: new; sqlite-based sample (BoltDB was removed
  upstream, dialects are now mysql/postgres/sqlite).
- pkg-plist: reduced to bin/semaphore + the config sample (SQL migrations
  are now embedded via go:embed).
- Removed obsolete patches: patch-util_config.go (version_gen),
  patch-db_sql_SqlDb.go (packr/DATADIR), patch-config.json.

Why two distfiles are hosted on github.com/joneum/FreeBSD-Semaphore
------------------------------------------------------------------
They are generated artifacts that no upstream location provides, and they
cannot be produced inside the network-isolated build jail:

1. semaphore-webui-<ver>.tar.gz -- the built Vue frontend (api/public).
   Since 2.10 the UI is embedded with //go:embed public/*.  Upstream does
   not publish the built assets as a release artifact, and building them
   requires npm, which is not available in the jail.

2. semaphore-provendor-<ver>.tar.gz -- the vendored subset of the in-tree
   "pro" module plus a consistent vendor/modules.txt.  semaphore's go.mod
   contains "replace github.com/semaphoreui/semaphore/pro => ./pro".  As a
   nested module it cannot be expressed as a GH_TUPLE entry.  GO_MODULE is
   not usable either: the module declares a v2 path without the required
   /v2 suffix, so proxy.golang.org does not serve it.

The clean long-term fix is upstream (use a /v2 module path, un-nest the
pro module, and publish the web assets as a release artifact); I intend to
file those issues.  Until then these two distfiles are hosted on my GitHub
because the port cannot be built without them.

Dependencies are split across forges by necessity: GH_TUPLE (GitHub) plus
GL_TUPLE (GitLab) for the modernc.org SQLite driver, which is GitLab-only.

Maintainership
--------------
The MAINTAINER address has been intentionally left unchanged (egypcio@).
The maintainer appears inactive and the port has been stuck at 2.9.2 with a
non-functional UI.  I am willing to take over net-mgmt/semaphore -- please
reassign MAINTAINER to me if that is acceptable.

Testing
-------
- poudriere testport on 15.1-amd64: full build/stage/package/install/
  deinstall cycle passed; check-plist reported no issues.
- portlint -AC: no fatal errors; portfmt/portclippy clean.
- Verified running in production with the sqlite backend (UI and
  authentication OK).

-- 
You are receiving this mail because:
You are the assignee for the bug.