[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