From: "usa (Usaku NAKAMURA)" Date: 2012-09-18T15:32:58+09:00 Subject: [ruby-core:47569] [ruby-trunk - Bug #7036][Assigned] Compiling extensions with Ruby in a path with spaces Issue #7036 has been updated by usa (Usaku NAKAMURA). Status changed from Open to Assigned Assignee changed from usa (Usaku NAKAMURA) to nobu (Nobuyoshi Nakada) Building something with the path containing spaces is not recommended, IMO. (see the end of win32/README.win32) Of course, we should treat it if it's possible in low cost. I'll consider it. ---------------------------------------- Bug #7036: Compiling extensions with Ruby in a path with spaces https://bugs.ruby-lang.org/issues/7036#change-29481 Author: luislavena (Luis Lavena) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: misc Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-09-16 trunk 36983) [i386-mingw32] =begin Hello, This has been reported several times to RubyInstaller: inability to install gems when Ruby has been installed in a path with spaces (e.g. (({C:\Program Files}))) Since this is presented to the user as (({gem install})) error, a deeper investigation revealed: Generated Makefile contains a reference to (({RUBY})) that is not quoted, resulting in errors like this: V:\User Name\ruby-2.0.0dev-i386-mingw32\lib\ruby\gems\2.0.0\gems\json-1.7.5\ext\json\ext\generator>make generating generator-i386-mingw32.def /bin/sh: V:/User: No such file or directory make: *** [generator-i386-mingw32.def] Error 127 This can be easily solved by doing: ruby = #{$ruby.quote} The second issue is more complicated, as is caused by (({$LIBPATH})) and (({libdir})): linking shared-object json/ext/generator.so gcc.exe: error: Name/ruby-2.0.0dev-i386-mingw32/lib: No such file or directory make: *** [generator.so] Error 1 While (({LIBPATH})) is being built using (({libpathflag})) method, this method fails to detect path with spaces since it uses (({LIBPATHFLAG})) from rbconfig Since mkmf finds the above mentioned key in (({RbConfig::CONFIG})), it never attempts to use -L"%s" alternative: LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"' Now, (({libpathflag})) do not detect a path with spaces because the array of options given are (({[".", "$(libdir)"]})). In the case of Windows, LIBPATHFLAG shouldn't be hardcoded, or at least should always quote strings, considering Ruby can be relocated. Nobu, Usa, Hiroshi, what are your thoughts about this? I'm looking for some feedback before I start some modifications. Thank you in advance for your time. =end -- http://bugs.ruby-lang.org/