r2707 - jhalfs/branches/experimental/BLFS

manuel at linuxfromscratch.org manuel at linuxfromscratch.org
Tue May 23 11:38:23 PDT 2006


Author: manuel
Date: 2006-05-23 12:38:23 -0600 (Tue, 23 May 2006)
New Revision: 2707

Added:
   jhalfs/branches/experimental/BLFS/alternatives.conf
   jhalfs/branches/experimental/BLFS/blfs-parser.sh
   jhalfs/branches/experimental/BLFS/dependencies.xsl
   jhalfs/branches/experimental/BLFS/func_dependencies
   jhalfs/branches/experimental/BLFS/packages.sh
Log:
Added prototipe files for new BLFS module.

Added: jhalfs/branches/experimental/BLFS/alternatives.conf
===================================================================
--- jhalfs/branches/experimental/BLFS/alternatives.conf	                        (rev 0)
+++ jhalfs/branches/experimental/BLFS/alternatives.conf	2006-05-23 18:38:23 UTC (rev 2707)
@@ -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
+
+
+


Property changes on: jhalfs/branches/experimental/BLFS/alternatives.conf
___________________________________________________________________
Name: svn:keywords
   + Author Date Revision Id

Added: jhalfs/branches/experimental/BLFS/blfs-parser.sh
===================================================================
--- jhalfs/branches/experimental/BLFS/blfs-parser.sh	                        (rev 0)
+++ jhalfs/branches/experimental/BLFS/blfs-parser.sh	2006-05-23 18:38:23 UTC (rev 2707)
@@ -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="<xi:include xmlns:xi=\"http://www.w3.org/2003/XInclude\" href=\"../"
+ENTRY_END="\"/>"
+
+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
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" >
+
+<book>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../$BLFS_XML/book/bookinfo.xml"/>
+
+  <preface>
+    <?dbhtml filename="preface.html" dir="preface"?>
+
+    <title>Preface</title>
+
+    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../$BLFS_XML/introduction/important/locale-issues.xml"/>
+    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../$BLFS_XML/introduction/important/bootscripts.xml"/>
+
+  </preface>
+
+  <chapter>
+    <?dbhtml filename="chapter.html" dir="installing"?>
+
+    <title>Installing $TARGET in Dependencies Build Order</title>
+
+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
+
+  </chapter>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../$BLFS_XML/appendices/creat-comm.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../$BLFS_XML/appendices/ac-free-lic.xml"/>
+
+  <index/>
+
+</book>
+
+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 at ../stylesheets at stylesheets@g" *.html
+sed -i -e "s at ../images at 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 at text/html at application/xhtml+xml at g" $filename
+done
+
+echo "done"
+
+echo -en  "\tGenerating the build scripts ... not implemented yet, sorry\n"


Property changes on: jhalfs/branches/experimental/BLFS/blfs-parser.sh
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + Author Date Revision Id

Added: jhalfs/branches/experimental/BLFS/dependencies.xsl
===================================================================
--- jhalfs/branches/experimental/BLFS/dependencies.xsl	                        (rev 0)
+++ jhalfs/branches/experimental/BLFS/dependencies.xsl	2006-05-23 18:38:23 UTC (rev 2707)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+
+<!-- $Id$ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    version="1.0">
+
+  <xsl:output method="text"/>
+
+  <xsl:param name="dependencies" select="2"/>
+
+  <xsl:template match="/">
+    <xsl:apply-templates select="//para[@role='optional']"/>
+    <xsl:apply-templates select="//para[@role='recommended']"/>
+    <xsl:apply-templates select="//para[@role='required']"/>
+  </xsl:template>
+
+  <xsl:template match="//text()"/>
+
+  <xsl:template match="para[@role='required']">
+    <xsl:apply-templates select="xref">
+      <xsl:sort select="position()" order="descending"/>
+    </xsl:apply-templates>
+  </xsl:template>
+
+  <xsl:template match="para[@role='recommended']">
+    <xsl:if test="$dependencies != '1'">
+      <xsl:apply-templates select="xref">
+        <xsl:sort select="position()" order="descending"/>
+      </xsl:apply-templates>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="para[@role='optional']">
+    <xsl:if test="$dependencies = '3'">
+      <xsl:apply-templates select="xref">
+        <xsl:sort select="position()" order="descending"/>
+      </xsl:apply-templates>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="xref">
+    <xsl:value-of select="@linkend"/>
+    <xsl:text>&#xA;</xsl:text>
+  </xsl:template>
+
+</xsl:stylesheet>


Property changes on: jhalfs/branches/experimental/BLFS/dependencies.xsl
___________________________________________________________________
Name: svn:keywords
   + Author Date Revision Id

Added: jhalfs/branches/experimental/BLFS/func_dependencies
===================================================================
--- jhalfs/branches/experimental/BLFS/func_dependencies	                        (rev 0)
+++ jhalfs/branches/experimental/BLFS/func_dependencies	2006-05-23 18:38:23 UTC (rev 2707)
@@ -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
+}


Property changes on: jhalfs/branches/experimental/BLFS/func_dependencies
___________________________________________________________________
Name: svn:keywords
   + Author Date Revision Id

Added: jhalfs/branches/experimental/BLFS/packages.sh
===================================================================
--- jhalfs/branches/experimental/BLFS/packages.sh	                        (rev 0)
+++ jhalfs/branches/experimental/BLFS/packages.sh	2006-05-23 18:38:23 UTC (rev 2707)
@@ -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/<sect1 id="//;s/".*//'`
+  [[ ! -z "$pkg_id" ]] && echo -e "$pkg_id\t$file" >> packages.tmp
+done
+
+sort packages.tmp -o packages
+rm packages.tmp


Property changes on: jhalfs/branches/experimental/BLFS/packages.sh
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + Author Date Revision Id




More information about the alfs-log mailing list