File: //proc/thread-self/root/opt/saltstack/salt/lib/python3.10/site-packages/relenv/build/darwin.py
# Copyright 2025 Broadcom.
# SPDX-License-Identifier: Apache-2
"""
The darwin build process.
"""
import io
from ..common import arches, DARWIN, MACOS_DEVELOPMENT_TARGET
from .common import runcmd, finalize, build_openssl, build_sqlite, builds
ARCHES = arches[DARWIN]
def populate_env(env, dirs):
"""
Make sure we have the correct environment variables set.
:param env: The environment dictionary
:type env: dict
:param dirs: The working directories
:type dirs: ``relenv.build.common.Dirs``
"""
env["CC"] = "clang"
ldflags = [
"-Wl,-rpath,{prefix}/lib",
"-L{prefix}/lib",
]
env["LDFLAGS"] = " ".join(ldflags).format(prefix=dirs.prefix)
env["MACOSX_DEPLOYMENT_TARGET"] = MACOS_DEVELOPMENT_TARGET
cflags = [
"-L{prefix}/lib",
"-I{prefix}/include",
"-I{prefix}/include/readline",
]
env["CFLAGS"] = " ".join(cflags).format(prefix=dirs.prefix)
def build_python(env, dirs, logfp):
"""
Run the commands to build Python.
:param env: The environment dictionary
:type env: dict
:param dirs: The working directories
:type dirs: ``relenv.build.common.Dirs``
:param logfp: A handle for the log file
:type logfp: file
"""
env["LDFLAGS"] = "-Wl,-rpath,{prefix}/lib {ldflags}".format(
prefix=dirs.prefix, ldflags=env["LDFLAGS"]
)
runcmd(
[
"./configure",
"-v",
"--prefix={}".format(dirs.prefix),
"--with-openssl={}".format(dirs.prefix),
"--enable-optimizations",
"--disable-test-modules",
],
env=env,
stderr=logfp,
stdout=logfp,
)
with io.open("Modules/Setup", "a+") as fp:
fp.seek(0, io.SEEK_END)
fp.write("*disabled*\n" "_tkinter\n" "nsl\n" "ncurses\n" "nis\n")
runcmd(
["sed", "s/#zlib/zlib/g", "Modules/Setup"], env=env, stderr=logfp, stdout=logfp
)
runcmd(["make", "-j8"], env=env, stderr=logfp, stdout=logfp)
runcmd(["make", "install"], env=env, stderr=logfp, stdout=logfp)
build = builds.add("darwin", populate_env=populate_env, version="3.10.16")
build.add(
"openssl",
build_func=build_openssl,
download={
"url": "https://github.com/openssl/openssl/releases/download/openssl-{version}/openssl-{version}.tar.gz",
"version": "3.2.4",
"checksum": "2247802a1193c0f8eb41c870e8de45a2241422d5",
},
)
build.add(
"XZ",
download={
"fallback_url": "http://tukaani.org/xz/xz-{version}.tar.gz",
"url": "https://woz.io/relenv/dependencies/xz-{version}.tar.gz",
"version": "5.6.2",
"checksum": "0d6b10e4628fe08e19293c65e8dbcaade084a083",
},
)
build.add(
name="SQLite",
build_func=build_sqlite,
download={
"url": "https://sqlite.org/2024/sqlite-autoconf-{version}.tar.gz",
"fallback_url": "https://woz.io/relenv/dependencies/sqlite-autoconf-{version}.tar.gz",
"version": "3460100",
"checksum": "1fdbada080f3285ac864c314bfbfc581b13e804b",
},
)
build.add(
"python",
build_func=build_python,
wait_on=[
"openssl",
"XZ",
"SQLite",
],
download={
"url": "https://www.python.org/ftp/python/{version}/Python-{version}.tar.xz",
"fallback_url": "https://woz.io/relenv/dependencies/Python-{version}.tar.gz",
"version": build.version,
"checksum": "401e6a504a956c8f0aab76c4f3ad9df601a83eb1",
},
)
build.add(
"relenv-finalize",
build_func=finalize,
wait_on=[
"python",
],
)
build = build.copy(
version="3.11.11", checksum="acf539109b024d3c5f1fc63d6e7f08cd294ba56d"
)
builds.add("darwin", builder=build)
build = build.copy(
version="3.12.9", checksum="465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb"
)
builds.add("darwin", builder=build)
build = build.copy(
version="3.13.2", checksum="da39a3ee5e6b4b0d3255bfef95601890afd80709"
)
builds.add("darwin", builder=build)