[perl #53494] [BUG] --parrot_is_shared=0 IS shared?

Reini Urban rurban at x-ray.at
Sun Feb 22 10:39:18 UTC 2009


Andrew Dougherty schrieb:
> On Tue, 17 Feb 2009, Will Coleda via RT wrote:
> 
>> On Mon Apr 28 23:52:22 2008, coke wrote:
>>> While trying to put the macport for 0.6.1 together, I noticed that the
>>> install failed.
>>>
>>> Tracked it down to the fact that --parrot_is_shared=0 seems to be
>>> generating a parrot that relies on a shared lib.
> 
>> Verified, this still fails[1] as of r36803. This, combined with TT #344, 
>> blocks creation of a functioning macport.
> 
>> [1] Generates a parrot that depends on libparrot.dylib
> 
> That's because Configure.pl doesn't allow you any way to override the 
> hints file.  What I had in mind was a more primitive, ruthless editing of 
> the darwin hints file, something like this (totally untested)

What I have in mind is a more general conf approach.

1. Disallow $conf->data->set('key') at all if $conf->options->get('key') 
exists, only allow $conf->data->add('key').
Users try to fix the wrong hints options, and this is not enforced. 
Only some keys are cooperative, most not.

2. Allow all keys to be given at the Configure.pl cmdline as in perl5.
    Append (Apply after hints), Undefine and Define.

    -Dcc_debug=-g3, -Ulibparrot_static, -Alinkflags=-Wl,--stack,8388608

perl5 Configure:
   -D : define symbol to have some value:
          -D symbol         symbol gets the value 'define'
          -D symbol=value   symbol gets the value 'value'
        common used examples (see INSTALL for more info):
          -Duse64bitint            use 64bit integers
          -Duse64bitall            use 64bit integers and pointers
          -DEBUGGING=none          DEBUGGING options
          -Dcc=gcc                 choose your compiler
          -Dprefix=/opt/perl5      choose your destination
   -U : undefine symbol:
          -U symbol    symbol gets the value 'undef'
          -U symbol=   symbol gets completely empty
        e.g.:  -Uversiononly
   -A : manipulate symbol after the platform specific hints have been 
applied:
          -A append:symbol=value   append value to symbol
          -A symbol=value          like append:, but with a separating space
          -A define:symbol=value   define symbol to have value
          -A clear:symbol          define symbol to be ''
          -A define:symbol         define symbol to be 'define'
          -A eval:symbol=value     define symbol to be eval of value
          -A prepend:symbol=value  prepend value to symbol
          -A undef:symbol          define symbol to be 'undef'
          -A undef:symbol=         define symbol to be ''
        e.g.:  -A prepend:libswanted='cl pthread '
               -A ccflags=-DSOME_MACRO




> 
> --- parrot-current/config/init/hints/darwin.pm	2009-02-01 20:44:27.000000000 -0500
> +++ parrot-andy/config/init/hints/darwin.pm	2009-02-17 09:55:39.000000000 -0500
> @@ -55,20 +55,6 @@
>          ld_load_flags       => '-undefined dynamic_lookup -bundle',
>          memalign            => 'some_memalign',
>          has_dynamic_linking => 1,
> -
> -        # RT 43147:  When built against a dynamic libparrot,
> -        # installable_parrot records the path to the blib version
> -        # of the library.
> -
> -        parrot_is_shared       => 1,
> -        libparrot_shared       => 'libparrot.$(SOVERSION)$(SHARE_EXT)',
> -        libparrot_shared_alias => 'libparrot$(SHARE_EXT)',
> -        rpath                  => "-L",
> -        libparrot_soname       => "-install_name "
> -            . $lib_dir
> -            . $conf->data->get('slash')
> -            . "libparrot"
> -            . $conf->data->get('share_ext')
>      );
>  }
>  
> 
> 


-- 
Reini Urban
http://phpwiki.org/  http://murbreak.at/


More information about the parrot-dev mailing list