r3869 - in jhalfs/branches/new_features: . LFS common common/libs pkgmngt

pierre at higgs.linuxfromscratch.org pierre at higgs.linuxfromscratch.org
Thu Jul 21 09:43:35 PDT 2016


Author: pierre
Date: Thu Jul 21 09:43:35 2016
New Revision: 3869

Log:
Porg style package management:
- Add new variable WRAP_INSTALL in COnfig.in and jhalfs
- Generates the install commands inside a wrapper function
- Add files packInstall.sh.porg and packageManager.xml.porg
- TODO: update README.PACKAGE...
- TODO: make new templates in pkgmngt and document them

Added:
   jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg
   jhalfs/branches/new_features/pkgmngt/packageManager.xml.porg
Modified:
   jhalfs/branches/new_features/Config.in
   jhalfs/branches/new_features/LFS/lfs.xsl
   jhalfs/branches/new_features/common/libs/func_book_parser
   jhalfs/branches/new_features/common/libs/func_validate_configs.sh
   jhalfs/branches/new_features/common/makefile-functions
   jhalfs/branches/new_features/jhalfs

Modified: jhalfs/branches/new_features/Config.in
==============================================================================
--- jhalfs/branches/new_features/Config.in	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/Config.in	Thu Jul 21 09:43:35 2016	(r3869)
@@ -827,27 +827,50 @@
 	#--- End Test Suites
     endmenu # test settings
 
-	#--- Package Management
-	config  PKGMNGT
-		bool    "Package management"
-		depends BOOK_LFS || BOOK_LFS_SYSD
-		default n
-		help
-			#-- Use package management
-			#
-			#  If set, the packages in the final phase are built
-			#  in a separate directory, PKG_DEST.
-			#  You should provide a bash function for packing
-			#  and installing the package.
-			#  Also, you have to provide the instructions
-			#  to build the package manager during the
-			#  temporary tools phase, in the form of a
-			#  sect1 of the book identical to a package
-			#  sect1. See README.PACKAGE_MANAGEMENT
-			#
-			#  For now, this only works with LFS
+    #--- Package Management
+    config  PKGMNGT
+    	bool    "Package management"
+    	depends BOOK_LFS || BOOK_LFS_SYSD
+    	default n
+    	help
+    		#-- Use package management
+    		#
+    		#  If set, you'll have to choose between
+		#  two package management styles:
+		#  - Build and install:
+		#    the packages in the final phase are built
+    		#    in a separate directory, PKG_DEST.
+    		#    You should provide a bash function for
+    		#    packaing and installing the package.
+		#  - Preload a library before install:
+		#    Run the install instructions inside a
+		#    wrapper command, which monitors the
+		#    installed files.
+		#
+    		#  Also, you have to provide the instructions
+    		#  to build the package manager during the
+    		#  temporary tools phase, in the form of a
+    		#  sect1 of the book identical to a package
+    		#  sect1. See README.PACKAGE_MANAGEMENT
+    		#
+    		#  For now, this only works with LFS
+    choice
+        depends PKGMNGT
+        prompt "Package management style"
+        default PKG_PACK
 
-	#--- End package management
+        config PKG_PACK
+            bool "Build and pack (pacman or dpkg style)"
+
+        config LIB_LOAD
+            bool "Preload a library before installing (porg style)"
+    endchoice
+
+    config WRAP_INSTALL
+        bool
+        default y if LIB_LOAD
+        default n if PKG_PACK
+    #--- End package management
 
 	#--- Installed files logs
 	config	INSTALL_LOG

Modified: jhalfs/branches/new_features/LFS/lfs.xsl
==============================================================================
--- jhalfs/branches/new_features/LFS/lfs.xsl	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/LFS/lfs.xsl	Thu Jul 21 09:43:35 2016	(r3869)
@@ -14,7 +14,14 @@
        n = no, original behavior
        y = yes, add PKG_DEST to scripts in install commands of chapter06-08
   -->
-  <xsl:param name="pkgmngt" select="n"/>
+  <xsl:param name="pkgmngt" select="'n'"/>
+
+  <!-- Package management with "porg style" ?
+       n = no,  same as pkgmngt description above
+       y = yes, wrap install commands of chapter06-08 into a bash function.
+                note that pkgmngt must be 'y' in this case
+  -->
+  <xsl:param name="wrap-install" select='"n"'/>
  
   <!-- Run test suites?
        0 = none
@@ -28,29 +35,29 @@
        n = no, I want to build the full system and review the logs
        y = yes, bomb at the first test suite failure to can review the build dir
   -->
-  <xsl:param name="bomb-testsuite" select="n"/>
+  <xsl:param name="bomb-testsuite" select="'n'"/>
 
   <!-- Install vim-lang package? OBSOLETE should always be 'n'-->
-  <xsl:param name="vim-lang" select="n"/>
+  <xsl:param name="vim-lang" select="'n'"/>
   
   <!-- Time zone -->
-  <xsl:param name="timezone" select="GMT"/>
+  <xsl:param name="timezone" select="'GMT'"/>
   
   <!-- Page size -->
-  <xsl:param name="page" select="letter"/>
+  <xsl:param name="page" select="'letter'"/>
   
   <!-- Locale settings -->
-  <xsl:param name="lang" select="C"/>
+  <xsl:param name="lang" select="'C'"/>
 
   <!-- Install the whole set of locales -->
-  <xsl:param name='full-locale' select='n'/>
+  <xsl:param name='full-locale' select='"n"'/>
   
   <!-- Hostname -->
   <xsl:param name='hostname' select='"HOSTNAME"'/>
 
   <!-- Network parameters: interface, ip, gateway, prefix, broadcast, domain
        and nameservers -->
-  <xsl:param name='interface'   select='eth0'/>
+  <xsl:param name='interface'   select="'eth0'"/>
   <xsl:param name='ip'          select='"10.0.2.9"'/>
   <xsl:param name='gateway'     select='"10.0.2.2"'/>
   <xsl:param name='prefix'      select='24'/>
@@ -180,7 +187,13 @@
                descendant::screen[not(@role) or
                                   @role != 'nodump']/userinput[
                                                     @remap='install']">
-      <xsl:text>mkdir -pv $PKG_DEST/{boot,etc,lib,bin,sbin}
+      <xsl:choose>
+        <xsl:when test="$wrap-install='y'">
+          <xsl:text>wrapInstall '
+</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>mkdir -pv $PKG_DEST/{boot,etc,lib,bin,sbin}
 mkdir -pv $PKG_DEST/usr/{lib,bin,sbin,include}
 mkdir -pv $PKG_DEST/usr/share/{doc,info,man}
 mkdir -pv $PKG_DEST/usr/share/man/man{1..8}
@@ -189,10 +202,13 @@
  x86_64) ln -sv lib $PKG_DEST/lib64 && ln -sv lib $PKG_DEST/usr/lib64 ;;
 esac
 </xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
     </xsl:if>
     <xsl:if test="../@id = 'ch-system-glibc' and
                   @role='installation' and
-                  $pkgmngt = 'y'">
+                  $pkgmngt = 'y' and
+                  $wrap-install = 'n'">
       <xsl:text>mkdir -pv $PKG_DEST/usr/include/{rpc,rpcsvc}
 </xsl:text>
     </xsl:if>
@@ -204,27 +220,54 @@
                   descendant::screen[not(@role) or
                                      @role != 'nodump']/userinput[
                                                        @remap='install']">
-      <xsl:if test="../@id = 'ch-system-man-pages'">
+      <xsl:choose>
+        <xsl:when test="$wrap-install='y'">
+          <xsl:if test="../@id = 'ch-system-man-pages'">
 <!-- these files are provided by the shadow package -->
-  <xsl:text>rm -fv $PKG_DEST/usr/share/man/{man3/getspnam.3,man5/passwd.5}
+            <xsl:text>rm -fv /usr/share/man/{man3/getspnam.3,man5/passwd.5}
 </xsl:text>
-      </xsl:if>
+          </xsl:if>
 <!-- Attr man/man2 pages are already installed by man-pages. As of
      March 2013, they are the same pages.
      November 2015: now they are more accurate
      in man-pages, and the man5 section is also in man-pages... -->
-      <xsl:if test="../@id = 'ch-system-attr'">
-        <xsl:text>rm -fv $PKG_DEST/usr/share/man/man2/*
+          <xsl:if test="../@id = 'ch-system-attr'">
+            <xsl:text>rm -fv /usr/share/man/man2/*
+rm -fv /usr/share/man/man5/*
+</xsl:text>
+          </xsl:if>
+<!-- nologin is installed by util-linux. remove it from shadow -->
+          <xsl:if test="../@id = 'ch-system-shadow'">
+            <xsl:text>rm -fv /usr/share/man/man8/nologin.8
+rm -fv /sbin/nologin
+</xsl:text>
+          </xsl:if>
+          <xsl:text>'
+packInstall
+</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:if test="../@id = 'ch-system-man-pages'">
+<!-- these files are provided by the shadow package -->
+            <xsl:text>rm -fv $PKG_DEST/usr/share/man/{man3/getspnam.3,man5/passwd.5}
+</xsl:text>
+          </xsl:if>
+<!-- Attr man/man2 pages are already installed by man-pages. As of
+     March 2013, they are the same pages.
+     November 2015: now they are more accurate
+     in man-pages, and the man5 section is also in man-pages... -->
+          <xsl:if test="../@id = 'ch-system-attr'">
+            <xsl:text>rm -fv $PKG_DEST/usr/share/man/man2/*
 rm -fv $PKG_DEST/usr/share/man/man5/*
 </xsl:text>
-      </xsl:if>
+          </xsl:if>
 <!-- nologin is installed by util-linux. remove it from shadow -->
-      <xsl:if test="../@id = 'ch-system-shadow'">
-        <xsl:text>rm -fv $PKG_DEST/usr/share/man/man8/nologin.8
+          <xsl:if test="../@id = 'ch-system-shadow'">
+            <xsl:text>rm -fv $PKG_DEST/usr/share/man/man8/nologin.8
 rm -fv $PKG_DEST/sbin/nologin
 </xsl:text>
-      </xsl:if>
-      <xsl:text>rm -fv $PKG_DEST/{,usr/}lib64
+          </xsl:if>
+          <xsl:text>rm -fv $PKG_DEST/{,usr/}lib64
 rm -fv $PKG_DEST/usr/{man,doc,info}
 for dir in $PKG_DEST/usr/share/man/man{1..8}; do
   [[ -z $(ls $dir) ]] && rmdir -v $dir
@@ -241,6 +284,8 @@
 packInstall
 rm -rf $PKG_DEST
 </xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
     </xsl:if>
     <xsl:if test="$testsuite='3' and
             ../@id='ch-tools-glibc' and
@@ -309,7 +354,7 @@
            mode="pkgmngt"/>
         <xsl:if test="$dirname = 'chapter06'">
           <xsl:text>packInstall
-rm -rf $PKG_DEST
+rm -rf "$PKG_DEST"
 </xsl:text>
         </xsl:if>
         <xsl:apply-templates
@@ -452,7 +497,26 @@
               </xsl:otherwise>
             </xsl:choose>
           </xsl:when>
-          <xsl:otherwise><!--pkgmngt = 'y'-->
+          <xsl:when test="$wrap-install='y'">
+            <xsl:choose>
+              <xsl:when test="./literal">
+                <xsl:call-template name="output-wrap">
+                  <xsl:with-param name="commands" select="text()[1]"/>
+                </xsl:call-template>
+                <xsl:apply-templates select="literal"/>
+                <xsl:call-template name="output-wrap">
+                  <xsl:with-param name="commands" select="text()[2]"/>
+                </xsl:call-template>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:call-template name="output-wrap">
+                  <xsl:with-param name="commands" select="string()"/>
+                </xsl:call-template>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>&#xA;</xsl:text>
+          </xsl:when>
+          <xsl:otherwise><!--pkgmngt = 'y' and wrap-install='n'-->
             <xsl:choose>
               <xsl:when test="./literal">
                 <xsl:call-template name="outputpkgdest">
@@ -476,7 +540,7 @@
            tzdata. -->
       <xsl:when test="contains(string(),'tzdata') and $pkgmngt='y'">
         <xsl:text>
-OLD_PKG_DEST=$PKG_DEST
+OLD_PKG_DEST="$PKG_DEST"
 OLD_PKGDIR=$PKGDIR
 PKG_DEST=$(dirname $OLD_PKG_DEST)/001-tzdata
 PKGDIR=$(dirname $PKGDIR)/tzdata-</xsl:text>
@@ -485,12 +549,28 @@
                                '.tar')"/>
         <xsl:text>
 </xsl:text>
-        <xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
-        <xsl:text>ZONEINFO=$PKG_DEST</xsl:text>
-        <xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
-        <xsl:text>
+        <xsl:choose>
+          <xsl:when test="$wrap-install='n'">
+            <xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
+            <xsl:text>ZONEINFO=$PKG_DEST</xsl:text>
+            <xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
+            <xsl:text>
 packInstall
 rm -rf $PKG_DEST
+</xsl:text>
+          </xsl:when>
+          <xsl:otherwise><!-- wrap-install='y' -->
+            <xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
+            <xsl:text>
+wrapInstall '
+ZONEINFO=</xsl:text>
+            <xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
+            <xsl:text>'
+packInstall
+</xsl:text>
+          </xsl:otherwise>
+        </xsl:choose>
+        <xsl:text>
 PKG_DEST=$OLD_PKG_DEST
 unset OLD_PKG_DEST
 PKGDIR=$OLD_PKGDIR
@@ -732,4 +812,26 @@
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
+
+  <xsl:variable name="APOS">'</xsl:variable>
+  <xsl:template name="output-wrap">
+    <xsl:param name="commands" select="''"/>
+    <xsl:choose>
+      <xsl:when test="contains($commands,string($APOS))">
+        <xsl:call-template name="output-wrap">
+          <xsl:with-param name="commands"
+                          select="substring-before($commands,string($APOS))"/>
+        </xsl:call-template>
+        <xsl:text>'\''</xsl:text>
+        <xsl:call-template name="output-wrap">
+          <xsl:with-param name="commands"
+                          select="substring-after($commands,string($APOS))"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$commands"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
 </xsl:stylesheet>

Modified: jhalfs/branches/new_features/common/libs/func_book_parser
==============================================================================
--- jhalfs/branches/new_features/common/libs/func_book_parser	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/common/libs/func_book_parser	Thu Jul 21 09:43:35 2016	(r3869)
@@ -157,26 +157,27 @@
                  $BOOK/stylesheets/lfs-xsl/profile.xsl   \
                  $BOOK/index.xml
 
-        xsltproc --nonet                                   \
-                 --stringparam testsuite      $TEST        \
-                 --stringparam bomb-testsuite $BOMB_TEST   \
-                 --stringparam vim-lang       $VIMLANG     \
-                 --stringparam full-locale    $FULL_LOCALE \
-                 --stringparam timezone       $TIMEZONE    \
-                 --stringparam page           $PAGE        \
-                 --stringparam lang           $LANG        \
-                 --stringparam pkgmngt        $PKGMNGT     \
-                 --stringparam hostname       $HOSTNAME    \
-                 --stringparam interface      $INTERFACE   \
-                 --stringparam ip             $IP_ADDR     \
-                 --stringparam gateway        $GATEWAY     \
-                 --stringparam prefix         $PREFIX      \
-                 --stringparam broadcast      $BROADCAST   \
-                 --stringparam domain         $DOMAIN      \
-                 --stringparam nameserver1    $DNS1        \
-                 --stringparam nameserver2    $DNS2        \
-                 --output ./${PROGNAME}-commands/          \
-                 $XSL                                      \
+        xsltproc --nonet                                    \
+                 --stringparam testsuite      $TEST         \
+                 --stringparam bomb-testsuite $BOMB_TEST    \
+                 --stringparam vim-lang       $VIMLANG      \
+                 --stringparam full-locale    $FULL_LOCALE  \
+                 --stringparam timezone       $TIMEZONE     \
+                 --stringparam page           $PAGE         \
+                 --stringparam lang           $LANG         \
+                 --stringparam pkgmngt        $PKGMNGT      \
+                 --stringparam wrap-install   $WRAP_INSTALL \
+                 --stringparam hostname       $HOSTNAME     \
+                 --stringparam interface      $INTERFACE    \
+                 --stringparam ip             $IP_ADDR      \
+                 --stringparam gateway        $GATEWAY      \
+                 --stringparam prefix         $PREFIX       \
+                 --stringparam broadcast      $BROADCAST    \
+                 --stringparam domain         $DOMAIN       \
+                 --stringparam nameserver1    $DNS1         \
+                 --stringparam nameserver2    $DNS2         \
+                 --output ./${PROGNAME}-commands/           \
+                 $XSL                                       \
                  /tmp/lfs-full.xml >>$LOGDIR/$LOG 2>&1
 
         rm /tmp/lfs-full.xml

Modified: jhalfs/branches/new_features/common/libs/func_validate_configs.sh
==============================================================================
--- jhalfs/branches/new_features/common/libs/func_validate_configs.sh	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/common/libs/func_validate_configs.sh	Thu Jul 21 09:43:35 2016	(r3869)
@@ -41,7 +41,7 @@
   local -r CLFS3_book="$BOOK_common                  $BOOK_clfsX PLATFORM MIPS_LEVEL"
 
   # Build Settings by book
-  local -r   LFS_build="$BUILD_chroot VIMLANG $BUILD_common PKGMNGT FULL_LOCALE"
+  local -r   LFS_build="$BUILD_chroot VIMLANG $BUILD_common PKGMNGT FULL_LOCALE WRAP_INSTALL"
   local -r  HLFS_build="$BUILD_chroot         $BUILD_common"
   local -r  CLFS_build="$BUILD_chroot VIMLANG $BUILD_common"
   local -r CLFS2_build="STRIP         VIMLANG $BUILD_common"

Modified: jhalfs/branches/new_features/common/makefile-functions
==============================================================================
--- jhalfs/branches/new_features/common/makefile-functions	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/common/makefile-functions	Thu Jul 21 09:43:35 2016	(r3869)
@@ -115,6 +115,7 @@
     echo "export PKG_DEST=$(SRC)/$@" >> envars; \
     echo "source packInstall.sh" >> envars; \
     echo "export -f packInstall" >> envars; \
+    echo "export -f wrapInstall" >> envars; \
   fi;
 endef
 

Modified: jhalfs/branches/new_features/jhalfs
==============================================================================
--- jhalfs/branches/new_features/jhalfs	Sat Jun 25 07:39:47 2016	(r3868)
+++ jhalfs/branches/new_features/jhalfs	Thu Jul 21 09:43:35 2016	(r3869)
@@ -123,6 +123,7 @@
 RUN_FARCE=${RUN_FARCE:-n}
 RUN_ICA=${RUN_ICA:-n}
 PKGMNGT=${PKGMNGT:-n}
+WRAP_INSTALL=${WRAP_INSTALL:-n}
 BOMB_TEST=${BOMB_TEST:-n}
 STRIP=${STRIP:=n}
 REPORT=${REPORT:=n}

Added: jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ jhalfs/branches/new_features/pkgmngt/packInstall.sh.porg	Thu Jul 21 09:43:35 2016	(r3869)
@@ -0,0 +1,56 @@
+# $Id:$
+# functions for recording installation of a package and make a tarball,
+# or using fakeroot type commands for install, then packing and installing
+# the package.
+# We only have access to variables PKGDIR and PKG_DEST. Other variables could
+# be set in the environment
+
+wrapInstall() {
+# a bash command is passed as an argument (that may be a compound command).
+# It is executed by this function, after various set-ups...
+
+local PCKGVRS=$(basename $PKGDIR)
+local TGTPKG=$(basename $PKG_DEST)
+local PACKAGE=$(echo ${TGTPKG} | sed 's/^[0-9]\{3\}-//' |
+           sed 's/^[0-9]\{1\}-//')
+# version is only accessible from PKGDIR name. Since the format of the
+# name is not normalized, several hacks are necessary...
+case $PCKGVRS in
+  expect*|tcl*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*//') ;;
+  vim*|unzip*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*\([0-9]\)\([0-9]\)/\1.\2/') ;;
+  tidy*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*\([0-9]*\)/\1cvs/') ;;
+  docbook-xml) local VERSION=4.5 ;;
+  *) local VERSION=$(echo ${PCKGVRS} | sed 's/^.*[-_]\([0-9]\)/\1/' |
+                   sed 's/_/./g');;
+# the last sed above is because some package managers do not want a '_'
+# in version.
+esac
+
+porg -lp ${PACKAGE}-${VERSION} sh << PORG_EOF
+$*
+PORG_EOF
+}
+
+#----------------
+packInstall() {
+
+# With porg, we need only the package name to make the tarball
+local TGTPKG=$(basename $PKG_DEST)
+local PACKAGE=$(echo ${TGTPKG} | sed 's/^[0-9]\{3\}-//' |
+           sed 's/^[0-9]\{1\}-//')
+local PCKGVRS=$(basename $PKGDIR)
+case $PCKGVRS in
+  expect*|tcl*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*//') ;;
+  vim*|unzip*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*\([0-9]\)\([0-9]\)/\1.\2/') ;;
+  tidy*) local VERSION=$(echo $PCKGVRS | sed 's/^[^0-9]*\([0-9]*\)/\1cvs/') ;;
+  docbook-xml) local VERSION=4.5 ;;
+  *) local VERSION=$(echo ${PCKGVRS} | sed 's/^.*[-_]\([0-9]\)/\1/' |
+                   sed 's/_/./g');;
+# the last sed above is because some package managers do not want a '_'
+# in version.
+esac
+# Building the binary package
+porgball ${PACKAGE}
+# The package is in the current directory
+mv -v ${PACKAGE}-${VERSION}.porg* /var/lib/packages
+}

Added: jhalfs/branches/new_features/pkgmngt/packageManager.xml.porg
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ jhalfs/branches/new_features/pkgmngt/packageManager.xml.porg	Thu Jul 21 09:43:35 2016	(r3869)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" >
+
+<article>
+
+<sect1 id="package">
+  <title>Package Information</title>
+        <para>Download: <ulink url="https://sourceforge.net/projects/porg/files/porg-0.10.tar.gz"/></para>
+        <para>MD5 sum: <literal>2eceb8a73bb188dbb06b12d90cabdbb4</literal></para>
+</sect1>
+
+<sect1 id="ch-tools-pkgmngt" role="wrap">
+  <?dbhtml filename="porg.html"?>
+  <title>Porg in tools</title>
+  <sect2 role="installation">
+    <title>Instructions</title>
+<screen><userinput remap="configure">./configure --prefix=/tools \
+           --disable-grop  \
+           --with-porg-logdir=/tools/var/porg</userinput></screen>
+
+    <para>
+      <parameter>--disable-grop</parameter> is needed to prevent the sytem from
+      trying to build the graphical interface, and
+      <parameter>--with-porg-logdir=...</parameter> is needed because
+      <command>make install</command> insists on creating a directory in
+      <filename class="directory">/var</filename>, where we do not want
+      to write.
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+<screen><userinput>cat >> /tools/etc/porgrc << EOF
+# Porg logdir on LFS system
+LOGDIR=/var/lib/porg
+EOF
+sed -e '/EXCLUDE/{s/^#//;s@$@:/sources:/home@}' \
+    -i /tools/etc/porgrc</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
+<sect1 id="ch-pkgmngt-creatingdirs">
+
+  <title>Directories</title>
+  <screen><userinput>mkdir -pv /var/lib/porg
+mkdir -pv /var/lib/packages</userinput></screen>
+
+</sect1>
+<sect1 id="ch-pkgmngt-createfiles">
+  <title>Files</title>
+  <para><command>porgball</command> needs <filename>porgrc</filename>
+    in <filename class="directory">/etc</filename>:</para>
+  <screen><userinput>cp /tools/etc/porgrc /etc</userinput></screen>
+</sect1>
+
+<sect1 id="ch-system-pkgmngt" role="wrap">
+  <?dbhtml filename="porg.html"?>
+  <title>Final Porg</title>
+  <sect2 role="installation">
+    <title>Instructions</title>
+
+<screen><userinput remap="configure">./configure --prefix=/usr     \
+            --disable-grop    \
+            --sysconfdir=/etc \
+            --with-porg-logdir=/var/lib/porg</userinput></screen>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+<screen><userinput remap="install">porg -lD "make install"</userinput></screen>
+
+<screen><userinput>sed -e '/EXCLUDE/{s/^#//;s@$@:/sources:/home@}' \
+    -i /etc/porgrc</userinput></screen>
+  </sect2>
+
+</sect1>
+</article>


More information about the alfs-log mailing list