Bug 91473 - Can't compile Cairo for 32 bits
Summary: Can't compile Cairo for 32 bits
Status: RESOLVED MOVED
Alias: None
Product: cairo
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Chris Wilson
QA Contact: cairo-bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-07-27 13:10 UTC by piranna
Modified: 2018-08-25 13:52 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
config.log (39.21 KB, text/plain)
2015-07-27 19:46 UTC, piranna
Details
gcc/config.log (220.48 KB, text/plain)
2015-07-27 19:47 UTC, piranna
Details

Description piranna 2015-07-27 13:10:26 UTC
As shown at https://github.com/Automattic/node-canvas/issues/597, when trying to compile node-canvas for i686 using musl as libc I get errors on Cairo regarding to undefined __uint128_t and __int128_t symbols. These are extensions of GCC that seems are only available for 64 systems but Cairo shouldn't be trying to use them on 32 bits systems, or at least it should have check for them. Is it a Cairo bug or I'm doing something wrong?
Comment 1 Uli Schlachter 2015-07-27 18:11:54 UTC
What's the compiler error? Are you sure that you actually building cairo and not something which uses a similar name?
Comment 2 piranna 2015-07-27 19:06:43 UTC
You can find the full output log at https://semaphoreci.com/nodeos/nodeos/branches/master/builds/38, the interesting lines are:


make: Entering directory `/home/runner/NodeOS/node_modules/nodeos-usersfs/obj/i686/nodeos/node-canvas/build'
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-analysis-surface.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-arc.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-array.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-atomic.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-base64-stream.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-base85-stream.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann.o
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann-rectangular.o
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-arc.c:37:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-analysis-surface.c:37:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-array.c:39:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
  CC(target) Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann-rectilinear.o
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-arc.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-atomic.c:34:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-base64-stream.c:39:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-base85-stream.c:37:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-array.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-analysis-surface.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-atomic.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-base64-stream.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-base85-stream.o] Error 1
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-bentley-ottmann-rectangular.c:39:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-bentley-ottmann.c:39:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
In file included from ../deps/cairo/cairo/cairo-fixed-type-private.h:40:0,
                 from ../deps/cairo/cairo/cairo-types-private.h:43,
                 from ../deps/cairo/cairo/cairo-error-private.h:43,
                 from ../deps/cairo/cairo/cairoint.h:74,
                 from ../deps/cairo/cairo/cairo-bentley-ottmann-rectilinear.c:39:
../deps/cairo/cairo/cairo-wideint-type-private.h:129:1: error: unknown type name '__uint128_t'
../deps/cairo/cairo/cairo-wideint-type-private.h:130:1: error: unknown type name '__int128_t'
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann-rectilinear.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann-rectangular.o] Error 1
make: *** [Release/obj.target/cairo/deps/cairo/cairo/cairo-bentley-ottmann.o] Error 1
make: Leaving directory `/home/runner/NodeOS/node_modules/nodeos-usersfs/obj/i686/nodeos/node-canvas/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/runner/NodeOS/node_modules/nodeos-barebones/deps/node/deps/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.13.0-29-generic
gyp ERR! command "node" "/home/runner/NodeOS/node_modules/nodeos-barebones/deps/node/deps/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/runner/NodeOS/node_modules/nodeos-usersfs/obj/i686/nodeos/node-canvas
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok


The problem happens when compiling node-canvas (https://github.com/NodeOS/node-canvas) for i686, this doesn't happens for x86_64. node-canvas internally uses a statically compiled and linked version of Cairo and the other dependencies, and I'm compiling it using GCC 4.7.3 and musl 1.1.10. I've just checked it on my laptop and got the same errors.
Comment 3 Uli Schlachter 2015-07-27 19:23:14 UTC
What does your config.log look like? Cairo does check for uint128_t and __uint128_t and only uses them if they are available. To quote the code where your error appears:

 127 /* gcc has a non-standard name. */
 128 #if HAVE___UINT128_T && !HAVE_UINT128_T
 129 typedef __uint128_t uint128_t;
 130 typedef __int128_t int128_t;                                                                                                                                                             
 131 #define HAVE_UINT128_T 1
 132 #endif

So why does configure find __uint128_t?
Comment 4 piranna 2015-07-27 19:46:06 UTC
Created attachment 117402 [details]
config.log
Comment 5 piranna 2015-07-27 19:47:11 UTC
Created attachment 117403 [details]
gcc/config.log
Comment 6 piranna 2015-07-27 19:48:47 UTC
There was several config.log files, I think I've attached the correct ones but I don't know what should I look for on them, sorry :-/
Comment 7 GitLab Migration User 2018-08-25 13:52:38 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/cairo/cairo/issues/242.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.