javy-8.0.0-r5bennypowers
download
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
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]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+wasi-snapshot-preview1
[email protected]+wasi-0.2.4
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]+zstd.1.5.7
[email protected]
"
RUST_MIN_VER="1.85.0"
RUST_REQ_USE="rust_sysroots_wasm"
inherit cargo
DESCRIPTION="JavaScript to WebAssembly toolchain"
HOMEPAGE="https://github.com/bytecodealliance/javy"
SRC_URI="
https://github.com/bytecodealliance/javy/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
${CARGO_CRATE_URIS}
"
LICENSE="Apache-2.0-with-LLVM-exceptions"
# Dependent crate licenses
LICENSE+="
Apache-2.0 BSD ISC MIT MPL-2.0 Unicode-3.0 ZLIB
|| ( Apache-2.0 MIT )
"
SLOT="0"
KEYWORDS="~amd64"
# clang is needed for cross-compiling C code to wasm32-wasip1 (QuickJS in
# rquickjs-sys) and for building binaryen C++ via wasm-opt-sys/cxx
BDEPEND="
llvm-core/clang
"
QA_FLAGS_IGNORED="usr/bin/javy"
# Rust version is dynamic, so we download the wasm32-wasip1 stdlib at
# build time based on the detected rustc version.
RESTRICT="network-sandbox"
src_unpack() {
cargo_src_unpack
# Gentoo's rust_sysroots_wasm only provides wasm32-unknown-unknown.
# Download and install wasm32-wasip1 stdlib into a local sysroot overlay.
local rust_ver
rust_ver="$(rustc --version | cut -d' ' -f2)" || die
local rust_sysroot
rust_sysroot="$(rustc --print sysroot)" || die
local wasi_sysroot="${WORKDIR}/wasi-sysroot"
einfo "Downloading wasm32-wasip1 stdlib for Rust ${rust_ver}..."
wget -q "https://static.rust-lang.org/dist/rust-std-${rust_ver}-wasm32-wasip1.tar.xz" \
-O "${T}/rust-std-wasm32-wasip1.tar.xz" \
|| die "Failed to download wasm32-wasip1 stdlib"
tar -xf "${T}/rust-std-wasm32-wasip1.tar.xz" -C "${T}" || die
# Build a local sysroot: symlink the host target and libs from the
# system sysroot, then add the downloaded wasm32-wasip1 target.
mkdir -p "${wasi_sysroot}/lib/rustlib" || die
ln -snf "${rust_sysroot}/lib/rustlib/x86_64-unknown-linux-gnu" \
"${wasi_sysroot}/lib/rustlib/x86_64-unknown-linux-gnu" || die
ln -snf "${rust_sysroot}/lib/rustlib/wasm32-unknown-unknown" \
"${wasi_sysroot}/lib/rustlib/wasm32-unknown-unknown" || die
cp -a "${T}/rust-std-${rust_ver}-wasm32-wasip1/rust-std-wasm32-wasip1/lib/rustlib/wasm32-wasip1" \
"${wasi_sysroot}/lib/rustlib/" || die
# Symlink shared libs and other rustlib contents needed by the compiler
local f
for f in "${rust_sysroot}/lib/rustlib"/*; do
local base="${f##*/}"
[[ -e "${wasi_sysroot}/lib/rustlib/${base}" ]] && continue
ln -snf "${f}" "${wasi_sysroot}/lib/rustlib/${base}" || die
done
for f in "${rust_sysroot}/lib/"*.so; do
[[ -e "${f}" ]] || continue
ln -snf "${f}" "${wasi_sysroot}/lib/" || die
done
}
src_compile() {
local wasi_sysroot="${WORKDIR}/wasi-sysroot"
# Build the default plugin for wasm32-wasip1.
# This must happen before the CLI build, whose build.rs expects the
# plugin at target/wasm32-wasip1/release/plugin.wasm.
# Run in a subshell to isolate host RUSTFLAGS from the wasm build.
(
unset CARGO_BUILD_RUSTFLAGS CARGO_ENCODED_RUSTFLAGS RUSTFLAGS
unset CARGO_BUILD_TARGET
export CARGO_PROFILE_RELEASE_LTO=false
export CARGO_PROFILE_RELEASE_STRIP=none
export CC_wasm32_wasip1=clang
# Point rustc at our local sysroot overlay via the target-specific
# env var. This merges with the project's .cargo/config.toml flags
# (e.g. -C target-feature=+simd128) rather than overriding them.
export CARGO_TARGET_WASM32_WASIP1_RUSTFLAGS="--sysroot ${wasi_sysroot}"
cargo build -p javy-plugin --target wasm32-wasip1 --release
) || die "plugin build failed"
# Build the CLI binary (its build.rs picks up and processes the plugin)
local -x CARGO_PROFILE_RELEASE_LTO=off
cargo_src_compile -p javy-cli
}
src_install() {
dobin "$(cargo_target_dir)/javy"
dodoc README.md
}