| 483 | | = ''dybbin'' Approach Under Discussion = |
| 484 | | |
| 485 | | |
| 486 | | * '''dybbin''' allows a NuWa installation to be copied to another location |
| 487 | | |
| 488 | | == email to David, Jiajie == |
| 489 | | |
| 490 | | {{{ |
| 491 | | I like the elimination of a separate build in this dybbin |
| 492 | | approach however I see several problems with usage of update builds |
| 493 | | and externally imposed cron dybbin, my suggested solutions : |
| 494 | | |
| 495 | | * Update build |
| 496 | | Are promoting usage of an update build, |
| 497 | | which is prone to breakage on data model changes and is generally |
| 498 | | the subject of negative prejudice. |
| 499 | | |
| 500 | | Can eliminate this issue by making the dybinst command used by the slave |
| 501 | | "./dybinst -c trunk project dybgaudi" |
| 502 | | do a refresh when data model changes are detected. |
| 503 | | |
| 504 | | Enforcing external cron cut-off times introduces issues (and leads to |
| 505 | | complicated workarounds) : |
| 506 | | |
| 507 | | * A build can be in-progress at cron dybbin time or the last build |
| 508 | | can be broken ... meaning there is no valid build to copy. |
| 509 | | |
| 510 | | * Uncoordinated between sites, the prevalent build at dybbin time |
| 511 | | may differ between sites according to speed/breakage differences between slaves. |
| 512 | | |
| 513 | | To avoid these issues (and complicated workarounds), |
| 514 | | I suggest not to impose an external cron job but rather to to add a |
| 515 | | final step to the dybinst slave build that (if the tests succeeded) |
| 516 | | performs a dybbin copy "installation" into a directory named after the revision. |
| 517 | | And performs purging to remove excess revision directories. |
| 518 | | |
| 519 | | > One possible problem with this scheme is that our 'daily' might not match the |
| 520 | | > 'daily' elsewhere, but I think that could be handled, perhaps by having the master |
| 521 | | > define the revision number corresponding to the current 'daily'. |
| 522 | | |
| 523 | | |
| 524 | | Concerning coordination between slaves (although I have implemented |
| 525 | | such a system in the ad-hoc daily.bash) I think supporting and explaining |
| 526 | | complex procedures for this is not worth the effort/confusion. |
| 527 | | |
| 528 | | Simply referring to builds by their real name : '''the revision number''' |
| 529 | | and not the date eliminates the issue and benefits from direct |
| 530 | | correspondence between the state of builds reported in the web interface |
| 531 | | (including the timeline). |
| 532 | | |
| 533 | | Users will want to use a build after a particular |
| 534 | | feature has been added (or bug removed) ... thus they should |
| 535 | | know the minimum revision they want. |
| 536 | | They can then look for a corresponding build that the slave on |
| 537 | | their cluster succeeded to build at : |
| 538 | | http://dayabay.ihep.ac.cn/tracs/dybsvn/build/dybinst |
| 539 | | |
| 540 | | Yours, Simon |
| 541 | | }}} |
| 542 | | |
| 543 | | |
| 544 | | |
| | 480 | = dybinst copy step = |
| | 481 | |
| | 482 | The final copy step of builds allows the update build directory to be |
| | 483 | copied ( using ''dybbin pack/unpack/setup'' ) into a revision named directory. |
| | 484 | |
| | 485 | When enabled this prevents breakage of trunk from hindering progress by allowing |
| | 486 | users to trivially shift a recent prior revision. |
| | 487 | |
| | 488 | == when builds/tests fail == |
| | 489 | |
| | 490 | If a build fails (eg dybgaudi fails to compile) then the copy step is not reached |
| | 491 | and no copy is made. However if the build completes but some of the tests fail then |
| | 492 | the copy is still done by the name of the copied directory is changed to indicate the |
| | 493 | number of failed tests. |
| | 494 | |
| | 495 | == configuration of the copy step == |
| | 496 | |
| | 497 | The copy is configured by means of variables '''dyb_copy..''' in envfiles |
| | 498 | such as '''~/.dybinstrc'''. |
| | 499 | To allow separate configuration for debug and opt builds variants of the config vars ending |
| | 500 | with '''_opt''' or '''_dbg''' are accepted that take precendence over the generic vars. |
| | 501 | |
| | 502 | * '''dyb_copybase''' : directory to which revision directories are copyied, not configuring this or the '''_dbg/_opt''' variant prevents the copying from being done |
| | 503 | * '''dyb_copykeep''' : number of revision directories to be retained (defaults to 10, can have different opt/dbg settings using '''_dbg/_opt'''), others are purged |
| | 504 | |
| | 505 | Currently the purge algorithm decides what to purge/retain based on |
| | 506 | * modification time of the revision directory |
| | 507 | * number of symbolic links within '''dyb_copybase''' that point to the revision directory |
| | 508 | |
| | 509 | |
| | 510 | |
| | 511 | |
| | 512 | |
| | 513 | |
| | 514 | |
| | 515 | |
| | 516 | |
| | 517 | |