[minetest] Multiple server cfg systemd unit, fix perms on cfgs

Igor Gnatenko ignatenkobrain at fedoraproject.org
Mon Nov 25 19:08:32 UTC 2013


commit c7668f4ba6b37d1cefe5461676aefc0530f6ade5
Author: Igor Gnatenko <i.gnatenko.brain at gmail.com>
Date:   Mon Nov 25 23:03:00 2013 +0400

    Multiple server cfg systemd unit, fix perms on cfgs
    
    - add support of multiple server cfgs
    - allow acces for group to server parts
    - Shared irrlicht (patch from gentoo)
    
    Signed-off-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>

 default.conf                         |    1 +
 minetest-0.4.8-shared-irrlicht.patch |   23 +++++++++++++
 minetest.service                     |   13 -------
 minetest.spec                        |   61 ++++++++++++++++++++-------------
 minetest at .service                    |   12 +++++++
 5 files changed, 73 insertions(+), 37 deletions(-)
---
diff --git a/default.conf b/default.conf
new file mode 100644
index 0000000..c56e19d
--- /dev/null
+++ b/default.conf
@@ -0,0 +1 @@
+PORT=30000
diff --git a/minetest-0.4.8-shared-irrlicht.patch b/minetest-0.4.8-shared-irrlicht.patch
new file mode 100644
index 0000000..b552c09
--- /dev/null
+++ b/minetest-0.4.8-shared-irrlicht.patch
@@ -0,0 +1,23 @@
+commit 11d35e62fe13b47c5b34139559e650dfe6ebbd84
+Author: hasufell <julian.ospald at googlemail.com>
+Date:   Sat Jun 8 13:40:30 2013 +0200
+
+    CMAKE: use shared lib from Irrlicht
+
+diff --git a/cmake/Modules/FindIrrlicht.cmake b/cmake/Modules/FindIrrlicht.cmake
+index bd00422..4632993 100644
+--- a/cmake/Modules/FindIrrlicht.cmake
++++ b/cmake/Modules/FindIrrlicht.cmake
+@@ -50,10 +50,11 @@ else()
+ 		/usr/include/irrlicht
+ 	)
+ 
+-	FIND_LIBRARY(IRRLICHT_LIBRARY NAMES libIrrlicht.a Irrlicht
++	FIND_LIBRARY(IRRLICHT_LIBRARY NAMES libIrrlicht.so Irrlicht
+ 		PATHS
+ 		/usr/local/lib
+ 		/usr/lib
++		/usr/lib64
+ 	)
+ endif()
+ 
diff --git a/minetest.spec b/minetest.spec
index e7d3269..dc7f062 100644
--- a/minetest.spec
+++ b/minetest.spec
@@ -1,29 +1,26 @@
 Name:     minetest
 Version:  0.4.8
-Release:  1%{?dist}
+Release:  2%{?dist}
 Summary:  Multiplayer infinite-world block sandbox with survival mode
 
 # bundled(jthread) uses MIT license
 License:  LGPLv2+ and CC-BY-SA and MIT
 URL:      http://minetest.net/
 
-# wget https://raw.github.com/RussianFedora/minetest/fedora/minetest.desktop
-# wget https://raw.github.com/RussianFedora/minetest/fedora/minetest.service
-# wget https://raw.github.com/RussianFedora/minetest/fedora/minetest.rsyslog
-# wget https://raw.github.com/RussianFedora/minetest/fedora/minetest.logrotate
-# wget https://raw.github.com/RussianFedora/minetest/fedora/minetest.README
-
 Source0:  https://github.com/minetest/minetest/archive/%{version}/%{name}-%{version}.tar.gz
 Source1:  %{name}.desktop
-Source2:  %{name}.service
+Source2:  %{name}@.service
 Source3:  %{name}.rsyslog
 Source4:  %{name}.logrotate
 Source5:  %{name}.README
 Source6:  https://github.com/minetest/minetest_game/archive/%{version}/%{name}_game-%{version}.tar.gz
 Source7:  http://www.gnu.org/licenses/lgpl-2.1.txt
+Source8:  default.conf
 
 # https://github.com/minetest/minetest/pull/954
 Patch0:   0001-FindJson.cmake-now-will-correctly-find-system-module.patch
+# Shared irrlicht (patch from gentoo)
+Patch1:   minetest-0.4.8-shared-irrlicht.patch
 
 # https://fedorahosted.org/fpc/ticket/347
 Provides: bundled(jthread)
@@ -37,6 +34,9 @@ BuildRequires:  systemd
 BuildRequires:  openal-soft-devel
 BuildRequires:  libvorbis-devel
 BuildRequires:  jsoncpp-devel
+BuildRequires:  libcurl-devel
+# TODO: add unicode patches to irrlicht
+#BuildRequires:  freetype-devel
 
 Requires:       %{name}-server = %{version}-%{release}
 Requires:       hicolor-icon-theme
@@ -60,6 +60,7 @@ Minetest multiplayer server. This package does not require X Window System
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 pushd games
 tar xf %{SOURCE6}
@@ -72,6 +73,7 @@ cp %{SOURCE7} doc/
 rm -rf src/json
 
 %build
+# -DENABLE_FREETYPE=ON needed for Unicode in text chat
 %cmake .
 make %{?_smp_mflags}
 
@@ -82,23 +84,28 @@ make %{?_smp_mflags}
 desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
 
 # Systemd unit file
-mkdir -p %{buildroot}%{_unitdir}
-install -p -m0644 %{SOURCE2} %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_unitdir}/
+install -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}
 
 # /etc/rsyslog.d/minetest.conf
-mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d
-install -p -m0644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/rsyslog.d/%{name}.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 -p -m0644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}-server
+mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d/
+install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}-server
 
 # /var/lib/minetest directory for server data files
-mkdir -p %{buildroot}%{_sharedstatedir}/%{name} 
+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/minetest.conf
-mkdir -p %{buildroot}%{_sysconfdir}
-install -p -m0644 minetest.conf.example %{buildroot}%{_sysconfdir}/%{name}.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
 
@@ -129,13 +136,13 @@ getent passwd %{name} >/dev/null || \
 exit 0
 
 %post server
-%systemd_post %{name}.service
+%systemd_post %{name}@default.service
 
 %preun server
-%systemd_preun %{name}.service
+%systemd_preun %{name}@default.service
 
 %postun server
-%systemd_postun_with_restart %{name}.service 
+%systemd_postun_with_restart %{name}@default.service 
 
 # %%files -f %%{name}.lang
 %files
@@ -149,14 +156,20 @@ exit 0
 %files server
 %doc README.txt doc/lgpl-2.1.txt src/jthread/LICENSE.MIT doc/mapformat.txt doc/protocol.txt README.fedora
 %{_bindir}/%{name}server
-%{_unitdir}/%{name}.service
-%config(noreplace) %{_sysconfdir}/%{name}.conf
+%{_unitdir}/%{name}@.service
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server
 %config(noreplace) %{_sysconfdir}/rsyslog.d/%{name}.conf
-%attr(0755,minetest,minetest) %dir %{_sharedstatedir}/%{name}
+%attr(-,minetest,minetest)%{_sharedstatedir}/%{name}/
+%attr(-,minetest,minetest)%{_sysconfdir}/%{name}/
+%attr(-,minetest,minetest)%{_sysconfdir}/sysconfig/%{name}/
 %{_mandir}/man6/minetestserver.*
 
 %changelog
+* Mon Nov 25 2013 Igor Gnatenko <i.gnatenko.brain at gmail.com> - 0.4.8-2
+- add support of multiple server cfgs
+- allow acces for group to server parts
+- Shared irrlicht (patch from gentoo)
+
 * Sun Nov 24 2013 Igor Gnatenko <i.gnatenko.brain at gmail.com> - 0.4.8-1
 - Update to 0.4.8 (Changelog: http://dev.minetest.net/Changelog#0.4.7_.E2.86.92_0.4.8)
 
diff --git a/minetest at .service b/minetest at .service
new file mode 100644
index 0000000..c2d91a9
--- /dev/null
+++ b/minetest at .service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Minetest multiplayer server w/ %i.conf server config
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=/etc/sysconfig/minetest/%i.conf
+User=minetest
+Type=simple
+ExecStart=/usr/bin/minetestserver --config /etc/minetest/%i.conf --port $PORT --map-dir /var/lib/minetest/%i/
+
+[Install]
+WantedBy=multi-user.target


More information about the scm-commits mailing list