Download raw body.
NEW: editors/issy
On 2026/04/13 00:04, David Emerson wrote:
> I'd like to submit a new port for OpenBSD: editors/issy, a small
> console text editor written in Zig. The source lives at
> https://github.com/davidemerson/issy and is released under the ISC
> license.
>
> What it is:
>
> issy is a gap-buffer text editor with syntax highlighting for 17
> languages (including TeX/LaTeX), multi-cursor editing, incremental
> search, undo/redo, and PDF export via a hand-rolled PDF 1.4 writer
> with TTF/OTF font embedding. It has no runtime dependencies beyond
> libc and deliberately keeps its UI minimal: a centered code column
> on wide terminals, luminance-driven syntax highlighting, and a
> soft right margin.
>
> Build notes:
>
> issy is built with `zig build -Doptimize=ReleaseSafe`. The
> Makefile depends on lang/zig and redirects the zig cache into
> ${WRKBUILD} via ZIG_GLOBAL_CACHE_DIR / ZIG_LOCAL_CACHE_DIR in
> MAKE_ENV, mirroring the pattern used by lang/zig's own Makefile.
> The project's unit tests are wired to do-test and run under
> `zig build test`.
Build fails:
/usr/local/lib/zig/std/os.zig:107:9: error: querying for canonical path of a handle is unsupported on this host
(more output below)
> As far as I can tell this is the first port in the tree that
> consumes lang/zig as a build tool (lang/zig itself bootstraps
> from CMake+LLVM), so there is no existing zig-based port I could
> inherit from. The do-build / do-install / do-test targets are
> written explicitly rather than using a module. Suggestions on
> factoring this out into a lang/zig consumer module — similar to
> lang/go — would be welcome if the maintainers think that's
> worthwhile.
Best to do as you've done for now, if we see a few other ports using zig
we can factor things out. Best not to do that too early as the parts
needed for the various different ports will inform which things are
port-specific and which are more general.
> Arches:
>
> ONLY_FOR_ARCHS = amd64 arm64, matching lang/zig. powerpc64 is
> excluded because the upstream lang/zig port is marked BROKEN
> there.
Again ok like this for now, we can add to arch-defines.mk sometime.
> Testing:
>
> I do not currently have an OpenBSD build environment to test on.
You do really need one (VM is fine though) in order to work on ports.
At this point it's unlikely to get in before our 7.9 release but it
would be nice to have something using zig in the tree.
> The port was prepared against the conventions documented in
> https://www.openbsd.org/faq/ports/guide.html and modeled on
> editors/ne and lang/zig. Please let me know if anything in the
> Makefile, PLIST, or build invocation fails under a real `make
> package`, and I will iterate.
>
> Upstream note: I added OpenBSD to the `linkLibC` branch in the
> project's build.zig specifically for this port, so native builds
> go through libc instead of issuing raw syscalls (which modern
> OpenBSD would refuse to execute).
>
> The port directory is attached as a gzipped tarball. Extract into
> ports/editors/ to produce ports/editors/issy/.
>
> Thanks for reviewing,
> David Emerson
> d@nnix.com
===> Building for issy-0.1.0
cd /usr/obj/ports/issy-0.1.0/issy-0.1.0 && /usr/bin/env -i ZIG_GLOBAL_CACHE_DIR=/usr/obj/ports/issy-0.1.0/issy-0.1.0/zig-global-cache ZIG_LOCAL_CACHE_DIR=/usr/obj/ports/issy-0.1.0/issy-0.1.0/zig-local-cache PORTSDIR="/usr/ports" LIBTOOL="/usr/bin/libtool" CCACHE_DIR=/usr/obj/ports/.ccache CCACHE_SLOPPINESS=pch_defines,time_macros PATH='/usr/obj/ports/issy-0.1.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin' PREFIX='/usr/local' LOCALBASE='/usr/local' X11BASE='/usr/X11R6' CFLAGS='-O2 -pipe' TRUEPREFIX='/usr/local' DESTDIR='' HOME='/issy-0.1.0_writes_to_HOME' PICFLAG="-fpic" BINGRP=bin BINOWN=root BINMODE=755 NONBINMODE=644 DIRMODE=755 INSTALL_COPY=-c INSTALL_STRIP=-s MANGRP=bin MANOWN=root MANMODE=644 BSD_INSTALL_PROGRAM="/usr/obj/ports/issy-0.1.0/bin/install -c -s -m 755" BSD_INSTALL_SCRIPT="/usr/obj/ports/issy-0.1.0/bin/install -c -m 755" BSD_INSTALL_DATA="/usr/obj/ports/issy-0.1.0/bin/install -c -m 644" BSD_INSTALL_MAN="/usr/obj/ports/issy-0.1.0/bin/install -c -m 644" BSD_INSTALL_PROGRAM_DIR="/usr/obj/ports/issy-0.1.0/bin/install -d -m 755" BSD_INSTALL_SCRIPT_DIR="/usr/obj/ports/issy-0.1.0/bin/install -d -m 755" BSD_INSTALL_DATA_DIR="/usr/obj/ports/issy-0.1.0/bin/install -d -m 755" BSD_INSTALL_MAN_DIR="/usr/obj/ports/issy-0.1.0/bin/install -d -m 755" zig build -Doptimize=ReleaseSafe
install
└─ install issy
└─ compile exe issy ReleaseSafe native 1 errors
/usr/local/lib/zig/std/os.zig:107:9: error: querying for canonical path of a handle is unsupported on this host
@compileError("querying for canonical path of a handle is unsupported on this host");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
referenced by:
realpathZ: /usr/local/lib/zig/std/fs/Dir.zig:1341:42
realpath: /usr/local/lib/zig/std/fs/Dir.zig:1315:26
9 reference(s) hidden; use '-freference-trace=11' to see all references
error: the following command failed with 1 compilation errors:
/usr/local/bin/zig build-exe -OReleaseSafe -Mroot=/usr/obj/ports/issy-0.1.0/issy-0.1.0/src/main.zig -lc --cache-dir zig-local-cache --global-cache-dir zig-global-cache --name issy --zig-lib-dir /usr/local/lib/zig/ --listen=-
Build Summary: 0/3 steps succeeded; 1 failed
install transitive failure
└─ install issy transitive failure
└─ compile exe issy ReleaseSafe native 1 errors
NEW: editors/issy