source: jhalfs@ 42e1b38

experimental
Last change on this file since 42e1b38 was 42e1b38, checked in by George Boudreau <georgeb@…>, 18 years ago

Add code for user defined scripts. User scripts added at the end of the final build (LFS only)

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