fix(swisseph): naprawa builda obrazu silnika B #3
Reference in New Issue
Block a user
Delete Branch "fix/swisseph-build"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Kontener
engine-swissephsie nie budowal.Przyczyna (ustalona, nie zgadnieta)
pyswissephto rozszerzenie C. Na PyPI w najnowszym wydaniu 2.10.3.2:Zero wheeli dla cp312 - a obraz stoi na
python:3.12-slim. Pip musial wieckompilowac ze zrodel, a
-slimnie ma kompilatora. Dodatkowo wheels linuksoweistnieja tylko dla i686/x86_64, wiec na arm64 kompilacja jest konieczna
niezaleznie od wersji Pythona.
Potwierdzenie:
pip install pyswissephna Pythonie 3.14 (gdzie wheela tez nie ma)konczy sie
Successfully built pyswisseph- czyli sdist kompiluje sie bez zarzutu,brakowalo wylacznie toolchaina w obrazie.
Rozwiazanie
Dockerfile wieloetapowy: kompilacja w etapie
builderzbuild-essential,do obrazu finalnego wchodzi juz tylko gotowy wheel - runtime zostaje czysty,
bez kompilatora. Rozwazalem prostsze zejscie na
python:3.11-slim(gotowy wheel,zero kompilacji), ale wtedy zostajemy z 3.11 i tak czy siak sypie sie na arm64.
Multi-stage dziala wszedzie i trzyma parytet wersji z reszta uslug.
Do tego sanity check
import swissephna etapie builda - niedzialajacy silnik mawywracac build, a nie dopiero pierwszy request.
Weryfikacja
Lokalnie nie ma czym zbudowac: jest klient
docker, ale zadnego runtime(brak Docker.app, colimy, podmana) -
docker infopada. Dlatego weryfikacja idzieprzez CI: nowy job
swisseph-imagerobi realnydocker build, startujekontener i uderza w
/healthoraz/positionsna horoskopie referencyjnym(30.04.1984). Jak cos padnie, dorzuca
docker logs.Uwaga: jesli runner Gitei nie ma dostepu do dockera, ten job zgasnie z powodow
srodowiskowych, nie kodu - wtedy najprostsza weryfikacja to na Twoim Proxmoxie:
docker compose --profile comparison build engine-swissephCo to odblokowuje
Pierwsze realne uruchomienie porownania dwoch silnikow (LOG-25/26) -
/chart/comparei testy parytetu silnika B nigdy jeszcze nie chodzily na zywym swissephie.
Licencja
Bez zmian. Usluga zostaje wydzielona i AGPL-3.0, izolacja procesowa nienaruszona.