Add --extrn (-e) option to devbuild.sh#291
Conversation
|
I'm not sure how useful this will be given that the option probably will only work once, for the first build, of a given clone of the App. I've found the |
|
@chan-hoo, I assume that once manage_externals has been run once with the -e option, a user could still rerun devbuild.sh without the -e option, and it would work as before, correct? |
|
@JeffBeck-NOAA, yes, you're correct. both (w/ and w/o -e option) should work. This '--extrn (-e)' flag is optional. @christopherwharrop-noaa, I introduce this option to hear from others before I open a PR to merge RRFS-CMAQ into SRW App. As I mentioned in your PR #269, I used the '-e' flag option of |
RatkoVasic-NOAA
left a comment
There was a problem hiding this comment.
Since this is not required option, it won't affect anyone who is not using it.
christopherwharrop-noaa
left a comment
There was a problem hiding this comment.
@chan-hoo - What happens if checkout_externals has already been run and someone uses devbuild.sh with the --extern=YES option? Please edit the description of this PR to include a detailed description of what this is for, why it improves the build process, and what the various expected use cases are. Please also include in the "tests" section the results of running the four following tests:
$ devbuild.sh --extrn=NO; devbuild.sh --extrn=NO$ devbuild.sh --extrn=NO; devbuild.sh --extrn=YES$ devbuild.sh --extrn=YES; devbuild.sh --extrn=NO$ devbuild.sh --extrn=YES; devbuild.sh --extrn=YES
@RatkoVasic-NOAA - I'm assuming you mean that existing behavior is unchanged unless someone sets --extrn=YES. I still need a compelling case for why this option is needed with a description of what problem it is solving and why the existing build instructions/methods are not sufficient for handling that problem. I also need assurance that the new option will work correctly for all states of the build and checkout process so that users are not surprised and confused by broken behavior.
|
@christopherwharrop-noaa, I don't understand what the four cases mean exactly. Can you explain them in detail? |
Please add any other necessary options such as for platform or compiler to the four tests. The only one of those four tests which I expect to pass is #3. The point is to show that the use of the proposed option assumes a particular state of the cloned repository, and that state is not checked or accounted for in the implementation of the proposed option. I don't see how adding this option, which only works in one very particular situation, and that only occurs once in the lifetime of a given clone of the repository, improves anything. What is the point of this? To replace typing |
|
@christopherwharrop-noaa , so in your test cases, does 'pass' mean to see the 'R/C/Q' choice message? |
|
@chan-hoo - "pass" means |
|
@christopherwharrop-noaa, if you intended it, your test cases were flawed. "From a fresh clone run devbuild.sh --extrn=YES and then, when it is done, immediately run devbuild.sh --extrn=NO", Instead of immediately running the second devbuild.sh, the build and bin directories should be removed before the second run to get the result you want. Anyway, this PR got the same results as posted in the "TEST conducted" section. I think this is good enough for this PR. |
|
@chan-hoo - Thank you for taking the time to run those tests. I'm not sure why you think the cases were flawed. Removing the Given the knowledge developers are expected to have in order to work with the SRW App, I really don't see any value here. In my opinion this is just adding unnecessary complexity, maintenance costs, and exposure to unexpected behavior for no discernible benefit. |
|
@christopherwharrop-noaa, that was what I asked in my previous comment: "@christopherwharrop-noaa , so in your test cases, does 'pass' mean to see the 'R/C/Q' choice message?" where R: remove, C: continue, Q: quit. |
|
@christinaholtNOAA, @danielabdi-noaa, @gsketefian, @BenjaminBlake-NOAA, can you review this PR? |
|
@chan-hoo - It doesn't matter whether you choose "R" or "C", the result is the same because neither cleaning or continuing impacts the checkout or the behavior of |
|
@christopherwharrop-noaa, as I posted in the "TESTS" section above, I got the same result with the original script. I don't understand what more we need. I'd like to hear from other reviewers. If they think this PR is not necessary, I'll close this PR without objection. I don't want to waste my time as well as your valuable time any more. |
BenjaminBlake-NOAA
left a comment
There was a problem hiding this comment.
I was able to build the app successfully with both options 1 and 2. Since -e is not a required option, I am not opposed to adding this feature if others find it useful.
|
It is worth reminding developers and reviewers that the standard for acceptance of proposed changes is the same whether the new feature is "optional" or "required". In both cases, the new behavior should be both correct and be what users and developers expect for all foreseeable circumstances, including those that are expected to produce errors. The fact that something is "optional" does not exempt it from adherence to standards of quality and utility. |
|
Upon further discussion with the EMC management, we've decided to close this PR. |
DESCRIPTION OF CHANGES:
external.cfgfiles increases to check out extra external components.TESTS CONDUCTED:
Both 1) and 2) work to build the app.
where 'PASS' means that its result is the same as the test result with the original script as follows: