diff options
author | Constantin Nickel | 2016-11-19 08:51:22 +0100 |
---|---|---|
committer | Constantin Nickel | 2016-11-19 08:51:22 +0100 |
commit | 4d9550db2d63bb0b8e2422ab6c55ef15d593be73 (patch) | |
tree | 72def171163583d29b12ca402358004b294e59e0 | |
download | aur-4d9550db2d63bb0b8e2422ab6c55ef15d593be73.tar.gz |
initial commit
-rw-r--r-- | .SRCINFO | 30 | ||||
-rw-r--r-- | PKGBUILD | 77 | ||||
-rw-r--r-- | dosbox_windowed.conf | 2 | ||||
-rw-r--r-- | fix-dosbox-mounts.patch | 42 | ||||
-rw-r--r-- | fix-dosbox-output.patch | 12 | ||||
-rw-r--r-- | fix-permissions.sh | 17 | ||||
-rw-r--r-- | simcity-2000-gog.desktop | 7 | ||||
-rw-r--r-- | simcity-2000-gog.install | 16 | ||||
-rw-r--r-- | simcity-2000-gog.sh | 76 |
9 files changed, 279 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..10a1d78d7605 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,30 @@ +pkgbase = simcity-2000-gog + pkgdesc = Now you can design any city you can imagine and SimCity 2000 will bring it, and its resident Sims, to life. + pkgver = 2.0.0.15 + pkgrel = 1 + url = https://www.gog.com/game/simcity_2000_special_edition + install = simcity-2000-gog.install + arch = any + groups = games + license = custom:eula + makedepends = innoextract + makedepends = icoutils + depends = dosbox + optdepends = unionfs-fuse: mounting game folder to home for savegames and settings + source = setup_sc2000_se_2.0.0.15.exe::gogdownloader://simcity_2000_special_edition/installer_win_en + source = simcity-2000-gog.desktop + source = simcity-2000-gog.sh + source = dosbox_windowed.conf + source = fix-dosbox-output.patch + source = fix-dosbox-mounts.patch + source = fix-permissions.sh + sha256sums = ae31e0600be24e23d0605ad5c8b002d7b4770a52e6e7f3b9e164c57edaa2740c + sha256sums = 471482788dbfe607758a13e338241c39f8e8af1efa37d8d4f17310ded2374707 + sha256sums = 87aaf64369ff565df3ff5f72fdfc4a3ca4209cfa0ba21d7d9ed0d43e7bce0d4c + sha256sums = 50b601b33522677a9bcaf23edc833329067bb87ccda33039c0b95f0d4ddca578 + sha256sums = f9e3d53e0d1098fef7ffbc488158ac32a5b2a4e9ff97fa0e54c99b14c24a1a59 + sha256sums = 21f2ef32bb3c766329954dd7438a33c1afe48bd09a2d5644270240c415b1dca7 + sha256sums = 29dbb68855c778d664f603bca889f7b156acaeed7a39f50bf35a60f13d6d0e12 + +pkgname = simcity-2000-gog + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..69fa64bf7953 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,77 @@ +# Maintainer: Constantin Nickel <constantin dot nickel at gmail dot com> + +pkgname=simcity-2000-gog +pkgver=2.0.0.15 +pkgrel=1 +pkgdesc="Now you can design any city you can imagine and SimCity 2000 will bring it, and its resident Sims, to life." +url="https://www.gog.com/game/simcity_2000_special_edition" +license=('custom:eula') +groups=('games') +arch=('any') +makedepends=('innoextract' 'icoutils') +depends=('dosbox') +optdepends=('unionfs-fuse: mounting game folder to home for savegames and settings') +install=$pkgname.install + +source=("setup_sc2000_se_$pkgver.exe"::"gogdownloader://simcity_2000_special_edition/installer_win_en" + "simcity-2000-gog.desktop" + "simcity-2000-gog.sh" + "dosbox_windowed.conf" + "fix-dosbox-output.patch" + "fix-dosbox-mounts.patch" + "fix-permissions.sh") + +sha256sums=('ae31e0600be24e23d0605ad5c8b002d7b4770a52e6e7f3b9e164c57edaa2740c' + '471482788dbfe607758a13e338241c39f8e8af1efa37d8d4f17310ded2374707' + '87aaf64369ff565df3ff5f72fdfc4a3ca4209cfa0ba21d7d9ed0d43e7bce0d4c' + '50b601b33522677a9bcaf23edc833329067bb87ccda33039c0b95f0d4ddca578' + 'f9e3d53e0d1098fef7ffbc488158ac32a5b2a4e9ff97fa0e54c99b14c24a1a59' + '21f2ef32bb3c766329954dd7438a33c1afe48bd09a2d5644270240c415b1dca7' + '29dbb68855c778d664f603bca889f7b156acaeed7a39f50bf35a60f13d6d0e12') + +# You need to download the gog.com installer file to this directory ($PWD), +# either manually or with lgogdownloader. You can also configure DLAGENTS in +# makepkg.conf to auto-download. +# +# The following is just a fallback to the above to notify the user: +DLAGENTS+=('gogdownloader::/usr/bin/awk BEGIN{print"Please\ download\ the\ file\ \\""\ substr("%o",1,length("%o")-5)\ "\\"\ manually\\nor\ setup\ a\ gogdownloader://\ DLAGENT\ in\ makepkg.conf!\ Read\ this\ PKGBUILD\ for\ more\ information.";exit\ 1}') + +prepare() { + # extract installer (convert files to lowercase, as DOS does not care) + innoextract -e -L -d "$srcdir" setup_sc2000_se_$pkgver.exe + # convert icon + icotool -x app/gfw_high.ico + # create launchers + for _m in scurk settings; do + sed "s|Exec=simcity-2000|& --$_m|;s|Name=Simcity 2000|& (${_m^})|" \ + $pkgname.desktop > simcity-2000-$_m.desktop + done + # remove bundled dosbox, windows stuff and gog client files + rm -rf app/{dosbox/,*.ico,*.dll,*.zip,__support} + # fix dosbox output + patch -p1 -i "$srcdir"/fix-dosbox-output.patch + # fix dosbox mounts + patch -p1 -i "$srcdir"/fix-dosbox-mounts.patch +} + +package() { + # data + install -d "$pkgdir"/opt/simcity-2000 + cp -r app/* "$pkgdir"/opt/simcity-2000 + # fix permissions script + install -Dm755 fix-permissions.sh "$pkgdir"/opt/simcity-2000 + # additional dosbox config + install -m644 dosbox_windowed.conf "$pkgdir"/opt/simcity-2000 + # doc + licenses + install -d "$pkgdir"/usr/share/{doc,licenses}/$pkgname + ln -s -t "$pkgdir"/usr/share/doc/$pkgname /opt/simcity-2000/{manual.pdf,readme.txt} + install -m644 tmp/{gog_,}eula.txt "$pkgdir"/usr/share/licenses/$pkgname + # .desktop files and launchers + install -Dm644 $pkgname.desktop "$pkgdir"/usr/share/applications/simcity-2000.desktop + install -Dm755 $pkgname.sh "$pkgdir"/usr/bin/simcity-2000 + for _m in scurk settings; do + install -m644 simcity-2000-$_m.desktop "$pkgdir"/usr/share/applications + done + # icon + install -Dm644 gfw_high_6_256x256x32.png "$pkgdir"/usr/share/pixmaps/simcity-2000.png +} diff --git a/dosbox_windowed.conf b/dosbox_windowed.conf new file mode 100644 index 000000000000..79c944cd3b8f --- /dev/null +++ b/dosbox_windowed.conf @@ -0,0 +1,2 @@ +[sdl] +fullscreen=false
\ No newline at end of file diff --git a/fix-dosbox-mounts.patch b/fix-dosbox-mounts.patch new file mode 100644 index 000000000000..41befbb333a6 --- /dev/null +++ b/fix-dosbox-mounts.patch @@ -0,0 +1,42 @@ +diff --git a/app/dosboxsc2000_addon.conf b/app/dosboxsc2000_addon.conf +--- a/app/dosboxsc2000_addon.conf ++++ b/app/dosboxsc2000_addon.conf +@@ -1,8 +1,8 @@ + [autoexec]
+ # Lines in this section will be run at startup.
+-mount C ".."
++mount C "."
+ @echo off
+-imgmount d "..\SC2000SE.DAT" -t iso -fs iso
++imgmount d "sc2000se.dat" -t iso -fs iso
+ c:
+ cls
+ SCURK.COM
+diff --git a/app/dosboxsc2000_settings.conf b/app/dosboxsc2000_settings.conf +--- a/app/dosboxsc2000_settings.conf ++++ b/app/dosboxsc2000_settings.conf +@@ -1,8 +1,8 @@ + [autoexec]
+ # Lines in this section will be run at startup.
+ @echo off
+-mount C ".."
+-imgmount d "..\SC2000SE.DAT" -t iso -fs iso
++mount C "."
++imgmount d "sc2000se.dat" -t iso -fs iso
+ c:
+ cls
+ call install.exe
+diff --git a/app/dosboxsc2000_single.conf b/app/dosboxsc2000_single.conf +--- a/app/dosboxsc2000_single.conf ++++ b/app/dosboxsc2000_single.conf +@@ -1,8 +1,8 @@ + [autoexec]
+ # Lines in this section will be run at startup.
+ @echo off
+-mount C ".."
+-imgmount d "..\SC2000SE.DAT" -t iso -fs iso
++mount C "."
++imgmount d "sc2000se.dat" -t iso -fs iso
+ c:
+ cls
+ call SC2000.BAT
diff --git a/fix-dosbox-output.patch b/fix-dosbox-output.patch new file mode 100644 index 000000000000..62456a90402a --- /dev/null +++ b/fix-dosbox-output.patch @@ -0,0 +1,12 @@ +diff --git a/app/dosboxsc2000.conf b/app/dosboxsc2000.conf +--- a/app/dosboxsc2000.conf ++++ b/app/dosboxsc2000.conf +@@ -19,7 +19,7 @@ fullscreen=true + fulldouble=false
+ fullresolution=original
+ windowresolution=original
+-output=ddraw
++output=overlay
+ autolock=true
+ sensitivity=100
+ waitonerror=true
diff --git a/fix-permissions.sh b/fix-permissions.sh new file mode 100644 index 000000000000..d16560a4800e --- /dev/null +++ b/fix-permissions.sh @@ -0,0 +1,17 @@ +#!/usr/bin/sh + +_group="${1:-games}" + +getent group $_group &> /dev/null + +if [ $? != 0 ]; then + echo "group '$_group' not found"; + echo "${0##/} [group] default: games" + exit 1 +fi + +# fix permissions +chgrp $_group /opt/simcity-2000{,/cities} +chmod g+w /opt/simcity-2000{,/cities} +chgrp -R $_group /opt/simcity-2000/{scurkart,resource.urk,sc2000.cfg,sc2000.dat} +chmod -R g+w /opt/simcity-2000/{scurkart,resource.urk,sc2000.cfg,sc2000.dat} diff --git a/simcity-2000-gog.desktop b/simcity-2000-gog.desktop new file mode 100644 index 000000000000..d1344a6549e7 --- /dev/null +++ b/simcity-2000-gog.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Name=Simcity 2000 +Exec=simcity-2000 +Icon=simcity-2000 +Categories=Game; +Terminal=false diff --git a/simcity-2000-gog.install b/simcity-2000-gog.install new file mode 100644 index 000000000000..edde1f32961d --- /dev/null +++ b/simcity-2000-gog.install @@ -0,0 +1,16 @@ +post_install() { + echo "In order to save or change settings you have to use the fix-permissions.sh" + echo "script or install 'unionfs-fuse' to get the game folder mounted in your home dir." + echo "" + echo "Fix permissions: The default group is 'games'" + echo "/opt/simcity-2000/fix-permissions.sh [group]" + echo "" + echo "Unionfs:" + echo 'LOWER_DIR=/opt/simcity-2000' + echo 'UPPER_DIR=$HOME/.gog/simcity-2000/config' + echo 'UNION_DIR=$HOME/.gog/simcity-2000/game' +} + +post_upgrade() { + post_install +} diff --git a/simcity-2000-gog.sh b/simcity-2000-gog.sh new file mode 100644 index 000000000000..84ac5d5b175e --- /dev/null +++ b/simcity-2000-gog.sh @@ -0,0 +1,76 @@ +#!/usr/bin/bash + +_help() { +cat <<EOF + Usage: $script [options] + Options: + -h --help Show this message + --windowed Windowed mode + --settings Change settings + --addon Start the addon Urban Renewal Kit + --scurk Start the addon Urban Renewal Kit + Examples: + + $script --windowed + $script --scurk +EOF + exit 0 +} + +pushd() { builtin pushd "$@" > /dev/null; } +popd() { builtin popd > /dev/null; } + +INSTALL_DIR=/opt/simcity-2000 +HOME_DIR="$HOME"/.gog/simcity-2000 + +if which unionfs &> /dev/null; then + USE_UNIONFS=1 +fi + +script=${0##*/} + +TEMP=$(getopt -o h --long help,windowed,addon,settings,scurk \ + -n "$script" -- "$@") + +if [ $? != 0 ] ; then exit 1 ; fi + +eval set -- "$TEMP" + +while true; do + case "$1" in + -h|--help) _help; shift ;; + --windowed) WINDOWED=1; shift ;; + --settings) START_SETTINGS=1; WINDOWED=1; shift ;; + --addon|--scurk) START_ADDON=1; shift ;; + --) shift; break ;; + esac +done + +configs=('-conf' 'dosboxsc2000.conf') + +if [ "$WINDOWED" ]; then + configs+=('-conf' 'dosbox_windowed.conf') +fi + +if [ "$START_SETTINGS" ]; then + configs+=('-conf' 'dosboxsc2000_settings.conf') +elif [ "$START_ADDON" ] ; then + configs+=('-conf' 'dosboxsc2000_addon.conf') +else + configs+=('-conf' 'dosboxsc2000_single.conf') +fi + +if [ "$USE_UNIONFS" ]; then + LOWER_DIR="$INSTALL_DIR" + UPPER_DIR="$HOME_DIR/config" + UNION_DIR="$HOME_DIR/game" + mkdir -p "$HOME_DIR"/{game,config} + + unionfs -o cow,relaxed_permissions "$UPPER_DIR=RW:$LOWER_DIR=RO" "$UNION_DIR" + echo "Launching game within $UNION_DIR" + pushd "$UNION_DIR" && dosbox "${configs[@]}" + popd && fusermount -u "$UNION_DIR" +else + echo "Launching game within $INSTALL_DIR" + cd $INSTALL_DIR && dosbox "${configs[@]}" +fi |