diff --git a/CHANGES.md b/CHANGES.md index 3006981..72bf4f0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,12 @@ +## Version 9.4.2 du 24/01/2020-08:52 + +* `fd5b787` dk: bug +* `ad18983` maj de l'image par défaut +* `c33ff4c` ajouter le support de buster +* `247b449` dk: maj doc +* `28f4d39` dk: support de COMPOSER_PHP +* `f28df52` maj image composer + ## Version 9.4.1 du 20/01/2020-14:46 * `6f01bac` dk: si la commande est inconnue, la transmettre à docker diff --git a/VERSION.txt b/VERSION.txt index ccfb75e..3c40359 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -9.4.1 +9.4.2 diff --git a/dk b/dk index eae9ae9..ca504fd 100755 --- a/dk +++ b/dk @@ -138,14 +138,22 @@ COMMANDES X|prune Supprimer les containers et les images inutilisées - composer|ci|cu|cs [args...] + composer|ci|cu|cr|cs [args...] Frontend pour lancer composer à l'intérieur d'un container. Les - commandes 'ci', 'cu' et 'cs' sont respectivement des alias pour - 'composer install', 'composer update' et 'composer shell' + commandes 'ci', 'cu', 'cr', 'cs' sont des alias pour 'composer install', + 'composer update', 'composer rshell' et 'composer shell' respectivement S'il existe un fichier .composer.conf dans le répertoire du projet, il est sourcé. Ce fichier définit des variables qui indiquent comment la commande composer est lancée. Les variables suivantes peuvent être définies: + * COMPOSER_PHP -- Version de PHP en dessous de laquelle COMPOSER_IMAGE + est utilisé. En d'autres termes, c'est la version minimum de PHP + nécessaire pour faire tourner composer. L'idée est que si la version + de PHP installée est suffisante, il n'est pas nécessaire de passer par + une image docker. + Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e + 70300 pour PHP 7.3 + Spécifier 'any' ou 'force' pour forcer l'utilisation de l'image docker * COMPOSER_IMAGE -- Image utilisée pour lancer composer. La valeur par défaut est: $DEFAULT_COMPOSER_IMAGE @@ -167,11 +175,11 @@ COMMANDES spécifiées y sont lancées. Ce container est réutilisé à chaque fois. Ce paramétrage est utilisé pour par exemple installer certains packages nécessaire au projet. - La commande 'shell' est une extension qui lance un shell bash au lieu de - lancer la commande composer, ce qui permet de faire des opérations plus - complexes si le besoin s'en fait sentir. NB: le shell est lancé avec - l'utilisateur root. La commande alternative 'ushell' lance le shell avec - le compte utilisateur. + La commande 'rshell' est une extension qui lance un shell bash au lieu + de lancer la commande composer, ce qui permet de faire des opérations + plus complexes si le besoin s'en fait sentir. NB: le shell est lancé + avec l'utilisateur root. La commande alternative 'shell' lance le shell + avec le compte utilisateur. Pour faciliter l'utilisation dans un script, les premiers arguments peuvent être utilisés pour redéfinir les variables COMPOSER_*, e.g $scriptname composer COMPOSER_IMAGE=none install @@ -1275,12 +1283,12 @@ EOF function default_local_composer() { # lancement direct case "$1" in - rootshell|shell|rootbash|bash) + rootshell|rshell|rootbash|rbash) # ewarn parce qu'on est pas root dans ce shell contrairement à ce qui est demandé - ewarn "Lancement d'un shell utilisateur" + ewarn "Lancement d'un shell utilisateur alors qu'un shell root est demandé" bash "$@" ;; - usershell|ushell|userbash|ubash) + usershell|shell|userbash|bash) estep "Lancement d'un shell utilisateur" bash "$@" ;; @@ -1303,11 +1311,11 @@ function default_docker_composer() { setx group=id -gn; setx group=getent group "$group" setx projdir=pwd case "$1" in - rootshell|shell|rootbash|bash) + rootshell|rshell|rootbash|rbash) actualcmd='eval "bash $args"' shift ;; - usershell|ushell|userbash|ubash) + usershell|shell|userbash|bash) actualcmd='eval "su-exec \"$user\" bash $args"' shift ;; @@ -1390,6 +1398,7 @@ fi function local_composer() { default_local_composer "$@"; } function docker_composer() { default_docker_composer "$@"; } function auto_composer() { + local COMPOSER_PHP= local COMPOSER_IMAGE="$DEFAULT_COMPOSER_IMAGE" local COMPOSER_MACHINE=-u local COMPOSER_CMD= @@ -1398,6 +1407,7 @@ function auto_composer() { # les premiers arguments peuvent service à redéfinir les variables while [ $# -gt 0 ]; do case "$1" in + COMPOSER_PHP=*) setv "$1"; shift;; COMPOSER_IMAGE=*) setv "$1"; shift;; COMPOSER_MACHINE=*) setv "$1"; shift;; COMPOSER_CMD=*) setv "$1"; shift;; @@ -1406,10 +1416,27 @@ function auto_composer() { esac done - if [ "$COMPOSER_IMAGE" == none ]; then - local_composer "$@" - + local use_image + if [ -z "$COMPOSER_PHP" ]; then + # pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE + [ "$COMPOSER_IMAGE" != none ] && use_image=1 + elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then + use_image=1 else + # Vérifier la version de PHP + php -r ' +$version = $argv[1]; +if (strpos($version, ".") !== false) { + $version = explode(".", $version); + $version = $version[0] * 10000 + $version[1] * 100 + (isset($version[2])? $version[2]: 0); +} +exit((PHP_VERSION_ID < $version)? 0: 1); +' -- "$COMPOSER_PHP" && use_image=1 + fi + + if [ -n "$use_image" ]; then + [ "$COMPOSER_IMAGE" != none ] || die "Vous devez spécifier l'image à utiliser pour composer" + local PREVIOUS_DOCKER_MACHINE_NAME="$DOCKER_MACHINE_NAME" if [ -n "$COMPOSER_MACHINE" -a "$DOCKER_MACHINE_NAME" != "$COMPOSER_MACHINE" ]; then local -x DOCKER_TLS_VERIFY= DOCKER_HOST= DOCKER_CERT_PATH= DOCKER_MACHINE_NAME= @@ -1424,6 +1451,8 @@ function auto_composer() { fi docker_composer "$@" + else + local_composer "$@" fi } @@ -1437,7 +1466,7 @@ fi DEFAULT_PROFILE=devel # pour le moment ne pas lancer composer dans un container par défaut -DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/utils-icmycas-php-apache:d9 +DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/apache-php-myiccas-utils:d9 PROFILE= DM_PROFILES=() set_defaults dk @@ -1857,13 +1886,14 @@ NR == 1 { print; next } "$DOCKER" container prune -f || die "$DOCKER" image prune -f || die ;; - composer|c|ci|cu|cs) + composer|c|ci|cu|cr|cs) build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" [ -f .build.scripts.sh ] && source ./.build.scripts.sh [ -f build.scripts.sh ] && source ./build.scripts.sh args=() if [ "$cmd" == ci ]; then args+=(install) elif [ "$cmd" == cu ]; then args+=(update) + elif [ "$cmd" == cr ]; then args+=(rshell) elif [ "$cmd" == cs ]; then args+=(shell) fi while [ $# -gt 0 -a "$1" != -- ]; do @@ -1873,6 +1903,6 @@ NR == 1 { print; next } ;; *) # transmettre directement à docker pour les autres commandes - exec "$DOCKER" "$@" + exec "$DOCKER" "$cmd" "$@" esac done diff --git a/lib/default/dk b/lib/default/dk index 2f1dcc9..375b22f 100644 --- a/lib/default/dk +++ b/lib/default/dk @@ -7,4 +7,4 @@ #DM_PROFILES=(name:profile...) # Image à utiliser pour lancer composer -#COMPOSER_IMAGE=docker.univ-reunion.fr/image/utils-icmycas-php-apache:d9 +#COMPOSER_IMAGE=docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10 diff --git a/lib/ulib/sysinfos b/lib/ulib/sysinfos index fd6f519..575f5c8 100644 --- a/lib/ulib/sysinfos +++ b/lib/ulib/sysinfos @@ -25,7 +25,7 @@ SYSDIST_ALIASES=( # attention: dans *_SYSVERS, les noms doivent être ordonnés du plus récent au # moins récent debianlike_SYSVERS=() -debian_SYSVERS=(stretch jessie wheezy squeeze lenny etch) +debian_SYSVERS=(buster stretch jessie wheezy squeeze lenny etch) ubuntu_SYSVERS=(oneiric natty maverick lucid karmic jaunty intrepid hardy) redhatlike_SYSVERS=() ol_SYSVERS=(ol7 ol6 redhat7 redhat6) @@ -35,7 +35,7 @@ centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4) suse_SYSVERS=() gentoo_SYSVERS=() SYSVER_ALIASES=( - 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch + 10=buster 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy ) @@ -143,6 +143,7 @@ function __compute_sysinfos() { esac if [ -n "$debian_version" ]; then case "$debian_version" in + 10*|buster*) MYSYSDIST=(debian debianlike); MYSYSVER=(buster);; 9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);; 8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);; 7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);;