FreeType2: Remove passes, load HarfBuzz dynamically.

This commit is contained in:
Zeckmathederg
2025-11-14 13:28:45 -07:00
parent 9113a0b453
commit 9854629c55
9 changed files with 71 additions and 235 deletions

View File

@ -43,6 +43,10 @@
<listitem>
<para>November 14th, 2025</para>
<itemizedlist>
<listitem>
<para>[zeckma] - FreeType2: Remove passes, load HarfBuzz
dynamically.</para>
</listitem>
<listitem>
<para>[zeckma] - Cython: 3.1.6 -&gt; 3.2.1.</para>
</listitem>

View File

@ -25,9 +25,8 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="x/libxcb.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/which.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/libpng.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/freetype2-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/freetype2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/harfbuzz.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/freetype2-pass2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="other/fontconfig.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="x/x7lib.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="x/libxcvt.xml"/>

View File

@ -49,7 +49,7 @@
<bridgehead renderas="sect3">Fontconfig Dependencies</bridgehead>
<para role="required">
<xref linkend="freetype2-pass2"/> and
<xref linkend="freetype2"/> and
<xref linkend="mesonfiles"/> (for lib32)
</para>

View File

@ -1,164 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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 freetype2-download "&sourceforge-dl;/freetype/freetype-&freetype2-version;.tar.xz">
]>
<sect1 id="freetype2-pass2" xreflabel="FreeType-&freetype2-version; - Pass 2">
<?dbhtml filename="freetype2-pass2.html"?>
<title>FreeType-&freetype2-version; - Pass 2</title>
<indexterm zone="freetype2-pass2">
<primary sortas="a-FreeType-pass2">FreeType-Pass-2</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to FreeType2 - Pass 2</title>
<para>
Now that <xref linkend="harfbuzz"/> has been installed, it is time
to recompile this package again. This is the second pass.
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
Download: <ulink url="&freetype2-download;"/>
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">FreeType2 Dependencies</bridgehead>
<para role="recommended">
<xref linkend="freetype2-pass1"/>,
<xref linkend="harfbuzz"/>,
<xref linkend="libpng"/>, and
<xref linkend="which"/>
</para>
<para role="optional">
<ulink url="https://pypi.org/project/docwriter/">docwriter</ulink>
</para>
</sect2>
<sect2 role="installation">
<title>Installation of FreeType2 - Pass 2</title>
<para>
Reuse the directory you built the first pass from, or else you will have
to prepare the source tree for compilation again as showed in <xref
linkend="freetype2-pass1"/>.
</para>
<para>
Clean the directory:
</para>
<screen><userinput>make distclean</userinput></screen>
&freetype-m64;
</sect2>
<sect2 role="installation">
<title>lib32 Installation of FreeType2 - Pass 2</title>
&freetype-m32;
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
&options-configure;
<para>
<parameter>--enable-freetype-config</parameter>: This switch
ensure that the man page for freetype-config is installed.
</para>
<para>
<option>--without-harfbuzz</option>: If
harfbuzz is installed prior to
freetype without
freetype support, use this switch to avoid a
build failure.
</para>
&static-libraries;
<!-- No longer valid with 2.10.1, /usr/bin/freetype-config is installed
by the 'make install' command.
<para>
<command>cp builds/unix/freetype-config /usr/bin</command>: Manually
place the freetype configuration program needed by other programs when
using the freetype library.
</para>
-->
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Program</segtitle>
<segtitle>Installed Library</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>
freetype-config
</seg>
<seg>
libfreetype
</seg>
<seg>
/usr/include/freetype2 and
/usr/share/doc/freetype-&freetype2-version;
</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="freetype-config-pass2">
<term><command>freetype-config</command></term>
<listitem>
<para>
is used to get FreeType compilation
and linking information
</para>
<indexterm zone="freetype2-pass2 freetype-config-pass2">
<primary sortas="b-freetype-config-pass2">freetype2-config</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libfreetype-pass2">
<term><filename class="libraryfile">libfreetype</filename></term>
<listitem>
<para>
contains functions for rendering various font types, such
as TrueType and Type1
</para>
<indexterm zone="freetype2-pass2 libfreetype-pass2">
<primary sortas="c-libfreetype-pass2">libfreetype</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -9,29 +9,26 @@
<!ENTITY freetype2-doc-download "&sourceforge-dl;/freetype/freetype-doc-&freetype2-doc-version;.tar.xz">
]>
<sect1 id="freetype2-pass1" xreflabel="FreeType-&freetype2-version; - Pass 1">
<?dbhtml filename="freetype2-pass1.html"?>
<sect1 id="freetype2" xreflabel="FreeType-&freetype2-version;">
<?dbhtml filename="freetype2.html"?>
<title>FreeType-&freetype2-version; - Pass 1</title>
<title>FreeType-&freetype2-version;</title>
<indexterm zone="freetype2-pass1">
<primary sortas="a-FreeType-pass1">FreeType-Pass-1</primary>
<indexterm zone="freetype2">
<primary sortas="a-FreeType">FreeType</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to FreeType2 - Pass 1</title>
<title>Introduction to FreeType2</title>
<para>
The FreeType2 package contains
a library which allows applications to properly render
TrueType fonts.
The FreeType2 package contains a library which allows applications to
properly render TrueType fonts.
</para>
<para>
This package has a circular dependency on <xref
linkend="harfbuzz"/>, so this package must be installed first,
harfBuzz second, then lastly this
package again. This is the first pass.
Ensure to install <xref linkend="harfbuzz"/> after this installation, as
many packages expect this package to have HarfBuzz support.
</para>
<itemizedlist spacing="compact">
@ -55,7 +52,8 @@
<bridgehead renderas="sect3">FreeType2 Dependencies</bridgehead>
<para role="recommended">
<xref linkend="libpng"/> and
<xref linkend="harfbuzz"/> (runtime),
<xref linkend="libpng"/>, and
<xref linkend="which"/>
</para>
@ -66,7 +64,7 @@
</sect2>
<sect2 role="installation">
<title>Installation of FreeType2 - Pass 1</title>
<title>Installation of FreeType2</title>
<para>
If you downloaded the additional documentation, unpack it into the
@ -91,7 +89,21 @@ sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" \
<command>sed -r</command> command is the one that enables SR.
</para></note>
&freetype-m64;
<para>
Install <application>FreeType2</application> by running the following
commands:
</para>
<screen><userinput>./configure --prefix=/usr \
--disable-static \
--enable-freetype-config \
--with-harfbuzz=dynamic &amp;&amp;
make</userinput></screen>
<para>
Now, as the &root; user:
</para>
<screen role='root'><userinput>make install</userinput></screen>
<para>
If you downloaded the optional documentation, install it as the
@ -104,9 +116,30 @@ rm -v /usr/share/doc/freetype-&freetype2-version;/freetype-config.1</userinput><
</sect2>
<sect2 role="installation">
<title>lib32 Installation of FreeType2 - Pass 1</title>
<title>lib32 Installation of FreeType2</title>
&freetype-m32;
<para>
Install lib32-<application>FreeType2</application> by running the
following commands:
</para>
<screen><userinput>make distclean &amp;&amp;
CC="gcc -m32" CXX="g++ -m32" \
PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
./configure --prefix=/usr \
--libdir=/usr/lib32 \
--host=i686-pc-linux-gnu \
--disable-static \
--with-harfbuzz=dynamic &amp;&amp;
make</userinput></screen>
<para>
Now, as the &root; user:
</para>
<screen role='root'><userinput>make DESTDIR=$PWD/DESTDIR install &amp;&amp;
cp -vr DESTDIR/usr/lib32/* /usr/lib32 &amp;&amp;
rm -rf DESTDIR &amp;&amp;
ldconfig</userinput></screen>
</sect2>
@ -115,21 +148,19 @@ rm -v /usr/share/doc/freetype-&freetype2-version;/freetype-config.1</userinput><
&options-configure;
&static-libraries;
<para>
<parameter>--enable-freetype-config</parameter>: This switch
ensure that the man page for freetype-config is installed.
</para>
<para>
<option>--without-harfbuzz</option>: If
harfbuzz is installed prior to
freetype without
freetype support, use this switch to avoid a
build failure.
<parameter>--with-harfbuzz=dynamic</parameter>: This switch ensures this
package doesn't need to get rebuilt after HarfBuzz is instead, instead is
loaded dynamically if present.
</para>
&static-libraries;
<!-- No longer valid with 2.10.1, /usr/bin/freetype-config is installed
by the 'make install' command.
<para>
@ -168,28 +199,28 @@ rm -v /usr/share/doc/freetype-&freetype2-version;/freetype-config.1</userinput><
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="freetype-config-pass1">
<varlistentry id="freetype-config">
<term><command>freetype-config</command></term>
<listitem>
<para>
is used to get FreeType compilation
and linking information
</para>
<indexterm zone="freetype2-pass1 freetype-config-pass1">
<primary sortas="b-freetype-config-pass1">freetype2-config</primary>
<indexterm zone="freetype2 freetype-config">
<primary sortas="b-freetype-config">freetype2-config</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libfreetype-pass1">
<varlistentry id="libfreetype">
<term><filename class="libraryfile">libfreetype</filename></term>
<listitem>
<para>
contains functions for rendering various font types, such
as TrueType and Type1
</para>
<indexterm zone="freetype2-pass1 libfreetype-pass1">
<primary sortas="c-libfreetype-pass1">libfreetype</primary>
<indexterm zone="freetype2 libfreetype">
<primary sortas="c-libfreetype">libfreetype</primary>
</indexterm>
</listitem>
</varlistentry>

View File

@ -42,7 +42,7 @@
<xref linkend="glib2"/> (required for Pango; GObject Introspection
required for building GNOME),
<xref linkend="icu"/>,
<xref role="first" linkend="freetype2-pass1"/>, and
<xref role="first" linkend="freetype2"/>, and
<xref linkend="mesonfiles"/> (for lib32)
</para>

View File

@ -64,7 +64,7 @@
<para>
<xref linkend="dav1d"/>,
<xref linkend="fdk-aac"/>,
<xref linkend="freetype2-pass2"/>,
<xref linkend="freetype2"/>,
<xref linkend="lame"/>,
<xref linkend="libaom"/>,
<xref linkend="libvorbis"/>,

View File

@ -51,7 +51,7 @@
Display server (<xref linkend="xorg-server"/> or
<xref linkend="wayland"/> w/ <xref linkend="xwayland"/>),
<xref linkend="fontconfig"/>,
<xref linkend="freetype2-pass2"/>,
<xref linkend="freetype2"/>,
<xref linkend="gnutls"/>,
<xref linkend="libunwind"/> (if 64-bit/WoW64; not used by Wine 32-bit),
&opengl;, and

View File

@ -116,37 +116,3 @@ ninja</userinput></screen>
<screen role='root'><userinput>chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &amp;&amp;
chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper</userinput></screen>">
<!ENTITY freetype-m64 "<para>
Install <application>FreeType2</application> by running the following
commands:
</para>
<screen><userinput>./configure --prefix=/usr \
--enable-freetype-config \
--disable-static &amp;&amp;
make</userinput></screen>
<para>
Now, as the &root; user:
</para>
<screen role='root'><userinput>make install</userinput></screen>">
<!ENTITY freetype-m32 "<para>
Install lib32-<application>FreeType2</application> by running the following
commands:
</para>
<screen><userinput>make distclean &amp;&amp;
CC=&quot;gcc -m32&quot; CXX=&quot;g++ -m32&quot; \
PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
./configure --prefix=/usr \
--libdir=/usr/lib32 \
--host=i686-pc-linux-gnu \
--enable-freetype-config \
--disable-static &amp;&amp;
make</userinput></screen>
<para>
Now, as the &root; user:
</para>
<screen role='root'><userinput>make DESTDIR=$PWD/DESTDIR install &amp;&amp;
cp -vr DESTDIR/usr/lib32/* /usr/lib32 &amp;&amp;
rm -rf DESTDIR &amp;&amp;
ldconfig</userinput></screen>">