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() {
next prev 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).