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