Opened 8 months ago

Last modified 2 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 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 8 months ago.
meson-log_ppc64_exe_wrapper.txt (120.1 KB) - added by barracuda156 8 months ago.

Change History (7)

Changed 8 months ago by barracuda156

Attachment: main.log added

comment:1 Changed 8 months ago by ryandesign (Ryan Schmidt)

Description: modified (diff)

Changed 8 months ago by barracuda156

comment:2 in reply to:  1 Changed 8 months 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 8 months 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 8 months 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 8 months ago by barracuda156 (previous) (diff)

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

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