From 3d1ba7339119f92ee85293d7c5961148f3bf3626 Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Sat, 6 Jun 2015 03:37:07 +0800 Subject: [PATCH] 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 deletion(-) create mode 100644 triggers/texinfo-dir.trigger diff --git a/jhbuild/modtypes/__init__.py b/jhbuild/modtypes/__init__.py index 8aee702f0..6b8cd26d5 100644 --- a/jhbuild/modtypes/__init__.py +++ b/jhbuild/modtypes/__init__.py @@ -234,6 +234,20 @@ def _clean_la_files(self, buildscript, installroot): 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 @@ def process_install(self, buildscript, revision): 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 f6d4a5649..303d40f31 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 000000000..4b2acae7b --- /dev/null +++ b/triggers/texinfo-dir.trigger @@ -0,0 +1,26 @@ +# Post-installation hook for GNU Texinfo. -*- mode: sh -*- +# +# Written by Ting-Wei Lan +# +# 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