summaryrefslogtreecommitdiff
path: root/thumbnailer
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2017-08-02 12:53:14 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2017-08-02 12:53:14 +0100
commit5571ecd6a82b3d56c4a107f2c2bda0c14d67cb6f (patch)
tree0aa20fb8fe0cb6441f985a9beeae53a7ea81e865 /thumbnailer
parent5d71d7fc50e6508825580385f3830a7f725959c0 (diff)
downloadgdk-pixbuf-5571ecd6a82b3d56c4a107f2c2bda0c14d67cb6f.tar.gz
meson: Build pixbuf thumbnailer
We need to go through an intermediate script in order to generate the thumbnailer's desktop file.
Diffstat (limited to 'thumbnailer')
-rw-r--r--thumbnailer/gen-thumbnailer.py43
-rw-r--r--thumbnailer/meson.build34
2 files changed, 77 insertions, 0 deletions
diff --git a/thumbnailer/gen-thumbnailer.py b/thumbnailer/gen-thumbnailer.py
new file mode 100644
index 000000000..9994043f9
--- /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 000000000..6a2fd2ac5
--- /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'))