[Glass] CHeader and CPreprocessor paths as arguments

Smalltalk at JGFoster.net Smalltalk at JGFoster.net
Thu Jun 25 09:03:57 PDT 2020


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> 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 <mailto:Glass at lists.gemtalksystems.com> 
>>>>> https://lists.gemtalksystems.com/mailman/listinfo/glass <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 <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 <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 <https://lists.gemtalksystems.com/mailman/listinfo/glass>
> _______________________________________________
> Glass mailing list
> 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/d1065061/attachment-0001.htm>


More information about the Glass mailing list