diff --git a/blueprintcompiler/gir.py b/blueprintcompiler/gir.py index 59f4b45..e54b849 100644 --- a/blueprintcompiler/gir.py +++ b/blueprintcompiler/gir.py @@ -24,8 +24,20 @@ from functools import cached_property import gi # type: ignore -gi.require_version("GIRepository", "3.0") -from gi.repository import GIRepository # type: ignore +try: + gi.require_version("GIRepository", "3.0") + from gi.repository import GIRepository # type: ignore + + _repo = GIRepository.Repository() +except ValueError: + # We can remove this once we can bump the minimum dependencies + # to glib 2.80 and pygobject 3.52 + # dependency('glib-2.0', version: '>= 2.80.0') + # dependency('girepository-2.0', version: '>= 2.80.0') + gi.require_version("GIRepository", "2.0") + from gi.repository import GIRepository # type: ignore + + _repo = GIRepository.Repository from . import typelib, xml_reader from .errors import CompileError, CompilerBugError @@ -42,8 +54,7 @@ def add_typelib_search_path(path: str): def get_namespace(namespace: str, version: str) -> "Namespace": - repo = GIRepository.Repository() - search_paths = [*repo.get_search_path(), *_user_search_paths] + search_paths = [*_repo.get_search_path(), *_user_search_paths] filename = f"{namespace}-{version}.typelib" @@ -74,9 +85,8 @@ def get_available_namespaces() -> T.List[T.Tuple[str, str]]: if len(_available_namespaces): return _available_namespaces - repo = GIRepository.Repository() search_paths: list[str] = [ - *repo.get_search_path(), + *_repo.get_search_path(), *_user_search_paths, ] diff --git a/meson.build b/meson.build index 420a4d1..63d9489 100644 --- a/meson.build +++ b/meson.build @@ -7,9 +7,6 @@ datadir = join_paths(prefix, get_option('datadir')) py = import('python').find_installation('python3') -dependency('glib-2.0', version: '>= 2.80.0') -dependency('girepository-2.0', version: '>= 2.80.0') - subdir('docs') configure_file(