summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Duthil2016-03-19 15:54:19 -0400
committerSebastien Duthil2016-03-19 15:57:26 -0400
commit064a76e0f6f842381a47c3446e39fdfb68472436 (patch)
treed1ba3a2a7e9862b4f18ebdce4a08e066cb8cb128
parent2f5f863d927d7b3973b4b3a8c2f21a2e40953391 (diff)
downloadaur-064a76e0f6f842381a47c3446e39fdfb68472436.tar.gz
add user factorio + service file
-rw-r--r--.SRCINFO9
-rw-r--r--PKGBUILD27
-rw-r--r--factorio-headless.conf11
-rw-r--r--factorio-headless.install12
-rw-r--r--factorio-headless.service17
-rw-r--r--factorio-headless.sysusers1
6 files changed, 66 insertions, 11 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3c85b5d18b94..20c40a72f84d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,16 +1,23 @@
pkgbase = factorio-headless
pkgdesc = A 2D game about building and maintaining factories - Server version
pkgver = 0.12.26
- pkgrel = 3
+ pkgrel = 4
url = http://www.factorio.com/
+ install = factorio-headless.install
arch = x86_64
license = custom: commercial
conflicts = factorio
conflicts = factorio-demo
conflicts = factorio-experimental
source = LICENSE
+ source = factorio-headless.service
+ source = factorio-headless.conf
+ source = factorio-headless.sysusers
source = factorio_headless_x64_0.12.26.tar.gz::http://www.factorio.com/get-download/0.12.26/headless/linux64
sha256sums = 67ec2f88afff5d7e0ca5fd3301b5d98655269c161a394368fa0ec49fbc0c0e21
+ sha256sums = 7ba176d90c55c86312f59aa664cbe33e72dea2fc88a746f0c3029cee84837ab6
+ sha256sums = 082f6da53d1a90c2aa040e35d8912b02084c7d2011c9f8d784487723e05597dc
+ sha256sums = 87dae15d1bcfb4683faea9c66498bd916bd27f8aa0dc724c4e21076dcf17da64
sha256sums = a7891432c675cc9ac3577c627e348d5f0aca9c06478a659a4e703f5813c79dad
pkgname = factorio-headless
diff --git a/PKGBUILD b/PKGBUILD
index 9815bfff63bc..5878be12eef2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,31 +1,38 @@
# Maintainer: Sebastien Duthil <duthils@free.fr>
+# Inspiration for service and config files: https://github.com/Bisa/factorio-init
pkgname=factorio-headless
pkgver=0.12.26
-pkgrel=3
+pkgrel=4
pkgdesc="A 2D game about building and maintaining factories - Server version"
arch=('x86_64')
url="http://www.factorio.com/"
license=('custom: commercial')
conflicts=('factorio' 'factorio-demo' 'factorio-experimental')
+install=factorio-headless.install
source=(LICENSE
+ factorio-headless.service
+ factorio-headless.conf
+ factorio-headless.sysusers
factorio_headless_x64_${pkgver}.tar.gz::http://www.factorio.com/get-download/${pkgver}/headless/linux64)
sha256sums=('67ec2f88afff5d7e0ca5fd3301b5d98655269c161a394368fa0ec49fbc0c0e21'
+ '7ba176d90c55c86312f59aa664cbe33e72dea2fc88a746f0c3029cee84837ab6'
+ '082f6da53d1a90c2aa040e35d8912b02084c7d2011c9f8d784487723e05597dc'
+ '87dae15d1bcfb4683faea9c66498bd916bd27f8aa0dc724c4e21076dcf17da64'
'a7891432c675cc9ac3577c627e348d5f0aca9c06478a659a4e703f5813c79dad')
+
# no modifications needed, the executable looks for:
# - data in /usr/share/factorio
# - config in ~/.factorio
package() {
- cd "$srcdir/factorio"
-
- install -d "${pkgdir}/usr/bin"
- install -d "${pkgdir}/usr/share/applications"
- install -g games -m 775 -d "${pkgdir}/usr/share/factorio"
- install -d "${pkgdir}/usr/share/licenses/factorio"
+ install -Dm755 "${srcdir}/factorio/bin/x64/factorio" "$pkgdir/usr/bin/factorio"
+ install -d "${pkgdir}/usr/share/factorio"
+ cp -r "${srcdir}/factorio/data"/* "${pkgdir}/usr/share/factorio"
+ install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/factorio-headless/LICENSE"
- install -m755 "bin/x64/factorio" "$pkgdir/usr/bin/factorio"
- cp -r data/* "$pkgdir/usr/share/factorio"
- install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/factorio/LICENSE"
+ install -Dm644 "${srcdir}/factorio-headless.sysusers" "$pkgdir/usr/lib/sysusers.d/factorio.conf"
+ install -Dm644 "${srcdir}/factorio-headless.conf" "${pkgdir}/etc/conf.d/factorio"
+ install -Dm644 "${srcdir}/factorio-headless.service" "${pkgdir}/usr/lib/systemd/system/factorio.service"
}
diff --git a/factorio-headless.conf b/factorio-headless.conf
new file mode 100644
index 000000000000..85bb7125e83e
--- /dev/null
+++ b/factorio-headless.conf
@@ -0,0 +1,11 @@
+# The latency expected between peers (milliseconds)
+# Try to set this to the highest latency + 30
+# If peers A and B have a latency of 100 between each other, set this to 130
+LATENCY=250
+
+# The number of minutes between each autosave
+AUTOSAVE_INTERVAL=10
+# The number of autosaves to use for rotation
+AUTOSAVE_SLOTS=3
+
+SAVE_NAME=factorio-service-save
diff --git a/factorio-headless.install b/factorio-headless.install
new file mode 100644
index 000000000000..7ec95408ea66
--- /dev/null
+++ b/factorio-headless.install
@@ -0,0 +1,12 @@
+post_install() {
+ systemd-sysusers factorio.conf
+ [[ -d /var/lib/factorio ]] || install -dm 770 -o factorio -g games /var/lib/factorio
+
+ # create empty game
+ [[ -f /var/lib/factorio/.factorio/saves/factorio-service-save.zip ]] || su - factorio -s /bin/sh -c 'factorio --create factorio-service-save 2>&1 >/dev/null'
+}
+
+post_upgrade() {
+ (( $(vercmp $2 '0.12.26-4') < 0 )) && chown -R root:root /usr/share/factorio || true
+ (( $(vercmp $2 '0.12.26-4') < 0 )) && post_install "$1" || true
+}
diff --git a/factorio-headless.service b/factorio-headless.service
new file mode 100644
index 000000000000..f6240a6a9ec2
--- /dev/null
+++ b/factorio-headless.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Factorio game headless server
+Documentation=http://www.factorio.com/
+After=network.target
+
+[Service]
+User=factorio
+EnvironmentFile=/etc/conf.d/factorio
+TimeoutStartSec=5
+ExecStart=/usr/bin/factorio --start-server $SAVE_NAME --autosave-interval $AUTOSAVE_INTERVAL --autosave-slots $AUTOSAVE_SLOTS --latency-ms $LATENCY --disallow-commands --peer-to-peer
+TimeoutStopSec=10
+KillSignal=SIGINT
+RestartSec=10
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/factorio-headless.sysusers b/factorio-headless.sysusers
new file mode 100644
index 000000000000..92ebe87c59b3
--- /dev/null
+++ b/factorio-headless.sysusers
@@ -0,0 +1 @@
+u factorio - "Factorio daemon user" /var/lib/factorio