Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fail to Install Rmagick on Mac 10.9.5

I tried to upgrade rails from 4.1.1 to 4.2.0, and then I got an error to install Rmagick. Before upgrade rails, Rmagick worked fine on rails4.1.1. I tried it after reinstalling ImageMagick, but still got an error.

This is what i got

     sudo gem install rmagick -v 2.13.4
    Building native extensions.  This could take a while...
    ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.

        /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
    checking for Ruby version >= 1.8.5... yes
    checking for xcrun... yes
    checking for Magick-config... yes
    checking for ImageMagick version >= 6.4.9... yes
    checking for stdint.h... yes
    checking for sys/types.h... yes
    checking for wand/MagickWand.h... yes
    checking for snprintf() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for AcquireImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for AffinityImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for AffinityImages() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for AutoGammaImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for AutoLevelImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for BlueShiftImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for ColorMatrixImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for ConstituteComponentTerminus() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for DeskewImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for DestroyConstitute() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for EncipherImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for EqualizeImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for EvaluateImages() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for FloodfillPaintImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for FunctionImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for GetAuthenticIndexQueue() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for GetAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for GetImageAlphaChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for GetMagickFeatures() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for GetVirtualPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for LevelImageColors() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for LevelColorsImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for LevelizeImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for LiquidRescaleImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for MagickLibAddendum() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for OpaquePaintImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for QueueAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for RemapImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for RemapImages() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for RemoveImageArtifact() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for RotationalBlurImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for RotationalBlurImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SelectiveBlurImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SetImageAlphaChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SetImageArtifact() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SetMagickMemoryMethods() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SparseColorImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for StatisticImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for SyncAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for TransformImageColorspace() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for TransparentPaintImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for TransparentPaintImageChroma() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
    checking for QueryMagickColorname() new signature... yes
    checking for Image.type in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for DrawInfo.kerning in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for DrawInfo.interline_spacing in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for DrawInfo.interword_spacing in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for DitherMethod in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for MagickFunction in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for ImageLayerMethod in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for long double in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
    checking for AlphaChannelType.CopyAlphaChannel... yes
    checking for AlphaChannelType.BackgroundAlphaChannel... yes
    checking for CompositeOperator.BlurCompositeOp... yes
    checking for CompositeOperator.DistortCompositeOp... yes
    checking for CompositeOperator.LinearBurnCompositeOp... yes
    checking for CompositeOperator.LinearDodgeCompositeOp... yes
    checking for CompositeOperator.MathematicsCompositeOp... yes
    checking for CompositeOperator.PegtopLightCompositeOp... yes
    checking for CompositeOperator.PinLightCompositeOp... yes
    checking for CompositeOperator.VividLightCompositeOp... yes
    checking for CompressionType.DXT1Compression... yes
    checking for CompressionType.DXT3Compression... yes
    checking for CompressionType.DXT5Compression... yes
    checking for CompressionType.ZipSCompression... yes
    checking for CompressionType.PizCompression... yes
    checking for CompressionType.Pxr24Compression... yes
    checking for CompressionType.B44Compression... yes
    checking for CompressionType.B44ACompression... yes
    checking for DistortImageMethod.BarrelDistortion... yes
    checking for DistortImageMethod.BarrelInverseDistortion... yes
    checking for DistortImageMethod.BilinearForwardDistortion... yes
    checking for DistortImageMethod.BilinearReverseDistortion... yes
    checking for DistortImageMethod.DePolarDistortion... yes
    checking for DistortImageMethod.PolarDistortion... yes
    checking for DistortImageMethod.PolynomialDistortion... yes
    checking for DistortImageMethod.ShepardsDistortion... yes
    checking for DitherMethod.NoDitherMethod... yes
    checking for FilterTypes.KaiserFilter... yes
    checking for FilterTypes.WelshFilter... yes
    checking for FilterTypes.ParzenFilter... yes
    checking for FilterTypes.LagrangeFilter... yes
    checking for FilterTypes.BohmanFilter... yes
    checking for FilterTypes.BartlettFilter... yes
    checking for FilterTypes.SentinelFilter... yes
    checking for MagickEvaluateOperator.PowEvaluateOperator... yes
    checking for MagickEvaluateOperator.LogEvaluateOperator... yes
    checking for MagickEvaluateOperator.ThresholdEvaluateOperator... yes
    checking for MagickEvaluateOperator.ThresholdBlackEvaluateOperator... yes
    checking for MagickEvaluateOperator.ThresholdWhiteEvaluateOperator... yes
    checking for MagickEvaluateOperator.GaussianNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.ImpulseNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.LaplacianNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.MultiplicativeNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.PoissonNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.UniformNoiseEvaluateOperator... yes
    checking for MagickEvaluateOperator.CosineEvaluateOperator... yes
    checking for MagickEvaluateOperator.SineEvaluateOperator... yes
    checking for MagickEvaluateOperator.AddModulusEvaluateOperator... yes
    checking for MagickFunction.ArcsinFunction... yes
    checking for MagickFunction.ArctanFunction... yes
    checking for MagickFunction.PolynomialFunction... yes
    checking for MagickFunction.SinusoidFunction... yes
    checking for ImageLayerMethod.FlattenLayer... yes
    checking for ImageLayerMethod.MergeLayer... yes
    checking for ImageLayerMethod.MosaicLayer... yes
    checking for ImageLayerMethod.TrimBoundsLayer... yes
    checking for VirtualPixelMethod.HorizontalTileVirtualPixelMethod... yes
    checking for VirtualPixelMethod.VerticalTileVirtualPixelMethod... yes
    checking for VirtualPixelMethod.HorizontalTileEdgeVirtualPixelMethod... yes
    checking for VirtualPixelMethod.VerticalTileEdgeVirtualPixelMethod... yes
    checking for VirtualPixelMethod.CheckerTileVirtualPixelMethod... yes
    checking for ruby/io.h... yes
    checking for rb_frame_this_func() in ruby.h,ruby/io.h... yes
    creating extconf.h
    creating Makefile


    ======================================================================
    Sat 31Jan15 12:34:19
    This installation of RMagick 2.13.4 is configured for
    Ruby 2.0.0 (universal.x86_64-darwin13) and ImageMagick 
    ======================================================================



    make "DESTDIR="
    compiling rmagick.c
    compiling rmdraw.c
    ~~~~~~~~~~~~~~~~~
compile some files
    ~~~~~~~~~~~~~~~~~
    compiling rminfo.c
    compiling rmmain.c
    rmmain.c:1724:28: error: use of undeclared identifier 'MagickSupport'
        features = rb_str_new2(MagickSupport);
                               ^
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/intern.h:760:27: note: expanded from macro 'rb_str_new_cstr'
        (__builtin_constant_p(str)) ?               \
                              ^
    rmmain.c:1724:28: error: use of undeclared identifier 'MagickSupport'
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/intern.h:761:14: note: expanded from macro 'rb_str_new_cstr'
            rb_str_new((str), (long)strlen(str)) :  \
                        ^
    rmmain.c:1724:28: error: use of undeclared identifier 'MagickSupport'
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/intern.h:762:18: note: expanded from macro 'rb_str_new_cstr'
            rb_str_new_cstr(str);                   \
                            ^
    rmmain.c:1724:14: error: assigning to 'volatile VALUE' (aka 'volatile unsigned long') from incompatible type 'void'
        features = rb_str_new2(MagickSupport);
                 ^
    4 errors generated.
    make: *** [rmmain.o] Error 1


    Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/rmagick-2.13.4 for inspection.
    Results logged to /Library/Ruby/Gems/2.0.0/gems/rmagick-2.13.4/ext/RMagick/gem_make.out

And, these are more infos.

ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]


 brew info imagemagick
imagemagick: stable 6.9.0-3 (bottled), HEAD
http://www.imagemagick.org
/usr/local/Cellar/imagemagick/6.9.0-3 (1440 files, 22M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/imagemagick.rb
==> Dependencies
Build: xz ✔, pkg-config ✔
Required: libtool ✔, xz ✔
Recommended: jpeg ✔, libpng ✔, freetype ✔
Optional: fontconfig ✘, libtiff ✘, little-cms ✘, little-cms2 ✘, libwmf ✘, librsvg ✘, liblqr ✘, openexr ✘, ghostscript ✘, webp ✘, fftw ✘
==> Options
--enable-hdri
    Compile with HDRI support
--with-fftw
    Compile with FFTW support
--with-fontconfig
    Build with fontconfig support
--with-ghostscript
    Build with ghostscript support
--with-jp2
    Compile with Jpeg2000 support
--with-liblqr
    Build with liblqr support
--with-librsvg
    Build with librsvg support
--with-libtiff
    Build with libtiff support
--with-libwmf
    Build with libwmf support
--with-little-cms
    Build with little-cms support
--with-little-cms2
    Build with little-cms2 support
--with-openexr
    Build with openexr support
--with-perl
    enable build/install of PerlMagick
--with-quantum-depth-16
    Compile with a quantum depth of 16 bit
--with-quantum-depth-32
    Compile with a quantum depth of 32 bit
--with-quantum-depth-8
    Compile with a quantum depth of 8 bit
--with-webp
    Build with webp support
--with-x11
    Build with x11 support
--without-freetype
    Build without freetype support
--without-jpeg
    Build without jpeg support
--without-libpng
    Build without libpng support
--without-magick-plus-plus
    disable build/install of Magick++
--HEAD
    Install HEAD version

Thank you in advance

like image 393
Nick Avatar asked Jan 31 '15 03:01

Nick


1 Answers

I got the same error on OSX 10.10.2 (Yosemite) with rmagick 2.13.4. The issue was already fixed on the latest code. See the issue below.

  • Fix #148; More robust feature detection by bf4 · Pull Request #156 https://github.com/gemhome/rmagick/pull/156
  • Merge pull request #156 from gemhome/fix_features_detection https://github.com/gemhome/rmagick/commit/f261a6ffd03f538fbaabcf61a55cab58f4e8abbb?diff=unified

The new version, however, is not released officially yet so I fixed the issue locally with the code above.

$ git clone -b RMagick_2-13-4 git://github.com/gemhome/rmagick.git

Merged the fix code (replace related code in ext/RMagick/rmmain.c) .

#if defined(HAVE_GETMAGICKFEATURES)
  // 6.5.7 - latest (7.0.0)
  features = rb_str_new2(GetMagickFeatures());
#elif defined(MagickFeatures)
  // 6.5.7 - latest (7.0.0)
  features = rb_str_new2(MagickFeatures);
#elif defined(MagickSupport)
  // 6.5.5 - 6.5.6
  features = rb_str_new2(MagickSupport);
#else
  features = rb_str_new("unknown",7);
#endif

And then installed it.

$ cd rmagick/
$ gem build rmagick.gemspec
$ gem install --local rmagick-2.13.4.gem 
Building native extensions.  This could take a while...
Successfully installed rmagick-2.13.4
1 gem installed

I hope it is helpful.

like image 197
yusami Avatar answered Nov 04 '22 01:11

yusami