com.floatpane.matcha.yaml

 1id: com.floatpane.matcha
 2runtime: org.freedesktop.Sdk
 3runtime-version: "23.08"
 4sdk: org.freedesktop.Sdk
 5sdk-extensions:
 6  - org.freedesktop.Sdk.Extension.golang
 7
 8command: matcha
 9finish-args:
10  - --share=network
11  - --share=ipc
12  - --device=dri
13  - --filesystem=home
14
15modules:
16  - name: libpcsclite
17    buildsystem: simple
18    build-commands:
19      - install -Dm644 winscard.h /app/include/winscard.h
20      - install -Dm644 wintypes.h /app/include/wintypes.h
21      - sed 's/@VERSION@/2.4.1/' pcsclite.h.in > pcsclite.h
22      - install -Dm644 pcsclite.h /app/include/pcsclite.h
23      - gcc -c -o pcsclite_stub.o pcsclite_stub.c
24      - mkdir -p /app/lib
25      - ar rcs /app/lib/libpcsclite.a pcsclite_stub.o
26      - install -Dm644 libpcsclite.pc /app/lib/pkgconfig/libpcsclite.pc
27    sources:
28      - type: file
29        url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/winscard.h
30        sha256: be88c31d0c7d5823fa2eb13d81e892301817f3597f891d476a970652aacb7b1c
31      - type: file
32        url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/wintypes.h
33        sha256: 5eed57487b860295feafdc0d37d62f2ec63b5f790e0a80ed67500337e2b42cb4
34      - type: file
35        url: https://raw.githubusercontent.com/LudovicRousseau/PCSC/2.4.1/src/PCSC/pcsclite.h.in
36        sha256: 4dedcdfd21e54161b7120c328091ab37270611d32dc36527baeeb5aea70085d3
37      - type: inline
38        dest-filename: pcsclite_stub.c
39        contents: |
40          #include <stddef.h>
41          typedef long LONG;
42          typedef unsigned long DWORD;
43          typedef void *LPCVOID;
44          typedef char *LPSTR;
45          typedef const char *LPCSTR;
46          typedef unsigned char *LPBYTE;
47          typedef unsigned char BYTE;
48          typedef LONG SCARDCONTEXT;
49          typedef LONG SCARDHANDLE;
50          typedef struct { DWORD dwProtocol; DWORD cbPciLength; } SCARD_IO_REQUEST;
51          typedef struct { LPCSTR szReader; DWORD dwCurrentState; DWORD dwEventState; DWORD cbAtr; unsigned char rgbAtr[36]; void *pvUserData; } SCARD_READERSTATE;
52          LONG SCardEstablishContext(DWORD s, LPCVOID r1, LPCVOID r2, SCARDCONTEXT *c) { return 0; }
53          LONG SCardReleaseContext(SCARDCONTEXT c) { return 0; }
54          LONG SCardIsValidContext(SCARDCONTEXT c) { return 0; }
55          LONG SCardCancel(SCARDCONTEXT c) { return 0; }
56          LONG SCardConnect(SCARDCONTEXT c, LPCSTR r, DWORD s, DWORD p, SCARDHANDLE *h, DWORD *ap) { return 0; }
57          LONG SCardReconnect(SCARDHANDLE h, DWORD s, DWORD p, DWORD d, DWORD *ap) { return 0; }
58          LONG SCardDisconnect(SCARDHANDLE h, DWORD d) { return 0; }
59          LONG SCardBeginTransaction(SCARDHANDLE h) { return 0; }
60          LONG SCardEndTransaction(SCARDHANDLE h, DWORD d) { return 0; }
61          LONG SCardStatus(SCARDHANDLE h, LPSTR r, DWORD *rl, DWORD *s, DWORD *p, LPBYTE a, DWORD *al) { return 0; }
62          LONG SCardTransmit(SCARDHANDLE h, const SCARD_IO_REQUEST *si, const BYTE *s, DWORD sl, SCARD_IO_REQUEST *ri, BYTE *r, DWORD *rl) { return 0; }
63          LONG SCardControl(SCARDHANDLE h, DWORD c, LPCVOID i, DWORD il, void *o, DWORD ol, DWORD *br) { return 0; }
64          LONG SCardGetAttrib(SCARDHANDLE h, DWORD a, LPBYTE b, DWORD *bl) { return 0; }
65          LONG SCardSetAttrib(SCARDHANDLE h, DWORD a, const BYTE *b, DWORD bl) { return 0; }
66          LONG SCardListReaders(SCARDCONTEXT c, LPCSTR g, LPSTR r, DWORD *rl) { return 0; }
67          LONG SCardListReaderGroups(SCARDCONTEXT c, LPSTR g, DWORD *gl) { return 0; }
68          LONG SCardGetStatusChange(SCARDCONTEXT c, DWORD t, SCARD_READERSTATE *s, DWORD n) { return 0; }
69          LONG SCardFreeMemory(SCARDCONTEXT c, LPCVOID m) { return 0; }
70          const char *pcsc_stringify_error(LONG e) { return "stub"; }
71      - type: inline
72        dest-filename: libpcsclite.pc
73        contents: |
74          prefix=/app
75          libdir=${prefix}/lib
76          includedir=${prefix}/include
77          Name: libpcsclite
78          Description: PC/SC Lite (stub for build)
79          Version: 2.4.1
80          Cflags: -I${includedir}
81          Libs: -L${libdir} -lpcsclite
82
83  - name: matcha
84    buildsystem: simple
85    build-options:
86      append-path: /usr/lib/sdk/golang/bin
87      env:
88        GOCACHE: /app/.cache/go-build
89        GOPATH: /app/.go
90      build-args:
91        - --share=network
92    build-commands:
93      - go build -o /app/bin/matcha .
94      - chmod -R u+w /app/.go /app/.cache
95      - rm -rf /app/.go /app/.cache
96
97    sources:
98      - type: dir
99        path: .