-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hiya,

I'm trying to improve our perl module build process. My idea was to
package all perl modules that we want to use that aren't in our
distribution (Debian) as .par files, and make a .pm module in our local
hierarchy that does the appropriate use, followed by subclassing the
module for if I want to fix bugs etc later.

My .par packages are created by just building each module in the normal
way, then saying par.pl -p inside the module directory. This has worked
fine for simple modules, however I'm now having big problems.

The module I'm currently dealing with is Class::DBI, so has quite a few
dependencies. My module code looks like:

#!/usr/bin/perl
use strict;
use warnings;

use PAR qw(packages/version.par);
use PAR qw(packages/ima-dbi.par);
use PAR qw(packages/class-accessor.par);
use PAR qw(packages/class-accessor-chained.par);
use PAR qw(packages/class-data-inheritable.par);
use PAR qw(packages/class-trigger.par);
use PAR qw(packages/scalar-list-utils.par);
use PAR qw(packages/tree-simple-visitorfactory.par);
use PAR qw(packages/lingua-en-inflect.par);
use PAR qw(packages/universal-moniker.par);
use PAR qw(packages/data-page.par);
use PAR qw(packages/data-uuid.par);
use PAR qw(packages/sql-abstract.par);
use PAR qw(packages/class-dbi.par);

package NTA::CPAN::Class::DBI;

use base qw(Class::DBI);

1;

I have put all the .par files I'm using up on the web at:

http://82.70.13.44/packages/

Note that the base DBI modules have a Debian package, and so are
installed from there in the standard system locations.

What I see from strace when I run the module above all looks normal until:
stat64("/usr/lib/perl5/auto/DBI/DESTROY.al", 0x814c0c8) = -1 ENOENT (No
such file or directory)
open("/home/tsd/perl/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1
ENOENT (No such file or directory)
open("/home/scans/src/nta-perl-modules.tsd/auto/DBI/DESTROY.al",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/scans/scripts/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) =
- -1 ENOENT (No such file or directory)
open("/home/scans/dev/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1
ENOENT (No such file or directory)
open("/etc/perl/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1 ENOENT
(No such file or directory)
open("/usr/local/lib/perl/5.8.4/auto/DBI/DESTROY.al",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/local/share/perl/5.8.4/auto/DBI/DESTROY.al",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1
ENOENT (No such file or directory)
open("/usr/share/perl5/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1
ENOENT (No such file or directory)
open("/usr/lib/perl/5.8/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1
ENOENT (No such file or directory)
open("/usr/share/perl/5.8/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) =
- -1 ENOENT (No such file or directory)
open("/usr/local/lib/site_perl/auto/DBI/DESTROY.al",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("./auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such
file or directory)
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
{st_mode=S_IFREG|0660, st_size=20508, ...}) = 0
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pmc",
0xbfa44d50) = -1 ENOENT (No such file or directory)
open("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfa44b48) = -1 ENOTTY
(Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR)            = 0
read(3, "#!perl -w\npackage version;\n\nuse "..., 4096) = 4096
_llseek(3, 374, [374], SEEK_SET)        = 0
_llseek(3, 0, [374], SEEK_CUR)          = 0
close(3)                                = 0
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
{st_mode=S_IFREG|0660, st_size=20508, ...}) = 0
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
{st_mode=S_IFREG|0660, st_size=20508, ...}) = 0
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
{st_mode=S_IFREG|0660, st_size=20508, ...}) = 0
stat64("/tmp/par-tsd/cache-a1194286ca778fbc947464682982541394ea63f6/6396d756.pm",
{st_mode=S_IFREG|0660, st_size=20508, ...}) = 0

The stat64 then repeats forever.. If I use DProf on this, I see the
first second or two of subroutine calls (which is dominated by
Exporter), however the time reported by DProf only covers up until I
enter this loop.

I'm using PAR version 0.89 and I've attached my perl -V (standard Debian
perl)

Anyone who can give me any hints about what's going wrong would be most
apreciated.

Cheers
Tomas Doran
- - --

NTA Monitor Ltd.
14 Ashford House,
Beaufort Court,
Medway City Estate,
Rochester,
Kent ME2 4FA.

Tel: 01634 721855
Fax: 01634 721844

PGP Key Server: pgpkeys.mit.edu (feel free to call and verify fingerprints)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (MingW32)

iD8DBQFDVR4BsYOtABuMjoARAgHTAJsFqhCR0lTE2BBP3i5oIoa5h8+G7ACdFrSc
0q4KoRLlhRKCXyEJYOWix8c=
=W2mi
-----END PGP SIGNATURE-----
Summary of my perl5 (revision 5 version 8 subversion 4) configuration:
  Platform:
    osname=linux, osvers=2.4.27-ti1211, archname=i386-linux-thread-multi
    uname='linux kosh 2.4.27-ti1211 #1 sun sep 19 18:17:45 est 2004 i686 
gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN 
-Dcccdlflags=-fPIC -Darchname=i386-linux -Dprefix=/usr 
-Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr 
-Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 
-Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.4 
-Dsitearch=/usr/local/lib/perl/5.8.4 -Dman1dir=/usr/share/man/man1 
-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 
-Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl 
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib 
-Dlibperl=libperl.so.5.8.4 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define 
usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN 
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN 
-fno-strict-aliasing -I/usr/local/include'
    ccversion='', gccversion='3.3.5 (Debian 1:3.3.5-9)', 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=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.3.2.so, so=so, useshrplib=true, libperl=libperl.so.5.8.4
    gnulibc_version='2.3.2'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES 
PERL_IMPLICIT_CONTEXT
  Built under linux
  Compiled at Mar  8 2005 19:51:48
  %ENV:
    
PERL5LIB="/home/tsd/perl:/home/scans/src/nta-perl-modules.tsd:/home/scans/scripts:/home/scans/dev"
  @INC:
    /home/tsd/perl
    /home/scans/src/nta-perl-modules.tsd
    /home/scans/scripts
    /home/scans/dev
    /etc/perl
    /usr/local/lib/perl/5.8.4
    /usr/local/share/perl/5.8.4
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.8
    /usr/share/perl/5.8
    /usr/local/lib/site_perl
    .

Reply via email to