source: jhalfs@ eed0929

2.4 ablfs-more legacy new_features trunk
Last change on this file since eed0929 was e650dc7, checked in by Pierre Labastie <pierre@…>, 13 years ago

Adaptation to new tags/branch tree structure

  • Property mode set to 100755
File size: 15.3 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-trunk\"${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# These are boolean vars generated from Config.in.
94# ISSUE: If a boolean parameter is not set to y(es) there
95# is no variable defined by the menu app. This can
96# cause a headache if you are not aware.
97# The following variables MUST exist. If they don't, the
98# default value is n(o).
99RUNMAKE=${RUNMAKE:-n}
100GETPKG=${GETPKG:-n}
101COMPARE=${COMPARE:-n}
102RUN_FARCE=${RUN_FARCE:-n}
103RUN_ICA=${RUN_ICA:-n}
104PKGMNGT=${PKGMNGT:-n}
105BOMB_TEST=${BOMB_TEST:-n}
106STRIP=${STRIP:=n}
107REPORT=${REPORT:=n}
108VIMLANG=${VIMLANG:-n}
109FULL_LOCALE=${FULL_LOCALE:-n}
110GRSECURITY_HOST=${GRSECURITY_HOST:-n}
111CUSTOM_TOOLS=${CUSTOM_TOOLS:-n}
112REBUILD_MAKEFILE=${REBUILD_MAKEFILE:-n}
113INSTALL_LOG=${INSTALL_LOG:-n}
114CLEAN=${CLEAN:=n}
115SET_SSP=${SET_SSP:=n}
116SET_ASLR=${SET_ASLR:=n}
117SET_PAX=${SET_PAX:=n}
118SET_HARDENED_TMP=${SET_HARDENED_TMP:=n}
119SET_WARNINGS=${SET_WARNINGS:=n}
120SET_MISC=${SET_MISC:=n}
121SET_BLOWFISH=${SET_BLOWFISH:=n}
122
123if [[ "${NO_PROGRESS_BAR}" = "y" ]] ; then
124 NO_PROGRESS="#"
125fi
126
127
128# Sanity check on the location of $BUILDDIR / $JHALFSDIR
129CWD=$(cd `dirname $0` && pwd)
130if [[ $JHALFSDIR == $CWD ]]; then
131 echo " The jhalfs source directory conflicts with the jhalfs build directory."
132 echo " Please move the source directory or change the build directory."
133 exit 2
134fi
135
136# Book sources envars
137BRANCH_ID=${BRANCH_ID:=development}
138
139case $BRANCH_ID in
140 development )
141 case $PROGNAME in
142 clfs2 ) TREE=branches/clfs-sysroot/BOOK ;;
143 clfs3 ) TREE=branches/clfs-embedded/BOOK ;;
144 *) TREE=trunk/BOOK ;;
145 esac
146 LFSVRS=development
147 ;;
148 *EDIT* ) echo " You forgot to set the branch or stable book version."
149 echo " Please rerun make and fix the configuration."
150 exit 2 ;;
151 branch-* )
152 LFSVRS=${BRANCH_ID}
153 TREE=branches/${BRANCH_ID#branch-}/BOOK
154 ;;
155 * )
156 case $PROGNAME in
157 lfs )
158 LFSVRS=${BRANCH_ID}
159 TREE=tags/${BRANCH_ID}
160 if (( ${BRANCH_ID:0:1} < 7 )) ; then
161 TREE=${TREE}/BOOK
162 fi
163 ;;
164 hlfs )
165 LFSVRS=${BRANCH_ID}
166 TREE=tags/${BRANCH_ID}/BOOK
167 ;;
168 clfs | clfs2 | clfs3)
169 LFSVRS=${BRANCH_ID}
170 TREE=tags/${BRANCH_ID}
171 ;;
172 esac
173 ;;
174esac
175
176# Set the document location...
177BOOK=${BOOK:=$PROGNAME-$LFSVRS}
178
179# blfs-tool envars
180BLFS_TOOL=${BLFS_TOOL:-n}
181if [[ "${BLFS_TOOL}" = "y" ]] ; then
182 BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
183 case $BLFS_BRANCH_ID in
184 development ) BLFS_TREE=trunk/BOOK ;;
185 *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
186 echo " Please rerun make and fix the configuration."
187 exit 2 ;;
188 branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-} ;;
189 * ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;;
190 esac
191 # Dependencies envars, easier to update.
192 # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets()
193 # libxml2
194 LIBXML_PKG="libxml2-2.7.8.tar.gz"
195 LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}"
196 LIBXML_MD5="8127a65e8c3b08856093099b52599c86"
197 # libxslt
198 LIBXSLT_PKG="libxslt-1.1.26.tar.gz"
199 LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}"
200 LIBXSLT_MD5="e61d0364a30146aaa3001296f853b2b9"
201 # tidy
202 TIDY_PKG="tidy-cvs_20101110.tar.bz2"
203 TIDY_URL="http://anduin.linuxfromscratch.org/sources/BLFS/svn/t/${TIDY_PKG}"
204 TIDY_MD5="dd1fe109b4259ad3f364b175787ad5e9"
205 # unzip
206 UNZIP_PKG="unzip60.tar.gz"
207 UNZIP_URL="http://downloads.sourceforge.net/infozip/${UNZIP_PKG}"
208 UNZIP_MD5="62b490407489521db863b523a7f86375"
209 # DocBook XML DTD
210 DBXML_PKG="docbook-xml-4.5.zip"
211 DBXML_URL="http://www.docbook.org/xml/4.5/${DBXML_PKG}"
212 DBXML_MD5="03083e288e87a7e829e437358da7ef9e"
213 # DocBook XSL
214# DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2"
215# DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}"
216# DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552"
217 # Lynx
218 LYNX_PKG="lynx2.8.8dev.10.tar.bz2"
219 LYNX_URL="http://lynx.isc.org/current/${LYNX_PKG}"
220 LYNX_MD5="1c9ef3746520c69914b461f88de6b12e"
221 # sudo
222 SUDO_PKG="sudo-1.8.2.tar.gz"
223 SUDO_URL="http://www.sudo.ws/sudo/dist/${SUDO_PKG}"
224 SUDO_MD5="000f458e7391be9fdf459a9ad6a4912a"
225 # wget
226 WGET_PKG="wget-1.13.4.tar.xz"
227 WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}"
228 WGET_MD5="7f518b3a71e9efd330e9a0c3714f8463"
229 # SQLite (for subversion)
230 SQLITE_PKG="sqlite-autoconf-3071000.tar.gz"
231 SQLITE_URL="http://sqlite.org/${SQLITE_PKG}"
232 SQLITE_MD5="9ed2ca93577b58cfa0d01f64b9312ab9"
233 # Apache Portable Runtime (for subversion)
234 APR_PKG="apr-1.4.5.tar.bz2"
235 APR_URL="http://mirror.speednetwork.de/apache/apr/$APR_PKG"
236 APR_MD5="8b53f5a5669d0597f2da889a2f576eb6"
237 # APR config patch
238 APR_PATCH_1="apr-1.4.5-config.patch"
239 APR_PATCH_1_URL="file:///sources/local-patches/${APR_PATCH_1}"
240 APR_PATCH_1_MD5="fff6eddf998f4e956915f8053c15e41e"
241 # Apache Portable Runtime Utilities (for subversion)
242 APR_U_PKG="apr-util-1.4.1.tar.bz2"
243 APR_U_URL="http://mirrors.ircam.fr/pub/apache/apr/$APR_U_PKG"
244 APR_U_MD5="52b31b33fb1aa16e65ddaefc76e41151"
245 # APR-util config patch
246 APR_U_PATCH_1="apr-util-1.4.1-config.patch"
247 APR_U_PATCH_1_URL="file:///sources/local-patches/${APR_U_PATCH_1}"
248 APR_U_PATCH_1_MD5="4c07cb0d298ae9ddc75cd2d5acdedb2b"
249 # Subversion
250 SVN_PKG="subversion-1.7.1.tar.bz2"
251 SVN_URL="http://archive.apache.org/dist/subversion/${SVN_PKG}"
252 SVN_MD5="8a4fa74385df85a9702141b6b68b8307"
253 # GPM
254 GPM_PKG="gpm-1.20.6.tar.bz2"
255 GPM_URL="http://www.nico.schottelius.org/software/gpm/archives/$GPM_PKG"
256 GPM_MD5="6b534da16dc1b28ba828dea89e520f6f"
257fi
258
259#--- Envars not sourced from configuration
260case $PROGNAME in
261# TODO: clfs is now on git
262# clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;;
263 * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;;
264esac
265declare -r LOG=000-masterscript.log
266 # Needed for fetching BLFS book sources when building CLFS
267declare -r SVN_2="svn://svn.linuxfromscratch.org"
268
269# Set true internal variables
270COMMON_DIR="common"
271PACKAGE_DIR=$(echo $PROGNAME | tr '[a-z]' '[A-Z]')
272MODULE=$PACKAGE_DIR/master.sh
273PKGMNGTDIR="pkgmngt"
274# The name packageManager.xml is hardcoded in *.xsl, so no variable.
275
276[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..."
277source $COMMON_DIR/common-functions
278[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit
279[[ $VERBOSITY > 0 ]] && echo "OK"
280[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..."
281source $MODULE
282[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
283[[ $VERBOSITY > 0 ]] && echo "OK"
284#
285[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
286
287
288#*******************************************************************#
289[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_check_version.sh>..."
290source $COMMON_DIR/libs/func_check_version.sh
291[[ $? > 0 ]] && echo " function module did not load.." && exit 2
292[[ $VERBOSITY > 0 ]] && echo "OK"
293
294[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_validate_configs.sh>..."
295source $COMMON_DIR/libs/func_validate_configs.sh
296[[ $? > 0 ]] && echo " function module did not load.." && exit 2
297[[ $VERBOSITY > 0 ]] && echo "OK"
298
299[[ $VERBOSITY > 0 ]] && echo -n "Loading function <func_custom_pkgs>..."
300source $COMMON_DIR/libs/func_custom_pkgs
301[[ $? > 0 ]] && echo " function module did not load.." && exit 2
302[[ $VERBOSITY > 0 ]] && echo "OK"
303
304
305[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}"
306
307
308###################################
309### MAIN ###
310###################################
311
312# Check for build prerequisites.
313echo
314 check_prerequisites
315echo "${SD_BORDER}${nl_}"
316
317validate_config
318echo "${SD_BORDER}${nl_}"
319echo -n "Are you happy with these settings? yes/no (no): "
320read ANSWER
321if [ x$ANSWER != "xyes" ] ; then
322 echo "${nl_}Rerun make to fix the configuration options.${nl_}"
323 exit 1
324fi
325echo "${nl_}${SD_BORDER}${nl_}"
326
327# Load additional modules or configuration files based on global settings
328# compare module
329if [[ "$COMPARE" = "y" ]]; then
330 [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..."
331 source $COMMON_DIR/libs/func_compare.sh
332 [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit
333 [[ $VERBOSITY > 0 ]] && echo "OK"
334fi
335#
336# optimize module
337if [[ "$OPTIMIZE" != "0" ]]; then
338 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..."
339 source optimize/optimize_functions
340 [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit
341 [[ $VERBOSITY > 0 ]] && echo "OK"
342 #
343 # optimize configurations
344 [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..."
345 source optimize/opt_config
346 [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
347 [[ $VERBOSITY > 0 ]] && echo "OK"
348 # Validate optimize settings, if required
349 validate_opt_settings
350fi
351#
352
353if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then
354
355 # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run
356 # and notify the user about that.
357 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then
358 eval "$no_empty_builddir"
359 fi
360
361 # If requested, clean the build directory
362 clean_builddir
363
364 if [[ ! -d $JHALFSDIR ]]; then
365 mkdir -p $JHALFSDIR
366 fi
367
368 # Create $BUILDDIR/sources even though it could be created by get_sources()
369 if [[ ! -d $BUILDDIR/sources ]]; then
370 mkdir -p $BUILDDIR/sources
371 fi
372 #
373 # Create the log directory
374 if [[ ! -d $LOGDIR ]]; then
375 mkdir $LOGDIR
376 fi
377 >$LOGDIR/$LOG
378 #
379 # Copy common helper files
380 cp $COMMON_DIR/{makefile-functions,progress_bar.sh,packages.xsl} $JHALFSDIR/
381 #
382 # Fix the XSL book parser
383 sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL}
384 export XSL=$JHALFSDIR/${XSL}
385 #
386
387 # Copy packageManager.xml, if needed
388 [[ "$PKGMNGT" = "y" ]] && [[ "$PROGNAME" = "lfs" ]] &&
389 cp $PKGMNGTDIR/packageManager.xml $JHALFSDIR/ &&
390 cp $PKGMNGTDIR/packInstall.sh $JHALFSDIR/
391 #
392 # Copy urls.xsl, if needed
393 [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/
394 #
395 # Copy APR patches, if needed
396 [[ "$DEP_SVN" = "y" ]] &&
397 cp $COMMON_DIR/blfs-tool-deps/apr*.patch $BUILDDIR/sources
398 #
399 # Create the test-log directory, if needed
400 [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR
401 #
402 # Create the installed-files directory, if needed
403 [[ "$INSTALL_LOG" = "y" ]] && [[ ! -d $FILELOGDIR ]] && install -d -m 1777 $FILELOGDIR
404 #
405 # Prepare report creation, if needed
406 if [[ "$REPORT" = "y" ]]; then
407 cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/
408 # After making sure that all looks sane, dump the settings to a file
409 # This file will be used to create the REPORT header
410 validate_config > $JHALFSDIR/jhalfs.config
411 fi
412 #
413 # Copy optimize files, if needed
414 [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/
415 #
416 # Copy compare files, if needed
417 if [[ "$COMPARE" = "y" ]]; then
418 mkdir -p $JHALFSDIR/extras
419 cp extras/* $JHALFSDIR/extras
420 fi
421 #
422
423 # Copy custom tools config files, if requested
424 if [[ "${CUSTOM_TOOLS}" = "y" ]]; then
425 echo "Copying custom tool scripts to $JHALFSDIR"
426 mkdir -p $JHALFSDIR/custom-commands
427 cp -f custom/config/* $JHALFSDIR/custom-commands
428 fi
429 #
430 # Install blfs-tool, if requested.
431 if [[ "${BLFS_TOOL}" = "y" ]] ; then
432 # Install the files
433 [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT}
434 cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
435 cp -r menu ${BUILDDIR}${BLFS_ROOT}
436 cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
437 cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
438 # Clean-up
439 rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn
440 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn
441 rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn
442 # Set some harcoded envars to their proper values
443 sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl}
444 sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh}
445 # Copy the dependencies build scripts
446 cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/
447 rm -rf $JHALFSDIR/blfs-tool-deps/.svn
448 fi
449 #
450
451 get_book
452 echo "${SD_BORDER}${nl_}"
453
454 # Get the BLFS book, if requested.
455 if [[ "${BLFS_TOOL}" = "y" ]] ; then
456 echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... "
457 if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then
458 mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML}
459 svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1
460 else
461 pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null
462 svn up >>$LOGDIR/$LOG 2>&1
463 popd 1> /dev/null
464 fi
465 echo -ne "done\n"
466 echo "${SD_BORDER}${nl_}"
467 fi
468
469fi
470
471# When regenerating the Makefile, we need to know also the canonical book version
472if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
473 case $PROGNAME in
474 clfs | clfs2 | clfs3 )
475 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
476 *)
477 VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
478 esac
479fi
480
481build_Makefile
482
483echo "${SD_BORDER}${nl_}"
484
485run_make
Note: See TracBrowser for help on using the repository browser.