Skip to content

Commit c87faf4

Browse files
authored
build citron manually instead of relying on the aur package (#13)
this will make it easier to add nightly and arm builds next
1 parent 5f24f32 commit c87faf4

File tree

2 files changed

+56
-39
lines changed

2 files changed

+56
-39
lines changed

.github/workflows/blank.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,6 @@ jobs:
9191
libzip \
9292
qt6ct
9393
94-
echo "Hacking makepkg to allow building as root in the container..."
95-
sudo sed -i 's|EUID == 0|EUID == 69|g' /usr/bin/makepkg
96-
mkdir -p /usr/local/bin
97-
cp /usr/bin/makepkg /usr/local/bin
98-
99-
echo "its -O3 the letter, not -03 the number"
100-
sudo sed -i 's|-O2|-O3|; s|MAKEFLAGS=.*|MAKEFLAGS="-j$(nproc)"|; s|#MAKEFLAGS|MAKEFLAGS|' /etc/makepkg.conf
101-
cat /etc/makepkg.conf
102-
10394
- name: Install debloated llvm-libs
10495
run: |
10596
LLVM_URL="https://github.com/pkgforge-dev/llvm-libs-debloated/releases/download/continuous/llvm-libs-nano-x86_64.pkg.tar.zst"

citron-appimage.sh

Lines changed: 56 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
#!/bin/sh
22

3-
set -e
3+
set -ex
44

55
export APPIMAGE_EXTRACT_AND_RUN=1
66
export ARCH="$(uname -m)"
7+
8+
REPO="https://git.citron-emu.org/Citron/Citron.git"
79
LIB4BN="https://raw.githubusercontent.com/VHSgunzo/sharun/refs/heads/main/lib4bin"
810
URUNTIME=$(wget --retry-connrefused --tries=30 \
911
https://api.github.com/repos/VHSgunzo/uruntime/releases -O - \
@@ -13,39 +15,63 @@ ICON="https://git.citron-emu.org/Citron/Citron/raw/branch/master/dist/citron.svg
1315
if [ "$1" = 'v3' ]; then
1416
echo "Making x86-64-v3 build of citron"
1517
ARCH="${ARCH}_v3"
18+
ARCH_FLAGS="-march=x86-64-v3 -O3"
19+
else
20+
echo "Making x86-64-v3 generic of citron"
21+
ARCH_FLAGS="-march=x86-64 -mtune=generic -O3"
1622
fi
1723
UPINFO="gh-releases-zsync|$(echo "$GITHUB_REPOSITORY" | tr '/' '|')|latest|*$ARCH.AppImage.zsync"
1824

1925
# BUILD CITRON
20-
if [ ! -d ./citron ]; then
21-
git clone https://aur.archlinux.org/citron.git citron
22-
fi
23-
cd ./citron
24-
25-
if [ "$1" = 'v3' ]; then
26-
sed -i 's/-march=[^"]*/-march=x86-64-v3/g' ./PKGBUILD
27-
sudo sed -i 's/-march=x86-64 /-march=x86-64-v3 /' /etc/makepkg.conf # Do I need to do this as well?
28-
cat /etc/makepkg.conf
29-
else
30-
sed -i 's/-march=[^"]*/-march=x86-64/g' ./PKGBUILD
31-
fi
32-
33-
# This library is massive and makes the AppImage +220 Mib
34-
# Seems to have very few uses so we will build without it
35-
sed -i "s/'qt6-webengine'//" ./PKGBUILD
36-
sed -i 's/-DCITRON_USE_QT_WEB_ENGINE=ON/-DCITRON_USE_QT_WEB_ENGINE=OFF/' ./PKGBUILD
37-
38-
if ! grep -q -- '-O3' ./PKGBUILD; then
39-
sed -i 's/-march=/-O3 -march=/g' ./PKGBUILD
40-
fi
41-
cat ./PKGBUILD
42-
43-
makepkg -f
44-
sudo pacman --noconfirm -U *.pkg.tar.*
45-
ls .
46-
export VERSION="$(awk -F'=' '/pkgver=/{print $2; exit}' ./PKGBUILD)"
47-
echo "$VERSION" > ~/version
48-
cd ..
26+
git clone https://git.citron-emu.org/Citron/Citron.git ./citron
27+
28+
( cd ./citron
29+
if [ "$DEVEL" = 'true' ]; then
30+
CITRON_TAG="$(git rev-parse --short HEAD)"
31+
echo "Making nightly \"$CITRON_TAG\" build"
32+
VERSION="$CITRON_TAG"
33+
else
34+
CITRON_TAG=$(git describe --tags)
35+
echo "Making stable \"$CITRON_TAG\" build"
36+
git checkout "$CITRON_TAG"
37+
VERSION="$(echo "$CITRON_TAG" | awk -F'-' '{print $1}')"
38+
fi
39+
git submodule update --init --recursive
40+
41+
#Replaces 'boost::asio::io_service' with 'boost::asio::io_context' for compatibility with Boost.ASIO versions 1.74.0 and later
42+
find src -type f -name '*.cpp' -exec sed -i 's/boost::asio::io_service/boost::asio::io_context/g' {} \;
43+
44+
mkdir build
45+
cd build
46+
cmake .. -GNinja \
47+
-DCITRON_USE_BUNDLED_VCPKG=OFF \
48+
-DCITRON_USE_BUNDLED_QT=OFF \
49+
-DUSE_SYSTEM_QT=ON \
50+
-DCITRON_USE_BUNDLED_FFMPEG=OFF \
51+
-DCITRON_USE_BUNDLED_SDL2=ON \
52+
-DCITRON_USE_EXTERNAL_SDL2=OFF \
53+
-DCITRON_TESTS=OFF \
54+
-DCITRON_CHECK_SUBMODULES=OFF \
55+
-DCITRON_USE_LLVM_DEMANGLE=OFF \
56+
-DCITRON_ENABLE_LTO=ON \
57+
-DCITRON_USE_QT_MULTIMEDIA=ON \
58+
-DCITRON_USE_QT_WEB_ENGINE=OFF \
59+
-DENABLE_QT_TRANSLATION=ON \
60+
-DUSE_DISCORD_PRESENCE=OFF \
61+
-DBUNDLE_SPEEX=ON \
62+
-DCITRON_USE_FASTER_LD=OFF \
63+
-DCMAKE_INSTALL_PREFIX=/usr \
64+
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS -Wno-error" \
65+
-DCMAKE_C_FLAGS="$ARCH_FLAGS" \
66+
-DCITRON_ENABLE_PGO_OPTIMIZE=ON \
67+
-DCMAKE_SYSTEM_PROCESSOR="$(uname -m)" \
68+
-DCMAKE_BUILD_TYPE=Release
69+
ninja
70+
sudo ninja install
71+
echo "$VERSION" > ~/version
72+
)
73+
rm -rf ./citron
74+
VERSION="$(cat ~/version)"
4975

5076
# NOW MAKE APPIMAGE
5177
mkdir ./AppDir

0 commit comments

Comments
 (0)