| #!/usr/bin/env python |
| ############################################################################### |
| # libbrlapi - A library providing access to braille terminals for applications. |
| # |
| # Copyright (C) 2005-2023 by |
| # Alexis Robert <alexissoft@free.fr> |
| # Samuel Thibault <Samuel.Thibault@ens-lyon.org> |
| # |
| # libbrlapi comes with ABSOLUTELY NO WARRANTY. |
| # |
| # This is free software, placed under the terms of the |
| # GNU Lesser General Public License, as published by the Free Software |
| # Foundation; either version 2.1 of the License, or (at your option) any |
| # later version. Please see the file LICENSE-LGPL for details. |
| # |
| # Web Page: http://brltty.app/ |
| # |
| # This software is maintained by Dave Mielke <dave@mielke.cc>. |
| ############################################################################### |
| |
| import sys |
| import os |
| |
| def putProgramMessage(message): |
| sys.stderr.write("%s: %s%s" % (programName, message, os.linesep)) |
| |
| def syntaxError(message): |
| putProgramMessage(message) |
| sys.exit(2) |
| |
| def nextProgramArgument(): |
| return sys.argv.pop(0) |
| |
| def verifyNoMoreProgramArguments(): |
| if (len(sys.argv) > 0): |
| syntaxError("too many parameters") |
| |
| programPath = nextProgramArgument() |
| programName = os.path.basename(programPath) |
| |
| try: |
| actionName = nextProgramArgument() |
| except IndexError: |
| syntaxError("action not specified") |
| |
| try: |
| import sysconfig |
| # putProgramMessage("sysconfig") |
| if hasattr(sysconfig, 'get_default_scheme'): |
| scheme = sysconfig.get_default_scheme() |
| else: |
| scheme = sysconfig._get_default_scheme() |
| |
| if scheme == 'posix_local': |
| # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ |
| scheme = 'posix_prefix' |
| |
| def getIncludeDirectory(): |
| return sysconfig.get_path("include", scheme) |
| |
| def getLibraryDirectory(): |
| return sysconfig.get_path("stdlib", scheme) |
| |
| def getPackageDirectory(): |
| return sysconfig.get_path("platlib", scheme) |
| |
| def getConfigurationVariable(name): |
| return sysconfig.get_config_var(name) |
| |
| except ModuleNotFoundError: |
| from distutils import sysconfig |
| # putProgramMessage("distutils") |
| |
| def getIncludeDirectory(): |
| return sysconfig.get_python_inc() |
| |
| def getLibraryDirectory(): |
| return sysconfig.get_python_lib(0, 1) |
| |
| def getPackageDirectory(): |
| return sysconfig.get_python_lib(True, False) |
| |
| def getConfigurationVariable(name): |
| return sysconfig.get_config_var(name) |
| |
| class ActionHanlers: |
| def version(): |
| verifyNoMoreProgramArguments() |
| print(sys.version_info[0]) |
| |
| def incdir(): |
| verifyNoMoreProgramArguments() |
| print(getIncludeDirectory()) |
| |
| def libdir(): |
| verifyNoMoreProgramArguments() |
| print(getLibraryDirectory()) |
| |
| def pkgdir(): |
| verifyNoMoreProgramArguments() |
| print(getPackageDirectory()) |
| |
| def libopts(): |
| verifyNoMoreProgramArguments() |
| print(getConfigurationVariable("LIBS")) |
| |
| def linkopts(): |
| verifyNoMoreProgramArguments() |
| print(getConfigurationVariable("LINKFORSHARED")) |
| |
| actionHandlers = globals()["ActionHanlers"] |
| |
| try: |
| actionHandler = getattr(actionHandlers, actionName) |
| except AttributeError: |
| syntaxError("unknown action: %s" % actionName) |
| |
| actionHandler() |
| sys.exit(0) |