rmagick 4.1.0.rc2 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rmagick might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.codeclimate.yml +63 -0
- data/.editorconfig +3 -0
- data/.github/workflows/ci.yml +148 -0
- data/.gitignore +3 -1
- data/.rspec +1 -0
- data/.rubocop.yml +24 -0
- data/.rubocop_todo.yml +80 -270
- data/.yardopts +5 -0
- data/CHANGELOG.md +63 -0
- data/CONTRIBUTING.md +14 -10
- data/README.md +292 -0
- data/Rakefile +16 -22
- data/before_install_linux.sh +22 -32
- data/before_install_osx.sh +56 -2
- data/ext/RMagick/extconf.rb +100 -94
- data/ext/RMagick/rmagick.c +77 -104
- data/ext/RMagick/rmagick.h +74 -70
- data/ext/RMagick/rmdraw.c +261 -444
- data/ext/RMagick/rmenum.c +96 -113
- data/ext/RMagick/rmfill.c +46 -77
- data/ext/RMagick/rmilist.c +136 -244
- data/ext/RMagick/rmimage.c +3395 -4166
- data/ext/RMagick/rminfo.c +531 -737
- data/ext/RMagick/rmkinfo.c +21 -87
- data/ext/RMagick/rmmain.c +405 -245
- data/ext/RMagick/rmmontage.c +60 -126
- data/ext/RMagick/rmpixel.c +401 -345
- data/ext/RMagick/rmstruct.c +62 -88
- data/ext/RMagick/rmutil.c +112 -218
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +128 -77
- data/lib/rvg/clippath.rb +2 -1
- data/lib/rvg/container.rb +10 -5
- data/lib/rvg/describable.rb +1 -1
- data/lib/rvg/embellishable.rb +5 -4
- data/lib/rvg/misc.rb +15 -12
- data/lib/rvg/paint.rb +2 -1
- data/lib/rvg/pathdata.rb +12 -11
- data/lib/rvg/rvg.rb +8 -4
- data/lib/rvg/stylable.rb +9 -7
- data/lib/rvg/text.rb +11 -6
- data/lib/rvg/transformable.rb +3 -2
- data/lib/rvg/units.rb +1 -1
- data/rmagick.gemspec +7 -6
- metadata +31 -421
- data/.appveyor.yml +0 -57
- data/.circleci/config.yml +0 -56
- data/.ruby-version +0 -1
- data/.simplecov +0 -27
- data/.travis.yml +0 -64
- data/Doxyfile +0 -1514
- data/README.textile +0 -259
- data/benchmarks/memory/README.md +0 -50
- data/benchmarks/memory/image_new.rb +0 -8
- data/benchmarks/memory/rmagick.gnuplot +0 -16
- data/doc/.cvsignore +0 -1
- data/doc/comtasks.html +0 -287
- data/doc/constants.html +0 -1581
- data/doc/css/doc.css +0 -299
- data/doc/css/popup.css +0 -34
- data/doc/css/ref.css +0 -67
- data/doc/draw.html +0 -3272
- data/doc/ex/InitialCoords.rb +0 -22
- data/doc/ex/NewCoordSys.rb +0 -30
- data/doc/ex/OrigCoordSys.rb +0 -16
- data/doc/ex/PreserveAspectRatio.rb +0 -204
- data/doc/ex/RotateScale.rb +0 -36
- data/doc/ex/Skew.rb +0 -38
- data/doc/ex/Use01.rb +0 -15
- data/doc/ex/Use02.rb +0 -20
- data/doc/ex/Use03.rb +0 -16
- data/doc/ex/ViewBox.rb +0 -31
- data/doc/ex/adaptive_threshold.rb +0 -9
- data/doc/ex/add_noise.rb +0 -16
- data/doc/ex/affine.rb +0 -48
- data/doc/ex/affine_transform.rb +0 -20
- data/doc/ex/arc.rb +0 -49
- data/doc/ex/arcpath.rb +0 -32
- data/doc/ex/arcs01.rb +0 -28
- data/doc/ex/arcs02.rb +0 -59
- data/doc/ex/average.rb +0 -15
- data/doc/ex/axes.rb +0 -64
- data/doc/ex/baseline_shift01.rb +0 -17
- data/doc/ex/bilevel_channel.rb +0 -8
- data/doc/ex/blur_image.rb +0 -12
- data/doc/ex/border.rb +0 -10
- data/doc/ex/bounding_box.rb +0 -42
- data/doc/ex/cbezier1.rb +0 -41
- data/doc/ex/cbezier2.rb +0 -41
- data/doc/ex/cbezier3.rb +0 -41
- data/doc/ex/cbezier4.rb +0 -42
- data/doc/ex/cbezier5.rb +0 -42
- data/doc/ex/cbezier6.rb +0 -53
- data/doc/ex/channel.rb +0 -25
- data/doc/ex/charcoal.rb +0 -12
- data/doc/ex/chop.rb +0 -29
- data/doc/ex/circle.rb +0 -33
- data/doc/ex/circle01.rb +0 -16
- data/doc/ex/clip_path.rb +0 -60
- data/doc/ex/coalesce.rb +0 -57
- data/doc/ex/color_fill_to_border.rb +0 -29
- data/doc/ex/color_floodfill.rb +0 -28
- data/doc/ex/color_histogram.rb +0 -47
- data/doc/ex/color_reset.rb +0 -11
- data/doc/ex/colorize.rb +0 -16
- data/doc/ex/colors.rb +0 -64
- data/doc/ex/compose_mask.rb +0 -22
- data/doc/ex/composite.rb +0 -133
- data/doc/ex/composite_layers.rb +0 -52
- data/doc/ex/composite_tiled.rb +0 -21
- data/doc/ex/contrast.rb +0 -36
- data/doc/ex/crop.rb +0 -31
- data/doc/ex/crop_with_gravity.rb +0 -42
- data/doc/ex/cubic01.rb +0 -43
- data/doc/ex/cubic02.rb +0 -91
- data/doc/ex/cycle_colormap.rb +0 -21
- data/doc/ex/dissolve.rb +0 -12
- data/doc/ex/drawcomp.rb +0 -41
- data/doc/ex/drop_shadow.rb +0 -60
- data/doc/ex/edge.rb +0 -11
- data/doc/ex/ellipse.rb +0 -45
- data/doc/ex/ellipse01.rb +0 -21
- data/doc/ex/emboss.rb +0 -11
- data/doc/ex/enhance.rb +0 -28
- data/doc/ex/equalize.rb +0 -11
- data/doc/ex/evenodd.rb +0 -42
- data/doc/ex/fill_pattern.rb +0 -23
- data/doc/ex/flatten_images.rb +0 -36
- data/doc/ex/flip.rb +0 -11
- data/doc/ex/flop.rb +0 -11
- data/doc/ex/font_styles.rb +0 -32
- data/doc/ex/fonts.rb +0 -16
- data/doc/ex/frame.rb +0 -12
- data/doc/ex/gaussian_blur.rb +0 -11
- data/doc/ex/get_multiline_type_metrics.rb +0 -41
- data/doc/ex/get_pixels.rb +0 -45
- data/doc/ex/get_type_metrics.rb +0 -142
- data/doc/ex/gradientfill.rb +0 -27
- data/doc/ex/grav.rb +0 -45
- data/doc/ex/gravity.rb +0 -78
- data/doc/ex/group.rb +0 -26
- data/doc/ex/hatchfill.rb +0 -27
- data/doc/ex/image.rb +0 -44
- data/doc/ex/images/Apple.miff +0 -0
- data/doc/ex/images/Ballerina.jpg +0 -0
- data/doc/ex/images/Ballerina3.jpg +0 -0
- data/doc/ex/images/Button_0.gif +0 -0
- data/doc/ex/images/Button_1.gif +0 -0
- data/doc/ex/images/Button_2.gif +0 -0
- data/doc/ex/images/Button_3.gif +0 -0
- data/doc/ex/images/Button_4.gif +0 -0
- data/doc/ex/images/Button_5.gif +0 -0
- data/doc/ex/images/Button_6.gif +0 -0
- data/doc/ex/images/Button_7.gif +0 -0
- data/doc/ex/images/Button_8.gif +0 -0
- data/doc/ex/images/Button_9.gif +0 -0
- data/doc/ex/images/Button_A.gif +0 -0
- data/doc/ex/images/Button_B.gif +0 -0
- data/doc/ex/images/Button_C.gif +0 -0
- data/doc/ex/images/Button_D.gif +0 -0
- data/doc/ex/images/Button_E.gif +0 -0
- data/doc/ex/images/Button_F.gif +0 -0
- data/doc/ex/images/Button_G.gif +0 -0
- data/doc/ex/images/Button_H.gif +0 -0
- data/doc/ex/images/Button_I.gif +0 -0
- data/doc/ex/images/Button_J.gif +0 -0
- data/doc/ex/images/Button_K.gif +0 -0
- data/doc/ex/images/Button_L.gif +0 -0
- data/doc/ex/images/Button_M.gif +0 -0
- data/doc/ex/images/Button_N.gif +0 -0
- data/doc/ex/images/Button_O.gif +0 -0
- data/doc/ex/images/Button_P.gif +0 -0
- data/doc/ex/images/Button_Q.gif +0 -0
- data/doc/ex/images/Button_R.gif +0 -0
- data/doc/ex/images/Button_S.gif +0 -0
- data/doc/ex/images/Button_T.gif +0 -0
- data/doc/ex/images/Button_U.gif +0 -0
- data/doc/ex/images/Button_V.gif +0 -0
- data/doc/ex/images/Button_W.gif +0 -0
- data/doc/ex/images/Button_X.gif +0 -0
- data/doc/ex/images/Button_Y.gif +0 -0
- data/doc/ex/images/Button_Z.gif +0 -0
- data/doc/ex/images/Cheetah.jpg +0 -0
- data/doc/ex/images/Coffee.png +0 -0
- data/doc/ex/images/Flower_Hat.jpg +0 -0
- data/doc/ex/images/Gold_Statue.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
- data/doc/ex/images/Leaf.miff +0 -0
- data/doc/ex/images/No.png +0 -0
- data/doc/ex/images/Polynesia.jpg +0 -0
- data/doc/ex/images/Red_Rocks.jpg +0 -0
- data/doc/ex/images/Rocks_On_Beach.miff +0 -0
- data/doc/ex/images/Shorts.jpg +0 -0
- data/doc/ex/images/Snake.png +0 -0
- data/doc/ex/images/Violin.jpg +0 -0
- data/doc/ex/images/Yellow_Rose.miff +0 -0
- data/doc/ex/images/big-duck.gif +0 -0
- data/doc/ex/images/duck.gif +0 -0
- data/doc/ex/images/duck0.gif +0 -0
- data/doc/ex/images/duck1.gif +0 -0
- data/doc/ex/images/duck10.gif +0 -0
- data/doc/ex/images/duck11.gif +0 -0
- data/doc/ex/images/duck12.gif +0 -0
- data/doc/ex/images/duck13.gif +0 -0
- data/doc/ex/images/duck14.gif +0 -0
- data/doc/ex/images/duck15.gif +0 -0
- data/doc/ex/images/duck2.gif +0 -0
- data/doc/ex/images/duck3.gif +0 -0
- data/doc/ex/images/duck4.gif +0 -0
- data/doc/ex/images/duck5.gif +0 -0
- data/doc/ex/images/duck6.gif +0 -0
- data/doc/ex/images/duck7.gif +0 -0
- data/doc/ex/images/duck8.gif +0 -0
- data/doc/ex/images/duck9.gif +0 -0
- data/doc/ex/images/graydient230x6.gif +0 -0
- data/doc/ex/images/image_with_profile.jpg +0 -0
- data/doc/ex/images/logo400x83.gif +0 -0
- data/doc/ex/images/model.miff +0 -0
- data/doc/ex/images/notimplemented.gif +0 -0
- data/doc/ex/images/smile.miff +0 -0
- data/doc/ex/images/spin.gif +0 -0
- data/doc/ex/implode.rb +0 -34
- data/doc/ex/level.rb +0 -11
- data/doc/ex/level_colors.rb +0 -11
- data/doc/ex/line.rb +0 -41
- data/doc/ex/line01.rb +0 -21
- data/doc/ex/mask.rb +0 -35
- data/doc/ex/matte_fill_to_border.rb +0 -39
- data/doc/ex/matte_floodfill.rb +0 -32
- data/doc/ex/matte_replace.rb +0 -39
- data/doc/ex/median_filter.rb +0 -28
- data/doc/ex/modulate.rb +0 -11
- data/doc/ex/mono.rb +0 -23
- data/doc/ex/morph.rb +0 -25
- data/doc/ex/mosaic.rb +0 -37
- data/doc/ex/motion_blur.rb +0 -11
- data/doc/ex/negate.rb +0 -11
- data/doc/ex/negate_channel.rb +0 -9
- data/doc/ex/nested_rvg.rb +0 -21
- data/doc/ex/nonzero.rb +0 -42
- data/doc/ex/normalize.rb +0 -11
- data/doc/ex/oil_paint.rb +0 -11
- data/doc/ex/opacity.rb +0 -37
- data/doc/ex/ordered_dither.rb +0 -11
- data/doc/ex/path.rb +0 -63
- data/doc/ex/pattern1.rb +0 -25
- data/doc/ex/pattern2.rb +0 -26
- data/doc/ex/polaroid.rb +0 -26
- data/doc/ex/polygon.rb +0 -23
- data/doc/ex/polygon01.rb +0 -21
- data/doc/ex/polyline.rb +0 -22
- data/doc/ex/polyline01.rb +0 -21
- data/doc/ex/posterize.rb +0 -8
- data/doc/ex/preview.rb +0 -8
- data/doc/ex/qbezierpath.rb +0 -52
- data/doc/ex/quad01.rb +0 -34
- data/doc/ex/quantize-m.rb +0 -25
- data/doc/ex/radial_blur.rb +0 -9
- data/doc/ex/raise.rb +0 -8
- data/doc/ex/random_threshold_channel.rb +0 -13
- data/doc/ex/rect01.rb +0 -14
- data/doc/ex/rect02.rb +0 -20
- data/doc/ex/rectangle.rb +0 -34
- data/doc/ex/reduce_noise.rb +0 -28
- data/doc/ex/remap.rb +0 -11
- data/doc/ex/remap_images.rb +0 -19
- data/doc/ex/resize_to_fill.rb +0 -8
- data/doc/ex/resize_to_fit.rb +0 -8
- data/doc/ex/roll.rb +0 -9
- data/doc/ex/rotate.rb +0 -44
- data/doc/ex/rotate_f.rb +0 -14
- data/doc/ex/roundrect.rb +0 -33
- data/doc/ex/rubyname.rb +0 -30
- data/doc/ex/rvg_clippath.rb +0 -12
- data/doc/ex/rvg_linecap.rb +0 -42
- data/doc/ex/rvg_linejoin.rb +0 -40
- data/doc/ex/rvg_opacity.rb +0 -18
- data/doc/ex/rvg_pattern.rb +0 -26
- data/doc/ex/rvg_stroke_dasharray.rb +0 -11
- data/doc/ex/segment.rb +0 -11
- data/doc/ex/sepiatone.rb +0 -7
- data/doc/ex/shade.rb +0 -11
- data/doc/ex/shadow.rb +0 -30
- data/doc/ex/shave.rb +0 -15
- data/doc/ex/shear.rb +0 -10
- data/doc/ex/sketch.rb +0 -17
- data/doc/ex/skewx.rb +0 -51
- data/doc/ex/skewy.rb +0 -47
- data/doc/ex/smile.rb +0 -126
- data/doc/ex/solarize.rb +0 -11
- data/doc/ex/sparse_color.rb +0 -55
- data/doc/ex/splice.rb +0 -8
- data/doc/ex/spread.rb +0 -11
- data/doc/ex/stegano.rb +0 -54
- data/doc/ex/stroke_dasharray.rb +0 -42
- data/doc/ex/stroke_fill.rb +0 -10
- data/doc/ex/stroke_linecap.rb +0 -44
- data/doc/ex/stroke_linejoin.rb +0 -48
- data/doc/ex/stroke_width.rb +0 -49
- data/doc/ex/swirl.rb +0 -17
- data/doc/ex/text.rb +0 -37
- data/doc/ex/text01.rb +0 -16
- data/doc/ex/text_align.rb +0 -36
- data/doc/ex/text_antialias.rb +0 -37
- data/doc/ex/text_styles.rb +0 -19
- data/doc/ex/text_undercolor.rb +0 -28
- data/doc/ex/texture_fill_to_border.rb +0 -34
- data/doc/ex/texture_floodfill.rb +0 -32
- data/doc/ex/texturefill.rb +0 -24
- data/doc/ex/threshold.rb +0 -13
- data/doc/ex/to_blob.rb +0 -13
- data/doc/ex/translate.rb +0 -39
- data/doc/ex/transparent.rb +0 -38
- data/doc/ex/transpose.rb +0 -9
- data/doc/ex/transverse.rb +0 -9
- data/doc/ex/tref01.rb +0 -24
- data/doc/ex/triangle01.rb +0 -15
- data/doc/ex/trim.rb +0 -23
- data/doc/ex/tspan01.rb +0 -17
- data/doc/ex/tspan02.rb +0 -17
- data/doc/ex/tspan03.rb +0 -19
- data/doc/ex/unsharp_mask.rb +0 -28
- data/doc/ex/viewex.rb +0 -33
- data/doc/ex/vignette.rb +0 -12
- data/doc/ex/watermark.rb +0 -27
- data/doc/ex/wave.rb +0 -9
- data/doc/ex/wet_floor.rb +0 -58
- data/doc/ex/writing_mode01.rb +0 -26
- data/doc/ex/writing_mode02.rb +0 -26
- data/doc/ilist.html +0 -2056
- data/doc/image1.html +0 -4680
- data/doc/image2.html +0 -3665
- data/doc/image3.html +0 -4522
- data/doc/imageattrs.html +0 -1638
- data/doc/imusage.html +0 -514
- data/doc/index.html +0 -416
- data/doc/info.html +0 -1499
- data/doc/magick.html +0 -570
- data/doc/optequiv.html +0 -2435
- data/doc/rvg.html +0 -975
- data/doc/rvgclip.html +0 -248
- data/doc/rvggroup.html +0 -305
- data/doc/rvgimage.html +0 -289
- data/doc/rvgpattern.html +0 -475
- data/doc/rvgshape.html +0 -406
- data/doc/rvgstyle.html +0 -270
- data/doc/rvgtext.html +0 -465
- data/doc/rvgtspan.html +0 -238
- data/doc/rvgtut.html +0 -530
- data/doc/rvguse.html +0 -145
- data/doc/rvgxform.html +0 -294
- data/doc/scripts/doc.js +0 -22
- data/doc/scripts/stripeTables.js +0 -23
- data/doc/struct.html +0 -1339
- data/doc/usage.html +0 -1621
- data/examples/constitute.rb +0 -7
- data/examples/crop_with_gravity.rb +0 -43
- data/examples/demo.rb +0 -323
- data/examples/describe.rb +0 -41
- data/examples/find_similar_region.rb +0 -34
- data/examples/histogram.rb +0 -312
- data/examples/identify.rb +0 -174
- data/examples/image_opacity.rb +0 -28
- data/examples/import_export.rb +0 -31
- data/examples/pattern_fill.rb +0 -37
- data/examples/rotating_text.rb +0 -45
- data/examples/spinner.rb +0 -49
- data/examples/thumbnail.rb +0 -64
- data/examples/vignette.rb +0 -78
- data/spec/rmagick/ImageList1_spec.rb +0 -24
- data/spec/rmagick/draw_spec.rb +0 -155
- data/spec/rmagick/image/blue_shift_spec.rb +0 -14
- data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
- data/spec/rmagick/image/composite_spec.rb +0 -72
- data/spec/rmagick/image/constitute_spec.rb +0 -13
- data/spec/rmagick/image/dispatch_spec.rb +0 -16
- data/spec/rmagick/image/dissolve_spec.rb +0 -54
- data/spec/rmagick/image/from_blob_spec.rb +0 -12
- data/spec/rmagick/image/ping_spec.rb +0 -12
- data/spec/rmagick/image/properties_spec.rb +0 -27
- data/spec/rmagick/image/read_spec.rb +0 -28
- data/spec/spec_helper.rb +0 -9
- data/spec/support/issue_200/app.rb +0 -8
- data/test/Draw.rb +0 -351
- data/test/Enum.rb +0 -228
- data/test/Fill.rb +0 -93
- data/test/Image1.rb +0 -606
- data/test/Image2.rb +0 -1408
- data/test/Image3.rb +0 -1086
- data/test/ImageList1.rb +0 -858
- data/test/ImageList2.rb +0 -375
- data/test/Image_attributes.rb +0 -635
- data/test/Import_Export.rb +0 -111
- data/test/Info.rb +0 -436
- data/test/KernelInfo.rb +0 -59
- data/test/Magick.rb +0 -311
- data/test/Pixel.rb +0 -259
- data/test/PolaroidOptions.rb +0 -23
- data/test/Preview.rb +0 -26
- data/test/Struct.rb +0 -45
- data/test/appearance/Montage.rb +0 -26
- data/test/appearance/appearance_assertion.rb +0 -13
- data/test/appearance/expected/montage_border_color.jpg +0 -0
- data/test/cmyk.icm +0 -0
- data/test/lib/internal/Draw.rb +0 -811
- data/test/lib/internal/Geometry.rb +0 -98
- data/test/lib/internal/Magick.rb +0 -40
- data/test/srgb.icm +0 -0
- data/test/test_all_basic.rb +0 -49
- data/test/tmpnam_test.rb +0 -50
data/before_install_linux.sh
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
1
3
|
set -euox pipefail
|
2
4
|
|
3
5
|
gem install bundler
|
@@ -13,66 +15,54 @@ if [ ! -v IMAGEMAGICK_VERSION ]; then
|
|
13
15
|
exit 1
|
14
16
|
fi
|
15
17
|
|
18
|
+
sudo apt-get clean
|
19
|
+
sudo apt-get update
|
20
|
+
|
16
21
|
# remove all existing imagemagick related packages
|
17
22
|
sudo apt-get autoremove -y imagemagick* libmagick* --purge
|
18
23
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
|
24
|
-
liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
|
25
|
-
libtiff5-dev libwebp-dev vim ghostscript ccache
|
26
|
-
fi
|
24
|
+
# install build tools, ImageMagick delegates
|
25
|
+
sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
|
26
|
+
liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
|
27
|
+
libtiff5-dev libwebp-dev vim gsfonts ghostscript ccache
|
27
28
|
|
28
29
|
if [ ! -d /usr/include/freetype ]; then
|
29
30
|
# If `/usr/include/freetype` is not existed, ImageMagick 6.7 configuration fails about Freetype.
|
30
31
|
sudo ln -sf /usr/include/freetype2 /usr/include/freetype
|
31
32
|
fi
|
32
33
|
|
33
|
-
project_dir
|
34
|
-
build_dir
|
34
|
+
project_dir=$(pwd)
|
35
|
+
build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
|
35
36
|
if [ -v CONFIGURE_OPTIONS ]; then
|
36
|
-
build_dir
|
37
|
+
build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
|
37
38
|
fi
|
38
39
|
|
39
40
|
build_imagemagick() {
|
40
41
|
mkdir -p build-ImageMagick
|
41
42
|
|
42
43
|
version=(${IMAGEMAGICK_VERSION//./ })
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
elif (( "${version[0]}${version[1]}" >= 69 )); then
|
48
|
-
wget https://github.com/ImageMagick/ImageMagick6/archive/${IMAGEMAGICK_VERSION}.tar.gz
|
49
|
-
tar -xf ${IMAGEMAGICK_VERSION}.tar.gz
|
50
|
-
rm ${IMAGEMAGICK_VERSION}.tar.gz
|
51
|
-
mv ImageMagick6-${IMAGEMAGICK_VERSION} $build_dir
|
52
|
-
else
|
53
|
-
wget https://www.imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
|
54
|
-
tar -xf ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
|
55
|
-
rm ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
|
56
|
-
mv ImageMagick-${IMAGEMAGICK_VERSION} $build_dir
|
57
|
-
fi
|
44
|
+
wget "https://imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
45
|
+
tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
46
|
+
rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
47
|
+
mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
|
58
48
|
|
59
49
|
options="--with-magick-plus-plus=no --disable-docs"
|
60
50
|
if [ -v CONFIGURE_OPTIONS ]; then
|
61
|
-
options="${CONFIGURE_OPTIONS} $options"
|
51
|
+
options="${CONFIGURE_OPTIONS} ${options}"
|
62
52
|
fi
|
63
53
|
|
64
|
-
cd $build_dir
|
65
|
-
CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr $options
|
54
|
+
cd "${build_dir}"
|
55
|
+
CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr "${options}"
|
66
56
|
make -j
|
67
57
|
}
|
68
58
|
|
69
|
-
if [ ! -d $build_dir ]; then
|
59
|
+
if [ ! -d "${build_dir}" ]; then
|
70
60
|
build_imagemagick
|
71
61
|
fi
|
72
62
|
|
73
|
-
cd $build_dir
|
63
|
+
cd "${build_dir}"
|
74
64
|
sudo make install -j
|
75
|
-
cd $project_dir
|
65
|
+
cd "${project_dir}"
|
76
66
|
|
77
67
|
sudo ldconfig
|
78
68
|
|
data/before_install_osx.sh
CHANGED
@@ -1,2 +1,56 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -euox pipefail
|
4
|
+
|
5
|
+
gem install bundler
|
6
|
+
|
7
|
+
if [ -v STYLE_CHECKS ]; then
|
8
|
+
set +ux
|
9
|
+
exit 0
|
10
|
+
fi
|
11
|
+
|
12
|
+
if [ ! -v IMAGEMAGICK_VERSION ]; then
|
13
|
+
echo "you must specify an ImageMagick version."
|
14
|
+
echo "example: 'IMAGEMAGICK_VERSION=6.8.9-10 bash ./before_install_osx.sh'"
|
15
|
+
exit 1
|
16
|
+
fi
|
17
|
+
|
18
|
+
brew install wget pkg-config ghostscript freetype jpeg little-cms2 libomp libpng libtiff libtool libxml2 zlib webp
|
19
|
+
|
20
|
+
export LDFLAGS="-L/usr/local/opt/libxml2/lib -L/usr/local/opt/zlib/li"
|
21
|
+
export CPPFLAGS="-I/usr/local/opt/libxml2/include/libxml2 -I/usr/local/opt/zlib/include"
|
22
|
+
|
23
|
+
project_dir=$(pwd)
|
24
|
+
build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
|
25
|
+
if [ -v CONFIGURE_OPTIONS ]; then
|
26
|
+
build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
|
27
|
+
fi
|
28
|
+
|
29
|
+
build_imagemagick() {
|
30
|
+
mkdir -p build-ImageMagick
|
31
|
+
|
32
|
+
version=(${IMAGEMAGICK_VERSION//./ })
|
33
|
+
wget "https://imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
34
|
+
tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
35
|
+
rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
|
36
|
+
mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
|
37
|
+
|
38
|
+
options="--with-magick-plus-plus=no --disable-docs"
|
39
|
+
if [ -v CONFIGURE_OPTIONS ]; then
|
40
|
+
options="${CONFIGURE_OPTIONS} ${options}"
|
41
|
+
fi
|
42
|
+
|
43
|
+
cd "${build_dir}"
|
44
|
+
./configure --prefix=/usr/local "${options}"
|
45
|
+
make -j
|
46
|
+
}
|
47
|
+
|
48
|
+
if [ ! -d "${build_dir}" ]; then
|
49
|
+
build_imagemagick
|
50
|
+
fi
|
51
|
+
|
52
|
+
cd "${build_dir}"
|
53
|
+
make install -j
|
54
|
+
cd "${project_dir}"
|
55
|
+
|
56
|
+
set +ux
|
data/ext/RMagick/extconf.rb
CHANGED
@@ -2,7 +2,6 @@ lib_dir = File.expand_path('../../lib', File.dirname(__FILE__))
|
|
2
2
|
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
3
3
|
require 'rubygems'
|
4
4
|
require 'mkmf'
|
5
|
-
require 'date'
|
6
5
|
|
7
6
|
module RMagick
|
8
7
|
class Extconf
|
@@ -16,12 +15,14 @@ module RMagick
|
|
16
15
|
@stdout = $stdout.dup
|
17
16
|
|
18
17
|
setup_pkg_config_path
|
19
|
-
configure_compile_options
|
20
18
|
assert_can_compile!
|
19
|
+
configure_compile_options
|
21
20
|
configure_headers
|
22
21
|
end
|
23
22
|
|
24
23
|
def setup_pkg_config_path
|
24
|
+
return if RUBY_PLATFORM =~ /mswin|mingw/
|
25
|
+
|
25
26
|
if find_executable('brew')
|
26
27
|
pkg_config_path = "#{`brew --prefix imagemagick@6`.strip}/lib/pkgconfig"
|
27
28
|
elsif find_executable('pacman')
|
@@ -64,55 +65,32 @@ module RMagick
|
|
64
65
|
# Magick-config is not available on Windows
|
65
66
|
if RUBY_PLATFORM !~ /mswin|mingw/
|
66
67
|
|
67
|
-
# Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
|
68
|
-
config = defined?(RbConfig) ? ::RbConfig : ::Config
|
69
|
-
cc = (ENV['CC'] || config::CONFIG['CC'] || 'gcc').split(' ').first
|
70
|
-
exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details." unless find_executable(cc)
|
71
|
-
|
72
|
-
magick_package = determine_imagemagick_package
|
73
|
-
|
74
|
-
$magick_version = `pkg-config #{magick_package} --modversion`[/^(\d+\.\d+\.\d+)/]
|
75
|
-
|
76
68
|
check_multiple_imagemagick_versions
|
77
69
|
check_partial_imagemagick_versions
|
78
70
|
|
79
|
-
# Ensure minimum ImageMagick version
|
80
|
-
# Check minimum ImageMagick version if possible
|
81
|
-
checking_for("outdated ImageMagick version (<= #{Magick::MIN_IM_VERSION})") do
|
82
|
-
Logging.message("Detected ImageMagick version: #{$magick_version}\n")
|
83
|
-
|
84
|
-
exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{Magick::MIN_IM_VERSION} or later.\n" if Gem::Version.new($magick_version) < Gem::Version.new(Magick::MIN_IM_VERSION)
|
85
|
-
end
|
86
|
-
|
87
71
|
# Save flags
|
88
|
-
$CFLAGS
|
89
|
-
$CPPFLAGS
|
90
|
-
$LDFLAGS
|
91
|
-
$LOCAL_LIBS = ENV['LIBS']
|
72
|
+
$CFLAGS = "#{ENV['CFLAGS']} " + `pkg-config --cflags #{$magick_package}`.chomp
|
73
|
+
$CPPFLAGS = "#{ENV['CPPFLAGS']} " + `pkg-config --cflags #{$magick_package}`.chomp
|
74
|
+
$LDFLAGS = "#{ENV['LDFLAGS']} " + `pkg-config --libs #{$magick_package}`.chomp
|
75
|
+
$LOCAL_LIBS = "#{ENV['LIBS']} " + `pkg-config --libs #{$magick_package}`.chomp
|
92
76
|
|
93
|
-
|
77
|
+
configure_archflags_for_osx($magick_package) if RUBY_PLATFORM =~ /darwin/ # osx
|
94
78
|
|
95
79
|
elsif RUBY_PLATFORM =~ /mingw/ # mingw
|
96
80
|
|
97
|
-
`#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
|
98
|
-
abort 'Unable to get ImageMagick version' unless Regexp.last_match(1)
|
99
|
-
$magick_version = Regexp.last_match(1)
|
100
|
-
|
101
81
|
dir_paths = search_paths_for_library_for_windows
|
102
82
|
$CPPFLAGS = %(-I"#{dir_paths[:include]}")
|
103
83
|
$LDFLAGS = %(-L"#{dir_paths[:lib]}")
|
84
|
+
$LDFLAGS << ' -lucrt' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
|
104
85
|
|
105
86
|
have_library(im_version_at_least?('7.0.0') ? 'CORE_RL_MagickCore_' : 'CORE_RL_magick_')
|
106
87
|
|
107
88
|
else # mswin
|
108
89
|
|
109
|
-
`#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
|
110
|
-
abort 'Unable to get ImageMagick version' unless Regexp.last_match(1)
|
111
|
-
$magick_version = Regexp.last_match(1)
|
112
|
-
|
113
90
|
dir_paths = search_paths_for_library_for_windows
|
114
91
|
$CPPFLAGS << %( -I"#{dir_paths[:include]}")
|
115
92
|
$LDFLAGS << %( -libpath:"#{dir_paths[:lib]}")
|
93
|
+
$LDFLAGS << ' -libpath:ucrt' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
|
116
94
|
|
117
95
|
$LOCAL_LIBS = im_version_at_least?('7.0.0') ? 'CORE_RL_MagickCore_.lib' : 'CORE_RL_magick_.lib'
|
118
96
|
|
@@ -121,30 +99,6 @@ module RMagick
|
|
121
99
|
$CFLAGS << (have_macro('__GNUC__') ? ' -std=gnu99' : ' -std=c99')
|
122
100
|
end
|
123
101
|
|
124
|
-
# Test for a specific value in an enum type
|
125
|
-
def have_enum_value(enum, value, headers = nil, &b)
|
126
|
-
checking_for "#{enum}.#{value}" do
|
127
|
-
if try_compile(<<"SRC", &b)
|
128
|
-
#{COMMON_HEADERS}
|
129
|
-
#{cpp_include(headers)}
|
130
|
-
/*top*/
|
131
|
-
int main() { #{enum} t = #{value}; t = t; return 0; }
|
132
|
-
SRC
|
133
|
-
$defs.push(format('-DHAVE_ENUM_%s', value.upcase))
|
134
|
-
true
|
135
|
-
else
|
136
|
-
false
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
# Test for multiple values of the same enum type
|
142
|
-
def have_enum_values(enum, values, headers = nil, &b)
|
143
|
-
values.each do |value|
|
144
|
-
have_enum_value(enum, value, headers, &b)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
102
|
def exit_failure(msg)
|
149
103
|
msg = "ERROR: #{msg}"
|
150
104
|
|
@@ -163,10 +117,6 @@ SRC
|
|
163
117
|
end
|
164
118
|
|
165
119
|
def determine_imagemagick_package
|
166
|
-
unless find_executable('pkg-config')
|
167
|
-
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find pkg-config in #{ENV['PATH']}\n"
|
168
|
-
end
|
169
|
-
|
170
120
|
packages = `pkg-config --list-all`.scan(/(ImageMagick\-[\.A-Z0-9]+) .*/).flatten
|
171
121
|
|
172
122
|
# For ancient version of ImageMagick 6 we need a different regex
|
@@ -245,21 +195,33 @@ SRC
|
|
245
195
|
matches.delete_if(&:empty?)
|
246
196
|
return unless !matches.empty? && matches.length < 3
|
247
197
|
|
248
|
-
msg =
|
198
|
+
msg = <<~MESSAGE
|
199
|
+
|
200
|
+
Warning: Found a partial ImageMagick installation. Your operating
|
201
|
+
system likely has some built-in ImageMagick libraries but not all of
|
202
|
+
ImageMagick. This will most likely cause problems at both compile and
|
203
|
+
runtime.
|
204
|
+
Found partial installation at: #{prefix}
|
205
|
+
|
206
|
+
MESSAGE
|
207
|
+
|
249
208
|
Logging.message msg
|
250
209
|
message msg
|
251
210
|
end
|
252
211
|
|
253
212
|
# issue #169
|
254
213
|
# set ARCHFLAGS appropriately for OSX
|
255
|
-
def
|
256
|
-
|
257
|
-
|
258
|
-
|
214
|
+
def configure_archflags_for_osx(magick_package)
|
215
|
+
return unless `pkg-config #{magick_package} --libs-only-L`.match(%r{-L(.+)/lib})
|
216
|
+
|
217
|
+
imagemagick_dir = Regexp.last_match(1)
|
218
|
+
command = Dir.glob(File.join(imagemagick_dir, "bin/*")).select { |file| File.executable? file }.first
|
219
|
+
fileinfo = `file #{command}`
|
259
220
|
|
260
221
|
# default ARCHFLAGS
|
261
222
|
archs = $ARCH_FLAG.scan(/-arch\s+(\S+)/).flatten
|
262
223
|
|
224
|
+
archflags = []
|
263
225
|
archs.each do |arch|
|
264
226
|
archflags << "-arch #{arch}" if fileinfo.include?(arch)
|
265
227
|
end
|
@@ -290,44 +252,84 @@ SRC
|
|
290
252
|
|
291
253
|
return dir_paths if found_lib
|
292
254
|
|
293
|
-
exit_failure
|
294
|
-
Can't install RMagick #{RMAGICK_VERS}.
|
295
|
-
Can't find the ImageMagick library.
|
296
|
-
Retry with '--with-opt-dir' option.
|
297
|
-
Usage: gem install rmagick -- '--with-opt-dir=\"[path to ImageMagick]\"'
|
298
|
-
e.g.
|
299
|
-
|
300
|
-
END_MINGW
|
255
|
+
exit_failure <<~END_MINGW
|
256
|
+
Can't install RMagick #{RMAGICK_VERS}.
|
257
|
+
Can't find the ImageMagick library.
|
258
|
+
Retry with '--with-opt-dir' option.
|
259
|
+
Usage: gem install rmagick -- '--with-opt-dir=\"[path to ImageMagick]\"'
|
260
|
+
e.g.
|
261
|
+
gem install rmagick -- '--with-opt-dir=\"C:\Program Files\ImageMagick-6.9.1-Q16\"'
|
262
|
+
END_MINGW
|
301
263
|
end
|
302
264
|
|
303
265
|
def assert_can_compile!
|
304
266
|
assert_minimum_ruby_version!
|
305
267
|
assert_has_dev_libs!
|
268
|
+
|
269
|
+
# Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
|
270
|
+
cc = (ENV['CC'] || RbConfig::CONFIG['CC'] || 'gcc').split(' ').first
|
271
|
+
exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details." unless find_executable(cc)
|
306
272
|
end
|
307
273
|
|
308
274
|
def assert_minimum_ruby_version!
|
309
|
-
|
275
|
+
supported = checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
|
310
276
|
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(MIN_RUBY_VERS)
|
311
277
|
end
|
312
|
-
|
313
|
-
|
278
|
+
|
279
|
+
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n" unless supported
|
314
280
|
end
|
315
281
|
|
316
282
|
def assert_has_dev_libs!
|
317
|
-
|
283
|
+
failure_message = <<~END_FAILURE
|
284
|
+
Can't install RMagick #{RMAGICK_VERS}.
|
285
|
+
Can't find the ImageMagick library or one of the dependent libraries.
|
286
|
+
Check the mkmf.log file for more detailed information.
|
287
|
+
END_FAILURE
|
288
|
+
|
289
|
+
if RUBY_PLATFORM !~ /mswin|mingw/
|
290
|
+
unless find_executable('pkg-config')
|
291
|
+
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find pkg-config in #{ENV['PATH']}\n"
|
292
|
+
end
|
318
293
|
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
294
|
+
unless `pkg-config --libs MagickCore`[/\bl\s*(MagickCore|Magick)6?\b/]
|
295
|
+
exit_failure failure_message
|
296
|
+
end
|
297
|
+
|
298
|
+
$magick_package = determine_imagemagick_package
|
299
|
+
$magick_version = `pkg-config #{$magick_package} --modversion`[/^(\d+\.\d+\.\d+)/]
|
300
|
+
else
|
301
|
+
`#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
|
302
|
+
$magick_version = Regexp.last_match(1)
|
303
|
+
exit_failure failure_message unless $magick_version
|
304
|
+
end
|
305
|
+
|
306
|
+
# Ensure minimum ImageMagick version
|
307
|
+
# Check minimum ImageMagick version if possible
|
308
|
+
checking_for("outdated ImageMagick version (<= #{Magick::MIN_IM_VERSION})") do
|
309
|
+
Logging.message("Detected ImageMagick version: #{$magick_version}\n")
|
310
|
+
|
311
|
+
exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{Magick::MIN_IM_VERSION} or later.\n" if Gem::Version.new($magick_version) < Gem::Version.new(Magick::MIN_IM_VERSION)
|
323
312
|
end
|
324
313
|
end
|
325
314
|
|
326
315
|
def create_header_file
|
327
|
-
[
|
316
|
+
ruby_api = [
|
317
|
+
'rb_gc_adjust_memory_usage' # Ruby 2.4.0
|
318
|
+
]
|
319
|
+
memory_api = %w[
|
320
|
+
posix_memalign
|
321
|
+
malloc_usable_size
|
322
|
+
malloc_size
|
323
|
+
_aligned_msize
|
324
|
+
]
|
325
|
+
imagemagick_api = [
|
328
326
|
'GetImageChannelEntropy', # 6.9.0-0
|
329
|
-
'SetImageGray' # 6.9.1-10
|
330
|
-
|
327
|
+
'SetImageGray', # 6.9.1-10
|
328
|
+
'SetMagickAlignedMemoryMethods' # 7.0.9-0
|
329
|
+
]
|
330
|
+
|
331
|
+
check_api = ruby_api + memory_api + imagemagick_api
|
332
|
+
check_api.each do |func|
|
331
333
|
have_func(func, headers)
|
332
334
|
end
|
333
335
|
|
@@ -356,7 +358,13 @@ END_MINGW
|
|
356
358
|
end
|
357
359
|
|
358
360
|
def magick_command
|
359
|
-
@magick_command ||= find_executable('magick')
|
361
|
+
@magick_command ||= if find_executable('magick')
|
362
|
+
'magick'
|
363
|
+
elsif find_executable('identify')
|
364
|
+
'identify'
|
365
|
+
else
|
366
|
+
raise NotImplementedError, "no executable found for ImageMagick"
|
367
|
+
end
|
360
368
|
end
|
361
369
|
|
362
370
|
def im_version_at_least?(version)
|
@@ -364,17 +372,15 @@ END_MINGW
|
|
364
372
|
end
|
365
373
|
|
366
374
|
def print_summary
|
367
|
-
summary =
|
368
|
-
|
369
|
-
|
370
|
-
#{
|
371
|
-
#{
|
372
|
-
|
373
|
-
Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
|
374
|
-
#{'=' * 70}
|
375
|
+
summary = <<~"END_SUMMARY"
|
376
|
+
#{'=' * 70}
|
377
|
+
#{Time.now.strftime('%a %d %b %y %T')}
|
378
|
+
This installation of RMagick #{RMAGICK_VERS} is configured for
|
379
|
+
Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
|
380
|
+
#{'=' * 70}
|
375
381
|
|
376
382
|
|
377
|
-
END_SUMMARY
|
383
|
+
END_SUMMARY
|
378
384
|
|
379
385
|
Logging.message summary
|
380
386
|
message summary
|