Bug 3424

Summary: Add remote project support for the bitbake commander type project and run build using hob on a remote linux host
Product: [Yocto Project Subprojects] Eclipse Plugin Reporter: Jessica <jessica.zhang>
Component: eclipse-pluginAssignee: Todor Minchev <todor.minchev>
Status: CLOSED OBSOLETE QA Contact:
Severity: enhancement    
Priority: Medium CC: ioanax.grigoropol, mober.at, yp.ep.watcher, yp.watcher
Version: 1.4   
Target Milestone: Future   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Yes (doc changes required)
Bug Depends on: 4362    
Bug Blocks: 4303    

Description Jessica 2012-11-13 22:58:05 UTC
Similar to feature of 3210, except the remote project will reside on a linux box and the build should be done via hob against the meta-data on the linux box
Comment 1 Ioana Grigoropol 2012-12-04 10:48:27 UTC
Status:
- Run commands in a synchronous way in order to wait for the output & parse it
  - use a single hostShell per project, launchShell method & writeToShell – RSE API:  - bitbake session is maintained
      - only one terminal per project 
      - output from commands is send asynchronously
      - in order to wait for command output, we must wait for the AbstractHostShellOutputReader.isFinished() method
        - update : 
           - do not use isFinished() because it is intended to block waiting for input & use a simple semaphore mechanism instead
           - same approach used for remote should be used for LocalHostShell
- Store association of remote connections & Shell
   - issues:  - Only one command can be ran at one point
              - If  there are multiple projects using the same connection the shell will be shared between them & and sourcing of oe-init-build-env  for each project might cause project builds to fail
Comment 2 Ioana Grigoropol 2012-12-04 15:21:43 UTC
-  Add fixes for showing progress information for long time running tasks on wizards for Bitbake Commander project & Bitbake recipe
  - run project creation in a new thread, and update the monitor from the event handler in a asynchronous way
  - use a blocking way to wait to finish reading command outputs
  - When searching for the desired output through the existing lines, use the prompt + command (without any whitespaces) because an extra character will be inserted 
- Add fixes for the validation for the location & name of a new Bitbake Commander in a new repo clone or an existing one

- Trying to find a way to catch and treat the exception that is thrown when Eclipse is restarted (missing .project)
  - seems that this is a known workaround for the RSE plugin BUGS : bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=181998 and https://bugs.eclipse.org/bugs/show_bug.cgi?id=182006 
  - A fix for this would also catch the exceptions thrown when refreshing a poky project (encountering resources with invalid names)
Comment 3 Ioana Grigoropol 2012-12-06 15:12:23 UTC
Update:

- when sending a command to the remote box, the implemented mechanism is awaiting to see a command prompt (user@hostname) followed by a '#' or  a '$'
   - this rule will not always apply(as in the case of Linux connecting to localhost) and will cause the very first command to block the whole application.
   - send a custom terminator that will mark the end of each command we send in order to know when the output is available
- added validations for new Bitbake project - new repository as well as an existing one 
- remove checking that in an existing repository there is a .git directory and only check that repo contains the right scripts
Comment 4 Ioana Grigoropol 2012-12-10 18:00:20 UTC
Update:
 - investigated how to ignore files that have invalid characters in the name - these files are internal cooking files that do not need to be shown to the user or modified by him; files on Windows must not contain characters such as : ; when these files are encountered under a poky repository, a ResourceException is thrown, caught and ignored since we do not care about showing these files
- investigated how to catch the exception thrown by Eclipse at startup, when there are remote projects in the workspace:
   - seems that this error is thrown if a restore is attempted on the workspace before the ResourcePlugin is up and running - related to bugs : https://bugs.eclipse.org/bugs/show_bug.cgi?id=181998, https://bugs.eclipse.org/bugs/show_bug.cgi?id=182006
Comment 5 Ioana Grigoropol 2012-12-12 13:04:24 UTC
Update: 
- there is a downtime on the New Bitbake Wizard when creating a project from an existing repository, from the previous implementation (without support for  Remote connections, both on Linux and Windows)
- previous implementation: each command was ran in a separate process, waiting for the output independently
- current implementation: there is one shell per connection, and each command must wait for the previous one to finish running, until it can be ran
- when creating a new Bitbake project, the environment is initialized by parsing the output of "bitbake -e"
  - the wizard waits for this to end until it can finish creating the process
      - patch sent to sent this process to the background and close the wizard as soon as the project is created and opened
      - problems: if the user attempts to perform any operation that uses bitbake parsed environment, it will fail
      - possible solutions:
         - block the wizard until this finishes
         - display some sort of notification to the user that this operation is still in progress (in the background) and he must wait for it to finish before peforming any operations against bitbake
Comment 7 Ioana Grigoropol 2013-04-02 11:23:24 UTC
Due to the latest refactorization, some minor discrepancies appeared on the windows-build branch:

- the status message when cloning a new repository is not properly updated(eg. NLS_MISSING_MESSAGE)
   ->this is caused by some Thread ownership issues related to the wizard context

- the checksums computed when populating the fields for a new recipe are missing on Windows
   -> this is caused by the fact that when dealing with a Remote connection, the error and output buffers are one the same, and the output is sent to the error one, and we read from the output one
Comment 8 Ioana Grigoropol 2013-04-02 11:24:09 UTC
For this bug, the latest issue with the checksums appears when testing with a Remote connection to a Linux box
Comment 9 Ioana Grigoropol 2013-04-02 11:24:33 UTC
The patch that addreses this issues was sent to list and applies on top of the latest commit of jzhang/windows-build branch (d2e1f6eae3fc71dff73bc98216fbb1a789091dbd).
Comment 10 Jessica 2015-02-09 18:00:32 UTC
We'll revisit system development interaction between eclipse and Toaster in 1.9 and HOB will be obsolete by then
Comment 11 Armin Kuster 2019-08-29 15:17:17 UTC
closing