[pkg-GD-devel] Bug#709050: mscgen: fails to build with current libgd2

Niels Thykier niels at thykier.net
Mon May 20 14:08:40 UTC 2013


Control: tags -1 confirmed help

On 2013-05-20 15:06, Colin Watson wrote:
> Package: mscgen
> Version: 0.20-2
> Severity: serious
> User: ubuntu-devel at lists.ubuntu.com
> Usertags: origin-ubuntu saucy
> 
> mscgen fails to build in unstable as follows:
> 
>   make  check-TESTS
>   make[3]: Entering directory `/«PKGBUILDDIR»/build/test'
>   testinput0.msc
>   Error: gdoTextHeight: Could not read font (GDFONTPATH=)
>   FAIL: renderercheck.sh
>   ====================================================
>   1 of 1 test failed
>   Please report to Michael.McTernan.2001 at cs.bris.ac.uk
>   ====================================================
>   make[3]: *** [check-TESTS] Error 1
> 
> If it helps, you can see a corresponding Ubuntu build log here:
> 
>   https://launchpadlibrarian.net/140264375/buildlog_ubuntu-saucy-i386.mscgen_0.20-2build2_FAILEDTOBUILD.txt.gz
> 
> I don't quite know what's happening here, as running the tests by hand
> seems to succeed.
> 
> Thanks,
> 

I can confirm the failure in a sid chroot, but the failure is
non-deterministic.  I have seen 2 successful builds out of 5 or so.
Furthermore the test that fails is also non-deterministic.  Your log has
testinput0.msc, but I saw 17, 5 and one starting with 2 (forgot the
exact number for that one).
  The frequency of the failures appears to be fairly random at first
glance (for testinput0.msc).  I have observed 0 to 496 successful runs
between each failure.  The average number of successes between failures
appears to be around 36 runs (based on 90 observations).  So anyone
wanting to replicate this may want to setup a:
   "while mscgen -Tpng <in-file> ; do : ; done"


Dear pkg-gd developers, do you have any hints as to why gdImageStringFT
would be non-deterministic[1]?  As far as I can tell, it receives the
following arguments:

  NULL,
  rect (int array[8], init'ed to 8 zeroes),
  pen (0 or 0xff - failures tend to be 0),
  "helvetica",
  11.0,
  0,
  0,
  0,
  "gHELLOWt"

The pen value is (AFAICT) always a value returned by
gdImageColorAllocate.  mscgen will always allocate ADRAW_COL_BLACK and
ADRAW_COL_WHITE (in that order) prior to loading any other colors[2].

~Niels

[1] Call context:
http://anonscm.debian.org/gitweb/?p=collab-maint/mscgen.git;a=blob;f=src/gd_out.c;h=64d82b27817dccae83c24ce6a450306be11fcfe4;hb=2ca7e6af2dad9f34d6d1466174b13e646d8ab630#l225

[2]
src/adraw.h:    ADRAW_COL_WHITE   = 0x00ffffff,
src/adraw.h:    ADRAW_COL_BLACK   = 0x00000000,

These are passed like:
    gdImageColorAllocate(context->img,
                         (col & 0xff0000) >> 16,
                         (col & 0x00ff00) >>  8,
                         (col & 0x0000ff) >>  0);

(see the getColorRef function in same file linked to in [1])





More information about the pkg-GD-devel mailing list