%global rel 1 # Version in CMakeLists.txt in minetest directory %global git_date 20230830 %global git_hash 4252f9d4d %global git_ver 5.8.0 %global src_name %{name}-%{git_date}-%{git_hash}.tar.xz %global gamedate 20230817 %global gamehash 9e77e00 %global gamever 5.7.0 %global gamename %{name}_game-%{gamedate}-%{gamehash}.tar.xz Name: minetest Version: %{git_ver}^%{git_date}g%{git_hash} Release: %{rel}%{?dist} Summary: Multiplayer infinite-world block sandbox with survival mode License: LGPLv2+ and CC-BY-SA URL: http://minetest.net/ Source0: %{url}/%{src_name} Source1: %{name}.desktop Source2: %{name}@.service Source3: %{name}.rsyslog Source4: %{name}.logrotate Source5: %{name}.README Source6: %{gamename} Source7: http://www.gnu.org/licenses/lgpl-2.1.txt Source8: default.conf ##Patch0: %{name}-gcc11.patch %if 0%{?rhel} ExclusiveArch: %{ix86} x86_64 %else # LuaJIT arches ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 %endif BuildRequires: make automake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cmake >= 2.6.0 BuildRequires: irrlicht-devel BuildRequires: bzip2-devel gettext-devel sqlite-devel zlib-devel libzstd-devel BuildRequires: libpng-devel libjpeg-turbo-devel libXxf86vm mesa-libGL-devel BuildRequires: desktop-file-utils BuildRequires: systemd BuildRequires: openal-soft-devel BuildRequires: libvorbis-devel BuildRequires: jsoncpp-devel BuildRequires: libcurl-devel BuildRequires: luajit-devel BuildRequires: leveldb-devel BuildRequires: gmp-devel BuildRequires: libappstream-glib BuildRequires: freetype-devel BuildRequires: openssl-libs BuildRequires: spatialindex-devel BuildRequires: doxygen BuildRequires: ncurses-devel BuildRequires: libogg-devel BuildRequires: libXxf86vm-devel BuildRequires: kernel-devel Requires: %{name}-server = %{version}-%{release} Requires: %{name}-data-game = %{version}-%{release} Requires: hicolor-icon-theme %description Game of mining, crafting and building in the infinite world of cubic blocks with optional hostile creatures, features both single and the network multiplayer mode, mods. Public multiplayer servers are available. %package server Summary: Minetest multiplayer server Requires(pre): shadow-utils Requires(post): systemd Requires(preun): systemd Requires(postun): systemd Requires: %{name}-data-common = %{version}-%{release} Recommends: %{name}-data-game = %{version}-%{release} %description server Minetest multiplayer server. This package does not require X Window System. %package data-common Summary: Minetest common data between client and server %description data-common Minetest common data. This package is shared between minetest server and client. %package data-game Summary: Minetest default and minimal game data Requires: %{name}-data-common = %{version}-%{release} %description data-game Minetest default game data. This package is optional for a server if you install your own game. %prep %autosetup -p1 -n minetest pushd games tar xf %{SOURCE6} #mv %{name}_game-%{version} %{name}_game popd cp %{SOURCE7} doc/ # purge bundled jsoncpp and lua, and gmp :P rm -vrf lib/jsoncpp lib/lua lib/gmp find . -name .gitignore -print -delete find . -name .travis.yml -print -delete find . -name .luacheckrc -print -delete %build %ifarch aarch64 %define _lto_cflags %{nil} %endif %cmake -DBUILD_SERVER=TRUE -DENABLE_SYSTEM_JSONCPP=ON -DBUILD_UNITTESTS=TRUE %cmake_build %install %cmake_install # Add desktop file desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} # Systemd unit file mkdir -p %{buildroot}%{_unitdir}/ install -m 0644 %{SOURCE2} %{buildroot}%{_unitdir} # /etc/rsyslog.d/minetest.conf mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d/ install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/rsyslog.d/%{name}.conf # /etc/logrotate.d/minetest mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d/ install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}-server # /var/lib/minetest directory for server data files install -d -m 0775 %{buildroot}%{_sharedstatedir}/%{name}/ install -d -m 0775 %{buildroot}%{_sharedstatedir}/%{name}/default/ # /etc/minetest/default.conf install -d -m 0775 %{buildroot}%{_sysconfdir}/%{name}/ install -m 0664 minetest.conf.example %{buildroot}%{_sysconfdir}/%{name}/default.conf # /etc/sysconfig/default.conf install -d -m 0775 %{buildroot}%{_sysconfdir}/sysconfig/%{name}/ install -m 0664 %{SOURCE8} %{buildroot}%{_sysconfdir}/sysconfig/%{name} cp -p %{SOURCE5} README.fedora # Move doc directory back to the sources mkdir __doc mv %{buildroot}%{_datadir}/doc/%{name}/* __doc rm -rf %{buildroot}%{_datadir}/doc/%{name} %find_lang %{name} #move appdata file to the proper location, and validate mkdir -p %{buildroot}%{_datadir}/appdata mv %{buildroot}%{_datadir}/metainfo/net.minetest.minetest.appdata.xml %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml appstream-util validate-relax --nonet %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml %pre server getent group %{name} >/dev/null || groupadd -r %{name} getent passwd %{name} >/dev/null || \ useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \ -c "Minetest multiplayer server" %{name} exit 0 %post server %systemd_post %{name}@default.service %preun server %systemd_preun %{name}@default.service %postun server %systemd_postun_with_restart %{name}@default.service %files -f %{name}.lang %license doc/lgpl-2.1.txt %doc README.fedora %{_bindir}/%{name} %{_datadir}/%{name}/client %{_datadir}/%{name}/fonts %{_datadir}/%{name}/textures %{_datadir}/applications/%{name}.desktop %exclude %{_datadir}/applications/net.%{name}.%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man6/%{name}.* %{_datadir}/appdata/%{name}.appdata.xml %files server %license doc/lgpl-2.1.txt %doc README.md doc/world_format.txt doc/protocol.txt README.fedora %{_bindir}/%{name}server %{_unitdir}/%{name}@.service %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server %config(noreplace) %{_sysconfdir}/rsyslog.d/%{name}.conf %attr(-,minetest,minetest)%{_sharedstatedir}/%{name}/ %attr(-,minetest,minetest)%{_sysconfdir}/%{name}/ %attr(-,minetest,minetest)%{_sysconfdir}/sysconfig/%{name}/ %{_mandir}/man6/%{name}server.* %files data-common %license doc/lgpl-2.1.txt %{_datadir}/%{name}/builtin %files data-game %license doc/lgpl-2.1.txt %{_datadir}/%{name}/games %changelog %autochangelog