Compare commits

...

37 Commits

Author SHA1 Message Date
3edb672410 Intégration de la branche release-11.4.0 2025-02-27 08:44:20 +04:00
733fdca042 Init changelog & version 11.4.0 2025-02-27 08:44:20 +04:00
7cc9629788 modifs.mineures sans commentaires 2025-02-13 20:52:15 +04:00
df3986e8dc maj chemins registres 2025-02-12 11:27:30 +04:00
e674b316c3 améliorer la prise en charge de dkbuild imbriqué 2025-02-08 02:48:19 +04:00
7611760c3c paramètres par défaut pour dkbuild 2025-02-06 11:22:26 +04:00
056ae579a9 maj doc dkbuild -c 2025-02-06 11:03:43 +04:00
6f9ab14ffe support java 21 2025-02-04 15:13:05 +04:00
c9eaf7d83f maj dkbuild.env par défaut 2025-02-03 21:58:51 +04:00
693f447bf4 maj fichier dkbuild.env 2025-01-13 16:34:49 +04:00
6e23aaeeb0 maj config par défaut 2025-01-01 16:29:30 +04:00
d32be911b7 Intégration de la branche release-11.3.1 2024-12-31 15:05:57 +04:00
89efc824f9 Intégration de la branche release-11.3.1 2024-12-31 15:05:57 +04:00
c69e3d414f Init changelog & version 11.3.1 2024-12-31 15:05:57 +04:00
b9f264f705 bug avec dkbuild -e 2024-12-31 15:05:43 +04:00
737179b81b modifs.mineures sans commentaires 2024-12-17 13:12:42 +01:00
2687e72643 support minimal runphp 2024-11-08 16:42:29 +04:00
0527aee96e Intégration de la branche release-11.3.0 2024-09-24 16:02:01 +04:00
3ac6a38e25 Intégration de la branche release-11.3.0 2024-09-24 16:02:01 +04:00
f156fe0b1e Init changelog & version 11.3.0 2024-09-24 16:02:00 +04:00
625d5f1d25 bug mineur 2024-09-24 16:01:36 +04:00
e30820261a dkbuild: améliorer from_glob() 2024-07-12 23:04:43 +04:00
5c03184c94 lgrep, lless: modifier la doc pour ne parler que d'un fichier 2024-07-05 10:13:19 +04:00
0ed5ddf6b9 Intégration de la branche release-11.2.0 2024-06-21 20:34:15 +04:00
f39787c6ec Intégration de la branche release-11.2.0 2024-06-21 20:34:14 +04:00
11145f686a Init changelog & version 11.2.0 2024-06-21 20:34:14 +04:00
21042e4677 bug 2024-06-21 20:33:50 +04:00
e4176dfd94 reginc: possibilité de renommer des fichiers 2024-06-17 10:44:53 +04:00
1787aa2310 bug 2024-05-13 09:44:50 +04:00
d1f77aa354 dkbuild: support dist none et tag LATEST 2024-05-10 17:15:30 +04:00
c2cfd7739a bug 2024-05-10 16:04:54 +04:00
e7745c2dd4 dk: support --plain-output 2024-03-19 07:26:06 +04:00
ce8f541520 dkbuild: -g pour --profile 2024-03-06 22:36:49 +04:00
30594aa84b maj distributions 2024-02-12 11:47:27 +04:00
2df175ee57 dkbuild: cosmetic 2024-02-10 11:33:07 +04:00
fbb05f8dee support des versions AMUE 2024-02-08 22:26:13 +04:00
2886c40aa2 Intégration de la branche release-11.1.0 2024-02-01 20:59:56 +04:00
17 changed files with 431 additions and 117 deletions

View File

@ -1,3 +1,40 @@
## Version 11.4.0 du 27/02/2025-08:44
* `7cc9629` modifs.mineures sans commentaires
* `df3986e` maj chemins registres
* `e674b31` améliorer la prise en charge de dkbuild imbriqué
* `7611760` paramètres par défaut pour dkbuild
* `056ae57` maj doc dkbuild -c
* `6f9ab14` support java 21
* `c9eaf7d` maj dkbuild.env par défaut
* `693f447` maj fichier dkbuild.env
* `6e23aae` maj config par défaut
## Version 11.3.1 du 31/12/2024-15:05
* `b9f264f` bug avec dkbuild -e
* `737179b` modifs.mineures sans commentaires
* `2687e72` support minimal runphp
## Version 11.3.0 du 24/09/2024-16:02
* `625d5f1` bug mineur
* `e308202` dkbuild: améliorer from_glob()
* `5c03184` lgrep, lless: modifier la doc pour ne parler que d'un fichier
## Version 11.2.0 du 21/06/2024-20:34
* `21042e4` bug
* `e4176df` reginc: possibilité de renommer des fichiers
* `1787aa2` bug
* `d1f77aa` dkbuild: support dist none et tag LATEST
* `c2cfd77` bug
* `e7745c2` dk: support --plain-output
* `ce8f541` dkbuild: -g pour --profile
* `30594aa` maj distributions
* `2df175e` dkbuild: cosmetic
* `fbb05f8` support des versions AMUE
## Version 11.1.0 du 01/02/2024-20:59 ## Version 11.1.0 du 01/02/2024-20:59
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers * `8570d12` pff: les répertoires liés peuvent contenir des fichiers

15
TODO.md
View File

@ -7,4 +7,19 @@ dkbuild
* si cela a du sens, une commande setlatest qui permet de désigner quelle * si cela a du sens, une commande setlatest qui permet de désigner quelle
distribution/version est la dernière distribution/version est la dernière
git push
* ajouter le support pour le mode DEBUG
~~~
export GIT_TRACE=1
export GIT_TRANSFER_TRACE=1
export GIT_CURL_VERBOSE=1
~~~
* ajouter le support http basique pour git lfs en cas de problème pour upload de certains fichiers
~~~
git config --add lfs.basictransfersonly true
~~~
ou le mettre dans un fichier .lfsconfig
cf https://github.com/git-lfs/git-lfs/blob/main/docs/man/git-lfs-config.adoc
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1 +1 @@
11.1.0 11.4.0

33
dk
View File

@ -336,6 +336,8 @@ OPTIONS build
deploy, by, bpy et update impliquent --stack deploy, by, bpy et update impliquent --stack
-j, --no-cache -j, --no-cache
Ne pas utiliser le cache lors du build Ne pas utiliser le cache lors du build
--plain-output
Afficher la sortie complète des containers lors du build
-U, --pull -U, --pull
Essayer de récupérer une version plus récente de l'image source Essayer de récupérer une version plus récente de l'image source
-g, --ug, --no-update-apps -g, --ug, --no-update-apps
@ -1245,6 +1247,7 @@ function default_compose_build() {
"${replace_env_args[@]}" "${env_args[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \
build \ build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_build_args[@]}" "${build_args[@]}" \ "${replace_build_args[@]}" "${build_args[@]}" \
"$@" "$@"
@ -1256,6 +1259,7 @@ function default_docker_build() {
done done
${FAKE:+qvals} "$DOCKER" build \ ${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_env_args[@]}" "${env_args[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \
"${replace_build_args[@]}" "${build_args[@]}" \ "${replace_build_args[@]}" "${build_args[@]}" \
@ -1305,6 +1309,7 @@ function auto_build() {
done done
${FAKE:+qvals} "$DOCKER" build \ ${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_build_args[@]}" "$@" "${replace_build_args[@]}" "$@"
fi fi
@ -2094,8 +2099,10 @@ function auto_composer() {
esac esac
done done
local use_image local use_runphp use_image
if [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then if [ "$COMPOSER_PHP" == runphp ]; then
use_runphp=1
elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
use_image=1 use_image=1
elif [ "$COMPOSER_PHP" == none -o "$COMPOSER_PHP" == system ]; then elif [ "$COMPOSER_PHP" == none -o "$COMPOSER_PHP" == system ]; then
COMPOSER_PHP=none COMPOSER_PHP=none
@ -2116,7 +2123,7 @@ exit((PHP_VERSION_ID > $version)? 0: 1);
*) ewarn "Erreur lors du lancement de PHP: est-il installé? Vous pouvez utiliser COMPOSER_PHP=any";; *) ewarn "Erreur lors du lancement de PHP: est-il installé? Vous pouvez utiliser COMPOSER_PHP=any";;
esac esac
fi fi
if [ -n "$use_image" -o "$COMPOSER_PHP" == none ]; then if [ -n "$use_runphp" -o -n "$use_image" -o "$COMPOSER_PHP" == none ]; then
: # ok, on a déjà décidé : # ok, on a déjà décidé
elif [ -z "$COMPOSER_PHP" ]; then elif [ -z "$COMPOSER_PHP" ]; then
# pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE # pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE
@ -2138,7 +2145,23 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
esac esac
fi fi
if [ -n "$use_image" ]; then if [ -n "$use_runphp" ]; then
(
export PROJDIR="$(pwd)"
export RUNPHP_STANDALONE=
RUNPHP=; DIST=; REGISTRY=
if [ -f "$PROJDIR/.runphp.conf" ]; then
source "$PROJDIR/.runphp.conf"
[ -n "$RUNPHP" ] && exec "$PROJDIR/$RUNPHP" composer "$@"
elif [ -f "$PROJDIR/sbin/runphp" ]; then
exec "$PROJDIR/sbin/runphp" composer "$@"
elif [ -f "$PROJDIR/runphp" ]; then
exec "$PROJDIR/runphp" composer "$@"
fi
exec runphp composer "$@"
)
elif [ -n "$use_image" ]; then
[ "$COMPOSER_IMAGE" != none ] || die "Vous devez spécifier l'image à utiliser pour composer" [ "$COMPOSER_IMAGE" != none ] || die "Vous devez spécifier l'image à utiliser pour composer"
local PREVIOUS_DOCKER_MACHINE_NAME="$DOCKER_MACHINE_NAME" local PREVIOUS_DOCKER_MACHINE_NAME="$DOCKER_MACHINE_NAME"
@ -2499,6 +2522,7 @@ FAKE=
VARS=() VARS=()
FORCE= FORCE=
NO_CACHE= NO_CACHE=
PROGRESS=
PULL= PULL=
HOST= HOST=
WITH_REGISTRY_AUTH=1 WITH_REGISTRY_AUTH=1
@ -2522,6 +2546,7 @@ args=(
-e:,--build-arg:,--env: VARS -e:,--build-arg:,--env: VARS
-f,--force FORCE=1 -f,--force FORCE=1
-j,--no-cache NO_CACHE=1 -j,--no-cache NO_CACHE=1
--plain-output PROGRESS=plain
-U,--pull PULL=1 -U,--pull PULL=1
-h:,--host: HOST= -h:,--host: HOST=
-g,--ug,--no-update-apps update_apps_mode=b -g,--ug,--no-update-apps update_apps_mode=b

135
dkbuild
View File

@ -77,6 +77,8 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Lire un fichier de configuration au format dkbuild. Si cette option Lire un fichier de configuration au format dkbuild. Si cette option
n'est pas spécifiée, les fichiers ~/.dkbuild.env et /etc/dkbuild.env n'est pas spécifiée, les fichiers ~/.dkbuild.env et /etc/dkbuild.env
sont testés dans l'ordre et automatiquement sélectionnés s'ils existent. sont testés dans l'ordre et automatiquement sélectionnés s'ils existent.
NB: cela veut dire que si cette option est spécifiée, les fichiers
~/.dkbuild.env et /etc/dkbuild.env sont ignorés
L'ordre de priorité est le suivant: L'ordre de priorité est le suivant:
- d'abord les variables spécifiées avec --env et --arg, - d'abord les variables spécifiées avec --env et --arg,
- puis les variables définies dans ce fichier de configuration, - puis les variables définies dans ce fichier de configuration,
@ -86,18 +88,21 @@ $scriptname build [OPTIONS] [BUILDVARS...]
configuration ne doit être chargé. configuration ne doit être chargé.
-d, --dist DIST -d, --dist DIST
-9, --d9
-0, --d10 -0, --d10
-1, --d11 -1, --d11
-2, --d12
-3, --d13
--r7, --rhel7 --r7, --rhel7
--r8, --rhel8 --r8, --rhel8
--r9, --rhel9
--o7, --oracle7 --o7, --oracle7
--o8, --oracle8 --o8, --oracle8
--o9, --oracle9
Ne faire le build que pour la distribution spécifiée. Par défaut, faire Ne faire le build que pour la distribution spécifiée. Par défaut, faire
le build pour toutes les distributions définies. Si la distribution le build pour toutes les distributions définies. Si la distribution
sélectionnée n'est pas valide pour ce build, elle est ignorée sélectionnée n'est pas valide pour ce build, elle est ignorée
--profile PROFILE -g, --profile PROFILE
-P, --prod -P, --prod
-T, --test -T, --test
-E, --dtest -E, --dtest
@ -221,9 +226,13 @@ construites. Une version est définie en ajoutant un préfixe à la distribution
La commande 'setdists' permet de lister explicitement les distributions valides La commande 'setdists' permet de lister explicitement les distributions valides
(et les versions associées le cas échéant). Si la distribution sélectionnée par (et les versions associées le cas échéant). Si la distribution sélectionnée par
l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur. l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur.
La première distribution listée est spéciale: c'est la distribution la plus La première distribution listée est spéciale: c'est la distribution la plus
récente, celle qui reçoit le tag :latest récente, celle qui reçoit le tag :latest
La distribution 'none' est spéciale aussi: elle n'est pas mentionnée dans les
tags automatiquement attribués aux images.
La commande 'dist' permet de tester si la distribution spécifiée en argument a La commande 'dist' permet de tester si la distribution spécifiée en argument a
été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la
dernière distribution. dernière distribution.
@ -675,7 +684,8 @@ Les paramètres optionnels sont
* set-tag=TAGS... ou set-tags=TAGS... * set-tag=TAGS... ou set-tags=TAGS...
spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette
liste remplace celle calculée automatiquement. ce paramètre est ignoré pour liste remplace celle calculée automatiquement. ce paramètre est ignoré pour
les noms d'images comportant un tag les noms d'images comportant un tag.
Utiliser le tag spécial LATEST pour rajouter :latest si c'est approprié
* add-tag=TAGS... ou add-tags=TAGS... * add-tag=TAGS... ou add-tags=TAGS...
spécifier des tags à rajouter à la liste calculée automatiquement, séparés par spécifier des tags à rajouter à la liste calculée automatiquement, séparés par
un espace. ce paramètre est ignoré pour les noms d'images comportant un tag un espace. ce paramètre est ignoré pour les noms d'images comportant un tag
@ -709,6 +719,18 @@ quelle, avec la même syntaxe qu'en ligne de commande. L'intérêt de cette
commande est qu'on est assuré d'utiliser le même dkbuild que celui qui traite le commande est qu'on est assuré d'utiliser le même dkbuild que celui qui traite le
script de build courant. script de build courant.
Les variables DKBUILD_CMD_ARGS, DKBUILD_CONFIGS, DKBUILD_ENVS et DKBUILD_ARGS
peuvent être utilisées pour reprendre les valeurs spécifiées en ligne de
commande, e.g"'
dkbuild -c "${DKBUILD_CONFIGS[0]}" "${DKBUILD_CMD_ARGS[@]}"'"
La variable DKBUILD_CONFIGS contient les noms des fichiers de configuration
utilisés.
Les variables DKBUILD_ENVS et DKBUILD_ARGS sont indexées sur le nom des
variables (resp. arguments). Il est donc possible de reprendre une valeur
particulière, e.g"'
dkbuild -c "${DKBUILD_CONFIGS[0]}" -e "${DKBUILD_ENVS[myenv]}"'"
## composer -- gérer projet composer ## composer -- gérer projet composer
USAGE: composer DESTDIR [ACTION [PARAMS] [ARGS]] USAGE: composer DESTDIR [ACTION [PARAMS] [ARGS]]
@ -925,6 +947,10 @@ declare -A PROTECTED_VARS=(
[ENVIRON]=1 [ENVIRON]=1
[ARGS]=1 [ARGS]=1
[DEFAULTS]=1 [DEFAULTS]=1
[DKBUILD_CMD_ARGS]=1
[fill_DKBUILD_CONFIGS]=1 [DKBUILD_CONFIGS]=1
[fill_DKBUILD_ENVS]=1 [DKBUILD_ENVS]=1
[fill_DKBUILD_ARGS]=1 [DKBUILD_ARGS]=1
) )
SHARED_LOCALS1="local PROJDIR DKBUILD CONFIG" SHARED_LOCALS1="local PROJDIR DKBUILD CONFIG"
@ -936,15 +962,18 @@ SHARED_ARGS1=(
SHARED_LOCALS2="local DIST PROFILE ALL_PROFILES; local -a TMPENVIRON TMPARGS" SHARED_LOCALS2="local DIST PROFILE ALL_PROFILES; local -a TMPENVIRON TMPARGS"
SHARED_ARGS2=( SHARED_ARGS2=(
-d:,--dist: DIST= -d:,--dist: DIST=
-9,--d9 DIST=d9
-0,--d10 DIST=d10 -0,--d10 DIST=d10
-1,--d11 DIST=d11 -1,--d11 DIST=d11
-2,--d12 DIST=d12
-3,--d13 DIST=d13
--r7,--rhel7 DIST=rhel7 --r7,--rhel7 DIST=rhel7
--r8,--rhel8 DIST=rhel8 --r8,--rhel8 DIST=rhel8
--r9,--rhel9 DIST=rhel9
--ol7,--oracle7 DIST=ol7 --ol7,--oracle7 DIST=ol7
--ol8,--oracle8 DIST=ol8 --ol8,--oracle8 DIST=ol8
--ol9,--oracle9 DIST=ol9
-p:,--profile: PROFILE= -g:,--profile: PROFILE=
-P,--prod PROFILE=prod -P,--prod PROFILE=prod
-T,--test PROFILE=test -T,--test PROFILE=test
-E,--dtest PROFILE=dtest -E,--dtest PROFILE=dtest
@ -956,6 +985,11 @@ SHARED_ARGS2=(
--arg: '$TMPARGS+=("$value_")' --arg: '$TMPARGS+=("$value_")'
) )
declare -a DKBUILD_CMD_ARGS
fill_DKBUILD_CONFIGS=; declare -a DKBUILD_CONFIGS
fill_DKBUILD_ENVS=; declare -A DKBUILD_ENVS
fill_DKBUILD_ARGS=; declare -A DKBUILD_ARGS
TFUNCTIONS=( TFUNCTIONS=(
# dkbuild # dkbuild
section note info debug section note info debug
@ -1072,12 +1106,13 @@ function reset_functions() {
function include() { function include() {
edebug "include $(qvals "$@")" edebug "include $(qvals "$@")"
local file="$1" local file="$1" cwd="$(pwd)"
[ -d "$file" ] && file="$file/dkbuild" [ -d "$file" ] && file="$file/dkbuild"
[ -f "$file" ] || die "$file: fichier introuvable" [ -f "$file" ] || die "$file: fichier introuvable"
setx file=abspath "$file" setx file=abspath "$file"
cd "$(dirname "$file")" cd "$(dirname "$file")"
source "$file" source "$file"
cd "$cwd"
} }
function machine() { function machine() {
local machine version local machine version
@ -1144,28 +1179,38 @@ function ensure_projdir() {
setx CONFIG=abspath "$CONFIG" setx CONFIG=abspath "$CONFIG"
edebug "using config $CONFIG" edebug "using config $CONFIG"
else else
local config local config found
for config in ~/.dkbuild.env /etc/dkbuild.env; do for config in ~/.dkbuild.env /etc/dkbuild.env; do
if [ -f "$config" ]; then if [ -f "$config" ]; then
found=1
CONFIG="$config" CONFIG="$config"
edebug "using default config $CONFIG" edebug "using default config $CONFIG"
break break
fi fi
done done
[ -n "$found" ] || CONFIG=none
fi fi
} }
function load_dkbuild() { function load_dkbuild() {
local dkbuildenv="$PROJDIR/$(basename "$DKBUILD").env" local dkbuildenv="$PROJDIR/$(basename "$DKBUILD").env"
cd "$PROJDIR" cd "$PROJDIR"
set_defaults dkbuild
if [ -n "$CONFIG" ]; then if [ -n "$CONFIG" ]; then
edebug "loading $CONFIG" if [ "$CONFIG" != none ]; then
source "$CONFIG" edebug "loading $CONFIG"
source "$CONFIG"
fi
[ -n "$fill_DKBUILD_CONFIGS" ] && DKBUILD_CONFIGS+=("$CONFIG")
fi fi
if [ -f "$dkbuildenv" ]; then if [ -f "$dkbuildenv" ]; then
edebug "loading $dkbuildenv" edebug "loading $dkbuildenv"
source "$dkbuildenv" source "$dkbuildenv"
[ -n "$fill_DKBUILD_CONFIGS" ] && DKBUILD_CONFIGS+=("$dkbuildenv")
fi fi
edebug "loading $DKBUILD" edebug "loading $DKBUILD"
source "$DKBUILD" source "$DKBUILD"
} }
@ -1176,12 +1221,14 @@ function load_environ() {
} }
function from_glob() { function from_glob() {
local var=value value local vvalue=value value vfile=file file
[[ "$1" != *=* ]] && { var="$1"; shift; } [[ "$1" != *=* ]] && { vvalue="$1"; shift; }
[[ "$1" != *=* ]] && { vfile="$1"; shift; }
local path extract add_prefix add_suffix local basedir path extract add_prefix add_suffix
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
basedir=*) basedir="${1#basedir=}";;
path=*) path="${1#path=}";; path=*) path="${1#path=}";;
extract=*) extract="${1#extract=}";; extract=*) extract="${1#extract=}";;
add-prefix=*) add_prefix="${1#add-prefix=}";; add-prefix=*) add_prefix="${1#add-prefix=}";;
@ -1191,7 +1238,9 @@ function from_glob() {
esac esac
shift shift
done done
value="$(list_all . "$path" | sort -rn | head -1)" [ -n "$basedir" ] || basedir=.
value="$(list_all "$basedir" "$path" | sort -rn | head -1)"
file="$basedir/$value"
[ -n "$extract" ] || extract="${path//\*/(.*)}" [ -n "$extract" ] || extract="${path//\*/(.*)}"
if [ -n "$extract" ]; then if [ -n "$extract" ]; then
extract="${extract//\//\\/}" extract="${extract//\//\\/}"
@ -1201,7 +1250,7 @@ function from_glob() {
}")$add_suffix" }")$add_suffix"
fi fi
local "$var"; upvar "$var" "$value" local "$vvalue" "$vfile"; upvars "$vvalue" "$value" "$vfile" "$file"
} }
function define_functions_env() { function define_functions_env() {
function setversion() { function setversion() {
@ -1346,7 +1395,13 @@ function define_functions_env() {
# Ne spécifier la valeur que si elle n'a pas déjà été définie # Ne spécifier la valeur que si elle n'a pas déjà été définie
_ENVIRON["$name"]="$value" _ENVIRON["$name"]="$value"
ENVIRON["$name"]="$value" ENVIRON["$name"]="$value"
[ -z "${PROTECTED_VARS[$name]}" ] && _setv "export $name" "$value" if [ -z "${PROTECTED_VARS[$name]}" ]; then
_setv "export $name" "$value"
if [ -n "$fill_DKBUILD_ENVS" ]; then
DKBUILD_ENVS["$name"]="$name=$value"
DKBUILD_CMD_ARGS+=(-e "$name=$value")
fi
fi
fi fi
done done
} }
@ -1379,6 +1434,10 @@ function define_functions_env() {
if [ "${ARGS[$name]-__UNDEFINED__}" == __UNDEFINED__ ]; then if [ "${ARGS[$name]-__UNDEFINED__}" == __UNDEFINED__ ]; then
# Ne spécifier la valeur que si elle n'a pas déjà été définie # Ne spécifier la valeur que si elle n'a pas déjà été définie
ARGS["$name"]="$value" ARGS["$name"]="$value"
if [ -n "$fill_DKBUILD_ARGS" ]; then
DKBUILD_ARGS["$name"]="$name=$value"
DKBUILD_CMD_ARGS+=(--arg "$name=$value")
fi
fi fi
done done
} }
@ -1587,7 +1646,11 @@ function resolve_dists_profiles() {
edebug "Calcul de la version par défaut" edebug "Calcul de la version par défaut"
reset_functions reset_functions
define_functions_env define_functions_env
load_dkbuild
fill_DKBUILD_ENVS=1 setenv "${TMPENVIRON[@]}"
fill_DKBUILD_ARGS=1 setarg "${TMPARGS[@]}"
setarg "$@"
fill_DKBUILD_CONFIGS=1 load_dkbuild
} }
function foreach_dists_profiles() { function foreach_dists_profiles() {
@ -2036,6 +2099,14 @@ function define_functions_cmd() {
imagetags+=("$imagetag") imagetags+=("$imagetag")
else else
for tag in "${set_tags[@]}" "${add_tags[@]}"; do for tag in "${set_tags[@]}" "${add_tags[@]}"; do
if [ "$tag" == LATEST ]; then
if [ -n "$HAVE_VERSION" -a "$VERSION" == "$LAST_VERSION" ]; then
tag=latest
else
# ignorer le tag LATEST s'il n'est pas applicable
continue
fi
fi
imagetags+=("$imagetag:$tag") imagetags+=("$imagetag:$tag")
done done
fi fi
@ -2048,10 +2119,16 @@ function define_functions_cmd() {
imagetags+=("$imagetag") imagetags+=("$imagetag")
else else
for tag in "${add_tags[@]}"; do for tag in "${add_tags[@]}"; do
if [ "$tag" == LATEST ]; then
# toujours ignorer le tag LATEST dans add_tags
continue
fi
imagetags+=("$imagetag:$tag") imagetags+=("$imagetag:$tag")
done done
[ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST") [ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST")
[ -n "$DIST" -a -z "$HAVE_VERSION" ] && imagetags+=("$imagetag:$DIST") if [ -n "$DIST" -a "$DIST" != none -a -z "$HAVE_VERSION" ]; then
imagetags+=("$imagetag:$DIST")
fi
fi fi
done done
fi fi
@ -2060,7 +2137,7 @@ function define_functions_cmd() {
if [ -z "$HAVE_VERSION" ]; then if [ -z "$HAVE_VERSION" ]; then
dist LATEST && imagetags+=("$imagetag:latest") dist LATEST && imagetags+=("$imagetag:latest")
elif [ "$VERSION" == "$LAST_VERSION" ]; then elif [ "$VERSION" == "$LAST_VERSION" ]; then
imagetags+=("$imagetag:$DIST") [ "$DIST" != none ] && imagetags+=("$imagetag:$DIST")
dist LATEST && imagetags+=("$imagetag:latest") dist LATEST && imagetags+=("$imagetag:latest")
fi fi
elif [ -n "$PROFILE" ]; then elif [ -n "$PROFILE" ]; then
@ -2943,10 +3020,7 @@ function build_action() {
set_machine "$machine" set_machine "$machine"
ensure_projdir ensure_projdir
resolve_dists_profiles resolve_dists_profiles "$@"
setenv "${TMPENVIRON[@]}"
setarg "${TMPARGS[@]}"
setarg "$@"
if [ -n "$clean_update" ]; then if [ -n "$clean_update" ]; then
edebug "clean" edebug "clean"
@ -2983,10 +3057,10 @@ function _build_before() {
PREV_PROFILE= PREV_PROFILE=
} }
function _build_each() { function _build_each() {
if [ "$PROFILE-$PVERSION" != "$PREV_PROFILE" ]; then
[ -n "$PREV_PROFILE" ] && eend
fi
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then
[ -n "$PREV_PROFILE" ] && eend
PREV_PROFILE=
[ -n "$PREV_DIST" ] && eend [ -n "$PREV_DIST" ] && eend
PREV_DIST="$DIST-$DVERSION" PREV_DIST="$DIST-$DVERSION"
etitle "Distribution ${DVERSION:+$DVERSION-}$DIST" etitle "Distribution ${DVERSION:+$DVERSION-}$DIST"
@ -3115,10 +3189,7 @@ function dump_action() {
set_machine "$machine" set_machine "$machine"
ensure_projdir ensure_projdir
resolve_dists_profiles resolve_dists_profiles "$@"
setenv "${TMPENVIRON[@]}"
setarg "${TMPARGS[@]}"
setarg "$@"
foreach_dists_profiles _dump_each _dump_before _dump_after foreach_dists_profiles _dump_each _dump_before _dump_after
} }
@ -3128,10 +3199,10 @@ function _dump_before() {
PREV_PROFILE= PREV_PROFILE=
} }
function _dump_each() { function _dump_each() {
if [ "$PROFILE-$PVERSION" != "$PREV_PROFILE" ]; then
[ -n "$PREV_PROFILE" ] && eend
fi
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then
[ -n "$PREV_PROFILE" ] && eend
PREV_PROFILE=
[ -n "$PREV_DIST" ] && eend [ -n "$PREV_DIST" ] && eend
PREV_DIST="$DIST-$DVERSION" PREV_DIST="$DIST-$DVERSION"
etitle "Distribution ${DVERSION:+$DVERSION-}$DIST" etitle "Distribution ${DVERSION:+$DVERSION-}$DIST"

4
lgrep
View File

@ -3,10 +3,10 @@
source "$(dirname "$0")/lib/ulib/auto" || exit 1 source "$(dirname "$0")/lib/ulib/auto" || exit 1
function display_help() { function display_help() {
uecho "$scriptname: frontend de grep pour lire des fichiers encodés en latin1 uecho "$scriptname: frontend de grep pour chercher dans un fichier encodé en latin1
USAGE USAGE
$scriptname [options] files... $scriptname [options] FILE
OPTIONS OPTIONS
options de grep qui sont reprises telles quelles" options de grep qui sont reprises telles quelles"

4
lib/default/dkbuild Normal file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Profil par défaut
#DKBUILD_PROFILE=prod

View File

@ -1,11 +1,19 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
default_profile "${DKBUILD_PROFILE:-prod}" default_profile "${DKBUILD_PROFILE:-prod}"
# Source des paquets et proxy
#setenv APT_PROXY=http://aptcache.devel.self:3142
#setenv APT_MIRROR=default
#setenv SEC_MIRROR=default
# Timezone du serveur
#setenv TIMEZONE=Indian/Reunion
if profile jclain; then if profile jclain; then
setenv REGISTRY=docker.jclain.fr setenv REGISTRY=docker.jclain.fr
setenv PRIVAREG=docker.jclain.fr setenv PRIVAREG=docker.jclain.fr
elif profile prod test; then elif profile prod test; then
setenv REGISTRY=pubdocker.univ-reunion.fr setenv REGISTRY=pubdocker.univ-reunion.fr/rununiv
setenv PRIVAREG=pridocker.univ-reunion.fr setenv PRIVAREG=pridocker.univ-reunion.fr
host_mappings=( host_mappings=(
pridocker.univ-reunion.fr:10.85.1.56 pridocker.univ-reunion.fr:10.85.1.56
@ -14,7 +22,10 @@ elif profile prod test; then
git.univ-reunion.fr:10.85.1.55 git.univ-reunion.fr:10.85.1.55
) )
default docker host-mappings="${host_mappings[*]}" default docker host-mappings="${host_mappings[*]}"
elif profile dist; then
setenv REGISTRY=pubdocker.univ-reunion.fr/dist
setenv PRIVAREG=pridocker.univ-reunion.fr
elif profile devel; then elif profile devel; then
setenv REGISTRY=docker.devel.self setenv REGISTRY=docker.devel.self/rununiv
setenv PRIVAREG=docker.devel.self setenv PRIVAREG=docker.devel.self
fi fi

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
if runb; then
qvals dkbuild -c "${DKBUILD_CONFIGS[0]}" "${DKBUILD_CMD_ARGS[@]}"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -8,7 +8,7 @@ info "A=$A, B=$B"
if [ "$A" != x ]; then if [ "$A" != x ]; then
note "\ note "\
Essayer de relancer avec Essayer de relancer avec
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -e A=x -e B=y) $(qvals "$0" -j "$(relpath "$DKBUILD")" -e A=x -e B=y)
on ne devrait pas pouvoir modifier la valeur de B" on ne devrait pas pouvoir modifier la valeur de B"
fi fi

View File

@ -0,0 +1,15 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv dne=1
setenv de=
info "dne=$dne de=$de"
if [ -n "$dne" -o -z "$de" ]; then
note "\
Relancer avec
$(qvals "$0" -j "$(relpath "$DKBUILD")" -e dne= -e de=1)
pour vérifier qu'on peut changer la valeur avec les options en ligne de commande"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -1424,7 +1424,7 @@ function is_archive() {
name="${name%.jar}" name="${name%.jar}"
name="${name%.war}" name="${name%.war}"
name="${name%.ear}" name="${name%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}" [ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}"
[ "$name" != "$1" ] [ "$name" != "$1" ]
} }
function extract_archive() { function extract_archive() {
@ -1446,7 +1446,7 @@ function extract_archive() {
cd "$destdir" cd "$destdir"
jar xf "$arch" "$@" jar xf "$arch" "$@"
) || return ) || return
elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then elif [ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then
( (
arch="$(abspath "$arch")" arch="$(abspath "$arch")"
cd "$destdir" cd "$destdir"
@ -1469,7 +1469,7 @@ function get_archive_basename() {
basename="${basename%.jar}" basename="${basename%.jar}"
basename="${basename%.war}" basename="${basename%.war}"
basename="${basename%.ear}" basename="${basename%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}" [ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}"
# résultat # résultat
echo "$basename" echo "$basename"
} }
@ -1489,10 +1489,13 @@ function get_archive_appname() {
appname="${appname%.jar}" appname="${appname%.jar}"
appname="${appname%.war}" appname="${appname%.war}"
appname="${appname%.ear}" appname="${appname%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}" [ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}"
# supprimer la version et afficher # supprimer la version et afficher
echo "$appname" | awk '{ echo "$appname" | awk '{
if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { if (match($0, /-([0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print substr($0, 1, RSTART - 1)
} else if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) {
print substr($0, 1, RSTART - 1) print substr($0, 1, RSTART - 1)
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { } else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) {
print substr($0, 1, RSTART - 1) print substr($0, 1, RSTART - 1)
@ -1511,7 +1514,10 @@ function get_archive_versionsuffix() {
# --> -0.1 # --> -0.1
local basename="$(get_archive_basename "$1")" local basename="$(get_archive_basename "$1")"
echo "$basename" | awk '{ echo "$basename" | awk '{
if (match($0, /([-_.][0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { if (match($0, /(-[0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print vs["1"]
} else if (match($0, /([-_.][0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { } else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
@ -1528,7 +1534,10 @@ function get_archive_version() {
# --> 0.1 # --> 0.1
local basename="$(get_archive_basename "$1")" local basename="$(get_archive_basename "$1")"
echo "$basename" | awk '{ echo "$basename" | awk '{
if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { if (match($0, /-([0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print vs["1"]
} else if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { } else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]

View File

@ -154,7 +154,7 @@ function ctmatch_one(ctval, ref, parts, part, i, j, start, end, ste
#print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG #print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG
return ok return ok
} }
function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, domok, monok, dowok) { function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, alldom, domok, monok, alldow, dowok, doxok) {
if (refM == "**ANY**") return 1 if (refM == "**ANY**") return 1
gsub(/\*/, "0-59", M) gsub(/\*/, "0-59", M)
@ -163,16 +163,28 @@ function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow,
gsub(/\*/, "0-23", H) gsub(/\*/, "0-23", H)
Hok = ctmatch_one(H, refH) Hok = ctmatch_one(H, refH)
alldom = dom == "*"
gsub(/\*/, "1-31", dom) gsub(/\*/, "1-31", dom)
domok = ctmatch_one(dom, refdom) domok = ctmatch_one(dom, refdom)
gsub(/\*/, "1-12", mon) gsub(/\*/, "1-12", mon)
monok = ctmatch_one(mon, refmon) monok = ctmatch_one(mon, refmon)
alldow = dow == "*"
gsub(/\*/, "1-7", dow) gsub(/\*/, "1-7", dow)
dowok = ctmatch_one(dow, refdow) dowok = ctmatch_one(dow, refdow)
return Mok && Hok && monok && (domok || dowok) if (alldom && alldow) {
doxok = 1
} else if (alldom) {
doxok = dowok
} else if (alldow) {
doxok = domok
} else {
doxok = domok || dowok
}
return Mok && Hok && monok && doxok
} }
function print_cmd(cmd) { function print_cmd(cmd) {
print "__ctexec " quote_value(cmd) print "__ctexec " quote_value(cmd)

View File

@ -16,6 +16,7 @@ JAVA_VMS7=(); JAVA_HOMES7=()
JAVA_VMS8=(); JAVA_HOMES8=() JAVA_VMS8=(); JAVA_HOMES8=()
JAVA_VMS11=(); JAVA_HOMES11=() JAVA_VMS11=(); JAVA_HOMES11=()
JAVA_VMS17=(); JAVA_HOMES17=() JAVA_VMS17=(); JAVA_HOMES17=()
JAVA_VMS21=(); JAVA_HOMES21=()
# versions locales 32 bits # versions locales 32 bits
JAVA32_VMS1_3=(); JAVA32_HOMES1_3=() JAVA32_VMS1_3=(); JAVA32_HOMES1_3=()
JAVA32_VMS1_4=(); JAVA32_HOMES1_4=() JAVA32_VMS1_4=(); JAVA32_HOMES1_4=()
@ -25,6 +26,7 @@ JAVA32_VMS7=(); JAVA32_HOMES7=()
JAVA32_VMS8=(); JAVA32_HOMES8=() JAVA32_VMS8=(); JAVA32_HOMES8=()
JAVA32_VMS11=(); JAVA32_HOMES11=() JAVA32_VMS11=(); JAVA32_HOMES11=()
JAVA32_VMS17=(); JAVA32_HOMES17=() JAVA32_VMS17=(); JAVA32_HOMES17=()
JAVA32_VMS21=(); JAVA32_HOMES21=()
# versions locales 64 bits # versions locales 64 bits
JAVA64_VMS5=(); JAVA64_HOMES5=() JAVA64_VMS5=(); JAVA64_HOMES5=()
JAVA64_VMS6=(); JAVA64_HOMES6=() JAVA64_VMS6=(); JAVA64_HOMES6=()
@ -32,6 +34,7 @@ JAVA64_VMS7=(); JAVA64_HOMES7=()
JAVA64_VMS8=(); JAVA64_HOMES8=() JAVA64_VMS8=(); JAVA64_HOMES8=()
JAVA64_VMS11=(); JAVA64_HOMES11=() JAVA64_VMS11=(); JAVA64_HOMES11=()
JAVA64_VMS17=(); JAVA64_HOMES17=() JAVA64_VMS17=(); JAVA64_HOMES17=()
JAVA64_VMS21=(); JAVA64_HOMES21=()
# version sélectionnée # version sélectionnée
SELECTED_JAVA_VM=; SELECTED_JAVA_HOME= SELECTED_JAVA_VM=; SELECTED_JAVA_HOME=
SELECTED_JAVA=; SELECTED_JAVAC= SELECTED_JAVA=; SELECTED_JAVAC=
@ -112,6 +115,14 @@ function __java_compute_vms() {
__java_add HOMES8 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES8 "$HOME/opt/jvm64/$vm" 64
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 11 ]; then
__java_add VMS11 "$vm" 64
__java_add HOMES11 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk17)" array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk17)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
v="${vm#jdk}" v="${vm#jdk}"
@ -120,12 +131,12 @@ function __java_compute_vms() {
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)" array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk21)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
v="${vm#jdk}" v="${vm#jdk}"
if [ "$v" == 11 ]; then if [ "$v" == 21 ]; then
__java_add VMS11 "$vm" 64 __java_add VMS21 "$vm" 64
__java_add HOMES11 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES21 "$HOME/opt/jvm64/$vm" 64
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk1.5.*" | LANG=C sort -r)" array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk1.5.*" | LANG=C sort -r)"
@ -158,6 +169,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm" 64 __java_add VMS17 "$vm" 64
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm" 64
__java_add HOMES21 "$HOME/opt/jvm64/$vm" 64
done
# Puis chercher dans les JVMs installées manuellement dans ~/opt # Puis chercher dans les JVMs installées manuellement dans ~/opt
array_from_lines vms "$(list_dirs "$HOME/opt" "sun-jdk-*")" array_from_lines vms "$(list_dirs "$HOME/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
@ -195,6 +211,14 @@ function __java_compute_vms() {
__java_add HOMES17 "$HOME/opt/$vm" __java_add HOMES17 "$HOME/opt/$vm"
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt" jdk21)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "$HOME/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt" "j2sdk1.4.2*" | LANG=C sort -r)" array_from_lines vms "$(list_dirs "$HOME/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm" __java_add VMS1_4 "$vm"
@ -230,6 +254,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm" __java_add VMS17 "$vm"
__java_add HOMES17 "$HOME/opt/$vm" __java_add HOMES17 "$HOME/opt/$vm"
done done
array_from_lines vms "$(list_dirs "$HOME/opt" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm"
__java_add HOMES21 "$HOME/opt/$vm"
done
# Puis chercher dans les JVMs installées manuellement dans /opt # Puis chercher dans les JVMs installées manuellement dans /opt
array_from_lines vms "$(list_dirs "/opt" "sun-jdk-*")" array_from_lines vms "$(list_dirs "/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
@ -267,6 +296,14 @@ function __java_compute_vms() {
__java_add HOMES17 "/opt/$vm" __java_add HOMES17 "/opt/$vm"
fi fi
done done
array_from_lines vms "$(list_dirs "/opt" jdk21)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "/opt" "j2sdk1.4.2*" | LANG=C sort -r)" array_from_lines vms "$(list_dirs "/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm" __java_add VMS1_4 "$vm"
@ -302,6 +339,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm" __java_add VMS17 "$vm"
__java_add HOMES17 "/opt/$vm" __java_add HOMES17 "/opt/$vm"
done done
array_from_lines vms "$(list_dirs "/opt" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm"
__java_add HOMES21 "/opt/$vm"
done
# Puis chercher dans les JVMs installées par le système dans # Puis chercher dans les JVMs installées par le système dans
# /usr/lib/jvm # /usr/lib/jvm
if check_sysinfos -d gentoo; then if check_sysinfos -d gentoo; then
@ -357,6 +399,9 @@ function __java_compute_vms() {
elif [ "$v" == 17 ]; then elif [ "$v" == 17 ]; then
__java_add VMS17 "$vm" __java_add VMS17 "$vm"
__java_add HOMES17 "/usr/lib/jvm/$vm" __java_add HOMES17 "/usr/lib/jvm/$vm"
elif [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "/usr/lib/jvm/$vm"
fi fi
done done
if [ -d /usr/lib/j2sdk1.4-sun ]; then if [ -d /usr/lib/j2sdk1.4-sun ]; then
@ -398,7 +443,7 @@ function __java_compute_vms() {
function __java_dump_vms() { function __java_dump_vms() {
local v b i vms homes local v b i vms homes
for v in 1_3 1_4 5 6 7 8 11 17; do for v in 1_3 1_4 5 6 7 8 11 17 21; do
for b in "" 32 64; do for b in "" 32 64; do
vms="JAVA${b}_VMS${v}[@]"; vms=("${!vms}") vms="JAVA${b}_VMS${v}[@]"; vms=("${!vms}")
homes="JAVA${b}_HOMES${v}[@]"; homes=("${!homes}") homes="JAVA${b}_HOMES${v}[@]"; homes=("${!homes}")
@ -429,7 +474,7 @@ function __java_select_vms() {
} }
function __java_select() { function __java_select() {
# Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8, 11, 17) # Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8, 11, 17, 21)
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits. Sinon, la version sélectionnée peut être 32bits # version 32bits ou 64 bits. Sinon, la version sélectionnée peut être 32bits
# ou 64bits selon ce qui est disponible. # ou 64bits selon ce qui est disponible.
@ -473,7 +518,7 @@ function __java_select() {
function __java_select_default() { function __java_select_default() {
# Sélectionner la version de java par défaut. Si JAVA_HOME est défini, # Sélectionner la version de java par défaut. Si JAVA_HOME est défini,
# prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11, 17 puis 1_4 # prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11, 17, 21 puis 1_4
# la version 1_3 n'est jamais sélectionnée automatiquement # la version 1_3 n'est jamais sélectionnée automatiquement
if [ -n "$JAVA_HOME" ]; then if [ -n "$JAVA_HOME" ]; then
export JAVA_HOME # s'assurer que cette variable est exportée export JAVA_HOME # s'assurer que cette variable est exportée
@ -485,7 +530,7 @@ function __java_select_default() {
return 0 return 0
fi fi
local vm local vm
for vm in 5 6 7 8 11 17 1_4; do for vm in 5 6 7 8 11 17 21 1_4; do
__java_select "$vm" && return 0 __java_select "$vm" && return 0
done done
return 1 return 1
@ -493,7 +538,7 @@ function __java_select_default() {
function select_java() { function select_java() {
# sélectionner la version *minimum* de java correspondant à $1 # sélectionner la version *minimum* de java correspondant à $1
# $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+|17|17+ # $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+|17|17+|21|21+
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits # version 32bits ou 64 bits
local v vms homes local v vms homes
@ -530,12 +575,17 @@ function select_java() {
done done
;; ;;
11|11+) 11|11+)
for v in 11 17; do for v in 11 17 21; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
17|17+) 17|17+)
for v in 17; do for v in 17 21; do
__java_select "$v" "$2" && return 0
done
;;
21|21+)
for v in 21; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -545,8 +595,8 @@ function select_java() {
function select_java_exact() { function select_java_exact() {
# sélectionner la version *exacte* de java correspondant à $1 # sélectionner la version *exacte* de java correspondant à $1
# $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11|17 pour une correspondance exacte # $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11|17|21 pour une correspondance exacte
# $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+|17+ pour une version minimum # $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+|17+|21+ pour une version minimum
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits # version 32bits ou 64 bits
local v vms homes local v vms homes
@ -604,7 +654,7 @@ function select_java_exact() {
__java_select 11 "$2" && return 0 __java_select 11 "$2" && return 0
;; ;;
11+) 11+)
for v in 11 17; do for v in 11 17 21; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -612,7 +662,15 @@ function select_java_exact() {
__java_select 17 "$2" && return 0 __java_select 17 "$2" && return 0
;; ;;
17+) 17+)
for v in 17; do for v in 17 21; do
__java_select "$v" "$2" && return 0
done
;;
21)
__java_select 21 "$2" && return 0
;;
21+)
for v in 21; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -624,9 +682,9 @@ function select_java_any() {
# Sélectionner la version exacte de java correspondant aux arguments, dans # Sélectionner la version exacte de java correspondant aux arguments, dans
# l'ordre, jusqu'à ce qu'un argument corresponde. DEFAULT correspond à la # l'ordre, jusqu'à ce qu'un argument corresponde. DEFAULT correspond à la
# valeur actuelle de JAVA_HOME, si elle est définie. # valeur actuelle de JAVA_HOME, si elle est définie.
# Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 17 1.4" # Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 17 21 1.4"
local v local v
[ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 17 1.4 [ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 17 21 1.4
for v in "$@"; do for v in "$@"; do
if [ "$v" == DEFAULT ]; then if [ "$v" == DEFAULT ]; then
if [ -n "$JAVA_HOME" ]; then if [ -n "$JAVA_HOME" ]; then

View File

@ -213,7 +213,7 @@ function tl_modifyattr() {
dn = "" dn = ""
} }
sub(/:+$/, "", attr) sub(/:+$/, "", attr)
if (lastattr != attr) { if (tolower(lastattr) != tolower(attr)) {
if (lastattr != "") { if (lastattr != "") {
print "-" print "-"
} }
@ -248,7 +248,7 @@ function tl_deleteattr() {
dn = "" dn = ""
} }
sub(/:+$/, "", attr) sub(/:+$/, "", attr)
if (lastattr != attr) { if (tolower(lastattr) != tolower(attr)) {
if (lastattr != "") { if (lastattr != "") {
print "-" print "-"
} }

4
lless
View File

@ -3,10 +3,10 @@
source "$(dirname "$0")/lib/ulib/auto" || exit 1 source "$(dirname "$0")/lib/ulib/auto" || exit 1
function display_help() { function display_help() {
uecho "$scriptname: frontend de less pour lire des fichiers encodés en latin1 uecho "$scriptname: frontend de less pour lire un fichier encodé en latin1
USAGE USAGE
$scriptname [options] files... $scriptname [options] FILE
OPTIONS OPTIONS
-S, --chop-long-lines -S, --chop-long-lines

139
reginc
View File

@ -12,62 +12,111 @@ remplacer les nombres de FROMmin à FROMmax par leur valeur correspondante,
sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de
couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre
$scriptname -r FROMmin-FROMmax TO FILEs...
renommer les fichiers en remplaçant les nombres de FROMmin à FROMmax par leur
valeur correspondante, sachant que FROMmin doit être remplacé par TO
OPTIONS OPTIONS
-n, --fake -n, --fake
Afficher le fichier tel qu'il serait modifié au lieu de le modifier en Afficher le fichier tel qu'il serait modifié au lieu de le modifier en
place" place
-r, --rename
Renommer les fichiers au lieu de modifier le texte à l'intérieur du
fichier. Attention, l'ordre des arguments est différent avec cette
option"
} }
fake= function process_file() {
local file from to fromb frome seds r
file="$1"; shift
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier"
seds=
while [ $# -ge 2 ]; do
from="$1"
if [[ "$from" == *-* ]]; then
let fromb="${from%-*}"
let frome="${from#*-}"
else
let fromb="$from"
let frome="$from"
fi
let to="$2"; shift 2
if [ "$to" -eq "$fromb" ]; then
einfo "$fromb --> $to aucune modification n'est nécessaire"
elif [ "$to" -lt "$fromb" ]; then
einfo "$fromb-$frome --> $to-$((to+frome-fromb))"
let from=fromb
while [ "$from" -le "$frome" ]; do
seds="$seds${seds:+; }s/$from/$to/g"
let from=from+1
let to=to+1
done
elif [ "$to" -gt "$fromb" ]; then
einfo "$frome-$fromb --> $((to+frome-fromb))-$to"
let from=frome
let to=to+frome-fromb
while [ "$from" -ge "$fromb" ]; do
seds="$seds${seds:+; }s/$from/$to/g"
let from=from-1
let to=to-1
done
fi
done
edebug "Script sed: $seds"
[ -n "$Fake" ] && args=() || args=(-i)
args+=("$seds" "$file")
sed "${args[@]}"; r=$?
[ -z "$Fake" -a $r -eq 0 ]
}
Fake=
rename=
args=( args=(
--help '$exit_with display_help' --help '$exit_with display_help'
-n,--fake fake=1 -n,--Fake Fake=1
-r,--rename rename=1
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
file="$1"; shift if [ -n "$rename" ]; then
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier" from="$1"; to="$2"; shift 2
seds= froms=("$@")
while [ $# -ge 2 ]; do ac_set_tmpfile tmptos
from="$1" echo "tos=(" >>"$tmptos"
if [[ "$from" == *-* ]]; then for file in "${froms[@]}"; do
let fromb="${from%-*}" qval "$file" >>"$tmptos"
let frome="${from#*-}" done
else echo ")" >>"$tmptos"
let fromb="$from"
let frome="$from"
fi
let to="$2"; shift 2
if [ "$to" -eq "$fromb" ]; then Fake= process_file "$tmptos" "$from" "$to"
einfo "$fromb --> $to aucune modification n'est nécessaire" eval "$(<"$tmptos")"
elif [ "$to" -lt "$fromb" ]; then i=0
einfo "$fromb-$frome --> $to-$((to+frome-fromb))" count=${#froms[*]}
while [ $i -lt $count ]; do
from="${froms[$i]}"
to="${tos[$i]}"
if [ "$to" == "$from" ]; then
ewarn "$from: renommage non nécessaire"
else
estep "$from --> $to"
[ -z "$Fake" ] && mv "$from" "$to"
fi
let i=i+1
done
let from=fromb else
while [ "$from" -le "$frome" ]; do process_file "$@"
seds="$seds${seds:+; }s/$from/$to/g" fi
let from=from+1
let to=to+1
done
elif [ "$to" -gt "$fromb" ]; then
einfo "$frome-$fromb --> $((to+frome-fromb))-$to"
let from=frome
let to=to+frome-fromb
while [ "$from" -ge "$fromb" ]; do
seds="$seds${seds:+; }s/$from/$to/g"
let from=from-1
let to=to-1
done
fi
done
edebug "Script sed: $seds"
[ -n "$fake" ] && args=() || args=(-i)
args+=("$seds" "$file")
sed "${args[@]}"