source: jhalfs@ 38d2de6

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

LFS: Added support for installed files logs.
Should be ported to other books when verified that works as expected.

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