Fix package management for new book, and add a patch for porg
This commit is contained in:
parent
13e52a5572
commit
49f8b03399
3 changed files with 168 additions and 35 deletions
80
LFS/lfs.xsl
80
LFS/lfs.xsl
|
@ -143,28 +143,6 @@ otherwise it is in /bin.-->
|
|||
</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 @@ otherwise it is in /bin.-->
|
|||
<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 @@ otherwise it is in /bin.-->
|
|||
</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 @@ otherwise it is in /bin.-->
|
|||
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 @@ esac
|
|||
<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 @@ set -e
|
|||
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 @@ PACKAGE=</xsl:text>
|
|||
<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>
|
||||
|
|
|
@ -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 @@ mkdir -pv /var/lib/packages</userinput></screen>
|
|||
<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 @@ mkdir -pv /var/lib/packages</userinput></screen>
|
|||
<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 \
|
||||
|
|
|
@ -16,6 +16,7 @@ it in html -->
|
|||
<!-- 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 @@ Do not change anything, except the url and the md5 checksum. -->
|
|||
</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 @@ any explaining <title>Title</title> and <para>explanations</para> -->
|
|||
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 @@ touch /var/log/dpkg.log</userinput></screen>
|
|||
<!-- 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"?>
|
||||
|
|
Reference in a new issue