Index: LFS/master.sh
===================================================================
--- LFS/master.sh	(revision 3fed5860369d3019685c8cc25cb1f50cf71e5e7b)
+++ LFS/master.sh	(revision f33756b8abec04898f9242f439eae3a0a0973009)
@@ -114,11 +114,11 @@
     #--------------------------------------------------------------------#
     #
+    # Find the name of the tarball and the version of the package
+    pkg_tarball=$(get_package_tarball_name $name)
+    pkg_version=$(get_package_version $pkg_tarball)
+
     # 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"
-
-    # Find the version of the command files, if it corresponds with the building of
-    # a specific package
-    pkg_tarball=$(get_package_tarball_name $name)
+    LUSER_wrt_target "${this_script}" "$PREV" "$pkg_version"
 
     # If $pkg_tarball isn't empty, we've got a package...
@@ -127,5 +127,5 @@
       LUSER_wrt_unpack "$pkg_tarball"
       # If the testsuites must be run, initialize the log file
-      [[ "$TEST" = "3" ]] && LUSER_wrt_test_log "${this_script}"
+      [[ "$TEST" = "3" ]] && LUSER_wrt_test_log "${this_script}" "$pkg_version"
       # If using optimizations, write the instructions
       [[ "$OPTIMIZE" = "2" ]] &&  wrt_optimize "$name" && wrt_makeflags "$name"
@@ -136,6 +136,6 @@
     # The changingowner script must be run as root.
     case "${this_script}" in
-      *changingowner)  wrt_RunAsRoot "$file" ;;
-      *)               LUSER_wrt_RunAsUser "$file" ;;
+      *changingowner)  wrt_RunAsRoot "$file" "$pkg_version" ;;
+      *)               LUSER_wrt_RunAsUser "$file" "$pkg_version" ;;
     esac
 
@@ -214,4 +214,5 @@
     # iterations rebuilds
     pkg_tarball=$(get_package_tarball_name $name)
+    pkg_version=$(get_package_version $pkg_tarball)
 
     if [[ "$pkg_tarball" = "" ]] && [[ -n "$N" ]] ; then
@@ -239,6 +240,6 @@
     # and not to use chroot.
     case "${this_script}" in
-      *kernfs)  LUSER_wrt_target  "${this_script}" "$PREV" ;;
-      *)        CHROOT_wrt_target "${this_script}" "$PREV" ;;
+      *kernfs)  LUSER_wrt_target  "${this_script}" "$PREV" "$pkg_version" ;;
+      *)        CHROOT_wrt_target "${this_script}" "$PREV" "$pkg_version" ;;
     esac
 
@@ -255,8 +256,8 @@
       case $name in
         binutils | gcc | glibc | gmp | mpfr )
-          [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${this_script}"
+          [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${this_script}" "$pkg_version"
           ;;
         * )
-          [[ "$TEST" = "2" ]] || [[ "$TEST" = "3" ]] && CHROOT_wrt_test_log "${this_script}"
+          [[ "$TEST" = "2" ]] || [[ "$TEST" = "3" ]] && CHROOT_wrt_test_log "${this_script}" "$pkg_version"
           ;;
       esac
@@ -268,6 +269,6 @@
     # and not to use chroot.
     case "${this_script}" in
-      *kernfs)  wrt_RunAsRoot  "$file" ;;
-      *)        CHROOT_wrt_RunAsRoot "$file" ;;
+      *kernfs)  wrt_RunAsRoot  "$file" "$pkg_version" ;;
+      *)        CHROOT_wrt_RunAsRoot "$file" "$pkg_version" ;;
     esac
 
Index: common/libs/func_book_parser
===================================================================
--- common/libs/func_book_parser	(revision 3fed5860369d3019685c8cc25cb1f50cf71e5e7b)
+++ common/libs/func_book_parser	(revision f33756b8abec04898f9242f439eae3a0a0973009)
@@ -32,11 +32,10 @@
            cd ${PROGNAME}-$LFSVRS
            echo "Checking out $LFSVRS at $PWD in $TREE"
-           git checkout -b ${TREE} ${TREE} >>$LOGDIR/$LOG 2>&1
+           git checkout ${TREE} >>$LOGDIR/$LOG 2>&1
         fi
     else
       cd ${PROGNAME}-$LFSVRS
       case $PROGNAME in
-        clfs*)  git checkout master >>$LOGDIR/$LOG 2>&1
-                git pull >>$LOGDIR/$LOG 2>&1
+        clfs*)  git pull >>$LOGDIR/$LOG 2>&1
                 if [ ! $TREE == "development" ]; then
                    git checkout ${TREE} >>$LOGDIR/$LOG 2>&1
Index: common/libs/func_wrt_Makefile
===================================================================
--- common/libs/func_wrt_Makefile	(revision 3fed5860369d3019685c8cc25cb1f50cf71e5e7b)
+++ common/libs/func_wrt_Makefile	(revision f33756b8abec04898f9242f439eae3a0a0973009)
@@ -59,5 +59,5 @@
 
 
-#==== PACKAGES NAMES ===
+#==== PACKAGES NAMES AND VERSIONS ====
 
 #----------------------------------#
@@ -117,4 +117,39 @@
 }
 
+#----------------------------------#
+get_package_version() {            #
+#----------------------------------#
+# Those hacks may change depending on the invention of devs for tarball names.
+# Normally, we expect -digit to signal the beginning of the version field
+# but it may happen that there is no '-' (tcl, expect), that the version
+# field is ddd-d (pkg-config-lite-028-1, since sed is greedy, it finds only
+# the second dash) or that the first character of the version is not a digit
+# (iputils-s20121221)...
+  case ${1} in
+     tcl*|expect*|tzdata*|xmlts*|unzip*|lynx*)
+                           echo ${1} | sed -e 's@^[^[:digit:]]*@@' \
+                                           -e 's@\(-src\)*\.tar.*@@'
+        ;;
+     iputils*)             echo ${1} | sed -e 's@^.*-@@' \
+                                           -e 's@\.tar.*@@'
+        ;;
+     LVM*)                 echo ${1} | sed -e 's@^[^.]*\.@@' \
+                                           -e 's@\.tgz.*@@'
+        ;;
+     iproute*)             echo ${1} | sed -e 's@^[^-]*-@@' \
+                                           -e 's@\.tar.*@@'
+        ;;
+     pkg*|udev*|Singular*)
+                           echo ${1} | sed -e 's@^.*[a-z]-\([[:digit:]]\)@\1@' \
+                                           -e 's@\.tar.*@@' \
+                                           -e 's@\.zip.*@@'
+        ;;
+     *)                    echo ${1} | sed -e 's@^.*[-_]\([[:digit:]]\)@\1@' \
+                                           -e 's@\.tar.*@@' \
+                                           -e 's@\.zip.*@@'
+        ;;
+  esac
+
+}
 #=======================
 
@@ -127,4 +162,8 @@
   local i=$1
   local PREV=$2
+  local version
+  if [ "$3" != "" ]; then
+    version=-$3
+  fi
 (
 cat << EOF
@@ -133,6 +172,6 @@
 	@\$(call echo_message, Building)
 ${NO_PROGRESS}	@export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
-	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
-	@\$(PRT_DU) >>logs/\$@
+	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
+	@\$(PRT_DU) >>logs/\$@$version
 EOF
 ) >> $MKFILE.tmp
@@ -144,4 +183,8 @@
   local i=$1
   local PREV=$2
+  local version
+  if [ "$3" != "" ]; then
+    version=-$3
+  fi
 (
 cat << EOF
@@ -150,6 +193,6 @@
 	@\$(call echo_message, Building)
 ${NO_PROGRESS}	@export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
-	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
-	@\$(PRT_DU_CR) >>logs/\$@
+	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
+	@\$(PRT_DU_CR) >>logs/\$@$version
 EOF
 ) >> $MKFILE.tmp
@@ -212,9 +255,13 @@
 LUSER_wrt_test_log() {             # Initialize testsuite log file
 #----------------------------------#
-  local TESTLOGFILE=$1
+  local version
+  if [ "$2" != "" ]; then
+    version=-$2
+  fi
+  local TESTLOGFILE=$1$version
 (
 cat  << EOF
 	@echo "export  TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\
-	echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/\$@
+	echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/$TESTLOGFILE
 EOF
 ) >> $MKFILE.tmp
@@ -224,9 +271,13 @@
 CHROOT_wrt_test_log() {            #
 #----------------------------------#
-  local TESTLOGFILE=$1
+  local version
+  if [ "$2" != "" ]; then
+    version=-$2
+  fi
+  local TESTLOGFILE=$1$version
 (
 cat  << EOF
 	@echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\
-	echo "\$(nl_)\`date\`\$(nl_)" >test-logs/\$@
+	echo "\$(nl_)\`date\`\$(nl_)" >\$(crTESTLOGDIR)/$TESTLOGFILE
 EOF
 ) >> $MKFILE.tmp
@@ -242,4 +293,8 @@
 #----------------------------------#
   local MOUNT_ENV
+  local version
+  if [ "$2" != "" ]; then
+    version=-$2
+  fi
   local file=$1
 
@@ -256,6 +311,6 @@
 cat << EOF
 	@export ${MOUNT_ENV}=\$(MOUNT_PT) && \\
-	${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
-	\$(PRT_DU) >>logs/\$@
+	${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@$version 2>&1 && \\
+	\$(PRT_DU) >>logs/\$@$version
 EOF
 ) >> $MKFILE.tmp
@@ -266,10 +321,14 @@
 #----------------------------------#
   local file=$1
+  local version
+  if [ "$2" != "" ]; then
+    version=-$2
+  fi
 
 (
 cat << EOF
 	@source ~/.bashrc && \\
-	\$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@ 2>&1 && \\
-	\$(PRT_DU) >>logs/\$@
+	\$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@$version 2>&1 && \\
+	\$(PRT_DU) >>logs/\$@$version
 EOF
 ) >> $MKFILE.tmp
@@ -280,9 +339,13 @@
 #----------------------------------#
   local file=$1
+  local version
+  if [ "$2" != "" ]; then
+    version=-$2
+  fi
 (
 cat << EOF
 	@source envars && \\
-	\$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
-	\$(PRT_DU_CR) >>logs/\$@
+	\$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@$version 2>&1 && \\
+	\$(PRT_DU_CR) >>logs/\$@$version
 EOF
 ) >> $MKFILE.tmp
Index: jhalfs
===================================================================
--- jhalfs	(revision 3fed5860369d3019685c8cc25cb1f50cf71e5e7b)
+++ jhalfs	(revision f33756b8abec04898f9242f439eae3a0a0973009)
@@ -180,5 +180,5 @@
       clfs* )
         LFSVRS=${BRANCH_ID}
-        TREE=tags/clfs-${BRANCH_ID}
+        TREE=clfs-${BRANCH_ID}
         ;;
       * )
