repo/gentoo:master commit in: media-libs/fontconfig/

"Sam James" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786043225.d3765bf2e37477e6119c9dd8b908c89eaac5758f.sam@gentoo>
commit:     d3765bf2e37477e6119c9dd8b908c89eaac5758f
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  6 12:11:27 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Aug  6 19:07:05 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d3765bf2

media-libs/fontconfig: add 2.18.3

Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-libs/fontconfig/Manifest                 |   1 +
 media-libs/fontconfig/fontconfig-2.18.3.ebuild | 250 +++++++++++++++++++++++++
 2 files changed, 251 insertions(+)

diff --git a/media-libs/fontconfig/Manifest b/media-libs/fontconfig/Manifest
index 3df1bdcfa4ff..59bd1db6e13f 100644
--- a/media-libs/fontconfig/Manifest
+++ b/media-libs/fontconfig/Manifest
@@ -2,3 +2,4 @@ DIST fontconfig-2.16.2.tar.xz 1298436 BLAKE2B 24fdbfc573d1a97e08fc159b91e24b77dd
 DIST fontconfig-2.17.1.tar.xz 1326312 BLAKE2B 6a25826efacd177c89613aa63b0c94312129af500fb0f5a24de3bb16146b68cc42e45d80b020096286f15b730e0cbf0e640d57024f57299caec4a31b6d178ba9 SHA512 c09c1f041f61ee0d220ff906a86b5c4b329106dc96f8c04b23f8fdeb480df626717fe3613bccb41cb39e86334078139322710377f5ddaa3abe48569e798161c9
 DIST fontconfig-2.18.1.tar.xz 1358564 BLAKE2B 57fc8c71e670081236e711bf1703ff2821ec4b823bbe51a5e3d3515d4dc3a696d946beaa546edb75562a0e8300db5683f60f38ed31069713601248264198ac27 SHA512 5d637a030625fa5b55399a2711b4dd48949429caae4b80503655bc7bd12b9a58cc278b520660845c9e93dcac4631ad5c36bf97793ac1af1b8f3131e7bd22077c
 DIST fontconfig-2.18.2.tar.xz 1347988 BLAKE2B 537f0f26a13dd967899becb331e303d5ff1d635c64488ca131d0847b2f2a364735f51a0ca9f5cef3e1d7dc7ead9409b1b6d52ad0546bafaeca4a7e46ca86716c SHA512 eba8f7fe5409159d6a9e0fd562dd3a7643da94b41fc0fdb2b742d5f4950ca2d6e636461352b2f148720653c83957373d28329ed20b50e7efd76ecfc60b2f3434
+DIST fontconfig-2.18.3.tar.xz 1172016 BLAKE2B 33b7d89e7f3d4c43cbd4129e75f9ff2ddd8358aa9e7a9bd72ee72fe64beacbf0ab7e7760c91bc35a77548ffcc367acf7280ea56f002c6d9afa3f0e286831d6b6 SHA512 c3e769f74dc21093ada48084bddaca1ab525b1c4f04c5c11f067b69346fab153cad95de8b8238b20b02e8b9679c314bf2e0e9c4218511d8fe0f1826e4c4c6a24

diff --git a/media-libs/fontconfig/fontconfig-2.18.3.ebuild b/media-libs/fontconfig/fontconfig-2.18.3.ebuild
new file mode 100644
index 000000000000..d686f6b26c1a
--- /dev/null
+++ b/media-libs/fontconfig/fontconfig-2.18.3.ebuild
@@ -0,0 +1,250 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..14} )
+inherit eapi9-ver multilib meson-multilib python-any-r1 readme.gentoo-r1
+
+DESCRIPTION="A library for configuring and customizing font access"
+HOMEPAGE="https://fontconfig.org/"
+SRC_URI="
+	https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/${PV}/${P}.tar.xz
+	https://fontconfig.org/release/${P}.tar.xz
+"
+
+LICENSE="MIT"
+SLOT="1.0"
+if ! [[ $(ver_cut 3) -ge 90 ]] ; then
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+fi
+IUSE="doc nls test"
+RESTRICT="!test? ( test )"
+
+# - Check minimum freetype & other deps on bumps. See
+#   https://gitlab.freedesktop.org/fontconfig/fontconfig/-/blob/main/configure.ac#L314.
+#   Note that FT versioning is confusing, need to map it using
+#   https://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT
+#   But sometimes it's actually greater than that, e.g. see Fedora's spec file
+#   https://src.fedoraproject.org/rpms/fontconfig/blob/rawhide/f/fontconfig.spec#_1
+#
+# - Purposefully dropped the xml USE flag and libxml2 support. Expat is the
+#   default and used by every distro. See bug #283191.
+#
+# - There's a test-only dep on json-c.
+#   It might become an optional(?) runtime dep in future though. Who knows.
+#   Keep an eye on it.
+RDEPEND="
+	>=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}]
+	>=media-libs/freetype-2.9.1[${MULTILIB_USEDEP}]
+	virtual/libintl[${MULTILIB_USEDEP}]
+	!elibc_Darwin? ( !elibc_SunOS? ( sys-apps/util-linux[${MULTILIB_USEDEP}] ) )
+	elibc_Darwin? ( sys-libs/native-uuid )
+	elibc_SunOS? ( sys-libs/libuuid )
+"
+DEPEND="
+	${RDEPEND}
+	test? ( dev-libs/json-c )
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	>=dev-build/meson-1.11.0
+	dev-util/gperf
+	virtual/pkgconfig
+	doc? (
+		=app-text/docbook-sgml-dtd-3.1*
+		app-text/docbook-sgml-utils[jadetex]
+	)
+	nls? ( >=sys-devel/gettext-0.19.8 )
+	test? (
+		$(python_gen_any_dep '
+			dev-python/pytest-tap[${PYTHON_USEDEP}]
+		')
+	)
+"
+PDEPEND="virtual/ttf-fonts"
+# We need app-eselect/eselect-fontconfig in IDEPEND to update ROOT
+# when cross-compiling.
+IDEPEND="app-eselect/eselect-fontconfig"
+
+PATCHES=(
+	# bug #130466 + make liberation default
+	"${FILESDIR}"/${PN}-2.14.0-latin-update.patch
+	# Fix build failure with -ggdb3
+	"${FILESDIR}"/${PN}-2.17.0-macro-preprocess.patch
+
+	# Patches from upstream (can usually be removed with next version bump)
+)
+
+DOC_CONTENTS="Please make fontconfig configuration changes using
+\`eselect fontconfig\`. Any changes made to /etc/fonts/fonts.conf will be
+overwritten. If you need to reset your configuration to upstream defaults,
+delete the directory ${EROOT}/etc/fonts/conf.d/ and re-emerge fontconfig."
+
+python_check_deps() {
+	use test || return 0
+
+	python_has_version "dev-python/pytest-tap[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+	default
+
+	# Test needs network access
+	# https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/319
+	# On bumps, please check to see if this has been fixed
+	# to allow local access!
+	sed -i -e '/test-crbug1004254/d' test/meson.build || die
+}
+
+multilib_src_configure() {
+	local addfonts=(
+		"${EPREFIX}"/usr/local/share/fonts
+	)
+
+	# Harvest some font locations, such that users can benefit from the
+	# host OS's installed fonts
+	case ${CHOST} in
+		*-darwin*)
+			addfonts+=(
+				/Library/Fonts
+				/System/Library/Fonts
+			)
+		;;
+
+		*-solaris*)
+			[[ -d /usr/X/lib/X11/fonts/TrueType ]] && \
+				addfonts+=( /usr/X/lib/X11/fonts/TrueType )
+			[[ -d /usr/X/lib/X11/fonts/Type1 ]] &&
+				addfonts+=( /usr/X/lib/X11/fonts/Type1 )
+		;;
+
+		*-linux-gnu)
+			use prefix && [[ -d /usr/share/fonts ]] && \
+				addfonts+=( /usr/share/fonts )
+		;;
+	esac
+
+	local emesonargs=(
+		# USE=doc only controls the additional bits like html/pdf
+		# and regeneration of man pages from source. We always install
+		# the prebuilt man pages.
+		$(meson_native_use_feature doc)
+		$(meson_native_use_feature doc doc-txt)
+		$(meson_native_use_feature doc doc-html)
+		$(meson_native_use_feature doc doc-man)
+		$(meson_native_use_feature doc doc-pdf)
+
+		$(meson_native_use_feature nls)
+		$(meson_feature test tests)
+		-Dtests-bwrap=disabled
+		-Dtests-external-fonts=disabled
+
+		-Dcache-build=disabled
+		-Dcache-dir="${EPREFIX}"/var/cache/fontconfig
+		-Ddefault-fonts-dirs="${EPREFIX}"/usr/share/fonts
+		-Dadditional-fonts-dirs=$(IFS=, ; echo "${addfonts[*]}" )
+		-Dtemplate-dir="${EPREFIX}"/etc/fonts/conf.avail
+		# TODO: Rust
+		-Dfontations=disabled
+		-Dxml-backend=expat
+
+		# Let users choose via eselect-fontconfig. See bug #900681
+		# and https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/356.
+		-Ddefault-sub-pixel-rendering=none
+	)
+
+	meson_src_configure
+}
+
+multilib_src_install() {
+	MULTILIB_CHOST_TOOLS=( /usr/bin/fc-cache$(get_exeext) )
+
+	meson_src_install
+
+	rm -rf "${ED}"/var/cache || die
+
+	# Avoid calling this multiple times, bug #459210
+	if multilib_is_native_abi; then
+		insinto /etc/fonts
+		doins fonts.conf
+	fi
+}
+
+multilib_src_install_all() {
+	einstalldocs
+
+	# fc-lang directory contains language coverage datafiles
+	# which are needed to test the coverage of fonts.
+	insinto /usr/share/fc-lang
+	doins fc-lang/*.orth
+
+	dodoc doc/fontconfig-user.{txt,pdf}
+
+	if ! use doc ; then
+		find "${S}" -name "*.[[:digit:]]" -type f -exec doman '{}' + || die
+	fi
+
+	if [[ -e ${ED}/usr/share/doc/fontconfig/ ]] ;  then
+		mv "${ED}"/usr/share/doc/fontconfig/* "${ED}"/usr/share/doc/${PF} || die
+		rm -rf "${ED}"/usr/share/doc/fontconfig || die
+	fi
+
+	# Changes should be made to /etc/fonts/local.conf, and as we had
+	# too much problems with broken fonts.conf we force update it ...
+	echo 'CONFIG_PROTECT_MASK="/etc/fonts/fonts.conf"' > "${T}"/37fontconfig || die
+	doenvd "${T}"/37fontconfig
+
+	# As of fontconfig 2.7, everything sticks their noses in here.
+	dodir /etc/sandbox.d
+	echo 'SANDBOX_PREDICT="/var/cache/fontconfig"' > "${ED}"/etc/sandbox.d/37fontconfig || die
+
+	readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+	# bug #193476
+	# /etc/fonts/conf.d/ contains symlinks to ../conf.avail/ to include various
+	# config files.  If we install as-is, we'll blow away user settings.
+	ebegin "Syncing fontconfig configuration to system"
+	if [[ -e ${EROOT}/etc/fonts/conf.d ]] ; then
+		local file f
+		for file in "${EROOT}"/etc/fonts/conf.avail/* ; do
+			f=${file##*/}
+			if [[ -L ${EROOT}/etc/fonts/conf.d/${f} ]] ; then
+				[[ -f ${ED}/etc/fonts/conf.avail/${f} ]] \
+					&& ln -sf ../conf.avail/"${f}" \
+						"${ED}"/etc/fonts/conf.d/ &>/dev/null
+			else
+				[[ -f ${ED}/etc/fonts/conf.avail/${f} ]] \
+					&& rm "${ED}"/etc/fonts/conf.d/"${f}" &>/dev/null
+			fi
+		done
+	fi
+	eend $?
+}
+
+pkg_postinst() {
+	einfo "Cleaning broken symlinks in ${EROOT}/etc/fonts/conf.d/"
+	find -L "${EROOT}"/etc/fonts/conf.d/ -type l -delete
+
+	readme.gentoo_print_elog
+
+	# 2.14.2 and 2.14.2-r1 included the bad 10-sub-pixel-none.conf
+	if ver_replacing -eq 2.14.2 || ver_replacing -eq 2.14.2-r1; then
+		if [[ -e "${EROOT}"/etc/fonts/conf.d/10-sub-pixel-none.conf ]] ; then
+			einfo "Deleting 10-sub-pixel-none.conf from bad fontconfig-2.14.2 (bug #900681)"
+			rm "${EROOT}"/etc/fonts/conf.d/10-sub-pixel-none.conf || die
+		fi
+	fi
+
+	if [[ -z ${ROOT} ]] ; then
+		multilib_pkg_postinst() {
+			ebegin "Creating global font cache for ${ABI}"
+			"${EPREFIX}"/usr/bin/${CHOST}-fc-cache -srf
+			eend $?
+		}
+
+		multilib_foreach_abi multilib_pkg_postinst
+	fi
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.