Running partcl on parrot [Was: Re: GCC failed with configure.pl]

Ashraya theemeraldsoul at gmail.com
Wed Jul 24 18:57:24 UTC 2013


A gentle reminder..

I am trying to run a simple factorial program using parrot inside my C code.

This is from the embed_new.pod tutorial.

This line in the main function seems to be giving me some errors :

Parrot_api_load_bytecode_file(interp, "foo.pbc", &pf)


ashiva at ubuntu:~/Parrot/rakudo/
Test$ gcc factorial.c `parrot_config embed-cflags` `parrot_config
embed-ldflags`
factorial.c: In function ‘main’:
factorial.c:65:5: warning: passing argument 2 of
‘Parrot_api_load_bytecode_file’ from incompatible pointer type [enabled by
default]
In file included from factorial.c:2:0:
../parrot/include/parrot/api.h:324:12: note: expected ‘Parrot_String’ but
argument is of type ‘char *’
ashiva at ubuntu:~/Parrot/rakudo/Test$

Can anyone please suggest what I can possibly do to avoid these errors and
run the pbc ?

Thanks & Regards,*
Ashraya S Shiva*


On Wed, Jul 24, 2013 at 5:38 PM, Ashraya <theemeraldsoul at gmail.com> wrote:

> Hi All,
>
> I am trying to run a simple factorial program using parrot inside my C
> code.
>
> This is from the embed_new.pod tutorial.
>
> This line in the main function seems to be giving me some errors :
>
> Parrot_api_load_bytecode_file(interp, "foo.pbc", &pf)
>
>
> ashiva at ubuntu:~/Parrot/rakudo/Test$ gcc factorial.c `parrot_config
> embed-cflags` `parrot_config embed-ldflags`
> factorial.c: In function ‘main’:
> factorial.c:65:5: warning: passing argument 2 of
> ‘Parrot_api_load_bytecode_file’ from incompatible pointer type [enabled by
> default]
> In file included from factorial.c:2:0:
> ../parrot/include/parrot/api.h:324:12: note: expected ‘Parrot_String’ but
> argument is of type ‘char *’
> ashiva at ubuntu:~/Parrot/rakudo/Test$
>
> Can anyone please suggest what I can possibly do to avoid these errors and
> run the pbc ?
>
> Thanks & Regards,
> Ashraya
>
>
> Thanks & Regards,*
> Ashraya S Shiva*
>
>
> On Wed, Jul 24, 2013 at 12:23 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>
>> Oh ok.. Thanks for the clarification, Will.
>>
>> Thank you all, for your patience. :)
>>
>> Thanks & Regards,*
>> Ashraya S Shiva*
>>
>>
>> On Wed, Jul 24, 2013 at 12:12 AM, Will Coleda <will at coleda.com> wrote:
>>
>>> FYI, I'm the partcl developer.
>>>
>>> Some notes about the status of partcl on parrot:
>>>
>>> https://github.com/partcl/partcl is the old, PIR based version - this
>>> version was more complete, written in PIR & C, but it is not even being
>>> tested regularly to insure that changes in parrot don't break it, as
>>> previous breaking changes are still unresolved.
>>>
>>> https://github.com/partcl/partcl-nqp is newer, and is targeting the
>>> nqp-rx that ships with parrot, which is, so far as I know, no longer
>>> maintained - a snapshot is bundled in with parrot.
>>>
>>> partcl-nqp  has a branch, nqp2, which is in the middle of trying to
>>> target the standalone nqp, which is being maintained. However, this is a
>>> work in progress, and I'm not sure the branch even compiles at this point.
>>> The goal is to 1) make this work with the new standalone NQP, and then to
>>> get this version as functional as the PIR version once was. But it's not an
>>> actively developed project.
>>>
>>> So, it looks like you're using the first version... and yes, I can
>>> reproduce your problem with my installed parrot (5.5.0-devel)
>>>
>>> I haven't done a bisect, but it looks like this file (Tcl::Glob) was
>>> installed as part of parrot's 5.0.0-devel branch, but isn't as of 5.5.0
>>>
>>> So, partcl on PIR is extra broken until that's fixed, or you could try
>>> with an older parrot version.
>>>
>>> Apologies.
>>>
>>> On Tue, Jul 23, 2013 at 2:18 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>
>>>> One more thing.. I am trying to compile TCL code here too..
>>>>
>>>> But it doesn't seem to work :
>>>>
>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$ ../parrot/parrot tcl.pbc -e
>>>> "puts {hello world}"
>>>> "load_bytecode" couldn't find file 'Tcl/Glob.pir'
>>>> current instr.: 'prepare_lib' pc 27748 (runtime/builtin/dict.pir:102)
>>>> called from Sub '_main' pc 0 (src/tclsh.pir:39)
>>>> called from Sub '_main' pc 3 (src/tclsh.pir:42)
>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$
>>>>
>>>>
>>>> I read in a conversation thread that this is working.. But I am not
>>>> able to understand where I am going wrong.
>>>>
>>>> Please help.
>>>>
>>>> Thanks a lot,
>>>> Ashraya
>>>>
>>>> Thanks & Regards,*
>>>> Ashraya S Shiva*
>>>>
>>>>
>>>> On Tue, Jul 23, 2013 at 9:54 PM, Will Coleda <will at coleda.com> wrote:
>>>>
>>>>> It sounds like you're trying to compile C code with parrot - Parrot is
>>>>> a compiler for the languages PIR and PASM, and provides an interpreter to
>>>>> run PBC (parrot bytecode).
>>>>>
>>>>> You can compile C code that interoperates with parrot (using the
>>>>> embed/extend interface), but you cannot use parrot to compile and run C
>>>>> code by itself. For that, you'd use a tool like GCC.
>>>>>
>>>>>
>>>>> On Tue, Jul 23, 2013 at 11:58 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>>>
>>>>>>
>>>>>> Hello Duke,
>>>>>>
>>>>>> Let me rephrase my question.
>>>>>>
>>>>>> For example, I write a simple perl file, hello.pl :
>>>>>> #!/usr/bin/perl
>>>>>> print "Hello World"
>>>>>>
>>>>>> To compile this, I use :  parrot perl6.pbc hello.pl
>>>>>>
>>>>>> The output is : Hello World
>>>>>>
>>>>>> Similarly, if I have a C file, hello.c :
>>>>>>
>>>>>> #include<stdio.h>
>>>>>>
>>>>>> int main()
>>>>>> {
>>>>>>     printf("Hello World\n");
>>>>>>     return 0;
>>>>>> }
>>>>>>
>>>>>> How would I compile this to get the output?
>>>>>>
>>>>>> Note : I downloaded the c99 package for parrot from github but I
>>>>>> could not get this installed.
>>>>>>
>>>>>> Thanks & Regards,*
>>>>>> Ashraya S Shiva*
>>>>>>
>>>>>>
>>>>>> On Tue, Jul 23, 2013 at 7:23 PM, Jonathan "Duke" Leto <
>>>>>> jonathan at leto.net> wrote:
>>>>>>
>>>>>>> Howdy Ashraya,
>>>>>>>
>>>>>>> I believe nobody is answering you because they don't quite understand
>>>>>>> what you mean.
>>>>>>>
>>>>>>> Could you ask your question another way, and give some more
>>>>>>> background
>>>>>>> about what you are trying to do?
>>>>>>>
>>>>>>> Duke
>>>>>>>
>>>>>>> On Sun, Jul 21, 2013 at 10:51 PM, Ashraya <theemeraldsoul at gmail.com>
>>>>>>> wrote:
>>>>>>> > A gentle reminder.. Please reply. How to convert a C code into PIR
>>>>>>> code ?
>>>>>>> >
>>>>>>> > Thanks & Regards,
>>>>>>> > Ashraya S Shiva
>>>>>>> >
>>>>>>> >
>>>>>>> > On Wed, Jul 17, 2013 at 4:30 PM, Ashraya <theemeraldsoul at gmail.com>
>>>>>>> wrote:
>>>>>>> >>
>>>>>>> >> Hello Duke,
>>>>>>> >>
>>>>>>> >> I am trying one of the examples in the .pod you have given :
>>>>>>> >>
>>>>>>> >>   /* foo.c */
>>>>>>> >>
>>>>>>> >>   /* specify the function prototype */
>>>>>>> >>   #ifdef __WIN32
>>>>>>> >>   __declspec(dllexport) void foo(void);
>>>>>>> >>   #else
>>>>>>> >>   void foo(void);
>>>>>>> >>   #endif
>>>>>>> >>
>>>>>>> >>   void foo(void) {
>>>>>>> >>     printf("Hello Parrot!\n");
>>>>>>> >>   }
>>>>>>> >>
>>>>>>> >> Then, after having compiled the file as a shared library, the PIR
>>>>>>> code
>>>>>>> >> looks like this:
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> Here, how do I compile the .c file to produce a .pir file ??
>>>>>>> >>
>>>>>>> >> Thanks,
>>>>>>> >> Ashiva
>>>>>>> >>
>>>>>>> >> Thanks & Regards,
>>>>>>> >> Ashraya S Shiva
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> On Wed, Jul 17, 2013 at 2:08 AM, Jonathan "Duke" Leto <
>>>>>>> jonathan at leto.net>
>>>>>>> >> wrote:
>>>>>>> >>>
>>>>>>> >>> Howdy,
>>>>>>> >>>
>>>>>>> >>> You can embed Parrot inside of a C or C++ application. It can be
>>>>>>> any
>>>>>>> >>> language, actually (it works with FORTRAN), but we have the best
>>>>>>> docs
>>>>>>> >>> for C and C++. I have embedded Parrot inside of PostgreSQL
>>>>>>> (PL/Parrot
>>>>>>> >>> [0]), but that uses the old interface [1]. The new interface [2]
>>>>>>> is
>>>>>>> >>> infinitely better, but has not been heavily used. But it was
>>>>>>> designed
>>>>>>> >>> very well by Whiteknight, so it is high quality.
>>>>>>> >>>
>>>>>>> >>> You can also call out to C/C++ libraries from parrot via
>>>>>>> "dlopen" and
>>>>>>> >>> cousins via the Native Call Interface (NCI) substem of Parrot
>>>>>>> [3].
>>>>>>> >>>
>>>>>>> >>> Which of those things do you want to do, or possibly both?
>>>>>>> >>>
>>>>>>> >>> Duke
>>>>>>> >>>
>>>>>>> >>> [0] http://pl.parrot.org
>>>>>>> >>> [1] https://github.com/parrot/parrot/blob/master/docs/embed.pod
>>>>>>> >>> [2]
>>>>>>> https://github.com/parrot/parrot/blob/master/docs/embed_new.pod
>>>>>>> >>> [3]
>>>>>>> >>>
>>>>>>> https://github.com/parrot/parrot/blob/master/docs/pdds/draft/pdd16_native_call.pod
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> On Tue, Jul 16, 2013 at 4:58 AM, Ashraya S <
>>>>>>> theemeraldsoul at gmail.com>
>>>>>>> >>> wrote:
>>>>>>> >>> > Hello All,
>>>>>>> >>> >
>>>>>>> >>> > I switched to my favorite Ubuntu and parrot got installed like
>>>>>>> a charm.
>>>>>>> >>> >
>>>>>>> >>> > However, I would like to know how parrot supports C program
>>>>>>> >>> > compilation.
>>>>>>> >>> > Is there any tutorial I can find ? I did not get much support
>>>>>>> for C in
>>>>>>> >>> > google. Got loads for perl and pasm.
>>>>>>> >>> >
>>>>>>> >>> > Please advise.
>>>>>>> >>> >
>>>>>>> >>> > Thanks,
>>>>>>> >>> > Ashiva
>>>>>>> >>> >
>>>>>>> >>> >
>>>>>>> >>> > On Wednesday, July 10, 2013 7:30:29 PM UTC+5:30, Coke wrote:
>>>>>>> >>> >>
>>>>>>> >>> >> Do you have a C compiler installed?
>>>>>>> >>> >>
>>>>>>> >>> >>
>>>>>>> >>> >> On Wed, Jul 10, 2013 at 6:39 AM, Ashraya S <
>>>>>>> theemer... at gmail.com>
>>>>>>> >>> >> wrote:
>>>>>>> >>> >>>
>>>>>>> >>> >>> Hi All,
>>>>>>> >>> >>>
>>>>>>> >>> >>> I am new to parrot and i am trying to install this in
>>>>>>> windows 7.
>>>>>>> >>> >>> I have installed perl and minGW and have added these to my
>>>>>>> PATH as
>>>>>>> >>> >>> well.
>>>>>>> >>> >>>
>>>>>>> >>> >>> But i get the following error :
>>>>>>> >>> >>>
>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>perl Configure.pl
>>>>>>> >>> >>> Parrot Version 5.5.0 Configure 2.0
>>>>>>> >>> >>> Copyright (C) 2001-2013, Parrot Foundation.
>>>>>>> >>> >>>
>>>>>>> >>> >>> Hello, I'm Configure. My job is to poke and prod your system
>>>>>>> to
>>>>>>> >>> >>> figure
>>>>>>> >>> >>> out
>>>>>>> >>> >>> how to build Parrot. The process is completely automated,
>>>>>>> unless you
>>>>>>> >>> >>> passed in
>>>>>>> >>> >>> the `--ask' flag on the command line, in which case I'll
>>>>>>> prompt you
>>>>>>> >>> >>> for a
>>>>>>> >>> >>> few
>>>>>>> >>> >>> pieces of info.
>>>>>>> >>> >>>
>>>>>>> >>> >>> Since you're running this program, you obviously have Perl
>>>>>>> 5--I'll be
>>>>>>> >>> >>> pulling
>>>>>>> >>> >>> some defaults from its configuration.
>>>>>>> >>> >>>
>>>>>>> >>> >>> init::manifest -      Check
>>>>>>> >>> >>> MANIFEST.....................................done.
>>>>>>> >>> >>> init::defaults -      Set Configure's default
>>>>>>> >>> >>> values.....................done.
>>>>>>> >>> >>> init::install -       Set up installation
>>>>>>> >>> >>> paths..........................done.
>>>>>>> >>> >>> init::hints -         Load platform and local hints
>>>>>>> >>> >>> files................done.
>>>>>>> >>> >>> inter::progs -        Determine what C compiler and linker to
>>>>>>> >>> >>> use...Compilation
>>>>>>> >>> >>> failed with 'gcc'
>>>>>>> >>> >>>
>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>
>>>>>>> >>> >>>
>>>>>>> >>> >>> Please help me resolve this problem.
>>>>>>> >>> >>>
>>>>>>> >>> >>> Thanks a lot, in advance.
>>>>>>> >>> >>>
>>>>>>> >>> >>> --
>>>>>>> >>> >>> Ashiva
>>>>>>> >>> >>>
>>>>>>> >>> >>> _______________________________________________
>>>>>>> >>> >>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>> >>> >>>
>>>>>>> >>> >>
>>>>>>> >>> >>
>>>>>>> >>> >>
>>>>>>> >>> >> --
>>>>>>> >>> >> Will "Coke" Coleda
>>>>>>> >>> >
>>>>>>> >>> >
>>>>>>> >>> > _______________________________________________
>>>>>>> >>> > http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>> >>> >
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> --
>>>>>>> >>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>> >>> Leto Labs LLC http://letolabs.com
>>>>>>> >>> 209.691.DUKE http://duke.leto.net
>>>>>>> >>> @dukeleto
>>>>>>> >>
>>>>>>> >>
>>>>>>> >
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>> Leto Labs LLC http://letolabs.com
>>>>>>> 209.691.DUKE http://duke.leto.net
>>>>>>> @dukeleto
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Will "Coke" Coleda
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Will "Coke" Coleda
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.parrot.org/pipermail/parrot-dev/attachments/20130725/3b7c7bba/attachment-0001.html>


More information about the parrot-dev mailing list