Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jun 2026 11:51:59 +0000
From:      Robert Clausecker <fuz@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc:        Mister D <misterd@renderdata.pro>
Subject:   git: 81b50de506e0 - main - print/publisher: speedata Publisher
Message-ID:  <6a2aa15f.4310b.7db47bd8@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by fuz:

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

commit 81b50de506e0a964ad54095aa3da33781a5c4b7c
Author:     Mister D <misterd@renderdata.pro>
AuthorDate: 2026-06-03 13:08:59 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2026-06-11 11:51:11 +0000

    print/publisher: speedata Publisher
    
    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.
    
    WWW: https://www.speedata.de/
    
    PR:             293790
---
 print/Makefile                    |   1 +
 print/publisher/Makefile          | 206 ++++++++++++++++++++++++++++++++++++++
 print/publisher/distinfo          |  67 +++++++++++++
 print/publisher/files/modules.txt | 164 ++++++++++++++++++++++++++++++
 print/publisher/modules.txt       |  33 ++++++
 print/publisher/pkg-descr         |  13 +++
 print/publisher/pkg-help          |  47 +++++++++
 print/publisher/pkg-plist         | 130 ++++++++++++++++++++++++
 8 files changed, 661 insertions(+)

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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a2aa15f.4310b.7db47bd8>