Skip to content

Commit

Permalink
feat: define the environment setting script location area
Browse files Browse the repository at this point in the history
  • Loading branch information
atsareg committed Jul 13, 2023
1 parent e279e4a commit e31d71f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 6 deletions.
26 changes: 21 additions & 5 deletions Pilot/pilotCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def __init__(self, pilotParams):
import socket
import filecmp
import shutil
import platform
from collections import Counter
from distutils.version import LooseVersion

Expand Down Expand Up @@ -256,11 +257,26 @@ def _locateInstallationScript(self):
except OSError:
pass

def _setupFromPreinstalledLocation(self):
def _getPreinstalledEnvScript(self):
""" Get preinstalled environment script if any """

arch = platform.system() + "-" + platform.machine()
preinstalledEnvScript = self.pp.preinstalledEnv
if not preinstalledEnvScript and self.pp.preinstalledEnvPrefix:
version = self.pp.releaseVersion or "pro"
preinstalledEnvScript = os.path.join(self.pp.preinstalledEnvPrefix, version, arch, "diracosrc")

if os.path.isfile(preinstalledEnvScript):
self.pp.preinstalledEnv = preinstalledEnvScript
return preinstalledEnvScript

return None

def _setupFromPreinstalledLocation(self, preinstalledEnvScript):
""" Set up a preinstalled DIRAC client"""

# setting up the client environment
retCode, output = self.executeAndGetOutput('bash -c "source %s && env"' % self.pp.preinstalledEnv, self.pp.installEnv)
retCode, output = self.executeAndGetOutput('bash -c "source %s && env"' % preinstalledEnvScript,
self.pp.installEnv)
self.pp.installEnv = {}
if retCode:
self.log.error("Could not parse the diracos/diracosrc file [ERROR %d]" % retCode)
Expand Down Expand Up @@ -426,8 +442,8 @@ def _installDIRACpy3(self):
def execute(self):
"""What is called all the time"""

if self.pp.preinstalledEnv and os.path.exists(self.pp.preinstalledEnv):
self._setupFromPreinstalledLocation()
if preinstalledEnvScript := self._getPreinstalledEnvScript():
self._setupFromPreinstalledLocation(preinstalledEnvScript)
elif self.pp.pythonVersion == "27":
self._setInstallOptions()
self._locateInstallationScript()
Expand Down
6 changes: 5 additions & 1 deletion Pilot/pilotTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,7 @@ def __init__(self):
# If DIRAC is preinstalled this file will receive the updates of the local configuration
self.localConfigFile = "pilot.cfg"
self.preinstalledEnv = ""
self.preinstalledEnvPrefix = ""
self.executeCmd = False
self.configureScript = "dirac-configure"
self.architectureScript = "dirac-platform"
Expand Down Expand Up @@ -758,7 +759,8 @@ def __init__(self):
("", "pythonVersion=", "Python version of DIRAC client to install"),
("", "defaultsURL=", "user-defined URL for global config"),
("", "pilotUUID=", "pilot UUID"),
("", "preinstalledEnv=", "preinstalled pilot environment script location")
("", "preinstalledEnv=", "preinstalled pilot environment script location"),
("", "preinstalledEnvPrefix=", "preinstalled pilot environment area prefix"),
)

# Possibly get Setup and JSON URL/filename from command line
Expand Down Expand Up @@ -895,6 +897,8 @@ def __initCommandLine2(self):
self.defaultsURL = v
elif o == "--preinstalledEnv":
self.preinstalledEnv = v
elif o == "--preinstalledEnvPrefix":
self.preinstalledEnvPrefix = v

def __initJSON(self):
"""Retrieve pilot parameters from the content of json file. The file should be something like:
Expand Down

0 comments on commit e31d71f

Please sign in to comment.