Skip to content

Commit

Permalink
Bump ImageMagick, build for experimental platforms (JuliaPackaging#3424)
Browse files Browse the repository at this point in the history
* Bump ImageMagick, build for experimental platforms

* Bump `libtiff` version, as requested by comment

* Update build_tarballs.jl

* [ImageMagick] Link some utilities to librt because of `clock_gettime`

* [ImageMagick] Add more patches for Windows

Co-authored-by: Mosè Giordano <[email protected]>
  • Loading branch information
2 people authored and simeonschaub committed Feb 23, 2022
1 parent c4ed8c8 commit 676b0b1
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 8 deletions.
34 changes: 26 additions & 8 deletions I/ImageMagick/build_tarballs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,44 @@
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder
name = "ImageMagick"
version = v"6.9.10-12"
upstream_version = v"6.9.12-19"
version = VersionNumber(upstream_version.major, upstream_version.minor, upstream_version.patch)

# Collection of sources required to build imagemagick
sources = [
ArchiveSource("https://github.com/ImageMagick/ImageMagick6/archive/6.9.10-12.tar.gz",
"efaae51489af9f895762bcb7090636f03194daaa026eda97dae230098d2ccec7"),
ArchiveSource("https://github.com/ImageMagick/ImageMagick6/archive/$(upstream_version).tar.gz",
"2f184f1f5c3e19849347b2b4acb6dd074290903d36fa5924956ee06c85ddf783"),
DirectorySource("./bundled"),
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir/ImageMagick6*/
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target} --without-x --disable-openmp --disable-installed --disable-dependency-tracking --without-frozenpaths --without-perl --disable-docs --disable-static
if [[ "${target}" == *-linux-gnu ]]; then
atomic_patch -p1 ../patches/utilities-link-rt.patch
elif [[ "${target}" == *-mingw* ]]; then
# Link to ws2_32 to fix undefined reference to `__imp_WSAStartup`.
atomic_patch -p1 ../patches/windows-undefined-reference-__imp_WSAStartup.patch
fi
atomic_patch -p1 ../patches/check-have-clock-realtime.patch
./configure --prefix=${prefix} \
--build=${MACHTYPE} \
--host=${target} \
--without-x \
--disable-openmp \
--disable-installed \
--disable-dependency-tracking \
--without-frozenpaths \
--without-perl \
--disable-docs \
--disable-static
make -j${nproc}
make install
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = expand_cxxstring_abis(supported_platforms())
platforms = expand_cxxstring_abis(supported_platforms(;experimental=true))

# The products that we will ensure are always built
products = [
Expand All @@ -34,9 +53,8 @@ dependencies = [
Dependency("Zlib_jll"),
Dependency("libpng_jll"),
Dependency("JpegTurbo_jll"),
# TODO: v4.3.0 is available, use that next time
Dependency("Libtiff_jll"; compat="4.1.0"),
Dependency("Libtiff_jll"; compat="4.3.0"),
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies)
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat="1.6")
11 changes: 11 additions & 0 deletions I/ImageMagick/bundled/patches/check-have-clock-realtime.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/magick/timer.c
+++ b/magick/timer.c
@@ -191,7 +191,7 @@
*/
static double ElapsedTime(void)
{
-#if defined(MAGICKCORE_HAVE_CLOCK_GETTIME)
+#if defined(MAGICKCORE_HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_REALTIME)
#define NANOSECONDS_PER_SECOND 1000000000.0
#if defined(CLOCK_HIGHRES)
# define CLOCK_ID CLOCK_HIGHRES
51 changes: 51 additions & 0 deletions I/ImageMagick/bundled/patches/utilities-link-rt.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
--- a/Makefile.in
+++ b/Makefile.in
@@ -5471,37 +5471,37 @@
$(UTILITIES_TTF_XFAIL_TESTS) \
$(UTILITIES_XML_XFAIL_TESTS)

-utilities_animate_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_animate_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_animate_LDFLAGS = $(LDFLAGS)
utilities_animate_SOURCES = utilities/animate.c
-utilities_compare_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_compare_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_compare_LDFLAGS = $(LDFLAGS)
utilities_compare_SOURCES = utilities/compare.c
-utilities_composite_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_composite_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_composite_LDFLAGS = $(LDFLAGS)
utilities_composite_SOURCES = utilities/composite.c
-utilities_conjure_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_conjure_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_conjure_LDFLAGS = $(LDFLAGS)
utilities_conjure_SOURCES = utilities/conjure.c
-utilities_convert_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_convert_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_convert_LDFLAGS = $(LDFLAGS)
utilities_convert_SOURCES = utilities/convert.c
-utilities_display_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_display_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_display_LDFLAGS = $(LDFLAGS)
utilities_display_SOURCES = utilities/display.c
-utilities_identify_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_identify_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_identify_LDFLAGS = $(LDFLAGS)
utilities_identify_SOURCES = utilities/identify.c
-utilities_import_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_import_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_import_LDFLAGS = $(LDFLAGS)
utilities_import_SOURCES = utilities/import.c
-utilities_mogrify_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_mogrify_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_mogrify_LDFLAGS = $(LDFLAGS)
utilities_mogrify_SOURCES = utilities/mogrify.c
-utilities_montage_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_montage_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_montage_LDFLAGS = $(LDFLAGS)
utilities_montage_SOURCES = utilities/montage.c
-utilities_stream_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)
+utilities_stream_LDADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) -lrt
utilities_stream_LDFLAGS = $(LDFLAGS)
utilities_stream_SOURCES = utilities/stream.c
UTILITIES_MANS = \
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
--- a/Makefile.in
+++ b/Makefile.in
@@ -4663,8 +4663,8 @@
MAGICKCORE_LIBS = magick/libMagickCore-@MAGICK_MAJOR_VERSION@.@[email protected]
@WITH_MODULES_FALSE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_SOURCES = $(MAGICK_BASE_SRCS) $(MAGICK_PLATFORM_SRCS) $(MAGICK_CODER_SRCS) $(MAGICK_FILTER_SRCS)
@WITH_MODULES_TRUE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_SOURCES = $(MAGICK_BASE_SRCS) $(MAGICK_PLATFORM_SRCS)
-@WITH_MODULES_FALSE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD = $(MAGICK_DEP_LIBS)
-@WITH_MODULES_TRUE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD = $(MAGICK_DEP_LIBS)
+@WITH_MODULES_FALSE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD = $(MAGICK_DEP_LIBS) -lws2_32
+@WITH_MODULES_TRUE@magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD = $(MAGICK_DEP_LIBS) -lws2_32
nodist_magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_SOURCES = \
$(am__append_1)
magick_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBRARY_EXTRA_CPPFLAGS)

0 comments on commit 676b0b1

Please sign in to comment.