source: common/libs/func_validate_configs.sh@ b339c94

2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since b339c94 was b339c94, checked in by Pierre Labastie <pierre@…>, 12 years ago

Add a choice between installing the full set of supported locales
and installing just the minimal set for tests, after glibc build.
If the second option is chosen, the locale specified in LANG is also
installed, if not in the minimal set.

  • Property mode set to 100644
File size: 9.6 KB
Line 
1# $Id$
2
3declare -r dotSTR=".................."
4
5
6#----------------------------#
7validate_config() { # Are the config values sane (within reason)
8#----------------------------#
9: <<inline_doc
10 Validates the configuration parameters. The global var PROGNAME selects the
11 parameter list.
12
13 input vars: none
14 externals: color constants
15 PROGNAME (lfs,hlfs,clfs,clfs2,clfs3,blfs)
16 modifies: none
17 returns: nothing
18 on error: write text to console and dies
19 on success: write text to console and returns
20inline_doc
21
22 # Common settings by Config.in sections and books family
23 local -r BOOK_common="BOOK CUSTOM_TOOLS"
24 local -r BOOK_clfsX="ARCH TARGET"
25 local -r GENERAL_common="LUSER LGROUP LHOME BUILDDIR CLEAN GETPKG SRC_ARCHIVE \
26 SERVER RETRYSRCDOWNLOAD RETRYDOWNLOADCNT DOWNLOADTIMEOUT \
27 GETKERNEL RUNMAKE"
28 local -r BUILD_chroot="TEST BOMB_TEST STRIP"
29 local -r BUILD_common="FSTAB CONFIG TIMEZONE PAGE LANG INSTALL_LOG"
30 local -r ADVANCED_chroot="COMPARE RUN_ICA RUN_FARCE ITERATIONS OPTIMIZE"
31 local -r ADVANCED_common="REPORT REBUILD_MAKEFILE"
32
33 # BOOK Settings by book
34 local -r LFS_book="$BOOK_common BLFS_TOOL"
35 #local -r HLFS_added="SET_SSP SET_ASLR SET_PAX SET_HARDENED_TMP SET_WARNINGS \
36 # SET_MISC SET_BLOWFISH"
37 local -r HLFS_added=""
38 local -r HLFS_book="$BOOK_common BLFS_TOOL MODEL KERNEL GRSECURITY_HOST $HLFS_added"
39 local -r CLFS_book="$BOOK_common BLFS_TOOL METHOD $BOOK_clfsX TARGET32 BOOT_CONFIG"
40 local -r CLFS2_book="$BOOK_common BLFS_TOOL $BOOK_clfsX"
41 local -r CLFS3_book="$BOOK_common $BOOK_clfsX PLATFORM MIPS_LEVEL"
42
43 # Build Settings by book
44 local -r LFS_build="$BUILD_chroot VIMLANG $BUILD_common PKGMNGT FULL_LOCALE"
45 local -r HLFS_build="$BUILD_chroot $BUILD_common"
46 local -r CLFS_build="$BUILD_chroot VIMLANG $BUILD_common"
47 local -r CLFS2_build="STRIP VIMLANG $BUILD_common"
48 local -r CLFS3_build=" $BUILD_common"
49
50 # Full list of books settings
51 local -r lfs_PARAM_LIST="$LFS_book $GENERAL_common $LFS_build $ADVANCED_chroot $ADVANCED_common"
52 local -r hlfs_PARAM_LIST="$HLFS_book $GENERAL_common $HLFS_build $ADVANCED_chroot $ADVANCED_common"
53 local -r clfs_PARAM_LIST="$CLFS_book $GENERAL_common $CLFS_build $ADVANCED_chroot $ADVANCED_common"
54 local -r clfs2_PARAM_LIST="$CLFS2_book $GENERAL_common $CLFS2_build $ADVANCED_common"
55 local -r clfs3_PARAM_LIST="$CLFS3_book $GENERAL_common $CLFS3_build $ADVANCED_common"
56 local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR"
57
58 # Additional variables (add DEP_DBXSL when required again)
59 local -r blfs_tool_PARAM_LIST="BLFS_BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR \
60 DEP_LIBXML DEP_LIBXSLT DEP_TIDY DEP_UNZIP \
61 DEP_DBXML DEP_LYNX DEP_SUDO DEP_WGET \
62 DEP_SVN DEP_GPM"
63 local -r custom_tool_PARAM_LIST="TRACKING_DIR"
64
65 # Internal variables
66 local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,'
67 local -r ERROR_MSG_pt2='rerun make and fix your configuration settings${OFF}'
68 local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
69
70 local PARAM_LIST=
71 local config_param
72 local validation_str
73 local save_param
74
75 write_error_and_die() {
76 echo -e "\n${DD_BORDER}"
77 echo -e "`eval echo ${ERROR_MSG_pt1}`" >&2
78 echo -e "`eval echo ${ERROR_MSG_pt2}`" >&2
79 echo -e "${DD_BORDER}\n"
80 exit 1
81 }
82
83 validate_file() {
84 # For parameters ending with a '+' failure causes a warning message only
85 echo -n "`eval echo $PARAM_VALS`"
86 while test $# -gt 0 ; do
87 case $1 in
88 # Failures caused program exit
89 "-z") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO file name given" && write_error_and_die ;;
90 "-e") [[ ! -e "${!config_param}" ]] && echo "${tab_}<-- file does not exist" && write_error_and_die ;;
91 "-s") [[ ! -s "${!config_param}" ]] && echo "${tab_}<-- file has zero bytes" && write_error_and_die ;;
92 "-r") [[ ! -r "${!config_param}" ]] && echo "${tab_}<-- no read permission " && write_error_and_die ;;
93 "-w") [[ ! -w "${!config_param}" ]] && echo "${tab_}<-- no write permission" && write_error_and_die ;;
94 "-x") [[ ! -x "${!config_param}" ]] && echo "${tab_}<-- file cannot be executed" && write_error_and_die ;;
95 # Warning messages only
96 "-z+") [[ -z "${!config_param}" ]] && echo && return ;;
97 esac
98 shift 1
99 done
100 echo
101 }
102
103 validate_dir() {
104 # For parameters ending with a '+' failure causes a warning message only
105 echo -n "`eval echo $PARAM_VALS`"
106 while test $# -gt 0 ; do
107 case $1 in
108 "-z") [[ -z "${!config_param}" ]] && echo "${tab_}NO directory name given" && write_error_and_die ;;
109 "-d") [[ ! -d "${!config_param}" ]] && echo "${tab_}This is NOT a directory" && write_error_and_die ;;
110 "-w") if [[ ! -w "${!config_param}" ]]; then
111 echo "${nl_}${DD_BORDER}"
112 echo "${tab_}${RED}You do not have ${L_arrow}write${R_arrow}${RED} access to the directory${OFF}"
113 echo "${tab_}${BOLD}${!config_param}${OFF}"
114 echo "${DD_BORDER}${nl_}"
115 exit 1
116 fi ;;
117 # Warnings only
118 "-w+") if [[ ! -w "${!config_param}" ]]; then
119 echo "${nl_}${DD_BORDER}"
120 echo "${tab_}WARNING-- You do not have ${L_arrow}write${R_arrow} access to the directory${OFF}"
121 echo "${tab_} -- ${BOLD}${!config_param}${OFF}"
122 echo "${DD_BORDER}"
123 fi ;;
124 "-z+") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO directory name given" && return
125 esac
126 shift 1
127 done
128 echo
129 }
130
131 set +e
132 PARAM_GROUP=${PROGNAME}_PARAM_LIST
133 for config_param in ${!PARAM_GROUP}; do
134 case $config_param in
135 # Envvars that depend on other settings to be displayed
136 GETKERNEL ) if [[ -z "$CONFIG" ]] && [[ -z "$BOOT_CONFIG" ]] ; then
137 [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`"
138 fi ;;
139 COMPARE) [[ ! "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
140 RUN_ICA) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
141 RUN_FARCE) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
142 ITERATIONS) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
143 BOMB_TEST) [[ ! "$TEST" = "0" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
144 TARGET32) [[ -n "${TARGET32}" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
145 MIPS_LEVEL) [[ "${ARCH}" = "mips" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
146 SERVER) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
147 RETRYSRCDOWNLOAD) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
148 RETRYDOWNLOADCNT) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
149 DOWNLOADTIMEOUT) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;;
150
151 # Envars that requires some validation
152 LUSER) echo -e "`eval echo $PARAM_VALS`"
153 [[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die
154 ;;
155 LGROUP) echo -e "`eval echo $PARAM_VALS`"
156 [[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die
157 ;;
158 # BOOK validation. Very ugly, need be fixed
159 BOOK) if [[ "${WORKING_COPY}" = "y" ]] ; then
160 validate_dir -z -d
161 else
162 echo -e "`eval echo $PARAM_VALS`"
163 fi
164 ;;
165 # Validate directories, testable states:
166 # fatal -z -d -w,
167 # warning -z+ -w+
168 SRC_ARCHIVE) [[ "$GETPKG" = "y" ]] && validate_dir -z+ -d -w+ ;;
169 # The build directory/partition MUST exist and be writable by the user
170 BUILDDIR) validate_dir -z -d -w
171 [[ "xx x/x" =~ x${!config_param}x ]] && write_error_and_die ;;
172 LHOME) validate_dir -z -d ;;
173
174 # Validate files, testable states:
175 # fatal -z -e -s -w -x -r,
176 # warning -z+
177 FSTAB) validate_file -z+ -e -s ;;
178 CONFIG) validate_file -z+ -e -s ;;
179 BOOT_CONFIG) [[ "${METHOD}" = "boot" ]] && validate_file -z -e -s ;;
180
181 # Treatment of LANG parameter
182 LANG ) # See it the locale value has been set
183 echo -n "`eval echo $PARAM_VALS`"
184 [[ -z "${!config_param}" ]] &&
185 echo " -- Variable $config_param cannot be empty!" &&
186 write_error_and_die
187 echo
188 ;;
189
190 # BLFS params.
191 BRANCH_ID | BLFS_ROOT | BLFS_XML ) echo "`eval echo $PARAM_VALS`" ;;
192 TRACKING_DIR ) validate_dir -z -d -w ;;
193
194 # Display non-validated envars found in ${PROGNAME}_PARAM_LIST
195 * ) echo -e "`eval echo $PARAM_VALS`" ;;
196
197 esac
198 done
199
200 if [[ "${BLFS_TOOL}" = "y" ]] ; then
201 echo "${nl_} ${BLUE}blfs-tool settings${OFF}"
202 for config_param in ${blfs_tool_PARAM_LIST}; do
203 echo -e "`eval echo $PARAM_VALS`"
204 done
205 fi
206
207 if [[ "${CUSTOM_TOOLS}" = "y" ]] && [[ "${BLFS_TOOL}" = "n" ]] ; then
208 for config_param in ${custom_tool_PARAM_LIST}; do
209 echo -e "`eval echo $PARAM_VALS`"
210 done
211 fi
212
213 set -e
214 echo "${nl_}***${BOLD}${GREEN} ${PARAM_GROUP%%_*T} config parameters look good${OFF} ***${nl_}"
215}
Note: See TracBrowser for help on using the repository browser.