PerlAlien / Alien-Build

Build external dependencies for use in CPAN
16 stars 25 forks source link

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

Open zmughal opened 9 months ago

zmughal commented 9 months ago

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:

Or just a callback.

shawnlaffan commented 9 months ago

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.