On Nov 2, 2012, at 8:54 AM, Kamal Ahmed <[email protected]> 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 ?

Yes.
> 
> Now, how can i trick Jenkins to believe that perl actually means 
> /usr/coderyte/bin/perl
> 
> Since i cannot change the #! in code.

Instead of executing just "prove", execute "/usr/coderyte/bin/perl prove". This 
will specify the version of Perl you want to use.

> 
> Thanks,
> -Kamal.
> From: David Weintraub <[email protected]>
> To: [email protected] 
> 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 <[email protected]> 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 <[email protected]>
>> To: [email protected] 
>> 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 <[email protected]> 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 <[email protected]>
>>> To: [email protected] 
>>> 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 <[email protected]> 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.
>>>> 
>>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
> 
> 
> 

Reply via email to