summarylogtreecommitdiffstats
diff options
context:
space:
mode:
author企鹅20352022-08-20 08:53:59 +0800
committer企鹅20352022-08-20 08:53:59 +0800
commit9d554a6465af191621eed2f75fea192608c5c68d (patch)
treee6d30b69ce7a8423d3d57cdfdac25030844eff43
parentfb3a52f4c9c294ef33a66e2104fd3c8e91a4db72 (diff)
downloadaur-9d554a6465af191621eed2f75fea192608c5c68d.tar.gz
feat (all): change to unpack the appimage
-rw-r--r--.SRCINFO14
-rw-r--r--.gitignore4
-rw-r--r--PKGBUILD53
-rw-r--r--mfosu98
-rw-r--r--mfosu.desktop5
5 files changed, 133 insertions, 41 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ca77a6e6cf59..78f6c713cb06 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,11 +1,11 @@
pkgbase = mfosu-bin
- pkgdesc = An fork of osu!lazer.
+ pkgdesc = A fork of osu!lazer.
pkgver = 2022.528.0
- pkgrel = 2
+ pkgrel = 3
url = https://github.com/MATRIX-feather/osu
arch = x86_64
license = MIT
- license = CC-BY-NC 4.0
+ license = custom:CC-BY-NC 4.0
depends = zlib
depends = libgl
depends = fuse2
@@ -13,17 +13,13 @@ pkgbase = mfosu-bin
provides = osu-lazer
provides = mf-osu
provides = mfosu
- noextract = mfosu.appimage
- options = !strip
source = https://dl.hiosu.com/本地下载点① - 电信网络推荐/Linux版(2022.528.0)/mfosu.appimage
- source = https://github.com/MATRIX-feather/osu/raw/stable/assets/lazer.png
source = https://raw.githubusercontent.com/ppy/osu-resources/master/LICENCE.md
source = mfosu.desktop
source = mfosu
sha256sums = fe8f26b11443a0f0e6dc9e6c10d32d9c3c5cc3f2e825e970f4ebfe4f7994ae37
- sha256sums = 36f73cfe0a84cd65a8bb54fcde5a01c419b134bee4a88cc92eb4f33236343a10
sha256sums = 30b914824784b6ba6b30a44b22bea4f3c6fbc10f3f0e74fde5ca76a92ef57244
- sha256sums = a072250ea8407385937d9a25e077ba71ec581da67598922fe4893f097dfe3280
- sha256sums = 2bf4c70aebc2375b8fd607981ff1999b60659d13aab80df42b735085d0fd0cec
+ sha256sums = 97eb363bff09b570ecb9c3ff1fc9a72bcc70b21622b164ef730030f83372ed54
+ sha256sums = e76cd67550f59ba90679a23c926875c6d3eb62dcfe886121b879f1eb8fb4412f
pkgname = mfosu-bin
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..8e40af755588
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+lazer.png
+LICENCE.md
+mfosu-*.zst
+mfosu.appimage \ No newline at end of file
diff --git a/PKGBUILD b/PKGBUILD
index 2028ffd0291e..fd3bf2970ee4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,12 +1,13 @@
-pkgname=mfosu-bin
+_pkg=mfosu
+pkgname=$_pkg-bin
pkgver=2022.528.0
-pkgrel=2
-pkgdesc="An fork of osu!lazer."
+pkgrel=3
+pkgdesc="A fork of osu!lazer."
arch=(x86_64)
url="https://github.com/MATRIX-feather/osu"
license=(
"MIT"
- "CC-BY-NC 4.0"
+ "custom:CC-BY-NC 4.0"
)
depends=(
zlib
@@ -17,31 +18,35 @@ depends=(
provides=(
osu-lazer
mf-osu
- mfosu
+ $_pkg
)
-options=(!strip)
source=(
- "https://dl.hiosu.com/本地下载点① - 电信网络推荐/Linux版($pkgver)/mfosu.appimage"
- "https://github.com/MATRIX-feather/osu/raw/stable/assets/lazer.png"
+ "https://dl.hiosu.com/本地下载点① - 电信网络推荐/Linux版($pkgver)/$_pkg.appimage"
"https://raw.githubusercontent.com/ppy/osu-resources/master/LICENCE.md"
- "mfosu.desktop"
- "mfosu"
+ "$_pkg.desktop"
+ "$_pkg"
)
-noextract=("mfosu.appimage")
sha256sums=(
- "fe8f26b11443a0f0e6dc9e6c10d32d9c3c5cc3f2e825e970f4ebfe4f7994ae37"
- "36f73cfe0a84cd65a8bb54fcde5a01c419b134bee4a88cc92eb4f33236343a10"
- "30b914824784b6ba6b30a44b22bea4f3c6fbc10f3f0e74fde5ca76a92ef57244"
- "a072250ea8407385937d9a25e077ba71ec581da67598922fe4893f097dfe3280"
- "2bf4c70aebc2375b8fd607981ff1999b60659d13aab80df42b735085d0fd0cec"
+ 'fe8f26b11443a0f0e6dc9e6c10d32d9c3c5cc3f2e825e970f4ebfe4f7994ae37'
+ '30b914824784b6ba6b30a44b22bea4f3c6fbc10f3f0e74fde5ca76a92ef57244'
+ '97eb363bff09b570ecb9c3ff1fc9a72bcc70b21622b164ef730030f83372ed54'
+ 'e76cd67550f59ba90679a23c926875c6d3eb62dcfe886121b879f1eb8fb4412f'
)
+prepare() {
+ chmod +x $_pkg.appimage
+ ./$_pkg.appimage --appimage-extract >/dev/null
+}
package() {
- cd "$srcdir"
- # Install binary and launch script
- install -Dm755 "mfosu.appimage" "$pkgdir/opt/mfosu/mfosu.appimage"
- install -Dm755 -t "$pkgdir/usr/bin" mfosu
- # Install pixmap, desktop and license file
- install -Dm644 lazer.png "$pkgdir/usr/share/pixmaps/mfosu.png"
- install -Dm644 -t "$pkgdir/usr/share/applications" mfosu.desktop
- install -Dm644 -t "$pkgdir/usr/share/licenses/mfosu" LICENCE.md
+ # Install launch script
+ install -Dm755 -t "$pkgdir/usr/bin" $_pkg
+
+ # Install desktop and license file
+ local _share=/usr/share/
+ install -Dm644 -t "$pkgdir/$_share/applications" $_pkg.desktop
+ install -Dm644 -t "$pkgdir/$_share/licenses/$_pkg" LICENCE.md
+
+ # Install main file
+ cd squashfs-root
+ cp -r opt $pkgdir
+ install -Dm644 'osu!.png' "$pkgdir/$_share/pixmaps/$_pkg.png"
}
diff --git a/mfosu b/mfosu
index 9ff504b88bb1..0939faaae793 100644
--- a/mfosu
+++ b/mfosu
@@ -1,6 +1,92 @@
-#!/bin/sh
-DATADIR=$HOME/.local/share/osu
-if [ ! -d $DATADIR ]; then
- mkdir -p $DATADIR
-fi
-env OSU_EXTERNAL_UPDATE_PROVIDER=1 /opt/mfosu/mfosu.appimage "$@"
+#!/usr/bin/env bash
+
+#设定框架
+DISPLAYNAME="mfosu启动脚本"
+LOGNAMES="*"
+
+# osu数据目录
+readonly XDG_OSU=${HOME}/.local/share/osu/
+
+#默认重定向日志到lazer目录的mfosu-apprun.log
+LOGTARGET="${LOGTARGET:-${XDG_OSU}/mfosu-apprun.log}"
+MFOSU_AUTOLOG_WHEN_NOT_TERMINAL="${MFOSU_AUTOLOG_WHEN_NOT_TERMINAL:-true}"
+
+#mfosu目录
+readonly MFOSU="/opt/mfosu/"
+
+#是bash#shellcheck source=/dev/null #todo: 让shellcheck能正确source到common
+source "${MFOSU}/scripts/base/common" || exit 255
+
+#初始化日志文件
+true > "${LOGTARGET}"
+
+#设定LD_LIBRARY_PATH
+export LD_LIBRARY_PATH="${MFOSU}/game":"${LD_LIBRARY_PATH}"
+
+function run_hook()
+{
+ local hookPath="${1}"
+
+ if [ -f "${hookPath}" ];then
+ local hookBaseName="$(basename "${hookPath}")"
+
+ #env文件直接source,允许用户通过此方式更改脚本的环境变量(甚至是部分函数?),其他文件则直接执行
+ if [[ "${hookBaseName}" == *".env" ]];then
+ log "加载env文件:${hookBaseName}"
+ source "${hookPath}";
+ else
+ log "执行钩子:${hookBaseName}"
+ "${hookPath}" >> "${LOGTARGET}" 2>>"${LOGTARGET}"|| log "LWARN" "未能成功执行钩子:$(basename "${hookBaseName}")"
+ fi
+ fi;
+}
+
+function check_hooks()
+{
+ log "正在检查内部钩子..."
+ #先执行一遍AppImage里的hooks
+ for hook in "${MFOSU}/scripts/hooks"/*; do
+ run_hook "${hook}"
+ done
+
+ unset hook
+ unset hookBaseName
+
+ #然后执行用户定义的hooks
+ local storageConfig="${XDG_OSU}/storage.ini"
+
+ if [ -f "${storageConfig}" ];then
+ local userStorage="$(grep "FullPath" "${storageConfig}")"
+ userStorage="${userStorage//FullPath = /}"
+
+ log "正在检查用户钩子..."
+ for uhook in "${userStorage}/hooks"/*; do
+ run_hook "${uhook}"
+ done
+ fi
+
+ unset uhook
+ unset uHookBaseName
+ unset userStorage
+
+ unset check_hooks
+ unset run_hook
+}
+
+#执行钩子
+check_hooks
+
+#启动游戏!
+EXEC=${MFOSU}/game/'osu!'
+log "启动游戏..."
+
+#设定PATH,确保$MFOSU/game永远在最前面
+export PATH="${MFOSU}/game":"${PATH}"
+"${EXEC}" "$@"
+
+retCode="$?"
+log "返回值为${retCode}"
+
+if [ ! ${retCode} -eq 0 ];then
+ log "LWARN" "游戏似乎没有正常退出?"
+fi \ No newline at end of file
diff --git a/mfosu.desktop b/mfosu.desktop
index 8f853f7d5c50..8569c577bda2 100644
--- a/mfosu.desktop
+++ b/mfosu.desktop
@@ -3,6 +3,7 @@ Type=Application
Name=mfosu
MimeType=application/x-osu-skin-archive;application/x-osu-replay;application/x-osu-beatmap-archive;x-scheme-handler/osu;
Icon=/usr/share/pixmaps/mfosu.png
-Comment=Open source free-to-win rhythm game
-Exec=/usr/bin/mfosu
+Comment=Rhythm is just a *click* away.
+Comment[zh_CN]=节奏一*触*即发
+Exec=/usr/bin/mfosu %F
Categories=Game;