Alien-Build icon indicating copy to clipboard operation
Alien-Build copied to clipboard

DESTDIR: Meson's path handling differs from autoconf's on Windows

Open zmughal opened this issue 2 years ago • 1 comments

On Windows, Meson's path handling drops the drive letter from the prefix path when joining the DESTDIR with the prefix.

I have a work around that replaces the private Alien::Build::Util::_destdir_prefix function to make this work:

use Path::Tiny;
use Alien::Build::Util;

# Work around for Meson's `destdir_join` which drops the first part of
# the path when joining (this is the drive letter).
# See <https://github.com/mesonbuild/meson/blob/1.2.3/mesonbuild/scripts/__init__.py>.
*Alien::Build::Util::_destdir_prefix = sub {
  my($destdir, $prefix) = @_;
  $prefix =~ s{^/?([a-z]):}{}i if $^O eq 'MSWin32';
  path($destdir)->child($prefix)->stringify;
};

I'm not sure how to approach fixing this. Perhaps there can be a destdir_prefix_method property:

  • POSIX-ish / MinGW join (default): "D:/path/to/destdir" + "C:/foo/bar" ⇒ "D:/path/to/destdir/c/foo/bar"
  • Meson join: "D:/path/to/destdir" + "C:/foo/bar" ⇒ "D:/path/to/destdir/foo/bar"

Or just a callback.

zmughal avatar Nov 07 '23 21:11 zmughal

Possibly related to #227 (and #195) and #137.

The workaround for those was to write a temporary wrapper for pkg-config and use that. Not sure if Meson supports such an approach, though, or if it would work in any case.

shawnlaffan avatar Nov 07 '23 22:11 shawnlaffan