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)
|
||||
|
||||
|
||||
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):
|
||||
"""Install a virtualenv if needed."""
|
||||
if os.path.exists(path):
|
||||
|
||||
@@ -96,15 +96,6 @@ class Modoboa(base.Installer):
|
||||
packages.append("{}{}".format(extension, req_version))
|
||||
else:
|
||||
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:
|
||||
# Add extra packages to fix the SNI issue
|
||||
packages += ["pyOpenSSL"]
|
||||
@@ -114,11 +105,6 @@ class Modoboa(base.Installer):
|
||||
sudo_user=self.user,
|
||||
beta=self.config.getboolean("modoboa", "install_beta")
|
||||
)
|
||||
if self.devmode:
|
||||
# FIXME: use dev-requirements instead
|
||||
python.install_packages(
|
||||
["django-bower", "django-debug-toolbar"], self.venv_path,
|
||||
upgrade=self.upgrade, sudo_user=self.user)
|
||||
|
||||
def _deploy_instance(self):
|
||||
"""Deploy Modoboa."""
|
||||
@@ -210,6 +196,24 @@ class Modoboa(base.Installer):
|
||||
def setup_user(self):
|
||||
super().setup_user()
|
||||
self._setup_venv()
|
||||
# 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:
|
||||
python.install_package_from_remote_requirements(
|
||||
f"https://raw.githubusercontent.com/modoboa/modoboa/{modoboa_version}/dev-requirements.txt",
|
||||
venv=self.venv_path)
|
||||
|
||||
def get_config_files(self):
|
||||
"""Return appropriate path."""
|
||||
|
||||
Reference in New Issue
Block a user