Author: pierre
Date: Wed Jun 10 13:01:17 2020
New Revision: 4167

Log:
Adapt for the cross 2 branch. Note that ICA is broken now. Keeping some old
code to use for fixing ICA, but committing now so that testing can begin!

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

Modified: jhalfs/trunk/LFS/master.sh
==============================================================================
--- jhalfs/trunk/LFS/master.sh  Tue Jun  9 00:28:05 2020        (r4166)
+++ jhalfs/trunk/LFS/master.sh  Wed Jun 10 13:01:17 2020        (r4167)
@@ -10,53 +10,97 @@
 #############################################################
 
 
-#----------------------------#
-chapter4_Makefiles() {       #
-#----------------------------#
-  echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter4     ( SETUP ) 
${R_arrow}"
-  # Ensure the first dependency is empty
-  unset PREV
+#-------------------------#
+chapter_targets() {       #
+#-------------------------#
+# $1 is the chapter number. Pad it with 0 to the left to obtain a 2-digit
+# number:
+  printf -v dir chapter%02d $1
+
+  echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter $1${R_arrow}"
 
-  for file in chapter04/* ; do
+  for file in $dir/* ; do
     # Keep the script file name
     this_script=`basename $file`
 
-    # First append each name of the script files to a list (this will become
-    # the names of the targets in the Makefile
-    # DO NOT append the settingenvironment script, it need be run as luser.
-    # A hack is necessary: create script in chap4 BUT run as a dependency for
-    # LUSER target
+    # Some scripts need peculiar actions:
+    # - glibc chap 5: ix 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
+    # - 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 ;;
+      8*grub)          (( nb_chaps == 5 )) && continue ;;
+      10*grub)         continue ;;
+      *fstab)          [[ -z "${FSTAB}" ]] ||
+                       [[ ${FSTAB} == $BUILDDIR/sources/fstab ]] ||
+                       cp ${FSTAB} $BUILDDIR/sources/fstab ;;
+      *kernel)         [[ -z ${CONFIG} ]] && continue
+                       [[ ${CONFIG} == $BUILDDIR/sources/kernel-config ]] ||
+                       cp ${CONFIG} $BUILDDIR/sources/kernel-config  ;;
+    esac
+
+    # Append the name of the script to a list. The name of the
+    # list is contained in the variable Makefile_target. We adjust this
+    # variable at various points. Note that it is initialized to "SETUP"
+    # in the main function, before calling this function for the first time.
     case "${this_script}" in
-      *settingenvironment) chapter5="$chapter5 ${this_script}" ;;
-                        *) chapter4="$chapter4 ${this_script}" ;;
+      *settingenvironment) Makefile_target=LUSER_TGT  ;;
+      *changingowner     ) Makefile_target=SUDO_TGT   ;;
+      *creatingdirs      ) Makefile_target=CHROOT_TGT ;;
+      *bootscripts       ) Makefile_target=BOOT_TGT   ;; # case of sysv    book
+      *network           ) Makefile_target=BOOT_TGT   ;; # case of systemd book
     esac
+    eval $Makefile_target=\"\$$Makefile_target ${this_script}\"
 
     # Grab the name of the target
-    name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@'`
+    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.
-    LUSER_wrt_target "${this_script}" "$PREV"
+    case $Makefile_target in
+      CHROOT_TGT)  CHROOT_wrt_target "${this_script}" "$PREV" "$pkg_version" ;;
+      *)            LUSER_wrt_target "${this_script}" "$PREV" "$pkg_version" ;;
+    esac
 
+    # 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
+        CHROOT_wrt_TouchTimestamp
+      fi
+      # Always initialize the test log file, since the test instructions may
+      # be "uncommented" by the user
+      case $Makefile_target in
+       CHROOT_TGT)  CHROOT_wrt_test_log "${this_script}" "$pkg_version" ;;
+       LUSER_TGT )  LUSER_wrt_test_log  "${this_script}" "$pkg_version" ;;
+      esac
+
+      # If using optimizations, write the instructions
+      case "${OPTIMIZE}$1${nb_chaps}${this_script}${REALSBU}" in
+          0* | *binutils-pass1y | 15* | 167* | 177*) ;;
+          *kernel) wrt_makeflags "$name" ;; # No CFLAGS for kernel
+          *) wrt_optimize "$name" && wrt_makeflags "$name" ;;
+      esac
+    fi
+
+# Some scriptlet have a special treatment; otherwise standard
     case "${this_script}" in
-      *settingenvironment)
-(
-cat << EOF
-       @cd && \\
-       function source() { true; } && \\
-       export -f source && \\
-       \$(CMDSDIR)/`dirname $file`/\$@ >> \$(LOGDIR)/\$@ 2>&1 && \\
-       sed 's|/mnt/lfs|\$(MOUNT_PT)|' -i .bashrc && \\
-       echo source $JHALFSDIR/envars >> .bashrc
-       @\$(PRT_DU) >>logs/\$@
-EOF
-) >> $MKFILE.tmp
-             ;;
       *addinguser)
 (
 cat << EOF
@@ -74,9 +118,45 @@
 EOF
 ) >> $MKFILE.tmp
              ;;
-      *)                   wrt_RunAsRoot "$file" ;;
+      *settingenvironment)
+(
+cat << EOF
+       @cd && \\
+       function source() { true; } && \\
+       export -f source && \\
+       \$(CMDSDIR)/`dirname $file`/\$@ >> \$(LOGDIR)/\$@ 2>&1 && \\
+       sed 's|/mnt/lfs|\$(MOUNT_PT)|' -i .bashrc && \\
+       echo source $JHALFSDIR/envars >> .bashrc
+       @\$(PRT_DU) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+             ;;
+      *fstab) if [[ -n "$FSTAB" ]]; then
+                CHROOT_wrt_CopyFstab
+              else
+                CHROOT_wrt_RunAsRoot "$file"
+              fi
+              ;;
+
+      *) 
+         # 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.
+         case "${Makefile_target}" in
+           SETUP_TGT | SUDO_TGT)  wrt_RunAsRoot "$file" "$pkg_version" ;;
+           LUSER_TGT)             LUSER_wrt_RunAsUser "$file" "$pkg_version" ;;
+           CHROOT_TGT | BOOT_TGT) CHROOT_wrt_RunAsRoot "$file" "$pkg_version" 
;;
+         esac
+             ;;
     esac
 
+    # 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
+        CHROOT_wrt_LogNewFiles "$name"
+      fi
+    fi
+
     # Include a touch of the target name so make can check
     # if it's already been made.
     wrt_touch
@@ -87,11 +167,10 @@
 
     # Keep the script file name for Makefile dependencies.
     PREV=${this_script}
-  done  # end for file in chapter04/*
+  done  # end for file in $dir/*
 }
 
-
-
+# NOT USED -- NOT USED
 #----------------------------#
 chapter5_Makefiles() {
 #----------------------------#
@@ -112,12 +191,6 @@
     # Keep the script file name
     this_script=`basename $file`
 
-    # Fix locales creation when running chapter05 testsuites (ugly)
-    case "${this_script}" in
-      *glibc)     [[ "${TEST}" = "3" ]] && \
-                  sed -i 's@/usr/lib/locale@/tools/lib/locale@' $file ;;
-    esac
-
     # Append each name of the script files to a list that Makefile_target
     # points to. But before that, change Makefile_target at the first script
     # of each target.
@@ -187,7 +260,7 @@
   done  # end for file in chapter05/*
 }
 
-
+# NOT USED -- NOT USED keep for ICA code
 #----------------------------#
 chapter6_Makefiles() {
 #----------------------------#
@@ -333,7 +406,7 @@
     system_build="$chapter6"
   fi
 }
-
+# NOT USED -- NOT USED
 #----------------------------#
 chapter78_Makefiles() {
 #----------------------------#
@@ -426,8 +499,6 @@
 
 }
 
-
-
 #----------------------------#
 build_Makefile() {           #
 #----------------------------#
@@ -436,17 +507,36 @@
 
   cd $JHALFSDIR/${PROGNAME}-commands
 
-  # Start with a clean Makefile.tmp file
+  # Start with empty files
   >$MKFILE
+  >$MKFILE.tmp
+
+  # Ensure the first dependency is empty
+  unset PREV
 
-  chapter4_Makefiles
-  chapter5_Makefiles
-  # Add the save target, if needed
-  [[ "$SAVE_CH5" = "y" ]] && wrt_save_target $Makefile_target
-  chapter6_Makefiles
-  # Add the iterations targets, if needed
-  [[ "$COMPARE" = "y" ]] && wrt_compare_targets
-  chapter78_Makefiles
+  # We begin with the SETUP target; successive targets will be assigned in
+  # the chapter_targets function.
+  Makefile_target=SETUP_TGT
+
+  # We need to know the chapter numbering, which depends on the version
+  # of the book. Use the number of subdirs to know which version we have
+  chaps=($(echo *))
+  nb_chaps=${#chaps[*]} # 5 if classical version, 7 if new version
+# DEBUG
+#  echo chaps: ${chaps[*]}
+#  echo nb_chaps: $nb_chaps
+# end DEBUG
+
+  # Make a temporary file with all script targets
+  for (( i = 4; i < nb_chaps+4; i++ )); do
+    chapter_targets $i
+    if (( i ==  nb_chaps )); then : # we have finished temporary tools
+      # 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
+  done
   # Add the CUSTOM_TOOLS targets, if needed
   [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target
 
@@ -612,9 +702,9 @@
        sudo \$(CHROOT2)
        \$(MAKE) teardown
 
-SETUP:        $chapter4
-LUSER:        $chapter5
-SUDO:         $runasroot
+SETUP:        $SETUP_TGT
+LUSER:        $LUSER_TGT
+SUDO:         $SUDO_TGT
 EOF
 ) >> $MKFILE
 if [ "$INITSYS" = systemd ]; then
@@ -629,11 +719,10 @@
 (
     cat << EOF
 CHROOT:       SHELL=\$(filter %bash,\$(CHROOT1))
-CHROOT:       $chapter6
-BOOT:         $chapter78
+CHROOT:       $CHROOT_TGT
+BOOT:         $BOOT_TGT
 CUSTOM_TOOLS: $custom_list
 
-
 create-sbu_du-report:  mk_BOOT
        @\$(call echo_message, Building)
        @if [ "\$(ADD_REPORT)" = "y" ]; then \\

Modified: jhalfs/trunk/common/libs/func_book_parser
==============================================================================
--- jhalfs/trunk/common/libs/func_book_parser   Tue Jun  9 00:28:05 2020        
(r4166)
+++ jhalfs/trunk/common/libs/func_book_parser   Wed Jun 10 13:01:17 2020        
(r4167)
@@ -197,7 +197,7 @@
                  $BOOK/index.xml >> $LOGDIR/$LOG 2>&1
 # Remove flags requesting user action in some cases. Much easier here than
 # in the stylesheet...
-        sed -i 's/-iv /-v /' ./${PROGNAME}-commands/chapter08/*kernel*
+        sed -i 's/-iv /-v /' ./${PROGNAME}-commands/chapter??/*kernel*
       ;;
     *)  echo -n " ${L_arrow}${PROGNAME}${R_arrow} book invalid, terminate 
build... "
         exit 1 ;;
@@ -315,7 +315,7 @@
                $BOOK/*/kernfs.xml >> $LOGDIR/$LOG 2>&1
       xsltproc --nonet \
                -o kernfs-scripts/teardown.sh kernfs.xsl \
-               $BOOK/chapter09/reboot.xml >> $LOGDIR/$LOG 2>&1
+               $BOOK/chapter??/reboot.xml >> $LOGDIR/$LOG 2>&1
       ;;
     *)
   esac

Modified: jhalfs/trunk/jhalfs
==============================================================================
--- jhalfs/trunk/jhalfs Tue Jun  9 00:28:05 2020        (r4166)
+++ jhalfs/trunk/jhalfs Wed Jun 10 13:01:17 2020        (r4167)
@@ -185,7 +185,6 @@
   NO_PROGRESS="#"
 fi
 
-
 # Sanity check on the location of $BUILDDIR / $JHALFSDIR
 CWD="$(cd "$(dirname "$0")" && pwd)"
 if [[ $JHALFSDIR == "$CWD" ]]; then
@@ -454,6 +453,14 @@
 # Note that all customization to $JHALFSDIR have to be done before this.
 # But the LFS book is needed for BLFS tools.
   get_book
+# At this point, we should have a way to know whether we have a cross
+# or regular book... In case of cross, prohibite TEST=3
+# the position of gcc-pass2 (chapter 6 or 5) tells us (not valid for
+# cross-chap5 branch).
+  if (( TEST == 3 )) && \
+     [ -f "$JHALFSDIR/${PROGNAME}-commands/chapter06/gcc-pass2.xml" ]; then
+        TEST=2
+  fi
   extract_commands
   echo "${SD_BORDER}${nl_}"
   cd "$CWD" # the functions above change directory
-- 
http://lists.linuxfromscratch.org/listinfo/alfs-log
Unsubscribe: See the above information page

Reply via email to