Injecte la version et l'horodatage de build dans l'assembly
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user