From a805721f04f910973b8cfbfdd7747b8cf40cc5dd Mon Sep 17 00:00:00 2001 From: mathieu Date: Fri, 21 Aug 2026 14:50:34 +0200 Subject: [PATCH] Injecte la version et l'horodatage de build dans l'assembly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La page « À propos » de l'application affiche la version publiée : encore faut-il que le binaire la connaisse. Le publish reçoit donc, à côté de `-p:Version` déjà présent, `-p:MaBibliDateBuild`. ⚠️ Cet horodatage est le témoin de l'injection : sans lui, l'application se déclare « version de développement » plutôt que d'afficher le « 1.0.0 » que le SDK pose par défaut, lequel se lirait comme une vraie version alors qu'il ne désigne rien. `SOURCE_DATE_EPOCH` est respecté, comme pour l'archive : sinon deux compilations du même commit donneraient deux sha256 différents pour la seule raison que l'heure a changé, et la reproductibilité visée par les options de `tar` ne vaudrait plus rien. Co-Authored-By: Claude Opus 5 --- build/publier-release.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/build/publier-release.sh b/build/publier-release.sh index ffcc567..477d6e0 100755 --- a/build/publier-release.sh +++ b/build/publier-release.sh @@ -107,6 +107,23 @@ fi # COMPILATION #================================================= +# Horodatage du build, injecté dans l'assembly à côté de la version (voir plus bas). +# +# ⚠️ Il sert de TÉMOIN : l'application ne montre sa version que si cet horodatage est présent. +# Sans lui, le numéro lu serait le « 1.0.0 » que le SDK pose par défaut, qui se lirait comme une +# vraie version alors qu'il ne désigne rien — et c'est précisément la valeur qu'on va chercher +# pour diagnostiquer un appareil dépareillé. Un binaire compilé à la main se déclare donc +# « version de développement », ce qui est vrai. +# +# `SOURCE_DATE_EPOCH` est respecté, comme pour l'archive : sans cela, deux compilations du même +# commit donneraient deux binaires — donc deux sha256 — pour la seule raison que l'heure a +# changé, et la reproductibilité visée plus bas ne vaudrait plus rien. +if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then + date_build="$(date -u -d "@$SOURCE_DATE_EPOCH" +%Y-%m-%dT%H:%M:%SZ)" +else + date_build="$(date -u +%Y-%m-%dT%H:%M:%SZ)" +fi + travail="$(mktemp -d)" # shellcheck disable=SC2064 trap "rm -rf '$travail'" EXIT @@ -117,6 +134,7 @@ echo echo "=== Compilation self-contained $runtime ===" echo " source : $source_dir" echo " version: $version" +echo " build : $date_build" # `--self-contained` embarque le runtime .NET dans le dossier publié : c'est ce qui # permet au paquet YunoHost de ne dépendre d'aucun `dotnet-runtime` côté serveur. @@ -129,7 +147,8 @@ dotnet publish "$source_dir/$projet" \ --runtime "$runtime" \ --self-contained \ --output "$publish" \ - -p:Version="$version" + -p:Version="$version" \ + -p:MaBibliDateBuild="$date_build" #================================================= # CONTRÔLES SUR LE RÉSULTAT