Last modified: 2014-08-17 23:48:41 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T63285, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 61285 - mediawiki-vagrant reports an error when provisioning "browsertests" role
mediawiki-vagrant reports an error when provisioning "browsertests" role
Status: RESOLVED FIXED
Product: MediaWiki-Vagrant
Classification: Unclassified
General (Other open bugs)
unspecified
All All
: Unprioritized normal
: ---
Assigned To: Ori Livneh
:
: 63990 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-02-12 21:47 UTC by Jeff Hall
Modified: 2014-08-17 23:48 UTC (History)
6 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Jeff Hall 2014-02-12 21:47:51 UTC
Reported on the #wikimedia-qa IRC channel, and I was able to repro locally.  When a user provisions the "browsertests" role for mediawiki-vagrant, the obsolete mediawiki-selenium is deployed, rather than the newer (and expected) mediawiki_selenium Rubygem (note the underscore).

Repro steps:

1) Start with a fresh mediawiki-vagrant install (i.e. git clone the project).
2) cd to new "vagrant" sub-directory.
3) vagrant up
4) vagrant enable-role browsertests
5) vagrant provision (this step produces the error message shown below)

As near as I can tell, the error shown below does not actually prevent the "browsertests" role from working as expected; I am still able to run browser tests from the /srv/browsertests/tests/browser directory on the VM.


Error message:

notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: Could not locate Gemfile
err: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: change from notrun to 0 failed: bundle install --path /home/vagrant/.gem returned 10 instead of one of [0] at /tmp/vagrant-puppet-1/modules-0/browsertests/manifests/init.pp:85
Comment 1 Jeff Hall 2014-02-12 21:52:31 UTC
Complete messaging from the "vagrant provision" command is as follows:

Jeffrey-Hall:vagrant jeffreyhall$ vagrant enable-role browsertests
Ok. Run 'vagrant provision' to apply your changes.
Jeffrey-Hall:vagrant jeffreyhall$ vagrant provision
[default] Running provisioner: puppet...
Running Puppet with site.pp...
info: Applying configuration version '1392241885.c958ae3'
info: mount[files]: allowing mediawiki-vagrant access
notice: /Stage[main]/Browsertests/Env::Var[MEDIAWIKI_URL]/Env::Profile[set_mediawiki_url]/File[/etc/profile.d/puppet-managed/set_mediawiki_url.sh]/ensure: created
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: Could not locate Gemfile
err: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: change from notrun to 0 failed: bundle install --path /home/vagrant/.gem returned 10 instead of one of [0] at /tmp/vagrant-puppet-1/modules-0/browsertests/manifests/init.pp:85
notice: Finished catalog run in 3.76 seconds
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

FACTER_fqdn='mediawiki-vagrant.dev' FACTER_forwarded_port='8080' FACTER_shared_apt_cache='/vagrant/apt-cache/' FACTER_provider_name='virtualbox' FACTER_provider_version='4.3.6' puppet apply --templatedir /vagrant/puppet/templates --verbose --config_version /vagrant/puppet/extra/config-version --fileserverconfig /vagrant/puppet/extra/fileserver.conf --logdest /vagrant/logs/puppet/puppet.c958ae375.log --logdest console --modulepath '/tmp/vagrant-puppet-1/modules-0' --manifestdir /tmp/vagrant-puppet-1/manifests --detailed-exitcodes /tmp/vagrant-puppet-1/manifests/site.pp || [ $? -eq 2 ]

Stdout from the command:

info: Applying configuration version '1392241885.c958ae3'
info: mount[files]: allowing mediawiki-vagrant access
notice: /Stage[main]/Browsertests/Env::Var[MEDIAWIKI_URL]/Env::Profile[set_mediawiki_url]/File[/etc/profile.d/puppet-managed/set_mediawiki_url.sh]/ensure: created
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: Could not locate Gemfile
err: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: change from notrun to 0 failed: bundle install --path /home/vagrant/.gem returned 10 instead of one of [0] at /tmp/vagrant-puppet-1/modules-0/browsertests/manifests/init.pp:85
notice: Finished catalog run in 3.76 seconds
Comment 2 Gerrit Notification Bot 2014-02-18 17:29:12 UTC
Change 113988 had a related patch set uploaded by EBernhardson:
Repoint bundle install cwd

https://gerrit.wikimedia.org/r/113988
Comment 3 Gerrit Notification Bot 2014-02-18 17:30:16 UTC
Change 113988 merged by jenkins-bot:
Repoint bundle install cwd

https://gerrit.wikimedia.org/r/113988
Comment 4 James Forrester 2014-03-11 22:30:17 UTC
Now getting: 

jdforrester@local:~/Documents/git/vagrant$ vagrant enable-role browsertests && vagrant provision
Ok. Run 'vagrant provision' to apply your changes.
[default] Running provisioner: puppet...
Running Puppet with site.pp...
info: Applying configuration version '1394576869.c7f1990'
info: mount[files]: allowing mediawiki-vagrant access
notice: /Stage[main]/Browsertests/Env::Var[MEDIAWIKI_URL]/Env::Profile[set_mediawiki_url]/File[/etc/profile.d/puppet-managed/set_mediawiki_url.sh]/ensure: created
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: /usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /home/vagrant/.gem/ruby (Errno::EACCES)
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `each'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/pathname.rb:514:in `mkpath'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:15:in `run'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:8:in `install'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/cli.rb:222:in `install'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/task.rb:22:in `run'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor.rb:246:in `dispatch'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/base.rb:389:in `start'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/bin/bundle:13:in `<main>'
err: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: change from notrun to 0 failed: bundle install --path /home/vagrant/.gem returned 1 instead of one of [0] at /tmp/vagrant-puppet/modules-0/browsertests/manifests/init.pp:85
notice: Finished catalog run in 4.81 seconds
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

FACTER_fqdn='mediawiki-vagrant.dev' FACTER_forwarded_port='8080' FACTER_shared_apt_cache='/vagrant/apt-cache/' FACTER_provider_name='virtualbox' FACTER_provider_version='4.2.18' puppet apply --templatedir /vagrant/puppet/templates --verbose --config_version /vagrant/puppet/extra/config-version --fileserverconfig /vagrant/puppet/extra/fileserver.conf --logdest /vagrant/logs/puppet/puppet.c7f199012.log --logdest console --modulepath '/etc/puppet/modules:/tmp/vagrant-puppet/modules-0' --manifestdir /tmp/vagrant-puppet/manifests --detailed-exitcodes /tmp/vagrant-puppet/manifests/site.pp || [ $? -eq 2 ]

Stdout from the command:

info: Applying configuration version '1394576869.c7f1990'
info: mount[files]: allowing mediawiki-vagrant access
notice: /Stage[main]/Browsertests/Env::Var[MEDIAWIKI_URL]/Env::Profile[set_mediawiki_url]/File[/etc/profile.d/puppet-managed/set_mediawiki_url.sh]/ensure: created
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: /usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /home/vagrant/.gem/ruby (Errno::EACCES)
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `each'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/1.9.1/pathname.rb:514:in `mkpath'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:15:in `run'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/installer.rb:8:in `install'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/cli.rb:222:in `install'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/task.rb:22:in `run'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor.rb:246:in `dispatch'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/lib/ruby/vendor_ruby/bundler/vendor/thor/base.rb:389:in `start'
notice: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: 	from /usr/bin/bundle:13:in `<main>'
err: /Stage[main]/Browsertests/Exec[install browsertests bundle]/returns: change from notrun to 0 failed: bundle install --path /home/vagrant/.gem returned 1 instead of one of [0] at /tmp/vagrant-puppet/modules-0/browsertests/manifests/init.pp:85
notice: Finished catalog run in 4.81 seconds


Stderr from the command:


jdforrester@local:~/Documents/git/vagrant$
Comment 5 Ori Livneh 2014-04-16 06:40:14 UTC
*** Bug 63990 has been marked as a duplicate of this bug. ***
Comment 6 Gerrit Notification Bot 2014-04-16 07:07:08 UTC
Change 126207 had a related patch set uploaded by Ori.livneh:
Make sure ~vagrant/.gem is owned by vagrant:vagrant

https://gerrit.wikimedia.org/r/126207
Comment 7 Ori Livneh 2014-04-16 07:11:41 UTC
James or Stefan, could you verify that the patch fixes things?
Comment 8 Gerrit Notification Bot 2014-04-16 15:50:27 UTC
Change 126207 merged by jenkins-bot:
Make sure ~vagrant/.gem is owned by vagrant:vagrant

https://gerrit.wikimedia.org/r/126207
Comment 9 Dan Duvall 2014-06-03 18:17:58 UTC
I believe I'm running into the same issue, even with proper ownership and permissions on ~vagrant/.gem. A manual execution of `bundle install` reveals a failed compilation of the ffi gem.

At first I thought this might be a missing dependency but the issue persists after installing libffi—and looking into the gem source it appears to be bundled with its own libffi so that's definitely not it. I'll do some more digging.

Output of `bundle install --path /home/vagrant/.gem` in /srv/browsertests/tests/browser:

Fetching source index for https://rubygems.org/
Using builder (3.2.2)
Installing ffi (1.9.3) with native extensions /usr/lib/ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /usr/bin/ruby1.9.1 extconf.rb

Gem files will remain installed in /home/vagrant/.gem/ruby/1.9.1/gems/ffi-1.9.3 for inspection.
Results logged to /home/vagrant/.gem/ruby/1.9.1/gems/ffi-1.9.3/ext/ffi_c/gem_make.out
(... useless rubygems backtrace)
Comment 10 Dan Duvall 2014-06-03 23:08:27 UTC
The failure I was having appears to have been an issue with the older packaged version of Bundler that is installed by `puppet/modules/browsertests/manifests/init.pp`. After removing it (`apt-get remove --purge ruby-bundler`) and installing the latest RubyGems version, I can `bundle install` without a problem.

A short-term workaround to this issue would be to make sure the Puppet manifest installs Bundler using the "gem" provider. However, there is a separate issue at the moment that makes this workaround a bit messy: The GEM_HOME environment variable is being set relative to the user's home directly (by our script in /etc/profile.d/puppet-managed/gem_home.sh) meaning that gems installed as root (which is what Puppet will do for a package resource) are not accessible to other users. In this case, the bundler gem installed via a Puppet package will not be accessible to the user trying to execute `bundle install` (the vagrant user).

A broader solution (and maybe a more correct one in my opinion) would be to better isolate ruby dependencies via something like RVM or rbenv, where multiple ruby binaries and gems can be managed independently of system ones (see bug 50993) or even independently for users or specific applications. This will allow for more up-to-date versions of ruby and gems to be installed for specific roles without affecting others.

I'll go down the second road (referencing bug 50993 as it seems more directly relevant) and, if I run into any major blockers, I'll come back and implement the short-term workaround.
Comment 11 Andre Klapper 2014-08-17 11:26:00 UTC
[No patches left here - resetting bug report status]
Comment 12 Bryan Davis 2014-08-17 23:48:41 UTC
The browsertests role was removed entirely in I6a02788a42a5dcd58dc03ce845fedfe791da3bcb. If there are still issues with the various roles that enable browser tests for specific extensions a new bug should be filed.

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links