From 8f2d9732d693d03b1d9ec5026ab13f57a02285b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Tue, 20 Oct 2026 23:34:15 +0300 Subject: [PATCH] v3.31.1: the Linux PC/SC headers (pyscard builds from source) The first release run failed installing the test dependencies: pyscard 2.3.1 publishes macOS and Windows wheels only (no manylinux), so on Linux it always builds from source and needs the PC/SC headers - the job stopped at "winscard.h: No such file or directory". - The release workflow installs libpcsclite-dev before the dependencies. - The READMEs and setup.sh name the header package next to pcscd/ccid: libpcsclite-dev (Debian/Ubuntu), pcsc-lite-devel (Fedora), included in Arch's pcsclite. This affects every Linux user running setup, not just CI. - Version strings + the PWA cache bumped together (simple-v456). No runtime change: 997 Python + 953 frontend green; the release package test builds with the new version. --- .github/workflows/release.yml | 5 +++++ README.md | 2 +- README_RUS.md | 2 +- frontend/index.html | 2 +- frontend/sw.js | 2 +- pyproject.toml | 2 +- pysim_simple_server/server.py | 2 +- setup.sh | 9 +++++---- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e3cf21..d60792e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,6 +39,11 @@ jobs: with: python-version: '3.12' + # pyscard has no manylinux wheels, so it builds from source on Linux + # and needs the PC/SC development headers. + - name: Install the PC/SC development headers + run: sudo apt-get update && sudo apt-get install -y libpcsclite-dev + - name: Install pysim and the test dependencies working-directory: simple run: | diff --git a/README.md b/README.md index 4c68b93..344b478 100644 --- a/README.md +++ b/README.md @@ -739,7 +739,7 @@ The bundled Python server wraps [pySim](https://osmocom.org/projects/pysim/wiki) ### Prerequisites - **Python 3.9+** with `pip`, and **Git** -- **Smart card reader** (PC/SC or serial/FTDI) — PC/SC is preferable (`pcsc-lite` + `ccid` on Linux) +- **Smart card reader** (PC/SC or serial/FTDI) — PC/SC is preferable (`pcsc-lite` + `ccid` on Linux). `pyscard` has no Linux wheels, so it builds from source: install the PC/SC header package too (`libpcsclite-dev` on Debian/Ubuntu, `pcsc-lite-devel` on Fedora; on Arch `pcsclite` includes them). - **Windows** — use Python 3.9–3.13 (3.13 recommended): `pyscard` ships precompiled wheels for these versions. On 3.14 it builds from source (needs MSVC C++ Build Tools). The SMPP bridge (`smpp.twisted3`) is intentionally skipped on Windows. ### Scripts diff --git a/README_RUS.md b/README_RUS.md index adfecaa..69c63ff 100644 --- a/README_RUS.md +++ b/README_RUS.md @@ -723,7 +723,7 @@ PWA проверяет версию сервера при подключении ### Требования - **Python 3.9+** с `pip`, и **Git** -- **Смарт-картридер** (PC/SC или serial/FTDI) — предпочтителен PC/SC (`pcsc-lite` + `ccid` на Linux) +- **Смарт-картридер** (PC/SC или serial/FTDI) — предпочтителен PC/SC (`pcsc-lite` + `ccid` на Linux). У `pyscard` нет Linux-wheel, поэтому он собирается из исходников: поставьте и пакет с заголовками PC/SC (`libpcsclite-dev` в Debian/Ubuntu, `pcsc-lite-devel` в Fedora; в Arch они входят в `pcsclite`). - **Windows** — используйте Python 3.9–3.13 (рекомендуется 3.13): у `pyscard` есть готовые wheel. На 3.14 он собирается из исходников (нужны MSVC C++ Build Tools). SMPP-мост (`smpp.twisted3`) в Windows сознательно не ставится. ### Скрипты diff --git a/frontend/index.html b/frontend/index.html index d3db992..9821436 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1943,7 +1943,7 @@ // ===== Version ===== // Single source of truth for the PWA version: shown in the header and used // by the server version check in pysimConnect(). -const SIMPLE_VERSION = '3.31.0'; +const SIMPLE_VERSION = '3.31.1'; document.getElementById('app-version').textContent = 'v' + SIMPLE_VERSION; // ===== view history (the browser Back/Forward buttons) ===== diff --git a/frontend/sw.js b/frontend/sw.js index 10fdfb6..b797ecb 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'simple-v455'; +const CACHE = 'simple-v456'; const URLS = [ 'index.html', 'help.html', diff --git a/pyproject.toml b/pyproject.toml index c1d3f14..73a712f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pysim-simple-server" -version = "3.31.0" +version = "3.31.1" description = "HTTP REST server wrapping pysim for the SIMple PWA" license = { text = "GPL-2.0-or-later" } requires-python = ">=3.9" diff --git a/pysim_simple_server/server.py b/pysim_simple_server/server.py index 9c67eab..c562f44 100644 --- a/pysim_simple_server/server.py +++ b/pysim_simple_server/server.py @@ -37,7 +37,7 @@ from osmocom.tlv import BER_TLV_IE from osmocom.utils import rpad -VERSION = '3.31.0' +VERSION = '3.31.1' MAX_ENVELOPE_SEGMENTS = 5 # max SMS segments for outgoing C-APDU in ENVELOPE diff --git a/setup.sh b/setup.sh index f6a4044..88e785f 100755 --- a/setup.sh +++ b/setup.sh @@ -45,10 +45,11 @@ if command -v pcscd >/dev/null 2>&1; then fi else echo "Note: PC/SC daemon not found. If you use a USB smart card reader," - echo "install pcsc-lite and ccid:" - echo " Debian/Ubuntu: sudo apt install pcscd pcsc-tools" - echo " Arch Linux: sudo pacman -S pcsc-lite ccid" - echo " Fedora: sudo dnf install pcsc-lite pcsc-lite-ccid" + echo "install pcsc-lite and ccid (plus the PC/SC headers that the" + echo "pyscard build needs on Linux):" + echo " Debian/Ubuntu: sudo apt install pcscd pcsc-tools libpcsclite-dev" + echo " Arch Linux: sudo pacman -S pcsc-lite ccid (headers included)" + echo " Fedora: sudo dnf install pcsc-lite pcsc-lite-ccid pcsc-lite-devel" fi echo ""