Index: common/common-functions
===================================================================
--- common/common-functions	(revision 3dc772921fd5d36e1a4e522918e68a284a3ef7b6)
+++ common/common-functions	(revision 7432834d161272e2d9df7299b3c86bebf0c84ede)
@@ -130,4 +130,16 @@
 ${BOLD}  --method BUILDMETHOD ${OFF}
         Select the build method, chroot or boot
+-EOF-
+
+[[ ${PROGNAME} = "clfs2" ]] &&
+cat <<- -EOF-
+
+${BOLD}  -A, --arch ARCH ${OFF}
+        Select the TARGET architecture, valid selections are:
+           32bit builds
+        arm
+           64bit builds
+
+	64bit multi-lib
 -EOF-
 
@@ -646,4 +658,5 @@
       hlfs) svn_root="HLFS" ;;
       clfs) svn_root="cross-lfs" ;;
+      clfs2) svn_root="cross-lfs" ;;
       *) echo "BOOK not defined in function <get_book>"
           exit 1 ;;
@@ -661,5 +674,5 @@
         cd $JHALFSDIR
         case $PROGNAME in
-          clfs)
+          clfs | clfs2)
             VERSION=$(xmllint --noent $BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //'  -e 's/<\/.*//') ;;
           *)
@@ -672,5 +685,8 @@
       fi
     else
-      svn co $SVN/${svn_root}/${TREE} ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1
+       case $PROGNAME in
+         clfs2 ) svn co $SVN/${svn_root}/branches/clfs-2.0/BOOK ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1 ;;
+              *) svn co $SVN/${svn_root}/${TREE} ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1 ;;
+       esac
       echo -ne "done\n"
       extract_commands
@@ -694,5 +710,5 @@
   cd $JHALFSDIR
   case $PROGNAME in
-    clfs)
+    clfs | clfs2 )
       VERSION=$(xmllint --noent $BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //'  -e 's/<\/.*//') ;;
     *)
@@ -722,4 +738,17 @@
                  -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
       ;;
+
+    clfs2)
+        echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture"
+        xsltproc --nonet \
+                 --xinclude \
+                 --stringparam testsuite $TEST \
+                 --stringparam vim-lang $VIMLANG \
+                 --stringparam timezone $TIMEZONE \
+                 --stringparam page $PAGE \
+                 --stringparam lang $LANG \
+                 --stringparam keymap $KEYMAP \
+                 -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
+      ;;
     hlfs)
         echo -n " ${L_arrow}${BOLD}$MODEL${R_arrow} HLFS libc implementation"
@@ -770,5 +799,5 @@
   echo -n "Creating <${PROGNAME}> list of tarball names for $BOOK $ARCH"
   case ${PROGNAME} in
-    clfs)
+    clfs | clfs2)
         xsltproc --nonet --xinclude -o pkg_tarball_list packages.xsl \
                  $BOOK/materials/${ARCH}-chapter.xml >>$LOGDIR/$LOG 2>&1
@@ -925,4 +954,12 @@
         echo " ...OK"
       ;;
+    clfs2)
+        echo -n "Creating CLFS2 <${ARCH}> specific URLs file"
+        xsltproc --nonet --xinclude \
+                 --stringparam server $SERVER \
+                 -o $BUILDDIR/sources/urls.lst urls.xsl \
+                 $BOOK/materials/$ARCH-chapter.xml >>$LOGDIR/$LOG 2>&1
+        echo " ...OK"
+      ;;
     hlfs)
         echo -n "Creating HLFS <${MODEL}> specific URLs file"
Index: common/func_validate_configs.sh
===================================================================
--- common/func_validate_configs.sh	(revision 3dc772921fd5d36e1a4e522918e68a284a3ef7b6)
+++ common/func_validate_configs.sh	(revision 7432834d161272e2d9df7299b3c86bebf0c84ede)
@@ -58,4 +58,6 @@
    "ppc64")      [[ "${TARGET}"   = "powerpc64-unknown-linux-gnu" ]] &&
                  [[ "${TARGET32}" = "powerpc-unknown-linux-gnu"   ]] && return
+    ;;
+   "arm")        [[ "${TARGET}"   = "arm-unknown-linux-gnu" ]] && return
     ;;
    *)  write_error_and_die
@@ -85,7 +87,8 @@
 
   # 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 OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG GETKERNEL KEYMAP         PAGE TIMEZONE LANG LC_ALL"
-  local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD  ARCH  TARGET  TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
-  local -r  lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE                       TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG GETKERNEL        VIMLANG PAGE TIMEZONE LANG"
+  local -r  hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG GETKERNEL KEYMAP         PAGE TIMEZONE LANG LC_ALL"
+  local -r  clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD  ARCH  TARGET  TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
+  local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE         ARCH  TARGET       OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
+  local -r   lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE                       TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG GETKERNEL        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,'
@@ -209,5 +212,5 @@
       PAGE)       validate_against_str "xletterx xA4x" ;;
       METHOD)     validate_against_str "xchrootx xbootx" ;;
-      ARCH)       validate_against_str "xx86x xx86_64x xx86_64-64x xsparcx xsparc64x xsparc64-64x xmipsx xmips64x xmips64-64x xppcx xppc64x xalphax" ;;
+      ARCH)       validate_against_str "xx86x xx86_64x xx86_64-64x xsparcx xsparc64x xsparc64-64x xmipsx xmips64x xmips64-64x xppcx xppc64x xalphax xarmx" ;;
       TARGET)     validate_target ;;
       GRSECURITY_HOST)  validate_against_str "x0x x1x" ;;
