diff --git a/BLFS/alternatives.conf b/BLFS/alternatives.conf
new file mode 100644
index 0000000..0b6b928
--- /dev/null
+++ b/BLFS/alternatives.conf
@@ -0,0 +1,27 @@
+#####
+#
+# Configuration file for the BLFS module
+#
+# $Id$
+#
+# Set default package for alternatives when resolving dependencies
+#
+#####
+
+# Print server cups/LPRng
+PRINT_SERVER=cups
+
+# Mail server sendmail/postfix/exim
+MAIL_SERVER=sendmail
+
+# GhostScript gs/espgs
+GHOSTSCRIPT=espgs
+
+# Kerberos 5 mitkrb/heimdal
+KBR5=heimdal
+
+# X11 implementation xorg7/xorg/xfree86
+X11=xorg7
+
+
+
diff --git a/BLFS/blfs-parser.sh b/BLFS/blfs-parser.sh
new file mode 100755
index 0000000..d9472a5
--- /dev/null
+++ b/BLFS/blfs-parser.sh
@@ -0,0 +1,215 @@
+#!/bin/bash
+#
+# $Id$
+#
+set -e
+
+# Configuration file for alternatives
+source alternatives.conf
+[[ $? > 0 ]] && echo -e "\n\tWARNING: alternatives.conf did not load..\n" && exit
+
+# Dependencies module
+source func_dependencies
+[[ $? > 0 ]] && echo -e "\n\tWARNING: func_dependencies did not load..\n" && exit
+
+#======= MAIN ========
+
+if [[ ! -f packages ]] ; then
+ echo -e "\tNo packages file has been found.\n"
+ echo -e "\tExecution aborted.\n"
+ exit 1
+fi
+
+# ID of target package (as listed in packages file)
+if [[ -z "$1" ]] ; then
+ echo -e "\n\tYou must to provide a package ID."
+ echo -e "\tSee packages file for a list of available targets.\n"
+ exit 1
+elif ! grep "^$1[[:space:]]" packages > /dev/null ; then
+ echo -e "\n\t$1 is not a valid package ID."
+ echo -e "\tSee packages file for a list of available targets.\n"
+ exit 1
+else
+ case $1 in
+ xorg7 )
+ TARGET=xterm2
+ echo -e "\n\tUsing $TARGET as the target package"
+ echo -e "to build the Xorg7 meta-package."
+ ;;
+ * )
+ TARGET=$1
+ echo -e "\n\tUsing $TARGET as the target package."
+ ;;
+ esac
+fi
+
+# Dependencies level 1(required)/2(1 + recommended)/3(2+ optional)
+if [[ -z "$2" ]] ; then
+ DEP_LEVEL=2
+ echo -e "\n\tNo dependencies level has been defined."
+ echo -e "\tAssuming level $DEP_LEVEL (Required plus Recommended).\n"
+else
+ case $2 in
+ 1 | 2 )
+ DEP_LEVEL=$2
+ echo -e "\n\tUsing $DEP_LEVEL as dependencies level.\n"
+ ;;
+ # Prevent circular dependencies when level 3
+ # cracklib-->python-->tk-->X-->linux-pam-->cracklib
+ # docbook-utils--> Optional dependencies are runtime only
+ # libxml2-->libxslt-->libxml2
+ # cyrus-sasl-->openldap-->cyrus-sasl
+ # alsa-lib-->doxygen-->graphviz-->jdk-->alsa-lib
+ # unixodbc-->qt-->unixodbc
+ # cups-->php-->sendmail-->espgs-->cups
+ # libexif-->graphviz-->php-->libexif
+ # esound-->aRts-->esound
+ # gimp-->imagemagick-->gimp
+ 3 )
+ case $TARGET in
+ cracklib | docbook-utils | libxml2 | cyrus-sasl | alsa-lib | \
+ unixodbc | cups | libexif | esound | gimp )
+ DEP_LEVEL=2
+ echo -e "\n\t$TARGET have circular dependencies at level $2"
+ echo -e "\tUsing $DEP_LEVEL as dependencies level.\n"
+ ;;
+ * )
+ DEP_LEVEL=$2
+ echo -e "\n\tUsing $DEP_LEVEL as dependencies level.\n"
+ ;;
+ esac
+ ;;
+ * )
+ DEP_LEVEL=2
+ echo -e "\n\t$2 is not a valid dependencies level."
+ echo -e "\tAssuming level $DEP_LEVEL (Required plus Recommended).\n"
+ ;;
+ esac
+fi
+
+# Create the working directory and cd into it
+mkdir $TARGET && cd $TARGET
+
+# XML file of the target package
+PKGXML=`grep "^$TARGET[[:space:]]" ../packages | cut -f2`
+
+# The BLFS sources directory.
+BLFS_XML=`echo $PKGXML | sed -e 's,/.*,,'`
+
+if [[ ! -d ../$BLFS_XML ]] ; then
+ echo -e "\tThe BLFS book sources directory is missing.\n"
+ echo -e "\tExecution aborted.\n"
+ cd .. && rmdir $TARGET
+ exit 1
+fi
+
+# XInclude stuff
+ENTRY_START=""
+
+echo -en "\tGenerating $TARGET dependencies tree ..."
+
+# Create target package dependencies list
+case $TARGET in
+ # Meta-packages at target level
+ # KDE and Gnome-{core,full} could be made via packages.sh, but not sure yet how.
+ alsa ) # When target "alsa", use all alsa-* packages
+ echo -e "alsa-oss\nalsa-firmware\nalsa-tools\nalsa-utils\n \
+ alsa-plugins\nalsa-lib" > dependencies/$TARGET.dep
+ ;;
+ * ) # Default
+ xsltproc --stringparam dependencies $DEP_LEVEL -o dependencies/$TARGET.dep \
+ ../dependencies.xsl ../$PKGXML
+ ;;
+esac
+
+# Start with a clean $TARGET-index.xml.tmp file
+> $TARGET-index.xml.tmp
+
+# Write the XInclude
+echo -e " $ENTRY_START$PKGXML$ENTRY_END" >> $TARGET-index.xml.tmp
+
+# Start with a clean depure.txt file
+> depure.txt
+
+# If have dependencies, write its XInclude and find sub-dependencies
+[[ -f dependencies/$TARGET.dep ]] && \
+echo -e "Start loop for PKG $TARGET\n" >> depure.txt && \
+mkdir xincludes && do_dependencies $TARGET
+
+echo "done"
+
+echo -en "\tGenerating $TARGET-index.xml ..."
+
+# Header to $TARGET-index.xml
+{
+cat << EOF
+
+
+
+
+
+
+
+
+
+
+ Preface
+
+
+
+
+
+
+
+
+
+ Installing $TARGET in Dependencies Build Order
+
+EOF
+} > $TARGET-index.xml
+
+# Dump $TARGET-index.xml.tmp in reverse order.
+tac $TARGET-index.xml.tmp >> $TARGET-index.xml
+rm $TARGET-index.xml.tmp
+
+# Footer of $TARGET-index.xml
+{
+cat << EOF
+
+
+
+
+
+
+
+
+
+
+EOF
+} >> $TARGET-index.xml
+
+echo "done"
+
+echo -en "\tGenerating the HTML book ..."
+
+xsltproc --xinclude --nonet --stringparam base.dir HTML/ \
+ --stringparam chunk.quietly 1 \
+ ../$BLFS_XML/stylesheets/blfs-chunked.xsl \
+ $TARGET-index.xml > xsltproc.log 2>&1
+mkdir HTML/{stylesheets,images}
+cp ../$BLFS_XML/stylesheets/*.css HTML/stylesheets
+cp ../$BLFS_XML/images/*.png HTML/images
+cd HTML
+sed -i -e "s@../stylesheets@stylesheets@g" *.html
+sed -i -e "s@../images@images@g" *.html
+for filename in `find . -name "*.html"` ; do
+ tidy -config ../../$BLFS_XML/tidy.conf $filename || true
+ sh ../../$BLFS_XML/obfuscate.sh $filename
+ sed -i -e "s@text/html@application/xhtml+xml@g" $filename
+done
+
+echo "done"
+
+echo -en "\tGenerating the build scripts ... not implemented yet, sorry\n"
diff --git a/BLFS/dependencies.xsl b/BLFS/dependencies.xsl
new file mode 100644
index 0000000..672a033
--- /dev/null
+++ b/BLFS/dependencies.xsl
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BLFS/func_dependencies b/BLFS/func_dependencies
new file mode 100644
index 0000000..5f74eb2
--- /dev/null
+++ b/BLFS/func_dependencies
@@ -0,0 +1,151 @@
+#!/bin/bash
+#
+# $Id$
+#
+set -e
+
+#-----------------------#
+do_dependencies() { # Loop to find sub-dependencies
+#-----------------------#
+ set -e
+ local PKG=$1
+ local saveIFS=$IFS
+ local DEP_LV=$DEP_LEVEL
+ local line line2 DEP
+
+ echo -e "\tPKG is $PKG" >> depure.txt
+ echo -e "\tDEP_LEVEL for $PKG is $DEP_LV\n" >> depure.txt
+
+ # If a premade xinclude file esist, use it. If not, create one
+ if [[ -f xincludes/$PKG.xinc ]] ; then
+ echo -e "\tReusing xinclude file for PKG $PKG" >> depure.txt
+ IFS=$'\x0A'
+ for line in `cat xincludes/$PKG.xinc` ; do
+ IFS=$saveIFS
+ # Remove the Xinclude entry if found. We want the most newer one.
+ # Using double quotes to let bash expand variables.
+ # Remove also the empty line created. Can not be done in one step
+ # due that d requires the pattner between /, but we have a lot of /
+ # inside the pattner.
+ sed -e "s,^[[:space:]]*$line,," -e '/./!d' -i $TARGET-index.xml.tmp
+ # Write the XInclude
+ echo -e "$line" >> $TARGET-index.xml.tmp
+ done
+ else
+ # Start with a clean $PKG.xinc.tmp file
+ > xincludes/$PKG.xinc.tmp
+ for DEP in `cat dependencies/$PKG.dep`; do
+ # Especial packages (a lot of hacks)
+ case $DEP in
+ # The proper version of DB is installed in LFS
+ db ) continue ;;
+ # ID value don't have their own XML package file
+ hal-requirements ) continue ;;
+ perl-* | tk-perl ) DEP=perl-modules ;;
+ # Orphan links (proper link must be created when generating the book)
+ arts ) DEP=aRts ;; # That should be fixed in the BLFS book
+ # Set values for alternative packages
+ # X is a meta-package, thus handled in another way.
+ LPRng | cups ) DEP=$PRINT_SERVER ;;
+ mitkrb | heimdal ) DEP=$KBR5 ;;
+ gs | espgs ) DEP=$GHOSTSCRIPT ;;
+ MTA ) DEP=$MAIL_SERVER ;; # The BLFS book need be fixed yet for that
+ esac
+ echo -e "\tDEP for $PKG is $DEP" >> depure.txt
+ case $DEP in
+ # Circular dependencies at level 3
+ cracklib | docbook-utils | libxml2 | cyrus-sasl | alsa-lib | \
+ unixodbc | cups | libexif | esound | gimp )
+ [[ "$DEP_LV" = "3" ]] && DEP_LV=2
+ ;;
+ * ) DEP_LV=$DEP_LEVEL ;;
+ esac
+ echo -e "\tDEP_LEVEL for $DEP is $DEP_LV" >> depure.txt
+ # XML file of dependency package
+ DEP_XML=`grep "^$DEP[[:space:]]" ../packages | cut -f2`
+ echo -e "\t\tDEP_XML is $DEP_XML\n" >> depure.txt
+ case $DEP in
+ x-window-system ) ;; # No page for that (proper link must be created when generating the book)
+ xorg7 ) ;; # This page will be dump in the xorg7.xinc file
+ * )
+ # Remove the Xinclude entry if found
+ sed -e "s,^[[:space:]]*$ENTRY_START$DEP_XML$ENTRY_END,," \
+ -e '/./!d' -i xincludes/$PKG.xinc.tmp
+ # Write the XInclude
+ echo -e " $ENTRY_START$DEP_XML$ENTRY_END" >> xincludes/$PKG.xinc.tmp
+ ;;
+ esac
+ # If not already created, create its dependencies list
+ if [[ ! -f dependencies/$DEP.dep ]] ; then
+ case $DEP in
+ # Meta-packages at dependency level (ugly *.dep files, but work for now)
+ alsa ) # When dependency "alsa", use all alsa-* packages
+ echo -e "alsa-oss\nalsa-firmware\nalsa-tools\nalsa-utils\n \
+ alsa-plugins\nalsa-lib" > dependencies/$DEP.dep
+ ;;
+ x-window-system ) # X11 alternatives
+ echo -e "x-config\nx-setup\n$X11" > dependencies/$DEP.dep
+ ;;
+ xorg7 ) # All Xorg7 packages except Xterm (circular dependency)
+ echo -e "rman\nxorg7-driver\nxorg7-server\nluit\nxorg7-font\n \
+ xorg7-data\nxorg7-app\nxbitmaps\nmesalib\nlibdrm\n \
+ xorg7-lib\nxorg7-util\nxorg7-proto" > dependencies/$DEP.dep
+ ;;
+ * ) xsltproc --stringparam dependencies $DEP_LV \
+ -o dependencies/$DEP.dep ../dependencies.xsl ../$DEP_XML
+ ;;
+ esac
+ fi
+ # If needed, process its dependencies
+ if [[ -f dependencies/$DEP.dep ]] ; then
+ # If a premade xinclude file esist, include it
+ if [[ -f xincludes/$DEP.xinc ]] ; then
+ echo -e "\tReusing xinclude file for PKG $DEP (to solve $PKG)\n" >> depure.txt
+ IFS=$'\x0A'
+ for line2 in `cat xincludes/$DEP.xinc` ; do
+ IFS=$saveIFS
+ # Remove the Xinclude entry if found
+ sed -e "s,^[[:space:]]*$line2,," -e '/./!d' -i xincludes/$PKG.xinc.tmp
+ # Write the XInclude
+ echo -e "$line2" >> xincludes/$PKG.xinc.tmp
+ done
+ # Create the xinclude file
+ else
+ # We will call the function from inside it
+ echo -e "\nStart new loop for PKG $DEP (to solve $PKG)\n" >> depure.txt
+ # We will call the function from inside it
+ set +e
+ do_dependencies $DEP
+ set -e
+ # Include it when done
+ echo -e "\tUsing the new xinclude file for PKG $DEP (to solve $PKG)\n" >> depure.txt
+ IFS=$'\x0A'
+ for line2 in `cat xincludes/$DEP.xinc` ; do
+ IFS=$saveIFS
+ # Remove the Xinclude entry if found
+ sed -e "s,^[[:space:]]*$line2,," -e '/./!d' -i xincludes/$PKG.xinc.tmp
+ # Write the XInclude
+ echo -e "$line2" >> xincludes/$PKG.xinc.tmp
+ done
+ fi
+ fi
+ done
+ if [[ "$PKG" = "xorg7" ]] ; then
+ # Add their XInclude
+ PKG_XML=`grep "^$PKG[[:space:]]" ../packages | cut -f2`
+ echo -e " $ENTRY_START$PKG_XML$ENTRY_END" >> xincludes/$PKG.xinc.tmp
+ fi
+ mv xincludes/$PKG.xinc.tmp xincludes/$PKG.xinc
+ echo -e "Using the new xinclude file for PKG $PKG" >> depure.txt
+ IFS=$'\x0A'
+ for line in `cat xincludes/$PKG.xinc` ; do
+ IFS=$saveIFS
+ # Remove the Xinclude entry if found.
+ sed -e "s,^[[:space:]]*$line,," -e '/./!d' -i $TARGET-index.xml.tmp
+ # Write the XInclude
+ echo -e "$line" >> $TARGET-index.xml.tmp
+ done
+ fi
+
+ echo -e "\nEnd loop for PKG $PKG\n" >> depure.txt
+}
diff --git a/BLFS/packages.sh b/BLFS/packages.sh
new file mode 100755
index 0000000..297916b
--- /dev/null
+++ b/BLFS/packages.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# $Id$
+#
+set -e
+
+BLFS_XML=$1
+
+> packages.tmp
+
+for file in `find $BLFS_XML -name "*.xml"` ; do
+ pkg_id=`grep "sect1 id" $file | sed -e 's/> packages.tmp
+done
+
+sort packages.tmp -o packages
+rm packages.tmp