source: jhalfs@ 4abc9ec

experimental
Last change on this file since 4abc9ec was 4abc9ec, checked in by Manuel Canales Esparcia <manuel@…>, 18 years ago

Added version checks for DocBook XML dtd and XSL.
Added version checks to ./blfs-tool.
DocBook-XML-DTD and Tidy must be added yet to BLFS_TOOL installation dependencies.

  • Property mode set to 100755
File size: 13.7 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
39 if [[ "$-" =~ "e" ]]; then
40 echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2
41 fi
42}
43
44see_ya() {
[9e627f6]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="
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"
[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
[cfdc0f1]93 #--- Envars not sourced from configuration
[1ad9211]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}
[0170229]114
[cfdc0f1]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
[2b0f8a5]147# Set the document location...
148BOOK=${BOOK:=$PROGNAME-$LFSVRS}
149
[cfdc0f1]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
[c03e5d0]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"
[3c5ca23]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"
[c03e5d0]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"
[3c5ca23]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"
[cfdc0f1]207fi
208
[2b0f8a5]209# Set true internal variables
210COMMON_DIR="common"
211PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
212MODULE=$PACKAGE_DIR/master.sh
213
[47fddc8]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
[0170229]227#*******************************************************************#
[26a8fdf]228[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
[12a5707]229source $COMMON_DIR/func_check_version.sh
230[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]231[[ $VERBOSITY > 0 ]] && echo "OK"
[0170229]232
[26a8fdf]233[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
[12a5707]234source $COMMON_DIR/func_validate_configs.sh
235[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]236[[ $VERBOSITY > 0 ]] && echo "OK"
[65d83a6]237[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
[0170229]238
239
240###################################
[4612459]241### MAIN ###
[0170229]242###################################
243
[47fddc8]244# Check for minimum bash,tar,gcc and kernel versions
[f15fe85]245echo
[13e816f]246check_version "2.6.2" "`uname -r`" "KERNEL"
247check_version "3.0" "$BASH_VERSION" "BASH"
248check_version "3.0" "`gcc -dumpversion`" "GCC"
[e35e794]249tarVer=`tar --version | head -n1 | cut -d " " -f4`
[1cc1575]250check_version "1.15.0" "${tarVer}" "TAR"
251
[4abc9ec]252# Check for minimum sudo version
[1cc1575]253SUDO_LOC="`whereis -b sudo | cut -d " " -f2`"
254if [ -x $SUDO_LOC ]; then
255 sudoVer=`sudo -V | head -n1 | cut -d " " -f3`
[786e86c]256 check_version "1.6.8" "${sudoVer}" "SUDO"
[1cc1575]257else
258 echo "${nl_}\"${RED}sudo${OFF}\" ${BOLD}must be installed on your system for jhalfs to run"
259 exit 1
260fi
[80f0ea1]261
[4abc9ec]262# Check for minimum libxml2 and libxslt versions
[80f0ea1]263xsltprocVer=`xsltproc -V | head -n1 `
264 libxmlVer=$(echo $xsltprocVer | cut -d " " -f3)
265 libxsltVer=$(echo $xsltprocVer | cut -d " " -f5)
[4abc9ec]266
267 # Version numbers are packed strings not xx.yy.zz format.
[80f0ea1]268check_version "2.06.20" "${libxmlVer:0:1}.${libxmlVer:1:2}.${libxmlVer:3:2}" "LIBXML2"
269check_version "1.01.14" "${libxsltVer:0:1}.${libxsltVer:1:2}.${libxsltVer:3:2}" "LIBXSLT"
[4abc9ec]270
271# The next versions checks are required only when BLFS_TOOL is set and
272# this dependencies has not be selected for installation
273if [[ "$BLFS_TOOL" = "y" ]] ; then
274
275 if [[ -z "$DEP_TIDY" ]] ; then
276 tidyVer=`tidy -V | cut -d " " -f9`
277 check_version "2004" "${tidyVer}" "TIDY"
278 fi
279
280# Check if the proper DocBook-XML-DTD and DocBook-XSL are correctly installed
281XML_FILE="<?xml version='1.0' encoding='ISO-8859-1'?>
282<?xml-stylesheet type='text/xsl' href='http://docbook.sourceforge.net/release/xsl/1.69.1/xhtml/docbook.xsl'?>
283<!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'
284 'http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd'>
285<article>
286 <title>Test file</title>
287 <sect1>
288 <title>Some title</title>
289 <para>Some text</para>
290 </sect1>
291</article>"
292
293 if [[ -z "$DEP_DBXML" ]] ; then
294 if `echo $XML_FILE | xmllint -noout -postvalid - 2>/dev/null` ; then
295 check_version "4.4" "4.4" "DocBook XML DTD"
296 else
297 echo "Warning: not found a working DocBook XML DTD 4.4 installation"
298 exit 2
299 fi
300 fi
301
302 if [[ -z "$DEP_DBXSL" ]] ; then
303 if `echo $XML_FILE | xsltproc --noout - 2>/dev/null` ; then
304 check_version "1.69.1" "1.69.1" "DocBook XSL"
305 else
306 echo "Warning: not found a working DocBook XSL 1.69.1 installation"
307 exit 2
308 fi
309 fi
310
311fi
[80f0ea1]312
[65d83a6]313echo "${SD_BORDER}${nl_}"
[13e816f]314
[3051f95]315validate_config
[65d83a6]316echo "${SD_BORDER}${nl_}"
[7e6ddf0]317echo -n "Are you happy with these settings? yes/no (no): "
[13e816f]318read ANSWER
319if [ x$ANSWER != "xyes" ] ; then
320 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
321 exit 1
322fi
[65d83a6]323echo "${nl_}${SD_BORDER}${nl_}"
[13e816f]324
[3a27393]325# Load additional modules or configuration files based on global settings
[bb8e6bc]326# compare module
[47fddc8]327if [[ "$COMPARE" = "y" ]]; then
[bb8e6bc]328 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
329 source $COMMON_DIR/func_compare.sh
330 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
331 [[ $VERBOSITY > 0 ]] && echo "OK"
332fi
333#
[2c2471d]334# optimize module
335if [[ "$OPTIMIZE" != "0" ]]; then
336 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
337 source optimize/optimize_functions
338 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
339 [[ $VERBOSITY > 0 ]] && echo "OK"
[3a27393]340 #
341 # optimize configurations
[bb8e6bc]342 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
343 source optimize/opt_config
344 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
345 [[ $VERBOSITY > 0 ]] && echo "OK"
[3a27393]346 # Validate optimize settings, if required
347 validate_opt_settings
[bb8e6bc]348fi
349#
350
[13e816f]351# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
352# and notify the user about that.
353if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
354 eval "$no_empty_builddir"
355fi
356
357# If requested, clean the build directory
358clean_builddir
359
[0170229]360if [[ ! -d $JHALFSDIR ]]; then
[a110145]361 mkdir -p $JHALFSDIR
[0170229]362fi
[3a27393]363#
364# Create $BUILDDIR/sources even though it could be created by get_sources()
365if [[ ! -d $BUILDDIR/sources ]]; then
366 mkdir -p $BUILDDIR/sources
367fi
368#
369# Create the log directory
370if [[ ! -d $LOGDIR ]]; then
371 mkdir $LOGDIR
372fi
373>$LOGDIR/$LOG
374#
[e35e794]375[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
[3a27393]376#
[1ad9211]377cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
378#
379[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
380#
381if [[ "$COMPARE" = "y" ]]; then
382 mkdir -p $JHALFSDIR/extras
383 cp extras/* $JHALFSDIR/extras
[0170229]384fi
[1ad9211]385#
386if [[ -n "$FILES" ]]; then
387 # pushd/popd necessary to deal with multiple files
388 pushd $PACKAGE_DIR 1> /dev/null
389 cp $FILES $JHALFSDIR/
390 popd 1> /dev/null
391fi
392#
393if [[ "$REPORT" = "y" ]]; then
394 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
395 # After being sure that all looks sane, dump the settings to a file
396 # This file will be used to create the REPORT header
397 validate_config > $JHALFSDIR/jhalfs.config
398fi
399#
400[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
401#
402cp $COMMON_DIR/packages.xsl $JHALFSDIR/
403#
404sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
405export XSL=$JHALFSDIR/${XSL}
[0170229]406
[acaab72]407# Install blfs-tool, if requested.
408if [[ "${BLFS_TOOL}" = "y" ]] ; then
409 # Install the files
410 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
411 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
412 cp -r menu ${BUILDDIR}${BLFS_ROOT}
413 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
414 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
415 # Clean-up
416 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
417 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
418 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
419 # Set some harcoded envars to their proper values
420 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
421 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
[3c5ca23]422 # Copy the dependencies build scripts
423 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
[acaab72]424fi
425
[0170229]426get_book
[65d83a6]427echo "${SD_BORDER}${nl_}"
[12a5707]428
[7cb8803]429# Get the BLFS book, if requested.
430if [[ "${BLFS_TOOL}" = "y" ]] ; then
431 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
432 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
433 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
434 svn co $SVN/BLFS/$TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
435 else
436 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
437 svn up >>$LOGDIR/$LOG 2>&1
438 popd 1> /dev/null
439 fi
440 echo -ne "done\n"
441 echo "${SD_BORDER}${nl_}"
442fi
443
[0170229]444build_Makefile
[65d83a6]445echo "${SD_BORDER}${nl_}"
[12a5707]446
[386bc75]447run_make
Note: See TracBrowser for help on using the repository browser.