[jhbuild] Delete GNU Texinfo dir file and handle it with a trigger



commit 3d1ba7339119f92ee85293d7c5961148f3bf3626
Author: Ting-Wei Lan <lantw src gnome org>
Date:   Sat Jun 6 03:37:07 2015 +0800

    Delete GNU Texinfo dir file and handle it with a trigger
    
    Modules with GNU Texinfo documentation creates new dir files during
    'make install', which causes the installed dir file to be replaced with
    the newly generated dir file with only one entry. To make GNU Texinfo
    usable in JHBuild, we delete the dir file in DESTDIR and handle it
    with a new trigger.
    
    It is possible to have unavailable entries in the dir file because
    triggers are not run when uninstalling modules. It will be fixed if
    'jhbuild postinst' is run or other modules with Texinfo documentation
    are successfully built.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=750484

 jhbuild/modtypes/__init__.py |   15 +++++++++++++++
 triggers/Makefile.am         |    3 ++-
 triggers/texinfo-dir.trigger |   26 ++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/jhbuild/modtypes/__init__.py b/jhbuild/modtypes/__init__.py
index 8aee702..6b8cd26 100644
--- a/jhbuild/modtypes/__init__.py
+++ b/jhbuild/modtypes/__init__.py
@@ -234,6 +234,20 @@ class Package:
         if os.path.isdir(prefixdir):
             self._clean_la_files_in_dir(self, prefixdir)
 
+    def _clean_texinfo_dir_files(self, buildscript, installroot):
+        """This method removes GNU Texinfo dir files."""
+        assert os.path.isabs(installroot)
+        assert os.path.isabs(buildscript.config.prefix)
+        prefixdir = os.path.join(installroot, buildscript.config.prefix[1:])
+        if os.path.isdir(prefixdir):
+            dirfile = os.path.join(prefixdir, 'share/info/dir')
+            if os.path.isfile(dirfile):
+                try:
+                    logging.info(_('Deleting dir file: %r') % (dirfile, ))
+                    os.unlink(dirfile)
+                except OSError:
+                    pass
+
     def _process_install_files(self, installroot, curdir, prefix, errors):
         """Strip the prefix from all files in the install root, and move
 them into the prefix."""
@@ -287,6 +301,7 @@ them into the prefix."""
         assert self.supports_install_destdir
         destdir = self.get_destdir(buildscript)
         self._clean_la_files(buildscript, destdir)
+        self._clean_texinfo_dir_files(buildscript, destdir)
 
         prefix_without_drive = os.path.splitdrive(buildscript.config.prefix)[1]
         stripped_prefix = prefix_without_drive[1:]
diff --git a/triggers/Makefile.am b/triggers/Makefile.am
index f6d4a56..303d40f 100644
--- a/triggers/Makefile.am
+++ b/triggers/Makefile.am
@@ -6,6 +6,7 @@ trigger_DATA = \
        pango.trigger \
        desktop-database.trigger \
        mime-database.trigger \
-       immodules.trigger
+       immodules.trigger \
+       texinfo-dir.trigger
 
 EXTRA_DIST = $(trigger_DATA)
diff --git a/triggers/texinfo-dir.trigger b/triggers/texinfo-dir.trigger
new file mode 100644
index 0000000..4b2acae
--- /dev/null
+++ b/triggers/texinfo-dir.trigger
@@ -0,0 +1,26 @@
+# Post-installation hook for GNU Texinfo.  -*- mode: sh -*-
+#
+# Written by Ting-Wei Lan <lantw src gnome org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# IfExecutable: install-info
+# REMatch: ^share/info/.*\.info
+
+rm -f $JHBUILD_PREFIX/share/info/dir-new
+for info in $JHBUILD_PREFIX/share/info/*.info; do
+  install-info $info $JHBUILD_PREFIX/share/info/dir-new
+done
+mv $JHBUILD_PREFIX/share/info/dir-new $JHBUILD_PREFIX/share/info/dir


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