source: jhalfs@ 0921cae

experimental
Last change on this file since 0921cae was 80f0ea1, checked in by George Boudreau <georgeb@…>, 18 years ago

Added PATH variable to generated Makefile. /usr/sbin may not be in builders PATH

  • Property mode set to 100755
File size: 12.4 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 #--- Envars not sourced from configuration
94declare -r SVN="svn://svn.linuxfromscratch.org"
95declare -r LOG=000-masterscript.log
96
97# These are boolean vars generated from Config.in.
98# ISSUE: If a boolean parameter is not set <true> that
99# variable is not defined by the menu app. This can
100# cause a headache if you are not careful.
101# The following parameters MUST be created and have a
102# default value.
103RUNMAKE=${RUNMAKE:-n}
104GETPKG=${GETPKG:-n}
105GETKERNEL=${GETKERNEL:-n}
106COMPARE=${COMPARE:-n}
107RUN_FARCE=${RUN_FARCE:-n}
108RUN_ICA=${RUN_ICA:-n}
109BOMB_TEST=${BOMB_TEST:-n}
110STRIP=${STRIP:=n}
111REPORT=${REPORT:=n}
112VIMLANG=${VIMLANG:-n}
113GRSECURITY_HOST=${GRSECURITY_HOST:-n}
114
115# Book surces envars
116BRANCH_ID=${BRANCH_ID:=development}
117
118case $BRANCH_ID in
119 development )
120 case $PROGNAME in
121 clfs2 ) TREE=branches/clfs-2.0/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 )
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 # libxml2
164 LIBXML_PKG="libxml2-2.6.26.tar.gz"
165 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
166 LIBXML_MD5="2d8d3805041edab967368b497642f981"
167 # libxslt
168 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
169 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
170 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
171 # DocBook XSL
172 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
173 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
174 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
175 # Links
176 LINKS_PKG="links-2.1pre21.tar.bz2"
177 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
178 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
179 # sudo
180 SUDO_PKG="sudo-1.6.8p12.tar.gz"
181 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
182 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
183 # sudo envar fix patch
184 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
185 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
186 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
187 # wget
188 WGET_PKG="wget-1.10.2.tar.gz"
189 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
190 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
191 # Subversion
192 SVN_PKG="subversion-1.3.1.tar.bz2"
193 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
194 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
195 # GPM
196 GPM_PKG="gpm-1.20.1.tar.bz2"
197 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
198 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
199 # GPM segfaul patch
200 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
201 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
202 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
203 # GPM silent patch
204 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
205 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
206 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
207fi
208
209# Set true internal variables
210COMMON_DIR="common"
211PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
212MODULE=$PACKAGE_DIR/master.sh
213
214
215[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
216source $COMMON_DIR/common-functions
217[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
218[[ $VERBOSITY > 0 ]] && echo "OK"
219[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
220source $MODULE
221[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
222[[ $VERBOSITY > 0 ]] && echo "OK"
223#
224[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
225
226
227#*******************************************************************#
228[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
229source $COMMON_DIR/func_check_version.sh
230[[ $? > 0 ]] && echo " function module did not load.." && exit 2
231[[ $VERBOSITY > 0 ]] && echo "OK"
232
233[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
234source $COMMON_DIR/func_validate_configs.sh
235[[ $? > 0 ]] && echo " function module did not load.." && exit 2
236[[ $VERBOSITY > 0 ]] && echo "OK"
237[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
238
239
240###################################
241### MAIN ###
242###################################
243
244# Check for minimum bash,tar,gcc and kernel versions
245echo
246check_version "2.6.2" "`uname -r`" "KERNEL"
247check_version "3.0" "$BASH_VERSION" "BASH"
248check_version "3.0" "`gcc -dumpversion`" "GCC"
249tarVer=`tar --version | head -n1 | cut -d " " -f4`
250check_version "1.15.0" "${tarVer}" "TAR"
251
252SUDO_LOC="`whereis -b sudo | cut -d " " -f2`"
253if [ -x $SUDO_LOC ]; then
254 sudoVer=`sudo -V | head -n1 | cut -d " " -f3`
255 check_version "1.6.8" "${sudoVer}" "SUDO"
256else
257 echo "${nl_}\"${RED}sudo${OFF}\" ${BOLD}must be installed on your system for jhalfs to run"
258 exit 1
259fi
260
261xsltprocVer=`xsltproc -V | head -n1 `
262 libxmlVer=$(echo $xsltprocVer | cut -d " " -f3)
263 libxsltVer=$(echo $xsltprocVer | cut -d " " -f5)
264 tidyVer=`tidy -V | cut -d " " -f9`
265
266# Version numbers are packed strings not xx.yy.zz format.
267check_version "2.06.20" "${libxmlVer:0:1}.${libxmlVer:1:2}.${libxmlVer:3:2}" "LIBXML2"
268check_version "1.01.14" "${libxsltVer:0:1}.${libxsltVer:1:2}.${libxsltVer:3:2}" "LIBXSLT"
269check_version "2004" "${tidyVer}" "TIDY"
270
271echo "${SD_BORDER}${nl_}"
272
273validate_config
274echo "${SD_BORDER}${nl_}"
275echo -n "Are you happy with these settings? yes/no (no): "
276read ANSWER
277if [ x$ANSWER != "xyes" ] ; then
278 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
279 exit 1
280fi
281echo "${nl_}${SD_BORDER}${nl_}"
282
283# Load additional modules or configuration files based on global settings
284# compare module
285if [[ "$COMPARE" = "y" ]]; then
286 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
287 source $COMMON_DIR/func_compare.sh
288 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
289 [[ $VERBOSITY > 0 ]] && echo "OK"
290fi
291#
292# optimize module
293if [[ "$OPTIMIZE" != "0" ]]; then
294 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
295 source optimize/optimize_functions
296 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
297 [[ $VERBOSITY > 0 ]] && echo "OK"
298 #
299 # optimize configurations
300 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
301 source optimize/opt_config
302 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
303 [[ $VERBOSITY > 0 ]] && echo "OK"
304 # Validate optimize settings, if required
305 validate_opt_settings
306fi
307#
308
309# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
310# and notify the user about that.
311if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
312 eval "$no_empty_builddir"
313fi
314
315# If requested, clean the build directory
316clean_builddir
317
318if [[ ! -d $JHALFSDIR ]]; then
319 mkdir -p $JHALFSDIR
320fi
321#
322# Create $BUILDDIR/sources even though it could be created by get_sources()
323if [[ ! -d $BUILDDIR/sources ]]; then
324 mkdir -p $BUILDDIR/sources
325fi
326#
327# Create the log directory
328if [[ ! -d $LOGDIR ]]; then
329 mkdir $LOGDIR
330fi
331>$LOGDIR/$LOG
332#
333[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
334#
335cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
336#
337[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
338#
339if [[ "$COMPARE" = "y" ]]; then
340 mkdir -p $JHALFSDIR/extras
341 cp extras/* $JHALFSDIR/extras
342fi
343#
344if [[ -n "$FILES" ]]; then
345 # pushd/popd necessary to deal with multiple files
346 pushd $PACKAGE_DIR 1> /dev/null
347 cp $FILES $JHALFSDIR/
348 popd 1> /dev/null
349fi
350#
351if [[ "$REPORT" = "y" ]]; then
352 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
353 # After being sure that all looks sane, dump the settings to a file
354 # This file will be used to create the REPORT header
355 validate_config > $JHALFSDIR/jhalfs.config
356fi
357#
358[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
359#
360cp $COMMON_DIR/packages.xsl $JHALFSDIR/
361#
362sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
363export XSL=$JHALFSDIR/${XSL}
364
365# Install blfs-tool, if requested.
366if [[ "${BLFS_TOOL}" = "y" ]] ; then
367 # Install the files
368 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
369 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
370 cp -r menu ${BUILDDIR}${BLFS_ROOT}
371 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
372 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
373 # Clean-up
374 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
375 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
376 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
377 # Set some harcoded envars to their proper values
378 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
379 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
380 # Copy the dependencies build scripts
381 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
382fi
383
384get_book
385echo "${SD_BORDER}${nl_}"
386
387# Get the BLFS book, if requested.
388if [[ "${BLFS_TOOL}" = "y" ]] ; then
389 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
390 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
391 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
392 svn co $SVN/BLFS/$TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
393 else
394 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
395 svn up >>$LOGDIR/$LOG 2>&1
396 popd 1> /dev/null
397 fi
398 echo -ne "done\n"
399 echo "${SD_BORDER}${nl_}"
400fi
401
402build_Makefile
403echo "${SD_BORDER}${nl_}"
404
405run_make
Note: See TracBrowser for help on using the repository browser.