Skip to content
Snippets Groups Projects
Commit 629db2e2 authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

Provide a tree by default and handle it name at compilation time with the...

Provide a tree by default and handle it name at compilation time with the --with-default-tree-name flag
parent f9fd498e
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,7 @@ Fine tuning of the installation directories: ...@@ -33,6 +33,7 @@ Fine tuning of the installation directories:
--max-path-size=KB default maximum size of a path[1024KB] --max-path-size=KB default maximum size of a path[1024KB]
--max-service-size=KB default maximum size of a frontend service name[256KB] --max-service-size=KB default maximum size of a frontend service name[256KB]
--max-tree-name-size=KB default maximum size of a tree name[256KB] --max-tree-name-size=KB default maximum size of a tree name[256KB]
--with-default-tree-name=NAME name of the default tree[global]
--with-skeleton=DIR skeleton files directory installation [SYSDIR/66] --with-skeleton=DIR skeleton files directory installation [SYSDIR/66]
--with-system-log=DIR system service log directory [/var/log/66] --with-system-log=DIR system service log directory [/var/log/66]
--with-s6-log-user=USER user for running s6-log program [root] --with-s6-log-user=USER user for running s6-log program [root]
...@@ -199,6 +200,7 @@ max_service='500' ...@@ -199,6 +200,7 @@ max_service='500'
max_path='1024' max_path='1024'
max_service_size='256' max_service_size='256'
max_treename='256' max_treename='256'
default_treename='global'
skel='$sysconfdir/66' skel='$sysconfdir/66'
system_dir='/var/lib/66' system_dir='/var/lib/66'
system_log='/var/log/66' system_log='/var/log/66'
...@@ -254,6 +256,7 @@ for arg ; do ...@@ -254,6 +256,7 @@ for arg ; do
--max-path-size=*) max_path=${arg#*=} ;; --max-path-size=*) max_path=${arg#*=} ;;
--max-service-size=*) max_service_size=${arg#*=} ;; --max-service-size=*) max_service_size=${arg#*=} ;;
--max-tree-name-size=*) max_treename=${arg#*=} ;; --max-tree-name-size=*) max_treename=${arg#*=} ;;
--with-default-tree-name=*) default_treename=${arg#*=} ;;
--with-skeleton=*) skel=${arg#*=} ;; --with-skeleton=*) skel=${arg#*=} ;;
--with-system-dir=*) system_dir=${arg#*=} ;; --with-system-dir=*) system_dir=${arg#*=} ;;
--with-system-log=*) system_log=${arg#*=} ;; --with-system-log=*) system_log=${arg#*=} ;;
...@@ -392,6 +395,10 @@ if [ $max_treename -lt 2 ]; then ...@@ -392,6 +395,10 @@ if [ $max_treename -lt 2 ]; then
fail "$0: lower limit for --max-tree-name-size is 2" fail "$0: lower limit for --max-tree-name-size is 2"
fi fi
if [ ${#default_treename} -gt $max_treename ]; then
fail "$0: maximum length of --with-default-tree-name is $max_treename"
fi
for i in $skel $system_dir $system_log $service_system $module_system $script_system \ for i in $skel $system_dir $system_log $service_system $module_system $script_system \
$seed_system $service_adm $module_adm $service_admconf $seed_adm $user_dir $service_user \ $seed_system $service_adm $module_adm $service_admconf $seed_adm $user_dir $service_user \
$module_user $script_user $service_userconf $user_log $seed_user; do $module_user $script_user $service_userconf $user_log $seed_user; do
...@@ -564,6 +571,7 @@ max_service := $max_service ...@@ -564,6 +571,7 @@ max_service := $max_service
max_path := $max_path max_path := $max_path
max_service_size := $max_service_size max_service_size := $max_service_size
max_treename := $max_treename max_treename := $max_treename
default_treename := $default_treename
skel := $skel skel := $skel
system_dir := $system_dir system_dir := $system_dir
system_log := $system_log system_log := $system_log
...@@ -653,6 +661,7 @@ All rights reserved.*/ ...@@ -653,6 +661,7 @@ All rights reserved.*/
#define ${package_macro_name}_MAX_PATH $max_path #define ${package_macro_name}_MAX_PATH $max_path
#define ${package_macro_name}_MAX_SERVICE_NAME $max_service_size #define ${package_macro_name}_MAX_SERVICE_NAME $max_service_size
#define ${package_macro_name}_MAX_TREENAME $max_treename #define ${package_macro_name}_MAX_TREENAME $max_treename
#define ${package_macro_name}_DEFAULT_TREENAME "$default_treename"
#define ${package_macro_name}_SYSTEM_DIR "$system_dir/" #define ${package_macro_name}_SYSTEM_DIR "$system_dir/"
#define ${package_macro_name}_SKEL_DIR "$skel/" #define ${package_macro_name}_SKEL_DIR "$skel/"
#define ${package_macro_name}_LOGGER_SYSDIR "$system_log/" #define ${package_macro_name}_LOGGER_SYSDIR "$system_log/"
......
...@@ -83,6 +83,7 @@ int sanitize_system(ssexec_t *info) ...@@ -83,6 +83,7 @@ int sanitize_system(ssexec_t *info)
/** set cleanup */ /** set cleanup */
cleantree = info->tree.s ; cleantree = info->tree.s ;
int r ;
size_t baselen = info->base.len ; size_t baselen = info->base.len ;
uid_t log_uid ; uid_t log_uid ;
gid_t log_gid ; gid_t log_gid ;
...@@ -165,5 +166,30 @@ int sanitize_system(ssexec_t *info) ...@@ -165,5 +166,30 @@ int sanitize_system(ssexec_t *info)
auto_strings(dst + baselen, SS_TREE_CURRENT) ; auto_strings(dst + baselen, SS_TREE_CURRENT) ;
auto_check(dst) ; auto_check(dst) ;
/** create the default tree if it doesn't exist yet */
r = tree_isvalid(info->base.s, SS_DEFAULT_TREENAME) ;
if (r < 0)
log_dieu(LOG_EXIT_SYS, "check validity of tree: ", SS_DEFAULT_TREENAME) ;
if (!r) {
int nargc = 4 ;
char const *newargv[nargc] ;
unsigned int m = 0 ;
newargv[m++] = "tree" ;
newargv[m++] = "-E" ;
newargv[m++] = SS_DEFAULT_TREENAME ;
newargv[m++] = 0 ;
char *prog = PROG ;
PROG = "tree" ;
if (ssexec_tree(nargc, newargv, info))
log_dieu(LOG_EXIT_SYS, "create tree: ", SS_DEFAULT_TREENAME) ;
PROG = prog ;
}
return 1 ; return 1 ;
} }
...@@ -39,9 +39,11 @@ int tree_sethome(ssexec_t *info) ...@@ -39,9 +39,11 @@ int tree_sethome(ssexec_t *info)
if (!info->treename.len) { if (!info->treename.len) {
if (!tree_find_current(&info->tree, base)) if (!tree_find_current(&info->tree, base))
return -3 ; /** no current tree found. Use the default one. */
if (!auto_stra(&info->tree, base, SS_SYSTEM, "/", SS_DEFAULT_TREENAME))
return 0 ;
if (!tree_setname(&info->treename,info->tree.s)) if (!tree_setname(&info->treename, info->tree.s))
return -2 ; return -2 ;
} else { } else {
...@@ -56,10 +58,7 @@ int tree_sethome(ssexec_t *info) ...@@ -56,10 +58,7 @@ int tree_sethome(ssexec_t *info)
} else if (!r) { } else if (!r) {
/** Tree doesn't exist yet. /** Tree doesn't exist yet.
* Let see if we have a seed/<name> to create it, * Let see if we have a seed file to create it */
* but only if we come from the 66-enable tool. */
//if (strcmp(info->prog, "66-enable"))
// return 0 ;
if (!tree_seed_isvalid(info->treename.s)) if (!tree_seed_isvalid(info->treename.s))
log_warnu_return(LOG_EXIT_ZERO,"find a seed file to create the tree: ", info->treename.s) ; log_warnu_return(LOG_EXIT_ZERO,"find a seed file to create the tree: ", info->treename.s) ;
...@@ -68,12 +67,15 @@ int tree_sethome(ssexec_t *info) ...@@ -68,12 +67,15 @@ int tree_sethome(ssexec_t *info)
char const *newargv[nargc] ; char const *newargv[nargc] ;
unsigned int m = 0 ; unsigned int m = 0 ;
newargv[m++] = "66-tree" ; newargv[m++] = "66 tree" ;
newargv[m++] = info->treename.s ; newargv[m++] = info->treename.s ;
newargv[m++] = 0 ; newargv[m++] = 0 ;
char *prog = PROG ;
PROG = "tree" ;
if (ssexec_tree(nargc, newargv, info)) if (ssexec_tree(nargc, newargv, info))
log_warnu_return(LOG_EXIT_ZERO,"create tree: ",info->treename.s) ; log_warnu_return(LOG_EXIT_ZERO,"create tree: ",info->treename.s) ;
PROG = prog ;
} }
/** The tree_sethome() function can be recursively called. The info->tree may not be empty. /** The tree_sethome() function can be recursively called. The info->tree may not be empty.
* Be sure to clean up before using it. */ * Be sure to clean up before using it. */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment