File prismlauncher.spec of Package prismlauncher
# Change these variables if you want to use custom keys
# Leave blank if you want to build Prism Launcher without an MSA ID or CurseForge API key
%global msa_id default
%global curseforge_key default
# Set the Qt version
%global qt_version 6
%global min_qt_version 6.0
# Give the launcher our build platform
%define build_platform openSUSE
Name: prismlauncher
Version: @SERVICE@
Release: 1%{?dist}
# See COPYING.md for more information
# Each file in the source tree also contains a SPDX-License-Identifier header
License: GPL-3.0-only AND Apache-2.0 AND LGPL-3.0-only AND OFL-1.1 AND LGPL-2.1 AND MIT AND BSD-3-Clause
Group: Amusements/Games/Action/Other
Summary: Minecraft launcher with ability to manage multiple instances
Source0: _service
Patch0: 0001-find-cmark-with-pkgconfig.patch
URL: https://prismlauncher.org/
BuildRequires: cmake >= 3.15
BuildRequires: extra-cmake-modules
%if 0%{?suse_version} >= 1600
BuildRequires: gcc-c++
%else
BuildRequires: gcc9
BuildRequires: gcc9-c++
%endif
BuildRequires: java-17-openjdk-devel
BuildRequires: update-desktop-files
BuildRequires: appstream-glib
BuildRequires: cmake(Qt%{qt_version}Concurrent) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Core) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Gui) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Network) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}NetworkAuth) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Test) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Widgets) >= %{min_qt_version}
BuildRequires: cmake(Qt%{qt_version}Xml) >= %{min_qt_version}
%if %{qt_version} == 6
BuildRequires: cmake(Qt6Core5Compat)
%endif
%if 0%{?suse_version} >= 1550
BuildRequires: cmake(QuaZip-Qt%{qt_version})
%endif
BuildRequires: pkgconfig(libcmark)
# https://build.opensuse.org/request/show/934673
%if 0%{?suse_version} <= 1500
BuildRequires: cmark
%endif
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(scdoc)
BuildRequires: pkgconfig(zlib)
Requires: qt%{qt_version}-imageformats
Requires: libQt%{qt_version}Svg%{qt_version}
Requires: javapackages-filesystem
Recommends: java-21-openjdk
Recommends: java-17-openjdk
Suggests: java = 1.8.0
# xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
Recommends: xrandr
# Prism supports enabling gamemode
%if 0%{?suse_version} > 1500
Suggests: gamemode
%endif
# Added 2024-10-20
Obsoletes: prismlauncher-qt5 < 9.0-1
%description
A custom launcher for Minecraft that allows you to easily manage
multiple installations of Minecraft at once (Fork of MultiMC)
%prep
%setup -q -n %{_sourcedir}/prismlauncher-%{version} -T -D
%autopatch -p1
# Do not set RPATH
sed -i "s|\$ORIGIN/||" CMakeLists.txt
%build
%cmake \
%if 0%{?suse_version} < 1600
-DCMAKE_C_COMPILER="gcc-9" \
-DCMAKE_CXX_COMPILER="g++-9" \
%endif
-DLauncher_QT_VERSION_MAJOR="%{qt_version}" \
-DLauncher_BUILD_PLATFORM="%{build_platform}" \
%if "%{msa_id}" != "default"
-DLauncher_MSA_CLIENT_ID="%{msa_id}" \
%endif
%if "%{curseforge_key}" != "default"
-DLauncher_CURSEFORGE_API_KEY="%{curseforge_key}" \
%endif
%cmake_build
%install
%cmake_install
%suse_update_desktop_file org.prismlauncher.PrismLauncher
%check
%ctest
%if 0%{?suse_version} > 1500
appstream-util validate-relax --nonet \
%{buildroot}%{_datadir}/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml
%endif
%files
# TODO: find out why these aren't found on tumbleweed
# %doc README.md
# %license LICENSE COPYING.md
%dir %{_datadir}/PrismLauncher
%dir %{_datadir}/qlogging-categories%{qt_version}
%{_bindir}/prismlauncher
%{_datadir}/PrismLauncher/*
%{_datadir}/applications/org.prismlauncher.PrismLauncher.desktop
%{_datadir}/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg
%{_datadir}/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml
%{_datadir}/mime/packages/modrinth-mrpack-mime.xml
%{_datadir}/qlogging-categories?/prismlauncher.categories
%{_mandir}/man?/prismlauncher.*
%changelog