Skip to content

Commit 5e21464

Browse files
committed
Fix macOS DMG build
1 parent 0cc9fba commit 5e21464

File tree

1 file changed

+57
-36
lines changed

1 file changed

+57
-36
lines changed

.github/workflows/macos-dmg.yml

Lines changed: 57 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -72,57 +72,78 @@ jobs:
7272
BREW_PREFIX="$(brew --prefix)"
7373
echo "Detected Homebrew prefix: $BREW_PREFIX"
7474
75+
# Write Info.plist required by gtk-mac-bundler
76+
cat > macos/Info.plist << PLIST
77+
<?xml version="1.0" encoding="UTF-8"?>
78+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
79+
<plist version="1.0">
80+
<dict>
81+
<key>CFBundleIdentifier</key>
82+
<string>io.github.BuddySirJava.SSH-Studio</string>
83+
<key>CFBundleName</key>
84+
<string>SSH Studio</string>
85+
<key>CFBundleExecutable</key>
86+
<string>ssh-studio</string>
87+
<key>CFBundleShortVersionString</key>
88+
<string>1.0.0</string>
89+
<key>CFBundleVersion</key>
90+
<string>1.0.0</string>
91+
<key>CFBundlePackageType</key>
92+
<string>APPL</string>
93+
</dict>
94+
</plist>
95+
PLIST
96+
97+
# Bundle description for gtk-mac-bundler
7598
cat > macos/ssh-studio.bundle << XML
7699
<?xml version="1.0"?>
77100
<app-bundle>
78101
<meta>
79102
<prefix>${BREW_PREFIX}</prefix>
103+
<destination overwrite="yes">${project}/../build/ssh-studio.bundle</destination>
80104
</meta>
81105
82106
<id>io.github.BuddySirJava.SSH-Studio</id>
83107
<name>SSH Studio</name>
84108
<version>1.0.0</version>
85-
<icon>data/media/icon_512.png</icon>
109+
<icon>${project}/../data/media/icon_512.png</icon>
86110
87-
<main-binary>
88-
<binary>ssh-studio</binary>
111+
<plist>${project}/Info.plist</plist>
112+
113+
<main-binary dest="${bundle}/Contents/MacOS/${name}">
114+
<binary>${project}/../stage/bin/ssh-studio</binary>
89115
</main-binary>
90116
91117
<resources>
92-
<file>stage/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource</file>
93-
<dir>src</dir>
118+
<file dest="${bundle}/Contents/Resources/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource">${project}/../stage/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource</file>
119+
<dir dest="${bundle}/Contents/Resources/src">${project}/../src</dir>
94120
</resources>
95-
96-
<dependencies>
97-
<dep>gtk4</dep>
98-
<dep>libadwaita</dep>
99-
<dep>gtksourceview5</dep>
100-
<dep>pygobject3</dep>
101-
<dep>python3</dep>
102-
</dependencies>
103121
</app-bundle>
104122
XML
105123
106-
gtk-mac-bundler macos/ssh-studio.bundle
107-
108-
- name: Diagnostic: list .app contents
109-
run: |
110-
set -euxo pipefail
111-
ls -R build/ssh-studio.bundle/SSH\ Studio.app/Contents || true
112-
113-
- name: Create DMG
114-
run: |
115-
set -euxo pipefail
116-
VER=$(sed -n "s/.*version: '\([^']*\)'.*/\1/p" meson.build | head -n1)
117-
ARCH=$(uname -m)
118-
mkdir -p dmgroot
119-
cp -R "build/ssh-studio.bundle/SSH Studio.app" dmgroot/
120-
ln -s /Applications dmgroot/Applications
121-
hdiutil create -volname "SSH Studio" -srcfolder dmgroot -ov -fs HFS+ "ssh-studio-${VER}-${ARCH}.dmg"
122-
123-
- name: Upload artifact
124-
uses: actions/upload-artifact@v4
125-
with:
126-
name: ssh-studio-dmg-${{ matrix.os }}
127-
path: |
128-
*.dmg
124+
- name: Run gtk-mac-bundler
125+
run: |
126+
set -euxo pipefail
127+
gtk-mac-bundler macos/ssh-studio.bundle
128+
129+
- name: Diagnostic: list .app contents
130+
run: |
131+
set -euxo pipefail
132+
ls -R build/ssh-studio.bundle/.SSH\ Studio.app/Contents || true
133+
134+
- name: Create DMG
135+
run: |
136+
set -euxo pipefail
137+
VER=$(sed -n "s/.*version: '\([^']*\)'.*/\1/p" meson.build | head -n1)
138+
ARCH=$(uname -m)
139+
mkdir -p dmgroot
140+
cp -R "build/ssh-studio.bundle/.SSH Studio.app" "dmgroot/SSH Studio.app"
141+
ln -s /Applications dmgroot/Applications
142+
hdiutil create -volname "SSH Studio" -srcfolder dmgroot -ov -fs HFS+ "ssh-studio-${VER}-${ARCH}.dmg"
143+
144+
- name: Upload artifact
145+
uses: actions/upload-artifact@v4
146+
with:
147+
name: ssh-studio-dmg-${{ matrix.os }}
148+
path: |
149+
*.dmg

0 commit comments

Comments
 (0)