From: "Lydia Sobot" Subject: Re: [PATCH] lang/nim-2.2.6 To: Cc: "Alfred Morgan" Date: Tue, 03 Feb 2026 03:08:38 +0100 Just my 2 cents, but I actually tried my hand at this but I concretely have no idea what I'm doing, but maybe it will be useful for you (I am testing this on arm64), note that patch-lib_pure_asyncnet_nim is no longer needed, and note the new patch-lib_std_private_threadtypes_nim Index: Makefile =================================================================== RCS file: /cvs/ports/lang/nim/Makefile,v diff -u -p -r1.25 Makefile --- Makefile 21 Dec 2024 11:38:19 -0000 1.25 +++ Makefile 3 Feb 2026 02:05:29 -0000 @@ -2,9 +2,8 @@ ONLY_FOR_ARCHS = amd64 arm64 i386 COMMENT = statically typed systems programming language -DISTNAME = nim-1.6.18 +DISTNAME = nim-2.2.6 EXTRACT_SUFX = .tar.xz -REVISION = 2 CATEGORIES = lang @@ -29,6 +28,7 @@ TEST_DEPENDS = archivers/p7zip,-main \ SUBST_VARS += CFLAGS post-patch: + mv ${WRKSRC}/lib/posix/posix_openbsd_amd64.nim ${WRKSRC}/lib/posix/posix_openbsd.nim mkdir -p ${WRKSRC}/nimcache-port mkdir -p ${WRKSRC}/nimcache-port-test perl -i -pe "s#NIM_PORT_PATH#${PATH}#" ${WRKSRC}/koch.nim Index: distinfo =================================================================== RCS file: /cvs/ports/lang/nim/distinfo,v diff -u -p -r1.10 distinfo --- distinfo 30 Dec 2023 19:41:20 -0000 1.10 +++ distinfo 3 Feb 2026 02:05:29 -0000 @@ -1,2 +1,2 @@ -SHA256 (nim-1.6.18.tar.xz) = UCQaxyIpG6ljdT8EWqo1h7c8GqKK4pxXPBWluKYCoss= -SIZE (nim-1.6.18.tar.xz) = 5212008 +SHA256 (nim-2.2.6.tar.xz) = ZXsOPV3veIFI0qh/phI/p1Wy2SytMe9g/SYeRReFUos= +SIZE (nim-2.2.6.tar.xz) = 8471204 Index: patches/patch-build_sh =================================================================== RCS file: /cvs/ports/lang/nim/patches/patch-build_sh,v diff -u -p -r1.7 patch-build_sh --- patches/patch-build_sh 24 Aug 2022 18:32:15 -0000 1.7 +++ patches/patch-build_sh 3 Feb 2026 02:05:29 -0000 @@ -7,8 +7,8 @@ Index: build.sh fi CC="sem -j $parallel --id $$ ${CC}" fi --COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -O3 -fno-strict-aliasing -fno-ident $extraBuildArgs" -+COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -fno-strict-aliasing -fno-ident $extraBuildArgs" +-COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -fno-strict-aliasing -O3 -fno-ident -fno-math-errno $extraBuildArgs" ++COMP_FLAGS="${CPPFLAGS:-} ${CFLAGS:-} -w -fmax-errors=3 -fno-strict-aliasing -fno-ident -fno-math-errno $extraBuildArgs" LINK_FLAGS="${LDFLAGS:-} " PS4="" # platform detection Index: patches/patch-config_nim_cfg =================================================================== RCS file: /cvs/ports/lang/nim/patches/patch-config_nim_cfg,v diff -u -p -r1.9 patch-config_nim_cfg --- patches/patch-config_nim_cfg 30 Dec 2023 19:41:20 -0000 1.9 +++ patches/patch-config_nim_cfg 3 Feb 2026 02:05:29 -0000 @@ -6,7 +6,7 @@ Index: config/nim.cfg --- config/nim.cfg.orig +++ config/nim.cfg -@@ -8,7 +8,7 @@ +@@ -9,7 +9,7 @@ # Environment variables can be accessed like so: # gcc.path %= "$CC_PATH" @@ -15,7 +15,7 @@ Index: config/nim.cfg # additional options always passed to the compiler: --parallel_build: "0" # 0 to auto-detect number of processors -@@ -111,7 +111,7 @@ nimblepath="$home/.nimble/pkgs/" +@@ -132,7 +132,7 @@ nimblepath="$home/.nimble/pkgs/" @if unix: @if bsd: # BSD got posix_spawn only recently, so we deactivate it for osproc: @@ -24,7 +24,7 @@ Index: config/nim.cfg @elif haiku: gcc.options.linker = "-Wl,--as-needed -lnetwork" gcc.cpp.options.linker = "-Wl,--as-needed -lnetwork" -@@ -201,21 +201,27 @@ clang.objc.options.linker = "-lobjc -lgnustep-base" +@@ -223,21 +223,27 @@ clang.objc.options.linker = "-lobjc -lgnustep-base" # Options for FreeBSD, OpenBSD, NetBSD linker to add locations for searching # shared libraries. @@ -58,34 +58,3 @@ Index: config/nim.cfg @elif netbsd: cincludes: "/usr/pkg/include" clibdir: "/usr/pkg/lib" -@@ -235,15 +241,15 @@ clang.objc.options.linker = "-lobjc -lgnustep-base" - gcc.options.linker %= "-L $WIND_BASE/target/lib/usr/lib/ppc/PPC32/common -mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings" - @end - --gcc.options.speed = "-O3 -fno-strict-aliasing -fno-ident" --gcc.options.size = "-Os -fno-ident" -+gcc.options.speed = "${CFLAGS} -fno-strict-aliasing -fno-ident" -+gcc.options.size = "${CFLAGS} -Os -fno-ident" - @if windows: - gcc.options.debug = "-g3 -Og -gdwarf-3" - @else: - gcc.options.debug = "-g3 -Og" - @end --gcc.cpp.options.speed = "-O3 -fno-strict-aliasing -fno-ident" --gcc.cpp.options.size = "-Os -fno-ident" -+gcc.cpp.options.speed = "${CFLAGS} -fno-strict-aliasing -fno-ident" -+gcc.cpp.options.size = "${CFLAGS} -Os -fno-ident" - gcc.cpp.options.debug = "-g3 -Og" - #passl = "-pg" - -@@ -257,8 +263,8 @@ llvm_gcc.options.size = "-Os" - clang.options.debug = "-g" - clang.cpp.options.debug = "-g" - clang.options.always = "-w -ferror-limit=3" --clang.options.speed = "-O3" --clang.options.size = "-Os" -+clang.options.speed = "${CFLAGS}" -+clang.options.size = "${CFLAGS} -Os" - - @if windows: - clang_cl.cpp.options.always %= "${clang_cl.options.always} /EHsc" Index: patches/patch-dist_nimble_src_nimblepkg_options_nim =================================================================== RCS file: /cvs/ports/lang/nim/patches/patch-dist_nimble_src_nimblepkg_options_nim,v diff -u -p -r1.2 patch-dist_nimble_src_nimblepkg_options_nim --- patches/patch-dist_nimble_src_nimblepkg_options_nim 11 Mar 2022 19:29:08 -0000 1.2 +++ patches/patch-dist_nimble_src_nimblepkg_options_nim 3 Feb 2026 02:05:29 -0000 @@ -1,18 +1,14 @@ -don't exec git +override git commit hash to not exec git Index: dist/nimble/src/nimblepkg/options.nim --- dist/nimble/src/nimblepkg/options.nim.orig +++ dist/nimble/src/nimblepkg/options.nim -@@ -161,12 +161,6 @@ proc writeHelp*(quit=true) = - proc writeVersion*() = - echo("nimble v$# compiled at $# $#" % - [nimbleVersion, CompileDate, CompileTime]) -- const execResult = gorgeEx("git rev-parse HEAD") -- when execResult[0].len > 0 and execResult[1] == QuitSuccess: -- echo "git hash: ", execResult[0] -- else: -- {.warning: "Couldn't determine GIT hash: " & execResult[0].} -- echo "git hash: couldn't determine git hash" - raise NimbleQuit(msg: "") +@@ -298,7 +298,7 @@ proc writeHelp*(quit=true) = + const + ## You can override this if you are building the + ## sources outside the git tree of Nimble: +- git_revision_override* {.strdefine.} = "" ++ git_revision_override* {.strdefine.} = "ab00c56904e3126ad826bb520d243513a139436a" - proc parseActionType*(action: string): ActionType = + gitRevision* = when git_revision_override.len == 0: + const execResult = gorgeEx("git rev-parse HEAD") Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/lang/nim/pkg/PLIST,v diff -u -p -r1.10 PLIST --- pkg/PLIST 23 Oct 2025 13:19:55 -0000 1.10 +++ pkg/PLIST 3 Feb 2026 02:05:29 -0000 @@ -12,7 +12,6 @@ lib/nim/arch/ lib/nim/arch/x86/ lib/nim/arch/x86/amd64.S lib/nim/arch/x86/i386.S -lib/nim/compilation.nim lib/nim/core/ lib/nim/core/hotcodereloading.nim lib/nim/core/locks.nim @@ -23,26 +22,25 @@ lib/nim/core/typeinfo.nim lib/nim/cycle.h lib/nim/deprecated/ lib/nim/deprecated/pure/ -lib/nim/deprecated/pure/LockFreeHash.nim -lib/nim/deprecated/pure/events.nim +lib/nim/deprecated/pure/future.nim +lib/nim/deprecated/pure/mersenne.nim lib/nim/deprecated/pure/ospaths.nim -lib/nim/deprecated/pure/parseopt2.nim -lib/nim/deprecated/pure/securehash.nim -lib/nim/deprecated/pure/sharedstrings.nim +lib/nim/deprecated/pure/oswalkdir.nim +lib/nim/deprecated/pure/sums.nim lib/nim/deps.txt lib/nim/experimental/ lib/nim/experimental/diff.nim lib/nim/genode/ lib/nim/genode/alloc.nim +lib/nim/genode/constructibles.nim +lib/nim/genode/entrypoints.nim lib/nim/genode/env.nim +lib/nim/genode/signals.nim lib/nim/genode_cpp/ +lib/nim/genode_cpp/signals.h lib/nim/genode_cpp/syslocks.h lib/nim/genode_cpp/threads.h lib/nim/impure/ -lib/nim/impure/db_mysql.nim -lib/nim/impure/db_odbc.nim -lib/nim/impure/db_postgres.nim -lib/nim/impure/db_sqlite.nim lib/nim/impure/nre/ lib/nim/impure/nre.nim lib/nim/impure/nre/private/ @@ -52,7 +50,6 @@ lib/nim/impure/re.nim lib/nim/js/ lib/nim/js/asyncjs.nim lib/nim/js/dom.nim -lib/nim/js/dom_extensions.nim lib/nim/js/jsconsole.nim lib/nim/js/jscore.nim lib/nim/js/jsffi.nim @@ -64,11 +61,13 @@ lib/nim/nimrtl.nim lib/nim/nimrtl.nim.cfg lib/nim/packages/ lib/nim/packages/docutils/ +lib/nim/packages/docutils/dochelpers.nim lib/nim/packages/docutils/docutils.nimble.old lib/nim/packages/docutils/highlite.nim lib/nim/packages/docutils/rst.nim lib/nim/packages/docutils/rstast.nim lib/nim/packages/docutils/rstgen.nim +lib/nim/packages/docutils/rstidx.nim lib/nim/posix/ lib/nim/posix/epoll.nim lib/nim/posix/inotify.nim @@ -82,7 +81,7 @@ lib/nim/posix/posix_linux_amd64_consts.n lib/nim/posix/posix_macos_amd64.nim lib/nim/posix/posix_nintendoswitch.nim lib/nim/posix/posix_nintendoswitch_consts.nim -lib/nim/posix/posix_openbsd_amd64.nim +lib/nim/posix/posix_openbsd.nim lib/nim/posix/posix_other.nim lib/nim/posix/posix_other_consts.nim lib/nim/posix/posix_utils.nim @@ -93,7 +92,6 @@ lib/nim/pure/async.nim lib/nim/pure/asyncdispatch.nim lib/nim/pure/asyncdispatch.nim.cfg lib/nim/pure/asyncfile.nim -lib/nim/pure/asyncftpclient.nim lib/nim/pure/asyncfutures.nim lib/nim/pure/asynchttpserver.nim lib/nim/pure/asyncmacro.nim @@ -131,22 +129,17 @@ lib/nim/pure/cookies.nim lib/nim/pure/coro.nim lib/nim/pure/coro.nimcfg lib/nim/pure/cstrutils.nim -lib/nim/pure/db_common.nim lib/nim/pure/distros.nim lib/nim/pure/dynlib.nim lib/nim/pure/encodings.nim lib/nim/pure/endians.nim lib/nim/pure/fenv.nim -lib/nim/pure/future.nim lib/nim/pure/hashes.nim lib/nim/pure/htmlgen.nim lib/nim/pure/htmlparser.nim lib/nim/pure/httpclient.nim lib/nim/pure/httpcore.nim lib/nim/pure/includes/ -lib/nim/pure/includes/osenv.nim -lib/nim/pure/includes/oserr.nim -lib/nim/pure/includes/osseps.nim lib/nim/pure/includes/unicode_ranges.nim lib/nim/pure/ioselects/ lib/nim/pure/ioselects/ioselectors_epoll.nim @@ -161,18 +154,15 @@ lib/nim/pure/marshal.nim lib/nim/pure/math.nim lib/nim/pure/md5.nim lib/nim/pure/memfiles.nim -lib/nim/pure/mersenne.nim lib/nim/pure/mimetypes.nim lib/nim/pure/nativesockets.nim lib/nim/pure/net.nim lib/nim/pure/nimprof.nim lib/nim/pure/nimprof.nim.cfg -lib/nim/pure/nimtracker.nim lib/nim/pure/oids.nim lib/nim/pure/options.nim lib/nim/pure/os.nim lib/nim/pure/osproc.nim -lib/nim/pure/oswalkdir.nim lib/nim/pure/parsecfg.nim lib/nim/pure/parsecsv.nim lib/nim/pure/parsejson.nim @@ -183,15 +173,12 @@ lib/nim/pure/parsexml.nim lib/nim/pure/pathnorm.nim lib/nim/pure/pegs.nim lib/nim/pure/prelude.nim -lib/nim/pure/punycode.nim lib/nim/pure/random.nim lib/nim/pure/rationals.nim lib/nim/pure/reservedmem.nim lib/nim/pure/ropes.nim lib/nim/pure/segfaults.nim lib/nim/pure/selectors.nim -lib/nim/pure/smtp.nim -lib/nim/pure/smtp.nim.cfg lib/nim/pure/ssl_certs.nim lib/nim/pure/ssl_config.nim lib/nim/pure/stats.nim @@ -220,13 +207,20 @@ lib/nim/pure/volatile.nim lib/nim/pure/xmlparser.nim lib/nim/pure/xmltree.nim lib/nim/std/ +lib/nim/std/appdirs.nim +lib/nim/std/assertions.nim +lib/nim/std/cmdline.nim lib/nim/std/compilesettings.nim lib/nim/std/decls.nim +lib/nim/std/dirs.nim lib/nim/std/editdistance.nim lib/nim/std/effecttraits.nim lib/nim/std/enumerate.nim lib/nim/std/enumutils.nim +lib/nim/std/envvars.nim lib/nim/std/exitprocs.nim +lib/nim/std/files.nim +lib/nim/std/formatfloat.nim lib/nim/std/genasts.nim lib/nim/std/importutils.nim lib/nim/std/isolation.nim @@ -237,33 +231,54 @@ lib/nim/std/jsheaders.nim lib/nim/std/jsonutils.nim lib/nim/std/logic.nim lib/nim/std/monotimes.nim +lib/nim/std/objectdollar.nim +lib/nim/std/oserrors.nim +lib/nim/std/outparams.nim lib/nim/std/packedsets.nim +lib/nim/std/paths.nim lib/nim/std/private/ lib/nim/std/private/asciitables.nim lib/nim/std/private/bitops_utils.nim -lib/nim/std/private/dbutils.nim lib/nim/std/private/decode_helpers.nim lib/nim/std/private/digitsutils.nim +lib/nim/std/private/dragonbox.nim lib/nim/std/private/gitutils.nim lib/nim/std/private/globs.nim lib/nim/std/private/jsutils.nim lib/nim/std/private/miscdollars.nim +lib/nim/std/private/ntpath.nim +lib/nim/std/private/osappdirs.nim +lib/nim/std/private/oscommon.nim +lib/nim/std/private/osdirs.nim +lib/nim/std/private/osfiles.nim +lib/nim/std/private/ospaths2.nim +lib/nim/std/private/osseps.nim +lib/nim/std/private/ossymlinks.nim +lib/nim/std/private/schubfach.nim lib/nim/std/private/since.nim lib/nim/std/private/strimpl.nim +lib/nim/std/private/syslocks.nim +lib/nim/std/private/threadtypes.nim lib/nim/std/private/underscored_calls.nim +lib/nim/std/private/win_getsysteminfo.nim lib/nim/std/private/win_setenv.nim lib/nim/std/setutils.nim lib/nim/std/sha1.nim lib/nim/std/socketstreams.nim lib/nim/std/stackframes.nim +lib/nim/std/staticos.nim lib/nim/std/strbasics.nim -lib/nim/std/sums.nim +lib/nim/std/symlinks.nim +lib/nim/std/syncio.nim +lib/nim/std/sysatomics.nim lib/nim/std/sysrand.nim lib/nim/std/tasks.nim lib/nim/std/tempfiles.nim lib/nim/std/time_t.nim +lib/nim/std/typedthreads.nim lib/nim/std/varints.nim lib/nim/std/vmutils.nim +lib/nim/std/widestrs.nim lib/nim/std/with.nim lib/nim/std/wordwrap.nim lib/nim/std/wrapnils.nim @@ -273,11 +288,8 @@ lib/nim/system.nim lib/nim/system/alloc.nim lib/nim/system/ansi_c.nim lib/nim/system/arc.nim -lib/nim/system/arithm.nim lib/nim/system/arithmetics.nim -lib/nim/system/assertions.nim lib/nim/system/assign.nim -lib/nim/system/atomics.nim lib/nim/system/avltree.nim lib/nim/system/basic_types.nim lib/nim/system/bitmasks.nim @@ -288,12 +300,13 @@ lib/nim/system/cgprocs.nim lib/nim/system/channels_builtin.nim lib/nim/system/chcks.nim lib/nim/system/comparisons.nim +lib/nim/system/compilation.nim lib/nim/system/coro_detection.nim lib/nim/system/countbits_impl.nim +lib/nim/system/ctypes.nim lib/nim/system/cyclebreaker.nim lib/nim/system/deepcopy.nim lib/nim/system/dollars.nim -lib/nim/system/dragonbox.nim lib/nim/system/dyncalls.nim lib/nim/system/embedded.nim lib/nim/system/exceptions.nim @@ -301,7 +314,6 @@ lib/nim/system/excpt.nim lib/nim/system/fatal.nim lib/nim/system/formatfloat.nim lib/nim/system/gc.nim -lib/nim/system/gc2.nim lib/nim/system/gc_common.nim lib/nim/system/gc_hooks.nim lib/nim/system/gc_interface.nim @@ -310,8 +322,8 @@ lib/nim/system/gc_regions.nim lib/nim/system/hti.nim lib/nim/system/inclrtl.nim lib/nim/system/indexerrors.nim +lib/nim/system/indices.nim lib/nim/system/integerops.nim -lib/nim/system/io.nim lib/nim/system/iterators.nim lib/nim/system/iterators_1.nim lib/nim/system/jssys.nim @@ -329,11 +341,12 @@ lib/nim/system/orc.nim lib/nim/system/osalloc.nim lib/nim/system/platforms.nim lib/nim/system/profiler.nim +lib/nim/system/ptrarith.nim +lib/nim/system/rawquits.nim lib/nim/system/repr.nim lib/nim/system/repr_impl.nim lib/nim/system/repr_v2.nim lib/nim/system/reprjs.nim -lib/nim/system/schubfach.nim lib/nim/system/seqs_v2.nim lib/nim/system/seqs_v2_reimpl.nim lib/nim/system/setops.nim @@ -341,13 +354,11 @@ lib/nim/system/sets.nim lib/nim/system/stacktraces.nim lib/nim/system/strmantle.nim lib/nim/system/strs_v2.nim -lib/nim/system/syslocks.nim -lib/nim/system/sysspawn.nim lib/nim/system/sysstr.nim +lib/nim/system/threadids.nim +lib/nim/system/threadimpl.nim lib/nim/system/threadlocalstorage.nim -lib/nim/system/threads.nim lib/nim/system/timers.nim -lib/nim/system/widestrs.nim lib/nim/system_overview.rst lib/nim/windows/ lib/nim/windows/registry.nim @@ -359,12 +370,8 @@ lib/nim/wrappers/linenoise/README.markdo lib/nim/wrappers/linenoise/linenoise.c lib/nim/wrappers/linenoise/linenoise.h lib/nim/wrappers/linenoise/linenoise.nim -lib/nim/wrappers/mysql.nim -lib/nim/wrappers/odbcsql.nim lib/nim/wrappers/openssl.nim lib/nim/wrappers/pcre.nim -lib/nim/wrappers/postgres.nim -lib/nim/wrappers/sqlite3.nim lib/nim/wrappers/tinyc.nim share/doc/nim/ share/doc/nim/advopt.txt - make proper phread.h header for all architectures Index: lib/std/private/threadtypes.nim --- lib/std/private/threadtypes.nim.orig +++ lib/std/private/threadtypes.nim @@ -77,7 +77,7 @@ else: Pthread_attr* {.importc: "pthread_attr_t", header: "".} = object abi: array[56 div sizeof(clong), clong] - elif defined(openbsd) and defined(amd64): + elif defined(openbsd): type SysThread* {.importc: "pthread_t", header: "".} = object Pthread_attr* {.importc: "pthread_attr_t",