source: jhalfs@ 2020b1b

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

Started addition of DocBook XML DTD, Tidy and UnZip to BLFS_TOOL dependencies.

  • Property mode set to 100755
File size: 14.4 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"
[2020b1b]171 # tidy
172 TIDY_PKG="tidy_src_051026.tgz"
173 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
174 TIDY_MD5="1e39fafd6808978871346658c8da1454"
175 # tidy patch
176 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
177 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
178 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
179 # unzip
180 UNZIP_PKG="unzip552.tar.gz"
181 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
182 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
183 # DocBook XML DTD
184 DBXML_PKG="docbook-xml-4.4.zip"
185 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
186 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
[c03e5d0]187 # DocBook XSL
188 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
189 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
190 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
191 # Links
192 LINKS_PKG="links-2.1pre21.tar.bz2"
193 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
194 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
195 # sudo
196 SUDO_PKG="sudo-1.6.8p12.tar.gz"
197 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
198 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
[3c5ca23]199 # sudo envar fix patch
200 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
201 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
202 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
[c03e5d0]203 # wget
204 WGET_PKG="wget-1.10.2.tar.gz"
205 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
206 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
207 # Subversion
208 SVN_PKG="subversion-1.3.1.tar.bz2"
209 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
210 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
211 # GPM
212 GPM_PKG="gpm-1.20.1.tar.bz2"
213 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
214 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
[3c5ca23]215 # GPM segfaul patch
216 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
217 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
218 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
219 # GPM silent patch
220 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
221 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
222 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
[cfdc0f1]223fi
224
[2b0f8a5]225# Set true internal variables
226COMMON_DIR="common"
227PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
228MODULE=$PACKAGE_DIR/master.sh
229
[47fddc8]230
231[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
232source $COMMON_DIR/common-functions
233[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
234[[ $VERBOSITY > 0 ]] && echo "OK"
235[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
236source $MODULE
237[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
238[[ $VERBOSITY > 0 ]] && echo "OK"
239#
240[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
241
242
[0170229]243#*******************************************************************#
[26a8fdf]244[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
[12a5707]245source $COMMON_DIR/func_check_version.sh
246[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]247[[ $VERBOSITY > 0 ]] && echo "OK"
[0170229]248
[26a8fdf]249[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
[12a5707]250source $COMMON_DIR/func_validate_configs.sh
251[[ $? > 0 ]] && echo " function module did not load.." && exit 2
[26a8fdf]252[[ $VERBOSITY > 0 ]] && echo "OK"
[65d83a6]253[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
[0170229]254
255
256###################################
[4612459]257### MAIN ###
[0170229]258###################################
259
[47fddc8]260# Check for minimum bash,tar,gcc and kernel versions
[f15fe85]261echo
[13e816f]262check_version "2.6.2" "`uname -r`" "KERNEL"
263check_version "3.0" "$BASH_VERSION" "BASH"
264check_version "3.0" "`gcc -dumpversion`" "GCC"
[e35e794]265tarVer=`tar --version | head -n1 | cut -d " " -f4`
[1cc1575]266check_version "1.15.0" "${tarVer}" "TAR"
267
[4abc9ec]268# Check for minimum sudo version
[1cc1575]269SUDO_LOC="`whereis -b sudo | cut -d " " -f2`"
270if [ -x $SUDO_LOC ]; then
271 sudoVer=`sudo -V | head -n1 | cut -d " " -f3`
[786e86c]272 check_version "1.6.8" "${sudoVer}" "SUDO"
[1cc1575]273else
274 echo "${nl_}\"${RED}sudo${OFF}\" ${BOLD}must be installed on your system for jhalfs to run"
275 exit 1
276fi
[80f0ea1]277
[4abc9ec]278# Check for minimum libxml2 and libxslt versions
[80f0ea1]279xsltprocVer=`xsltproc -V | head -n1 `
280 libxmlVer=$(echo $xsltprocVer | cut -d " " -f3)
281 libxsltVer=$(echo $xsltprocVer | cut -d " " -f5)
[4abc9ec]282
283 # Version numbers are packed strings not xx.yy.zz format.
[80f0ea1]284check_version "2.06.20" "${libxmlVer:0:1}.${libxmlVer:1:2}.${libxmlVer:3:2}" "LIBXML2"
285check_version "1.01.14" "${libxsltVer:0:1}.${libxsltVer:1:2}.${libxsltVer:3:2}" "LIBXSLT"
[4abc9ec]286
287# The next versions checks are required only when BLFS_TOOL is set and
288# this dependencies has not be selected for installation
289if [[ "$BLFS_TOOL" = "y" ]] ; then
290
291 if [[ -z "$DEP_TIDY" ]] ; then
292 tidyVer=`tidy -V | cut -d " " -f9`
293 check_version "2004" "${tidyVer}" "TIDY"
294 fi
295
296# Check if the proper DocBook-XML-DTD and DocBook-XSL are correctly installed
297XML_FILE="<?xml version='1.0' encoding='ISO-8859-1'?>
298<?xml-stylesheet type='text/xsl' href='http://docbook.sourceforge.net/release/xsl/1.69.1/xhtml/docbook.xsl'?>
299<!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'
300 'http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd'>
301<article>
302 <title>Test file</title>
303 <sect1>
304 <title>Some title</title>
305 <para>Some text</para>
306 </sect1>
307</article>"
308
309 if [[ -z "$DEP_DBXML" ]] ; then
310 if `echo $XML_FILE | xmllint -noout -postvalid - 2>/dev/null` ; then
311 check_version "4.4" "4.4" "DocBook XML DTD"
312 else
313 echo "Warning: not found a working DocBook XML DTD 4.4 installation"
314 exit 2
315 fi
316 fi
317
318 if [[ -z "$DEP_DBXSL" ]] ; then
319 if `echo $XML_FILE | xsltproc --noout - 2>/dev/null` ; then
320 check_version "1.69.1" "1.69.1" "DocBook XSL"
321 else
322 echo "Warning: not found a working DocBook XSL 1.69.1 installation"
323 exit 2
324 fi
325 fi
326
327fi
[80f0ea1]328
[65d83a6]329echo "${SD_BORDER}${nl_}"
[13e816f]330
[3051f95]331validate_config
[65d83a6]332echo "${SD_BORDER}${nl_}"
[7e6ddf0]333echo -n "Are you happy with these settings? yes/no (no): "
[13e816f]334read ANSWER
335if [ x$ANSWER != "xyes" ] ; then
336 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
337 exit 1
338fi
[65d83a6]339echo "${nl_}${SD_BORDER}${nl_}"
[13e816f]340
[3a27393]341# Load additional modules or configuration files based on global settings
[bb8e6bc]342# compare module
[47fddc8]343if [[ "$COMPARE" = "y" ]]; then
[bb8e6bc]344 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
345 source $COMMON_DIR/func_compare.sh
346 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
347 [[ $VERBOSITY > 0 ]] && echo "OK"
348fi
349#
[2c2471d]350# optimize module
351if [[ "$OPTIMIZE" != "0" ]]; then
352 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
353 source optimize/optimize_functions
354 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
355 [[ $VERBOSITY > 0 ]] && echo "OK"
[3a27393]356 #
357 # optimize configurations
[bb8e6bc]358 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
359 source optimize/opt_config
360 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
361 [[ $VERBOSITY > 0 ]] && echo "OK"
[3a27393]362 # Validate optimize settings, if required
363 validate_opt_settings
[bb8e6bc]364fi
365#
366
[13e816f]367# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
368# and notify the user about that.
369if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
370 eval "$no_empty_builddir"
371fi
372
373# If requested, clean the build directory
374clean_builddir
375
[0170229]376if [[ ! -d $JHALFSDIR ]]; then
[a110145]377 mkdir -p $JHALFSDIR
[0170229]378fi
[3a27393]379#
380# Create $BUILDDIR/sources even though it could be created by get_sources()
381if [[ ! -d $BUILDDIR/sources ]]; then
382 mkdir -p $BUILDDIR/sources
383fi
384#
385# Create the log directory
386if [[ ! -d $LOGDIR ]]; then
387 mkdir $LOGDIR
388fi
389>$LOGDIR/$LOG
390#
[e35e794]391[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
[3a27393]392#
[1ad9211]393cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
394#
395[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
396#
397if [[ "$COMPARE" = "y" ]]; then
398 mkdir -p $JHALFSDIR/extras
399 cp extras/* $JHALFSDIR/extras
[0170229]400fi
[1ad9211]401#
402if [[ -n "$FILES" ]]; then
403 # pushd/popd necessary to deal with multiple files
404 pushd $PACKAGE_DIR 1> /dev/null
405 cp $FILES $JHALFSDIR/
406 popd 1> /dev/null
407fi
408#
409if [[ "$REPORT" = "y" ]]; then
410 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
411 # After being sure that all looks sane, dump the settings to a file
412 # This file will be used to create the REPORT header
413 validate_config > $JHALFSDIR/jhalfs.config
414fi
415#
416[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
417#
418cp $COMMON_DIR/packages.xsl $JHALFSDIR/
419#
420sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
421export XSL=$JHALFSDIR/${XSL}
[0170229]422
[acaab72]423# Install blfs-tool, if requested.
424if [[ "${BLFS_TOOL}" = "y" ]] ; then
425 # Install the files
426 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
427 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
428 cp -r menu ${BUILDDIR}${BLFS_ROOT}
429 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
430 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
431 # Clean-up
432 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
433 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
434 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
435 # Set some harcoded envars to their proper values
436 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
437 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
[3c5ca23]438 # Copy the dependencies build scripts
439 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
[acaab72]440fi
441
[0170229]442get_book
[65d83a6]443echo "${SD_BORDER}${nl_}"
[12a5707]444
[7cb8803]445# Get the BLFS book, if requested.
446if [[ "${BLFS_TOOL}" = "y" ]] ; then
447 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
448 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
449 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
450 svn co $SVN/BLFS/$TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
451 else
452 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
453 svn up >>$LOGDIR/$LOG 2>&1
454 popd 1> /dev/null
455 fi
456 echo -ne "done\n"
457 echo "${SD_BORDER}${nl_}"
458fi
459
[0170229]460build_Makefile
[65d83a6]461echo "${SD_BORDER}${nl_}"
[12a5707]462
[386bc75]463run_make
Note: See TracBrowser for help on using the repository browser.