jacques has asked for the wisdom of the Perl Monks concerning the following question:

I have 21 directories in my @INC. But when I build my Makefile with Makefile.PL and run 'make test', I suddenly have 182 entries in my @INC (when using 'make' to run the test script).

The vast majority of those directories do not exist. So I realized that something must be wrong in my Makefile, but I don't know what. Perhaps something is wrong with the values derived from config.sh, which the Makefile draws upon?

Any ideas are appreciated. Here is some of my Makefile:

# --- MakeMaker const_config section: # These definitions are from config.sh (via /usr/lib/perl5/5.8.3/i386- +linux-thread-multi/Config.pm) # They may have been overridden via Makefile.PL or on the command line AR = ar CC = gcc CCCDLFLAGS = -fPIC CCDLFLAGS = -rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.3/i386-linux-threa +d-multi/CORE DLEXT = so DLSRC = dl_dlopen.xs LD = gcc LDDLFLAGS = -shared -L/usr/local/lib LDFLAGS = -L/usr/local/lib LIBC = /lib/libc-2.3.3.so LIB_EXT = .a OBJ_EXT = .o OSNAME = linux OSVERS = 2.4.21-4.elsmp RANLIB = : SITELIBEXP = /usr/lib/perl5/site_perl/5.8.3 SITEARCHEXP = /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi SO = so EXE_EXT = FULL_AR = /usr/bin/ar VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-mul +ti VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.8.3 # --- MakeMaker constants section: AR_STATIC_ARGS = cr VERSION = 1.00 VERSION_MACRO = VERSION VERSION_SYM = 1_00 DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" XS_VERSION = 1.00 XS_VERSION_MACRO = XS_VERSION XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" INST_ARCHLIB = blib/arch INST_SCRIPT = blib/script INST_BIN = blib/bin INST_LIB = blib/lib INST_MAN1DIR = blib/man1 INST_MAN3DIR = blib/man3 MAN1EXT = 1 MAN3EXT = 3pm INSTALLDIRS = site DESTDIR = PREFIX = PERLPREFIX = /usr SITEPREFIX = /usr VENDORPREFIX = /usr INSTALLPRIVLIB = $(PERLPREFIX)/lib/perl5/5.8.3 DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) INSTALLSITELIB = $(SITEPREFIX)/lib/perl5/site_perl/5.8.3 DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) INSTALLVENDORLIB = $(VENDORPREFIX)/lib/perl5/vendor_perl/5.8.3 DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) INSTALLARCHLIB = $(PERLPREFIX)/lib/perl5/5.8.3/i386-linux-thread-multi DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) INSTALLSITEARCH = $(SITEPREFIX)/lib/perl5/site_perl/5.8.3/i386-linux-t +hread-multi DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5/vendor_perl/5.8.3/i386-l +inux-thread-multi DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) INSTALLBIN = $(PERLPREFIX)/bin DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) INSTALLSITEBIN = $(SITEPREFIX)/bin DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) INSTALLVENDORBIN = $(VENDORPREFIX)/bin DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) INSTALLSCRIPT = $(PERLPREFIX)/bin DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1 DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) INSTALLSITEMAN1DIR = $(SITEPREFIX)/share/man/man1 DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1 DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3 DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) INSTALLSITEMAN3DIR = $(SITEPREFIX)/share/man/man3 DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3 DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) PERL_LIB = /usr/lib/perl5/5.8.3 PERL_ARCHLIB = /usr/lib/perl5/5.8.3/i386-linux-thread-multi LIBPERL_A = libperl.a FIRST_MAKEFILE = Makefile MAKEFILE_OLD = $(FIRST_MAKEFILE).old MAKE_APERL_FILE = $(FIRST_MAKEFILE).aperl PERLMAINCC = $(CC) PERL_INC = /usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE PERL = /usr/bin/perl FULLPERL = /usr/bin/perl ABSPERL = $(PERL) PERLRUN = $(PERL) FULLPERLRUN = $(FULLPERL) ABSPERLRUN = $(ABSPERL) PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" PERL_CORE = 0 PERM_RW = 644 PERM_RWX = 755 MAKEMAKER = /usr/lib/perl5/5.8.3/ExtUtils/MakeMaker.pm MM_VERSION = 6.17 MM_REVISION = 1.133

Replies are listed 'Best First'.
Re: Makefile messing up @INC
by merlyn (Sage) on Jul 26, 2005 at 22:48 UTC
      It's messing up my test script. My script uses values from @INC. There should only be 21 entries, but when the script is run (with make test) there are 182. So I am getting a load of errors.

      When I run the test script without make, I get the correct 21 entries.

        That sounds like a really fragile test. As long as whoever uses your code has the correct @INC for the machine and environment, why does your code care how it works?