cairo build fails with no output - where to start debugging? #20
Comments
I just ran into the same issue (albeit with different binary), and it appears that there are several things in here: (1) The output of vulcan is misleading. When it says "Building with", it's only actually starting the upload. The output makes it seem like the upload has completed (which is not the case): https://github.com/heroku/vulcan/blob/master/lib/vulcan/cli.rb#L46 vs line 55. I think the output should be changed to indicate that the upload is in process. My first problem was that my upload was failing due to a bad connection but I thought it was a failing build. Doh. (2) Once I got on a decent connection and managed to upload the data, the connection is nonetheless terminated after 30s. The upload succeeded, and the logs show that the build is starting, but for whatever reason the connection is killed:
The annoying part is that if I continue watching the logs, I do see the build "finish" but that's well after my connection is dead, hence I can't retrieve the output. |
I just pushed up a new version of vulcan that should fix many if not all of the outstanding issues. Could you try the following:
|
much better! Uploaded successfully and seeing output from the build.. the build fails, but that's my own specific issues (need to figure out some path gymnastics). |
Same here: much better. My cairo build is failing at the configure step - as expected, I know it needs pixman - however it still reports that the build artifacts are available:
I'll build pixman first and provide its output with -d (I think that's how it's intended) and report back if I'm still mystified. But so far it seems like the error reporting is much clearer. Thanks! |
Hmm, sadly with
Looking at the logs for my build server I can see that there's a crash somewhere in the form processing after a GET request for the dependency URL I provided:
If you want more details I can provide them privately (not sure if the specific URLs and build paths are sensitive but I'm omitting them here just in case). I'm reading web.coffee now but I haven't looked at web.js yet to see if it offers more insights. |
Me again, giving this vulcan/Cairo thing another try. I am now running into a different problem where builds that are otherwise successful are hanging at the end and not downloading the build products. It seems to be the same as this Stackoverflow post but it sounds like that issue has been fixed? I have run I followed some of the advice on @rwdaigle's lovely tutorial - when my builds fail I'm running For pixman I saw some instructions about LD_LIBRARY_PATH and LIBDIR. This led me to a mailing list post which explained that I need to set PKG_CONFIG_PATH. If I do this then Cairo builds successfully: # tell Cairo where to find pixman:
$ export PKG_CONFIG_PATH=/app/vendor/pixman-0.20.2/lib/pkgconfig
# I don't think these ended up being necessary, but I tried them:
# export LD_LIBRARY_PATH=/app/vendor/pixman-0.20.2/lib
# export LIBDIR=/app/vendor/pixman-0.20.2/lib
$ bin/make "1704b021-1b7c-4bbb-b110-4d165c88c254" -c "./configure --disable-dependency-tracking --prefix=/app/vendor/cairo-1.10.2 && make && make install" Of course I now have the problem of how to get the build products off this dyno... But at least I have build products! Because of the first issue I haven't been able to make a repeatable process. I would love to add Cairo to the table on Ryan's tutorial - hope you can help :) |
I'm still seeing the issue with hanging builds (I'll open a new issue for that) but I am at least able to get my builds done with For those following along at home, in $ cd vendor/pixman-0.20.2
$ tar -czvf pixman-0.20.2.tgz .
$ cd ../cairo-1.10.2
$ tar -czvf cairo-1.10.2.tgz .
$ cd ../.. (It took a couple of tries to realize that I should tar inside the package itself and not include the package's folder.) And then in > var client = require('knox').createClient({
key: "MY_KEY"
, secret: "MY_SECRET"
, bucket: 'MY_BUCKET'
});
> client.putFile('./vendor/pixman-0.20.2.tgz', './pixman-0.20.2.tgz', console.log);
> client.putFile('./vendor/cairo-1.10.2.tgz', './cairo-1.10.2.tgz', console.log); To make these packages available to Phewf! |
I've successfully built pixman (http://www.cairographics.org/releases/pixman-0.20.2.tar.gz) on the same vulcan instance so I'm pretty sure it's working correctly. I suspect Cairo has other dependencies (pixman, freetype?) which I'll need to specify with
-d
but I'm not sure how to diagnose which ones were missing?My hope is to get a repeatable toolchain together for deploying https://github.com/LearnBoost/node-canvas to Heroku. There are other efforts to do this (https://github.com/elspoono/node-canvas-heroku) but they are falling out of date ... the tutorial to repeat the fix (https://github.com/elspoono/node-canvas-heroku) starts with compiling Cairo for Ubuntu 64-bit, so here I am :)
The text was updated successfully, but these errors were encountered: