genome / gms

The Genome Modeling System installer
https://github.com/genome/gms/wiki
GNU Lesser General Public License v3.0
78 stars 22 forks source link

Installer fails when a perl module attempts to use Module::Runtime #99

Closed malachig closed 10 years ago

malachig commented 10 years ago

Latest attempt to install sGMS in a VM is failing the first time it tries to run code that uses Genome:

Module::Runtime version v0.14.0 required--this is only version v0.11.0 at /opt/gms/B518B12/sw/ur/lib/UR/Util.pm line 12.
BEGIN failed--compilation aborted at /opt/gms/B518B12/sw/ur/lib/UR/Util.pm line 12.
Compilation failed in require at /opt/gms/B518B12/sw/ur/lib/UR.pm line 109.
Compilation failed in require at /opt/gms/B518B12/sw/genome/lib/perl/Genome.pm line 8.
BEGIN failed--compilation aborted at /opt/gms/B518B12/sw/genome/lib/perl/Genome.pm line 8.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
malachig commented 10 years ago

It looks like this line was added to UR recently by @nnutter

use Module::Runtime v0.014 qw(module_notional_filename);

That was added to master in this commit: https://github.com/genome/UR/commit/2efdfac61874f9343c0f17dd53b05615ae03faad

In the sGMS install we are using a UR tag called 'gms-pub-tag'. This tag has mysteriously disappeared. The install was working just fine last night, so perhaps either the removal of this tag happened very recently?

Or when we did the clone, it failed to find the tag, defaulted to the master branch and it just so happened that the master branch of UR was working for us until now?

malachig commented 10 years ago

Actually I spoke too soon. The tag is still there. Investigating further.

malachig commented 10 years ago

Huh. We are attempting to clone a particular tag, and I believe this was working but it now failing for me:

sudo git clone http://github.com/genome/UR.git -b gms-pub-tag ur                                                                                                                   
Cloning into 'ur'...
remote: Counting objects: 34336, done.
remote: Compressing objects: 100% (7209/7209), done.
remote: Total 34336 (delta 26114), reused 34336 (delta 26114)
Receiving objects: 100% (34336/34336), 12.20 MiB | 7.08 MiB/s, done.
Resolving deltas: 100% (26114/26114), done.
warning: Remote branch gms-pub-tag not found in upstream origin, using HEAD instead

As predicted above, git fails to find the requested tag and clones master instead.

malachig commented 10 years ago

Attempts to clone other tags also fail and result in master being cloned instead.

gatoravi commented 10 years ago

this just worked for me

aramu@linus217 ~> git clone http://github.com/genome/UR.git -b gms-pub-tag temp
Cloning into 'temp'...
remote: Counting objects: 34336, done.
remote: Compressing objects: 100% (7209/7209), done.
remote: Total 34336 (delta 26114), reused 34336 (delta 26114)
Receiving objects: 100% (34336/34336), 12.20 MiB | 9.82 MiB/s, done.
Resolving deltas: 100% (26114/26114), done.
Checking connectivity... done
Note: checking out '356ca1ba8d565ed377cbabccae555408332f9273'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example:
  git checkout -b new_branch_nameChecking out files: 100% (778/778), done.
aramu@linus217 ~> cd temp/aramu@linus217 ~/temp ((gms-pub-tag))> ls

perhaps a git version issue ?

malachig commented 10 years ago

Yeah. Maybe. It still does not work for me:

git clone http://github.com/genome/UR.git -b gms-pub-tag temp
Cloning into 'temp'...
remote: Counting objects: 34336, done.
remote: Compressing objects: 100% (7209/7209), done.
remote: Total 34336 (delta 26114), reused 34336 (delta 26114)
Receiving objects: 100% (34336/34336), 12.20 MiB | 3.19 MiB/s, done.
Resolving deltas: 100% (26114/26114), done.
warning: Remote branch gms-pub-tag not found in upstream origin, using HEAD instead

git --version
git version 1.7.9.5

Although, it is not expected that the version of git has changed in the install. The command above is not supported in this older version of git. Perhaps it was never working and we just didn't realize that we were getting master and that it was working until recently...

malachig commented 10 years ago

For compatibility we can try this instead:


sudo git clone http://github.com/genome/UR.git ur
cd ur
sudo git checkout tags/gms-pub-tag -b gms-pub-tag

Since older versions of git will fail to checkout out unrecognized branches and just give a warning (checking out default branch instead) - but being on the right branch or tag is so important potentially, we should consider adding some checks to the make. In the past I have had success with a check like this:

#Make sure the specified branch exists and was checked out successfully
bash -c 'cd $fulldir; git ls-remote --exit-code . origin/$branch &> /dev/null; echo $?'
malachig commented 10 years ago

I tested this command on the default git for Ubuntu precise (version 1.7.9.5) and also built the latest version of git and tested it there (version 1.9.0). This syntax seems to work in both cases so I will change the make to do that instead. I will also experiment with checks like this for each branch/tag checked out:

bash -c 'git ls-remote --exit-code . gms-pub-tag &> /dev/null; echo $?'
sakoht commented 10 years ago

A commit 4 days ago added this dependency:

genome/UR@2efdfac

Sent from my iPhone

On Feb 14, 2014, at 4:11 PM, Malachi Griffith notifications@github.com wrote:

Latest attempt to install sGMS in a VM is failing the first time it tries to run code that uses Genome:

Module::Runtime version v0.14.0 required--this is only version v0.11.0 at /opt/gms/B518B12/sw/ur/lib/UR/Util.pm line 12. BEGIN failed--compilation aborted at /opt/gms/B518B12/sw/ur/lib/UR/Util.pm line 12. Compilation failed in require at /opt/gms/B518B12/sw/ur/lib/UR.pm line 109. Compilation failed in require at /opt/gms/B518B12/sw/genome/lib/perl/Genome.pm line 8. BEGIN failed--compilation aborted at /opt/gms/B518B12/sw/genome/lib/perl/Genome.pm line 8. Compilation failed in require at -e line 1. BEGIN failed--compilation aborted at -e line 1. — Reply to this email directly or view it on GitHub.

sakoht commented 10 years ago

nm: I'm way behind Malachi on this.

malachig commented 10 years ago

I think I have fixed this and added sanity checks so that the make will fail if the correct branch or tag is not successfully installed. https://github.com/genome/gms/commit/ca99808d8ba4cc5da8d5817c7f8e80f18dbceb6d

Looks like this now:

done-host/git-checkouts:
#
# $@:
#
sudo -v
which git || (which apt-get && sudo apt-get install git) || (echo "*** please install git on your system to continue ***" && false)
[ -e $(GMS_HOME)/sw/ur/.git ] || sudo git clone http://github.com/genome/UR.git $(GMS_HOME)/sw/ur && cd $(GMS_HOME)/sw/ur && sudo git checkout tags/gms-pub-tag -b gms-pub-tag
cd $(GMS_HOME)/sw/ur/ && git ls-remote --exit-code . gms-pub-tag 1>/dev/null || (echo "failed to clone ur repo" && false)
[ -e $(GMS_HOME)/sw/workflow/.git ] || sudo git clone http://github.com/genome/tgi-workflow.git $(GMS_HOME)/sw/workflow && cd $(GMS_HOME)/sw/workflow && sudo git checkout gms-pub
cd $(GMS_HOME)/sw/workflow/ && git ls-remote --exit-code . gms-pub 1>/dev/null || (echo "failed to clone workflow repo" && false)
[ -e $(GMS_HOME)/sw/rails/.git ] || sudo git clone http://github.com/genome/gms-webviews.git $(GMS_HOME)/sw/rails && cd $(GMS_HOME)/sw/rails && sudo git checkout gms-pub
cd $(GMS_HOME)/sw/rails/ && git ls-remote --exit-code . gms-pub 1>/dev/null || (echo "failed to clone gms-webviews repo" && false)  
[ -e $(GMS_HOME)/sw/genome/.git ] || sudo git clone http://github.com/genome/gms-core.git $(GMS_HOME)/sw/genome && cd $(GMS_HOME)/sw/genome && sudo git checkout gms-pub
cd $(GMS_HOME)/sw/genome/ && git ls-remote --exit-code . gms-pub 1>/dev/null || (echo "failed to clone gms-core repo" && false) 
[ -e $(GMS_HOME)/sw/openlava/.git ] || sudo git clone http://github.com/openlava/openlava.git $(GMS_HOME)/sw/openlava && cd $(GMS_HOME)/sw/openlava && sudo git checkout 2.2
cd $(GMS_HOME)/sw/openlava/ && git ls-remote --exit-code . 2.2 1>/dev/null || (echo "failed to clone openlava repo" && false)   
sudo chown -R $(GMS_USER):$(GMS_GROUP) $(GMS_HOME)/sw
sudo chmod -R g+rwxs $(GMS_HOME)/sw
touch $@

Tests of that make target seem to be working as expected. If you specify a tag or branch incorrectly it fails. And now the specified branch or tag is actually being checked out (instead of master) for all 5 git repos. Run a fresh install test now.

malachig commented 10 years ago

This is working now. Closing the issue.