From 73b78fa03e95f3ef37f55c74ac94fd33e4155514 Mon Sep 17 00:00:00 2001 From: zer0def Date: Sun, 25 Apr 2021 10:26:55 +0200 Subject: [PATCH] Fix default config population and dynamic linking --- .SRCINFO | 25 ++++++++----- PKGBUILD | 91 +++++++++++++++++++++++++++--------------------- fix-linking.diff | 13 +++++++ open-hexagon | 11 +++--- 4 files changed, 87 insertions(+), 53 deletions(-) create mode 100644 fix-linking.diff diff --git a/.SRCINFO b/.SRCINFO index 906413eb..30978ba6 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = open-hexagon-git pkgdesc = Free software clone of Super Hexagon - a music-based arcade game - pkgver = 2.0.preview.r1871.g648e6ad5 - pkgrel = 7 + pkgver = 2.0.preview.r2012.g439a97c2 + pkgrel = 1 epoch = 1 url = https://openhexagon.org/ install = open-hexagon-git.install @@ -11,7 +11,8 @@ pkgbase = open-hexagon-git makedepends = git makedepends = cmake makedepends = rsync - depends = sfml + depends = luajit + depends = imgui-sfml depends = zenity optdepends = steam: integration for those who own the game on Steam optdepends = discord: Discord Rich Presence support @@ -22,11 +23,19 @@ pkgbase = open-hexagon-git source = open-hexagon-git.install source = open-hexagon source = open-hexagon.desktop - sha256sums = SKIP - sha256sums = c58bf04778d29ade2b76ea5402671f95ede634fb67f44d707b2f9580054caaa7 - sha256sums = 57e64cbde625b2f3b1c3e0b48bb1357c96602d7c9e9c6c81647aa9288d7da7ca - sha256sums = f5a94b884e58b8e5d9c79340adbcfd23420beccb76cde53691f8ec191cd1d2e3 - sha256sums = a3f4ef5296619903b487ccd8d894e28b2d9fad3a9152683f642b43aeb88b7928 + source = fix-linking.diff + sha512sums = SKIP + sha512sums = e062d52b3d12fba285e881175ec7c834b24e28b366a9a19d8dbdbe7b6ffae9462ab5d0f9f84119276a30f9c7b6f8745b00eb98c3e90e344a740824cec26505e9 + sha512sums = b9b7124b16e3019dc36f3219107b7093ade9d88fa03c249575f2914d063df7f4311a390e78372cb741729db288d7cd74e5fc6e936277e619a1b3ed65f233891a + sha512sums = d7b40efb198233365f8ad92c14c04150eb064c212c04f77720843cbd0d89c4d80e3b6a513a4a04bcaa9e11f5308ea0a75bac63c8c4b9e269477e01c8a0080530 + sha512sums = bc7d1e1a420a439283b4fcf2f06a8a50ca06d3934b79f6a93ff4ad4d269d6b246eb6a1824381c36bbb73fc7d24e9883281ab66eab05b2cc2fdbac3ed14a775d5 + sha512sums = ed8beeffba0e1c4a31f84f5a503da7f50ba9bdb4a3bd7e3b0dc0e61a62a40511bba887232412cadd0ed02ea0d0424f12ed6b59c75d6bf9472a7d2c89f308c8f8 + b2sums = SKIP + b2sums = 7dfe5d5b32f35cd9572199bf2080ae4c3552fb5496836a139c90cb5bae7adb46545c0017fcb302409bc1babcc1f5f30a136e232983197c485ae1d65d3d8ce581 + b2sums = 61dee7a9ea98ee85ad2ff98de4297c5fe74442f8b2c6f5108cef320649a92e6053cfc42568d2423e76b5671a2f4cb310e7f0c937e38ec4af8df1c2b9fde53e55 + b2sums = 7aab3f71132d7824eb1569d6c543027df6ea43311291e60a8d873b73a4e1abd34c127f17df47977d0bec8d9d3f8941911fbbf4e97ad0e7ba930a43008a074661 + b2sums = 2ea97df7c917222e6a13b778208e41401c7d29db7851b6252c2a7db3107adad7a3e939e27684352277971c1220f90243a6053580af21c960a041b84375e9a239 + b2sums = aa51608e4796f8be19cea31135e8e240f8f9de962a7d77bc5dffd7beba5f87193a2f7c1a2df4a13de0fd7861170fc1e8f606b97ef7718e8d1aaf6e4cbfb9a8bc pkgname = open-hexagon-git diff --git a/PKGBUILD b/PKGBUILD index f4278a0b..d30a3a13 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,42 +1,64 @@ # Maintainer: Yurii pkgname=open-hexagon-git -pkgver=2.0.preview.r1871.g648e6ad5 -pkgrel=7 +pkgver=2.0.preview.r2012.g439a97c2 +pkgrel=1 epoch=1 pkgdesc='Free software clone of Super Hexagon - a music-based arcade game' url='https://openhexagon.org/' arch=('any') license=('custom:AFL-3.0' 'custom') -depends=('sfml' 'zenity') +depends=( + 'luajit' 'imgui-sfml' + 'zenity' # just so UX is pretty +) makedepends=('git' 'cmake' 'rsync') optdepends=('steam: integration for those who own the game on Steam' 'discord: Discord Rich Presence support') provides=('open-hexagon') conflicts=('open-hexagon') -source=('git+https://github.com/SuperV1234/SSVOpenHexagon.git' +source=( + 'git+https://github.com/SuperV1234/SSVOpenHexagon.git' 'open-hexagon-git-assets.zip::https://github.com/SuperV1234/SSVOpenHexagonAssets/archive/master.zip' 'open-hexagon-git.install' 'open-hexagon' - 'open-hexagon.desktop') + 'open-hexagon.desktop' + 'fix-linking.diff' +) install="$pkgname.install" -sha256sums=('SKIP' - 'c58bf04778d29ade2b76ea5402671f95ede634fb67f44d707b2f9580054caaa7' - '57e64cbde625b2f3b1c3e0b48bb1357c96602d7c9e9c6c81647aa9288d7da7ca' - 'f5a94b884e58b8e5d9c79340adbcfd23420beccb76cde53691f8ec191cd1d2e3' - 'a3f4ef5296619903b487ccd8d894e28b2d9fad3a9152683f642b43aeb88b7928') +sha512sums=( + 'SKIP' + e062d52b3d12fba285e881175ec7c834b24e28b366a9a19d8dbdbe7b6ffae9462ab5d0f9f84119276a30f9c7b6f8745b00eb98c3e90e344a740824cec26505e9 + b9b7124b16e3019dc36f3219107b7093ade9d88fa03c249575f2914d063df7f4311a390e78372cb741729db288d7cd74e5fc6e936277e619a1b3ed65f233891a + d7b40efb198233365f8ad92c14c04150eb064c212c04f77720843cbd0d89c4d80e3b6a513a4a04bcaa9e11f5308ea0a75bac63c8c4b9e269477e01c8a0080530 + bc7d1e1a420a439283b4fcf2f06a8a50ca06d3934b79f6a93ff4ad4d269d6b246eb6a1824381c36bbb73fc7d24e9883281ab66eab05b2cc2fdbac3ed14a775d5 + ed8beeffba0e1c4a31f84f5a503da7f50ba9bdb4a3bd7e3b0dc0e61a62a40511bba887232412cadd0ed02ea0d0424f12ed6b59c75d6bf9472a7d2c89f308c8f8 +) +b2sums=( + 'SKIP' + 7dfe5d5b32f35cd9572199bf2080ae4c3552fb5496836a139c90cb5bae7adb46545c0017fcb302409bc1babcc1f5f30a136e232983197c485ae1d65d3d8ce581 + 61dee7a9ea98ee85ad2ff98de4297c5fe74442f8b2c6f5108cef320649a92e6053cfc42568d2423e76b5671a2f4cb310e7f0c937e38ec4af8df1c2b9fde53e55 + 7aab3f71132d7824eb1569d6c543027df6ea43311291e60a8d873b73a4e1abd34c127f17df47977d0bec8d9d3f8941911fbbf4e97ad0e7ba930a43008a074661 + 2ea97df7c917222e6a13b778208e41401c7d29db7851b6252c2a7db3107adad7a3e939e27684352277971c1220f90243a6053580af21c960a041b84375e9a239 + aa51608e4796f8be19cea31135e8e240f8f9de962a7d77bc5dffd7beba5f87193a2f7c1a2df4a13de0fd7861170fc1e8f606b97ef7718e8d1aaf6e4cbfb9a8bc +) _reponame="SSVOpenHexagon" _assetsname="SSVOpenHexagonAssets-master" +prepare() { + cd "${srcdir}/${_reponame}" + patch -p1 <"${srcdir}/fix-linking.diff" +} + pkgver() { # Use the most recent un-annotated tag - cd "$_reponame" + cd "${srcdir}/${_reponame}" git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g' } build() { - cd "$_reponame" + cd "${srcdir}/${_reponame}" git submodule init git submodule update @@ -44,43 +66,34 @@ build() { cd .. # Merge directories - rsync -av --remove-source-files --ignore-existing "$_assetsname/_RELEASE" "$_reponame" + rsync -av --remove-source-files --ignore-existing "${srcdir}/${_assetsname}/_RELEASE" "${srcdir}/${_reponame}" } package() { - mkdir -p "$pkgdir/usr/lib/" - mkdir -p "$pkgdir/var/lib/open-hexagon" + mkdir -p "${pkgdir}/usr/lib/" + mkdir -p "${pkgdir}/var/lib/open-hexagon/Profiles" "${pkgdir}/var/lib/open-hexagon/Replays" - cd "$_reponame/_RELEASE" + cd "${srcdir}/${_reponame}/_RELEASE" rm -f *.bat *.dll *.lib - install -Dm644 "Assets/Open Hexagon Assets License.txt" -t "$pkgdir/usr/share/licenses/open-hexagon/" + install -Dm644 "Assets/Open Hexagon Assets License.txt" -t "${pkgdir}/usr/share/licenses/open-hexagon/" - cd .. - cp -r "_RELEASE" "$pkgdir/usr/lib/open-hexagon" - install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/open-hexagon/" + cd "${srcdir}/${_reponame}" + cp -r "_RELEASE" "${pkgdir}/usr/lib/open-hexagon" + install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/open-hexagon/" # Dirty hack to allow writing data to current directory # (also see .install file) - cd "$pkgdir/usr/lib/open-hexagon" - rm config.json - ln -s "/var/lib/open-hexagon/config.json" - mv "$srcdir/$_reponame/misc/default_config.json" "$pkgdir/var/lib/open-hexagon" - ln -sf "/var/lib/open-hexagon/default_config.json" - rm scores.json - ln -s "/var/lib/open-hexagon/scores.json" - rm users.json - ln -s "/var/lib/open-hexagon/users.json" + cp "${srcdir}/${_reponame}/misc/default_config.json" "${pkgdir}/var/lib/open-hexagon/default_config.json" + cp "${srcdir}/${_reponame}/misc/default_config.json" "${pkgdir}/var/lib/open-hexagon/config.json" - ln -s "/var/lib/open-hexagon/log.txt" - - ln -s "/var/lib/open-hexagon/Profiles" - - ln -s "/var/lib/open-hexagon/Replays" - + cd "${pkgdir}/usr/lib/open-hexagon" + ln -s "$(ls -1r /usr/lib/libluajit-*.so | head -n1)" libluajit.so + for i in config.json default_config.json scores.json users.json log.txt Profiles Replays; do + ln -sf "../../../var/lib/open-hexagon/${i}" + done # Executables - cd "$srcdir" - install -Dm755 open-hexagon -t "$pkgdir/usr/bin" - install -Dm644 open-hexagon.desktop -t "$pkgdir/usr/share/applications" - install -Dm644 "$_reponame/art/icon.png" "$pkgdir/usr/share/pixmaps/open-hexagon.png" + install -Dm755 "${srcdir}/open-hexagon" -t "${pkgdir}/usr/bin" + install -Dm644 "${srcdir}/open-hexagon.desktop" -t "${pkgdir}/usr/share/applications" + install -Dm644 "${srcdir}/${_reponame}/art/icon.png" "${pkgdir}/usr/share/pixmaps/open-hexagon.png" } diff --git a/fix-linking.diff b/fix-linking.diff new file mode 100644 index 00000000..c95ff3d4 --- /dev/null +++ b/fix-linking.diff @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f9785621..4f03d83e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -15,7 +15,7 @@ endif() + include(${CPM_DOWNLOAD_LOCATION}) + # ----------------------------------------------------------------------------- + +-set(BUILD_SHARED_LIBS true) ++set(BUILD_SHARED_LIBS false) + set(SFML_STATIC_LIBRARIES false) + set(USE_LUAJIT true) + diff --git a/open-hexagon b/open-hexagon index e5680bab..7b1a82d5 100755 --- a/open-hexagon +++ b/open-hexagon @@ -1,9 +1,8 @@ #!/bin/sh -if id --name --groups --zero | grep --quiet --null-data --line-regexp --fixed-strings 'games'; then - cd /usr/lib/open-hexagon - ./SSVOpenHexagon -else - zenity --error --text="Your user must be in 'games' group." - exit 1 +id -nG | grep -qE '[ ^]games[ $]' +if [ "${?}" -ne 0 ]; then + zenity --error --text="Your user must be in 'games' group." + exit 1 fi +LD_LIBRARY_PATH="$(dirname "$(readlink -f "${0}")")/../lib/open-hexagon${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" ../lib/open-hexagon/SSVOpenHexagon