[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#657565: xorg-server: please switch to the standard FontPath setup



On Fri, 2012-01-27 at 08:27 +0800, Paul Wise wrote:

> Now that x-ttcidfont-conf has been removed, Debian's custom FontPath
> serves no purpose, please remove it. I have attached a patch.

Here is a bonus patch to replace x-ttcidfont-conf with a separate
symlink farm maintained using triggers. It uses an IFS hack for a slight
speedup but you may prefer to use the sed version for readability.

-- 
bye,
pabs

http://wiki.debian.org/PaulWise
From 76e0a3ca842bd4e719f0049e6593a9324097fe6e Mon Sep 17 00:00:00 2001
From: Paul Wise <pabs@debian.org>
Date: Thu, 3 May 2012 12:57:16 +0800
Subject: [PATCH 2/2] Create a symlink farm of available fonts and use
 triggers to update it.

---
 debian/xserver-xorg-core.dirs     |    1 +
 debian/xserver-xorg-core.links    |    1 +
 debian/xserver-xorg-core.postinst |   52 +++++++++++++++++++++++++++++++++++++
 debian/xserver-xorg-core.postrm   |    1 +
 debian/xserver-xorg-core.triggers |    1 +
 5 files changed, 56 insertions(+)
 create mode 100644 debian/xserver-xorg-core.links
 create mode 100644 debian/xserver-xorg-core.postinst
 create mode 100644 debian/xserver-xorg-core.triggers

diff --git a/debian/xserver-xorg-core.dirs b/debian/xserver-xorg-core.dirs
index bd697ab..b7bff43 100644
--- a/debian/xserver-xorg-core.dirs
+++ b/debian/xserver-xorg-core.dirs
@@ -1 +1,2 @@
 etc/X11/fontpath.d
+var/lib/xserver-xorg-core/fonts
diff --git a/debian/xserver-xorg-core.links b/debian/xserver-xorg-core.links
new file mode 100644
index 0000000..8a2d336
--- /dev/null
+++ b/debian/xserver-xorg-core.links
@@ -0,0 +1 @@
+etc/X11/fontpath.d/system var/lib/xserver-xorg-core/fonts
diff --git a/debian/xserver-xorg-core.postinst b/debian/xserver-xorg-core.postinst
new file mode 100644
index 0000000..8423765
--- /dev/null
+++ b/debian/xserver-xorg-core.postinst
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+set -e
+
+# Paths
+fonts=/usr/share/fonts
+lnfarm=/var/lib/xserver-xorg/fonts
+
+update_font_symlink_farm ()
+{
+  # Create symlinks for relevant fonts
+  find "$fonts" -type f ! -wholename "$fonts/X11/*" |
+    while read filename ; do
+      # Strip fonts dir prefix
+      target="${filename#$fonts/}"
+      # Hack to replace / characters with _
+      ifs="$IFS"; IFS=/; set -- $target; IFS=_; target=$*; IFS="$ifs"
+      # Add the symlink farm dir prefix
+      target="$lnfarm/$target"
+      # Create a symlink if it is needed
+      ln -s "$filename" "$target" 2>/dev/null || true
+      # Alternative version that forks sed
+      #ln -s "$filename" "$lnfarm/$(echo "$filename" | sed "s_$fonts/__;s:/:_:g")" 2>/dev/null || true
+    done
+  # Delete broken symlinks
+  find -L "$lnfarm" -type l -delete 2>/dev/null || true
+}
+
+case "$1" in
+configure)
+  if [ -n "$(find "$lnfarm" -type d -empty 2>/dev/null)" ] ; then
+    update_font_symlink_farm
+  fi
+  ;;
+triggered)
+  for name in $2; do
+    case "$name" in
+    "$fonts")
+      update_font_symlink_farm
+      ;;
+    *)
+      echo "unhandled/unknown trigger!"
+      exit 1
+      ;;
+    esac
+  done
+  ;;
+esac
+
+#DEBHELPER#
+
+# vim:set ai et sts=2 sw=2 tw=0:
diff --git a/debian/xserver-xorg-core.postrm b/debian/xserver-xorg-core.postrm
index 0eb50b1..006d58a 100644
--- a/debian/xserver-xorg-core.postrm
+++ b/debian/xserver-xorg-core.postrm
@@ -6,6 +6,7 @@ case "$1" in
 purge)
   rm /var/log/Xorg.*.log || true
   rm /var/log/Xorg.*.log.old || true
+  find /var/lib/xserver-xorg/fonts/ -type l -delete || true
   ;;
 esac
 
diff --git a/debian/xserver-xorg-core.triggers b/debian/xserver-xorg-core.triggers
new file mode 100644
index 0000000..fc1e745
--- /dev/null
+++ b/debian/xserver-xorg-core.triggers
@@ -0,0 +1 @@
+interest /usr/share/fonts
-- 
1.7.10

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: