[Glass] CHeader and CPreprocessor paths as arguments
bruno buzzi brassesco
smalltalk at adinet.com.uy
Thu Jun 25 13:25:48 PDT 2020
Is a bug in the C parser ?
On 25/6/2020 13:03, Smalltalk at JGFoster.net wrote:
> My guess is that it is not so much that it is expecting only one
> argument as that it failed to parse the second argument (struct
> structName **parameteName).
>
>> On Jun 25, 2020, at 6:56 AM, bruno buzzi brassesco via Glass
>> <glass at lists.gemtalksystems.com
>> <mailto:glass at lists.gemtalksystems.com>> wrote:
>>
>> Hi,
>>
>> These are the C declarations:
>> LIBSSH_API enum ssh_known_hosts_e
>> ssh_session_has_known_hosts_entry(ssh_session session);
>> LIBSSH_API enum ssh_known_hosts_e
>> ssh_session_get_known_hosts_entry(ssh_session session,
>> struct ssh_knownhosts_entry **pentry);
>> LIBSSH_API enum ssh_known_hosts_e
>> ssh_session_is_known_server(ssh_session session);
>>
>> The second is failing so it seems that is expecting only one argument
>> as the others two declarations.
>> Not sure why...
>>
>> regards,
>> bruno
>>
>> On 25/6/2020 10:31, bruno buzzi brassesco via Glass wrote:
>>> Hi,
>>>
>>> On GS 3.5 with a default installation (apt-get install libssh-dev)
>>> the wrapper is generated correctly.
>>>
>>> But on a manually compiled installation I got the error below.
>>> Which situation could lead to this problem?
>>>
>>> The problem is with the following declaration:
>>> LIBSSH_API enum ssh_known_hosts_e
>>> ssh_session_get_known_hosts_entry(ssh_session session,
>>> struct ssh_knownhosts_entry **pentry);
>>>
>>> The token is a coma , but is expecting a right parenthesis ). For
>>> some reason it is expecting the end of the declaration but as you
>>> can see above the declaration has 2 arguments. So somehow it is
>>> expecting another declaration .... still researching this...
>>>
>>> a Error occurred (error 2710), expected ')' near line 592 in file
>>> /gemstone/3rd-party-bin/
>>> libssh-0.9.4/include/libssh.h
>>> Error (AbstractException) >> _signalWith: @6 line 25
>>> Error (AbstractException) >> signal: @3 line 7
>>> Error class (AbstractException class) >> signal: @3 line 4
>>> CDeclaration >> error: @8 line 3
>>> CDeclaration >> readDirectDeclarator @43 line 24
>>> CDeclaration >> readDeclarator @12 line 14
>>> CDeclaration >> readDeclaration @5 line 12
>>> CHeader >> readOneUnderStorageHandler: @7 line 9
>>> CHeader >> readExternLinkageDeclarationsUnderStorageRegimeFrom: @19
>>> line 19
>>> [] in ExecBlock1 (CHeader) >> readOne @12 line 7
>>> CHeader >> readOneUnderStorageHandler: @9 line 11
>>> CHeader >> readOne @3 line 3
>>> CHeader >> initialize: @25 line 18
>>> CHeader class >> preprocessor: @3 line 4
>>> CHeader class >> path: @3 line 3
>>> Executed Code @3 line 2
>>> GsNMethod class >> _gsReturnToC @1 line 1
>>> On 24/6/2020 14:01, James Foster via Glass wrote:
>>>> Another idea is to generate the wrapper in 3.5.x and then back-port
>>>> it to 3.3.x.
>>>>
>>>>> On Jun 24, 2020, at 9:58 AM, Dale Henrichs via Glass
>>>>> <glass at lists.gemtalksystems.com
>>>>> <mailto:glass at lists.gemtalksystems.com>> wrote:
>>>>>
>>>>> Bruno,
>>>>>
>>>>> Here's our advice:
>>>>>
>>>>> I would think that editing CPreprocessor>>defaultSearchPaths
>>>>> would be a good workaround
>>>>>
>>>>> Keep in mind that 3.5 is using the native preprocessor
>>>>> /usr/bin/cpp
>>>>> for all of the macro expansion and then reading the output of
>>>>> cpp
>>>>> with our CPreprocessor code. 3.3 is trying to do all of the
>>>>> macro
>>>>> expansion in CPreprocessor and that has quite a few bugs
>>>>> that may
>>>>> be triggered by system header files in newer versions of Linux
>>>>> than what 3.3
>>>>> was originally tested with.
>>>>> If you encounter such bugs with 3.3, you might need to run
>>>>> /usr/bin/cpp on the header files of interest and then feed the
>>>>> resulting
>>>>> output to CPreprocessor .
>>>>>
>>>>> Dale
>>>>>
>>>>> On 6/24/20 5:09 AM, bruno buzzi brassesco via Glass wrote:
>>>>>> Hi,
>>>>>>
>>>>>> In GS 3.5 it is possible to pass paths as arguments:
>>>>>> CHeader>>path:searchPaths:
>>>>>>
>>>>>> In GS 3.3.x that method is not present but it will have the same
>>>>>> effect if we add our paths to:
>>>>>> CPreprocessor>>defaultSearchPaths
>>>>>> Can this be a workaround for the error below ?
>>>>>>
>>>>>> Trying to generate a wrapper with:
>>>>>> UserGlobals at: #'LibSsh094' put: (CHeader path:
>>>>>> '/customized/path/libssh.h').
>>>>>>
>>>>>> Answer the error:
>>>>>> Unhandled exception: GS Server Error - GbsGemStoneError - a
>>>>>> UserDefinedError occurred (error 2740), Include file sys/cdefs.h
>>>>>> not found!
>>>>>> [1] GS: UserDefinedError (AbstractException) >> _signalWith: @6
>>>>>> line 25
>>>>>> [2] GS: UserDefinedError (AbstractException) >> signal: @3 line 7
>>>>>> [3] GS: UserDefinedError class (AbstractException class) >>
>>>>>> signal: @3 line 4
>>>>>> [4] GS: CPreprocessor >> include:afterMe: @55 line 39
>>>>>> [5] GS: CPreprocessor >> applyDirectiveToken: @27 line 10
>>>>>> [6] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [7] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [8] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [9] GS: CPreprocessor >> applyDirectiveToken: @19 line 8
>>>>>> [10] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [11] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [12] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [13] GS: CPreprocessor >> applyDirectiveToken: @19 line 8
>>>>>> [14] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [15] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [16] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [17] GS: CPreprocessor >> applyDirectiveToken: @19 line 8
>>>>>> [18] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [19] GS: CPreprocessor >> readTillEnd @6 line 7
>>>>>> [20] GS: [] in ExecBlock0 (CPreprocessor) >> includePath: @20
>>>>>> line 12
>>>>>> [21] GS: ExecBlock0 (ExecBlock) >> ensure: @2 line 12
>>>>>> [22] GS: CPreprocessor >> includePath: @16 line 13
>>>>>> [23] GS: [] in ExecBlock1 (CPreprocessor) >> include:afterMe:
>>>>>> @68 line 34
>>>>>> [24] GS: OrderedCollection (Collection) >> do: @6 line 10
>>>>>> [25] GS: CPreprocessor >> include:afterMe: @41 line 26
>>>>>> [26] GS: CPreprocessor >> applyDirectiveToken: @27 line 10
>>>>>> [27] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [28] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [29] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [30] GS: CPreprocessor >> applyDirectiveToken: @19 line 8
>>>>>> [31] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [32] GS: CPreprocessor >> readTillEnd @6 line 7
>>>>>> [33] GS: [] in ExecBlock0 (CPreprocessor) >> includePath: @20
>>>>>> line 12
>>>>>> [34] GS: ExecBlock0 (ExecBlock) >> ensure: @2 line 12
>>>>>> [35] GS: CPreprocessor >> includePath: @16 line 13
>>>>>> [36] GS: [] in ExecBlock1 (CPreprocessor) >> include:afterMe:
>>>>>> @68 line 34
>>>>>> [37] GS: OrderedCollection (Collection) >> do: @6 line 10
>>>>>> [38] GS: CPreprocessor >> include:afterMe: @41 line 26
>>>>>> [39] GS: CPreprocessor >> applyDirectiveToken: @27 line 10
>>>>>> [40] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [41] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [42] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [43] GS: CPreprocessor >> applyDirectiveToken: @15 line 7
>>>>>> [44] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [45] GS: CPreprocessor >> doIf: @11 line 12
>>>>>> [46] GS: CPreprocessor >> ifdef:defined: @22 line 8
>>>>>> [47] GS: CPreprocessor >> applyDirectiveToken: @19 line 8
>>>>>> [48] GS: CPreprocessor >> applyToken: @4 line 3
>>>>>> [49] GS: CPreprocessor >> readTillEnd @6 line 7
>>>>>> [50] GS: [] in ExecBlock0 (CPreprocessor) >> includePath: @20
>>>>>> line 12
>>>>>> [51] GS: ExecBlock0 (ExecBlock) >> ensure: @2 line 12
>>>>>> [52] GS: CPreprocessor >> includePath: @16 line 13
>>>>>> [53] GS: CPreprocessor class >> parseFileAt: @3 line 4
>>>>>> [54] GS: CHeader class >> path: @2 line 3
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Glass mailing list
>>>>>> Glass at lists.gemtalksystems.com
>>>>>> https://lists.gemtalksystems.com/mailman/listinfo/glass
>>>>> _______________________________________________
>>>>> Glass mailing list
>>>>> Glass at lists.gemtalksystems.com <mailto:Glass at lists.gemtalksystems.com>
>>>>> https://lists.gemtalksystems.com/mailman/listinfo/glass
>>>>
>>>>
>>>> _______________________________________________
>>>> Glass mailing list
>>>> Glass at lists.gemtalksystems.com
>>>> https://lists.gemtalksystems.com/mailman/listinfo/glass
>>>
>>> _______________________________________________
>>> Glass mailing list
>>> Glass at lists.gemtalksystems.com
>>> https://lists.gemtalksystems.com/mailman/listinfo/glass
>> _______________________________________________
>> Glass mailing list
>> Glass at lists.gemtalksystems.com <mailto:Glass at lists.gemtalksystems.com>
>> https://lists.gemtalksystems.com/mailman/listinfo/glass
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gemtalksystems.com/mailman/private/glass/attachments/20200625/a75408e1/attachment-0001.htm>
More information about the Glass
mailing list