1

I am running following command to install mongrel (downgraded ruby to 1.8.7p302 for an app and when tried to do bundle create --local, it asks to install mysql which then asked for mongrel)

gem install win32-open3 -v '0.3.2'

(master) $ gem install mongrel -v '1.1.5'
Building native extensions.  This could take a while...
ERROR:  Error installing mongrel:
        ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.1.5/bin/ruby -r ./siteconf20150509-1034-1akenv5.rb extconf.rb
checking for main() in -lc... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling http11.c
http11.c: In function ‘http_field’:
http11.c:70:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(flen, FIELD_NAME);
   ^
http11.c:71:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(vlen, FIELD_VALUE);
   ^
http11.c:77:22: error: ‘struct RString’ has no member named ‘ptr’
   for(ch = RSTRING(f)->ptr, end = ch + RSTRING(f)->len; ch < end; ch++) {
                      ^
http11.c:77:50: error: ‘struct RString’ has no member named ‘len’
   for(ch = RSTRING(f)->ptr, end = ch + RSTRING(f)->len; ch < end; ch++) {
                                                  ^
http11.c:77:27: warning: left-hand operand of comma expression has no effect [-Wunused-value]
   for(ch = RSTRING(f)->ptr, end = ch + RSTRING(f)->len; ch < end; ch++) {
                           ^
http11.c: In function ‘request_uri’:
http11.c:102:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(length, REQUEST_URI);
   ^
http11.c: In function ‘fragment’:
http11.c:113:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(length, FRAGMENT);
   ^
http11.c: In function ‘request_path’:
http11.c:124:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(length, REQUEST_PATH);
   ^
http11.c: In function ‘query_string’:
http11.c:135:3: warning: format not a string literal and no format arguments [-Wformat-security]
   VALIDATE_MAX_LENGTH(length, QUERY_STRING);
   ^
In file included from /usr/include/string.h:635:0,
                 from /usr/local/rvm/rubies/ruby-2.1.5/include/ruby-2.1.0/ruby/defines.h:45,
                 from /usr/local/rvm/rubies/ruby-2.1.5/include/ruby-2.1.0/ruby/ruby.h:29,
                 from /usr/local/rvm/rubies/ruby-2.1.5/include/ruby-2.1.0/ruby.h:33,
                 from http11.c:5:
http11.c: In function ‘header_done’:
http11.c:172:33: error: ‘struct RString’ has no member named ‘ptr’
     colon = strchr(RSTRING(temp)->ptr, ':');
                                 ^
http11.c:172:33: error: ‘struct RString’ has no member named ‘ptr’
     colon = strchr(RSTRING(temp)->ptr, ':');
                                 ^
http11.c:172:33: error: ‘struct RString’ has no member named ‘ptr’
     colon = strchr(RSTRING(temp)->ptr, ':');
                                 ^
http11.c:174:89: error: ‘struct RString’ has no member named ‘ptr’
       rb_hash_aset(req, global_server_name, rb_str_substr(temp, 0, colon - RSTRING(temp)->ptr));
                                                                                         ^
http11.c:176:52: error: ‘struct RString’ has no member named ‘ptr’
           rb_str_substr(temp, colon - RSTRING(temp)->ptr+1, 
                                                    ^
http11.c:177:26: error: ‘struct RString’ has no member named ‘len’
             RSTRING(temp)->len));
                          ^
http11.c: In function ‘HttpParser_execute’:
http11.c:298:23: error: ‘struct RString’ has no member named ‘ptr’
   dptr = RSTRING(data)->ptr;
                       ^
http11.c:299:23: error: ‘struct RString’ has no member named ‘len’
   dlen = RSTRING(data)->len;
                       ^
http11.c:307:5: warning: format not a string literal and no format arguments [-Wformat-security]
     VALIDATE_MAX_LENGTH(http_parser_nread(http), HEADER);
     ^
make: *** [http11.o] Error 1

make failed, exit code 2

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/mongrel-1.1.5 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.1.5@rails4/extensions/x86_64-linux/2.1.0/mongrel-1.1.5/gem_make.out
Em Ae
  • 8,167
  • 27
  • 95
  • 162
  • Since you want to install MySQL, have you looked at: http://stackoverflow.com/questions/4613116/difficulties-installing-mysql-gem-on-ubuntu ? I don't see why MySQL would want to install mongrel – Mutahhir May 11 '15 at 09:07

1 Answers1

0

Go cd to /usr/local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/ext/http11

and Use sudo nano or vi on http11.c and:

replace line 77 with

for(ch = RSTRING_PTR(f), end = ch + RSTRING_LEN(f); ch < end; ch++) { And then replace line 172 with colon = strchr(RSTRING_PTR(temp), ':');

replace line 174 with

rb_hash_aset(req, global_server_name, rb_str_substr(temp, 0, colon - RSTRING_PTR(temp)));

replce line 176,177

rb_str_substr(temp, colon - RSTRING_PTR(temp)+1, RSTRING_LEN(temp)));

replace lines 298 299

dptr = RSTRING_PTR(data); dlen = RSTRING_LEN(data);

save the file,

sudo ruby extconf.rb && sudo make && sudo make install

Go cd ../../lib/mongrel (or the full path “/usr/local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/lib/mongrel”

sudo nano handlers.rb

To fix the case statements in

On lines 208-212, change instances of “: false” to “then false”

Then sudo gem install mongrel if that build fails simply

go with the second option like this

You Can Force To Install mongrel like this

sudo gem install mongrel -v 1.2.0.pre2 -- --with-cflags=\"-O2 -pipe -march=native -w\"

This Works For Me hope t will work for you too.

Mark Francis
  • 340
  • 4
  • 10