| Summary: | Perl Module Dependency - Local vs. CPAN | |||
|---|---|---|---|---|
| Product: | OpenShift Online | Reporter: | ben.sommer | |
| Component: | Image | Assignee: | Michal Fojtik <mfojtik> | |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | libra bugs <libra-bugs> | |
| Severity: | high | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 2.x | CC: | agoldste, ben.sommer, dma, dmcphers, erich, jhadvig, jthomas, mfojtik, rmartine | |
| Target Milestone: | --- | Keywords: | Reopened, UpcomingRelease | |
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | Bug Fix | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1157767 (view as bug list) | Environment: | ||
| Last Closed: | 2015-02-18 16:49:59 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Bug Depends On: | ||||
| Bug Blocks: | 1157767 | |||
|
Description
ben.sommer
2013-12-08 17:33:13 UTC
Where are you executing the export, it must be exported before the build script is executed so the check in the build script can successfully load that dependency from your folder. The check in your build script: https://github.com/openshift/origin-server/blob/master/cartridges/openshift-origin-cartridge-perl/bin/build#L38 Also could you instead of 'export', include the module like this: use lib 'Y:/my/dir/to/Donation.pm'; or just: use lib 'Y:/my/dir/to'; OK..sorry for that last, figure out that you have to use it like this: use lib '/path/dir/to'; use MyCustomModule; where 'module' is name of the module. Ben, does the solution mentioned by Jakub fixed your problem? Closing this issue due to no further feedback from the reporter. Discussed this also with mfojtik and he agreed to close this issue. So I have tried two approaches to reproduce the issue:
1. Created simpler perl application with rhc:
rhc app create perl perl-5.10
2. Add the Util module to the index.pl :
sed -i "2i use Util;" index.pl
3. create the libs directory:
mkdir -p libs
4. Create Util.pm module with some functionality:
echo "package Util;
use strict;
use warnings;
use Exporter qw(import);
our @EXPORT_OK = qw(add multiply);
sub add {
my ($x, $y) = @_;
return $x + $y;
}
sub multiply {
my ($x, $y) = @_;
return $x * $y;
}
1;" >> libs/Util.pm
I even tried to put the Util.pm into /libs/Lieder/ directory, just to be sure it is working even if the module is nested.
In both cases the result was the same:
remote: Building Perl cartridge
remote: *** Installing modules from .openshift/cpan.txt
remote: *** Skipping module Exporter install from CPAN (found in system).
remote: *** Please add Exporter to .openshift/cpan.txt to install it from CPAN.
remote: *** Skipping module Util install from CPAN (found locally).
remote: *** Please add Util to .openshift/cpan.txt to install it from CPAN.
remote: *** Skipping module strict install from CPAN (found in system).
remote: *** Please add strict to .openshift/cpan.txt to install it from CPAN.
remote: *** Skipping module warnings install from CPAN (found in system).
remote: *** Please add warnings to .openshift/cpan.txt to install it from CPAN.
so the modules where found.
Guy, can you please help review this PR? https://github.com/openshift/origin-server/pull/5888 Hi I followed the exact procedure outlined in #7 using openshift online and it fails with: remote: Building Perl cartridge remote: *** Installing modules from .openshift/cpan.txt remote: ! Finding Util on cpanmetadb failed. remote: ! Finding Util () on mirror http://mirror.ops.rhcloud.com/mirror/perl/CPAN failed. remote: ! Finding Util () on mirror http://search.cpan.org/CPAN failed. remote: ! Couldn't find module or a distribution Util () remote: An error occurred executing 'gear postreceive' (exit code: 1) remote: Error message: CLIENT_ERROR: Failed to execute: 'control build' for /var/lib/openshift/5480a433e0b8cdcd9c000209/perl if I change the mod name from Util.pm to junk.pm and also to use junk; it works. Behavior changes somewhat using ose 2.2. It fails differently and pulls Util out of Parse-Pidl. $ git push Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 295 bytes, done. Total 3 (delta 2), reused 0 (delta 0) remote: Stopping Perl cartridge remote: Waiting for stop to finish remote: Waiting for stop to finish remote: Building git ref 'master', commit dbb1336 remote: Building Perl cartridge remote: *** Installing modules from .openshift/cpan.txt remote: ! Finding Util on cpanmetadb failed. remote: --> Working on Util remote: Fetching http://search.cpan.org/CPAN/authors/id/C/CT/CTRLSOFT/Parse-Pidl-0.02.tar.gz ... OK remote: Configuring Parse-Pidl-0.02 ... OK remote: Building Parse-Pidl-0.02 ... OK remote: Successfully installed Parse-Pidl-0.02 remote: 1 distribution installed remote: Preparing build for deployment remote: Deployment id is 5c95333f remote: Activating deployment remote: Starting Perl cartridge remote: Application directory "/" selected as DocumentRoot remote: ------------------------- remote: Git Post-Receive Result: success remote: Activation status: success remote: Deployment completed with status: success Commit pushed to master at https://github.com/openshift/origin-server https://github.com/openshift/origin-server/commit/867c05ac6cc2509c15d14d1f05a1b7b7eeb23c7e Bug 1039356 - Skip the failed CPAN modules to allow build to finish Version-Release number of selected component (if applicable):
devenv_5360
Steps to Reproduce:
1. Created simpler perl application with rhc:
rhc app create perl perl-5.10
2. Add the Util module to the index.pl :
sed -i "2i use Util;" index.pl
3. create the libs directory:
mkdir -p libs
4. Create Util.pm module with some functionality:
echo "package Util;
use strict;
use warnings;
use Exporter qw(import);
our @EXPORT_OK = qw(add multiply);
sub add {
my ($x, $y) = @_;
return $x + $y;
}
sub multiply {
my ($x, $y) = @_;
return $x * $y;
}
1;" >> libs/Util.pm
5. Add module "Util","strict","warnings","Exporter" to file ".openshift/cpan.txt"
6.Push the change the application.
# git add ./
# git commit -anmp
[root@dhcp-128-7 perl]# git push
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 333 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Stopping Perl cartridge
remote: Waiting for stop to finish
remote: Waiting for stop to finish
remote: Building git ref 'master', commit d284837
remote: Building Perl cartridge
remote: *** Installing modules from .openshift/cpan.txt
remote: --> Working on Exporter
remote: Fetching http://mirror.ops.rhcloud.com/mirror/perl/CPAN/authors/id/T/TO/TODDR/Exporter-5.70.tar.gz ... OK
remote: Configuring Exporter-5.70 ... OK
remote: Building Exporter-5.70 ... OK
remote: Successfully installed Exporter-5.70 (upgraded from 5.63)
remote: 1 distribution installed
remote: ! Finding Util on cpanmetadb failed.
remote: ! Finding Util () on mirror http://mirror.ops.rhcloud.com/mirror/perl/CPAN failed.
remote: ! Finding Util () on mirror http://search.cpan.org/CPAN failed.
remote: ! Couldn't find module or a distribution Util ()
remote: skipping R/RJ/RJBS/perl-5.20.0.tar.gz
remote: skipping R/RJ/RJBS/perl-5.20.0.tar.gz
remote: Preparing build for deployment
remote: Deployment id is ccb469ba
remote: Activating deployment
remote: Starting Perl cartridge
remote: Application directory "/" selected as DocumentRoot
remote: -------------------------
remote: Git Post-Receive Result: success
remote: Activation status: success
remote: Deployment completed with status: success
To ssh://54900fb6769ee19cdb000001.rhcloud.com/~/git/perl.git/
f840fe4..d284837 master -> master
Actual results:
6. Skip the failed CPAN modules to allow build to finish
Expected results:
6. Skip the failed CPAN modules to allow build to finish
Additional info:
|