Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump ImageMagick, build for experimental platforms #3424

Merged
merged 5 commits into from
Oct 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)