1beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# -*- coding: ascii -*-
2beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik#
3beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# Copyright 2007, 2008, 2009, 2010, 2011
4beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# Andr\xe9 Malo or his licensors, as applicable
5beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik#
6beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# Licensed under the Apache License, Version 2.0 (the "License");
7beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# you may not use this file except in compliance with the License.
8beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# You may obtain a copy of the License at
9beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik#
10beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik#     http://www.apache.org/licenses/LICENSE-2.0
11beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik#
12beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# Unless required by applicable law or agreed to in writing, software
13beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# distributed under the License is distributed on an "AS IS" BASIS,
14beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# See the License for the specific language governing permissions and
16beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik# limitations under the License.
17beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik"""
18beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik================
19beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik dist utilities
20beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik================
21beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
22beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craikdist utilities.
23beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik"""
24beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik__author__ = u"Andr\xe9 Malo"
25beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik__docformat__ = "restructuredtext en"
26beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
27beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craikimport sys as _sys
28beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
29beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craikfrom _setup import shell as _shell
30beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
31beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
32beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craikdef run_setup(*args, **kwargs):
33beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    """ Run setup """
34beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    if 'setup' in kwargs:
35beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        script = kwargs.get('setup') or 'setup.py'
36beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        del kwargs['setup']
37beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    else:
38beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        script = 'setup.py'
39beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    if 'fakeroot' in kwargs:
40beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        fakeroot = kwargs['fakeroot']
41beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        del kwargs['fakeroot']
42beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    else:
43beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        fakeroot = None
44beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    if kwargs:
45beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        raise TypeError("Unrecognized keyword parameters")
46beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik
47beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    script = _shell.native(script)
48beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    argv = [_sys.executable, script] + list(args)
49beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    if fakeroot:
50beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik        argv.insert(0, fakeroot)
51beca7ae1f35e7f6605f4a21b5f4edeaa72000e39Chris Craik    return not _shell.spawn(*argv)
52