File minetest.spec of Package minetest

#
# spec file for package minetest
#


%define minetestuser %{name}
%define minetestgroup %{name}
Name:           minetest
Version:        202405281402+5.9.0+f836a47bc
Release:        0
Summary:        A InfiniMiner/Minecraft inspired game
License:        CC-BY-SA-3.0 AND LGPL-2.1-or-later
Group:          Amusements/Games/3D/Simulation
URL:            https://minetest.org
Source:         minetest_202405281402+5.9.0+f836a47bc.tar.xz
%if 0%{?suse_version}
Requires(pre):  shadow
%endif
BuildRequires:  cmake
BuildRequires:  doxygen
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  gettext
BuildRequires:  gmp-devel
BuildRequires:  hicolor-icon-theme
BuildRequires:  libXxf86vm-devel
BuildRequires:  libjpeg-devel
BuildRequires:  libzstd-devel
BuildRequires:  ncurses-devel
BuildRequires:  SDL2-devel
BuildRequires:  desktop-file-utils
BuildRequires:  pkgconfig
BuildRequires:  spatialindex-devel
BuildRequires:  systemd-rpm-macros
BuildRequires:  pkgconfig(bzip2)
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(gl)
BuildRequires:  pkgconfig(jsoncpp)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  pkgconfig(libpng)
BuildRequires:  pkgconfig(luajit)
BuildRequires:  pkgconfig(openal)
BuildRequires:  pkgconfig(sqlite3)
BuildRequires:  pkgconfig(vorbis)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(xi)
BuildRequires:  pkgconfig(zlib)
BuildRequires:  leveldb-devel
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(hiredis)
BuildRequires:  postgresql-devel
%if 0%{?suse_version}
BuildRequires:  postgresql-server-devel
%else
BuildRequires:  libpq-devel
%endif
BuildRequires:  openssl-devel
## Workaround for CMake's FindPostgreSQL.cmake depending on internal
## server headers even if just building a client application.
# BuildRequires:  postgresql-server-devel
Provides:       %{name}-data = %{version}
Conflicts:      %{name}-data < %{version}
Conflicts:     %{name}-game
Conflicts:     %{name}-lang
Provides:       %{name}-runtime = %{version}
Provides:       bundled(irrlicht)
Provides:       group(%{minetestgroup})
Provides:       user(%{minetestuser})

%description
An infinite-world block sandbox game and a game engine, inspired by
InfiniMiner, Minecraft and the like.

%prep
%setup -q

%build
%undefine _hardened_build
%undefine _annotated_build
%if 0%{?fedora_version} > 33
%define _legacy_common_support 1
%endif
%cmake -DPNG_PNG_INCLUDE_DIR=$(pkg-config libpng --variable=includedir) \
%ifarch aarch64
  -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -fpermissive -Wall -mbranch-protection=none" \
  -DCMAKE_C_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -fpermissive -Wall -mbranch-protection=none" \
%else
  -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -fpermissive -Wall" \
  -DCMAKE_C_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -fpermissive -Wall" \
%ifarch  %{ix86}
  -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -march=pentium3 -mtune=nocona -mmmx -msse -msse2 -mfpmath=sse -Wall" \
  -DCMAKE_C_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -march=pentium3 -mtune=nocona -mmmx -msse -msse2 -mfpmath=sse -Wall" \
%endif 
%ifarch  x86_64
  -DCMAKE_CXX_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -mtune=nocona -mmmx -msse -msse2 -mfpmath=sse -Wall" \
  -DCMAKE_C_FLAGS="-O3 -fomit-frame-pointer -fexpensive-optimizations -mtune=nocona -mmmx -msse -msse2 -mfpmath=sse -Wall" \
%endif 
%endif
	-DCUSTOM_DOCDIR="%{_docdir}/%{name}" \
	-DCUSTOM_LOCALEDIR="%{_datadir}/locale" \
	-DCUSTOM_SHAREDIR="%{_datadir}/games/%{name}" \
	-DENABLE_CURSES=1 \
	-DRUN_IN_PLACE=0 \
	-DCMAKE_VERBOSE_MAKEFILE=ON \
	-DENABLE_SYSTEM_JSONCPP=1 \
	-DENABLE_SYSTEM_GMP=1 \
	-DJSON_INCLUDE_DIR=/usr/include/jsoncpp \
	-DENABLE_GETTEXT=1 \
	-DENABLE_FREETYPE=1 \
    -DFREETYPE_INCLUDE_DIR_freetype2=/usr/include/freetype2 \
    -DFREETYPE_INCLUDE_DIR_ft2build=/usr/include \
	-DCMAKE_INSTALL_PREFIX=/usr \
	-DBUILD_SERVER=1 \
    -DBUILD_CLIENT=1  \
	-DENABLE_UPDATE_CHECKER=OFF \
  -DENABLE_LEVELDB=ON \
  -DENABLE_REDIS=ON \
  -DENABLE_POSTGRESQL=ON \
%{nil}

%if 0%{?fedora_version} > 32
%cmake_build
%else
%if 0%{?suse_version}
%cmake_build
%else
%make_build
%endif
%endif

%install
%if 0%{?fedora_version} > 32
%cmake_install
%else
%if 0%{?suse_version}
%cmake_install
%else
%make_install
%endif
%endif

# Clean up.
%fdupes %{buildroot}%{_datadir}/
mkdir -p %{buildroot}%{_localstatedir}/games/%{name}/
cat >%{buildroot}%{_sysconfdir}/%{name}/%{name}.env.example <<%%
# mintestet options for further configuration, e.g. to set the gameid with "--gameid ..."
MINETEST_OPTIONS=""
%%


%post
desktop-file-validate %{_datadir}/applications/net.minetest.minetest.desktop

%pre
getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{minetestgroup}
getent passwd %{name} > /dev/null || \
  %{_sbindir}/useradd -r -g %{minetestgroup} -d %{_localstatedir}/games/%{name} \
  -s /sbin/nologin -c "%{name}server" %{minetestuser}

%files
%license LICENSE.txt
%dir %{_datadir}/metainfo/
%dir %{_localstatedir}/games/%{name}/
%doc %{_docdir}/%{name}/
%{_bindir}/%{name}
%{_bindir}/%{name}server
%{_datadir}/applications/net.minetest.%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.*
%{_datadir}/metainfo/*%{name}.appdata.xml
%attr(0755,%{minetestuser},%{minetestgroup}) %{_localstatedir}/games/%{name}/
%{_datadir}/games/%{name}/
%{_datadir}/locale/
%{_datadir}/man/man6/
%{_sysconfdir}/%{name}

%changelog
openSUSE Build Service is sponsored by