summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrent s2017-04-14 19:07:42 -0400
committerbrent s2017-04-14 19:07:42 -0400
commit920dba3cbb778978798cac4129180d2cee05101f (patch)
tree89ba17feb4172ab46d2d9eaea91e4987bed1c8c1
parentdccca5255f9ec83bef5a52f207c5e023ff5a6212 (diff)
downloadaur-920dba3cbb778978798cac4129180d2cee05101f.tar.gz
i think i finally have something that relatively works.
-rw-r--r--.SRCINFO25
-rw-r--r--PKGBUILD131
-rw-r--r--dirtree.lst36
-rw-r--r--dirtree.lst.sigbin0 -> 566 bytes
-rw-r--r--linktree.lst1
-rw-r--r--linktree.lst.sigbin0 -> 566 bytes
-rwxr-xr-x[-rw-r--r--]nquakesv-init.py102
-rw-r--r--nquakesv-init.py.sigbin0 -> 566 bytes
-rw-r--r--nquakesv.install19
-rwxr-xr-xnquakesv.run9
-rw-r--r--nquakesv.run.sigbin543 -> 566 bytes
-rw-r--r--nquakesv@.service11
-rw-r--r--nquakesv@.service.sigbin0 -> 566 bytes
13 files changed, 226 insertions, 108 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 4449f6bd3cb8..9a4bf7b43c7b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,18 +1,17 @@
# Generated by mksrcinfo v8
-# Fri Apr 14 13:29:30 UTC 2017
+# Fri Apr 14 23:07:42 UTC 2017
pkgbase = nquakesv
pkgdesc = The easiest, quickest, and most popular QuakeWorld server.
pkgver = 1.4
- pkgrel = 3
+ pkgrel = 2
url = http://nquake.com/
install = nquakesv.install
arch = any
license = GPL2
license = custom
+ makedepends = dos2unix
depends = unzip
- depends = ezquake
depends = python
- conflicts = nquake
noextract = qsw106.zip
noextract = sv-bin-x.zip
source = http://fnu.nquake.com/sv-gpl.zip
@@ -22,6 +21,10 @@ pkgbase = nquakesv
source = CC0-1.0::https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt
source = nquakesv.run
source = README.arch
+ source = dirtree.lst
+ source = linktree.lst
+ source = nquakesv-init.py
+ source = nquakesv@.service
source = sv-gpl.zip.sig
source = sv-non-gpl.zip.sig
source = CC0-1.0.sig
@@ -29,13 +32,25 @@ pkgbase = nquakesv
source = sv-configs.zip.sig
source = nquakesv.run.sig
source = README.arch.sig
+ source = dirtree.lst.sig
+ source = linktree.lst.sig
+ source = nquakesv-init.py.sig
+ source = nquakesv@.service
sha512sums = 6a07601f56aec5d88b3463c09c4482a2d76e5d7efd8ddc24c1b4e9b662152f62070dbb5409c1a801560872c725b5b8b1d41437b7b99c74bdcc1ae88d2be91121
sha512sums = 21e6ef7a58c03e342b501a345fd777472b9d109a95201fa859c99d626845d01cf90d0ce6c42f76f5878795f1bcd549128250b9f8e82fceedb8b1f6534b9a1e32
sha512sums = 32df717a4a8f121358243333c30d8d0e5d43ee04f3ee8175a894199b8932e90ebedc6b687c25207c6191dbf25363307f09f8c1dc767b58e254e015c150217384
sha512sums = 93d6879712f7bdd56e3ab8f018810bb66a2d4d89e7dfcabf53668eaf23dd984959a1fbe4ecaa743e98b9be2b65de5b2746529b195c78b0c1ff0996e32d8fdd1b
sha512sums = 1eb4436f8d58766cbe99db97e5e8c0db8a706376afd291c337de1ba7a6b066d3791dc85ad034bdd54ea336bed6e6e8e7a037d8b04b2773c9c7517b9d9921d1fa
- sha512sums = e7dac93556d63c994d37f2361a48408c924426b81395cacb3229acb3020df66dce62e5734686fba44cc7581567e28e5345f6d7a5638c0c97b8effdab78756111
+ sha512sums = 61fdec91aeee6b773d451b7407bca55fba5cd152654385b208c9a63c4e92c9f3fba2d8ad45b09585134ba5e1e7f6796c4ad706e5e564bbf3617026994cf30822
sha512sums = b083d3884c9885ab402e58c95ec3b5288ee06afce2bab83af1610c9d2ee174ce7b77748647499cb82d9a3f4686d936e9a91b5feccae0818addd236907952c3d1
+ sha512sums = 2bd1a5f1aaec1332f1812d416568f8cd6d1506166f6863743e5c66c83ad5cc74e2415470c28b9f75cb2e20f04c51b930474bbb8073f2f47cb63765cfb144fda3
+ sha512sums = 562b17c114f4bc92116acce9a41dbb3d1031ae4ab5ae844e42a61ad3304ae95c86c299069c34966681af44516b5c58b05133441715f2cf4234697a9b3f58c250
+ sha512sums = 21d279b5494d2cd777693eade8dde35c5ba7a6dba395828153d1b390ee768fb3ccb57d4b9c4a1dd5bc47d061a3242d9d659c23f310360c76cff95962baaf9a86
+ sha512sums = 157cba05212f59c978a0d08f98fbd2f8b888f43d185db655f4517f70470eb304fcdfcfca26c01a244f3cbd2fd79290461971ca8109ae1ce59129fa6ba89f1347
+ sha512sums = SKIP
+ sha512sums = SKIP
+ sha512sums = SKIP
+ sha512sums = SKIP
sha512sums = SKIP
sha512sums = SKIP
sha512sums = SKIP
diff --git a/PKGBUILD b/PKGBUILD
index 1f6952e0c199..8fe60fc9a264 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -11,12 +11,14 @@ validpgpkeys=('748231EBCBD808A14F5E85D28C004C2F93481F6B')
pkgname=('nquakesv')
pkgver=1.4
-pkgrel=3
+pkgrel=2
pkgdesc="The easiest, quickest, and most popular QuakeWorld server."
url="http://nquake.com/"
license=('GPL2' 'custom')
-depends=('unzip' 'ezquake' 'python')
-conflicts=('nquake')
+#depends=('unzip' 'ezquake' 'python')
+depends=('unzip' 'python')
+makedepends=('dos2unix')
+#conflicts=('nquake')
arch=('any')
install=nquakesv.install
_pkgname=nquake
@@ -36,13 +38,21 @@ source=("${_nQ_MIRROR}/sv-gpl.zip"
"CC0-1.0::https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt"
"nquakesv.run"
"README.arch"
+ "dirtree.lst"
+ "linktree.lst"
+ "nquakesv-init.py"
+ "nquakesv@.service"
"sv-gpl.zip.sig"
"sv-non-gpl.zip.sig"
"CC0-1.0.sig"
"qsw106.zip.sig"
"sv-configs.zip.sig"
"nquakesv.run.sig"
- "README.arch.sig")
+ "README.arch.sig"
+ "dirtree.lst.sig"
+ "linktree.lst.sig"
+ "nquakesv-init.py.sig"
+ "nquakesv@.service")
source_x86_64=("${_nQ_MIRROR}/sv-bin-x64.zip"
"sv-bin-x64.zip.sig")
@@ -60,13 +70,21 @@ fi
noextract=('qsw106.zip'
"sv-bin-x${BITNESS}.zip")
-sha512sums=('6a07601f56aec5d88b3463c09c4482a2d76e5d7efd8ddc24c1b4e9b662152f62070dbb5409c1a801560872c725b5b8b1d41437b7b99c74bdcc1ae88d2be91121'
- '21e6ef7a58c03e342b501a345fd777472b9d109a95201fa859c99d626845d01cf90d0ce6c42f76f5878795f1bcd549128250b9f8e82fceedb8b1f6534b9a1e32'
- '32df717a4a8f121358243333c30d8d0e5d43ee04f3ee8175a894199b8932e90ebedc6b687c25207c6191dbf25363307f09f8c1dc767b58e254e015c150217384'
- '93d6879712f7bdd56e3ab8f018810bb66a2d4d89e7dfcabf53668eaf23dd984959a1fbe4ecaa743e98b9be2b65de5b2746529b195c78b0c1ff0996e32d8fdd1b'
- '1eb4436f8d58766cbe99db97e5e8c0db8a706376afd291c337de1ba7a6b066d3791dc85ad034bdd54ea336bed6e6e8e7a037d8b04b2773c9c7517b9d9921d1fa'
- 'e7dac93556d63c994d37f2361a48408c924426b81395cacb3229acb3020df66dce62e5734686fba44cc7581567e28e5345f6d7a5638c0c97b8effdab78756111'
- 'b083d3884c9885ab402e58c95ec3b5288ee06afce2bab83af1610c9d2ee174ce7b77748647499cb82d9a3f4686d936e9a91b5feccae0818addd236907952c3d1'
+sha512sums=('6a07601f56aec5d88b3463c09c4482a2d76e5d7efd8ddc24c1b4e9b662152f62070dbb5409c1a801560872c725b5b8b1d41437b7b99c74bdcc1ae88d2be91121' # sv-gpl.zip
+ '21e6ef7a58c03e342b501a345fd777472b9d109a95201fa859c99d626845d01cf90d0ce6c42f76f5878795f1bcd549128250b9f8e82fceedb8b1f6534b9a1e32' # sv-non-gpl.zip
+ '32df717a4a8f121358243333c30d8d0e5d43ee04f3ee8175a894199b8932e90ebedc6b687c25207c6191dbf25363307f09f8c1dc767b58e254e015c150217384' # qsw106.zip
+ '93d6879712f7bdd56e3ab8f018810bb66a2d4d89e7dfcabf53668eaf23dd984959a1fbe4ecaa743e98b9be2b65de5b2746529b195c78b0c1ff0996e32d8fdd1b' # sv-configs.zip
+ '1eb4436f8d58766cbe99db97e5e8c0db8a706376afd291c337de1ba7a6b066d3791dc85ad034bdd54ea336bed6e6e8e7a037d8b04b2773c9c7517b9d9921d1fa' # CC0-1.0
+ '61fdec91aeee6b773d451b7407bca55fba5cd152654385b208c9a63c4e92c9f3fba2d8ad45b09585134ba5e1e7f6796c4ad706e5e564bbf3617026994cf30822' # nquakesv.run
+ 'b083d3884c9885ab402e58c95ec3b5288ee06afce2bab83af1610c9d2ee174ce7b77748647499cb82d9a3f4686d936e9a91b5feccae0818addd236907952c3d1' # README.arch
+ '2bd1a5f1aaec1332f1812d416568f8cd6d1506166f6863743e5c66c83ad5cc74e2415470c28b9f75cb2e20f04c51b930474bbb8073f2f47cb63765cfb144fda3' # dirtree.lst
+ '562b17c114f4bc92116acce9a41dbb3d1031ae4ab5ae844e42a61ad3304ae95c86c299069c34966681af44516b5c58b05133441715f2cf4234697a9b3f58c250' # linktree.lst
+ '21d279b5494d2cd777693eade8dde35c5ba7a6dba395828153d1b390ee768fb3ccb57d4b9c4a1dd5bc47d061a3242d9d659c23f310360c76cff95962baaf9a86' # nquakesv-init.py
+ '157cba05212f59c978a0d08f98fbd2f8b888f43d185db655f4517f70470eb304fcdfcfca26c01a244f3cbd2fd79290461971ca8109ae1ce59129fa6ba89f1347' # nquakesv@.service
+ 'SKIP' # onwards are .sig files
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
'SKIP'
'SKIP'
'SKIP'
@@ -75,10 +93,10 @@ sha512sums=('6a07601f56aec5d88b3463c09c4482a2d76e5d7efd8ddc24c1b4e9b662152f62070
'SKIP'
'SKIP')
-sha512sums_x86_64=('eab8feab5148ef9c3d3a8c644cbc7b621b9132c73e1b25cd62eb28a47e9e0ffd9500b665b22c015c9aca2db10a316a5669e7d8569ddaec0a9610e9c477dc225c'
- 'SKIP')
-sha512sums_i686=('c4b32e5f409a603adea54206b0ebbebb1b7907d7a56065e7730ca01931de33258e6f859d3d9805ffaf8dff9bcedea26e8455a016fa36b6d08eaf1540b8bbacad'
- 'SKIP')
+sha512sums_x86_64=('eab8feab5148ef9c3d3a8c644cbc7b621b9132c73e1b25cd62eb28a47e9e0ffd9500b665b22c015c9aca2db10a316a5669e7d8569ddaec0a9610e9c477dc225c' # sv-bin-x64.zip
+ 'SKIP') # "".sig
+sha512sums_i686=('c4b32e5f409a603adea54206b0ebbebb1b7907d7a56065e7730ca01931de33258e6f859d3d9805ffaf8dff9bcedea26e8455a016fa36b6d08eaf1540b8bbacad' # sv-bin-x86.zip
+ 'SKIP') # "".sig
prepare () {
unzip -o -j "qsw106.zip" "ID1/PAK0.PAK"
@@ -90,48 +108,57 @@ prepare () {
}
package () {
-### BASE ##
- # Most of these files are in gpl.zip
- install -d -m 0750 ${pkgdir}/opt/quake/{id1,qw}
- install -d -m 0750 ${pkgdir}/usr/share/${pkgname}
- install -d -m 0750 ${pkgdir}/usr/share/doc/${pkgname}
- install -d -m 0750 ${pkgdir}/usr/share/licenses/${pkgname}
+### SELF-PROVIDED ###
install -d -m 0755 ${pkgdir}/usr/bin
+ install -d -m 0755 ${pkgdir}/usr/share/doc/${pkgname}
+ install -d -m 0755 ${pkgdir}/usr/share/${pkgname}
+ install -d -m 0755 ${pkgdir}/usr/share/${pkgname}/qtv
+ install -d -m 0755 ${pkgdir}/usr/share/licenses/${pkgname}
+ install -d -m 0755 ${pkgdir}/usr/share/${pkgname}/qw/maps
+ install -D -m 0755 ${srcdir}/${pkgname}.run ${pkgdir}/usr/bin/${pkgname}
+ install -D -m 0755 ${srcdir}/${pkgname}-init.py ${pkgdir}/usr/bin/${pkgname}-init
+ install -D -m 0644 ${srcdir}/README.arch ${pkgdir}/usr/share/doc/${pkgname}/README.arch
+ install -D -m 0644 ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/CC0-1.0
+ install -D -m 0644 ${srcdir}/dirtree.lst ${pkgdir}/usr/share/${pkgname}/dirtree.lst
+ install -D -m 0644 ${srcdir}/linktree.lst ${pkgdir}/usr/share/${pkgname}/linktree.lst
+
+### NQUAKE-PROVIDED ##
# Implement the following in ezQuake
#chgrp games ${pkgdir}/usr/bin/ezquake
#chmod 0750 ${pkgdir}/usr/bin/ezquake
# And the Business-End(TM). Do the thing.
- install -D -m 0775 ${srcdir}/nquakesv.run ${pkgdir}/usr/bin/${pkgname}
install -D -m 0775 ${srcdir}/mvdsv ${pkgdir}/usr/share/${pkgname}/mvdsv
install -D -m 0775 ${srcdir}/qwfwd/qwfwd.bin ${pkgdir}/usr/share/${pkgname}/qwfwd
install -D -m 0775 ${srcdir}/qtv/qtv.bin ${pkgdir}/usr/share/${pkgname}/quaketv
- install -D -m 0644 ${srcdir}/README.arch ${pkgdir}/usr/share/doc/${pkgname}/README.arch
- cp -a ${srcdir}/logs ${pkgdir}/usr/share/${pkgname}/.
-
-## DEMO DATA ##
- install -D -m 0644 ${srcdir}/PAK0.PAK ${pkgdir}/opt/quake/id1/pak0.pak.DEMO
+ install -D -m 0644 ${srcdir}/PAK0.PAK ${pkgdir}/usr/share/${pkgname}/id1/pak0.pak.DEMO
install -D -m 0644 ${srcdir}/LICINFO.TXT ${pkgdir}/usr/share/doc/${pkgname}/quake_shareware_license_info.txt
install -D -m 0644 ${srcdir}/README.TXT ${pkgdir}/usr/share/doc/${pkgname}/quake_shareware_readme.txt
install -D -m 0644 ${srcdir}/SLICNSE.TXT ${pkgdir}/usr/share/licenses/${pkgname}/quake_shareware.txt
-
-## NON-FREE ##
- # Most of these files are in non-gpl.zip
- install -d -m 0755 ${pkgdir}/usr/share/${pkgname}/qw/maps
cp -a ${srcdir}/qw/maps/* ${pkgdir}/usr/share/${pkgname}/qw/maps/.
- install -D -m 0644 ${srcdir}/id1/maps/b_exbox2.bsp ${pkgdir}/usr/share/${pkgname}/id1/maps/b_exbox2.bsp
- cp -a ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/.
# And the Business-End(TM). Do the thing.
cp -a ${srcdir}/README ${pkgdir}/usr/share/doc/${pkgname}/readme.txt # nQuake FAQ, credits, etc.
- install -d -m 0755 ${pkgdir}/usr/share/${pkgname}/cfgs/
- install -d -m 0755 ${pkgdir}/usr/share/${pkgname}/modes/
- mv ${srcdir}/ktx/configs/* ${pkgdir}/usr/share/${pkgname}/cfgs/.
- mv ${srcdir}/ktx/modes/* ${pkgdir}/usr/share/${pkgname}/modes/.
- rmdir ${srcdir}/ktx/configs
- mv ${srcdir}/ktx/mvdsv.cfg ${pkgdir}/usr/share/${pkgname}/cfgs/mvdsv-server.cfg
- mv ${srcdir}/ktx/ktx.cfg ${pkgdir}/usr/share/${pkgname}/cfgs/ktx-server.cfg
- mv ${srcdir}/ktx/matchless.cfg ${pkgdir}/usr/share/${pkgname}/cfgs/matchless-server.cfg
- find ${pkgdir}/usr/share/${pkgname}/cfgs -type f -exec chmod 0644 '{}' \;
+
+## KTX ##
+ # Most of these files are in sv-gpl.zip and sv-non-gpl.zip. some are in sv-bin-x${BITNESS}.zip
+ cp -a ${srcdir}/ktx ${pkgdir}/usr/share/${pkgname}/.
+
+## QTV ##
+ cp -a ${srcdir}/qtv/qtv ${pkgdir}/usr/share/${pkgname}/qtv/.
+ install -D -m 0644 ${srcdir}/qtv/qtv.cfg ${pkgdir}/usr/share/${pkgname}/qtv/qtv.cfg
+
+## QWFWD ##
+ install -D -m 0644 ${srcdir}/qwfwd/qwfwd.cfg ${pkgdir}/usr/share/${pkgname}/qwfwd.d/qwfwd.cfg
+
+### CLEANUP ###
+ # TODO: We can remove the makedepends on unix2dos if we use sed for this, but i'd need to do some testing
+ for i in '*.txt' '*.cfg' 'README';
+ do
+ find ${pkgdir}/ -type f -iname "${i}" -exec unix2dos -q '{}' \;
+ done
+ find ${pkgdir}/ -type f -iname "*.sh" -delete
+ rm ${pkgdir}/usr/share/${pkgname}/ktx/portx.cfg
+ rm ${pkgdir}/usr/share/${pkgname}/ktx/demos/demoshere
### FORTRESS ##
# TODO
@@ -151,25 +178,5 @@ package () {
# # And the Business-End(TM). Do the thing.
# cp -a ${srcdir}/arena ${pkgdir}/opt/quake/. # The entire mod
# cp -a ${srcdir}/prox ${pkgdir}/opt/quake/. # QuakeProxy, I think?
-## KTX ##
- # Most of these files are in sv-gpl.zip and sv-non-gpl.zip. some are in sv-bin-x${BITNESS}.zip
- cp -a ${srcdir}/ktx ${pkgdir}/usr/share/${pkgname}/.
- # Let's clean up a bit.
- for f in portx server pwd ban_ip vip_ip;
- do
- rm ${pkgdir}/usr/share/${pkgname}/ktx/${f}.cfg
- done
-## QTV ##
- cp -a ${srcdir}/qtv/qtv ${pkgdir}/usr/share/${pkgname}/.
- install -D -m 0644 ${srcdir}/qtv/qtv.cfg ${pkgdir}/usr/share/${pkgname}/qtv/qtv.cfg
-## QWFWD ##
- install -D -m 0644 ${srcdir}/qwfwd/qwfwd.cfg ${pkgdir}/usr/share/${pkgname}/qwfwd.d/qwfwd.cfg
-
-## FINISHING TOUCHES ##
- # Security is worthless without a modicum of usability. We're kind of stepping on other packagers' toes here, but... c'est la vie.
- # Remind me to submit a patch to https://aur.archlinux.org/packages/ezquake/ (and incorporate into ezquake-git, which I maintain).
- # Scratch that, ezquake uses "users" group. Works for me!
- chgrp -R users ${pkgdir}/usr/share/${pkgname}/
- chgrp users ${pkgdir}/usr/share/${pkgname}
}
diff --git a/dirtree.lst b/dirtree.lst
new file mode 100644
index 000000000000..b4484ea29844
--- /dev/null
+++ b/dirtree.lst
@@ -0,0 +1,36 @@
+addons
+id1
+ktx
+ktx/configs
+ktx/configs/usermodes
+ktx/configs/usermodes/10on10
+ktx/configs/usermodes/1on1
+ktx/configs/usermodes/1on1/ra
+ktx/configs/usermodes/2on2
+ktx/configs/usermodes/3on3
+ktx/configs/usermodes/4on4
+ktx/configs/usermodes/ca
+ktx/configs/usermodes/ctf
+ktx/configs/usermodes/ffa
+ktx/configs/usermodes/matchless
+ktx/demos
+ktx/modes
+ktx/modes/1on1
+ktx/modes/2on2
+ktx/modes/4on4
+ktx/modes/ffa
+ktx/progs
+ktx/sound
+ktx/sound/misc
+ktx/sound/ra
+ktx/sound/rune
+ktx/sound/weapons
+logs
+qtv
+qtv/qtv
+qtv/qtv/levelshots
+qw
+qwfwd
+qw/maps
+qw/maps/ctf
+run
diff --git a/dirtree.lst.sig b/dirtree.lst.sig
new file mode 100644
index 000000000000..8f4736611a95
--- /dev/null
+++ b/dirtree.lst.sig
Binary files differ
diff --git a/linktree.lst b/linktree.lst
new file mode 100644
index 000000000000..4aa88f43e33a
--- /dev/null
+++ b/linktree.lst
@@ -0,0 +1 @@
+qtv/demos ../ktx/demos
diff --git a/linktree.lst.sig b/linktree.lst.sig
new file mode 100644
index 000000000000..658c451a3368
--- /dev/null
+++ b/linktree.lst.sig
Binary files differ
diff --git a/nquakesv-init.py b/nquakesv-init.py
index 93b60f4405fe..c042f8b93d07 100644..100755
--- a/nquakesv-init.py
+++ b/nquakesv-init.py
@@ -1,5 +1,10 @@
#!/usr/bin/env python3
+# Shoutout to VVD on QuakeNet:#qw-dev. It's because of him not understanding why user's homedir
+# overrides are a good thing, even for server software, that I even had to write this bullshit.
+# Seriously. This entire script wouldn't be necessary if mvdsv just supported directory layering like
+# ezquake, darkplaces(-ded), zandronum(-ded), etc. all do. C'mon. Get with the times.
+
import os
import pwd
import datetime
@@ -10,6 +15,7 @@ timestamp = datetime.datetime.now().strftime('%Y.%m.%d_%H%M.%S')
user = pwd.getpwuid(os.geteuid()).pw_name
homedir = os.environ['HOME']
nquakedir = homedir + '/.nquakesv'
+pkgdir = '/usr/share/nquakesv'
def getVer():
try:
@@ -23,39 +29,89 @@ def getVer():
ver = 'unknown'
return(ver)
-def makeDir(path, dest = False):
- pass
+# Probably not actually necessary...
+#def symLinker(srcdir, destparent, filext = False):
+# for f in os.listdir(srcdir):
+# # We only want files
+# if not os.path.isfile('{0}/{1}'.format(srcdir, f)):
+# continue
+# if filext:
+# if f.endswith(filext):
+# os.symlink('{0}/{1}'.format(srcdir, f),
+# '{0}/{1}'.format(destparent, f))
+# else:
+# os.symlink('{0}/{1}'.format(srcdir, f),
+# '{0}/{1}'.format(destparent, f))
+
+def populateTree():
+ # First we'll do the id1/ dir. It's easy enough.
+ os.symlink('{0}/id1/pak0.pak.DEMO'.format(pkgdir), '{0}/id1/pak0.pak'.format(nquakedir))
+ # Sometimes other games/engines/whatever might be installed that require the retail pak placed here.
+ if os.path.isfile('/opt/quake/id1/pak1.pak'):
+ os.symlink('/opt/quake/id1/pak1.pak', '{0}/id1/pak1.pak'.format(nquakedir))
+ # Now the bulk of it.
+ for rootdir in ('ktx', 'qw', 'qtv'):
+ for root, dirs, files in os.walk('{0}/{1}'.format(pkgdir, rootdir)):
+ destpath = root.replace(pkgdir, nquakedir)
+ for f in files:
+ os.symlink('{0}/{1}'.format(root, f),
+ '{0}/{1}'.format(destpath, f))
-def buildRootdir(ver = False):
+def buildRootTree(ver = False):
+ # We dont need these dirs.
+ # Matches "greedily"- that is, "addons" will match e.g. addons/somedir/someotherdir
+ # So be as explicit as possible.
+ direxcludes = ['addons', 'run']
+ # And these should be links to /usr/share/nquakesv/<name>
+ # These, unlike the above, are *inherently* explicit- the path must be exact.
+ dirlinks = []
if ver == False:
ver = getVer()
# Overwriting is bad, mmk?
if os.path.isdir(nquakedir):
- os.move(nquakedir, '{0}.bak_{1}'.format(nquakedir, timestamp))
+ os.rename(nquakedir, '{0}.bak_{1}'.format(nquakedir, timestamp))
os.makedirs(nquakedir, exist_ok = True)
- # Generated from a vanilla from-"source" nquakesv install
- # and a "tree -d -J -a --noreport" run inside the directory.
- # We only fetch the "contents" key as the first level is '.'
- with open('/usr/share/nquakesv/dirtree.json', 'r') as raw:
- dirtree = json.loads(raw.read())[0]['contents']
with open(nquakedir + '/VERSION', 'w') as f:
f.write('Generated on nquakesv package version {0}\n'.format(ver))
- # We dont need these dirs.
- direxcludes = ['addons', 'run']
- dirlinks = ['id1']
- # Walk the paths and build the tree.
- for pathspec in dirtree:
- if pathspec['name'] in direxcludes:
- continue
- if pathspec['name'] in dirlinks:
- src = '/usr/share/nquakesv/
- dest =
- os.symlink()
- if pathspec['type'] == 'link':
-
+ # Generated from a vanilla from-"source" nquakesv install
+ # and generated by running the following inside the directory:
+ # find ./ -type d -printf "%P\n" | sed -e '/^$/d' | sort
+ with open('{0}/dirtree.lst'.format(pkgdir), 'r') as raw:
+ dirtree = raw.read().splitlines()
+ # Generated from a vanilla from-"source" nquakesv install
+ # and generated by running the following inside the directory:
+ # for l in $(find ./ -type l); do echo -n "${l} " | sed -re "s@^\./@@g"; readlink ${l}; done
+ with open('{0}/linktree.lst'.format(pkgdir), 'r') as raw:
+ linktree = raw.read().splitlines()
+ # Walk the paths and build the tree.
+ for d in dirtree:
+ makeme = True
+ for e in direxcludes:
+ if d.startswith(e):
+ makeme = False
+ break
+ if makeme == True and d in dirlinks:
+ os.symlink('{0}/{1}'.format(pkgdir, d),
+ '{0}/{1}'.format(nquakedir, d))
+ elif makeme == True:
+ os.makedirs('{0}/{1}'.format(nquakedir, d), exist_ok = True)
+ for l in linktree:
+ src = l.split()[1]
+ dest = l.split()[0]
+ makeme = True
+ for e in direxcludes:
+ if dest.startswith(e):
+ makeme = False
+ break
+ if makeme == True:
+ destpath = '{0}/{1}'.format(nquakedir, dest)
+ if not os.path.isdir(os.path.dirname(destpath)):
+ os.makedirs(os.path.dirname(destpath))
+ os.symlink(src, destpath)
def main():
- pass
+ buildRootTree()
+ populateTree()
if __name__ == '__main__':
main()
diff --git a/nquakesv-init.py.sig b/nquakesv-init.py.sig
new file mode 100644
index 000000000000..041c22b2397f
--- /dev/null
+++ b/nquakesv-init.py.sig
Binary files differ
diff --git a/nquakesv.install b/nquakesv.install
index 80866a2099fc..3e1cf48a00bb 100644
--- a/nquakesv.install
+++ b/nquakesv.install
@@ -4,20 +4,7 @@ post_install() {
echo 'It is *strongly* encouraged to add users to the "users" group (usermod -aG users <username>) if they will be running nQuake.
Trust me. If you hit a bug and you are using a user not in the users group, you are testing bad and you should feel bad.'
echo
- echo "nQuake Server has been installed. Please copy the retail pak1.pak files (as exactly that filename) to /opt/quake/id1/
- and do (as root): chmod 0775 /opt/quake/id1/*.pak ; chgrp users /opt/quake/id1/*.pak'"
- echo "Also remember to run nquakesv-init as the user(s) that will be running nquakesv."
-
- if [ ! -f "/opt/quake/id1/pak0.pak" ];
- then
- cp /opt/quake/id1/pak0.pak.DEMO /opt/quake/id1/pak0.pak
- fi
+ echo "Remember to run nquakesv-init as the user(s) that will be running nquakesv."
+ echo "Once that has been done, copy the retail pak1.pak files (as exactly that filename) to <user homedir>/.nquakesv/id1/."
+ echo "(If it exists at /opt/quake/id1/pak1.pak, it will be symlinked for you automatically.)"
}
-
-post_upgrade() {
-
- # fix group ownerships...
- find /opt/quake -group games -exec chgrp users '{}' \;
-
-}
-
diff --git a/nquakesv.run b/nquakesv.run
index 2ae44bf14ebf..8b58c3a0b03f 100755
--- a/nquakesv.run
+++ b/nquakesv.run
@@ -1,5 +1,10 @@
#!/bin/bash
-cd /opt/quake
-./mvdsv +cfg_use_home 1 +cfg_load "$@"
+if [ ! -d ~/.nquakesv ];
+then
+ /usr/bin/nquakesv-init
+fi
+
+cd ~/.nquakesv
+/usr/share/nquakesv/mvdsv "$@"
exit $?
diff --git a/nquakesv.run.sig b/nquakesv.run.sig
index ffc2b21fd090..a9373fd3a62f 100644
--- a/nquakesv.run.sig
+++ b/nquakesv.run.sig
Binary files differ
diff --git a/nquakesv@.service b/nquakesv@.service
new file mode 100644
index 000000000000..cbf422ea9fbc
--- /dev/null
+++ b/nquakesv@.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=nQuake Dedicated Server
+After=network.target
+
+[Service]
+Type=simple
+User=%I
+ExecStart=/usr/bin/nquakesv
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nquakesv@.service.sig b/nquakesv@.service.sig
new file mode 100644
index 000000000000..53780d8d1aaf
--- /dev/null
+++ b/nquakesv@.service.sig
Binary files differ