aboutsummaryrefslogtreecommitdiff
path: root/print
diff options
context:
space:
mode:
authorMister D <misterd@renderdata.pro>2026-06-03 13:08:59 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2026-06-11 11:51:11 +0000
commit81b50de506e0a964ad54095aa3da33781a5c4b7c (patch)
tree5b0f6693dc9e5ecf12ccd97b01b8a533d5ef95bb /print
parent25c626a3345fd75d571393a238d7a82338f9a4bc (diff)
Diffstat (limited to 'print')
-rw-r--r--print/Makefile1
-rw-r--r--print/publisher/Makefile206
-rw-r--r--print/publisher/distinfo67
-rw-r--r--print/publisher/files/modules.txt164
-rw-r--r--print/publisher/modules.txt33
-rw-r--r--print/publisher/pkg-descr13
-rw-r--r--print/publisher/pkg-help47
-rw-r--r--print/publisher/pkg-plist130
8 files changed, 661 insertions, 0 deletions
diff --git a/print/Makefile b/print/Makefile
index 373a50481723..c4c6da3dd8ca 100644
--- a/print/Makefile
+++ b/print/Makefile
@@ -168,6 +168,7 @@
SUBDIR += pslib
SUBDIR += pstotext
SUBDIR += psutils
+ SUBDIR += publisher
SUBDIR += py-PyMuPDF
SUBDIR += py-collidoscope
SUBDIR += py-dehinter
diff --git a/print/publisher/Makefile b/print/publisher/Makefile
new file mode 100644
index 000000000000..ea71eaa117bb
--- /dev/null
+++ b/print/publisher/Makefile
@@ -0,0 +1,206 @@
+PORTNAME= publisher
+DISTVERSIONPREFIX= v
+DISTVERSION= 5.4.3
+CATEGORIES= print
+
+MAINTAINER= misterd@renderdata.pro
+COMMENT= Non-interactive layout engine and typesetting system ${${FLAVOR}_COMMENT}}
+WWW= https://www.speedata.de/
+
+LICENSE= AGPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+# Go does not support -buildmode=c-shared on freebsd/arm64 (only on
+# freebsd/amd64). See internal/platform/supported.go in the Go source.
+# When Go gains arm64 support, the application could also be refactored
+# upstream to avoid c-shared entirely.
+ONLY_FOR_ARCHS= amd64
+ONLY_FOR_ARCHS_REASON= requires Go -buildmode=c-shared, not supported on this architecture
+
+RUN_DEPENDS= luahbtex:print/tex-luatex
+
+# Flavors: default (community) and pro
+FLAVORS= default pro
+FLAVOR?= ${FLAVORS:[1]}
+
+pro_PKGNAMESUFFIX= -pro
+default_COMMENT= (community)
+pro_COMMENT= (pro)
+
+USES= go:modules,no_targets lua:53,build,run
+USE_GITHUB= yes
+GH_ACCOUNT= speedata
+GH_TUPLE= \
+ Masterminds:semver:v1.5.0:masterminds_semver/src/go/vendor/github.com/Masterminds/semver \
+ PuerkitoBio:goquery:v1.9.1:puerkitobio_goquery/src/go/vendor/github.com/PuerkitoBio/goquery \
+ alecthomas:chroma:v0.10.0:alecthomas_chroma/src/go/vendor/github.com/alecthomas/chroma \
+ alecthomas:chroma:v2.13.0:alecthomas_chroma_v2/src/go/vendor/github.com/alecthomas/chroma/v2 \
+ andybalholm:cascadia:v1.3.2:andybalholm_cascadia/src/go/vendor/github.com/andybalholm/cascadia \
+ cjoudrey:gluahttp:25003d9adfa9:cjoudrey_gluahttp/src/go/vendor/github.com/cjoudrey/gluahttp \
+ dlclark:regexp2:v1.11.0:dlclark_regexp2/src/go/vendor/github.com/dlclark/regexp2 \
+ fsnotify:fsnotify:v1.7.0:fsnotify_fsnotify/src/go/vendor/github.com/fsnotify/fsnotify \
+ gammazero:deque:v0.2.1:gammazero_deque/src/go/vendor/github.com/gammazero/deque \
+ gammazero:workerpool:v1.1.3:gammazero_workerpool/src/go/vendor/github.com/gammazero/workerpool \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/src/go/vendor/gopkg.in/yaml.v3 \
+ gofrs:uuid:v4.4.0:gofrs_uuid/src/go/vendor/github.com/gofrs/uuid \
+ golang:image:v0.18.0:golang_image/src/go/vendor/golang.org/x/image \
+ golang:net:v0.35.0:golang_net/src/go/vendor/golang.org/x/net \
+ golang:sys:v0.30.0:golang_sys/src/go/vendor/golang.org/x/sys \
+ golang:text:v0.22.0:golang_text/src/go/vendor/golang.org/x/text \
+ google:btree:v1.1.2:google_btree/src/go/vendor/github.com/google/btree \
+ gorilla:mux:v1.8.1:gorilla_mux/src/go/vendor/github.com/gorilla/mux \
+ gregjones:httpcache:901d90724c79:gregjones_httpcache/src/go/vendor/github.com/gregjones/httpcache \
+ inconshreveable:mousetrap:v1.1.0:inconshreveable_mousetrap/src/go/vendor/github.com/inconshreveable/mousetrap \
+ peterbourgon:diskv:v2.0.1:peterbourgon_diskv/src/go/vendor/github.com/peterbourgon/diskv \
+ russross:blackfriday:v1.6.0:russross_blackfriday/src/go/vendor/github.com/russross/blackfriday \
+ speedata:bild:dd063a632b14:speedata_bild/src/go/vendor/github.com/speedata/bild \
+ speedata:config:3a3f44982ec4:speedata_config/src/go/vendor/github.com/speedata/config \
+ speedata:css:68d469dc62c4:speedata_css_scanner/src/go/vendor/github.com/speedata/css \
+ speedata:go-epub:v0.5.5:speedata_go_epub/src/go/vendor/github.com/speedata/go-epub \
+ speedata:goxlsx:v1.0.2:speedata_goxlsx/src/go/vendor/github.com/speedata/goxlsx \
+ speedata:hotfolder:5f743a840a92:speedata_hotfolder/src/go/vendor/github.com/speedata/hotfolder \
+ speedata:optionparser:v1.1.1:speedata_optionparser/src/go/vendor/github.com/speedata/optionparser \
+ yuin:goldmark-highlighting:37449abec8cc:yuin_goldmark_highlighting_v2/src/go/vendor/github.com/yuin/goldmark-highlighting/v2 \
+ yuin:goldmark:v1.7.1:yuin_goldmark/src/go/vendor/github.com/yuin/goldmark \
+ yuin:gopher-lua:v1.1.1:yuin_gopher_lua/src/go/vendor/github.com/yuin/gopher-lua
+
+USE_LDCONFIG= ${PREFIX}/lib/speedata-publisher
+
+CONFLICTS_INSTALL= publisher-devel
+
+# Optional Java helper tools (Saxon for XSLT, Jing for RNG validation,
+# Trang for schema conversion). Default ON; turn OFF to manage JARs
+# manually (see pkg-message).
+OPTIONS_DEFINE= JAVA_TOOLS
+OPTIONS_DEFAULT= JAVA_TOOLS
+OPTIONS_SUB= yes
+JAVA_TOOLS_DESC= XSLT/RNG support via Saxon, Jing, Trang
+
+JAVA_TOOLS_RUN_DEPENDS= saxon-he>0:textproc/saxon-he \
+ jing>0:textproc/jing \
+ trang>0:textproc/trang
+
+# JAR location for JAVA_TOOLS option (matches what textproc/saxon-he etc. install).
+# Not using USES=java so we set this ourselves.
+JAVAJARDIR= ${LOCALBASE}/share/java/classes
+
+# Append Lua include path to CGO_CFLAGS so GO_ENV picks it up
+# (don't override CGO_CFLAGS inline; GO_ENV already sets it).
+CGO_CFLAGS+= -I${LUA_INCDIR}
+
+# Paths compiled into sp binary at build time (final install paths, no STAGEDIR)
+SP_LIBDIR= ${PREFIX}/lib/speedata-publisher
+SP_SWDIR= ${PREFIX}/share/speedata-publisher/sw
+SP_SHAREDIR= ${PREFIX}/share/speedata-publisher
+
+# Pre-generated vendor/modules.txt (see files/modules.txt).
+# Required because Go 1.21+ needs modules.txt in vendor/, and GH_TUPLE
+# extraction does not produce it. Generated on host with: go mod vendor
+post-extract:
+ ${CP} ${FILESDIR}/modules.txt ${WRKSRC}/src/go/vendor/modules.txt
+ ${RM} -r ${WRKSRC}/lib
+
+# pro flavor: pass -X main.pro=yes at link time
+.if ${FLAVOR} == pro
+SP_LDFLAGS_PRO= -X main.pro=yes
+.else
+SP_LDFLAGS_PRO=
+.endif
+
+# ldflags for sp binary: compile install paths and version into the binary.
+# Set before bsd.port.mk includes go.mk so go.mk's default -ldflags=-s is skipped.
+GO_BUILDFLAGS+= -ldflags="-X main.dest=custom \
+ -X main.version=${DISTVERSION} \
+ -X main.libdir=${SP_LIBDIR} \
+ -X main.srcdir=${SP_SWDIR} \
+ ${SP_LDFLAGS_PRO} \
+ ${STRIP}"
+
+do-build:
+ # libsplib.so -- Go shared library (c-shared mode, CGO uses Lua headers via CGO_CFLAGS)
+ # Does not use GO_BUILDFLAGS because that contains sp-specific ldflags.
+ (cd ${WRKSRC}/src/go; \
+ ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} \
+ GOMAXPROCS=${MAKE_JOBS_NUMBER} GOPROXY=off \
+ ${GO_CMD} build \
+ -buildmode=c-shared \
+ -mod=vendor \
+ -v -trimpath \
+ -buildvcs=false \
+ -ldflags=${STRIP} \
+ -o ${WRKDIR}/libsplib.so \
+ speedatapublisher/splib)
+
+ # luaglue.so -- C glue library
+ (cd ${WRKSRC}/src/c; \
+ ${CC} ${CFLAGS} ${CPPFLAGS} -I${LUA_INCDIR} ${LDFLAGS} \
+ -fPIC -shared \
+ -Wl,-soname,luaglue.so \
+ -o ${WRKDIR}/luaglue.so \
+ luaglue.c)
+
+ # sp binary -- dest=custom compiles paths in at link time (via GO_BUILDFLAGS)
+ (cd ${WRKSRC}/src/go; \
+ ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} \
+ GOMAXPROCS=${MAKE_JOBS_NUMBER} GOPROXY=off \
+ ${GO_CMD} build ${GO_BUILDFLAGS} \
+ -o ${WRKDIR}/sp \
+ speedatapublisher/sp/sp)
+
+do-install:
+ # sp binary
+ ${INSTALL_PROGRAM} ${WRKDIR}/sp ${STAGEDIR}${PREFIX}/bin/sp
+
+ # sdluatex symlink to luahbtex (provided by print/tex-luatex at runtime).
+ # RLN cannot be used because the target is in a different package and
+ # does not exist in our stage dir.
+ ${LN} -sf ${LOCALBASE}/bin/luahbtex ${STAGEDIR}${PREFIX}/bin/sdluatex
+
+ # Shared libraries -> ${PREFIX}/lib/speedata-publisher/
+ ${MKDIR} ${STAGEDIR}${SP_LIBDIR}
+ ${INSTALL_LIB} ${WRKDIR}/libsplib.so ${STAGEDIR}${SP_LIBDIR}/libsplib.so
+ ${INSTALL_LIB} ${WRKDIR}/luaglue.so ${STAGEDIR}${SP_LIBDIR}/luaglue.so
+
+ # Schema files
+ ${MKDIR} ${STAGEDIR}${SP_SHAREDIR}/schema
+ ${INSTALL_DATA} ${WRKSRC}/schema/catalog-schema-de.xml \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+ ${INSTALL_DATA} ${WRKSRC}/schema/catalog-schema-en.xml \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+ ${INSTALL_DATA} ${WRKSRC}/schema/layoutschema-de.rng \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+ ${INSTALL_DATA} ${WRKSRC}/schema/layoutschema-de.xsd \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+ ${INSTALL_DATA} ${WRKSRC}/schema/layoutschema-en.rng \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+ ${INSTALL_DATA} ${WRKSRC}/schema/layoutschema-en.xsd \
+ ${STAGEDIR}${SP_SHAREDIR}/schema/
+
+ # Runtime resource files (sw/)
+ ${MKDIR} ${STAGEDIR}${SP_SWDIR}
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} lua ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} tex ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} metapost ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} hyphenation ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} colorprofiles ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC} && ${COPYTREE_SHARE} fonts ${STAGEDIR}${SP_SWDIR})
+ (cd ${WRKSRC} && ${COPYTREE_SHARE} img ${STAGEDIR}${SP_SWDIR})
+
+# JAVA_TOOLS option: link FreeBSD-provided JARs into the publisher's
+# expected paths. sp expects saxon-he-12.9.jar; FreeBSD ships 12.8 which
+# is API-compatible (confirmed with upstream). When saxon-he port bumps
+# to 12.9 (or later), update the saxon-he line below.
+post-install-JAVA_TOOLS-on:
+ ${MKDIR} ${STAGEDIR}${SP_LIBDIR}/lib
+ ${LN} -sf ${JAVAJARDIR}/saxon-he-12.8.jar \
+ ${STAGEDIR}${SP_LIBDIR}/saxon-he-12.9.jar
+ ${LN} -sf ${JAVAJARDIR}/jing.jar \
+ ${STAGEDIR}${SP_LIBDIR}/jing.jar
+ ${LN} -sf ${JAVAJARDIR}/trang.jar \
+ ${STAGEDIR}${SP_LIBDIR}/trang.jar
+ ${LN} -sf ${JAVAJARDIR}/xmlresolver-5.3.3.jar \
+ ${STAGEDIR}${SP_LIBDIR}/lib/xmlresolver-5.3.3.jar
+ ${LN} -sf ${JAVAJARDIR}/xmlresolver-5.3.3-data.jar \
+ ${STAGEDIR}${SP_LIBDIR}/lib/xmlresolver-5.3.3-data.jar
+
+.include <bsd.port.mk>
diff --git a/print/publisher/distinfo b/print/publisher/distinfo
new file mode 100644
index 000000000000..01b3193cd3d8
--- /dev/null
+++ b/print/publisher/distinfo
@@ -0,0 +1,67 @@
+TIMESTAMP = 1780084357
+SHA256 (speedata-publisher-v5.4.3_GH0.tar.gz) = 05c32499c2609fdc1c07850c4684ff57e68ec9b0ab092ea53f3df4ce057173d7
+SIZE (speedata-publisher-v5.4.3_GH0.tar.gz) = 27881246
+SHA256 (Masterminds-semver-v1.5.0_GH0.tar.gz) = c9140eddfb03dc862f826e7761561260b9a840afa7519cc0919e89a43b5be5ba
+SIZE (Masterminds-semver-v1.5.0_GH0.tar.gz) = 21188
+SHA256 (PuerkitoBio-goquery-v1.9.1_GH0.tar.gz) = ad303bf30070c34fa0f05d2701b7bd024642e0183708a96ed0d2b837b21f4d1a
+SIZE (PuerkitoBio-goquery-v1.9.1_GH0.tar.gz) = 107417
+SHA256 (alecthomas-chroma-v0.10.0_GH0.tar.gz) = 98a517ae99f48e3b54d5c8cd7473d5c544f51bee7a4be17f5175736fce37da56
+SIZE (alecthomas-chroma-v0.10.0_GH0.tar.gz) = 798272
+SHA256 (alecthomas-chroma-v2.13.0_GH0.tar.gz) = f3538d9db5df0d0325f3eaab7e3d465a6ec9ad6067051863ac52241f070824a0
+SIZE (alecthomas-chroma-v2.13.0_GH0.tar.gz) = 1032348
+SHA256 (andybalholm-cascadia-v1.3.2_GH0.tar.gz) = f30ebb75a9f43a30478c870dd6e372ac7ef64549f621eceb3b13fd91bfde80cb
+SIZE (andybalholm-cascadia-v1.3.2_GH0.tar.gz) = 35370
+SHA256 (cjoudrey-gluahttp-25003d9adfa9_GH0.tar.gz) = 0d52a91e3a759424b1c9c7291945a35eb23b5eb0382640b286d5063d35cbbfa1
+SIZE (cjoudrey-gluahttp-25003d9adfa9_GH0.tar.gz) = 6771
+SHA256 (dlclark-regexp2-v1.11.0_GH0.tar.gz) = c380209bd67b67859014f9bfd155aec4bfc4beb65f4a6aec37683b80186b18f7
+SIZE (dlclark-regexp2-v1.11.0_GH0.tar.gz) = 212532
+SHA256 (fsnotify-fsnotify-v1.7.0_GH0.tar.gz) = ca8175ba6bd3d0cc992200c2f44acabec05367575dc0478c5902971fe7453f35
+SIZE (fsnotify-fsnotify-v1.7.0_GH0.tar.gz) = 57502
+SHA256 (gammazero-deque-v0.2.1_GH0.tar.gz) = 3d10140363eba10646b965386221167842cb946e4363689d19f427c47badeba0
+SIZE (gammazero-deque-v0.2.1_GH0.tar.gz) = 10170
+SHA256 (gammazero-workerpool-v1.1.3_GH0.tar.gz) = b9d11203a8e544c67471fbba86dcb5243634d8cac2d7610650cb68a3546c7e63
+SIZE (gammazero-workerpool-v1.1.3_GH0.tar.gz) = 12951
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (gofrs-uuid-v4.4.0_GH0.tar.gz) = 10dd2b8e4c99e4975f11b29ec2e4d48f0bf3574e89541f81d4cd228cffa3057c
+SIZE (gofrs-uuid-v4.4.0_GH0.tar.gz) = 23668
+SHA256 (golang-image-v0.18.0_GH0.tar.gz) = dd23e3256a92667d201fd031a44294e4d54812e0f6fc69365da3bb4fcf3c730d
+SIZE (golang-image-v0.18.0_GH0.tar.gz) = 5103909
+SHA256 (golang-net-v0.35.0_GH0.tar.gz) = 6a09895ea551a07f69fb17d8be418cdb96cc3b6338888deb1d7b0b22ed00021e
+SIZE (golang-net-v0.35.0_GH0.tar.gz) = 1500897
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (google-btree-v1.1.2_GH0.tar.gz) = b8722a430b40035f04001ca62bb858abe931a781f76bd37d6a3e1bb23273ba2d
+SIZE (google-btree-v1.1.2_GH0.tar.gz) = 19771
+SHA256 (gorilla-mux-v1.8.1_GH0.tar.gz) = c2a09e78d1886abb2d291b472eba3ac9185acb35234c1f5616669664ba893d6d
+SIZE (gorilla-mux-v1.8.1_GH0.tar.gz) = 47033
+SHA256 (gregjones-httpcache-901d90724c79_GH0.tar.gz) = 2280e11c0ac820bc32717ccb8f74c95a151789c8db86d7a70b7f8f475ae0cc26
+SIZE (gregjones-httpcache-901d90724c79_GH0.tar.gz) = 14164
+SHA256 (inconshreveable-mousetrap-v1.1.0_GH0.tar.gz) = ab23e7c5cbf42564eb0190ee051b7217c04fd2599d2f26e9ebe205db75963141
+SIZE (inconshreveable-mousetrap-v1.1.0_GH0.tar.gz) = 5338
+SHA256 (peterbourgon-diskv-v2.0.1_GH0.tar.gz) = e3b15d57dfe5b4aacf506d256c595b95523c51756459aae04579d35c85bad184
+SIZE (peterbourgon-diskv-v2.0.1_GH0.tar.gz) = 16077
+SHA256 (russross-blackfriday-v1.6.0_GH0.tar.gz) = 3c92006c3ff14cdeacc7edd992acb487749e7234dbc6f95e8fb8abfaf60cdc49
+SIZE (russross-blackfriday-v1.6.0_GH0.tar.gz) = 75794
+SHA256 (speedata-bild-dd063a632b14_GH0.tar.gz) = 585082b73fe2e25d45d804dedbffae7d1757f45f0a65259f5d1f20749dc25a8f
+SIZE (speedata-bild-dd063a632b14_GH0.tar.gz) = 3998419
+SHA256 (speedata-config-3a3f44982ec4_GH0.tar.gz) = 558a20825de8de484cf3cfaa07d420746d8ec3d6d2d864922060f997f324cf6f
+SIZE (speedata-config-3a3f44982ec4_GH0.tar.gz) = 14090
+SHA256 (speedata-css-68d469dc62c4_GH0.tar.gz) = 4a93a680c75651cf1288f6f7fa8028e3feab0b91a56528d9a1cf1bb8894d9dc6
+SIZE (speedata-css-68d469dc62c4_GH0.tar.gz) = 13462
+SHA256 (speedata-go-epub-v0.5.5_GH0.tar.gz) = 6f0767ffbf5016ca44efde44849314f32454ed0aed556cc59b2bcef641bec27f
+SIZE (speedata-go-epub-v0.5.5_GH0.tar.gz) = 25895
+SHA256 (speedata-goxlsx-v1.0.2_GH0.tar.gz) = 289e1568abc198ea6316e3109bcb5a557bcd7b61bcff332a42cdc338d7c5807c
+SIZE (speedata-goxlsx-v1.0.2_GH0.tar.gz) = 67107
+SHA256 (speedata-hotfolder-5f743a840a92_GH0.tar.gz) = a9178fe99f0c164f21a6cf96f5cb9d3ecc15e1bb0d33f8c8fccde3360e6c9d2f
+SIZE (speedata-hotfolder-5f743a840a92_GH0.tar.gz) = 1380
+SHA256 (speedata-optionparser-v1.1.1_GH0.tar.gz) = ea3fb4c4d50140bf8ee9948dea44f89477bf8b8295c896f1ce2ebd343173ccb0
+SIZE (speedata-optionparser-v1.1.1_GH0.tar.gz) = 9754
+SHA256 (yuin-goldmark-highlighting-37449abec8cc_GH0.tar.gz) = 9f49d339602c96284cc6b2dc51641fe37efe2346326f0b9755705aa6f20e6bf2
+SIZE (yuin-goldmark-highlighting-37449abec8cc_GH0.tar.gz) = 10298
+SHA256 (yuin-goldmark-v1.7.1_GH0.tar.gz) = e1159c456d6d5c8fdfeb61534aa23ef6f4108bbf74a21016199debfdde82590a
+SIZE (yuin-goldmark-v1.7.1_GH0.tar.gz) = 252103
+SHA256 (yuin-gopher-lua-v1.1.1_GH0.tar.gz) = 9e706d96c11314a4b3e2034eb10726e48cc7e7e7e31d4765a675f901ee6a9a7e
+SIZE (yuin-gopher-lua-v1.1.1_GH0.tar.gz) = 170691
diff --git a/print/publisher/files/modules.txt b/print/publisher/files/modules.txt
new file mode 100644
index 000000000000..5d7ea10f95f7
--- /dev/null
+++ b/print/publisher/files/modules.txt
@@ -0,0 +1,164 @@
+# github.com/Masterminds/semver v1.5.0
+## explicit
+github.com/Masterminds/semver
+# github.com/PuerkitoBio/goquery v1.9.1
+## explicit; go 1.18
+github.com/PuerkitoBio/goquery
+# github.com/alecthomas/chroma v0.10.0
+## explicit; go 1.13
+github.com/alecthomas/chroma
+github.com/alecthomas/chroma/formatters/html
+github.com/alecthomas/chroma/lexers
+github.com/alecthomas/chroma/lexers/a
+github.com/alecthomas/chroma/lexers/b
+github.com/alecthomas/chroma/lexers/c
+github.com/alecthomas/chroma/lexers/circular
+github.com/alecthomas/chroma/lexers/d
+github.com/alecthomas/chroma/lexers/e
+github.com/alecthomas/chroma/lexers/f
+github.com/alecthomas/chroma/lexers/g
+github.com/alecthomas/chroma/lexers/h
+github.com/alecthomas/chroma/lexers/i
+github.com/alecthomas/chroma/lexers/internal
+github.com/alecthomas/chroma/lexers/j
+github.com/alecthomas/chroma/lexers/k
+github.com/alecthomas/chroma/lexers/l
+github.com/alecthomas/chroma/lexers/m
+github.com/alecthomas/chroma/lexers/n
+github.com/alecthomas/chroma/lexers/o
+github.com/alecthomas/chroma/lexers/p
+github.com/alecthomas/chroma/lexers/q
+github.com/alecthomas/chroma/lexers/r
+github.com/alecthomas/chroma/lexers/s
+github.com/alecthomas/chroma/lexers/t
+github.com/alecthomas/chroma/lexers/v
+github.com/alecthomas/chroma/lexers/w
+github.com/alecthomas/chroma/lexers/x
+github.com/alecthomas/chroma/lexers/y
+github.com/alecthomas/chroma/lexers/z
+github.com/alecthomas/chroma/styles
+# github.com/alecthomas/chroma/v2 v2.13.0
+## explicit; go 1.19
+github.com/alecthomas/chroma/v2
+github.com/alecthomas/chroma/v2/formatters/html
+github.com/alecthomas/chroma/v2/lexers
+github.com/alecthomas/chroma/v2/styles
+# github.com/andybalholm/cascadia v1.3.2
+## explicit; go 1.16
+github.com/andybalholm/cascadia
+# github.com/cjoudrey/gluahttp v0.0.0-20201111170219-25003d9adfa9
+## explicit
+github.com/cjoudrey/gluahttp
+# github.com/dlclark/regexp2 v1.11.0
+## explicit; go 1.13
+github.com/dlclark/regexp2
+github.com/dlclark/regexp2/syntax
+# github.com/fsnotify/fsnotify v1.7.0
+## explicit; go 1.17
+github.com/fsnotify/fsnotify
+# github.com/gammazero/deque v0.2.1
+## explicit; go 1.18
+github.com/gammazero/deque
+# github.com/gammazero/workerpool v1.1.3
+## explicit; go 1.18
+github.com/gammazero/workerpool
+# github.com/gofrs/uuid v4.4.0+incompatible
+## explicit
+github.com/gofrs/uuid
+# github.com/google/btree v1.1.2
+## explicit; go 1.18
+github.com/google/btree
+# github.com/gorilla/mux v1.8.1
+## explicit; go 1.20
+github.com/gorilla/mux
+# github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
+## explicit
+github.com/gregjones/httpcache
+github.com/gregjones/httpcache/diskcache
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit; go 1.18
+github.com/inconshreveable/mousetrap
+# github.com/peterbourgon/diskv v2.0.1+incompatible
+## explicit
+github.com/peterbourgon/diskv
+# github.com/russross/blackfriday v1.6.0
+## explicit; go 1.13
+github.com/russross/blackfriday
+# github.com/speedata/bild v0.0.0-20240628091728-dd063a632b14
+## explicit; go 1.21
+github.com/speedata/bild/clone
+github.com/speedata/bild/imgio
+github.com/speedata/bild/math/f64
+github.com/speedata/bild/parallel
+github.com/speedata/bild/transform
+# github.com/speedata/config v0.0.0-20181203093101-3a3f44982ec4
+## explicit
+github.com/speedata/config
+# github.com/speedata/css/scanner v0.0.0-20250825095519-68d469dc62c4
+## explicit; go 1.14
+github.com/speedata/css/scanner
+# github.com/speedata/go-epub v0.5.5
+## explicit
+github.com/speedata/go-epub
+# github.com/speedata/goxlsx v1.0.2
+## explicit
+github.com/speedata/goxlsx
+# github.com/speedata/hotfolder v0.0.0-20181204121114-5f743a840a92
+## explicit
+github.com/speedata/hotfolder
+# github.com/speedata/optionparser v1.1.1
+## explicit; go 1.17
+github.com/speedata/optionparser
+# github.com/yuin/goldmark v1.7.1
+## explicit; go 1.19
+github.com/yuin/goldmark
+github.com/yuin/goldmark/ast
+github.com/yuin/goldmark/extension
+github.com/yuin/goldmark/extension/ast
+github.com/yuin/goldmark/parser
+github.com/yuin/goldmark/renderer
+github.com/yuin/goldmark/renderer/html
+github.com/yuin/goldmark/text
+github.com/yuin/goldmark/util
+# github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
+## explicit; go 1.13
+github.com/yuin/goldmark-highlighting/v2
+# github.com/yuin/gopher-lua v1.1.1
+## explicit; go 1.17
+github.com/yuin/gopher-lua
+github.com/yuin/gopher-lua/ast
+github.com/yuin/gopher-lua/parse
+github.com/yuin/gopher-lua/pm
+# golang.org/x/image v0.18.0
+## explicit; go 1.18
+golang.org/x/image/bmp
+# golang.org/x/net v0.35.0
+## explicit; go 1.18
+golang.org/x/net/html
+golang.org/x/net/html/atom
+golang.org/x/net/html/charset
+# golang.org/x/sys v0.30.0
+## explicit; go 1.18
+golang.org/x/sys/unix
+golang.org/x/sys/windows
+# golang.org/x/text v0.22.0
+## explicit; go 1.18
+golang.org/x/text/encoding
+golang.org/x/text/encoding/charmap
+golang.org/x/text/encoding/htmlindex
+golang.org/x/text/encoding/internal
+golang.org/x/text/encoding/internal/identifier
+golang.org/x/text/encoding/japanese
+golang.org/x/text/encoding/korean
+golang.org/x/text/encoding/simplifiedchinese
+golang.org/x/text/encoding/traditionalchinese
+golang.org/x/text/encoding/unicode
+golang.org/x/text/internal/language
+golang.org/x/text/internal/language/compact
+golang.org/x/text/internal/tag
+golang.org/x/text/internal/utf8internal
+golang.org/x/text/language
+golang.org/x/text/runes
+golang.org/x/text/transform
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
diff --git a/print/publisher/modules.txt b/print/publisher/modules.txt
new file mode 100644
index 000000000000..f01a417829df
--- /dev/null
+++ b/print/publisher/modules.txt
@@ -0,0 +1,33 @@
+GH_TUPLE= \
+ Masterminds:semver:v1.5.0:masterminds_semver/src/go/vendor/github.com/Masterminds/semver \
+ PuerkitoBio:goquery:v1.9.1:puerkitobio_goquery/src/go/vendor/github.com/PuerkitoBio/goquery \
+ alecthomas:chroma:v0.10.0:alecthomas_chroma/src/go/vendor/github.com/alecthomas/chroma \
+ alecthomas:chroma:v2.13.0:alecthomas_chroma_v2/src/go/vendor/github.com/alecthomas/chroma/v2 \
+ andybalholm:cascadia:v1.3.2:andybalholm_cascadia/src/go/vendor/github.com/andybalholm/cascadia \
+ cjoudrey:gluahttp:25003d9adfa9:cjoudrey_gluahttp/src/go/vendor/github.com/cjoudrey/gluahttp \
+ dlclark:regexp2:v1.11.0:dlclark_regexp2/src/go/vendor/github.com/dlclark/regexp2 \
+ fsnotify:fsnotify:v1.7.0:fsnotify_fsnotify/src/go/vendor/github.com/fsnotify/fsnotify \
+ gammazero:deque:v0.2.1:gammazero_deque/src/go/vendor/github.com/gammazero/deque \
+ gammazero:workerpool:v1.1.3:gammazero_workerpool/src/go/vendor/github.com/gammazero/workerpool \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/src/go/vendor/gopkg.in/yaml.v3 \
+ gofrs:uuid:v4.4.0:gofrs_uuid/src/go/vendor/github.com/gofrs/uuid \
+ golang:image:v0.18.0:golang_image/src/go/vendor/golang.org/x/image \
+ golang:net:v0.35.0:golang_net/src/go/vendor/golang.org/x/net \
+ golang:sys:v0.30.0:golang_sys/src/go/vendor/golang.org/x/sys \
+ golang:text:v0.22.0:golang_text/src/go/vendor/golang.org/x/text \
+ google:btree:v1.1.2:google_btree/src/go/vendor/github.com/google/btree \
+ gorilla:mux:v1.8.1:gorilla_mux/src/go/vendor/github.com/gorilla/mux \
+ gregjones:httpcache:901d90724c79:gregjones_httpcache/src/go/vendor/github.com/gregjones/httpcache \
+ inconshreveable:mousetrap:v1.1.0:inconshreveable_mousetrap/src/go/vendor/github.com/inconshreveable/mousetrap \
+ peterbourgon:diskv:v2.0.1:peterbourgon_diskv/src/go/vendor/github.com/peterbourgon/diskv \
+ russross:blackfriday:v1.6.0:russross_blackfriday/src/go/vendor/github.com/russross/blackfriday \
+ speedata:bild:dd063a632b14:speedata_bild/src/go/vendor/github.com/speedata/bild \
+ speedata:config:3a3f44982ec4:speedata_config/src/go/vendor/github.com/speedata/config \
+ speedata:css:68d469dc62c4:speedata_css_scanner/src/go/vendor/github.com/speedata/css \
+ speedata:go-epub:v0.5.5:speedata_go_epub/src/go/vendor/github.com/speedata/go-epub \
+ speedata:goxlsx:v1.0.2:speedata_goxlsx/src/go/vendor/github.com/speedata/goxlsx \
+ speedata:hotfolder:5f743a840a92:speedata_hotfolder/src/go/vendor/github.com/speedata/hotfolder \
+ speedata:optionparser:v1.1.1:speedata_optionparser/src/go/vendor/github.com/speedata/optionparser \
+ yuin:goldmark-highlighting:37449abec8cc:yuin_goldmark_highlighting_v2/src/go/vendor/github.com/yuin/goldmark-highlighting/v2 \
+ yuin:goldmark:v1.7.1:yuin_goldmark/src/go/vendor/github.com/yuin/goldmark \
+ yuin:gopher-lua:v1.1.1:yuin_gopher_lua/src/go/vendor/github.com/yuin/gopher-lua
diff --git a/print/publisher/pkg-descr b/print/publisher/pkg-descr
new file mode 100644
index 000000000000..54250dcd99a9
--- /dev/null
+++ b/print/publisher/pkg-descr
@@ -0,0 +1,13 @@
+speedata Publisher is a professional, non-interactive layout engine for
+database publishing. It generates high-quality PDF files from XML data
+and XML layout instructions, making it well suited for product catalogs,
+price lists, and other documents with demanding layout requirements.
+The layout description language allows complex, nearly arbitrary page
+designs while keeping the job as straightforward as possible. It can be
+thought of as "XSL-FO on steroids" or a server-side alternative to
+desktop publishing tools like InDesign. It is production-proven and used
+in commercial environments worldwide.
+The core typesetting engine is LuaTeX (not included; must be provided
+separately via download.speedata.de or the official packages). The Go
+front-end binary (sp) drives the build process and handles XML parsing,
+resource loading, and orchestration of the LuaTeX process.
diff --git a/print/publisher/pkg-help b/print/publisher/pkg-help
new file mode 100644
index 000000000000..1d38b98aa7ed
--- /dev/null
+++ b/print/publisher/pkg-help
@@ -0,0 +1,47 @@
+JAVA_TOOLS option
+-----------------
+
+By selection the JAVA_TOOLS option, the following ports are installed
+as runtime dependencies and their JAR files are
+symlinked into /usr/local/lib/speedata-publisher:
+
+ textproc/saxon-he (XSLT/XPath/XQuery, also provides xmlresolver)
+ textproc/jing (RELAX NG validator)
+ textproc/trang (schema converter)
+
+A Java runtime (openjdk25) is pulled in transitively.
+
+To build without these dependencies (for example to use the upstream
+JARs at specific versions, or to skip the Java toolchain entirely):
+
+ cd /usr/ports/print/publisher
+ make config # uncheck JAVA_TOOLS
+ make install clean
+
+Without JAVA_TOOLS the following files would normally need to be placed
+manually at the indicated paths:
+
+ /usr/local/lib/speedata-publisher/saxon-he-12.9.jar
+ /usr/local/lib/speedata-publisher/jing.jar
+ /usr/local/lib/speedata-publisher/trang.jar
+ /usr/local/lib/speedata-publisher/lib/xmlresolver-5.3.3.jar
+ /usr/local/lib/speedata-publisher/lib/xmlresolver-5.3.3-data.jar
+
+Upstream download URLs:
+
+ https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.9/Saxon-HE-12.9.jar
+ https://github.com/relaxng/jing-trang/releases/download/V20220510/jing-20220510.jar
+ https://github.com/relaxng/jing-trang/releases/download/V20220510/trang-20220510.jar
+ https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/5.3.3/xmlresolver-5.3.3.jar
+ https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/5.3.3/xmlresolver-5.3.3-data.jar
+
+A Java runtime must also be installed (pkg install openjdk25).
+
+Pro flavor
+----------
+
+This port has two flavors: default (community) and pro. To build the
+pro flavor from source:
+
+ cd /usr/ports/print/publisher
+ make FLAVOR=pro install clean
diff --git a/print/publisher/pkg-plist b/print/publisher/pkg-plist
new file mode 100644
index 000000000000..8f52ee2467fe
--- /dev/null
+++ b/print/publisher/pkg-plist
@@ -0,0 +1,130 @@
+bin/sdluatex
+bin/sp
+%%JAVA_TOOLS%%lib/speedata-publisher/jing.jar
+%%JAVA_TOOLS%%lib/speedata-publisher/lib/xmlresolver-5.3.3-data.jar
+%%JAVA_TOOLS%%lib/speedata-publisher/lib/xmlresolver-5.3.3.jar
+lib/speedata-publisher/libsplib.so
+lib/speedata-publisher/luaglue.so
+%%JAVA_TOOLS%%lib/speedata-publisher/saxon-he-12.9.jar
+%%JAVA_TOOLS%%lib/speedata-publisher/trang.jar
+share/speedata-publisher/schema/catalog-schema-de.xml
+share/speedata-publisher/schema/catalog-schema-en.xml
+share/speedata-publisher/schema/layoutschema-de.rng
+share/speedata-publisher/schema/layoutschema-de.xsd
+share/speedata-publisher/schema/layoutschema-en.rng
+share/speedata-publisher/schema/layoutschema-en.xsd
+share/speedata-publisher/sw/colorprofiles/ISOcoated_v2_eci.icc
+share/speedata-publisher/sw/fonts/camingocode/CamingoCode-Bold.ttf
+share/speedata-publisher/sw/fonts/camingocode/CamingoCode-BoldItalic.ttf
+share/speedata-publisher/sw/fonts/camingocode/CamingoCode-Italic.ttf
+share/speedata-publisher/sw/fonts/camingocode/CamingoCode-Regular.ttf
+share/speedata-publisher/sw/fonts/crimsonpro/CrimsonPro-Bold.ttf
+share/speedata-publisher/sw/fonts/crimsonpro/CrimsonPro-BoldItalic.ttf
+share/speedata-publisher/sw/fonts/crimsonpro/CrimsonPro-Italic.ttf
+share/speedata-publisher/sw/fonts/crimsonpro/CrimsonPro-Regular.ttf
+share/speedata-publisher/sw/fonts/texgyreheros/texgyreheros-bold.otf
+share/speedata-publisher/sw/fonts/texgyreheros/texgyreheros-bolditalic.otf
+share/speedata-publisher/sw/fonts/texgyreheros/texgyreheros-italic.otf
+share/speedata-publisher/sw/fonts/texgyreheros/texgyreheros-regular.otf
+share/speedata-publisher/sw/hyphenation/hyph-bg.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-ca.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-cs.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-cy.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-da.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-de-1996.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-el-monoton.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-en-gb.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-en-us.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-eo.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-es.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-et.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-eu.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-fi.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-fr.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-ga.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-gl.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-grc.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-gu.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-hi.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-hr.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-hu.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-hy.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-id.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-is.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-it.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-kmr.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-kn.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-lt.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-lv.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-ml.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-nb.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-nl.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-nn.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-pl.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-pt.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-ro.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-ru.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sa.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sk.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sl.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sr-cyrl.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sr.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-sv.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-tr.pat.txt
+share/speedata-publisher/sw/hyphenation/hyph-uk.pat.txt
+share/speedata-publisher/sw/img/_samplea.pdf
+share/speedata-publisher/sw/img/_sampleb.pdf
+share/speedata-publisher/sw/img/filenotfound.pdf
+share/speedata-publisher/sw/lua/.gitignore
+share/speedata-publisher/sw/lua/barcodes/barcodes.lua
+share/speedata-publisher/sw/lua/barcodes/qrencode.lua
+share/speedata-publisher/sw/lua/box.lua
+share/speedata-publisher/sw/lua/common/lua-visual-debug.lua
+share/speedata-publisher/sw/lua/common/sd-callbacks.lua
+share/speedata-publisher/sw/lua/common/sd-debug.lua
+share/speedata-publisher/sw/lua/css.lua
+share/speedata-publisher/sw/lua/dimexpr.lua
+share/speedata-publisher/sw/lua/fonts/fontloader.lua
+share/speedata-publisher/sw/lua/html.lua
+share/speedata-publisher/sw/lua/html/fonts.lua
+share/speedata-publisher/sw/lua/html/images.lua
+share/speedata-publisher/sw/lua/html/inherit.lua
+share/speedata-publisher/sw/lua/html/inline_images.lua
+share/speedata-publisher/sw/lua/html/inline_options.lua
+share/speedata-publisher/sw/lua/html/inline_utils.lua
+share/speedata-publisher/sw/lua/html/lists.lua
+share/speedata-publisher/sw/lua/html/pages.lua
+share/speedata-publisher/sw/lua/html/strings.lua
+share/speedata-publisher/sw/lua/html/styles.lua
+share/speedata-publisher/sw/lua/html/tables.lua
+share/speedata-publisher/sw/lua/html/tree.lua
+share/speedata-publisher/sw/lua/html/units.lua
+share/speedata-publisher/sw/lua/luxor.lua
+share/speedata-publisher/sw/lua/lxpath.lua
+share/speedata-publisher/sw/lua/par.lua
+share/speedata-publisher/sw/lua/publisher.lua
+share/speedata-publisher/sw/lua/publisher/colors.lua
+share/speedata-publisher/sw/lua/publisher/commands.lua
+share/speedata-publisher/sw/lua/publisher/fonts.lua
+share/speedata-publisher/sw/lua/publisher/grid.lua
+share/speedata-publisher/sw/lua/publisher/layout_functions.lua
+share/speedata-publisher/sw/lua/publisher/layout_functions_lxpath.lua
+share/speedata-publisher/sw/lua/publisher/links.lua
+share/speedata-publisher/sw/lua/publisher/metadata.lua
+share/speedata-publisher/sw/lua/publisher/metapost.lua
+share/speedata-publisher/sw/lua/publisher/page.lua
+share/speedata-publisher/sw/lua/publisher/spinit.lua
+share/speedata-publisher/sw/lua/publisher/tabular.lua
+share/speedata-publisher/sw/lua/sampler.lua
+share/speedata-publisher/sw/lua/sdini.lua
+share/speedata-publisher/sw/lua/sdscripts.lua
+share/speedata-publisher/sw/lua/shalocal.lua
+share/speedata-publisher/sw/lua/socket_url.lua
+share/speedata-publisher/sw/lua/spotcolors.lua
+share/speedata-publisher/sw/lua/uuid.lua
+share/speedata-publisher/sw/lua/xmlbuilder.lua
+share/speedata-publisher/sw/lua/xpath.lua
+share/speedata-publisher/sw/metapost/csscolors.mp
+share/speedata-publisher/sw/metapost/plain.mp
+share/speedata-publisher/sw/metapost/sp.mp
+share/speedata-publisher/sw/tex/publisher.tex