Opened 2 years ago

Last modified 19 months ago

#64944 assigned defect

gobject-introspection @1.72.0 for +universal: An exe_wrapper is needed but was not found

Reported by: barracuda156 Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: powerpc, leopard, ppc64 Cc: kencu (Ken), cooljeanius (Eric Gallager)
Port: gobject-introspection

Description (last modified by ryandesign (Ryan Carsten Schmidt))

This is a different issue from #64769

I finally have built dependencies as ppc+ppc64 (aside of python310 and its modules). Thanks to Kencu's advice, I fixed meson so that it can now build for ppc+ppc64.

So at first I added depends_skip_archcheck-append python310 py310-cython to gobject-introspection Portfile and tried to build it as +universal. It failed with the following:

--->  Configuring gobject-introspection
Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0" && /opt/local/bin/meson --prefix=/opt/local -Ddoctool=enabled -Dpython=/opt/local/bin/python3.10 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build 
The Meson build system
Version: 0.59.1
Source dir: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0
Build dir: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build
Build type: native build
Project name: gobject-introspection
Project version: 1.72.0

meson.build:1:0: ERROR: Unable to detect linker for compiler "/usr/bin/gcc-4.2 -Wl,--version -pipe -Os -arch ppc -arch ppc64 -I/opt/local/include"
stdout: 
stderr: 

A full log can be found at /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build/meson-logs/meson-log.txt
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0" && /opt/local/bin/meson --prefix=/opt/local -Ddoctool=enabled -Dpython=/opt/local/bin/python3.10 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build 
Exit code: 1
Error: Failed to configure gobject-introspection: consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build/meson-logs/meson-log.txt
Error: Failed to configure gobject-introspection: configure failure: command execution failed

Then I added muniversal 1.0 PortGroup and tried to build again. It still failed however:

Build targets in project: 37

Found ninja-1.10.2 at /opt/local/bin/ninja

ERROR: An exe_wrapper is needed but was not found. Please define one in cross file and check the command and/or add it to PATH.

A full log can be found at /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build-ppc64/meson-logs/meson-log.txt
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0-ppc64" && /opt/local/bin/meson --prefix=/opt/local -Ddoctool=enabled -Dpython=/opt/local/bin/python3.10 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/gobject-introspection-1.72.0-ppc64 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/work/build-ppc64 --cross-file=ppc64-darwin 
Exit code: 1

ppc32 part had this:

Build targets in project: 37

Found ninja-1.10.2 at /opt/local/bin/ninja
WARNING: Cross file does not specify strip binary, result will not be stripped.
WARNING: Cross file does not specify strip binary, result will not be stripped.

Now, I made cross-files for ppc and ppc64 by just copying from Kencu and replacing arch. For example, original in /opt/local/share/meson/cross for i386-darwin has:

[host_machine]
system = 'darwin'
cpu_family = 'x86'
cpu = 'i386'
endian = 'little'

[binaries]
pkgconfig = '/opt/local/bin/pkg-config'
cmake = '/opt/local/bin/cmake'

Then my ppc64-darwin:

[host_machine]
system = 'darwin'
cpu_family = 'ppc64'
cpu = 'ppc64'
endian = 'big'

[binaries]
pkgconfig = '/opt/local/bin/pkg-config'
cmake = '/opt/local/bin/cmake'

There was nothing about strip binary there. What did I do wrong and how to fix this?

Attachments (2)

main.log (4.0 MB) - added by barracuda156 2 years ago.
meson-log_ppc64_exe_wrapper.txt (120.1 KB) - added by barracuda156 2 years ago.

Change History (7)

Changed 2 years ago by barracuda156

Attachment: main.log added

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

Description: modified (diff)

Changed 2 years ago by barracuda156

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

Replying to ryandesign:

UPD. strip can be defined in cross-files, I have found that. There is a section for binaries. However the major failure with An exe_wrapper is needed but was not found remains unsolved.

We rather try fixing how meson interacts with muniversal than its attempts to build universal binary on its own (if that could work in principle at all), right? From what I understand only apple-gcc-4.x can handle -arch ppc -arch ppc64 at once, and it is pointless to limit ourselves to an ancient compiler case.

comment:3 Changed 2 years ago by kencu (Ken)

You can ignore the strip thing, it is meaningless other than the uneventful warning. With appropriate testing on all systems, strip could be added to the list of binaries already in the cross files. It will not make anything work that doesn't work now, however.

I considered adding it, but there was some reason I didn't add it with the others two or three years back. I think I didn't want meson to have to rely on cctools as a dep.

Are you sure these are right?:

cpu_family = 'ppc64'
cpu = 'ppc64'

they have to match what meson prints out when building ppc64 (and similar for ppc).

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

Replying to kencu:

You can ignore the strip thing, it is meaningless other than the uneventful warning. With appropriate testing on all systems, strip could be added to the list of binaries already in the cross files. It will not make anything work that doesn't work now, however.

I considered adding it, but there was some reason I didn't add it with the others two or three years back. I think I didn't want meson to have to rely on cctools as a dep.

Are you sure these are right?:

cpu_family = 'ppc64'
cpu = 'ppc64'

they have to match what meson prints out when building ppc64 (and similar for ppc).

Looks like yes: https://mesonbuild.com/Reference-tables.html#cpu-families

Last edited 2 years ago by barracuda156 (previous) (diff)

comment:5 Changed 19 months ago by cooljeanius (Eric Gallager)

Cc: cooljeanius added
Note: See TracTickets for help on using tickets.