aboutsummaryrefslogtreecommitdiff
path: root/dev-lang/bun-bin/bun-bin-1.3.5.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/bun-bin/bun-bin-1.3.5.ebuild')
-rw-r--r--dev-lang/bun-bin/bun-bin-1.3.5.ebuild205
1 files changed, 205 insertions, 0 deletions
diff --git a/dev-lang/bun-bin/bun-bin-1.3.5.ebuild b/dev-lang/bun-bin/bun-bin-1.3.5.ebuild
new file mode 100644
index 0000000..ed66125
--- /dev/null
+++ b/dev-lang/bun-bin/bun-bin-1.3.5.ebuild
@@ -0,0 +1,205 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit shell-completion
+
+BUN_PN="${PN//-bin/}"
+
+DESCRIPTION="Incredibly fast JavaScript runtime, bundler, test runner, and package manager"
+HOMEPAGE="https://bun.sh"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="-* amd64 ~arm64"
+IUSE="bash-completion cpu_flags_x86_avx2 debug fish-completion zsh-completion"
+
+DEPEND="
+ bash-completion? ( >=app-shells/bash-completion-2.0 )
+ fish-completion? ( app-shells/fish )
+ zsh-completion? ( app-shells/zsh )
+"
+
+bun_bin_filename_prefix() {
+ local -r arch=$1
+ local -r elibc=$2
+ local -ir avx2=$3
+ local -ir debug=$4
+
+ local -a specifier
+
+ # -- Add CPU architecture.
+ case "${arch}" in
+ amd64) specifier+=('x64') ;;
+ arm64) specifier+=('aarch64') ;;
+ * ) die "Unsupported arch: '${arch}'" ;;
+ esac
+
+ # -- Add libc type.
+ case "${elibc}" in
+ musl ) specifier+=('musl') ;;
+ glibc) : ;;
+ * ) die "Unsupported libc: '${elibc}'" ;;
+ esac
+
+ # -- Add CPU features.
+ (( avx2 == 0 )) &&
+ specifier+=('baseline')
+
+ # -- Add debug type.
+ (( debug != 0 )) &&
+ specifier+=('profile')
+
+ # -- Construct string.
+ suffix="$(IFS='-'; echo "${specifier[*]}")"
+ echo "bun-linux-${suffix}"
+}
+
+BASE_URI="https://github.com/oven-sh/${BUN_PN}/releases/download/${BUN_PN}-v${PV}"
+SRC_URI="
+ amd64? (
+ elibc_musl? (
+ cpu_flags_x86_avx2? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 musl 1 1).zip
+ -> ${PN}-${PV}-amd64-musl-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 musl 1 0).zip
+ -> ${PN}-${PV}-amd64-musl.zip
+ )
+ )
+ !cpu_flags_x86_avx2? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 musl 0 1).zip
+ -> ${PN}-${PV}-amd64-musl-baseline-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 musl 0 0).zip
+ -> ${PN}-${PV}-amd64-musl-baseline.zip
+ )
+ )
+ )
+ !elibc_musl? (
+ cpu_flags_x86_avx2? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 glibc 1 1).zip
+ -> ${PN}-${PV}-amd64-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 glibc 1 0).zip
+ -> ${PN}-${PV}-amd64.zip
+ )
+ )
+ !cpu_flags_x86_avx2? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 glibc 0 1).zip
+ -> ${PN}-${PV}-amd64-baseline-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix amd64 glibc 0 0).zip
+ -> ${PN}-${PV}-amd64-baseline.zip
+ )
+ )
+ )
+ )
+ arm64? (
+ elibc_musl? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix arm64 musl 1 1).zip
+ -> ${PN}-${PV}-arm64-musl-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix arm64 musl 1 0).zip
+ -> ${PN}-${PV}-arm64-musl.zip
+ )
+ )
+ !elibc_musl? (
+ debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix arm64 glibc 1 1).zip
+ -> ${PN}-${PV}-arm64-profile.zip
+ )
+ !debug? (
+ ${BASE_URI}/$(bun_bin_filename_prefix arm64 glibc 1 0).zip
+ -> ${PN}-${PV}-arm64.zip
+ )
+ )
+ )
+"
+
+BDEPEND="app-arch/unzip"
+
+QA_PREBUILT="*"
+
+bun_bin_dirname() {
+ local elibc
+ if use elibc_glibc; then
+ elibc='glibc'
+ elif use elibc_musl; then
+ elibc='musl'
+ else
+ die 'Unsupported libc'
+ fi
+
+ local -i avx2=0
+ if use cpu_flags_x86_avx2 \
+ || [[ "${ARCH}" == 'arm64' ]]; then
+ (( avx2 = 1 ))
+ fi
+
+ local -i debug=0
+ use debug &&
+ (( debug = 1 ))
+
+ bun_bin_filename_prefix "${ARCH}" "${elibc}" "${avx2}" "${debug}"
+}
+
+src_unpack() {
+ unpack "${A}"
+ mv "$(bun_bin_dirname)" "${P}"
+}
+
+src_compile() {
+ local bun_bin='bun'
+ if use debug; then
+ bun_bin='bun-profile'
+ fi
+
+ if use bash-completion; then
+ SHELL=bash "./${bun_bin}" completions > bun.bash ||
+ die 'Unable to generate bash completions'
+ fi
+
+ if use fish-completion; then
+ SHELL=fish "./${bun_bin}" completions > bun.fish ||
+ die 'Unable to generate fish completions'
+ fi
+
+ if use zsh-completion; then
+ SHELL=zsh "./${bun_bin}" completions > bun.zsh ||
+ die 'Unable to generate zsh completions'
+ fi
+}
+
+src_install() {
+ exeinto /usr/bin
+
+ if use debug; then
+ doexe bun-profile
+ dosym /usr/bin/bun-profile /usr/bin/bun
+ dosym /usr/bin/bun-profile /usr/bin/bunx
+ else
+ doexe bun
+ dosym /usr/bin/bun /usr/bin/bunx
+ fi
+
+ use bash-completion &&
+ newbashcomp bun.bash "${BUN_PN}"
+
+ use fish-completion &&
+ newfishcomp bun.fish bun.fish
+
+ use zsh-completion &&
+ newzshcomp bun.zsh "_${BUN_PN}"
+}