Index: LFS/master.sh =================================================================== --- LFS/master.sh (revision 3089) +++ LFS/master.sh (working copy) @@ -172,6 +172,11 @@ # Keep the script file name this_script=`basename $file` + # If $this_script corresponds to a paco script, then skip it + case "${this_script}" in + *paco) continue ;; + esac + # We'll run the chroot commands differently than the others, so skip them in the # dependencies and target creation. case "${this_script}" in @@ -179,6 +184,18 @@ *stripping*) [[ "${STRIP}" = "n" ]] && 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\}-@@'` @@ -231,7 +248,9 @@ # and not to use chroot. case "${this_script}" in *kernfs) wrt_RunAsRoot "${this_script}" "$file" ;; - *) wrt_run_as_chroot1 "${this_script}" "$file" ;; + *) wrt_paco_prep + wrt_run_as_chroot1 "${this_script}" "$file" + wrt_paco_log "$pkg_tarball" ;; esac # Remove the build directory(ies) except if the package build fails. @@ -251,6 +270,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/* } @@ -311,8 +340,15 @@ else wrt_run_as_chroot2 "$this_script" "$file" fi + wrt_paco_log "lfs-sysconf" ;; + *kernel | *bootscripts ) + wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "$pkg_tarball" + ;; *) wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "lfs-sysconf" ;; esac Index: LFS/lfs.xsl =================================================================== --- LFS/lfs.xsl (revision 3089) +++ LFS/lfs.xsl (working copy) @@ -39,6 +39,9 @@ + + + @@ -251,6 +254,33 @@ || true + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + + + unset LD_PRELOAD + + + + Index: CLFS/master.sh =================================================================== --- CLFS/master.sh (revision 3089) +++ CLFS/master.sh (working copy) @@ -494,6 +494,11 @@ # Keep the script file name this_script=`basename $file` + # If $this_script corresponds to a paco script, then skip it + case "${this_script}" in + *paco) continue ;; + esac + # Test if the stripping phase must be skipped. # Skip alsp temp-perl for iterative runs case $this_script in @@ -501,6 +506,18 @@ *temp-perl*) [[ -n "$N" ]] && 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-headers) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/linux-headers/a-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + fi + # Grab the name of the target, strip id number, XXX-script name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ -e 's@temp-@@' \ @@ -553,7 +570,9 @@ [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" fi # + wrt_paco_prep wrt_run_as_chroot1 "${this_script}" "${file}" + wrt_paco_log "$pkg_tarball" # [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}" # @@ -568,6 +587,16 @@ PREV=${this_script}${N} # Set system_build envar for iteration targets system_build=$basicsystem + + # Reinstalling paco after readsjusting the toolchain. + case "${this_script}" in + *adjusting) + TMP_SCRIPT="$this_script" + this_script=`echo ${this_script} | sed -e 's/adjusting/x-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + done # for file in final-system/* ... } @@ -604,6 +633,11 @@ # Keep the script file name this_script=`basename $file` + # If $this_script corresponds to a paco script, then skip it + case "${this_script}" in + *paco) continue ;; + esac + # Test if the stripping phase must be skipped # Skip alsp temp-perl for iterative runs case $this_script in @@ -611,6 +645,18 @@ *temp-perl*) [[ -n "$N" ]] && 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-headers) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/linux-headers/a-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + fi + # Grab the name of the target, strip id number, XXX-script name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ -e 's@temp-@@' \ @@ -665,7 +711,9 @@ [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" fi # + wrt_paco_prep wrt_run_as_root2 "${this_script}" "${file}" + wrt_paco_log "$pkg_tarball" # [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs2 "${name}" # @@ -680,6 +728,16 @@ PREV=${this_script}${N} # Set system_build envar for iteration targets system_build=$basicsystem + + # Reinstalling paco after readsjusting the toolchain. + case "${this_script}" in + *adjusting) + TMP_SCRIPT="$this_script" + this_script=`echo ${this_script} | sed -e 's/adjusting/x-paco/'` + wrt_paco_inst "$this_script" + this_script="$TMP_SCRIPT" ;; + esac + done # for file in final-system/* ... } @@ -728,7 +786,17 @@ # [[ "$pkg_tarball" != "" ]] && wrt_unpack2 "$pkg_tarball" # + case $this_script in + *bootscripts* | *udev-rules ) + wrt_paco_prep ;; + esac wrt_run_as_chroot1 "${this_script}" "${file}" + case $this_script in + *bootscripts* | *udev-rules ) + wrt_paco_log "$pkg_tarball" ;; + *) + wrt_paco_log "clfs-sysconf" ;; + esac # [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}" # @@ -790,7 +858,17 @@ # [[ "$pkg_tarball" != "" ]] && wrt_unpack3 "$pkg_tarball" # + case $this_script in + *bootscripts* | *udev-rules ) + wrt_paco_prep ;; + esac wrt_run_as_root2 "${this_script}" "${file}" + case $this_script in + *bootscripts* | *udev-rules ) + wrt_paco_log "$pkg_tarball" ;; + *) + wrt_paco_log "clfs-sysconf" ;; + esac # [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs2 "${name}" # @@ -862,8 +940,13 @@ else wrt_run_as_chroot1 "${this_script}" "${file}" fi + wrt_paco_log "clfs-sysconf" ;; - *) wrt_run_as_chroot1 "${this_script}" "${file}" ;; + *kernel) wrt_paco_prep + wrt_run_as_chroot1 "${this_script}" "${file}" + wrt_paco_log "$pkg_tarball" ;; + *) wrt_run_as_chroot1 "${this_script}" "${file}" + wrt_paco_log "clfs-sysconf" ;; esac # # Housekeeping...remove any build directory(ies) except if the package build fails. @@ -941,8 +1024,13 @@ else wrt_run_as_root2 "${this_script}" "${file}" fi + wrt_paco_log "clfs-sysconf" ;; - *) wrt_run_as_root2 "${this_script}" "${file}" ;; + *kernel) wrt_paco_prep + wrt_run_as_root2 "${this_script}" "${file}" + wrt_paco_log "$pkg_tarball" ;; + *) wrt_run_as_root2 "${this_script}" "${file}" + wrt_paco_log "clfs-sysconf" ;; esac # # Housekeeping...remove any build directory(ies) except if the package build fails. Index: CLFS/clfs.xsl =================================================================== --- CLFS/clfs.xsl (revision 3089) +++ CLFS/clfs.xsl (working copy) @@ -45,6 +45,9 @@ + + + @@ -106,6 +109,25 @@ tar -xvf ../vim-&vim-version;-lang.* --strip-components=1 + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + + exit Index: common/paco-build-hlfs.sh =================================================================== --- common/paco-build-hlfs.sh (revision 0) +++ common/paco-build-hlfs.sh (revision 0) @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +cd $PKGDIR +./configure --sysconfdir=/etc \ + --enable-scripts \ + --disable-gpaco \ + --disable-static \ + --with-pic && +make && +make install && +make logme Index: common/func_validate_configs.sh =================================================================== --- common/func_validate_configs.sh (revision 3089) +++ common/func_validate_configs.sh (working copy) @@ -20,10 +20,10 @@ inline_doc # First internal variables, then the ones that change the book's flavour, and lastly system configuration variables - local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL LUSER LGROUP BLFS_TOOL" - local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TARGET32 TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" - local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" - local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" + local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL LUSER LGROUP BLFS_TOOL" + local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE METHOD ARCH TARGET TARGET32 TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" + local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" + local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR" local -r blfs_tool_PARAM_LIST="BLFS_BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR DEP_LIBXML DEP_LIBXSLT DEP_DBXSL DEP_LINKS DEP_SUDO DEP_WGET DEP_SVN DEP_GPM" @@ -99,6 +99,7 @@ case $config_param in # Allways display this, if found in ${PROGNAME}_PARAM_LIST GETPKG | \ + USE_PACO | \ RUNMAKE | \ TEST | \ OPTIMIZE | \ Index: common/paco-functions =================================================================== --- common/paco-functions (revision 0) +++ common/paco-functions (revision 0) @@ -0,0 +1,328 @@ +#!/bin/bash + +#----------------------------# +wrt_paco_inst() { # +#----------------------------# + +local paco_script="$1" + +check_build_model + +if [ $USE_PACO = "y" ]; then + case $PROGNAME in + clfs ) + paco_file="final-system/$paco_script" + basicsystem="$basicsystem $paco_script" ;; + * ) + paco_file="chapter06/$paco_script" + chapter6="$chapter6 $paco_script" ;; + esac + + # 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 + if [ $CLFS_BOOT = 1 ]; then + wrt_target_boot "$paco_script" "$PREV" + wrt_unpack3 "$PACO_FILE" + wrt_run_as_root2 "${paco_script}" "${paco_file}" + wrt_remove_build_dirs2 "paco" + else + wrt_target "$paco_script" "$PREV" + wrt_unpack2 "$PACO_FILE" + wrt_run_as_chroot1 "${paco_script}" "${paco_file}" + wrt_remove_build_dirs "paco" + fi + + wrt_touch + + # Override the PREV variable + PREV="$paco_script" +fi +} + + +#----------------------------------# +wrt_paco_prep() { # Export Paco variables +#----------------------------------# and remove tmpfile + +local TMPFILEPATH + +check_build_model + +check_log_package + +if [ $USE_PACO = "y" ] && [ $LOG_PACKAGE != 0 ]; then + if [ $CLFS_BOOT = 1 ]; then + TMPFILEPATH="$PACO_TMPFILE" + else + TMPFILEPATH="\$(MOUNT_PT)$PACO_TMPFILE" + fi +( +cat << EOF + @echo "export PACO_INCLUDE=$PACO_INCLUDE" >> envars && \\ + echo "export PACO_EXCLUDE=\$(SRC):$PACO_EXCLUDE" >> envars && \\ + echo "export PACO_TMPFILE=$PACO_TMPFILE" >> envars && \\ + rm -f $TMPFILEPATH +EOF +) >> $MKFILE.tmp +fi +} + + +#----------------------------------# +wrt_paco_log() { # If the tmpfile exist, then log the current package +#----------------------------------# and remove tempfile +local PACKAGE + +# Extract package name and version from the tarball name +PACKAGE=`echo $1 | sed -e 's/.tar.*//'` + +check_build_model + +# Check if the package should be logged +check_log_package + + +if [ $USE_PACO = "y" ]; then + if [ $LOG_PACKAGE != 0 ]; then + # Only use this if doing CLFS boot build + if [ $CLFS_BOOT = 1 ]; then +( +cat << EOF + @if [ -e $PACO_TMPFILE ]; then \\ + paco -lp+ $PACKAGE < $PACO_TMPFILE && \\ + rm -f $PACO_TMPFILE; \\ + fi; +EOF +) >> $MKFILE.tmp + # All else should use these commands + else +( +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 + fi + # Add missing files to the logs if needed + wrt_paco_add_log +fi +} + + +#----------------------------------# +fnc_add_log() { # +#----------------------------------# + +MISSING_FILE=$1 + +if [ $CLFS_BOOT = 1 ]; then + echo -e "\t@$MISSING_FILE | paco -lp+ $PACKAGE" >> $MKFILE.tmp +else + echo -e "\t@\$(CHROOT1) '$MISSING_FILE | paco -lp+ $PACKAGE'" >> $MKFILE.tmp +fi +} + + +#----------------------------------# +wrt_paco_add_log() { # +#----------------------------------# +# Some packages create files using bash redirection, which the LD_PRELOAD lib don't notice +# These rules will add the missing files to the proper logs. +# Most of these is not needed for HLFS, but they do no harm. +if [ $USE_PACO = "y" ]; then + case $this_script in + *e2fsprogs) + fnc_add_log "echo /etc/mke2fs.conf" + ;; + *bootscripts) + fnc_add_log "echo /etc/sysconfig/rc" + fnc_add_log "echo /etc/sysconfig/createfiles" + ;; + *glibc) + fnc_add_log "find /lib -type l" + fnc_add_log "echo /etc/{nsswitch.conf,ld.so.conf}" + ;; + *ncurses) + fnc_add_log "echo /usr/lib/{libcurses.so,libncurses.so{,.5},libform.so,libpanel.so,libmenu.so}" + ;; + *bash) + fnc_add_log "echo /bin/sh" + ;; + *flex) + fnc_add_log "echo /usr/bin/lex" + ;; + *shadow) + fnc_add_log "echo /etc/login.defs" + fnc_add_log "echo /etc/group" + ;; + *hotplug) + fnc_add_log "echo /var/log/hotplug" + fnc_add_log "echo /var/run/usb" + ;; + *sysklogd) + fnc_add_log "echo /etc/syslog.conf" + ;; + *sysvinit) + fnc_add_log "echo /etc/inittab" + fnc_add_log "echo /usr/bin/lastb" + ;; + *texinfo) + fnc_add_log "echo /usr/share/info/dir" + ;; + *udev) + fnc_add_log "find /lib/udev/devices" + fnc_add_log "echo /lib/firmware" + fnc_add_log "find /etc/udev/rules.d -type f" + fnc_add_log "echo /etc/udev/udev.conf" + ;; + *udev-rules) + fnc_add_log "echo /lib/udev/devices/{null,console}" + ;; + *util-linux) + fnc_add_log "echo /var/lib/hwclock" + fnc_add_log "echo /etc/nologin.txt" + ;; + *vim) + fnc_add_log "echo /etc/vimrc" + ;; + # Rules below here will log configuration files created in {C,H}LFS + # They will end up in a log named {c,h}lfs-sysconf + *setclock) + fnc_add_log "echo /etc/sysconfig/clock" + ;; + *inputrc) + fnc_add_log "echo /etc/inputrc" + ;; + *profile) + fnc_add_log "echo /etc/profile" + ;; + *hostname) + fnc_add_log "echo /etc/sysconfig/network" + ;; + *localnet) + fnc_add_log "echo /etc/sysconfig/network" + ;; + *hosts) + fnc_add_log "echo /etc/hosts" + ;; + *network) + fnc_add_log "echo /etc/sysconfig/network-devices/ifconfig.eth0/ipv4" + fnc_add_log "echo /etc/resolv.conf" + ;; + *fstab) + fnc_add_log "echo /etc/fstab" + ;; + *theend | *finished) + fnc_add_log "echo /etc/$PROGNAME-release" + fnc_add_log "echo /var/run/utmp" + fnc_add_log "echo /var/log/btmp" + fnc_add_log "echo /var/log/wtmp" + fnc_add_log "echo /var/log/lastlog" + ;; + esac +fi +} + + +#----------------------------------# +check_log_package() { # +#----------------------------------# +# Maybe don't need this function, but it will avoid writing some +# unnecessary paco commands in the Makefile. + +case $this_script in + *changingowner) LOG_PACKAGE=0 ;; + *creatingdirs) LOG_PACKAGE=0 ;; + *createfiles) LOG_PACKAGE=0 ;; + *pwdgroup) LOG_PACKAGE=0 ;; + *devices) LOG_PACKAGE=0 ;; + *stripping) LOG_PACKAGE=0 ;; + *strippingagain) LOG_PACKAGE=0 ;; + *adjusting) LOG_PACKAGE=0 ;; + *temp-perl) LOG_PACKAGE=0 ;; + *readjusting) LOG_PACKAGE=0 ;; + *setclock) LOG_PACKAGE=0 ;; + *inputrc) LOG_PACKAGE=0 ;; + *profile) LOG_PACKAGE=0 ;; + *hostname) LOG_PACKAGE=0 ;; + *localnet) LOG_PACKAGE=0 ;; + *hosts) LOG_PACKAGE=0 ;; + *network) LOG_PACKAGE=0 ;; + *fstab) LOG_PACKAGE=0 ;; + *theend) LOG_PACKAGE=0 ;; + *finished) LOG_PACKAGE=0 ;; + *) LOG_PACKAGE=1 ;; +esac +} + +#----------------------------------# +get_paco_src() { # +#----------------------------------# +# Download the paco sources +# We don't do any MD5SUM checking as of yet +# http://jaist.dl.sourceforge.net/sourceforge/paco/paco-1.10.10.tar.bz2 + +local PACO_URL1="http://$PACO_MIRROR1.dl.sourceforge.net/sourceforge/paco/$PACO_FILE" +local PACO_URL2="http://$PACO_MIRROR2.dl.sourceforge.net/sourceforge/paco/$PACO_FILE" + +# Test if paco is to be used +[[ ! "$USE_PACO" = "y" ]] && return + +# If the file exists in the archive copy it to the $BUILDDIR/sources dir. +if [ ! -z ${SRC_ARCHIVE} ] && + [ -d ${SRC_ARCHIVE} ] && + [ -f ${SRC_ARCHIVE}/$PACO_FILE ]; then + cp ${SRC_ARCHIVE}/$PACO_FILE . + echo "$PACO_FILE: -- copied from $SRC_ARCHIVE" + fromARCHIVE=1 +else + echo "${BOLD}${YELLOW}$PACO_FILE: not found in ${SRC_ARCHIVE}${OFF}" + fromARCHIVE=0 + # If the file does not exist yet in /sources download a fresh one + if [ ! -f $PACO_FILE ] ; then + if ! wget $PACO_URL1 && ! wget $PACO_URL2 ; then + gs_wrt_message "$PACO_FILE not found in the SRC_ARCHIVE or on any server..SKIPPING" + continue + fi + fi +fi + +# Copy the freshly downloaded file to the source archive. +if [ ! -z ${SRC_ARCHIVE} ] && + [ -d ${SRC_ARCHIVE} ] && + [ -w ${SRC_ARCHIVE} ] && + [ "$fromARCHIVE" = "0" ] ; then + echo "Storing file:<$PACO_FILE> in the package archive" + cp -f $PACO_FILE ${SRC_ARCHIVE} +fi +} + + +#----------------------------------# +check_build_model() { # +#----------------------------------# +# Check what script we're running, and set some switches accordingly + +CLFS_BOOT=0 + +case $PROGNAME in + hlfs) + # Not using Paco with uClibc, even if requested + if [ "$MODEL" = "uclibc" ]; then + USE_PACO=n + fi + ;; + clfs) + # CLFS boot method require it's own commands + if [ "$METHOD" = "boot" ]; then + CLFS_BOOT=1 + fi + ;; +esac +} Index: common/paco-build-lfs.sh =================================================================== --- common/paco-build-lfs.sh (revision 0) +++ common/paco-build-lfs.sh (revision 0) @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +cd $PKGDIR +./configure --sysconfdir=/etc \ + --enable-scripts \ + --disable-gpaco && +make && +make install && +make logme Index: common/paco-build-clfs.sh =================================================================== --- common/paco-build-clfs.sh (revision 0) +++ common/paco-build-clfs.sh (revision 0) @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +cd $PKGDIR +./configure --sysconfdir=/etc \ + --enable-scripts \ + --disable-gpaco && +make && +make install && +make logme Index: common/common-functions =================================================================== --- common/common-functions (revision 3089) +++ common/common-functions (working copy) @@ -533,6 +533,7 @@ --stringparam page $PAGE \ --stringparam lang $LANG \ --stringparam keymap $KEYMAP \ + --stringparam use_paco $USE_PACO \ -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1 ;; @@ -560,6 +561,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) @@ -572,6 +574,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 ;; *) exit 1 ;; @@ -656,6 +659,9 @@ # Generate URLs file create_urls + # If Paco is to be used, then download the sources + get_paco_src + IFS=$'\x0A' # Modify the 'internal field separator' to break on 'LF' only for line in `cat urls.lst`; do IFS=$saveIFS # Restore the system defaults Index: HLFS/hlfs.xsl =================================================================== --- HLFS/hlfs.xsl (revision 3089) +++ HLFS/hlfs.xsl (working copy) @@ -46,6 +46,9 @@ + + + @@ -196,6 +199,10 @@ + + + export LD_PRELOAD=/usr/lib/libpaco-log.so + make install cd ../blfs-bootscripts-&blfs-bootscripts-version; @@ -296,6 +303,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 3089) +++ HLFS/master.sh (working copy) @@ -47,7 +47,9 @@ EOF ) >> $MKFILE.tmp [[ "$TEST" != "0" ]] && wrt_test_log2 "${this_script}" + wrt_paco_prep wrt_run_as_chroot1 "$toolchain" "$this_script" + wrt_paco_log "`echo $toolchain | sed -e 's@[0-9]\{3\}-@@'`" ;; *) @@ -281,6 +283,11 @@ # Keep the script file name this_script=`basename $file` + # If this script is *-paco, then skip it + case $this_script in + *paco ) continue ;; + esac + # Skip this script depending on jhalfs.conf flags set. case $this_script in # We'll run the chroot commands differently than the others, so skip them in the @@ -290,6 +297,18 @@ *-stripping* ) [[ "$STRIP" = "n" ]] && 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-headers) + TMP_SCRIPT="$this_script" + this_script=`echo $this_script | sed -e 's/linux-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\}-@@'` @@ -355,7 +374,9 @@ wrt_RunAsRoot "${this_script}" "${file}" ;; *) # The rest of Chapter06 + wrt_paco_prep wrt_run_as_chroot1 "${this_script}" "${file}" + wrt_paco_log "$pkg_tarball" ;; esac # @@ -375,6 +396,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/* } @@ -433,9 +464,19 @@ else # Initialize the log and run the script wrt_run_as_chroot2 "${this_script}" "${file}" fi + wrt_paco_log "hlfs-sysconf" ;; + *kernel) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "$(get_package_tarball_name "linux")" + ;; + *bootscripts) wrt_paco_prep + wrt_run_as_chroot2 "$this_script" "$file" + wrt_paco_log "$(get_package_tarball_name "lfs-bootscripts")" + ;; *) # All other scripts wrt_run_as_chroot2 "${this_script}" "${file}" + wrt_paco_log "hlfs-sysconf" ;; esac Index: jhalfs =================================================================== --- jhalfs (revision 3089) +++ jhalfs (working copy) @@ -112,6 +112,7 @@ VIMLANG=${VIMLANG:-n} KEYMAP=${KEYMAP:=none} GRSECURITY_HOST=${GRSECURITY_HOST:-n} +USE_PACO=${USE_PACO:-n} # Book surces envars BRANCH_ID=${BRANCH_ID:=development} @@ -270,6 +271,14 @@ [[ $VERBOSITY > 0 ]] && echo "OK" fi # +# paco module +if [[ "$USE_PACO" = "y" ]]; 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..." @@ -315,6 +324,8 @@ # cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/ # +[[ $USE_PACO != "n" ]] && cp $COMMON_DIR/paco-build-$PROGNAME.sh $JHALFSDIR/ +# [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/ # if [[ "$COMPARE" = "y" ]]; then Index: Config.in =================================================================== --- Config.in (revision 3089) +++ Config.in (working copy) @@ -812,3 +812,72 @@ #--- End Advanced Features endmenu + +#--- PACO +config USE_PACO + bool "Use PACO" + default n + depends on !BOOK_BLFS && !BOOK_CLFS2 && !LIB_UCLIBC + + config PACO_VERSION + string "PACO package version" + default "1.10.10" + depends USE_PACO + + config PACO_FILE + string "PACO package full name" + default "paco-$PACO_VERSION.tar.bz2" + depends USE_PACO + help + #-- You can use .tar.gz if preferred + + config PACO_MIRROR1 + string "Sourceforge mirror 1" + default "heanet" + depends USE_PACO + help + #-- Sourceforge mirror to use for Paco source download + # + # Europe: heanet, belnet, puzzle, surfnet, switch, kent + # North America: superb-east, superb-west, umn, easynews + # South America: ufpr + # Asia: nchc, jaist + # Australia: optusnet + + config PACO_MIRROR2 + string "Sourceforge mirror 2" + default "kent" + depends USE_PACO + help + #-- Sourceforge mirror to use for Paco source download + # + # Europe: heanet, belnet, puzzle, surfnet, switch, kent + # North America: superb-east, superb-west, umn, easynews + # South America: ufpr + # Asia: nchc, jaist + # Australia: optusnet + + #-- Internal Settings + menu "--- Internal Settings (WARNING: for paco developers only)" + depends USE_PACO + + config PACO_INCLUDE + string "Include dirs" + default "/" + + config PACO_EXCLUDE + string "Exclude dirs" + default "/${SCRIPT_ROOT}" + + config PACO_TMPFILE + string "Temp file" + default "/tmp/paco.tmp" + + config LD_PRELOAD + string "LD_PRELOAD" + default "/usr/lib/libpaco-log.so" + + #--- End Internal Settings + endmenu +#--- End PACO +