@@ -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<<EOF'
echo "> [!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
@@ -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 <stddef.h>
+ 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: