commit: c54e5325b0369da14991e21bfe94a8226c257f06 Author: Yuan Liao <liaoyuan <AT> gmail <DOT> com> AuthorDate: Sun Jan 23 18:21:33 2022 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Fri Jan 28 07:53:30 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c54e5325
net-p2p/freenet: Fix build and runtime errors with JNA 5.x This package uses JNA's Pointer.SIZE API, which has been removed since JNA 5.0.0. A replacement of the API is Native.POINTER_SIZE, which is present in both JNA 4.x and 5.x. Since JNA 5.0.0, the default JNI library loading mechanism has been changed, which would cause this package to crash upon launch, unless system property 'jna.nosys' is set to 'false', which restores the 4.x library loading behavior compatible with this package. Closes: https://bugs.gentoo.org/830847 Signed-off-by: Yuan Liao <liaoyuan <AT> gmail.com> Closes: https://github.com/gentoo/gentoo/pull/23933 Signed-off-by: Sam James <sam <AT> gentoo.org> .../files/0.7.5_p1491-update-for-jna-5.x.patch | 31 ++++ .../freenet/files/freenet-0.7.5_p1491-wrapper.conf | 30 ++++ net-p2p/freenet/freenet-0.7.5_p1488-r2.ebuild | 169 +++++++++++++++++++++ net-p2p/freenet/freenet-0.7.5_p1491-r1.ebuild | 165 ++++++++++++++++++++ 4 files changed, 395 insertions(+) diff --git a/net-p2p/freenet/files/0.7.5_p1491-update-for-jna-5.x.patch b/net-p2p/freenet/files/0.7.5_p1491-update-for-jna-5.x.patch new file mode 100644 index 000000000000..788a48040b17 --- /dev/null +++ b/net-p2p/freenet/files/0.7.5_p1491-update-for-jna-5.x.patch @@ -0,0 +1,31 @@ +From 830b4bb3948bd69fbd9b10001940f1775051114a Mon Sep 17 00:00:00 2001 +From: Yuan Liao <[email protected]> +Date: Sun, 23 Jan 2022 10:09:17 -0800 +Subject: [PATCH] Replace Pointer.SIZE with Native.POINTER_SIZE for JNA 5.x + +This patch is backward compatible with JNA 4.x because +Native.POINTER_SIZE is present in both 4.x and 5.x. + +Bug: https://github.com/kaitoy/pcap4j/issues/191 +Bug: https://bugs.gentoo.org/830847 +Signed-off-by: Yuan Liao <[email protected]> +--- + src/freenet/io/comm/UdpSocketHandler.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/freenet/io/comm/UdpSocketHandler.java b/src/freenet/io/comm/UdpSocketHandler.java +index 0cd975f16..c004613a9 100644 +--- a/src/freenet/io/comm/UdpSocketHandler.java ++++ b/src/freenet/io/comm/UdpSocketHandler.java +@@ -120,7 +120,7 @@ public class UdpSocketHandler implements PrioRunnable, PacketSocketHandler, Port + return false; + int ret = -1; + try { +- ret = socketOptionsHolder.setsockopt(fd, SOCKET_level.IPPROTO_IPV6.linux, p.option_name.linux, new IntByReference(p.linux).getPointer(), Pointer.SIZE); ++ ret = socketOptionsHolder.setsockopt(fd, SOCKET_level.IPPROTO_IPV6.linux, p.option_name.linux, new IntByReference(p.linux).getPointer(), Native.POINTER_SIZE); + } catch(Exception e) { Logger.normal(UdpSocketHandler.class, e.getMessage(),e); } //if it fails that's fine + return (ret == 0 ? true : false); + } +-- +2.34.1 + diff --git a/net-p2p/freenet/files/freenet-0.7.5_p1491-wrapper.conf b/net-p2p/freenet/files/freenet-0.7.5_p1491-wrapper.conf new file mode 100644 index 000000000000..61bbf6f40bfb --- /dev/null +++ b/net-p2p/freenet/files/freenet-0.7.5_p1491-wrapper.conf @@ -0,0 +1,30 @@ +wrapper.java.command=java +wrapper.working.dir=/var/freenet/ +wrapper.java.mainclass=freenet.node.NodeStarter +wrapper.java.library.path.1=/usr/lib +wrapper.java.initmemory=60 +wrapper.java.maxmemory=1024 +wrapper.java.additional.1=-Dnetworkaddress.cache.ttl=0 +wrapper.java.additional.2=-Dnetworkaddress.cache.negative.ttl=0 +wrapper.java.additional.3=-enableassertions:freenet +# You might want to set the following line if you have changed java.maxmemory +wrapper.java.additional.4=-XX:MaxPermSize=1024M +# Required since JNA 5.0.0, which changed the default JNI library search path +# https://github.com/java-native-access/jna/issues/384 +wrapper.java.additional.5=-Djna.nosys=false + +wrapper.app.parameter.1=freenet.ini +wrapper.console.format=PM +wrapper.console.loglevel=INFO +wrapper.logfile=wrapper.log +wrapper.logfile.format=LPTM +wrapper.logfile.loglevel=INFO +wrapper.logfile.maxsize=2M +wrapper.logfile.maxfiles=3 +wrapper.syslog.loglevel=NONE +wrapper.console.title=Freenet 0.7 +wrapper.jvm_exit.timeout=120 +wrapper.restart.reload_configuration=TRUE +wrapper.filter.trigger.1=java.lang.OutOfMemoryError +wrapper.filter.action.1=RESTART + diff --git a/net-p2p/freenet/freenet-0.7.5_p1488-r2.ebuild b/net-p2p/freenet/freenet-0.7.5_p1488-r2.ebuild new file mode 100644 index 000000000000..8b2cb5f7eea2 --- /dev/null +++ b/net-p2p/freenet/freenet-0.7.5_p1488-r2.ebuild @@ -0,0 +1,169 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +JAVA_PKG_IUSE="doc source" + +inherit epatch java-pkg-2 java-ant-2 systemd + +DESCRIPTION="An encrypted network without censorship" +HOMEPAGE="https://freenetproject.org/" +# https://github.com/${PN}/seedrefs/archive/build0${PV#*p}.zip -> seednodes-${PV}.zip +SRC_URI=" + https://github.com/${PN}/fred/archive/build0${PV#*p}.zip -> ${P}.zip + https://github.com/${PN}/seedrefs/archive/build01480.zip -> seednodes-0.7.5_p1480.zip + mirror://gentoo/freenet-ant-1.7.1.jar" + +LICENSE="GPL-2+ GPL-2 MIT BSD-2 Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+nss test" + +CDEPEND="dev-java/bcprov:0 + dev-java/commons-compress:0 + dev-java/fec:0 + dev-java/java-service-wrapper:0 + dev-java/jbitcollider-core:0 + dev-java/jna:4 + dev-java/lzma:0 + dev-java/lzmajio:0 + dev-java/mersennetwister:0 + nss? ( dev-libs/nss )" + +DEPEND=" + app-arch/unzip + >=virtual/jdk-1.8 + ${CDEPEND} + test? ( + dev-java/junit:0 + dev-java/ant-junit:0 + ) + dev-java/ant-core:0" + +RDEPEND=" + >=virtual/jre-1.8 + net-libs/nativebiginteger:0 + ${CDEPEND} + acct-user/freenet + acct-group/freenet" + +PDEPEND="net-libs/NativeThread:0" + +JAVA_PKG_BSFIX_NAME+=" build-clean.xml" +JAVA_ANT_REWRITE_CLASSPATH="yes" +JAVA_ANT_CLASSPATH_TAGS+=" javadoc" +JAVA_ANT_ENCODING="utf8" + +EANT_BUILD_TARGET="package" +EANT_TEST_TARGET="unit" +EANT_BUILD_XML="build-clean.xml" +EANT_GENTOO_CLASSPATH="bcprov,commons-compress,fec,java-service-wrapper,jbitcollider-core,jna-4,lzma,lzmajio,mersennetwister" +EANT_EXTRA_ARGS="-Dsuppress.gjs=true -Dlib.contrib.present=true -Dlib.bouncycastle.present=true -Dlib.junit.present=true -Dtest.skip=true" + +S="${WORKDIR}/fred-build0${PV#*p}" + +RESTRICT="test" # they're broken in the last release. + +MY_PATCHES=( + "${FILESDIR}"/0.7.5_p1491-update-for-jna-5.x.patch + "${FILESDIR}"/0.7.5_p1483-ext.patch + "${FILESDIR}/"0.7.5_p1475-remove-git.patch +) + +pkg_setup() { + has_version dev-java/icedtea[cacao] && { + ewarn "dev-java/icedtea was built with cacao USE flag." + ewarn "freenet may compile with it, but it will refuse to run." + ewarn "Please remerge dev-java/icedtea without cacao USE flag," + ewarn "if you plan to use it for running freenet." + } + java-pkg-2_pkg_setup +} + +src_unpack() { +# unpack ${P}.zip seednodes-${PV}.zip + unpack ${P}.zip seednodes-0.7.5_p1480.zip +} + +src_prepare() { +# cat "${WORKDIR}"/seedrefs-build0${PV#*p}/* > "${S}"/seednodes.fref + cat "${WORKDIR}"/seedrefs-build01480/* > "${S}"/seednodes.fref + cp "${FILESDIR}"/freenet-0.7.5_p1491-wrapper.conf freenet-wrapper.conf || die + cp "${FILESDIR}"/run.sh-20090501 run.sh || die + cp "${FILESDIR}"/build-clean.xml build-clean.xml || die + cp "${FILESDIR}"/build.properties build.properties || die + + epatch "${MY_PATCHES[@]}" + + sed -i -e "s:=/usr/lib:=/usr/$(get_libdir):g" \ + freenet-wrapper.conf || die "sed failed" + + echo "wrapper.java.classpath.1=/usr/share/freenet/lib/freenet.jar" >> freenet-wrapper.conf || die + if use nss; then + echo "wrapper.java.additional.6=-Dfreenet.jce.use.NSS=true" >> freenet-wrapper.conf || die + fi + local i=2 pkg jars jar + local ifs_original=${IFS} + IFS="," + for pkg in ${EANT_GENTOO_CLASSPATH} ; do + jars="$(java-pkg_getjars ${pkg})" + for jar in ${jars} ; do + echo "wrapper.java.classpath.$((i++))=${jar}" >> freenet-wrapper.conf || die + done + done + IFS=${ifs_original} + echo "wrapper.java.classpath.$((i++))=/usr/share/freenet/lib/ant.jar" >> freenet-wrapper.conf || die + echo "wrapper.java.library.path.2=/usr/$(get_libdir)/java-service-wrapper" >> freenet-wrapper.conf || die + echo "wrapper.java.library.path.3=/usr/$(get_libdir)/jna-4" >> freenet-wrapper.conf || die + + cp "${DISTDIR}"/freenet-ant-1.7.1.jar lib/ant.jar || die + eapply_user +} + +EANT_TEST_EXTRA_ARGS="-Dtest.skip=false" + +src_test() { + java-pkg-2_src_test +} + +src_install() { + java-pkg_dojar dist/freenet.jar + java-pkg_newjar "${DISTDIR}"/freenet-ant-1.7.1.jar ant.jar + + if has_version =sys-apps/baselayout-2*; then + doinitd "${FILESDIR}"/freenet + else + newinitd "${FILESDIR}"/freenet.old freenet + fi + + systemd_dounit "${FILESDIR}"/freenet.service + + dodoc AUTHORS + newdoc README.md README + insinto /etc + doins freenet-wrapper.conf + insinto /var/freenet + doins run.sh seednodes.fref + fperms +x /var/freenet/run.sh + use doc && java-pkg_dojavadoc javadoc + use source && java-pkg_dosrc src +} + +pkg_postinst() { + elog " " + elog "1. Start freenet with /etc/init.d/freenet start." + elog "2. Open localhost:8888 in your browser for the web interface." + #workaround for previously existing freenet user + [[ $(stat --format="%U" /var/freenet) == "freenet" ]] || chown \ + freenet:freenet /var/freenet +} + +pkg_postrm() { + if ! [[ -e /usr/share/freenet/lib/freenet.jar ]] ; then + elog " " + elog "If you dont want to use freenet any more" + elog "and dont want to keep your identity/other stuff" + elog "remember to do 'rm -rf /var/freenet' to remove everything" + fi +} diff --git a/net-p2p/freenet/freenet-0.7.5_p1491-r1.ebuild b/net-p2p/freenet/freenet-0.7.5_p1491-r1.ebuild new file mode 100644 index 000000000000..a7d25aeca420 --- /dev/null +++ b/net-p2p/freenet/freenet-0.7.5_p1491-r1.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +JAVA_PKG_IUSE="doc source" + +inherit java-pkg-2 java-ant-2 systemd + +DESCRIPTION="An encrypted network without censorship" +HOMEPAGE="https://freenetproject.org/" +# https://github.com/${PN}/seedrefs/archive/build0${PV#*p}.zip -> seednodes-${PV}.zip +SRC_URI=" + https://github.com/${PN}/fred/archive/build0${PV#*p}.zip -> ${P}.zip + https://github.com/${PN}/seedrefs/archive/build01480.zip -> seednodes-0.7.5_p1480.zip + mirror://gentoo/freenet-ant-1.7.1.jar" + +LICENSE="GPL-2+ GPL-2 MIT BSD-2 Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+nss test" + +CDEPEND="dev-java/bcprov:0 + dev-java/commons-compress:0 + dev-java/fec:0 + dev-java/java-service-wrapper:0 + dev-java/jbitcollider-core:0 + dev-java/jna:4 + dev-java/lzma:0 + dev-java/lzmajio:0 + dev-java/mersennetwister:0 + nss? ( dev-libs/nss )" + +DEPEND=" + app-arch/unzip + >=virtual/jdk-1.8 + ${CDEPEND} + test? ( + dev-java/junit:0 + dev-java/ant-junit:0 + ) + dev-java/ant-core:0" + +RDEPEND=" + >=virtual/jre-1.8 + net-libs/nativebiginteger:0 + ${CDEPEND} + acct-user/freenet + acct-group/freenet" + +PDEPEND="net-libs/NativeThread:0" + +JAVA_PKG_BSFIX_NAME+=" build-clean.xml" +JAVA_ANT_REWRITE_CLASSPATH="yes" +JAVA_ANT_CLASSPATH_TAGS+=" javadoc" +JAVA_ANT_ENCODING="utf8" + +EANT_BUILD_TARGET="package" +EANT_TEST_TARGET="unit" +EANT_BUILD_XML="build-clean.xml" +EANT_GENTOO_CLASSPATH="bcprov,commons-compress,fec,java-service-wrapper,jbitcollider-core,jna-4,lzma,lzmajio,mersennetwister" +EANT_EXTRA_ARGS="-Dsuppress.gjs=true -Dlib.contrib.present=true -Dlib.bouncycastle.present=true -Dlib.junit.present=true -Dtest.skip=true" + +S="${WORKDIR}/fred-build0${PV#*p}" + +RESTRICT="test" # they're broken in the last release. + +pkg_setup() { + has_version dev-java/icedtea[cacao] && { + ewarn "dev-java/icedtea was built with cacao USE flag." + ewarn "freenet may compile with it, but it will refuse to run." + ewarn "Please remerge dev-java/icedtea without cacao USE flag," + ewarn "if you plan to use it for running freenet." + } + java-pkg-2_pkg_setup +} + +src_unpack() { +# unpack ${P}.zip seednodes-${PV}.zip + unpack ${P}.zip seednodes-0.7.5_p1480.zip +} + +src_prepare() { +# cat "${WORKDIR}"/seedrefs-build0${PV#*p}/* > "${S}"/seednodes.fref + cat "${WORKDIR}"/seedrefs-build01480/* > "${S}"/seednodes.fref + cp "${FILESDIR}"/freenet-0.7.5_p1491-wrapper.conf freenet-wrapper.conf || die + cp "${FILESDIR}"/run.sh-20090501 run.sh || die + cp "${FILESDIR}"/build-clean.xml build-clean.xml || die + cp "${FILESDIR}"/build.properties build.properties || die + + eapply -p1 "${FILESDIR}/"0.7.5_p1491-update-for-jna-5.x.patch + eapply -p0 "${FILESDIR}"/0.7.5_p1483-ext.patch + eapply -p1 "${FILESDIR}/"0.7.5_p1475-remove-git.patch + + sed -i -e "s:=/usr/lib:=/usr/$(get_libdir):g" \ + freenet-wrapper.conf || die "sed failed" + + echo "wrapper.java.classpath.1=/usr/share/freenet/lib/freenet.jar" >> freenet-wrapper.conf || die + if use nss; then + echo "wrapper.java.additional.6=-Dfreenet.jce.use.NSS=true" >> freenet-wrapper.conf || die + fi + local i=2 pkg jars jar + local ifs_original=${IFS} + IFS="," + for pkg in ${EANT_GENTOO_CLASSPATH} ; do + jars="$(java-pkg_getjars ${pkg})" + for jar in ${jars} ; do + echo "wrapper.java.classpath.$((i++))=${jar}" >> freenet-wrapper.conf || die + done + done + IFS=${ifs_original} + echo "wrapper.java.classpath.$((i++))=/usr/share/freenet/lib/ant.jar" >> freenet-wrapper.conf || die + echo "wrapper.java.library.path.2=/usr/$(get_libdir)/java-service-wrapper" >> freenet-wrapper.conf || die + echo "wrapper.java.library.path.3=/usr/$(get_libdir)/jna-4" >> freenet-wrapper.conf || die + + cp "${DISTDIR}"/freenet-ant-1.7.1.jar lib/ant.jar || die + eapply_user +} + +EANT_TEST_EXTRA_ARGS="-Dtest.skip=false" + +src_test() { + java-pkg-2_src_test +} + +src_install() { + java-pkg_dojar dist/freenet.jar + java-pkg_newjar "${DISTDIR}"/freenet-ant-1.7.1.jar ant.jar + + if has_version =sys-apps/baselayout-2*; then + doinitd "${FILESDIR}"/freenet + else + newinitd "${FILESDIR}"/freenet.old freenet + fi + + systemd_dounit "${FILESDIR}"/freenet.service + + dodoc AUTHORS + newdoc README.md README + insinto /etc + doins freenet-wrapper.conf + insinto /var/freenet + doins run.sh seednodes.fref + fperms +x /var/freenet/run.sh + use doc && java-pkg_dojavadoc javadoc + use source && java-pkg_dosrc src +} + +pkg_postinst() { + elog " " + elog "1. Start freenet with /etc/init.d/freenet start." + elog "2. Open localhost:8888 in your browser for the web interface." + #workaround for previously existing freenet user + [[ $(stat --format="%U" /var/freenet) == "freenet" ]] || chown \ + freenet:freenet /var/freenet +} + +pkg_postrm() { + if ! [[ -e /usr/share/freenet/lib/freenet.jar ]] ; then + elog " " + elog "If you dont want to use freenet any more" + elog "and dont want to keep your identity/other stuff" + elog "remember to do 'rm -rf /var/freenet' to remove everything" + fi +}
