From e24e0dd8a551e310e730a9b38ec66471b27c3f8a Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Fri, 22 Mar 2019 17:31:02 +0800 Subject: [PATCH] meson: Make post-install script a Python script This is so that the post install script will work on environments where *NIX shell scripts are not supported, such as on Windows cmd.exe for Visual Studio builds. --- build-aux/meson/post-install.py | 36 +++++++++++++++++++++++++++++++++ build-aux/meson/post-install.sh | 26 ------------------------ meson.build | 5 +++-- 3 files changed, 39 insertions(+), 28 deletions(-) create mode 100644 build-aux/meson/post-install.py delete mode 100755 build-aux/meson/post-install.sh diff --git a/build-aux/meson/post-install.py b/build-aux/meson/post-install.py new file mode 100644 index 0000000000..f526bc81bf --- /dev/null +++ b/build-aux/meson/post-install.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +import os +import sys +import subprocess + +if 'DESTDIR' not in os.environ: + gtk_api_version = sys.argv[1] + gtk_abi_version = sys.argv[2] + gtk_bindir = sys.argv[3] + gtk_libdir = sys.argv[4] + gtk_datadir = sys.argv[5] + gtk_query_immodules = os.path.join(gtk_bindir, 'gtk-query-immodules-' + gtk_api_version) + + gtk_moduledir = os.path.join(gtk_libdir, 'gtk-' + gtk_api_version, gtk_abi_version) + gtk_immodule_dir = os.path.join(gtk_moduledir, 'immodules') + gtk_printmodule_dir = os.path.join(gtk_moduledir, 'printbackends') + + print('Compiling GSettings schemas...') + subprocess.call(['glib-compile-schemas', + os.path.join(gtk_datadir, 'glib-2.0', 'schemas')]) + + print('Updating icon cache...') + subprocess.call(['gtk-update-icon-cache', '-q', '-t' ,'-f', + os.path.join(gtk_datadir, 'icons', 'hicolor')]) + + print('Updating module cache for input methods...') + os.makedirs(gtk_immodule_dir, exist_ok=True) + immodule_cache_file = open(os.path.join(gtk_moduledir, 'immodules.cache'), 'w') + subprocess.call([gtk_query_immodules], stdout=immodule_cache_file) + immodule_cache_file.close() + + # Untested! + print('Updating module cache for print backends...') + os.makedirs(gtk_printmodule_dir, exist_ok=True) + subprocess.call(['gio-querymodules', gtk_printmodule_dir]) diff --git a/build-aux/meson/post-install.sh b/build-aux/meson/post-install.sh deleted file mode 100755 index 3471336bdb..0000000000 --- a/build-aux/meson/post-install.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -gtk_api_version=$1 -gtk_abi_version=$2 -gtk_libdir=$3 -gtk_datadir=$4 - -# Package managers set this so we don't need to run -if [ -z "$DESTDIR" ]; then - echo Compiling GSettings schemas... - glib-compile-schemas ${gtk_datadir}/glib-2.0/schemas - - echo Updating desktop database... - update-desktop-database -q ${gtk_datadir}/applications - - echo Updating icon cache... - gtk-update-icon-cache -q -t -f ${gtk_datadir}/icons/hicolor - - echo Updating module cache for print backends... - mkdir -p ${gtk_libdir}/gtk-3.0/3.0.0/printbackends - gio-querymodules ${gtk_libdir}/gtk-3.0/3.0.0/printbackends - - echo Updating module cache for input methods... - mkdir -p ${gtk_libdir}/gtk-3.0/3.0.0/immodules - gio-querymodules ${gtk_libdir}/gtk-3.0/3.0.0/immodules -fi diff --git a/meson.build b/meson.build index 4b902f276e..167689ec85 100644 --- a/meson.build +++ b/meson.build @@ -749,10 +749,11 @@ endif # subdir('docs/reference') #endif -# Keep this in sync with post-install.sh expected arguments -meson.add_install_script('build-aux/meson/post-install.sh', +# Keep this in sync with post-install.py expected arguments +meson.add_install_script('build-aux/meson/post-install.py', gtk_api_version, gtk_binary_version, + join_paths(gtk_prefix, get_option('bindir')), gtk_libdir, gtk_datadir)