I want to refer to https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/75
The idea is to reduce duplication to the minimum. There's no need to have so much code duplicated. The changes introduced in pull request #75 factorizes code and still creates a different directory to output intermediate products, as I think was the intention of having so many subdirectories and copies of the mvm script.
Consider this change as a first shy step towards having a single source tree and Makefile to build any platform.
On Sun, Oct 16, 2016 at 10:52 AM, Gerardo Santana Gómez Garrido gerardo.santana@gmail.com wrote:
I want to refer to https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/75
The idea is to reduce duplication to the minimum. There's no need to have so much code duplicated. The changes introduced in pull request #75 factorizes code and still creates a different directory to output intermediate products, as I think was the intention of having so many subdirectories and copies of the mvm script.
Consider this change as a first shy step towards having a single source tree and Makefile to build any platform.
From another thread...
on Tue, Oct 18, 2016 at 5:31 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
- we will write linux makefiles in the style of the windows and mac makefiles, all using gmake
Hi Eliot,
I notice that the Windows build root directory... https://github.com/OpenSmalltalk/opensmalltalk-vm/tree/Cog/build.win32x86/sq...
doesn't have the directories build, build.debug, build.assert, etc... https://github.com/OpenSmalltalk/opensmalltalk-vm/tree/Cog/build.linux32x86/...
Gerado's changes here... https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/75/files move in that direction. Could you skim an architectural review to advise if this is heading the right way and I can work with Gerardo to do detailed testing.
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.win32x86/co...
Also, until after Pharo 6 Release, maybe this work should be done under a new directory buildnew.linux32x86 ??
cheers -ben
Hi Ben,
On Mon, Oct 17, 2016 at 5:22 PM, Ben Coman btc@openinworld.com wrote:
On Sun, Oct 16, 2016 at 10:52 AM, Gerardo Santana Gómez Garrido gerardo.santana@gmail.com wrote:
I want to refer to https://github.com/OpenSmalltalk/opensmalltalk-
vm/pull/75
The idea is to reduce duplication to the minimum. There's no need to
have so much code duplicated. The changes introduced in pull request #75 factorizes code and still creates a different directory to output intermediate products, as I think was the intention of having so many subdirectories and copies of the mvm script.
Consider this change as a first shy step towards having a single source
tree and Makefile to build any platform.
From another thread...
on Tue, Oct 18, 2016 at 5:31 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
- we will write linux makefiles in the style of the windows and mac
makefiles, all using gmake
Hi Eliot,
I notice that the Windows build root directory... https://github.com/OpenSmalltalk/opensmalltalk-vm/tree/Cog/build.win32x86/ squeak.cog.spur
doesn't have the directories build, build.debug, build.assert, etc... https://github.com/OpenSmalltalk/opensmalltalk- vm/tree/Cog/build.linux32x86/squeak.cog.spur
That's right. Neither the Windows nor the Mac build directories need the subdirectories. Their gmake makefiles create them as required. That's a distinct advantage; any configuration info (e.g. the include dependency information in build.macos32x86/squeak.cog.spur/deps) gets generated once and shared between the builds instead of having to run it separately for each build (another reason why builds are faster than with autoconf/cmake).
Gerado's changes here...
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/75/files move in that direction. Could you skim an architectural review to advise if this is heading the right way and I can work with Gerardo to do detailed testing.
Will do. Thanks.
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk- vm/blob/Cog/build.win32x86/common/Makefile
Either those or https://github.com/OpenSmalltalk/opensmalltalk- vm/blob/Cog/build.macos32x86/common/Makefile et al. The Mac ones are newer and a little cleaner.
Also, until after Pharo 6 Release, maybe this work should be done
under a new directory buildnew.linux32x86 ??
Sure.
cheers -ben
_,,,^..^,,,_ best, Eliot
On Wed, Oct 19, 2016 at 7:53 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Mon, Oct 17, 2016 at 5:22 PM, Ben Coman btc@openinworld.com wrote:
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.win32x86/co...
Either those or https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.macos32x86/... et al. The Mac ones are newer and a little cleaner.
Okay. So to get a bit of background understanding on the 32/64-bit build differences I did a bit of analysis. I've attached it for the curious.
cheers -ben
On Wed, Oct 19, 2016 at 7:43 PM, Ben Coman btc@openinworld.com wrote:
On Wed, Oct 19, 2016 at 7:53 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Mon, Oct 17, 2016 at 5:22 PM, Ben Coman btc@openinworld.com wrote:
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.win32x86/co...
Either those or https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.macos32x86/... et al. The Mac ones are newer and a little cleaner.
Okay. So to get a bit of background understanding on the 32/64-bit build differences I did a bit of analysis. I've attached it for the curious.
For the record this was produced by... $ cd build.macos32x86 $ find . -type f -print \ -exec diff --side-by-side {} ../build.macos64x64/{} ; \ | grep -e | -e < -e > -e ^./ > diff-build.macosXxx followed by some manual massaging of the resulting file.
Apart from Makefile, plugins.int & plugin.ext most else seems the same in almost 3000 lines of config. I "wonder" if with a common32 and a common64 the 32-bit and 64-bit builds might be merged, All the sub-build-folders might be like pharo.stack.spur32. But maybe later required differences turn up that would be harder to handle ??
cheers -ben
On Wed, Oct 19, 2016 at 5:37 AM, Ben Coman btc@openinworld.com wrote:
On Wed, Oct 19, 2016 at 7:43 PM, Ben Coman btc@openinworld.com wrote:
On Wed, Oct 19, 2016 at 7:53 AM, Eliot Miranda eliot.miranda@gmail.com
wrote:
On Mon, Oct 17, 2016 at 5:22 PM, Ben Coman btc@openinworld.com wrote:
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk-
vm/blob/Cog/build.win32x86/common/Makefile
Either those or https://github.com/OpenSmalltalk/opensmalltalk-
vm/blob/Cog/build.macos32x86/common/Makefile et al. The Mac ones are newer and a little cleaner.
Okay. So to get a bit of background understanding on the 32/64-bit build differences I did a bit of analysis. I've attached it for the curious.
For the record this was produced by... $ cd build.macos32x86 $ find . -type f -print \ -exec diff --side-by-side {} ../build.macos64x64/{} ; \ | grep -e | -e < -e > -e ^./ > diff-build.macosXxx followed by some manual massaging of the resulting file.
Apart from Makefile, plugins.int & plugin.ext most else seems the same in almost 3000 lines of config. I "wonder" if with a common32 and a common64 the 32-bit and 64-bit builds might be merged, All the sub-build-folders might be like pharo.stack.spur32. But maybe later required differences turn up that would be harder to handle ??
I did it that way to avoid a dependency between the two. If one knows they're essentially the same then they're easy to edit and keep in sync. I think the build.OsWordsizeProcessor scheme is simple and works. So it does mean that 32-bit and 64-bit platforms have a little bit of duplication. Are you not willing to live with it?
_,,,^..^,,,_ best, Eliot
On Thu, Oct 20, 2016 at 3:00 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Wed, Oct 19, 2016 at 5:37 AM, Ben Coman btc@openinworld.com wrote:
On Wed, Oct 19, 2016 at 7:43 PM, Ben Coman btc@openinworld.com wrote:
On Wed, Oct 19, 2016 at 7:53 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
On Mon, Oct 17, 2016 at 5:22 PM, Ben Coman btc@openinworld.com wrote:
Perhaps the following should be used as a template? https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.win32x86/co...
Either those or https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/build.macos32x86/... et al. The Mac ones are newer and a little cleaner.
Okay. So to get a bit of background understanding on the 32/64-bit build differences I did a bit of analysis. I've attached it for the curious.
For the record this was produced by... $ cd build.macos32x86 $ find . -type f -print \ -exec diff --side-by-side {} ../build.macos64x64/{} ; \ | grep -e | -e < -e > -e ^./ > diff-build.macosXxx followed by some manual massaging of the resulting file.
Apart from Makefile, plugins.int & plugin.ext most else seems the same in almost 3000 lines of config. I "wonder" if with a common32 and a common64 the 32-bit and 64-bit builds might be merged, All the sub-build-folders might be like pharo.stack.spur32. But maybe later required differences turn up that would be harder to handle ??
I did it that way to avoid a dependency between the two.
Makes sense.
If one knows they're essentially the same
It is this "knowing" that newcomers don't start with a sense for.
then they're easy to edit and keep in sync.
Still a bit more diligence required, but that is fine.
I think the build.OsWordsizeProcessor scheme is simple and works.
So it does mean that 32-bit and 64-bit platforms have a little bit of duplication.
Its not the duplication per se, its getting a sense for what differs and what is common from file locations. But I understand that not all needs are easy to satisfy together.
Are you not willing to live with it?
Its a puzzle I might experiment with, but ultimately I'm willing to live with the arrangement. Stability is also important versus modifying things a lot trying to optimise a particular point.
cheers -ben
vm-dev@lists.squeakfoundation.org