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"find
        @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