Merge pull request #523 from modoboa/dynamic-requirements
Fetch requirements dynamically
This commit is contained in:
@@ -82,6 +82,16 @@ def install_package_from_repository(name, url, vcs="git", venv=None, **kwargs):
|
|||||||
utils.exec_cmd(cmd, **kwargs)
|
utils.exec_cmd(cmd, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def install_package_from_remote_requirements(url, venv=None, **kwargs):
|
||||||
|
"""Install a Python package from a file."""
|
||||||
|
cmd = "{} install {} {}".format(
|
||||||
|
get_pip_path(venv),
|
||||||
|
"-r",
|
||||||
|
url
|
||||||
|
)
|
||||||
|
utils.exec_cmd(cmd, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def setup_virtualenv(path, sudo_user=None, python_version=2):
|
def setup_virtualenv(path, sudo_user=None, python_version=2):
|
||||||
"""Install a virtualenv if needed."""
|
"""Install a virtualenv if needed."""
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
|
|||||||
@@ -96,15 +96,6 @@ class Modoboa(base.Installer):
|
|||||||
packages.append("{}{}".format(extension, req_version))
|
packages.append("{}{}".format(extension, req_version))
|
||||||
else:
|
else:
|
||||||
packages.append(extension)
|
packages.append(extension)
|
||||||
# Temp fix for django-braces
|
|
||||||
python.install_package(
|
|
||||||
"django-braces", self.venv_path, upgrade=self.upgrade,
|
|
||||||
sudo_user=self.user
|
|
||||||
)
|
|
||||||
if self.dbengine == "postgres":
|
|
||||||
packages.append("psycopg2-binary\<2.9")
|
|
||||||
else:
|
|
||||||
packages.append("mysqlclient")
|
|
||||||
if sys.version_info.major == 2 and sys.version_info.micro < 9:
|
if sys.version_info.major == 2 and sys.version_info.micro < 9:
|
||||||
# Add extra packages to fix the SNI issue
|
# Add extra packages to fix the SNI issue
|
||||||
packages += ["pyOpenSSL"]
|
packages += ["pyOpenSSL"]
|
||||||
@@ -114,11 +105,25 @@ class Modoboa(base.Installer):
|
|||||||
sudo_user=self.user,
|
sudo_user=self.user,
|
||||||
beta=self.config.getboolean("modoboa", "install_beta")
|
beta=self.config.getboolean("modoboa", "install_beta")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Install version specific modules to the venv
|
||||||
|
modoboa_version = ".".join(str(i) for i in python.get_package_version(
|
||||||
|
"modoboa", self.venv_path, sudo_user=self.user
|
||||||
|
))
|
||||||
|
# Database:
|
||||||
|
db_file = "postgresql"
|
||||||
|
if self.dbengine != "postgres":
|
||||||
|
db_file = "mysql"
|
||||||
|
db_file += "-requirements.txt"
|
||||||
|
|
||||||
|
python.install_package_from_remote_requirements(
|
||||||
|
f"https://raw.githubusercontent.com/modoboa/modoboa/{modoboa_version}/{db_file}",
|
||||||
|
venv=self.venv_path)
|
||||||
|
# Dev mode:
|
||||||
if self.devmode:
|
if self.devmode:
|
||||||
# FIXME: use dev-requirements instead
|
python.install_package_from_remote_requirements(
|
||||||
python.install_packages(
|
f"https://raw.githubusercontent.com/modoboa/modoboa/{modoboa_version}/dev-requirements.txt",
|
||||||
["django-bower", "django-debug-toolbar"], self.venv_path,
|
venv=self.venv_path)
|
||||||
upgrade=self.upgrade, sudo_user=self.user)
|
|
||||||
|
|
||||||
def _deploy_instance(self):
|
def _deploy_instance(self):
|
||||||
"""Deploy Modoboa."""
|
"""Deploy Modoboa."""
|
||||||
|
|||||||
Reference in New Issue
Block a user