Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2009-03-09 19:08:50 (GMT)
committer Colin Walters <walters@verbum.org>2009-03-16 17:29:50 (GMT)
commit90526643ceb248c56e40f5b6755c3cbb91c3857c (patch)
treef1fcdc171a4e9014941867316351f9629c4f37c8
parent2bd97368f6ced0d23977ce980ac159453cc18d8c (diff)
Bug 574501 - Install giscanner Python module to private directory
We don't want to pollute the global namespace with our private libraries. Also, this sidesteps all the craziness that is happening with OS vendors changing how Python installs modules.
-rw-r--r--configure.ac1
-rw-r--r--giscanner/Makefile.am3
-rw-r--r--[-rwxr-xr-x]giscanner/scannermain.py (renamed from tools/g-ir-scanner)40
-rwxr-xr-xtools/g-ir-scanner.in39
4 files changed, 53 insertions, 30 deletions
diff --git a/configure.ac b/configure.ac
index 5487e75..8b57e17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -212,4 +212,5 @@ examples/Makefile
docs/Makefile
docs/reference/Makefile
gobject-introspection-1.0.pc])
+AC_CONFIG_FILES([tools/g-ir-scanner], [chmod a+x tools/g-ir-scanner])
AC_OUTPUT
diff --git a/giscanner/Makefile.am b/giscanner/Makefile.am
index bc2977f..1ecd977 100644
--- a/giscanner/Makefile.am
+++ b/giscanner/Makefile.am
@@ -31,7 +31,7 @@ libgiscanner_la_CFLAGS = $(GOBJECT_CFLAGS)
GCOVSOURCES = $(libgiscanner_la_SOURCES)
# Python module
-pkgpyexecdir = $(pyexecdir)/giscanner
+pkgpyexecdir = $(pkglibdir)/giscanner
pkgpyexec_LTLIBRARIES = _giscanner.la
pkgpyexec_PYTHON = \
__init__.py \
@@ -47,6 +47,7 @@ pkgpyexec_PYTHON = \
libtoolimporter.py \
minixpath.py \
odict.py \
+ scannermain.py \
sourcescanner.py \
transformer.py \
utils.py \
diff --git a/tools/g-ir-scanner b/giscanner/scannermain.py
index 4b5b924..f7ac884 100755..100644
--- a/tools/g-ir-scanner
+++ b/giscanner/scannermain.py
@@ -2,6 +2,7 @@
# -*- Mode: Python -*-
# GObject-Introspection - a framework for introspecting GObject libraries
# Copyright (C) 2008 Johan Dahlin
+# Copyright (C) 2009 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -24,23 +25,6 @@ import optparse
import os
import sys
-# This only works on unix systems
-currentdir = os.path.dirname(os.path.abspath(sys.argv[0]))
-basedir = os.path.abspath(os.path.join(currentdir, '..'))
-if (os.path.exists(os.path.join(basedir, '.svn')) or
- os.path.exists(os.path.join(basedir, '.git'))):
- path = basedir
-else:
- libdir = 'lib'
- for p in sys.path:
- if 'lib64' in p:
- libdir = 'lib64'
- break
-
- path = os.path.join(basedir, libdir, 'python%d.%d' % sys.version_info[:2],
- 'site-packages')
-sys.path.insert(0, path)
-
from giscanner.annotationparser import AnnotationParser, InvalidAnnotationError
from giscanner.ast import Include
from giscanner.cachestore import CacheStore
@@ -110,7 +94,7 @@ def _get_option_parser():
help="Inject additional components into GIR XML")
parser.add_option("", "--xpath-assertions",
action="store", dest="xpath_assertions",
- help="Use given file to create assertions on GIR content")
+ help="Use given file to create assertions on GIR content")
parser.add_option("", "--c-include",
action="append", dest="c_includes", default=[],
help="headers which should be included in C programs")
@@ -194,14 +178,14 @@ def validate(assertions, path):
xpath_assert(root, assertion)
f.close()
return 0
-
+
def process_options(output, allowed_flags):
for option in output.split():
for flag in allowed_flags:
if not option.startswith(flag):
continue
yield option
- break
+ break
def process_packages(parser, options, packages):
args = ['pkg-config', '--cflags']
@@ -214,7 +198,7 @@ def process_packages(parser, options, packages):
sys.exit(1)
# Some pkg-config files on Windows have options we don't understand,
# so we explicitly filter to only the ones we need.
- options_whitelist = ['-I', '-D', '-U', '-l', '-L']
+ options_whitelist = ['-I', '-D', '-U', '-l', '-L']
filtered_output = list(process_options(output, options_whitelist))
pkg_options, unused = parser.parse_args(filtered_output)
options.cpp_includes.extend(pkg_options.cpp_includes)
@@ -229,9 +213,9 @@ def process_packages(parser, options, packages):
sys.exit(1)
filtered_output = list(process_options(output, options_whitelist))
pkg_options, unused = parser.parse_args(filtered_output)
- options.library_paths.extend(pkg_options.library_paths)
+ options.library_paths.extend(pkg_options.library_paths)
-def main(args):
+def scanner_main(args):
parser = _get_option_parser()
(options, args) = parser.parse_args(args)
@@ -285,8 +269,8 @@ def main(args):
# Make absolute, because we do comparisons inside scannerparser.c
# against the absolute path that cpp will give us
filenames.append(os.path.abspath(arg))
-
- cachestore = CacheStore()
+
+ cachestore = CacheStore()
transformer = Transformer(cachestore,
options.namespace_name,
options.namespace_version)
@@ -301,7 +285,7 @@ def main(args):
raise ValueError("Invalid include path %r" % (include, ))
include_obj = Include.from_string(include)
transformer.register_include(include_obj)
-
+
packages = set(options.packages)
packages.update(transformer.get_pkgconfig_packages())
process_packages(parser, options, packages)
@@ -333,7 +317,7 @@ def main(args):
binary = IntrospectionBinary(args)
else:
binary = compile_introspection_binary(options,
- glibtransformer.get_get_type_functions())
+ glibtransformer.get_get_type_functions())
glibtransformer.set_introspection_binary(binary)
@@ -356,5 +340,3 @@ def main(args):
print data
return 0
-
-sys.exit(main(sys.argv))
diff --git a/tools/g-ir-scanner.in b/tools/g-ir-scanner.in
new file mode 100755
index 0000000..b7197c9
--- /dev/null
+++ b/tools/g-ir-scanner.in
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2008 Johan Dahlin
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+
+import os
+import sys
+
+# This only works on unix systems
+currentdir = os.path.dirname(os.path.abspath(sys.argv[0]))
+basedir = os.path.abspath(os.path.join(currentdir, '..'))
+if (os.path.exists(os.path.join(basedir, '.svn')) or
+ os.path.exists(os.path.join(basedir, '.git'))):
+ path = basedir
+else:
+ # This is a private directory, we don't want to pollute the global
+ # namespace.
+ path = os.path.join('@libdir@', 'gobject-introspection')
+sys.path.insert(0, path)
+
+from giscanner.scannermain import scanner_main
+
+sys.exit(scanner_main(sys.argv))