commit: 4aeb9963854cd2611d5b9c60181e715a76a71e48 Author: Alfred Wingate <parona <AT> protonmail <DOT> com> AuthorDate: Sun Mar 16 13:39:14 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun Mar 16 15:05:27 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4aeb9963
net-misc/zerotier: fix against miniupnpc-2.2.8 Use patch from Arch and remove vendored dependencies to stop them from mixing headers. Bug: https://github.com/zerotier/ZeroTierOne/issues/2332 Signed-off-by: Alfred Wingate <parona <AT> protonmail.com> Signed-off-by: Sam James <sam <AT> gentoo.org> .../files/zerotier-1.14.2-miniupnpc-2.2.8.patch | 65 +++ net-misc/zerotier/zerotier-1.14.2-r2.ebuild | 493 +++++++++++++++++++++ 2 files changed, 558 insertions(+) diff --git a/net-misc/zerotier/files/zerotier-1.14.2-miniupnpc-2.2.8.patch b/net-misc/zerotier/files/zerotier-1.14.2-miniupnpc-2.2.8.patch new file mode 100644 index 000000000000..c1cfa412ba18 --- /dev/null +++ b/net-misc/zerotier/files/zerotier-1.14.2-miniupnpc-2.2.8.patch @@ -0,0 +1,65 @@ +https://github.com/zerotier/ZeroTierOne/issues/2332 +https://gitlab.archlinux.org/archlinux/packaging/packages/zerotier-one/-/commit/1d040aee9a4cfecdcc747cb42f92a1420a42a3f4 + +From ab00e10bfac636c97fc608608745f18889f28410 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Tue, 5 Nov 2024 16:06:06 +0100 +Subject: [PATCH 1/2] shrink variable size + +This is what upstream miniupnpc uses... +--- a/osdep/PortMapper.cpp ++++ b/osdep/PortMapper.cpp +@@ -202,7 +202,7 @@ public: + // UPnP mode + // --------------------------------------------------------------------- + if (mode == 1) { +- char lanaddr[4096]; ++ char lanaddr[64]; + char externalip[4096]; // no range checking? so make these buffers larger than any UDP packet a uPnP server could send us as a precaution :P + char inport[16]; + char outport[16]; +-- +2.47.0 + + +From fa0b81d9f9e84e282eea7955a037580be44002f9 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <[email protected]> +Date: Tue, 5 Nov 2024 16:09:35 +0100 +Subject: [PATCH 2/2] add missing function parameter + +This changed with miniupnpc 2.2.8: + +https://github.com/miniupnp/miniupnp/commit/c0a50ce33e3b99ce8a96fd43049bb5b53ffac62f + +Warning: This is not a proper patch suitable for upstream! It assumes the +parameter is always there, which is not true for older versions. +So handle with care! +--- a/osdep/PortMapper.cpp ++++ b/osdep/PortMapper.cpp +@@ -203,6 +203,7 @@ public: + // --------------------------------------------------------------------- + if (mode == 1) { + char lanaddr[64]; ++ char wanaddr[64]; + char externalip[4096]; // no range checking? so make these buffers larger than any UDP packet a uPnP server could send us as a precaution :P + char inport[16]; + char outport[16]; +@@ -224,13 +225,14 @@ public: + #endif + + memset(lanaddr,0,sizeof(lanaddr)); ++ memset(wanaddr,0,sizeof(wanaddr)); + memset(externalip,0,sizeof(externalip)); + memset(&urls,0,sizeof(urls)); + memset(&data,0,sizeof(data)); + OSUtils::ztsnprintf(inport,sizeof(inport),"%d",localPort); + + int foundValidIGD = 0; +- if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) { ++ if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr),wanaddr,sizeof(wanaddr)))&&(lanaddr[0])) { + #ifdef ZT_PORTMAPPER_TRACE + PM_TRACE("PortMapper: UPnP: my LAN IP address: %s" ZT_EOL_S,lanaddr); + #endif +-- +2.47.0 + diff --git a/net-misc/zerotier/zerotier-1.14.2-r2.ebuild b/net-misc/zerotier/zerotier-1.14.2-r2.ebuild new file mode 100644 index 000000000000..e24d9a2fb9d9 --- /dev/null +++ b/net-misc/zerotier/zerotier-1.14.2-r2.ebuild @@ -0,0 +1,493 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=1 + +CRATES=" + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected]+wasi-snapshot-preview1 + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] + [email protected] +" + +declare -A GIT_CRATES=( + [jwt]='https://github.com/glimberg/rust-jwt;61a9291fdeec747c6edf14f4fa0caf235136c168;rust-jwt-%commit%' + [rustfsm]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/fsm' + [rustfsm_procmacro]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/fsm/rustfsm_procmacro' + [rustfsm_trait]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/fsm/rustfsm_trait' + [temporal-client]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/client' + [temporal-sdk-core-api]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/core-api' + [temporal-sdk-core-protos]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/sdk-core-protos' + [temporal-sdk-core]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/core' + [temporal-sdk]='https://github.com/temporalio/sdk-core;730aadcc02767ae630e88f8f8c788a85d6bc81e6;sdk-core-%commit%/sdk' +) + +RUST_OPTIONAL=1 + +inherit cargo systemd toolchain-funcs + +DESCRIPTION="A software-based managed Ethernet switch for planet Earth" +HOMEPAGE="https://www.zerotier.com/" +SRC_URI=" + https://github.com/zerotier/ZeroTierOne/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + sso? ( + ${CARGO_CRATE_URIS} + ) +" +S="${WORKDIR}"/ZeroTierOne-${PV} + +LICENSE="BUSL-1.1" +# Dependent crate licenses +LICENSE+=" sso? ( 0BSD Apache-2.0 BSD ISC MIT MPL-2.0 Unicode-DFS-2016 ZLIB )" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86" +IUSE="cpu_flags_arm_neon debug sso" + +# >=miniupnpnc-2.2.8: https://gitlab.archlinux.org/archlinux/packaging/packages/zerotier-one/-/commit/1d040aee9a4cfecdcc747cb42f92a1420a42a3f4 +RDEPEND=" + dev-libs/openssl:= + net-libs/libnatpmp + >=net-libs/miniupnpc-2.2.8:= +" +DEPEND="${RDEPEND}" +BDEPEND=" + sso? ( + ${RUST_DEPEND} + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.10.1-add-armv7a-support.patch + "${FILESDIR}"/${PN}-1.14.2-miniupnpc-2.2.8.patch +) + +DOCS=( README.md AUTHORS.md ) + +pkg_setup() { + use sso && rust_pkg_setup +} + +src_unpack() { + unpack ${P}.tar.gz + use sso && cargo_src_unpack +} + +src_prepare() { + default + + # Remove vendored code to avoid mixing vendored and system headers + # Otherwise it will hide api breaks at build time such as: + # https://github.com/zerotier/ZeroTierOne/issues/2332 + rm -rf ext/{miniupnpc,libnatpmp} || die + + #1. Dont call cargo, we'll run it with cargo eclass functions + #2. Remove man page compression and install, we'll handle it with ebuild functions + #3. Gentoo generates target specific build dirs now bug #937782 + sed -i \ + -e '/ifeq ($(ZT_SSO_SUPPORTED)/,/endif/ { /cargo build/d }' \ + -e '/install:/,/^$/ { /man[0-9]/d }' \ + -e "s|rustybits/target/$(usex debug debug release)|rustybits/$(cargo_target_dir)|" \ + make-linux.mk || die +} + +src_configure() { + tc-export CXX CC + + use cpu_flags_arm_neon || export ZT_DISABLE_NEON=1 + + use sso && cargo_src_configure +} + +src_compile() { + #TODO: New rusty bit smeeclient isnt built + myemakeargs=( + CXX="${CXX}" + STRIP=: + + # Debug doesnt do more than add preprocessor arguments normally, + # but when rust is used it sets the correct rust directory to link against. + # It would be added by cargo eclass eitherway, so instead of adding REQUIRED_USE + # and patching the makefile its just easier to have it. + ZT_DEBUG="$(usex debug 1 0)" + ZT_SSO_SUPPORTED="$(usex sso 1 0)" + ) + + pushd rustybits/zeroidc > /dev/null || die + use sso && cargo_src_compile + popd > /dev/null || die + + emake "${myemakeargs[@]}" one +} + +src_test() { + emake "${myemakeargs[@]}" selftest + ./zerotier-selftest || die +} + +src_install() { + default + + newinitd "${FILESDIR}/${PN}".init-r1 "${PN}" + systemd_dounit "${FILESDIR}/${PN}".service + + doman doc/zerotier-{cli.1,idtool.1,one.8} +}
