source: jhalfs@ 16938b0

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

Updated blfs-tool dependencies.

  • Property mode set to 100755
File size: 13.8 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-sysroot/BOOK ;;
120 clfs3 ) TREE=branches/clfs-embedded/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-} ;;
159 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;;
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.27.tar.gz"
165 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
166 LIBXML_MD5="f5806f5059ef7bd4d3fcf36cf116d1ef"
167 # libxslt
168 LIBXSLT_PKG="libxslt-1.1.20.tar.gz"
169 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
170 LIBXSLT_MD5="4ea2dc22a23bf2aa570f868aa86357f8"
171 # tidy
172 TIDY_PKG="tidy-cvs_20070326.tar.bz2"
173 TIDY_URL="http://anduin.linuxfromscratch.org/files/BLFS/sources/${TIDY_PKG}"
174 TIDY_MD5="468bfaa5cf917a8ecbe7834c13a61376"
175 # unzip
176 UNZIP_PKG="unzip552.tar.gz"
177 UNZIP_URL="http://downloads.sourceforge.net/infozip/${UNZIP_PKG}"
178 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
179 # unzip security patch
180 UNZIP_PATCH="unzip-5.52-security_fix-1.patch"
181 UNZIP_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${UNZIP_PATCH}"
182 UNZIP_PATCH_MD5="00ebf64fdda2ad54ddfc619f85f328bb"
183 # DocBook XML DTD
184 DBXML_PKG="docbook-xml-4.5.zip"
185 DBXML_URL="http://www.docbook.org/xml/4.5/${DBXML_PKG}"
186 DBXML_MD5="03083e288e87a7e829e437358da7ef9e"
187 # DocBook XSL
188 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
189 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
190 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
191 # Links
192 LINKS_PKG="links-2.1pre23.tar.bz2"
193 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
194 LINKS_MD5="4a1fb575c133eee821b9a1f8e9220b40"
195 # sudo
196 SUDO_PKG="sudo-1.6.8p12.tar.gz"
197 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
198 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
199 # sudo envar fix patch
200 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
201 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
202 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
203 # wget
204 WGET_PKG="wget-1.10.2.tar.gz"
205 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
206 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
207 # Subversion
208 SVN_PKG="subversion-1.3.1.tar.bz2"
209 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
210 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
211 # GPM
212 GPM_PKG="gpm-1.20.1.tar.bz2"
213 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
214 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
215 # GPM segfaul patch
216 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
217 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
218 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
219 # GPM silent patch
220 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
221 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
222 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
223fi
224
225#--- Envars not sourced from configuration
226case $PROGNAME in
227 clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
228 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
229esac
230declare -r LOG=000-masterscript.log
231 # Needed to can fetch BLFS book sources when building CLFS
232declare -r SVN_2="svn://svn.linuxfromscratch.org"
233
234# Set true internal variables
235COMMON_DIR="common"
236PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
237MODULE=$PACKAGE_DIR/master.sh
238
239
240[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
241source $COMMON_DIR/common-functions
242[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
243[[ $VERBOSITY > 0 ]] && echo "OK"
244[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
245source $MODULE
246[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
247[[ $VERBOSITY > 0 ]] && echo "OK"
248#
249[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
250
251
252#*******************************************************************#
253[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
254source $COMMON_DIR/libs/func_check_version.sh
255[[ $? > 0 ]] && echo " function module did not load.." && exit 2
256[[ $VERBOSITY > 0 ]] && echo "OK"
257
258[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
259source $COMMON_DIR/libs/func_validate_configs.sh
260[[ $? > 0 ]] && echo " function module did not load.." && exit 2
261[[ $VERBOSITY > 0 ]] && echo "OK"
262
263[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_custom_pkgs>..."
264source $COMMON_DIR/libs/func_custom_pkgs
265[[ $? > 0 ]] && echo " function module did not load.." && exit 2
266[[ $VERBOSITY > 0 ]] && echo "OK"
267
268
269[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
270
271
272###################################
273### MAIN ###
274###################################
275
276# Check for build prereequisites.
277echo
278 check_prerequisites
279echo "${SD_BORDER}${nl_}"
280
281validate_config
282echo "${SD_BORDER}${nl_}"
283echo -n "Are you happy with these settings? yes/no (no): "
284read ANSWER
285if [ x$ANSWER != "xyes" ] ; then
286 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
287 exit 1
288fi
289echo "${nl_}${SD_BORDER}${nl_}"
290
291# Load additional modules or configuration files based on global settings
292# compare module
293if [[ "$COMPARE" = "y" ]]; then
294 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
295 source $COMMON_DIR/libs/func_compare.sh
296 [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit
297 [[ $VERBOSITY > 0 ]] && echo "OK"
298fi
299#
300# optimize module
301if [[ "$OPTIMIZE" != "0" ]]; then
302 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
303 source optimize/optimize_functions
304 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
305 [[ $VERBOSITY > 0 ]] && echo "OK"
306 #
307 # optimize configurations
308 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
309 source optimize/opt_config
310 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
311 [[ $VERBOSITY > 0 ]] && echo "OK"
312 # Validate optimize settings, if required
313 validate_opt_settings
314fi
315#
316
317if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
318
319 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
320 # and notify the user about that.
321 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
322 eval "$no_empty_builddir"
323 fi
324
325 # If requested, clean the build directory
326 clean_builddir
327
328 if [[ ! -d $JHALFSDIR ]]; then
329 mkdir -p $JHALFSDIR
330 fi
331
332 # Create $BUILDDIR/sources even though it could be created by get_sources()
333 if [[ ! -d $BUILDDIR/sources ]]; then
334 mkdir -p $BUILDDIR/sources
335 fi
336 #
337 # Create the log directory
338 if [[ ! -d $LOGDIR ]]; then
339 mkdir $LOGDIR
340 fi
341 >$LOGDIR/$LOG
342 #
343 # Copy common helper files
344 cp $COMMON_DIR/{makefile-functions,progress_bar.sh,packages.xsl} $JHALFSDIR/
345 #
346 # Fix the XSL book parser
347 sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
348 export XSL=$JHALFSDIR/${XSL}
349 #
350
351 # Copy urls.xsl, if needed
352 [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
353 #
354 # Create the test-log directory, if needed
355 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
356 #
357 # Prepare report creation, if needed
358 if [[ "$REPORT" = "y" ]]; then
359 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
360 # After being sure that all looks sane, dump the settings to a file
361 # This file will be used to create the REPORT header
362 validate_config > $JHALFSDIR/jhalfs.config
363 fi
364 #
365 # Copy optimize files, if needed
366 [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
367 #
368 # Copy compare files, if needed
369 if [[ "$COMPARE" = "y" ]]; then
370 mkdir -p $JHALFSDIR/extras
371 cp extras/* $JHALFSDIR/extras
372 fi
373 #
374
375 # Copy custom tools config files, if requested
376 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
377 echo "Copying custom tool scripts to $JHALFSDIR"
378 mkdir -p $JHALFSDIR/custom-commands
379 cp -f custom/config/* $JHALFSDIR/custom-commands
380 fi
381 #
382 # Install blfs-tool, if requested.
383 if [[ "${BLFS_TOOL}" = "y" ]] ; then
384 # Install the files
385 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
386 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
387 cp -r menu ${BUILDDIR}${BLFS_ROOT}
388 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
389 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
390 # Clean-up
391 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
392 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
393 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
394 # Set some harcoded envars to their proper values
395 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
396 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
397 # Copy the dependencies build scripts
398 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
399 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
400 fi
401 #
402
403 get_book
404 echo "${SD_BORDER}${nl_}"
405
406 # Get the BLFS book, if requested.
407 if [[ "${BLFS_TOOL}" = "y" ]] ; then
408 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
409 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
410 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
411 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
412 else
413 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
414 svn up >>$LOGDIR/$LOG 2>&1
415 popd 1> /dev/null
416 fi
417 echo -ne "done\n"
418 echo "${SD_BORDER}${nl_}"
419 fi
420
421fi
422
423# When regeneration the Makefile we need to know also the canonical book version
424if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
425 case $PROGNAME in
426 clfs | clfs2 | clfs3 )
427 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
428 *)
429 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
430 esac
431fi
432
433build_Makefile
434
435echo "${SD_BORDER}${nl_}"
436
437run_make
Note: See TracBrowser for help on using the repository browser.