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: .