Add possibility to install several (FEniCS) branches side by side
Add lightweight support for:
- Installing different branches than stable and trunk (for instance 1.0.x or 1.1.x)
- Installing several branches side by side in a consistent manner.
Blueprint information
- Status:
- Started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Andre Massing
- Definition:
- Discussion
- Series goal:
- None
- Implementation:
- Started
- Milestone target:
- None
- Started by
- Andre Massing
- Completed by
Whiteboard
ATM dorsal is only capable of installing trunk, snapshot or stable releases. It would be nice to extend dorsal in a lightweight manner to support the installation of user-defined branches. Use case: a user would like to install the latest backported feature from 1.1.x.
As a developer you have to keep around several branches of ufl, ffc, ufc doflin etc.
In addition to be able to install the branch of your choice, it would be nice to have an option to keep track of several different installations of say (ufl,ffc,ufc) without causing too much headaches and the possibility to switch between them seamlessly.
My suggestion is to extend the local.cfg usage by
- defining branch names for various packages e.g.
UFL_BRANCH=lp:ufl/1.0.x
- defining destination for the branches e.g
FFC_BRANCH=lp:ffc/1.1.x,ffc-massing
- adding a flag to indicate whether you would like to have a "multi branch" set-up:
MULTI_BRANCH=true
- adding a command line parameter --config=
where the layout og MY_BRANCHES.cfg is similar to the dorsal.cfg or local.cfg
To keep track of various branches when installed side by side an idea would be to
- download and install each package version into subdirectories of
$DOWNLOAD_PATH and $INSTALL_PATH, e.g.
parmetis:
ufl:
-ufl-1.0.x
- in case of bzr branches and MULTI_BRANCH=true, the the ufl directory
could be a bzr repo
- to generate proper config (and module) files for each of them
- to generate a "global" config (and module) file named similar to the
MY_BRANCHES.cfg
which sources all the proper conf files generated by this specific build.
Work Items
Work items:
Checkout of user-defined branches: DONE
Install several branches side by side in common package directory : DONE
Added command line switch to chose config file: DONE
Generate individual config files for packages in multi-branch scenario: DONE
Generate build specific "super" config file sourcing packages config file: DONE
Generate corresponding module files: TODO
Proper testing of added functionality: TODO