source: jhalfs@ 4fb2c33

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

Added function to write blfs-tool dependencies targets

  • Property mode set to 100755
File size: 12.2 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 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
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 # tidy
173 TIDY_PKG="tidy_src_051026.tgz"
174 TIDY_URL="http://tidy.sourceforge.net/src/${TIDY_PKG}"
175 TIDY_MD5="1e39fafd6808978871346658c8da1454"
176 # tidy patch
177 TIDY_PATCH="tidy-051026-prevent_PRE_newlines-1.patch"
178 TIDY_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${TIDY_PATCH}"
179 TIDY_PATCH_MD5="82f67f7af58fc2c945b3410ae655cc1a"
180 # unzip
181 UNZIP_PKG="unzip552.tar.gz"
182 UNZIP_URL="ftp://ftp.info-zip.org/pub/infozip/src/${UNZIP_PKG}"
183 UNZIP_MD5="9d23919999d6eac9217d1f41472034a9"
184 # DocBook XML DTD
185 DBXML_PKG="docbook-xml-4.4.zip"
186 DBXML_URL="http://www.docbook.org/xml/4.4/${DBXML_PKG}"
187 DBXML_MD5="cbb04e9a700955d88c50962ef22c1634"
188 # DocBook XSL
189 DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
190 DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
191 DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
192 # Links
193 LINKS_PKG="links-2.1pre21.tar.bz2"
194 LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}"
195 LINKS_MD5="7687e2c32e337e11c6e9d8cd8c5202c9"
196 # sudo
197 SUDO_PKG="sudo-1.6.8p12.tar.gz"
198 SUDO_URL="http://www.courtesan.com/sudo/dist/${SUDO_PKG}"
199 SUDO_MD5="b29893c06192df6230dd5f340f3badf5"
200 # sudo envar fix patch
201 SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch"
202 SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}"
203 SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986"
204 # wget
205 WGET_PKG="wget-1.10.2.tar.gz"
206 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
207 WGET_MD5="795fefbb7099f93e2d346b026785c4b8"
208 # Subversion
209 SVN_PKG="subversion-1.3.1.tar.bz2"
210 SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}"
211 SVN_MD5="07b95963968ae345541ca99d0e7bf082"
212 # GPM
213 GPM_PKG="gpm-1.20.1.tar.bz2"
214 GPM_URL="ftp://arcana.linux.it/pub/gpm/${GPM_PKG}"
215 GPM_MD5="2c63e827d755527950d9d13fe3d87692"
216 # GPM segfaul patch
217 GPM_PATCH_1="gpm-1.20.1-segfault-1.patch"
218 GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}"
219 GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac"
220 # GPM silent patch
221 GPM_PATCH_2="gpm-1.20.1-silent-1.patch"
222 GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}"
223 GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a"
224fi
225
226# Set true internal variables
227COMMON_DIR="common"
228PACKAGE_DIR=$(echo $PROGNAME | tr [a-z] [A-Z])
229MODULE=$PACKAGE_DIR/master.sh
230
231
232[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
233source $COMMON_DIR/common-functions
234[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
235[[ $VERBOSITY > 0 ]] && echo "OK"
236[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
237source $MODULE
238[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
239[[ $VERBOSITY > 0 ]] && echo "OK"
240#
241[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
242
243
244#*******************************************************************#
245[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
246source $COMMON_DIR/func_check_version.sh
247[[ $? > 0 ]] && echo " function module did not load.." && exit 2
248[[ $VERBOSITY > 0 ]] && echo "OK"
249
250[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
251source $COMMON_DIR/func_validate_configs.sh
252[[ $? > 0 ]] && echo " function module did not load.." && exit 2
253[[ $VERBOSITY > 0 ]] && echo "OK"
254[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
255
256
257###################################
258### MAIN ###
259###################################
260
261# Check for build prereequisites.
262echo
263 check_prerequisites
264echo "${SD_BORDER}${nl_}"
265
266validate_config
267echo "${SD_BORDER}${nl_}"
268echo -n "Are you happy with these settings? yes/no (no): "
269read ANSWER
270if [ x$ANSWER != "xyes" ] ; then
271 echo "${nl_}Fix the configuration options and rerun the script.${nl_}"
272 exit 1
273fi
274echo "${nl_}${SD_BORDER}${nl_}"
275
276# Load additional modules or configuration files based on global settings
277# compare module
278if [[ "$COMPARE" = "y" ]]; then
279 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
280 source $COMMON_DIR/func_compare.sh
281 [[ $? > 0 ]] && echo "$COMMON_DIR/func_compare.sh did not load.." && exit
282 [[ $VERBOSITY > 0 ]] && echo "OK"
283fi
284#
285# optimize module
286if [[ "$OPTIMIZE" != "0" ]]; then
287 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
288 source optimize/optimize_functions
289 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
290 [[ $VERBOSITY > 0 ]] && echo "OK"
291 #
292 # optimize configurations
293 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
294 source optimize/opt_config
295 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
296 [[ $VERBOSITY > 0 ]] && echo "OK"
297 # Validate optimize settings, if required
298 validate_opt_settings
299fi
300#
301
302# If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
303# and notify the user about that.
304if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
305 eval "$no_empty_builddir"
306fi
307
308# If requested, clean the build directory
309clean_builddir
310
311if [[ ! -d $JHALFSDIR ]]; then
312 mkdir -p $JHALFSDIR
313fi
314#
315# Create $BUILDDIR/sources even though it could be created by get_sources()
316if [[ ! -d $BUILDDIR/sources ]]; then
317 mkdir -p $BUILDDIR/sources
318fi
319#
320# Create the log directory
321if [[ ! -d $LOGDIR ]]; then
322 mkdir $LOGDIR
323fi
324>$LOGDIR/$LOG
325#
326[[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
327#
328cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/
329#
330[[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
331#
332if [[ "$COMPARE" = "y" ]]; then
333 mkdir -p $JHALFSDIR/extras
334 cp extras/* $JHALFSDIR/extras
335fi
336#
337if [[ -n "$FILES" ]]; then
338 # pushd/popd necessary to deal with multiple files
339 pushd $PACKAGE_DIR 1> /dev/null
340 cp $FILES $JHALFSDIR/
341 popd 1> /dev/null
342fi
343#
344if [[ "$REPORT" = "y" ]]; then
345 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
346 # After being sure that all looks sane, dump the settings to a file
347 # This file will be used to create the REPORT header
348 validate_config > $JHALFSDIR/jhalfs.config
349fi
350#
351[[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
352#
353cp $COMMON_DIR/packages.xsl $JHALFSDIR/
354#
355sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
356export XSL=$JHALFSDIR/${XSL}
357
358# Install blfs-tool, if requested.
359if [[ "${BLFS_TOOL}" = "y" ]] ; then
360 # Install the files
361 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
362 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
363 cp -r menu ${BUILDDIR}${BLFS_ROOT}
364 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
365 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
366 # Clean-up
367 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
368 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
369 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
370 # Set some harcoded envars to their proper values
371 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
372 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
373 # Copy the dependencies build scripts
374 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
375 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
376fi
377
378get_book
379echo "${SD_BORDER}${nl_}"
380
381# Get the BLFS book, if requested.
382if [[ "${BLFS_TOOL}" = "y" ]] ; then
383 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
384 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
385 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
386 svn co $SVN/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
387 else
388 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
389 svn up >>$LOGDIR/$LOG 2>&1
390 popd 1> /dev/null
391 fi
392 echo -ne "done\n"
393 echo "${SD_BORDER}${nl_}"
394fi
395
396build_Makefile
397echo "${SD_BORDER}${nl_}"
398
399run_make
Note: See TracBrowser for help on using the repository browser.