source: jhalfs@ aafcfa9

experimental
Last change on this file since aafcfa9 was be22162, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Fixed experimental branch version.

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