Skip to content

Building ImageMagick #7

Closed
Closed
@SimonDanisch

Description

@SimonDanisch

Hi all,
I want to finally have a clean build for ImageMagick.
There seem to be a lot of issues when building ImageMagick.
It seems to me as if the current build system relies on a lot of uncertainties,.
E.g.:

  • using __init__, in an automatically generated include. Depending on where included and what Julia version you have, __init__ will be called at different points, which makes it hard to reason about
  • onload hooks are not guaranteed to get executed. Since there is no documentation its pretty opaque to me, but seems they don't get executed when the library is already present. But e.g. the variable ENV["MAGICK_CODER_MODULE_PATH"] should also be set even if ImageMagick is already present, as some of my experiments show. So putting this into onload is asking for trouble.
  • why and when exactly ccall((:MagickQueryConfigureOption, libwand), Ptr{UInt8}, (Ptr{UInt8},), "LIB_VERSION_NUMBER") segfaults on OSX wasn't really found out?! Build segfaults on OS X JuliaImages/Images.jl#188
  • I'm not sure why the version check is in a Module. Is this some hack for __init__ ?

From what I gathered we need these:

  • always set ENV["MAGICK_CODER_MODULE_PATH"] and ENV["MAGICK_CODER_MODULE_PATH"] before calling any function from ImageMagick
  • it seems osx needs also the path to be set!?
  • libversion is only needed for sRGB vs RGB
  • MagickWandGenesis and the ENV variables must be called before getting the version
  • MagickWandGenesis only needs to get called one time after the build?! And on OSX every time the module loads!? I don't know :D

Then there is also this segfault with ImageMagick: JuliaLang/julia#13318
Because of all these issues, I started looking into polishing DevIL.jl a little more, as it is more lightweight and easier to setup compared to ImageMagick.
There I have problems with the Linux and OSX build. Any help would be appreciated:
https://travis-ci.org/JuliaGL/DevIL.jl
(Tests are successful, because they're still empty - builds are not.)
Here is an overview of DevIL's features: http://openil.sourceforge.net/features.php
It seems pretty capable and easy to integrate into FileIO.
Since I now allow for multiple IO libraries for the same formats, its also straight forward to have multiple libraries as a back up for some format.

Sorry for any misunderstandings. Everything is a little opaque to me and I don't have lots of time to do this :(

Best,
Simon

From the issues on Images.jl I conclude that this concerns: @timholy @lucasb-eyer @staticfloat @rsrock @jwmerrill

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions