Bug 234784 - graphics/gdk-pixbuf2: Fails to build with PNG option disabled
Summary: graphics/gdk-pixbuf2: Fails to build with PNG option disabled
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-gnome mailing list
Keywords: needs-patch
: 231969 (view as bug list)
Depends on:
Reported: 2019-01-09 14:08 UTC by Thomas Zander
Modified: 2019-08-18 14:54 UTC (History)
4 users (show)

See Also:
bugzilla: maintainer-feedback? (gnome)

Build error log from poudriere (125.31 KB, text/plain)
2019-01-10 11:57 UTC, Thomas Zander
no flags Details
build failure with PNG disabled (108.70 KB, text/plain)
2019-05-23 13:00 UTC, Kubilay Kocak
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Zander freebsd_committer 2019-01-09 14:08:56 UTC
Now here's an interesting one.

I can reproduce the build error quoted by gergely.czuczy@harmless.hu in bug #231969 under the following circumstances:

Host: 12.0 amd64
Build jail: 12.0 i386

gdk-pixbuf2 reproducibly fails to build with

generated_.._resources.c.o' -MF 'tests/tests@@cve-2015-4491@exe/meson-generated_.._resources.c.o.d' -o 'tests/tests@@cve-2015-4491@exe/meson-generated_.._resources.c.o' -c tests/resources.c
cc: error: no such file or directory: 'tests/resources.c'
cc: error: no input files
ninja: build stopped: subcommand failed.
*** Error code 1

if it is restricted to a single make job.
I *have* to set ALLOW_MAKE_JOBS_PACKAGES="gdk-pixbuf2" in poudriere.conf to obtain a successful bulk build.

To confirm, "poudriere testport" builds fail reproducibly if adding MAKE_JOBS_UNSAFE=yes in gdk-pixbuf2's port Makefile.
Comment 1 John Hein 2019-01-09 14:59:37 UTC
Can you attach a full build log showing the failure?
Comment 2 Thomas Zander freebsd_committer 2019-01-10 11:57:19 UTC
Created attachment 200984 [details]
Build error log from poudriere
Comment 3 Thomas Zander freebsd_committer 2019-01-10 11:57:58 UTC
(In reply to John Hein from comment #1)

Sure, no problem. See attachment 200984 [details]
Comment 4 John Hein 2019-01-11 14:48:26 UTC
If you look up a little bit from the end of your build log you'll see:

failed to load "/wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/tests/icc-profile.png": Couldn't recognize the image file format for file '/wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/tests/icc-profile.png'

It's funny that someone else is seeing this error - I hit this last month locally.  In my case, it was a failure of devel/glib20's glib-compile-resources program (it is called by the gdk-pixbuf2 build - specifically gen-resources.py) to find the mime data to identify a file as a png file - it didn't know how to look in share/ and find mime/image/png.xml because of a local problem.  I'd be surprised that a build in a stock poudriere tree would have this issue.  I wound up poking into the source for glib-compile-resources to find the issue.

Hmm... even further up in your log is:

g_module_open() failed for /wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/_build/gdk-pixbuf/libpixbufloader-png.so: Cannot open "/wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/_build/gdk-pixbuf/libpixbufloader-png.so"
-g_module_open() failed for /wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/_build/gdk-pixbuf/libpixbufloader-bmp.so: Cannot open "/wrkdirs/usr/ports/graphics/gdk-pixbuf2/work/gdk-pixbuf-2.36.12/_build/gdk-pixbuf/libpixbufloader-bmp.so"

I didn't see that problem.  Do those .so files exist in your build tree?  If so, then it does look like it could be a build jobs ordering issue where it tries to link with those .so's before they are built - it's somewhat unexpected to see an ordering build failure when you have explicitly disabled parallel building.  Whether that is directly related to the glib-compile-resources (gen-resources.py) failure to identify the .png file or not is not clear - at least I don't understand the connection yet.
Comment 5 Kubilay Kocak freebsd_committer freebsd_triage 2019-05-23 13:00:11 UTC
Created attachment 204566 [details]
build failure with PNG disabled

Just hit this build error on 12amd64 poudriere jail.

However, conveniently, I have ALLOW_MAKE_JOBS=yes (overriding the default of not enabled).

Testing further and using the breadcrumb spotted by John in comment #4, I tested with the PNG option enabled (I had all options disabled to reduce dependencies), and the build succeeds.
Comment 6 Kubilay Kocak freebsd_committer freebsd_triage 2019-05-23 13:03:38 UTC
Might be https://gitlab.gnome.org/GNOME/gdk-pixbuf/issues/106 but there isn't a full log to determine whether or not this is PNG related
Comment 7 Antoine Jacoutot 2019-05-23 13:11:58 UTC
(In reply to Kubilay Kocak from comment #6)

It is with PNG support enabled.
It's due to a missing dependency in the build order of ninja created by meson.
For the time being, we use -Dinstalled_tests=false and this patch as a workaround:

Index: meson.build
--- meson.build.orig
+++ meson.build
@@ -398,7 +398,9 @@ endif
 if not meson.is_cross_build()
-  subdir('tests')
+  if get_option('installed_tests')
+    subdir('tests')
+  endif
Comment 8 Kubilay Kocak freebsd_committer freebsd_triage 2019-05-23 13:22:13 UTC
(In reply to Antoine Jacoutot from comment #7)

Just to clarify, so is my failure (attachment 204566 [details]) not related to PNG and I just got lucky, or are there two issues:

1) one png related, without support it cant detect/parse the .png, so it fails
2) build order re dependencies
Comment 9 Kubilay Kocak freebsd_committer freebsd_triage 2019-05-23 13:22:46 UTC
@Antoine And thank you for following-up to my tweet on the issue, much appreciated
Comment 10 Walter Schwarzenfeld freebsd_triage 2019-08-18 14:54:24 UTC
*** Bug 231969 has been marked as a duplicate of this bug. ***