Skip to content
Snippets Groups Projects

Added possibility to import projects with CMT config from gitlab

Merged Ben Couturier requested to merge LBCORE-1374 into master
1 file
+ 46
5
Compare changes
  • Side-by-side
  • Inline
@@ -99,6 +99,19 @@ class GitlabProject:
raise
return data
def getProjectCMT(self):
self.projectcmturl = self.getURL("cmt/project.cmt")
self.log.debug("Getting: %s" % self.projectcmturl)
try:
response = urllib2.urlopen(self.projectcmturl)
data = response.read()
self.log.debug("Got: %s" % self.projectcmturl)
except:
self.log.warning("Could not find Project.cmt at: %s" % self.projectcmturl)
raise
return data
def getProjectConfig(self):
""" URL folows pattern:
https://gitlab.cern.ch/lhcb-dirac/LHCbDIRAC/raw/v8r6p3/dist-tools/projectConfig.json
@@ -122,6 +135,18 @@ class GitlabProject:
deps.append((l[0], l[1]))
return deps
def getDepsFromProjectCMT(self, data):
deps = []
for l in data.splitlines():
m = re.match("\s*use\s+(\w+)\s+([\w\*]+)", l)
if m != None:
dp = m.group(1)
dv = m.group(2)
# removing the project name from the version if there
dv = dv.replace(dp + "_", "")
deps.append((dp, dv))
return deps
def getDependencies(self):
""" Returns the list of project dependencies """
pupper = self.project.upper()
@@ -136,13 +161,28 @@ class GitlabProject:
return []
else:
# For all other projects use the gaudi_project macro
# First we try to find teh CMakeLists
# Second we try the projectConfig.json
# Third we try the project.cmt for legacy projects
try:
self.log.warning("Looking for CMakeLists.txt")
data = self.getCMakeLists()
deplist = getGaudiUse(data)
except:
data = self.getProjectConfig()
deplist = self.getDepsFromProjectConfig(data)
return deplist
try:
self.log.warning("Looking for projectConfig.json")
data = self.getProjectConfig()
deplist = self.getDepsFromProjectConfig(data)
return deplist
except:
try:
self.log.warning("Looking for legacy CMT project.cmt")
data = self.getProjectCMT()
deplist = self.getDepsFromProjectCMT(data)
return deplist
except:
self.log.error("Could not find project dependency metadata")
raise Exception("Could not find project metadata")
return []
@@ -238,7 +278,9 @@ class AppImporter:
return node_parent
##
# Main entry point for the importer
#
def processProjectVersion(self, p, v, alreadyDone = [], recreate=False, sourceuri=None):
""" Get the dependencies for a single project """
# Cleanup the project name and version and get the SVN URL
@@ -262,7 +304,6 @@ class AppImporter:
# we'll use this hack
self.log.warning("Project %s is in Gitlab URI:%s" % (proj, sourceuri))
return self.gitlabProcessProjectVersion(p, v, alturi=sourceuri, saveURIinPV=forcedSourceURI)
# Getting the project.cmt file with dependencies
if proj.upper() == "GANGA":
projcmt = self.getGangaProjectCMT(ver)
Loading