Index: LFS/master.sh =================================================================== --- LFS/master.sh (revision 2695) +++ LFS/master.sh (working copy) @@ -180,6 +180,18 @@ *stripping*) [[ "${STRIP}" = "0" ]] && continue ;; esac + # Install paco as the first package in ch6, before installing + # linux-libc-headers, except in iterartive builds + if [[ -z "$N" ]]; then + case $this_script in + *linux-libc-headers) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/linux-libc-headers/a-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + fi + # Grab the name of the target name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@'` @@ -223,7 +235,9 @@ # and not to use chroot. case "${this_script}" in *kernfs) wrt_run_as_root "${this_script}" "$file" ;; - *) wrt_run_as_chroot1 "${this_script}" "$file" ;; + *) wrt_paco_prep + wrt_run_as_chroot1 "${this_script}" "$file" + wrt_paco_log "$name" "$vrs" ;; esac # Remove the build directory(ies) except if the package build fails. @@ -243,6 +257,16 @@ PREV=${this_script}${N} # Set system_build envar for iteration targets system_build=$chapter6 + + # Reinstalling paco after readsjusting the toolchain. + case "${this_script}" in + *readjusting) + TMP_SCRIPT="$this_script" + this_script=`echo ${this_script} | sed -e 's/readjusting/x-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + done # end for file in chapter06/* } @@ -304,6 +328,14 @@ wrt_run_as_chroot2 "$this_script" "$file" fi ;; + *kernel) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "linux-kernel" "$vrs" + ;; + *bootscripts) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "lfs-bootscripts" "$vrs" + ;; *) wrt_run_as_chroot2 "$this_script" "$file" ;; esac Index: LFS/lfs.xsl =================================================================== --- LFS/lfs.xsl (revision 2695) +++ LFS/lfs.xsl (working copy) @@ -32,6 +32,9 @@ + + + @@ -190,6 +193,33 @@ || true + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + + + unset LD_PRELOAD + + + + Index: BLFS/master.sh =================================================================== --- BLFS/master.sh (revision 2695) +++ BLFS/master.sh (working copy) @@ -79,6 +79,19 @@ EOF ) >> $MKFILE + if [[ $USE_PACO != 0 ]]; then +( + cat << EOF + @echo -e "\n\`date\`\n\nKB: \`du -sk --exclude=logs/* /\`\n" >logs/$this_script && \\ + source $JHALFSDIR/pacovars && \\ + rm -f $PACO_TMPFILE && \\ + $JHALFSDIR/${PROGNAME}-commands/$file >>logs/$this_script 2>&1 && \\ + echo -e "\n\`date\`\n\nKB: \`du -sk --exclude=logs/* /\`\n" >>logs/$this_script +EOF +) >> $MKFILE + wrt_paco_log_blfs + + else # Insert date and disk usage at the top of the log file, the script run # and date and disk usage again at the bottom of the log file. ( @@ -88,6 +101,7 @@ echo -e "\n\`date\`\n\nKB: \`du -sk --exclude=logs/* /\`\n" >>logs/$this_script EOF ) >> $MKFILE + fi # Include a touch of the target name so make can check # if it's already been made. Index: BLFS/blfs.xsl =================================================================== --- BLFS/blfs.xsl (revision 2695) +++ BLFS/blfs.xsl (working copy) @@ -159,7 +159,7 @@ - sudo + export LD_PRELOAD=/usr/lib/libpaco-log.so Index: common/paco-build-hlfs.sh =================================================================== --- common/paco-build-hlfs.sh (revision 0) +++ common/paco-build-hlfs.sh (revision 0) @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +cd $PKGDIR +./configure --with-pic \ + --disable-static \ + --disable-gpaco \ + --sysconfdir=/etc && +make && +make install && +make logme Index: common/config =================================================================== --- common/config (revision 2695) +++ common/config (working copy) @@ -88,6 +88,14 @@ #--- Run farce testing 0(no)/1(yes) RUN_FARCE=0 +#==== PACO VARIABLES ==== +#--- Use paco? 0(no)/1(yes) +USE_PACO=1 +PACO_VERSION=1.10.7 + +#--- Name of the Paco source package +PACO_FILE=paco-$PACO_VERSION.tar.* + #==== INTERNAL VARIABLES ==== # Don't edit it unless you know what you are doing @@ -100,3 +108,9 @@ #--- farce report log directory FARCELOGDIR=$LOGDIR/farce + +#--- Variables needed by paco +PACO_INCLUDE=/ +PACO_EXCLUDE=/sys:/dev:/proc:/tmp:/usr/src:/usr/share/info/dir:/jhalfs +PACO_TMPFILE=/tmp/paco.tmp +LD_PRELOAD=/usr/lib/libpaco-log.so Index: common/func_validate_configs.sh =================================================================== --- common/func_validate_configs.sh (revision 2695) +++ common/func_validate_configs.sh (working copy) @@ -84,10 +84,10 @@ inline_doc # First internal variables, then the ones that change the book's flavour, and lastly system configuration variables - local -r blfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG DEPEND TEST OPTIMIZE" - local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG KEYMAP PAGE TIMEZONE LANG LC_ALL" - local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE TIMEZONE LANG" - local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG VIMLANG PAGE TIMEZONE LANG" + local -r blfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG DEPEND TEST OPTIMIZE" + local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG KEYMAP PAGE TIMEZONE LANG LC_ALL" + local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE METHOD ARCH TARGET TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE TIMEZONE LANG" + local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG VIMLANG PAGE TIMEZONE LANG" local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,' local -r ERROR_MSG_pt2=' check the config file ${BOLD}${GREEN}\<$(echo $PROGNAME | tr [a-z] [A-Z])/config\> or \${OFF}' @@ -174,6 +174,7 @@ # Validate general parameters.. GETPKG) validate_against_str "x0x x1x" ;; RUNMAKE) validate_against_str "x0x x1x" ;; + USE_PACO) validate_against_str "x0x x1x" ;; REPORT) validate_against_str "x0x x1x" if [[ "${!config_param}" = "1" ]]; then if [[ `type -p bc` ]]; then Index: common/paco-functions =================================================================== --- common/paco-functions (revision 0) +++ common/paco-functions (revision 0) @@ -0,0 +1,112 @@ +#!/bin/bash + + +#----------------------------# +wrt_paco_inst() { # +#----------------------------# + +# Not using Paco with uClibc, even if requested +if [ $PROGNAME = "hlfs" ]; then + if [ $MODEL = "uclibc" ]; then + USE_PACO=0 + fi +fi + +if [ $USE_PACO != 0 ]; then + paco_script="$1" + paco_file="chapter06/$paco_script" + chapter6="$chapter6 $paco_script" + + # Copy the paco build script to the correct directory and make it executable + cp $JHALFSDIR/paco-build-$PROGNAME.sh $JHALFSDIR/${PROGNAME}-commands/$paco_file && + chmod +x $JHALFSDIR/${PROGNAME}-commands/$paco_file + + # Write target, dependency and unpack + wrt_target "$paco_script" "$PREV" + wrt_unpack2 "$PACO_FILE" + + # Run the script + wrt_run_as_chroot1 "${paco_script}" "${paco_file}" + + # Clean up + wrt_remove_build_dirs "paco" + echo -e '\t@touch $@' >> $MKFILE.tmp + + # Override the PREV variable + PREV="$paco_script" +fi +} + + +#----------------------------------# +wrt_paco_prep() { # Export Paco variables +#----------------------------------# and remove tmpfile + +# Not using Paco with uClibc, even if requested +if [ $PROGNAME = "hlfs" ]; then + if [ $MODEL = "uclibc" ]; then + USE_PACO=0 + fi +fi + +if [ $USE_PACO != 0 ] && [ "$vrs" != "" ]; then +( +cat << EOF + @echo "export PACO_INCLUDE=$PACO_INCLUDE" >> envars && \\ + echo "export PACO_EXCLUDE=\$(SRC):$JHALFSDIR:$PACO_EXCLUDE" >> envars && \\ + echo "export PACO_TMPFILE=$PACO_TMPFILE" >> envars && \\ + rm -f \$(MOUNT_PT)$PACO_TMPFILE +EOF +) >> $MKFILE.tmp +fi +} + + +#----------------------------------# +wrt_paco_log() { # If the tmpfile exist, then log the current package +#----------------------------------# and remove tempfile +local PACKAGE + +# Allow packages to be logged without version +if [[ $2 != "" ]] ; then + PACKAGE="$1-$2"; +else + PACKAGE="$1" +fi + +# Not using Paco with uClibc, even if requested +if [ $PROGNAME = "hlfs" ]; then + if [ $MODEL = "uclibc" ]; then + USE_PACO=0 + fi +fi + +if [ $USE_PACO != 0 ] && [ "$vrs" != "" ]; then +( +cat << EOF + @if [ -e \$(MOUNT_PT)$PACO_TMPFILE ]; then \\ + \$(CHROOT1) 'paco -lp+ $PACKAGE < $PACO_TMPFILE' && \\ + rm -f \$(MOUNT_PT)$PACO_TMPFILE; \\ + fi; +EOF +) >> $MKFILE.tmp +fi +} + + +#----------------------------------# +wrt_paco_log_blfs() { # If the tmpfile exist, then log the current package +#----------------------------------# and remove tempfile +if [ $USE_PACO != 0 ] ; then +( +cat << EOF + @PACKAGE=\`head -n1 /tmp/unpacked | sed 's@^./@@;s@/.*@@'\` && \\ + if [ -e $PACO_TMPFILE ]; then \\ + paco -lp \$\$PACKAGE < $PACO_TMPFILE && \\ + rm -f $PACO_TMPFILE; \\ + fi; +EOF +) >> $MKFILE +fi +} + Index: common/paco-build-lfs.sh =================================================================== --- common/paco-build-lfs.sh (revision 0) +++ common/paco-build-lfs.sh (revision 0) @@ -0,0 +1,9 @@ +#!/bin/sh +set -e + +cd $PKGDIR +./configure --disable-gpaco \ + --sysconfdir=/etc && +make && +make install && +make logme Index: common/common-functions =================================================================== --- common/common-functions (revision 2695) +++ common/common-functions (working copy) @@ -65,6 +65,9 @@ in the configuration file has the proper packages and patches for the book version being processed. +${BOLD} --no-paco${OFF} + dissables paco logging feature. + ${BOLD} -O, --optimize${OFF} Optimize [0-2] 0 = no optimization @@ -581,6 +584,7 @@ --stringparam lc_all $LC_ALL \ --stringparam keymap $KEYMAP \ --stringparam grsecurity_host $GRSECURITY_HOST \ + --stringparam use_paco $USE_PACO \ -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 ;; lfs) @@ -592,6 +596,7 @@ --stringparam timezone $TIMEZONE \ --stringparam page $PAGE \ --stringparam lang $LANG \ + --stringparam use_paco $USE_PACO \ -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 ;; blfs) Index: HLFS/hlfs.xsl =================================================================== --- HLFS/hlfs.xsl (revision 2695) +++ HLFS/hlfs.xsl (working copy) @@ -39,6 +39,9 @@ + + + @@ -191,6 +194,10 @@ + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + make install cd ../blfs-bootscripts-&blfs-bootscripts-version; @@ -248,6 +255,25 @@ || true + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + Index: HLFS/master.sh =================================================================== --- HLFS/master.sh (revision 2695) +++ HLFS/master.sh (working copy) @@ -254,6 +254,18 @@ *-stripping* ) [[ "$STRIP" = "0" ]] && continue ;; esac + # Install paco as the first package in ch6, before installing + # linux-libc-headers, except in iterartive builds + if [[ -z "$N" ]]; then + case $this_script in + *linux-libc-headers) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/linux-libc-headers/a-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + fi + # Grab the name of the target name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` @@ -324,7 +336,9 @@ wrt_run_as_root "${this_script}" "${file}" ;; *) # The rest of Chapter06 + wrt_paco_prep wrt_run_as_chroot1 "${this_script}" "${file}" + wrt_paco_log "$name" "$vrs" ;; esac # @@ -357,6 +371,16 @@ PREV=${this_script}${N} # Set system_build envar for iteration targets system_build=$chapter6 + + # Reinstall paco after the toolchain has been readjusted. + case "${this_script}" in + *readjusting) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/readjusting/x-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + done # end for file in chapter06/* } @@ -419,6 +443,15 @@ wrt_run_as_chroot2 "${this_script}" "${file}" fi ;; + *kernel) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + version=`grep "^linux-version" $JHALFSDIR/packages | sed -e 's/.* //' -e 's/"//g'` + wrt_paco_log "linux-kernel" "$version" + ;; + *bootscripts) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "hlfs-bootscripts" + ;; *) # All other scripts wrt_run_as_chroot2 "${this_script}" "${file}" ;; Index: master.sh =================================================================== --- master.sh (revision 2695) +++ master.sh (working copy) @@ -147,6 +147,8 @@ --help | -h ) usage | more && exit ;; + --no-paco ) USE_PACO=0 ;; + --optimize | -O ) test $# = 1 && eval "$exit_missing_arg" shift @@ -463,6 +465,14 @@ [[ $VERBOSITY > 0 ]] && echo "OK" fi # +# paco module +if [[ "$USE_PACO" = "1" ]]; then + [[ $VERBOSITY > 0 ]] && echo -n "Loading paco module..." + source $COMMON_DIR/paco-functions + [[ $? > 0 ]] && echo "$COMMON_DIR/paco-functions did not load.." && exit 2 + [[ $VERBOSITY > 0 ]] && echo "OK" +fi +# # optimize module if [[ "$OPTIMIZE" != "0" ]]; then [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..." @@ -507,6 +517,15 @@ # if [[ "$PWD" != "$JHALFSDIR" ]]; then cp $COMMON_DIR/makefile-functions $JHALFSDIR/ + if [[ $USE_PACO != "0" ]] ; then + if [[ $PROGNAME != "blfs" ]]; then + cp $COMMON_DIR/paco-build-$PROGNAME.sh $JHALFSDIR/ + else + echo -e "export PACO_INCLUDE=$PACO_INCLUDE" > $JHALFSDIR/pacovars + echo -e "export PACO_EXCLUDE=~/sources:$JHALFSDIR:$PACO_EXCLUDE" >> $JHALFSDIR/pacovars + echo -e "export PACO_TMPFILE=$PACO_TMPFILE" >> $JHALFSDIR/pacovars + fi + fi [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/ if [[ "$COMPARE" != "0" ]] ; then mkdir -p $JHALFSDIR/extras