jordansissel / fpm

Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
http://fpm.readthedocs.io/en/latest/
Other
11.15k stars 1.07k forks source link

gem install fpm and make from source fails on Centos 7 #745

Closed TJuberg closed 1 year ago

TJuberg commented 10 years ago

Trying to install on Centos 7 64bit and running into problems with the native exception, and there is no specific error message, just warnings.

Relevant system information: Linux trws-013 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

CentOS Linux release 7.0.1406 (Core)

ruby-devel.x86_64 2.0.0.353-20.el7 gcc.x86_64 4.8.2-16.el7

Building native extensions.  This could take a while...
ERROR:  Error installing fpm:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb
checking for ffi_call() in -lffi... yes
checking for ffi_prep_closure()... yes
checking for ffi_raw_call()... yes
checking for ffi_prep_raw_closure()... yes
checking for rb_thread_blocking_region()... yes
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
checking for ffi_prep_cif_var()... yes
creating extconf.h
creating Makefile

make "DESTDIR="
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o AbstractMemory.o -c AbstractMemory.c
AbstractMemory.c:82:1: warning: ‘memory_put_longdouble’ defined but not used [-Wunused-function]
 memory_put_##name(VALUE self, VALUE offset, VALUE value) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:91:1: warning: ‘memory_write_longdouble’ defined but not used [-Wunused-function]
 memory_write_##name(VALUE self, VALUE value) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:110:1: warning: ‘memory_get_longdouble’ defined but not used [-Wunused-function]
 memory_get_##name(VALUE self, VALUE offset) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:118:1: warning: ‘memory_read_longdouble’ defined but not used [-Wunused-function]
 memory_read_##name(VALUE self) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:144:1: warning: ‘memory_write_array_of_longdouble’ defined but not used [-Wunused-function]
 memory_write_array_of_##name(VALUE self, VALUE ary) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:168:1: warning: ‘memory_read_array_of_longdouble’ defined but not used [-Wunused-function]
 memory_read_array_of_##name(VALUE self, VALUE length) \
 ^
AbstractMemory.c:255:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP);
 ^
AbstractMemory.c:82:1: warning: ‘memory_put_bool’ defined but not used [-Wunused-function]
 memory_put_##name(VALUE self, VALUE offset, VALUE value) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:91:1: warning: ‘memory_write_bool’ defined but not used [-Wunused-function]
 memory_write_##name(VALUE self, VALUE value) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:110:1: warning: ‘memory_get_bool’ defined but not used [-Wunused-function]
 memory_get_##name(VALUE self, VALUE offset) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:118:1: warning: ‘memory_read_bool’ defined but not used [-Wunused-function]
 memory_read_##name(VALUE self) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:144:1: warning: ‘memory_write_array_of_bool’ defined but not used [-Wunused-function]
 memory_write_array_of_##name(VALUE self, VALUE ary) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:168:1: warning: ‘memory_read_array_of_bool’ defined but not used [-Wunused-function]
 memory_read_array_of_##name(VALUE self, VALUE length) \
 ^
AbstractMemory.c:291:1: note: in expansion of macro ‘NUM_OP’
 NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP);
 ^
AbstractMemory.c:407:1: warning: ‘memory_read_array_of_string’ defined but not used [-Wunused-function]
 memory_read_array_of_string(int argc, VALUE* argv, VALUE self)
 ^
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o ArrayType.o -c ArrayType.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Buffer.o -c Buffer.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Call.o -c Call.c
Call.c: In function ‘do_blocking_call’:
Call.c:303:5: warning: implicit declaration of function ‘rb_thread_call_without_gvl’ [-Wimplicit-function-declaration]
     rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL);
     ^
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o ClosurePool.o -c ClosurePool.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o DataConverter.o -c DataConverter.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o DynamicLibrary.o -c DynamicLibrary.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o ffi.o -c ffi.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Function.o -c Function.c
Function.c: In function ‘callback_invoke’:
Function.c:479:9: warning: passing argument 1 of ‘rb_thread_call_with_gvl’ from incompatible pointer type [enabled by default]
         rb_thread_call_with_gvl(callback_with_gvl, &cb);
         ^
Function.c:102:14: note: expected ‘void * (*)(void *)’ but argument is of type ‘VALUE (*)(void *)’
 extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
              ^
Function.c:483:14: warning: variable ‘empty’ set but not used [-Wunused-but-set-variable]
         bool empty = false;
              ^
Function.c: In function ‘async_cb_event’:
Function.c:563:9: warning: implicit declaration of function ‘rb_thread_call_without_gvl’ [-Wimplicit-function-declaration]
         rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w);
         ^
Function.c: In function ‘callback_with_gvl’:
Function.c:738:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o FunctionInfo.o -c FunctionInfo.c
FunctionInfo.c: In function ‘fntype_initialize’:
FunctionInfo.c:121:27: warning: variable ‘rbConvention’ set but not used [-Wunused-but-set-variable]
     VALUE rbEnums = Qnil, rbConvention = Qnil, rbBlocking = Qnil;
                           ^
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o LastError.o -c LastError.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o LongDouble.o -c LongDouble.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o MappedType.o -c MappedType.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o MemoryPointer.o -c MemoryPointer.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o MethodHandle.o -c MethodHandle.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Platform.o -c Platform.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Pointer.o -c Pointer.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Struct.o -c Struct.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o StructByReference.o -c StructByReference.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o StructByValue.o -c StructByValue.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o StructLayout.o -c StructLayout.c
StructLayout.c: In function ‘struct_field_initialize’:
StructLayout.c:102:9: warning: variable ‘nargs’ set but not used [-Wunused-but-set-variable]
     int nargs;
         ^
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Thread.o -c Thread.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Type.o -c Type.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Types.o -c Types.c
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC  -m64 -o Variadic.o -c Variadic.c
Variadic.c: In function ‘variadic_initialize’:
Variadic.c:104:11: warning: variable ‘convention’ set but not used [-Wunused-but-set-variable]
     VALUE convention = Qnil;
           ^
rm -f ffi_c.so
gcc -shared -o ffi_c.so AbstractMemory.o ArrayType.o Buffer.o Call.o ClosurePool.o DataConverter.o DynamicLibrary.o ffi.o Function.o FunctionInfo.o LastError.o LongDouble.o MappedType.o MemoryPointer.o MethodHandle.o Platform.o Pointer.o Struct.o StructByReference.o StructByValue.o StructLayout.o Thread.o Type.o Types.o Variadic.o -L. -L/usr/lib64 -L. -Wl,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic   -m64  -lruby -lffi  -lffi -lpthread -lrt -ldl -lcrypt -lm   -lc

make "DESTDIR=" install
/usr/bin/mkdir -p ./.gem.20140801-29601-39kn6e
exit > .RUBYARCHDIR.time
/usr/bin/install -c -m 0755 ffi_c.so ./.gem.20140801-29601-39kn6e

Gem files will remain installed in /usr/local/share/gems/gems/ffi-1.9.3 for inspection.
Results logged to /usr/local/share/gems/gems/ffi-1.9.3/ext/ffi_c/gem_make.out

Trying instead to build from source on the same machine results in errors:

Fetching gem metadata from https://rubygems.org/..........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using cabin 0.6.1
Using arr-pm 0.0.9
Installing atomic 1.1.16
Installing avl_tree 1.1.3
Using backports 3.6.0
Installing ffi 1.9.3
Installing childprocess 0.5.3
Using clamp 0.6.3
Installing coderay 1.1.0
Installing diff-lcs 1.2.5
Installing json 1.8.1
Using fpm 1.2.0 from source at .
Installing hitimes 1.2.2
Installing insist 0.0.8
Installing method_source 0.8.2
Installing metriks 0.9.9.6
Installing slop 3.6.0
Installing pry 0.10.0
Installing rspec-support 3.0.3
Installing rspec-core 3.0.3
Installing rspec-expectations 3.0.3
Installing rspec-mocks 3.0.3
Installing rspec 3.0.0
Installing stud 0.0.17
Using bundler 1.6.5
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
rm -rf .yardoc
sh notify-failure.sh rspec
.............FF..........................................................................................................................

Failures:

  1) FPM::Package::Deb#output when the deb's control section is extracted should have the requested meta file in the control archive
     Failure/Error: raise "couldn't extract test deb"
     RuntimeError:
       couldn't extract test deb
     # ./spec/fpm/package/deb_spec.rb:177:in `block (4 levels) in <top (required)>'

  2) FPM::Package::Deb#output when the deb's control section is extracted should have the requested triggers in the triggers file
     Failure/Error: raise "couldn't extract test deb"
     RuntimeError:
       couldn't extract test deb
     # ./spec/fpm/package/deb_spec.rb:177:in `block (4 levels) in <top (required)>'

Finished in 18.2 seconds (files took 1.11 seconds to load)
137 examples, 2 failures

Failed examples:

rspec ./spec/fpm/package/deb_spec.rb:180 # FPM::Package::Deb#output when the deb's control section is extracted should have the requested meta file in the control archive
rspec ./spec/fpm/package/deb_spec.rb:186 # FPM::Package::Deb#output when the deb's control section is extracted should have the requested triggers in the triggers file
make: *** [test] Error 1

Let me know if you need more information or need me to test something.

alde commented 10 years ago

I had the same issue when building from source, but it worked after installing the 'alien' package (yum install alien) on fedora 19.

TJuberg commented 10 years ago

alien unfortunately is not currently available for Centos7/RHEL7 either in base or in EPEL7_Beta. And for some reason the source packages for the latest builds for f19 are not up on fedoras package database either.

In any case, it would be nice to have this issue resolved within the confines of Centos7 without having to jump trough hoops, even if I'm perfectly capable of doing that myself.

[edit] Found some time to look closer at this. The appropriate package missing is dpkg, which is not available on centos7 at present. Building it from fedora19 src rpm however works just fine, and allows you to pass the two failing tests and lets you build and install fpm from source sucessfully.

hatt commented 10 years ago

Alien is a fairly standard package that is usually in EPEL, so I don't think FPM needs to do anything fancy like optional dependencies. Maybe just wait for the repo teams to update, or as you said backport it from FC.

thatsk commented 6 years ago

[root@2699803668bd build]# rpm -qa | grep alien alien-8.95-3.el7.noarch [root@2699803668bd build]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)

[root@2699803668bd build]# gem install --no-ri --no-rdoc fpm Building native extensions. This could take a while... ERROR: Error installing fpm: ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb

checking for ffi.h... extconf.rb failed 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}/lib64 --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby --with-ffi_c-dir --without-ffi_c-dir --with-ffi_c-include --without-ffi_c-include=${ffi_c-dir}/include --with-ffi_c-lib --without-ffi_c-lib=${ffi_c-dir}/ --with-libffi-config --without-libffi-config --with-pkg-config --without-pkg-config /usr/share/ruby/mkmf.rb:434:in try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/share/ruby/mkmf.rb:565:intry_cpp' from /usr/share/ruby/mkmf.rb:1038:in block in have_header' from /usr/share/ruby/mkmf.rb:889:inblock in checking_for' from /usr/share/ruby/mkmf.rb:340:in block (2 levels) in postpone' from /usr/share/ruby/mkmf.rb:310:inopen' from /usr/share/ruby/mkmf.rb:340:in block in postpone' from /usr/share/ruby/mkmf.rb:310:inopen' from /usr/share/ruby/mkmf.rb:336:in postpone' from /usr/share/ruby/mkmf.rb:888:inchecking_for' from /usr/share/ruby/mkmf.rb:1037:in have_header' from extconf.rb:16:in

'

Gem files will remain installed in /usr/local/share/gems/gems/ffi-1.9.23 for inspection. Results logged to /usr/local/share/gems/gems/ffi-1.9.23/ext/ffi_c/gem_make.out

hatt commented 6 years ago

@thatsk you're having a slightly different issue to the OP, you don't seem to have a compiler installed. yum groupinstall "Development tools" should be enough, you may need the Development Libraries group as well. Sorry for the late reply.

mathieu-aubin commented 6 years ago

Development Libraries - Does such a group even exist?

hatt commented 6 years ago

If it's not called Development Libraries, then it's Development libs. Been a while since I had to use it. Tools is generally stuff like gcc while libs had more of the devel packages for headers and whatnot. Tools should be enough though.

jordansissel commented 1 year ago

I think this was fixed by #1796 which removed the dependency (ffi) which was giving folks problems. Versions of fpm 1.13.0 or newer should work. Let me know if you find otherwise :)