Skip to content
Snippets Groups Projects
Commit 5bea2dd8 authored by Cédric OLIVIER's avatar Cédric OLIVIER
Browse files

feat: add ability to setup build tool version in PYTHON_BUILD_SYSTEM

parent 0add3160
No related branches found
No related tags found
No related merge requests found
...@@ -48,6 +48,8 @@ and/or `setup.py` and/or `requirements.txt`), but the build system might also be ...@@ -48,6 +48,8 @@ and/or `setup.py` and/or `requirements.txt`), but the build system might also be
| `pipenv` | [Pipenv](https://pipenv.pypa.io/) (dependencies only) | | `pipenv` | [Pipenv](https://pipenv.pypa.io/) (dependencies only) |
| `reqfile` | [Requirements Files](https://pip.pypa.io/en/stable/user_guide/#requirements-files) (dependencies only) | | `reqfile` | [Requirements Files](https://pip.pypa.io/en/stable/user_guide/#requirements-files) (dependencies only) |
:warning: You can explicitly set the build tool version by setting `$PYTHON_BUILD_SYSTEM` variable including a [version identification](https://peps.python.org/pep-0440/). For example `PYTHON_BUILD_SYSTEM="poetry==1.1.15"`
## Jobs ## Jobs
### `py-package` job ### `py-package` job
......
...@@ -247,16 +247,16 @@ variables: ...@@ -247,16 +247,16 @@ variables:
case "${PYTHON_BUILD_SYSTEM:-auto}" in case "${PYTHON_BUILD_SYSTEM:-auto}" in
auto) auto)
;; ;;
poetry) poetry*)
log_info "--- Build system explictly declared: Poetry" log_info "--- Build system explictly declared: ${PYTHON_BUILD_SYSTEM}"
return return
;; ;;
setuptools) setuptools*)
log_info "--- Build system explictly declared: Setuptools" log_info "--- Build system explictly declared: ${PYTHON_BUILD_SYSTEM}"
return return
;; ;;
pipenv) pipenv*)
log_info "--- Build system explictly declared: Pipenv" log_info "--- Build system explictly declared: ${PYTHON_BUILD_SYSTEM}"
return return
;; ;;
reqfile) reqfile)
...@@ -280,15 +280,16 @@ variables: ...@@ -280,15 +280,16 @@ variables:
# that might be PEP 517 if a build-backend is specified # that might be PEP 517 if a build-backend is specified
# otherwise it might be only used as configuration file for development tools... # otherwise it might be only used as configuration file for development tools...
build_backend=$(sed -rn 's/^build-backend *= *"([^"]*)".*/\1/p' pyproject.toml) build_backend=$(sed -rn 's/^build-backend *= *"([^"]*)".*/\1/p' pyproject.toml)
if [[ "$build_backend" ]] if [[ "$build_backend" ]]
then then
case "$build_backend" in case "$build_backend" in
poetry.core.masonry.api) poetry.core.masonry.api)
log_info "--- Build system auto-detected: PEP 517 with Poetry backend" log_info "--- Build system auto-detected: PEP 517 with Poetry backend"
export PYTHON_BUILD_SYSTEM="poetry" export PYTHON_BUILD_SYSTEM="poetry"
return return
;; ;;
setuptools.build_meta) setuptools.build_meta)
log_info "--- Build system auto-detected: PEP 517 with Setuptools backend" log_info "--- Build system auto-detected: PEP 517 with Setuptools backend"
export PYTHON_BUILD_SYSTEM="setuptools" export PYTHON_BUILD_SYSTEM="setuptools"
return return
...@@ -318,23 +319,23 @@ variables: ...@@ -318,23 +319,23 @@ variables:
# install requirements # install requirements
function install_requirements() { function install_requirements() {
case "$PYTHON_BUILD_SYSTEM" in case "$PYTHON_BUILD_SYSTEM" in
poetry) poetry*)
if [[ ! -f "poetry.lock" ]]; then if [[ ! -f "poetry.lock" ]]; then
log_warn "Using Poetry but \\e[33;1mpoetry.lock\\e[0m file not found: you shall commit it with your project files" log_warn "Using Poetry but \\e[33;1mpoetry.lock\\e[0m file not found: you shall commit it with your project files"
fi fi
# shellcheck disable=SC2086 # shellcheck disable=SC2086
pip install ${PIP_OPTS} poetry pip install ${PIP_OPTS} "$PYTHON_BUILD_SYSTEM"
poetry install ${PYTHON_EXTRA_DEPS:+--extras "$PYTHON_EXTRA_DEPS"} poetry install ${PYTHON_EXTRA_DEPS:+--extras "$PYTHON_EXTRA_DEPS"}
;; ;;
setuptools) setuptools*)
# shellcheck disable=SC2086 # shellcheck disable=SC2086
pip install ${PIP_OPTS} setuptools pip install ${PIP_OPTS} "$PYTHON_BUILD_SYSTEM"
# shellcheck disable=SC2086 # shellcheck disable=SC2086
pip install ${PIP_OPTS} ".${PYTHON_EXTRA_DEPS:+[$PYTHON_EXTRA_DEPS]}" pip install ${PIP_OPTS} ".${PYTHON_EXTRA_DEPS:+[$PYTHON_EXTRA_DEPS]}"
;; ;;
pipenv) pipenv*)
# shellcheck disable=SC2086 # shellcheck disable=SC2086
pip install ${PIP_OPTS} pipenv pip install ${PIP_OPTS} "$PYTHON_BUILD_SYSTEM"
if [[ ! -f "Pipfile.lock" ]]; then if [[ ! -f "Pipfile.lock" ]]; then
log_warn "Using Pipenv but \\e[33;1mPipfile.lock\\e[0m file not found: you shall commit it with your project files" log_warn "Using Pipenv but \\e[33;1mPipfile.lock\\e[0m file not found: you shall commit it with your project files"
pipenv install --dev --system pipenv install --dev --system
...@@ -363,7 +364,7 @@ variables: ...@@ -363,7 +364,7 @@ variables:
} }
function _run() { function _run() {
if [[ "${PYTHON_BUILD_SYSTEM}" == "poetry" ]] if [[ "${PYTHON_BUILD_SYSTEM}" =~ poetry.* ]]
then then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
if ! command -v poetry > /dev/null; then pip install ${PIP_OPTS} poetry; fi if ! command -v poetry > /dev/null; then pip install ${PIP_OPTS} poetry; fi
...@@ -831,7 +832,7 @@ py-trivy: ...@@ -831,7 +832,7 @@ py-trivy:
- apt-get update - apt-get update
- apt-get install trivy - apt-get install trivy
- | - |
if [[ $PYTHON_BUILD_SYSTEM == "poetry" ]] if [[ "$PYTHON_BUILD_SYSTEM" =~ poetry.* ]]
then then
# When using Poetry, `pip freeze` outputs a requirements.txt with @file URLs for each wheel # When using Poetry, `pip freeze` outputs a requirements.txt with @file URLs for each wheel
# These @file URLs in requirements.txt are not supported by Trivy # These @file URLs in requirements.txt are not supported by Trivy
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment