Skip to content

Commit 6f2f503

Browse files
committed
chore: Fix Windows and Mac CI
1 parent 436da9c commit 6f2f503

4 files changed

Lines changed: 58 additions & 34 deletions

File tree

.github/workflows/release-appimage.yml

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,32 @@ jobs:
1212
appimage:
1313
name: Build AppImage
1414
runs-on: ubuntu-latest
15+
container:
16+
image: fedora:latest
1517
outputs:
1618
artifact-name: ${{ steps.names.outputs.artifact_name }}
1719
appimage-name: ${{ steps.names.outputs.appimage_name }}
1820
steps:
21+
- name: Install system dependencies
22+
run: |
23+
dnf install -y \
24+
appstream \
25+
curl \
26+
desktop-file-utils \
27+
file \
28+
findutils \
29+
gcc \
30+
gcc-c++ \
31+
git \
32+
gtk4-devel \
33+
gtksourceview5-devel \
34+
libadwaita-devel \
35+
make \
36+
openssl-devel \
37+
patchelf \
38+
pkgconf-pkg-config \
39+
vte291-gtk4-devel
40+
1941
- name: Check out sources
2042
uses: actions/checkout@v4
2143

@@ -47,43 +69,27 @@ jobs:
4769
echo "artifact_name=appimage-bundle" >> "$GITHUB_OUTPUT"
4870
echo "appimage_name=aetheris-${VERSION}-x86_64.AppImage" >> "$GITHUB_OUTPUT"
4971
50-
- name: Install system dependencies
51-
run: |
52-
sudo apt-get update
53-
sudo apt-get install -y \
54-
appstream \
55-
curl \
56-
desktop-file-utils \
57-
file \
58-
libadwaita-1-dev \
59-
libgtk-4-dev \
60-
libgtksourceview-5-dev \
61-
libssl-dev \
62-
libvte-2.91-gtk4-dev \
63-
patchelf \
64-
pkg-config
65-
6672
- name: Install Rust
6773
uses: dtolnay/rust-toolchain@stable
6874

6975
- name: Install AppImage tooling
7076
run: |
7177
set -euo pipefail
7278
cargo install cargo-appimage
73-
sudo mkdir -p /usr/local/share/appimagetool
74-
sudo curl -fL \
79+
mkdir -p /usr/local/share/appimagetool
80+
curl -fL \
7581
"https://github.com/AppImage/appimagetool/releases/download/1.9.1/appimagetool-x86_64.AppImage" \
7682
-o /usr/local/bin/appimagetool-bin
77-
sudo curl -fL \
83+
curl -fL \
7884
"https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64" \
7985
-o /usr/local/share/appimagetool/runtime-x86_64
80-
sudo chmod +x /usr/local/bin/appimagetool-bin /usr/local/share/appimagetool/runtime-x86_64
81-
sudo tee /usr/local/bin/appimagetool >/dev/null <<'EOF'
86+
chmod +x /usr/local/bin/appimagetool-bin /usr/local/share/appimagetool/runtime-x86_64
87+
tee /usr/local/bin/appimagetool >/dev/null <<'EOF'
8288
#!/usr/bin/env bash
8389
set -euo pipefail
8490
exec /usr/local/bin/appimagetool-bin --runtime-file /usr/local/share/appimagetool/runtime-x86_64 "$@"
8591
EOF
86-
sudo chmod +x /usr/local/bin/appimagetool
92+
chmod +x /usr/local/bin/appimagetool
8793
8894
- name: Build AppImage
8995
run: |

crates/aetheris-app/src/app/handler.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -915,10 +915,7 @@ impl App {
915915
self.feed_terminal_event(token, event);
916916
}
917917
AppMsg::PodExecFinished(token, result) => {
918-
if let Some(session) = self.terminal_sessions.get_mut(&token) {
919-
session.abort_handle = None;
920-
session.input_tx = None;
921-
}
918+
self.finish_terminal_session(token);
922919
if let Err(error) = result {
923920
let message = terminal_error_message(&error);
924921
self.show_terminal_error(token, &error);

crates/aetheris-app/src/app/streams.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,17 @@ impl App {
509509
.add_toast(adw::Toast::new(&terminal_error_message(error)));
510510
}
511511

512+
#[cfg(not(target_os = "windows"))]
513+
pub(super) fn finish_terminal_session(&mut self, token: u64) {
514+
if let Some(session) = self.terminal_sessions.get_mut(&token) {
515+
session.abort_handle = None;
516+
session.input_tx = None;
517+
}
518+
}
519+
520+
#[cfg(target_os = "windows")]
521+
pub(super) fn finish_terminal_session(&mut self, _token: u64) {}
522+
512523
#[cfg(not(target_os = "windows"))]
513524
pub(super) fn send_terminal_input(&self, token: u64, text: String) {
514525
if let Some(input_tx) = self

scripts/bundle-macos-runtime.sh

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ copy_dylib() {
6868

6969
fix_binary() {
7070
local binary="$1"
71-
local new_libs=()
7271
local rpath
7372
rpath="@loader_path/$(python3 -c 'import os, sys; print(os.path.relpath(sys.argv[1], os.path.dirname(sys.argv[2])))' "$frameworks" "$binary")"
7473

@@ -84,7 +83,7 @@ fix_binary() {
8483

8584
if [ -f "$src" ]; then
8685
if copy_dylib "$src"; then
87-
new_libs+=("$frameworks/$name")
86+
printf '%s\n' "$frameworks/$name"
8887
fi
8988
install_name_tool -change "$lib" "@rpath/$name" "$binary" 2>/dev/null || true
9089
fi
@@ -93,30 +92,41 @@ fix_binary() {
9392
if ! otool -l "$binary" 2>/dev/null | grep -q "$rpath"; then
9493
install_name_tool -add_rpath "$rpath" "$binary" 2>/dev/null || true
9594
fi
96-
97-
printf '%s\n' "${new_libs[@]}"
9895
}
9996

10097
queue=()
98+
queue_count=0
10199
while IFS= read -r lib; do
102-
[ -n "$lib" ] && queue+=("$lib")
100+
if [ -n "$lib" ]; then
101+
queue+=("$lib")
102+
queue_count=$((queue_count + 1))
103+
fi
103104
done < <(fix_binary "$main_binary")
104105

105106
pass=0
106-
while [ "${#queue[@]}" -gt 0 ]; do
107+
while [ "$queue_count" -gt 0 ]; do
107108
pass=$((pass + 1))
108109
if [ "$pass" -gt 30 ]; then
109110
echo "Stopping dylib recursion after 30 passes." >&2
110111
break
111112
fi
112113

113114
next=()
115+
next_count=0
114116
for lib in "${queue[@]}"; do
115117
while IFS= read -r new_lib; do
116-
[ -n "$new_lib" ] && next+=("$new_lib")
118+
if [ -n "$new_lib" ]; then
119+
next+=("$new_lib")
120+
next_count=$((next_count + 1))
121+
fi
117122
done < <(fix_binary "$lib")
118123
done
119-
queue=("${next[@]}")
124+
if [ "$next_count" -gt 0 ]; then
125+
queue=("${next[@]}")
126+
else
127+
queue=()
128+
fi
129+
queue_count="$next_count"
120130
done
121131

122132
copy_tree "$brew_prefix/share/glib-2.0/schemas" "$share/glib-2.0/schemas"

0 commit comments

Comments
 (0)