quiche-0.17.2-r1.ebuild

Download (4.8 KB)

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

CRATES="
${PN}@${PV}
anyhow@1.0.26
ansi_term@0.11.0
aho@corasick-0.7.18
arrayvec@0.7.2
atty@0.2.14
autocfg@1.1.0
backtrace@0.3.37
backtrace@sys-0.1.31
bindgen@0.60.1
bitflags@1.3.2
boring@2.1.0
boring@sys-2.1.0
bstr@0.2.12
bumpalo@3.12.2
byteorder@1.3.4
cast@0.2.3
cc@1.0.79
cexpr@0.6.0
cfg@if-0.1.10
cfg@if-1.0.0
clang@sys-1.6.1
clap@2.33.3
cmake@0.1.50
criterion@0.3.1
criterion@plot-0.4.1
crossbeam@deque-0.7.3
crossbeam@epoch-0.8.2
crossbeam@queue-0.2.1
crossbeam@utils-0.7.2
csv@1.1.3
csv@core-0.1.10
either@1.5.3
darling@0.13.4
darling_core@0.13.4
darling_macro@0.13.4
data@encoding-2.3.3
env_logger@0.8.4
fnv@1.0.7
foreign@types-0.5.0
foreign@types-macros-0.2.3
foreign@types-shared-0.3.1
fuchsia@zircon-0.3.3
fuchsia@zircon-sys-0.3.3
glob@0.3.1
hashbrown@0.12.3
hermit@abi-0.1.19
humantime@2.1.0
ident_case@1.0.1
idna@0.1.5
iovec@0.1.4
itertools@0.8.2
itoa@1.0.6
js@sys-0.3.62
kernel32@sys-0.2.2
lazycell@1.3.0
lazy_static@1.4.0
libc@0.2.144
libloading@0.7.4
libm@0.2.6
log@0.4.17
matches@0.1.10
maybe@uninit-2.0.0
memchr@2.5.0
memoffset@0.5.3
minimal@lexical-0.2.1
mio@0.8.6
miow@0.4.0
net2@0.2.37
nom@7.1.3
num@traits-0.2.15
num_cpus@1.12.0
octets@0.2.0
peeking_take_while@0.1.2
indexmap@1.9.3
once_cell@1.17.1
oorandom@11.1.0
percent@encoding-1.0.1
plotters@0.2.12
proc@macro2-1.0.56
qlog@0.9.0
quote@1.0.27
rayon@1.3.0
rayon@core-1.7.0
regex@1.8.1
regex@automata-0.2.0
regex@syntax-0.7.1
ring@0.16.20
rustc_version@0.2.3
rustc@hash-1.1.0
rustversion@1.0.6
rust_decimal@1.29.1
ryu@1.0.13
same@file-1.0.6
scopeguard@1.1.0
sfv@0.9.3
semver@0.9.0
semver@parser-0.7.0
serde@1.0.162
serde_derive@1.0.162
serde_json@1.0.96
serde_with@1.14.0
serde_with_macros@1.5.2
shlex@1.1.0
slab@0.4.8
smallvec@1.10.0
spin@0.5.2
strsim@0.8.0
strsim@0.10.0
syn@1.0.109
syn@2.0.15
termcolor@1.1.2
textwrap@0.11.0
tinytemplate@1.0.3
tinyvec@1.6.0
tinyvec_macros@0.1.1
unicode@bidi-0.3.13
unicode@ident-1.0.8
unicode@normalization-0.1.22
unicode@width-0.1.10
unicode@xid-0.2.4
unicode@xid-0.2.3
untrusted@0.7.1
url@1.7.2
vec_map@0.8.2
version_check@0.9.4
walkdir@2.3.1
wasm@bindgen-0.2.85
wasm@bindgen-backend-0.2.85
wasm@bindgen-macro-0.2.85
wasm@bindgen-macro-support-0.2.85
wasm@bindgen-shared-0.2.85
wasm@bindgen-webidl-0.2.75
wasi@0.11.0+wasi-snapshot-preview1
web@sys-0.3.62
which@3.1.1
winapi@0.2.8
winapi@0.3.9
winapi@build-0.1.1
winapi@i686-pc-windows-gnu-0.4.0
winapi@util-0.1.5
winapi@x86_64-pc-windows-gnu-0.4.0
windows_aarch64_gnullvm@0.42.2
windows_aarch64_msvc@0.42.2
windows_i686_gnu@0.42.2
windows_i686_msvc@0.42.2
windows_x86_64_gnu@0.42.2
windows_x86_64_gnullvm@0.42.2
windows_x86_64_msvc@0.42.2
windows@sys-0.45.0
windows@targets-0.42.2
ws2_32@sys-0.2.1
"

inherit cargo cmake flag-o-matic rust-toolchain multilib-minimal

DESCRIPTION="Implementation of the QUIC transport protocol and HTTP/3"
HOMEPAGE="https://github.com/cloudflare/quiche"

if [[ ${PV} == *9999 ]] ; then
	EGIT_REPO_URI="https://github.com/cloudflare/${PN}.git"
	inherit git-r3
	CMAKE_USE_DIR="${S}/quiche/deps/boringssl"
else
	SRC_URI="${CARGO_CRATE_URIS}"
	KEYWORDS="~amd64 ~arm ~arm64 ~x86"
	S="${WORKDIR}/${P//_/-}"
	CMAKE_USE_DIR="${S}/deps/boringssl"
fi

LICENSE="|| ( Apache-2.0 Boost-1.0 )
	|| ( Apache-2.0 MIT )
	|| ( Apache-2.0-with-LLVM-exceptions Apache-2.0 MIT )
	BSD-2
	BSD
	ISC
	MIT
	|| ( Unlicense MIT )
	openssl"
SLOT="0/0"
IUSE=""
DOCS=( COPYING README.md )

BDEPEND="
	>=virtual/rust-1.66.0[${MULTILIB_USEDEP}]
	dev-util/cmake
"
DEPEND=""
RDEPEND=""

BUILD_DIR="${WORKDIR}/${P}"

src_unpack() {
	if [[ "${PV}" == *9999* ]]; then
		git-r3_src_unpack
		cargo_live_src_unpack
	else
		cargo_src_unpack
		tar -xf "${DISTDIR}/${P//_/-}.crate" -C "${WORKDIR}" || die
	fi
}

src_prepare() {
	cmake_src_prepare
	multilib_copy_sources
}

multilib_src_configure() {
	append-flags "-fPIC"
	local mycmakeargs=(
		-DOPENSSL_NO_ASM=ON
		-DBUILD_SHARED_LIBS=OFF
	)
	BUILD_DIR="${BUILD_DIR}/deps/boringssl/build" cmake_src_configure
}

multilib_src_compile() {
	BUILD_DIR="${BUILD_DIR}/deps/boringssl/build" cmake_src_compile bssl
	QUICHE_BSSL_PATH="${BUILD_DIR}/deps/boringssl" cargo_src_compile --features "ffi pkg-config-meta" --target="$(rust_abi)"
}

multilib_src_test() {
	QUICHE_BSSL_PATH="${BUILD_DIR}/deps/boringssl" cargo_src_test  --target="$(rust_abi)"
}

multilib_src_install() {
	sed -i -e "s:libdir=.\+:libdir=${EPREFIX}/usr/$(get_libdir):" -e "s:includedir=.\+:includedir=${EPREFIX}/usr/include:" target/$(rust_abi)/release/quiche.pc || die
	insinto "/usr/$(get_libdir)/pkgconfig"
	doins target/$(rust_abi)/release/quiche.pc
	doheader -r include/*
	dolib.so "target/$(rust_abi)/release/libquiche.so"
	QA_FLAGS_IGNORED+=" usr/$(get_libdir)/libquiche.so" # rust libraries don't use LDFLAGS
	QA_SONAME+=" usr/$(get_libdir)/libquiche.so" # https://github.com/cloudflare/quiche/issues/165
}

Thank you!