Overview#
This is the design document for the new "F27 Integration" feature.
References:#
Requirements#
- R1: Introduce a UI to discover and show packages available on Foundry27 for checkout
- R2: Available for download could be:
- R2-0: Source code for projects
- R2-1: Specific stable, milestone, integration or nightly builds
- R2-2: Latest builds of the above categories
- R2-3: Trunk
- R3: In all cases, the import is simply an SVN check-out code from a branch, a tag or trunk. The link with SVN is "alive" (can get history, update, etc...)
- R4: BSPs are just a specialization of the above where a System Builder Project is created in addition to the other projects
- R5: Source package are hierarchical; e.g. One can pick only a subsystem of a parent package (e.g. System from Core OS)
Scenarios#
- User opens a "F27 view", browses the available F27 projects
- User checks out the project using a simple context menu action
- User opens the appropriate perspective (C/C++, QNX System Builder, QNX BSP, etc.) and sees the project is already created and layout correctly
- User builds the project successfully without changing any project settings
- User sees the project being "live" as he can get history, synchronize, update and commit changes to F27
- (Enhancement) User gets notification when there is update avilable to the F27 project(s) he has checked out
Design#
General#
- A new UI view to show available F27 package
- An action to check out F27 package and create build-able project
UI design overview#
- A "F27 View" is added to a QNX perspective. The view is the front-end interface for user to browse and checkout F27 packages
- The data provider for the view comes from a meta info record which feeds the data for F27 packages
- The record is hosted on F27. The view dynamically queries the record so the data is always up to date
- The view lays out the data in a hierarchical manner, presents in a project specific structure.
Example of the view:
Click to enlarge
- The view distinguishes the checked-out package in different color (or dim the package) so the user won't accidentally check-out the same package twice
- The view hides the technical details of the F27 packages' repositories saving the user complicated setup steps
- The view should be headless wherever possible; only interacts with the user when prompting for the repository login name and password
- The view should be dynamic - querying the F27 periodically for update so the user always sees the live package status
- The view should have notification mechanism built-in so the user will be notified (in the status bar) when there is update available
Action design overview#
- The action is invoked from the view context menu and from the view cool bar
- The action is the extension to the SVN check-out command with added QNX logic
- The action goes through the package dependency and recursively checks out depending source code from F27
- The action looks at the package meta data (module.tmpl?), creates correct type of project(s) and defines appropriate project dependency
- The action sets up the required project properties (compiler options, build targets, etc.) so the projects are build-able without manual tune up
- The action should NOT change the source tree layout; this is to preserve the "live" status of the checked out source
- The action should take some special steps to setup the "prebuilt" and "staging" areas for the project whenever necessary
Scope#