summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/bldcontrol/sshbecontroller.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/bldcontrol/sshbecontroller.py')
-rw-r--r--bitbake/lib/toaster/bldcontrol/sshbecontroller.py46
1 files changed, 31 insertions, 15 deletions
diff --git a/bitbake/lib/toaster/bldcontrol/sshbecontroller.py b/bitbake/lib/toaster/bldcontrol/sshbecontroller.py
index f9fd51e5f8..45e15392e5 100644
--- a/bitbake/lib/toaster/bldcontrol/sshbecontroller.py
+++ b/bitbake/lib/toaster/bldcontrol/sshbecontroller.py
@@ -80,13 +80,18 @@ class SSHBEController(BuildEnvironmentController):
80 def startBBServer(self, brbe): 80 def startBBServer(self, brbe):
81 assert self.pokydirname and self._pathexists(self.pokydirname) 81 assert self.pokydirname and self._pathexists(self.pokydirname)
82 assert self.islayerset 82 assert self.islayerset
83 print self._shellcmd("bash -c \"source %s/oe-init-build-env %s && DATABASE_URL=%s source toaster start noweb brbe=%s\"" % (self.pokydirname, self.be.builddir, self.dburl, brbe)) 83 cmd = self._shellcmd("bash -c \"source %s/oe-init-build-env %s && DATABASE_URL=%s source toaster start noweb brbe=%s\"" % (self.pokydirname, self.be.builddir, self.dburl, brbe))
84 # FIXME unfortunate sleep 1 - we need to make sure that bbserver is started and the toaster ui is connected 84
85 # but since they start async without any return, we just wait a bit 85 port = "-1"
86 print "Started server" 86 for i in cmd.split("\n"):
87 if i.startswith("Bitbake server address"):
88 port = i.split(" ")[-1]
89 print "Found bitbake server port ", port
90
91
87 assert self.be.sourcedir and self._pathexists(self.be.builddir) 92 assert self.be.sourcedir and self._pathexists(self.be.builddir)
88 self.be.bbaddress = self.be.address.split("@")[-1] 93 self.be.bbaddress = self.be.address.split("@")[-1]
89 self.be.bbport = "8200" 94 self.be.bbport = port
90 self.be.bbstate = BuildEnvironment.SERVER_STARTED 95 self.be.bbstate = BuildEnvironment.SERVER_STARTED
91 self.be.save() 96 self.be.save()
92 97
@@ -99,6 +104,19 @@ class SSHBEController(BuildEnvironmentController):
99 self.be.save() 104 self.be.save()
100 print "Stopped server" 105 print "Stopped server"
101 106
107
108 def _copyFile(self, filepath1, filepath2):
109 p = subprocess.Popen("scp '%s' '%s'" % (filepath1, filepath2), stdout=subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
110 (out, err) = p.communicate()
111 if p.returncode:
112 raise ShellCmdException(err)
113
114 def pullFile(self, local_filename, remote_filename):
115 _copyFile(local_filename, "%s:%s" % (self.be.address, remote_filename))
116
117 def pushFile(self, local_filename, remote_filename):
118 _copyFile("%s:%s" % (self.be.address, remote_filename), local_filename)
119
102 def setLayers(self, bitbakes, layers): 120 def setLayers(self, bitbakes, layers):
103 """ a word of attention: by convention, the first layer for any build will be poky! """ 121 """ a word of attention: by convention, the first layer for any build will be poky! """
104 122
@@ -110,7 +128,7 @@ class SSHBEController(BuildEnvironmentController):
110 gitrepos = {} 128 gitrepos = {}
111 gitrepos[bitbakes[0].giturl] = [] 129 gitrepos[bitbakes[0].giturl] = []
112 gitrepos[bitbakes[0].giturl].append( ("bitbake", bitbakes[0].dirpath, bitbakes[0].commit) ) 130 gitrepos[bitbakes[0].giturl].append( ("bitbake", bitbakes[0].dirpath, bitbakes[0].commit) )
113 131
114 for layer in layers: 132 for layer in layers:
115 # we don't process local URLs 133 # we don't process local URLs
116 if layer.giturl.startswith("file://"): 134 if layer.giturl.startswith("file://"):
@@ -171,17 +189,15 @@ class SSHBEController(BuildEnvironmentController):
171 if not self._pathexists(bblayerconf): 189 if not self._pathexists(bblayerconf):
172 raise BuildSetupException("BE is not consistent: bblayers.conf file missing at %s" % bblayerconf) 190 raise BuildSetupException("BE is not consistent: bblayers.conf file missing at %s" % bblayerconf)
173 191
174 conflines = open(bblayerconf, "r").readlines() 192 import uuid
193 local_bblayerconf = "/tmp/" + uuid.uuid4() + "-bblayer.conf"
175 194
176 bblayerconffile = open(bblayerconf, "w") 195 self.pullFile(bblayerconf, local_bblayerconf)
177 for i in xrange(len(conflines)): 196
178 if conflines[i].startswith("# line added by toaster"): 197 BuildEnvironmentController._updateBBLayers(local_bblayerconf, layerlist)
179 i += 2 198 self.pushFile(local_bblayerconf, bblayerconf)
180 else:
181 bblayerconffile.write(conflines[i])
182 199
183 bblayerconffile.write("\n# line added by toaster build control\nBBLAYERS = \"" + " ".join(layerlist) + "\"") 200 os.unlink(local_bblayerconf)
184 bblayerconffile.close()
185 201
186 self.islayerset = True 202 self.islayerset = True
187 return True 203 return True