View Raw Ebuild
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Credit for the main logic and functions:
# https://git.swurl.xyz/PETERIX_ON_SUICIDE_WATCH/multimc-arch-package
# Available as an AUR package:
# https://aur.archlinux.org/packages/multimc-git/
EAPI=7
inherit git-r3 cmake desktop
DESCRIPTION="Minecraft launcher with ability to manage multiple instances."
HOMEPAGE="https://github.com/MultiMC/Launcher"
EGIT_REPO_URI="https://github.com/MultiMC/Launcher https://github.com/MultiMC/libnbtplusplus https://github.com/MultiMC/quazip"
SRC_URI="https://files.multimc.org/downloads/mmc-stable-lin64.tar.gz"
S="${WORKDIR}/${PN}-${PV}"
KEYWORDS="amd64 x86 ~arm64 ~ppc64"
LICENSE="Apache"
SLOT="0"
BDEPEND="virtual/jdk:1.8 media-gfx/inkscape media-gfx/imagemagick media-libs/libicns"
DEPEND="dev-qt/qtcore:5 virtual/jre sys-libs/zlib virtual/opengl"
RDEPEND="${DEPEND}"
_extract_token() {
pushd ${WORKDIR}/MultiMC/bin > /dev/null
local token_asm=$(objdump -j '.text' --no-show-raw-insn -C --disassemble='Secrets::getMSAClientID(unsigned char)' MultiMC)
local token="$(grep -oP '[a-z0-9]{2}(?=,%r[89]d)' <<< ${token_asm} | tac | tr -d '\n')$(grep -oP '(push.+0x)\K[a-z0-9]{2}' <<< ${token_asm} | tac | tr -d '\n')"
local token_separated="${token:0:8}-${token:8:4}-${token:12:4}-${token:16:4}-${token:20}"
echo $token_separated
popd > /dev/null
}
src_unpack() {
default
git-r3_src_unpack
}
src_prepare() {
patch -p1 < "${FILESDIR}/0001-Readd-lin-system-and-LAUNCHER_LINUX_DATADIR.patch"
patch -p1 < "${FILESDIR}/modern-java.patch"
patch -p1 < "${FILESDIR}/fix-jars.patch"
patch -p1 < "${FILESDIR}/mmc-brand.patch"
local token=$(_extract_token)
sed -i 's/""/"'"${token}"'"/g' notsecrets/Secrets.cpp
git checkout 6a4130c9149deb029b496c81e3b874ad834c54b7 -- launcher/resources/{{OSX,flat,iOS,multimc,pe_{blue,colored,dark,light}}/scalable/multimc.svg,multimc/{32x32,128x128}/instances/infinity.png}
for f in launcher/resources/{OSX,flat,iOS,multimc,pe_{blue,colored,dark,light}}/scalable
do
mv "$f/multimc.svg" "$f/launcher.svg"
done
cp launcher/resources/multimc/scalable/launcher.svg notsecrets/logo.svg
git submodule init
git config submodule.libnbtplusplus.url "${WORKDIR}/libnbtplusplus"
git config submodule.quazip.url "${WORKDIR}/quazip"
git submodule update
default
cmake_src_prepare
}
src_compile() {
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DLauncher_LAYOUT=lin-system \
-DLauncher_APP_BINARY_NAME="${PN}" \
-DLauncher_SHARE_DEST_DIR="share/${PN}" \
-DLauncher_LIBRARY_DEST_DIR="$(get_libdir)" \
..
emake
}
src_install() {
cd "build"
emake install DESTDIR="${D}"
cd ..
newicon "notsecrets/logo.svg" multimc.svg
domenu "${FILESDIR}/${PN}.desktop"
#insinto /usr/$(get_libdir)
#cd build
#doins "libLauncher_quazip.so"
#doins "libLauncher_nbt++.so"
}