source: BLFS/gen_pkg_book.sh@ d236bbd

ablfs
Last change on this file since d236bbd was 46d25bc, checked in by Pierre Labastie <pierre@…>, 13 years ago

Fix a missing \n in gen_pkg_book.sh

  • Property mode set to 100755
File size: 4.6 KB
Line 
1#!/bin/bash
2#
3# $Id$
4#
5# Read and parse the configuration parameters..
6#
7set -e
8
9TOPDIR=$1
10if test -z "$TOPDIR"; then
11 TOPDIR=$(pwd)
12fi
13BLFS_FULL=$2
14if test -z "$BLFS_FULL"; then
15 BLFS_FULL=${TOPDIR}/blfs-xml/tmp/blfs-full.xml
16fi
17declare -r ConfigFile="${TOPDIR}/configuration"
18declare DepDir="${TOPDIR}/dependencies"
19declare LibDir="${TOPDIR}/libs"
20declare PackFile="${TOPDIR}/packages.xml"
21declare BookXml="${TOPDIR}/book.xml"
22declare MakeBook="${TOPDIR}/xsl/make_book.xsl"
23declare MakeScripts="${TOPDIR}/xsl/scripts.xsl"
24declare BookHtml="${TOPDIR}/book-html"
25declare BLFS_XML="${TOPDIR}/blfs-xml"
26declare -a TARGET
27declare DEP_LEVEL
28declare SUDO
29
30#--------------------------#
31parse_configuration() { #
32#--------------------------#
33 local -i cntr=0
34 local -a optTARGET
35
36 while read; do
37
38 # Garbage collection
39 case ${REPLY} in
40 \#* | '') continue ;;
41 esac
42
43 case "${REPLY}" in
44 # Create global variables for these parameters.
45 optDependency=* | \
46 MAIL_SERVER=* | \
47 SUDO=* ) eval ${REPLY} # Define/set a global variable..
48 continue ;;
49 esac
50
51 if [[ "${REPLY}" =~ ^CONFIG_ ]]; then
52 echo "$REPLY"
53 optTARGET[$((cntr++))]=$( echo $REPLY | sed -e 's@CONFIG_@@' -e 's@=y@@' )
54 fi
55 done < $ConfigFile
56
57 if (( $cntr == 0 )); then
58 echo -e "\n>>> NO TARGET SELECTED.. application terminated"
59 echo -e " Run <make> again and select (a) package(s) to build\n"
60 exit 0
61 fi
62 TARGET=(${optTARGET[*]})
63 DEP_LEVEL=$optDependency
64 SUDO=${SUDO:-n}
65}
66
67#--------------------------#
68validate_configuration() { #
69#--------------------------#
70 local -r dotSTR=".................."
71 local -r PARAM_LIST="DEP_LEVEL SUDO MAIL_SERVER"
72 local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
73 local config_param
74 local -i index
75
76 for config_param in ${PARAM_LIST}; do
77 echo -e "`eval echo $PARAM_VALS`"
78 done
79 for (( index=0 ; index < ${#TARGET[*]} ; index ++ )); do
80 echo -e "TARGET${index}${dotSTR:6} ${L_arrow}${BOLD}${TARGET[${index}]}${OFF}${R_arrow}"
81 done
82}
83
84#
85# Generates the root of the dependency tree
86#
87#--------------------------#
88generate_deps() { #
89#--------------------------#
90
91 local -i index
92 local DepDir=$1
93 rm -f $DepDir/*.dep
94 echo 1 > $DepDir/root.dep
95 for (( index=0 ; index < ${#TARGET[*]} ; index ++ )); do
96 echo ${TARGET[${index}]} >> $DepDir/root.dep
97 done
98}
99
100#
101# Clean configuration file keeping only global default settings.
102# That prevent "trying to assign nonexistent symbol" messages
103# and assures that there is no TARGET selected from a previous run
104#
105#--------------------------#
106clean_configuration() { #
107#--------------------------#
108
109tail -n 15 ${ConfigFile} > ${ConfigFile}.tmp
110mv ${ConfigFile}.tmp ${ConfigFile}
111
112}
113
114#---------------------
115# Constants
116source ${LibDir}/constants.inc
117[[ $? > 0 ]] && echo -e "\n\tERROR: constants.inc did not load..\n" && exit
118
119#---------------------
120# Dependencies module
121source ${LibDir}/func_dependencies
122[[ $? > 0 ]] && echo -e "\n\tERROR: func_dependencies did not load..\n" && exit
123
124#------- MAIN --------
125if [[ ! -f ${PackFile} ]] ; then
126 echo -e "\tNo packages file has been found.\n"
127 echo -e "\tExecution aborted.\n"
128 exit 1
129fi
130
131
132parse_configuration
133validate_configuration
134echo "${SD_BORDER}${nl_}"
135echo -n "Are you happy with these settings? yes/no (no): "
136read ANSWER
137if [ x$ANSWER != "xyes" ] ; then
138 echo "${nl_}Rerun make and fix your settings.${nl_}"
139 exit 1
140fi
141echo "${nl_}${SD_BORDER}${nl_}"
142
143rm -rf $DepDir
144mkdir $DepDir
145generate_deps $DepDir
146pushd $DepDir > /dev/null
147set +e
148generate_dependency_tree root.dep
149echo
150LIST="$(tree_browse root.dep)"
151set -e
152popd > /dev/null
153rm -f ${BookXml}
154echo Making XML book
155xsltproc --stringparam list "$LIST" \
156 -o ${BookXml} \
157 ${MakeBook} \
158 $BLFS_FULL
159echo "making HTML book (may take some time...)"
160xsltproc -o ${BookHtml}/ \
161 -stringparam chunk.quietly 1 \
162 ${BLFS_XML}/stylesheets/blfs-chunked.xsl \
163 ${BookXml}
164if [ ! -d ${BookHtml}/stylesheets ]
165 then mkdir -p ${BookHtml}/stylesheets
166 cp ${BLFS_XML}/stylesheets/lfs-xsl/*.css ${BookHtml}/stylesheets
167fi
168if [ ! -d ${BookHtml}/images ]
169 then mkdir -p ${BookHtml}/images
170 cp ${BLFS_XML}/images/*.png ${BookHtml}/images
171fi
172for ht in ${BookHtml}/*.html
173 do sed -i 's@../stylesheets@stylesheets@' $ht
174 sed -i 's@../images@images@' $ht
175done
176echo -en "\n\tGenerating the build scripts ...\n"
177rm -rf scripts
178xsltproc --xinclude --nonet \
179 --stringparam sudo $SUDO \
180 -o ./scripts/ ${MakeScripts} \
181 ${BookXml}
182# Make the scripts executable.
183chmod -R +x scripts
184echo -e "done\n"
185
186#clean_configuration
Note: See TracBrowser for help on using the repository browser.