Index | Thread | Search

From:
Kurt Miller <kurt@intricatesoftware.com>
Subject:
java.port.mk, net/i2p, java/tanukiwrapper: Updates
To:
ian@openbsd.org, pascal@stumpf.co, ports@openbsd.org, sthen@openbsd.org
Date:
Sun, 21 Dec 2025 19:57:30 +0000

Download raw body.

Thread
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

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/log-router-@.txt
 -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.