source: jhalfs@ fe30c61

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since fe30c61 was fe30c61, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Splitted common-functions.

  • Property mode set to 100755
File size: 14.0 KB
Line 
1#!/bin/bash
2# $Id$
3set -e
4
5# VT100 colors
6declare -r BLACK=$'\e[1;30m'
7declare -r DK_GRAY=$'\e[0;30m'
8
9declare -r RED=$'\e[31m'
10declare -r GREEN=$'\e[32m'
11declare -r YELLOW=$'\e[33m'
12declare -r BLUE=$'\e[34m'
13declare -r MAGENTA=$'\e[35m'
14declare -r CYAN=$'\e[36m'
15declare -r WHITE=$'\e[37m'
16
17declare -r OFF=$'\e[0m'
18declare -r BOLD=$'\e[1m'
19declare -r REVERSE=$'\e[7m'
20declare -r HIDDEN=$'\e[8m'
21
22declare -r tab_=$'\t'
23declare -r nl_=$'\n'
24
25declare -r DD_BORDER="${BOLD}==============================================================================${OFF}"
26declare -r SD_BORDER="${BOLD}------------------------------------------------------------------------------${OFF}"
27declare -r STAR_BORDER="${BOLD}******************************************************************************${OFF}"
28
29# bold yellow > < pair
30declare -r R_arrow=$'\e[1;33m>\e[0m'
31declare -r L_arrow=$'\e[1;33m<\e[0m'
32
33
34#>>>>>>>>>>>>>>>ERROR TRAPPING >>>>>>>>>>>>>>>>>>>>
35#-----------------------#
36simple_error() { # Basic error trap.... JUST DIE
37#-----------------------#
38 # If +e then disable text output
39 if [[ "$-" =~ e ]]; then
40 echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2
41 fi
42}
43
44see_ya() {
45 echo -e "\n${L_arrow}${BOLD}jhalfs-trunk${R_arrow} exit${OFF}\n"
46}
47##### Simple error TRAPS
48# ctrl-c SIGINT
49# ctrl-y
50# ctrl-z SIGTSTP
51# SIGHUP 1 HANGUP
52# SIGINT 2 INTRERRUPT FROM KEYBOARD Ctrl-C
53# SIGQUIT 3
54# SIGKILL 9 KILL
55# SIGTERM 15 TERMINATION
56# SIGSTOP 17,18,23 STOP THE PROCESS
57#####
58set -e
59trap see_ya 0
60trap simple_error ERR
61trap 'echo -e "\n\n${RED}INTERRUPT${OFF} trapped\n" && exit 2' 1 2 3 15 17 18 23
62#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
64version="
65${BOLD} \"jhalfs-trunk\"${OFF} builder tool (development) \$Rev$
66 \$Date$
67
68 Written by George Boudreau and Manuel Canales Esparcia,
69 plus several contributions.
70
71 Based on an idea from Jeremy Huntwork
72
73 This set of files are published under the
74 ${BOLD}Gnu General Public License, Version 2.${OFF}
75"
76
77case $1 in
78 -v ) echo "$version" && exit 1 ;;
79 run ) : ;;
80 * )
81 echo "${nl_}${tab_}${BOLD}${RED}This script cannot be called directly: EXITING ${OFF}${nl_}"
82 exit 1
83 ;;
84esac
85
86VERBOSITY=1
87
88[[ $VERBOSITY > 0 ]] && echo -n "Loading config params from <configuration>..."
89source configuration
90[[ $? > 0 ]] && echo "file:configuration did not load.." && exit 1
91[[ $VERBOSITY > 0 ]] && echo "OK"
92
93# These are boolean vars generated from Config.in.
94# ISSUE: If a boolean parameter is not set <true> that
95# variable is not defined by the menu app. This can
96# cause a headache if you are not careful.
97# The following parameters MUST be created and have a
98# default value.
99RUNMAKE=${RUNMAKE:-n}
100GETPKG=${GETPKG:-n}
101GETKERNEL=${GETKERNEL:-n}
102COMPARE=${COMPARE:-n}
103RUN_FARCE=${RUN_FARCE:-n}
104RUN_ICA=${RUN_ICA:-n}
105BOMB_TEST=${BOMB_TEST:-n}
106STRIP=${STRIP:=n}
107REPORT=${REPORT:=n}
108VIMLANG=${VIMLANG:-n}
109GRSECURITY_HOST=${GRSECURITY_HOST:-n}
110CUSTOM_TOOLS=${CUSTOM_TOOLS:-n}
111REBUILD_MAKEFILE=${REBUILD_MAKEFILE:-n}
112
113# Book surces envars
114BRANCH_ID=${BRANCH_ID:=development}
115
116case $BRANCH_ID in
117 development )
118 case $PROGNAME in
119 clfs2 ) TREE=branches/clfs-2.0/BOOK ;;
120 clfs3 ) TREE=branches/clfs-3.0/BOOK ;;
121 *) TREE=trunk/BOOK ;;
122 esac
123 LFSVRS=development
124 ;;
125 *EDIT* ) echo " You forgot to set the branch or stable book version."
126 echo " Please rerun make and fix the configuration."
127 exit 2 ;;
128 branch-* )
129 LFSVRS=${BRANCH_ID}
130 TREE=branches/${BRANCH_ID#branch-}/BOOK
131 ;;
132 * )
133 case $PROGNAME in
134 lfs | hlfs )
135 LFSVRS=${BRANCH_ID}
136 TREE=tags/${BRANCH_ID}/BOOK
137 ;;
138 clfs | clfs2 | clfs3)
139 LFSVRS=${BRANCH_ID}
140 TREE=tags/${BRANCH_ID}
141 ;;
142 esac
143 ;;
144esac
145
146# Set the document location...
147BOOK=${BOOK:=$PROGNAME-$LFSVRS}
148
149# blfs-tool envars
150BLFS_TOOL=${BLFS_TOOL:-n}
151if [[ "${BLFS_TOOL}" = "y" ]] ; then
152 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
153 case $BLFS_BRANCH_ID in
154 development ) BLFS_TREE=trunk/BOOK ;;
155 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
156 echo " Please rerun make and fix the configuration."
157 exit 2 ;;
158 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
159 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
160 esac
161 # Dependencies envars, to can update it more easy.
162 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
163 # libxml2
164 LIBXML_PKG="libxml2-2.6.26.tar.gz"
165 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
166 LIBXML_MD5="2d8d3805041edab967368b497642f981"
167 # libxslt
168 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
169 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
170 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
171 # tidy
172 TIDY_PKG="tidy_src_051026.tgz"
173 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
174 TIDY_MD5="1e39fafd6808978871346658c8da1454"
175 # tidy patch
176 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
177 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
178 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
179 # tidy docs
180 TIDY_DOCS="tidy_docs_051020.tgz"
181 TIDY_DOCS_URL="http://tidy.sourceforge.net/docs/${TIDY_DOCS}"
182 TIDY_DOCS_MD5="86de2f198e57399c063d2567b2a25628"
183 # unzip
184 UNZIP_PKG="unzip552.tar.gz"
185 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
186 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
187 # DocBook XML DTD
188 DBXML_PKG="docbook-xml-4.4.zip"
189 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
190 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
191 # DocBook XSL
192 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
193 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
194 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
195 # Links
196 LINKS_PKG="links-2.1pre21.tar.bz2"
197 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
198 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
199 # sudo
200 SUDO_PKG="sudo-1.6.8p12.tar.gz"
201 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
202 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
203 # sudo envar fix patch
204 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
205 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
206 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
207 # wget
208 WGET_PKG="wget-1.10.2.tar.gz"
209 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
210 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
211 # Subversion
212 SVN_PKG="subversion-1.3.1.tar.bz2"
213 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
214 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
215 # GPM
216 GPM_PKG="gpm-1.20.1.tar.bz2"
217 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
218 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
219 # GPM segfaul patch
220 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
221 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
222 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
223 # GPM silent patch
224 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
225 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
226 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
227fi
228
229#--- Envars not sourced from configuration
230case $PROGNAME in
231 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
232 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
233esac
234declare -r LOG=000-masterscript.log
235 # Needed to can fetch BLFS book sources when building CLFS
236declare -r SVN_2="svn://svn.linuxfromscratch.org"
237
238# Set true internal variables
239COMMON_DIR="common"
240PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
241MODULE=$PACKAGE_DIR/master.sh
242
243
244[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
245source $COMMON_DIR/common-functions
246[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
247[[ $VERBOSITY > 0 ]] && echo "OK"
248[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
249source $MODULE
250[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
251[[ $VERBOSITY > 0 ]] && echo "OK"
252#
253[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
254
255
256#*******************************************************************#
257[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
258source $COMMON_DIR/libs/func_check_version.sh
259[[ $? > 0 ]] && echo " function module did not load.." && exit 2
260[[ $VERBOSITY > 0 ]] && echo "OK"
261
262[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
263source $COMMON_DIR/libs/func_validate_configs.sh
264[[ $? > 0 ]] && echo " function module did not load.." && exit 2
265[[ $VERBOSITY > 0 ]] && echo "OK"
266
267[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_custom_pkgs>..."
268source $COMMON_DIR/libs/func_custom_pkgs
269[[ $? > 0 ]] && echo " function module did not load.." && exit 2
270[[ $VERBOSITY > 0 ]] && echo "OK"
271
272
273[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
274
275
276###################################
277### MAIN ###
278###################################
279
280# Check for build prereequisites.
281echo
282 check_prerequisites
283echo "${SD_BORDER}${nl_}"
284
285validate_config
286echo "${SD_BORDER}${nl_}"
287echo -n "Are you happy with these settings? yes/no (no): "
288read ANSWER
289if [ x$ANSWER != "xyes" ] ; then
290 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
291 exit 1
292fi
293echo "${nl_}${SD_BORDER}${nl_}"
294
295# Load additional modules or configuration files based on global settings
296# compare module
297if [[ "$COMPARE" = "y" ]]; then
298 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
299 source $COMMON_DIR/libs/func_compare.sh
300 [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit
301 [[ $VERBOSITY > 0 ]] && echo "OK"
302fi
303#
304# optimize module
305if [[ "$OPTIMIZE" != "0" ]]; then
306 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
307 source optimize/optimize_functions
308 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
309 [[ $VERBOSITY > 0 ]] && echo "OK"
310 #
311 # optimize configurations
312 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
313 source optimize/opt_config
314 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
315 [[ $VERBOSITY > 0 ]] && echo "OK"
316 # Validate optimize settings, if required
317 validate_opt_settings
318fi
319#
320
321if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
322
323 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
324 # and notify the user about that.
325 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
326 eval "$no_empty_builddir"
327 fi
328
329 # If requested, clean the build directory
330 clean_builddir
331
332 if [[ ! -d $JHALFSDIR ]]; then
333 mkdir -p $JHALFSDIR
334 fi
335 #
336 # Create $BUILDDIR/sources even though it could be created by get_sources()
337 if [[ ! -d $BUILDDIR/sources ]]; then
338 mkdir -p $BUILDDIR/sources
339 fi
340 #
341 # Create the log directory
342 if [[ ! -d $LOGDIR ]]; then
343 mkdir $LOGDIR
344 fi
345 >$LOGDIR/$LOG
346 #
347 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
348 #
349 cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
350 #
351 [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
352 #
353 if [[ "$COMPARE" = "y" ]]; then
354 mkdir -p $JHALFSDIR/extras
355 cp extras/* $JHALFSDIR/extras
356 fi
357 #
358 if [[ -n "$FILES" ]]; then
359 # pushd/popd necessary to deal with multiple files
360 pushd $PACKAGE_DIR 1> /dev/null
361 cp $FILES $JHALFSDIR/
362 popd 1> /dev/null
363 fi
364 #
365 if [[ "${PROGNAME}" = "lfs" ]]; then
366 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
367 echo "Copying custom tool scripts to $JHALFSDIR"
368 mkdir -p $JHALFSDIR/custom-commands/config
369 mkdir -p $JHALFSDIR/custom-commands/scripts
370 cp -Rf custom/* $JHALFSDIR/custom-commands
371 fi
372 fi
373
374 #
375 if [[ "$REPORT" = "y" ]]; then
376 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
377 # After being sure that all looks sane, dump the settings to a file
378 # This file will be used to create the REPORT header
379 validate_config > $JHALFSDIR/jhalfs.config
380 fi
381 #
382 [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
383 #
384 cp $COMMON_DIR/packages.xsl $JHALFSDIR/
385 #
386 sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
387 export XSL=$JHALFSDIR/${XSL}
388
389 # Install blfs-tool, if requested.
390 if [[ "${BLFS_TOOL}" = "y" ]] ; then
391 # Install the files
392 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
393 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
394 cp -r menu ${BUILDDIR}${BLFS_ROOT}
395 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
396 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
397 # Clean-up
398 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
399 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
400 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
401 # Set some harcoded envars to their proper values
402 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
403 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
404 # Copy the dependencies build scripts
405 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
406 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
407 fi
408
409 get_book
410 echo "${SD_BORDER}${nl_}"
411
412 # Get the BLFS book, if requested.
413 if [[ "${BLFS_TOOL}" = "y" ]] ; then
414 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
415 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
416 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
417 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
418 else
419 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
420 svn up >>$LOGDIR/$LOG 2>&1
421 popd 1> /dev/null
422 fi
423 echo -ne "done\n"
424 echo "${SD_BORDER}${nl_}"
425 fi
426
427fi
428
429# When regeneration the Makefile we need to know also the canonical book version
430if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
431 case $PROGNAME in
432 clfs | clfs2 | clfs3 )
433 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
434 *)
435 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
436 esac
437fi
438
439build_Makefile
440if [[ "${PROGNAME}" = "lfs" ]]; then
441 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
442 add_CustomTools
443 fi
444fi
445echo "${SD_BORDER}${nl_}"
446
447run_make
Note: See TracBrowser for help on using the repository browser.