Page 1 of 1

Source code system to use

Posted: 19.03.2022, 17:40
by ertank
Hello,

It has been a while since I need to use Zeos. Now, I need it again on Lazarus.

I am using fpcupdeluxe latest stable to install Zeos components.
I get errors during compilation for both stable and testing branches.
One thing that took my attention is that fpcupdeluxe is using https://github.com/marsupilami79/zeoslib as testing branch. Stable branch is using SVN and 7.2.14-stable
I doubt these are correct. I will make an issue report in fpcupdeluxe if these are wrong. Let me know, please.

BTW, error is
ZAbstractRODatabase.pas:966 There is method in an ancestor class to be overriden: "GetAsSingle:Single"
ZAbstractRODatabase.pas:979 There is method in an ancestor class to be overriden: "SetAsSingle(Single)"
and a whole bunch of other lines like these.

Thanks & Regards,
Ertan

Re: Source code system to use

Posted: 22.03.2022, 10:28
by marsupilami
Hello Ertan,
ertank wrote: 19.03.2022, 17:40 It has been a while since I need to use Zeos. Now, I need it again on Lazarus.
It is nice to see you here again :)
ertank wrote: 19.03.2022, 17:40 I am using fpcupdeluxe latest stable to install Zeos components.
I get errors during compilation for both stable and testing branches.
One thing that took my attention is that fpcupdeluxe is using https://github.com/marsupilami79/zeoslib as testing branch. Stable branch is using SVN and 7.2.14-stable
I doubt these are correct. I will make an issue report in fpcupdeluxe if these are wrong. Let me know, please.
Duh - I think I noticed that too. Basically SVN is authoritative. If possible, they should use SVN. But then the github repo is a mirror of the SVN that gets synced once per night. So it should mostly be up to date with SVN. The github repo is meant for users that like git more than SVN and want to sync from there. But changes are always done to the SVN and then mirrored to github.
ertank wrote: 19.03.2022, 17:40 BTW, error is
ZAbstractRODatabase.pas:966 There is method in an ancestor class to be overriden: "GetAsSingle:Single"
ZAbstractRODatabase.pas:979 There is method in an ancestor class to be overriden: "SetAsSingle(Single)"
and a whole bunch of other lines like these.
Which version of FPC and Zeos do you combine for these errors to happen? Usually I would say that Zeos 7.2 compiles on all stable FPC compilers and Zeos 8.0 also compiles on FPC trunk?

Best regards,

Jan

Re: Source code system to use

Posted: 22.03.2022, 12:00
by ertank
Hello Jan,
marsupilami wrote: 22.03.2022, 10:28 Which version of FPC and Zeos do you combine for these errors to happen? Usually I would say that Zeos 7.2 compiles on all stable FPC compilers and Zeos 8.0 also compiles on FPC trunk?
I got same compilation errors on both Windows 64bit compilation and Raspberry Pi armhf compilation. I always tend to use latest fixes branches for fpc and Lazarus. It was fpc 3.2-fixes and Lazarus 2.2-fixes. Exact fpc version is 3.2.3-601-gc565900c41 for x86_64

I see below errors for github sources

Code: Select all

(3104) Compiling C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(966,14) Error: (3058) There is no method in an ancestor class to be overridden: "GetAsSingle:Single;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(979,15) Error: (3058) There is no method in an ancestor class to be overridden: "SetAsSingle(Single);"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1020,87) Error: (5000) Identifier not found "TSingleField"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1020,87) Error: (4009) class type expected, but got "<erroneous type>"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1030,15) Error: (3058) There is no method in an ancestor class to be overridden: "Bind(Boolean);"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1032,14) Error: (3058) There is no method in an ancestor class to be overridden: "GetAsSingle:Single;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1033,15) Error: (3058) There is no method in an ancestor class to be overridden: "SetAsSingle(Single);"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1034,14) Error: (3058) There is no method in an ancestor class to be overridden: "GetAsString:AnsiString;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1035,14) Error: (3058) There is no method in an ancestor class to be overridden: "GetAsVariant:Variant;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1036,15) Error: (3058) There is no method in an ancestor class to be overridden: "SetVarValue(const Variant);"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1037,15) Error: (3058) There is no method in an ancestor class to be overridden: "GetText(var AnsiString;Boolean);"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1048,15) Error: (3058) There is no method in an ancestor class to be overridden: "Clear;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1087,36) Error: (3058) There is no method in an ancestor class to be overridden: "GetAsSingle:Single;"
C:\fpcupdeluxe\ccr\zeos\src\component\ZAbstractRODataset.pas(1505,1) Fatal: (10026) There were 13 errors compiling module, stopping
Fatal: (1018) Compilation aborted
Error: C:\fpcupdeluxe\fpc\bin\x86_64-win64\ppcx64.exe returned an error exitcode
Error: (lazarus) Compile package zcomponent 8.0: stopped with exit code 1
Error: (lazarus) [TLazPackageGraph.CompileRequiredPackages] "Exit code 1"
Error: (lazarus) Building IDE: Compile AutoInstall Packages failed.
C:\fpcupdeluxe\fpcbootstrap\make.exe: *** [useride] Error 2

Re: Source code system to use

Posted: 23.03.2022, 18:04
by marsupilami
Hello Ertan,

I can confirm this for Zeos 8.0 but it will take some time for me to look into this because I have a lot of job things and also personal things on my work list currently. The earliest, I can think of will be during the weekend. I wonder why support for Single was enabled though. Most probably some defines in Zeos_Lazarus.inc will have to be modified. Also you could try to disable the ZFields for now. There is a define for that in the Zeos.ink (DISABLE_ZFIELDS?).

Best regards,

Jan

Re: Source code system to use

Posted: 24.03.2022, 14:00
by ertank
Hello,

All I could find that is below. Seems like especially enabled for 3.2.3 version of FPC
ZeosLazarus.inc:145

Code: Select all

              {$IF FPC_FULLVERSION>=30200}
                {$UNDEF MISS_MATH_NATIVEUINT_MIN_MAX_OVERLOAD}
                {$IF (defined(CPU64) or defined(CPUARM)) and not defined(ENDIAN_BIG)} 
                  {$DEFINE WITH_PG2DOUBLE_INLINE_BUG} //wrong inlining results to wrong double values on PG binary wire
                {$IFEND}  
                {$DEFINE WITH_VAR_INIT_WARNING}
                {$DEFINE WITH_CASE_WARNING} //Since FPC 3.2 we've some weird warnigns on using case X of
                {$DEFINE WITH_CODEPAGE_AWARE_FIELD}
                {$DEFINE TBLOBDATA_IS_TBYTES} //TBlobData is an alias for TBytes instead of AnsiString
                {$DEFINE WITH_TSTRINGS_TENCODING_LOADFROM}           // TStrings.LoadFromFile/LoadFromStream have TEncoding
		{$DEFINE WITH_NETENCODING}
(Line 156)                {$IF FPC_FULLVERSION>=30203}
3 ===>                  {$DEFINE WITH_FTLONGWORD}                 // ftLongWord is supported
2 ===>                  {$DEFINE WITH_FTSHORTINT}                 // ftShortInt is supported
                  {$DEFINE WITH_FTBYTE}                     // ftByte is supported
                  {$DEFINE WITH_FTEXTENDED}                 // ftExtended is supported
1 ===>				  {$DEFINE WITH_FTSINGLE}                   // ftSingle is supported
                {$IFEND} 
              {$IFEND} 
            {$IFEND}
          {$IFEND}
        {$IFEND}
      {$IFEND}
    {$ELSE}
      {$FATAL Versions Older than 2.6.0 are not supported!}
I disabled all above marked 1,2,3 and then I started to get another error.

Seems like problem is in the code and not in defines, but that code has a lot of $IFDEF and such that I could not figure where the problem was. I might be totally wrong though.

I prefer to wait for more experienced developer to check it out.

Thanks.

Re: Source code system to use

Posted: 24.03.2022, 14:05
by ertank
Just got my attention

Code: Select all

    {$IFDEF WITH_FTLONGWORD}
    , ftTimeStamp{ftOraTimeStamp}, ftDateTime{ftOraInterval} //40..41
    , ftLongWord, ftShortint, ftByte, ftExtended, ftSingle//42..45
    {$ENDIF}
Second line above counts from 42 to 45 but there is one more field definition and it actually become 46

Error I get after disabling earlier lines in ZeosLazarus.inc file is

Code: Select all

ZAbstractRODataset.pas(5835,3) Error: Expected another 6 array elements
Enabling WITH_FTLONGWORD adds 7 array elements. I have no idea where to fix this though.

Re: Source code system to use

Posted: 28.03.2022, 11:15
by marsupilami
Hello Ertan,

the problem was enablling support for ftSingle on the 3.2-series of FPC. I removed that and now the compilation works as expected. (Currently pending validatoon by the automated tests...)

Best regards,

Jan

Re: Source code system to use

Posted: 28.03.2022, 11:59
by ertank
Hello Jan,

I appreciated the help. Will it be fine if I try tomorrow again? Or, these tests takes longer than a day?

Thanks,
Ertan

Re: Source code system to use

Posted: 29.03.2022, 13:00
by marsupilami
Hello Ertan,

it seems that Jenkins approves of the change. The test suite now compiles with the current fixes branch of FPC 3.2.

Best regards,

Jan

Re: Source code system to use

Posted: 29.03.2022, 13:50
by ertank
Hello Jan,

Right, removing all previous sources and letting fpcupdeluxe download from scratch compiles fine on Windows.

Now, I need to test same on Raspberry Pi.

Thanks & Regards,
Ertan

Re: Source code system to use

Posted: 04.04.2022, 04:39
by ertank
Lazarus on Raspberry Pi also compiles Zeos just fine now.

Thanks & Regards,
Ertan