Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 202109 - dev-ruby/rubygems-1.0.1 access violations
Summary: dev-ruby/rubygems-1.0.1 access violations
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: Normal enhancement
Assignee: Gentoo Ruby Team
URL:
Whiteboard:
Keywords:
Depends on: 205276
Blocks:
  Show dependency tree
 
Reported: 2007-12-13 08:53 UTC by Tim Harder
Modified: 2008-07-06 14:00 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tim Harder gentoo-dev 2007-12-13 08:53:37 UTC
New release.
Comment 1 Richard Brown (RETIRED) gentoo-dev 2007-12-15 17:37:21 UTC
I've added this to cvs masked, I've had to make quite a few changes because the setup.rb changed. ruby@ it would be great if some of you could test this before I unmask it.
Comment 2 Hans de Graaff gentoo-dev Security 2007-12-17 19:45:06 UTC
I've just installed it. 

The warning about ruby18_with_gems can probably be dropped by now, this refers to stuff that has left the tree for quite some time.

One problem so far:

$ gem outdated
Updating metadata for 5 gems from http://gems.rubyforge.org
.....
complete
ERROR:  While executing gem ... (NoMethodError)
    undefined method `<=>' for nil:NilClass
Comment 3 Hans de Graaff gentoo-dev Security 2007-12-18 07:20:51 UTC
As already mentioned on IRC my problem with gem is most likely caused by me aborting the gem cache using Ctrl-C. After refreshing the cache things work as expected.
Comment 4 Hans de Graaff gentoo-dev Security 2007-12-19 07:30:50 UTC
Interesing gotcha with rubygems 0.9.5: Gem.cache.search('rails', '~>1.2.0') now returns to results for me instead of just the installed rails 1.2.6 version, because suddenly 'rails' also matches 'rails_analyzer' which I've got installed (and which has version 1.4.0...). Using a regexp fixes this, e.g. Gem.cache.search(/^rails$/, '~>1.2.0').
Comment 5 Hans de Graaff gentoo-dev Security 2007-12-19 07:33:37 UTC
So I've just downgraded to rubygems-0.9.4-r2 because rubygems 0.9.5 suddenly could no longer find YAML in my rails project and I actually need to do work on this machine today. My verdict: by no means ready to be unmasked, sadly.
Comment 6 Richard Brown (RETIRED) gentoo-dev 2007-12-21 09:43:35 UTC
Ok, 1.0.1 is now in the tree to test, I've left it package masked for now.
Comment 7 Hans de Graaff gentoo-dev Security 2007-12-21 15:46:18 UTC
Same problem with YAML with 1.0.1. I'm using YAML in a rake task in a rails project. I can fix that with a "require 'yaml'" in the task file, but this is still a regression from 0.9.4.

After fixing this, when running 'rake' in a rails project I'm getting the wonderful:

/home/graaff/projects/wvwo/git/test/mocks/test/time.rb:5: undefined method `cattr_accessor' for Time:Class (NoMethodError)
        from /home/graaff/projects/wvwo/git/test/mocks/test/time.rb:3:in `class_eval'
        from /home/graaff/projects/wvwo/git/test/mocks/test/time.rb:3
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/core_ext/time.rb:2
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/core_ext.rb:1
         ... 23 levels...
        from /usr/lib64/ruby/gems/1.8/gems/rake-0.7.3/lib/rake/rake_test_loader.rb:5:in `load'
        from /usr/lib64/ruby/gems/1.8/gems/rake-0.7.3/lib/rake/rake_test_loader.rb:5
        from /usr/lib64/ruby/gems/1.8/gems/rake-0.7.3/lib/rake/rake_test_loader.rb:5:in `each'
        from /usr/lib64/ruby/gems/1.8/gems/rake-0.7.3/lib/rake/rake_test_loader.rb:5


My best guess right now is that this has something to do with load order?
Comment 8 Hans de Graaff gentoo-dev Security 2007-12-21 15:50:15 UTC
Just checked some of my other rails projects...

Again running rake to run tests and specs:

/usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:263:in `load_missing_constant': uninitialized constant Spec::VERSION::REV (NameError)
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:452:in `const_missing'
        from /home/graaff/projects/winkwaves/vsnu/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb:13
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
        from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:495:in `require'
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:342:in `new_constants_in'
        from /usr/lib64/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:495:in `require'
        from /home/graaff/projects/winkwaves/vsnu/vendor/plugins/rspec_on_rails/lib/spec/rails.rb:16


A few ruby-only projects with rspec seem to work fine, but they don't have external dependencies either.
Comment 9 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2008-01-21 08:32:10 UTC
Seems it was unmasked already, fails though:

>>> Install rubygems-1.0.1 into /var/tmp/portage/dev-ruby/rubygems-1.0.1/image/ category dev-ruby
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/cache
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/doc
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/specifications
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/cache
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/doc
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/specifications
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems

This seems to help (0.9.4-r2 does it like that) but I'm not sure it's the proper fix.
-       export GEM_HOME="/usr/$(get_libdir)/ruby/gems/${ver}"
+       export GEM_HOME="${D}/usr/$(get_libdir)/ruby/gems/${ver}"
Comment 10 Richard Brown (RETIRED) gentoo-dev 2008-01-21 09:16:58 UTC
(In reply to comment #9)
> ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/gems

> This seems to help (0.9.4-r2 does it like that) but I'm not sure it's the
> proper fix.
> -       export GEM_HOME="/usr/$(get_libdir)/ruby/gems/${ver}"
> +       export GEM_HOME="${D}/usr/$(get_libdir)/ruby/gems/${ver}"
> 

Setting GEM_HOME like that was for installing a gem at the same time, which we no longer have to do.

Could you give me a clue as to which part of src_install is going to wrong place for you, your emerge info if you're still using portage, otherwise the nearest equivalent, and I guess, what version of ruby you're using.

Thanks
Comment 11 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2008-01-21 09:54:22 UTC
(In reply to comment #10)
> Could you give me a clue as to which part of src_install is going to wrong

This one: 
${RUBY} setup.rb $myconf --prefix="${D}" || die "setup.rb install failed"

If you want me to trace what part of setup.rb that is, please hint, I have no ruby knowledge :)

BTW it seems to happen only if those dirs don't exist on the system yet, i.e. no gems installed yet. Upgrades and reinstalls are fine. Either it ignores prefix for some mkdirs, or ruby tries to create those itself?

> place for you, your emerge info if you're still using portage, otherwise the
> nearest equivalent, and I guess, what version of ruby you're using.

"STILL" using portage? pfft
$ emerge --info
Portage 2.1.4 (default-linux/amd64/2007.0/desktop, gcc-4.2.2, glibc-2.7-r1, 2.6.23-gentoo-r5 x86_64)
=================================================================
System uname: 2.6.23-gentoo-r5 x86_64 AMD Athlon(tm) 64 Processor 3000+
Timestamp of tree: Unknown
distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ccache version 2.4 [enabled]
app-shells/bash:     3.2_p33
dev-java/java-config: 1.3.7, 2.1.3
dev-lang/python:     2.5.1-r5
dev-util/ccache:     2.4-r7
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.61-r1
sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.18-r1
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.24
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="amd64 ~amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=athlon64 -msse3 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-O2 -march=athlon64 -msse3 -pipe"
DISTDIR="/data/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps y"
FEATURES="assume-digests ccache collision-protect cvs distlocks parallel-fetch sandbox sfperms strict unmerge-orphans userfetch userpriv usersandbox"
GENTOO_MIRRORS="ftp://ftp.upc.cz/mirrors/gentoo-mirror  http://gentoo.osuosl.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,--as-needed"
LINGUAS="en cs"
MAKEOPTS="-j2"
PKGDIR="/usr/portage-packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/portage/local/layman/mozilla /usr/portage/local/layman/openrc /usr/portage/local/crossdev /proj/gentoo/java/java-overlay /proj/gentoo/java/java-experimental /usr/portage/local/caster"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext 7zip X a52 aac acl acpi alsa amd64 amr apache2 audiofile bash-completion berkdb bitmap-fonts bluetooth branding bsf bzip2 cairo caps cdr cjk cli cracklib crypt cups curl dbus djvu dri dts dvd dvdr dvdread dvi emboss encode evo fam ffmpeg fftw firefox flac fontconfig fortran gdbm ggi gif gmp gpm gstreamer gtk hal iconv icq idn ipv6 isdnlog java java5 javascript jmf jpeg kde kdeenablefinal kdehiddenvisibility kerberos kipi ladspa lcms ldap libnotify libsamplerate lm_sensors lua lzo mad maildir matroska mbox midi mikmod mmx mmxext mozdevelop moznoirc mp3 mpeg mplayer mudflap musicbrainz ncurses nls nptl nptlonly nsplugin ntfs nvidia ogg openal opengl openmp oscar pam pcre pdf perl png pppd python qt3 qt3support qt4 quicktime readline reflection reiserfs rtc ruby sdl seamonkey session slang sockets soundtouch speex spell spl sqlite sse sse2 ssl svg t1lib tcl tcpd tetex threads tiff tk truetype truetype-fonts type1-fonts unicode usb v4l vamp vorbis webdav xcb xcomposite xine xml xorg xosd xulrunner xv xvid zlib" ALSA_CARDS="emu10k1" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en cs" USERLAND="GNU" VIDEO_CARDS="nvidia nv vesa fbdev v4l"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

ruby is 1.8.6_p111-r1
Comment 12 Richard Brown (RETIRED) gentoo-dev 2008-01-21 09:56:44 UTC
(In reply to comment #11)
> 
> If you want me to trace what part of setup.rb that is, please hint, I have no
> ruby knowledge :)
> 
> BTW it seems to happen only if those dirs don't exist on the system yet, i.e.
> no gems installed yet. Upgrades and reinstalls are fine. Either it ignores
> prefix for some mkdirs, or ruby tries to create those itself?

Thanks, that should help me track it down
Comment 13 Richard Brown (RETIRED) gentoo-dev 2008-01-21 11:07:42 UTC
(In reply to comment #10)
> (In reply to comment #9)
> > ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/gems
> 
> > This seems to help (0.9.4-r2 does it like that) but I'm not sure it's the
> > proper fix.
> > -       export GEM_HOME="/usr/$(get_libdir)/ruby/gems/${ver}"
> > +       export GEM_HOME="${D}/usr/$(get_libdir)/ruby/gems/${ver}"
> > 
> 
> Setting GEM_HOME like that was for installing a gem at the same time, which we
> no longer have to do.

Or maybe it wasn't.

setup.rb is requiring the rubygems it's installing, which is making sure all the right GEM_HOME directories exist. I've changed this back in CVS, thanks
Comment 14 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2008-01-21 11:58:35 UTC
Fixed this :)
-       export GEM_HOME="{$D}/usr/$(get_libdir)/ruby/gems/${ver}"
+       export GEM_HOME="${D}/usr/$(get_libdir)/ruby/gems/${ver}"
Comment 15 Richard Brown (RETIRED) gentoo-dev 2008-01-21 12:03:49 UTC
That's my last commit for the day then, since I also didn't commit when I said I did. thanks for fixing it.
Comment 16 Gerrit Visscher 2008-07-06 14:00:25 UTC
The problem still exists with version 1.2.0. I got

ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems/1.8/cache                                         
ACCESS DENIED  mkdir:     /usr/lib64/ruby/gems
...

When I created the directories by hand, the installation worked fine.