<div dir="ltr">We've been persuading C# shops to use the Raspberry Pi platform and build scripts aren't that much of an issue for them regarding acceptance.  Being able to fix bugs quickly and easily without having to fight the build system is more important to getting lots of contributors.<div>
<br></div><div>If we could have an automated build that:</div><div><ol><li>builds<br></li><li>tests<br></li><li>creates Windows installer<br></li><li>deploys the installer to a VM and tries some smoke tests</li><li>creates linux packages<br>
</li><li>deploys the package to a VM and tries some smoke tests</li><li>publishes artifacts to wiki, and to public repos (e.g. Debian package repo)<br></li></ol></div><div><br></div><div>and stops at first failure, emailing the results to the list...</div>
<div><br></div><div>Then we'd have a system that could be hooked up to test pull requests automatically and reject any that fail, and we've have immediate availability of all build versions to newbies.</div><div><br>
</div><div>The first step is a clean build script that JustWorks (TM). Sounds like you're nearly there.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 12 May 2014 17:49, Alex J Lennon <span dir="ltr"><<a href="mailto:ajlennon@dynamicdevices.co.uk" target="_blank">ajlennon@dynamicdevices.co.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF"><div class="">
    <br>
    <div>On 12/05/2014 17:35, Bryan Crotaz
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">There's a lot of references in your document to
        build failures and potential future build failures.
        <div><br>
        </div>
        <div>Can I suggest that pull-requests are only accepted if they
          don't break the build?  It's surely the developer's
          responsibility to make sure that they haven't created any
          conflicts, or have correctly documented extra cygwin packages
          that are needed, or have correctly edited the Windows
          installer to include all the correct files.</div>
        <div><br>
        </div>
        <div>This way, newbie contributors can be guaranteed that they
          can download the latest default branch from git and can build
          it.  Then they can get on with being productive instead of
          being put off by a whole load of errors they won't understand.</div>
        <div><br>
        </div>
      </div>
    </blockquote>
    <br></div>
    I'm just somebody who believes in Mono and would like to help
    faciliate others to be able to use it as I do.<br>
    <br>
    I do hope the folks behind Mono come back to your on your suggestion
    though, as I too believe that with a little <br>
    effort each release tarball could be QA'd to be sure it builds
    without error on each target platform. <br>
    <br>
    I believe time spent that way would go a long way to drive
    acceptance of Mono as a viable alternative for businesses.<br>
    <br>
    Cheers, Alex<div><div class="h5"><br>
    <div><br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>Bryan</div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On 12 May 2014 17:30, Bryan Crotaz <span dir="ltr"><<a href="mailto:bryan.crotaz@silvercurve.co.uk" target="_blank">bryan.crotaz@silvercurve.co.uk</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">Ooooh pretty.....  Will give it a go.
              <div><br>
              </div>
              <div>Can the build script be extended to install needed
                cygwin packages if they're missing?  When I first tried
                to build I had no idea how to find the packages, or how
                to install them - for newbie contributors this would
                remove a lot (in my case 2 days) of head scratching.</div>
            </div>
            <div class="gmail_extra">
              <div>
                <div><br>
                  <br>
                  <div class="gmail_quote">On 12 May 2014 17:23, Alex J
                    Lennon <span dir="ltr"><<a href="mailto:ajlennon@dynamicdevices.co.uk" target="_blank">ajlennon@dynamicdevices.co.uk</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div text="#000000" bgcolor="#FFFFFF">
                        <div> <br>
                          <div>On 12/05/2014 17:07, Bryan Crotaz wrote:<br>
                          </div>
                          <blockquote type="cite">
                            <div>Will this make building on windows
                              possible?<br>
                              <br>
                            </div>
                          </blockquote>
                        </div>
                        Bryan,<br>
                        <br>
                        I've written a walkthrough here for building
                        3.4.0 from the release tarball and 3.4.1 from
                        git on Windows.<br>
                        <br>
                        <a href="http://www.codeproject.com/Articles/769292/How-to-build-Mono-on-Windows" target="_blank">http://www.codeproject.com/Articles/769292/How-to-build-Mono-on-Windows</a><br>
                        <br>
                        Best regards, Alex
                        <div>
                          <div><br>
                            <br>
                            <blockquote type="cite">
                              <div>Bryan Crotaz
                                <div>Silver Curve</div>
                              </div>
                              <div><br>
                                On 12 May 2014, at 16:59, Miguel de
                                Icaza <<a href="mailto:miguel@xamarin.com" target="_blank">miguel@xamarin.com</a>>

                                wrote:<br>
                                <br>
                              </div>
                              <blockquote type="cite">
                                <div>
                                  <div dir="ltr">Hey guys,
                                    <div><br>
                                    </div>
                                    <div>Another update: I am almost
                                      done with the work, only one cycle
                                      left to resolve and I will be able
                                      to land the changes.</div>
                                    <div><br>
                                    </div>
                                    <div>All the changes are on a branch
                                      on github.</div>
                                    <div><br>
                                    </div>
                                    <div>MIguel</div>
                                  </div>
                                  <div class="gmail_extra"><br>
                                    <br>
                                    <div class="gmail_quote">On Fri, May
                                      2, 2014 at 4:27 PM, Miguel de
                                      Icaza <span dir="ltr"><<a href="mailto:miguel@xamarin.com" target="_blank">miguel@xamarin.com</a>></span>
                                      wrote:<br>
                                      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                        <div dir="ltr">Hello guys,
                                          <div><br>
                                          </div>
                                          <div>Just a follow up to my
                                            previous posting on this.</div>
                                          <div><br>
                                          </div>
                                          <div> I have managed to
                                            untangle this mess, and now
                                            I have a clean build that
                                            does not involve overwriting
                                            assemblies.</div>
                                          <div><br>
                                          </div>
                                          <div>In addition to untangling
                                            this, I added dependencies
                                            on all the assemblies
                                            involved in this circular
                                            dependency mess so if you
                                            type "make" in any of
                                            System, System.Xml,
                                            System.Security,
                                            Mono.Security or
                                            System.Configuration, all
                                            the dependencies will be
                                            properly built.</div>
                                          <div><br>
                                          </div>
                                          <div>During the fixing, I
                                            noticed that our System.Xml
                                            build must have broke a few
                                            eons ago, because there was
                                            code in place to perform a
                                            2-stage System.Xml build as
                                            well (without and with
                                            System.Configuration
                                            support), but nobody noticed
                                            that this had happened.  
                                            While I fixed this, it
                                            raises the obvious point
                                            that nobody really cares (or
                                            likes) System.Configuration.</div>
                                          <div><br>
                                          </div>
                                          <div>While doing this review,
                                            I found a few other places
                                            that also have these ugly
                                            loops, so I am going to be
                                            fixing those as well.</div>
                                          <span><font color="#888888">
                                              <div><br>
                                              </div>
                                              <div>Miguel</div>
                                            </font></span></div>
                                        <div class="gmail_extra"><br>
                                          <br>
                                          <div class="gmail_quote">
                                            <div>On Tue, Apr 22, 2014 at
                                              3:53 PM, Miguel de Icaza <span dir="ltr"><<a href="mailto:miguel@xamarin.com" target="_blank">miguel@xamarin.com</a>></span>
                                              wrote:<br>
                                            </div>
                                            <div>
                                              <div>
                                                <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                                  <div dir="ltr">Hey
                                                    guys,
                                                    <div><br>
                                                    </div>
                                                    <div>I was looking
                                                      at making the
                                                      MSBuild system
                                                      work, and during
                                                      the process I have
                                                      encountered a few
                                                      problems that we
                                                      have in our
                                                      existing build
                                                      system that are
                                                      problematic.</div>
                                                    <div> <br>
                                                    </div>
                                                    <div>The problem is
                                                      that System,
                                                      System.XML and
                                                      System.Configuration
                                                      are each defined
                                                      in terms of the
                                                      other assemblies.
                                                        So we gradually
                                                      bring up each one
                                                      of those
                                                      assemblies up by
                                                      first compiling a
                                                      stub System, which
                                                      we use to build
                                                      System.XML and
                                                      System.Configuration.
                                                        Then we rebuild
                                                      System, this time
                                                      referencing
                                                      System.XML and
                                                      System.Configuration
                                                      so we can take a
                                                      dependency on
                                                      them, and so on.</div>
                                                    <div><br>
                                                    </div>
                                                    <div>To build a
                                                      complete
                                                      System.dll for a
                                                      particular profile
                                                      (net_2_0, net_4_0,
                                                      etc) takes three
                                                      steps: </div>
                                                    <div>
                                                      <ul>
                                                        <li>Core Build</li>
                                                        <li>Secondary
                                                          Build:</li>
                                                        <ul>
                                                          <li>Core Build
                                                          + </li>
                                                          <li>Defines:
                                                          XML_DEP +
                                                          SECURITY_DEP</li>
                                                          <li>Refs: </li>
                                                          <ul>
                                                          <li>-r:PrebuiltSystem=../lib/Previous/System.dll </li>
                                                          <li>-r:System.Xml.dll<br>
                                                          </li>
                                                          <li>-r:MonoSecurity=Mono.Security.dll</li>
                                                          </ul>
                                                        </ul>
                                                        <li>Final Build:</li>
                                                        <ul>
                                                          <li>Secondary
                                                          Build + </li>
                                                          <li>defines:
                                                          -d:CONFIGURATION_DEP</li>
                                                          <li>Refs:</li>
                                                          <ul>
                                                          <li>System.Configuration.dll</li>
                                                          </ul>
                                                        </ul>
                                                      </ul>
                                                      <div>The above is
                                                        what is required
                                                        to bring up
                                                        System.</div>
                                                    </div>
                                                    <div><br>
                                                    </div>
                                                    <div>Our
                                                      implementation has
                                                      one major problem:
                                                      it overwrites the
                                                      intermediate
                                                      files.  So the
                                                      core build output
                                                      is overwritten by
                                                      the secondary
                                                      build, and the
                                                      secondary build is
                                                      overwritten by the
                                                      final build.</div>
                                                    <div><br>
                                                    </div>
                                                    <div>It seems that
                                                      historically,
                                                      instead of
                                                      introducing
                                                      temporary
                                                      directories for
                                                      each stage,
                                                      instead we hacked
                                                      our way out of it.
                                                        We introduced a
                                                      LIBRARY_USE_INTERMEDIATE_FILE
                                                      whose sole purpose
                                                      was to work around
                                                      the case where
                                                      Windows was
                                                      actively telling
                                                      us we were doing
                                                      something wrong
                                                      (we were
                                                      overwriting a file
                                                      that we were
                                                      actively
                                                      referencing!)</div>
                                                    <div><br>
                                                    </div>
                                                    <div>The above is
                                                      also likely going
                                                      to prevent
                                                      reliable parallel
                                                      builds, or
                                                      probably means
                                                      that we introduced
                                                      some gross hack to
                                                      make the above
                                                      work in parallel.</div>
                                                    <div><br>
                                                    </div>
                                                    <div>I am going to
                                                      try to fix this,
                                                      but the Makefile
                                                      goop is pretty
                                                      dense, and I might
                                                      fail.   I just
                                                      figured I should
                                                      share my findings
                                                      in case
                                                      civilization comes
                                                      to an end and a
                                                      future
                                                      archeologist tries
                                                      to figure out why
                                                      this was not
                                                      working.</div>
                                                    <div><br>
                                                    </div>
                                                    <div>These are the
                                                      defines that we
                                                      use to bring up
                                                      System for each
                                                      profile:</div>
                                                    <div><br>
                                                    </div>
                                                    <div>basic Profile:</div>
                                                    <div>
                                                      <p>basic:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:BOOTSTRAP_BASIC
-d:CONFIGURATION_2_0</p>
                                                      <p>basic:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:BOOTSTRAP_BASIC
                                                        -d:CONFIGURATION_2_0

                                                        -d:XML_DEP</p>
                                                      <p><br>
                                                      </p>
                                                      <p>Build Profile:</p>
                                                      <p>build:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:CONFIGURATION_2_0</p>
                                                      <p>build:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:CONFIGURATION_2_0 
                                                        -d:XML_DEP</p>
                                                      <p><br>
                                                      </p>
                                                      <p>Net 2.0
                                                        profile:</p>
                                                      <p>net_2_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0 
                                                        -d:CONFIGURATION_2_0</p>
                                                      <p>net_2_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0 
                                                        -d:CONFIGURATION_2_0 
                                                        -d:XML_DEP
                                                        -d:SECURITY_DEP </p>
                                                      <p>net_2_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0 
                                                        -d:CONFIGURATION_2_0 
                                                        -d:XML_DEP
                                                        -d:SECURITY_DEP
-d:CONFIGURATION_DEP </p>
                                                      <p><br>
                                                      </p>
                                                      <p>Net 4.0
                                                        profile:<br>
                                                      </p>
                                                      <p>net_4_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:CONFIGURATION_2_0</p>
                                                      <p>net_4_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:CONFIGURATION_2_0
                                                        -d:XML_DEP 
                                                        -d:SECURITY_DEP</p>
                                                      <p>net_4_0:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:CONFIGURATION_2_0
                                                        -d:XML_DEP 
                                                        -d:SECURITY_DEP 
-d:CONFIGURATION_DEP</p>
                                                      <p><br>
                                                      </p>
                                                      <p>Net 4.5
                                                        profile:<br>
                                                      </p>
                                                      <p>net_4_5:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:NET_4_5
                                                        -d:CONFIGURATION_2_0 </p>
                                                      <p>net_4_5:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:NET_4_5
                                                        -d:CONFIGURATION_2_0
                                                        -d:XML_DEP 
                                                        -d:SECURITY_DEP </p>
                                                      <p>net_4_5:
                                                        -d:NET_1_1
                                                        -d:NET_2_0
                                                        -d:NET_3_0
                                                        -d:NET_3_5
                                                        -d:NET_4_0
                                                        -d:NET_4_5
                                                        -d:CONFIGURATION_2_0 
                                                        -d:XML_DEP
                                                        -d:SECURITY_DEP
-d:CONFIGURATION_DEP </p>
                                                      <span><font color="#888888">
                                                          <p><br>
                                                          </p>
                                                        </font></span></div>
                                                    <span><font color="#888888">
                                                        <div>Miguel</div>
                                                      </font></span></div>
                                                </blockquote>
                                              </div>
                                            </div>
                                          </div>
                                          <br>
                                        </div>
                                      </blockquote>
                                    </div>
                                    <br>
                                  </div>
                                </div>
                              </blockquote>
                              <blockquote type="cite">
                                <div><span>_______________________________________________</span><br>
                                  <span>Mono-devel-list mailing list</span><br>
                                  <span><a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">Mono-devel-list@lists.ximian.com</a></span><br>
                                  <span><a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a></span><br>
                                </div>
                              </blockquote>
                              <br>
                              <fieldset></fieldset>
                              <br>
                              <pre>_______________________________________________
Mono-devel-list mailing list
<a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">Mono-devel-list@lists.ximian.com</a>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a>
</pre>
                            </blockquote>
                            <br>
                          </div>
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                  <br clear="all">
                  <div><br>
                  </div>
                </div>
              </div>
              <span><font color="#888888">-- <br>
                  Bryan Crotaz
                  <div>Managing Director<br>
                    <div>Silver Curve</div>
                  </div>
                </font></span></div>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <div><br>
        </div>
        -- <br>
        Bryan Crotaz
        <div>Managing Director<br>
          <div>Silver Curve</div>
        </div>
      </div>
    </blockquote>
    <br>
    </div></div><div class=""><div>-- <br>
      <div>
        <p style="font-family:Helvetica,Arial,sans-serif;font-size:10px;line-height:12px"><a href="http://www.dynamicdevices.co.uk/" target="_blank"><img src="cid:part11.09000904.07070200@dynamicdevices.co.uk" alt="Dynamic Devices Ltd" border="0"></a></p>

        <p style="font-family:Helvetica,Arial,sans-serif;font-size:10px;line-height:12px;color:rgb(153,153,153)"><span style="font-weight:bold">Alex
            J Lennon</span> <span>/</span> <span style="color:#999">Director</span><br>
          <span style="color:#999">1
            Queensway, Liverpool L22 4RA</span> </p>
        <p style="font-family:Helvetica,Arial,sans-serif;font-size:10px;line-height:12px"> <span style="color:#999">mobile: <a href="tel:%2B44%20%280%297956%20668178" value="+447956668178" target="_blank">+44 (0)7956 668178</a></span>
          <br>
          <br>
        </p>
        <p style="font-size:10px;line-height:12px;font-family:Helvetica,Arial,sans-serif"> <a href="http://www.linkedin.com/in/alexjlennon" target="_blank"><img src="cid:part13.01070609.06000202@dynamicdevices.co.uk" alt="Linkedin"></a> <a><img src="cid:part15.07060906.06060804@dynamicdevices.co.uk" alt="Skype"></a></p>

        <p style="font-family:Helvetica,Arial,sans-serif;color:rgb(153,153,153);font-size:9px;line-height:12px;width:25%">This e-mail message
          may contain confidential or legally privileged information and
          is intended only for the use of the intended recipient(s). Any
          unauthorized disclosure, dissemination, distribution, copying
          or the taking of any action in reliance on the information
          herein is prohibited. E-mails are not secure and cannot be
          guaranteed to be error free as they can be intercepted,
          amended, or contain viruses. Anyone who communicates with us
          by e-mail is deemed to have accepted these risks. Company Name
          is not responsible for errors or omissions in this message and
          denies any responsibility for any damage arising from the use
          of e-mail. Any opinion and other statement contained in this
          message and any attachment are solely those of the author and
          do not necessarily represent those of the company.</p>
      </div>
    </div>
  </div></div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br>Bryan Crotaz<div>Managing Director<br><div>Silver Curve</div></div>
</div>