Index | Thread | Search

From:
Pascal Stumpf <pascal@stumpf.co>
Subject:
Re: java.port.mk, net/i2p, java/tanukiwrapper: Updates
To:
Kurt Miller <kurt@intricatesoftware.com>
Cc:
ian@openbsd.org, ports@openbsd.org, sthen@openbsd.org
Date:
Mon, 22 Dec 2025 21:57:15 +0100

Download raw body.

Thread
On Sun, 21 Dec 2025 19:57:30 +0000, 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
> 
> 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?

Reads and works fine.  OK.


> 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.