fix(linux): enable WebRTC in WebKitGTK; add Arch package build
Build Lotus Chat Desktop / prepare (push) Successful in 1m0s
Build Lotus Chat Desktop / build-windows (push) Successful in 41m27s
Build Lotus Chat Desktop / build-linux (push) Successful in 46m34s
Build Lotus Chat Desktop / build-arch (push) Failing after 23s
Build Lotus Chat Desktop / update-manifest (push) Successful in 12s
Build Lotus Chat Desktop / prepare (push) Successful in 1m0s
Build Lotus Chat Desktop / build-windows (push) Successful in 41m27s
Build Lotus Chat Desktop / build-linux (push) Successful in 46m34s
Build Lotus Chat Desktop / build-arch (push) Failing after 23s
Build Lotus Chat Desktop / update-manifest (push) Successful in 12s
WebKitGTK ships enable-media-stream/enable-webrtc off by default (unlike WebView2/WKWebView), leaving navigator.mediaDevices undefined and Element Call reporting "browser does not support WebRTC" on every Linux build. Enable both settings and auto-grant the resulting camera/mic permission request, mirroring the existing WebView2 handling. Also add a build-arch CI job that repackages the existing .deb into a real .pkg.tar.zst and uploads it to the Gitea release alongside the Windows/Linux artifacts, for Arch/CachyOS users who'd rather use pacman than an AppImage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -281,6 +281,55 @@ jobs:
|
||||
upload "LotusChat-x86_64.AppImage.tar.gz.sig" "$APPIMAGE_DIR/Lotus Chat_${VERSION}_amd64.AppImage.tar.gz.sig"
|
||||
upload "LotusChat-x86_64.deb" "$DEB_DIR/Lotus Chat_${VERSION}_amd64.deb"
|
||||
|
||||
build-arch:
|
||||
# Needs build-linux's .deb to already be on the release (this job
|
||||
# downloads it from the fixed "latest" asset URL, same as update-manifest
|
||||
# does for signatures) rather than recompiling from source.
|
||||
needs: [prepare, build-linux]
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: archlinux:base-devel
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install build tools
|
||||
run: pacman -Syu --noconfirm --needed curl python
|
||||
|
||||
- name: Set package version
|
||||
env:
|
||||
VERSION: ${{ needs.prepare.outputs.version }}
|
||||
run: sed -i "s/^pkgver=.*/pkgver=$VERSION/" packaging/pacman/PKGBUILD
|
||||
|
||||
- name: Build .pkg.tar.zst
|
||||
run: |
|
||||
# makepkg refuses to run as root. --nodeps: the package() step just
|
||||
# extracts the .deb payload, so the runtime `depends` (webkit2gtk,
|
||||
# gstreamer, ...) don't need to be installed on the build container.
|
||||
useradd -m builder
|
||||
chown -R builder:builder packaging/pacman
|
||||
su builder -c 'cd packaging/pacman && makepkg -f --noconfirm --nodeps'
|
||||
|
||||
- name: Upload to release
|
||||
env:
|
||||
TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
||||
RELEASE_ID: ${{ needs.prepare.outputs.release_id }}
|
||||
run: |
|
||||
PKG=$(ls packaging/pacman/*.pkg.tar.zst)
|
||||
NAME="LotusChat-x86_64.pkg.tar.zst"
|
||||
|
||||
existing_id=$(curl -sf "$GITEA_URL/api/v1/repos/$REPO/releases/$RELEASE_ID/assets" \
|
||||
-H "Authorization: token $TOKEN" \
|
||||
| python3 -c "import sys,json; assets=json.load(sys.stdin); print(next((str(a['id']) for a in assets if a['name']=='$NAME'), ''))" 2>/dev/null || true)
|
||||
if [ -n "$existing_id" ]; then
|
||||
curl -sf -X DELETE "$GITEA_URL/api/v1/repos/$REPO/releases/$RELEASE_ID/assets/$existing_id" \
|
||||
-H "Authorization: token $TOKEN" || true
|
||||
fi
|
||||
curl -sf -X POST \
|
||||
"$GITEA_URL/api/v1/repos/$REPO/releases/$RELEASE_ID/assets?name=$NAME" \
|
||||
-H "Authorization: token $TOKEN" \
|
||||
-H "Content-Type: application/octet-stream" \
|
||||
--data-binary @"$PKG"
|
||||
|
||||
update-manifest:
|
||||
needs: [prepare, build-windows, build-linux]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
Reference in New Issue
Block a user