I just ran into this today, so yes please.

On 2014 Oct 12 (Sun) at 21:27:17 -0700 (-0700), Jeremy Evans wrote:
:Installation of gems containing C extensions via gem install has been
:broken since the change the run the fake step without root.  This is
:because ruby hard codes the path to the install program used, and it
:hard codes a path that doesn't exist unless you have a ports checkout.
:
:Ruby hard codes a value for an install program because this is part of
:the ruby API.  In ruby, RbConfig::CONFIG['INSTALL'] and similar should
:point to a valid command line for installing a file.  This is used
:by extconf.rb/mkmf to build C extensions.
:
:This patch restores the previous default value for
:RbConfig::CONFIG['INSTALL'] (which calls /usr/bin/install).  However,
:if the BSD_INSTALL_* environment variables are set, it uses those in
:preference to the default.  This way the ports system still works and
:can still run fake without root, but installing gems with C extensions
:via gem install also works.
:
:This change also makes FAKE_AS_ROOT = always-wrap unnecessary, so that
:can be removed.
:
:Tested with a bulk build of the ruby ports on amd64.  Will be committing
:in a few days unless I hear objections.
:
:Thanks,
:Jeremy
:
:Index: Makefile.inc
:===================================================================
:RCS file: /cvs/ports/lang/ruby/Makefile.inc,v
:retrieving revision 1.10
:diff -u -p -r1.10 Makefile.inc
:--- Makefile.inc       16 Sep 2014 09:09:46 -0000      1.10
:+++ Makefile.inc       12 Oct 2014 18:09:22 -0000
:@@ -26,4 +26,9 @@ CONFIGURE_ENV +=     PREFIX="${PREFIX}" \
: REV ?=                        ${VERSION:R}
: SUB ?=                        ${MACHINE_ARCH:S/amd64/x86_64/}-openbsd
: SUBST_VARS +=         SUB REV
:-FAKE_AS_ROOT = always-wrap
:+FILESDIR ?=           ${.CURDIR}/../files
:+
:+post-install:
:+      sed 's/INSTALL_ARGS/-c -o ${BINOWN} -g ${BINGRP}/' < \
:+              ${FILESDIR}/rbconfig_fix.rb >> \
:+              ${PREFIX}/lib/ruby/${RUBYLIBREV}/${SUB}/rbconfig.rb
:Index: ruby.port.mk
:===================================================================
:RCS file: /cvs/ports/lang/ruby/ruby.port.mk,v
:retrieving revision 1.76
:diff -u -p -r1.76 ruby.port.mk
:--- ruby.port.mk       11 Oct 2014 19:52:10 -0000      1.76
:+++ ruby.port.mk       13 Oct 2014 00:34:18 -0000
:@@ -293,7 +293,7 @@ LIB_DEPENDS+=      ${MODRUBY_LIB_DEPENDS}
: 
: .if ${CONFIGURE_STYLE:L:Mextconf}
: CONFIGURE_STYLE=      simple
:-CONFIGURE_SCRIPT=     ${RUBY} extconf.rb
:+CONFIGURE_SCRIPT=     ${SETENV} ${MAKE_ENV} ${RUBY} extconf.rb
: .elif ${CONFIGURE_STYLE:L:Mgem}
: # All gems should be in the same directory on rubygems.org.
: MASTER_SITES?=        ${MASTER_SITE_RUBYGEMS}
:Index: 1.8/Makefile
:===================================================================
:RCS file: /cvs/ports/lang/ruby/1.8/Makefile,v
:retrieving revision 1.30
:diff -u -p -r1.30 Makefile
:--- 1.8/Makefile       25 Nov 2013 14:16:23 -0000      1.30
:+++ 1.8/Makefile       12 Oct 2014 18:14:28 -0000
:@@ -8,6 +8,7 @@ COMMENT-ri_docs=       ri documentation files 
: 
: VERSION=              1.8.7
: PATCHLEVEL=           374
:+RUBYLIBREV=           1.8
: 
: SHARED_LIBS=          ruby18 0.0
: PKGNAME-main=         ruby-${VERSION}.${PATCHLEVEL}
:@@ -19,7 +20,7 @@ PKGNAME-ri_docs=     ruby-ri_docs-${VERSION}
: PKG_ARCH-ri_docs=     *
: PKGSPEC-main=         ruby->=1.8,<1.9
: 
:-REVISION-main=                0
:+REVISION-main=                1
: 
: CONFIGURE_ARGS=               --program-suffix=18 \
:                       --enable-ipv6 \
:Index: 1.9/Makefile
:===================================================================
:RCS file: /cvs/ports/lang/ruby/1.9/Makefile,v
:retrieving revision 1.45
:diff -u -p -r1.45 Makefile
:--- 1.9/Makefile       25 Jun 2014 15:38:39 -0000      1.45
:+++ 1.9/Makefile       12 Oct 2014 18:14:37 -0000
:@@ -18,7 +18,7 @@ PKGNAME-gdbm =               ruby-gdbm-${VERSION}.${P
: PKGNAME-dbm =         ruby-dbm-${VERSION}.${PATCHLEVEL}
: PKGNAME-tk =          ruby-tk-${VERSION}.${PATCHLEVEL}
: PKGNAME-ri_docs =     ruby-ri_docs-${VERSION}.${PATCHLEVEL}
:-REVISION-main =               0
:+REVISION-main =               1
: 
: PKG_ARCH-ri_docs =    *
: WANTLIB-ri_docs =     # empty
:Index: 2.0/Makefile
:===================================================================
:RCS file: /cvs/ports/lang/ruby/2.0/Makefile,v
:retrieving revision 1.14
:diff -u -p -r1.14 Makefile
:--- 2.0/Makefile       22 Sep 2014 15:14:48 -0000      1.14
:+++ 2.0/Makefile       13 Oct 2014 03:12:11 -0000
:@@ -15,6 +15,7 @@ PKGNAME-main =               ruby-${VERSION}.${PATCHL
: PKGNAME-gdbm =                ruby20-gdbm-${VERSION}.${PATCHLEVEL}
: PKGNAME-tk =          ruby20-tk-${VERSION}.${PATCHLEVEL}
: PKGNAME-ri_docs =     ruby20-ri_docs-${VERSION}.${PATCHLEVEL}
:+REVISION-main =               0
: 
: PKG_ARCH-ri_docs =    *
: WANTLIB-ri_docs =     # empty
:@@ -87,8 +88,6 @@ TEST_DEPENDS =               ${FULLPKGNAME-main}:${BU
: 
: pre-install:
:       find ${WRKSRC} -name '*.orig' -print0 | xargs -0 rm
:-
:-post-install:
:       ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/ruby
: 
: do-test:
:Index: 2.1/Makefile
:===================================================================
:RCS file: /cvs/ports/lang/ruby/2.1/Makefile,v
:retrieving revision 1.8
:diff -u -p -r1.8 Makefile
:--- 2.1/Makefile       22 Sep 2014 15:15:41 -0000      1.8
:+++ 2.1/Makefile       12 Oct 2014 20:49:37 -0000
:@@ -18,6 +18,7 @@ PKGNAME-main =               ruby-${VERSION}
: PKGNAME-gdbm =                ruby21-gdbm-${VERSION}
: PKGNAME-tk =          ruby21-tk-${VERSION}
: PKGNAME-ri_docs =     ruby21-ri_docs-${VERSION}
:+REVISION-main =               0
: 
: PKG_ARCH-ri_docs =    *
: WANTLIB-ri_docs =     # empty
:@@ -92,8 +93,6 @@ TEST_DEPENDS =               ${FULLPKGNAME-main}:${BU
: 
: pre-install:
:       find ${WRKSRC} -name '*.orig' -print0 | xargs -0 rm
:-
:-post-install:
:       ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/ruby
: 
: do-test:
:Index: files/rbconfig_fix.rb
:===================================================================
:RCS file: files/rbconfig_fix.rb
:diff -N files/rbconfig_fix.rb
:--- /dev/null  1 Jan 1970 00:00:00 -0000
:+++ files/rbconfig_fix.rb      12 Oct 2014 18:09:12 -0000
:@@ -0,0 +1,20 @@
:+install = '/usr/bin/install INSTALL_ARGS'  
:+c = RbConfig::CONFIG 
:+m = RbConfig::MAKEFILE_CONFIG
:+if v = ENV['BSD_INSTALL_SCRIPT']
:+  m['INSTALL'] = c['INSTALL'] = v.sub('-m 755', '')
:+  m['INSTALL_SCRIPT'] = c['INSTALL_SCRIPT'] = v
:+else
:+  m['INSTALL'] = c['INSTALL'] = "#{install}"
:+  m['INSTALL_SCRIPT'] = c['INSTALL_SCRIPT'] = "#{install} -m 755"
:+end
:+if v = ENV['BSD_INSTALL_PROGRAM']
:+  m['INSTALL_PROGRAM'] = c['INSTALL_PROGRAM'] = v
:+else
:+  m['INSTALL_PROGRAM'] = c['INSTALL_PROGRAM'] = "#{install} -s -m 755"
:+end
:+if v = ENV['BSD_INSTALL_DATA']
:+  m['INSTALL_DATA'] = c['INSTALL_DATA'] = v
:+else
:+  m['INSTALL_DATA'] = c['INSTALL_DATA'] = "#{install} -m 644"
:+end
:

-- 
As the trials of life continue to take their toll, remember that there
is always a future in Computer Maintenance.
                -- National Lampoon, "Deteriorata"

Reply via email to