Install this version:
emerge -a =dev-lang/bun-1.4.2
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-lang/bun-1.4.2
Or alternatively:
emerge --autounmask-write -a =dev-lang/bun-1.4.2
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Dependency blocks are generated by scripts/bun-deps.sh from the source tree.
# Vendored libraries fetched by Bun's build, as "name repo commit"
BUN_VENDOR=(
"picohttpparser h2o/picohttpparser 066d2b1e9ab820703db0837a7255d92d30f0c9f5"
"zlib zlib-ng/zlib-ng 12731092979c6d07f42da27da673a9f6c7b13586"
"zstd facebook/zstd f8745da6ff1ad1e7bab384bd1f9d742439278e99"
"brotli google/brotli v1.1.0"
"libdeflate ebiggers/libdeflate c8c56a20f8f621e6a966b716b31f1dedab6a41e3"
"libarchive libarchive/libarchive ded82291ab41d5e355831b96b0e1ff49e24d8939"
"libjpeg-turbo libjpeg-turbo/libjpeg-turbo e352b02f794f701407b39af08576035ba3360d60"
"libspng randy408/libspng fb768002d4288590083a476af628e51c3f1d47cd"
"libwebp webmproject/libwebp b7e29b9d75bd31422b00c2a446d49d7af06c328d"
"cares c-ares/c-ares c7a3138dcfe3bb0eaaf10c0c24c36dc66dc790ab"
"hdrhistogram HdrHistogram/HdrHistogram_c be60a9987ee48d0abf0d7b6a175bad8d6c1585d1"
"highway google/highway 2607d3b5b0113992fe84d3848859eae13b3b52c1"
"lolhtml oven-sh/lol-html 725ce499aa9b71e38b7a2d0a9fbb6d7294a4079e"
"rust-argon2 sru-systems/rust-argon2 ed81866f163f0c7026aa6fd8388adf37242eb32a"
"lshpack litespeedtech/ls-hpack 8905c024b6d052f083a3d11d0a169b3c2735c8a1"
"lsqpack litespeedtech/ls-qpack 1e9c5b8e59f8161c54f168a570c8bfdc59ded0c3"
"mimalloc oven-sh/mimalloc 6a64e1ba7f5b2130d4efccb67ec87fd0003f0f6a"
"tinycc oven-sh/tinycc 05f0fafaa3be31e31d7b4b5c17dc60f62c991171"
"boringssl oven-sh/boringssl 41bf9b59c2ebf277a7aa427e1ecad5cc80dd4d4f"
"lsquic litespeedtech/lsquic 3181911301b1aa4f54c1ed690901abc674ee08fb"
)
BUN_WEBKIT_COMMIT="2e2aa2290fac856d6f451ceacb58f7f5b44dd057"
BUN_NODEJS_HEADERS="https://nodejs.org/dist/v26.3.0/node-v26.3.0-headers.tar.gz"
# Commit of the bun-v${PV} tag, reported by "bun --revision"
BUN_GIT_SHA="744846f844374847c902b5e7fd59b4342a51ef99"
CRATES="
addr2line@0.25.1
adler2@2.0.1
aho-corasick@1.1.4
allocator-api2@0.2.21
anes@0.1.6
anstyle@1.0.14
anyhow@1.0.102
arrayref@0.3.9
arrayvec@0.7.6
autocfg@1.5.0
base64@0.22.1
bcrypt@0.19.0
bitflags@2.11.1
blake2@0.10.6
blake2b_simd@1.0.4
block-buffer@0.10.4
blowfish@0.9.1
bstr@1.12.1
bumpalo@3.20.2
bytemuck@1.25.0
byteorder@1.5.0
cast@0.3.0
cc@1.2.0
cfg-if@1.0.4
ciborium-io@0.2.2
ciborium-ll@0.2.2
ciborium@0.2.2
cipher@0.4.4
clap@4.6.1
clap_builder@4.6.0
clap_lex@1.1.0
const_format@0.2.36
const_format_proc_macros@0.2.34
constant_time_eq@0.4.2
cpufeatures@0.2.17
criterion-plot@0.5.0
criterion@0.5.1
crossbeam-deque@0.8.6
crossbeam-epoch@0.9.18
crossbeam-utils@0.8.21
crunchy@0.2.4
crypto-common@0.1.7
cssparser-macros@0.6.1
cssparser@0.36.0
darling@0.21.3
darling_core@0.21.3
darling_macro@0.21.3
derive_more-impl@2.1.1
derive_more@2.1.1
digest@0.10.7
dlmalloc@0.2.13
dtoa-short@0.3.5
dtoa@1.0.11
either@1.15.0
encoding_rs@0.8.35
enum-map-derive@0.17.0
enum-map@2.7.3
enumset@1.1.10
enumset_derive@0.14.0
equivalent@1.0.2
errno@0.3.14
fastrand@2.4.1
fnv@1.0.7
foldhash@0.1.5
foldhash@0.2.0
fortanix-sgx-abi@0.6.1
futures-core@0.3.32
futures-task@0.3.32
futures-util@0.3.32
generic-array@0.14.7
getopts@0.2.24
getrandom@0.4.2
gimli@0.32.3
half@2.7.1
hashbrown@0.15.5
hashbrown@0.16.1
hashbrown@0.17.0
hashbrown@0.17.1
heck@0.5.0
hermit-abi@0.5.2
id-arena@2.3.0
ident_case@1.0.1
indexmap@2.14.0
inout@0.1.4
is-terminal@0.4.17
itertools@0.10.5
itoa@1.0.18
js-sys@0.3.98
keccak@0.1.6
konst@0.2.20
konst_macro_rules@0.2.19
leb128fmt@0.1.0
libc@0.2.185
libc@0.2.186
linux-raw-sys@0.4.15
log@0.4.29
memchr@2.7.6
memchr@2.8.0
mime@0.3.17
miniz_oxide@0.8.9
moto-rt@0.16.0
new_debug_unreachable@1.0.6
num-traits@0.2.19
object@0.37.3
once_cell@1.21.4
oorandom@11.1.5
paste@1.0.15
phf@0.13.1
phf_codegen@0.13.1
phf_generator@0.13.1
phf_macros@0.13.1
phf_shared@0.13.1
pin-project-lite@0.2.17
plotters-backend@0.3.7
plotters-svg@0.3.7
plotters@0.3.7
precomputed-hash@0.1.1
prettyplease@0.2.37
proc-macro2@1.0.106
quick-xml@0.38.4
quote@1.0.45
r-efi-alloc@2.1.0
r-efi@5.3.0
r-efi@6.0.0
rand@0.9.2
rand_core@0.9.3
rand_xorshift@0.4.0
rayon-core@1.13.0
rayon@1.12.0
regex-automata@0.4.14
regex-syntax@0.8.10
regex@1.12.3
roxmltree@0.20.0
rustc-demangle@0.1.27
rustc-hash@2.1.2
rustc-literal-escaper@0.0.8
rustc_version@0.4.1
rustix@0.38.44
rustversion@1.0.22
same-file@1.0.6
scopeguard@1.2.0
selectors@0.33.0
semver@1.0.28
serde@1.0.228
serde_core@1.0.228
serde_derive@1.0.228
serde_json@1.0.149
servo_arc@0.4.3
sha3@0.10.9
shlex@1.3.0
siphasher@1.0.3
slab@0.4.12
smallvec@1.15.1
stable_deref_trait@1.2.1
strum@0.26.3
strum_macros@0.26.4
subtle@2.6.1
syn@2.0.117
thiserror-impl@2.0.18
thiserror@2.0.18
tinytemplate@1.2.1
typed-arena@2.0.2
typenum@1.20.0
unicode-ident@1.0.24
unicode-xid@0.2.6
unwinding@0.2.8
version_check@0.9.5
vex-sdk@0.27.1
walkdir@2.5.0
wasip1@1.0.0
wasip2@1.0.3+wasi-0.2.9
wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06
wasip3@0.6.0+wasi-0.3.0-rc-2026-03-15
wasm-bindgen-macro-support@0.2.121
wasm-bindgen-macro@0.2.121
wasm-bindgen-shared@0.2.121
wasm-bindgen@0.2.121
wasm-encoder@0.244.0
wasm-metadata@0.244.0
wasmparser@0.244.0
web-sys@0.3.98
winapi-util@0.1.11
windows-link@0.2.1
windows-sys@0.59.0
windows-sys@0.61.2
windows-targets@0.52.6
windows_aarch64_gnullvm@0.52.6
windows_aarch64_msvc@0.52.6
windows_i686_gnu@0.52.6
windows_i686_gnullvm@0.52.6
windows_i686_msvc@0.52.6
windows_x86_64_gnu@0.52.6
windows_x86_64_gnullvm@0.52.6
windows_x86_64_msvc@0.52.6
wit-bindgen-core@0.51.0
wit-bindgen-rust-macro@0.51.0
wit-bindgen-rust@0.51.0
wit-bindgen@0.51.0
wit-bindgen@0.57.1
wit-component@0.244.0
wit-parser@0.244.0
xml-rs@0.8.29
zerocopy-derive@0.8.48
zerocopy@0.8.48
zeroize@1.8.2
zmij@1.0.21
"
NPM_PKGS="
@esbuild/linux-arm64@0.21.5|arm64
@esbuild/linux-x64@0.21.5|amd64
@lezer/common@1.5.2
@lezer/cpp@1.1.6
@lezer/highlight@1.2.3
@lezer/lr@1.4.10
@oxlint/binding-linux-arm64-gnu@1.70.0|arm64
@oxlint/binding-linux-arm64-musl@1.70.0|arm64
@oxlint/binding-linux-x64-gnu@1.70.0|amd64
@oxlint/binding-linux-x64-musl@1.70.0|amd64
@types/node@26.2.0
abort-controller@3.0.0
asn1.js@4.10.1
assert@2.1.0
available-typed-arrays@1.0.7
base64-js@1.5.1
bn.js@4.12.2
bn.js@5.2.2
brorand@1.1.0
browserify-aes@1.2.0
browserify-cipher@1.0.1
browserify-des@1.0.2
browserify-rsa@4.1.1
browserify-sign@4.2.5
browserify-zlib@0.2.0
buffer@5.0.5
buffer@6.0.3
buffer-xor@1.0.3
builtin-status-codes@3.0.0
call-bind@1.0.8
call-bind-apply-helpers@1.0.2
call-bound@1.0.4
cipher-base@1.0.7
core-util-is@1.0.3
create-ecdh@4.0.4
create-hash@1.2.0
create-hmac@1.1.7
crypto-browserify@3.12.1
define-data-property@1.1.4
define-properties@1.2.1
des.js@1.1.0
diffie-hellman@5.0.3
domain-browser@4.23.0
dunder-proto@1.0.1
elliptic@6.6.1
es-define-property@1.0.1
es-errors@1.3.0
es-object-atoms@1.1.1
esbuild@0.21.5
event-target-shim@5.0.1
events@3.3.0
evp_bytestokey@1.0.3
for-each@0.3.5
function-bind@1.1.2
generator-function@2.0.1
get-intrinsic@1.3.0
get-proto@1.0.1
gopd@1.2.0
has-property-descriptors@1.0.2
has-symbols@1.1.0
has-tostringtag@1.0.2
hash-base@3.0.5
hash-base@3.1.2
hash.js@1.1.7
hasown@2.0.2
hmac-drbg@1.0.1
https-browserify@1.0.0
ieee754@1.2.1
inherits@2.0.4
is-arguments@1.2.0
is-callable@1.2.7
is-generator-function@1.1.2
is-nan@1.3.2
is-regex@1.2.1
is-typed-array@1.1.15
isarray@1.0.0
isarray@2.0.5
js-tokens@4.0.0
loose-envify@1.4.0
math-intrinsics@1.1.0
md5.js@1.3.5
miller-rabin@4.0.1
minimalistic-assert@1.0.1
minimalistic-crypto-utils@1.0.1
object-is@1.1.6
object-keys@1.1.1
object.assign@4.1.7
oxlint@1.70.0
pako@1.0.11
parse-asn1@5.1.9
pbkdf2@3.1.5
possible-typed-array-names@1.1.0
preact@10.27.2
prettier@3.6.2
prettier-plugin-organize-imports@4.3.0
process@0.11.10
process-nextick-args@2.0.1
public-encrypt@4.0.3
punycode@2.3.1
querystring-es3@1.0.0-0
randombytes@2.1.0
randomfill@1.0.4
react@18.3.1
react-dom@18.3.1
react-refresh@0.17.0
readable-stream@2.3.8
readable-stream@3.6.2
readable-stream@4.7.0
ripemd160@2.0.3
safe-buffer@5.1.2
safe-buffer@5.2.1
safe-regex-test@1.1.0
scheduler@0.23.2
set-function-length@1.2.2
sha.js@2.4.12
source-map-js@1.2.1
stream-http@3.2.0
string_decoder@1.1.1
string_decoder@1.3.0
to-buffer@1.2.2
typed-array-buffer@1.0.3
typescript@6.0.2
undici-types@8.3.0
util@0.12.5
util-deprecate@1.0.2
which-typed-array@1.1.19
xtend@4.0.2
"
LLVM_COMPAT=( 21 22 23 )
PYTHON_COMPAT=( python3_{11..14} )
# JavaScriptCore's offlineasm, same range as net-libs/webkit-gtk
USE_RUBY="ruby32 ruby33 ruby34 ruby40"
# CRATES includes std's own crates for -Zbuild-std, which are per Rust version
RUST_MIN_VER="1.98.1"
RUST_MAX_VER="${RUST_MIN_VER}"
RUST_NEEDS_LLVM=1
NPM_OPTIONAL=1
inherit cargo check-reqs edo flag-o-matic llvm-r2 multiprocessing npm python-any-r1 ruby-single shell-completion toolchain-funcs
DESCRIPTION="Fast all-in-one JavaScript runtime, bundler, test runner and package manager"
HOMEPAGE="https://bun.com https://github.com/oven-sh/bun"
_bun_set_src_uri() {
local dep name repo commit parts
SRC_URI="
https://github.com/oven-sh/bun/archive/refs/tags/bun-v${PV}.tar.gz -> ${P}.gh.tar.gz
${BUN_NODEJS_HEADERS} -> bun-${BUN_NODEJS_HEADERS##*/}
https://github.com/FireBurn/Overlay/releases/download/webkit-${BUN_WEBKIT_COMMIT}/WebKit-${BUN_WEBKIT_COMMIT}.tar.xz
"
for dep in "${BUN_VENDOR[@]}"; do
parts=( ${dep} )
name=${parts[0]} repo=${parts[1]} commit=${parts[2]}
SRC_URI+=" https://github.com/${repo}/archive/${commit}.tar.gz -> bun-vendor-${name}-${commit}.gh.tar.gz"
done
# The build runs a handful of codegen scripts with bun itself
SRC_URI+="
!system-bootstrap? (
amd64? ( https://github.com/oven-sh/bun/releases/download/bun-v${PV}/bun-linux-x64-baseline.zip
-> bun-bootstrap-${PV}-x64-baseline.zip )
arm64? ( https://github.com/oven-sh/bun/releases/download/bun-v${PV}/bun-linux-aarch64.zip
-> bun-bootstrap-${PV}-aarch64.zip )
)
${CARGO_CRATE_URIS}
${NPM_PKG_URIS}
"
}
_bun_set_src_uri
unset -f _bun_set_src_uri
S="${WORKDIR}/bun-bun-v${PV}"
LICENSE="MIT"
# Vendored libraries and JavaScriptCore
LICENSE+=" Apache-2.0 BSD BSD-2 ISC LGPL-2 LGPL-2.1 MIT openssl ZLIB"
# Dependent crate licenses
LICENSE+=" Apache-2.0 BSD MIT Unicode-3.0 ZLIB"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="system-bootstrap"
RESTRICT="mirror test"
DEPEND="
dev-libs/icu:=
"
RDEPEND="${DEPEND}"
BDEPEND="
${PYTHON_DEPS}
${RUST_DEPEND}
${NPM_NODE_DEPEND}
>=net-libs/nodejs-25
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}
llvm-core/lld:${LLVM_SLOT}
llvm-core/llvm:${LLVM_SLOT}
')
app-alternatives/ninja
dev-build/cmake
${RUBY_DEPS}
dev-lang/perl
dev-util/gperf
virtual/pkgconfig
system-bootstrap? ( dev-lang/bun )
!system-bootstrap? ( app-arch/unzip )
"
QA_FLAGS_IGNORED="usr/bin/bun"
CHECKREQS_DISK_BUILD="25G"
CHECKREQS_MEMORY="16G"
pkg_pretend() {
[[ ${MERGE_TYPE} != binary ]] && check-reqs_pkg_pretend
}
pkg_setup() {
if [[ ${MERGE_TYPE} != binary ]]; then
check-reqs_pkg_setup
llvm-r2_pkg_setup
rust_pkg_setup
python-any-r1_pkg_setup
fi
}
src_unpack() {
unpack "${P}.gh.tar.gz"
local archive
for archive in ${A}; do
[[ ${archive} == bun-bootstrap-*.zip ]] && unpack "${archive}"
done
# GitHub cannot archive the oven-sh/WebKit fork (too large), so
# .github/workflows/webkit-tarball.yml publishes a git archive of the
# pinned commit, without test suites, to the overlay's releases
unpack "WebKit-${BUN_WEBKIT_COMMIT}.tar.xz"
cargo_crate_unpack
cargo_gen_config
# Bun's downloader looks in the prefetch cache first, keyed by URL, so
# point it at the verified distfiles
local prefetch="${WORKDIR}/bun-prefetch/by-url" dep name repo commit key parts
mkdir -p "${prefetch}" || die
_bun_prefetch() {
key=$(printf %s "${1}" | sha256sum) || die
ln -s "${DISTDIR}/${2}" "${prefetch}/${key:0:32}" || die
}
for dep in "${BUN_VENDOR[@]}"; do
parts=( ${dep} )
name=${parts[0]} repo=${parts[1]} commit=${parts[2]}
_bun_prefetch "https://github.com/${repo}/archive/${commit}.tar.gz" \
"bun-vendor-${name}-${commit}.gh.tar.gz"
done
_bun_prefetch "${BUN_NODEJS_HEADERS}" "bun-${BUN_NODEJS_HEADERS##*/}"
}
src_prepare() {
default
eapply "${FILESDIR}/${P}-clang-23.patch"
# Use the CPU target from CFLAGS instead of upstream's portable baseline.
# The same table feeds WebKit's flags and rustc's -Ctarget-cpu.
local gentoo='process.env.BUN_GENTOO_CPU_FLAGS'
local table="${gentoo} ? [{ flag: ${gentoo}.split(\" \"), when: () => true, desc: \"CFLAGS\" }] : ["
sed -i -e "s|^export const cpuTargetFlags: Flag\[\] = \[\$|export const cpuTargetFlags: Flag[] = ${table}|" \
scripts/build/flags.ts || die
grep -q BUN_GENTOO_CPU_FLAGS scripts/build/flags.ts || die "failed to patch CPU target flags"
}
src_compile() {
local cpu=() flag
if use amd64; then
for flag in march mtune; do
is-flagq "-${flag}=*" && cpu+=( "-${flag}=$(get-flag "${flag}")" )
done
else
# Bun only translates -march=armv8-a for rustc; -mcpu maps directly
is-flagq "-mcpu=*" && cpu+=( "-mcpu=$(get-flag mcpu)" )
fi
export BUN_GENTOO_CPU_FLAGS="${cpu[*]}"
[[ -n ${BUN_GENTOO_CPU_FLAGS} ]] && einfo "CPU target: ${BUN_GENTOO_CPU_FLAGS}"
export BUN_BUILD_PREFETCH_DIR="${WORKDIR}/bun-prefetch"
export BUN_WEBKIT_PATH="${WORKDIR}/WebKit-${BUN_WEBKIT_COMMIT}"
export BUN_TOOLCHAIN_LLVM=$(get_llvm_prefix -b)
export BUN_TOOLCHAIN_RUST=$(get_rust_prefix)
export CARGO_HOME="${ECARGO_HOME}"
# The Rust sources use nightly features
export RUSTC_BOOTSTRAP=1
export GIT_SHA="${BUN_GIT_SHA}"
npm_setup_env
if ! use system-bootstrap; then
local bootstrap=( "${WORKDIR}"/bun-linux-*/ )
export PATH="${bootstrap[0]%/}:${PATH}"
fi
local lto=off
tc-is-lto && lto=on
npm_registry_start
edo node --experimental-strip-types --disable-warning=MODULE_TYPELESS_PACKAGE_JSON \
scripts/build.ts --profile=release-local --canary=off --lto=${lto} \
-j$(makeopts_jobs) -l$(makeopts_loadavg)
npm_registry_stop
}
src_install() {
dobin build/release/bun
dosym bun /usr/bin/bunx
newbashcomp completions/bun.bash bun
newzshcomp completions/bun.zsh _bun
dofishcomp completions/bun.fish
einstalldocs
}
Manage flags for this package:
euse -i <flag> -p dev-lang/bun |
euse -E <flag> -p dev-lang/bun |
euse -D <flag> -p dev-lang/bun
dev-libs/icu:=
dev-libs/icu:=
${PYTHON_DEPS}
${RUST_DEPEND}
${NPM_NODE_DEPEND}
>=net-libs/nodejs-25
$(llvm_gen_dep '
llvm-core/clang:${LLVM_SLOT}
llvm-core/lld:${LLVM_SLOT}
llvm-core/llvm:${LLVM_SLOT}
')
app-alternatives/ninja
dev-build/cmake
${RUBY_DEPS}
dev-lang/perl
dev-util/gperf
virtual/pkgconfig
system-bootstrap? ( dev-lang/bun )
!system-bootstrap? ( app-arch/unzip )