Updates:

- Corrected typos in paco-funtions
- The paco number ordering is now extracted automatically instead of being hardcoded in master.sh - The paco-build.sh is now copied to the correct location when master.sh is run, instead of when running the Makefile.

I've folloved the instructions by Manuel to create a proper 'svn diff', so I hope I've managed to do it properly ;)

Thanks, and happy pacoing.


Tor Olav
Index: LFS/master.sh
===================================================================
--- LFS/master.sh       (revision 2542)
+++ LFS/master.sh       (working copy)
@@ -158,6 +158,13 @@
       *stripping*) [[ "${STRIP}" = "0" ]] && continue ;;
     esac
 
+    # Install paco as the first package in ch6, before installing 
linux-libc-headers.
+    case "${this_script}" in
+      *linux-libc-headers)
+        PACO_NUM=`echo ${this_script} | sed -e 's/linux-libc-headers/a-paco/'`
+        wrt_paco_inst "$PACO_NUM"
+    esac
+
     # First append each name of the script files to a list (this will become
     # the names of the targets in the Makefile
     chapter6="$chapter6 ${this_script}"
@@ -188,7 +195,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.
@@ -206,6 +215,14 @@
 
     # Keep the script file name for Makefile dependencies.
     PREV=${this_script}
+
+    # Reinstalling paco after readsjusting the toolchain.
+    case "${this_script}" in
+      *readjusting)
+        PACO_NUM=`echo ${this_script} | sed -e 's/readjusting/x-paco/'`
+        wrt_paco_inst "$PACO_NUM" ;;
+    esac
+
   done # end for file in chapter06/*
 }
 
@@ -267,6 +284,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 2542)
+++ LFS/lfs.xsl (working copy)
@@ -32,6 +32,9 @@
   <!-- Locale settings -->
   <xsl:param name="lang" select="en_CA"/>
 
+  <!-- Use paco? -->
+  <xsl:param name="use_paco" select="1"/>
+
   <xsl:template match="/">
     <xsl:apply-templates select="//sect1"/>
   </xsl:template>
@@ -190,6 +193,33 @@
         <xsl:apply-templates/>
         <xsl:text> || true&#xA;</xsl:text>
       </xsl:when>
+      <!-- paco begin -->
+      <!-- General rule -->
+      <xsl:when test="$use_paco != '0' and
+                ancestor::[EMAIL PROTECTED] != 'chapter-temporary-tools'] and
+                contains(string(),'make') and
+                contains(string(),'install')">
+        <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Linux-libc-headers -->
+      <xsl:when test="$use_paco != '0' and
+                ancestor::[EMAIL PROTECTED]'ch-system-linux-libc-headers'] and
+                contains(string(),'install ')">
+        <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Unset LD_PRELOAD before second make in Zlib -->
+      <xsl:when test="$use_paco != '0' and
+                ancestor::[EMAIL PROTECTED]'ch-system-zlib'] and
+                contains(string(),'make clean')">
+        <xsl:text>unset LD_PRELOAD&#xA;</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- paco end -->
       <!-- The rest of commands -->
       <xsl:otherwise>
         <xsl:apply-templates/>
Index: BLFS/master.sh
===================================================================
--- BLFS/master.sh      (revision 2542)
+++ 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.
 (
Index: BLFS/blfs.xsl
===================================================================
--- BLFS/blfs.xsl       (revision 2542)
+++ BLFS/blfs.xsl       (working copy)
@@ -159,7 +159,7 @@
         <xsl:when test="@role = 'nodump'"/>
         <xsl:otherwise>
           <xsl:if test="@role = 'root'">
-            <xsl:text>sudo </xsl:text>
+            <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
           </xsl:if>
           <xsl:apply-templates select="userinput" mode="screen"/>
         </xsl:otherwise>
Index: common/config
===================================================================
--- common/config       (revision 2542)
+++ common/config       (working copy)
@@ -58,6 +58,23 @@
 #    Not used in LFS
 KEYMAP=none
 
+
+#==== PACO VARIABLES ====
+#--- Use paco? 0/1 0(no)/1(yes)
+USE_PACO=1
+PACO_VERSION=1.10.4
+
+#--- Name of the Paco source package
+PACO_FILE=paco-$PACO_VERSION.tar.*
+
+#--- Variables needed
+# Don't change unless you know what you're doing
+PACO_INCLUDE=/
+PACO_EXCLUDE=/sys:/dev:/proc:/tmp:/usr/src:/usr/share/info/dir
+PACO_TMPFILE=/tmp/paco.tmp
+LD_PRELOAD=/usr/lib/libpaco-log.so
+
+
 #=== Variables needed by ICA (Not implemented yet :-/)===
 #--- Run ICA testing 0/1  0(no)/1(yes)
 RUN_ICA=0
Index: common/func_validate_configs.sh
===================================================================
--- common/func_validate_configs.sh     (revision 2542)
+++ common/func_validate_configs.sh     (working copy)
@@ -85,10 +85,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 HPKG          DEPEND     
          TEST"
-  local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE MODEL 
GRSECURITY_HOST TEST STRIP FSTAB             CONFIG KEYMAP         PAGE 
TIMEZONE LANG LC_ALL"
-  local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE METHOD  
ARCH  TARGET  TEST STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE TIMEZONE 
LANG"
-  local -r  lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE             
          TEST STRIP FSTAB             CONFIG        VIMLANG PAGE TIMEZONE LANG"
+  local -r blfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO HPKG          
DEPEND               TEST"
+  local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO HPKG RUNMAKE 
MODEL GRSECURITY_HOST TEST STRIP FSTAB             CONFIG KEYMAP         PAGE 
TIMEZONE LANG LC_ALL"
+  local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO HPKG RUNMAKE 
METHOD  ARCH  TARGET  TEST STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE 
TIMEZONE LANG"
+  local -r  lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO HPKG RUNMAKE    
                   TEST 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 \<common/config\>${OFF}'
@@ -130,6 +130,7 @@
             continue  ;;
         TIMEZONE)  continue;;
         MKFILE)    continue;;
+        USE_PACO)  validation_str="x0x x1x";          validate_str; continue ;;
         HPKG)      validation_str="x0x x1x";          validate_str; continue ;;
         RUNMAKE)   validation_str="x0x x1x";          validate_str; continue ;;
         TEST)      validation_str="x0x x1x x2x x3x";  validate_str; continue ;;
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.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 '[EMAIL PROTECTED] $@' >> $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 '[EMAIL 
PROTECTED]/@@;s@/.*@@'\` && \\
+       if [ -e $PACO_TMPFILE ]; then \\
+               paco -lp \$\$PACKAGE < $PACO_TMPFILE && \\
+               rm -f $PACO_TMPFILE; \\
+       fi;
+EOF
+) >> $MKFILE
+fi
+}
+
Index: common/paco-build.sh
===================================================================
--- common/paco-build.sh        (revision 0)
+++ common/paco-build.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 2542)
+++ common/common-functions     (working copy)
@@ -60,6 +60,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}  -T, --testsuites N ${OFF}
         Run test suites  [0-3]
           0 = none
@@ -623,6 +626,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)
@@ -634,6 +638,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 2542)
+++ HLFS/hlfs.xsl       (working copy)
@@ -39,6 +39,9 @@
   <xsl:param name="lang" select="en_CA"/>
   <xsl:param name="lc_all" select="en_CA"/>
 
+  <!-- Use paco? -->
+  <xsl:param name="use_paco" select="1"/>
+
   <xsl:template match="/">
     <xsl:apply-templates select="//sect1"/>
   </xsl:template>
@@ -191,6 +194,10 @@
       <!-- Fixing bootscripts installation -->
       <xsl:when test="ancestor::[EMAIL PROTECTED]'bootable-bootscripts'] and
                 string() = 'make install'">
+        <!-- inserting LD_PRELOAD before installing bootscripts -->
+        <xsl:if test="$use_paco != '0' and $model != 'uclibc'">
+          <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
+        </xsl:if>
         <xsl:text>make install&#xA;</xsl:text>
         <xsl:text>cd 
../blfs-bootscripts-&blfs-bootscripts-version;&#xA;</xsl:text>
       </xsl:when>
@@ -248,6 +255,25 @@
         <xsl:apply-templates/>
         <xsl:text> || true&#xA;</xsl:text>
       </xsl:when>
+      <!-- paco begin -->
+      <!-- General rule -->
+      <xsl:when test="$use_paco != '0' and $model != 'uclibc' and
+                ancestor::[EMAIL PROTECTED] != 'chapter-temporary-tools'] and
+                contains(string(),'make') and
+                contains(string(),'install')">
+        <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- Linux-libc-headers -->
+      <xsl:when test="$use_paco != '0' and $model != 'uclibc' and
+                ancestor::[EMAIL PROTECTED]'ch-system-linux-libc-headers'] and
+                contains(string(),'install ')">
+        <xsl:text>export LD_PRELOAD=/usr/lib/libpaco-log.so&#xA;</xsl:text>
+        <xsl:apply-templates/>
+        <xsl:text>&#xA;</xsl:text>
+      </xsl:when>
+      <!-- paco end -->
       <!-- The rest of commands -->
       <xsl:otherwise>
         <xsl:apply-templates/>
Index: HLFS/master.sh
===================================================================
--- HLFS/master.sh      (revision 2542)
+++ HLFS/master.sh      (working copy)
@@ -318,6 +318,13 @@
       *) ;;
     esac
 
+    # Install paco as the first package in ch6, befire installing 
linux-libc-headers
+    case $this_script in
+      *linux-libc-headers)
+        PACO_NUM=`echo $this_script | sed -e 's/linux-libc-headers/a-paco/'`
+        wrt_paco_inst "$PACO_NUM"
+    esac
+
     # First append each name of the script files to a list (this will become
     # the names of the targets in the Makefile
     chapter6="$chapter6 $this_script"
@@ -376,7 +383,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
     #
@@ -407,6 +416,14 @@
 
     # Keep the script file name for Makefile dependencies.
     PREV=$this_script
+
+    # Reinstall paco after the toolchain has been readjusted.
+    case "${this_script}" in
+      *readjusting)
+        PACO_NUM=`echo $this_script | sed -e 's/readjusting/x-paco/'`
+        wrt_paco_inst "$PACO_NUM" ;;
+    esac
+
   done # end for file in chapter06/*
 
 }
@@ -469,6 +486,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 2542)
+++ master.sh   (working copy)
@@ -66,6 +66,11 @@
 source $MODULE
 [[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2
 [[ $VERBOSITY > 0 ]] && echo "OK"
+# Load paco-functions
+[[ $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"
 #
 [[ $VERBOSITY > 0 ]] && echo "---------------${nl_}"
 
@@ -146,6 +151,8 @@
 
     --help | -h )  usage | more && exit  ;;
 
+    --no-paco )            USE_PACO=0    ;;
+
     --testsuites | -T )
       test $# = 1 && eval "$exit_missing_arg"
       shift
@@ -455,6 +462,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.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
   if [[ -n "$FILES" ]]; then
     # pushd/popd necessary to deal with mulitiple files
     pushd $PACKAGE_DIR 1> /dev/null
-- 
http://linuxfromscratch.org/mailman/listinfo/alfs-discuss
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to