<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 20, 2017 at 2:28 PM, Timothy Arceri <span dir="ltr"><<a href="mailto:tarceri@itsqueeze.com" target="_blank">tarceri@itsqueeze.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
On 21/03/17 06:39, Emil Velikov wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 20 March 2017 at 18:30, Matt Turner <<a href="mailto:mattst88@gmail.com" target="_blank">mattst88@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Mon, Mar 20, 2017 at 6:55 AM, Emil Velikov <<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Seems like we ended up all over the place, so let me try afresh.<br>
<br>
Above all:<br>
 - Saying "I don't care" about your users is arrogant - let us _not_<br>
do that, please ?<br>
</blockquote>
<br>
Let's be honest, the OpenBSD is subjecting itself to some pretty<br>
arbitrary restrictions caused including Mesa in its core: 10+ year old<br>
GCC,<br>
</blockquote>
IIRC Brian was using old MinGW GCC, which was one of the blockers - it<br>
wasn't OpenBSD to blame here ;-)<br>
</blockquote>
<br></span>
Sorry Emil I probably wasn't clear in our discussion. I sent out patches to switch to GCC 4.8 last Sept (I believe this was needed by RHEL6) [1].<br>
<br>
Brain jumped in and said "I'm still using the MinGW gcc 4.6 compiler. I'd rather not go through the upgrade hassle if I don't have to."<br>
<br>
Followed by Jose "We're internally building and shipping Mesa compiled with GCC 4.4 (more specifically 4.4.3).<br>
<br>
It's fine if you require GCC 4.8 on automake, but please leave support<br>
for GCC 4.4.x in SCons."<br>
<br>
By this point I got bored and moved on. But OpenBSDs GCC is a fork with various features backported, from what I understand Mesa would not build on a real GCC 4.2 release and we should not be using it as a min version. IMO if OpenBSD want to maintain a GCC fork they can handle a patch to downgrade the min GCC version.<br>
<br>
I believe Jonathan would like us to stick with 4.2 as min but is prepared to deal with it if we move on.<br>
<br>
[1] <a href="https://patchwork.freedesktop.org/patch/109094/" rel="noreferrer" target="_blank">https://patchwork.freedesktop.<wbr>org/patch/109094/</a><div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
non-GNU Make, and now no Meson. I don't believe either FreeBSD or<br>
NetBSD keep Mesa as part of the core operating system, and as such<br>
don't suffer from these problems.<br>
<br>
For better or worse, they have made their choices and they get to live<br>
with them. We are not beholden to them.<br>
<br>
</blockquote>
Overall this hunk seems misplaced. I go agree that we should not cater<br>
for all their needs. At the same time, intentionally, breaking things<br>
while we all can coexist is very strange.<br></blockquote></div></div></blockquote><div><br></div><div>We're not trying to "break things".  The objective is to substantially simplify maintenance of our already very large and sprawling project.  If the best way to do that ends up breaking something ancient, that's something we need to evaluate.  However, "we're breaking X usecase" is not a slam-dunk argument against it either.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Even Linux distribution maintainers have responded that "upstream does<br>
not care us", which is indicative that we should be more careful what<br>
we say.<br>
</blockquote>
<br>
Citation needed.<br>
<br>
</blockquote>
<a href="https://bugs.freedesktop.org/show_bug.cgi?id=98487#c4" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/s<wbr>how_bug.cgi?id=98487#c4</a> and there's a<br>
couple of instances where I've been contacted in private.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For the rest - we're dealing with two orthogonal issues here:<br>
<br>
* Multiple build systems<br>
I believe we'll all agree that I might be the person who's been in all<br>
the build systems the most.<br>
Yes I _would_ _love_ to drop it all but we simply _cannot_ do that yet:<br>
</blockquote>
<br>
No one is advocating dropping all of the existing build systems yet.<br>
<br>
This patch is an RFC for a smaller project to start the discussion about Mesa.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - [currently] there is no viable solution for Android<br>
</blockquote>
<br>
Acknowledged. Dylan is going to see if this is something that can be<br>
solved in upstream Meson.<br>
<br>
</blockquote>
I would suggest checking with Android people as well, as Meson.<br>
There's some plans on moving to yet another build system - Blueprint.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - dropping the Autotools will lead to OpenBSD and NetBSD having to<br>
write one from scratch, IIRC Solaris/FreeBSD and others are in similar<br>
boat.<br>
</blockquote>
<br>
Solaris is a closed source operating system whose developers do not<br>
contribute to the project. We do not need to base our decisions on<br>
them.<br>
<br>
Mesa is not subject to ridiculous requirements (like in the case of<br>
OpenBSD) in FreeBSD and NetBSD.<br>
</blockquote>
Again - not a requirement, but coexistence.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Mesa depends on gmake in FreeBSD's<br>
ports, for instance.<br>
<br>
</blockquote>
That amongst others is a bug in their packaging.<br></blockquote></div></div></blockquote><div><br></div><div>As is not having clang available when they build mesa.  But we still take patches to keep it building on 4.2.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So I don't think any of this is true.<br>
<br>
</blockquote>
I'd suggest giving it a try then - grab a non-GNU make, a release<br>
tarball and let me know if you spot any issues.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
These projects have been getting closer to upstream and "forcing" the<br>
extra obstacle is effectively giving them the middle finger.<br>
</blockquote>
<br>
No. Requiring us to compile with a 10 year old GCC is giving a middle finger.<br>
<br>
</blockquote>
Can we stop with the GCC thing ? Can we point to a place where we want<br>
to use feature A introduced with GCC B and we don't ?<br></blockquote></div></div></blockquote><div><br></div><div>Yes.  I pushed a patch just this last week to not use a compound initializer in a particular place because GCC 4.6 doesn't know that a compound initializer made entirely out of constant literals is a constant value.  It works fine on moderately recent GCC but not on really old versions.  If I could use compound initializers when declaring static constant things, it would make certain corners a bit nicer.<br><br></div><div>I could come up with more examples.  That's just the freshest.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote>
</div></div>
I think you are missing the point, no-one wants to (should have to) look up if features X was in GCC stone-age every-time they want to use something. Also as I pointed out when discussing the Zlib min version, we should be recommending min versions that are actually regularly tested with Mesa. Frankenstein RHEL 6 and OpenBSD libs and tools with significant backports should be left to the distros to sort out and do their own qa testing/lowering of min versions recommended by Mesa.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The anonymous unions/structs for example require newer GCC and we use<br>
them extensively. If anything we have the workaround(s) for MSVC's<br>
lack of designated initializers.<br>
Not to mention that some/many of the restrictions are imposed by very<br>
older enterprise linuxes.<br>
</blockquote>
<br></span>
??? I don't think we do. RHEL 6 is the oldest distro that actually ships new version of Mesa and if that were the only concern we could have bumped to GCC 4.8 already.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
* Slow build times<br>
Before we jump into "the next cool thing", let us properly utilise<br>
what we have at the moment.<br>
</blockquote>
<br>
It cannot be properly utilized. There is a patch on the list *today*<br>
that is attempting to workaround the *design* of libtool. It's an<br>
issue that's existed... since libtool?<br>
<br>
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=58664" rel="noreferrer" target="_blank">https://bugzilla.redhat.com/sh<wbr>ow_bug.cgi?id=58664</a><br>
<a href="https://lists.gnu.org/archive/html/libtool/2003-06/msg00068.html" rel="noreferrer" target="_blank">https://lists.gnu.org/archive/<wbr>html/libtool/2003-06/msg00068.<wbr>html</a><br>
<br>
</blockquote>
Yes design is ..., but I'm talking about utilising all the X cores on $platform.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - I've asked multiple times about numbers behind those "let's make<br>
the build faster" patches, but never got any :-\<br>
</blockquote>
<br>
What patches? The patches in this thread? What is your question?<br>
<br>
</blockquote>
Nearly every time we had a "let's remove this recursive Makefile"<br>
patch I asked "what improvement are we talking about here - how long<br>
does it take before/after this patch to build mesa".<br>
I'm yet to see any numbers :-\<br>
<br>
Some cases that come to mind - mapi (gles1/2), glsl, nir and the latest ANV.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - I can improve things but would need access to a fancy XX core<br>
system to do rudimentary benchmarks/checks and test patches.<br>
</blockquote>
<br>
Have you ever seen an autotools build system for a project as complex<br>
as Mesa that is both non-recursive and comprehensible? I have not, and<br>
I did a lot of searching. In my opinion, this is an intractable<br>
problem.<br>
<br>
</blockquote>
Haven't looked at all really - off the top of my head openvswitch comes to mind.<br>
Then again, It's not as extensive as mesa :-\<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
... and with Meson it is tractable. And it doesn't use libtool. And it<br>
can replace at least 2 and maybe all three of our build systems.<br>
<br>
Those all seem extremely compelling to me, and I think I've done<br>
enough work on Mesa's build system and on a downstream distribution to<br>
have a valuable opinion on the matter.<br>
</blockquote>
Yes you did a lot of work on the autotools side, with less so on scons<br>
and android.<br>
<br>
What I'm saying is - let us be mature and stop it with the [reasonable<br>
or not] hatred towards autotools.<br>
It is far from perfect, yet we can improve things on our end rather<br>
than throwing everything in the bin.</div></div></blockquote></blockquote></div><br></div><div class="gmail_extra">If we can make building our project faster and have a build system that's way easier to maintain, why shouldn't we?  Just because autotools is the thing everyone's been using since forever doesn't make it good nor does it mean it's the best choice for mesa.  Let's actually evaluate our options.<br></div></div>