You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-misc/zerotier/zerotier-1.10.6.ebuild

292 lines
5.8 KiB

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CARGO_OPTIONAL=1
CRATES="
android_system_properties@0.1.5
ansi_term@0.12.1
atty@0.2.14
autocfg@1.1.0
base64@0.13.1
base64@0.21.0
bitflags@1.3.2
block-buffer@0.10.3
bumpalo@3.12.0
bytes@1.4.0
cbindgen@0.20.0
cc@1.0.79
cfg-if@1.0.0
chrono@0.4.23
clap@2.34.0
codespan-reporting@0.11.1
core-foundation-sys@0.8.3
core-foundation@0.9.3
cpufeatures@0.2.5
crypto-common@0.1.6
cxx-build@1.0.91
cxx@1.0.91
cxxbridge-flags@1.0.91
cxxbridge-macro@1.0.91
darling@0.13.4
darling_core@0.13.4
darling_macro@0.13.4
digest@0.10.6
either@1.8.1
encoding_rs@0.8.32
errno-dragonfly@0.1.2
errno@0.2.8
fastrand@1.9.0
fnv@1.0.7
foreign-types-shared@0.1.1
foreign-types@0.3.2
form_urlencoded@1.1.0
futures-channel@0.3.26
futures-core@0.3.26
futures-io@0.3.26
futures-sink@0.3.26
futures-task@0.3.26
futures-util@0.3.26
generic-array@0.14.6
getrandom@0.2.8
h2@0.3.16
hashbrown@0.12.3
heck@0.3.3
hermit-abi@0.1.19
hermit-abi@0.2.6
hmac@0.12.1
http-body@0.4.5
http@0.2.9
httparse@1.8.0
httpdate@1.0.2
hyper-tls@0.5.0
hyper@0.14.24
iana-time-zone-haiku@0.1.1
iana-time-zone@0.1.53
ident_case@1.0.1
idna@0.3.0
indexmap@1.9.2
instant@0.1.12
io-lifetimes@1.0.5
ipnet@2.7.1
itertools@0.10.5
itoa@1.0.5
js-sys@0.3.61
lazy_static@1.4.0
libc@0.2.139
link-cplusplus@1.0.8
linux-raw-sys@0.1.4
log@0.4.17
memchr@2.5.0
mime@0.3.16
mio@0.8.6
native-tls@0.2.11
num-bigint@0.4.3
num-integer@0.1.45
num-traits@0.2.15
num_cpus@1.15.0
oauth2@4.3.0
once_cell@1.17.1
openidconnect@2.5.0
openssl-macros@0.1.0
openssl-probe@0.1.5
openssl-sys@0.9.80
openssl@0.10.45
ordered-float@2.10.0
percent-encoding@2.2.0
pin-project-lite@0.2.9
pin-utils@0.1.0
pkg-config@0.3.26
ppv-lite86@0.2.17
proc-macro2@1.0.51
quote@1.0.23
rand@0.8.5
rand_chacha@0.3.1
rand_core@0.6.4
redox_syscall@0.2.16
reqwest@0.11.14
ring@0.16.20
rustix@0.36.8
ryu@1.0.12
schannel@0.1.21
scratch@1.0.3
security-framework-sys@2.8.0
security-framework@2.8.2
serde-value@0.7.0
serde@1.0.152
serde_derive@1.0.152
serde_json@1.0.93
serde_path_to_error@0.1.9
serde_plain@1.0.1
serde_urlencoded@0.7.1
serde_with@1.14.0
serde_with_macros@1.5.2
sha2@0.10.6
slab@0.4.8
socket2@0.4.7
spin@0.5.2
strsim@0.10.0
strsim@0.8.0
subtle@2.4.1
syn@1.0.109
tempfile@3.4.0
termcolor@1.2.0
textwrap@0.11.0
thiserror-impl@1.0.38
thiserror@1.0.38
time-core@0.1.0
time-macros@0.2.8
time@0.3.20
tinyvec@1.6.0
tinyvec_macros@0.1.1
tokio-native-tls@0.3.1
tokio-util@0.7.7
tokio@1.26.0
toml@0.5.11
tower-service@0.3.2
tracing-core@0.1.30
tracing@0.1.37
try-lock@0.2.4
typenum@1.16.0
unicode-bidi@0.3.10
unicode-ident@1.0.6
unicode-normalization@0.1.22
unicode-segmentation@1.10.1
unicode-width@0.1.10
untrusted@0.7.1
url@2.3.1
vcpkg@0.2.15
vec_map@0.8.2
version_check@0.9.4
want@0.3.0
wasi@0.11.0+wasi-snapshot-preview1
wasm-bindgen-backend@0.2.84
wasm-bindgen-futures@0.4.34
wasm-bindgen-macro-support@0.2.84
wasm-bindgen-macro@0.2.84
wasm-bindgen-shared@0.2.84
wasm-bindgen@0.2.84
web-sys@0.3.61
winapi-i686-pc-windows-gnu@0.4.0
winapi-util@0.1.5
winapi-x86_64-pc-windows-gnu@0.4.0
winapi@0.3.9
windows-sys@0.42.0
windows-sys@0.45.0
windows-targets@0.42.1
windows_aarch64_gnullvm@0.42.1
windows_aarch64_msvc@0.42.1
windows_i686_gnu@0.42.1
windows_i686_msvc@0.42.1
windows_x86_64_gnu@0.42.1
windows_x86_64_gnullvm@0.42.1
windows_x86_64_msvc@0.42.1
winreg@0.10.1
"
declare -A GIT_CRATES=(
[jwt]='https://github.com/glimberg/rust-jwt;61a9291fdeec747c6edf14f4fa0caf235136c168;rust-jwt-%commit%'
)
inherit cargo flag-o-matic 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/${PV}.tar.gz -> ${P}.tar.gz
sso? (
${CARGO_CRATE_URIS}
)
"
S="${WORKDIR}"/ZeroTierOne-${PV}
LICENSE="BUSL-1.1"
# Crate licenses
LICENSE+=" sso? ( Apache-2.0 BSD ISC MIT MPL-2.0 Unicode-DFS-2016 )"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
IUSE="cpu_flags_arm_neon debug sso"
RDEPEND="
dev-libs/openssl:=
net-libs/libnatpmp
>=net-libs/miniupnpc-2:=
"
DEPEND="${RDEPEND}"
BDEPEND="
sso? (
virtual/rust
)
"
PATCHES=(
"${FILESDIR}"/${PN}-1.10.1-respect-ldflags.patch
"${FILESDIR}"/${PN}-1.10.1-add-armv7a-support.patch
)
DOCS=( README.md AUTHORS.md )
src_unpack() {
unpack ${P}.tar.gz
use sso && cargo_src_unpack
}
src_prepare() {
default
#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
sed -i \
-e '/ifeq ($(ZT_SSO_SUPPORTED)/,/endif/ { /cargo build/d }' \
-e '/install:/,/^$/ { /man[0-9]/d }' \
make-linux.mk || die
}
src_configure() {
tc-export CXX CC
# Several assembler files without GNU-stack markings
# https://github.com/zerotier/ZeroTierOne/issues/1179
append-ldflags -Wl,-z,noexecstack
use cpu_flags_arm_neon || export ZT_DISABLE_NEON=1
use sso && cargo_src_configure
}
src_compile() {
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 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}
}