Author: pierre
Date: Sun Jun 14 00:08:19 2020
New Revision: 4172

Log:
Update ICA for new LFS/master.sh

Modified:
   jhalfs/trunk/LFS/master.sh
   jhalfs/trunk/common/libs/func_compare.sh

Modified: jhalfs/trunk/LFS/master.sh
==============================================================================
--- jhalfs/trunk/LFS/master.sh  Thu Jun 11 13:43:33 2020        (r4171)
+++ jhalfs/trunk/LFS/master.sh  Sun Jun 14 00:08:19 2020        (r4172)
@@ -17,23 +17,49 @@
 # number:
   printf -v dir chapter%02d $1
 
-  echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter $1${R_arrow}"
+# $2 contains the build number if rebuilding for ICA
+  if [[ -z "$2" ]] ; then
+    local N=""
+  else
+    local N=-build_$2
+    local CHROOT_TGT=""
+    mkdir ${dir}$N
+    cp ${dir}/* ${dir}$N
+    for script in ${dir}$N/* ; do
+      # Overwrite existing symlinks, files, and dirs
+      sed -e 's/ln *-sv/&f/g' \
+          -e 's/mv *-v/&f/g' \
+          -e 's/mkdir *-v/&p/g' -i ${script}
+      # Rename the scripts
+      mv ${script} ${script}$N
+    done
+    # Remove Bzip2 binaries before make install (LFS-6.2 compatibility)
+    sed -e 's@make install@rm -vf /usr/bin/bz*\n&@' -i ${dir}$N/*-bzip2$N
+    # Remove openssl-<version> from /usr/share/doc (LFS-9.x), because
+    # otherwise the mv command creates an openssl directory.
+    sed -e 's@mv -v@rm -rfv /usr/share/doc/openssl-*\n&@' \
+        -i ${dir}$N/*-openssl$N
+  fi
+
+  echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter $1$N${R_arrow}"
 
-  for file in $dir/* ; do
+  for file in ${dir}$N/* ; do
     # Keep the script file name
     this_script=`basename $file`
 
     # Some scripts need peculiar actions:
-    # - glibc chap 5: ix locales creation when running chapter05 testsuites
+    # - glibc chap 5: fix locales creation when running chapter05 testsuites
     # - Stripping at the end of system build: lfs.xsl does not generate
     #   correct commands if the user does not want to strip, so skip it
     #   in this case
+    # - do not reinstall linux-headers when rebuilding
     # - grub config: must be done manually; skip it
     # - handle fstab and .config. Skip kernel if .config not supplied
     case "${this_script}" in
       5*glibc)         [[ "${TEST}" = "3" ]] && \
                        sed -i 's@/usr/lib/locale@/tools/lib/locale@' $file ;;
       *strippingagain) [[ "${STRIP}" = "n" ]] && continue ;;
+      *linux-headers*) [[ -n "$N" ]] && continue ;;
       8*grub)          (( nb_chaps == 5 )) && continue ;;
       10*grub)         continue ;;
       *fstab)          [[ -z "${FSTAB}" ]] ||
@@ -43,6 +69,24 @@
                        [[ ${CONFIG} == $BUILDDIR/sources/kernel-config ]] ||
                        cp ${CONFIG} $BUILDDIR/sources/kernel-config  ;;
     esac
+    # Grab the name of the target
+    name=`echo ${this_script} | sed -e 's@[0-9]\{3,4\}-@@' \
+                                    -e 's@-pass[0-9]\{1\}@@' \
+                                    -e 's@-libstdc++@@' \
+                                    -e 's,'$N',,'`
+
+    # Find the name of the tarball and the version of the package
+    # If it doesn't exist, we skip it in iterations rebuilds (except stripping
+    # and revisedchroot, where .a and .la files are removed).
+    pkg_tarball=$(sed -n 's/tar -xf \(.*\)/\1/p' $file)
+    pkg_version=$(sed -n 's/VERSION=\(.*\)/\1/p' $file)
+
+    if [[ "$pkg_tarball" = "" ]] && [[ -n "$N" ]] ; then
+      case "${this_script}" in
+        *stripping*|*revised*) ;;
+        *)  continue ;;
+      esac
+    fi
 
     # Append the name of the script to a list. The name of the
     # list is contained in the variable Makefile_target. We adjust this
@@ -57,18 +101,9 @@
     esac
     eval $Makefile_target=\"\$$Makefile_target ${this_script}\"
 
-    # Grab the name of the target
-    name=`echo ${this_script} | sed -e 's@[0-9]\{3,4\}-@@' \
-                                    -e 's@-pass[0-9]\{1\}@@' \
-                                    -e 's@-libstdc++@@'`
-
     #--------------------------------------------------------------------#
     #         >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<<          #
     #--------------------------------------------------------------------#
-    #
-    # Find the name of the tarball and the version of the package
-    pkg_tarball=$(sed -n 's/tar -xf \(.*\)/\1/p' $file)
-    pkg_version=$(sed -n 's/VERSION=\(.*\)/\1/p' $file)
 
     # Drop in the name of the target on a new line, and the previous target
     # as a dependency. Also call the echo_message function.
@@ -80,8 +115,10 @@
     # If $pkg_tarball isn't empty, we've got a package...
     if [ "$pkg_tarball" != "" ] ; then
       # Touch timestamp file if installed files logs shall be created.
-      # But only for the final install chapter
-      if [ "${INSTALL_LOG}" = "y" ] && (( 1+nb_chaps <= $1 )) ; then
+      # But only for the final install chapter and not when rebuilding it
+      if [ "${INSTALL_LOG}" = "y" ] &&
+         (( 1+nb_chaps <= $1 )) &&
+         [ "x$N" = x ] ; then
         CHROOT_wrt_TouchTimestamp
       fi
       # Always initialize the test log file, since the test instructions may
@@ -152,7 +189,9 @@
     # Write installed files log and remove the build directory(ies)
     # except if the package build fails.
     if [ "$pkg_tarball" != "" ] ; then
-      if [ "${INSTALL_LOG}" = "y" ] && (( 1+nb_chaps <= $1 )) ; then
+      if [ "${INSTALL_LOG}" = "y" ] &&
+         (( 1+nb_chaps <= $1 )) &&
+         [ "x${N}" = "x" ] ; then
         CHROOT_wrt_LogNewFiles "$name"
       fi
     fi
@@ -167,7 +206,17 @@
 
     # Keep the script file name for Makefile dependencies.
     PREV=${this_script}
+    # Set "system_build" var for iteration targets
+    if [ -z "$N" ] && (( 1+nb_chaps == $1 )); then
+      system_build="$system_build $this_script"
+    fi
+
   done  # end for file in $dir/*
+  # Set "system_build" when rebuilding: note the CHROOT_TGT is local
+  # in that case.
+  if [ -n "$N" ]; then
+    system_build="$CHROOT_TGT"
+  fi
 }
 
 # NOT USED -- NOT USED
@@ -534,8 +583,10 @@
       # Add the save target, if needed
       [[ "$SAVE_CH5" = "y" ]] && wrt_save_target $Makefile_target
     fi
-    # TODO Add the iterations targets, if needed
-    #  [[ "$COMPARE" = "y" ]] && wrt_compare_targets
+    if (( i ==  1+nb_chaps )); then : # we have finished final system
+      # Add the iterations targets, if needed
+      [[ "$COMPARE" = "y" ]] && wrt_compare_targets $i
+    fi
   done
   # Add the CUSTOM_TOOLS targets, if needed
   [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target

Modified: jhalfs/trunk/common/libs/func_compare.sh
==============================================================================
--- jhalfs/trunk/common/libs/func_compare.sh    Thu Jun 11 13:43:33 2020        
(r4171)
+++ jhalfs/trunk/common/libs/func_compare.sh    Sun Jun 14 00:08:19 2020        
(r4172)
@@ -8,8 +8,9 @@
                                           # and "ITERATIONS" with no "$".
     ITERATION=iteration-$N
     if [ "$N" != "1" ] ; then
-      wrt_system_build "$N" "$PREV_IT"
+      wrt_system_build "$1" "$N" "$PREV_IT"
     fi
+    # add needed Makefile target
     this_script=$ITERATION
     CHROOT_wrt_target "$ITERATION" "$PREV"
     wrt_compare_work "$ITERATION" "$PREV_IT"
@@ -18,31 +19,42 @@
     PREV_IT=$ITERATION
     PREV=$ITERATION
   done
+  # We need to prevent "userdel" in all iterations but the last
+  # We need to access the scriptlets in "dir"
+  local dir
+  printf -v dir chapter%02d "$1"
+
+  sed -i '/userdel/d' $dir/*revised*
+  for (( N = 2; N < ITERATIONS; N++ )); do
+     sed -i '/userdel/d' $dir-build_$N/*revised*
+  done
+
 }
 
 #----------------------------------#
 wrt_system_build() {               #
 #----------------------------------#
-  local     RUN=$1
-  local PREV_IT=$2
+  local    CHAP=$1
+  local     RUN=$2
+  local PREV_IT=$3
 
   if [[ "$PROGNAME" = "clfs" ]] ; then
     final_system_Makefiles $RUN
   else
-    chapter6_Makefiles $RUN
+    chapter_targets $CHAP $RUN
   fi
 
   if [[ "$PROGNAME" = "clfs" ]] ; then
     basicsystem="$basicsystem $PREV_IT $system_build"
   else
-    chapter6="$chapter6 $PREV_IT $system_build"
+    CHROOT_TGT="$CHROOT_TGT $PREV_IT $system_build"
   fi
 
   if [[ "$RUN" = "$ITERATIONS" ]] ; then
     if [[ "$PROGNAME" = "clfs" ]] ; then
       basicsystem="$basicsystem iteration-$RUN"
     else
-      chapter6="$chapter6 iteration-$RUN"
+      CHROOT_TGT="$CHROOT_TGT iteration-$RUN"
     fi
   fi
 }
@@ -73,7 +85,6 @@
       wrt_do_ica_work "$PREV_IT" "$ITERATION" "$DEST_ICA"
     fi
   fi
-
 }
 
 #----------------------------------#
-- 
http://lists.linuxfromscratch.org/listinfo/alfs-log
Unsubscribe: See the above information page

Reply via email to