Thanks sthen for pointing out I screwed the new distfile size and hash.
Fixed patch attached.

On Tue, May 20, 2025 at 07:55:17AM +0000, Lucas Gabriel Vuotto wrote:
> Hi Martin, ports,
> 
> Here's an update to start shipping ntfy's web UI in ports. I decided to
> bundle it as an additional tarball, as otherwise it requires npm which
> assumes an online build. The dist target takes care of creating the
> bundle. It was modelled after sthen's great work at comms/zigbee2mqtt.
> 
> There are 2 small "hacks" of sorts in the dist target:
> 
> - Ignoring vite's requirement and setting the version of esbuild to
>   >=0.24.0, which was the newest available at the time I started working
>   on this.
> - Setting ESBUILD_BINARY_PATH in the environment to use our own esbuild
>   instead of whatever npm installed.
> 
> To try it out, after restarting the newly built ntfy, the web UI is
> accessible at http://<your-instance>/app. I've been running it for quite
> some months already and I'm pretty happy with it.
> 
> OK?


diff refs/heads/master 27016167e0f1cecf11dc43afb5581644cc81647c
commit - 54cfb7bf0162f59ba9affffc09d3f1bf21f7d09f
commit + 27016167e0f1cecf11dc43afb5581644cc81647c
blob - f136e7292df56104b6a1e8021c5ce6b4f5ec6aa3
blob + 9a248184e5ab6967b99d69b365db516a74a66aa0
--- net/ntfy/Makefile
+++ net/ntfy/Makefile
@@ -2,9 +2,14 @@ COMMENT =      send push notifications to your phone or des
 
 MODGO_MODNAME =        heckel.io/ntfy/v2
 MODGO_VERSION =        v2.11.0
+REVISION =     0
 
 DISTNAME =     ntfy-${MODGO_VERSION}
 
+SITES.ui =     https://openbsd.ports.builders/distfiles/net/ntfy/
+DISTFILES.ui = ntfy-${MODGO_VERSION}-ui.tar.gz
+EXTRACT_ONLY +=        ntfy-${MODGO_VERSION}-ui.tar.gz
+
 CATEGORIES =   net
 
 HOMEPAGE =     https://ntfy.sh
@@ -19,12 +24,11 @@ MODULES =   lang/go
 WANTLIB +=     c pthread
 WRKDIST =      ${WRKSRC}
 
-# Stub docs and app HTML files; build fails because of failure to embed them.
-# Building the app fails because esbuild SIGILLs. Building the docs requires
-# mkdocs, not currently ported.
+# Stub docs files; build fails because of failure to embed them. App is
+# provided as an additional distfile as it requires npm, which assumes online
+# builds. Building the docs requires Python mkdocs, not currently ported.
 post-extract:
-       mkdir -p ${WRKSRC}/server/site
-       ${INSTALL_DATA} ${FILESDIR}/app.html ${WRKSRC}/server/site
+       mv ${WRKDIR}/build ${WRKDIST}/server/site
        mkdir -p ${WRKSRC}/server/docs
        ${INSTALL_DATA} ${FILESDIR}/index.html ${WRKSRC}/server/docs
 
@@ -37,5 +41,30 @@ post-install:
        ${INSTALL_DATA} ${WRKSRC}/examples/$i/* ${PREFIX}/share/examples/ntfy/
 .endfor
 
+# Maintainer convenience target for building the UI. Requires jq and esbuild.
+# index.html rename and config.js removal taken from upstream's Makefile.
+dist: ${FULLDISTDIR}/${DISTNAME_ESC}${EXTRACT_SUFX}
+       @set -x; \
+       t=`mktemp -d /tmp/ntfy.XXXXXXXXXX`; \
+       f=$$t/ntfy-${MODGO_VERSION}-ui.tar.gz; \
+       export HOME=$$t LC_CTYPE=C ESBUILD_BINARY_PATH=/usr/local/bin/esbuild; \
+       cd $$t; \
+       unzip ${FULLDISTDIR}/${DISTNAME_ESC}${EXTRACT_SUFX}; \
+       cd ${MODGO_MODNAME_ESC}@${MODGO_VERSION}/web; \
+       jq '.packages["node_modules/vite"].dependencies.esbuild |= ">=0.24.0"' \
+           package-lock.json >package-lock.json.tmp; \
+       mv package-lock.json.tmp package-lock.json; \
+       npm install -dd --include=dev --cache=$$t/npm-cache; \
+       old_ulimit_d=$$(ulimit -Sd); \
+       ulimit -Sd $$((3 * 1024 * 1024)); \
+       npm run build -dd --cache=$$t/npm-cache; \
+       ulimit -Sd "$$old_ulimit_d"; \
+       mv build/index.html build/app.html; \
+       rm build/config.js; \
+       pax -wzf $$f build/; \
+       rsync $$f distfiles@openbsd.ports.builders:/distfiles/net/ntfy/; \
+       cd -; \
+       rm -rf $$t
+
 .include "modules.inc"
 .include <bsd.port.mk>
blob - 7073a0098b01e3bee863ee976cd4608ad1a9e978
blob + d264363f8ad51cdf5e1f71971b6dd35ca48b4a3c
--- net/ntfy/distinfo
+++ net/ntfy/distinfo
@@ -659,6 +659,7 @@ SHA256 (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.zip) = q
 SHA256 
(go_modules/honnef.co/go/tools/@v/v0.0.0-20190102054323-c2f93a96b099.mod) = 
scYIN+phM18U32TzGUw82S4PYo9gZIBnGJUPDXodvp4=
 SHA256 
(go_modules/honnef.co/go/tools/@v/v0.0.0-20190523083050-ea95bdfd59fc.mod) = 
scYIN+phM18U32TzGUw82S4PYo9gZIBnGJUPDXodvp4=
 SHA256 
(go_modules/honnef.co/go/tools/@v/v0.0.0-20190523083050-ea95bdfd59fc.zip) = 
7qqCcA6WrF6APXqcMjYzMlBL7/j7sSAkkrTUPVpec2A=
+SHA256 (ntfy-v2.11.0-ui.tar.gz) = LDfs2pU/pscCqRifLg91iFu2U3XFKW2/wmy/egKkLdw=
 SHA256 (ntfy-v2.11.0.zip) = IzkLWMTFT4SJnTkqoLamT5BlEmz7lKWMjeQWG7s14A0=
 SIZE (go_modules/cloud.google.com/go/@v/v0.112.1.mod) = 1812
 SIZE (go_modules/cloud.google.com/go/@v/v0.112.2.mod) = 1812
@@ -1321,4 +1322,5 @@ SIZE (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.zip) = 104
 SIZE (go_modules/honnef.co/go/tools/@v/v0.0.0-20190102054323-c2f93a96b099.mod) 
= 26
 SIZE (go_modules/honnef.co/go/tools/@v/v0.0.0-20190523083050-ea95bdfd59fc.mod) 
= 26
 SIZE (go_modules/honnef.co/go/tools/@v/v0.0.0-20190523083050-ea95bdfd59fc.zip) 
= 449180
+SIZE (ntfy-v2.11.0-ui.tar.gz) = 2149163
 SIZE (ntfy-v2.11.0.zip) = 13725478
blob - 859b19451c486080f8b2b6f47bd66aabe777e63c (mode 644)
blob + /dev/null
--- net/ntfy/files/app.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE html>
-<title>ntfy</title>
-<p>
-ntfy web UI isn't supported on OpenBSD.
-You can visit the upstream web UI at
-<a href="https://ntfy.sh/app";>https://ntfy.sh/app</a>.

Reply via email to