Opened 10 months ago

Last modified 8 months ago

#69248 assigned defect

libuv-devel @1.47.0: undefined symbols for arch on 10.14 & 10.15

Reported by: herbygillot (Herby Gillot) Owned by: herbygillot (Herby Gillot)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: barracuda156, kencu (Ken), michaelld (Michael Dickens), Dave-Allured (Dave Allured)
Port: libuv-devel

Description

libuv-devel is failing to build on macOS 10.14 & 10.15 with the following:

10.14:

Undefined symbols for architecture x86_64:
  "_preadv", referenced from:
      _uv__fs_work in libuv_la-fs.o
  "_pwritev", referenced from:
      _uv__fs_work in libuv_la-fs.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libuv.la] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_libuv/libuv-devel/work/libuv-1.47.0'
Command failed:  cd "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_libuv/libuv-devel/work/libuv-1.47.0" && /usr/bin/make -j4 -w all 
Exit code: 2

https://build.macports.org/builders/ports-10.14_x86_64-builder/builds/195042/steps/install-port/logs/stdio

10.15:

Undefined symbols for architecture x86_64:
  "_preadv", referenced from:
      _uv__fs_work in libuv_la-fs.o
  "_pwritev", referenced from:
      _uv__fs_work in libuv_la-fs.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libuv.la] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_libuv/libuv-devel/work/libuv-1.47.0'
Command failed:  cd "/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_libuv/libuv-devel/work/libuv-1.47.0" && /usr/bin/make -j4 -w all 
Exit code: 2

https://build.macports.org/builders/ports-10.15_x86_64-builder/builds/171038/steps/install-port/logs/stdio

These are the last 2 macOS versions not building... if we get this figured out, then we should be able to upgrade the main libuv port.

Change History (10)

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

It was already mentioned here: https://github.com/macports/macports-ports/pull/21114

It was already reported to the developers and they declined to fix it: https://github.com/libuv/libuv/issues/4204

comment:2 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

comment:3 Changed 10 months ago by ryandesign (Ryan Carsten Schmidt)

I also just happened to notice by looking through their commit history that they removed this workaround for a data corruption bug that occurred on old versions of macOS:

https://github.com/libuv/libuv/commit/737f4f953fa908863c3492e6c6a1188acb58370c

Sounds like if the developers actively removing fixes for old macOS versions from their code, we should not attempt to ship this version of libuv on old versions of macOS.

Last edited 10 months ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

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

they reversed this particular change because it broke too many systems

https://github.com/libuv/libuv/commit/8d69f256d18d4a2fc8295399224d433748b8a466

although that may need to be patched and then tested for older macos to be included

Last edited 8 months ago by kencu (Ken) (previous) (diff)

comment:5 in reply to:  1 Changed 8 months ago by barracuda156

Replying to ryandesign:

It was already mentioned here: https://github.com/macports/macports-ports/pull/21114

It was already reported to the developers and they declined to fix it: https://github.com/libuv/libuv/issues/4204

Haven’t we fixed it back then? Or that was something else?

In any case, we should hold off the update until we are sure every supported system works.

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

According to the developers of libuv, macOS 10.x are not supported systems.

If you want to maintain a fork of libuv that reintroduces and maintains support for older systems you can. I don't.

comment:7 Changed 8 months ago by kencu (Ken)

For years, we had pegged back versions of libuv for older systems support embedded in the Portfile, that I maintained.

Software that uses libuv doesn't tend to jump to use the latest features of it ... there is always some lag in feature uptake.

Most likely, that process would be the most efficient, and libuv can still be expected to work on older systems for many years with this process.

Eventually, it will flame out.

comment:8 in reply to:  4 ; Changed 8 months ago by ryandesign (Ryan Carsten Schmidt)

Summary: libuv-devel: undefined symbols for arch on 10.14 & 10.15libuv-devel @1.47.0: undefined symbols for arch on 10.14 & 10.15

Replying to kencu:

they reversed this particular change because it broke too many systems

https://github.com/libuv/libuv/commit/8d69f256d18d4a2fc8295399224d433748b8a466

although that may need to be patched and then tested for older macos to be included

That specific commit was already included in 1.47.0 which is the version that won't compile on macOS 10.15. However I see there have been subsequent commits to fix it which made it into 1.48.0 so the port should be updated to that version.

comment:9 in reply to:  8 Changed 8 months ago by barracuda156

Replying to ryandesign:

Replying to kencu:

they reversed this particular change because it broke too many systems

https://github.com/libuv/libuv/commit/8d69f256d18d4a2fc8295399224d433748b8a466

although that may need to be patched and then tested for older macos to be included

That specific commit was already included in 1.47.0 which is the version that won't compile on macOS 10.15. However I see there have been subsequent commits to fix it which made it into 1.48.0 so the port should be updated to that version.

I will be able to test 1.48.0 only next week, but since it is a -devel port, that is not a stopper. If someone updates it prior to that, I can add needed fixes (if any will be needed) in a few days.

comment:10 Changed 8 months ago by Dave-Allured (Dave Allured)

Cc: Dave-Allured added
Note: See TracTickets for help on using tickets.