The checker knew only the pack layout. A real build ships one tar.gz per repository, so it raised "<slug> : index.json absent" and, being guarded by `|| exit 1`, stopped compile_and_run.sh before cap sync — no APK. Broken since 2026-08-20 for anyone on the current mobile main: the parent half of that work landed, the mobile half producing packs never did. It now accepts both layouts, so whichever half lands next, it holds. Two things got better on the way. The byte-for-byte comparison against the source — the only check that proves fidelity rather than coherence — was reporting zero comparisons, because no entry matched the shape it looked for; it now compares twenty. And presence is no longer sampled: streaming all 139 archives costs 6 s and accounts for every one of the 124 350 promised files, where a sample of twenty could not see a ghost it did not draw. The test guarding the ZIP limit demanded a `chunk` field on every file — the pack layout, not the limit. It counts entries now: 278 against 65 535. Its real-bundle class had been taught to skip on this very symptom rather than fail; it runs again. --- FR --- Le vérificateur ne connaissait que la disposition en packs. Une compilation réelle livre un tar.gz par dépôt : il levait « <slug> : index.json absent » et, gardé par `|| exit 1`, arrêtait compile_and_run.sh avant cap sync — pas d'APK. Cassé depuis le 2026-08-20 pour quiconque est sur le main mobile actuel : la moitié parente de ce travail a atterri, la moitié mobile qui produit les packs jamais. Il accepte désormais les deux dispositions : quelle que soit la moitié qui atterrit ensuite, il tient. Deux choses se sont améliorées en chemin. La comparaison octet pour octet contre la source — la seule qui prouve la fidélité et non la cohérence — rapportait zéro comparaison, faute d'entrée à la forme attendue ; elle en compare vingt. Et la présence n'est plus échantillonnée : traverser les 139 archives coûte 6 s et rend compte de chacun des 124 350 fichiers promis, là où vingt tirages ne pouvaient pas voir un fantôme non tiré. Le test qui gardait la limite du ZIP exigeait un champ `chunk` sur chaque fichier — la disposition, pas la limite. Il compte les entrées désormais : 278 pour 65 535. Sa classe sur le vrai bundle avait appris à s'ignorer sur ce symptôme même plutôt qu'à échouer ; elle tourne à nouveau. Assisted-by: Claude Opus 5
33 lines
1.2 KiB
Bash
Executable file
33 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
if [[ ! -d "./mobile/erplibre_home_mobile" ]]; then
|
|
echo "Please, run installation ./mobile/install_mobile_dev.sh before run this script ./mobile/compile_and_run.sh"
|
|
exit 1
|
|
fi
|
|
|
|
WORKSPACE="$(pwd)"
|
|
|
|
cd mobile/erplibre_home_mobile || exit 1
|
|
|
|
npm install
|
|
npm run build || exit 1
|
|
|
|
# Le transfert des dépôts du manifeste DANS l'application est ce qui fait
|
|
# l'intérêt de son navigateur de code hors ligne, et il peut être vide sans que
|
|
# la compilation le dise. Ces dépôts entrent dans des conteneurs — un APK est
|
|
# un ZIP borné à 65535 entrées, quand un fichier par source en réclamait
|
|
# 124 350 —
|
|
# soit une archive tar.gz par dépôt, soit des tranches pack. Le vérificateur
|
|
# accepte les deux, prouve la présence de CHAQUE fichier promis, et relit un
|
|
# échantillon octet pour octet contre la source. Quatre pannes qu'un
|
|
# « build OK » passe sous silence : transfert vide, conteneur absent, index qui
|
|
# promet un fichier que son conteneur n'a pas, octets qui diffèrent.
|
|
#
|
|
# Même vérification que l'installation d'une VM, même script : une seule
|
|
# autorité.
|
|
"${WORKSPACE}/script/mobile/check_bundle_transfer.py" . --workspace "${WORKSPACE}" || exit 1
|
|
|
|
npx cap sync || exit 1
|
|
npx cap run android
|
|
|
|
cd - || exit 1
|