source: BLFS/gen_pkg_book.sh@ d66cbc2

experimental
Last change on this file since d66cbc2 was 740b8c0, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Added a very basic configuration validation.

  • Property mode set to 100755
File size: 4.4 KB
Line 
1#!/bin/bash
2#
3# $Id$
4#
5# Read and parse the configuration parameters..
6#
7set -e
8
9declare -r ConfigFile="configuration"
10declare TARGET
11declare DEP_LEVEL
12declare SUDO
13declare PKGXML
14declare BLFS_XML
15declare VERBOSITY=1
16
17#--------------------------#
18parse_configuration() { #
19#--------------------------#
20 local cntr
21 local optTARGET
22
23 while [ 0 ]; do
24 read || break 1
25
26 # Garbage collection
27 case ${REPLY} in
28 \#* | '') continue ;;
29 esac
30
31 case "${REPLY}" in
32 CONFIG_ALSA=* | \
33 CONFIG_GNOME-CORE=* | \
34 CONFIG_GNOME-FULL=* | \
35 CONFIG_KDE-CORE=* | \
36 CONFIG_KDE-FULL=* | \
37 CONFIG_KDE-KOFFICE=* | \
38 CONFIG_XORG7=* ) REPLY=${REPLY%=*} # Strip the trailing '=y' test.. unecessary
39 echo -n "${REPLY}"
40 if [[ $((++cntr)) > 1 ]]; then
41 echo " <<-- ERROR:: SELECT ONLY 1 PACKAGE AT A TIME, META-PACKAGE NOT SELECTED"
42 else
43 echo ""
44 optTARGET=$(echo $REPLY | cut -d "_" -f2 | tr [A-Z] [a-z])
45 fi
46 continue ;;
47
48 # Create global variables for these parameters.
49 optDependency=* | \
50 PRINT_SERVER=* | \
51 MAIL_SERVER=* | \
52 GHOSTSCRIPT=* | \
53 KBR5=* | \
54 X11=* | \
55 SUDO=* ) eval ${REPLY} # Define/set a global variable..
56 continue ;;
57 esac
58
59 if [[ "${REPLY}" =~ "^CONFIG_" ]]; then
60 echo -n "$REPLY"
61 if [[ $((++cntr)) > 1 ]]; then
62 echo " <<-- ERROR SELECT ONLY 1 PACKAGE AT A TIME, WILL NOT BUILD"
63 else
64 echo ""
65 optTARGET=$( echo $REPLY | sed -e 's@CONFIG_@@' -e 's@=y@@' )
66 fi
67 fi
68 done <$ConfigFile
69
70 if [[ $optTARGET = "" ]]; then
71 echo -e "\n>>> NO TARGET SELECTED.. applicaton terminated"
72 echo -e " Run <make> again and select a package to build\n"
73 exit 0
74 fi
75
76 TARGET=$optTARGET
77 DEP_LEVEL=$optDependency
78 SUDO=${SUDO:-n}
79}
80
81#--------------------------#
82validate_configuration() { #
83#--------------------------#
84 local -r dotSTR=".................."
85 local -r PARAM_LIST="TARGET DEP_LEVEL SUDO PRINT_SERVER MAIL_SERVER GHOSTSCRIPT KBR5 X11"
86 local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
87 local config_param
88
89 for config_param in ${PARAM_LIST}; do
90 echo -e "`eval echo $PARAM_VALS`"
91 done
92}
93
94#
95# Regenerate the META-package dependencies from the configuration file
96#
97#--------------------------#
98regenerate_deps() { #
99#--------------------------#
100
101 rm -f libs/*.dep-MOD
102 while [ 0 ]; do
103 read || break 1
104 case ${REPLY} in
105 \#* | '') continue ;;
106 esac
107
108 # Drop the "=y"
109 REPLY=${REPLY%=*}
110 if [[ "${REPLY}" =~ "^DEP_" ]]; then
111 META_PACKAGE=$(echo $REPLY | cut -d "_" -f2 | tr [A-Z] [a-z])
112 DEP_FNAME=$(echo $REPLY | cut -d "_" -f3)
113 echo "${DEP_FNAME}" >>libs/${META_PACKAGE}.dep-MOD
114 fi
115
116 done <$ConfigFile
117 #
118 # Replace to 'old' dependency file with a new one.
119 #
120 for dst in `ls ./libs/*.dep-MOD 2>/dev/null`; do
121 cp -vf $dst ${dst%-MOD}
122 done
123}
124
125#
126# Clean configuration file keeping only global default settings.
127# That prevent "trying to assign nonexistent symbol" messages
128# and assures that there is no TARGET selected from a previous run
129#
130#--------------------------#
131clean_configuration() { #
132#--------------------------#
133
134tail -n 30 configuration > configuration.tmp
135mv configuration.tmp configuration
136
137}
138
139#---------------------
140# Constants
141source libs/constants.inc
142[[ $? > 0 ]] && echo -e "\n\tERROR: constants.inc did not load..\n" && exit
143
144#---------------------
145# Dependencies module
146source libs/func_dependencies
147[[ $? > 0 ]] && echo -e "\n\tERROR: func_dependencies did not load..\n" && exit
148
149#---------------------
150# parser module
151source libs/func_parser
152[[ $? > 0 ]] && echo -e "\n\tERROR: func_parser did not load..\n" && exit
153
154
155#------- MAIN --------
156if [[ ! -f packages ]] ; then
157 echo -e "\tNo packages file has been found.\n"
158 echo -e "\tExecution aborted.\n"
159 exit 1
160fi
161
162
163parse_configuration
164validate_configuration
165echo "${SD_BORDER}${nl_}"
166echo -n "Are you happy with these settings? yes/no (no): "
167read ANSWER
168if [ x$ANSWER != "xyes" ] ; then
169 echo "${nl_}Rerun make and fix your settings.${nl_}"
170 exit 1
171fi
172echo "${nl_}${SD_BORDER}${nl_}"
173regenerate_deps
174generate_dependency_tree
175generate_TARGET_xml
176generate_target_book
177create_build_scripts "${SUDO}"
178clean_configuration
Note: See TracBrowser for help on using the repository browser.