Github messages for voidlinux
 help / color / mirror / Atom feed
From: ahesford <ahesford@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] fontconfig: move default configuration to INSTALL/REMOVE
Date: Wed, 01 Sep 2021 21:28:02 +0200	[thread overview]
Message-ID: <20210901192802.i5Fv-s86wO3GE38vsTl1pdYCLLRtURcEtN-IQx_tRo0@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-32794@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 1094 bytes --]

There is an updated pull request by ahesford against master on the void-packages repository

https://github.com/ahesford/void-packages fontconfig
https://github.com/void-linux/void-packages/pull/32794

fontconfig: move default configuration to INSTALL/REMOVE
Encoding /etc/fonts/conf.d configuration symlinks in the package means that upgrades and installations will clobber existing custom configurations. In addition, removing any default configuration files would cause xbps-pkgdb to complain.

Managing default configurations in INSTALL/REMOVE allows custom configurations to persist through upgrades and removals. A guard file, /etc/fonts/conf.d/.autoconfig, serves as an INSTALL guard to prevent configuration modifications during upgrade. It also stores a list of the default configurations that will be removed when the package is uninstalled. This is an extension of an idea from @ericonr.

These scripts should mimic existing behavior through the first subsequent upgrade or installation.

A patch file from https://github.com/void-linux/void-packages/pull/32794.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-fontconfig-32794.patch --]
[-- Type: text/x-diff, Size: 7682 bytes --]

From d877e1e48d72e8ba3d632b8598d72f4f50b05195 Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Wed, 1 Sep 2021 12:06:34 -0400
Subject: [PATCH 1/2] fontconfig: move default configuration to INSTALL/REMOVE

Encoding /etc/fonts/conf.d configuration symlinks in the package means
that upgrades and installations will clobber existing custom
configurations. In addition, removing any default configuration files
would cause xbps-pkgdb to complain.

Managing default configurations in INSTALL/REMOVE allows custom
configurations to persist through upgrades and removals. A guard file,
/etc/fonts/conf.d/.autoconfig, serves as an INSTALL guard to prevent
configuration modifications during upgrade. It also stores a list of the
default configurations that will be removed when the package is
uninstalled. This is an extension of an idea from @ericonr.

These scripts should mimic existing behavior through the first
subsequent upgrade or installation.
---
 srcpkgs/fontconfig/INSTALL  | 37 ++++++++++++++++++++++++++++++++++++-
 srcpkgs/fontconfig/REMOVE   | 21 +++++++++++++++++++++
 srcpkgs/fontconfig/template |  8 ++++++--
 3 files changed, 63 insertions(+), 3 deletions(-)
 create mode 100644 srcpkgs/fontconfig/REMOVE

diff --git a/srcpkgs/fontconfig/INSTALL b/srcpkgs/fontconfig/INSTALL
index 1daa9b2a8f57..4b6f93653b93 100644
--- a/srcpkgs/fontconfig/INSTALL
+++ b/srcpkgs/fontconfig/INSTALL
@@ -1,10 +1,45 @@
 #
-# This script builds fontconfig's fonts cache.
+# This script establishes a default config and builds the font cache
 #
 case "${ACTION}" in
 pre)
 	;;
 post)
+	if [ ! -e etc/fonts/conf.d/.autoconfig ]; then
+		echo "Setting default font configuration"
+		: > etc/fonts/conf.d/.autoconfig
+
+		_defconfigs="
+		 10-hinting-slight.conf
+		 10-scale-bitmap-fonts.conf
+		 20-unhint-small-vera.conf
+		 30-metric-aliases.conf
+		 40-nonlatin.conf
+		 45-generic.conf
+		 45-latin.conf
+		 49-sansserif.conf
+		 50-user.conf
+		 51-local.conf
+		 60-generic.conf
+		 60-latin.conf
+		 65-fonts-persian.conf
+		 65-nonlatin.conf
+		 69-unifont.conf
+		 80-delicious.conf
+		 90-synthetic.conf
+		"
+
+		for _f in $_defconfigs; do
+			_fsrc="usr/share/fontconfig/conf.avail/$_f"
+			[ -e "$_fsrc" ] || continue
+
+			ln -s "/$_fsrc" etc/fonts/conf.d
+			echo "$_f" >> etc/fonts/conf.d/.autoconfig
+		done
+
+		unset _f _fsrc _defconfigs
+	fi
+
 	echo "Building fonts cache... "
 	fc-cache -f >/dev/null
 	echo "done."
diff --git a/srcpkgs/fontconfig/REMOVE b/srcpkgs/fontconfig/REMOVE
new file mode 100644
index 000000000000..3f8d3b47bb1c
--- /dev/null
+++ b/srcpkgs/fontconfig/REMOVE
@@ -0,0 +1,21 @@
+#
+# This script removes any default configuration established by INSTALL
+#
+case "${ACTION}" in
+pre)
+	if [ -r etc/fonts/conf.d/.autoconfig ]; then
+		echo "Removing default font configuration"
+
+		while read -r _f; do
+			_fsrc="etc/fonts/conf.d/$_f"
+			[ -L "$_fsrc" ] && rm "$_fsrc"
+		done < etc/fonts/conf.d/.autoconfig
+
+		rm -f etc/fonts/conf.d/.autoconfig
+
+		unset _f _fsrc
+	fi
+	;;
+post)
+	;;
+esac
diff --git a/srcpkgs/fontconfig/template b/srcpkgs/fontconfig/template
index 89c0cf5ea240..132d5c9a350b 100644
--- a/srcpkgs/fontconfig/template
+++ b/srcpkgs/fontconfig/template
@@ -1,7 +1,7 @@
 # Template file for 'fontconfig'
 pkgname=fontconfig
 version=2.13.1
-revision=3
+revision=4
 build_style=gnu-configure
 configure_args="--enable-static --enable-docs --with-cache-dir=/var/cache/${pkgname}"
 hostmakedepends="gperf pkg-config"
@@ -21,9 +21,13 @@ pre_build() {
 
 post_install() {
 	if [ "$CROSS_BUILD" ]; then
-		sed -i 's,\(Cflags: -I${includedir}\).*,\1,g' ${DESTDIR}/usr/lib/pkgconfig/fontconfig.pc
+		sed -i 's,\(Cflags: -I${includedir}\).*,\1,g' "${DESTDIR}"/usr/lib/pkgconfig/fontconfig.pc
 	fi
+
 	vlicense COPYING
+
+	# Default configuration is managed in INSTALL/REMOVE
+	rm -f "${DESTDIR}"/etc/fonts/conf.d/*.conf
 }
 
 fontconfig-devel_package() {

From f5ef683d3809666ff633c9b7bde364b7812f4ccf Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Wed, 1 Sep 2021 15:27:54 -0400
Subject: [PATCH 2/2] fontconfig: manage default configuration in template

---
 srcpkgs/fontconfig/INSTALL  | 41 ++++++++++---------------------------
 srcpkgs/fontconfig/REMOVE   | 15 +++++++-------
 srcpkgs/fontconfig/template | 16 ++++++++++++---
 3 files changed, 32 insertions(+), 40 deletions(-)

diff --git a/srcpkgs/fontconfig/INSTALL b/srcpkgs/fontconfig/INSTALL
index 4b6f93653b93..2879e698dbbc 100644
--- a/srcpkgs/fontconfig/INSTALL
+++ b/srcpkgs/fontconfig/INSTALL
@@ -5,40 +5,21 @@ case "${ACTION}" in
 pre)
 	;;
 post)
-	if [ ! -e etc/fonts/conf.d/.autoconfig ]; then
-		echo "Setting default font configuration"
-		: > etc/fonts/conf.d/.autoconfig
+	_confd="etc/fonts/conf.d"
+	if [ ! -e "${_confd}/.xbps-configured" ] && [ -r "${_confd}/.defconfigs" ]; then
+		echo "Setting default font configuration..."
 
-		_defconfigs="
-		 10-hinting-slight.conf
-		 10-scale-bitmap-fonts.conf
-		 20-unhint-small-vera.conf
-		 30-metric-aliases.conf
-		 40-nonlatin.conf
-		 45-generic.conf
-		 45-latin.conf
-		 49-sansserif.conf
-		 50-user.conf
-		 51-local.conf
-		 60-generic.conf
-		 60-latin.conf
-		 65-fonts-persian.conf
-		 65-nonlatin.conf
-		 69-unifont.conf
-		 80-delicious.conf
-		 90-synthetic.conf
-		"
+		while read -r _f; do
+			_fsrc="usr/share/fontconfig/conf.avail/${_f}"
+			[ -e "${_fsrc}" ] || continue
 
-		for _f in $_defconfigs; do
-			_fsrc="usr/share/fontconfig/conf.avail/$_f"
-			[ -e "$_fsrc" ] || continue
+			[ -e "${_confd}/${_f}" ] || ln -s "/${_fsrc}" "${_confd}/${_f}"
+		done < "${_confd}/.defconfigs"
 
-			ln -s "/$_fsrc" etc/fonts/conf.d
-			echo "$_f" >> etc/fonts/conf.d/.autoconfig
-		done
-
-		unset _f _fsrc _defconfigs
+		: > etc/fonts/conf.d/.xbps-configured
+		unset _f _fsrc
 	fi
+	unset _confd
 
 	echo "Building fonts cache... "
 	fc-cache -f >/dev/null
diff --git a/srcpkgs/fontconfig/REMOVE b/srcpkgs/fontconfig/REMOVE
index 3f8d3b47bb1c..ec83813b319e 100644
--- a/srcpkgs/fontconfig/REMOVE
+++ b/srcpkgs/fontconfig/REMOVE
@@ -3,18 +3,19 @@
 #
 case "${ACTION}" in
 pre)
-	if [ -r etc/fonts/conf.d/.autoconfig ]; then
-		echo "Removing default font configuration"
+	_confd="etc/fonts/conf.d"
+	if [ -e "${_confd}/.xbps-configured" ] && [ -r "${_confd}/.defconfigs" ]; then
+		echo "Removing default font configuration..."
 
 		while read -r _f; do
-			_fsrc="etc/fonts/conf.d/$_f"
-			[ -L "$_fsrc" ] && rm "$_fsrc"
-		done < etc/fonts/conf.d/.autoconfig
-
-		rm -f etc/fonts/conf.d/.autoconfig
+			_fsrc="${_confd}/${_f}"
+			[ -L "${_fsrc}" ] && rm "${_fsrc}"
+		done < "${_confd}/.defconfigs"
 
+		rm -f "${_confd}/.xbps-configured"
 		unset _f _fsrc
 	fi
+	unset _confd
 	;;
 post)
 	;;
diff --git a/srcpkgs/fontconfig/template b/srcpkgs/fontconfig/template
index 132d5c9a350b..3848e8d2f0c4 100644
--- a/srcpkgs/fontconfig/template
+++ b/srcpkgs/fontconfig/template
@@ -21,13 +21,23 @@ pre_build() {
 
 post_install() {
 	if [ "$CROSS_BUILD" ]; then
-		sed -i 's,\(Cflags: -I${includedir}\).*,\1,g' "${DESTDIR}"/usr/lib/pkgconfig/fontconfig.pc
+		sed -i 's,\(Cflags: -I${includedir}\).*,\1,g' "${DESTDIR}/usr/lib/pkgconfig/fontconfig.pc"
 	fi
 
 	vlicense COPYING
 
-	# Default configuration is managed in INSTALL/REMOVE
-	rm -f "${DESTDIR}"/etc/fonts/conf.d/*.conf
+	# Default configuration links are managed in INSTALL/REMOVE
+
+	local _confd="${DESTDIR}/etc/fonts/conf.d" _f= _fb=
+
+	: > "${_confd}/.defconfigs"
+	for _f in "${_confd}"/*.conf; do
+		[ "${_f}" = "${_confd}/*.conf" ] && continue
+		_fb="${_f##*/}"
+		echo "${_fb}" >> "${_confd}/.defconfigs"
+	done
+
+	rm -f "${_confd}"/*.conf
 }
 
 fontconfig-devel_package() {

  parent reply	other threads:[~2021-09-01 19:28 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01 16:16 [PR PATCH] " ahesford
2021-09-01 16:29 ` Chocimier
2021-09-01 17:03 ` ahesford
2021-09-01 18:39 ` [PR REVIEW] " ericonr
2021-09-01 19:28 ` ahesford [this message]
2021-09-01 19:28 ` ahesford
2022-06-05  2:14 ` github-actions
2022-10-11 17:48 ` [PR PATCH] [Closed]: " ahesford
2022-10-11 17:51 ` ahesford

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210901192802.i5Fv-s86wO3GE38vsTl1pdYCLLRtURcEtN-IQx_tRo0@z \
    --to=ahesford@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).