diff options
author | Chris Johns <chrisj@rtems.org> | 2018-10-07 20:59:45 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2018-10-21 09:49:02 +1100 |
commit | 13f4c379997b53b204d8534d198da2fa35dd5630 (patch) | |
tree | f7591495c8f2165af7bbb20d4eaf743d3d034416 /source-builder/pkg-config | |
parent | rtems-tools-5-1.cfg: Bump to latest (diff) | |
download | rtems-source-builder-13f4c379997b53b204d8534d198da2fa35dd5630.tar.bz2 |
sb: Add support to search for a suitable version of python.
The command python has been removed from upstream python and python2
and python3 is now used. This patch wraps the commands in a shell
script that locates a suitable python to run.
Updates #3537
Diffstat (limited to 'source-builder/pkg-config')
-rwxr-xr-x | source-builder/pkg-config | 241 |
1 files changed, 21 insertions, 220 deletions
diff --git a/source-builder/pkg-config b/source-builder/pkg-config index fa251e5..65ee307 100755 --- a/source-builder/pkg-config +++ b/source-builder/pkg-config @@ -1,226 +1,27 @@ -#! /usr/bin/env python +#! /bin/sh # # RTEMS Tools Project (http://www.rtems.org/) -# Copyright 2014-2016 Chris Johns (chrisj@rtems.org) +# Copyright 2018 Chris Johns (chrisj@rtems.org) # All rights reserved. # # This file is part of the RTEMS Tools package in 'rtems-tools'. # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -from __future__ import print_function - -import os -import sys - -base = os.path.dirname(sys.argv[0]) -sys.path.insert(0, base + '/sb') - -try: - import argparse -except: - sys.path.insert(0, base + '/sb/imports') - try: - import argparse - except: - print("Incorrect Source Builder installation", file = sys.stderr) - sys.exit(1) - -try: - import pkgconfig -except ImportError: - print("Incorrect Source Builder installation", file = sys.stderr) - sys.exit(1) - -# -# Make trace true to get a file of what happens and what is being asked. -# -trace = True -trace_stdout = False -logfile = 'pkg-config.log' -out = None -srcfd = None - -# -# Write all the package source parsed to a single file. -# -trace_src = True -if trace_src: - srcfd = open('pkg-src.txt', 'w') - -def src(text): - if srcfd: - srcfd.writelines(text) - -def log(s, lf = True): - global trace, logfile, out - if trace: - if out is None: - if logfile: - out = open(logfile, 'a') - else: - out = sys.stdout - if lf: - if out != sys.stdout and trace_stdout: - print(s) - print(s, file = out) - else: - if out != sys.stdout and trace_stdout: - print(s, end = '') - sys.stdout.flush() - print(s, end = '', file = out) - -def run(argv): - - class version_action(argparse.Action): - def __call__(self, parser, namespace, values, option_string = None): - parts = values[0].strip().split('.') - for p in parts: - if not p.isdigit(): - raise error('invalid version value: %s' % (values)) - setattr(namespace, self.dest, '.'.join(parts)) - - ec = 0 - - opts = argparse.ArgumentParser(prog = 'pkg-config', description = 'Package Configuration.') - opts.add_argument('libraries', metavar='lib', type = str, help = 'a library', nargs = '*') - opts.add_argument('--modversion', dest = 'modversion', action = 'store', default = None, - help = 'Requests that the version information of the libraries.') - opts.add_argument('--print-errors', dest = 'print_errors', action = 'store_true', - default = False, - help = 'Print any errors.') - opts.add_argument('--short-errors', dest = 'short_errors', action = 'store_true', - default = False, - help = 'Make error messages short.') - opts.add_argument('--silence-errors', dest = 'silence_errors', action = 'store_true', - default = False, - help = 'Do not print any errors.') - opts.add_argument('--errors-to-stdout', dest = 'errors_to_stdout', action = 'store_true', - default = False, - help = 'Print errors to stdout rather than stderr.') - opts.add_argument('--cflags', dest = 'cflags', action = 'store_true', - default = False, - help = 'This prints pre-processor and compile flags required to' \ - ' compile the package(s)') - opts.add_argument('--libs', dest = 'libs', action = 'store_true', - default = False, - help = 'This option is identical to "--cflags", only it prints the' \ - ' link flags.') - opts.add_argument('--libs-only-L', dest = 'libs_only_L', action = 'store_true', - default = False, - help = 'This prints the -L/-R part of "--libs".') - opts.add_argument('--libs-only-l', dest = 'libs_only_l', action = 'store_true', - default = False, - help = 'This prints the -l part of "--libs".') - opts.add_argument('--variable', dest = 'variable', action = 'store', - nargs = 1, default = None, - help = 'This returns the value of a variable.') - opts.add_argument('--define-variable', dest = 'define_variable', action = 'store', - nargs = 1, default = None, - help = 'This sets a global value for a variable') - opts.add_argument('--uninstalled', dest = 'uninstalled', action = 'store_true', - default = False, - help = 'Ignored') - opts.add_argument('--atleast-pkgconfig-version', dest = 'atleast_pkgconfig_version', - action = 'store', nargs = 1, default = None, - help = 'Check the version of package config. Always ok.') - opts.add_argument('--exists', dest = 'exists', action = 'store_true', - default = False, - help = 'Test if a library is present') - opts.add_argument('--atleast-version', dest = 'atleast_version', - action = version_action, nargs = 1, default = None, - help = 'The package is at least this version.') - opts.add_argument('--exact-version', dest = 'exact_version', action = version_action, - nargs = 1, default = None, - help = 'The package is the exact version.') - opts.add_argument('--max-version', dest = 'max_version', action = version_action, - nargs = 1, default = None, - help = 'The package is no later than this version.') - opts.add_argument('--msvc-syntax', dest = 'msvc_syntax', action = 'store_true', - default = False, - help = 'Ignored') - opts.add_argument('--dont-define-prefix', dest = 'dont_define_prefix', action = 'store_true', - default = False, - help = 'Ignored') - opts.add_argument('--prefix-variable', dest = 'prefix', action = 'store', - nargs = 1, default = pkgconfig.default_prefix(), - help = 'Define the prefix.') - opts.add_argument('--static', dest = 'static', action = 'store_true', - default = False, - help = 'Output libraries suitable for static linking') - opts.add_argument('--dump', dest = 'dump', action = 'store_true', - default = False, - help = 'Dump the package if one is found.') - - args = opts.parse_args(argv[1:]) - - if (args.exists and (args.exact_version or args.max_version)) or \ - (args.exact_version and (args.exists or args.max_version)) or \ - (args.max_version and (args.exists or args.exact_version)): - raise error('only one of --exists, --exact-version, or --max-version') - - if args.dont_define_prefix: - args.prefix = pkgconfig.default_prefix(False) - - exists = False - - ec = 1 - - if args.atleast_pkgconfig_version: - ec = 0 - else: - ec, pkg, flags = pkgconfig.check_package(args.libraries, args, log, src) - if ec == 0: - if args.cflags: - if len(flags['cflags']): - print(flags['cflags']) - log('cflags: %s' % (flags['cflags'])) - else: - log('cflags: empty') - if args.libs: - if len(flags['libs']): - print(flags['libs']) - log('libs: %s' % (flags['libs'])) - else: - log('libs: empty') - - #pkgconfig.package.dump_loaded() - - return ec - -try: - log('-' * 40) - log('pkg-config', lf = False) - for a in sys.argv[1:]: - log(' "%s"' % (a), lf = False) - log('') - ec = run(sys.argv) - log('ec = %d' % (ec)) -except ImportError: - print("incorrect package config installation", file = sys.stderr) - sys.exit(1) -except pkgconfig.error as e: - print('error: %s' % (e), file = sys.stderr) - sys.exit(1) -sys.exit(ec) +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +set -e +base=$(dirname $0) +PYTHON_CMD=${base}/sb/cmd-pkg-config.py +if test -f ${base}/sb/python-wrapper.sh; then + . ${base}/sb/python-wrapper.sh +fi +echo "error: python wrapper not found" |