Thanks for the clarification, Markus.  I've applied a modified version of your 
patch as change 82af41c8ab2dd061acd7deb9979fa6cb5c4725ae.  You can review it 
online at https://github.com/rcaputo/poe-component-resolver

-- 
Rocco Caputo <rcap...@pobox.com>

On Jul 29, 2011, at 05:01, Markus Jansen wrote:

> ... tiny correction of ^$X listed below, sorry for the typo ...
> /Markus
> 
> -----Original Message-----
> From: Markus Jansen [mailto:markus.jan...@ericsson.com] 
> Sent: Friday, July 29, 2011 10:40 AM
> To: Rocco Caputo; POE Mailing List
> Subject: RE: Problem to execute "sidecar" Perl scripts when compiling 
> POE::Component::Resolver 0.912 with PAR
> 
> Hi Rocco,
> 
> thanks for coming back on this issue. Using the 
> POE::Component::Resolver::Sidecar module is a good idea, though IMHO 
> Module::ScanDeps should know that the module is needed via the use of 
> "\&POE::Component::Resolver::Sidecar::main" for Windows.
> 
> The main problem is that while the [suboptimal] Windows solution would work 
> for PAR, the standard [preferred] Unix solution does not for a number of 
> reasons:
> - within PAR, 
>       $^X  is set to "perl"
>       @INC is set to [ "<par_unpack_path>/inc/lib", "<par_unpack_path>/inc/", 
> CODE(......), CODE(......) ]
> 
> - a "perl" executable does not exist inside the packed code (that is, at 
> runtime under <par_unpack_path>)
>       - instead, there is a "limited Perl interpreter"
>       - one of the limits is that this interpreter cannot execute perl 
> scripts via -e
> 
> Each of the above effectively spoils the intended "$^X -I @INC -M...Sidecar 
> -e '...Sidecar->main()'", i.e. the Sidecar execution via exec().
> 
> Due to the lack of -e support, one has to put
>       use POE::Component::Resolver::Sidecar;
>       POE::Component::Resolver::Sidecar->main();
> into some ...Sidecar.pl file, and get that called.
> 
> In the meantime, I have found that there are at least two ways to pack the 
> above mini-script into a PAR executable (whether using the experimental 
> --reuse switch or not is one of the details) and to get it called; hence, I 
> would not like to dictate PAR users which of those ways to take, nor any 
> naming conventions regarding the intermediate Sidecar.pl perl script.
> 
> As a result, supplying the possibility to specify $sidecar_program seems to 
> me the only general and lightweight way forward.
> Perhaps the change should come with a comment that the intended use is for 
> PAR and similar modules, and should be used by experts who think they know 
> what they are doing :-).
> 
> Anyhow, my patch works great in production with the latest/greatest 2 PAR 
> versions.
> 
> Best regards,
>       Markus
> 
> 
> -----Original Message-----
> From: Rocco Caputo [mailto:rcap...@pobox.com]
> Sent: Friday, July 29, 2011 6:54 AM
> To: POE Mailing List
> Cc: Markus Jansen
> Subject: Re: Problem to execute "sidecar" Perl scripts when compiling 
> POE::Component::Resolver 0.912 with PAR
> 
> Hi, Markus.
> 
> It would seem that PAR (and other packaging tools?) can't find the Sidecar 
> module because I neglected to actually use it.  Please see the included 
> patch, which resolves the missing Sidecar problem for Windows and anything 
> else that detects "use" statements in the source.
> 
> Do you ever supply a sidecar that isn't POE::Component::Resolver::Sidecar?  A 
> parameter would be excellent for a general-purpose sidecar-based module, but 
> I think it's not so useful here.
> 
> commit 638cd9e616a5b4ffbf413672784f41896de97430
> Author: Rocco Caputo <rcap...@cpan.org>
> Date:   Fri Jul 29 00:44:00 2011 -0400
> 
>    Load the POE::Component::Resolver::Sidecar class.
> 
>    The presence of this module is requested on MSWin32.  Resolves
>    rt.cpan.org ticket 69172, reported by Gabor Szabo.
> 
> diff --git a/lib/POE/Component/Resolver.pm b/lib/POE/Component/Resolver.pm 
> index ff7ec8b..6614189 100644
> --- a/lib/POE/Component/Resolver.pm
> +++ b/lib/POE/Component/Resolver.pm
> @@ -9,6 +9,8 @@ use Time::HiRes qw(time);  use Socket qw(unpack_sockaddr_in 
> AF_INET AF_INET6);  use Socket::GetAddrInfo qw(:newapi getnameinfo 
> NI_NUMERICHOST NI_NUMERICSERV);
> 
> +use POE::Component::Resolver::Sidecar;
> +
> use Exporter;
> use base 'Exporter';
> our (@EXPORT_OK) = qw(AF_INET AF_INET6);
> 
> 
> --
> Rocco Caputo <rcap...@pobox.com>
> 
> 
> On Jul 15, 2011, at 06:17, Markus Jansen wrote:
> 
>> Hi Rocco,
>> 
>> based on the excellent input I got so far from you and Steffen, I have 
>> now found a simple solution on the POE side without any assumptions towards 
>> PAR (or whatever special system used, even with PAR there is more than one 
>> way to do it :-).
>> 
>> The idea is simply to make $sidecar_program configurable, and leave the 
>> solution details to the application if special ones are needed.
>> Find a possible [tested] patch below, and please consider it for integration 
>> in POE::Component::Resolver 0.913.
>> 
>> Best regards,
>> 
>>        Markus
> 

Reply via email to