Intégration de la branche release-4.4.0

This commit is contained in:
Jephté Clain 2016-04-15 12:04:38 +04:00
commit c52b40c063
27 changed files with 173 additions and 44 deletions

View File

@ -1,3 +1,15 @@
## Version 4.4.0 du 15/04/2016-12:04
73391a9 awkrun: ajout d'un champ field à cqsql
2f60fec git_track_branch(): support de git >= 1.8.x
130b4d1 tenir compte du fichier /etc/debian_chroot pour initialiser UTOOLS_CHROOT
48c0420 ne pas afficher d'erreur si apache n'est pas installé
5e1a6cf Intégration de la branche rumount
1ad804b implémentation initiale de rumount
f460399 améliorer le calcul du répertoire destination avec pclone/pcrone
6411e63 configurer la valeur de l'umask
eb4362d apacheconfig: déploiement pour plusieurs systèmes à partir des mêmes sources
## Version 4.3.0 du 07/04/2016-14:57
d021c97 support de on_debian() avec des arguments

View File

@ -1 +1 @@
4.3.0
4.4.0

View File

@ -139,13 +139,18 @@ function __template_updatef_dhost() {
[ -n "$ips" ] || __template_set_var ips ""
}
DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
DEFAULT_CERTSDIR=1507-renater
DEFAULT_CANAME=1507-DigiCertCA.crt
set_defaults apacheconfig
TEMPLATECTL_NAME=apacheconfig
TEMPLATECTL_SRCDIRS=(apacheconfig)
TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME"
TEMPLATECTL_DEFAULTS=(
admin=supervision-gdrsi@listes.univ-reunion.fr
certsdir=1507-renater
caname=1507-DigiCertCA.crt
admin="$DEFAULT_ADMIN"
certsdir="$DEFAULT_CERTSDIR"
caname="$DEFAULT_CANAME"
)
TEMPLATECTL_VARS=()
@ -205,13 +210,7 @@ fi
__template_set_var sysname "$sysname"
__template_set_var sysdist "$sysdist"
__template_set_var sysver "$sysver"
if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then
array_add TEMPLATECTL_SRCDIRS apacheconfig8
elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then
array_add TEMPLATECTL_SRCDIRS apacheconfig7
else
ewarn "$(get_sysinfos_desc sysname sysdist sysver): système non supporté pour le déploiement"
fi
#check_sysinfos --vars sysname sysdist sysver bits "${templatectl_suffix[@]}
################################################################################
if [ "$action" == create ]; then

6
lib/default/apacheconfig Normal file
View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Valeurs par défaut du template apacheconfig
#DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
#DEFAULT_CERTSDIR=1507-renater
#DEFAULT_CANAME=1507-DigiCertCA.crt

View File

@ -2,7 +2,9 @@
# Ce fichier contient des informations à charger systématiquement par nutools,
# et qui doivent prendre la précédence sur toute valeur autodétectée.
# Ce "système" est-is dans un CHROOT?
# Ce "système" est-is dans un CHROOT? Le module base.init initialise cette
# variable au contenu du fichier /etc/debian_chroot s'il existe, mais il est
# possible de forcer la valeur sur une machine non debian.
#export UTOOLS_CHROOT=1
# Si oui, les valeurs suivantes peuvent être forcées pour les données systèmes:

View File

@ -7,6 +7,13 @@ if [ -n "$UTOOLS_BASH_PROMPT" ]; then
else
DEFAULT_PS1="$USER"'(\u)@\h \w \$ '
fi
if [ -z "$UTOOLS_CHROOT" ]; then
if [ -n "$debian_chroot" ]; then
UTOOLS_CHROOT="$debian_chroot"
elif [ -r /etc/debian_chroot ]; then
UTOOLS_CHROOT="$(</etc/debian_chroot)"
fi
fi
if [ "$UTOOLS_CHROOT" == "1" ]; then
DEFAULT_PS1="[CHROOT] $DEFAULT_PS1"
elif [ -n "$UTOOLS_CHROOT" ]; then

View File

@ -11,7 +11,7 @@
: "${UTOOLS_AUTO:=1}"
export UTOOLS_AUTO
# Activer le mode offline de git. Par exemple, les modifications ne sont pas
# pousser automatiquement vers l'origine.
# poussées automatiquement vers l'origine.
: "${UTOOLS_VCS_OFFLINE:=}"
export UTOOLS_VCS_OFFLINE
@ -93,6 +93,9 @@ if [ -n "$UTOOLS_USSH_ALIAS" ]; then
}
fi
# Configuration de l'umask
umask "${UTOOLS_UMASK:-0022}"
# Configuration
__uaddpath "@@dest@@" PATH
__uaddpath "@@dest@@" UINCPATH

View File

@ -21,6 +21,9 @@
# Désactiver l'affichage en couleur pour les fonctions e*
#export UTOOLS_NO_COLORS=1
# Valeur de l'umask à configurer
#export UTOOLS_UMASK=0022
# Editeur à utiliser
#export EDITOR=vim

View File

@ -1 +1 @@
012002000
012003000

View File

@ -51,7 +51,7 @@ function get_default_apachebin_prefix() {
function get_default_apacheversion_prefix() {
[ -n "$APACHEBIN" ] || return
local version="$($APACHEBIN -v | grep version:)"
local version="$($APACHEBIN -v 2>/dev/null | grep version:)"
if [[ "$version" == *1.3* ]]; then
echo ""
elif [[ "$version" == *2.0* ]]; then

View File

@ -155,6 +155,17 @@ OPTIONS
return 0
}
__APACHE_AUTOCONF_SUFFIXES=(d8 d)
__APACHE_AUTOCONF_SUFFIX_d8=(-d debian -v jessie+)
__APACHE_AUTOCONF_SUFFIX_d=(-d debian)
function __apache_autoconf_check_suffix() {
array_contains __APACHE_AUTOCONF_SUFFIXES "$1" || return 1
local sysinfos="__APACHE_AUTOCONF_SUFFIX_${1}[@]"
check_sysinfos --vars sysname sysdist sysver bits "${!sysinfos}"
}
function __apache_autoconf_filter_suffix_files() {
grep -vF ..
}
function __apache_autoconf_setup() {
if ! check_sysinfos --vars sysname sysdist sysver bits -s linux64 linux32 linux -d debian; then
eerror "apache_autoconf n'est supporté que sur Debian linux"
@ -182,17 +193,33 @@ function __apache_autoconf_fillcopy() {
# script sed $FILLSCRIPT. Le fichier temporaire $FILLTEMP est utilisé pour
# le remplacement des valeurs. $3 contient le cas échéant des commandes sed
# supplémentaires
# Si des fichiers suffixes existent, ne faire la copie que si un fichier
# approprié correspondant au système courant est trouvé
local src="$1" dest="$2" sedscript="$3" perms="${4:-go+rX}"
local var found
# vérifier les fichiers suffixe
local suffix have_suffix found_suffix
for suffix in "${__APACHE_AUTOCONF_SUFFIXES[@]}"; do
if [ -f "$src..$suffix" ]; then
have_suffix=1
if __apache_autoconf_check_suffix "$suffix"; then
found_suffix=1
src="$src..$suffix"
break
fi
fi
done
[ -n "$have_suffix" -a -z "$found_suffix" ] && return 1
# valeurs à remplacer dans le fichier
local var found_var
for var in "${FILLVARS[@]}"; do
if quietgrep "@@${var}@@" "$1"; then
found=1
if quietgrep "@@${var}@@" "$src"; then
found_var=1
break
fi
done
if [ "$found" ]; then
if [ "$found_var" ]; then
sed "$FILLSCRIPT
$sedscript" <"$src" >"$FILLTEMP"
src="$FILLTEMP"
@ -272,10 +299,14 @@ function apache_autoconf() {
bits="$MYBITS"
fi
__apache_autoconf_setup || return 1
if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then
if __apache_autoconf_check_suffix d8; then
confdefault=000-default.conf
confdefaultssl=default-ssl.conf
destconfsdir="$APACHECONFDIR/conf-available"
a2xconf=1
elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then
elif __apache_autoconf_check_suffix d; then
confdefault=default
confdefaultssl=default-ssl
destconfsdir="$APACHECONFDIR/conf.d"
fi
@ -347,7 +378,7 @@ function apache_autoconf() {
local -a confs
local conf
etitle "Installation des configurations"
array_from_lines confs "$(list_files "$confsdir" "*.conf")"
array_from_lines confs "$(list_files "$confsdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do
[ -z "$oneconf" -o "$conf" == "$oneconf" ] || continue
@ -364,7 +395,7 @@ function apache_autoconf() {
local -a confs
local conf
etitle "Installation des configurations des modules"
array_from_lines confs "$(list_files "$modulesdir" "*.conf")"
array_from_lines confs "$(list_files "$modulesdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do
[ -z "$onemodule" -o "$conf" == "$onemodule" ] || continue
@ -397,9 +428,9 @@ function apache_autoconf() {
local -a confs
local conf confname destconf certsconf
etitle "Installation des sites"
array_lsfiles confs "$sitesdir" "*.conf"
for conf in "${confs[@]}"; do
confname="$(basename "$conf")"
array_from_lines confs "$(list_files "$sitesdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for confname in "${confs[@]}"; do
conf="$sitesdir/$confname"
[ -z "$onesite" -o "$confname" == "$onesite" ] || continue
certsconf=
@ -411,8 +442,8 @@ function apache_autoconf() {
fi
fi
case "$confname" in
default.conf) destconf=default;;
default.ssl.conf) destconf=default-ssl;;
default.conf) destconf="$confdefault";;
default.ssl.conf) destconf="$confdefaultssl";;
*) destconf="$confname";;
esac
@ -446,12 +477,10 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
local -a confs
local conf
etitle "Configuration de base"
array_from_lines confs "$(list_files "$confdir")"
array_add ignores confs.conf modules.conf sites.conf
array_from_lines confs "$(list_files "$confdir" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do
array_contains ignores "$conf" && continue
case "$conf" in
confs.conf|modules.conf|sites.conf) continue;;
esac
estep "$conf"
__apache_autoconf_fillcopy \
"$confdir/$conf" \
@ -490,7 +519,7 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
done
fi
if [ -f "$confdir/sites.conf" ]; then
local -a sitesconfs; local sitesconf
local -a sitesconfs; local sitesconf enable
array_from_lines sitesconfs "$(<"$confdir/sites.conf" filter_conf)"
if [ ${#sitesconfs[*]} -gt 0 ]; then
# si une configuration existe, ignorer la configuration
@ -499,14 +528,25 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
disablesites=()
for sitesconf in "${sitesconfs[@]}"; do
if [ "${sitesconf#+}" != "$sitesconf" ]; then
array_del disablesites "${sitesconf#+}"
array_add enablesites "${sitesconf#+}"
enable=1
sitesconf="${sitesconf#+}"
elif [ "${sitesconf#-}" != "$sitesconf" ]; then
array_del enablesites "${sitesconf#-}"
array_add disablesites "${sitesconf#-}"
enable=
sitesconf="${sitesconf#-}"
else
enable=1
fi
case "$sitesconf" in
default.conf) sitesconf="$confdefault";;
default.ssl.conf) sitesconf="$confdefaultssl";;
esac
if [ -n "$enable" ]; then
array_del disablesites "$sitesconf"
array_add enablesites "$sitesconf"
else
array_del enablesites "$sitesconf"
array_add disablesites "$sitesconf"
fi
done
fi

View File

@ -1918,8 +1918,8 @@ function qsql(s) {'"
gsub(/'/, \"''\", s)
return \"'\" s \"'\"
"'}
function cqsql(s) {
return "," qsql(s)
function cqsql(s, field) {
return "," qsql(s) (field != ""? " " field: "")
}
function unquote_mysqlcsv(s) {
gsub(/\\n/, "\n", s)

View File

@ -36,6 +36,7 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
# note: ajouter 'true' après le chargement de *nutoolsrc pour éviter que le
# module se termine sur une erreur si ces fichiers n'existent pas, ce qui
# empêcherait de le charger avec urequire()
[ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
true

View File

@ -676,7 +676,14 @@ function git_track_branch() {
if ! git_have_rbranch "$branch" "$origin"; then
git push "$origin" "$branch" || return
fi
git branch -t --set-upstream "$branch" "$origin/$branch"
local version="$(LANG=C git version)"
version="${version#git version }"
eval "version=(${version//./ })"
if [ ${version[0]} -le 1 -a ${version[1]} -le 7 ]; then
git branch -t --set-upstream "$branch" "$origin/$branch"
else
git branch -u "$origin/$branch" "$branch"
fi
}
function git_ensure_branch() {
# retourner 0 si la branche a été créée, 1 si elle existait déjà, 2 en cas d'erreur

42
rumount Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS
function display_help() {
uecho "$scriptname: démonter un système de fichier récursivement
USAGE
$scriptname mountpoint
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
bind-montés à partir d'un sous-répertoire de mountpoint."
}
args=(--help '$exit_with display_help')
parse_args "$@"; set -- "${args[@]}"
mountp="$1"
[ -n "$mountp" ] || die "Vous dévez spécifier le système de fichier à démonter"
[ -d "$mountp" ] || die "$mountp: répertoire introuvable"
setx mountp=abspath "$mountp"
run_as_root "$@"
setx -a mountps=findmnt -nlo TARGET
array_contains mountps "$mountp" || die "Vous devez spécifier un répertoire de montage valide"
function show_all() {
findmnt -T "$mountp" -Rnlo TARGET
findmnt -nlo TARGET | awkrun mountp="$mountp" '{ if (substr($0, 1, length(mountp) + 1) == (mountp "/")) print }'
}
setx -a mounts=evalp show_all // sort -u // \
awk '{print length($0) "," $0}' // \
sort -nr // \
awk '{sub(/[0-9]+,/, ""); print}'
for mount in "${mounts[@]}"; do
estep "$mount"
umount "$mount" || die
done

View File

@ -270,9 +270,13 @@ elif array_contains GITANNEX_CMDS "$CMD"; then
elif [ "$CMD" == clone ]; then
repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
splitfsep "$repourl" : userhost path
destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$repourl"
if [ -z "$destdir" ]; then
setx destdir=basename -- "$path"
destdir="${destdir%.git}"
fi
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
use_ssh_wrapper
@ -282,12 +286,15 @@ elif [ "$CMD" == clone ]; then
elif [ "$CMD" == crone ]; then
repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
splitfsep "$repourl" : userhost path
destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$repourl"
if [ -z "$destdir" ]; then
setx destdir=basename -- "$path"
destdir="${destdir%.git}"
fi
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
splitfsep "$repourl" : userhost path
splituserhost "$userhost" user host
[ -n "$user" ] || user=git
[ -n "$host" ] || die "Vous devez spécifier l'hôte"