On 2025/12/21 19:57, Kurt Miller wrote:
> This is a three part diff:
>
> 1. Allow ports that use MODJAVA to override MODJAVA_RUN_DEPENDS
> 2. Update java/tanukiwrapper to 3.6.3 and use jdk 11 to build
> 3. Update net/i2p to use jdk 17 and latest tanukiwrapper
Not a user of either of these ports, but it makes complete sense.
ok with me.
> java/tanukiwrapper is only used by net/i2p, however it could be
> used by something in the future. It is basically a fancy daemon(3)
> like program to be used with java applications. The jdk it uses is
> defined by the application that uses it. In other words, by itself
> it does nothing useful. It needs to be used by another java
> application and that other application defines what jdk it needs.
>
> So I want this port to be installed without a run depend on java.
> Having a run depend means it may bring in a jdk that is not needed
> for the application that uses it. For example, now that net/i2p runs
> with jdk-17, leaving a run depend of 11 or 11+ on tanukiwrapper means
> jdk 11 may also be installed and not needed. Hence the change to
> java.port.mk to allow tanukiwrapper to set MODJAVA_RUN_DEPENDS=
> and stop the run depend on jdk 11.
>
> java/tanukiwrapper: Update to 3.6.3 and use jdk 11 to build
> * Fix misspelled directory name
> * clean up patches
>
> net/i2p: Update to use jdk 17 and latest tanukiwrapper
> * Dont build the installer - we dont install or use it
> * Dont read /proc/cpuinfo and set opt to ARMV8 on aarch64
> * Update config to use corrected tanukiwrapper dir name
> and remove no longer supported stripquotes option
>
> i2p was warning that upcoming releases will require jdk 17, so
> I decided to move it there now to squash that warning.
>
> ok for each of the three parts?
>
> Index: devel/jdk/java.port.mk
> ===================================================================
> RCS file: /cvs/ports/devel/jdk/java.port.mk,v
> diff -u -p -u -r1.45 java.port.mk
> --- devel/jdk/java.port.mk 3 Nov 2025 13:39:29 -0000 1.45
> +++ devel/jdk/java.port.mk 21 Dec 2025 19:29:00 -0000
> @@ -55,9 +55,9 @@ MODJAVA_VER?=
> .endif
>
> .if ${MODJAVA_VER:M*+}
> - MODJAVA_RUN_DEPENDS= ${MODJAVA_BUILD_DEPENDS:C/,.*:/:/}
> + MODJAVA_RUN_DEPENDS?= ${MODJAVA_BUILD_DEPENDS:C/,.*:/:/}
> .else
> - MODJAVA_RUN_DEPENDS= ${MODJAVA_BUILD_DEPENDS}
> + MODJAVA_RUN_DEPENDS?= ${MODJAVA_BUILD_DEPENDS}
> .endif
> RUN_DEPENDS+= ${MODJAVA_RUN_DEPENDS}
>
> Index: java/tanukiwrapper/Makefile
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/Makefile,v
> diff -u -p -u -r1.27 Makefile
> --- java/tanukiwrapper/Makefile 26 Sep 2023 11:47:58 -0000 1.27
> +++ java/tanukiwrapper/Makefile 21 Dec 2025 19:29:00 -0000
> @@ -1,7 +1,6 @@
> COMMENT= Tanuki Java Service Wrapper
>
> -V= 3.5.49
> -REVISION= 0
> +V= 3.6.3
> DISTNAME= wrapper_${V}_src
> PKGNAME= java-tanukiwrapper-${V}
> CATEGORIES= java
> @@ -14,9 +13,12 @@ SITES= https://download.tanukisoftware.
> PERMIT_PACKAGE= Yes
>
> MODULES= java
> -MODJAVA_VER= 1.8
> +MODJAVA_VER= 11
> MODJAVA_BUILD= ant
>
> +# The application which uses this defines what jdk it will run with
> +MODJAVA_RUN_DEPENDS=
> +
> .if ${MACHINE_ARCH} == "i386"
> BITS=32
> .else
> @@ -44,17 +46,17 @@ USE_GMAKE= Yes
> SUBST_VARS+= CC CFLAGS
>
> post-extract:
> - cp ${FILESDIR}/Makefile-openbsd-${MAKE_ARCH}.gmake ${WRKSRC}/src/c/
> + cp ${FILESDIR}/Makefile-openbsd-*.gmake ${WRKSRC}/src/c/
>
> pre-configure:
> ${SUBST_CMD} ${WRKSRC}/src/c/Makefile-openbsd-${MAKE_ARCH}.gmake
>
> do-install:
> ${INSTALL_DATA_DIR} ${PREFIX}/share/java/classes/ \
> - ${PREFIX}/lib/tanukuwrapper/
> + ${PREFIX}/lib/tanukiwrapper/
> ${INSTALL_DATA} ${WRKSRC}/lib/wrapper.jar \
> ${PREFIX}/share/java/classes/tanukiwrapper.jar
> - ${INSTALL_PROGRAM} ${WRKSRC}/lib/libwrapper.so
> ${PREFIX}/lib/tanukuwrapper/
> + ${INSTALL_PROGRAM} ${WRKSRC}/lib/libwrapper.so
> ${PREFIX}/lib/tanukiwrapper/
> ${INSTALL_PROGRAM} ${WRKSRC}/bin/wrapper ${PREFIX}/sbin/tanukiwrapper
>
> do-test:
> Index: java/tanukiwrapper/distinfo
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/distinfo,v
> diff -u -p -u -r1.7 distinfo
> --- java/tanukiwrapper/distinfo 8 Mar 2022 00:55:13 -0000 1.7
> +++ java/tanukiwrapper/distinfo 21 Dec 2025 19:29:00 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (wrapper_3.5.49_src.tar.gz) =
> gcScF5LIqWVBv8erI3hG5tt5BZPO2XlhFACz1Y60+v4=
> -SIZE (wrapper_3.5.49_src.tar.gz) = 774890
> +SHA256 (wrapper_3.6.3_src.tar.gz) =
> e8Wtie0ho5tKTtVI3+kvxYeu1A5sdQWacTCfuAQv9YA=
> +SIZE (wrapper_3.6.3_src.tar.gz) = 902583
> Index: java/tanukiwrapper/files/Makefile-openbsd-arm-64.gmake
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/files/Makefile-openbsd-arm-64.gmake,v
> diff -u -p -u -r1.1 Makefile-openbsd-arm-64.gmake
> --- java/tanukiwrapper/files/Makefile-openbsd-arm-64.gmake 31 Oct 2021
> 13:00:03 -0000 1.1
> +++ java/tanukiwrapper/files/Makefile-openbsd-arm-64.gmake 21 Dec 2025
> 19:29:00 -0000
> @@ -1,4 +1,4 @@
> -# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
> +# Copyright (c) 1999, 2025 Tanuki Software, Ltd.
> # http://www.tanukisoftware.com
> # All rights reserved.
> #
> @@ -7,13 +7,13 @@
> # license agreement you entered into with Tanuki Software.
> # http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
>
> -CC = ${CC} -Wall -fPIC -pedantic -DOPENBSD -DJSW64 -I${LOCALBASE}/include
> -L${LOCALBASE}/lib -liconv -DUNICODE -D_UNICODE
> +CC = ${CC} -Wall -pedantic -Wno-strict-prototypes -DOPENBSD -DJSW64 -fPIC
> -I${LOCALBASE}/include -DUNICODE -D_UNICODE
>
> INCLUDE=$(JAVA_HOME)/include
>
> CFLAGS = ${CFLAGS} -I$(INCLUDE) -I$(INCLUDE)/openbsd
>
> -wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c
> property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c
> wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
> +wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c
> wrapper_jvm_launch.c wrapper_unix.c property.c logger.c logger_file.c
> wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
> wrapper_encoding.c wrapper_jvminfo.c wrapper_secure_file.c wrapper_sysinfo.c
> wrapper_cipher.c wrapper_cipher_base.c
>
> libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o
> wrapperjni.o loggerjni.o
>
> @@ -33,10 +33,10 @@ init:
> if test ! -d .deps; then mkdir .deps; fi
>
> wrapper: $(wrapper_SOURCE)
> - $(CC) $(wrapper_SOURCE) -lm -rdynamic -lc -pthread -o $(BIN)/wrapper
> + $(CC) $(wrapper_SOURCE) -lm -rdynamic -L${LOCALBASE}/lib -liconv -lc
> -pthread -o $(BIN)/wrapper
>
> libwrapper.so: $(libwrapper_so_OBJECTS)
> - $(CC) -shared -rdynamic -lc -pthread $(libwrapper_so_OBJECTS) -o
> $(LIB)/libwrapper.so
> + $(CC) -shared -rdynamic -L${LOCALBASE}/lib -liconv -lc -pthread
> $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
>
> #%.o: %.c
> # $(COMPILE) -c $(DEFS) $<
> Index: java/tanukiwrapper/files/Makefile-openbsd-sparc-64.gmake
> ===================================================================
> RCS file:
> /cvs/ports/java/tanukiwrapper/files/Makefile-openbsd-sparc-64.gmake,v
> diff -u -p -u -r1.1 Makefile-openbsd-sparc-64.gmake
> --- java/tanukiwrapper/files/Makefile-openbsd-sparc-64.gmake 18 Jul 2021
> 15:34:18 -0000 1.1
> +++ java/tanukiwrapper/files/Makefile-openbsd-sparc-64.gmake 21 Dec 2025
> 19:29:00 -0000
> @@ -1,4 +1,4 @@
> -# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
> +# Copyright (c) 1999, 2025 Tanuki Software, Ltd.
> # http://www.tanukisoftware.com
> # All rights reserved.
> #
> @@ -7,13 +7,13 @@
> # license agreement you entered into with Tanuki Software.
> # http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
>
> -CC = ${CC} -Wall -fPIC -pedantic -DOPENBSD -DJSW64 -I${LOCALBASE}/include
> -L${LOCALBASE}/lib -liconv -DUNICODE -D_UNICODE
> +CC = ${CC} -Wall -pedantic -Wno-strict-prototypes -DOPENBSD -DJSW64 -fPIC
> -I${LOCALBASE}/include -DUNICODE -D_UNICODE
>
> INCLUDE=$(JAVA_HOME)/include
>
> CFLAGS = ${CFLAGS} -I$(INCLUDE) -I$(INCLUDE)/openbsd
>
> -wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c
> property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c
> wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
> +wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c
> wrapper_jvm_launch.c wrapper_unix.c property.c logger.c logger_file.c
> wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
> wrapper_encoding.c wrapper_jvminfo.c wrapper_secure_file.c wrapper_sysinfo.c
> wrapper_cipher.c wrapper_cipher_base.c
>
> libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o
> wrapperjni.o loggerjni.o
>
> @@ -33,10 +33,10 @@ init:
> if test ! -d .deps; then mkdir .deps; fi
>
> wrapper: $(wrapper_SOURCE)
> - $(CC) $(wrapper_SOURCE) -lm -rdynamic -lc -pthread -o $(BIN)/wrapper
> + $(CC) $(wrapper_SOURCE) -lm -rdynamic -L${LOCALBASE}/lib -liconv -lc
> -pthread -o $(BIN)/wrapper
>
> libwrapper.so: $(libwrapper_so_OBJECTS)
> - $(CC) -shared -rdynamic -lc -pthread $(libwrapper_so_OBJECTS) -o
> $(LIB)/libwrapper.so
> + $(CC) -shared -rdynamic -L${LOCALBASE}/lib -liconv -lc -pthread
> $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
>
> #%.o: %.c
> # $(COMPILE) -c $(DEFS) $<
> Index: java/tanukiwrapper/files/Makefile-openbsd-x86-32.gmake
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/files/Makefile-openbsd-x86-32.gmake,v
> diff -u -p -u -r1.6 Makefile-openbsd-x86-32.gmake
> --- java/tanukiwrapper/files/Makefile-openbsd-x86-32.gmake 21 May 2021
> 11:51:08 -0000 1.6
> +++ java/tanukiwrapper/files/Makefile-openbsd-x86-32.gmake 21 Dec 2025
> 19:29:00 -0000
> @@ -1,4 +1,4 @@
> -# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
> +# Copyright (c) 1999, 2025 Tanuki Software, Ltd.
> # http://www.tanukisoftware.com
> # All rights reserved.
> #
> @@ -7,13 +7,13 @@
> # license agreement you entered into with Tanuki Software.
> # http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
>
> -CC = ${CC} -Wall -fPIC -pedantic -DOPENBSD -I${LOCALBASE}/include
> -L${LOCALBASE}/lib -liconv -DUNICODE -D_UNICODE
> +CC = ${CC} -Wall -pedantic -Wno-strict-prototypes -DOPENBSD -fPIC
> -I${LOCALBASE}/include -DUNICODE -D_UNICODE
>
> INCLUDE=$(JAVA_HOME)/include
>
> CFLAGS = ${CFLAGS} -I$(INCLUDE) -I$(INCLUDE)/openbsd
>
> -wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c
> property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c
> wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
> +wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c
> wrapper_jvm_launch.c wrapper_unix.c property.c logger.c logger_file.c
> wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
> wrapper_encoding.c wrapper_jvminfo.c wrapper_secure_file.c wrapper_sysinfo.c
> wrapper_cipher.c wrapper_cipher_base.c
>
> libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o
> wrapperjni.o loggerjni.o
>
> @@ -33,10 +33,10 @@ init:
> if test ! -d .deps; then mkdir .deps; fi
>
> wrapper: $(wrapper_SOURCE)
> - $(CC) $(wrapper_SOURCE) -lm -rdynamic -lc -pthread -o $(BIN)/wrapper
> + $(CC) $(wrapper_SOURCE) -lm -rdynamic -L${LOCALBASE}/lib -liconv -lc
> -pthread -o $(BIN)/wrapper
>
> libwrapper.so: $(libwrapper_so_OBJECTS)
> - $(CC) -shared -rdynamic -lc -pthread $(libwrapper_so_OBJECTS) -o
> $(LIB)/libwrapper.so
> + $(CC) -shared -rdynamic -L${LOCALBASE}/lib -liconv -lc -pthread
> $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
>
> #%.o: %.c
> # $(COMPILE) -c $(DEFS) $<
> Index: java/tanukiwrapper/files/Makefile-openbsd-x86-64.gmake
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/files/Makefile-openbsd-x86-64.gmake,v
> diff -u -p -u -r1.5 Makefile-openbsd-x86-64.gmake
> --- java/tanukiwrapper/files/Makefile-openbsd-x86-64.gmake 4 Nov 2020
> 20:45:00 -0000 1.5
> +++ java/tanukiwrapper/files/Makefile-openbsd-x86-64.gmake 21 Dec 2025
> 19:29:00 -0000
> @@ -1,4 +1,4 @@
> -# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
> +# Copyright (c) 1999, 2025 Tanuki Software, Ltd.
> # http://www.tanukisoftware.com
> # All rights reserved.
> #
> @@ -7,13 +7,13 @@
> # license agreement you entered into with Tanuki Software.
> # http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
>
> -CC = ${CC} -Wall -fPIC -pedantic -DOPENBSD -DJSW64 -I${LOCALBASE}/include
> -L${LOCALBASE}/lib -liconv -DUNICODE -D_UNICODE
> +CC = ${CC} -Wall -pedantic -Wno-strict-prototypes -DOPENBSD -DJSW64 -fPIC
> -I${LOCALBASE}/include -DUNICODE -D_UNICODE
>
> INCLUDE=$(JAVA_HOME)/include
>
> CFLAGS = ${CFLAGS} -I$(INCLUDE) -I$(INCLUDE)/openbsd
>
> -wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c
> property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c
> wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
> +wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c
> wrapper_jvm_launch.c wrapper_unix.c property.c logger.c logger_file.c
> wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
> wrapper_encoding.c wrapper_jvminfo.c wrapper_secure_file.c wrapper_sysinfo.c
> wrapper_cipher.c wrapper_cipher_base.c
>
> libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o
> wrapperjni.o loggerjni.o
>
> @@ -33,10 +33,10 @@ init:
> if test ! -d .deps; then mkdir .deps; fi
>
> wrapper: $(wrapper_SOURCE)
> - $(CC) $(wrapper_SOURCE) -lm -rdynamic -lc -pthread -o $(BIN)/wrapper
> + $(CC) $(wrapper_SOURCE) -lm -rdynamic -L${LOCALBASE}/lib -liconv -lc
> -pthread -o $(BIN)/wrapper
>
> libwrapper.so: $(libwrapper_so_OBJECTS)
> - $(CC) -shared -rdynamic -lc -pthread $(libwrapper_so_OBJECTS) -o
> $(LIB)/libwrapper.so
> + $(CC) -shared -rdynamic -L${LOCALBASE}/lib -liconv -lc -pthread
> $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
>
> #%.o: %.c
> # $(COMPILE) -c $(DEFS) $<
> Index: java/tanukiwrapper/patches/patch-build_xml
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/patches/patch-build_xml,v
> diff -u -p -u -r1.7 patch-build_xml
> --- java/tanukiwrapper/patches/patch-build_xml 8 Mar 2022 00:55:14
> -0000 1.7
> +++ java/tanukiwrapper/patches/patch-build_xml 21 Dec 2025 19:29:00
> -0000
> @@ -1,4 +1,5 @@
> define OpenBSD property
> +Suppress deprecation warnings
>
> Index: build.xml
> --- build.xml.orig
> @@ -13,7 +14,7 @@ Index: build.xml
> <property name="dist.os" value="${os.name}"/>
>
> <!-- Resolve an architecture to use in release names. -->
> -@@ -427,6 +430,7 @@
> +@@ -440,6 +443,7 @@
> <condition property="make.name" value="gmake">
> <or>
> <isset property="is.freebsd"/>
> @@ -21,7 +22,7 @@ Index: build.xml
> <isset property="is.solaris"/>
> </or>
> </condition>
> -@@ -444,6 +448,7 @@
> +@@ -457,6 +461,7 @@
> <or>
> <isset property="is.linux"/>
> <isset property="is.freebsd"/>
> @@ -29,7 +30,16 @@ Index: build.xml
> <isset property="is.solaris"/>
> </or>
> </condition>
> -@@ -1846,6 +1851,10 @@ wrapper.filter.action.999=NONE]]></replacevalue>
> +@@ -633,7 +638,7 @@
> + excludes="testmodule/**/*,module-info.java"
> + destdir="${build.classes}"
> + nativeheaderdir="${build.headers}"
> +- deprecation="on"
> ++ deprecation="off"
> + debug="on"
> + optimize="on"
> + includeantruntime="false"
> +@@ -2105,6 +2110,10 @@ wrapper.filter.action.999=NONE]]></replacevalue>
> <release-delta-extract-platform osname="linux" osarch="armel"
> bits="32" wrapperbinhead="wrapper" wrapperbintail=""
> wrapperlibhead="libwrapper" wrapperlibtail=".so" archivetype="tar.gz"/>
> <release-delta-extract-platform osname="linux" osarch="armhf"
> bits="32" wrapperbinhead="wrapper" wrapperbintail=""
> wrapperlibhead="libwrapper" wrapperlibtail=".so" archivetype="tar.gz"/>
> <release-delta-extract-platform osname="linux" osarch="arm"
> bits="64" wrapperbinhead="wrapper" wrapperbintail=""
> wrapperlibhead="libwrapper" wrapperlibtail=".so" archivetype="tar.gz"/>
> Index: java/tanukiwrapper/patches/patch-default_properties
> ===================================================================
> RCS file: java/tanukiwrapper/patches/patch-default_properties
> diff -N java/tanukiwrapper/patches/patch-default_properties
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ java/tanukiwrapper/patches/patch-default_properties 21 Dec 2025
> 19:29:00 -0000
> @@ -0,0 +1,14 @@
> +Bump up source/target version
> +
> +Index: default.properties
> +--- default.properties.orig
> ++++ default.properties
> +@@ -28,7 +28,7 @@ build.compress = false
> + junit.failonerror = true
> +
> + # Minimum version of Java required to build the Wrapper
> +-javac.target.version=1.4
> ++javac.target.version=1.6
> +
> + # Location of java to build the pre-release
> + javac.dir=E:\\j2sdk1.4.2_19
> Index: java/tanukiwrapper/patches/patch-src_c_wrapper_c
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/patches/patch-src_c_wrapper_c,v
> diff -u -p -u -r1.6 patch-src_c_wrapper_c
> --- java/tanukiwrapper/patches/patch-src_c_wrapper_c 8 Mar 2022 00:55:14
> -0000 1.6
> +++ java/tanukiwrapper/patches/patch-src_c_wrapper_c 21 Dec 2025 19:29:00
> -0000
> @@ -3,7 +3,7 @@ add OpenBSD support
> Index: src/c/wrapper.c
> --- src/c/wrapper.c.orig
> +++ src/c/wrapper.c
> -@@ -105,7 +105,7 @@
> +@@ -107,7 +107,7 @@
> #include <sys/errno.h>
> #include <sys/fcntl.h>
> #elif defined(AIX) || defined(HPUX) || defined(MACOSX)
> @@ -12,7 +12,7 @@ Index: src/c/wrapper.c
> #include <sys/param.h>
> #include <errno.h>
> #else /* LINUX */
> -@@ -5886,7 +5886,7 @@ int wrapperRunCommonInner() {
> +@@ -7417,7 +7417,7 @@ int wrapperRunCommonInner() {
> tz1 = tzname[0];
> tz2 = tzname[1];
> #endif
> @@ -21,7 +21,7 @@ Index: src/c/wrapper.c
> log_printf(WRAPPER_SOURCE_WRAPPER, LEVEL_DEBUG,
> TEXT("Timezone: %s (%s) Offset: %ld, hasDaylight: %d"),
> tz1, tz2, timezone, daylight);
> #else
> -@@ -6561,7 +6561,7 @@ int checkIfBinary(const TCHAR *filename) {
> +@@ -8111,7 +8111,7 @@ int checkIfBinary(const TCHAR *filename) {
> log_printf(WRAPPER_SOURCE_WRAPPER, LEVEL_DEBUG, TEXT("Magic
> number for file %s: 0x%02x%02x%02x%02x"), filename, head[0], head[1],
> head[2], head[3]);
> }
>
> @@ -30,8 +30,8 @@ Index: src/c/wrapper.c
> if (head[1] == 'E' && head[2] == 'L' && head[3] == 'F') {
> return 1; /*ELF */
> #elif defined(AIX)
> -@@ -8282,7 +8282,7 @@ int wrapperBuildJavaCommandArrayInner(TCHAR **strings,
> -
> +@@ -10849,7 +10849,7 @@ static int wrapperBuildJavaAdditionals(TCHAR
> **strings
> + static int wrapperBuildAutoBits(TCHAR **strings, int index) {
> /* See if the auto bits parameter is set. Ignored by all but the
> following platforms. */
>
> -#if /*defined(WIN32) || defined(LINUX) ||*/ defined(HPUX) ||
> defined(MACOSX) || defined(SOLARIS) || defined(FREEBSD)
> @@ -39,7 +39,7 @@ Index: src/c/wrapper.c
>
> if (wrapperData->javaVersion->major < 9) {
> if (getBooleanProperty(properties,
> -@@ -8297,6 +8297,8 @@ int wrapperBuildJavaCommandArrayInner(TCHAR **strings,
> +@@ -10864,6 +10864,8 @@ static int wrapperBuildAutoBits(TCHAR **strings, int
> i
>
> TEXT("wrapper.java.additional.auto_bits.solaris"),
> #elif defined(FREEBSD)
>
> TEXT("wrapper.java.additional.auto_bits.freebsd"),
> Index: java/tanukiwrapper/patches/patch-src_c_wrapper_h
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/patches/patch-src_c_wrapper_h,v
> diff -u -p -u -r1.4 patch-src_c_wrapper_h
> --- java/tanukiwrapper/patches/patch-src_c_wrapper_h 8 Mar 2022 00:55:14
> -0000 1.4
> +++ java/tanukiwrapper/patches/patch-src_c_wrapper_h 21 Dec 2025 19:29:00
> -0000
> @@ -1,18 +1,22 @@
> OpenBSD doesn't support timeb api
>
> ---- src/c/wrapper.h.orig Fri Jul 31 18:19:37 2020
> -+++ src/c/wrapper.h Fri Jul 31 18:21:15 2020
> -@@ -51,7 +51,12 @@
> +Index: src/c/wrapper.h
> +--- src/c/wrapper.h.orig
> ++++ src/c/wrapper.h
> +@@ -52,7 +52,16 @@
> #define DWORD unsigned long
> #endif
>
> --#include <sys/timeb.h>
> ++#ifndef OPENBSD
> + #include <sys/timeb.h>
> ++#else
> +struct timeb {
> + time_t time; /* seconds since the Epoch */
> + unsigned short millitm; /* + milliseconds since the Epoch */
> + short timezone; /* minutes west of UTC */
> + short dstflag; /* DST == non-zero */
> +};
> ++#endif
>
> #include "property.h"
> #include "wrapper_jvminfo.h"
> Index: java/tanukiwrapper/patches/patch-src_c_wrapper_unix_c
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/patches/patch-src_c_wrapper_unix_c,v
> diff -u -p -u -r1.5 patch-src_c_wrapper_unix_c
> --- java/tanukiwrapper/patches/patch-src_c_wrapper_unix_c 8 Mar 2022
> 00:55:14 -0000 1.5
> +++ java/tanukiwrapper/patches/patch-src_c_wrapper_unix_c 21 Dec 2025
> 19:29:00 -0000
> @@ -1,17 +1,20 @@
> OpenBSD doesn't support timeb api
> add SI_ASYNCIO define
>
> ---- src/c/wrapper_unix.c.orig Fri Jul 31 18:22:16 2020
> -+++ src/c/wrapper_unix.c Fri Jul 31 18:23:10 2020
> -@@ -51,7 +51,6 @@
> - #include <pthread.h>
> - #include <pwd.h>
> +Index: src/c/wrapper_unix.c
> +--- src/c/wrapper_unix.c.orig
> ++++ src/c/wrapper_unix.c
> +@@ -56,7 +56,9 @@
> + #include <sys/filio.h> /* for FIONREAD */
> + #endif
> #include <sys/resource.h>
> --#include <sys/timeb.h>
> ++#ifndef OPENBSD
> + #include <sys/timeb.h>
> ++#endif
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <sys/wait.h>
> -@@ -466,8 +465,10 @@ const TCHAR* getSignalCodeDesc(int code) {
> +@@ -506,8 +508,10 @@ const TCHAR* getSignalCodeDesc(int code) {
> return TEXT("mesq state changed");
> #endif
>
> Index: java/tanukiwrapper/pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/java/tanukiwrapper/pkg/PLIST,v
> diff -u -p -u -r1.4 PLIST
> --- java/tanukiwrapper/pkg/PLIST 8 Mar 2022 00:55:14 -0000 1.4
> +++ java/tanukiwrapper/pkg/PLIST 21 Dec 2025 19:29:00 -0000
> @@ -1,5 +1,5 @@
> -lib/tanukuwrapper/
> -@so lib/tanukuwrapper/libwrapper.so
> +lib/tanukiwrapper/
> +@so lib/tanukiwrapper/libwrapper.so
> @bin sbin/tanukiwrapper
> share/java/
> share/java/classes/
> Index: net/i2p/Makefile
> ===================================================================
> RCS file: /cvs/ports/net/i2p/Makefile,v
> diff -u -p -u -r1.26 Makefile
> --- net/i2p/Makefile 6 Nov 2025 20:43:36 -0000 1.26
> +++ net/i2p/Makefile 21 Dec 2025 19:29:00 -0000
> @@ -3,6 +3,7 @@ COMMENT= i2p routing protocol
> V = 2.10.0
> DISTNAME = i2psource_${V}
> PKGNAME = i2p-${V}
> +REVISION = 0
>
> CATEGORIES= net
>
> @@ -21,13 +22,13 @@ WANTLIB += gmp
> SITES = https://files.i2p-projekt.de/${V}/
>
> MODULES= java
> -MODJAVA_VER= 1.8
> +MODJAVA_VER= 17
> MODJAVA_BUILD= ant
> -MODJAVA_BUILD_TARGET_NAME= pkg
> +MODJAVA_BUILD_TARGET_NAME=distclean updater preppkg
>
> BUILD_DEPENDS= devel/gettext,-tools
> RUN_DEPENDS= devel/gettext,-runtime \
> - java/tanukiwrapper
> + java/tanukiwrapper>=3.6.3
> LIB_DEPENDS= devel/gmp
>
> .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
> Index: net/i2p/patches/patch-core_java_src_net_i2p_util_NativeBigInteger_java
> ===================================================================
> RCS file:
> net/i2p/patches/patch-core_java_src_net_i2p_util_NativeBigInteger_java
> diff -N net/i2p/patches/patch-core_java_src_net_i2p_util_NativeBigInteger_java
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ net/i2p/patches/patch-core_java_src_net_i2p_util_NativeBigInteger_java
> 21 Dec 2025 19:29:00 -0000
> @@ -0,0 +1,14 @@
> +Dont try to read /proc/cpuinfo and set opt to ARMV8 on aarch64
> +
> +Index: core/java/src/net/i2p/util/NativeBigInteger.java
> +--- core/java/src/net/i2p/util/NativeBigInteger.java.orig
> ++++ core/java/src/net/i2p/util/NativeBigInteger.java
> +@@ -441,6 +441,8 @@ public class NativeBigInteger extends BigInteger {
> + } else if (_isArm) {
> + if (_isWin)
> + return null;
> ++ if (_isOpenbsd && _is64)
> ++ return JBIGI_OPTIMIZATION_ARM_ARMV8;
> + Map<String, String> cpuinfo = getCPUInfo();
> + String implementer = cpuinfo.get("cpu implementer");
> + String part = cpuinfo.get("cpu part");
> Index: net/i2p/patches/patch-installer_resources_i2prouter
> ===================================================================
> RCS file: /cvs/ports/net/i2p/patches/patch-installer_resources_i2prouter,v
> diff -u -p -u -r1.2 patch-installer_resources_i2prouter
> --- net/i2p/patches/patch-installer_resources_i2prouter 8 Mar 2022
> 00:56:24 -0000 1.2
> +++ net/i2p/patches/patch-installer_resources_i2prouter 21 Dec 2025
> 19:29:00 -0000
> @@ -3,8 +3,9 @@ set proper path for log and temp dirs
> remove link to internal wrapper - doesn't work
> set link to tanukiwrapper
>
> ---- installer/resources/i2prouter.orig Mon May 25 18:07:52 2020
> -+++ installer/resources/i2prouter Sat Aug 1 01:12:28 2020
> +Index: installer/resources/i2prouter
> +--- installer/resources/i2prouter.orig
> ++++ installer/resources/i2prouter
> @@ -28,7 +28,7 @@
> # Note that (percent)INSTALL_PATH, (percent)USER_HOME, and
> (percent)SYSTEM_java_io_tmpdir
> # should have been replaced by the izpack installer.
> @@ -35,20 +36,3 @@ set link to tanukiwrapper
> WRAPPER_CONF="$I2P/wrapper.config"
>
> # Priority at which to run the wrapper. See "man nice" for valid
> priorities.
> -@@ -548,14 +548,14 @@ outputFile() {
> - }
> -
> - setup_openbsd() {
> -- if ! pkg_info -qe 'java-tanukiwrapper->=3.5.19'; then
> -+ if ! pkg_info -qe 'tanukiwrapper->=3.5.19'; then
> - echo "Java wrapper not found. Either:"
> - echo "- install the package java-tanukiwrapper then start I2P
> again; or"
> - echo "- start I2P with $I2P/runplain.sh"
> - exit 1
> - else
> - # Wrapper package is installed so let's try copying the bits into
> the proper places
> -- pkg_path=$(pkg_info -v java-tanukiwrapper | awk '/^@cwd/{print
> $2}')
> -+ pkg_path=$(pkg_info -v tanukiwrapper | awk '/^@cwd/{print $2}')
> - if [ -z $pkg_path ]; then
> - # Fallback, but we shouldn't end up here
> - echo "Unable to locate ${WRAPPER_CMD} in ${I2P}!"
> Index: net/i2p/patches/patch-installer_resources_wrapper_config
> ===================================================================
> RCS file:
> /cvs/ports/net/i2p/patches/patch-installer_resources_wrapper_config,v
> diff -u -p -u -r1.3 patch-installer_resources_wrapper_config
> --- net/i2p/patches/patch-installer_resources_wrapper_config 6 Feb 2025
> 16:46:04 -0000 1.3
> +++ net/i2p/patches/patch-installer_resources_wrapper_config 21 Dec 2025
> 19:29:00 -0000
> @@ -2,6 +2,7 @@ path to java binary
> add proper classpaths for i2p and wrapper
> add library path for wrapper
> set runtime dirs
> +remove stripquotes for newer wrapper
>
> Index: installer/resources/wrapper.config
> --- installer/resources/wrapper.config.orig
> @@ -15,7 +16,7 @@ Index: installer/resources/wrapper.confi
> # Specify a specific java binary:
> #set.JAVA_HOME=/java/path
> #wrapper.java.command=%JAVA_HOME%/bin/java
> -@@ -60,13 +60,13 @@ wrapper.java.mainclass=org.tanukisoftware.wrapper.Wrap
> +@@ -60,22 +60,23 @@ wrapper.java.mainclass=org.tanukisoftware.wrapper.Wrap
> # classes, or all the classes of i2p.jar, are in a different directory).
> # Be sure there are no other duplicate classes.
> #
> @@ -28,24 +29,37 @@ Index: installer/resources/wrapper.confi
> # Java Library Path (location of Wrapper.DLL or libwrapper.so)
> -wrapper.java.library.path.1=$INSTALL_PATH
> -wrapper.java.library.path.2=$INSTALL_PATH/lib
> -+wrapper.java.library.path.1=${LOCALBASE}/lib/tanukuwrapper
> ++wrapper.java.library.path.1=${LOCALBASE}/lib/tanukiwrapper
> +wrapper.java.library.path.2=${LOCALBASE}/share/i2p/lib
>
> # Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit
> mode.
> wrapper.java.additional.auto_bits=FALSE
> -@@ -74,8 +74,14 @@ wrapper.java.additional.auto_bits=FALSE
> +
> # Java Additional Parameters
> - # Numbers must be consecutive (except for stripquotes)
> +-# Numbers must be consecutive (except for stripquotes)
> wrapper.java.additional.1=-DloggerFilenameOverride=logs/[email protected]
> -wrapper.java.additional.2=-Di2p.dir.base="$INSTALL_PATH"
> -+wrapper.java.additional.2=-Di2p.dir.base="${LOCALBASE}/share/i2p"
> - wrapper.java.additional.2.stripquotes=TRUE
> -+wrapper.java.additional.3=-Di2p.dir.app="${DB_DIR}"
> -+wrapper.java.additional.3.stripquotes=TRUE
> -+wrapper.java.additional.4=-Di2p.dir.config="${DB_DIR}"
> -+wrapper.java.additional.4.stripquotes=TRUE
> -+wrapper.java.additional.5=-Di2p.dir.router="${DB_DIR}"
> -+wrapper.java.additional.5.stripquotes=TRUE
> +-wrapper.java.additional.2.stripquotes=TRUE
> ++wrapper.java.additional.2=-Di2p.dir.base=${LOCALBASE}/share/i2p
> ++wrapper.java.additional.3=-Di2p.dir.app=${DB_DIR}
> ++wrapper.java.additional.4=-Di2p.dir.config=${DB_DIR}
> ++wrapper.java.additional.5=-Di2p.dir.router=${DB_DIR}
>
> # Suppress JNI warning in JRE 24+, and eventual restriction
> # See https://openjdk.org/jeps/472
> +@@ -106,12 +107,9 @@ wrapper.java.additional.2.stripquotes=TRUE
> + #
> wrapper.java.additional.8=-Dorg.mortbay.util.FileResource.checkAliases=false
> + # PORTABLE installation:
> + # uncomment the following
> +-#wrapper.java.additional.3=-Di2p.dir.pid="$INSTALL_PATH"
> +-#wrapper.java.additional.3.stripquotes=TRUE
> +-#wrapper.java.additional.4=-Di2p.dir.temp="$INSTALL_PATH"
> +-#wrapper.java.additional.4.stripquotes=TRUE
> +-#wrapper.java.additional.5=-Di2p.dir.config="$INSTALL_PATH"
> +-#wrapper.java.additional.5.stripquotes=TRUE
> ++#wrapper.java.additional.3=-Di2p.dir.pid=$INSTALL_PATH
> ++#wrapper.java.additional.4=-Di2p.dir.temp=$INSTALL_PATH
> ++#wrapper.java.additional.5=-Di2p.dir.config=$INSTALL_PATH
> + #
> + # Uncomment this for better performance.
> + # If it doesn't work, server mode is not available in your JVM.