[gdk-pixbuf] meson: Build pixbuf thumbnailer



commit 5571ecd6a82b3d56c4a107f2c2bda0c14d67cb6f
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed Aug 2 12:53:14 2017 +0100

    meson: Build pixbuf thumbnailer
    
    We need to go through an intermediate script in order to generate the
    thumbnailer's desktop file.

 meson.build                    |    2 +
 thumbnailer/gen-thumbnailer.py |   43 ++++++++++++++++++++++++++++++++++++++++
 thumbnailer/meson.build        |   34 +++++++++++++++++++++++++++++++
 3 files changed, 79 insertions(+), 0 deletions(-)
---
diff --git a/meson.build b/meson.build
index e5b9e50..77757be 100644
--- a/meson.build
+++ b/meson.build
@@ -42,6 +42,7 @@ libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
 # Paths
 gdk_pixbuf_prefix = get_option('prefix')
 gdk_pixbuf_libdir = join_paths(gdk_pixbuf_prefix, get_option('libdir'))
+gdk_pixbuf_bindir = join_paths(gdk_pixbuf_prefix, get_option('bindir'))
 gdk_pixbuf_includedir = join_paths(gdk_pixbuf_prefix, get_option('includedir'))
 gdk_pixbuf_datadir = join_paths(gdk_pixbuf_prefix, get_option('datadir'))
 gdk_pixbuf_mandir = join_paths(gdk_pixbuf_prefix, get_option('mandir'))
@@ -294,6 +295,7 @@ endif
 subdir('po')
 
 subdir('tests')
+subdir('thumbnailer')
 
 # Documentation
 subdir('docs/reference/gdk-pixbuf')
diff --git a/thumbnailer/gen-thumbnailer.py b/thumbnailer/gen-thumbnailer.py
new file mode 100644
index 0000000..9994043
--- /dev/null
+++ b/thumbnailer/gen-thumbnailer.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+
+# Ancillary wrapper around gdk-pixbuf-print-mime-types that sets up a
+# modified environment in order to use the tools that we just built
+# instead of the system ones
+
+import argparse
+import os
+import subprocess
+import sys
+
+argparser = argparse.ArgumentParser(description='Compile resources')
+argparser.add_argument('--printer', metavar='PATH', help='Path to gdk-pixbuf-print-mime-types')
+argparser.add_argument('--pixdata', metavar='PATH', help='Path to gdk-pixbuf-pixdata')
+argparser.add_argument('--loaders', metavar='PATH', help='Path to the loaders.cache file')
+argparser.add_argument('--bindir', metavar='PATH', help='Path to the source directory')
+argparser.add_argument('input', help='Template file')
+argparser.add_argument('output', help='Output file')
+
+args = argparser.parse_args()
+
+newenv = os.environ.copy()
+newenv['GDK_PIXBUF_PIXDATA'] = args.pixdata
+newenv['GDK_PIXBUF_MODULE_FILE'] = args.loaders
+
+cmd = args.printer
+
+mimetypes_out = subprocess.Popen(cmd, env=newenv, stdout=subprocess.PIPE).communicate()[0]
+if not mimetypes_out:
+    sys.exit(1)
+
+infile = open(args.input, 'r')
+outfile = open(args.output, 'w')
+
+for line in infile:
+    line = line.replace('@bindir@', args.bindir)
+    line = line.replace('@mimetypes@', mimetypes_out.decode('ascii'))
+    outfile.write(line)
+
+infile.close()
+outfile.close()
+
+sys.exit(0)
diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
new file mode 100644
index 0000000..6a2fd2a
--- /dev/null
+++ b/thumbnailer/meson.build
@@ -0,0 +1,34 @@
+executable('gdk-pixbuf-thumbnailer',
+           [ 'gdk-pixbuf-thumbnailer.c', 'gnome-thumbnailer-skeleton.c' ],
+           c_args: common_cflags + [
+             '-DTHUMBNAILER_RETURNS_PIXBUF',
+             '-DTHUMBNAILER_USAGE="Thumbnail images"',
+           ],
+           dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ],
+           install: true)
+
+gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
+                                         'gdk-pixbuf-print-mime-types.c',
+                                         c_args: common_cflags,
+                                         dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
+
+gen_thumbnailer = find_program('gen-thumbnailer.py')
+custom_target('thumbnailer',
+              input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
+              output: 'gdk-pixbuf-thumbnailer.thumbnailer',
+              command: [
+                gen_thumbnailer,
+                '--printer=@0@'.format(gdk_pixbuf_print_mime_types.full_path()),
+                '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
+                '--loaders=@0@'.format(loaders_cache.full_path()),
+                '--bindir=@0@'.format(gdk_pixbuf_bindir),
+                '@INPUT@',
+                '@OUTPUT@',
+              ],
+              depends: [
+                gdk_pixbuf_print_mime_types,
+                gdk_pixbuf_pixdata,
+                loaders_cache,
+              ],
+              install: true,
+              install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))


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