+++ /dev/null
-diff --git Changelog Changelog
-index 07dfe16..47bbfef 100644
---- Changelog
-+++ Changelog
-@@ -1,5 +1,21 @@
- Changes in version 0.7.4:
-
-+ - Release gtk-mac-bundler 0.7.4 (John Ralls)
-+ - Make sure to check for .symbolic icon extension (Jesse van den Kieboom)
-+ - Fix pixbuf loader cache path (Jesse van den Kieboom)
-+ - Make sure that libraries are writeable before using otool. (Julien Woillez)
-+ - Update doap to reflect correct bug tracker. (John Ralls)
-+ - Bug 698196: Fix typo (John Ralls)
-+ - Bug #698916: Update versions, fix pixbuf (John Ralls)
-+ - Update all launchers to reflect new pango environment variables (John Ralls)
-+ - launcher: Update for pango changes (Dave Vasilevsky)
-+ - Correct gdk-pixbuf path in the pygtk example (John Ralls)
-+ - Bring example bundle files and launchers up to date (John Ralls)
-+ - The *correct* fix for pango modules. (John Ralls)
-+ - Fix another typo in pango module path (John Ralls)
-+
-+Changes in version 0.7.4:
-+
- - Make sure to check for .symbolic icon extension (Jesse van den Kieboom)
- - Fix pixbuf loader cache path (Jesse van den Kieboom)
- - Make sure that libraries are writeable before using otool. (Julien Woillez)
-diff --git bundler/bundler.py bundler/bundler.py
-index 8061ac1..65b8cc0 100644
---- bundler/bundler.py
-+++ bundler/bundler.py
-@@ -1,12 +1,12 @@
- import sys
- import os, errno, glob
--import dircache, shutil
-+import shutil
- import re
- from plistlib import Plist
- from distutils import dir_util, file_util
-
--from project import *
--import utils
-+from .project import *
-+from . import utils
-
- class Bundler:
- def __init__(self, project):
-@@ -32,13 +32,13 @@ class Bundler:
- def recursive_rm(self, dirname):
- # Extra safety ;)
- if dirname in [ "/", os.getenv("HOME"), os.path.join(os.getenv("HOME"), "Desktop"), self.meta.dest ]:
-- print "Eek, trying to remove a bit much, eh? (%s)" % (dirname)
-+ print("Eek, trying to remove a bit much, eh? (%s)" % (dirname))
- sys.exit(1)
-
- if not os.path.exists(dirname):
- return
-
-- files = dircache.listdir(dirname)
-+ files = os.listdir(dirname)
- for file in files:
- path = os.path.join (dirname, file)
- if os.path.isdir(path):
-@@ -68,6 +68,12 @@ class Bundler:
- self.copy_path(path)
-
- def create_pango_setup(self):
-+ if utils.has_pkgconfig_module("pango") and \
-+ not utils.has_pkgconfig_variable("pango", "pango_module_version"):
-+ # Newer pango (>= 1.38) no longer has modules, skip this
-+ # step in that case.
-+ return
-+
- # Create a temporary pangorc file just for creating the
- # modules file with the right modules.
- module_version = utils.evaluate_pkgconfig_variables("${pkg:pango:pango_module_version}")
-@@ -227,7 +233,7 @@ class Bundler:
- # Clean out any libtool (*.la) files and static libraries
- if os.path.isdir(dest):
- for root, dirs, files in os.walk(dest):
-- for name in filter(lambda l: l.endswith(".la") or l.endswith(".a"), files):
-+ for name in [l for l in files if l.endswith(".la") or l.endswith(".a")]:
- os.remove(os.path.join(root, name))
-
- # Copies from Path.source to Path.dest, evaluating any variables
-@@ -247,7 +253,7 @@ class Bundler:
- relative_dest = self.project.evaluate_path(Path.source[m.end():])
- dest = self.project.get_bundle_path("Contents/Resources", relative_dest)
- else:
-- print "Invalid bundle file, missing or invalid 'dest' property: " + Path.dest
-+ print("Invalid bundle file, missing or invalid 'dest' property: " + Path.dest)
- sys.exit(1)
-
- (dest_parent, dest_tail) = os.path.split(dest)
-@@ -257,7 +263,7 @@ class Bundler:
- p = re.compile("[\*\?]")
- (source_parent, source_tail) = os.path.split(source)
- if p.search(source_parent):
-- print "Can't have wildcards except in the last path component: " + source
-+ print("Can't have wildcards except in the last path component: " + source)
- sys.exit(1)
-
- if p.search(source_tail):
-@@ -267,7 +273,7 @@ class Bundler:
- else:
- source_check = source
- if not os.path.exists(source_check):
-- print "Cannot find source to copy: " + source
-+ print("Cannot find source to copy: " + source)
- sys.exit(1)
-
- # If the destination has a wildcard as last component (copied
-@@ -285,13 +291,13 @@ class Bundler:
- try:
- # print "Copying %s to %s" % (globbed_source, destdir)
- shutil.copy(globbed_source, destdir)
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno == errno.ENOENT:
-- print "Warning, source file missing: " + globbed_source
-+ print("Warning, source file missing: " + globbed_source)
- elif e.errno == errno.EEXIST:
-- print "Warning, path already exits: " + dest
-+ print("Warning, path already exits: " + dest)
- else:
-- print "Error %s when copying file: %s" % ( str(e), globbed_source )
-+ print("Error %s when copying file: %s" % ( str(e), globbed_source ))
- sys.exit(1)
-
- else:
-@@ -315,13 +321,13 @@ class Bundler:
- link=None,
- verbose=1,
- dry_run=0)
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno == errno.ENOENT:
-- print "Warning, source file missing: " + globbed_source
-+ print("Warning, source file missing: " + globbed_source)
- elif e.errno == errno.EEXIST:
-- print "Warning, path already exits: " + dest
-+ print("Warning, path already exits: " + dest)
- else:
-- print "Error %s when copying file: %s" %( str(e), globbed_source )
-+ print("Error %s when copying file: %s" %( str(e), globbed_source ))
- sys.exit(1)
- return dest
-
-@@ -338,11 +344,11 @@ class Bundler:
- for path in self.binary_paths:
- if os.path.isdir(path):
- for root, dirs, files in os.walk(path):
-- paths.extend(map(lambda l: os.path.join(root, l), files))
-+ paths.extend([os.path.join(root, l) for l in files])
- else:
- paths.append(path)
-
-- paths = filter(filter_path, paths)
-+ paths = list(filter(filter_path, paths))
- return list(set(paths))
-
- def resolve_library_dependencies(self):
-@@ -366,11 +372,11 @@ class Bundler:
-
- def relative_path_map(line):
- if not os.path.isabs(line):
-- for prefix in prefixes.values():
-+ for prefix in list(prefixes.values()):
- path = os.path.join(prefix, "lib", line)
- if os.path.exists(path):
- return path
-- print "Cannot find a matching prefix for %s" % (line)
-+ print("Cannot find a matching prefix for %s" % (line))
- return line
-
- def prefix_filter(line):
-@@ -378,24 +384,24 @@ class Bundler:
- return False
-
- if line.startswith("/usr/X11"):
-- print "Warning, found X11 library dependency, you most likely don't want that:", line.strip().split()[0]
-+ print("Warning, found X11 library dependency, you most likely don't want that:", line.strip().split()[0])
-
- if os.path.isabs(line):
-- for prefix in prefixes.values():
-+ for prefix in list(prefixes.values()):
- if prefix in line:
- return True
-
- if not line.startswith("/usr/lib") and not line.startswith("/System/Library"):
-- print "Warning, library not available in any prefix:", line.strip().split()[0]
-+ print("Warning, library not available in any prefix:", line.strip().split()[0])
-
- return False
-
- return True
-
-- lines = filter(prefix_filter, [line.strip() for line in f])
-+ lines = list(filter(prefix_filter, [line.strip() for line in f]))
- p = re.compile("(.*\.dylib\.?.*)\s\(compatibility.*$")
- lines = utils.filterlines(p, lines)
-- lines = map(relative_path_map, lines)
-+ lines = list(map(relative_path_map, lines))
- #When you need to track down errors, uncomment this blocK
- # for path in paths:
- # cmd = "otool -L %s" % path
-@@ -407,7 +413,7 @@ class Bundler:
- for library in set(lines):
- # Replace the real path with the right prefix so we can
- # create a Path object.
-- for (key, value) in prefixes.items():
-+ for (key, value) in list(prefixes.items()):
- if library.startswith(value):
- path = Path("${prefix:" + key + "}" + library[len(value):])
- new_libraries.append(path)
-@@ -415,14 +421,14 @@ class Bundler:
- n_paths = len(paths)
- n_iterations += 1
- if n_iterations > 10:
-- print "Too many tries to resolve library dependencies"
-+ print("Too many tries to resolve library dependencies")
- sys.exit(1)
-
- self.copy_binaries(new_libraries)
- paths = self.list_copied_binaries()
-
- def run_install_name_tool(self):
-- print "Running install name tool"
-+ print("Running install name tool")
-
- paths = self.list_copied_binaries()
- prefixes = self.meta.prefixes
-@@ -430,12 +436,12 @@ class Bundler:
- # First change all references in libraries.
- for prefix in prefixes:
- prefix_path = self.project.get_prefix(prefix)
-- print "Going through prefix: " + prefix_path
-+ print("Going through prefix: " + prefix_path)
- for path in paths:
- cmd = os.path.join(os.path.dirname(__file__), "run-install-name-tool-change.sh") + " " + path + " " + prefix_path + " Resources" + " change"
- f = os.popen(cmd)
- for line in f:
-- print line
-+ print(line)
-
- # Then change the id of all libraries. Skipping this part for now
- #for path in paths:
-@@ -448,18 +454,18 @@ class Bundler:
- for framework in self.frameworks:
- fw_name, ext = os.path.splitext(os.path.basename(framework))
- fwl = os.path.join(framework, fw_name)
-- print "Importing Framework: " + fwl
-+ print("Importing Framework: " + fwl)
- # Fix the framework IDs
- cmd = os.path.join(os.path.dirname(__file__), "run-install-name-tool-change.sh") + " " + fwl + " " + fw_name + " Frameworks" + " id"
- f = os.popen(cmd)
- for line in f:
-- print line
-+ print(line)
- # Fix the dependencies in other libraries
- for path in paths:
- cmd = os.path.join(os.path.dirname(__file__), "run-install-name-tool-change.sh") + " " + path + " " + fw_name + " Frameworks/" + fw_name + " change"
- f = os.popen(cmd)
- for line in f:
-- print line
-+ print(line)
- #fix the dependencies in frameworks
- for ufw in self.frameworks:
- ufw_name, ext = os.path.splitext(os.path.basename(ufw))
-@@ -469,20 +475,20 @@ class Bundler:
- cmd = os.path.join(os.path.dirname(__file__), "run-install-name-tool-change.sh") + " " + ufwl + " " + fw_name + " Frameworks/" + fw_name + " change"
- f = os.popen(cmd)
- for line in f:
-- print line
-+ print(line)
-
-
- def strip_debugging(self):
- paths = self.list_copied_binaries()
- for path in paths:
- if path.endswith(".dylib") or path.endswith(".so"):
-- os.chmod(path, 0644)
-+ os.chmod(path, 0o644)
- os.system("strip -x " + path + " 2>/dev/null")
-- os.chmod(path, 0444)
-+ os.chmod(path, 0o444)
- else:
-- os.chmod(path, 0755)
-+ os.chmod(path, 0o755)
- os.system("strip -ur " + path + " 2>/dev/null")
-- os.chmod(path, 0555)
-+ os.chmod(path, 0o555)
-
- #
- # If you want to sign your application, set $APPLICATION_CERT with the
-@@ -491,7 +497,7 @@ class Bundler:
- # bundle's id string.
- #
- def sign_binaries(self):
-- if not os.environ.has_key("APPLICATION_CERT"):
-+ if "APPLICATION_CERT" not in os.environ:
- return
- cert = os.getenv("APPLICATION_CERT")
- paths = self.list_copied_binaries()
-@@ -501,7 +507,7 @@ class Bundler:
- result = os.spawnvp(os.P_WAIT, 'codesign', cmdargs)
-
- if result:
-- raise OSError, '"' + " ".join(cmdargs) + '" failed %d' % result
-+ raise OSError('"' + " ".join(cmdargs) + '" failed %d' % result)
-
- def copy_icon_themes(self):
- all_icons = set()
-@@ -604,7 +610,7 @@ class Bundler:
- final_path = self.project.evaluate_path(final_path)
-
- if not self.meta.overwrite and os.path.exists(final_path):
-- print "Bundle already exists: " + final_path
-+ print("Bundle already exists: " + final_path)
- sys.exit(1)
-
- self.create_skeleton()
-@@ -618,7 +624,7 @@ class Bundler:
- path = self.project.get_main_binary()
- source = self.project.evaluate_path(path.source)
- if not os.path.exists(source):
-- print "Cannot find main binary: " + source
-+ print("Cannot find main binary: " + source)
- sys.exit(1)
-
- dest = self.copy_path(path)
-@@ -658,24 +664,24 @@ class Bundler:
- launcher_script = self.project.get_launcher_script()
- if launcher_script:
- path = self.copy_path(launcher_script)
-- if os.environ.has_key("APPLICATION_CERT"):
-+ if "APPLICATION_CERT" in os.environ:
- cert = os.environ["APPLICATION_CERT"]
- ident = self.project.get_bundle_id()
- cmdargs = ['codesign', '-s', cert, '-i', ident, "-f", path]
- result = os.spawnvp(os.P_WAIT, 'codesign', cmdargs)
- if result:
-- raise OSError, '"'+ " ".join(cmdargs) + '" failed %d' % result
-+ raise OSError('"'+ " ".join(cmdargs) + '" failed %d' % result)
- if self.meta.overwrite:
- self.recursive_rm(final_path)
- shutil.move(self.project.get_bundle_path(), final_path)
-
- if __name__ == '__main__':
- if len(sys.argv) != 2:
-- print "Usage: %s <bundle descriptopn file>" % (sys.argv[0])
-+ print("Usage: %s <bundle descriptopn file>" % (sys.argv[0]))
- sys.exit(2)
-
- if not os.path.exists(sys.argv[1]):
-- print "File %s does not exist" % (sys.argv[1])
-+ print("File %s does not exist" % (sys.argv[1]))
- sys.exit(2)
-
- project = Project(sys.argv[1])
-diff --git bundler/main.py bundler/main.py
-index bcd7dda..b9b2fc5 100644
---- bundler/main.py
-+++ bundler/main.py
-@@ -1,18 +1,20 @@
- import sys, os
-
--from project import *
--from bundler import *
-+from .project import *
-+from .bundler import *
-
- def main(argv):
- if len(argv) != 1:
-- print "Usage: %s <bundle descriptopn file>" % (sys.argv[0])
-+ print("Usage: %s <bundle descriptopn file>" % (sys.argv[0]))
- sys.exit(2)
-
- if not os.path.exists(argv[0]):
-- print "File %s does not exist" % (argv[0])
-+ print("File %s does not exist" % (argv[0]))
- sys.exit(2)
-
- project = Project(argv[0])
- bundler = Bundler(project)
--
-- bundler.run()
-+ try:
-+ bundler.run()
-+ except Exception as err:
-+ print("Bundler encountered an error %s" % str(err))
-diff --git bundler/project.py bundler/project.py
-index c98b65a..60f0541 100644
---- bundler/project.py
-+++ bundler/project.py
-@@ -5,7 +5,7 @@ import os
- import xml.dom.minidom
- from xml.dom.minidom import Node
- from plistlib import Plist
--import utils
-+from . import utils
-
- # Base class for anything that can be copied into a bundle with a
- # source and dest.
-@@ -184,7 +184,7 @@ class Data(Path):
- pass
-
- class IconTheme:
-- ICONS_NONE, ICONS_ALL, ICONS_AUTO = range(3)
-+ ICONS_NONE, ICONS_ALL, ICONS_AUTO = list(range(3))
-
- def __init__(self, name, icons=ICONS_AUTO):
- self.name = name
-@@ -221,7 +221,7 @@ class Project:
- # Get the first app-bundle tag and ignore any others.
- self.root = utils.node_get_element_by_tag_name(doc, "app-bundle")
- except:
-- print "Could not load project %s:" % (project_path)
-+ print("Could not load project %s:" % (project_path))
- raise
-
- # The directory the project file is in (as opposed to
-@@ -232,14 +232,14 @@ class Project:
- plist_path = self.get_plist_path()
- try:
- plist = Plist.fromFile(plist_path)
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno == errno.ENOENT:
-- print "Info.plist file not found: " + plist_path
-+ print("Info.plist file not found: " + plist_path)
- sys.exit(1)
- else:
- raise
- self.name = plist.CFBundleExecutable
-- if plist.has_key("CFBundleName"):
-+ if "CFBundleName" in plist:
- self.bundle_name = plist.CFBundleName
- else:
- self.bundle_name = plist.CFBundleExecutable
-@@ -340,7 +340,7 @@ class Project:
- themes.append(IconTheme.from_node(node))
-
- # The hicolor theme is mandatory.
-- if not filter(lambda l: l.name == "hicolor", themes):
-+ if not [l for l in themes if l.name == "hicolor"]:
- themes.append(IconTheme("hicolor"))
-
- return themes
-@@ -412,33 +412,33 @@ class Project:
- if __name__ == '__main__':
- project = Project(os.path.join(os.getcwd(), 'giggle.bundle'))
-
-- print "General:"
-- print " Project path: %s" % (project.get_project_path())
-- print " Plist path: %s" % (project.get_plist_path())
-- print " App name: %s" % (project.name)
-- print " Destination: %s" % (project.get_meta().dest)
-- print " Overwrite: %s" % (str(project.get_meta().overwrite))
-+ print("General:")
-+ print(" Project path: %s" % (project.get_project_path()))
-+ print(" Plist path: %s" % (project.get_plist_path()))
-+ print(" App name: %s" % (project.name))
-+ print(" Destination: %s" % (project.get_meta().dest))
-+ print(" Overwrite: %s" % (str(project.get_meta().overwrite)))
-
- environment = project.get_environment()
-- print "Environment:"
-+ print("Environment:")
- for variable in environment.runtime_variables:
-- print " %s=%s" % (variable.name, variable.value)
-+ print(" %s=%s" % (variable.name, variable.value))
- for script in environment.scripts:
-- print " %s => %s" % (script.source, script.dest)
-+ print(" %s => %s" % (script.source, script.dest))
-
-- print "Frameworks:"
-+ print("Frameworks:")
- for framework in project.get_frameworks():
-- print " ", framework
-+ print(" ", framework)
-
-- print "Main binary:"
-+ print("Main binary:")
- binary = project.get_main_binary()
-- print " %s => %s" % (binary.source, binary.dest)
-+ print(" %s => %s" % (binary.source, binary.dest))
-
-- print "Launcher:"
-+ print("Launcher:")
- launcher_script = project.get_launcher_script()
-- print " %s => %s" % (launcher_script.source, launcher_script.dest)
-+ print(" %s => %s" % (launcher_script.source, launcher_script.dest))
-
-- print "Binaries:"
-+ print("Binaries:")
- for binary in project.get_binaries():
-- print " %s => %s" % (binary.source, binary.dest)
-+ print(" %s => %s" % (binary.source, binary.dest))
-
-diff --git bundler/project_test.py bundler/project_test.py
-index 4c3d583..0ff9179 100644
---- bundler/project_test.py
-+++ bundler/project_test.py
-@@ -5,8 +5,8 @@ import unittest
- import xml.dom.minidom
- from xml.dom.minidom import Node
- from plistlib import Plist
--from project import Project
--import utils
-+from .project import Project
-+from . import utils
-
- class Mock_Project(Project):
-
-@@ -20,9 +20,9 @@ class Mock_Project(Project):
- try:
- plist_path = os.path.join(self.project_dir, "test.plist")
- plist = Plist.fromFile(plist_path)
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno == errno.ENOENT:
-- print "Info.plist file not found: " + plist_path
-+ print("Info.plist file not found: " + plist_path)
- sys.exit(1)
- else:
- raise
-diff --git bundler/runtest.py bundler/runtest.py
-index 309643a..2450f2d 100755
---- bundler/runtest.py
-+++ bundler/runtest.py
-@@ -1,7 +1,7 @@
- #!/usr/bin/python
- import unittest
- import os
--from project_test import Project_Test
-+from .project_test import Project_Test
-
- def setProjects( goodpath, badpath):
- if not os.path.isabs(goodpath):
-diff --git bundler/utils.py bundler/utils.py
-index 78d4c47..76c83d1 100644
---- bundler/utils.py
-+++ bundler/utils.py
-@@ -15,6 +15,21 @@ def evaluate_environment_variables(string):
-
- return string
-
-+def has_pkgconfig_module(module):
-+ """Returns True if the pkg-config module exists"""
-+ f = os.popen("pkg-config --exists " + module)
-+ f.read().strip()
-+ return f.close() is None
-+
-+def has_pkgconfig_variable(module, key):
-+ """Returns True if the pkg-config variable exists for the given
-+ module
-+ """
-+ f = os.popen("pkg-config --variable=" + key + " " + module)
-+ status = bool(f.read().strip())
-+ f.close()
-+ return status
-+
- def evaluate_pkgconfig_variables(string):
- p = re.compile("\${pkg:(.*?):(.*?)}")
- m = p.search(string)
-@@ -24,6 +39,17 @@ def evaluate_pkgconfig_variables(string):
- f = os.popen("pkg-config --variable=" + key + " " + module)
- value = f.read().strip()
- if not value:
-+ # pango 1.38 removed modules, try to give a helpful
-+ # message in case something tries to reference the no
-+ # longer existing variable (most likely from old bundle
-+ # xml files) when using a newer pango build.
-+ if module == "pango" and key == "pango_module_version":
-+ if has_pkgconfig_module("pango"):
-+ raise Exception(
-+ "'%s' got removed in '%s' "
-+ "1.38. Remove any reference to pango "
-+ "modules in your bundle xml." % (
-+ key, module))
- raise Exception("pkg-config variable '%s %s' is undefined" % (key, module))
- string = p.sub(value, string, 1)
- m = p.search(string)
-@@ -33,7 +59,7 @@ def evaluate_pkgconfig_variables(string):
- def makedirs(path):
- try:
- os.makedirs(path)
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.errno != errno.EEXIST:
- raise
-
-diff --git examples/gtk-demo.bundle examples/gtk-demo.bundle
-index 4b32d6b..422126e 100644
---- examples/gtk-demo.bundle
-+++ examples/gtk-demo.bundle
-@@ -79,9 +79,11 @@
- ${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/*.so
- </binary>
-
-+<!-- No longer needed for pango >= 1.38
- <binary>
- ${prefix}/lib/pango/${pkg:pango:pango_module_version}/modules/
- </binary>
-+-->
-
- <data>
- ${prefix}/etc/pango/
-diff --git examples/gtk3-demo.bundle examples/gtk3-demo.bundle
-index ba15cd3..ec0eb4c 100644
---- examples/gtk3-demo.bundle
-+++ examples/gtk3-demo.bundle
-@@ -69,13 +69,11 @@
- ${prefix}/lib/gdk-pixbuf-2.0/${pkg:gdk-pixbuf-2.0:gdk_pixbuf_binary_version}/loaders/*.so
- </binary>
-
-+<!-- No longer needed for pango >= 1.38
- <binary>
- ${prefix}/lib/pango/${pkg:pango:pango_module_version}/modules/
- </binary>
--
-- <data>
-- ${prefix}/etc/pango/
-- </data>
-+-->
-
- <!-- Translation filenames, one for each program or library that you
- want to copy in to the bundle. The "dest" attribute is
-@@ -102,6 +100,10 @@
- ${prefix}/share/themes
- </data>
-
-+ <data>
-+ ${prefix}/share/icons
-+ </data>
-+
- <!-- Copy icons. Note that the .icns file is an Apple format which
- contains up to 4 sizes of icon. You can use
- /Developer/Applications/Utilities/Icon Composer.app to import
-@@ -110,25 +112,4 @@
- ${project}/Giggle.icns
- </data -->
-
-- <!-- This is where theme commands go. You can copy them in from your
-- theme of choice if they provide and example, or you can just
-- change the source path. -->
--
-- <data dest="${bundle}/Contents/Resources/etc/${gtk}/gtkrc">
-- ${project}/gtkrc
-- </data>
--
-- <!-- Icon themes to copy. The "icons" property can be either of
-- "auto", "all", or "none". All or none should be
-- self-explanatory, while auto means that the script will try to
-- figure out which icons are needed. This is done by getting all
-- the strings from all copied binaries, and matching them against
-- icon names. To be safe, you should use "all". "none" is useful
-- if you want just the index.theme file but no icons, mostly
-- needed for the "hicolor" base theme.
-- >
-- <icon-theme icons="auto">
-- Tango
-- </icon-theme -->
--
--</app-bundle>
-+ </app-bundle>
-diff --git examples/gtk3-launcher.sh examples/gtk3-launcher.sh
-index 4aed833..9137ccb 100755
---- examples/gtk3-launcher.sh
-+++ examples/gtk3-launcher.sh
-@@ -29,11 +29,15 @@ export GTK_DATA_PREFIX="$bundle_res"
- export GTK_EXE_PREFIX="$bundle_res"
- export GTK_PATH="$bundle_res"
-
--export GTK2_RC_FILES="$bundle_etc/gtk-3.0/gtkrc"
--export GTK_IM_MODULE_FILE="$bundle_etc/gtk-3.0/gtk.immodules"
--export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-3.0/gdk-pixbuf.loaders"
--export PANGO_LIBDIR="$bundle_lib"
-+# PANGO_* is no longer needed for pango >= 1.38
-+export PANGO_RC_FILE="$bundle_etc/pango/pangorc"
- export PANGO_SYSCONFDIR="$bundle_etc"
-+export PANGO_LIBDIR="$bundle_lib"
-+
-+export GDK_PIXBUF_MODULE_FILE="$bundle_lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
-+if [ `uname -r | cut -d . -f 1` -ge 10 ]; then
-+ export GTK_IM_MODULE_FILE="$bundle_etc/gtk-3.0/gtk.immodules"
-+fi
-
-
- APP=name
-diff --git examples/launcher.sh examples/launcher.sh
-index a1dfd1b..11cd019 100755
---- examples/launcher.sh
-+++ examples/launcher.sh
-@@ -31,7 +31,11 @@ export GTK_PATH="$bundle_res"
-
- export GTK2_RC_FILES="$bundle_etc/gtk-2.0/gtkrc"
- export GTK_IM_MODULE_FILE="$bundle_etc/gtk-2.0/gtk.immodules"
--export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-2.0/gdk-pixbuf.loaders"
-+#N.B. When gdk-pixbuf was separated from Gtk+ the location of the
-+#loaders cache changed as well. Depending on the version of Gtk+ that
-+#you built with you may still need to use the old location:
-+#export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-2.0/gdk-pixbuf.loaders"
-+export GDK_PIXBUF_MODULE_FILE="$bundle_lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
- export PANGO_LIBDIR="$bundle_lib"
- export PANGO_SYSCONFDIR="$bundle_etc"
-