Opened 6 years ago

Last modified 8 months ago

#47443 new enhancement

Reducing the dependencies of ImageMagick (djvulibre)

Reported by: ocroquette (Olivier Croquette) Owned by: ryandesign (Ryan Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc: Schamschula (Marius Schamschula)
Port: ImageMagick

Description

Currently, the ImageMagick port is unconditionally depending on the "djvulibre" port, bringing in 160 (!) indirect dependencies, including:

  • dbus, and its Launch Agent
  • gtk3
  • cairo
  • python27
  • sqlite3
  • docbook-xml
  • ...

As a quick experiment, I removed djvulibre from the list of dependencies, and I could build ImageMagick and use "convert" successfully. I suggest to remove "djvulibre" as hard dependency and/or create a specific variant if it has added value for some users.

Attachments (1)

Portfile-ImageMagick.diff (1.5 KB) - added by Schamschula (Marius Schamschula) 6 years ago.

Download all attachments as: .zip

Change History (11)

comment:1 Changed 6 years ago by mf2k (Frank Schima)

Owner: changed from macports-tickets@… to vryandesign@…

In the future, please Cc the port maintainers (port info --maintainers ImageMagick), if any.

comment:2 in reply to:  1 Changed 6 years ago by ocroquette (Olivier Croquette)

Replying to mf2k@…:

In the future, please Cc the port maintainers (port info --maintainers ImageMagick), if any.

I will, sorry.

comment:3 Changed 6 years ago by devernay (Frédéric Devernay)

I think installing librsvg with the -viewer variant fixes this. The viewer variant should not be enabled by default in librsvg. I just filed #47596

comment:4 Changed 6 years ago by mf2k (Frank Schima)

Owner: changed from vryandesign@… to ryandesign@…

comment:5 Changed 6 years ago by dbevans (David B. Evans)

As of r135684, the +viewer variant of librsvg is no longer asserted by default. This removes its dependency on gtk3. If you're not using gtk3 for other reasons, this may help.

See #47596 for details.

Changed 6 years ago by Schamschula (Marius Schamschula)

Attachment: Portfile-ImageMagick.diff added

comment:6 Changed 6 years ago by Schamschula (Marius Schamschula)

I've created a djvulibre variant.

As it depends on the rsvg variant, which in turn depends on the pango variant, the variants now use the "requires" syntax to note this fact.

comment:7 Changed 6 years ago by Schamschula (Marius Schamschula)

Cc: mschamschula@… added

Cc Me!

comment:8 in reply to:  6 ; Changed 6 years ago by ryandesign (Ryan Schmidt)

Replying to mschamschula@…:

As it depends on the rsvg variant, which in turn depends on the pango variant, the variants now use the "requires" syntax to note this fact.

How do you know that djvulibre support in ImageMagick requires the rsvg variant? How do you know the rsvg variant requires the pango variant?

comment:9 in reply to:  8 Changed 6 years ago by Schamschula (Marius Schamschula)

Replying to ryandesign@…:

Replying to mschamschula@…:

As it depends on the rsvg variant, which in turn depends on the pango variant, the variants now use the "requires" syntax to note this fact.

How do you know that djvulibre support in ImageMagick requires the rsvg variant? How do you know the rsvg variant requires the pango variant?

I found out the hard way, while trying to build ImageMagick under El Cap, where it currently is impossible to build pango due to some system header issues.

In other words:

  • If you install the rsvg variant, you need pango as a dependency, so why not install the variant?
  • If you install the djvulibre variant, you need both pango and rsvg as dependencies, so why not install those variants?

comment:10 Changed 8 months ago by jpanetta (Julian Panetta)

I also think it would be nice to make djvu optional; djvu currently fails to build on ARM64 (due to its librsvg and thus rust dependency). After disabling djvu--and sadly heic support due to libde265 's x86 assembly not compiling--ImageMagick builds fine.

Note: See TracTickets for help on using tickets.