Review Request: Build-infra M1
David Holmes
david.holmes at oracle.com
Thu Mar 22 23:51:49 UTC 2012
A few specific comments ...
On 23/03/2012 2:34 AM, Fredrik Öhrström wrote:
> ----- ahughes at redhat.com skrev:
>
>> What is this builddeps server? Is it something that's worth emulating
>> elsewhere?
<snip>
> This feature to easily acquire the build dependencies is very useful
> for us, since it makes it easy to have the same compiler on all
> developer/build-server platforms. You can easily build the exact
> same bits on your desktop, as is built on the build-farm, since
> you use the exact same compiler. The old makefiles uses an nfs-mount
> (/java) to store the builddeps, which unfortunately prevents
> non-networked builds.
The old makefiles use NFS mounted paths by default but you can of course
override them for your local environment - that is what the ALT_*
variables are for. In the new build you would simply define the
non-default paths once as part of the configure process.
Not wanting to go too OT here but I see the build-deps server as
something to be used at most per machine rather than per developer. We
have build servers internally that can be used by dozens of developers
and we don't want multiple copies of toolsets. Even in the new build
system I would expect to see the toolsets (for cross-compilation)
installed on shared NFS mounts for use by these build servers. But at
worse I would expect to have one installation per machine.
>> It's not clear to me why it's a good idea to remove traces of the
>> 'closed' JDK from the makefiles. Wouldn't this only cause more divergence and
>> mean that the core OpenJDK makefiles aren't being tested as much?
>
> Not at all, we strive to have all makefiles in the open. We build entirely
> based on the OpenJDK makefiles, in fact I do not think there are any closed makefiles.
> The hacks needed to insert closed code are arbitrary and visible inside the OpenJDK
> makefiles. We simply believe that a better solution can be found.
I firmly believe that openjdk build files should only contain
instructions for building openjdk source code. The alt-src mechanism is
a simple mechanism to let us override an open source file with a
"closed" one. This mechanism is available to anyone who wants to
customize their OpenJDK without hacking the main OpenJDK sources.
However we also have a number of build files that relate only to
building things outside the openjdk repositories - eg the
Release-embedded.gmk and Defs-embedded.gmk files for our SE Embedded
product. This are in the openjdk repository for our convenience. My
"mission" is to move all such build information out of the openjdk into
our "closed" repositories where it belongs. I previously started an
email thread on this:
http://mail.openjdk.java.net/pipermail/build-dev/2012-January/005383.html
Unfortunately while we have a make/closed repository in the JDK repo it
isn't used much; and it doesn't exist at all for hotspot. So the task is
non-trivial. I also wanted to avoid doing the work twice and so have
been waiting/watching this build-infra work. But I'm unclear how I would
go about this separation in the build-infra world (mainly because the
files I mention above have yet to be converted :) ).
> Yes! That is the intent, a standard way of building that everyone recognizes.
That's a somewhat biased definition of "everyone" ;-) It's been 12 years
since I've had to work with autoconf etc and I don't miss it. :)
>> The configure script is generated using the autoconf tool and is
>> pieced together by the insertion and expansion of various m4 macros. To
>> change it, you alter configure.ac and then run autoconf. This was
>> the focus of my last question, as having configure checked into the
>> repository means that everyone has to be using the same autoconf
>> to generate, to avoid superfluous changes.
>
> I know, but the benefit of having the configure script executable
> in the repo is tremendous, so the extra hassle is worth it.
> In particular if you want to use builddeps to bootstrap the build
> environment on for example a Solaris machine.
My concern, hence my question about needing to read/understand this
file, is what happens if it doesn't work on a system? How do we debug
the issue? Sure we can just run autoconf to generate a new (and
hopefully working) version, but how do we determine what needs to get
checked back into the repo?
Cheers,
David
> //Fredrik
More information about the build-dev
mailing list