Files
guru/app-emulation/darling/darling-0.1.20260222.ebuild
Abishek Jakkala 46c5b85f30 app-emulation/darling: update SRC_URI
Signed-off-by: Abishek Jakkala <thysupremematrix@tuta.io>
2026-03-15 13:13:53 +00:00

199 lines
4.3 KiB
Bash

# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..14} )
inherit cmake python-any-r1 check-reqs linux-info
DESCRIPTION="Translation layer for running macOS software on Linux"
HOMEPAGE="https://www.darlinghq.org"
SRC_URI="
https://github.com/darlinghq/darling/releases/download/v${PV}/darling-source.tar.gz
-> darling-complete-source-${PV}.tar.gz
"
S="${WORKDIR}/darling"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE="cli cli-dev cli-extra gui gui-frameworks gui-stubs jsc webkit python ruby perl metal multilib +system"
REQUIRED_USE="
cli-dev? ( cli python ruby perl )
cli? ( system )
cli-extra? ( cli )
gui-frameworks? ( gui )
gui-stubs? ( gui-frameworks )
gui? ( system )
webkit? ( jsc )
python? ( system )
ruby? ( system )
perl? ( system )
metal? ( gui )
"
DEPEND="
x11-misc/xdg-user-dirs
sys-fs/fuse:0
dev-libs/icu:=
dev-libs/libbsd
dev-libs/libxml2:2
llvm-core/llvm:=
media-libs/freetype
media-libs/libjpeg-turbo
media-libs/fontconfig
media-libs/tiff:=
multilib? (
media-libs/freetype[abi_x86_32]
media-libs/libjpeg-turbo[abi_x86_32]
media-libs/fontconfig[abi_x86_32]
media-libs/tiff[abi_x86_32]
sys-libs/glibc[multilib]
)
gui? (
media-libs/mesa[X]
virtual/opengl
virtual/glu
media-libs/libpng:=
media-libs/giflib:=
x11-libs/libX11
x11-libs/libXext
x11-libs/libXrandr
x11-libs/libXcursor
x11-libs/libxkbfile
x11-libs/cairo
media-libs/libpulse
media-libs/vulkan-loader
)
gui? ( multilib? (
media-libs/mesa[X,abi_x86_32]
virtual/opengl[abi_x86_32]
virtual/glu[abi_x86_32]
) )
sys-apps/dbus
media-video/ffmpeg:=
"
BDEPEND="
>=llvm-core/clang-11
sys-devel/flex
sys-devel/bison
dev-build/cmake
virtual/pkgconfig
llvm-core/llvm:=
${PYTHON_DEPS}
gui? ( dev-util/vulkan-headers )
"
RDEPEND="${DEPEND}"
QA_SONAME="*"
pkg_pretend(){
# https://unix.stackexchange.com/questions/131954/check-sse3-support-from-bash
if ! grep -qE '^flags.* (sse3|pni)' /proc/cpuinfo; then
eerror "darling requires a cpu with support of the sse3 instruction set"
die "cpu doesn't support sse3 instruction set"
fi
if kernel_is -lt 5 0; then
eerror "darling requires Linux kernel 5.0 or newer to be installed"
die "darling requires Linux kernel 5.0 or newer"
fi
CHECKREQS_DISK_BUILD="16G"
CHECKREQS_MEMORY="4G"
check-reqs_pkg_pretend
}
pkg_setup(){
# https://unix.stackexchange.com/questions/131954/check-sse3-support-from-bash
if ! grep -qE '^flags.* (sse3|pni)' /proc/cpuinfo; then
eerror "darling requires a cpu with support of the sse3 instruction set"
die "cpu doesn't support sse3 instruction set"
fi
if kernel_is -lt 5 0; then
eerror "darling requires Linux kernel 5.0 or newer to be installed"
die "darling requires Linux kernel 5.0 or newer"
fi
CHECKREQS_DISK_BUILD="16G"
CHECKREQS_MEMORY="4G"
check-reqs_pkg_setup
python-any-r1_pkg_setup
}
src_prepare() {
default
cd "${S}"
# We need clang as we're building a Darwin system
export CC=clang
export CXX=clang++
unset LDFLAGS
export LDFLAGS=""
cmake_src_prepare
}
src_configure() {
export CC=clang
export CXX=clang++
unset LDFLAGS
export LDFLAGS=""
local components="core"
use system && components+=",system"
use python && components+=",python"
use ruby && components+=",ruby"
use perl && components+=",perl"
use cli && components+=",cli"
use cli-dev && components+=",cli_dev"
use cli-extra && components+=",cli_extra"
use gui && components+=",gui"
use gui-frameworks && components+=",gui_frameworks"
use gui-stubs && components+=",gui_stubs"
use jsc && components+=",jsc"
use webkit && components+=",webkit"
local mycmakeargs=(
"-DCMAKE_INSTALL_PREFIX=/usr"
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
"-DDARLING_COMPONENTS=\"${components}\""
"-DJSC_UNIFIED_BUILD=ON"
"-DENABLE_METAL=$(usex metal ON OFF)"
"-DTARGET_i386=$(usex multilib ON OFF)"
)
cmake_src_configure
}
src_compile() {
cmake_src_compile
}
src_install() {
cmake_src_install
# Darlingserver requires these empty dirs to exist at runtime
# to set up its container (procfs mount, tmp, var, etc.)
keepdir /usr/libexec/darling/private/tmp
keepdir /usr/libexec/darling/private/var
keepdir /usr/libexec/darling/private/etc
keepdir /usr/libexec/darling/proc
keepdir /usr/libexec/darling/run
}