source: jhalfs@ 3d7b6621

2.3 2.3.x 2.4 ablfs ablfs-more legacy new_features trunk
Last change on this file since 3d7b6621 was c10570d, checked in by George Boudreau <georgeb@…>, 18 years ago

Added blfs-tool support scripts to CLFS, enabled selection in Config.in

  • Property mode set to 100755
File size: 12.5 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-X\"${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 #--- 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 2.4-branch )
134 LFSVRS=${BRANCH_ID}
135 TREE=branches/2.4-branch
136 ;;
137 * )
138 case $PROGNAME in
139 lfs | hlfs )
140 LFSVRS=${BRANCH_ID}
141 TREE=tags/${BRANCH_ID}/BOOK
142 ;;
143 clfs | clfs2 )
144 LFSVRS=${BRANCH_ID}
145 TREE=tags/${BRANCH_ID}
146 ;;
147 esac
148 ;;
149esac
150
151# Set the document location...
152BOOK=${BOOK:=$PROGNAME-$LFSVRS}
153
154# blfs-tool envars
155BLFS_TOOL=${BLFS_TOOL:-n}
156if [[ "${BLFS_TOOL}" = "y" ]] ; then
157 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
158 case $BLFS_BRANCH_ID in
159 development ) BLFS_TREE=trunk/BOOK ;;
160 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
161 echo " Please rerun make and fix the configuration."
162 exit 2 ;;
163 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
164 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
165 esac
166 # Dependencies envars, to can update it more easy.
167 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
168 # libxml2
169 LIBXML_PKG="libxml2-2.6.26.tar.gz"
170 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
171 LIBXML_MD5="2d8d3805041edab967368b497642f981"
172 # libxslt
173 LIBXSLT_PKG="libxslt-1.1.17.tar.gz"
174 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
175 LIBXSLT_MD5="fde6a7a93c0eb14cba628692fa3a1000"
176 # tidy
177 TIDY_PKG="tidy_src_051026.tgz"
178 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
179 TIDY_MD5="1e39fafd6808978871346658c8da1454"
180 # tidy patch
181 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
182 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
183 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
184 # tidy docs
185 TIDY_DOCS="tidy_docs_051020.tgz"
186 TIDY_DOCS_URL="http://tidy.sourceforge.net/docs/${TIDY_DOCS}"
187 TIDY_DOCS_MD5="86de2f198e57399c063d2567b2a25628"
188 # unzip
189 UNZIP_PKG="unzip552.tar.gz"
190 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
191 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
192 # DocBook XML DTD
193 DBXML_PKG="docbook-xml-4.4.zip"
194 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
195 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
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 LINKS_PKG="links-2.1pre21.tar.bz2"
202 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
203 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
204 # sudo
205 SUDO_PKG="sudo-1.6.8p12.tar.gz"
206 SUDO_URL="http://www.courtesan.com/sudo/dist/${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://arcana.linux.it/pub/gpm/${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# Set true internal variables
235COMMON_DIR="common"
236PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
237MODULE=$PACKAGE_DIR/master.sh
238
239
240[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
241source $COMMON_DIR/common-functions
242[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
243[[ $VERBOSITY > 0 ]] && echo "OK"
244[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
245source $MODULE
246[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
247[[ $VERBOSITY > 0 ]] && echo "OK"
248#
249[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
250
251
252#*******************************************************************#
253[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
254source $COMMON_DIR/func_check_version.sh
255[[ $? > 0 ]] && echo " function module did not load.." && exit 2
256[[ $VERBOSITY > 0 ]] && echo "OK"
257
258[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
259source $COMMON_DIR/func_validate_configs.sh
260[[ $? > 0 ]] && echo " function module did not load.." && exit 2
261[[ $VERBOSITY > 0 ]] && echo "OK"
262[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
263
264
265###################################
266### MAIN ###
267###################################
268
269# Check for build prereequisites.
270echo
271 check_prerequisites
272echo "${SD_BORDER}${nl_}"
273
274validate_config
275echo "${SD_BORDER}${nl_}"
276echo -n "Are you happy with these settings? yes/no (no): "
277read ANSWER
278if [ x$ANSWER != "xyes" ] ; then
279 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
280 exit 1
281fi
282echo "${nl_}${SD_BORDER}${nl_}"
283
284# Load additional modules or configuration files based on global settings
285# compare module
286if [[ "$COMPARE" = "y" ]]; then
287 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
288 source $COMMON_DIR/func_compare.sh
289 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
290 [[ $VERBOSITY > 0 ]] && echo "OK"
291fi
292#
293# optimize module
294if [[ "$OPTIMIZE" != "0" ]]; then
295 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
296 source optimize/optimize_functions
297 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
298 [[ $VERBOSITY > 0 ]] && echo "OK"
299 #
300 # optimize configurations
301 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
302 source optimize/opt_config
303 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
304 [[ $VERBOSITY > 0 ]] && echo "OK"
305 # Validate optimize settings, if required
306 validate_opt_settings
307fi
308#
309
310# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
311# and notify the user about that.
312if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
313 eval "$no_empty_builddir"
314fi
315
316# If requested, clean the build directory
317clean_builddir
318
319if [[ ! -d $JHALFSDIR ]]; then
320 mkdir -p $JHALFSDIR
321fi
322#
323# Create $BUILDDIR/sources even though it could be created by get_sources()
324if [[ ! -d $BUILDDIR/sources ]]; then
325 mkdir -p $BUILDDIR/sources
326fi
327#
328# Create the log directory
329if [[ ! -d $LOGDIR ]]; then
330 mkdir $LOGDIR
331fi
332>$LOGDIR/$LOG
333#
334[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
335#
336cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
337#
338[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
339#
340if [[ "$COMPARE" = "y" ]]; then
341 mkdir -p $JHALFSDIR/extras
342 cp extras/* $JHALFSDIR/extras
343fi
344#
345if [[ -n "$FILES" ]]; then
346 # pushd/popd necessary to deal with multiple files
347 pushd $PACKAGE_DIR 1> /dev/null
348 cp $FILES $JHALFSDIR/
349 popd 1> /dev/null
350fi
351#
352if [[ "$REPORT" = "y" ]]; then
353 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
354 # After being sure that all looks sane, dump the settings to a file
355 # This file will be used to create the REPORT header
356 validate_config > $JHALFSDIR/jhalfs.config
357fi
358#
359[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
360#
361cp $COMMON_DIR/packages.xsl $JHALFSDIR/
362#
363sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
364export XSL=$JHALFSDIR/${XSL}
365
366# Install blfs-tool, if requested.
367if [[ "${BLFS_TOOL}" = "y" ]] ; then
368 # Install the files
369 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
370 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
371 cp -r menu ${BUILDDIR}${BLFS_ROOT}
372 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
373 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
374 # Clean-up
375 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
376 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
377 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
378 # Set some harcoded envars to their proper values
379 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
380 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
381 # Copy the dependencies build scripts
382 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
383 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
384fi
385
386get_book
387echo "${SD_BORDER}${nl_}"
388
389# Get the BLFS book, if requested.
390if [[ "${BLFS_TOOL}" = "y" ]] ; then
391 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
392 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
393 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
394 svn co $SVN/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
395 else
396 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
397 svn up >>$LOGDIR/$LOG 2>&1
398 popd 1> /dev/null
399 fi
400 echo -ne "done\n"
401 echo "${SD_BORDER}${nl_}"
402fi
403
404build_Makefile
405echo "${SD_BORDER}${nl_}"
406
407run_make
Note: See TracBrowser for help on using the repository browser.