Opened 2 years ago

Closed 2 years ago

#64265 closed defect (invalid)

cairo fails to build for ppc+ppc64

Reported by: barracuda156 Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: PowerPC, Leopard, ppc64 Cc: mascguy (Christopher Nielsen)
Port: cairo

Description

In file included from /opt/local/include/glib-2.0/gobject/gobject.h:24,
                 from /opt/local/include/glib-2.0/gobject/gbinding.h:29,
                 from /opt/local/include/glib-2.0/glib-object.h:23,
                 from cairo-gobject.h:44,
                 from cairo-gobject-enums.c:8:
/opt/local/include/glib-2.0/gobject/gtype.h:693: warning: ‘GTypeDebugFlags’ is deprecated
In file included from /opt/local/include/glib-2.0/gobject/gobject.h:24,
                 from /opt/local/include/glib-2.0/gobject/gbinding.h:29,
                 from /opt/local/include/glib-2.0/glib-object.h:23,
                 from cairo-gobject.h:44,
                 from cairo-gobject-structs.c:41:
/opt/local/include/glib-2.0/gobject/gtype.h:693: warning: ‘GTypeDebugFlags’ is deprecated
In file included from /opt/local/include/glib-2.0/gobject/gbinding.h:29,
                 from /opt/local/include/glib-2.0/glib-object.h:23,
                 from cairo-gobject.h:44,
                 from cairo-gobject-structs.c:41:
/opt/local/include/glib-2.0/gobject/gobject.h:433: warning: ‘GParameter’ is deprecated
In file included from /opt/local/include/glib-2.0/gobject/gbinding.h:29,
                 from /opt/local/include/glib-2.0/glib-object.h:23,
                 from cairo-gobject.h:44,
                 from cairo-gobject-enums.c:8:
/opt/local/include/glib-2.0/gobject/gobject.h:433: warning: ‘GParameter’ is deprecated
cairo-gobject-enums.c: In function ‘cairo_gobject_status_get_type’:
cairo-gobject-enums.c:14: error: size of array ‘_GStaticAssertCompileTimeAssertion_14’ is negative
cairo-gobject-enums.c:14: warning: cast to pointer from integer of different size
cairo-gobject-structs.c: In function ‘cairo_gobject_context_get_type’:
cairo-gobject-structs.c:57: error: size of array ‘_GStaticAssertCompileTimeAssertion_58’ is negative
cairo-gobject-structs.c:57: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:57: error: size of array ‘_GStaticAssertCompileTimeAssertion_58’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_device_get_type’:
cairo-gobject-structs.c:59: error: size of array ‘_GStaticAssertCompileTimeAssertion_60’ is negative
cairo-gobject-structs.c:59: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:59: error: size of array ‘_GStaticAssertCompileTimeAssertion_60’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_pattern_get_type’:
cairo-gobject-structs.c:61: error: size of array ‘_GStaticAssertCompileTimeAssertion_62’ is negative
cairo-gobject-structs.c:61: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:61: error: size of array ‘_GStaticAssertCompileTimeAssertion_62’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_surface_get_type’:
cairo-gobject-structs.c:63: error: size of array ‘_GStaticAssertCompileTimeAssertion_64’ is negative
cairo-gobject-structs.c:63: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:63: error: size of array ‘_GStaticAssertCompileTimeAssertion_64’ is negative
cairo-gobject-enums.c:63: error: size of array ‘_GStaticAssertCompileTimeAssertion_63’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_scaled_font_get_type’:
cairo-gobject-structs.c:65: error: size of array ‘_GStaticAssertCompileTimeAssertion_66’ is negative
cairo-gobject-structs.c:65: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:65: error: size of array ‘_GStaticAssertCompileTimeAssertion_66’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_content_get_type’:
cairo-gobject-enums.c:72: error: size of array ‘_GStaticAssertCompileTimeAssertion_72’ is negative
cairo-gobject-enums.c:72: warning: cast to pointer from integer of different size
cairo-gobject-structs.c: In function ‘cairo_gobject_font_face_get_type’:
cairo-gobject-structs.c:67: error: size of array ‘_GStaticAssertCompileTimeAssertion_68’ is negative
cairo-gobject-structs.c:67: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:67: error: size of array ‘_GStaticAssertCompileTimeAssertion_68’ is negative
cairo-gobject-enums.c:81: error: size of array ‘_GStaticAssertCompileTimeAssertion_81’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_font_options_get_type’:
cairo-gobject-structs.c:69: error: size of array ‘_GStaticAssertCompileTimeAssertion_70’ is negative
cairo-gobject-structs.c:69: warning: cast to pointer from integer of different size
cairo-gobject-enums.c: In function ‘cairo_gobject_operator_get_type’:
cairo-gobject-enums.c:90: error: size of array ‘_GStaticAssertCompileTimeAssertion_90’ is negative
cairo-gobject-enums.c:90: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:69: error: size of array ‘_GStaticAssertCompileTimeAssertion_70’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_region_get_type’:
cairo-gobject-structs.c:71: error: size of array ‘_GStaticAssertCompileTimeAssertion_72’ is negative
cairo-gobject-structs.c:71: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:71: error: size of array ‘_GStaticAssertCompileTimeAssertion_72’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_matrix_get_type’:
cairo-gobject-structs.c:82: error: size of array ‘_GStaticAssertCompileTimeAssertion_83’ is negative
cairo-gobject-enums.c:125: error: size of array ‘_GStaticAssertCompileTimeAssertion_125’ is negativecairo-gobject-structs.c:82: warning: cast to pointer from integer of different size

cairo-gobject-structs.c:82: error: size of array ‘_GStaticAssertCompileTimeAssertion_83’ is negative
cairo-gobject-structs.c: In function ‘cairo_gobject_rectangle_get_type’:
cairo-gobject-structs.c:85: error: size of array ‘_GStaticAssertCompileTimeAssertion_86’ is negative
cairo-gobject-structs.c:85: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:85: error: size of array ‘_GStaticAssertCompileTimeAssertion_86’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_antialias_get_type’:
cairo-gobject-enums.c:134: error: size of array ‘_GStaticAssertCompileTimeAssertion_134’ is negative
cairo-gobject-enums.c:134: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:150: error: size of array ‘_GStaticAssertCompileTimeAssertion_150’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_fill_rule_get_type’:
cairo-gobject-enums.c:159: error: size of array ‘_GStaticAssertCompileTimeAssertion_159’ is negative
cairo-gobject-enums.c:159: warning: cast to pointer from integer of different size
cairo-gobject-structs.c: In function ‘cairo_gobject_rectangle_int_get_type’:
cairo-gobject-structs.c:88: error: size of array ‘_GStaticAssertCompileTimeAssertion_89’ is negative
cairo-gobject-enums.c:167: error: size of array ‘_GStaticAssertCompileTimeAssertion_167’ is negative
cairo-gobject-structs.c:88: warning: cast to pointer from integer of different size
cairo-gobject-enums.c: In function ‘cairo_gobject_line_cap_get_type’:
cairo-gobject-enums.c:176: error: size of array ‘_GStaticAssertCompileTimeAssertion_176’ is negative
cairo-gobject-enums.c:176: warning: cast to pointer from integer of different size
cairo-gobject-structs.c:88: error: size of array ‘_GStaticAssertCompileTimeAssertion_89’ is negative
cairo-gobject-enums.c:185: error: size of array ‘_GStaticAssertCompileTimeAssertion_185’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_line_join_get_type’:
cairo-gobject-enums.c:194: error: size of array ‘_GStaticAssertCompileTimeAssertion_194’ is negative
cairo-gobject-enums.c:194: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:203: error: size of array ‘_GStaticAssertCompileTimeAssertion_203’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_text_cluster_flags_get_type’:
cairo-gobject-enums.c:212: error: size of array ‘_GStaticAssertCompileTimeAssertion_212’ is negative
cairo-gobject-enums.c:212: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:219: error: size of array ‘_GStaticAssertCompileTimeAssertion_219’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_font_slant_get_type’:
cairo-gobject-enums.c:228: error: size of array ‘_GStaticAssertCompileTimeAssertion_228’ is negative
cairo-gobject-enums.c:228: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:237: error: size of array ‘_GStaticAssertCompileTimeAssertion_237’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_font_weight_get_type’:
cairo-gobject-enums.c:246: error: size of array ‘_GStaticAssertCompileTimeAssertion_246’ is negative
cairo-gobject-enums.c:246: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:254: error: size of array ‘_GStaticAssertCompileTimeAssertion_254’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_subpixel_order_get_type’:
cairo-gobject-enums.c:263: error: size of array ‘_GStaticAssertCompileTimeAssertion_263’ is negative
cairo-gobject-enums.c:263: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:274: error: size of array ‘_GStaticAssertCompileTimeAssertion_274’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_hint_style_get_type’:
cairo-gobject-enums.c:283: error: size of array ‘_GStaticAssertCompileTimeAssertion_283’ is negative
cairo-gobject-enums.c:283: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:294: error: size of array ‘_GStaticAssertCompileTimeAssertion_294’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_hint_metrics_get_type’:
cairo-gobject-enums.c:303: error: size of array ‘_GStaticAssertCompileTimeAssertion_303’ is negative
cairo-gobject-enums.c:303: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:312: error: size of array ‘_GStaticAssertCompileTimeAssertion_312’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_font_type_get_type’:
cairo-gobject-enums.c:321: error: size of array ‘_GStaticAssertCompileTimeAssertion_321’ is negative
cairo-gobject-enums.c:321: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:332: error: size of array ‘_GStaticAssertCompileTimeAssertion_332’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_path_data_type_get_type’:
cairo-gobject-enums.c:341: error: size of array ‘_GStaticAssertCompileTimeAssertion_341’ is negative
cairo-gobject-enums.c:341: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:351: error: size of array ‘_GStaticAssertCompileTimeAssertion_351’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_device_type_get_type’:
cairo-gobject-enums.c:360: error: size of array ‘_GStaticAssertCompileTimeAssertion_360’ is negative
cairo-gobject-enums.c:360: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:372: error: size of array ‘_GStaticAssertCompileTimeAssertion_372’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_surface_type_get_type’:
cairo-gobject-enums.c:381: error: size of array ‘_GStaticAssertCompileTimeAssertion_381’ is negative
cairo-gobject-enums.c:381: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:410: error: size of array ‘_GStaticAssertCompileTimeAssertion_410’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_format_get_type’:
cairo-gobject-enums.c:419: error: size of array ‘_GStaticAssertCompileTimeAssertion_419’ is negative
cairo-gobject-enums.c:419: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:431: error: size of array ‘_GStaticAssertCompileTimeAssertion_431’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_pattern_type_get_type’:
cairo-gobject-enums.c:440: error: size of array ‘_GStaticAssertCompileTimeAssertion_440’ is negative
cairo-gobject-enums.c:440: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:451: error: size of array ‘_GStaticAssertCompileTimeAssertion_451’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_extend_get_type’:
cairo-gobject-enums.c:460: error: size of array ‘_GStaticAssertCompileTimeAssertion_460’ is negative
cairo-gobject-enums.c:460: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:470: error: size of array ‘_GStaticAssertCompileTimeAssertion_470’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_filter_get_type’:
cairo-gobject-enums.c:479: error: size of array ‘_GStaticAssertCompileTimeAssertion_479’ is negative
cairo-gobject-enums.c:479: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:491: error: size of array ‘_GStaticAssertCompileTimeAssertion_491’ is negative
cairo-gobject-enums.c: In function ‘cairo_gobject_region_overlap_get_type’:
cairo-gobject-enums.c:500: error: size of array ‘_GStaticAssertCompileTimeAssertion_500’ is negative
cairo-gobject-enums.c:500: warning: cast to pointer from integer of different size
cairo-gobject-enums.c:509: error: size of array ‘_GStaticAssertCompileTimeAssertion_509’ is negative
make[4]: *** [libcairo_gobject_la-cairo-gobject-structs.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: *** [libcairo_gobject_la-cairo-gobject-enums.lo] Error 1
make[4]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64/util/cairo-gobject'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64/util'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64/util'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/work/cairo-1.17.4-ppc64" && /usr/bin/make -j4 -w all 
Exit code: 2
Error: Failed to build cairo: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_cairo/cairo/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there
is a bug.
Error: Processing of port cairo failed

Change History (5)

comment:1 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: mascguy added
Owner: set to ryandesign
Status: newassigned

My guess would be that the glib2 port has an incorrect universal build. The developers do not support universal builds of glib2. It took a lot of work to get glib2 to build universal with a set of patches we were maintaining locally for years. Then, when glib2 switched to the meson build system, it became necessary to rewrite those patches for meson. I was not available to devote the time to that, and eventually someone else did, and I have not evaluated the correctness or completeness of that work. That would probably be where I'd recommend to begin investigating this problem, if you or anyone is interested in doing so. I'm not planning to do so at this time.

In general, and given all the other problems you've found and reported today, I'll note that you should expect to have problems building universal for ppc+ppc64 since that's not a default configuration anywhere and is thus probably completely untested by anyone else, plus building anything for any PowerPC arch is uncommon these days. If you have solutions for these issues to contribute, great, otherwise your tickets may stay open for quite some time until someone else volunteers to try to figure them out.

comment:2 in reply to:  1 ; Changed 2 years ago by barracuda156

Replying to ryandesign:

My guess would be that the glib2 port has an incorrect universal build. The developers do not support universal builds of glib2. It took a lot of work to get glib2 to build universal with a set of patches we were maintaining locally for years. Then, when glib2 switched to the meson build system, it became necessary to rewrite those patches for meson. I was not available to devote the time to that, and eventually someone else did, and I have not evaluated the correctness or completeness of that work. That would probably be where I'd recommend to begin investigating this problem, if you or anyone is interested in doing so. I'm not planning to do so at this time. In general, and given all the other problems you've found and reported today, I'll note that you should expect to have problems building universal for ppc+ppc64 since that's not a default configuration anywhere and is thus probably completely untested by anyone else, plus building anything for any PowerPC arch is uncommon these days. If you have solutions for these issues to contribute, great, otherwise your tickets may stay open for quite some time until someone else volunteers to try to figure them out.

glib2 does not build universal for me indeed.

Basically I am trying to get to building 64-bit R. Unfortunately many ports depend on Python, and any Python fails for ppc64, so I have to manually edit portfiles, but for some ports that still doesn't help. Python problem has been reported 6 years ago, and nothing done even since apparently to fix it.

comment:3 in reply to:  2 ; Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to barracuda156:

glib2 does not build universal for me indeed.

How do you mean? You suggest in this ticket that you're trying to install cairo universal. Cairo declares a dependency on glib2. Therefore, MacPorts would not have allowed you to begin attempting to build cairo until glib2 had successfully been installed universal.

What is the output of:

port -v installed glib2
lipo -info /opt/local/lib/libglib-2.0.dylib

I'm interested to see the variants and architectures for which the port is allegedly installed, and the architectures for which it is actually installed.

comment:4 in reply to:  3 ; Changed 2 years ago by barracuda156

Replying to ryandesign:

Replying to barracuda156:

glib2 does not build universal for me indeed.

How do you mean? You suggest in this ticket that you're trying to install cairo universal. Cairo declares a dependency on glib2. Therefore, MacPorts would not have allowed you to begin attempting to build cairo until glib2 had successfully been installed universal.

Nothing would build universal at all if we just accept default Macports behavior, since no Python builds as universal. Since it is not evident for me whether a port really requires a dependency as universal or it is an artifact of default Macports behavior, if something fails because of a dependency that failed to build as universal, I try disabling arch check for it. In many cases it worked, in some it failed.

What is the output of:

port -v installed glib2
lipo -info /opt/local/lib/libglib-2.0.dylib

The only way glib2 built for me is ppc-only, so:

36-225:~ svacchanda$ port -v installed glib2
The following ports are currently installed:
  glib2 @2.62.6_2+x11 (active) requested_variants='-universal' platform='darwin 9' archs='ppc' date='2021-12-22T12:28:22+0800'

36-225:~ svacchanda$ lipo -info /opt/local/lib/libglib-2.0.dylib
Non-fat file: /opt/local/lib/libglib-2.0.dylib is architecture: ppc7400

I'm interested to see the variants and architectures for which the port is allegedly installed, and the architectures for which it is actually installed.

Every port I try building universal first, if that fails, I try ppc64-only, if that also fails, I try ppc. Aside of python-related ports, most do build as universal, but several fail.

comment:5 in reply to:  4 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: invalid
Status: assignedclosed

Replying to barracuda156:

Replying to ryandesign:

Replying to barracuda156:

glib2 does not build universal for me indeed.

How do you mean? You suggest in this ticket that you're trying to install cairo universal. Cairo declares a dependency on glib2. Therefore, MacPorts would not have allowed you to begin attempting to build cairo until glib2 had successfully been installed universal.

Nothing would build universal at all if we just accept default Macports behavior, since no Python builds as universal.

Python builds fine universal on 10.13 for me as of a few months ago. If it doesn't build for you on your OS, file a bug report about that.

Since it is not evident for me whether a port really requires a dependency as universal or it is an artifact of default Macports behavior, if something fails because of a dependency that failed to build as universal, I try disabling arch check for it. In many cases it worked, in some it failed.

Goodness. That would certainly explain this ticket and perhaps others. You may be right that some ports are only needed as build dependencies and needn't be universal. However by disabling arch checking for it (I actually don't know how you're even accomplishing that) you're potentially just pushing the problem down to the dependent ports, as in this case. I'm going to have to close this ticket as invalid, since it is not true that cairo fails to build universal. (It built universal just fine for me for years on OS versions up to 10.13, most recently a couple months ago before I updated to 10.15.)

Note: See TracTickets for help on using tickets.