Spur corrupts large images when saving

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
59 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

fniephaus
 
Hi all,

Bert already mentioned that I've been working on migrating the repository from SVN to Git.
I believe there are three problems that need to be solved here:

1. Migrating SVN externals for sharing code between branches
This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
and subtrees [2]. I would suggest to move code that we want to share into separate Git
repositories and include them as submodules. I think submodules are easier to understand
(GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
shared repository, one needs to update all references to this repository as well. But I'd say this
is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
submodules in more detail.

2. Versioning and new releases
If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
should use Git commit hashes and Git tags. Let's say we want to release a new version, we tag
the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
server.

3. Keeping a copy of the code
We of course want to keep a copy of our code at all times in case something happens with
GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
set up a tool that creates a backup on one of our servers whenever we change code on GitHub.


Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
code to the SVN as soon as we start to migrate. This obviously requires everyone working with
the code base to switch to Git. So please let me know if everyone is comfortable with the
migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
because I would be able to do it with Bert sitting two rooms next to me :)

I hope I have thought about the important things and I'm happy to answer any questions you
might have.

Best,
Fabio




--

On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:

On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>
> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>
> >
> > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
> > wrote:
> >
> >>
> >> Actually, Fabio did a complete migration while squeakvm.org was out.
> >> This had a full history of all SVN commits.
> >>
> >> ???Unfortunately??? Ian fixed the server too soon so development continued on
> >> SVN, so now the git repo is again out-of-date.
> >>
> >> We would need to freeze the SVN, do the migration again, and use git from
> >> that point on. It would involve a day of downtime, but doing this sooner
> >> than later would be a good thing.
> >>
> >>
> doesn't gitsvn help?
>

I have to admit that I did not even know that an active git svn bridge
was possible. It sounds like this it might be very helpful.

It would be great to have the advantages of git for development, and
it could also be helpful to be able to have the squeakvm.org repo updated
periodically from git. There are portions of the platforms tree that Eliot
has been able to make identical for oscog and trunk, and this seems like
a worthwhile effort to continue.

Another possible advantage is that Ian's cmake build process takes advantage
of the SVN revision numbering, and it would be good to make sure this stays
healthy as development proceeds (it's a lot nicer than autotools).

Eliot, do you have a view on this?

Dave

Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by David T. Lewis

Hi David, Hi All,


> On Apr 23, 2016, at 8:10 AM, David T. Lewis <[hidden email]> wrote:
>
>
>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>
>> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>>
>>>
>>> On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
>>> wrote:
>>>
>>>>
>>>> Actually, Fabio did a complete migration while squeakvm.org was out.
>>>> This had a full history of all SVN commits.
>>>>
>>>> ???Unfortunately??? Ian fixed the server too soon so development continued on
>>>> SVN, so now the git repo is again out-of-date.
>>>>
>>>> We would need to freeze the SVN, do the migration again, and use git from
>>>> that point on. It would involve a day of downtime, but doing this sooner
>>>> than later would be a good thing.
>> doesn't gitsvn help?
>
> I have to admit that I did not even know that an active git svn bridge
> was possible. It sounds like this it might be very helpful.
>
> It would be great to have the advantages of git for development, and
> it could also be helpful to be able to have the squeakvm.org repo updated
> periodically from git. There are portions of the platforms tree that Eliot
> has been able to make identical for oscog and trunk, and this seems like
> a worthwhile effort to continue.
>
> Another possible advantage is that Ian's cmake build process takes advantage
> of the SVN revision numbering, and it would be good to make sure this stays
> healthy as development proceeds (it's a lot nicer than autotools).
>
> Eliot, do you have a view on this?

I use svn revision numbering to version stamp my builds.  IMO it's essential that VMs be version stamped with the urls and version numbers of their constituent sources, and that they be built from versioned C that is produced from versioned VMMaker, /not/ that VM source is generated and built without versioning (except for personal use).

If Pharo uses git directly I want platforms/Cross/VM/sqSCCSVersion.h and its dual in (IIRC) platforms/Cross/plugins/sqSCCSPluginVersion.h to be updated so that git version info is included, and /not/ that Pharo takes its own route.  All VMs should understand the -version command line option and display the appropriate information.  (I wrote sqSCCSVersion.h to work with any source code control system, given a little editing, and it was hugely galling that this effort was ignored).

I also did a migration to github but didn't find time to test the subversion bridge.

I really, really want a build system that makes *very* limited use of either autoconf or cmake.  If you look at the Cog build tree I've written gmake makefiles for Windows (adapted from Andreas' originals) and Mac OS X.  These are much more malleable and easy to use than Xcode, autoconfig or cmake (IMNERHO (*)).  Sooner rather than later the UNIX builds should move to this pattern too.  In each build subdirectory is a common directory containing makefiles, eg build.macos32x86/common, and each build directory contains a very simple Makefile that includes the top level Makefile from common, supplying only configuration information.

The only thing missing from this scheme is a cmake or autoconf generated config file, [eg cogConfig.h to avoid conflicting with config.h files generated by cmake or autoconf when building libraries used by plugins, a maddening problem :-) ].  This file should live in the per-platform build directory, eg build.macos32x86/cogConfig.h, and be built once, not on every bloody build, wasting hide amounts of time for people doing VM development (it delays the results from slaves too).

Volunteers welcomed with open arms, and prostrate kissing of feet.  *please* help.  I'm begging.  We need to "be in the same page"; we need to pool our efforts.

For example I would /love/ for someone expert in either autoconf or cmake to write good install instructions for Mac OS X (Xcode includes neither) and code to generate a cogConfig.h that defines things like HAS_POLL HAS_SELECT HAS_OPENGL et al.

I would /love/ for someone to do the same for Windows under Cygwin and/or Windows under mingw.

I would /love/ for someone to work on a 64-bit Spur build for win64.

I would /love/ for someone to organize the build.linux32ARM builds so that the VMs built there run in both Raspberry Pi and Android, and not merely complain to me that they don't and assume I'm an infinitely expandable resource and will get round to it someday even though I have no access to an android device but have three rpis and a b3.

Have I ranted enough now?  Can I go back under my stone now and sulk?

:-)

(*) in my not even remotely humble opinion; I built VMs last night; part of my brain is not in a good mood ;-)

> Dave
>
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by fniephaus
 
Hi Fabio,


On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:

Hi all,

Bert already mentioned that I've been working on migrating the repository from SVN to Git.
I believe there are three problems that need to be solved here:

1. Migrating SVN externals for sharing code between branches
This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
and subtrees [2]. I would suggest to move code that we want to share into separate Git
repositories and include them as submodules. I think submodules are easier to understand
(GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
shared repository, one needs to update all references to this repository as well. But I'd say this
is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
submodules in more detail.

2. Versioning and new releases
If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
should use Git commit hashes and Git tags.

But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?

Let's say we want to release a new version, we tag
the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
server.

3. Keeping a copy of the code
We of course want to keep a copy of our code at all times in case something happens with
GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
set up a tool that creates a backup on one of our servers whenever we change code on GitHub.


Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
code to the SVN as soon as we start to migrate. This obviously requires everyone working with
the code base to switch to Git. So please let me know if everyone is comfortable with the
migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
because I would be able to do it with Bert sitting two rooms next to me :)

I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.



I hope I have thought about the important things and I'm happy to answer any questions you
might have.

Best,
Fabio




--

On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:

On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>
> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>
> >
> > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
> > wrote:
> >
> >>
> >> Actually, Fabio did a complete migration while squeakvm.org was out.
> >> This had a full history of all SVN commits.
> >>
> >> ???Unfortunately??? Ian fixed the server too soon so development continued on
> >> SVN, so now the git repo is again out-of-date.
> >>
> >> We would need to freeze the SVN, do the migration again, and use git from
> >> that point on. It would involve a day of downtime, but doing this sooner
> >> than later would be a good thing.
> >>
> >>
> doesn't gitsvn help?
>

I have to admit that I did not even know that an active git svn bridge
was possible. It sounds like this it might be very helpful.

It would be great to have the advantages of git for development, and
it could also be helpful to be able to have the squeakvm.org repo updated
periodically from git. There are portions of the platforms tree that Eliot
has been able to make identical for oscog and trunk, and this seems like
a worthwhile effort to continue.

Another possible advantage is that Ian's cmake build process takes advantage
of the SVN revision numbering, and it would be good to make sure this stays
healthy as development proceeds (it's a lot nicer than autotools).

Eliot, do you have a view on this?

Dave


_,,,^..^,,,_ (phone)
Reply | Threaded
Open this post in threaded view
|

Repository name(s) [was Re: [Vm-dev] svn git bridge? ...]

Eliot Miranda-2
In reply to this post by fniephaus

Hi All,

    one very important question is what are the names of the top level git repository and sub modules?  Before you suggest something please check that the name isn't already used on github.

Here are some suggestions

http://cogvm.github.io/.com
http://backtothefuture.github.io/.com
https://opensmalltalkvm.github.io/com


_,,,^..^,,,_ (phone)
Reply | Threaded
Open this post in threaded view
|

Re: Repository name(s) [was Re: [Vm-dev] svn git bridge? ...]

Eliot Miranda-2



> On Apr 23, 2016, at 10:01 AM, Eliot Miranda <[hidden email]> wrote:
>
> Hi All,
>
>    one very important question is what are the names of the top level git repository and sub modules?  Before you suggest something please check that the name isn't already used on github.
>
> Here are some suggestions
>
> http://cogvm.github.io/.com
> http://backtothefuture.github.io/.com
> https://opensmalltalkvm.github.io/com

Or github.com/
                  cogvm
                  backtothefuture
                  opensmalltalkvm
of course

>
>
> _,,,^..^,,,_ (phone)
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

EstebanLM
In reply to this post by Eliot Miranda-2
 
Hi,

I would like to have a list of constraints so we can sort it (otherwise this will never happen… :S)
So far I have: 

- sqSCCSVersion.h adapt to git. In Pharo we already have something but I do not think is enough… I will take a look to this. 
- do not break Cadence builds. AFAIK, nothing forbids jenkins to stop using SVN and start using GIT (we also use Jenkins for our builds and we didn’t found any problem)… someone has to do the change, but it should be fairly straightforward. Who is the person who can take this task? (I’d do it, but I suppose Cadence has access policy to that)

what more?

(please, take into account that this is very important for us, and that I personally will be in a better position to go back to the trunk, and then contribute back my changes, that’s why I’m pushing it)

Esteban

ps: As far as I understood, Fabio didn’t said “next thursday”, but “one thursday” :)


On 23 Apr 2016, at 18:54, Eliot Miranda <[hidden email]> wrote:

Hi Fabio,


On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:

Hi all,

Bert already mentioned that I've been working on migrating the repository from SVN to Git.
I believe there are three problems that need to be solved here:

1. Migrating SVN externals for sharing code between branches
This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
and subtrees [2]. I would suggest to move code that we want to share into separate Git
repositories and include them as submodules. I think submodules are easier to understand
(GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
shared repository, one needs to update all references to this repository as well. But I'd say this
is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
submodules in more detail.

2. Versioning and new releases
If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
should use Git commit hashes and Git tags. 

But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?

Let's say we want to release a new version, we tag
the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
server.

3. Keeping a copy of the code
We of course want to keep a copy of our code at all times in case something happens with
GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
set up a tool that creates a backup on one of our servers whenever we change code on GitHub.


Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
code to the SVN as soon as we start to migrate. This obviously requires everyone working with
the code base to switch to Git. So please let me know if everyone is comfortable with the
migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
because I would be able to do it with Bert sitting two rooms next to me :)

I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.



I hope I have thought about the important things and I'm happy to answer any questions you
might have.

Best,
Fabio




-- 

On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:

On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:

>
> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>
> >
> > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
> > wrote:
> >
> >>
> >> Actually, Fabio did a complete migration while squeakvm.org was out.
> >> This had a full history of all SVN commits.
> >>
> >> ???Unfortunately??? Ian fixed the server too soon so development continued on
> >> SVN, so now the git repo is again out-of-date.
> >>
> >> We would need to freeze the SVN, do the migration again, and use git from
> >> that point on. It would involve a day of downtime, but doing this sooner
> >> than later would be a good thing.
> >>
> >>
> doesn't gitsvn help?
>

I have to admit that I did not even know that an active git svn bridge
was possible. It sounds like this it might be very helpful.

It would be great to have the advantages of git for development, and
it could also be helpful to be able to have the squeakvm.org repo updated
periodically from git. There are portions of the platforms tree that Eliot
has been able to make identical for oscog and trunk, and this seems like
a worthwhile effort to continue.

Another possible advantage is that Ian's cmake build process takes advantage
of the SVN revision numbering, and it would be good to make sure this stays
healthy as development proceeds (it's a lot nicer than autotools).

Eliot, do you have a view on this?

Dave


_,,,^..^,,,_ (phone)

Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by Eliot Miranda-2
 
Hi Fabio,

   and the "if not, why not?" question is a request for information, not an expression of annoyance.  Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
    myvm -version
    yourvm -version
whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.

_,,,^..^,,,_ (phone)

On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:

Hi Fabio,


On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:

Hi all,

Bert already mentioned that I've been working on migrating the repository from SVN to Git.
I believe there are three problems that need to be solved here:

1. Migrating SVN externals for sharing code between branches
This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
and subtrees [2]. I would suggest to move code that we want to share into separate Git
repositories and include them as submodules. I think submodules are easier to understand
(GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
shared repository, one needs to update all references to this repository as well. But I'd say this
is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
submodules in more detail.

2. Versioning and new releases
If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
should use Git commit hashes and Git tags.

But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?

Let's say we want to release a new version, we tag
the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
server.

3. Keeping a copy of the code
We of course want to keep a copy of our code at all times in case something happens with
GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
set up a tool that creates a backup on one of our servers whenever we change code on GitHub.


Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
code to the SVN as soon as we start to migrate. This obviously requires everyone working with
the code base to switch to Git. So please let me know if everyone is comfortable with the
migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
because I would be able to do it with Bert sitting two rooms next to me :)

I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.



I hope I have thought about the important things and I'm happy to answer any questions you
might have.

Best,
Fabio




--

On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:

On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>
> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>
> >
> > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
> > wrote:
> >
> >>
> >> Actually, Fabio did a complete migration while squeakvm.org was out.
> >> This had a full history of all SVN commits.
> >>
> >> ???Unfortunately??? Ian fixed the server too soon so development continued on
> >> SVN, so now the git repo is again out-of-date.
> >>
> >> We would need to freeze the SVN, do the migration again, and use git from
> >> that point on. It would involve a day of downtime, but doing this sooner
> >> than later would be a good thing.
> >>
> >>
> doesn't gitsvn help?
>

I have to admit that I did not even know that an active git svn bridge
was possible. It sounds like this it might be very helpful.

It would be great to have the advantages of git for development, and
it could also be helpful to be able to have the squeakvm.org repo updated
periodically from git. There are portions of the platforms tree that Eliot
has been able to make identical for oscog and trunk, and this seems like
a worthwhile effort to continue.

Another possible advantage is that Ian's cmake build process takes advantage
of the SVN revision numbering, and it would be good to make sure this stays
healthy as development proceeds (it's a lot nicer than autotools).

Eliot, do you have a view on this?

Dave


_,,,^..^,,,_ (phone)
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Tobias Pape


On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:

> Hi Fabio,
>
>    and the "if not, why not?" question is a request for information, not an expression of annoyance.  Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>     myvm -version
>     yourvm -version
> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.

I did such stuff like 4 years ago for self (don't ask why)
I changed their whole VM build process to CMake.

Here's some parts that vaguely do what you want want:

This uses "date" to generate a vm build date (lines 12 and following)
and "git" to extract VCS infos (lines 39 and following)
        https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
(it is namend .in because it gets configured itself from elsewhere)

It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
I would love to have time for that (although it regularly makes me angry :D).

Best regards
        -Tobias

PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
    probably some mix of the self vm stuff. It can really work. And it can also help us
    getting things compiled on MS compilers, btw.


>
> _,,,^..^,,,_ (phone)
>
> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>
>> Hi Fabio,
>>
>>
>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>
>>> Hi all,
>>>
>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>> I believe there are three problems that need to be solved here:
>>>
>>> 1. Migrating SVN externals for sharing code between branches
>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>> repositories and include them as submodules. I think submodules are easier to understand
>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>> submodules in more detail.
>>>
>>> 2. Versioning and new releases
>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>> should use Git commit hashes and Git tags.
>>
>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>
>>> Let's say we want to release a new version, we tag
>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>> server.
>>>
>>> 3. Keeping a copy of the code
>>> We of course want to keep a copy of our code at all times in case something happens with
>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>
>>>
>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>
>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>
>>
>>>
>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>> might have.
>>>
>>> Best,
>>> Fabio
>>>
>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>> [3] http://travis-ci.org
>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>
>>>
>>>
>>> --
>>>
>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>
>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>> >
>>> > 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>>> >
>>> > >
>>> > > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
>>> > > wrote:
>>> > >
>>> > >>
>>> > >> Actually, Fabio did a complete migration while squeakvm.org was out.
>>> > >> This had a full history of all SVN commits.
>>> > >>
>>> > >> ???Unfortunately??? Ian fixed the server too soon so development continued on
>>> > >> SVN, so now the git repo is again out-of-date.
>>> > >>
>>> > >> We would need to freeze the SVN, do the migration again, and use git from
>>> > >> that point on. It would involve a day of downtime, but doing this sooner
>>> > >> than later would be a good thing.
>>> > >>
>>> > >>
>>> > doesn't gitsvn help?
>>> >
>>>
>>> I have to admit that I did not even know that an active git svn bridge
>>> was possible. It sounds like this it might be very helpful.
>>>
>>> It would be great to have the advantages of git for development, and
>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>> periodically from git. There are portions of the platforms tree that Eliot
>>> has been able to make identical for oscog and trunk, and this seems like
>>> a worthwhile effort to continue.
>>>
>>> Another possible advantage is that Ian's cmake build process takes advantage
>>> of the SVN revision numbering, and it would be good to make sure this stays
>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>
>>> Eliot, do you have a view on this?
>>>
>>> Dave
>>>
>>
>> _,,,^..^,,,_ (phone)


Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by EstebanLM
 
Hi Esteban, Hi Fabio,


On Apr 23, 2016, at 10:11 AM, Esteban Lorenzano <[hidden email]> wrote:

Hi,

I would like to have a list of constraints so we can sort it (otherwise this will never happen… :S)
So far I have: 

- sqSCCSVersion.h adapt to git. In Pharo we already have something but I do not think is enough… I will take a look to this. 

- do not break Cadence builds. AFAIK, nothing forbids jenkins to stop using SVN and start using GIT (we also use Jenkins for our builds and we didn’t found any problem)… someone has to do the change, but it should be fairly straightforward. Who is the person who can take this task? (I’d do it, but I suppose Cadence has access policy to that)

My colleague Bob Westergaard and I will have to do this.  There is no way Cadence will allow people from outside to do so ;-)

So I like Fabio's suggestion of deprecating subversion.  We can keep the subversion bridge for some time (6 months, 1 year?), announce when it is going away (if ever?) and give people time to transition.


what more?

(please, take into account that this is very important for us, and that I personally will be in a better position to go back to the trunk, and then contribute back my changes, that’s why I’m pushing it)

And having you, and others, contribute is really important to me too.  That's why I'm supporting this.

So another thing to discuss and then define is what's the process for updating the master repository?  I've not used github to do this so I need educating.  I presume:

- there is a set of trusted developers who have permission to integrate
- there is a smaller set of administrators who can redefine the set of trusted developer
- there is a commonly used pattern for differentiating between a version of the repository that exists to be built by and tested by slaves, and a version that has built and passed the tests satisfactorily 

Esteban

ps: As far as I understood, Fabio didn’t said “next thursday”, but “one thursday” :)

Oops.  I should read these messages wearing sunglasses...  Sorry


On 23 Apr 2016, at 18:54, Eliot Miranda <[hidden email]> wrote:

Hi Fabio,


On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:

Hi all,

Bert already mentioned that I've been working on migrating the repository from SVN to Git.
I believe there are three problems that need to be solved here:

1. Migrating SVN externals for sharing code between branches
This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
and subtrees [2]. I would suggest to move code that we want to share into separate Git
repositories and include them as submodules. I think submodules are easier to understand
(GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
shared repository, one needs to update all references to this repository as well. But I'd say this
is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
submodules in more detail.

2. Versioning and new releases
If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
should use Git commit hashes and Git tags. 

But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?

Let's say we want to release a new version, we tag
the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
server.

3. Keeping a copy of the code
We of course want to keep a copy of our code at all times in case something happens with
GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
set up a tool that creates a backup on one of our servers whenever we change code on GitHub.


Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
code to the SVN as soon as we start to migrate. This obviously requires everyone working with
the code base to switch to Git. So please let me know if everyone is comfortable with the
migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
because I would be able to do it with Bert sitting two rooms next to me :)

I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.



I hope I have thought about the important things and I'm happy to answer any questions you
might have.

Best,
Fabio




-- 

On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:

On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:

>
> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>
> >
> > On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
> > wrote:
> >
> >>
> >> Actually, Fabio did a complete migration while squeakvm.org was out.
> >> This had a full history of all SVN commits.
> >>
> >> ???Unfortunately??? Ian fixed the server too soon so development continued on
> >> SVN, so now the git repo is again out-of-date.
> >>
> >> We would need to freeze the SVN, do the migration again, and use git from
> >> that point on. It would involve a day of downtime, but doing this sooner
> >> than later would be a good thing.
> >>
> >>
> doesn't gitsvn help?
>

I have to admit that I did not even know that an active git svn bridge
was possible. It sounds like this it might be very helpful.

It would be great to have the advantages of git for development, and
it could also be helpful to be able to have the squeakvm.org repo updated
periodically from git. There are portions of the platforms tree that Eliot
has been able to make identical for oscog and trunk, and this seems like
a worthwhile effort to continue.

Another possible advantage is that Ian's cmake build process takes advantage
of the SVN revision numbering, and it would be good to make sure this stays
healthy as development proceeds (it's a lot nicer than autotools).

Eliot, do you have a view on this?

Dave


_,,,^..^,,,_ (phone)

Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by Tobias Pape

Hi Tobias,

> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>
>
>
>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>
>> Hi Fabio,
>>
>>   and the "if not, why not?" question is a request for information, not an expression of annoyance.  Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>    myvm -version
>>    yourvm -version
>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>
> I did such stuff like 4 years ago for self (don't ask why)
> I changed their whole VM build process to CMake.
>
> Here's some parts that vaguely do what you want want:
>
> This uses "date" to generate a vm build date (lines 12 and following)
> and "git" to extract VCS infos (lines 39 and following)
>    https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
> (it is namend .in because it gets configured itself from elsewhere)
>
> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
> I would love to have time for that (although it regularly makes me angry :D).
>
> Best regards
>    -Tobias
>
> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>    probably some mix of the self vm stuff. It can really work. And it can also help us
>    getting things compiled on MS compilers, btw.

What do you mean by "Ian's way" exactly?  Please describe it.  

Things I know:
- Ian's autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with
- gmake files work with MS compilers too

I am strongly in favor of gmake files.  It's /much/ easier to work with.  Please, please, please let's limit the use of cmake to generating a config file as I've already discussed.

>
>
>>
>> _,,,^..^,,,_ (phone)
>>
>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>
>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>> I believe there are three problems that need to be solved here:
>>>>
>>>> 1. Migrating SVN externals for sharing code between branches
>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>> submodules in more detail.
>>>>
>>>> 2. Versioning and new releases
>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>> should use Git commit hashes and Git tags.
>>>
>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>
>>>> Let's say we want to release a new version, we tag
>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>> server.
>>>>
>>>> 3. Keeping a copy of the code
>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>
>>>>
>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>
>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>
>>>
>>>>
>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>> might have.
>>>>
>>>> Best,
>>>> Fabio
>>>>
>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>> [3] http://travis-ci.org
>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>
>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>>>>>
>>>>>>
>>>>>> On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> Actually, Fabio did a complete migration while squeakvm.org was out.
>>>>>>> This had a full history of all SVN commits.
>>>>>>>
>>>>>>> ???Unfortunately??? Ian fixed the server too soon so development continued on
>>>>>>> SVN, so now the git repo is again out-of-date.
>>>>>>>
>>>>>>> We would need to freeze the SVN, do the migration again, and use git from
>>>>>>> that point on. It would involve a day of downtime, but doing this sooner
>>>>>>> than later would be a good thing.
>>>>> doesn't gitsvn help?
>>>>
>>>> I have to admit that I did not even know that an active git svn bridge
>>>> was possible. It sounds like this it might be very helpful.
>>>>
>>>> It would be great to have the advantages of git for development, and
>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>> has been able to make identical for oscog and trunk, and this seems like
>>>> a worthwhile effort to continue.
>>>>
>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>
>>>> Eliot, do you have a view on this?
>>>>
>>>> Dave
>>>
>>> _,,,^..^,,,_ (phone)
>
>
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Tobias Pape
In reply to this post by Eliot Miranda-2
 

On 23.04.2016, at 19:35, Eliot Miranda <[hidden email]> wrote:

> Hi Esteban, Hi Fabio,
>
>
> On Apr 23, 2016, at 10:11 AM, Esteban Lorenzano <[hidden email]> wrote:
>
>> Hi,
>>
>> I would like to have a list of constraints so we can sort it (otherwise this will never happen… :S)
>> So far I have:
>>
>> - sqSCCSVersion.h adapt to git. In Pharo we already have something but I do not think is enough… I will take a look to this.
>
>> - do not break Cadence builds. AFAIK, nothing forbids jenkins to stop using SVN and start using GIT (we also use Jenkins for our builds and we didn’t found any problem)… someone has to do the change, but it should be fairly straightforward. Who is the person who can take this task? (I’d do it, but I suppose Cadence has access policy to that)
>
> My colleague Bob Westergaard and I will have to do this.  There is no way Cadence will allow people from outside to do so ;-)
>
> So I like Fabio's suggestion of deprecating subversion.  We can keep the subversion bridge for some time (6 months, 1 year?), announce when it is going away (if ever?) and give people time to transition.

Are y'all aware that Github automatically provides an SVN bridge?

svnongithub.PNG (118K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by Tobias Pape

H Tobias,


> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>
>
>
>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>
>> Hi Fabio,
>>
>>   and the "if not, why not?" question is a request for information, not an expression of annoyance.  Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>    myvm -version
>>    yourvm -version
>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>
> I did such stuff like 4 years ago for self (don't ask why)
> I changed their whole VM build process to CMake.
>
> Here's some parts that vaguely do what you want want:
>
> This uses "date" to generate a vm build date (lines 12 and following)
> and "git" to extract VCS infos (lines 39 and following)
>    https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
> (it is namend .in because it gets configured itself from elsewhere)

Do you have energy to write a prototype that works with a modified platforms/Cross/vm/sqSCCSVersion.h?

Pointing me at code I have to go read, install cmake on Mac OS X etc, is asking me to spend time I don't have doing stuff I don't see much benefit in.  Subversion already "does the right thing".  If it were my decision I'd use subversion to checkin versioned builds via the subversion to git bridge.  IIABDFI

>
> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
> I would love to have time for that (although it regularly makes me angry :D).
>
> Best regards
>    -Tobias
>
> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>    probably some mix of the self vm stuff. It can really work. And it can also help us
>    getting things compiled on MS compilers, btw.
>
>
>>
>> _,,,^..^,,,_ (phone)
>>
>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>
>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>> I believe there are three problems that need to be solved here:
>>>>
>>>> 1. Migrating SVN externals for sharing code between branches
>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>> submodules in more detail.
>>>>
>>>> 2. Versioning and new releases
>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>> should use Git commit hashes and Git tags.
>>>
>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>
>>>> Let's say we want to release a new version, we tag
>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>> server.
>>>>
>>>> 3. Keeping a copy of the code
>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>
>>>>
>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>
>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>
>>>
>>>>
>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>> might have.
>>>>
>>>> Best,
>>>> Fabio
>>>>
>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>> [3] http://travis-ci.org
>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>
>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> 2016-04-23 13:56 GMT+02:00 Cl??ment Bera <[hidden email]>:
>>>>>
>>>>>>
>>>>>> On Sat, Apr 23, 2016 at 12:54 PM, Bert Freudenberg <[hidden email]>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> Actually, Fabio did a complete migration while squeakvm.org was out.
>>>>>>> This had a full history of all SVN commits.
>>>>>>>
>>>>>>> ???Unfortunately??? Ian fixed the server too soon so development continued on
>>>>>>> SVN, so now the git repo is again out-of-date.
>>>>>>>
>>>>>>> We would need to freeze the SVN, do the migration again, and use git from
>>>>>>> that point on. It would involve a day of downtime, but doing this sooner
>>>>>>> than later would be a good thing.
>>>>> doesn't gitsvn help?
>>>>
>>>> I have to admit that I did not even know that an active git svn bridge
>>>> was possible. It sounds like this it might be very helpful.
>>>>
>>>> It would be great to have the advantages of git for development, and
>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>> has been able to make identical for oscog and trunk, and this seems like
>>>> a worthwhile effort to continue.
>>>>
>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>
>>>> Eliot, do you have a view on this?
>>>>
>>>> Dave
>>>
>>> _,,,^..^,,,_ (phone)
>
>
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by Tobias Pape



> On Apr 23, 2016, at 10:44 AM, Tobias Pape <[hidden email]> wrote:
>
>
>> On 23.04.2016, at 19:35, Eliot Miranda <[hidden email]> wrote:
>>
>> Hi Esteban, Hi Fabio,
>>
>>
>>> On Apr 23, 2016, at 10:11 AM, Esteban Lorenzano <[hidden email]> wrote:
>>>
>>> Hi,
>>>
>>> I would like to have a list of constraints so we can sort it (otherwise this will never happen… :S)
>>> So far I have:
>>>
>>> - sqSCCSVersion.h adapt to git. In Pharo we already have something but I do not think is enough… I will take a look to this.
>>
>>> - do not break Cadence builds. AFAIK, nothing forbids jenkins to stop using SVN and start using GIT (we also use Jenkins for our builds and we didn’t found any problem)… someone has to do the change, but it should be fairly straightforward. Who is the person who can take this task? (I’d do it, but I suppose Cadence has access policy to that)
>>
>> My colleague Bob Westergaard and I will have to do this.  There is no way Cadence will allow people from outside to do so ;-)
>>
>> So I like Fabio's suggestion of deprecating subversion.  We can keep the subversion bridge for some time (6 months, 1 year?), announce when it is going away (if ever?) and give people time to transition.
>
>
> Are y'all aware that Github automatically provides an SVN bridge?
> <svnongithub.PNG>

Yes :-).  That's the key reason we're able to move forward in this.  Anyone tested what happens to subversion tags?  Are they supported?  Do they continue to work?  If so, can we provoke the save tag editing that subversion does from git?  (The next version number is a server side property).
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Tobias Pape
In reply to this post by Eliot Miranda-2


On 23.04.2016, at 19:44, Eliot Miranda <[hidden email]> wrote:

>
> Hi Tobias,
>
>> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>>
>>
>>
>>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>  and the "if not, why not?" question is a request for information, not an expression of annoyance. Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>>   myvm -version
>>>   yourvm -version
>>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>>
>> I did such stuff like 4 years ago for self (don't ask why)
>> I changed their whole VM build process to CMake.
>>
>> Here's some parts that vaguely do what you want want:
>>
>> This uses "date" to generate a vm build date (lines 12 and following)
>> and "git" to extract VCS infos (lines 39 and following)
>>   https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
>> (it is namend .in because it gets configured itself from elsewhere)
>>
>> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
>> I would love to have time for that (although it regularly makes me angry :D).
>>
>> Best regards
>>   -Tobias
>>
>> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>>   probably some mix of the self vm stuff. It can really work. And it can also help us
>>   getting things compiled on MS compilers, btw.
>
> What do you mean by "Ian's way" exactly?  Please describe it.  
>
> Things I know:
> - Ian's autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with

Ian's unix conf uses CMake for a while now.
There's no autoconf.
Thers no platforms/unix/conf, neither in
        http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/
nor in
        https://github.com/fniephaus/squeak/tree/master/platforms/unix


So I'm a bit confused about what you refer to.

> - gmake files work with MS compilers too
>
> I am strongly in favor of gmake files.  It's /much/ easier to work with.

Sorry, i beg to differ.

>  Please, please, please let's limit the use of cmake to generating a config file as I've already discussed.

you mean gnu make?

        :/

However, its saturday evening, I don't like to argue at that time.
Maybe I'll find some time next week to make a write up :)

Best
        -Tobias


>
>>
>>
>>>
>>> _,,,^..^,,,_ (phone)
>>>
>>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>>
>>>> Hi Fabio,
>>>>
>>>>
>>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>>> I believe there are three problems that need to be solved here:
>>>>>
>>>>> 1. Migrating SVN externals for sharing code between branches
>>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>>> submodules in more detail.
>>>>>
>>>>> 2. Versioning and new releases
>>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>>> should use Git commit hashes and Git tags.
>>>>
>>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>>
>>>>> Let's say we want to release a new version, we tag
>>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>>> server.
>>>>>
>>>>> 3. Keeping a copy of the code
>>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>>
>>>>>
>>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>>
>>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>>
>>>>
>>>>>
>>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>>> might have.
>>>>>
>>>>> Best,
>>>>> Fabio
>>>>>
>>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>>> [3] http://travis-ci.org
>>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>>
>>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> I have to admit that I did not even know that an active git svn bridge
>>>>> was possible. It sounds like this it might be very helpful.
>>>>>
>>>>> It would be great to have the advantages of git for development, and
>>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>>> has been able to make identical for oscog and trunk, and this seems like
>>>>> a worthwhile effort to continue.
>>>>>
>>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>>
>>>>> Eliot, do you have a view on this?
>>>>>
>>>>> Dave
>>>>
>>>> _,,,^..^,,,_ (phone)


Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Tobias Pape
In reply to this post by Eliot Miranda-2


On 23.04.2016, at 19:49, Eliot Miranda <[hidden email]> wrote:

>
> H Tobias,
>
>
>> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>>
>>
>>
>>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>  and the "if not, why not?" question is a request for information, not an expression of annoyance.  Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>>   myvm -version
>>>   yourvm -version
>>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>>
>> I did such stuff like 4 years ago for self (don't ask why)
>> I changed their whole VM build process to CMake.
>>
>> Here's some parts that vaguely do what you want want:
>>
>> This uses "date" to generate a vm build date (lines 12 and following)
>> and "git" to extract VCS infos (lines 39 and following)
>>   https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
>> (it is namend .in because it gets configured itself from elsewhere)
>
> Do you have energy to write a prototype that works with a modified platforms/Cross/vm/sqSCCSVersion.h?
>
> Pointing me at code I have to go read, install cmake on Mac OS X etc, is asking me to spend time I don't have doing stuff I don't see much benefit in.  Subversion already "does the right thing".  If it were my decision I'd use subversion to checkin versioned builds via the subversion to git bridge.

Ah now i get it.
Also, my comment was more comment-y for the whole audience than an call for action to you, sorry I didn't make that clear.
And to be clear, If the version string is the only thing cmake would be used for, well, then
there are a lot of different opinions, too.

What I _wanted_ to say is: In case we switched to cmake, I already have seen a way to do that.

Best
        -Tobias

>  IIABDFI
?

>
>>
>> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
>> I would love to have time for that (although it regularly makes me angry :D).
>>
>> Best regards
>>   -Tobias
>>
>> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>>   probably some mix of the self vm stuff. It can really work. And it can also help us
>>   getting things compiled on MS compilers, btw.
>>
>>
>>>
>>> _,,,^..^,,,_ (phone)
>>>
>>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>>
>>>> Hi Fabio,
>>>>
>>>>
>>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>>> I believe there are three problems that need to be solved here:
>>>>>
>>>>> 1. Migrating SVN externals for sharing code between branches
>>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>>> submodules in more detail.
>>>>>
>>>>> 2. Versioning and new releases
>>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>>> should use Git commit hashes and Git tags.
>>>>
>>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>>
>>>>> Let's say we want to release a new version, we tag
>>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>>> server.
>>>>>
>>>>> 3. Keeping a copy of the code
>>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>>
>>>>>
>>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>>
>>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>>
>>>>
>>>>>
>>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>>> might have.
>>>>>
>>>>> Best,
>>>>> Fabio
>>>>>
>>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>>> [3] http://travis-ci.org
>>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>>
>>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> I have to admit that I did not even know that an active git svn bridge
>>>>> was possible. It sounds like this it might be very helpful.
>>>>>
>>>>> It would be great to have the advantages of git for development, and
>>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>>> has been able to make identical for oscog and trunk, and this seems like
>>>>> a worthwhile effort to continue.
>>>>>
>>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>>
>>>>> Eliot, do you have a view on this?
>>>>>
>>>>> Dave
>>>>
>>>> _,,,^..^,,,_ (phone)


Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
 

> On Apr 23, 2016, at 10:58 AM, Tobias Pape <[hidden email]> wrote:
>
> ...
>
>> IIABDFI
> ?

If It Ain't Broke, Don't Fix It.

Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

fniephaus
In reply to this post by Tobias Pape
 
Hi Eliot,

RE sqSCCSVersion.h:
I'm not sure if you like this approach, but I decided to just use macros for version, date and url [1].
I then defined those macros in a global build file [2] and added what I called $COGVOPTS to CFLAGS [3].
It looks like pharo-vm is doing something similar [4], but their approach doesn't require as much code to
change. It's probably good if Esteban explains why "he thinks it is not enough".

Best,
Fabio



--

On Sat, Apr 23, 2016 at 7:55 PM Tobias Pape <[hidden email]> wrote:


On 23.04.2016, at 19:44, Eliot Miranda <[hidden email]> wrote:

>
> Hi Tobias,
>
>> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>>
>>
>>
>>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>  and the "if not, why not?" question is a request for information, not an expression of annoyance. Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>>   myvm -version
>>>   yourvm -version
>>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>>
>> I did such stuff like 4 years ago for self (don't ask why)
>> I changed their whole VM build process to CMake.
>>
>> Here's some parts that vaguely do what you want want:
>>
>> This uses "date" to generate a vm build date (lines 12 and following)
>> and "git" to extract VCS infos (lines 39 and following)
>>   https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
>> (it is namend .in because it gets configured itself from elsewhere)
>>
>> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
>> I would love to have time for that (although it regularly makes me angry :D).
>>
>> Best regards
>>   -Tobias
>>
>> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>>   probably some mix of the self vm stuff. It can really work. And it can also help us
>>   getting things compiled on MS compilers, btw.
>
> What do you mean by "Ian's way" exactly?  Please describe it.
>
> Things I know:
> - Ian's autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with

Ian's unix conf uses CMake for a while now.
There's no autoconf.
Thers no platforms/unix/conf, neither in
        http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/
nor in
        https://github.com/fniephaus/squeak/tree/master/platforms/unix


So I'm a bit confused about what you refer to.

> - gmake files work with MS compilers too
>
> I am strongly in favor of gmake files.  It's /much/ easier to work with.

Sorry, i beg to differ.

>  Please, please, please let's limit the use of cmake to generating a config file as I've already discussed.

you mean gnu make?

        :/

However, its saturday evening, I don't like to argue at that time.
Maybe I'll find some time next week to make a write up :)

Best
        -Tobias


>
>>
>>
>>>
>>> _,,,^..^,,,_ (phone)
>>>
>>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>>
>>>> Hi Fabio,
>>>>
>>>>
>>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>>> I believe there are three problems that need to be solved here:
>>>>>
>>>>> 1. Migrating SVN externals for sharing code between branches
>>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>>> submodules in more detail.
>>>>>
>>>>> 2. Versioning and new releases
>>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>>> should use Git commit hashes and Git tags.
>>>>
>>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>>
>>>>> Let's say we want to release a new version, we tag
>>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>>> server.
>>>>>
>>>>> 3. Keeping a copy of the code
>>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>>
>>>>>
>>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>>
>>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>>
>>>>
>>>>>
>>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>>> might have.
>>>>>
>>>>> Best,
>>>>> Fabio
>>>>>
>>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>>> [3] http://travis-ci.org
>>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>>
>>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> I have to admit that I did not even know that an active git svn bridge
>>>>> was possible. It sounds like this it might be very helpful.
>>>>>
>>>>> It would be great to have the advantages of git for development, and
>>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>>> has been able to make identical for oscog and trunk, and this seems like
>>>>> a worthwhile effort to continue.
>>>>>
>>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>>
>>>>> Eliot, do you have a view on this?
>>>>>
>>>>> Dave
>>>>
>>>> _,,,^..^,,,_ (phone)


Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Tobias Pape
In reply to this post by Eliot Miranda-2
 

On 23.04.2016, at 20:01, Eliot Miranda <[hidden email]> wrote:

>
>
>> On Apr 23, 2016, at 10:58 AM, Tobias Pape <[hidden email]> wrote:
>>
>> ...
>>
>>> IIABDFI
>> ?
>
> If It Ain't Broke, Don't Fix It.

Yes, and I for one hold that it is broken[1] ;)

Best regards and happy weekend
        -Tobias

[1]: Make for squeak-vm, that is.
Reply | Threaded
Open this post in threaded view
|

Re: svn git bridge? (was: Spur corrupts large images when saving)

Eliot Miranda-2
In reply to this post by Tobias Pape
 
Hi Tobias,

On Sat, Apr 23, 2016 at 10:55 AM, Tobias Pape <[hidden email]> wrote:


On 23.04.2016, at 19:44, Eliot Miranda <[hidden email]> wrote:

>
> Hi Tobias,
>
>> On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
>>
>>
>>
>>> On 23.04.2016, at 19:21, Eliot Miranda <[hidden email]> wrote:
>>>
>>> Hi Fabio,
>>>
>>>  and the "if not, why not?" question is a request for information, not an expression of annoyance. Subversion tags update the source in checkin.  I remember Igor saying that he couldn't find out how to make gig do the same with version numbers (forgive me if my recollection is incorrect).  But if git doesn't support this then we need to invent some scheme that does work, for example doing two commits, one to generate a hash and another to commit a tag.  But we need sensible increment isn't version numbers, not stupid hashes.  It has to be a requirement that one can tell from the output of
>>>   myvm -version
>>>   yourvm -version
>>> whether the VMs are built from the same or different versions of the source and which one is more up-to-date, and that this depends on version number, not irrelevancies such as build date.
>>
>> I did such stuff like 4 years ago for self (don't ask why)
>> I changed their whole VM build process to CMake.
>>
>> Here's some parts that vaguely do what you want want:
>>
>> This uses "date" to generate a vm build date (lines 12 and following)
>> and "git" to extract VCS infos (lines 39 and following)
>>   https://github.com/russellallen/self/blob/master/vm/cmake/configureVmDate.cmake.in
>> (it is namend .in because it gets configured itself from elsewhere)
>>
>> It is clearly possible to switch all the stuff to git and cmake and I'd like to see that happen.
>> I would love to have time for that (although it regularly makes me angry :D).
>>
>> Best regards
>>   -Tobias
>>
>> PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
>>   probably some mix of the self vm stuff. It can really work. And it can also help us
>>   getting things compiled on MS compilers, btw.
>
> What do you mean by "Ian's way" exactly?  Please describe it.
>
> Things I know:
> - Ian's autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with

Ian's unix conf uses CMake for a while now.
There's no autoconf.
Thers no platforms/unix/conf, neither in
        http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/
nor in
        https://github.com/fniephaus/squeak/tree/master/platforms/unix

Yes, I know.  I also know that, for example,  http://www.squeakvm.org/svn/squeak/trunk/platforms/unix/cmake/Plugins.cmake is /not/ easy to work with.  It is essentially impenetrable without significant thought.  I will critique fully below.
 
So I'm a bit confused about what you refer to.

> - gmake files work with MS compilers too
>
> I am strongly in favor of gmake files.  It's /much/ easier to work with.

Sorry, i beg to differ.

>  Please, please, please let's limit the use of cmake to generating a config file as I've already discussed.

you mean gnu make?

Yes.  And as examples I invite you to read, for example,

        build.macos64x64/common/Makefile.app
        build.macos64x64/common/Makefile.app.newspeak
        build.macos64x64/common/Makefile.app.squeak.cog
        build.macos64x64/common/Makefile.flags
        build.macos64x64/common/Makefile.plugin
        build.macos64x64/common/Makefile.rules
        build.macos64x64/common/Makefile.vm

        build.macos64x64/pharo.cog.spur/Makefile
        build.macos64x64/squeak.cog.spur/Makefile
        build.macos64x64/squeak.stack.spur/Makefile

        build.win32x86/common/Makefile
        build.win32x86/common/Makefile.plugin
        build.win32x86/common/Makefile.rules


So what are the trade offs?  I'll mark cmake plusses with '+', gmake advantages over cmake '-'.

+ cmake and autoconf include systems for computing a platform-specific config.h file from aplatform-independent template that identifies a platform's basic facilities, word size, available APIs, etc.  This is of value.  I've described earlier in this thread how I want to use this, by generating a single copy of the platform-speciifc file per platform-specific build directory, where each build directory includes several distinct VMs (squeak vs pharo vs newspeak * context vs stack vs cog vs sista * v3 vs spur) and a single copy of support libraries such as Bochs, Cairo et al.

- cmake is second-order.  Editing the code does /not/ produce the end product.  One must run the build system, inspect the reduced makefiles and map back to the cmake input to correct errors.  This is hard.  cmake is not significantly better than autoconf in this regard.  It took me longer to modify the autoconf system to optionally compile the cogit.c file (now cogitIA32.c, cogitARM32.c et al) when adding Cog to the StackInterpreter build than it did to write the entire set of Mac OS X gnu make makefiles.

- cmake requires that for complex plains one both edit the cmake config files /and/ cmake Makefile includes (e.g. there are
but in the Gnu makefiles there is only ever a single Makefile that includes a more generic one.

- cmake duplicates effort for every build.  The Cog sources build VMs for two versions (v3 & Spur) of two Smalltalk dialects (each with their own icon sets), and for Newspeak.  To be able to debug the VM effectively each VM is bolt in three forms, production, assert (asserts at -O1) and debug (asserts at -O0).  That's a /lot/ of builds, and waiting for cmake (or autoconf) to configure, and redoing it for each separate build is a waste.  The gnu makefiles are first order; they are simply used directly; no slow configure step is required

- AFAICT, there is no support for /any/ build dependency information in the cmake sources (this is information on which C files include which headers, or other C files, which is essential in enabling fast builds when developing the VM).  The Gnu Makefiles I've written, following well-documented established patterns, maintains dependency information and shares it between production,assert and debug builds.

- cmake offers no solution to the problem of building support libraries; neither does gnu make.  But in my build layout there is a simple convention for multi-platform builds, and for sharing a single copy of each support library between all builds for that platform, i.e.
        build.linux32ARM
        build.linux64x64
        build.macos64x64
        build.linux32x86
        build.macos32x86
        build.win32x86
and e.g. bochsx64 and bochsx86 within those directories.


        :/

However, its saturday evening, I don't like to argue at that time.
Maybe I'll find some time next week to make a write up :)

OK, but please address my points above, and please realise that my preferred approach is based on hard experience; I'm not choosing gnu makefiles because of nostalgia or familiarity. I chose them because they're much more productive, apart from cake and autoconf's one advantage, generating a platform-specific config.h.  And that I'd like to steal.


Best
        -Tobias


>
>>
>>
>>>
>>> _,,,^..^,,,_ (phone)
>>>
>>>> On Apr 23, 2016, at 9:54 AM, Eliot Miranda <[hidden email]> wrote:
>>>>
>>>> Hi Fabio,
>>>>
>>>>
>>>>> On Apr 23, 2016, at 9:40 AM, Fabio Niephaus <[hidden email]> wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Bert already mentioned that I've been working on migrating the repository from SVN to Git.
>>>>> I believe there are three problems that need to be solved here:
>>>>>
>>>>> 1. Migrating SVN externals for sharing code between branches
>>>>> This is currently used to share a few directories (e.g. platforms/Cross/plugins) across different
>>>>> branches. But Git does no support this kind of code sharing. Instead, it supports submodules [1]
>>>>> and subtrees [2]. I would suggest to move code that we want to share into separate Git
>>>>> repositories and include them as submodules. I think submodules are easier to understand
>>>>> (GitHub integrates them nicely in their UI). The only drawback: if someone updates code in a
>>>>> shared repository, one needs to update all references to this repository as well. But I'd say this
>>>>> is also a good thing: if someone changes e.g. a plugin and the change is compatible to Cog,
>>>>> but incompatible to the interpreter vm, then the interpreter branch is not automatically broken
>>>>> as soon as one pushes the plugin change. If the above is unclear, I'm happy to explain
>>>>> submodules in more detail.
>>>>>
>>>>> 2. Versioning and new releases
>>>>> If we migrate to Git, I'd recommend to deprecate the way we do versioning in SVN. Instead, we
>>>>> should use Git commit hashes and Git tags.
>>>>
>>>> But have you modified platforms/Cross/vm/sqSCCSVersion.h to capture this information?  If so, can you please send me the code so I can integrate it?  If not, why not?
>>>>
>>>>> Let's say we want to release a new version, we tag
>>>>> the commit of interest with e.g. v1.0.0. When building the Cog VM on this tag, the version will be
>>>>> v1.0.0. If we use GitHub, we might as well use a CI service such as Travis CI [3] to automate the
>>>>> build process. That means, each time someone pushes changes to GitHub, Travis CI will build a
>>>>> new Cog VM (we can call this "bleeding edge"). Let's say I push changes right after the release
>>>>> of v1.0.0, the version for the next build will be something like v1.0.0-37553a9 with "37553a9"
>>>>> being the short SHA1 identifying my latest commit. If we want to release e.g. v1.1.0, we just tag
>>>>> a newer commit and GitHub/Travis CI does the rest for us. I already have this working, you can
>>>>> find a Travis build at [4] and the result at [5]. Obviously, we can push the binaries to a different
>>>>> server.
>>>>>
>>>>> 3. Keeping a copy of the code
>>>>> We of course want to keep a copy of our code at all times in case something happens with
>>>>> GitHub. There are already tools that we can use to automate this. However, I wouldn't try to keep
>>>>> the old SVN repository in sync. I believe this might be quite difficult and I don't see a reason to
>>>>> maintain something we want to deprecate in the first place. Anyway, it should be fairly easy to
>>>>> set up a tool that creates a backup on one of our servers whenever we change code on GitHub.
>>>>>
>>>>>
>>>>> Doing a migration from SVN to Git(Hub) takes a few hours and I'd recommend we stop pushing
>>>>> code to the SVN as soon as we start to migrate. This obviously requires everyone working with
>>>>> the code base to switch to Git. So please let me know if everyone is comfortable with the
>>>>> migration. If we want to do this next week, I'd recommend to do it on a Thursday or a Friday,
>>>>> because I would be able to do it with Bert sitting two rooms next to me :)
>>>>
>>>> I'm not happy to migrate until there's a functional subversion bridge that works and doesn't break my builds.  Cadence pays for my time (and hence pays for a lot of the VM development we enjoy) and its builds use Jenkins and subversion and I will not cooperate with any effort that sabotages this.  "Next Thursday" doesn't appear to appreciate the constraints.  This has to be done carefully or I will not cooperate.
>>>>
>>>>
>>>>>
>>>>> I hope I have thought about the important things and I'm happy to answer any questions you
>>>>> might have.
>>>>>
>>>>> Best,
>>>>> Fabio
>>>>>
>>>>> [1] https://git-scm.com/book/en/v2/Git-Tools-Submodules
>>>>> [2] http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
>>>>> [3] http://travis-ci.org
>>>>> [4] https://travis-ci.org/fniephaus/squeak/builds/119507180
>>>>> [5] https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/cog/v0.1.0/
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> On Sat, Apr 23, 2016 at 5:10 PM David T. Lewis <[hidden email]> wrote:
>>>>>
>>>>> On Sat, Apr 23, 2016 at 02:22:29PM +0200, Nicolas Cellier wrote:
>>>>>
>>>>> I have to admit that I did not even know that an active git svn bridge
>>>>> was possible. It sounds like this it might be very helpful.
>>>>>
>>>>> It would be great to have the advantages of git for development, and
>>>>> it could also be helpful to be able to have the squeakvm.org repo updated
>>>>> periodically from git. There are portions of the platforms tree that Eliot
>>>>> has been able to make identical for oscog and trunk, and this seems like
>>>>> a worthwhile effort to continue.
>>>>>
>>>>> Another possible advantage is that Ian's cmake build process takes advantage
>>>>> of the SVN revision numbering, and it would be good to make sure this stays
>>>>> healthy as development proceeds (it's a lot nicer than autotools).
>>>>>
>>>>> Eliot, do you have a view on this?
>>>>>
>>>>> Dave
>>>>
>>>> _,,,^..^,,,_ (phone)





--
_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Ian's cmake design (was: svn git bridge?)

David T. Lewis
In reply to this post by Eliot Miranda-2
 
On Sat, Apr 23, 2016 at 10:44:02AM -0700, Eliot Miranda wrote:

>
> > On Apr 23, 2016, at 10:30 AM, Tobias Pape <[hidden email]> wrote:
> >
> > PS: Personally (i.e. IMHO), I think that IF we go with cmake, we should follo Ians way with
> >    probably some mix of the self vm stuff. It can really work. And it can also help us
> >    getting things compiled on MS compilers, btw.
>
> What do you mean by "Ian's way" exactly?  Please describe it.  
>
> Things I know:
> - Ian's autoconf code (platforms/unix/conf, the various additional snippets that get included when one builds the autoconf support, rather than things that get computed at build time) is extremely difficult to work with
> - gmake files work with MS compilers too
>

My experience is different. I find it a bit obscure in the sense that it
would benefit from some better documentation and comments in the cmake files.

Aside from that, Ian got the design dead right. Cmake handles the overall
build. The VM build procedures are in a small number of files. Configurations
that are specific to some part of the build tree are located with the source,
and versioned with the source files to which they apply.

Looking back at the last seven years or so, I would say:

- The number of changes to the cmake procedures has been minimal.
- Building a VM with Ian's procedure is still remarkably easy.
- The total amount of code (cmake files) required to make this work is small.
- In the few cases where I needed to change something, I have been able to
  figure out what to do.
- Despite years of upgrades (sic) to my operating systems and compilers,
  it still works.

I have very little patience for fiddling around with build systems, and
no patience whatsoever for autotools. But I have had no trouble using
and occasionally modifying Ian's cmake build procedures.

Dave
 
123