fighting w/ 'make bootstrap' on CentOS7 w/ CLFS GIT-20170803 updates, v4
Michael D Labriola [Mon, 14 Jan 2019 23:10:07 +0000 (18:10 -0500)]
- Disabled CONFIG_RETPOLINE in both 32bit and 64bit kerenel configs.  I'll
  turn this back on as soon as I've upgraded GCC >= 7.3.
- Made the create-symlinks scriptlet print out WARNINGs foe each detected
  broken symlink, and then remove them automatically.
- Modified configure.ac so that we only ever set either STAGE1_XEN or
  STAGE1_XEN_ONLY variables if we're building for or on a 32bit system.
  Need to actually test this fix when I'm done forcing my way through this
  test build.
- Reorged README.building to make more sense (I think).  ;-)

README.building
configure.ac
utils/bootstrap-stage1/config/kernel-config-32bit
utils/bootstrap-stage1/config/kernel-config-64bit
utils/bootstrap-stage1/go

index aa39bde..ea6ab31 100644 (file)
@@ -29,51 +29,34 @@ that).
         mkfs.ext4 -O ^has_journal /dev/sdXN
 
 
-* Configuring
+* Source Tree Prep
 
-** hostprep only
-INIT_SUBMOD_ARGS="-m MIRRORS" ./autogen.sh \
-    --prefix=/mnt/root-true/ruckus-hostprep \
-    --with-hostprep-only
-
-** 64bit multilib
 INIT_SUBMOD_ARGS="-m MIRRORS" ./autogen.sh \
     --prefix=/scrap/ruckus-hostprep \
-    --enable-stage2-auto \
-    --with-install-dev=/dev/mapper/vg00-baby \
-    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+    --with-hostprep-only
 
-** 32bit w/out Xen (assuming it's already built)
-INIT_SUBMOD_ARGS="-m MIRRORS" ./autogen.sh \
-    --prefix=/scrap/ruckus-hostprep \
-    --enable-stage2-auto \
-    --with-arch=i686 \
-    --without-stage1-xen \
-    --with-install-dev=/dev/mapper/vg00-baby32 \
-    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+make download
 
-** 64bit (pure64) w/out Xen (assuming it's already built)
-INIT_SUBMOD_ARGS="-m MIRRORS" ./autogen.sh \
-    --prefix=/scrap/ruckus-hostprep \
-    --enable-stage2-auto \
-    --with-arch=x86_64 --disable-multilib \
-    --without-stage1-xen \
-    --with-install-dev=/dev/mapper/vg00-baby64 \
-    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+*NOTE*: The download target takes a long time, and could fail if any of the
+        git submodules or download URL's happen to be down (or have changed).
+        I haven't timed it.
 
+make distclean
 
+*NOTE*: W/out this, you won't be able to build out-of-tree in the following
+        steps.  And every time I say "But I don't need to build out-of-tree
+        this time", I always eventually seem to wish that I had...
 
 
 * Building
 
-** Prep
-
-make download
-
-*NOTE*: The download target takes a long time, and could fail if any of the
-        git submodules or download URL's happen to be down (or have changed).
-        I haven't timed it.
+** Hostprep
 
+mkdir /scrap/hostprep/ruckus-build
+cd /scrap/hostprep/ruckus-build
+/scrap/ruckus/configure \
+    --prefix=/scrap/ruckus-hostprep \
+    --with-hostprep-only
 
 make hostprep
 
@@ -89,6 +72,48 @@ make hostprep
         multilib, prebootstrapped).
 
 
+** Configure Stage 1
+
+mkdir /scrap/baby/ruckus-build
+cd /scrap/baby/ruckus-build
+
+*NOTE*: The --prefix needs to continue to match in all of these, because
+        bootstrap-install installs domU config files into
+        $PREFIX_HOSTPREP/boot.
+
+*NOTE*: Eventually, we'll want --enabled-stage2-auto in all of these... but for
+        now, I keep copy-n-pasting these commands and then removing that.  At
+        this point in development, I still like to inspect the bootstrap system
+        upon 1st boot and then manually configure the stage2 building.
+
+*** 64bit multilib
+
+/scrap/ruckus/configure \
+    --prefix=/scrap/ruckus-hostprep \
+    --with-install-dev=/dev/mapper/vg00-baby \
+    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+
+*** 32bit
+
+*NOTE*: We *could* specify --without-stage1-xen here to explicitly skip
+        building the Xen hypervisor.  We've already built one via hostprep, but
+        building it again here will install it in $PREFIX_TOOLS/boot, which is
+        available from the bootstrap system.
+
+/scrap/ruckus/configure \
+    --prefix=/scrap/ruckus-hostprep \
+    --with-arch=i686 \
+    --with-install-dev=/dev/mapper/vg00-baby32 \
+    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+
+*** 64bit (pure64)
+
+/scrap/ruckus/configure \
+    --prefix=/scrap/ruckus-hostprep \
+    --with-arch=x86_64 --disable-multilib \
+    --with-install-dev=/dev/mapper/vg00-baby64 \
+    --with-ruckus-dev-snapshot=/dev/mapper/vg00-ruckus
+
 ** Stage 1
 
 make bootstrap
@@ -100,7 +125,7 @@ make bootstrap
 *NOTE*: bootstrap took another __ minutes on my A10-6700 (x86_64 multilib), 53
         on the A10-7850K, 35 on the FX-8350.  (45 mins then out of space, then
         another 15 until gettext failure, then another 10 until kernel
-        failure...)
+        failure, then another 15 until create-symlinks failure...)
 
 *NOTE*: x86_64-64, FX-8350, bare-metal: 28 minutes
         i686, FX-8350, bare-metal: 28 minutes
index 193a5a0..5baeaca 100644 (file)
@@ -400,19 +400,25 @@ AM_CONDITIONAL([XEN_ENABLED], [test x$xen_enabled = xyes])
 # NOTE: This is to avoid rebuilding the xen hypervisor when bootstrapping
 #       multiple architectures sharing a common hostprep area.
 #
-# FIXME: This could also be used to detect wither we should go on the xen
+# FIXME: This could also be used to detect wether we should go on the xen
 #        detour, instead of the nested if ugliness above...
+#
+# Build Xen in stage1 if we're building 32bit (and install in
+# PREFIX_TOOLS) or if we're building ON A 32BIT HOST (will trigger xen
+# detour, WITH_STAGE1_XEN_ONLY, and eventual installation of xen.gz
+# into PREFIX_HOSTPREP during hostprep).
+#
 AS_IF([test "$xen_enabled" = "yes"],
-  [AS_IF([test -f $PREFIX_HOSTPREP/boot/xen.gz],
-    [stage1_xen=no],
-    [stage1_xen=yes])],
+  [AS_IF([test "$build_arch" != "x86_64" -o "$build_cpu" != "x86_64"],
+    [stage1_xen=yes],
+    [stage1_xen=no])],
   [stage1_xen=no])
 
 # we might want to disable building the xen hypervisor in stage1, for
 # example if we've got two builds going in parallel (both would autodetect
 # to build the hypervisor).
 AC_ARG_WITH(stage1-xen,
-  AS_HELP_STRING([--with-stage1-xen], [Build the Xen hypervisor in bootstrap-stage1.]),
+  AS_HELP_STRING([--with-stage1-xen], [Build the Xen hypervisor in bootstrap-stage1.  This is autodetected if building on 32bit host (for hostprep xen detour) or if building x86 final system (which can't compile hypervisor), but can be overriden here.]),
   stage1_xen=$withval)
 #  stage1_xen=no)
 
index 2591fa5..d170bb2 100644 (file)
@@ -263,7 +263,7 @@ CONFIG_SMP=y
 CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_MPPARSE=y
 # CONFIG_GOLDFISH is not set
-CONFIG_RETPOLINE=y
+# CONFIG_RETPOLINE is not set
 # CONFIG_INTEL_RDT is not set
 CONFIG_X86_BIGSMP=y
 # CONFIG_X86_EXTENDED_PLATFORM is not set
index 2ebbbb4..7c7b8c4 100644 (file)
@@ -276,7 +276,7 @@ CONFIG_X86_FEATURE_NAMES=y
 # CONFIG_X86_X2APIC is not set
 CONFIG_X86_MPPARSE=y
 # CONFIG_GOLDFISH is not set
-CONFIG_RETPOLINE=y
+# CONFIG_RETPOLINE is not set
 # CONFIG_INTEL_RDT is not set
 # CONFIG_X86_EXTENDED_PLATFORM is not set
 # CONFIG_X86_INTEL_LPSS is not set
index 918c1bc..cff9dfb 100755 (executable)
@@ -442,19 +442,16 @@ EOF
             # remove the broken symlinks created by the copy-n-pasted CLFS
             # scriptlet above
             #
-            # NOTE: This list can be double-checked with 'find $CLFS -xtype l'
+            # NOTE: As of CLFS GIT-20170803-x86_64, this removes the following
+            #       broken symlinks:
             #
-            # FIXME: should i automate this?  at least add a 'find $CLFS -xtype
-            #        -l -printf WARNING: broken link detected' or something?
+            #       $CLFS/etc/limits
+            #       $CLFS/etc/login.{access,defs}
             #
-            #rm -vf $CLFS/etc/limits
-            #rm -vf $CLFS/etc/login.{access,defs}
-            #
-            blarg=$(find $CLFS -xtype l
-                -printf "WARNING: broken link detected: %p\n")
+            blarg=$(find $CLFS -xtype l -printf "%p ")
             if [ -n "$blarg" ]; then
-                echo $blarg
-                exit 1
+                echo "WARNING: broken link(s) detected: $blarg"
+                rm -vf $blarg
             fi
            ;;
 
@@ -761,10 +758,16 @@ EOF
            MAKE+=" CROSS_COMPILE=$CLFS_TARGET-"
            pushd $builddir &&
            $MAKE -j$JOBCOUNT dist &&
-            $MAKE DESTDIR=$PREFIX_HOSTPREP install &&
            popd || exit 1
 
-            # also install in PREFIX_TOOLS if needed
+            # install in PREFIX_HOSTPREP if we're on the Xen detour
+            if [ "$STAGE1_XEN_ONLY" = "yes" ]; then
+                pushd $builddir &&
+                $MAKE DESTDIR=$PREFIX_HOSTPREP install &&
+                popd || exit 1
+            fi
+
+            # install in PREFIX_TOOLS if needed
             #
             # NOTE: If we're building a 32bit system, we won't be able to
             #       compile the hypervisor during the final build phase.
@@ -775,6 +778,7 @@ EOF
             # FIXME: Don't forget to make the xen final system build script
             #        slurp up the pre-existing hypervisor into it's package
             #        contents...
+            #
             if [ -z "$BUILD64" ]; then
                 pushd $builddir &&
                 $MAKE DESTDIR=$PREFIX_TOOLS install &&