[ADD] build: create_exe.sh, the Windows executable from Linux
Building the portable executable was reachable only through make windows. create_exe.sh is the standalone entry point, next to run.sh and install.sh: it runs scripts/construire_windows.sh through avec_node, so under the project's Node, and refuses on Windows and macOS, where the build does not run. make windows now calls it, so both share one path. The installation test guards its shebang, exec bit and shared library. Checked: --help, bad option (2), macOS refusal (1), existing-executable refusal; node 5173. --- FR --- [ADD] construction : create_exe.sh, l'exécutable Windows depuis Linux L'exécutable portable ne se construisait que par make windows. create_exe.sh en est le point d'entrée autonome, à côté de run.sh et install.sh : il lance scripts/construire_windows.sh par avec_node, donc sous le Node du projet, et refuse sous Windows et macOS, où la construction ne se fait pas. make windows passe désormais par lui. L'épreuve d'installation garde son shebang, son bit d'exécution et la bibliothèque commune. Vérifié : --help, option inconnue (2), refus macOS (1), refus d'un exécutable existant ; node 5173. Assisted-by: Claude Opus 5.5
This commit is contained in:
parent
5a654818eb
commit
86686aebf0
4 changed files with 44 additions and 10 deletions
4
Makefile
4
Makefile
|
|
@ -110,8 +110,8 @@ help: ##W Affiche cette liste
|
||||||
@findstr /R /C:"^[a-z_]*:.*## " /C:"^[a-z_]*:.*##W " Makefile
|
@findstr /R /C:"^[a-z_]*:.*## " /C:"^[a-z_]*:.*##W " Makefile
|
||||||
else
|
else
|
||||||
.PHONY: windows
|
.PHONY: windows
|
||||||
windows: ##U Construit l'exécutable Windows portable, sous podman (§ 16)
|
windows: ##U Construit l'exécutable Windows portable, sous podman (§ 16), comme ./create_exe.sh
|
||||||
$(AVEC_NODE) scripts/construire_windows.sh
|
./create_exe.sh
|
||||||
|
|
||||||
.PHONY: verifier_systemes
|
.PHONY: verifier_systemes
|
||||||
verifier_systemes: ##U Installe et éprouve sur chaque système du catalogue, en conteneurs
|
verifier_systemes: ##U Installe et éprouve sur chaque système du catalogue, en conteneurs
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ forcent l'un ou l'autre.
|
||||||
| `make test_long` | épreuves lourdes, avant un commit |
|
| `make test_long` | épreuves lourdes, avant un commit |
|
||||||
| `make test_navigateur` | épreuves de rendu dans Chromium, avant une livraison |
|
| `make test_navigateur` | épreuves de rendu dans Chromium, avant une livraison |
|
||||||
| `make build` | construit la page dans `www/` |
|
| `make build` | construit la page dans `www/` |
|
||||||
| `make windows` | construit l'exécutable Windows portable, sous `podman`, depuis Linux |
|
| `make windows` | construit l'exécutable Windows portable, sous `podman`, depuis Linux, comme `./create_exe.sh` |
|
||||||
| `make essai_demarrage` | lance la vraie coquille Electron, lit son titre et ferme |
|
| `make essai_demarrage` | lance la vraie coquille Electron, lit son titre et ferme |
|
||||||
| `make help` | toutes les cibles |
|
| `make help` | toutes les cibles |
|
||||||
|
|
||||||
|
|
|
||||||
33
create_exe.sh
Executable file
33
create_exe.sh
Executable file
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# © 2026 TechnoLibre (http://www.technolibre.ca)
|
||||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
# Construit l'exécutable Windows portable depuis Linux (§ 16) : la page en
|
||||||
|
# mode livraison sur l'hôte, puis electron-builder sous podman, par
|
||||||
|
# scripts/construire_windows.sh, le Node du projet en tête du PATH. Il sort
|
||||||
|
# dans dist-electron/, nommé d'après version.json ; make windows passe ici.
|
||||||
|
#
|
||||||
|
# ./create_exe.sh refuse si l'exécutable de la version existe
|
||||||
|
# ./create_exe.sh --reconstruire l'efface, puis le reconstruit
|
||||||
|
set -euo pipefail
|
||||||
|
cd -- "$(dirname -- "$0")"
|
||||||
|
. scripts/installation/commun.sh
|
||||||
|
|
||||||
|
for argument in "$@"; do
|
||||||
|
case "$argument" in
|
||||||
|
--reconstruire) ;;
|
||||||
|
-h | --help)
|
||||||
|
sed -n '5,11p' "$0" | sed 's/^# \{0,1\}//'
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
gtt_dire "usage : ./create_exe.sh [--reconstruire]"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$(gtt_famille)" in
|
||||||
|
windows | macos) gtt_refuser "l'exécutable Windows se construit sous Linux, en conteneur podman (§ 16)." ;;
|
||||||
|
esac
|
||||||
|
exec scripts/installation/avec_node.sh scripts/construire_windows.sh "$@"
|
||||||
|
|
@ -2,12 +2,13 @@
|
||||||
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
// Les points d'entrée de l'installation et du lancement : ./install.sh,
|
// Les points d'entrée de l'installation et du lancement : ./install.sh,
|
||||||
// ./install_dev.sh, ./run.sh et le Makefile sous Linux et macOS ;
|
// ./install_dev.sh, ./run.sh, ./create_exe.sh et le Makefile sous Linux et
|
||||||
// install.cmd, install_dev.cmd et run.cmd sous Windows, qui passent la main
|
// macOS ; install.cmd, install_dev.cmd et run.cmd sous Windows, qui passent
|
||||||
// à PowerShell ; shell.nix sous NixOS. Ces épreuves gardent ce qui les casse
|
// la main à PowerShell ; shell.nix sous NixOS. Ces épreuves gardent ce qui
|
||||||
// sans rien faire échouer ailleurs : un bit d'exécution perdu, un chemin
|
// les casse sans rien faire échouer ailleurs : un bit d'exécution perdu, un
|
||||||
// renommé, une commande npm qui contourne le Node du projet, une fin de ligne
|
// chemin renommé, une commande npm qui contourne le Node du projet, une fin
|
||||||
// d'Unix dans un fichier de commandes, une marque d'ordre d'octets absente.
|
// de ligne d'Unix dans un fichier de commandes, une marque d'ordre d'octets
|
||||||
|
// absente.
|
||||||
import assert from 'node:assert/strict';
|
import assert from 'node:assert/strict';
|
||||||
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
||||||
import { join } from 'node:path';
|
import { join } from 'node:path';
|
||||||
|
|
@ -16,7 +17,7 @@ import { describe, test } from './lanceur.js';
|
||||||
|
|
||||||
const RACINE = fileURLToPath(new URL('..', import.meta.url));
|
const RACINE = fileURLToPath(new URL('..', import.meta.url));
|
||||||
const lire = (chemin) => readFileSync(join(RACINE, chemin), 'utf8');
|
const lire = (chemin) => readFileSync(join(RACINE, chemin), 'utf8');
|
||||||
const SCRIPTS_BASH = ['install.sh', 'install_dev.sh', 'run.sh', 'scripts/installation/avec_node.sh'];
|
const SCRIPTS_BASH = ['install.sh', 'install_dev.sh', 'run.sh', 'create_exe.sh', 'scripts/installation/avec_node.sh'];
|
||||||
|
|
||||||
describe('installation : les scripts bash', () => {
|
describe('installation : les scripts bash', () => {
|
||||||
test('ils sont exécutables, et cherchent bash dans le PATH : /bin/bash manque sous NixOS', () => {
|
test('ils sont exécutables, et cherchent bash dans le PATH : /bin/bash manque sous NixOS', () => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue