source: jhalfs@ aac025d

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

For blfs-tool dependencies, replaced links by linx.
Lynx have better GPM support and no locale issues.

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