public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* perl: inconsistent archname in build config?
@ 2012-09-08 11:26 bert Dvornik
  2012-09-08 20:26 ` bert Dvornik
  2012-09-09 22:27 ` Reini Urban
  0 siblings, 2 replies; 3+ messages in thread
From: bert Dvornik @ 2012-09-08 11:26 UTC (permalink / raw)
  To: cygwin

Summary: Cygwin's perl 5.14 uses cygwin-thread-multi-64int as the
archname for user module directories (i.e. those based on PERL5LIB),
but i686-cygwin-threads-64int as the archname for system module
directories and for installing files via cpan.  This seems to be based
on the build configuration (there are two settings in different
places).  It doesn't make sense to me, though maybe I'm missing
something.

Long version:

I ran into a problem with local module paths after updating to
perl-5.14.2-3.  I usually install Perl modules locally into
~/perl-lib/ by setting the prefix via CPAN's makepl_arg and
mbuildpl_arg configuration options.  Then I can set my PERL5LIB to get
that installation tree automatically used by perl.

This worked fine up to and including perl 5.10.  But with 5.14
something strange started happening.  If I look at the @INC in the
"perl -V" output, I see this:

  Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
[...lots of verbiage removed; see below for full output...]
    %ENV:
      PERL5LIB="/home/bert/perl-lib/lib/perl5:/home/bert/perl-lib/lib/perl5/site_perl/5.14:/home/bert/perl-lib/lib/perl5/5.14"
    @INC:
      /home/bert/perl-lib/lib/perl5/cygwin-thread-multi-64int
      /home/bert/perl-lib/lib/perl5
      /home/bert/perl-lib/lib/perl5/site_perl/5.14/cygwin-thread-multi-64int
      /home/bert/perl-lib/lib/perl5/site_perl/5.14
      /home/bert/perl-lib/lib/perl5/5.14/cygwin-thread-multi-64int
      /home/bert/perl-lib/lib/perl5/5.14
      /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int
      /usr/lib/perl5/site_perl/5.14
      /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int
      /usr/lib/perl5/vendor_perl/5.14
      /usr/lib/perl5/5.14/i686-cygwin-threads-64int
      /usr/lib/perl5/5.14
      /usr/lib/perl5/site_perl/5.10
      /usr/lib/perl5/vendor_perl/5.10
      /usr/lib/perl5/site_perl/5.8
    .
There are two odd things about this.  First, the @INC directories from
PERL5LIB use cygwin-thread-multi-64int, but the system ones use
i686-cygwin-threads-64int.  Second, when CPAN installs packages, they
go into i686-cygwin-threads-64int, which is why the ones in my
perl-lib directory are not being found in @INC.

Looking more closely at the output of "perl -V", I can see what's
probably causing the confusion:

  Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

    Platform:
      osname=cygwin, osvers=1.7.15(0.26053), archname=cygwin-thread-multi-64int
      uname='cygwin_nt-5.1 winxp 1.7.15(0.26053) 2012-05-09 10:25 i686 cygwin '
      config_args='-de -Dlibperl=cygperl5_14.dll -Dcc=gcc-4 -Dld=g++-4
-Darchname=i686-cygwin-threads-64int -Dmksymlinks -Dusethreads
-Accflags=-g'

So the platform settings have "archname=cygwin-thread-multi-64int",
but config_args include "-Darchname=i686-cygwin-threads-64int".  (Is
config_args the arg list passed to the "sh Configure" when building
perl?  If so, shouldn't -Darchname ACTUALLY set the archname?  Or is
there some other weirdness going on here?)

It's been a few years since I've built perl from scratch, and I'm
sorry to say really don't have time to experiment with it at the
moment.  The archname disconnect between CPAN installs and PERL5LIB is
being mildly annoying, but easy to band-aid by moving files to the
correct directory names.  Any clues as to whether the behavior I'm
seeing is "correct", and if so, whether it's a problem in how perl was
configured for Cygwin or some bug in perl's build system?

Thank you in advance for any clues,
--bert

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: perl: inconsistent archname in build config?
  2012-09-08 11:26 perl: inconsistent archname in build config? bert Dvornik
@ 2012-09-08 20:26 ` bert Dvornik
  2012-09-09 22:27 ` Reini Urban
  1 sibling, 0 replies; 3+ messages in thread
From: bert Dvornik @ 2012-09-08 20:26 UTC (permalink / raw)
  To: cygwin

On Fri, Sep 7, 2012 at 9:30 PM, bert Dvornik <bert@gljiva.org> wrote:
> Summary: Cygwin's perl 5.14 uses cygwin-thread-multi-64int as the
> archname for user module directories (i.e. those based on PERL5LIB),
> but i686-cygwin-threads-64int as the archname for system module
> directories and for installing files via cpan.  This seems to be based
> on the build configuration (there are two settings in different
> places).  It doesn't make sense to me, though maybe I'm missing
> something.

Oops, I had promised the full output of perl -V but didn't include it.
 Sorry.  (Most of this will be exactly the same for everyone else, but
here it is just in case.)

--bert


Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

  Platform:
    osname=cygwin, osvers=1.7.15(0.26053), archname=cygwin-thread-multi-64int
    uname='cygwin_nt-5.1 winxp 1.7.15(0.26053) 2012-05-09 10:25 i686 cygwin '
    config_args='-de -Dlibperl=cygperl5_14.dll -Dcc=gcc-4 -Dld=g++-4
-Darchname=i686-cygwin-threads-64int -Dmksymlinks -Dusethreads
-Accflags=-g'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc-4', ccflags ='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g
-fno-strict-aliasing -pipe -fstack-protector',
    optimize='-O3',
    cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -g
-fno-strict-aliasing -pipe -fstack-protector'
    ccversion='', gccversion='4.5.3', 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', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='g++-4', ldflags =' -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--enable-auto-image-base
-fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /lib
    libs=-lgdbm -ldb -ldl -lcrypt -lgdbm_compat
    perllibs=-ldl -lcrypt
    libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=cygperl5_14.dll
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' --shared  -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--enable-auto-image-base -L/usr/local/lib
-fstack-protector'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_PRESERVE_IVUV
                        PERL_USE_SAFE_PUTENV USE_64_BIT_INT USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API
  Locally applied patches:
	Bug#55162 File::Spec::case_tolerant performance
	CYG07 $vendorarch/auto/.rebase
	CYG15 static Win32CORE
	CYG17 cyg-1.7 paths-utf8
	0c612ce82 Fix building static extensions on cygwin, -UUSEIMPORTLIB
	1bac5ecc1 Fix 64-bit threading sv.c: S_anonymise_cv_maybe
	Cygwin::sync_winenv added
  Built under cygwin
  Compiled at Jul 12 2012 14:17:21
  %ENV:
    PERL5LIB="/home/bert/perl-lib/lib/perl5:/home/bert/perl-lib/lib/perl5/site_perl/5.14:/home/bert/perl-lib/lib/perl5/5.14"
  @INC:
    /home/bert/perl-lib/lib/perl5/cygwin-thread-multi-64int
    /home/bert/perl-lib/lib/perl5
    /home/bert/perl-lib/lib/perl5/site_perl/5.14/cygwin-thread-multi-64int
    /home/bert/perl-lib/lib/perl5/site_perl/5.14
    /home/bert/perl-lib/lib/perl5/5.14/cygwin-thread-multi-64int
    /home/bert/perl-lib/lib/perl5/5.14
    /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int
    /usr/lib/perl5/site_perl/5.14
    /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int
    /usr/lib/perl5/vendor_perl/5.14
    /usr/lib/perl5/5.14/i686-cygwin-threads-64int
    /usr/lib/perl5/5.14
    /usr/lib/perl5/site_perl/5.10
    /usr/lib/perl5/vendor_perl/5.10
    /usr/lib/perl5/site_perl/5.8
    .

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: perl: inconsistent archname in build config?
  2012-09-08 11:26 perl: inconsistent archname in build config? bert Dvornik
  2012-09-08 20:26 ` bert Dvornik
@ 2012-09-09 22:27 ` Reini Urban
  1 sibling, 0 replies; 3+ messages in thread
From: Reini Urban @ 2012-09-09 22:27 UTC (permalink / raw)
  To: cygwin

On Fri, Sep 7, 2012 at 8:30 PM, bert Dvornik wrote:
> Summary: Cygwin's perl 5.14 uses cygwin-thread-multi-64int as the
> archname for user module directories (i.e. those based on PERL5LIB),
> but i686-cygwin-threads-64int as the archname for system module
> directories and for installing files via cpan.  This seems to be based
> on the build configuration (there are two settings in different
> places).  It doesn't make sense to me, though maybe I'm missing
> something.
>
> Long version:
>
> I ran into a problem with local module paths after updating to
> perl-5.14.2-3.  I usually install Perl modules locally into
> ~/perl-lib/ by setting the prefix via CPAN's makepl_arg and
> mbuildpl_arg configuration options.  Then I can set my PERL5LIB to get
> that installation tree automatically used by perl.
>
> This worked fine up to and including perl 5.10.  But with 5.14
> something strange started happening.  If I look at the @INC in the
> "perl -V" output, I see this:
>
>   Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
> [...lots of verbiage removed; see below for full output...]
>     %ENV:
>       PERL5LIB="/home/bert/perl-lib/lib/perl5:/home/bert/perl-lib/lib/perl5/site_perl/5.14:/home/bert/perl-lib/lib/perl5/5.14"
>     @INC:
>       /home/bert/perl-lib/lib/perl5/cygwin-thread-multi-64int
>       /home/bert/perl-lib/lib/perl5
>       /home/bert/perl-lib/lib/perl5/site_perl/5.14/cygwin-thread-multi-64int
>       /home/bert/perl-lib/lib/perl5/site_perl/5.14
>       /home/bert/perl-lib/lib/perl5/5.14/cygwin-thread-multi-64int
>       /home/bert/perl-lib/lib/perl5/5.14
>       /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int
>       /usr/lib/perl5/site_perl/5.14
>       /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int
>       /usr/lib/perl5/vendor_perl/5.14
>       /usr/lib/perl5/5.14/i686-cygwin-threads-64int
>       /usr/lib/perl5/5.14
>       /usr/lib/perl5/site_perl/5.10
>       /usr/lib/perl5/vendor_perl/5.10
>       /usr/lib/perl5/site_perl/5.8
>     .
> There are two odd things about this.  First, the @INC directories from
> PERL5LIB use cygwin-thread-multi-64int, but the system ones use
> i686-cygwin-threads-64int.  Second, when CPAN installs packages, they
> go into i686-cygwin-threads-64int, which is why the ones in my
> perl-lib directory are not being found in @INC.
>
> Looking more closely at the output of "perl -V", I can see what's
> probably causing the confusion:
>
>   Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
>
>     Platform:
>       osname=cygwin, osvers=1.7.15(0.26053), archname=cygwin-thread-multi-64int
>       uname='cygwin_nt-5.1 winxp 1.7.15(0.26053) 2012-05-09 10:25 i686 cygwin '
>       config_args='-de -Dlibperl=cygperl5_14.dll -Dcc=gcc-4 -Dld=g++-4
> -Darchname=i686-cygwin-threads-64int -Dmksymlinks -Dusethreads
> -Accflags=-g'
>
> So the platform settings have "archname=cygwin-thread-multi-64int",
> but config_args include "-Darchname=i686-cygwin-threads-64int".  (Is
> config_args the arg list passed to the "sh Configure" when building
> perl?  If so, shouldn't -Darchname ACTUALLY set the archname?  Or is
> there some other weirdness going on here?)

Very interesting catch, thank you!
I will need to think a bit how to fix this, not to break too much.
Or if it needs t be fixed at all.
EU::MM seems to work okay, just MB and local::lib seems to be affected.

Yes, config_args is the cmdline, but archname is overridden
elsewhere in the old Configure system, most likely the hints.
-- 
Reini Urban
http://cpanel.net/   http://www.perl-compiler.org/

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-09-09 22:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-08 11:26 perl: inconsistent archname in build config? bert Dvornik
2012-09-08 20:26 ` bert Dvornik
2012-09-09 22:27 ` Reini Urban

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).