You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Geir Magnusson Jr <ge...@pobox.com> on 2006/06/08 01:22:41 UTC

[general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

This brings up a good point. (I'm so used to CVS, I keep forgetting that
branches and tags really don't exist in SVN...)

We have been talking a little about how to 'federate' things so that we
have a harmony project, rather than separate islands of activity, so
that a user can type 'build' somewhere, and get a full working system w/
tools, vm and classlib.

The problem that we'll face is that we have

harmony/classlib/trunk
        classlib/branches
        classlib/tags
        classlib/archive
harmony/drlvm/trunk
        drlvm/branches
        ...

So you get a big pile of stuff whenever you do a svn co on root, as
Garrett points out.

I was chatting about this w/ Garrett, who is a real SVN guru, and he
suggested we do the following -

* setup harmony/trunk as the federation point w/ empty directories for
/tools, /vm, /classlib, whatever

* setup a fetch script so that it does an svn switch for each of them
into the right part of the svn tree (letting people choose among VM
choices, versions of classlib, etc).  You could also just use a symlink
to point up and over to /harmony/classlib/trunk

* build from that set

So we'd end up with

/harmony
        /classlib
                 /trunk
                 /...
        /drlvm
              /trunk
              /...
        /trunk
              /build
                    build.xml
                    ...
              /target
                    < where the build goes >
              /classlib
                    <empty>
              /vm
                    <empty>
              /tools
                    <empty>

This seems like it gives us incredible freedom, ease for someone that
wants to just do a top-level build (svn co harmony/trunk; setup vm=drlvm
classlib=head; build) and see what they get, and doesn't hammer SVN so
hard...

If no one thinks of a problem, I'll try this.  I doesn't change the fact
that projects should be able to push generated artifacts into a common
directory, but does make things easy to setup and work with efficiently.

Thanks Garrett!

geir


Garrett Rooney wrote:
> On 6/7/06, Thorbjørn Ravn Andersen <th...@gmail.com> wrote:
> 
>> svn checkout https://svn.apache.org/repos/asf/incubator/harmony
>>
>> ant -f harmony/enhanced/classlib/trunk/make/depends.xml download
> 
> Please don't check out the root of the harmony tree.  It's incredibly
> wasteful, that's far more content than you need, and it'll only get
> worse as more tags and branches are created.
> 
> If you want to check out the trunk of the classlib, check out the
> trunk of the classlib:
> 
> svn checkout
> https://svn.apache.org/repos/asf/incubator/harmony/enhanced/classlib/trunk
> classlib
> 
> -garrett
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> 
> 

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

Posted by Salikh Zakirov <Sa...@Intel.com>.
Thorbjørn Ravn Andersen wrote:
> Garrett Rooney skrev  den 08-06-2006 16:04:
>> The basic idea is that you initially check out a copy of trunk that
>> has a few empty directories in it.  Then, svn switch says "hey, this
>> directory in my working copy that used to point to
>> $HARMONY/trunk/classpath (which is empty) should now point to
>> $HARMONY/classpath/trunk".  It'll then essentially check out the
>> contents of $HARMONY/classpath/trunk into your working copy's
>> classpath directory.  At that point you can do things like run an
>> update or a diff at the top level of your working copy and it'll
>> nicely recurse into the switched subdirectories.  If you make changes
>> in those subdirectories there and commit them they'll be committed to
>> the $HARMONY/classpath/trunk directory in the repository (or wherever
>> you had that subdirectory switched to).  Does that make sense?
> 
> The current version of dlrvm has hard wired paths so this is currently
> not easy to do.  

I am not sure what you mean by "hard wired" paths, but it perfectly
can be built from either of

    classlib
    +trunk
    drlvm
    +trunk

or

    trunk
    +classlib
    +drlvm 

directory structure. In the latter case, the 'build.bat' (build.sh for linux)
command line should be changed to

    build.bat -Dexternal.dep.CLASSLIB=../../../classlib

So I would not say that paths are "hard wired". The patch is overridable from command line.
Moreover, configuration can be made universal in a straightforward way:

--- a/build/make/build.xml
+++ b/build/make/build.xml
@@ -60,7 +60,12 @@ Version: $Revision: 1.16.2.20 $
     <target name="extern_dep">
 
         <!-- set the path root for the classlib : must be relative to the build directory -->
-        <property name="external.dep.CLASSLIB" value="../../../../classlib/trunk" />
+        <available type="dir" property="external.dep.CLASSLIB" 
+                 file="../../../../classlib/trunk" 
+                 value="../../../../classlib/trunk" />
+        <available type="dir" property="external.dep.CLASSLIB" 
+                 file="../../../classlib" 
+                 value="../../../classlib" />
 
         <!-- some derived values -->
         <property name="external.dep.CLASSLIB.includes" value="${external.dep.CLASSLIB}/deploy/include" />



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

Posted by Thorbjørn Ravn Andersen <th...@gmail.com>.
Garrett Rooney skrev  den 08-06-2006 16:04:
> The basic idea is that you initially check out a copy of trunk that
> has a few empty directories in it.  Then, svn switch says "hey, this
> directory in my working copy that used to point to
> $HARMONY/trunk/classpath (which is empty) should now point to
> $HARMONY/classpath/trunk".  It'll then essentially check out the
> contents of $HARMONY/classpath/trunk into your working copy's
> classpath directory.  At that point you can do things like run an
> update or a diff at the top level of your working copy and it'll
> nicely recurse into the switched subdirectories.  If you make changes
> in those subdirectories there and commit them they'll be committed to
> the $HARMONY/classpath/trunk directory in the repository (or wherever
> you had that subdirectory switched to).  Does that make sense?

The current version of dlrvm has hard wired paths so this is currently 
not easy to do.  Is this kind of working tree manipulation easy to 
automate as ant scripts?

-- 
  Thorbjørn

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

Posted by Oliver Deakin <ol...@googlemail.com>.
That's great, thanks Garrett. Sound like a very sensible, simple way to
approach global builds.

Regards,
Oliver

Garrett Rooney wrote:
> On 6/8/06, Oliver Deakin <ol...@googlemail.com> wrote:
>
>> Would /classlib and /drlvm be checked out in your local workspace as 
>> peers
>> to /trunk or would they be checked out under /trunk/classlib etc. and
>> linked to
>> the right bit of SVN from there? i.e. if you wanted to make local
>> changes to classlib,
>> say, and be able to incorporate them into your global build under 
>> /trunk,
>> but also generate patches against the code in svn under /classlib/trunk
>> for submission,
>> where would the code you are making changes to be checked out to in the
>> above
>> diagram? (my knowledge of svn switch is somewhat slim...)
>
> The basic idea is that you initially check out a copy of trunk that
> has a few empty directories in it.  Then, svn switch says "hey, this
> directory in my working copy that used to point to
> $HARMONY/trunk/classpath (which is empty) should now point to
> $HARMONY/classpath/trunk".  It'll then essentially check out the
> contents of $HARMONY/classpath/trunk into your working copy's
> classpath directory.  At that point you can do things like run an
> update or a diff at the top level of your working copy and it'll
> nicely recurse into the switched subdirectories.  If you make changes
> in those subdirectories there and commit them they'll be committed to
> the $HARMONY/classpath/trunk directory in the repository (or wherever
> you had that subdirectory switched to).  Does that make sense?
>
> -garrett
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>

-- 
Oliver Deakin
IBM United Kingdom Limited


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 6/8/06, Oliver Deakin <ol...@googlemail.com> wrote:

> Would /classlib and /drlvm be checked out in your local workspace as peers
> to /trunk or would they be checked out under /trunk/classlib etc. and
> linked to
> the right bit of SVN from there? i.e. if you wanted to make local
> changes to classlib,
> say, and be able to incorporate them into your global build under /trunk,
> but also generate patches against the code in svn under /classlib/trunk
> for submission,
> where would the code you are making changes to be checked out to in the
> above
> diagram? (my knowledge of svn switch is somewhat slim...)

The basic idea is that you initially check out a copy of trunk that
has a few empty directories in it.  Then, svn switch says "hey, this
directory in my working copy that used to point to
$HARMONY/trunk/classpath (which is empty) should now point to
$HARMONY/classpath/trunk".  It'll then essentially check out the
contents of $HARMONY/classpath/trunk into your working copy's
classpath directory.  At that point you can do things like run an
update or a diff at the top level of your working copy and it'll
nicely recurse into the switched subdirectories.  If you make changes
in those subdirectories there and commit them they'll be committed to
the $HARMONY/classpath/trunk directory in the repository (or wherever
you had that subdirectory switched to).  Does that make sense?

-garrett

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [general] More SVN restructuring thoughts... (was Re: Ant build | IOException)

Posted by Oliver Deakin <ol...@googlemail.com>.
Geir Magnusson Jr wrote:
> This brings up a good point. (I'm so used to CVS, I keep forgetting that
> branches and tags really don't exist in SVN...)
>
> We have been talking a little about how to 'federate' things so that we
> have a harmony project, rather than separate islands of activity, so
> that a user can type 'build' somewhere, and get a full working system w/
> tools, vm and classlib.
>
> The problem that we'll face is that we have
>
> harmony/classlib/trunk
>         classlib/branches
>         classlib/tags
>         classlib/archive
> harmony/drlvm/trunk
>         drlvm/branches
>         ...
>
> So you get a big pile of stuff whenever you do a svn co on root, as
> Garrett points out.
>
> I was chatting about this w/ Garrett, who is a real SVN guru, and he
> suggested we do the following -
>
> * setup harmony/trunk as the federation point w/ empty directories for
> /tools, /vm, /classlib, whatever
>
> * setup a fetch script so that it does an svn switch for each of them
> into the right part of the svn tree (letting people choose among VM
>   

Sounds like a pretty flexible way to go grab whichever bits you want to 
build.

> choices, versions of classlib, etc).  You could also just use a symlink
> to point up and over to /harmony/classlib/trunk
>
> * build from that set
>
> So we'd end up with
>
> /harmony
>         /classlib
>                  /trunk
>                  /...
>         /drlvm
>               /trunk
>               /...
>         /trunk
>               /build
>                     build.xml
>                     ...
>               /target
>                     < where the build goes >
>               /classlib
>                     <empty>
>               /vm
>                     <empty>
>               /tools
>                     <empty>
>   

Would /classlib and /drlvm be checked out in your local workspace as peers
to /trunk or would they be checked out under /trunk/classlib etc. and 
linked to
the right bit of SVN from there? i.e. if you wanted to make local 
changes to classlib,
say, and be able to incorporate them into your global build under /trunk,
but also generate patches against the code in svn under /classlib/trunk 
for submission,
where would the code you are making changes to be checked out to in the 
above
diagram? (my knowledge of svn switch is somewhat slim...)

> This seems like it gives us incredible freedom, ease for someone that
> wants to just do a top-level build (svn co harmony/trunk; setup vm=drlvm
> classlib=head; build) and see what they get, and doesn't hammer SVN so
> hard...
>   

I like the idea of being able to just kick off a script specifying which 
components you want,
and it takes care of putting them in the right place and setting them up 
for the build. Keeping
it simple to use and catering for all VMs definitely makes it attractive :)

> If no one thinks of a problem, I'll try this.  I doesn't change the fact
> that projects should be able to push generated artifacts into a common
> directory, but does make things easy to setup and work with efficiently.
>   

Cool - sounds like a good idea.

Regards,
Oliver

> Thanks Garrett!
>
> geir
>
>
> Garrett Rooney wrote:
>   
>> On 6/7/06, Thorbjørn Ravn Andersen <th...@gmail.com> wrote:
>>
>>     
>>> svn checkout https://svn.apache.org/repos/asf/incubator/harmony
>>>
>>> ant -f harmony/enhanced/classlib/trunk/make/depends.xml download
>>>       
>> Please don't check out the root of the harmony tree.  It's incredibly
>> wasteful, that's far more content than you need, and it'll only get
>> worse as more tags and branches are created.
>>
>> If you want to check out the trunk of the classlib, check out the
>> trunk of the classlib:
>>
>> svn checkout
>> https://svn.apache.org/repos/asf/incubator/harmony/enhanced/classlib/trunk
>> classlib
>>
>> -garrett
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
>>     
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
>   

-- 
Oliver Deakin
IBM United Kingdom Limited


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org