From 83dbb4a1e69930dcf9e4690a9500dbc88a6a7673 Mon Sep 17 00:00:00 2001 From: Drew Smirnoff Date: Sun, 5 Apr 2026 14:13:41 +0400 Subject: [PATCH] ci: fix static flatpak-builder (#456) --- .github/workflows/nightly.yml | 21 ++++------- .github/workflows/static.yml | 2 +- com.floatpane.matcha.yaml | 66 +++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 15 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e286b4b03ee827781e6cf7c7b4483819b519e789..58a1582d187413b0be74558cca93bb09a890b45f 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -113,23 +113,22 @@ jobs: run: | gh release delete nightlyv0 --yes --cleanup-tag || true - - name: Generate release notes - id: notes + - name: Create nightly release env: GH_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} run: | SHORT_SHA="$(git rev-parse --short HEAD)" LATEST_TAG="$(git describe --tags --abbrev=0 --exclude='nightlyv*' 2>/dev/null || echo '')" + NOTES_FILE="$RUNNER_TEMP/release_notes.md" { - echo 'BODY< [!WARNING]" echo "> This is an automated nightly build from the latest \`master\` commit (\`$SHORT_SHA\`). It may be unstable — use stable releases for production." echo "" echo "### Install" echo "" - echo "- **Homebrew:** \`brew install floatpane/matcha/matcha-nightly\`" - echo "- **Snapcraft:** \`snap install matcha --beta\`" + echo '- **Homebrew:** `brew install floatpane/matcha/matcha-nightly`' + echo '- **Snapcraft:** `snap install matcha --beta`' if [ -n "$LATEST_TAG" ]; then echo "" @@ -138,17 +137,11 @@ jobs: git log --pretty=format:"- %s (%h)" "$LATEST_TAG..HEAD" echo "" fi + } > "$NOTES_FILE" - echo 'EOF' - } >> "$GITHUB_OUTPUT" - - - name: Create nightly release - env: - GH_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} - run: | gh release create nightlyv0 dist/*.tar.gz dist/*.zip dist/checksums.txt \ - --title "Nightly Build ($(git rev-parse --short HEAD))" \ - --notes "${{ steps.notes.outputs.BODY }}" \ + --title "Nightly Build ($SHORT_SHA)" \ + --notes-file "$NOTES_FILE" \ --prerelease \ --target master diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index dde6bedcccfeb2a032ac87da72ec282a678aab83..61114759eaf06936fb9c93b371bb3e0ddcf0dc8c 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -37,7 +37,7 @@ jobs: - name: Install Flatpak Builder run: | sudo apt-get update - sudo apt-get install -y flatpak flatpak-builder libpcsclite-dev + sudo apt-get install -y flatpak flatpak-builder flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - name: Build Flatpak Repo diff --git a/com.floatpane.matcha.yaml b/com.floatpane.matcha.yaml index 027c0af9da609e7f71666e6d5545d22391fe6a83..a22ad16b50fa9988a44d79cf6cc5dff3d3f80639 100644 --- a/com.floatpane.matcha.yaml +++ b/com.floatpane.matcha.yaml @@ -13,6 +13,72 @@ finish-args: - --filesystem=home modules: + - name: libpcsclite + buildsystem: simple + build-commands: + - install -Dm644 winscard.h /app/include/winscard.h + - install -Dm644 wintypes.h /app/include/wintypes.h + - sed 's/@VERSION@/2.4.1/' pcsclite.h.in > pcsclite.h + - install -Dm644 pcsclite.h /app/include/pcsclite.h + - gcc -c -o pcsclite_stub.o pcsclite_stub.c + - ar rcs /app/lib/libpcsclite.a pcsclite_stub.o + - install -Dm644 libpcsclite.pc /app/lib/pkgconfig/libpcsclite.pc + sources: + - type: file + url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/winscard.h + sha256: be88c31d0c7d5823fa2eb13d81e892301817f3597f891d476a970652aacb7b1c + - type: file + url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/wintypes.h + sha256: 5eed57487b860295feafdc0d37d62f2ec63b5f790e0a80ed67500337e2b42cb4 + - type: file + url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/pcsclite.h.in + sha256: 4dedcdfd21e54161b7120c328091ab37270611d32dc36527baeeb5aea70085d3 + - type: inline + dest-filename: pcsclite_stub.c + contents: | + #include + typedef long LONG; + typedef unsigned long DWORD; + typedef void *LPCVOID; + typedef char *LPSTR; + typedef const char *LPCSTR; + typedef unsigned char *LPBYTE; + typedef unsigned char BYTE; + typedef LONG SCARDCONTEXT; + typedef LONG SCARDHANDLE; + typedef struct { DWORD dwProtocol; DWORD cbPciLength; } SCARD_IO_REQUEST; + typedef struct { LPCSTR szReader; DWORD dwCurrentState; DWORD dwEventState; DWORD cbAtr; unsigned char rgbAtr[36]; void *pvUserData; } SCARD_READERSTATE; + LONG SCardEstablishContext(DWORD s, LPCVOID r1, LPCVOID r2, SCARDCONTEXT *c) { return 0; } + LONG SCardReleaseContext(SCARDCONTEXT c) { return 0; } + LONG SCardIsValidContext(SCARDCONTEXT c) { return 0; } + LONG SCardCancel(SCARDCONTEXT c) { return 0; } + LONG SCardConnect(SCARDCONTEXT c, LPCSTR r, DWORD s, DWORD p, SCARDHANDLE *h, DWORD *ap) { return 0; } + LONG SCardReconnect(SCARDHANDLE h, DWORD s, DWORD p, DWORD d, DWORD *ap) { return 0; } + LONG SCardDisconnect(SCARDHANDLE h, DWORD d) { return 0; } + LONG SCardBeginTransaction(SCARDHANDLE h) { return 0; } + LONG SCardEndTransaction(SCARDHANDLE h, DWORD d) { return 0; } + LONG SCardStatus(SCARDHANDLE h, LPSTR r, DWORD *rl, DWORD *s, DWORD *p, LPBYTE a, DWORD *al) { return 0; } + LONG SCardTransmit(SCARDHANDLE h, const SCARD_IO_REQUEST *si, const BYTE *s, DWORD sl, SCARD_IO_REQUEST *ri, BYTE *r, DWORD *rl) { return 0; } + LONG SCardControl(SCARDHANDLE h, DWORD c, LPCVOID i, DWORD il, void *o, DWORD ol, DWORD *br) { return 0; } + LONG SCardGetAttrib(SCARDHANDLE h, DWORD a, LPBYTE b, DWORD *bl) { return 0; } + LONG SCardSetAttrib(SCARDHANDLE h, DWORD a, const BYTE *b, DWORD bl) { return 0; } + LONG SCardListReaders(SCARDCONTEXT c, LPCSTR g, LPSTR r, DWORD *rl) { return 0; } + LONG SCardListReaderGroups(SCARDCONTEXT c, LPSTR g, DWORD *gl) { return 0; } + LONG SCardGetStatusChange(SCARDCONTEXT c, DWORD t, SCARD_READERSTATE *s, DWORD n) { return 0; } + LONG SCardFreeMemory(SCARDCONTEXT c, LPCVOID m) { return 0; } + const char *pcsc_stringify_error(LONG e) { return "stub"; } + - type: inline + dest-filename: libpcsclite.pc + contents: | + prefix=/app + libdir=${prefix}/lib + includedir=${prefix}/include + Name: libpcsclite + Description: PC/SC Lite (stub for build) + Version: 2.4.1 + Cflags: -I${includedir} + Libs: -L${libdir} -lpcsclite + - name: matcha buildsystem: simple build-options: