<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>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 class="h5"><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 class="HOEnZb"><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>