Author: pierre Date: Tue Jun 23 23:26:05 2020 New Revision: 4180 Log: Fix package management for new book, and add a patch for porg
Modified: jhalfs/trunk/LFS/lfs.xsl jhalfs/trunk/pkgmngt/packageManager.xml.porg jhalfs/trunk/pkgmngt/packageManager.xml.template Modified: jhalfs/trunk/LFS/lfs.xsl ============================================================================== --- jhalfs/trunk/LFS/lfs.xsl Sat Jun 20 10:16:22 2020 (r4179) +++ jhalfs/trunk/LFS/lfs.xsl Tue Jun 23 23:26:05 2020 (r4180) @@ -143,28 +143,6 @@ </xsl:if> <xsl:value-of select="$position"/> </xsl:variable> - <!-- Inclusion of package manager scriptlets --> - <xsl:if test="@id='ch-tools-stripping' and - $pkgmngt='y' and - $bashdir='/tools'"> - <xsl:apply-templates - select="document('packageManager.xml')//sect1[contains(@id,'ch-tools')]" - mode="pkgmngt"> - <xsl:with-param name="order" select="$order"/> - <xsl:with-param name="dirname" select="$dirname"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="@id='ch-system-strippingagain' and - $pkgmngt='y' and - $bashdir='/tools'"> - <xsl:apply-templates - select="document('packageManager.xml')//sect1[ - contains(@id,'ch-system')]" - mode="pkgmngt"> - <xsl:with-param name="order" select="$order"/> - <xsl:with-param name="dirname" select="$dirname"/> - </xsl:apply-templates> - </xsl:if> <!-- Creating dirs and files --> <exsl:document href="{$dirname}/{$order}-{$filename}" method="text"> <xsl:text>#!</xsl:text> @@ -187,14 +165,16 @@ <xsl:apply-templates select="sect2 | screen[not(@role) or @role!='nodump']/userinput"/> - <xsl:if test="@id='ch-system-creatingdirs' and $pkgmngt='y'"> + <xsl:if test="contains(@id,'creatingdirs') and $pkgmngt='y'"> <xsl:apply-templates select="document('packageManager.xml')//sect1[ @id='ch-pkgmngt-creatingdirs' ]//userinput" mode="pkgmngt"/> </xsl:if> - <xsl:if test="@id='ch-system-createfiles' and $pkgmngt='y'"> + <xsl:if test="contains(@id,'createfiles') + and $pkgmngt='y' + and $bashdir='/tools'"> <xsl:apply-templates select="document('packageManager.xml')//sect1[ @id='ch-pkgmngt-createfiles' @@ -207,6 +187,40 @@ </xsl:if> <xsl:text>exit
</xsl:text> </exsl:document> + <!-- Inclusion of package manager scriptlets --> + <xsl:if test="$pkgmngt='y' and + following-sibling::sect1[1][@id='ch-tools-stripping']"> + <xsl:choose> + <xsl:when test="$bashdir='/tools'"> + <xsl:apply-templates + select="document('packageManager.xml')//sect1[ + contains(@id,'ch-tools')]" + mode="pkgmngt"> + <xsl:with-param name="order" select="$order+1"/> + <xsl:with-param name="dirname" select="$dirname"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates + select="document('packageManager.xml')//sect1[ + contains(@id,'ch-chroot')]" + mode="pkgmngt"> + <xsl:with-param name="order" select="$order+1"/> + <xsl:with-param name="dirname" select="$dirname"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:if test="$pkgmngt='y' and + following-sibling::sect1[2][@id='ch-system-strippingagain']"> + <xsl:apply-templates + select="document('packageManager.xml')//sect1[ + contains(@id,'ch-system')]" + mode="pkgmngt"> + <xsl:with-param name="order" select="$order+1"/> + <xsl:with-param name="dirname" select="$dirname"/> + </xsl:apply-templates> + </xsl:if> </xsl:template> <xsl:template match="sect2"> @@ -219,7 +233,9 @@ not(current()/../@id='ch-tools-dejagnu') and not(current()/../@id='ch-system-systemd')]"/> <xsl:if - test="ancestor::chapter[@id != 'chapter-temporary-tools'] and + test="ancestor::chapter[@id = 'chapter-building-system' or + @id = 'chapter-config' or + @id = 'chapter-bootable'] and $pkgmngt = 'y' and descendant::screen[not(@role) or @role != 'nodump']/userinput[ @@ -246,7 +262,9 @@ <xsl:apply-templates select=".//screen[not(@role) or @role != 'nodump']/ userinput[@remap = 'install']"/> - <xsl:if test="ancestor::chapter[@id != 'chapter-temporary-tools'] and + <xsl:if test="ancestor::chapter[@id = 'chapter-building-system' or + @id = 'chapter-config' or + @id = 'chapter-bootable'] and descendant::screen[not(@role) or @role != 'nodump']/userinput[ @remap='install']"> @@ -367,7 +385,7 @@ select=".//screen[not(@role) or @role != 'nodump']/userinput[@remap != 'adjust']" mode="pkgmngt"/> - <xsl:if test="$dirname = 'chapter06'"> + <xsl:if test="$dirname = 'chapter06' or $dirname = 'chapter08'"> <xsl:text>PREV_SEC=${SECONDS} packInstall SECONDS=${PREV_SEC} @@ -1216,8 +1234,12 @@ <xsl:call-template name="basename"> <xsl:with-param name="path" select=".//sect1info/address/text()"/> </xsl:call-template> - <xsl:if test = "( ../@id != 'chapter-temporary-tools' or - starts-with(@id,'ch-system') ) and $pkgmngt = 'y'"> + <xsl:if test = "( ../@id = 'chapter-building-system' or + ../@id = 'chapter-config' or + ../@id = 'chapter-bootable' or + starts-with(@id,'ch-system') ) and $pkgmngt = 'y'"> +<!-- the last alternative for old books where some sections in + chapter-config had ch-system --> <xsl:text> source ${ROOT}${SCRIPT_ROOT}/packInstall.sh export -f packInstall</xsl:text> Modified: jhalfs/trunk/pkgmngt/packageManager.xml.porg ============================================================================== --- jhalfs/trunk/pkgmngt/packageManager.xml.porg Sat Jun 20 10:16:22 2020 (r4179) +++ jhalfs/trunk/pkgmngt/packageManager.xml.porg Tue Jun 23 23:26:05 2020 (r4180) @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- $Id$ --> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ <!ENTITY porg-version "0.10"> <!ENTITY porg-url "https://sourceforge.net/projects/porg/files/porg-&porg-version;.tar.gz"> <!ENTITY porg-md5 "2eceb8a73bb188dbb06b12d90cabdbb4"> +<!ENTITY porg-patch-url "http://www.linuxfromscratch.org/patches/downloads/porg/porg-0.10-renameat2-1.patch"> +<!ENTITY porg-patch-md5 "cfc72c817d98902afeaf225f22b8e653"> ]> <article> @@ -14,6 +15,12 @@ <para>Download: <ulink url="&porg-url;"/></para> <para>MD5 sum: <literal>&porg-md5;</literal></para> </sect1> +<sect1 id="patches"> + <title>Package Information</title> + <para>Download: <ulink url="&porg-patch-url;"/></para> + <para>MD5 sum: <literal>&porg-patch-md5;</literal></para> +</sect1> + <sect1 id="ch-tools-pkgmngt" role="wrap"> <?dbhtml filename="porg.html"?> @@ -27,6 +34,7 @@ <title>Porg in tools</title> <sect2 role="installation"> <title>Instructions</title> +<screen><userinput remap="pre">patch -Np1 -i ../porg-0.10-renameat2-1.patch</userinput></screen> <screen><userinput remap="configure">./configure --prefix=/tools \ --disable-grop \ --with-porg-logdir=/tools/var/porg</userinput></screen> @@ -69,6 +77,38 @@ <screen><userinput>cp /tools/etc/porgrc /etc</userinput></screen> </sect1> +<sect1 id="ch-chroot-pkgmngt" role="wrap"> + <?dbhtml filename="porg.html"?> + + <sect1info condition="script"> + <productname>porg</productname> + <productnumber>&porg-version;</productnumber> + <address>&porg-url;</address> + </sect1info> + + <title>Temporary Porg</title> + <sect2 role="installation"> + <title>Instructions</title> + +<screen><userinput remap="pre">patch -Np1 -i ../porg-0.10-renameat2-1.patch</userinput></screen> +<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">make install +mkdir -p /usr/share/bash-completion/completions +mv /etc/bash_completion.d/porg* /usr/share/bash-completion/completions</userinput></screen> + +<screen><userinput>sed -e '/EXCLUDE/{s/^#//;s@$@:/sources:/home@}' \ + -e '/LOGDIR/s/^#//' \ + -i /etc/porgrc</userinput></screen> + </sect2> + +</sect1> + <sect1 id="ch-system-pkgmngt" role="wrap"> <?dbhtml filename="porg.html"?> @@ -82,6 +122,7 @@ <sect2 role="installation"> <title>Instructions</title> +<screen><userinput remap="pre">patch -Np1 -i ../porg-0.10-renameat2-1.patch</userinput></screen> <screen><userinput remap="configure">./configure --prefix=/usr \ --disable-grop \ --sysconfdir=/etc \ Modified: jhalfs/trunk/pkgmngt/packageManager.xml.template ============================================================================== --- jhalfs/trunk/pkgmngt/packageManager.xml.template Sat Jun 20 10:16:22 2020 (r4179) +++ jhalfs/trunk/pkgmngt/packageManager.xml.template Tue Jun 23 23:26:05 2020 (r4180) @@ -16,6 +16,7 @@ <!-- First section for the tarball download address. Only the next four lines are mandatory, but you can add anything to make the text look more like the LFS book. +You can add several packages (see packageManager.xml.pacman) Do not change anything, except the url and the md5 checksum. --> <sect1 id="package"> <para>Download: <ulink url="http://your/package-manager/url"/></para> @@ -29,11 +30,76 @@ </sect1> --> -<!-- Do not change the next line. The name of the scriptlet will be taken -from the dbhtml instruction: it is the name of the file less .html, with -xxx-x-added before (x, digits). --> +<!-- We have three groups of sections with installation instructions: + - the one with id ch-tools-xxx is for old book, where + the package manager (and its needed deps) is built as user + lfs in /tools + - the one with id ch-chroot-xxx is for new book, where the + package manager (and its needed deps) is built temporarily + in chroot + - the one with id ch-system-xxx is for both book, when the + package manager (and its deps) is rebuilt with instructions + to make a package of it. + + Do not change the next line, except the -pkgmngt part. + The name of the scriptlet will be taken from the dbhtml instruction: + it is the name of the file less .html, with xxx-x-added before + (x, digits). --> <sect1 id="ch-tools-pkgmngt" role="wrap"> - <?dbhtml filename="dpkg.html"?> + <?dbhtml filename="pkgmngt.html"?> +<!-- the next lines are now mandatory for unpacking the tarball at the + beginning of the scriptlet --> + <sect1info condition="script"> + <productname>dpkg</productname> + <productnumber>x.y.z</productnumber><!-- version --> + <address>http://where/is/your/package</address><!-- url --> + </sect1info> +<!-- next line mandatory without change, but feel free to add any title, +other sect2 (with different role), sectinfo and so on --> + <sect2 role="installation"> +<!-- You can use any number of remap="pre", "configure", "make", "test", "install" +<screen><userinput remap="something">Instructions</userinput></screen>. +They are executed in that order. "pre" can be used for patching for example. +In case testing is enabled, the instructions flagged test are logged to a different +file (test-log). If testing is not enabled, they are not executed at all. Do not +put line breaks before and after your instructions. <userinput> without +remap attribute are considered configuration instructions and executed last. You +can also use remap="adjust" for the same purpose. --> +<screen><userinput remap="configure">./configure --prefix=/tools \ + --disable-nls --without-dselect \ + --without-start-stop-daemon \ + --without-update-alternatives \ + --without-install-info \ + --without-zlib --with-bz2=static --without-selinux</userinput></screen> + +<screen><userinput remap="make">(cd lib && make) +(cd src && make) +(cd dpkg-deb && make) +(cd dpkg-split && make)</userinput></screen> + +<screen><userinput remap="install">cp src/dpkg src/dpkg-* /tools/bin +cp dpkg-deb/dpkg-deb /tools/bin +cp dpkg-split/dpkg-split /tools/bin +mkdir -pv /tools/etc/dpkg/{,dpkg.cfg.d} +cp debian/dpkg.cfg /tools/etc/dpkg</userinput></screen> + +<screen><userinput>cat >> /tools/etc/dpkg/dpkg.cfg << EOF +# admindir on LFS system +admindir /var/lib/dpkg +EOF</userinput></screen> + +<screen><userinput>cat >> /tools/etc/dpkg/dpkg.cfg << EOF +# disable fatal error on path checking +force-bad-path +EOF</userinput></screen> + + </sect2> + +</sect1> + +<!-- for new book, at the end of chapter 7 --> +<sect1 id="ch-chroot-pkgmngt" role="wrap"> + <?dbhtml filename="pkgmngt.html"?> <!-- the next lines are now mandatory for unpacking the tarball at the beginning of the scriptlet --> <sect1info condition="script"> @@ -95,7 +161,9 @@ mkdir -pv /var/lib/packages</userinput></screen> </sect1> -<!-- Same for files. Do not change the following line --> +<!-- Same for files. Do not change the following line. + Those instructions are not executed for the new book. + If needed create files at the end of the temp install. --> <sect1 id="ch-pkgmngt-createfiles"> <screen><userinput>touch /var/lib/dpkg/{available,status} @@ -106,6 +174,8 @@ <!-- Last but not least : Final instructions for installing the package manager at the end of chapter 6. Again, the scriptlet file name is taken from the dbhtml instruction, with digits added before and .html cut. +There can be any number of sections for dependencies, all with id +ch-system-xxx (all the id's must be different). --> <sect1 id="ch-system-pkgmngt" role="wrap"> <?dbhtml filename="dpkg.html"?> -- http://lists.linuxfromscratch.org/listinfo/alfs-log Unsubscribe: See the above information page