mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-02 20:01:48 +08:00
5bf1323378
* add vcpkg-get-python-packages * version stuff * use vcpkg_execute_required_process * use function in mesa. * version stuff * fix the last call which needs to use vcpkg_execute_in_download_mode * version update * set WORKING_DIRECTORY * version stuff * use include_guard; remove HEAD_REF * version stuff * Apply suggestions from code review Co-authored-by: nicole mazzuca <83086508+strega-nil-ms@users.noreply.github.com> * fine tuning after CR * version stuff * add "supports": "native" * version stuff * remove message since vcpkg will tell you that it is unsupported * version stuff * make sure we only do stuff on windows hosts. * version stuff Co-authored-by: nicole mazzuca <83086508+strega-nil-ms@users.noreply.github.com> Co-authored-by: Alexander Neumann <you@example.com>
71 lines
3.0 KiB
CMake
71 lines
3.0 KiB
CMake
#[===[.md:
|
|
# x_vcpkg_get_python_packages
|
|
|
|
Experimental
|
|
Retrieve needed python packages
|
|
|
|
## Usage
|
|
```cmake
|
|
x_vcpkg_get_python_packages(
|
|
PYTHON_EXECUTABLE <path to python binary>
|
|
PACKAGES <packages to aqcuire>...
|
|
)
|
|
```
|
|
## Parameters
|
|
|
|
### PYTHON_EXECUTABLE
|
|
Full path to the python executable
|
|
|
|
### PACKAGES
|
|
List of python packages to acquire
|
|
|
|
#]===]
|
|
include_guard(GLOBAL)
|
|
|
|
function(x_vcpkg_get_python_packages)
|
|
cmake_parse_arguments(PARSE_ARGV 0 arg "" "PYTHON_EXECUTABLE" "PACKAGES")
|
|
|
|
if(NOT DEFINED arg_PYTHON_EXECUTABLE)
|
|
message(FATAL_ERROR "PYTHON_EXECUTABLE must be specified.")
|
|
endif()
|
|
if(NOT DEFINED arg_PACKAGES)
|
|
message(FATAL_ERROR "PACKAGES must be specified.")
|
|
endif()
|
|
if(DEFINED arg_UNPARSED_ARGUMENTS)
|
|
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}")
|
|
endif()
|
|
|
|
get_filename_component(python_dir "${arg_PYTHON_EXECUTABLE}" DIRECTORY)
|
|
|
|
if("${python_dir}" MATCHES "(${DOWNLOADS}|${CURRENT_HOST_INSTALLED_DIR})" AND CMAKE_HOST_WIN32) # inside vcpkg and windows host.
|
|
if(NOT EXISTS "${python_dir}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
if(NOT EXISTS "${python_dir}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}")
|
|
vcpkg_from_github(
|
|
OUT_SOURCE_PATH PYFILE_PATH
|
|
REPO pypa/get-pip
|
|
REF 309a56c5fd94bd1134053a541cb4657a4e47e09d #2019-08-25
|
|
SHA512 bb4b0745998a3205cd0f0963c04fb45f4614ba3b6fcbe97efe8f8614192f244b7ae62705483a5305943d6c8fedeca53b2e9905aed918d2c6106f8a9680184c7a
|
|
)
|
|
vcpkg_execute_required_process(COMMAND "${arg_PYTHON_EXECUTABLE}" "${PYFILE_PATH}/get-pip.py"
|
|
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}")
|
|
endif()
|
|
foreach(_package IN LISTS arg_PACKAGES)
|
|
vcpkg_execute_required_process(COMMAND "${python_dir}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}" install ${_package}
|
|
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}")
|
|
endforeach()
|
|
else()
|
|
foreach(_package IN LISTS arg_PACKAGES)
|
|
vcpkg_execute_required_process(COMMAND "${python_dir}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}" ${_package}
|
|
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}")
|
|
endforeach()
|
|
endif()
|
|
else() # outside vcpkg
|
|
foreach(package IN LISTS arg_PACKAGES)
|
|
vcpkg_execute_in_download_mode(COMMAND ${arg_PYTHON_EXECUTABLE} -c "import ${package}" RESULT_VARIABLE HAS_ERROR)
|
|
if(HAS_ERROR)
|
|
message(FATAL_ERROR "Python package '${package}' needs to be installed for port '${PORT}'.\nComplete list of required python packages: ${arg_PACKAGES}")
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
endfunction()
|