How to check out the openjdk source code from the mercurial repositories

Erik Trimble erik.trimble at oracle.com
Thu Mar 10 13:00:03 UTC 2011


On 3/10/2011 3:13 AM, Alan Bateman wrote:
> Fredrik Öhrström wrote:
>> I think it is important that a recent stock mercurial install
>> can check out the full openjdk with a single clone
>> command.
>>
>> I.e. you should not have to install special extensions just
>> to get the source code.
>>
>>
> I think this is a reasonable goal as it's probably confusing to folks
> today that they need to do seven "hg clone" commands to get everything
> (or else they need to go through hoops to get the forest extension
> working if they want the convenience of the fclone command). At the same
> time, and as Phil mentioned on another thread, I think most people are
> working in only one or a small subset of the repositories. If you've got
> the disk space then having all the repositories might not be a problem;
> the important thing (from a productivity perspective) is to continue to
> allow partial builds (meaning building a subset of the repositories and
> augmenting that with pre-built bits of the other repositories) and of
> course incremental builds within that when working in a specific area.
>
> -Alan


I see no compelling reason to architect things to a single-command full 
JDK source code pull using a stock Mercurial. That's a particular 
solution to one problem, and by no means the only solution.

If we would like to make pulling a full JDK source tree simpler, then by 
all means, let's include that as a possible goal.  But let's not put the 
cart before the horse, without fully understanding what we're looking 
for in the big picture.


Before we get into implementation details, we need to discuss what we're 
trying to accomplish.


As I see it, the source repository (in the generic sense, regardless of 
how it is actually technically implemented) has several demands made 
upon it:

(1) It should be designed to allow for maximum productivity of the 
developers (where ever they are); meaning, it should *not* define the 
way development works, but that developers should define how they work 
will work as a whole, and then the repo structure should reflect this.

     (1a) cloning/pulling the JDK should be as simple and as fast as 
possible. We need to define which has higher priority:  the ability, 
speed, and simplicity of pulling/cloning a component part of the JDK, or 
the ability/speed/simplicity of pulling/cloning the *entire* JDK

     (1b) supporting partial and incremental builds is highly desirable


(2) It should provide for reasonable flexibility in forking and movement 
of large chunks of code between portions of the JDK

         (2a) In particular, it should allow for the possibility of 
replacing chunks of the JDK wholesale with outside sources.  The titular 
example is the VM, which should be able to be replaced without screwing 
up the rest of the JDK repository(s). However, the VM is not the only 
place this is beneficial - we need to make sure that any defined 
component can have a forklift replacement, without damaging the rest of 
the JDK repository.

(3) Maintainers, Performance Analysis, and QA/QE folks need the ability 
to quickly and easily identify discrete points in the source code 
evolution - that is, the JDK must have some way to provide snapshot 
capability (where, by "snapshot", I mean that it is possible to maintain 
a system where a perpetual reference to a particular state of the JDK 
repository can be made).


What other *DESIGN* goals do people see should have for the JDK repository?

-- 
Erik Trimble
Java System Support
Mailstop:  usca22-123
Phone:  x17195
Santa Clara, CA




More information about the build-dev mailing list