Index: general/prog/dummy-fpc.xml
===================================================================
--- general/prog/dummy-fpc.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
+++ general/prog/dummy-fpc.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<!--
+  New section for packages
+  * fpc            - Pascal compiler, text IDE
+  * qt5pas         - Pascal bindings to QT5
+  * lazarus        - Delphi-like IDE
+-->
+<sect1 role="dummy">
+
+  <sect1info>
+    <date>$Date$</date>
+  </sect1info>
+
+  <title>FreePascal</title>
+  <para/>
+</sect1>
+
Index: general/prog/fpc.xml
===================================================================
--- general/prog/fpc.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
+++ general/prog/fpc.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+
+  <!ENTITY fpc-bin-x86-dl           "https://sourceforge.net/projects/freepascal/files/Linux/&freepascal-bin-version;/fpc-&freepascal-bin-version;.x86_64-linux.tar">
+  <!ENTITY fpc-bin-x86-md5sum       "0186779de0c9caee073fc1394afbee56">
+  <!ENTITY fpc-bin-x86-size         "82.9 MB">
+  <!ENTITY fpc-bin-x86-bldsize      "x.x MB">
+  
+  <!ENTITY fpc-bin-i686-dl          "https://sourceforge.net/projects/freepascal/files/Linux/&freepascal-bin-version;/fpc-&freepascal-bin-version;.i386-linux.tar">
+  <!ENTITY fpc-bin-i686-md5sum      "18354e51309a34b0efe7702633568a1e">
+  <!ENTITY fpc-bin-i686-size        "81.1 MB">
+  <!ENTITY fpc-bin-i686-bldsize     "x.x MB">
+
+  <!ENTITY fpc-src-dl               "https://sourceforge.net/projects/freepascal/files/Source/&freepascal-version;/fpc-&freepascal-version;.source.tar.gz">
+  <!ENTITY fpc-src-md5sum           "e7649ad0fc9230fdd9493a7fcabbd426">
+  <!ENTITY fpc-src-size             "52.2 MB">
+  <!ENTITY fpc-src-bldsize          "x.x MB">
+  
+  <!ENTITY fpc-tmp-target           "/opt/fpc-temp">
+]>
+
+<!--
+  TODO:
+  
+  Rebuild itself
+     The instructions below does the bootstrap by using a 
+     binary package to compile the compiler.
+     I've never tested whether the built compiler is capable
+     to recompile itself, maybe it work, maybe not. With the
+     compiler which is installed, building QT5PAS and Lazarus
+     (the Delphi-like GUI) with QT or GTK2 toolkits does work.
+
+     We definitly should test this and maybe tweak the instructions
+     to do a correct build to enable this.
+-->
+
+<sect1 id="fpc" xreflabel="FreePascal-&freepascal-version;">
+  <?dbhtml filename="fpc.html"?>
+
+  <title>FreePascal-&freepascal-version;</title>
+
+  <indexterm zone="java">
+    <primary sortas="a-java">FreePascal Binary</primary>
+  </indexterm>
+
+  <sect2 id="fpc-bin" xreflabel="FPC Binary" role="package">
+    <title>Binary FreePascal Information</title>
+
+    <para>
+      FreePascal is a compiler software used to translate Pascal
+      source code to executable programs. An introductory Pascal
+      program looks like:
+    </para>
+
+<screen><literal>program Hello;
+begin
+    writeln('Hello world!');
+end.</literal></screen>
+
+    <para>
+      The <application>FreePascal</application> package does not only
+      contain the compiler itself but also a complete semi-graphical,
+      text based IDE. This IDE can be operated using keyboard commands
+      and by mouse interaction. The IDE is constructed with a toolkit
+      previously named <application>Turbo Vision</application> which
+      was introduced by Borland somewhere back in the MS-DOS age
+      together with <application>Turbo Pascal 6.0</application>
+      - that was in Nov. 1990. This toolbox is available for use in
+      your own programs, too.
+    </para>
+
+    <para>
+      Creating the <application>FreePascal</application> compiler from
+      source requires a <application>FreePascal</application> compiler
+      to be available. This is a circular dependency which can be
+      solved by using a precompiled package.
+    </para>
+
+    <para>
+      To start, we set up a binary installation of <application>FreePascal</application>
+      created by the FreePascal development team. It is installed in
+      the <filename>&fpc-tmp-target;</filename> directory. Using this temporary
+      compiler installation, the compiler can be created from source.
+      After this step is done, the temporary compiler can be easily
+      removed.
+    </para>
+
+    &lfs120_checked;
+
+    <bridgehead renderas="sect3">Binary Package Information</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Binary download (x86): <ulink url="&fpc-bin-i686-dl;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &fpc-bin-i686-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size (binary): &fpc-bin-i686-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &fpc-bin-i686-bldsize;
+        </para>
+      </listitem>
+    </itemizedlist>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Binary download (x86_64): <ulink url="&fpc-bin-x86-dl;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &fpc-bin-x86-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size (binary): &fpc-bin-x86-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &fpc-bin-x86-bldsize;
+        </para>
+      </listitem>
+    </itemizedlist>
+
+    <bridgehead renderas="sect3">Source Package Information</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Source download: <ulink url="&fpc-src-dl;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &fpc-src-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size (binary): &fpc-src-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &fpc-src-bldsize;
+        </para>
+      </listitem>
+    </itemizedlist>
+    
+    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Optional patch (Required if building on i686 systems):
+          <ulink url="&patch-root;/fpc-&freepascal-version;-glibc_2.34-1.patch"/>
+        </para>
+      </listitem>
+    </itemizedlist>
+
+    <bridgehead renderas="sect3">FreePascal Dependencies</bridgehead>
+    <para role="required">
+      <xref linkend="gdb"/> (with static library libgdb.a)
+    </para>
+<!--
+    <para condition="html" role="usernotes">User Notes:
+    <ulink url="&blfs-wiki;/fpc"/></para>
+-->
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of FreePascal</title>
+
+    <note>
+      <para>
+        While installation it is required to have administrator
+        privileges. It is assumed that the current user is allowed
+        to use <command>sudo</command> to gain full privileges.
+      </para>
+      <para>
+        Even a temporary binary compiler must be installed prior to
+        compile the compiler from the source, it is assumed that the
+        <application>FreePascal</application> sources has been
+        extracted and the current directory has been changed to it just
+        like as usual.
+      </para>
+      <para>
+        In case there is a <application>FreePascal</application>
+        compiler installed allready, the temporary binary is not
+        required. The installed compiler should be appropriate to
+        compile the sources if the installed version is not too old.
+      </para>
+    </note>
+
+    <para>
+      Begin by extracting the appropriate binary tarball for your
+      architecture and changing to the extracted directory. This
+      extraction is performed within the extracted source directory.
+      Install the binary <application>FreePascal</application> and
+      remove some unused files with the following commands:
+    </para>
+
+<screen><userinput>case "$(uname -m)" in
+    i?86)
+        tar -xf ../../fpc-&freepascal-bin-version;.i386-linux.tar &amp;&amp;
+        cd fpc-&freepascal-bin-version;.i386-linux
+        ;;
+    x86_64)
+        tar -xf ../../fpc-&freepascal-bin-version;-x86_64-linux.tar &amp;&amp;
+        cd fpc-&freepascal-bin-version;-x86_64-linux
+        ;;
+esac &amp;&amp;
+rm demo.tar.gz &amp;&amp;
+rm doc-pdf.tar.gz &amp;&amp;
+sed -e 's;PREFIX=/usr;test -z "$PREFIX" \&amp;\&amp; &amp;;' -i install.sh</userinput></screen>
+
+    <para>
+      Prepare the install directory for the temporary compiler and
+      make it writable to the current user by executing as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>install -dm755 -o $(id -u) &fpc-tmp-target;</userinput></screen>
+
+    <para>
+      Install the temporary compiler:
+    </para>
+      
+<screen><userinput>yes "" | { PREFIX=&fpc-tmp-target; ./install.sh; }</userinput></screen>
+
+    <para>Remove the extracted binary objects:</para>
+    
+<screen><userinput>cd .. &amp;&amp;
+case "$(uname -m)" in
+    i?86)
+        rm -rf fpc-&freepascal-bin-version;.i386-linux
+        ;;
+    x86_64)
+        rm -rf fpc-&freepascal-bin-version;-x86_64-linux
+        ;;
+esac &amp;&amp;
+export PATH=&fpc-tmp-target;/bin:$PATH</userinput></screen>
+
+    <para>
+      The binary version is now installed in
+      <filename class="directory">&fpc-tmp-target;</filename> and
+      can be used to create the compiler and utilities from source.
+    </para>
+
+    <para>
+      Fix invalid path for man pages:
+    </para>
+
+<screen><userinput>sed -e "/^INSTALL_MANDIR=/ s;/man;/share/man;" \
+    -i install/man/Makefile</userinput></screen>
+
+    <para>
+      If building on i686 systems (32-bit), a patch is required
+      to overcome an issue with glibc-2.34.
+    </para>
+
+<screen><userinput>cd fpcsrc &amp;&amp;
+patch -Np1 -i ../../fpc-&freepascal-version;-glibc_2.34-2.patch &amp;&amp;
+cd ..</userinput></screen>
+
+    <para>
+      Compile the <application>FreePascal</application> compiler
+      and tools by executing the following commands:
+    </para>
+
+<screen><userinput>make clean &amp;&amp;
+make  build</userinput></screen>
+    
+    <para>
+      Install the <application>FreePascal</application> compiler
+      and tools by executing the following commands as the
+      <systemitem class="username">root</systemitem> user. Make sure
+      that the temporary compiler is in <envar>PATH</envar>:
+    </para>
+
+<screen role="root"><userinput>make -j1 PREFIX=/usr install &amp;&amp;
+case "$(uname -m)" in
+    i?86)
+        ln -svf /usr/lib/fpc/&freepascal-version;/ppc386 /usr/bin/
+        ;;
+    x86_64)
+        ln -svf /usr/lib/fpc/&freepascal-version;/ppcx64 /usr/bin/
+        ;;
+esac</userinput></screen>
+
+    <para>
+      Now that the compiler has been created from source, the temporary
+      compiler in <filename class="directory">&fpc-tmp-target;</filename>
+      can be removed. Execute the following commands as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>rm -rf /etc/fppkg* &amp;&amp;
+rm -rf /etc/fpc.* &amp;&amp;
+rm -rf $HOME/{.fppkg,.fpc.cfg,.config/fppkg.cfg} &amp;&amp;
+rm -rf &fpc-tmp-target;</userinput></screen>
+
+    <para>
+      You may also want to remove the <filename class="directory">&fpc-tmp-target;</filename>
+      entry from <envar>PATH</envar> now.
+    </para>
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Configuring FreePascal</title>
+
+    <para>
+      A default configuration file <filename>/etc/fpc.cfg</filename>
+      can be created by a tool which is part of the compiler suite.
+      Generate the default config file as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>/usr/lib/fpc/&freepascal-version;/samplecfg /usr/lib/fpc/&freepascal-version; /etc &amp;&amp;
+cat &gt;&gt; /etc/fpc.cfg &lt;&lt;EOF
+#ifdef cpux86_64
+# for x86_64 use -fPIC by default
+-Cg
+#endif
+EOF</userinput></screen>
+
+    <para>
+      If you are going to use QT (most likely when building Lazarus
+      with the QT library), add the QT library path to the config as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+    
+<screen role="root"><userinput>sed -e "/^-Fl\/usr\/lib\/fpc/a -Fl/opt/qt5/lib" \
+    -i /etc/fpc.cfg</userinput></screen>
+
+    <para>
+      It is highly recommended that the compiler sources are available
+      for later use. Since the sources are available on disk already
+      they can be used but some binaries built in the source tree
+      should be removed first:
+    </para>
+
+<screen><userinput>make clean</userinput></screen>
+
+    <para>
+      To copy the source, execute the following command as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>mv fpcsrc /usr/lib/fpc/src</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>fpc, fp, samplecfg, ...</seg>
+        <seg>None</seg>
+        <seg>/usr/lib/fpc</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="i-fp">
+        <term><command>fp</command></term>
+        <listitem>
+          <para>
+            FreePascal text based IDE
+          </para>
+          <indexterm zone="fpc i-fp">
+            <primary sortas="b-fp">fp</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="i-fpc">
+        <term><command>fpc</command></term>
+        <listitem>
+          <para>
+            FreePascal compiler frontend
+          </para>
+          <indexterm zone="fpc i-fpc">
+            <primary sortas="b-fpc">fpc</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="i-fpcmake">
+        <term><command>fpcmake</command></term>
+        <listitem>
+          <para>
+            FreePascal make utility
+          </para>
+          <indexterm zone="fpc i-fpcmake">
+            <primary sortas="b-fpcmake">fpcmake</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="i-samplecfg">
+        <term><command>samplecfg</command></term>
+        <listitem>
+          <para>
+            Utility to create a default configuration file
+          </para>
+          <indexterm zone="fpc i-samplecfg">
+            <primary sortas="b-samplecfg">samplecfg</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: general/prog/lazarus.xml
===================================================================
--- general/prog/lazarus.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
+++ general/prog/lazarus.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+
+  <!--
+      NOTE:
+      Whenever upgrading to another version of Lazarus,
+      update qt5pas.xml, too!
+  -->
+  <!ENTITY lazarus-download-http "https://downloads.sourceforge.net/project/lazarus/Lazarus Zip _ GZip/Lazarus &lazarus-version;/lazarus-&lazarus-version;-0.tar.gz">
+  <!ENTITY lazarus-md5sum        "51ca9d8351c368d8c3f7e89734fc17f1">
+  <!ENTITY lazarus-size          "74.7 MB">
+  <!ENTITY lazarus-buildsize     "817.2 MB">
+  <!ENTITY lazarus-time          "1.5 SBU">
+]>
+
+<sect1 id="lazarus" xreflabel="lazarus-&lazarus-version;">
+  <?dbhtml filename="lazarus.html"?>
+
+  <title>Lazarus-&lazarus-version;</title>
+
+  <indexterm zone="lazarus">
+    <primary sortas="a-lazarus">lazarus</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to lazarus</title>
+
+    <para><!-- copied from https://www.lazarus-ide.org/ -->
+      Lazarus is a Delphi compatible cross-platform IDE for Rapid
+      Application Development. It has variety of components ready
+      for use and a graphical form designer to easily create complex
+      graphical user interfaces.
+    </para>
+
+    &lfs120_checked;
+
+    <bridgehead renderas="sect3">Package Information</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Download (HTTP): <ulink url="&lazarus-download-http;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &lazarus-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size: &lazarus-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &lazarus-buildsize;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated build time: &lazarus-time;
+        </para>
+      </listitem>
+    </itemizedlist>
+
+    <bridgehead renderas="sect3">Lazarus Dependencies</bridgehead>
+    <para role="required">
+      <xref linkend="fpc"/>, and one of 
+      <xref linkend="qt5"/> and <xref linkend="qt5pas"/> for QT based IDE, or
+      <xref linkend="gtk2"/> for Gtk2 based IDE
+    </para>
+<!--
+    <para condition="html" role="usernotes">User Notes:
+    <ulink url="&blfs-wiki;/lazarus"/></para>
+-->
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Lazarus</title>
+
+    <para>
+      Ensure that the source tree is in proper state:
+    </para>
+
+<screen><userinput>make -j1 FPC=/usr/bin/fpc clean</userinput></screen>
+
+<!--
+  Looks like that even both versions (gtk2, qt5) can be on one machine
+  when the binaries 'lazarus' and 'startlazarus' are moved to
+    lazarus      -> lazarus-gtk2
+    startlazarus -> startlazarus-gtk2
+  and after building the QT5 variant
+    lazarus      -> lazarus-qt5
+    startlazarus -> startlazarus-qt5
+  and than symlink lazarus/startlazarus to the desired ones.
+  (it needs to be analyzed more deeply)
+
+  Instructions are taken from ArchLinux and adopted to LFS
+-->
+    <para>
+      If you want to build <application>Lazarus</application> with
+      the gtk2 toolkit, build the package by running the following
+      commands, otherwise skip the following instructions and proceed
+      to the instructions to build the QT5 based variant below.
+    </para>
+
+<screen><userinput>make -j1 FPC=/usr/bin/fpc LCL_PLATFORM=gtk2 bigide</userinput></screen>
+
+    <para>
+      If you have built the gtk2 variant, skip the QT5 section and
+      proceed to the installation. Otherwise 
+      <application>Lazarus</application> is built using the
+      QT5 library by running the following commands:
+    </para>
+
+<screen><userinput>make -j1 FPC=/usr/bin/fpc LCL_PLATFORM=qt5 bigide</userinput></screen>
+
+    <para>
+      This package does not come with a test suite.
+    </para>
+
+    <para>
+      Now, install <application>lazarus</application> as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>make INSTALL_PREFIX=/usr distinstall
+
+mv /usr/share/lazarus/docs /usr/share/doc/lazarus
+
+mv /usr/share/lazarus /usr/lib/
+for L in $(find /usr/bin -type l); do
+    ln -svf "$(readlink $L | sed 's@/share/@/lib/@')" "$L"
+done
+
+sed -e 's|\(Categories\).*|\1=IDE;Development;|' \
+    -i /usr/share/applications/lazarus.desktop
+
+install -Dm644 images/ide_icon48x48.png \
+       /usr/share/pixmaps/lazarus.png</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>startlazarus, lazarus-ide, lrstolfm, updatepofiles, lazbuild, lazres</seg>
+        <seg>None</seg>
+        <seg>/usr/lib/lazarus</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="lazarus-pgm">
+        <term><filename class="libraryfile">startlazarus</filename></term>
+        <listitem>
+          <para>
+            Starting the Delphi-like IDE
+          </para>
+          <indexterm zone="lazarus lazarus-pgm">
+            <primary sortas="b-lazarus">startlazarus</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: general/prog/prog.xml
===================================================================
--- general/prog/prog.xml	(revision 642d7af06aae67952d2f40c9c1c5334497f65ad3)
+++ general/prog/prog.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -71,3 +71,8 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apache-ant.xml"/>
 
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dummy-fpc.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fpc.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="qt5pas.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="lazarus.xml"/>
+
 </chapter>
Index: general/prog/qt5pas.xml
===================================================================
--- general/prog/qt5pas.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
+++ general/prog/qt5pas.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+
+  <!-- ENTITY qt5pas-download-http "https://github.com/davidbannon/libqt5pas/archive/v&qt5pas-version;/libqt5pas-&qt5pas-version;.tar.gz" -->
+
+  <!--
+       NOTE:
+       The url, size, md5sum is exactly same as in Lazarus as Qt5Pas
+       is included in the Lazarus source package.
+       It needs to be installed before Lazarus can be built based
+       on QT.
+  -->
+     
+  <!ENTITY lazarus-download-http "https://downloads.sourceforge.net/project/lazarus/Lazarus Zip _ GZip/Lazarus &lazarus-version;/lazarus-&lazarus-version;-0.tar.gz">
+  <!ENTITY lazarus-md5sum        "51ca9d8351c368d8c3f7e89734fc17f1">
+  <!ENTITY lazarus-size          "74.7 MB">
+  <!ENTITY qt5pas-buildsize     "2.5 MB">
+  <!ENTITY qt5pas-time          "7 SBU">
+]>
+
+<sect1 id="qt5pas" xreflabel="qt5pas-&qt5pas-version;">
+  <?dbhtml filename="qt5pas.html"?>
+
+  <title>qt5pas-&qt5pas-version;</title>
+
+  <indexterm zone="qt5pas">
+    <primary sortas="a-qt5pas">qt5pas</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to qt5pas</title>
+
+    <para>
+      libqt5pas is an interface between Lazarus and the Qt5 libraries.
+    </para>
+
+    &lfs120_checked;
+
+    <bridgehead renderas="sect3">Package Information</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Download (HTTP): <ulink url="&lazarus-download-http;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &lazarus-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size: &lazarus-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &qt5pas-buildsize;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated build time: &qt5pas-time;
+        </para>
+      </listitem>
+    </itemizedlist>
+
+    <bridgehead renderas="sect3">qt5pas Dependencies</bridgehead>
+    <para role="required">
+      <xref linkend="fpc"/> and
+      <xref linkend="qt5"/>
+    </para>
+<!--
+    <para condition="html" role="usernotes">User Notes:
+    <ulink url="&blfs-wiki;/qt5pas"/></para>
+-->
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of qt5pas</title>
+
+    <para>
+      The <application>qt5pas</application> package is included in
+      the <application>Lazarus</application> source package but it
+      needs to be built before Lazarus can be built with QT as 
+      graphical interface libraries.</para>
+    <para>There is no need (no way) to specify the installation 
+      target (as usually done by passing --prefix to configure).
+      Qt5pas will be installed in QT's library directory. Build the
+      package by running the following commands:
+    </para>
+
+<screen><userinput>cd lcl/interfaces/qt5/cbindings &amp;&amp;
+qmake-qt5 "QT += x11extras" &amp;&amp;
+make</userinput></screen>
+
+    <para>
+      This package does not come with a test suite.
+    </para>
+
+    <para>
+      Now, install <application>qt5pas</application> as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>None</seg>
+        <seg>libQt5Pas.so</seg>
+        <seg>None</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="qt5pas-lib">
+        <term><filename class="libraryfile">libQt5Pas.so</filename></term>
+        <listitem>
+          <para>
+            provides the QT bindings
+          </para>
+          <indexterm zone="qt5pas qt5pas-lib">
+            <primary sortas="b-qt5pas">qt5pas</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: networking/netprogs/netprogs.xml
===================================================================
--- networking/netprogs/netprogs.xml	(revision 642d7af06aae67952d2f40c9c1c5334497f65ad3)
+++ networking/netprogs/netprogs.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -29,4 +29,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="rsync.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="samba.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="uacme.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="wget.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="wireless-kernel.xml"/>
Index: networking/netprogs/uacme.xml
===================================================================
--- networking/netprogs/uacme.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
+++ networking/netprogs/uacme.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+
+  <!ENTITY uacme-download-http
+           "https://github.com/ndilieto/uacme/archive/refs/tags/v&uacme-version;/uacme-&uacme-version;.tar.gz">
+  <!ENTITY uacme-download-ftp   " ">
+  <!ENTITY uacme-md5sum        "0a8ff9a73e1d8006d4eee9908ca5f035">
+  <!ENTITY uacme-size          "250 KB">
+  <!ENTITY uacme-buildsize     "4,2 MB">
+  <!ENTITY uacme-time          "0.1 SBU">
+]>
+
+<sect1 id="uacme" xreflabel="Uacme-&uacme-version;">
+  <?dbhtml filename="uacme.html"?>
+
+  <title>Uacme-&uacme-version;</title>
+
+  <indexterm zone="uacme">
+    <primary sortas="u-Uacme">Uacme</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Uacme utility</title>
+
+    <para>
+      The <application>Uacme</application> package contains an easy to
+      use utility to manage certificates provided by <literal>LetsEncrypt</literal>.
+      It is an alternative to the <application>certbot</application>.
+    </para>
+
+    &lfs120_checked;
+
+    <bridgehead renderas="sect3">Package Information</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Download (HTTP): <ulink url="&uacme-download-http;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download (FTP): <ulink url="&uacme-download-ftp;"/>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download MD5 sum: &uacme-md5sum;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Download size: &uacme-size;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated disk space required: &uacme-buildsize;
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Estimated build time: &uacme-time;
+        </para>
+      </listitem>
+    </itemizedlist>
+<!--
+    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Required patch:
+          <ulink url="&patch-root;/uacme-&uacme-version;-blfs_layout-1.patch"/>
+        </para>
+      </listitem>
+    </itemizedlist>
+-->
+    <bridgehead renderas="sect3">Uacme Dependencies</bridgehead>
+
+    <bridgehead renderas="sect4">Required</bridgehead>
+    <para role="required">
+      <xref linkend="curl"/>,
+      <xref linkend="gnutls"/> and
+      <xref linkend="apache"/> (runtime)
+    </para>
+<!--
+    <bridgehead renderas="sect4">Recommended</bridgehead>
+    <para role="recommended">
+      <xref linkend="openssl"/>
+    </para>
+
+    <bridgehead renderas="sect4">Optional</bridgehead>
+    <para role="optional">
+      <xref linkend="brotli"/>,
+      <xref linkend="db"/>,
+      <xref linkend="doxygen"/>,
+      <xref linkend="libxml2"/>,
+      <xref linkend="lua"/>,
+      <xref linkend="lynx"/> or
+      <xref linkend="Links"/> or
+      <ulink url="&elinks-url;">ELinks</ulink>,
+      <xref linkend="nghttp2"/>,
+      <xref linkend="openldap"/> (<xref linkend="apr-util"/> needs to be
+      installed with ldap support),
+      <xref linkend="rsync"/>, and
+      <ulink url="https://sourceforge.net/projects/distcache">Distcache</ulink>
+    </para>
+-->
+<!--
+    <para condition="html" role="usernotes">
+      User Notes: <ulink url="&blfs-wiki;/uacme"/>
+    </para>
+-->
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Uacme utility</title>
+
+    <para>
+      First, fix a hard coded path to match the defaut settings of
+      the BLFS httpd installation:
+    </para>
+<screen><userinput>sed -e "s;/var/www/;/srv/www/;" -i uacme.sh</userinput></screen>
+
+    <para>
+      Build and install <application>Uacme</application> by running the
+      following commands:
+    </para>
+
+<screen><userinput>autoreconf                 &amp;&amp;
+./configure --prefix=/usr  \
+            --disable-docs &amp;&amp;
+make</userinput></screen>
+
+    <para>
+      This package does not come with a test suite.
+    </para>
+
+    <para>
+      Now, as the <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--disable-docs</parameter>: No rebuild of docs.
+    </para>
+
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Using Uacme</title>
+
+    <note>
+      <para>
+        Make sure that your webserver works fine on http (port 80). It
+        might be checked by pointing the browser to the URL you want to
+        secure with the new certificate. In this example, 
+        point the browser to http://www.your.domain.com and verify that
+        this produces the expected content.
+      </para>
+      <para>
+        This also means that the DNS setup should to be in place so
+        that names can be used instead of bare IP addresses. The
+        webserver has to be reachable from the internet.
+      </para>
+    </note>
+
+    <para>
+      First, create an account and a private key. The directory
+      used in the subsequent command (<filename class="directory">/etc/uacme.d</filename>)
+      can be freely chosen. The certificates will be stored there
+      and the webserver must have read access to it.
+    </para>
+
+<screen><userinput role="nodump">uacme -v -c /etc/uacme.d new</userinput></screen>    
+
+    <para>
+      Next, initiate creating a certificate for your domain
+    </para>
+
+<screen><userinput role="nodump">uacme -v -c /etc/uacme.d issue www.your.domain.com</userinput></screen>
+
+    <para>
+      Note that the program will stop a a specific point and waits
+      for input to continue. This waiting is required as a file
+      needs to be created manually according to the output of the
+      program. Look for a line which looks like
+    </para>
+
+<screen>uacme: challenge=http-01 ident=www.your.domain.com token=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4 key_auth=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4.2evcXalKLhAybRuxxE-HkSUihdzQ7ZDAKA9EZYrTXwU</screen>
+
+    <para>
+      Create a directory and a file within that directory in the
+      webserver's document root:
+    </para>
+
+<screen><userinput role="nodump">mkdir /srv/www/.well-known/acme-challenge
+echo "kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4.2evcXalKLhAybRuxxE-HkSUihdzQ7ZDAKA9EZYrTXwU" \
+   > /srv/www/.well-known/acme-challenge/kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4</userinput></screen>
+
+    <para>
+      Both of that cryptic values can be taken from the output of
+      the <application>uacme</application> program. The filename is
+      the value of <emphasis>token</emphasis> and its content is
+      taken from <emphasis>key-auth</emphasis>.
+    </para>
+    <para>
+      After the file has been created, verify that the webserver has
+      access to it by pointing your browser to
+      <literal>http://www.your.domain.com/.well-known/acme-challenge/kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4</literal>.
+      The value of the <emphasis>key-auth</emphasis> should appear as
+      simple text in your browser.
+    </para>
+    <para>
+      If done and the response in the browser is ok, press 'y' + Enter
+      and the program will continue to run. When finished, the
+      certificate is placed in 
+      <filename class="directory">/etc/uacme.d/www.your.domain.com/cert.pem</filename> and
+      the private key is stored in
+      <filename class="directory">/etc/uacme.d/private/www.your.domain.com/key.pem</filename>.
+      The well-known directory can now be deleted as its content is 
+      usable only one time so there is no use in keeping it:
+    </para>
+
+<screen><userinput role="nodump">rm -rf /srv/www/.well-known</userinput></screen>
+    
+    <para>
+      Next steps will be to switch off the http protocol in the
+      webserver except there are good reasons to keep it available.
+      Configure the webserver to use the created certificate
+      for https.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          uacme, ualpn
+        </seg>
+        <seg>
+          none
+        </seg>
+        <seg>
+          /usr/share/uacme
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+<!--
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="uacme">
+        <term><command>uacme</command></term>
+        <listitem>
+          <para>
+            is a tool for building and installing extension modules for the
+            <application>Apache</application> HTTP server
+          </para>
+          <indexterm zone="uacme uacme">
+            <primary sortas="b-uacme">uacme</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="ualpn">
+        <term><command>ualpn</command></term>
+        <listitem>
+          <para>
+            is a tool for building and installing extension modules for the
+            <application>Apache</application> HTTP server
+          </para>
+          <indexterm zone="ualpn ualpn">
+            <primary sortas="b-ualpn">ualpn</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+-->
+  </sect2>
+
+</sect1>
Index: packages.ent
===================================================================
--- packages.ent	(revision 642d7af06aae67952d2f40c9c1c5334497f65ad3)
+++ packages.ent	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -364,4 +364,15 @@
 <!ENTITY openjdk-build                "9">
 <!ENTITY apache-ant-version           "1.10.14">
+
+<!--
+The version of the binary package may differ from the
+source version. Currently as time of creation of this page,
+3.2.0 is used but there are also 3.2.2 packages available.
+When settled, we should try to upgrade the bin-version.
+-->
+<!ENTITY freepascal-version           "3.2.2">
+<!ENTITY freepascal-bin-version       "&freepascal-version;">
+<!ENTITY lazarus-version              "2.2.6">
+<!ENTITY qt5pas-version               "&lazarus-version;">
 
 <!-- Perl module versions used in the Perl Modules instructions
@@ -725,4 +736,5 @@
 <!-- Chapter 20 -->
 <!ENTITY apache-version               "2.4.57">
+<!ENTITY uacme-version                "1.7.4">
 <!-- Bind version is the same as for Bind Utilities -->
 <!ENTITY kea-dhcp-version             "2.4.0">
Index: server/major/apache.xml
===================================================================
--- server/major/apache.xml	(revision 642d7af06aae67952d2f40c9c1c5334497f65ad3)
+++ server/major/apache.xml	(revision f7a5feb9101145c061feeaac5b03b67a61a07321)
@@ -293,4 +293,9 @@
 <screen role="root"><userinput>make install-httpd</userinput></screen>
 
+      <para>To secure the applications served by <application>Apache</application>
+      it is recommended to use SSL encyption (https). To create SSL 
+      certificated for this web server, see <xref linkend="uacme"/> for
+      an easy-to-use tool to create LetsEncrypt certificates.</para>
+      
     </sect3>
 
