uinst installe maintenant les profils en mode partagé par défaut

This commit is contained in:
Jephté Clain 2015-07-22 15:04:58 +04:00
parent fb6b492d5c
commit 0f5b5720c2
8 changed files with 106 additions and 31 deletions

8
bashrc
View File

@ -1,6 +1,12 @@
# -*- 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
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
function uprovide() { :; } function uprovide() { :; }
source @@dest@@/lib/ulib/uenv || return source @@dest@@/lib/ulib/uenv || return
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.${HOSTNAME%%.*}.d" if [ -n "$UTOOLS_LOCAL_PROFILES" ]; then
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.${HOSTNAME%%.*}.d"
else
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.d"
fi
__uenv_cleanup __uenv_cleanup

View File

@ -12,3 +12,6 @@
#export UTOOLS_BITS=32 #export UTOOLS_BITS=32
#export UTOOLS_MYSYSDIST="debian debianlike" #export UTOOLS_MYSYSDIST="debian debianlike"
#export UTOOLS_MYSYSVER="squeeze" #export UTOOLS_MYSYSVER="squeeze"
# Type d'installation pour les profils
#export UTOOLS_LOCAL_PROFILES=

View File

@ -42,6 +42,15 @@ bcdir=lib/completion.d
# copier le fichier .nutoolsrc # copier le fichier .nutoolsrc
[ -f ~/.nutoolsrc ] || cp lib/nutoolsrc ~/.nutoolsrc [ -f ~/.nutoolsrc ] || cp lib/nutoolsrc ~/.nutoolsrc
if ! quietgrep UTOOLS_LOCAL_PROFILES= ~/.nutoolsrc; then
echo "
# Type d'installation pour les profils
#export UTOOLS_LOCAL_PROFILES=" >>~/.nutoolsrc
fi
if [ "$UINST_LOCAL_PROFILES" != auto ]; then
sedi "/UTOOLS_LOCAL_PROFILES=/c\\
export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc
fi
# identification du système # identification du système
echo "##@before *" >lib/profile.d/0nutools echo "##@before *" >lib/profile.d/0nutools

View File

@ -129,6 +129,7 @@ function uenv_update_dir() {
local __myhostname="$MYHOSTNAME" local __myhostname="$MYHOSTNAME"
>"$sio" >"$sio"
for dir in "$@"; do for dir in "$@"; do
[ -n "$dir" ] || continue
for file in "$dir/"*; do for file in "$dir/"*; do
[ -f "$file" ] || continue [ -f "$file" ] || continue
files=("${files[@]}" "$file") files=("${files[@]}" "$file")
@ -188,13 +189,22 @@ function uenv_update_dir() {
} }
function uenv_set_destdirs() { function uenv_set_destdirs() {
local hostname="${HOSTNAME%%.*}" if [ "$1" == --local-profiles ]; then
shared_profiledestdir="$HOME/etc/profile.d" local hostname="${HOSTNAME%%.*}"
shared_bashrcdestdir="$HOME/etc/bashrc.d" profiledestdir="$HOME/etc/profile.${hostname}.d"
shared_defaultdestdir="$HOME/etc/default" bashrcdestdir="$HOME/etc/bashrc.${hostname}.d"
profiledestdir="$HOME/etc/profile.${hostname}.d" defaultdestdir="$HOME/etc/default.${hostname}"
bashrcdestdir="$HOME/etc/bashrc.${hostname}.d" shared_profiledestdir="$HOME/etc/profile.d"
defaultdestdir="$HOME/etc/default.${hostname}" shared_bashrcdestdir="$HOME/etc/bashrc.d"
shared_defaultdestdir="$HOME/etc/default"
else
profiledestdir="$HOME/etc/profile.d"
bashrcdestdir="$HOME/etc/bashrc.d"
defaultdestdir="$HOME/etc/default"
shared_profiledestdir=
shared_bashrcdestdir=
shared_defaultdestdir=
fi
} }
function uenv_sourced_in() { function uenv_sourced_in() {
@ -253,12 +263,17 @@ cas, il faut décommenter la ligne dans ~/.bash_profile qui source ~/.profile"
} }
function uenv_install_profiles() { function uenv_install_profiles() {
local local_profiles
if [ "$1" == --local-profiles ]; then
local_profiles=1
shift
fi
local projdir="$1" profiledir="$2" bashrcdir="$3" defaultdir="$4" local projdir="$1" profiledir="$2" bashrcdir="$3" defaultdir="$4"
local tmpfile local tmpfile shared
local prefix envsrcdir envdestdir shadestdir envfiles envfile envsrc envdest shadest local prefix envsrcdir envdestdir shadestdir envfiles envfile envsrc envdest shadest
local shared_profiledestdir shared_bashrcdestdir shared_defaultdestdir local shared_profiledestdir shared_bashrcdestdir shared_defaultdestdir
local profiledestdir bashrcdestdir defaultdestdir local profiledestdir bashrcdestdir defaultdestdir
uenv_set_destdirs uenv_set_destdirs ${local_profiles:+--local-profiles}
ac_set_tmpfile tmpfile ac_set_tmpfile tmpfile
for prefix in profile bashrc default; do for prefix in profile bashrc default; do
@ -266,26 +281,35 @@ function uenv_install_profiles() {
envdestdir="${prefix}destdir"; envdestdir="${!envdestdir}" envdestdir="${prefix}destdir"; envdestdir="${!envdestdir}"
shadestdir="shared_${prefix}destdir"; shadestdir="${!shadestdir}" shadestdir="shared_${prefix}destdir"; shadestdir="${!shadestdir}"
[ -n "$envsrcdir" -a -d "$envsrcdir" ] || continue [ -n "$envsrcdir" -a -d "$envsrcdir" ] || continue
mkdir -p "$envdestdir" "$shadestdir" mkdir -p "$envdestdir"
[ -n "$shadestdir" ] && mkdir -p "$shadestdir"
array_from_lines envfiles "$(list_files "$envsrcdir")" array_from_lines envfiles "$(list_files "$envsrcdir")"
for envfile in "${envfiles[@]}"; do for envfile in "${envfiles[@]}"; do
envsrc="$envsrcdir/$envfile"
if [ "${envfile%.shared}" != "$envfile" ]; then if [ "${envfile%.shared}" != "$envfile" ]; then
# Avec l'extension .shared, toujours installer dans le
# répertoire des profils partagés
envsrc="$envsrcdir/$envfile"
envfile="${envfile%.shared}" envfile="${envfile%.shared}"
shadest="$shadestdir/$envfile" shared=1
envdest="$shadest"
else else
envsrc="$envsrcdir/$envfile" shared=
envdest="$envdestdir/$envfile" fi
shadest="$shadestdir/$envfile"
if [ ! -f "$envdest" -a -f "$shadest" ]; then if [ -n "$shadestdir" ]; then
# Si déjà installé en partagé, continuer à mettre à jour ce if [ -n "$shared" ]; then
# fichier-là # si fichier partagé, toujours le copier dans le répertoire
envdest="$shadest" # des fichiers partagés
envdest="$shadestdir/$envfile"
else
envdest="$envdestdir/$envfile"
shadest="$shadestdir/$envfile"
if [ ! -f "$envdest" -a -f "$shadest" ]; then
# Si déjà installé en partagé, continuer à mettre à jour ce
# fichier-là
envdest="$shadest"
fi
fi fi
else
envdest="$envdestdir/$envfile"
fi fi
local actual_envdestdir="$(dirname -- "$envdest")" local actual_envdestdir="$(dirname -- "$envdest")"

View File

@ -17,6 +17,7 @@ function uinst() {
# l'environnement de l'appelant. # l'environnement de l'appelant.
local UINST_CONFIGURE_FORCE local UINST_CONFIGURE_FORCE
local UINST_COPY_METHOD local UINST_COPY_METHOD
local UINST_LOCAL_PROFILES
local -a UINST_DEFAULTS local -a UINST_DEFAULTS
local -a UINST_CONFIG_VARS local -a UINST_CONFIG_VARS
local -a UINST_CONFIG_VARCMDS local -a UINST_CONFIG_VARCMDS
@ -90,6 +91,11 @@ OPTIONS
--include-vcs --include-vcs
Inclure les fichiers de VCS dans les fichiers copiés. Par défaut, les Inclure les fichiers de VCS dans les fichiers copiés. Par défaut, les
fichiers de VCS sont exclus. fichiers de VCS sont exclus.
-l, --local-profiles
Installer les profils locaux comme tels
--shared-profiles
Installer les profils locaux comme des profils partagés. C'est la valeur
par défaut pour compatibilité.
-C Configurer un répertoire pour le déploiement avec uinst -C Configurer un répertoire pour le déploiement avec uinst
Ajouter l'option --force pour forcer la reconfiguration" Ajouter l'option --force pour forcer la reconfiguration"
} }
@ -131,6 +137,8 @@ OPTIONS
--prefix UINST_AUTOPREFIX=1 \ --prefix UINST_AUTOPREFIX=1 \
--no-prefix UINST_AUTOPREFIX= \ --no-prefix UINST_AUTOPREFIX= \
--include-vcs UINST_COPY_METHOD=cpdir \ --include-vcs UINST_COPY_METHOD=cpdir \
-l,--local-profiles UINST_LOCAL_PROFILES=1 \
--shared-profiles UINST_LOCAL_PROFILES= \
-C UINST_ACTION=configure \ -C UINST_ACTION=configure \
-f,--force UINST_CONFIGURE_FORCE=1 \ -f,--force UINST_CONFIGURE_FORCE=1 \
--prepare-1s: UINST_PREPARE_DIR \ --prepare-1s: UINST_PREPARE_DIR \
@ -171,6 +179,7 @@ OPTIONS
function __uinst_init() { function __uinst_init() {
UINST_CONFIGURE_FORCE= UINST_CONFIGURE_FORCE=
UINST_COPY_METHOD="${UINST_COPY_METHOD:-cpdirnovcs}" UINST_COPY_METHOD="${UINST_COPY_METHOD:-cpdirnovcs}"
UINST_LOCAL_PROFILES="${UTOOLS_LOCAL_PROFILES:-auto}"
UINST_DEFAULTS=( UINST_DEFAULTS=(
uinc='release' uinc='release'
uinc_options='()' uinc_options='()'
@ -774,6 +783,7 @@ function __uinst_udir2s() {
for __uinst_var in "${__uinst_arrays[@]}"; do for __uinst_var in "${__uinst_arrays[@]}"; do
set_array_cmd "$__uinst_var" >>"$__uinst_config" set_array_cmd "$__uinst_var" >>"$__uinst_config"
done done
set_var_cmd "UINST_LOCAL_PROFILES" "$UINST_LOCAL_PROFILES" >>"$__uinst_config"
set_var_cmd "UINST_ISTMPDIR" "$UINST_ISTMPDIR" >>"$__uinst_config" set_var_cmd "UINST_ISTMPDIR" "$UINST_ISTMPDIR" >>"$__uinst_config"
set_var_cmd "UINST_ORIGSRC" "$UINST_ORIGSRC" >>"$__uinst_config" set_var_cmd "UINST_ORIGSRC" "$UINST_ORIGSRC" >>"$__uinst_config"
set_var_cmd "UINST_SRCDIR" "$UINST_SRCDIR" >>"$__uinst_config" set_var_cmd "UINST_SRCDIR" "$UINST_SRCDIR" >>"$__uinst_config"
@ -858,8 +868,11 @@ function __uinst_udir2s() {
## Installer les profils ## Installer les profils
if is_yes "$install_profiles"; then if is_yes "$install_profiles"; then
urequire uenv uenv_update urequire uenv uenv_update
etitle "Installation des profils" \ etitle "Installation des profils"
uenv_install_profiles "$srcdir" "$profiledir" "$bashrcdir" "$defaultdir" local local_profiles="$UINST_LOCAL_PROFILES"
[ "$local_profiles" == auto ] && local_profiles=
uenv_install_profiles ${local_profiles:+--local-profiles} "$srcdir" "$profiledir" "$bashrcdir" "$defaultdir"
eend
fi fi
## Déploiement ## Déploiement

View File

@ -12,6 +12,8 @@ USAGE
OPTIONS OPTIONS
-C, --configure -C, --configure
Faire la configuration pour l'utilisateur courant en appelant uenv -u Faire la configuration pour l'utilisateur courant en appelant uenv -u
Avec cette option, l'option -l (ou --local-profiles) est aussi reconnue
et est passée directement à uenv
-v, --version -v, --version
Afficher la version de nutools installée. C'est l'option par défaut Afficher la version de nutools installée. C'est l'option par défaut
-c, --check -c, --check
@ -33,10 +35,12 @@ OPTIONS
} }
action=show action=show
local_profiles=
coper= coper=
args=( args=(
--help '$exit_with display_help' --help '$exit_with display_help'
-C,--configure action=configure -C,--configure action=configure
-l,--local-profiles local_profiles=1
-v,--version action=show -v,--version action=show
-c,--check action=check -c,--check action=check
-o:,--oper:,--op: '$action=check; set@ coper' -o:,--oper:,--op: '$action=check; set@ coper'
@ -53,7 +57,7 @@ parse_args "$@"; set -- "${args[@]}"
case "$action" in case "$action" in
configure) configure)
"$scriptdir/uenv" -u "$scriptdir/uenv" -u ${local_profiles:+--local-profiles}
;; ;;
show) show)
setx nutoolsver="$scriptdir/pver" -F "$scriptdir/VERSION.txt" --show setx nutoolsver="$scriptdir/pver" -F "$scriptdir/VERSION.txt" --show

View File

@ -1,8 +1,13 @@
# -*- 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
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
[ -z "$USER" -a -n "$LOGNAME" ] && export USER="$LOGNAME" [ -z "$USER" -a -n "$LOGNAME" ] && export USER="$LOGNAME"
function uprovide() { :; } function uprovide() { :; }
source @@dest@@/lib/ulib/uenv || return source @@dest@@/lib/ulib/uenv || return
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.${HOSTNAME%%.*}.d" if [ -n "$UTOOLS_LOCAL_PROFILES" ]; then
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.${HOSTNAME%%.*}.d"
else
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.d"
fi
__uenv_cleanup __uenv_cleanup

19
uenv
View File

@ -17,7 +17,7 @@ OPTIONS
HOME=/path/to/homedir HOME=/path/to/homedir
Spécifier le chemin vers ~ Spécifier le chemin vers ~
Cette option doit être placée avant les valeurs projdirs. Cette option doit être placée avant les valeurs projdirs.
-u -u, --update
Installer ou mettre à jour les fichiers de profil des projets spécifiés: Installer ou mettre à jour les fichiers de profil des projets spécifiés:
Les fichiers ~/.profile, ~/.bash_profile et ~/.bashrc sont vérifiés et Les fichiers ~/.profile, ~/.bash_profile et ~/.bashrc sont vérifiés et
corriger automatiquement pour inclure les fichiers de nutools. corriger automatiquement pour inclure les fichiers de nutools.
@ -26,12 +26,23 @@ OPTIONS
Les projets spécifiés *doivent* être configurés avec uinst -C, et Les projets spécifiés *doivent* être configurés avec uinst -C, et
définir la valeur install_profiles=true dans leur fichier .udir définir la valeur install_profiles=true dans leur fichier .udir
Si aucun projet n'est spécifié, prendre les fichiers de profil de Si aucun projet n'est spécifié, prendre les fichiers de profil de
nutools." nutools.
-l, --local-profiles
Avec l'option -u, installer les profils locaux comme tels. Pour les
fichiers de profil qui sont indiqués comme non partagés, les copier dans
des répertoires spécifiques de la forme {profile,bashrc}.HOSTNAME.d et
default.HOSTNAME
-s, --shared-profiles
Installer les profils locaux comme des profils partagés. C'est l'option
par défaut."
} }
local_profiles="$UTOOLS_LOCAL_PROFILES"
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-u update \ -u,--update update=1 \
-l,--local-profiles local_profiles=1 \
-s,--shared-profiles local_profiles= \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
if [[ "$1" == HOME=* ]]; then if [[ "$1" == HOME=* ]]; then
@ -40,7 +51,7 @@ if [[ "$1" == HOME=* ]]; then
shift shift
fi fi
uenv_set_destdirs uenv_set_destdirs ${local_profiles:+--local-profiles}
if [ ! -d "$profiledestdir" -o ! -d "$bashrcdestdir" -o ! -d "$defaultdestdir" ]; then if [ ! -d "$profiledestdir" -o ! -d "$bashrcdestdir" -o ! -d "$defaultdestdir" ]; then
# forcer la maj si un des répertoires ~/etc/{profile.d,bashrc.d,default} # forcer la maj si un des répertoires ~/etc/{profile.d,bashrc.d,default}