On Fri, Nov 2, 2012 at 1:54 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > right on the dot! > > Here is what i believe is happening: > Jenkins THINKS the perl means /usr/bin/perl , but the actual perl is > /usr/coderyte/bin/perl > > which prove > /usr/coderyte/bin/prove > kahmed@athena ~/workspace/ONATHENA $ which perl > /usr/coderyte/bin/perl > > am i right in this assumption ? > > Now, how can i trick Jenkins to believe that perl actually means > /usr/coderyte/bin/perl > > Since i cannot change the #! in code.
export PATH=/usr/codertyte/bin:$PATH will make it so the shell will search your custom directory before looking in the system-wide directories. HTH Andrew > > Thanks, > -Kamal. > > ________________________________ > From: David Weintraub <qazw...@gmail.com> > To: jenkinsci-users@googlegroups.com > Sent: Thursday, November 1, 2012 10:01 PM > > Subject: Re: /usr/bin/prove: Cannot find blib > > Look at this @INC path: > > /extra/coderyte/nlp-builds/icd/icd-current/tools/perl_lib > /extra/coderyte/www/iatqa/cgi-bin > /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc > /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 > /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl > > Now look at the one @INC you sent me with the program error: > > /usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi > /usr/coderyte/lib/perl5/site_perl/5.8.8 > /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi > /usr/coderyte/lib/perl5/5.8.8 > > > You see a difference? > > In fact, I believe you're looking at two different Perl libraries being > executed. Note the "perl5" portions of the paths! In the second one, they're > all /usr/coderyte/lib. In the one you just sent me, they're > "/usr/lib/perl5". > > The "site_perl" paths are for CPAN modules you install. They're usually in > the @INC first, so you can override the versions of the same modules that > came wiith the installation. > > So, your problem is that you are executing two different Perl programs. One > you are using when you use Jenkins which is the Perl version that probably > came with the system. The other is what you execute when you use the SSH > user. > > Log in as your SSH user, the one which allows the program to work. Then, > type in "which perl" at the command line. This is the Perl you must execute > as the Jenkins user. Either fix the first line (the shebang (#!)) to point > to the SSH user's Perl, or prepend your Perl script with that Perl program > (include the full path). > > > On Nov 1, 2012, at 8:31 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > > David, > > Unfortunately i would have to stick to Perl 5.8.8 > Here is more of the error: > > 15:06:11 > > + sh run_prove.sh > > 15:06:18 > ./DBI_CrossFeed_Crosswalk_custom.................................Can't > locate Log/Log4perl.pm in @INC (@INC contains: > /extra/coderyte/nlp-builds/icd/icd-current/tools/perl_lib > /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc > /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx.pm line 28. > > 15:06:18 > BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx.pm line 28. > > 15:06:18 > Compilation failed in require at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Lynx_Utilities.pm line 8. > > 15:06:18 > BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Lynx_Utilities.pm line 8. > > 15:06:18 > Compilation failed in require at ./DBI_CrossFeed_Crosswalk_custom.t line > 10. > > 15:06:18 > BEGIN failed--compilation aborted at ./DBI_CrossFeed_Crosswalk_custom.t > line 10. > > 15:06:18 > # Looks like your test died before it could output anything. > > 15:06:18 > dubious > > 15:06:18 > Test returned status 2 (wstat 512, 0x200) > > 15:06:19 > ./DBI_Services_NoteProfile.......................................Can't > locate Date/Calc.pm in @INC (@INC contains: > /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc > /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.5 > /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl . > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/StagingDB.pm line 3. > > > and so on... > > > 15:06:24 > # Error: Can't locate Text/Unidecode.pm in @INC (@INC contains: > /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc > /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.5 > /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl . > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Feed.pm line 5. > > 15:06:24 > # BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Feed.pm line 5. > > 15:06:24 > # Compilation failed in require at (eval 1) line 2. > > 15:06:24 > Can't locate object method "new" via package "CodeRyte::Lynx::Feed" at > ./Feed-Binary_Conversion.t line 13. > > 15:06:24 > 1..1 > > 15:06:24 > # Looks like you failed 1 tests of 1. > > 15:06:24 > # Looks like your test died just after 1. > > 15:06:24 > dubious > > 15:06:24 > Test returned status 255 (wstat 65280, 0xff00) > > 15:06:24 > DIED. FAILED test 1 > > 15:06:24 > Failed 1/1 tests, 0.00% okay > > 15:06:24 > ./DBI_Assembler_Primary_Defined_Counts...........................Can't > locate Log/Log4perl.pm in @INC (@INC contains: > > > Strange thing is when @ work, i am connected to this remote slave , and when > i come home and connect via VPN, i am still connected even though the IP > changed, and the connection was severed for the time i was driving. > > > From: David Weintraub <qazw...@gmail.com> > To: jenkinsci-users@googlegroups.com > Sent: Thursday, November 1, 2012 1:09 PM > Subject: Re: /usr/bin/prove: Cannot find blib > > I see you're on Perl 5.8.8 -- a release of Perl that's over six years old. > The "use feature" pragma didn't come in until Perl 5.10 (current version is > 5.16). All that "use feature" does is give you access to the "say" command. > Say is like "print" except that it automatically includes a "\n". > > Use this program. I removed "say" and used "print" instead: > > #!/usr/bin/env perl > use strict; > use warnings; > > use Log::Log4Perl > > print "Perl \@INC: " . join ("\n", @INC) . "\n"; > for my $module (sort keys %INC) { > print qq(\$INC{$module} = "$INC{$module}"\n); > } > > By the way, note the @INC array which printed out as part of the error > message: > > * /usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi > * /usr/coderyte/lib/perl5/site_perl/5.8.8 > * /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi > * /usr/coderyte/lib/perl5/5.8.8 > > Compare that with the one you got as the Jenkins user. (You didn't include > that in your original email!). I can see that Perl 5.8.8 isn't installed as > a standard Perl program because it's under /usr/coderyte and not a standard > directory. On most Unix type systems it's under /usr/share/perl or > /usr/local/perl, or /var/perl or /opt/perl. I suspect that your Jenkins user > is looking in different directories and maybe even using a completely > different version of Perl. > > What's the full error message you're getting with Jenkins. You only gave: > > 11:41:35 Can't locate Log/Log4perl.pm in @INC (@INC contains: > > > You left off the interesting part. > > On Nov 1, 2012, at 12:56 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > > Hi David, > Now i am getting error: > > ./test_log4p.pl > Can't locate feature.pm in @INC (@INC contains: > /usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi > /usr/coderyte/lib/perl5/site_perl/5.8.8 > /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi > /usr/coderyte/lib/perl5/5.8.8 .) at ./test_log4p.pl line 4. > BEGIN failed--compilation aborted at ./test_log4p.pl line 4. > > > more test_log4p.pl > > #!/usr/bin/env perl > use strict; > use warnings; > use feature qw(say); > > use Log::Log4Perl > > say "Perl \@INC: " . join "\n", @INC; > for my $module (sort keys %INC) { > say qq(\$INC{$module} = "$INC{$module}"); > } > > From: David Weintraub <qazw...@gmail.com> > To: jenkinsci-users@googlegroups.com > Sent: Thursday, November 1, 2012 12:27 PM > Subject: Re: /usr/bin/prove: Cannot find blib > > Perl CPAN modules can be installed via user or via machine. Normally, if you > can't get root access on the machine, you install it for that user. Maybe > the Log::Log4perl module is installed as a user module. Thus, if you're > running it as another user, you simply can't find the module. > > Another possibility is that the module wasn't installed, and is located in a > different directory than expected. The Perl @INC shows you the directories > where modules are searched. The %INC hash shows the module loaded and the > directory where found. > > Try a simple program: > > use strict; > use warnings; > use feature qw(say); > > use Log::Log4Perl > > say "Perl \@INC: " . join "\n", @INC; > for my $module (sort keys %INC) { > say qq(\$INC{$module} = "$INC{$module}"); > } > > Do this via SSH where you can execute run_prove.sh and it works. This will > show you where this program is searching for the module and where it finds > it. That will give you an idea why Jenkins can't find it. > > If you do find that Log::Log4Perl is not where you expect it, use the "use > lib" pragma to add that directory to your @INC search array. > > On Nov 1, 2012, at 12:15 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > > Hi, > When i run run_prove.sh after doing an ssh to host , the perl unit tests run > fine > but when i do it via "Execute shell script on remote host using ssh" i get > error: > > 11:41:35 > + prove -b -v -r . > > 11:41:35 > /usr/bin/prove: Cannot find blib > > 11:41:35 > No blib directories found. > > 11:41:35 Can't locate Log/Log4perl.pm in @INC (@INC contains: > > I have tried with just execute shell script option as well, same result > > Would appreciate any help / Hint/Resolution > > Thanks, > -Kamal. > > > > > > > > > > > -- -- Andrew Melo