World: r3wp
[!REBOL3 Source Control] How to manage build process
older | first |
Andreas 2-Nov-2010 [626x4] | what will happen if I pull into the directory of earlier git synced stuff? Will it mess new things into old things, or will it delete earlier stuff and replace it wit new? You can choose. |
If you have local commits which are not in the remote repository, if you _pull_ Git will try to merge your local changes with the remote changes. | |
If you want to always choose the remote changes, do not pull but _fetch_ and _reset_ instead. | |
And rest assured that your desired workflow is perfectly achievable. I'll describe how later, gotta run again, unfortunately. | |
Carl 3-Nov-2010 [630x3] | Pekr, there's no need to purge, but it is a good idea to do that. There have been various changes, some of which will not merge properly. |
Ok, so far we have: 1. change about.txt to README -- for consistency 2. change lib to use sub dirs per platform 3. move gcc makefile to top dir (and ignore other makefiles for now) | |
Let me know if there are any other revisions before we move to the final directory. | |
Andreas 4-Nov-2010 [633x3] | changing my previous suggestion for 3.: 3. drop non make-gcc makefiles for now 4. move the gcc makefiles to sub dirs per platform additionally i'd suggest the following revisions: 5. remove reb-to.h, pass TO_<target> as compiler flag 6. fix bug#1658: link linux binaries against libdl |
suggestion #5 allows to build for different targets from exactly the same sources. so we can easily bundle multiple makefiles for different targets, which simply pass the appropriate TO_<target> flag. an alternative would be to have target-specific include directories (such as src/include/3-1/), place the reb-to.h there and then have makefiles for different targets adjust their include paths accordingly. | |
i have commits for all the above suggestions locally. as they're only modifying generated files, i'm not sure they'll be of much use. if it helps in more clearly defining what i mean by the above, i'll happily push them somewhere public. | |
Carl 5-Nov-2010 [636x2] | Andreas, it is easy to move the TO-* to the command line. It was originally put in a file to try to keep the gcc line shorter (easier to see compiler warnings.) |
On #6, I thought it was there now, but will check again. | |
Kaj 5-Nov-2010 [638x3] | There are more standard and automatic ways to detect target platforms, such as using the available __LINUX__ and __SYLLABLE__ defines |
Hm, I think the wrong Git service was chosen. gitorious.org uses Guru meditation error messages: | |
Error 503 Service Unavailable Service Unavailable Guru Meditation: XID: 328580510 Varnish cache server | |
ssolie 5-Nov-2010 [641] | Appropriate :) |
Carl 5-Nov-2010 [642x5] | Nice! |
Kaj, __LINUX__ and such defines are not enough, due to the various incompatibilities between linux systems. | |
Also, it should be noted, that although most developers often use the most recent versions of their OS, most "normal users" do not. Or, said another way: I have friends who run businesses that just support very old operating systems for very large companies... e.g. ATT as an example. | |
So, it's nice if we can compiler to older versions. | |
=compile | |
Kaj 5-Nov-2010 [647x2] | True, but as far as I know, there's currently only one source configuration for Linux, and you can always supply manual hints for subversions when necessary. In any case, there are also ways to detect such subversions |
Maybe I should say sub-types | |
Carl 6-Nov-2010 [649x2] | It's better for the config to be higher level in the master build tables which are defined in REBOL. Those tables define more than just GCC compile time symbols, but also code/data within the boot scripts used by the interpreter. |
That is, top down. | |
Kaj 6-Nov-2010 [651x3] | Well, there are detections available at that level, as well, such as the uname command on Unixy systems |
This is the old debate of table-based configuration systems versus detection-based configuration systems. I understand that tables are less work at first, and so that's what everyone did in the old days, but exactly because environments are so complex these days, most people have moved to automatic detection | |
In my experience of porting software to more or less deviating platforms, table-driven systems are harder to work with than ones with proper detections | |
Carl 7-Nov-2010 [654] | The goal of the current R3 build automation method is to save my time. Currently, the platform table is only ~10 lines of REBOL, so it is difficult to beat using any other method. And, even with the detection approach you mention, you need still tables. However, that being said, if you want to create and test such a detection-based method and confirm it works over a range of OSes I would be happy to use it! It must handle Linux, Syllable, BSD, OS X, Solaris, Windows, AmigaOS, Haiku, QNX, and various others, and also work for systems ten years old or more. I'm open to any idea like this... as long as it saves *me* time. |
Kaj 7-Nov-2010 [655x2] | I can't test it myself on most of those systems, but I'll keep the idea in mind when digging further into the host kit. There are a few well known configuration systems that are much too bloated to use, but that are good sources to collect the tests needed on systems that I don't have |
It's currently not a big deal, but it would be nice to eliminate the manual configuration requirement | |
Carl 8-Nov-2010 [657x2] | Right now, the manual configuration doesn't take much time, because we're building only /core and /libr3... and for posix model. Once more features are added, like graphics and sound, or specific OS support (e.g. like what Solie is doing) then we'll need to revisit it. |
BTW, here is an example of the entire config used for 4.2 (Linux): [0.4.2 "linux" posix [LDL] [CO1 F64 HID NPS] [ST1]] | |
Kaj 8-Nov-2010 [659] | LibDL... what do the others mean? |
Carl 10-Nov-2010 [660] | -O1, 64 bit files, vis=hidden, no-ptr-sign, strip result |
Maxim 10-Nov-2010 [661x2:last] | I've started to use git, I downloaded the A110 yesterday... yay! |
(user moliad on github) | |
older | first |