Opened 4 years ago

Last modified 2 years ago

#60169 closed defect

meson will not build +universal if llvm-ar is found in the PATH — at Version 9

Reported by: kencu (Ken) Owned by: SoapZA
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: meson

Description (last modified by kencu (Ken))

originally noted with at-spi2-atk but not specific to that port.

Change History (10)

Changed 4 years ago by kencu (Ken)

comment:1 Changed 4 years ago by kencu (Ken)

I am still not sure how to make meson / ninja output full build lines instead of these little summary lines, so I don't exactly know what instructions are being used to build the static library.

I remember something about static libraries being sent to libtool to build. I can't tell if that is happening here or not ...but if it is libtool, perhaps that is relevant.

comment:2 in reply to:  1 Changed 4 years ago by jmroot (Joshua Root)

Replying to kencu:

I am still not sure how to make meson / ninja output full build lines instead of these little summary lines

It looks like running ninja -v is the only way.

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

Oh -- maybe I can stick that in the build.pre_args or something.... thanks.

comment:4 Changed 4 years ago by kencu (Ken)

That worked, Josh. Maybe we should add something like this to the meson PortGroup and perhaps wherever ninja is called:

build.pre_args-prepend -v

here's the scoop on this port:

Found ninja-1.10.0 at /opt/local/bin/ninja
--->  Building at-spi2-atk
Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gnome_at-spi2-atk/at-spi2-atk/work/build" && /opt/local/bin/ninja -j4 -v 
[1/74] /opt/local/bin/clang-mp-9.0 -Idroute/8dce163@@droute@sta -Idroute -I../at-spi2-atk-2.34.2/droute -I. -I../at-spi2-atk-2.34.2/ -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/dbus-1.0 -I/opt/local/lib/dbus-1.0/include -I/opt/local/include -Xclang -fcolor-diagnostics -pipe -Wall -Winvalid-pch -std=gnu99 -O2 -g -D_DEFAULT_SOURCE -DATK_DISABLE_DEPRECATION_WARNINGS -Os -arch x86_64 -arch i386 -MD -MQ 'droute/8dce163@@droute@sta/droute-pairhash.c.o' -MF 'droute/8dce163@@droute@sta/droute-pairhash.c.o.d' -o 'droute/8dce163@@droute@sta/droute-pairhash.c.o' -c ../at-spi2-atk-2.34.2/droute/droute-pairhash.c
[2/74] /opt/local/bin/clang-mp-9.0 -Idroute/8dce163@@droute@sta -Idroute -I../at-spi2-atk-2.34.2/droute -I. -I../at-spi2-atk-2.34.2/ -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/dbus-1.0 -I/opt/local/lib/dbus-1.0/include -I/opt/local/include -Xclang -fcolor-diagnostics -pipe -Wall -Winvalid-pch -std=gnu99 -O2 -g -D_DEFAULT_SOURCE -DATK_DISABLE_DEPRECATION_WARNINGS -Os -arch x86_64 -arch i386 -MD -MQ 'droute/8dce163@@droute@sta/droute-variant.c.o' -MF 'droute/8dce163@@droute@sta/droute-variant.c.o.d' -o 'droute/8dce163@@droute@sta/droute-variant.c.o' -c ../at-spi2-atk-2.34.2/droute/droute-variant.c
[3/74] /opt/local/bin/clang-mp-9.0 -Idroute/8dce163@@droute-test@exe -Idroute -I../at-spi2-atk-2.34.2/droute -I. -I../at-spi2-atk-2.34.2/ -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/dbus-1.0 -I/opt/local/lib/dbus-1.0/include -I/opt/local/include/at-spi-2.0 -I/opt/local/include -Xclang -fcolor-diagnostics -pipe -Wall -Winvalid-pch -std=gnu99 -O2 -g -D_DEFAULT_SOURCE -DATK_DISABLE_DEPRECATION_WARNINGS -Os -arch x86_64 -arch i386 -MD -MQ 'droute/8dce163@@droute-test@exe/droute-test.c.o' -MF 'droute/8dce163@@droute-test@exe/droute-test.c.o.d' -o 'droute/8dce163@@droute-test@exe/droute-test.c.o' -c ../at-spi2-atk-2.34.2/droute/droute-test.c
[4/74] /opt/local/bin/clang-mp-9.0 -Idroute/8dce163@@droute@sta -Idroute -I../at-spi2-atk-2.34.2/droute -I. -I../at-spi2-atk-2.34.2/ -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/dbus-1.0 -I/opt/local/lib/dbus-1.0/include -I/opt/local/include -Xclang -fcolor-diagnostics -pipe -Wall -Winvalid-pch -std=gnu99 -O2 -g -D_DEFAULT_SOURCE -DATK_DISABLE_DEPRECATION_WARNINGS -Os -arch x86_64 -arch i386 -MD -MQ 'droute/8dce163@@droute@sta/droute.c.o' -MF 'droute/8dce163@@droute@sta/droute.c.o.d' -o 'droute/8dce163@@droute@sta/droute.c.o' -c ../at-spi2-atk-2.34.2/droute/droute.c
[5/74] rm -f droute/libdroute.a && llvm-ar csrD droute/libdroute.a 'droute/8dce163@@droute@sta/droute.c.o' 'droute/8dce163@@droute@sta/droute-variant.c.o' 'droute/8dce163@@droute@sta/droute-pairhash.c.o'
[6/74] /opt/local/bin/clang-mp-9.0  -o droute/droute-test 'droute/8dce163@@droute-test@exe/droute-test.c.o' -L/opt/local/lib -Wl,-dead_strip_dylibs -Wl,-undefined,error -Wl,-headerpad_max_install_names -pipe -Os -arch x86_64 -arch i386 -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 droute/libdroute.a /opt/local/lib/libglib-2.0.dylib /opt/local/lib/libintl.dylib -Wl,-framework -Wl,CoreFoundation /opt/local/lib/libdbus-1.dylib /opt/local/lib/libatspi.dylib -Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreFoundation -Wl,-headerpad_max_install_names -Wl,-rpath,@loader_path/ -Wl,-rpath,/opt/local/lib
FAILED: droute/droute-test 
/opt/local/bin/clang-mp-9.0  -o droute/droute-test 'droute/8dce163@@droute-test@exe/droute-test.c.o' -L/opt/local/lib -Wl,-dead_strip_dylibs -Wl,-undefined,error -Wl,-headerpad_max_install_names -pipe -Os -arch x86_64 -arch i386 -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 droute/libdroute.a /opt/local/lib/libglib-2.0.dylib /opt/local/lib/libintl.dylib -Wl,-framework -Wl,CoreFoundation /opt/local/lib/libdbus-1.dylib /opt/local/lib/libatspi.dylib -Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreFoundation -Wl,-headerpad_max_install_names -Wl,-rpath,@loader_path/ -Wl,-rpath,/opt/local/lib
ld: warning: ignoring file droute/libdroute.a, file was built for archive which is not the architecture being linked (x86_64): droute/libdroute.a
Undefined symbols for architecture x86_64:
  "_droute_add_one", referenced from:
      _main in droute-test.c.o
  "_droute_new", referenced from:
      _main in droute-test.c.o
  "_droute_path_add_interface", referenced from:
      _main in droute-test.c.o
  "_droute_path_register", referenced from:
      _main in droute-test.c.o
ld: symbol(s) not found for architecture x86_64

comment:5 Changed 4 years ago by kencu (Ken)

changing the ar to cctools fixed the universal build without using the muniversal PG.

configure.env-append AR=/opt/local/bin/ar

comment:6 Changed 4 years ago by kencu (Ken)

I had previously done this : sudo port select llvm mp-llvm-7.0

It turns out that the llvm-7.0 I had installed was not universal.

Deselcting any llvm like this sudo port select llvm none also fixes the universal build.

It appears that llvm-ar is being found if present, and the build errors out. If llvm-ar is not found, meson falls back to ar it seems, and that works.

note:

[5/74] rm -f droute/libdroute.a && llvm-ar csrD droute/libdroute.a 'droute/8dce163@@droute@sta/droute.c.o' 'droute/8dce163@@droute@sta/droute-variant.c.o' 'droute/8dce163@@droute@sta/droute-pairhash.c.o'

vs

[5/74] rm -f droute/libdroute.a && ar csr droute/libdroute.a 'droute/8dce163@@droute@sta/droute.c.o' 'droute/8dce163@@droute@sta/droute-variant.c.o' 'droute/8dce163@@droute@sta/droute-pairhash.c.o'

I had thought that selecting an llvm that was installed +universal might work, but surprisingly to me, it still errored out, so perhaps there is more sleuthing to do to see why that failed.

For now, having an llvm-ar of any kind on the PATH seems to cause universal builds to fail.

Last edited 4 years ago by kencu (Ken) (previous) (diff)

comment:7 Changed 4 years ago by dbevans (David B. Evans)

@kencu, I'm not sure whether this is a problem with at-spi2-atk and what exactly the fix might be. If you could submit a PR when you know what to do, I'd appreciate it.

comment:8 Changed 4 years ago by kencu (Ken)

I agree -- not sure either -- so long as the user does not sudo port select any llvm version, things should be OK.

Forcing the AR to always be the cctools AR for meson builds is perhaps the proper fix, but ... what ... would we do that generally for meson always, or port-by-port ... ?

I'm inclined to just perhaps file this under "weirdness" and see if it affects anyone else before acting on it...

comment:9 Changed 4 years ago by kencu (Ken)

Description: modified (diff)
Owner: changed from dbevans to SoapZA
Port: meson added; at-spi2-atk removed
Summary: at-spi2-atk @2.34.2 will no longer build +universalmeson will not build +universal if llvm-ar is found in the PATH
Note: See TracTickets for help on using tickets.