Changeset c103baa
- Timestamp:
- 01/23/2006 08:11:45 PM (18 years ago)
- Branches:
- 1.0, 2.3, 2.3.x, 2.4, ablfs, ablfs-more, legacy, new_features, trunk
- Children:
- b7da946
- Parents:
- aa71d75
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
HLFS/jhahlfs
raa71d75 rc103baa 1 1 #!/bin/sh 2 set -e 3 set -u 4 2 set -e # Enable error trapping 3 set -u # Trap undefined variables.. Forces the programmer 4 # to define a variable before using it 5 5 6 6 # … … 44 44 WC=${BOOK:+1} 45 45 46 CLEAN=0 47 DL= 48 PREV= 46 CLEAN=0 # Clean out build dir? 47 DL= # The download app to use 48 PREV= # name of previous script processed 49 49 chapter5= 50 50 chapter6= … … 80 80 81 81 version=" 82 jhahlfs development \$Date : 2005-12-20 20:39:13 +0000 (Tue, 20 Dec 2005)$82 jhahlfs development \$Date$ 83 83 84 84 Written by George Boudreau … … 128 128 ${DD_BORDER} 129 129 -EOF- 130 130 exit 131 131 } 132 132 … … 136 136 137 137 no_empty_builddir() { 138 138 'clear' 139 139 cat <<- -EOF- 140 140 ${DD_BORDER} … … 150 150 ${DD_BORDER} 151 151 -EOF- 152 152 exit 153 153 } 154 154 … … 173 173 # If +e then disable text output 174 174 if [[ "$-" =~ "e" ]]; then 175 175 echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2 176 176 fi 177 177 } … … 180 180 echo -e "\n\t${BOLD}${WHITE}Goodbye and thank you for choosing ${YELLOW}JHAHLFS\n${OFF}" 181 181 } 182 ##### 183 # 184 # 185 # 186 # 187 # 188 # 189 # 190 # 191 # 182 ##### Simple error TRAPS 183 # ctrl-c SIGINT 184 # ctrl-y 185 # ctrl-z SIGTSTP 186 # SIGHUP 1 HANGUP 187 # SIGINT 2 INTRERRUPT FROM KEYBOARD Ctrl-C 188 # SIGQUIT 3 189 # SIGKILL 9 KILL 190 # SIGTERM 15 TERMINATION 191 # SIGSTOP 17,18,23 STOP THE PROCESS 192 192 ##### 193 193 set -e … … 205 205 check_requirements() { # Simple routine to validate gcc and kernel versions against requirements 206 206 #----------------------------# 207 208 # bash3.0>209 # gcc3.0>210 # kernel2.6.2>211 212 213 214 215 216 207 # Minimum values acceptable 208 # bash 3.0> 209 # gcc 3.0> 210 # kernel 2.6.2> 211 212 [[ $1 = "1" ]] && echo "${nl_}BASH: ${L_arrow}${GREEN}${BASH_VERSION}${R_arrow}" 213 case $BASH_VERSION in 214 [3-9].*) ;; 215 *) 'clear' 216 echo -e " 217 217 $DD_BORDER 218 218 \t\t${OFF}${RED}BASH version ${BOLD}${YELLOW}-->${WHITE} $BASH_VERSION ${YELLOW}<--${OFF}${RED} is too old. 219 219 \t\t This script requires 3.0${OFF}${RED} or greater 220 220 $DD_BORDER" 221 222 223 224 225 221 exit 1 222 ;; 223 esac 224 225 [[ $1 = "1" ]] && echo "GCC: ${L_arrow}${GREEN}`gcc -dumpversion`${R_arrow}" 226 226 case `gcc -dumpversion` in 227 228 229 227 [3-9].[0-9].* ) ;; 228 *) 'clear' 229 echo -e " 230 230 $DD_BORDER 231 231 \t\t${OFF}${RED}GCC version ${BOLD}${YELLOW}-->${WHITE} $(gcc -dumpversion) ${YELLOW}<--${OFF}${RED} is too old. 232 232 \t\t This script requires ${BOLD}${WHITE}3.0${OFF}${RED} or greater 233 233 $DD_BORDER" 234 235 234 exit 1 235 ;; 236 236 esac 237 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 238 # 239 # >>>> Check kernel version against the minimum acceptable level <<<< 240 # 241 [[ $1 = "1" ]] && echo "LINUX: ${L_arrow}${GREEN}`uname -r`${R_arrow}" 242 243 local IFS 244 declare -i major minor revision change 245 min_kernel_vers=2.6.2 246 247 IFS=".-" # Split up w.x.y.z as well as w.x.y-rc (catch release candidates) 248 set -- $min_kernel_vers # set postional parameters to minimum ver values 249 major=$1; minor=$2; revision=$3 250 # 251 set -- `uname -r` # Set postional parameters to user kernel version 252 #Compare against minimum acceptable kernel version.. 253 (( $1 > major )) && return 254 (( $1 == major )) && ((( $2 > minor )) || 255 ((( $2 == minor )) && (( $3 >= revision )))) && return 256 257 # oops.. write error msg and die 258 echo -e " 259 259 $DD_BORDER 260 260 \t\t${OFF}${RED}The kernel version ${BOLD}${YELLOW}-->${WHITE} $(uname -r) ${YELLOW}<--${OFF}${RED} is too old. 261 261 \t\tThis script requires version ${BOLD}${WHITE}$min_kernel_vers${OFF}${RED} or greater 262 262 $DD_BORDER" 263 263 exit 1 264 264 } 265 265 … … 268 268 validate_config() { # Are the config values sane (within reason) 269 269 #----------------------------# 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 BUILDDIR)# We cannot have an <empty> or </> root mount point287 288 289 290 continue;;291 HPKG) validation_str="x0x x1x";;292 RUNMAKE) validation_str="x0x x1x";;293 TEST) validation_str="x0x x1x";;294 STRIP) validation_str="x0x x1x";;295 VIMLANG) validation_str="x0x x1x";;296 TOOLCHAINTEST) validation_str="x0x x1x";;297 GRSECURITY_HOST) validation_str="x0x x1x";;298 299 MODEL) validation_str="xglibcx xuclibcx";;300 PAGE) validation_str="xletterx xA4x";;301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 270 local -r PARAM_LIST="BUILDDIR HPKG MODEL TEST TOOLCHAINTEST STRIP VIMLANG PAGE GRSECURITY_HOST RUNMAKE" 271 local -r ERROR_MSG='${OFF}${RED}The variable \"${GREEN}${config_param}${RED}\" value ${BOLD}${YELLOW}--\>${WHITE}${!config_param}${YELLOW}\<--${OFF}${RED} is invalid, check the config file ${GREEN}\<jhahlfs.conf\>${OFF}' 272 local -r PARAM_VALS='${WHITE}${config_param}: ${L_arrow}${GREEN}${!config_param}${R_arrow}' 273 local config_param 274 local validation_str 275 276 write_error_and_die() { 277 echo -e "\n${DD_BORDER}" 278 echo "`eval echo ${ERROR_MSG}`" >&2 279 echo -e "${DD_BORDER}\n" 280 exit 1 281 } 282 set +e 283 for config_param in $PARAM_LIST; do 284 [[ $1 = "1" ]] && echo -e "`eval echo $PARAM_VALS`" 285 case $config_param in 286 BUILDDIR) # We cannot have an <empty> or </> root mount point 287 if [[ "xx x/x" =~ "x${!config_param}x" ]]; then 288 write_error_and_die 289 fi 290 continue ;; 291 HPKG) validation_str="x0x x1x" ;; 292 RUNMAKE) validation_str="x0x x1x" ;; 293 TEST) validation_str="x0x x1x" ;; 294 STRIP) validation_str="x0x x1x" ;; 295 VIMLANG) validation_str="x0x x1x" ;; 296 TOOLCHAINTEST) validation_str="x0x x1x" ;; 297 GRSECURITY_HOST) validation_str="x0x x1x" ;; 298 299 MODEL) validation_str="xglibcx xuclibcx" ;; 300 PAGE) validation_str="xletterx xA4x" ;; 301 *) 302 echo "WHAT PARAMETER IS THIS.. <<${config_param}>>" 303 exit 304 ;; 305 esac 306 # This is the 'regexp' test available in bash-3.0.. 307 # using it as a poor man's test for substring 308 if [[ ! "${validation_str}" =~ "x${!config_param}x" ]] ; then 309 # parameter value entered is no good 310 write_error_and_die 311 fi 312 done # for loop 313 314 for config_param in LC_ALL LANG; do 315 [[ $1 = "1" ]] && echo "`eval echo $PARAM_VALS`" 316 [[ -z "${!config_param}" ]] && continue 317 # See it the locale values exist on this machine 318 [[ "`locale -a | grep -c ${!config_param}`" > 0 ]] && continue 319 320 # If you make it this far then there is a problem 321 write_error_and_die 322 done 323 324 for config_param in FSTAB CONFIG KEYMAP BOOK; do 325 [[ $1 = "1" ]] && echo "`eval echo $PARAM_VALS`" 326 # If this is not a working copy, ie the default book, then skip 327 [[ -z $WC ]] && continue 328 [[ -z "${!config_param}" ]] && continue 329 [[ -e "${!config_param}" ]] && [[ -s "${!config_param}" ]] && continue 330 331 # If you make it this far then there is a problem 332 write_error_and_die 333 done 334 335 set -e 336 echo "$tab_${BOLD}${YELLOW} Config parameters look good${OFF}${nl_}" 337 337 } 338 338 … … 344 344 345 345 LOC_add_patches_entry() { 346 347 348 346 for f in `grep "/$1-" patcheslist_.wget`; do 347 basename $f | sed "s|${2}|\&${1}-version;|" >> patches 348 done 349 349 } 350 350 351 351 xsltproc --nonet \ 352 353 354 355 352 --xinclude \ 353 -o patcheslist_.wget \ 354 hlfs-patcheslist_.xsl \ 355 $BOOK/index.xml > /dev/null 2>&1 356 356 357 357 rm -f patches … … 359 359 IFS=$'\x0A' # Modify the 'internal field separator' to break on 'LF' only 360 360 for f in `cat packages`; do 361 362 363 364 365 366 361 IFS=$saveIFS 362 LOC_add_patches_entry \ 363 `echo $f | sed -e 's/-version//' \ 364 -e 's/-file.*//' \ 365 -e 's/"//g' \ 366 -e 's/uclibc/uClibc/'` 367 367 done 368 368 369 370 371 372 369 # .... U G L Y .... what to do with the grsecurity patch to the kernel.. 370 for f in `grep "/grsecurity-" patcheslist_.wget`; do 371 basename $f >> patches 372 done 373 373 374 374 IFS=$saveIFS … … 415 415 416 416 echo -n "Downloading the HLFS Book, version $HLFSVRS... " 417 # Grab a fresh HLFS book if it's missing, otherwise, update it from the 418 # repo. If we've already extracted the commands, move on to getting the 419 # sources. 420 if [ -d hlfs-$HLFSVRS ] ; then 421 cd hlfs-$HLFSVRS 422 if LC_ALL=C svn up | grep -q At && \ 423 test -d $JHAHLFSDIR/commands && \ 424 test -f $JHAHLFSDIR/packages && \ 425 test -f $JHAHLFSDIR/patches ; then 426 echo -ne "done\n" 427 # Set the canonical book version 428 cd $JHAHLFSDIR 429 VERSION=`grep "ENTITY version " $BOOK/general.ent | sed 's@<!ENTITY version "@@;s@">@@'` 430 get_sources 431 else 432 echo -ne "done\n" 433 extract_commands 434 fi 417 # Grab a fresh HLFS book if it's missing, otherwise, update it from the 418 # repo. If we've already extracted the commands, move on to getting the 419 # sources. 420 if [ -d hlfs-$HLFSVRS ] ; then 421 cd hlfs-$HLFSVRS 422 if LC_ALL=C svn up | grep -q At && \ 423 test -d $JHAHLFSDIR/commands && \ 424 test -f $JHAHLFSDIR/packages && \ 425 test -f $JHAHLFSDIR/patches ; then 426 echo -ne "done\n" 427 # Set the canonical book version 428 cd $JHAHLFSDIR 429 VERSION=`grep "ENTITY version " $BOOK/general.ent | sed 's@<!ENTITY version "@@;s@">@@'` 430 get_sources 431 else 432 echo -ne "done\n" 433 extract_commands 434 fi 435 else 436 case $HLFSVRS in 437 development) 438 svn co $SVN/HLFS/trunk/BOOK hlfs-$HLFSVRS >>$LOGDIR/$LOG 2>&1 439 ;; 440 *) echo -e "${RED}Invalid document version selected${OFF}" 441 ;; 442 esac 443 echo -ne "done\n" 444 extract_commands 445 fi 435 446 else 436 case $HLFSVRS in 437 development) 438 svn co $SVN/HLFS/trunk/BOOK hlfs-$HLFSVRS >>$LOGDIR/$LOG 2>&1 439 ;; 440 *) echo -e "${RED}Invalid document version selected${OFF}" 441 ;; 442 esac 443 echo -ne "done\n" 444 extract_commands 445 fi 446 else 447 echo -ne "Using $BOOK as book's sources ...\n" 447 echo -ne "Using $BOOK as book's sources ...\n" 448 448 extract_commands 449 449 fi … … 453 453 extract_commands() { # 454 454 #----------------------------# 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 455 # Check for libxslt instead of just letting the script hit 'xsltproc' and fail. 456 test `type -p xsltproc` || eval "echo \"This feature requires libxslt.\" 457 exit 1" 458 459 cd $JHAHLFSDIR 460 VERSION=`grep "ENTITY version " $BOOK/general.ent | sed 's@<!ENTITY version "@@;s@">@@'` 461 462 # Start clean 463 if [ -d commands ]; then 464 rm -rf commands 465 mkdir -v commands 466 fi 467 echo -n "Extracting commands..." 468 469 # Dump the commands in shell script form from the HLFS book. 470 xsltproc --nonet \ 471 --xinclude \ 472 --stringparam model $MODEL \ 473 --stringparam testsuite $TEST \ 474 --stringparam toolchaintest $TOOLCHAINTEST \ 475 --stringparam vim-lang $VIMLANG \ 476 -o ./commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 477 478 # Make the scripts executable. 479 chmod -R +x $JHAHLFSDIR/commands 480 481 # Grab the patches and package names. 482 cd $JHAHLFSDIR 483 for i in patches packages ; do rm -f $i ; done 484 grep "\-version" $BOOK/general.ent | sed -e 's@<!ENTITY @@' -e 's@">@"@' \ 485 -e '/generic/d' >> packages 486 487 # Download the vim-lang package if it must be installed 488 if [ "$VIMLANG" = "1" ] ; then 489 echo `grep "vim" packages | sed 's@vim@&-lang@'` >> packages 490 fi 491 echo `grep "udev-config-file" $BOOK/general.ent | sed -e 's@<!ENTITY @@' -e 's@">@"@'` >> packages 492 493 # There is no HLFS patches.ent file so we will create one. 494 build_patches_file 495 495 # grep "ENTITY" $BOOK/patches.ent | sed -e 's/.* "//' -e 's/">//' >> patches 496 496 497 498 499 497 # Done. Moving on... 498 echo -ne "done\n" 499 get_sources 500 500 } 501 501 … … 505 505 cd $BUILDDIR/sources 506 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 wget ) wget $HTTP/$DIR/$2;;528 curl ) `curl -# $HTTP/$DIR/$2 -o $2`;;529 * ) echo "$DL not supported at this time.";;530 531 532 533 wget ) wget -c $HTTP/$DIR/$2;;534 curl ) `curl -# -C - $HTTP/$DIR/$2 -o $2`;;535 * ) echo "$DL not supported at this time.";;536 537 538 539 540 541 542 543 544 507 # Hackish fix for the bash-doc, glibc-{linuxthreads,libidn} and 508 # module-init-tools-testsuite packages that don't conform to 509 # norms in the URL scheme. 510 DIR=`echo $1 | sed 's@-doc@@;s@-linuxthreads@@;s@-libidn@@;s@-testsuite@@'` 511 512 # Find the md5 sum for this package. 513 if [ $2 != MD5SUMS ] ; then 514 set +e 515 MD5=`grep " $2" MD5SUMS` 516 if [ $? -ne 0 ]; then 517 set -e 518 echo "${RED}$2 not found in MD5SUMS${OFF}" 519 echo "$2 not found in MD5SUMS" >> MISSING_FILES.DMP 520 return 521 fi 522 set -e 523 fi 524 525 if [ ! -f $2 ] ; then 526 case $DL in 527 wget ) wget $HTTP/$DIR/$2 ;; 528 curl ) `curl -# $HTTP/$DIR/$2 -o $2` ;; 529 * ) echo "$DL not supported at this time." ;; 530 esac 531 elif ! echo "$MD5" | md5sum -c - >/dev/null 2>/dev/null ; then 532 case $DL in 533 wget ) wget -c $HTTP/$DIR/$2 ;; 534 curl ) `curl -# -C - $HTTP/$DIR/$2 -o $2` ;; 535 * ) echo "$DL not supported at this time." ;; 536 esac 537 fi 538 539 if [ $2 != MD5SUMS ] && ! echo "$MD5" | md5sum -c - ; then 540 exit 1 541 fi 542 if [ $2 != MD5SUMS ] ; then 543 echo `grep "$MD5" MD5SUMS` >> MD5SUMS-$VERSION 544 fi 545 545 } 546 546 … … 551 551 local IFS 552 552 553 554 555 556 553 # Test if the packages must be downloaded 554 if [ ! "$HPKG" = "1" ] ; then 555 return 556 fi 557 557 558 558 # Modify the 'internal field separator' to break on 'LF' only 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 559 IFS=$'\x0A' 560 561 if [ ! -d $BUILDDIR/sources ] ; then mkdir $BUILDDIR/sources ; fi 562 cd $BUILDDIR/sources 563 564 > MISSING_FILES.DMP # Files not in md5sum end up here 565 566 if [ -f MD5SUMS ] ; then rm MD5SUMS ; fi 567 if [ -f MD5SUMS-$VERSION ] ; then rm MD5SUMS-$VERSION ; fi 568 569 # Retrieve the master md5sum file 570 download "" MD5SUMS 571 572 # Iterate through each package and grab it, along with any patches it needs. 573 for i in `cat $JHAHLFSDIR/packages` ; do 574 574 PKG=`echo $i | sed -e 's/-version.*//' \ 575 576 577 578 579 580 581 582 583 584 585 586 "expect-lib" )continue ;; # not valid packages587 "linux-dl" )continue ;;588 "groff-patchlevel" )continue ;;589 "uClibc-patch" )continue ;;590 591 "tcl" ) FILE="$PKG$VRS-src.tar.bz2" ; download $PKG $FILE;;592 "vim-lang" ) FILE="vim-$VRS-lang.tar.bz2"; PKG="vim" ; download $PKG $FILE;;593 "udev-config" ) FILE="$VRS" ; PKG="udev" ; download $PKG $FILE;;594 595 596 597 598 599 600 "gcc" )download $PKG "gcc-core-$VRS.tar.bz2"601 602 603 "glibc")download $PKG "$PKG-$VRS.tar.bz2"604 605 606 * )FILE="$PKG-$VRS.tar.bz2"607 608 575 -e 's/-file.*//' \ 576 -e 's/uclibc/uClibc/' ` 577 578 # Needed for Groff patchlevel patch on UTF-8 branch 579 GROFFLEVEL=`grep "groff-patchlevel" $JHAHLFSDIR/packages | sed -e 's/groff-patchlevel //' -e 's/"//g'` 580 581 # 582 # How to deal with orphan packages..?? 583 # 584 VRS=`echo $i | sed -e 's/.* //' -e 's/"//g'` 585 case "$PKG" in 586 "expect-lib" ) continue ;; # not valid packages 587 "linux-dl" ) continue ;; 588 "groff-patchlevel" ) continue ;; 589 "uClibc-patch" ) continue ;; 590 591 "tcl" ) FILE="$PKG$VRS-src.tar.bz2" ; download $PKG $FILE ;; 592 "vim-lang" ) FILE="vim-$VRS-lang.tar.bz2"; PKG="vim" ; download $PKG $FILE ;; 593 "udev-config" ) FILE="$VRS" ; PKG="udev" ; download $PKG $FILE ;; 594 595 "uClibc-locale" ) FILE="$PKG-$VRS.tar.bz2" ; PKG="uClibc" 596 download $PKG $FILE 597 # There can be no patches for this file 598 continue ;; 599 600 "gcc" ) download $PKG "gcc-core-$VRS.tar.bz2" 601 download $PKG "gcc-g++-$VRS.tar.bz2" 602 ;; 603 "glibc") download $PKG "$PKG-$VRS.tar.bz2" 604 download $PKG "$PKG-libidn-$VRS.tar.bz2" 605 ;; 606 * ) FILE="$PKG-$VRS.tar.bz2" 607 download $PKG $FILE 608 ;; 609 609 esac 610 610 … … 616 616 done 617 617 618 619 620 621 622 623 624 625 626 618 # .... U G L Y .... what to do with the grsecurity patch to the kernel.. 619 download grsecurity `grep grsecurity $JHAHLFSDIR/patches` 620 621 # .... U G L Y .... deal with uClibc-locale-xxxxx.tar.bz2 format issue. 622 bzcat uClibc-locale-030818.tar.bz2 | gzip > uClibc-locale-030818.tgz 623 624 if [[ -s $BUILDDIR/sources/MISSING_FILES.DMP ]]; then 625 echo -e "\n\n${tab_}${RED} One or more files were not retrieved.\n${tab_} Check <MISSING_FILES.DMP> for names ${OFF}\n\n" 626 fi 627 627 } 628 628 … … 644 644 local TARGET LOADER 645 645 646 echo "${YELLOW} 647 648 649 650 651 652 646 echo "${YELLOW} Processing Chapter-4 scripts ${OFF}" 647 648 # Define a few model dependant variables 649 if [[ ${MODEL} = "uclibc" ]]; then 650 TARGET="tools-linux-uclibc"; LOADER="ld-uClibc.so.0" 651 else 652 TARGET="tools-linux-gnu"; LOADER="ld-linux.so.2" 653 653 fi 654 654 655 656 657 658 655 # 022- 656 # If /home/hlfs is already present in the host, we asume that the 657 # hlfs user and group are also presents in the host, and a backup 658 # of their bash init files is made. 659 659 ( 660 660 cat << EOF 661 661 020-creatingtoolsdir: 662 663 664 665 666 667 668 669 670 662 @\$(call echo_message, Building) 663 @mkdir -v \$(HLFS)/tools && \\ 664 rm -fv /tools && \\ 665 ln -sv \$(HLFS)/tools / 666 @if [ ! -d \$(HLFS)/sources ]; then \\ 667 mkdir \$(HLFS)/sources; \\ 668 fi; 669 @chmod a+wt \$(HLFS)/sources && \\ 670 touch \$@ 671 671 672 672 021-addinguser: 020-creatingtoolsdir 673 674 675 676 677 678 679 680 681 682 673 @\$(call echo_message, Building) 674 @if [ ! -d /home/hlfs ]; then \\ 675 groupadd hlfs; \\ 676 useradd -s /bin/bash -g hlfs -m -k /dev/null hlfs; \\ 677 else \\ 678 touch user-hlfs-exist; \\ 679 fi; 680 @chown hlfs \$(HLFS)/tools && \\ 681 chown hlfs \$(HLFS)/sources && \\ 682 touch \$@ 683 683 684 684 022-settingenvironment: 021-addinguser 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 685 @\$(call echo_message, Building) 686 @if [ -f /home/hlfs/.bashrc -a ! -f /home/hlfs/.bashrc.XXX ]; then \\ 687 mv -v /home/hlfs/.bashrc /home/hlfs/.bashrc.XXX; \\ 688 fi; 689 @if [ -f /home/hlfs/.bash_profile -a ! -f /home/hlfs/.bash_profile.XXX ]; then \\ 690 mv -v /home/hlfs/.bash_profile /home/hlfs/.bash_profile.XXX; \\ 691 fi; 692 @echo "set +h" > /home/hlfs/.bashrc && \\ 693 echo "umask 022" >> /home/hlfs/.bashrc && \\ 694 echo "HLFS=/mnt/hlfs" >> /home/hlfs/.bashrc && \\ 695 echo "LC_ALL=POSIX" >> /home/hlfs/.bashrc && \\ 696 echo "PATH=/tools/bin:/bin:/usr/bin" >> /home/hlfs/.bashrc && \\ 697 echo "export HLFS LC_ALL PATH" >> /home/hlfs/.bashrc && \\ 698 echo "" >> /home/hlfs/.bashrc && \\ 699 echo "target=$(uname -m)-${TARGET}" >> /home/hlfs/.bashrc && \\ 700 echo "ldso=/tools/lib/${LOADER}" >> /home/hlfs/.bashrc && \\ 701 echo "export target ldso" >> /home/hlfs/.bashrc && \\ 702 echo "source $JHAHLFSDIR/envars" >> /home/hlfs/.bashrc && \\ 703 chown hlfs:hlfs /home/hlfs/.bashrc && \\ 704 touch envars && \\ 705 touch \$@ 706 706 EOF 707 707 ) >> $MKFILE.tmp … … 713 713 #----------------------------# 714 714 715 echo "${YELLOW}Processing Chapter-5 scripts${OFF}"715 echo "${YELLOW} Processing Chapter-5 scripts${OFF}" 716 716 717 717 for file in chapter05/* ; do … … 720 720 721 721 # Skip this script depending on jhahlfs.conf flags set. 722 case $this_script in 723 # If no testsuites will be run, then TCL, Expect and DejaGNU aren't needed 724 *tcl* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 725 *expect* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 726 *dejagnu* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 727 # Test if the stripping phase must be skipped 728 *stripping* ) [[ "$STRIP" = "0" ]] && continue ;; 729 # Select the appropriate library 730 *glibc*) [[ ${MODEL} = "uclibc" ]] && continue ;; 731 *uclibc*) [[ ${MODEL} = "glibc" ]] && continue ;; 732 *) ;; 733 esac 734 735 # First append each name of the script files to a list (this will become 736 # the names of the targets in the Makefile 737 chapter5="$chapter5 $this_script" 738 739 # Grab the name of the target (minus the -headers or -cross in the case of gcc 740 # and binutils in chapter 5) 741 name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-cross@@' -e 's@-headers@@'` 742 743 # >>>>>>>>>> U G L Y <<<<<<<<< 744 # Adjust 'name' and patch a few scripts on the fly.. 745 case $name in 746 linux-libc) name=linux-libc-headers 747 ;; 748 uclibc) # this sucks as method to deal with gettext/libint inside uClibc 749 sed 's@^cd gettext-runtime@cd ../gettext-*/gettext-runtime@' -i chapter05/$this_script 750 ;; 751 gcc) # to compensate for the compiler test inside gcc (which fails), disable error trap 752 sed 's@^gcc -o test test.c@set +e; gcc -o test test.c@' -i chapter05/$this_script 753 ;; 754 esac 755 756 # Set the dependency for the first target. 757 if [ -z $PREV ] ; then PREV=022-settingenvironment ; fi 758 759 760 #--------------------------------------------------------------------# 761 # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # 762 #--------------------------------------------------------------------# 763 # 764 # Drop in the name of the target on a new line, and the previous target 765 # as a dependency. Also call the echo_message function. 766 echo -e "\n$this_script: $PREV 767 @\$(call echo_message, Building)" >> $MKFILE.tmp 768 769 # Find the version of the command files, if it corresponds with the building of 770 # a specific package 771 vrs=`grep "^$name-version" $JHAHLFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` 772 # If $vrs isn't empty, we've got a package... 773 if [ "$vrs" != "" ] ; then 774 # Deal with non-standard names 775 case $name in 776 tcl) FILE="$name$vrs-src.tar" ;; 777 uclibc) FILE="uClibc-$vrs.tar" ;; 778 gcc) FILE=gcc-core-$vrs.tar ;; 779 *) FILE="$name-$vrs.tar" ;; 722 case $this_script in 723 # If no testsuites will be run, then TCL, Expect and DejaGNU aren't needed 724 *tcl* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 725 *expect* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 726 *dejagnu* ) [[ "$TOOLCHAINTEST" = "0" ]] && continue; ;; 727 # Test if the stripping phase must be skipped 728 *stripping* ) [[ "$STRIP" = "0" ]] && continue ;; 729 # Select the appropriate library 730 *glibc*) [[ ${MODEL} = "uclibc" ]] && continue ;; 731 *uclibc*) [[ ${MODEL} = "glibc" ]] && continue ;; 732 *) ;; 733 esac 734 735 # First append each name of the script files to a list (this will become 736 # the names of the targets in the Makefile 737 chapter5="$chapter5 $this_script" 738 739 # Grab the name of the target (minus the -headers or -cross in the case of gcc 740 # and binutils in chapter 5) 741 name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-cross@@' -e 's@-headers@@'` 742 743 # >>>>>>>>>> U G L Y <<<<<<<<< 744 # Adjust 'name' and patch a few scripts on the fly.. 745 case $name in 746 linux-libc) name=linux-libc-headers 747 ;; 748 uclibc) # this sucks as method to deal with gettext/libint inside uClibc 749 sed 's@^cd gettext-runtime@cd ../gettext-*/gettext-runtime@' -i chapter05/$this_script 750 ;; 751 gcc) # to compensate for the compiler test inside gcc (which fails), disable error trap 752 sed 's@^gcc -o test test.c@set +e; gcc -o test test.c@' -i chapter05/$this_script 753 ;; 754 esac 755 756 # Set the dependency for the first target. 757 if [ -z $PREV ] ; then PREV=022-settingenvironment ; fi 758 759 760 #--------------------------------------------------------------------# 761 # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # 762 #--------------------------------------------------------------------# 763 # 764 # Drop in the name of the target on a new line, and the previous target 765 # as a dependency. Also call the echo_message function. 766 echo -e "\n$this_script: $PREV 767 @\$(call echo_message, Building)" >> $MKFILE.tmp 768 769 # Find the version of the command files, if it corresponds with the building of 770 # a specific package 771 vrs=`grep "^$name-version" $JHAHLFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` 772 # If $vrs isn't empty, we've got a package... 773 if [ "$vrs" != "" ] ; then 774 # Deal with non-standard names 775 case $name in 776 tcl) FILE="$name$vrs-src.tar" ;; 777 uclibc) FILE="uClibc-$vrs.tar" ;; 778 gcc) FILE=gcc-core-$vrs.tar ;; 779 *) FILE="$name-$vrs.tar" ;; 780 esac 781 # Insert instructions for unpacking the package and to set the PKGDIR variable. 782 ( 783 cat << EOF 784 @\$(call unpack,$FILE) 785 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 786 chown -R hlfs \$(HLFS)\$(SRC)/\$\$ROOT && \\ 787 echo "export PKGDIR=\$(HLFS)\$(SRC)/\$\$ROOT" > envars && \\ 788 EOF 789 ) >> $MKFILE.tmp 790 fi 791 792 case $this_script in 793 *binutils* ) # Dump the path to sources directory for later removal 794 echo -e '\techo "$(HLFS)$(SRC)/$$ROOT" >> sources-dir' >> $MKFILE.tmp 795 ;; 796 *adjusting* ) # For the Adjusting phase we must to cd to the binutils-build directory. 797 echo -e '\t@echo "export PKGDIR=$(HLFS)$(SRC)/binutils-build" > envars' >> $MKFILE.tmp 798 ;; 799 * ) # Everything else, add a true statment so we don't confuse make 800 echo -e '\ttrue' >> $MKFILE.tmp 801 ;; 780 802 esac 781 # Insert instructions for unpacking the package and to set the PKGDIR variable. 803 804 # Insert date and disk usage at the top of the log file, the script run 805 # and date and disk usage again at the bottom of the log file. 782 806 ( 783 807 cat << EOF 784 @\$(call unpack,$FILE) 785 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 786 chown -R hlfs \$(HLFS)\$(SRC)/\$\$ROOT && \\ 787 echo "export PKGDIR=\$(HLFS)\$(SRC)/\$\$ROOT" > envars && \\ 808 @echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 809 su - hlfs -c "source /home/hlfs/.bashrc && $JHAHLFSDIR/commands/$file" >>logs/$this_script 2>&1 && \\ 810 echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 788 811 EOF 789 812 ) >> $MKFILE.tmp 790 fi 791 792 case $this_script in 793 *binutils* ) # Dump the path to sources directory for later removal 794 echo -e '\techo "$(HLFS)$(SRC)/$$ROOT" >> sources-dir' >> $MKFILE.tmp 795 ;; 796 *adjusting* ) # For the Adjusting phase we must to cd to the binutils-build directory. 797 echo -e '\t@echo "export PKGDIR=$(HLFS)$(SRC)/binutils-build" > envars' >> $MKFILE.tmp 798 ;; 799 * ) # Everything else, add a true statment so we don't confuse make 800 echo -e '\ttrue' >> $MKFILE.tmp 801 ;; 802 esac 803 804 # Insert date and disk usage at the top of the log file, the script run 805 # and date and disk usage again at the bottom of the log file. 813 814 # Remove the build directory(ies) except if the package build fails 815 # (so we can review config.cache, config.log, etc.) 816 # For Binutils the sources must be retained for some time. 817 if [ "$vrs" != "" ] ; then 818 if [[ ! `_IS_ $this_script binutils` ]]; then 806 819 ( 807 820 cat << EOF 808 @echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 809 su - hlfs -c "source /home/hlfs/.bashrc && $JHAHLFSDIR/commands/$file" >>logs/$this_script 2>&1 && \\ 810 echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 821 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 822 rm -r \$(HLFS)\$(SRC)/\$\$ROOT && \\ 823 if [ -e \$(HLFS)\$(SRC)/$name-build ]; then \\ 824 rm -r \$(HLFS)\$(SRC)/$name-build; \\ 825 fi; 811 826 EOF 812 827 ) >> $MKFILE.tmp 813 814 # Remove the build directory(ies) except if the package build fails 815 # (so we can review config.cache, config.log, etc.) 816 # For Binutils the sources must be retained for some time. 817 if [ "$vrs" != "" ] ; then 818 if [[ ! `_IS_ $this_script binutils` ]]; then 828 fi 829 fi 830 831 # Remove the Binutils pass 1 sources after a successful Adjusting phase. 832 if [[ `_IS_ $this_script adjusting` ]] ; then 819 833 ( 820 834 cat << EOF 821 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 822 rm -r \$(HLFS)\$(SRC)/\$\$ROOT && \\ 823 if [ -e \$(HLFS)\$(SRC)/$name-build ]; then \\ 824 rm -r \$(HLFS)\$(SRC)/$name-build; \\ 825 fi; 826 EOF 827 ) >> $MKFILE.tmp 828 fi 829 fi 830 831 # Remove the Binutils pass 1 sources after a successful Adjusting phase. 832 if [[ `_IS_ $this_script adjusting` ]] ; then 833 ( 834 cat << EOF 835 @rm -r \`cat sources-dir\` && \\ 836 rm -r \$(HLFS)\$(SRC)/binutils-build && \\ 837 rm sources-dir 835 @rm -r \`cat sources-dir\` && \\ 836 rm -r \$(HLFS)\$(SRC)/binutils-build && \\ 837 rm sources-dir 838 838 EOF 839 839 ) >> $MKFILE.tmp … … 867 867 fi 868 868 869 echo -e "${YELLOW}Processing Chapter-6 scripts ${OFF}"869 echo -e "${YELLOW} Processing Chapter-6 scripts ${OFF}" 870 870 for file in chapter06/* ; do 871 871 # Keep the script file name … … 873 873 874 874 # Skip this script depending on jhahlfs.conf flags set. 875 876 877 878 *chroot* )continue ;;879 880 *-stripping* )[[ "$STRIP" = "0" ]] && continue ;;881 882 *glibc*)[[ ${MODEL} = "uclibc" ]] && continue ;;883 *uclibc*)[[ ${MODEL} = "glibc" ]] && continue ;;884 875 case $this_script in 876 # We'll run the chroot commands differently than the others, so skip them in the 877 # dependencies and target creation. 878 *chroot* ) continue ;; 879 # Test if the stripping phase must be skipped 880 *-stripping* ) [[ "$STRIP" = "0" ]] && continue ;; 881 # Select the appropriate library 882 *glibc*) [[ ${MODEL} = "uclibc" ]] && continue ;; 883 *uclibc*) [[ ${MODEL} = "glibc" ]] && continue ;; 884 *) ;; 885 885 esac 886 886 … … 892 892 name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` 893 893 894 895 896 894 # 895 # Sed replacement for 'nodump' tag in xml scripts until Manuel has a chance to fix them 896 # 897 897 case $name in 898 899 900 901 902 903 904 905 906 907 908 glibc)# PATCH.. Turn off error trapping for the remainder of the script.909 910 911 uclibc)# PATCH..912 913 914 915 916 917 gcc)# PATCH..918 919 898 kernfs) # Remove sysctl code if host does not have grsecurity enabled 899 if [[ "$GRSECURITY_HOST" = "0" ]]; then 900 sed '/sysctl/d' -i chapter06/$this_script 901 fi 902 ;; 903 module-init-tools) 904 if [[ "$TEST" = "0" ]]; then # This needs rework.... 905 sed '/make distclean/d' -i chapter06/$this_script 906 fi 907 ;; 908 glibc) # PATCH.. Turn off error trapping for the remainder of the script. 909 sed 's|^make install|make install; set +e|' -i chapter06/$this_script 910 ;; 911 uclibc) # PATCH.. 912 sed 's/EST5EDT/${TIMEZONE}/' -i chapter06/$this_script 913 # PATCH.. Cannot use interactive programs/scripts. 914 sed 's/make menuconfig/make oldconfig/' -i chapter06/$this_script 915 sed 's@^cd gettext-runtime@cd ../gettext-*/gettext-runtime@' -i chapter06/$this_script 916 ;; 917 gcc) # PATCH.. 918 sed 's/rm /rm -f /' -i chapter06/$this_script 919 ;; 920 920 esac 921 921 922 923 924 925 926 927 928 929 922 #--------------------------------------------------------------------# 923 # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # 924 #--------------------------------------------------------------------# 925 # 926 # Drop in the name of the target on a new line, and the previous target 927 # as a dependency. Also call the echo_message function. 928 echo -e "\n$this_script: $PREV 929 @\$(call echo_message, Building)" >> $MKFILE.tmp 930 930 931 931 # Find the version of the command files, if it corresponds with the building of … … 933 933 vrs=`grep "^$name-version" $JHAHLFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` 934 934 935 936 937 938 939 940 tcl)FILE="$name$vrs-src.tar.*" ;;941 uclibc)FILE="uClibc-$vrs.tar.*" ;;942 gcc)FILE="gcc-core-$vrs.tar.*" ;;943 *)FILE="$name-$vrs.tar.*" ;;944 935 # If $vrs isn't empty, we've got a package... 936 # Insert instructions for unpacking the package and changing directories 937 if [ "$vrs" != "" ] ; then 938 # Deal with non-standard names 939 case $name in 940 tcl) FILE="$name$vrs-src.tar.*" ;; 941 uclibc) FILE="uClibc-$vrs.tar.*" ;; 942 gcc) FILE="gcc-core-$vrs.tar.*" ;; 943 *) FILE="$name-$vrs.tar.*" ;; 944 esac 945 945 ( 946 946 cat << EOF 947 948 949 950 951 947 @\$(call unpack2,$FILE) 948 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 949 echo "export PKGDIR=\$(SRC)/\$\$ROOT" > envars && \\ 950 echo "export target=$(uname -m)-${TARGET}" >> envars && \\ 951 echo "export ldso=/lib/${LOADER}" >> envars 952 952 EOF 953 953 ) >> $MKFILE.tmp … … 955 955 956 956 case $this_script in 957 958 959 960 961 962 963 964 965 966 957 *readjusting*) # For the Re-Adjusting phase we must to cd to the binutils-build directory. 958 echo -e '\t@echo "export PKGDIR=$(SRC)/binutils-build" > envars' >> $MKFILE.tmp 959 ;; 960 *glibc* | *uclibc* ) # For glibc and uClibc we need to set TIMEZONE envar. 961 echo -e '\t@echo "export TIMEZONE=$(TIMEZONE)" >> envars' >> $MKFILE.tmp 962 ;; 963 *groff* ) # For Groff we need to set PAGE envar. 964 echo -e '\t@echo "export PAGE=$(PAGE)" >> envars' >> $MKFILE.tmp 965 ;; 966 esac 967 967 968 968 … … 971 971 ( 972 972 cat << EOF 973 974 975 973 @echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 974 export HLFS=\$(HLFS) && commands/$file >>logs/$this_script 2>&1 && \\ 975 echo -e "\n\`date\`\n\nKB: \`du -sk --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 976 976 EOF 977 977 ) >> $MKFILE.tmp … … 981 981 ( 982 982 cat << EOF 983 984 985 983 @echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 984 \$(CHROOT1) 'cd /jhahlfs && source envars && /jhahlfs/commands/$file >>/jhahlfs/logs/$this_script 2>&1' && \\ 985 echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 986 986 EOF 987 987 ) >> $MKFILE.tmp … … 992 992 ( 993 993 cat << EOF 994 995 996 997 998 994 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 995 rm -r \$(HLFS)\$(SRC)/\$\$ROOT && \\ 996 if [ -e \$(HLFS)\$(SRC)/$name-build ]; then \\ 997 rm -r \$(HLFS)\$(SRC)/$name-build; \\ 998 fi; 999 999 EOF 1000 1000 ) >> $MKFILE.tmp … … 1005 1005 ( 1006 1006 cat << EOF 1007 1008 1009 1007 @rm -r \`cat sources-dir\` && \\ 1008 rm -r \$(HLFS)\$(SRC)/binutils-build && \\ 1009 rm sources-dir 1010 1010 EOF 1011 1011 ) >> $MKFILE.tmp … … 1029 1029 #----------------------------# 1030 1030 1031 echo "${YELLOW} 1031 echo "${YELLOW} Processing Chapter-7 scripts ${OFF}" 1032 1032 for file in chapter07/*; do 1033 1033 # Keep the script file name … … 1039 1039 # password, edit several files and setup Grub. 1040 1040 case $this_script in 1041 *grub) continue;;1042 *reboot) continue;;1043 *console) continue;; # Use the file generated by lfs-bootscripts1044 1045 *kernel)# How does Manuel add this string to the file..1046 sed 's|cd \$PKGDIR.*||'-i chapter07/$this_script1047 1048 sed 's|make menuconfig|make oldconfig|'-i chapter07/$this_script1049 1050 sed 's|.patch.gz|.patch.bz2|'-i chapter07/$this_script1051 sed 's|gunzip|bunzip2|'-i chapter07/$this_script1052 1053 1054 1055 1056 sed '/loadkeys -m/d'-i chapter07/$this_script1057 sed '/drivers\/char/d'-i chapter07/$this_script1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1041 *grub) continue ;; 1042 *reboot) continue ;; 1043 *console) continue ;; # Use the file generated by lfs-bootscripts 1044 1045 *kernel) # How does Manuel add this string to the file.. 1046 sed 's|cd \$PKGDIR.*||' -i chapter07/$this_script 1047 # You cannot run menuconfig from within the makefile 1048 sed 's|make menuconfig|make oldconfig|' -i chapter07/$this_script 1049 # The files in the conglomeration dir are xxx.bz2 1050 sed 's|.patch.gz|.patch.bz2|' -i chapter07/$this_script 1051 sed 's|gunzip|bunzip2|' -i chapter07/$this_script 1052 # If defined include the keymap in the kernel 1053 if [[ -n "$KEYMAP" ]]; then 1054 sed "s|^loadkeys -m.*>|loadkeys -m $KEYMAP >|" -i chapter07/$this_script 1055 else 1056 sed '/loadkeys -m/d' -i chapter07/$this_script 1057 sed '/drivers\/char/d' -i chapter07/$this_script 1058 fi 1059 # If no .config file is supplied, the kernel build is skipped 1060 [[ -z $CONFIG ]] && continue 1061 ;; 1062 *usage) # The script bombs, disable error trapping 1063 sed 's|set -e|set +e|' -i chapter07/$this_script 1064 ;; 1065 *profile) # Add the config values to the script 1066 sed "s|LC_ALL=\*\*EDITME.*EDITME\*\*|LC_ALL=$LC_ALL|" -i chapter07/$this_script 1067 sed "s|LANG=\*\*EDITME.*EDITME\*\*|LANG=$LANG|" -i chapter07/$this_script 1068 ;; 1069 1069 esac 1070 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1071 # First append then name of the script file to a list (this will become 1072 # the names of the targets in the Makefile 1073 chapter7="$chapter7 $this_script" 1074 1075 #--------------------------------------------------------------------# 1076 # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # 1077 #--------------------------------------------------------------------# 1078 # 1079 # Drop in the name of the target on a new line, and the previous target 1080 # as a dependency. Also call the echo_message function. 1081 echo -e "\n$this_script: $PREV 1082 @\$(call echo_message, Building)" >> $MKFILE.tmp 1083 1084 if [[ `_IS_ $this_script bootscripts` ]] ; then 1085 vrs=`grep "^lfs-bootscripts-version" $JHAHLFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` 1086 1086 FILE="lfs-bootscripts-$vrs.tar.*" 1087 1088 1089 1087 # The bootscript pkg references both lfs AND blfs bootscripts... 1088 # see XML script for other additions to bootscripts file 1089 # PATCH 1090 1090 vrs=`grep "^blfs-bootscripts-version" $JHAHLFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` 1091 1091 sed "s|make install$|make install; cd ../blfs-bootscripts-$vrs|" -i chapter07/$this_script 1092 1092 ( 1093 1093 cat << EOF 1094 1095 1096 1097 1094 @\$(call unpack2,$FILE) 1095 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 1096 echo "export PKGDIR=\$(SRC)/\$\$ROOT" > envars && \\ 1097 echo "\$(HLFS)\$(SRC)/blfs-bootscripts-$vrs" > sources-dir 1098 1098 EOF 1099 1099 ) >> $MKFILE.tmp 1100 1101 1102 1103 1104 1100 fi 1101 1102 if [[ `_IS_ $this_script kernel` ]] ; then 1103 # not much really, script does everything.. 1104 echo -e "\t@cp -f $CONFIG \$(HLFS)/sources/kernel-config" >> $MKFILE.tmp 1105 1105 fi 1106 1106 … … 1109 1109 ( 1110 1110 cat << EOF 1111 1112 1113 1111 @echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 1112 cp -v $FSTAB \$(HLFS)/etc/fstab >>logs/$this_script 2>&1 && \\ 1113 echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 1114 1114 EOF 1115 1115 ) >> $MKFILE.tmp … … 1118 1118 ( 1119 1119 cat << EOF 1120 1121 1122 1120 @echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >logs/$this_script && \\ 1121 \$(CHROOT2) 'cd /jhahlfs && source envars && /jhahlfs/commands/$file >>/jhahlfs/logs/$this_script 2>&1' && \\ 1122 echo -e "\n\`date\`\n\nKB: \`du -skx --exclude={0,1}??-* \$(HLFS)\`\n" >>logs/$this_script 1123 1123 EOF 1124 1124 ) >> $MKFILE.tmp … … 1129 1129 ( 1130 1130 cat << EOF 1131 1132 1133 1134 1131 @ROOT=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ 1132 rm -r \$(HLFS)\$(SRC)/\$\$ROOT 1133 @rm -r \`cat sources-dir\` && \\ 1134 rm sources-dir 1135 1135 1136 1136 EOF … … 1186 1186 for file in chapter06/*chroot* ; do 1187 1187 chroot=`cat $file | sed -e '/#!\/bin\/sh/d' \ 1188 1189 1190 1191 1192 1193 1194 1195 1188 -e '/^export/d' \ 1189 -e '/^logout/d' \ 1190 -e 's@ \\\@ @g' | tr -d '\n' | sed -e 's/ */ /g' \ 1191 -e 's|\\$|&&|g' \ 1192 -e 's|exit||g' \ 1193 -e 's|$| -c|' \ 1194 -e 's|"$$HLFS"|$(HLFS)|'\ 1195 -e 's|set -e||'` 1196 1196 echo -e "CHROOT$i= $chroot\n" >> $MKFILE 1197 1197 i=`expr $i + 1` … … 1201 1201 # as a dependency. 1202 1202 ( 1203 1203 cat << EOF 1204 1204 all: chapter4 chapter5 chapter6 chapter7 1205 1205 @\$(call echo_finished,$VERSION) 1206 1206 1207 1207 chapter4: 020-creatingtoolsdir 021-addinguser 022-settingenvironment … … 1214 1214 1215 1215 clean-all: clean 1216 1216 rm -rf ./{commands,logs,Makefile,dump-hlfs-scripts.xsl,functions,packages,patches} 1217 1217 1218 1218 clean: clean-chapter7 clean-chapter6 clean-chapter5 clean-chapter4 1219 1219 1220 1220 clean-chapter4: 1221 1222 1223 1224 1225 1226 1227 1228 1221 -if [ ! -f user-hlfs-exist ]; then \\ 1222 userdel hlfs; \\ 1223 rm -rf /home/hlfs; \\ 1224 fi; 1225 rm -rf \$(HLFS)/tools 1226 rm -f /tools 1227 rm -f envars user-hlfs-exist 1228 rm -f 02* logs/02*.log 1229 1229 1230 1230 clean-chapter5: 1231 1232 1233 1231 rm -rf \$(HLFS)/tools/* 1232 rm -f $chapter5 restore-hlfs-env sources-dir 1233 cd logs && rm -f $chapter5 && cd .. 1234 1234 1235 1235 clean-chapter6: 1236 1237 1238 1239 1240 1241 1242 1243 1236 -umount \$(HLFS)/sys 1237 -umount \$(HLFS)/proc 1238 -umount \$(HLFS)/dev/shm 1239 -umount \$(HLFS)/dev/pts 1240 -umount \$(HLFS)/dev 1241 rm -rf \$(HLFS)/{bin,boot,dev,etc,home,lib,media,mnt,opt,proc,root,sbin,srv,sys,tmp,usr,var} 1242 rm -f $chapter6 1243 cd logs && rm -f $chapter6 && cd .. 1244 1244 1245 1245 clean-chapter7: 1246 1247 1246 rm -f $chapter7 1247 cd logs && rm -f $chapter7 && cd .. 1248 1248 1249 1249 restore-hlfs-env: 1250 1251 1252 1253 1254 1255 1256 1257 1258 1250 @\$(call echo_message, Building) 1251 @if [ -f /home/hlfs/.bashrc.XXX ]; then \\ 1252 mv -fv /home/hlfs/.bashrc.XXX /home/hlfs/.bashrc; \\ 1253 fi; 1254 @if [ -f /home/hlfs/.bash_profile.XXX ]; then \\ 1255 mv -v /home/hlfs/.bash_profile.XXX /home/hlfs/.bash_profile; \\ 1256 fi; 1257 @chown hlfs:hlfs /home/hlfs/.bash* && \\ 1258 touch \$@ 1259 1259 1260 1260 EOF 1261 1261 ) >> $MKFILE 1262 1262 1263 1264 1265 1266 1263 # Bring over the items from the Makefile.tmp 1264 cat $MKFILE.tmp >> $MKFILE 1265 rm $MKFILE.tmp 1266 echo -ne "${GREEN}done\n${OFF}" 1267 1267 } 1268 1268 … … 1270 1270 run_make() { # Execute the newly constructed Makefile 1271 1271 #----------------------------# 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1272 # Test if make must be run. 1273 if [ "$RUNMAKE" = "1" ] ; then 1274 # Test to make sure we're running the build as root 1275 if [ "$UID" != "0" ] ; then 1276 echo "You must be logged in as root to successfully build HLFS." 1277 exit 1 1278 fi 1279 # Build the system 1280 if [ -e $MKFILE ] ; then 1281 echo -ne "Building the HLFS system...\n" 1282 cd $JHAHLFSDIR && make 1283 echo -ne "done\n" 1284 fi 1285 fi 1286 1286 } 1287 1287 … … 1298 1298 --version | -V ) 'clear'; echo "$version" ; exit 0; ;; 1299 1299 --help | -h ) usage | less 1300 1301 1300 'clear' ; exit 0 1301 ;; 1302 1302 1303 1303 --HLFS-version | -L ) … … 1306 1306 case $1 in 1307 1307 dev* | SVN | trunk ) 1308 BOOK=""# necessary to overide any value set inside jhahlfs.conf1309 1308 BOOK="" # necessary to overide any value set inside jhahlfs.conf 1309 WC= 1310 1310 HLFSVRS=development 1311 1311 ;; … … 1339 1339 ;; 1340 1340 1341 --get-packages | -P ) 1342 --run-make | -M ) 1343 --rebuild ) 1341 --get-packages | -P ) HPKG=1 ;; 1342 --run-make | -M ) RUNMAKE=1 ;; 1343 --rebuild ) CLEAN=1 ;; 1344 1344 1345 1345 --readme ) 1346 1347 1348 1349 1346 'clear' 1347 echo "$_inline_doc" | less 1348 'clear'; exit 1349 ;; 1350 1350 1351 1351 --fstab ) … … 1387 1387 # and notify the user about that. 1388 1388 if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then 1389 1389 no_empty_builddir 1390 1390 fi 1391 1391 … … 1408 1408 BOOK=${BOOK:=hlfs-$HLFSVRS} 1409 1409 1410 [[ ! -d $JHAHLFSDIR ]] 1411 [[ ! -d $LOGDIR ]] 1410 [[ ! -d $JHAHLFSDIR ]] && mkdir -pv $JHAHLFSDIR 1411 [[ ! -d $LOGDIR ]] && mkdir -v $LOGDIR 1412 1412 if [[ "$PWD" != "$JHAHLFSDIR" ]]; then 1413 1414 1415 1413 cp -v $FILES $JHAHLFSDIR/ 1414 sed 's,FAKEDIR,'$BOOK',' $XSL > $JHAHLFSDIR/dump-hlfs-scripts.xsl 1415 export XSL=$JHAHLFSDIR/dump-hlfs-scripts.xsl 1416 1416 fi 1417 1417 … … 1420 1420 1421 1421 # Check for minumum gcc and kernel versions 1422 check_requirements 1# 0/1 0-do not display values.1423 validate_config 1# 0/1 0-do not display values1422 check_requirements 1 # 0/1 0-do not display values. 1423 validate_config 1 # 0/1 0-do not display values 1424 1424 get_book 1425 1425 build_Makefile
Note:
See TracChangeset
for help on using the changeset viewer.