Help with zef Portfile

raf macports at raf.org
Sat Nov 25 02:12:41 UTC 2023


Hi,

I'm writing a Portfile for raku's module manager, zef (port named raku-zef),
and I'm getting a destroot error I don't understand.

The test part looks like this:

  test.run    yes
  test.cmd    "${prefix}/bin/rakudo" -I"${worksrcpath}" bin/zef test "${worksrcpath}"
  test.target

And it works and the tests pass (Yay!).

The destroot part looks like this:

  destroot {
      "${prefix}/bin/rakudo" -I"${worksrcpath}" bin/zef \
          --to="inst#${destroot}${prefix}/share/perl6/site" \
          install "${worksrcpath}"

      ln -s "${prefix}/share/perl6/site/bin/zef"   "${prefix}/bin/zef"
      ln -s "${prefix}/share/perl6/site/bin/zef-m" "${prefix}/bin/zef-m"
  }

Which results in this error:

  :error:destroot Failed to destroot raku-zef: invalid command name "/opt/local/bin/rakudo"
  :debug:destroot Error code: NONE
  :debug:destroot Backtrace: invalid command name "/opt/local/bin/rakudo"
  :debug:destroot     while executing
  :debug:destroot "$procedure $targetname"

As "${prefix}/bin/rakudo" is valid in test.cmd,
why isn't it valid during destroot?
And how do I help destroot find it?

If you need to see the whole Portfile, it's at:

  https://github.com/macportsraf/raku-zef-portfile/blob/main/lang/raku-zef/Portfile

cheers,
raf



More information about the macports-users mailing list