diff options
Diffstat (limited to 'install_meson.py')
-rwxr-xr-x | install_meson.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/install_meson.py b/install_meson.py new file mode 100755 index 0000000..187ca41 --- /dev/null +++ b/install_meson.py @@ -0,0 +1,69 @@ +#!/usr/bin/python3 -tt + +# Copyright 2013 Jussi Pakkanen + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os, sys, glob, shutil +from optparse import OptionParser +from meson import version + +usage_info = '%prog [--prefix PREFIX] [--destdir DESTDIR]' + +parser = OptionParser(usage=usage_info) + +build_types = ['plain', 'debug', 'optimized'] +buildtype_help = 'build type, one of: %s' % ', '.join(build_types) +buildtype_help += ' (default: %default)' + +parser.add_option('--prefix', default='/usr/local', dest='prefix', + help='the installation prefix (default: %default)') +parser.add_option('--destdir', default='', dest='destdir', + help='the destdir (default: %default)') + +try: + open('parsetab.py', 'r').close() +except IOError: + print('Parsetab.py not found, run compile_meson.py first.') + sys.exit(1) + +(options, args) = parser.parse_args(sys.argv) +if options.prefix[0] != '/': + print('Error, prefix must be an absolute path.') + sys.exit(1) + +install_root = os.path.join(options.destdir, options.prefix[1:]) + +script_dir = os.path.join(install_root, 'share/meson-' + version) +bin_dir = os.path.join(install_root, 'bin') +bin_script = os.path.join(script_dir, 'meson.py') +bin_name = os.path.join(bin_dir, 'meson') + +symlink_value = os.path.relpath(bin_script, os.path.dirname(bin_name)) + +files = glob.glob('*.py') + +noinstall = ['compile_meson.py', 'install_meson.py', 'run_tests.py'] + +files = [x for x in files if x not in noinstall] + +os.makedirs(script_dir, exist_ok=True) +os.makedirs(bin_dir, exist_ok=True) + +for f in files: + print('Installing %s to %s' %(f, script_dir)) + outfilename = os.path.join(script_dir, f) + shutil.copyfile(f, outfilename) + shutil.copystat(f, outfilename) + +os.symlink(symlink_value, bin_name) |