3

Context

I've recently taken part of a software development project for which I'd like technical documents to be written using a textual markup (suitable to be tracked in the code repository, alongside the code). Because the project is already using Redmine, I'd like to use Textile thus avoiding other developers to learn Yet Another Markup Language. I know implementations vary somewhat, so in the spirit of POLS, I would like to use RedCloth, which is used internally by Redmine.

We are developping on and deploying to multiple OSes, including Windows. For lots of convenience, as well as non-technical, non-developer users using Windows only I'd like to be able to compile said technical documents using a standalone tool, preferably deployed as a single installer.

I'm 100% new to Ruby, so please be patient. I don't plan on developing in Ruby for this project, I just want a working install on Windows, I'll take care of the rest from there.

Help wanted

I'm not developing a Rails application and this is for desktop installation, so don't tell me to "just use it on Linux". I have installed the DevKit which installs make, g++ etc. and is accepted by ./configure scripts as a "sane development environment".

I have a simple problem and I'm looking for a simple solution. Googling this problem has shown this problem to has been reported before and I've only found recommendations to switch to Linux, and people that tell me it "just works as advertised".

I'd like some actual help, please, even if it's only in the form of a checklist of possible failure points that I can check.

Environment

This problem occurs on Windows 7, 64-bit machines with no prior history of Ruby installation. I don't have access to a 32-bit at the moment.

Linux installs are not a problem.

Problem

I've just downloaded the Ruby Installer for Windows Ruby 1.9.2-p136 , and the Ruby Development Kit DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe, which is required for compiling RedCloth. Both are the current recommended versions for deploying Ruby on Windows at the moment (or so I've read).

I'm following instructions, and so far so good. Both Ruby and the DevKit are installed in the default paths (no spaces in folder names). config.yml correctly points to the new install and nothing else. ruby dk.rb install runs fine. I can now see, in the Ruby installation folder, a file called lib/ruby/site_ruby/devkit.rb that is, I presume, the compilation pre-hook that sets the path to the DevKit when compiling Ruby gems. The code points to the correct folders, as expected.

When I test the installation with the recommended gem install rdiscount --platform=ruby command, I get this:

C:\DevKit>gem install rdiscount --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rdiscount:
        ERROR: Failed to build gem native extension.

"C:/Ruby192/bin/ruby.exe" extconf.rb

This is a little confusing, so I started looking around and I can find the file lib/ruby/gems/1.9.1/gems/rdiscount-1.6.5/ext/extconf.rb file. Running it through ruby extconf.rb in that folder gives me:

Could not create Makefile due to some reason, probably lack of necessary libraries
and/or headers.  Check the mkmf.log file for more details.  You may need
configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=c:/Ruby192/bin/ruby
    --with-rdiscount-dir
    --without-rdiscount-dir
    --with-rdiscount-include
    --without-rdiscount-include=${rdiscount-dir}/include
    --with-rdiscount-lib
    --without-rdiscount-lib=${rdiscount-dir}/lib
c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `flush': Broken pipe (Errno::EPIPE)
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `message'
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:690:in `checking_for'
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:796:in `have_func'
    from extconf.rb:5:in `<main>'

I have read somewhere (can't find a link to it right now) that rdiscount doesn't compile on Windows, so I've proceeded with fetching the source code for RedCloth from the source repository (git clone git://github.com/jgarber/redcloth.git), as instructed.

When I try rake install from the given directory, I get errors for missing gems (diff-lcs and others), so I install them using gem install diff-lcs --version '=...' and then I can start the real installation.

When I get there, rake fails the following message:

(in c:/Users/carona/Desktop/redcloth)
rake aborted!
No such file or directory - gem build c:/Users/carona/Desktop/redcloth/redcloth.gemspec 2>&1
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in ``'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in `block in sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `chdir'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:129:in `sh'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:42:in `build_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:53:in `install_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:31:in `block in install'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `call'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `block in execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:595:in `block in invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:581:in `invoke'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2041:in `invoke_task'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:in `top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:in `run'
c:/Ruby192/bin/rake:31:in `<main>'

However, the file c:/Users/carona/Desktop/redcloth/redcloth.gemspec actually does exist, so I have no idea how to go about this.

Community
  • 1
  • 1
André Caron
  • 44,541
  • 12
  • 67
  • 125
  • As an extra note, all the 32-bit executables supplied with the DevKit freeze when I launch them (`make`, `ls`, etc.). The equivalent tools from MSYS' install work fine. – André Caron Jan 19 '11 at 20:36
  • Could you please show mkmf.log? Also, I have RedCloth (and rdiscount) successfully installed on my Windows 7 machine with ruby 1.9.2p0 (2010-08-18) [i386-mingw32] and DevKit. – DNNX Jan 20 '11 at 06:50
  • Thanks for the hint, I used this to find `/C/...` paths to files, which correctly pointed me to switching from `bash` to `cmd.exe` while installing gems! – André Caron Jan 20 '11 at 14:53

1 Answers1

1

I've tracked the problem down to two things, the 2nd of which is my "mistake".

  1. The MinGW tools distributed with the DevKit 4.5.1 don't work on Windows 7 64-bit. They seem to have an old version of MinGW which exhibited this problem. Installing up-to-date MinGW tools and using those allowed to compile.
  2. I initially used Git Bash to run gem install RedCloth and this caused some paths to be translated to /C/... instead of C:/ inside the Makefile. Obviously, g++ and friends could not open any of the given files. Re-installing by running ruby and gem from cmd.exe has fixed all the problems.

I now have a happy install. I've also reported the 1st issue to the RubyInstaller team.

André Caron
  • 44,541
  • 12
  • 67
  • 125
  • Hello, except for Git bash assumption, the others are wrong. MinGW does work on Windows 7 x64 as that Windows was used to generate the installers you used in the first place :-) Paths /c/ has nothing to do with the issue. Can you bring this topic to RubyInstaller group instead? I would like to see the full backtrace of the issue – Luis Lavena Jan 25 '11 at 22:07
  • After discussion on the RubyInstaller mailing list, and my tests, everything works out of the box, but only when using `cmd.exe`. Git bash modifies some environment variables to `/c/...` syntax and the `Makefile` generated by native Ruby extensions included such modified paths. Using `cmd.exe` solves the problem. – André Caron Feb 27 '11 at 17:24