You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Steve Baldwin <st...@multiservice.com> on 2003/02/15 09:15:19 UTC

Building mod-perl 2 for cygwin

I've got Apache2 installed and as far as I can tell, it is functional.
I'm trying to build mod-perl from source (as I couldn't find any
binaries for cygwin).  When I initially ran the command :

perl Makefile.PL MP_AP_PREFIX=/usr/local/apache2

I got errors telling me it couldn't find "cygdb-3.1.dll", which I
eventually tracked down to Apache::TextConfig::open_cmd.  I commented
out the line :

local @ENV{ qw(PATH IFS CDPATH ENV BASH_ENV) };

and the errors went away (it was clearing $ENV{PATH} which I think was
causing the error).  However, when I run 'make', I get the following ...

[mod_perl-1.99_08]$ make
cd "src/modules/perl" && make -f Makefile.modperl
make[1]: Entering directory
`/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
gcc -I/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl
-I/cygdrive/d/Downloads/mod_perl-1.99_08/xs -I/usr/local/apache2/include
-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
-I/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE -DMOD_PERL -O2  \
-c mod_perl.c && mv mod_perl.o mod_perl.lo
mod_perl.c: In function `modperl_shutdown':
mod_perl.c:10: `my_perl' undeclared (first use in this function)
mod_perl.c:10: (Each undeclared identifier is reported only once
mod_perl.c:10: for each function it appears in.)
mod_perl.c: In function `modperl_hook_post_config':
mod_perl.c:498: `my_perl' undeclared (first use in this function)
mod_perl.c: In function `modperl_response_handler_cgi':
mod_perl.c:771: `my_perl' undeclared (first use in this function)
make[1]: *** [mod_perl.lo] Error 1
make[1]: Leaving directory
`/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
make: *** [modperl_lib] Error 2

Here's my perl -V ...

[mod_perl-1.99_08]$ perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  Platform:
    osname=cygwin, osvers=1.3.12(0.5432), archname=cygwin-multi-64int
    uname='cygwin_nt-5.0 kmbestst 1.3.12(0.5432) 2002-07-06 02:16 i686
unknown '
    config_args='-de -Dmksymlinks -Dusemultiplicity -Duse64bitint
-Doptimize=-O2
 -Dman3ext=3pm'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=defi
ne
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=define use64bitall=undef uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing',
    optimize='-O2',
    cppflags='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing'
    ccversion='', gccversion='3.1.1 20020718 (prerelease)',
gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8,
Off_t='off_t', lsee
ksize=4
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='ld2', ldflags =' -s -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -lcrypt -lutil
    perllibs=-lcrypt -lutil
    libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' -s'
    cccdlflags=' ', lddlflags=' -s -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY USE_64_BIT_INT USE_LARGE_FILES
PERL_IMPLICI
T_CONTEXT
  Built under cygwin
  Compiled at Jul 24 2002 18:47:09
  %ENV:
    CYGWIN=""
  @INC:
    /cygdrive/d/perldev
    /usr/lib/perl5/5.8.0/cygwin-multi-64int
    /usr/lib/perl5/5.8.0
    /usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int
    /usr/lib/perl5/site_perl/5.8.0
    /usr/lib/perl5/site_perl
    .

Thanks for any help

Steve


Re: Building mod-perl 2 for cygwin: taint cleanup

Posted by Stas Bekman <st...@stason.org>.
[splitting the thread in two]

Stas Bekman wrote:
> Steve Baldwin wrote:
> 
>> I've got Apache2 installed and as far as I can tell, it is functional.
>> I'm trying to build mod-perl from source (as I couldn't find any
>> binaries for cygwin).  When I initially ran the command :
>>
>> perl Makefile.PL MP_AP_PREFIX=/usr/local/apache2
>>
>> I got errors telling me it couldn't find "cygdb-3.1.dll", which I
>> eventually tracked down to Apache::TextConfig::open_cmd.  I commented
>> out the line :
>>
>> local @ENV{ qw(PATH IFS CDPATH ENV BASH_ENV) };
>>
>> and the errors went away (it was clearing $ENV{PATH} which I think was
>> causing the error).  
> 
> 
> We need to explicitly set $ENV{PATH} to be able to start a process under 
> -T (see perlsec). We could hardcode the path of the value, but that 
> would be different for each platform. What the normal value of PATH on 
> your system? Is this something standard that other cygwin users can rely 
> on?

this issue needs to be resolved as well. can you follow up on this?

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
> I have cygwin (for the tools), but haven't looked into compiling
> Apache/mod_perl with it. From what I understand, cygwin provides
> a C library (a dll) to get a unix-style API; this is to be
> contrasted with MinGW, which produces programs that don't rely on
> 3rd party dlls. cygwin, as well as having the usual .a (static)
> and .dll libs, does have a .dll.a type of lib, which is an import
> library. So having such a lib isn't unusual - whether that should
> be done here is another question ...

OK, hopefully someone with try cygwin soonish and help Steve resolve the 
problems. It should definitely compile the threaded modperl. we will look 
at resolving the MULTIPLICITY alone, later.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com



Re: Building mod-perl 2 for cygwin

Posted by Randy Kobes <ra...@theoryx5.uwinnipeg.ca>.
On Thu, 20 Feb 2003, Stas Bekman wrote:

> Steve Baldwin wrote:
> > Unfortunately, I get the same (as far as I can see) result.  Here's my
> > latest perl -V ...
> 
> You mean, you get a bunch of unresolved symbols, right?
> 
> from your previous report:
> 
> Now, make (of mod-perl) gives the following errors ...
> modperl_env.lo(.text+0x89e):modperl_env.c: variable '_PL_vtbl_env' can't
> be auto-imported. Please read the documentation for ld's
> --enable-auto-import for details.
> :
> Creating library file: libmod_perl.dll.a
> mod_perl.lo(.text+0x2f9):mod_perl.c: undefined reference to
> `_apr_pool_cleanup_null'
> mod_perl.lo(.text+0x2fe):mod_perl.c: undefined reference to
> `_apr_pool_cleanup_register'
> mod_perl.lo(.text+0x4e9):mod_perl.c: undefined reference to
> `_ap_log_error'
> mod_perl.lo(.text+0x52b):mod_perl.c: undefined reference to
> `_ap_mpm_query'
> 
> 
> What looks weird is:
> Creating library file: libmod_perl.dll.a
> 
> I'm not a win32 user, but it looks strange to me that dll.a
> thing. Is that a valid thing? I understand that cygwin is unix
> over win32. Though it still builds native win32 dlls, no? So
> may be the problem is that the mod_perl build
>   decides to go with unix build when it should really do the win32 build?
> 
> Any developers on cygwin that can help us here? Hopefully Per
> Einar is around and can help.

I have cygwin (for the tools), but haven't looked into compiling
Apache/mod_perl with it. From what I understand, cygwin provides
a C library (a dll) to get a unix-style API; this is to be
contrasted with MinGW, which produces programs that don't rely on
3rd party dlls. cygwin, as well as having the usual .a (static)
and .dll libs, does have a .dll.a type of lib, which is an import
library. So having such a lib isn't unusual - whether that should
be done here is another question ...

-- 
best regards,
randy kobes


Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
Steve Baldwin wrote:
> Unfortunately, I get the same (as far as I can see) result.  Here's my
> latest perl -V ...

You mean, you get a bunch of unresolved symbols, right?

from your previous report:

Now, make (of mod-perl) gives the following errors ...
modperl_env.lo(.text+0x89e):modperl_env.c: variable '_PL_vtbl_env' can't
be auto-imported. Please read the documentation for ld's
--enable-auto-import for details.
:
Creating library file: libmod_perl.dll.a
mod_perl.lo(.text+0x2f9):mod_perl.c: undefined reference to
`_apr_pool_cleanup_null'
mod_perl.lo(.text+0x2fe):mod_perl.c: undefined reference to
`_apr_pool_cleanup_register'
mod_perl.lo(.text+0x4e9):mod_perl.c: undefined reference to
`_ap_log_error'
mod_perl.lo(.text+0x52b):mod_perl.c: undefined reference to
`_ap_mpm_query'


What looks weird is:
Creating library file: libmod_perl.dll.a

I'm not a win32 user, but it looks strange to me that dll.a thing. Is that a 
valid thing? I understand that cygwin is unix over win32. Though it still 
builds native win32 dlls, no? So may be the problem is that the mod_perl build 
  decides to go with unix build when it should really do the win32 build?

Any developers on cygwin that can help us here? Hopefully Per Einar is around 
and can help.


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


RE: Building mod-perl 2 for cygwin

Posted by Steve Baldwin <st...@multiservice.com>.
Unfortunately, I get the same (as far as I can see) result.  Here's my
latest perl -V ...

[perl-5.8.0]$ perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  Platform:
    osname=cygwin, osvers=1.3.19(0.7132),
archname=cygwin-thread-multi-64int
    uname='cygwin_nt-5.1 au-stb-mobile 1.3.19(0.7132) 2003-01-23 21:31
i686 unkn
own unknown cygwin '
    config_args='-Duse64bitint -Doptimize=-O2 -Dman3ext=3pm
-Dusemultiplicity -D
usethreads -Duselargefiles'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define
usemultiplicity=de
fine
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=define use64bitall=undef uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing',
    optimize='-O2',
    cppflags='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing'
    ccversion='', gccversion='3.2 20020927 (prerelease)',
gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8,
Off_t='off_t', lsee
ksize=4
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='ld2', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -ldb -lcrypt -lutil
    perllibs=-lcrypt -lutil
    libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT
USE_LARGE_FILES
 PERL_IMPLICIT_CONTEXT
  Built under cygwin
  Compiled at Feb 19 2003 20:16:49
  %ENV:
    CYGWIN=""
  @INC:
    /cygdrive/d/perldev
    /usr/local/lib/perl5/5.8.0/cygwin-thread-multi-64int
    /usr/local/lib/perl5/5.8.0
    /usr/local/lib/perl5/site_perl/5.8.0/cygwin-thread-multi-64int
    /usr/local/lib/perl5/site_perl/5.8.0
    /usr/local/lib/perl5/site_perl
    .

-----Original Message-----
From: Stas Bekman [mailto:stas@stason.org] 
Sent: Wednesday, 19 February 2003 10:07 AM
To: Steve Baldwin
Cc: modperl@perl.apache.org
Subject: Re: Building mod-perl 2 for cygwin


Steve Baldwin wrote:
> OK, I've rebuilt my perl using the following options ...
> 
> ./Configure -de -Duse64bitint -Doptimize=-O2 -Dman3ext=3pm
> 
> (to try to keep as similar as possible to packaged perl, but without 
> the threads stuff).  I also tried with simply
> 
> ./Configure -des
> 
> With exactly the same result.

and if you build with -Dusethreads?



Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
Steve Baldwin wrote:
> OK, I've rebuilt my perl using the following options ...
> 
> ./Configure -de -Duse64bitint -Doptimize=-O2 -Dman3ext=3pm
> 
> (to try to keep as similar as possible to packaged perl, but without the
> threads stuff).  I also tried with simply
> 
> ./Configure -des
> 
> With exactly the same result.

and if you build with -Dusethreads?

> Now, make (of mod-perl) gives the following errors ...
> modperl_env.lo(.text+0x89e):modperl_env.c: variable '_PL_vtbl_env' can't
> be auto-imported. Please read the documentation for ld's
> --enable-auto-import for details.
> :
> Creating library file: libmod_perl.dll.a
> mod_perl.lo(.text+0x2f9):mod_perl.c: undefined reference to
> `_apr_pool_cleanup_null'
> mod_perl.lo(.text+0x2fe):mod_perl.c: undefined reference to
> `_apr_pool_cleanup_register'
> mod_perl.lo(.text+0x4e9):mod_perl.c: undefined reference to
> `_ap_log_error'
> mod_perl.lo(.text+0x52b):mod_perl.c: undefined reference to
> `_ap_mpm_query'
> :
> modperl_directives.lo(.text+0x4e7):modperl_directives.c: more undefined
> references to `_apr_pstrcat' follow
> collect2: ld returned 1 exit status
> perlld: *** system() failed to execute
> gcc -shared -o  cygperl5_8_0.dll -Wl,--out-implib=libmod_perl.dll.a
> -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--stack,8388608 \
> -L/usr/local/lib mod_perl.lo modperl_interp.lo modperl_tipool.lo
> modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo
> modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo
> modperl_io.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo
> modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo
> modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo
> modperl_module.lo modperl_svptr_table.lo modperl_const.lo
> modperl_constants.lo modperl_hooks.lo modperl_directives.lo
> modperl_flags.lo modperl_xsinit.lo -L/usr/local/lib
> /usr/local/lib/perl5/5.8.0/cygwin/auto/DynaLoader/DynaLoader.a
> -L/usr/local/lib/perl5/5.8.0/cygwin/CORE -lperl -lcrypt -lutil 
> 
> make[1]: *** [mod_perl.so] Error 1
> make[1]: Leaving directory
> `/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
> make: *** [modperl_lib] Error 2
> 
> Here's my new output from perl -V ...
> 
> [mod_perl-1.99_08]$ perl -V
> Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
>   Platform:
>     osname=cygwin, osvers=1.3.19(0.7132), archname=cygwin
>     uname='cygwin_nt-5.1 au-stb-mobile 1.3.19(0.7132) 2003-01-23 21:31
> i686 unkn
> own unknown cygwin '
>     config_args='-de -Duse64bitint -Doptimize=-O2 -Dman3ext=3pm'
>     hint=previous, useposix=true, d_sigaction=define
>     usethreads=undef use5005threads=undef useithreads=undef
> usemultiplicity=unde
> f
>     useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
>     use64bitint=undef use64bitall=undef uselongdouble=undef
>     usemymalloc=y, bincompat5005=undef
>   Compiler:
>     cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing',
>     optimize='-O2',
>     cppflags='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
> -DPERL_USE_SAFE_PUTENV
>  -fno-strict-aliasing'
>     ccversion='', gccversion='3.2 20020927 (prerelease)',
> gccosandvers=''
>     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
>     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize
> =4
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='ld2', ldflags =' -L/usr/local/lib'
>     libpth=/usr/local/lib /usr/lib /lib
>     libs=-lgdbm -ldb -lcrypt -lutil
>     perllibs=-lcrypt -lutil
>     libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=libperl.a
>     gnulibc_version=''
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
>     cccdlflags=' ', lddlflags=' -L/usr/local/lib'
> 
> 
> Characteristics of this binary (from libperl): 
>   Compile-time options: USE_LARGE_FILES
>   Built under cygwin
>   Compiled at Feb 18 2003 20:15:28
>   %ENV:
>     CYGWIN=""
>   @INC:
>     /cygdrive/d/perldev
>     /usr/local/lib/perl5/5.8.0/cygwin
>     /usr/local/lib/perl5/5.8.0
>     /usr/local/lib/perl5/site_perl/5.8.0/cygwin
>     /usr/local/lib/perl5/site_perl/5.8.0
>     /usr/local/lib/perl5/site_perl
>     .
> 
> -----Original Message-----
> From: Stas Bekman [mailto:stas@stason.org] 
> Sent: Monday, 17 February 2003 8:58 PM
> To: Steve Baldwin
> Cc: modperl@perl.apache.org
> Subject: Re: Building mod-perl 2 for cygwin
> 
> 
> Steve Baldwin wrote:
> 
>>Thanks very much for your reply Stas.  Pardon my ignorance, but are 
>>you saying I need to rebuild Perl with different options.
> 
> 
> Unfortunately (at least for a time being) yes.
> 
> 
>>The version of
>>Perl I'm using is the packaged one I installed with the cygwin install
> 
> 
>>utility.  If this is the case, could you please a little more 
>>information as to the arguments you recommend to build a version of 
>>Perl that works fine 'standalone', as well as embedded (which I 
>>presume is the case with mod-perl) if that is possible.
> 
> 
> Currently mod_perl 2.0 supports the multiple Perl interpreters only if
> perl 
> has been built with -Dusethreads. This may change in the future, or may
> be not.
> 
> For now please build with:
> 
> ./Configure -des -Dusethreads [...]
> 
> or (assuming that perl automatically turns on this option, which I
> doubt):
> 
> ./Configure -des -Uusemultiplicity [...]
> 
> I think if you build by yourself, all you need is:
> 
> ./Configure -des
> 
> (-des picks all the defaults)
> 
> what's important is that when your perl has been built, it should either
> have:
> 
> usethreads=define useithreads=define usemultiplicity=define
> 
> or
> 
> usethreads=undef useithreads=undef usemultiplicity=undef
> 
> in the output of:
> 
> % perl -V | grep usethreads
> 


-- 


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


RE: Building mod-perl 2 for cygwin

Posted by Steve Baldwin <st...@multiservice.com>.
OK, I've rebuilt my perl using the following options ...

./Configure -de -Duse64bitint -Doptimize=-O2 -Dman3ext=3pm

(to try to keep as similar as possible to packaged perl, but without the
threads stuff).  I also tried with simply

./Configure -des

With exactly the same result.

Now, make (of mod-perl) gives the following errors ...
modperl_env.lo(.text+0x89e):modperl_env.c: variable '_PL_vtbl_env' can't
be auto-imported. Please read the documentation for ld's
--enable-auto-import for details.
:
Creating library file: libmod_perl.dll.a
mod_perl.lo(.text+0x2f9):mod_perl.c: undefined reference to
`_apr_pool_cleanup_null'
mod_perl.lo(.text+0x2fe):mod_perl.c: undefined reference to
`_apr_pool_cleanup_register'
mod_perl.lo(.text+0x4e9):mod_perl.c: undefined reference to
`_ap_log_error'
mod_perl.lo(.text+0x52b):mod_perl.c: undefined reference to
`_ap_mpm_query'
:
modperl_directives.lo(.text+0x4e7):modperl_directives.c: more undefined
references to `_apr_pstrcat' follow
collect2: ld returned 1 exit status
perlld: *** system() failed to execute
gcc -shared -o  cygperl5_8_0.dll -Wl,--out-implib=libmod_perl.dll.a
-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--stack,8388608 \
-L/usr/local/lib mod_perl.lo modperl_interp.lo modperl_tipool.lo
modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo
modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo
modperl_io.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo
modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo
modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo
modperl_module.lo modperl_svptr_table.lo modperl_const.lo
modperl_constants.lo modperl_hooks.lo modperl_directives.lo
modperl_flags.lo modperl_xsinit.lo -L/usr/local/lib
/usr/local/lib/perl5/5.8.0/cygwin/auto/DynaLoader/DynaLoader.a
-L/usr/local/lib/perl5/5.8.0/cygwin/CORE -lperl -lcrypt -lutil 

make[1]: *** [mod_perl.so] Error 1
make[1]: Leaving directory
`/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
make: *** [modperl_lib] Error 2

Here's my new output from perl -V ...

[mod_perl-1.99_08]$ perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  Platform:
    osname=cygwin, osvers=1.3.19(0.7132), archname=cygwin
    uname='cygwin_nt-5.1 au-stb-mobile 1.3.19(0.7132) 2003-01-23 21:31
i686 unkn
own unknown cygwin '
    config_args='-de -Duse64bitint -Doptimize=-O2 -Dman3ext=3pm'
    hint=previous, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=unde
f
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing',
    optimize='-O2',
    cppflags='-DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
-DPERL_USE_SAFE_PUTENV
 -fno-strict-aliasing'
    ccversion='', gccversion='3.2 20020927 (prerelease)',
gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize
=4
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='ld2', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -ldb -lcrypt -lutil
    perllibs=-lcrypt -lutil
    libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: USE_LARGE_FILES
  Built under cygwin
  Compiled at Feb 18 2003 20:15:28
  %ENV:
    CYGWIN=""
  @INC:
    /cygdrive/d/perldev
    /usr/local/lib/perl5/5.8.0/cygwin
    /usr/local/lib/perl5/5.8.0
    /usr/local/lib/perl5/site_perl/5.8.0/cygwin
    /usr/local/lib/perl5/site_perl/5.8.0
    /usr/local/lib/perl5/site_perl
    .

-----Original Message-----
From: Stas Bekman [mailto:stas@stason.org] 
Sent: Monday, 17 February 2003 8:58 PM
To: Steve Baldwin
Cc: modperl@perl.apache.org
Subject: Re: Building mod-perl 2 for cygwin


Steve Baldwin wrote:
> Thanks very much for your reply Stas.  Pardon my ignorance, but are 
> you saying I need to rebuild Perl with different options.

Unfortunately (at least for a time being) yes.

> The version of
> Perl I'm using is the packaged one I installed with the cygwin install

> utility.  If this is the case, could you please a little more 
> information as to the arguments you recommend to build a version of 
> Perl that works fine 'standalone', as well as embedded (which I 
> presume is the case with mod-perl) if that is possible.

Currently mod_perl 2.0 supports the multiple Perl interpreters only if
perl 
has been built with -Dusethreads. This may change in the future, or may
be not.

For now please build with:

./Configure -des -Dusethreads [...]

or (assuming that perl automatically turns on this option, which I
doubt):

./Configure -des -Uusemultiplicity [...]

I think if you build by yourself, all you need is:

./Configure -des

(-des picks all the defaults)

what's important is that when your perl has been built, it should either
have:

usethreads=define useithreads=define usemultiplicity=define

or

usethreads=undef useithreads=undef usemultiplicity=undef

in the output of:

% perl -V | grep usethreads



Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
Steve Baldwin wrote:
> Thanks very much for your reply Stas.  Pardon my ignorance, but are you
> saying I need to rebuild Perl with different options.  

Unfortunately (at least for a time being) yes.

> The version of
> Perl I'm using is the packaged one I installed with the cygwin install
> utility.  If this is the case, could you please a little more
> information as to the arguments you recommend to build a version of Perl
> that works fine 'standalone', as well as embedded (which I presume is
> the case with mod-perl) if that is possible.

Currently mod_perl 2.0 supports the multiple Perl interpreters only if perl 
has been built with -Dusethreads. This may change in the future, or may be not.

For now please build with:

./Configure -des -Dusethreads [...]

or (assuming that perl automatically turns on this option, which I doubt):

./Configure -des -Uusemultiplicity [...]

I think if you build by yourself, all you need is:

./Configure -des

(-des picks all the defaults)

what's important is that when your perl has been built, it should either have:

usethreads=define useithreads=define usemultiplicity=define

or

usethreads=undef useithreads=undef usemultiplicity=undef

in the output of:

% perl -V | grep usethreads

> -----Original Message-----
> From: Stas Bekman [mailto:stas@stason.org] 
> Sent: Monday, 17 February 2003 4:03 PM
> Cc: Steve Baldwin; modperl@perl.apache.org
> Subject: Re: Building mod-perl 2 for cygwin
> 
> 
> 
> 
>>We can take two approaches, patch all the places in the code where 
>>perl
>>context is set explicitly to use #ifdef MULTIPLICITY, rather than
> 
> #ifdef 
> 
>>USE_THREADS. Or we can refuse to build mod_perl if MULTIPLICITY is 
>>enabled without the threads. Of course the first solution is more 
>>favorable for users.
> 
> 
> I've played a bit with various options and it seems that it's going to
> be a 
> big trouble to support MULTIPLICITY without USE_THREADS. My suggestion
> for now 
> is to either rebuild with -Uusemultiplicity or -Dusethreads (less
> preferred if 
> you don't need threads, but need speed). README.cygwin says:
> 
> =item * C<-Dusemultiplicity>
> 
> Multiplicity is required when embedding Perl in a C program and using
> more than one interpreter instance.  This works with the Cygwin port.
> 
> Though I can't see that this is a required option.
> __________________________________________________________________
> Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/     mod_perl Guide ---> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org   http://ticketmaster.com


-- 


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


RE: Building mod-perl 2 for cygwin

Posted by Steve Baldwin <st...@multiservice.com>.
Thanks very much for your reply Stas.  Pardon my ignorance, but are you
saying I need to rebuild Perl with different options.  The version of
Perl I'm using is the packaged one I installed with the cygwin install
utility.  If this is the case, could you please a little more
information as to the arguments you recommend to build a version of Perl
that works fine 'standalone', as well as embedded (which I presume is
the case with mod-perl) if that is possible.

Steve

-----Original Message-----
From: Stas Bekman [mailto:stas@stason.org] 
Sent: Monday, 17 February 2003 4:03 PM
Cc: Steve Baldwin; modperl@perl.apache.org
Subject: Re: Building mod-perl 2 for cygwin



> We can take two approaches, patch all the places in the code where 
> perl
> context is set explicitly to use #ifdef MULTIPLICITY, rather than
#ifdef 
> USE_THREADS. Or we can refuse to build mod_perl if MULTIPLICITY is 
> enabled without the threads. Of course the first solution is more 
> favorable for users.

I've played a bit with various options and it seems that it's going to
be a 
big trouble to support MULTIPLICITY without USE_THREADS. My suggestion
for now 
is to either rebuild with -Uusemultiplicity or -Dusethreads (less
preferred if 
you don't need threads, but need speed). README.cygwin says:

=item * C<-Dusemultiplicity>

Multiplicity is required when embedding Perl in a C program and using
more than one interpreter instance.  This works with the Cygwin port.

Though I can't see that this is a required option.
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
> We can take two approaches, patch all the places in the code where perl 
> context is set explicitly to use #ifdef MULTIPLICITY, rather than #ifdef 
> USE_THREADS. Or we can refuse to build mod_perl if MULTIPLICITY is 
> enabled without the threads. Of course the first solution is more 
> favorable for users.

I've played a bit with various options and it seems that it's going to be a 
big trouble to support MULTIPLICITY without USE_THREADS. My suggestion for now 
is to either rebuild with -Uusemultiplicity or -Dusethreads (less preferred if 
you don't need threads, but need speed). README.cygwin says:

=item * C<-Dusemultiplicity>

Multiplicity is required when embedding Perl in a C program and using
more than one interpreter instance.  This works with the Cygwin port.

Though I can't see that this is a required option.
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: Building mod-perl 2 for cygwin

Posted by Stas Bekman <st...@stason.org>.
Steve Baldwin wrote:
> I've got Apache2 installed and as far as I can tell, it is functional.
> I'm trying to build mod-perl from source (as I couldn't find any
> binaries for cygwin).  When I initially ran the command :
> 
> perl Makefile.PL MP_AP_PREFIX=/usr/local/apache2
> 
> I got errors telling me it couldn't find "cygdb-3.1.dll", which I
> eventually tracked down to Apache::TextConfig::open_cmd.  I commented
> out the line :
> 
> local @ENV{ qw(PATH IFS CDPATH ENV BASH_ENV) };
> 
> and the errors went away (it was clearing $ENV{PATH} which I think was
> causing the error).  

We need to explicitly set $ENV{PATH} to be able to start a process under -T 
(see perlsec). We could hardcode the path of the value, but that would be 
different for each platform. What the normal value of PATH on your system? Is 
this something standard that other cygwin users can rely on?

> However, when I run 'make', I get the following ...
> 
> [mod_perl-1.99_08]$ make
> cd "src/modules/perl" && make -f Makefile.modperl
> make[1]: Entering directory
> `/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
> gcc -I/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl
> -I/cygdrive/d/Downloads/mod_perl-1.99_08/xs -I/usr/local/apache2/include
> -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
> -I/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE -DMOD_PERL -O2  \
> -c mod_perl.c && mv mod_perl.o mod_perl.lo
> mod_perl.c: In function `modperl_shutdown':
> mod_perl.c:10: `my_perl' undeclared (first use in this function)
> mod_perl.c:10: (Each undeclared identifier is reported only once
> mod_perl.c:10: for each function it appears in.)
> mod_perl.c: In function `modperl_hook_post_config':
> mod_perl.c:498: `my_perl' undeclared (first use in this function)
> mod_perl.c: In function `modperl_response_handler_cgi':
> mod_perl.c:771: `my_perl' undeclared (first use in this function)
> make[1]: *** [mod_perl.lo] Error 1
> make[1]: Leaving directory
> `/cygdrive/d/Downloads/mod_perl-1.99_08/src/modules/perl'
> make: *** [modperl_lib] Error 2


The key is:

> [mod_perl-1.99_08]$ perl -V
[...]
>     usethreads=undef use5005threads=undef useithreads=undef
> usemultiplicity=define

You don't have threads enabled, but you do have multiplicity enabled. I 
thought that this problem could be workarounded with this:

Index: src/modules/perl/modperl_perl_includes.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_includes.h,v
retrieving revision 1.17
diff -u -r1.17 modperl_perl_includes.h
--- src/modules/perl/modperl_perl_includes.h    25 Nov 2002 01:31:00 -0000 
  1.17
+++ src/modules/perl/modperl_perl_includes.h    17 Feb 2003 04:14:48 -0000
@@ -42,6 +42,19 @@
  #   endif
  #endif

+/* If perl was compiled with MULTIPLICITY and/or
+ * PERL_IMPLICIT_CONTEXT, but no USE_ITHREADS, for mod_perl 2.0 it's
+ * the same as no multiplicity at all. This is to simplify the #ifdef
+ * logic of handling the perl context switching */
+#ifndef USE_ITHREADS
+#    ifdef PERL_IMPLICIT_CONTEXT
+#        undef PERL_IMPLICIT_CONTEXT
+#    endif
+#    ifdef MULTIPLICITY
+#        undef MULTIPLICITY
+#    endif
+#endif
+
  #include "EXTERN.h"
  #include "perl.h"
  #include "XSUB.h"

but unfortunately this won't work, as certain PL_ variables aren't defined 
without defined(MULTIPLICITY), while they are defined in the perl core 
library. I suppose there are many other problems with this approach.

We can take two approaches, patch all the places in the code where perl 
context is set explicitly to use #ifdef MULTIPLICITY, rather than #ifdef 
USE_THREADS. Or we can refuse to build mod_perl if MULTIPLICITY is enabled 
without the threads. Of course the first solution is more favorable for users.

But may I ask why do you have MULTIPLICITY enabled? Is it required for cygwin 
perl (fork emulation?)

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com