Issue #9213 has been updated by Nobuyoshi Nakada.

Status changed from Closed to Assigned
Assignee set to Nobuyoshi Nakada
Target version changed from 2.1.0 to current: 2.2.0

memo: 2.0.0 has not backported r41648 and r41756.


----------------------------------------
Bug #9213: mkmf.rb emits invalid destination directory name for mswin32/64
https://bugs.ruby-lang.org/issues/9213#change-45518

* Author: Akio Tajima
* Status: Assigned
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* Category: lib
* Target version: current: 2.2.0
* ruby -v: ruby 2.0.0p353 (2013-11-22) [i386-mswin32_100]
* Backport: 1.9.3: UNKNOWN, 2.0.0: DONE
----------------------------------------
The install process of traditional extended library (=non gem) uses extconf.rb for creating Makefile and install the library by (n)make install.
However it does not work correctly because of FileUtil.mkdir met bad directory name as 'c:c:/...'.

This is caused by DESTDIR and prefix combination. 
When one does not specify DESTDIR, rbconfig.rb create it as 'DESTDIR = TOPDIR && TOPDIR[/\A[a-z]:/i] || '' unless defined? DESTDIR' #=> 'C:' or 'D:'.
By the other hand CONFIG['prefix'] is (TOPDIR || DESTDIR + '/usr') so the prefixdir also contains 'c:' or 'd:' ...

The definition for install directories in mkmf.rb is defined as both DESTDIR and CONFIG['prefix'] directory for example '$(DESTDIR)$(vendorarchdir)$(target_prefix)'.
It causes the double drive letter name 'c:c:...'.

While there are some workarounds as using setup.rb or gem, it's harmful for the testing phase of extended libraries.




-- 
http://bugs.ruby-lang.org/