mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Allow choosing static vs base requirements.
Additionally, detect if setup is running under a tiamat build(single binary). If so, provide the locked requirements for linux instead of the base requirements. Windows and macOS already provide locked requirements, running under pop-build or not.
This commit is contained in:
parent
49556caf05
commit
c3ff9de942
1 changed files with 74 additions and 29 deletions
103
setup.py
103
setup.py
|
@ -91,7 +91,13 @@ else:
|
||||||
"joyent_"
|
"joyent_"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Store a reference whether if we're running under Python 3 and above
|
USE_STATIC_REQUIREMENTS = os.environ.get("USE_STATIC_REQUIREMENTS")
|
||||||
|
if USE_STATIC_REQUIREMENTS is not None:
|
||||||
|
USE_STATIC_REQUIREMENTS = USE_STATIC_REQUIREMENTS == "1"
|
||||||
|
# Are we running pop-build
|
||||||
|
if "TIAMAT_BUILD" in os.environ:
|
||||||
|
USE_STATIC_REQUIREMENTS = True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Add the esky bdist target if the module is available
|
# Add the esky bdist target if the module is available
|
||||||
# may require additional modules depending on platform
|
# may require additional modules depending on platform
|
||||||
|
@ -110,14 +116,29 @@ SALT_VERSION_HARDCODED = os.path.join(
|
||||||
SALT_SYSPATHS_HARDCODED = os.path.join(
|
SALT_SYSPATHS_HARDCODED = os.path.join(
|
||||||
os.path.abspath(SETUP_DIRNAME), "salt", "_syspaths.py"
|
os.path.abspath(SETUP_DIRNAME), "salt", "_syspaths.py"
|
||||||
)
|
)
|
||||||
SALT_REQS = os.path.join(os.path.abspath(SETUP_DIRNAME), "requirements", "base.txt")
|
SALT_BASE_REQUIREMENTS = [
|
||||||
SALT_CRYPTO_REQS = os.path.join(
|
os.path.join(os.path.abspath(SETUP_DIRNAME), "requirements", "base.txt"),
|
||||||
os.path.abspath(SETUP_DIRNAME), "requirements", "crypto.txt"
|
# pyzmq needs to be installed regardless of the salt transport
|
||||||
)
|
os.path.join(os.path.abspath(SETUP_DIRNAME), "requirements", "zeromq.txt"),
|
||||||
SALT_ZEROMQ_REQS = os.path.join(
|
os.path.join(os.path.abspath(SETUP_DIRNAME), "requirements", "crypto.txt"),
|
||||||
os.path.abspath(SETUP_DIRNAME), "requirements", "zeromq.txt"
|
]
|
||||||
)
|
SALT_LINUX_LOCKED_REQS = [
|
||||||
SALT_OSX_REQS = [
|
# Linux packages defined locked requirements
|
||||||
|
os.path.join(
|
||||||
|
os.path.abspath(SETUP_DIRNAME),
|
||||||
|
"requirements",
|
||||||
|
"static",
|
||||||
|
"pkg",
|
||||||
|
"py{}.{}".format(*sys.version_info),
|
||||||
|
"linux.txt",
|
||||||
|
)
|
||||||
|
]
|
||||||
|
SALT_OSX_REQS = SALT_BASE_REQUIREMENTS + [
|
||||||
|
os.path.abspath(SETUP_DIRNAME),
|
||||||
|
"requirements",
|
||||||
|
"darwin.txt",
|
||||||
|
]
|
||||||
|
SALT_OSX_LOCKED_REQS = [
|
||||||
# OSX packages already defined locked requirements
|
# OSX packages already defined locked requirements
|
||||||
os.path.join(
|
os.path.join(
|
||||||
os.path.abspath(SETUP_DIRNAME),
|
os.path.abspath(SETUP_DIRNAME),
|
||||||
|
@ -128,7 +149,12 @@ SALT_OSX_REQS = [
|
||||||
"darwin.txt",
|
"darwin.txt",
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
SALT_WINDOWS_REQS = [
|
SALT_WINDOWS_REQS = SALT_BASE_REQUIREMENTS + [
|
||||||
|
os.path.abspath(SETUP_DIRNAME),
|
||||||
|
"requirements",
|
||||||
|
"windows.txt",
|
||||||
|
]
|
||||||
|
SALT_WINDOWS_LOCKED_REQS = [
|
||||||
# Windows packages already defined locked requirements
|
# Windows packages already defined locked requirements
|
||||||
os.path.join(
|
os.path.join(
|
||||||
os.path.abspath(SETUP_DIRNAME),
|
os.path.abspath(SETUP_DIRNAME),
|
||||||
|
@ -469,9 +495,9 @@ class DownloadWindowsDlls(Command):
|
||||||
|
|
||||||
# pylint: enable=no-name-in-module
|
# pylint: enable=no-name-in-module
|
||||||
else:
|
else:
|
||||||
from pip._internal.utils.logging import (
|
from pip._internal.utils.logging import ( # pylint: disable=no-name-in-module
|
||||||
indent_log,
|
indent_log,
|
||||||
) # pylint: disable=no-name-in-module
|
)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# TODO: Impliment indent_log here so we don't require pip
|
# TODO: Impliment indent_log here so we don't require pip
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
|
@ -493,9 +519,10 @@ class DownloadWindowsDlls(Command):
|
||||||
"Downloading {}.dll to {} from {}".format(fname, fdest, furl)
|
"Downloading {}.dll to {} from {}".format(fname, fdest, furl)
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
import requests
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
with closing(requests.get(furl, stream=True)) as req:
|
with closing(requests.get(furl, stream=True)) as req:
|
||||||
if req.status_code == 200:
|
if req.status_code == 200:
|
||||||
with open(fdest, "wb") as wfh:
|
with open(fdest, "wb") as wfh:
|
||||||
|
@ -1152,24 +1179,42 @@ class SaltDistribution(distutils.dist.Distribution):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _property_install_requires(self):
|
def _property_install_requires(self):
|
||||||
|
install_requires = []
|
||||||
|
if USE_STATIC_REQUIREMENTS is True:
|
||||||
|
# We've been explicitly asked to use static requirements
|
||||||
|
if IS_OSX_PLATFORM:
|
||||||
|
for reqfile in SALT_OSX_LOCKED_REQS:
|
||||||
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
|
|
||||||
if IS_OSX_PLATFORM:
|
elif IS_WINDOWS_PLATFORM:
|
||||||
install_requires = []
|
for reqfile in SALT_WINDOWS_LOCKED_REQS:
|
||||||
for reqfile in SALT_OSX_REQS:
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
install_requires += _parse_requirements_file(reqfile)
|
else:
|
||||||
|
for reqfile in SALT_LINUX_LOCKED_REQS:
|
||||||
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
return install_requires
|
return install_requires
|
||||||
|
elif USE_STATIC_REQUIREMENTS is False:
|
||||||
if IS_WINDOWS_PLATFORM:
|
# We've been explicitly asked NOT to use static requirements
|
||||||
install_requires = []
|
if IS_OSX_PLATFORM:
|
||||||
for reqfile in SALT_WINDOWS_REQS:
|
for reqfile in SALT_OSX_REQS:
|
||||||
install_requires += _parse_requirements_file(reqfile)
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
return install_requires
|
elif IS_WINDOWS_PLATFORM:
|
||||||
|
for reqfile in SALT_WINDOWS_REQS:
|
||||||
install_requires = _parse_requirements_file(SALT_REQS)
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
|
else:
|
||||||
if self.salt_transport == "zeromq":
|
for reqfile in SALT_BASE_REQUIREMENTS:
|
||||||
install_requires += _parse_requirements_file(SALT_CRYPTO_REQS)
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
install_requires += _parse_requirements_file(SALT_ZEROMQ_REQS)
|
else:
|
||||||
|
# This is the old and default behavior
|
||||||
|
if IS_OSX_PLATFORM:
|
||||||
|
for reqfile in SALT_OSX_LOCKED_REQS:
|
||||||
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
|
elif IS_WINDOWS_PLATFORM:
|
||||||
|
for reqfile in SALT_WINDOWS_LOCKED_REQS:
|
||||||
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
|
else:
|
||||||
|
for reqfile in SALT_BASE_REQUIREMENTS:
|
||||||
|
install_requires += _parse_requirements_file(reqfile)
|
||||||
return install_requires
|
return install_requires
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Add table
Reference in a new issue