mumble/python.pri
Davide Beatrici 09cfc1dc02 python.pri: Fix path search for MinGW on Linux
MinGW triggers the "win32" block, which sets the Python command to "python" without searching for its path.
Now it isn't needed anymore since the script checks if the "which" command is available and if it doesn't it sets the command to "python".
2017-02-13 15:16:59 +01:00

88 lines
3.0 KiB
Plaintext

# Copyright 2005-2017 The Mumble Developers. All rights reserved.
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file at the root of the
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
# This .pri files finds a suitable Python binary on the system.
#
# It exposes the found Python binary as the 'PYTHON' qmake variable.
# This variable contains the absolute path to a working Python binary.
#
# Why do we need to do this?
#
# Some systems (for example, OpenBSD's Python port), are not
# PEP 394 (https://www.python.org/dev/peps/pep-0394/) compliant.
#
# This means that there is no 'python', 'python2' or 'python3'
# binaries in the $PATH.
#
# On those systems, we can't rely on a '#!/usr/bin/env python2'
# or similar shebang. We have to query the system for versioned
# Python binaries like "python2.7" instead.
#
# This file does that, by searching in $PATH using the 'which'
# tool.
#
# If no binary is found, an error is shown to the user.
#
# This script also supports setting a MUMBLE_PYTHON environment
# variable to specify an absolute path to a Python binary to use.
# Setting this environment variable overrides any querying.
include(qt.pri)
PYTHON = $$(MUMBLE_PYTHON)
# If the MUMBLE_PYTHON environment variable isn't set
isEmpty(PYTHON) {
# If we're on Qt 4 on win32, or we're building from Windows, use "python"
equals(QMAKE_HOST.os, "Windows")|equals(QMAKE_VERSION_INT_MAJOR, 4):win32 {
PYTHON=python
} else {
# Determine if the 'which' tool is available. We need it
# to determine which python binary on the system to use.
# If 'which' isn't available, error out.
# Calling 'which which' is intentional.
# If which is available, it will print the path to it.
# If it isn't available, it will not print anything.
WHICH=$$system(which which 2>/dev/null)
isEmpty(WHICH) {
message("The 'which' command is not available on the system. Unable to search for Python installations. Assuming 'python'... If this is not correct, please point the MUMBLE_PYTHON environment variable at a working Python 2 or Python 3 binary.")
PYTHON=python
}
isEmpty(PYTHON) {
PYTHON=$$system(which python 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python2 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python2.7 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.0 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.1 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.2 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.3 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.4 2>/dev/null)
}
isEmpty(PYTHON) {
PYTHON=$$system(which python3.5 2>/dev/null)
}
isEmpty(PYTHON) {
error("Unable to find the system's Python binary. Some scripts invoked during the Mumble build use Python. You can manually specify it via the MUMBLE_PYTHON environment variable (either 2 or 3).")
}
}
}