dkbuild: corriger le calcul de la dernière version d'une distribution

This commit is contained in:
Jephté Clain 2022-07-27 11:18:48 +04:00
parent a56ec0e0f1
commit 85e77e4bda
3 changed files with 52 additions and 6 deletions

34
dkbuild
View File

@ -212,8 +212,9 @@ Exemple:
elif dist d9; then
...
fi
NB: ici, la version 3.1 est listée après la version 3.0 pour que l'image
construite aie le tag :latest
Dans une même distribution, les versions doivent être ordonnées de la plus
ancienne à la plus récente. ici, la version 3.1 est listée après la version 3.0
pour que l'image construite aie le tag :latest
Note: 'setdists' ne doit être utilisé qu'une seule fois. Les invocations
suivantes sont ignorées.
@ -251,6 +252,8 @@ version. Exemple:
...
fi
fi
Dans un même profil, les versions doivent être ordonnées de la plus ancienne à
la plus récente.
Si les distributions sont utilisées avec des versions, alors c'est une erreur de
spécifier une version dans le profil
@ -1072,14 +1075,37 @@ function define_functions_env() {
SETVERSION_DONE=1
}
function dist() {
local dist version
local dist version latest
for dist in "$@"; do
[ "$dist" == LATEST ] && dist="${SETDISTS[0]}"
if [ "$dist" == LATEST ]; then
latest=1
continue
fi
parse_dist "$dist" dist version
[ "$dist" == "$DIST" ] || continue
[ -z "$version" -o "$version" == "$DVERSION" ] || continue
return 0
done
if [ -n "$latest" ]; then
# trouver la dernière occurence de la première distribution
# mentionnée. en effet, les versions doivent être ordonnées de la
# plus ancienne à la plus récente.
local first_dist last_version
for dist in "${SETDISTS[@]}"; do
parse_dist "$dist" dist version
if [ -z "$first_dist" ]; then
first_dist="$dist"
last_version="$version"
elif [ "$dist" == "$first_dist" ]; then
last_version="$version"
fi
done
if [ "$first_dist" == "$DIST" ]; then
if [ -z "$last_version" -o "$last_version" == "$DVERSION" ]; then
return 0
fi
fi
fi
return 1
}
function version() {

View File

@ -2,10 +2,10 @@
setdists d11 d10
setprofiles prod test
if dist "#latest"; then
if dist LATEST; then
info "$DIST est la distribution la plus récente"
fi
if profile "#default"; then
if profile DEFAULT; then
info "$PROFILE est le profil par défaut"
fi

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists v1-d11 v2-d11 v1-d10
setenv IMAGE=dkbuild-tests/distversions
dockerfile
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM scratch
ENV var=$DIST-$VERSION
build
info "vérifier les images construites avec
dk ls dkbuild-tests/distversions
on devrait avoir les images suivantes:
dkbuild-tests/distversions:v1-d10
dkbuild-tests/distversions:d10 -> v1-d10
dkbuild-tests/distversions:v1-d11
dkbuild-tests/distversions:v2-d11
dkbuild-tests/distversions:d11 -> v2-d11
dkbuild-tests/distversions:latest -> v2-d11
"