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
RevLine 
[0170229]1#!/bin/bash
[12a5707]2# $Id$
[0170229]3set -e
4
[0818ea6]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
[0170229]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() {
[9e627f6]45 echo -e "\n${L_arrow}${BOLD}jhalfs-X${R_arrow} exit${OFF}\n"
[0170229]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
[0818ea6]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"
[0170229]76
[2b0f8a5]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
[12a5707]85
[2b0f8a5]86VERBOSITY=1
[0170229]87
[1ad9211]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"
[9e627f6]92
[1ad9211]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}
[0170229]110
[cfdc0f1]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 ;;
[2ee1d11]129 2.4-branch )
130 LFSVRS=${BRANCH_ID}
131 TREE=branches/2.4-branch
132 ;;
[cfdc0f1]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
[2b0f8a5]147# Set the document location...
148BOOK=${BOOK:=$PROGNAME-$LFSVRS}
149
[cfdc0f1]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
[4fb2c33]162 # Dependencies envars, to can update it more easy.
163 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
[c03e5d0]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"
[2020b1b]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"
[2ee1d11]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"
[2020b1b]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"
[c03e5d0]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"
[3c5ca23]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"
[c03e5d0]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"
[3c5ca23]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"
[cfdc0f1]228fi
229
[2ee1d11]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
[2b0f8a5]239# Set true internal variables
240COMMON_DIR="common"
241PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
242MODULE=$PACKAGE_DIR/master.sh
243
[47fddc8]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
[0170229]257#*******************************************************************#
[26a8fdf]258[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
[12a5707]259source $COMMON_DIR/func_check_version.sh
260[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]261[[ $VERBOSITY > 0 ]] && echo "OK"
[0170229]262
[26a8fdf]263[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
[12a5707]264source $COMMON_DIR/func_validate_configs.sh
265[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]266[[ $VERBOSITY > 0 ]] && echo "OK"
[42e1b38]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
[65d83a6]274[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
[0170229]275
276
277###################################
[4612459]278### MAIN ###
[0170229]279###################################
280
[3f1d46c]281# Check for build prereequisites.
[f15fe85]282echo
[3f1d46c]283 check_prerequisites
[65d83a6]284echo "${SD_BORDER}${nl_}"
[13e816f]285
[3051f95]286validate_config
[65d83a6]287echo "${SD_BORDER}${nl_}"
[7e6ddf0]288echo -n "Are you happy with these settings? yes/no (no): "
[13e816f]289read ANSWER
290if [ x$ANSWER != "xyes" ] ; then
[2ee1d11]291 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
[13e816f]292 exit 1
293fi
[65d83a6]294echo "${nl_}${SD_BORDER}${nl_}"
[13e816f]295
[3a27393]296# Load additional modules or configuration files based on global settings
[bb8e6bc]297# compare module
[47fddc8]298if [[ "$COMPARE" = "y" ]]; then
[bb8e6bc]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#
[2c2471d]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"
[3a27393]311 #
312 # optimize configurations
[bb8e6bc]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"
[3a27393]317 # Validate optimize settings, if required
318 validate_opt_settings
[bb8e6bc]319fi
320#
321
[13e816f]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
[0170229]331if [[ ! -d $JHALFSDIR ]]; then
[a110145]332 mkdir -p $JHALFSDIR
[0170229]333fi
[3a27393]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#
[e35e794]346[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
[3a27393]347#
[1ad9211]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
[0170229]355fi
[1ad9211]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
[42e1b38]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
[1ad9211]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}
[0170229]387
[acaab72]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}
[3c5ca23]403 # Copy the dependencies build scripts
404 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
[a9fed6e]405 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
[acaab72]406fi
407
[0170229]408get_book
[65d83a6]409echo "${SD_BORDER}${nl_}"
[12a5707]410
[7cb8803]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}
[2ee1d11]416 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
[7cb8803]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
[0170229]426build_Makefile
[42e1b38]427if [[ "${PROGNAME}" = "lfs" ]]; then
428 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
429 add_CustomTools
430 fi
431fi
[65d83a6]432echo "${SD_BORDER}${nl_}"
[12a5707]433
[386bc75]434run_make
Note: See TracBrowser for help on using the repository browser.