1 # SPDX-License-Identifier: MIT
3 # Copyright (C) 2017 Francis Deslauriers <francis.deslauriers@efficios.com>
4 # Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
9 if sys
.version_info
< (3, 12):
10 from distutils
.core
import setup
, Extension
11 import distutils
.sysconfig
as sysconfig
13 from setuptools
import setup
, Extension
16 PY_PATH_WARN_MSG
= """
17 -------------------------------------WARNING------------------------------------
18 The install directory used:\n ({})\nis not included in your PYTHONPATH.
20 To add this directory to your Python search path permanently you can add the
21 following command to your .bashrc/.zshrc:
22 export PYTHONPATH="${{PYTHONPATH}}:{}"
23 --------------------------------------------------------------------------------
26 original_get_config_vars
= sysconfig
.get_config_vars
30 cflags
= os
.environ
.get("CFLAGS")
33 [cflags
] = original_get_config_vars("CFLAGS")
38 # distutils performs a similar transformation step on LDSHARED on
39 # darwin to use the overriden CC as the default command for LDSHARED
40 # (see distutils' customize_compiler() step in the sysconfig module).
42 # This takes it a step further by using our own LDFLAGS (when available)
43 # along with the overriden compiler and ensure that flags that are unsupported
44 # by either the Python interprter's CC or the overriden CC don't cause a
47 cc
= os
.environ
.get("CC")
48 ldflags
= os
.environ
.get("LDFLAGS")
49 [py_cc
] = original_get_config_vars("CC")
50 [py_ldshared
] = original_get_config_vars("LDSHARED")
52 if not py_ldshared
.startswith(py_cc
):
56 return "{} -shared {}".format(cc
, ldflags
)
58 return cc
+ py_ldshared
[len(py_cc
) :]
60 return py_cc
+ py_ldshared
[len(py_cc
) :]
65 def our_get_config_vars(*args
):
66 overridden_config_vars
= {
67 "CFLAGS": get_cflags(),
68 "LDSHARED": get_ldshared(),
72 all_config_vars
= original_get_config_vars()
73 for name
in overridden_config_vars
:
74 all_config_vars
[name
] = overridden_config_vars
[name
]
75 return all_config_vars
77 subset_config_vars
= []
79 if name
not in overridden_config_vars
:
80 [var
] = original_get_config_vars(name
)
81 subset_config_vars
.append(var
)
84 subset_config_vars
.append(overridden_config_vars
[name
])
86 return subset_config_vars
89 sysconfig
.get_config_vars
= our_get_config_vars
93 babeltrace_ext
= Extension(
95 sources
=["bt2/native_bt.c", "@srcdir@/bt2/logging.c"],
96 libraries
=["babeltrace2", "glib-2.0"],
98 "@top_builddir@/src/autodisc/.libs/libbabeltrace2-autodisc.a",
99 "@top_builddir@/src/logging/.libs/libbabeltrace2-logging.a",
100 "@top_builddir@/src/common/.libs/libbabeltrace2-common.a",
101 "@top_builddir@/src/py-common/.libs/libbabeltrace2-py-common.a",
102 "@top_builddir@/src/string-format/.libs/libbabeltrace2-string-format.a",
108 version
="@PACKAGE_VERSION@",
109 description
="Babeltrace 2 Python Bindings",
111 package_dir
={"bt2": "bt2"},
113 "build": {"build_base": "build", "build_lib": "build/build_lib"},
114 "build_ext": {"build_lib": "build/build_lib"},
116 url
="https://babeltrace.org/",
117 ext_modules
=[babeltrace_ext
],
120 "Development Status :: 5 - Production/Stable",
121 "Intended Audience :: Developers",
122 "License :: OSI Approved :: The MIT License",
123 "Programming Language :: Python :: 3" "Topic :: System :: Logging",
127 # After the installation, we check that the install directory is included in
128 # the Python search path and we print a warning message when it's not.
129 # We need to do this because Python search path differs depending on the distro
130 # and some distros don't include any /usr/local/ in the search path. This is
131 # also useful for out-of-tree installs and tests.
132 # It's only relevant to make this check on the `install` command.
134 if "install" in dist
.command_obj
:
135 install_dir
= dist
.command_obj
["install"].install_libbase
136 if install_dir
not in sys
.path
:
137 # We can't consider this an error because if affects every
138 # distro differently. We only warn the user that some
139 # extra configuration is needed to use the bindings
140 print(PY_PATH_WARN_MSG
.format(install_dir
, install_dir
))
143 if __name__
== "__main__":
This page took 0.033505 seconds and 4 git commands to generate.