[RFC] incremental rebase

Ken Brown kbrown@cornell.edu
Fri Nov 28 21:36:00 GMT 2014


On 11/24/2014 3:19 PM, Ken Brown wrote:
> And I'll make some TeX Live postinstall scripts to test it with.

I've done this now.  For a complete TeX Live install (including all 68 
texlive-collection-* packages), the postinstall time was reduced from 48 
minutes to 15 minutes on my system.

For anyone interested in the details, I'm attaching my two perpetual 
postinstall scripts, as well as some patches to cygport that were needed.

The first two cygport patches have nothing to do with perpetual 
postinstall scripts.  The second one, in particular, is responsible for 
part of the speedup and should have been done long ago.

Ken
-------------- next part --------------
>From cb74207fde628fa80919dc870a2de4fa2d66f0af Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Tue, 25 Nov 2014 09:27:52 -0500
Subject: [PATCH 1/5] prep_texlive: remove references to /usr/share/texmf

This is no longer used as of TeX Live 2013.
---
 lib/src_postinst.cygpart | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index dab3dff..6d44b91 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -371,7 +371,7 @@ __prep_texlive() {
 		_EOF
 	fi
 
-	for d in /usr/share/texmf{-dist,}/fonts/{opentype,truetype,type1}
+	for d in /usr/share/texmf-dist/fonts/{opentype,truetype,type1}
 	do
 		if [ -d ${D}${d} ]
 		then
@@ -655,7 +655,7 @@ __prepetc() {
 		__prep_freedesktop_mime || error "Shared Mime Info postinstall failed"
 	fi
 
-	for d in /usr/share/texmf{,-dist}
+	for d in /usr/share/texmf-dist
 	do
 		if [ -d ${D}${d} ]
 		then
-- 
2.1.1

-------------- next part --------------
>From 2137f63aa5b8cf65a2f68cd9e36c4f9a21b159f7 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Fri, 28 Nov 2014 10:47:49 -0500
Subject: [PATCH 2/5] prep_texlive: group enable/disable commands into one
 invocation of updmap

---
 lib/src_postinst.cygpart | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index 6d44b91..33356d4 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -339,15 +339,23 @@ __prep_texlive() {
 
 	if [ -n "${maps#0}" ]
 	then
+		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
+			/usr/bin/updmap-sys --nohash --nomkmap \\
+		_EOF
+		cat >> ${D}/etc/preremove/${PN}.sh <<-_EOF
+			/usr/bin/updmap-sys --nohash --nomkmap \\
+		_EOF
 		for map in $maps
 		do
 			cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
-				/usr/bin/updmap-sys --nohash --nomkmap --enable $map
+				--enable $map \\
 			_EOF
 			cat >> ${D}/etc/preremove/${PN}.sh <<-_EOF
-				/usr/bin/updmap-sys --nohash --nomkmap --disable ${map#*=}
+				--disable ${map#*=} \\
 			_EOF
 		done
+		echo >> ${D}/etc/postinstall/${PN}.sh
+		echo >> ${D}/etc/preremove/${PN}.sh
 		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
 			/usr/bin/updmap-sys --nohash --syncwithtrees
 			/usr/bin/updmap-sys --nohash
-- 
2.1.1

-------------- next part --------------
>From 08369c85b5276e50d941a16b33791d453a15f837 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Wed, 26 Nov 2014 07:35:13 -0500
Subject: [PATCH 3/5] prep_texlive: remove calls to mktexlsr

Leave marker file to indicate that mktexlsr should be run by a
perpetual postinstall script.
---
 lib/src_postinst.cygpart | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index 33356d4..9bb57f1 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -330,9 +330,8 @@ __prep_texlive() {
 
 	dodir /etc/postinstall /etc/preremove
 
-	cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
-		/usr/bin/mktexlsr
-	_EOF
+	insinto /etc/texmf/postinstall
+	newins /dev/null run_mktexlsr
 
 	fmts=$(__config_get texlive_fmts)
 	maps=$(__config_get texlive_maps)
@@ -359,7 +358,6 @@ __prep_texlive() {
 		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
 			/usr/bin/updmap-sys --nohash --syncwithtrees
 			/usr/bin/updmap-sys --nohash
-			/usr/bin/mktexlsr
 		_EOF
 	fi
 	if [ -n "${fmts#0}" ]
@@ -374,9 +372,6 @@ __prep_texlive() {
 				/usr/bin/fmtutil-sys --disablefmt $fmt
 			_EOF
 		done
-		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
-			/usr/bin/mktexlsr
-		_EOF
 	fi
 
 	for d in /usr/share/texmf-dist/fonts/{opentype,truetype,type1}
-- 
2.1.1

-------------- next part --------------
>From cd02204513b05f9dc506807d9cad89c428e92efa Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Wed, 26 Nov 2014 07:47:38 -0500
Subject: [PATCH 4/5] prep_texlive: remove updmap calls except for
 enable/disable commands

Leave marker file to indicate that updmap should be run by a perpetual
postinstall script.
---
 lib/src_postinst.cygpart | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index 9bb57f1..31e08a7 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -338,6 +338,7 @@ __prep_texlive() {
 
 	if [ -n "${maps#0}" ]
 	then
+		newins /dev/null run_updmap
 		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
 			/usr/bin/updmap-sys --nohash --nomkmap \\
 		_EOF
@@ -355,10 +356,6 @@ __prep_texlive() {
 		done
 		echo >> ${D}/etc/postinstall/${PN}.sh
 		echo >> ${D}/etc/preremove/${PN}.sh
-		cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
-			/usr/bin/updmap-sys --nohash --syncwithtrees
-			/usr/bin/updmap-sys --nohash
-		_EOF
 	fi
 	if [ -n "${fmts#0}" ]
 	then
-- 
2.1.1

-------------- next part --------------
>From e5ceb5a6ce182285495396f8cc6483b34b9d8902 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Wed, 26 Nov 2014 07:53:29 -0500
Subject: [PATCH 5/5] prep_texlive: remove calls to fc-cache

Leave a marker file to indicate that fc-cache should be run by a
perpetual postinstall script.
---
 lib/src_postinst.cygpart | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index 31e08a7..df5607d 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -371,13 +371,11 @@ __prep_texlive() {
 		done
 	fi
 
-	for d in /usr/share/texmf-dist/fonts/{opentype,truetype,type1}
+	for d in opentype truetype type1
 	do
-		if [ -d ${D}${d} ]
+		if [ -d ${D}/usr/share/texmf-dist/fonts/${d} ]
 		then
-			cat >> ${D}/etc/postinstall/${PN}.sh <<-_EOF
-				/usr/bin/fc-cache -f $d
-			_EOF
+			newins /dev/null run_fc_cache_${d}
 		fi
 	done
 }
-- 
2.1.1

-------------- next part --------------
postinstalldir=/etc/texmf/postinstall

if [ -f ${postinstalldir}/run_mktexlsr ]
then
    /usr/bin/mktexlsr
    /etc/texmf/web2c/20140523-1-update_fmtutil_cnf
    mv -f ${postinstalldir}/run_mktexlsr ${postinstalldir}/run_mktexlsr.done
fi

if [ -f ${postinstalldir}/refresh_fmts ]
then
    /usr/bin/fmtutil-sys --refresh
    mv -f ${postinstalldir}/refresh_fmts ${postinstalldir}/refresh_fmts.done
fi
-------------- next part --------------
postinstalldir=/etc/texmf/postinstall

if [ -f ${postinstalldir}/run_updmap ]
then
    echo y | /usr/bin/updmap-sys --syncwithtrees
    /usr/bin/updmap-sys
    mv -f ${postinstalldir}/run_updmap ${postinstalldir}/run_updmap.done
fi

for d in opentype type1 truetype
do
  if [ -f ${postinstalldir}/run_fc_cache_${d} ]
  then
    /usr/bin/fc-cache -f /usr/share/texmf-dist/fonts/${d}
    mv -f ${postinstalldir}/run_fc_cache_${d} \
       ${postinstalldir}/run_fc_cache_${d}.done
  fi
done


More information about the Cygwin-apps mailing list