perl: inconsistent archname in build config?

bert Dvornik bert@gljiva.org
Sat Sep 8 11:26:00 GMT 2012


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



More information about the Cygwin mailing list