From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] Allow imagemagick to find ghostscript fonts.
Date: Tue, 9 Feb 2016 18:23:36 +0100 [thread overview]
Message-ID: <20160209172336.GA3682@free.fr> (raw)
In-Reply-To: <56b96b4422432_3e71e0793c203d6@ultri2.mail>
Ricardo, All,
On 2016-02-09 02:29 -0200, Ricardo Martincoski spake thusly:
> I don't need this patch for my own personal use, but I took a look into it.
Thank you, this is very much appreciated! :-)
> On Tue, 29 Dec 2015 17:45:04 +0100, Thomas Petazzoni wrote:
> > Could you give a specific example use of imagemagick that triggers this
> > problem, so that we can reproduce the problem on our side and
> > investigate the possible solutions?
>
> Using this config with the master branch:
> BR2_PACKAGE_IMAGEMAGICK=y
> BR2_PACKAGE_GHOSTSCRIPT_FONTS=y
> BR2_PACKAGE_FREETYPE=y
> The problem can be triggered by converting any text file to ps
> $ cd /tmp ; echo -e 'text 1\ntext 2' > file.txt ; convert file.txt file.ps
Aha, so that is the root of the problem. Thanks for the explanations.
[--SNIP--]
> The wrong path is the default for debian-based distros
> /usr/share/fonts/type1/gsfonts/ # debian non-x11, default for imagemagick
> /usr/share/fonts/X11/Type1/ # debian x11
>
> An alternative solution would be to have the fonts installed to this location
> +++ b/package/ghostscript-fonts/ghostscript-fonts.mk
> @@@ -13,1 -13,1 +13,1 @@@ GHOSTSCRIPT_FONTS_LICENSE_FILES = COPYI
> --GHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/gs
> ++GHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/type1/gsfonts
>
> I don't see from
> grep -w '\(gs\|ghostscript-fonts\|GHOSTSCRIPT_FONTS_\)' -R package/
> any explicit use of this path nor hard dependency.
> But changing it can potentially break packages (in runtime!) if them expect
> the fonts to be installed in the current location.
And why not symlink the former to the latter?
> Does anyone know an example of package that would break?
>
> >> >> Magick: unable to read font `(null)' @ error/annotate.c/RenderFreetype/1153
> >> >> They are non-fatal but could get annoying fast if you are using 'convert'
>
> The error is non-fatal in a batch conversion.
> But each error means a file failed to be converted.
> The output is not generated for the failed file.
This is a sad decision not to fail in that case... :-(
> >> >> on a lot of files.
> >> >>
> >> >> Signed-off-by: Robert Sohn <grepper@gmail.com>
> >> >> ---
> >> >> package/imagemagick/imagemagick.mk | 3 ++-
> >> >> 1 file changed, 2 insertions(+), 1 deletion(-)
> >> >>
> >> >> diff --git a/package/imagemagick/imagemagick.mk b/package/imagemagick/imagemagick.mk
> >> >> index 298d0a8..1abb2a8 100644
> >> >> --- a/package/imagemagick/imagemagick.mk
> >> >> +++ b/package/imagemagick/imagemagick.mk
> >> >> @@ -33,7 +33,8 @@ IMAGEMAGICK_CONF_OPTS = \
> >> >> --without-dps \
> >> >> --without-gslib \
> >> >> --without-fpx \
> >> >> - --without-x
> >> >> + --without-x \
> >> >> + --with-gs-font-dir=/usr/share/fonts/gs
>
> Configuring unconditionally does not seem so bad in this case, IMO.
> The configured path will be added to an XML that will be used at runtime.
> If freetype support is not compiled in or the fonts are not installed,
> /convert/ would fail anyway.
The best would probbly to do something like Thomas suggested:
> >> > ifeq ($(BR2_PACKAGE_GHOSTSCRIPT_FONTS),y)
> >> > IMAGEMAGICK_CONF_OPTS += --with-gs-font-dir=/usr/share/fonts/gs
> >> > endif
> BR2_PACKAGE_FREETYPE is also needed.
ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_PACKAGE_GHOSTSCRIPT_FONTS),yy)
IMAGEMAGICK_CONF_OPTS += --with-gs-font-dir=/usr/share/fonts/gs
endif
But with the symlink I suggested above, that might not even be
necessary, would it?
> >> > Or maybe we should use $(GHOSTSCRIPT_FONTS_TARGET_DIR) here, instead of
> >> > duplicating it?
>
> It seems good practice to me.
> But we can't use GHOSTSCRIPT_FONTS_TARGET_DIR as is, it is prefixed with
> TARGET_DIR. We could create an auxiliary symbol
Then what about:
package/ghostscript-fonts/ghostscript-fonts.mk;
GHOSTSCRIPT_FONTS_DIR = /usr/share/fonts/gs
GHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/$(GHOSTSCRIPT_FONTS_DIR)
package/imagemagick/imagemagick.mk:
ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_PACKAGE_GHOSTSCRIPT_FONTS),yy)
IMAGEMAGICK_CONF_OPTS += --with-gs-font-dir=$(GHOSTSCRIPT_FONTS_DIR)
endif
> >> Hm, the problem is that the issue will remain if ghostscript-fonts are
> >> not installed. I don't know the solution to that.
> >
> >The usual way to set a dependency package is to add a 'select' statement for
> >that package in Config.in. In this case ghostscript-fonts is not a hard
> >dependency, because imagemagick is quite functional without it, and its size
> >is non negligible. Maybe adding a comment to the help text in Config.in would
> >suffice.
> >
> >What do others think?
>
> Adding a comment to the Config.in sounds reasonable to me.
> One would need both BR2_PACKAGE_FREETYPE as optional build dependency and
> BR2_PACKAGE_GHOSTSCRIPT_FONTS as optional runtime dependency to get the
> conversion txt -> ps to work.
Well, since it is an *optional* and *runtime* dependency, then there is
rally nothing to do, neither in the Config.in nor in the .mk.
However, if we want to be a little bit user-friendly, we could add a
Config.in opiton in ImageMagick, like:
config BR2_PACKAGE_IMAGEMAGICK_TXT_PS
bool "support txt->ps conversion"
select BR2_PACKAGE_FREETYPE # runtime
select BR2_PACKAGE_GHOSTSCRIPT_FONTS # runtime
(with the appropriate "depends on" to propagate freetype's and
ghostscript-fonts' own dependencies...
Anyway, thanks a lot Ricardo for the thorough and detailed explanations.
It was really useful. :-)
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2016-02-09 17:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-09 4:29 [Buildroot] [PATCH 1/1] Allow imagemagick to find ghostscript fonts Ricardo Martincoski
2016-02-09 17:23 ` Yann E. MORIN [this message]
2016-02-09 18:16 ` Ricardo Martincoski
-- strict thread matches above, loose matches on Subject: below --
2015-06-16 2:12 grepper
2015-06-16 3:39 ` Baruch Siach
2015-06-16 18:27 ` grepper
2015-06-16 20:01 ` Baruch Siach
2015-12-29 16:45 ` Thomas Petazzoni
2016-07-04 15:50 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160209172336.GA3682@free.fr \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox