Install this version:
emerge -a =games-util/mocktail-1.0.4
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =games-util/mocktail-1.0.4
Or alternatively:
emerge --autounmask-write -a =games-util/mocktail-1.0.4
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 1.0.4 | 8 | ~amd64 | 0 |
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake
DESCRIPTION="Android x86-64 Roblox compatibility runtime for Linux"
HOMEPAGE="https://github.com/komaruworld/mocktail"
SRC_URI="https://github.com/komaruworld/mocktail/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE="freebsd-helper elibc_musl"
# Source-verification notes (see config/upstream_dependencies.json and .gitmodules
# in the release archive):
#
# * third_party/libjnivm and third_party/Vulkan-Headers are declared as git
# submodules, but the release archive ships them as EMPTY directories. The
# production build does not need libjnivm: Mocktail ships its own in-tree
# legacy JNI layer (src/jnivm/jnivm.cc) and only the test suite references
# the upstream copy, so it is disabled with
# -DMOCKTAIL_ENABLE_UPSTREAM_JNIVM=OFF. No libjnivm dependency is added.
#
# * Vulkan::Headers is required unconditionally. It is supplied from
# dev-util/vulkan-headers (which installs VulkanHeadersConfig.cmake) by
# replacing the empty add_subdirectory() with a find_package() call via the
# patch in files/.
#
# * Tests are disabled for package builds (-DBUILD_TESTING=OFF) because
# upstream obtains GoogleTest via CMake FetchContent
# (https://github.com/google/googletest.git) at configure time -- an
# untracked network download that is forbidden in src_configure and is not
# permitted for a Gentoo package build. No test USE flag is added.
#
# * sys-devel/lld is NOT a dependency. Upstream only requires LLD (and
# elfedit from sys-devel/binutils) for the native FreeBSD Linuxulator socket
# helper, which is opt-in (freebsd-helper USE flag) and disabled by default
# on Linux.
S="${WORKDIR}/${P}"
PATCHES=(
"${FILESDIR}/${PN}-${PV}-use-system-vulkan-headers.patch"
"${FILESDIR}/${PN}-${PV}-timeval.patch"
"${FILESDIR}/${PN}-${PV}-back-inserter.patch"
)
# [vulkan] on libsdl3: Mocktail's default direct-vulkan backend and the
# first-run payload graphics canary both need SDL3 built with -DSDL_VULKAN;
# the flag also pulls media-libs/vulkan-loader (dlopened by SDL). Upstream
# assumes always-on Vulkan support as on Arch's SDL3.
# [vulkan] on mesa: a Vulkan ICD is a hard runtime requirement — the canary
# runs direct-vulkan and rejects the payload without a working driver (ANV/
# RADV/nvk for the selected video_cards_*).
# virtual/opengl: the runtime window binds EGL/GLES from the system (libglvnd).
RDEPEND="
>=media-libs/libsdl3-3.4[vulkan]
media-libs/sdl3-ttf
dev-libs/glib:2
gui-libs/gtk:4
>=gui-libs/libadwaita-1.6:1
net-libs/webkit-gtk:6/0
media-libs/libplacebo
dev-libs/elfutils:0
dev-libs/libyaml
virtual/minizip
>=dev-libs/capstone-5:0/5
dev-libs/libutf8proc
net-misc/curl
dev-libs/openssl:0/3
media-libs/fontconfig
sys-libs/zlib:0/1
media-libs/mesa[vulkan]
virtual/opengl
elibc_musl? ( sys-libs/libexecinfo )"
DEPEND="${RDEPEND}
dev-cpp/nlohmann_json
dev-util/vulkan-headers
elibc_musl? ( sys-libs/libexecinfo )"
# dev-build/cmake is provided automatically by cmake.eclass.
BDEPEND="
virtual/pkgconfig"
src_configure() {
# NOTE: -DCMAKE_BUILD_TYPE is deliberately not passed. cmake.eclass
# appends its own -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" after
# mycmakeargs (so an ebuild-level value would be overridden), the eclass
# default (RelWithDebInfo) is in effect, and Mocktail does not branch on
# CMAKE_BUILD_TYPE, so the per-config optimization flags (wiped by the
# eclass in favour of the user's CFLAGS) are all that would change.
local mycmakeargs=(
-DBUILD_TESTING=OFF
-DMOCKTAIL_ENABLE_UPSTREAM_JNIVM=OFF
-DMOCKTAIL_BUILD_FREEBSD_SOCKET_HELPER=$(usex freebsd-helper ON OFF)
# Upstream hardcodes "lib" (not CMAKE_INSTALL_LIBDIR) when locating its
# private runtime directory from the installed binaries:
# * UpdateHelper (src/runtime/payload_update_preflight.cc)
# * InstalledMetadataEntry (src/update/main.cc)
# * supported launch policy (src/runtime/supported_launch_policy.cc)
# Without this the first-run payload preflight cannot find
# mocktail_updater under Gentoo's $(get_libdir) (lib64 on amd64), so no
# Roblox payload is ever downloaded and startup dies on a missing
# rbx_bin/libroblox.so. The stub libraries and helpers installed here
# are private to ${EPREFIX}/usr/lib/mocktail (never scanned by
# ldconfig), and upstream's own packaging/arch/PKGBUILD passes the same
# -DCMAKE_INSTALL_LIBDIR=lib, so this matches the tested layout.
-DCMAKE_INSTALL_LIBDIR=lib
# Point the compile-time fallback manifests at the installed metadata
# instead of ${CMAKE_SOURCE_DIR}/config/... (the ephemeral Portage
# workdir). Upstream installs these files to
# ${CMAKE_INSTALL_DATADIR}/mocktail/metadata, and every official
# packager (Arch, AUR, Flatpak, Nix) overrides both defines the same
# way.
-DMOCKTAIL_DEFAULT_COMPATIBILITY_MANIFEST="${EPREFIX}/usr/share/mocktail/metadata/roblox_compatibility.json"
-DMOCKTAIL_DEFAULT_SIGNING_TRUST_MANIFEST="${EPREFIX}/usr/share/mocktail/metadata/roblox_signing_certificates.json"
)
cmake_src_configure
}
src_test() {
# Tests are disabled at configure time (-DBUILD_TESTING=OFF) because
# upstream fetches GoogleTest over the network via CMake FetchContent.
# Nothing to run for a package build.
:
}
src_install() {
cmake_src_install
dodoc README.md FAQ.md
}
pkg_postinst() {
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
gtk-update-icon-cache -t -f /usr/share/icons/hicolor || die
fi
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database /usr/share/applications || die
fi
if [[ ! -d "${EROOT}/usr/share/vulkan/icd.d" ]]; then
ewarn "No Vulkan ICD found in ${EROOT}/usr/share/vulkan/icd.d."
ewarn "Mocktail's default direct-vulkan backend (used by the first-run"
ewarn "payload verification) needs a Vulkan driver for your GPU, e.g."
ewarn "media-libs/mesa with USE=vulkan and the matching video_cards_*,"
ewarn "or the graphics canary will reject the Roblox payload."
fi
}
pkg_postrm() {
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
gtk-update-icon-cache -t -f /usr/share/icons/hicolor || die
fi
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database /usr/share/applications || die
fi
}
Manage flags for this package:
euse -i <flag> -p games-util/mocktail |
euse -E <flag> -p games-util/mocktail |
euse -D <flag> -p games-util/mocktail
>=media-libs/libsdl3-3.4[vulkan] media-libs/sdl3-ttf dev-libs/glib:2 gui-libs/gtk:4 >=gui-libs/libadwaita-1.6:1 net-libs/webkit-gtk:6/0 media-libs/libplacebo dev-libs/elfutils:0 dev-libs/libyaml virtual/minizip >=dev-libs/capstone-5:0/5 dev-libs/libutf8proc net-misc/curl dev-libs/openssl:0/3 media-libs/fontconfig sys-libs/zlib:0/1 media-libs/mesa[vulkan] virtual/opengl elibc_musl? ( sys-libs/libexecinfo ) dev-cpp/nlohmann_json dev-util/vulkan-headers elibc_musl? ( sys-libs/libexecinfo )
>=media-libs/libsdl3-3.4[vulkan] media-libs/sdl3-ttf dev-libs/glib:2 gui-libs/gtk:4 >=gui-libs/libadwaita-1.6:1 net-libs/webkit-gtk:6/0 media-libs/libplacebo dev-libs/elfutils:0 dev-libs/libyaml virtual/minizip >=dev-libs/capstone-5:0/5 dev-libs/libutf8proc net-misc/curl dev-libs/openssl:0/3 media-libs/fontconfig sys-libs/zlib:0/1 media-libs/mesa[vulkan] virtual/opengl elibc_musl? ( sys-libs/libexecinfo )
virtual/pkgconfig
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | mocktail-1.0.4.tar.gz | 12306919 bytes | https://github.com/komaruworld/mocktail/archive/refs/tags/1.0.4.tar.gz |