Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 40 additions & 11 deletions src/bci_build/package/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import datetime
from dataclasses import dataclass
from itertools import product
from typing import Literal

from bci_build.container_attributes import SupportLevel
from bci_build.containercrate import ContainerCrate
from bci_build.os_version import CAN_BE_LATEST_OS_VERSION
from bci_build.os_version import _SUPPORTED_UNTIL_SLE
from bci_build.os_version import OsVersion
Expand Down Expand Up @@ -40,7 +42,9 @@ def _system_python(os_version: OsVersion) -> _PYTHON_VERSIONS:
return "3.6" if os_version.is_sle15 else "3.13"


def _get_python_kwargs(py3_ver: _PYTHON_VERSIONS, os_version: OsVersion):
def _get_python_kwargs(
py3_ver: _PYTHON_VERSIONS, os_version: OsVersion, build_flavor: str | None = None
):
is_system_py: bool = py3_ver == _system_python(os_version)
py3_ver_nodots = py3_ver.replace(".", "")

Expand Down Expand Up @@ -76,20 +80,32 @@ def _get_python_kwargs(py3_ver: _PYTHON_VERSIONS, os_version: OsVersion):
"PIPX_MAN_DIR": "/usr/local/man",
}

package_list = (
(["lifecycle-data-sle-module-python3"] if os_version.is_sle15 else [])
+ os_version.lifecycle_data_pkg
+ [py3]
+ [pip3]
)
if build_flavor != "micro":
package_list = (
*package_list,
f"{py3}-devel",
*os_version.common_devel_packages,
*([f"{py3}-wheel"] if has_wheel else []),
*([f"{py3}-pipx"] if has_pipx else []),
)

kwargs = {
"name": "python",
"pretty_name": f"Python {py3_ver} development",
"pretty_name": (
f"Python {py3_ver} development"
if build_flavor != "micro"
else f"Python {py3_ver} {build_flavor} runtime"
),
"version": py3_ver_replacement,
"tag_version": py3_ver,
"env": py_env,
"package_list": (
[f"{py3}-devel", py3, pip3]
+ os_version.common_devel_packages
+ ([f"{py3}-wheel"] if has_wheel else [])
+ ([f"{py3}-pipx"] if has_pipx else [])
+ (["lifecycle-data-sle-module-python3"] if os_version.is_sle15 else [])
+ os_version.lifecycle_data_pkg
),
"package_list": sorted(package_list),
"replacements_via_service": [
Replacement(
regex_in_build_description=py3_ver_replacement,
Expand Down Expand Up @@ -165,9 +181,22 @@ def _get_python_kwargs(py3_ver: _PYTHON_VERSIONS, os_version: OsVersion):
additional_versions=["3"]
+ (["3.13-" + os_version.dist_id] if os_version.dist_id else []),
)
for os_version in (OsVersion.SP7, OsVersion.SL16_0)
for os_version in (OsVersion.SP7,)
] + [
PythonDevelopmentContainer(
**_get_python_kwargs("3.13", os_version, build_flavor=flavor),
package_name="python-3.13-image",
build_flavor=flavor,
from_target_image=generate_from_image_tag(
os_version, "bci-micro" if flavor == "micro" else "bci-base"
),
is_latest=os_version in CAN_BE_LATEST_OS_VERSION,
)
for os_version, flavor in product((OsVersion.SL16_0,), ("base", "micro"))
]

PYTHON_CRATE = ContainerCrate(PYTHON_3_13_CONTAINERS)

_CI_PYTHON = ("3.13", "313")


Expand Down