Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Mar 2026 19:49:33 +0000
From:      Adam Weinberger <adamw@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc:        Dave Marker <dave@freedave.net>
Subject:   git: e93d209b4fac - main - www/zine-ssg: Add port
Message-ID:  <69c6df4d.203a3.3bafb3bb@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by adamw:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e93d209b4fac2663214a3a3f9866c9917fe3061e

commit e93d209b4fac2663214a3a3f9866c9917fe3061e
Author:     Dave Marker <dave@freedave.net>
AuthorDate: 2026-03-27 19:42:49 +0000
Commit:     Adam Weinberger <adamw@FreeBSD.org>
CommitDate: 2026-03-27 19:49:13 +0000

    www/zine-ssg: Add port
    
    Zine is a static site generator similar in concept to www/gohugo.
    
    Zine turns your content into HTML, styles it using your layouts, and finally
    copies the result into an output directory that you can then publish on static
    hosting services like GitHub Pages.
    
    Zine has a companion port, devel/superhtml which acts as an LSP for the markdown
    content and HTML layouts.
    
    Differential Revision:  https://reviews.freebsd.org/D55877
---
 www/Makefile                               |  1 +
 www/zine-ssg/Makefile                      | 44 +++++++++++++++++++++++++++
 www/zine-ssg/Makefile.zig                  | 24 +++++++++++++++
 www/zine-ssg/distinfo                      | 49 ++++++++++++++++++++++++++++++
 www/zine-ssg/files/patch-build.zig         | 36 ++++++++++++++++++++++
 www/zine-ssg/files/patch-build.zig.zon     | 13 ++++++++
 www/zine-ssg/files/patch-src_cli_serve.zig | 10 ++++++
 www/zine-ssg/pkg-descr                     |  8 +++++
 8 files changed, 185 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index e04b64aaf7cc..f8c1d45deb72 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -2741,6 +2741,7 @@
     SUBDIR += yuicompressor
     SUBDIR += zenphoto
     SUBDIR += zerowait-httpd
+    SUBDIR += zine-ssg
     SUBDIR += zgrab2
     SUBDIR += zola
 
diff --git a/www/zine-ssg/Makefile b/www/zine-ssg/Makefile
new file mode 100644
index 000000000000..6f23c6b1ba97
--- /dev/null
+++ b/www/zine-ssg/Makefile
@@ -0,0 +1,44 @@
+PORTNAME=	zine-ssg
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.11.2
+CATEGORIES=	www
+
+MAINTAINER=	dave@freedave.net
+COMMENT=	Fast and Flexible Static Site Generator
+WWW=		https://zine-ssg.io
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+# This is needed to run `make test`.
+TEST_DEPENDS=	git:devel/git
+
+USES=		inotify zig
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	kristoff-it
+GH_PROJECT=	zine
+
+CONFLICTS_INSTALL=	zine
+
+PLIST_FILES=	bin/zine
+
+.include <bsd.port.pre.mk>
+
+post-patch:
+.if defined(INOTIFY_PORT)
+	${REINPLACE_CMD} -e 's|%INOTIFY_GUARD%||' ${WRKSRC}/build.zig
+.else
+	# comment out of builds for FreeBSD15+
+	${REINPLACE_CMD} -e 's|%INOTIFY_GUARD%|// |' ${WRKSRC}/build.zig
+.endif
+
+# zine needs to test with a git repo which the ports build system goes out of
+# its way to *not* use. So step 1 is to create the git repo... its just for the test
+# Also we have to remove the -D... and --release... flags. zine is using "snapshot"
+# testing and changing args breaks that.
+do-test:
+	cd ${BUILD_WRKSRC} && ${RM} -r .git && git init . && git add tests && git commit -m 'tests'
+	cd ${BUILD_WRKSRC} && ${DO_MAKE_BUILD:N-D*:N--release=*:S/build/build test --summary all/}
+
+.include <bsd.port.post.mk>
diff --git a/www/zine-ssg/Makefile.zig b/www/zine-ssg/Makefile.zig
new file mode 100644
index 000000000000..38a6d74b1610
--- /dev/null
+++ b/www/zine-ssg/Makefile.zig
@@ -0,0 +1,24 @@
+# had to advance afl_kit for zig 0.15.2
+ZIG_TUPLE=      AFLplusplus:github.com/AFLplusplus/AFLplusplus/archive/v4.21c.tar.gz:N-V-__8AAKE4uAAJZgEcPdaXnWqoj-IwYf3G2h9YSm-x92gg \
+                AFLplusplus:github.com/allyourcodebase/AFLplusplus/archive/7e65eb4262688a120bf830d145060aac0.tar.gz:AFLplusplus-4.21.0-aA1y4dZxAAAhqDy_JoRw3zwNSg8MenEGP7uJI_xNcYuV \
+		afl_kit:github.com/kristoff-it/zig-afl-kit/archive/395c39d5b33d999f6871a90bd731ec112.tar.gz:afl_kit-0.1.0-NdJ3ch8eAABQkd1wk2W-JDCvvX5Jmnu3uJulS3lPepG7 \
+		cbor:github.com/neurocyte/cbor/archive/7d2eeb68c8a2fb3f4d6baad6cc04c521b.tar.gz:cbor-1.0.0-RcQE_AswAQAPlqBCZXYQf9DZXn-0Ubt8Mk03ZcJWcsAG \
+		flow_syntax:github.com/neurocyte/flow-syntax/archive/6992eddeb9a4a013886db0cbca2156686.tar.gz:flow_syntax-0.6.0-X8jOoWgVAQBBTuGGE9r1ECSDFzi8z6_XNCW1oF5B4fL8 \
+		frameworks:github.com/hexops/xcode-frameworks/archive/8a1cfb373587ea4c9bb1468b7c986462d.tar.gz:N-V-__8AALShqgXkvqYU6f__FrA22SMWmi2TXCJjNTO1m8XJ \
+		gfm:github.com/kristoff-it/cmark-gfm/archive/b96c27a5152b9124d657dee7fb1186d0a.tar.gz:cmark_gfm-0.1.0-uQgTK6WZFwCG9y7_Z0IkCINtmMTwvEZTyVh_6nsaMVPq \
+		known_folders:github.com/ziglibs/known-folders/archive/aa24df42183ad415d10bc0a33e6238c43.tar.gz:known_folders-0.0.0-Fy-PJtLDAADGDOwYwMkVydMSTp_aN-nfjCZw6qPQ2ECL \
+		known_folders:github.com/ziglibs/known-folders/archive/ab5cf5feb936fa3b72c95d3ad0c0c6779.tar.gz:known_folders-0.0.0-Fy-PJtTTAADUOhGKM0sxzG4eMkNQxRvx9e5dfHVyaeA3 \
+		lsp_kit:github.com/kristoff-it/lsp-kit/archive/01c14e592d25dc57dfebba27b8bd2b4aa.tar.gz:lsp_kit-0.1.0-bi_PL5YyCgA2QFEza6llr2Uy08QUQsWBu2wKvtr8tbLx \
+		lsp_kit:github.com/zigtools/lsp-kit/archive/4835b9d3d3cf732fe1830189d81f331c6.tar.gz:lsp_kit-0.1.0-bi_PL18tCgAMyrZ0tgn_0PXnGEvxGWeNkkRygfe9pX9u \
+		lsp_kit:github.com/zigtools/lsp-kit/archive/c46ac866dda11ab58e4ba71ed0d8ba21f.tar.gz:lsp_kit-0.1.0-bi_PL98yCgBfW3T4iLkfV5VOXc__pOpOsQsX1tRmpqAG \
+		lsp_kit:github.com/zigtools/lsp-kit/archive/fe98e895ca3bd1b39965ab30f0f252f7b.tar.gz:lsp_kit-0.1.0-bi_PLzAyCgClDh8_M0U9Q50ysdsQBuRuBTZfwg6rZPd6 \
+		mime:github.com/kristoff-it/mime/archive/a2ed0cba3b1463217168034ffed8c1604.tar.gz:mime-3.0.0-zwmL--0gAAByELrj57sRm2EFBRzjKLFrMgHQcs7sFZev \
+		scripty:github.com/kristoff-it/scripty/archive/50dbab8945440089384f26ec165d870c2.tar.gz:scripty-0.1.0-LKK5O7v4AADWWXuFcTJky_5sY12tmw3kRi3k2wkpfxAX \
+		superhtml:github.com/kristoff-it/superhtml/archive/8cb16babb0c66b6512d6aeb4cbc37ed90.tar.gz:superhtml-0.4.0-Y7MdPJTWDQBJJoaCLlBYLGrjhAnmWAtVhVGelveq3O-s \
+		supermd:github.com/kristoff-it/supermd/archive/530ac6c337c9a9511560fba3181db10d1.tar.gz:supermd-0.1.0-3Mco3GyYWACe4ptEKIrZUhizWGwXhbmtKtjNopG8f76y \
+		tracy:github.com/kristoff-it/tracy/archive/67d2d89e351048c76fc6d161e0ac09d8a.tar.gz:tracy-0.0.0-4Xw-1pwwAABTfMgoDP1unCbZDZhJEfict7XCBGF6IdIn \
+		tree_sitter:github.com/neurocyte/tree-sitter/releases/download/master-6e2827ee231e220467bf04d2a2746faff5cb204a/source.tar.gz:tree_sitter-0.22.4-150-g7e3f5726-z0LhyGeG1y67PeOltaplVkxRNT2jMMexQhbUlrh0vdxM \
+		wuffs:github.com/allyourcodebase/wuffs/archive/5822dc06c75b30d53082debf68c90193c.tar.gz:wuffs-0.4.0-alpha.9+3837.20240914-3CHJgcMFAACyPvxsC7b48pJv9dPkPa4pSrB2VFbCXTfK \
+		wuffs:github.com/google/wuffs-mirror-release-c/archive/90e4d81a6a8b7b601e8e568da32a105d7f7705e5.tar.gz:N-V-__8AANEmUgA6aZZZKbfNMv6DSs5In7CDFU6nInu_Y6aY \
+		zeit:github.com/sam701/zeit/archive/46583c4695bade6841a558c0ce5648426.tar.gz:zeit-0.6.0-5I6bk0J9AgCVa0nnyL0lNY9Xa9F68hHq-ZarhuXNV-Jb \
+		ziggy:github.com/kristoff-it/ziggy/archive/4353b20ef2ac750e35c6d68e4eb2a07c2.tar.gz:ziggy-0.1.0-kTg8v5pABgDztlefWHceH-Sh8tVveguFC61QkmLkIRaA
diff --git a/www/zine-ssg/distinfo b/www/zine-ssg/distinfo
new file mode 100644
index 000000000000..e9651c529ab7
--- /dev/null
+++ b/www/zine-ssg/distinfo
@@ -0,0 +1,49 @@
+TIMESTAMP = 1773684398
+SHA256 (zig/v4.21c.tar.gz) = 11f7c77d37cff6e7f65ac7cc55bab7901e0c6208e845a38764394d04ed567b30
+SIZE (zig/v4.21c.tar.gz) = 3004235
+SHA256 (zig/7e65eb4262688a120bf830d145060aac0.tar.gz) = ed670033d925563091323622e465665540abedce999552b7bf04ffd0e2bc050f
+SIZE (zig/7e65eb4262688a120bf830d145060aac0.tar.gz) = 7271
+SHA256 (zig/395c39d5b33d999f6871a90bd731ec112.tar.gz) = 573ce3455468311df43ffa573d6049593d558076b74e8203327eabeca10fca1c
+SIZE (zig/395c39d5b33d999f6871a90bd731ec112.tar.gz) = 6165
+SHA256 (zig/7d2eeb68c8a2fb3f4d6baad6cc04c521b.tar.gz) = 89b234098ebefc8472d8b1e7eda21938c11bc6577f83d58dd62ec941ae68fcd7
+SIZE (zig/7d2eeb68c8a2fb3f4d6baad6cc04c521b.tar.gz) = 13775
+SHA256 (zig/6992eddeb9a4a013886db0cbca2156686.tar.gz) = 442bb2c07ba6cd281a8f5c4863c1211a64a88b44ec928c2d6c6ca2f122ce9beb
+SIZE (zig/6992eddeb9a4a013886db0cbca2156686.tar.gz) = 14688
+SHA256 (zig/8a1cfb373587ea4c9bb1468b7c986462d.tar.gz) = 8ed818e25f2ed3bb77dc8202d003ecd0efa2be198962eca1452e545cbe17aac8
+SIZE (zig/8a1cfb373587ea4c9bb1468b7c986462d.tar.gz) = 16433930
+SHA256 (zig/b96c27a5152b9124d657dee7fb1186d0a.tar.gz) = 7a9bb97d6a5ad6c7d34f29760e1eae9bf0283932fefef51a7b0a60e6e57cb8d1
+SIZE (zig/b96c27a5152b9124d657dee7fb1186d0a.tar.gz) = 301431
+SHA256 (zig/aa24df42183ad415d10bc0a33e6238c43.tar.gz) = 500d9df2df8b44060dac523b0402126c0341e01d77f59101e1335654b8ae25a1
+SIZE (zig/aa24df42183ad415d10bc0a33e6238c43.tar.gz) = 11946
+SHA256 (zig/ab5cf5feb936fa3b72c95d3ad0c0c6779.tar.gz) = 55a2380907da5e30a3a9991d73d5b4a1372a2c2bd508da4dad96c127a10625e9
+SIZE (zig/ab5cf5feb936fa3b72c95d3ad0c0c6779.tar.gz) = 12569
+SHA256 (zig/01c14e592d25dc57dfebba27b8bd2b4aa.tar.gz) = b4fbe30a998c4e112703eb6376bf29c9667f76721fd579e2dde59f0479189a81
+SIZE (zig/01c14e592d25dc57dfebba27b8bd2b4aa.tar.gz) = 100623
+SHA256 (zig/4835b9d3d3cf732fe1830189d81f331c6.tar.gz) = 3bc515f43df0c81404ab27833a8ac08f372c5d8752750efabf0f21a9fa60b781
+SIZE (zig/4835b9d3d3cf732fe1830189d81f331c6.tar.gz) = 100191
+SHA256 (zig/c46ac866dda11ab58e4ba71ed0d8ba21f.tar.gz) = e9ddd03a2cc9eed59e6115de8a5e2d044b2b8e58196fb681e33c8c90ed338a0c
+SIZE (zig/c46ac866dda11ab58e4ba71ed0d8ba21f.tar.gz) = 100880
+SHA256 (zig/fe98e895ca3bd1b39965ab30f0f252f7b.tar.gz) = 46c57bad1922899bfae68e2d30a363061242dc2e808d6f27fc92ea8fe74c92db
+SIZE (zig/fe98e895ca3bd1b39965ab30f0f252f7b.tar.gz) = 100656
+SHA256 (zig/a2ed0cba3b1463217168034ffed8c1604.tar.gz) = fba12453efe9e788644cc3e6fe5c04be25ef4d4f21c4f82e995b9640b71bb383
+SIZE (zig/a2ed0cba3b1463217168034ffed8c1604.tar.gz) = 2926
+SHA256 (zig/50dbab8945440089384f26ec165d870c2.tar.gz) = 18325156728c48236270812947b4a1d24f9767899c771ddd21bfdb99b581fd30
+SIZE (zig/50dbab8945440089384f26ec165d870c2.tar.gz) = 12473
+SHA256 (zig/8cb16babb0c66b6512d6aeb4cbc37ed90.tar.gz) = e1b1846ab9310e406497228578bcbd320ad9ebb760ac95ee6aeb7d540200ad66
+SIZE (zig/8cb16babb0c66b6512d6aeb4cbc37ed90.tar.gz) = 2235403
+SHA256 (zig/530ac6c337c9a9511560fba3181db10d1.tar.gz) = 630b0a5e0afccd5b86b9dff8603629ce24c2802767aba779338c92a93c9a0e9a
+SIZE (zig/530ac6c337c9a9511560fba3181db10d1.tar.gz) = 490017
+SHA256 (zig/67d2d89e351048c76fc6d161e0ac09d8a.tar.gz) = a54d405e7ffadcc5f2e441b361226666e61df1acf3ac18045f2771df0cf26b3f
+SIZE (zig/67d2d89e351048c76fc6d161e0ac09d8a.tar.gz) = 3933
+SHA256 (zig/source.tar.gz) = 93c78e5ae9f600dcd624e6bc5c06a45cde1595d830ce5cb7144498025b1b555c
+SIZE (zig/source.tar.gz) = 42884192
+SHA256 (zig/5822dc06c75b30d53082debf68c90193c.tar.gz) = 2746628447433f64793928fe1a88dcf89d4ac14561af67783fe8fc03115e6645
+SIZE (zig/5822dc06c75b30d53082debf68c90193c.tar.gz) = 2233
+SHA256 (zig/90e4d81a6a8b7b601e8e568da32a105d7f7705e5.tar.gz) = ddbebc8fb7405e7a9177efdfbdf0df18ad02b607311d9e604959c7c0f6236af4
+SIZE (zig/90e4d81a6a8b7b601e8e568da32a105d7f7705e5.tar.gz) = 721379
+SHA256 (zig/46583c4695bade6841a558c0ce5648426.tar.gz) = d7e6ac2d5b6e45f3af073bed1032fb52f773440bf7e3fc4effca4005af6b3c82
+SIZE (zig/46583c4695bade6841a558c0ce5648426.tar.gz) = 39731
+SHA256 (zig/4353b20ef2ac750e35c6d68e4eb2a07c2.tar.gz) = 18e6c8a159abd6b2819e7089a3b01ee346c99ce784cdac9f8ed694923c0eb392
+SIZE (zig/4353b20ef2ac750e35c6d68e4eb2a07c2.tar.gz) = 173775
+SHA256 (zig/kristoff-it-zine-v0.11.2_GH0.tar.gz) = 551e9953b5b07473b66b128f20678aa4a18bf3447a5ab3c7c54d6a203d3a7ae4
+SIZE (zig/kristoff-it-zine-v0.11.2_GH0.tar.gz) = 824759
diff --git a/www/zine-ssg/files/patch-build.zig b/www/zine-ssg/files/patch-build.zig
new file mode 100644
index 000000000000..690f6783a19c
--- /dev/null
+++ b/www/zine-ssg/files/patch-build.zig
@@ -0,0 +1,36 @@
+--- build.zig.orig	2025-11-21 13:41:48 UTC
++++ build.zig
+@@ -309,6 +309,11 @@ pub fn build(b: *std.Build) !void {
+         else => @panic("target must be added to build.zig"),
+         .linux => {},
+ 
++	.freebsd => {
++            // only added for FreeBSD < 15
++            %INOTIFY_GUARD%zine_exe.linkSystemLibrary("inotify");
++         },
++
+         .windows => {
+             zine_exe.linkSystemLibrary("ws2_32");
+         },
+@@ -519,8 +524,10 @@ fn setupReleaseStep(
+     const targets: []const std.Target.Query = &.{
+         .{ .cpu_arch = .aarch64, .os_tag = .macos },
+         .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl },
++        .{ .cpu_arch = .aarch64, .os_tag = .freebsd },
+         .{ .cpu_arch = .x86_64, .os_tag = .macos },
+         .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
++        .{ .cpu_arch = .x86_64, .os_tag = .freebsd },
+         .{ .cpu_arch = .x86_64, .os_tag = .windows },
+         .{ .cpu_arch = .aarch64, .os_tag = .windows },
+     };
+@@ -626,6 +633,10 @@ fn setupReleaseStep(
+         switch (target.result.os.tag) {
+             else => @panic("target must be added to build.zig"),
+             .linux => {},
++            .freebsd => {
++                // only added for FreeBSD < 15
++                %INOTIFY_GUARD%zine_exe_release.linkSystemLibrary("inotify");
++            },
+             .windows => {
+                 zine_exe_release.linkSystemLibrary("ws2_32");
+             },
diff --git a/www/zine-ssg/files/patch-build.zig.zon b/www/zine-ssg/files/patch-build.zig.zon
new file mode 100644
index 000000000000..e348e5769faf
--- /dev/null
+++ b/www/zine-ssg/files/patch-build.zig.zon
@@ -0,0 +1,13 @@
+--- build.zig.zon.orig	2025-11-21 13:41:48 UTC
++++ build.zig.zon
+@@ -5,8 +5,8 @@
+     .minimum_zig_version = "0.15.0",
+     .dependencies = .{
+         .afl_kit = .{
+-            .url = "git+https://github.com/kristoff-it/zig-afl-kit#8ef04d1db48650345dca68da1e1b8f2615125c40",
+-            .hash = "afl_kit-0.1.0-NdJ3cvscAACLEvjZTB017IAks_Uq5ux1qpA-klDe384Y",
++            .url = "git+https://github.com/kristoff-it/zig-afl-kit#395c39d5b33d999f6871a90bd731ec112d3995ca",
++            .hash = "afl_kit-0.1.0-NdJ3ch8eAABQkd1wk2W-JDCvvX5Jmnu3uJulS3lPepG7",
+             .lazy = true,
+         },
+         .lsp_kit = .{
diff --git a/www/zine-ssg/files/patch-src_cli_serve.zig b/www/zine-ssg/files/patch-src_cli_serve.zig
new file mode 100644
index 000000000000..ba09a8bb83c0
--- /dev/null
+++ b/www/zine-ssg/files/patch-src_cli_serve.zig
@@ -0,0 +1,10 @@
+--- src/cli/serve.zig.orig	2026-03-13 17:52:18 UTC
++++ src/cli/serve.zig
+@@ -24,6 +24,7 @@ const Watcher = switch (builtin.target.os.tag) {
+ const outside_html = @embedFile("serve/outside.html");
+ const Watcher = switch (builtin.target.os.tag) {
+     .linux => @import("serve/watcher/LinuxWatcher.zig"),
++    .freebsd => @import("serve/watcher/LinuxWatcher.zig"),
+     .macos => @import("serve/watcher/MacosWatcher.zig"),
+     .windows => @import("serve/watcher/WindowsWatcher.zig"),
+     else => @compileError("unsupported platform"),
diff --git a/www/zine-ssg/pkg-descr b/www/zine-ssg/pkg-descr
new file mode 100644
index 000000000000..4c05ac41bcaa
--- /dev/null
+++ b/www/zine-ssg/pkg-descr
@@ -0,0 +1,8 @@
+Zine is a static site generator similar in concept to www/gohugo.
+
+Zine turns your content into HTML, styles it using your layouts, and finally
+copies the result into an output directory that you can then publish on static
+hosting services like GitHub Pages.
+
+Zine has a companion port, devel/superhtml which acts as an LSP for the markdown
+content and HTML layouts.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69c6df4d.203a3.3bafb3bb>