source: jhalfs@ 50fb011

experimental
Last change on this file since 50fb011 was 3c5ca23, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Added blfs-tool dependencies build scripts.

  • Property mode set to 100755
File size: 11.7 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}
113KEYMAP=${KEYMAP:=none}
114GRSECURITY_HOST=${GRSECURITY_HOST:-n}
115
116# Book surces envars
117BRANCH_ID=${BRANCH_ID:=development}
118
119case $BRANCH_ID in
120 development )
121 case $PROGNAME in
122 clfs2 ) TREE=branches/clfs-2.0/BOOK ;;
123 *) TREE=trunk/BOOK ;;
124 esac
125 LFSVRS=development
126 ;;
127 *EDIT* ) echo " You forgot to set the branch or stable book version."
128 echo " Please rerun make and fix the configuration."
129 exit 2 ;;
130 branch-* )
131 LFSVRS=${BRANCH_ID}
132 TREE=branches/${BRANCH_ID#branch-}/BOOK
133 ;;
134 * )
135 case $PROGNAME in
136 lfs | hlfs )
137 LFSVRS=${BRANCH_ID}
138 TREE=tags/${BRANCH_ID}/BOOK
139 ;;
140 clfs | clfs2 )
141 LFSVRS=${BRANCH_ID}
142 TREE=tags/${BRANCH_ID}
143 ;;
144 esac
145 ;;
146esac
147
148# Set the document location...
149BOOK=${BOOK:=$PROGNAME-$LFSVRS}
150
151# blfs-tool envars
152BLFS_TOOL=${BLFS_TOOL:-n}
153if [[ "${BLFS_TOOL}" = "y" ]] ; then
154 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
155 case $BLFS_BRANCH_ID in
156 development ) BLFS_TREE=trunk/BOOK ;;
157 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
158 echo " Please rerun make and fix the configuration."
159 exit 2 ;;
160 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
161 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
162 esac
163 # dependencies envars, to can update it more easy.
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 # DocBook XSL
173 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
174 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
175 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
176 # Links
177 LINKS_PKG="links-2.1pre21.tar.bz2"
178 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
179 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
180 # sudo
181 SUDO_PKG="sudo-1.6.8p12.tar.gz"
182 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
183 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
184 # sudo envar fix patch
185 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
186 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
187 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
188 # wget
189 WGET_PKG="wget-1.10.2.tar.gz"
190 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
191 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
192 # Subversion
193 SVN_PKG="subversion-1.3.1.tar.bz2"
194 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
195 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
196 # GPM
197 GPM_PKG="gpm-1.20.1.tar.bz2"
198 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
199 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
200 # GPM segfaul patch
201 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
202 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
203 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
204 # GPM silent patch
205 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
206 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
207 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
208fi
209
210# Set true internal variables
211COMMON_DIR="common"
212PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
213MODULE=$PACKAGE_DIR/master.sh
214
215
216[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
217source $COMMON_DIR/common-functions
218[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
219[[ $VERBOSITY > 0 ]] && echo "OK"
220[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
221source $MODULE
222[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
223[[ $VERBOSITY > 0 ]] && echo "OK"
224#
225[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
226
227
228#*******************************************************************#
229[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
230source $COMMON_DIR/func_check_version.sh
231[[ $? > 0 ]] && echo " function module did not load.." && exit 2
232[[ $VERBOSITY > 0 ]] && echo "OK"
233
234[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
235source $COMMON_DIR/func_validate_configs.sh
236[[ $? > 0 ]] && echo " function module did not load.." && exit 2
237[[ $VERBOSITY > 0 ]] && echo "OK"
238[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
239
240
241###################################
242### MAIN ###
243###################################
244
245# Check for minimum bash,tar,gcc and kernel versions
246echo
247check_version "2.6.2" "`uname -r`" "KERNEL"
248check_version "3.0" "$BASH_VERSION" "BASH"
249check_version "3.0" "`gcc -dumpversion`" "GCC"
250tarVer=`tar --version | head -n1 | cut -d " " -f4`
251check_version "1.15.0" "${tarVer}" "TAR"
252echo "${SD_BORDER}${nl_}"
253
254validate_config
255echo "${SD_BORDER}${nl_}"
256echo -n "Are you happy with these settings? yes/no (no): "
257read ANSWER
258if [ x$ANSWER != "xyes" ] ; then
259 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
260 exit 1
261fi
262echo "${nl_}${SD_BORDER}${nl_}"
263
264# Load additional modules or configuration files based on global settings
265# compare module
266if [[ "$COMPARE" = "y" ]]; then
267 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
268 source $COMMON_DIR/func_compare.sh
269 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
270 [[ $VERBOSITY > 0 ]] && echo "OK"
271fi
272#
273# optimize module
274if [[ "$OPTIMIZE" != "0" ]]; then
275 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
276 source optimize/optimize_functions
277 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
278 [[ $VERBOSITY > 0 ]] && echo "OK"
279 #
280 # optimize configurations
281 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
282 source optimize/opt_config
283 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
284 [[ $VERBOSITY > 0 ]] && echo "OK"
285 # Validate optimize settings, if required
286 validate_opt_settings
287fi
288#
289
290# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
291# and notify the user about that.
292if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
293 eval "$no_empty_builddir"
294fi
295
296# If requested, clean the build directory
297clean_builddir
298
299if [[ ! -d $JHALFSDIR ]]; then
300 mkdir -p $JHALFSDIR
301fi
302#
303# Create $BUILDDIR/sources even though it could be created by get_sources()
304if [[ ! -d $BUILDDIR/sources ]]; then
305 mkdir -p $BUILDDIR/sources
306fi
307#
308# Create the log directory
309if [[ ! -d $LOGDIR ]]; then
310 mkdir $LOGDIR
311fi
312>$LOGDIR/$LOG
313#
314[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
315#
316cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
317#
318[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
319#
320if [[ "$COMPARE" = "y" ]]; then
321 mkdir -p $JHALFSDIR/extras
322 cp extras/* $JHALFSDIR/extras
323fi
324#
325if [[ -n "$FILES" ]]; then
326 # pushd/popd necessary to deal with multiple files
327 pushd $PACKAGE_DIR 1> /dev/null
328 cp $FILES $JHALFSDIR/
329 popd 1> /dev/null
330fi
331#
332if [[ "$REPORT" = "y" ]]; then
333 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
334 # After being sure that all looks sane, dump the settings to a file
335 # This file will be used to create the REPORT header
336 validate_config > $JHALFSDIR/jhalfs.config
337fi
338#
339[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
340#
341cp $COMMON_DIR/packages.xsl $JHALFSDIR/
342#
343sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
344export XSL=$JHALFSDIR/${XSL}
345
346# Install blfs-tool, if requested.
347if [[ "${BLFS_TOOL}" = "y" ]] ; then
348 # Install the files
349 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
350 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
351 cp -r menu ${BUILDDIR}${BLFS_ROOT}
352 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
353 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
354 # Clean-up
355 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
356 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
357 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
358 # Set some harcoded envars to their proper values
359 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
360 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
361 # Copy the dependencies build scripts
362 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
363fi
364
365get_book
366echo "${SD_BORDER}${nl_}"
367
368# Get the BLFS book, if requested.
369if [[ "${BLFS_TOOL}" = "y" ]] ; then
370 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
371 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
372 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
373 svn co $SVN/BLFS/$TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
374 else
375 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
376 svn up >>$LOGDIR/$LOG 2>&1
377 popd 1> /dev/null
378 fi
379 echo -ne "done\n"
380 echo "${SD_BORDER}${nl_}"
381fi
382
383build_Makefile
384echo "${SD_BORDER}${nl_}"
385
386run_make
Note: See TracBrowser for help on using the repository browser.