# -*- coding: utf-8 -*- # # Copyright (C) 2015 - Jonathan Rajotte # # This library is free software; you can redistribute it and/or modify it under # the terms of the GNU Lesser General Public License as published by the Free # Software Foundation; version 2.1 of the License. # # This library 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 Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with this library; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import sys if sys.version_info < (3, 12): from distutils.core import setup, Extension else: from setuptools import setup, Extension # Starting with Debian's Python 3.10, the default install scheme is # 'posix_local' which is a Debian specific scheme based on 'posix_prefix' but # with an added 'local' prefix. This is the default so users doing system wide # manual installations of python modules end up in '/usr/local'. This # interferes with our autotools based install which already defaults to # '/usr/local' and expect a provided prefix to be used verbatim. # # Monkeypatch sysconfig to override this scheme and use 'posix_prefix' instead. if sys.version_info >= (3, 10): import sysconfig original_get_preferred_scheme = sysconfig.get_preferred_scheme def our_get_preferred_scheme(key): scheme = original_get_preferred_scheme(key) if scheme == "posix_local": return "posix_prefix" else: return scheme sysconfig.get_preferred_scheme = our_get_preferred_scheme PY_PATH_WARN_MSG = """ -------------------------------------WARNING------------------------------------ The install directory used:\n ({0})\nis not included in your PYTHONPATH. To add this directory to your Python search path permanently you can add the following command to your .bashrc/.zshrc: export PYTHONPATH="${{PYTHONPATH}}:{0}" -------------------------------------------------------------------------------- """ def main(): dist = setup(name='lttngust', version='@PACKAGE_VERSION@', description='LTTng-UST Python agent', packages=['lttngust'], package_dir={'lttngust': 'lttngust'}, options={'build': {'build_base': 'build'}}, url='http://lttng.org', license='LGPL-2.1', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3' 'Topic :: System :: Logging', ]) # After the installation, we check that the install directory is included in # the Python search path and we print a warning message when it's not. We need # to do this because Python search path differs depending on the distro and # some distros don't include any `/usr/local/` (the default install prefix) in # the search path. This is also useful for out-of-tree installs and tests. It's # only relevant to make this check on the `install` command. if 'install' in dist.command_obj: install_dir = dist.command_obj['install'].install_libbase if install_dir not in sys.path: # We can't consider this an error because if affects every # distro differently. We only warn the user that some # extra configuration is needed to use the agent abs_install_dir = os.path.abspath(install_dir) print(PY_PATH_WARN_MSG.format(abs_install_dir)) if __name__ == '__main__': main()