Hi,

On Sat, Dec 19, 2015 at 8:57 PM, sujith h <[email protected]> wrote:

> Hi,
>
> On Fri, Dec 18, 2015 at 7:16 PM, Ed Bartosh <[email protected]>
> wrote:
>
>> Hi Sujith,
>>
>> Can you split your changes please?
>> I'd suggest to at least separate backend changes from frontend ones.
>>
>> Having uihelper.py changes in a separate commit would be nice too.
>> It looks like you've spotted correctly that findServerDetails is not
>> used anywhere in bitbake code. You can remove it in a separate commit as
>> it looks unrelated to the rest of the patch.
>>
>> +1 for Michael's suggestion to use build controller.
>>
>
>  The problem I see using build controller is:
>
> I have tried with the build controller approach earlier and below are my
> findings:
> Lets say if I try to use getBuildEnvironmentController function as:
>
> localhostbctrl = localhostbecontroller.LocalhostBEController(be) # in
> toastergui/views.py
> localhostbctrl.getBBController()
>
> Then the failure starts when the control reaches function startBBServer
> and the initial assert fails.
>
> Even if I try to add a wrapper function known as cancelBuild in
> bbcontroller.py:
>
>     def conncetToServer(self):
>         server = bb.server.xmlrpc.BitBakeXMLRPCClient()
>         server.initServer()
>         server.saveConnectionDetails("%s:%s" % (self.be.bbaddress,
> self.be.bbport))
>         self.connection = server.establishConnection([])
>
>         self.be.bbtoken = self.connection.transport.connection_token
>         self.be.save()
>
>         return BitbakeController(self.connection)
>
> This would fail in server.establishConnection line. Because internally it
> does call connect function in xmlrpc.py which does call
> uievent.BBUIEventQueue. This call causes exception, because in
> registerEventHandler function  there is a line:
>
>  if (self.cooker.state in [bb.cooker.state.parsing,
> bb.cooker.state.running]):
>
> I couldn't tackle this situation and that is the reason why I opted for
> another approach from uihelper's function findServerDetails.
> Is there any other way using which I can tackle this situation from
> bbcontroller.py? As per my investigation the problem bubbles around with
> registerEventHandler function with this approach.
>

Another approach which I followed was ( using bbcontroller.py ) by writing
a new function getBBServer:

    def getBBServer(self, host, port):
        """ returns a connection from running server. This helps in
cancellation of bitbake from
            toaster UI.
        """
        server, transport = bb.server.xmlrpc._create_server(host, port)
        return server

And then call this function from toastergui/views.py file:

                        br =
BuildRequest.objects.select_for_update().get(project = prj, pk = i,
state__lte = BuildRequest.REQ_INPROGRESS)
                        bbctrl =
bbcontroller.BuildEnvironmentController(br.environment)
                        server =
bbctrl.getBBServer(br.environment.bbaddress, br.environment.bbport)
                        logger.warning(br.environment.LOCK_STATE)
                        server.runCommand(["stateForceShutdown"])
                        while True:
                            if len(BuildRequest.objects.get(pk = i
).build.errors) > 0:
                                br.state = BuildRequest.REQ_DELETED
                                br.save()
                                build = BuildRequest.objects.get(pk = i
).build
                                build.outcome = 0
                                build.save()
                                break


Nothing else is coming into my mind. Any pointers?

>
> Thanks,
> Sujith H
>
>
>> On Thu, Dec 17, 2015 at 10:26:11PM +0530, sujith h wrote:
>> > Hi,
>> >
>> > I have posted my changes in:
>> >
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/toaster-build-cancel
>> >
>> > Kindly review my changes and let me know if I have to make changes. I
>> would
>> > be happy to do so.
>> >
>> > Thanks for all helping hand from RP, Ed, Michael, Belen and Paul.
>> >
>> > Thanks,
>> > Sujith H
>>
>> --
>> Regards,
>> Ed
>>
>
>
>
> --
> സുജിത് ഹരിദാസന്
> Bangalore
> <Project>Contributor to KDE project
> http://fci.wikia.com/wiki/Anti-DRM-Campaign
> <Blog> http://sujithh.info
>



-- 
സുജിത് ഹരിദാസന്
Bangalore
<Project>Contributor to KDE project
http://fci.wikia.com/wiki/Anti-DRM-Campaign
<Blog> http://sujithh.info
-- 
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to