SRL Archive - General News

Working towards Simba 1.0: FPC 2.6.0+Laz 1.0 or FPC 2.4.4+Laz 0.9.30.x


Wizzup?

2012-12-21 12:12:37

Hi,

I spent several hours today trying to get FPC 2.6.0 and Lazarus 1.0 to work well in the automated buildbot running on http://l0.lt ; and the process was a complete pain with no real results. There are bugs in FPC 2.6.0 that prevent it from building Lazarus 1.0 from a 64 bit environment and I am kind of stuck here.

So we need to evaluate in we need/want Lazarus 1.0 + FPC 2.6.0 for Simba 1.0, or if we are going to postpone it and wait for FPC to fix their issues.

Obviously 1.0 and FPC 2.6.0 would be nicer, but if we don't need it right now I suggest we postpone this until Simba 1.1/1.2. We can of course already aim to be compatible with FPC 2.6.0 and Lazarus 1.0; but let's not depend on that for Simba 1.0, OK?

Mr[S]

2012-12-21 12:13:07

Nice

CynicRus

2012-12-21 12:19:06

Personally, I agree with the fact that it is not necessary now to move to 1.0 Lazarus and FPC 2.6.0. I think this change may well be postponed until Simba 1.1 or 1.2.

Also, Lazarus 1.0 has problems with the behavior of forms. The exact behavior of the forms completely the different as in Lazarus 0.9.30.4. So I need to still think about how to adapt the forms designer for this.

Brandon

2012-12-21 12:34:11

Uhh I think the big question that came to my mind is.. How does this affect normal users?

What's the deal with 2.60 and what you use now? Why is it needed?

CynicRus

2012-12-21 12:37:34

From: Brandon
Uhh I think the big question that came to my mind is.. How does this affect normal users?

What's the deal with 2.60 and what you use now? Why is it needed?


Because FPC 2.6.0 generates a higher quality and stable code. Is also improved optimization. And the end user there is no difference at all, what was used by the compiler or language development. It uses the final result.

Wizzup?

2012-12-21 13:37:28

I think aiming for 2.6.0 compatibility is good for 1.0, but I will not switch the autobuild to it unless they fix the bug, but I will try to actively pursue getting that fixed. In the end, if we have 2.6.0 compatibility I can do a big build once on each platform (tedious) for a few RCs. Then we could even do the release with 2.6.0 + Laz 1.0, but that will need testing and is not worthwhile if I cannot get the autobuild to use 2.6.0 and Laz 1.0.

Wizzup?

2012-12-22 07:20:40

OK, I worked on this till late in the night and I have confirmed FPC 2.7.1-devel *does* work well, or at least I can get to the point where it compiles (but not links due to some stupid error) I need to fix some linker things and then I can verify if FPC 2.6.0-fixes works as well. If it does, I will try to have a FPC 2.6.0-fixes+Laz-1.0.4 autobuild soon. :)


Using FPC 2.7.1:

Linux:

32 bit: (No complete worky yet):

…
Compiling /srv/buildbot/Simba/Projects/FormDesigner/cstruct.pas
Simba.lpr(33,31) Hint: Unit "code" not used in Simba
Simba.lpr(33,37) Hint: Unit "cSelectOnRunTime" not used in Simba
Simba.lpr(33,55) Hint: Unit "cstruct" not used in Simba
Simba.lpr(35,3) Hint: Unit "sclist" not used in Simba
Simba.lpr(35,11) Hint: Unit "DCPbase64" not used in Simba
Compiling resource ../../build/linux/Simba.or
Linking ../../Simba
/usr/bin/ld: warning: ../../link.res contains output sections; did you forget -T?
/usr/bin/ld: skipping incompatible /usr/lib/crti.o when searching for /usr/lib/crti.o
/usr/bin/ld: skipping incompatible /usr/lib/crti.o when searching for /usr/lib/crti.o
/usr/bin/ld: cannot find /usr/lib/crti.o
Simba.lpr(55,1) Error: Error while linking
Simba.lpr(55,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /srv/buildbot/fpc-2.7.1/lib/fpc/2.7.1/ppc386 returned an error exitcode


64 bit:


Compiling /srv/buildbot/Simba/Projects/FormDesigner/cstruct.pas
Simba.lpr(33,31) Hint: Unit "code" not used in Simba
Simba.lpr(33,37) Hint: Unit "cSelectOnRunTime" not used in Simba
Simba.lpr(33,55) Hint: Unit "cstruct" not used in Simba
Simba.lpr(35,3) Hint: Unit "sclist" not used in Simba
Simba.lpr(35,11) Hint: Unit "DCPbase64" not used in Simba
Compiling resource ../../build/linux/Simba.or
Linking ../../Simba
/usr/bin/ld: warning: ../../link.res contains output sections; did you forget -T?
170889 lines compiled, 10.6 sec
419 warning(s) issued
2410 hint(s) issued
63 note(s) issued
[TCompiler.Compile] end


Windows(!):

32:

…
Compiling /srv/buildbot/Simba/Projects/FormDesigner/cstruct.pas
Simba.lpr(33,31) Hint: Unit "code" not used in Simba
Simba.lpr(33,37) Hint: Unit "cSelectOnRunTime" not used in Simba
Simba.lpr(33,55) Hint: Unit "cstruct" not used in Simba
Simba.lpr(35,3) Hint: Unit "sclist" not used in Simba
Simba.lpr(35,11) Hint: Unit "DCPbase64" not used in Simba
Compiling resource ../../build/win32/Simba.or
Linking ../../Simba.exe
176002 lines compiled, 9.6 sec, 3929776 bytes code, 89892 bytes data
426 warning(s) issued
2610 hint(s) issued
64 note(s) issued
[TCompiler.Compile] end



E: OK. I nailed it (2.7.1/2.6.0 issues) down to errors in the Lazarus Makefile and the way FPC generates link.res files. Now I just need to get it fixed.

Wizzup?

2012-12-22 09:44:16

OK. Have a working version of Simba 1.0(prelease) with FPC 2.6.1(-fixes) and Lazarus 1.0.4 for win32, the most important platform, cross compiled. :)

Rezozo

2012-12-22 10:02:22

From: Wizzup?
OK. Have a working version of Simba 1.0(prelease) with FPC 2.6.1(-fixes) and Lazarus 1.0.4 for win32, the most important platform, cross compiled. :)


Very nice work. Though it will be years before I understand a word you said.
~Rez

CynicRus

2012-12-22 10:10:05

My congratz!-)

DannyRS

2012-12-22 10:12:00

From: Rezozo
Very nice work. Though it will be years before I understand a word you said.
~Rez


This is exactly how i feel,

Great work Wizzup ;)

Justin

2012-12-22 10:12:41

Nice work guys!

DeiJaiVui

2012-12-22 10:17:01

From: Rezozo
Very nice work. Though it will be years before I understand a word you said.
~Rez


I feel the same way haha!

Other than that, GJ!

NKN

2012-12-22 12:27:56

From: Wizzup?
I think aiming for 2.6.0 compatibility is good for 1.0, but I will not switch the autobuild to it unless they fix the bug, but I will try to actively pursue getting that fixed. In the end, if we have 2.6.0 compatibility I can do a big build once on each platform (tedious) for a few RCs. Then we could even do the release with 2.6.0 + Laz 1.0, but that will need testing and is not worthwhile if I cannot get the autobuild to use 2.6.0 and Laz 1.0.


From: Wizzup?
OK, I worked on this till late in the night and I have confirmed FPC 2.7.1-devel *does* work well, or at least I can get to the point where it compiles (but not links due to some stupid error) I need to fix some linker things and then I can verify if FPC 2.6.0-fixes works as well. If it does, I will try to have a FPC 2.6.0-fixes+Laz-1.0.4 autobuild soon. :)


Using FPC 2.7.1:

Linux:

32 bit: (No complete worky yet):


64 bit:



Windows(!):

32:


E: OK. I nailed it (2.7.1/2.6.0 issues) down to errors in the Lazarus Makefile and the way FPC generates link.res files. Now I just need to get it fixed.


From: Wizzup?
OK. Have a working version of Simba 1.0(prelease) with FPC 2.6.1(-fixes) and Lazarus 1.0.4 for win32, the most important platform, cross compiled. :)



When I triple post, it's bad. ;)

JK, good job Wizzup?.

Ashaman88

2012-12-22 18:59:20

Awesome job guys keep it up!

freezeyp

2012-12-25 01:21:28

Nice too hear some news about simba 1.0, even though I know nothing about the compiler :(

Wizzup?

2012-12-26 15:41:42

Woo. Done, mostly.

http://l0.lt

Current dependency matrix:


simba-prev: fpc-2.4.4, lazarus 0.9.30.2
master: fpc-2.4.4, lazarus 0.9.30.2
simba-next: fpc-2.6.1, lazarus 1.0.4


As soon as simba-next compiles (there's just some minor compile errors in Simba now) I will also move master to fpc-2.6.1 lazarus 1.0.4. I just didn't want to break the current master.

Anything not using fpc-2.4.4 is only automatically compiled for windows until I figure out some linking errors.

Example from the new config (note that master is 2.4.4 on the server):


my_branches = {
'master' : {
'fpc' : '2.6.1',
'lazarus': '1.0.4',
'build' : 'make',
'platforms' : ('i386-win32', 'x86_64-win64') # x86_64-linux, i386-linux
},
'simba-next' : {
'fpc' : '2.6.1',
'lazarus': '1.0.4',
'build' : 'make',
'platforms' : ('i386-win32', 'x86_64-win64') # x86_64-linux, i386-linux
},
'simba-prev' : {
'fpc' : '2.4.4',
'lazarus': '', # empty is old lazarus
'build' : 'make',
'platforms' : ('i386-win32', 'x86_64-win64', 'x86_64-linux', \
'i386-linux')
}
}


DannyRS

2012-12-26 15:44:38

Awesome job Wizzup ;)

Keep up the awesome work :D

If someone could take a moment to explain what all this new compiler stuff is going to do to simba, for a novice programmer, it would be appreciated :P

More efficient? More features? Enhance something else?

DrChill

2012-12-26 15:45:35

Wait, it's running in linux? Link pls?

I'm currently on linux and that would be awesome … aww 32-bit though :(

Wizzup?

2012-12-26 16:03:28

From: DannyRS
Awesome job Wizzup ;)

Keep up the awesome work :D

If someone could take a moment to explain what all this new compiler stuff is going to do to simba, for a novice programmer, it would be appreciated :P

More efficient? More features? Enhance something else?


Layman explanations:
  • Compiler (FPC): turns our precious source code into a .exe. Newer compiler is usually faster, more stable, etc. Also requires changes to Simba.
  • Lazarus: IDE (programming environment we use) and also a huge collection of libraries we need. They recently released version 1.0, which is better, more stable, but also requires changes on the Simba side.

FPC 2.4.4 is our old compiler, FPC 2.6.1 is our new one.
Lazarus 0.9.30.2 is our old Lazarus. 1.0.4 is our new one.

For an overview of all the changes in Lazarus and FPC, please just check their sites. I cannot name you some immediately noticeable changes, but I think CynicRus, Nielsie95 and Dgby714 can tell you more about them. It boils down to the fact that we can try to use more cool and new features.

Wizzup?

2012-12-26 16:04:07

From: DrChill
Wait, it's running in linux? Link pls?

I'm currently on linux and that would be awesome … aww 32-bit though :(


There are Linux builds, but they don't work that well. Hopefully we have a somewhat working build on version 1.0, which is due soon.

DrChill

2012-12-26 16:09:34

This is all on Github, and you have some sort of compile farm that pulls from there? Perhaps I could try helping towards a working Linux build?

It would be useful if there were some sort of TODO list for getting it working Linux, looks like the current one hasn't been updated in 10 months :)

Wizzup?

2012-12-26 16:30:18

From: DrChill
This is all on Github, and you have some sort of compile farm that pulls from there? Perhaps I could try helping towards a working Linux build?

It would be useful if there were some sort of TODO list for getting it working Linux, looks like the current one hasn't been updated in 10 months :)


Actually, I only work/develop with the Linux version.

http://l0.lt/builders/master -> Download ->
http://nala.villavu.com/downloads/master/7e7c215ec376f9a7599e520af9e0ec223a57ae6e/

> Simba.i386-linux.7z

:)

I don't know if it starts though, that seemed like a weird issue with the previous autobuilds. If you compile it on your own machine, it starts just fine.
Current (main) linux issues: Pascalscript (the third party, default interpreter) does not work well which prevents you from running most scripts. As a result, extensions do not work either.