blob: 85a56e067fab509917cc2487009b260c4c36ce1d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# Maintainer: PoDiax <pd@pdx.ovh>
pkgname=openstarbound-nightly
pkgver=0.2
pkgrel=4
pkgdesc="OpenStarbound Client (Nightly Build, requires original Starbound game assets)"
arch=('x86_64')
url="https://github.com/OpenStarbound/OpenStarbound"
license=('custom')
depends=('glibc')
source=(
"$pkgname-$pkgver.zip::https://nightly.link/OpenStarbound/OpenStarbound/workflows/build/main/OpenStarbound-Linux-Clang-Client.zip"
"starbound.png"
)
sha256sums=('SKIP'
'c9c86ce8ee065e3a96e25778eb1212bf559affeef61c51f0ec4b2cad76ec9193'
)
build() {
echo -e "\033[1;33mThis is a nightly build of OpenStarbound.\033[0m"
echo -e "\033[1;33mExpect bugs and crashes.\033[0m"
echo -e "\033[1;33mPlease report any issues to the OpenStarbound GitHub repository.\033[0m"
read -rp "Do you want to continue with the installation? [y/N]: " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Installation aborted."
exit 1
fi
echo -e "\033[1;33mOpenStarbound requires the original Starbound game assets.\033[0m"
echo -e "\033[1;33mYou must copy the \033[1;34mpacked.pak\033[1;33m file from the original game to \033[1;34m/opt/openstarbound-nightly/assets\033[1;33m.\033[0m"
read -rp "Do you confirm you own Starbound on Steam or other legal platform and agree to these terms? [y/N]: " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Installation aborted."
exit 1
fi
}
pre_install() {
if [[ -f "/opt/openstarbound-nightly/assets/packed.pak" ]]; then
echo "Removing old 'packed.pak' file..."
rm -f "/opt/openstarbound-nightly/assets/packed.pak"
fi
}
package() {
local expected_hash="325d7d4210667b2a4738d805e858b80d7d55e8f834da773984ca6edb993577fe"
check_hash() {
sha256sum "$1" | awk '{print $1}'
}
if [[ -f "/opt/openstarbound-nightly/assets/packed.pak" ]]; then
mkdir -p "$pkgdir/opt/openstarbound-nightly/assets"
if [[ "$(check_hash "/opt/openstarbound-nightly/assets/packed.pak")" == "$expected_hash" ]]; then
echo "Existing 'packed.pak' is valid. Copying to the final package."
cp "/opt/openstarbound-nightly/assets/packed.pak" "$pkgdir/opt/openstarbound-nightly/assets/packed.pak"
else
echo "Hash mismatch detected for existing 'packed.pak'."
replace_pak_prompt=true
fi
else
echo "'packed.pak' does not exist. Prompting user for input."
replace_pak_prompt=true
fi
if [[ "$replace_pak_prompt" == true ]]; then
read -rp "Do you have the 'packed.pak' file from the original game? [y/N]: " has_pak
if [[ "$has_pak" == "y" || "$has_pak" == "Y" ]]; then
read -rp "Please provide the full path to your 'packed.pak' file: " pak_path
if [[ -f "$pak_path" ]]; then
if [[ "$(check_hash "$pak_path")" == "$expected_hash" ]]; then
echo "Copying 'packed.pak' from provided path to build directory..."
cp "$pak_path" "$srcdir/packed.pak"
else
echo "Hash mismatch! The provided 'packed.pak' is invalid. Aborting."
exit 1
fi
else
echo "Invalid path provided for 'packed.pak'. Installation aborted."
exit 1
fi
else
echo -e "'packed.pak' file is not provided, proceeding without it. \033[1;31mMake sure to copy it to /opt/openstarbound-nightly/assets/ before trying to launching the game.\033[0m"
fi
fi
cd "$srcdir"
unzip -o "$pkgname-$pkgver.zip" -d "$srcdir"
tar -xf "$srcdir/client.tar" -C "$srcdir"
mv "$srcdir/client_distribution" "$srcdir/openstarbound-nightly"
rm -rf "$srcdir/openstarbound-nightly/mods"
rm -rf "$srcdir/openstarbound-nightly/assets/user"
install -dm755 "$pkgdir/opt/openstarbound-nightly"
cp -r "$srcdir/openstarbound-nightly"/* "$pkgdir/opt/openstarbound-nightly"
chmod -R 777 "$pkgdir/opt/openstarbound-nightly"
mkdir -p "$HOME/.config/openstarbound-nightly/logs"
mkdir -p "$HOME/.config/openstarbound-nightly/mods"
mkdir -p "$HOME/.config/openstarbound-nightly/storage"
mkdir -p "$HOME/.config/openstarbound-nightly/assets/user"
ln -sf "$HOME/.config/openstarbound-nightly/logs" "$pkgdir/opt/openstarbound-nightly/logs"
ln -sf "$HOME/.config/openstarbound-nightly/mods" "$pkgdir/opt/openstarbound-nightly/mods"
ln -sf "$HOME/.config/openstarbound-nightly/storage" "$pkgdir/opt/openstarbound-nightly/storage"
ln -sf "$HOME/.config/openstarbound-nightly/assets/user" "$pkgdir/opt/openstarbound-nightly/assets/user"
if [[ -f "$srcdir/packed.pak" ]]; then
echo "Copying 'packed.pak' to the final package..."
install -Dm644 "$srcdir/packed.pak" "$pkgdir/opt/openstarbound-nightly/assets/packed.pak"
fi
install -Dm644 "$srcdir/starbound.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/starbound-nightly.png"
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/openstarbound-nightly.desktop" <<EOF
[Desktop Entry]
Name=OpenStarbound Nightly
Exec=/usr/bin/openstarbound-nightly
Icon=starbound-nightly
Type=Application
Categories=Game;
EOF
install -Dm755 /dev/stdin "$pkgdir/usr/bin/openstarbound-nightly" <<EOF
#!/bin/bash
cd /opt/openstarbound-nightly/linux || exit 1
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:./"
exec ./starbound "\$@"
EOF
install -Dm644 /dev/stdin "$pkgdir/usr/share/licenses/$pkgname/LICENSE" <<EOF
OpenStarbound is distributed under a custom license.
For more information, visit: $url
EOF
}
|