<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br class=""><blockquote type="cite" class="">On 2. Jun 2017, at 22:40, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>> wrote:<br class=""><br class=""><br class="">Hi Holger,<br class=""></blockquote><div class=""><br class=""></div>Hey Eliot!<div class=""><br class=""></div><div class=""><br class=""><blockquote type="cite" class="">   I have no disagreement with your time lines, but I do disagree with the black magic accusation, and you introduce your own piece of magic (see below).<br class=""></blockquote><div class=""><br class=""></div><div class="">in the end it is a word and a very subjective thing. I used to spend a lot of time working on OpenEmbedded to build Linux distributions. If one didn't understand what needs to be done to build a distribution and didn't know how the system worked, it seemed like black magic.</div><div class=""><br class=""></div><div class=""><br class=""></div><blockquote type="cite" class="">and then checks in the new sources.  David should have been able to do this.  The process is not documented.<br class=""></blockquote><div class=""><br class=""></div><div class="">Let's say I saw the code was not regenerated, what could I have done? Figure out the not documented process, make a PR and hope it is being reviewed within a month or two? It might not be black magic but quite a high barrier and maybe higher than necessary?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><blockquote type="cite" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">My preferred option<br class=""><br class="">* I compile with a new compiler, look at the compiler warning and agree with it<br class="">* David Lewis agrees with my analysis and commits/pushes the fix to mc/ directory<br class=""></blockquote><br class="">You're glossing over some steps here.  Note that the fix is in the Smalltalk source, upstream of the C source.<br class=""></blockquote><div class=""><br class=""></div><div class="">I commit my Smalltalk code to the mc/ directory and the CI will build a VMMaker image and generate the C sources.</div></div><div class=""><br class=""></div><div class=""><br class=""><blockquote type="cite" class="">The missing step is that the plugin source is regenerated .  As a Smalltalk-side-of-the-business person David knows how to regenerate source. David, why didn't you regenerate? [honest Q, not an accusation]<br class=""></blockquote><div class=""><br class=""></div>Done by the CI in pharo-vm. And besides being done by the CI, the script that builds the VMMaker image and generates the C sources provide an executable documentation of the process. So anyone capable of committing Smalltalk code to the mc/ directory can generate new sources.</div><div class=""><br class=""></div><div class=""><br class=""><blockquote type="cite" class="">One *mustn't* manually fix the generated source because doing so means<br class=""></blockquote><div class=""><br class=""></div><div class="">I didn't argue about that. That would be the beginning of the end.</div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><blockquote type="cite" class="">One *must* regenerate from an unmodified checked in Monticello package because doing so means<br class="">- the C source is version stamped as originating from that package and so one can locate the correct version of the Smalltalk from which it derived <br class=""></blockquote><div class=""><br class=""></div><div class="">* The CI works by definition from an unmodified checked in Monticello package.</div><div class="">* tags, source uploads, debian source packages can provide as 1:1 mapping from version to archived source</div><div class=""><br class=""></div><div class="">skipping stuff here to keep the answer short.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">* New VM will be build and regenerates sources on the fly<br class=""></blockquote><br class="">How does this work? Seems like magic to me.  Source has to be generated from a VMMaker image.  We need to regenerate source only for that which has changed, not for the entire generated source.  But right now that's problematic because of the time issues I mention above.<br class=""></blockquote><div class=""><br class=""></div><div class="">We are in the phase of computing where human time is (once again) more expensive that computing time. So the magic is that  some labor can be outsourced to a shell script. The nice thing with a shell script is one can observe each step (set -x) it is doing. For "stable" code generation review one can still check-in and compare the generated code.</div></div><div class=""><br class=""></div><div class="">I do my deployments on Debian with debian packages. Since a couple of weeks commits to the pharo-vm will generate a debian source package with generated C source and upload it. At the place below one can see the uploads and the difference in generated code from one version to another.</div><div class=""><br class=""></div><div class=""><a href="https://build.opensuse.org/package/revisions/devel:languages:pharo:latest/pharo5" class="">https://build.opensuse.org/package/revisions/devel:languages:pharo:latest/pharo5</a></div><div class=""><br class=""></div><div class="">have a nice day</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>holger</div><div class=""><br class=""></div><div class=""><br class=""></div></div></body></html>