githubmodulerakufcntl

How to specify a github repo as the source of dependency of a module in Raku?


My module depends on the Fcntl module (https://github.com/manchicken/perl6-Fcntl), which hasn't been updated in a long time and is broken. However, there's a fork (https://github.com/jonathanstowe/perl6-Fcntl) that works for me if I zef install it manually. Is it possible to specify the dependency in my module's META-6.json such that the correct github repo will be used for installing the module?


Solution

  • No, you cannot list a uri as a dependency. The spec actually states that dependency names in META6.json should match what you would use.

    If you insist on not integrating the namespace into one of the many cooperative ecosystems then you are still free to list the urls in your installation instructions:

    zef install MyModule https://github.com/foo/dependency.git
    

    When a user provides a uri to zef it is essentially treated as a stand-alone ecosystem and thus is able to fulfill dependencies for MyModule. This is ok -- the user is explicitly requesting that source to be used. What is not ok is for module authors to dictate where dependencies are downloaded from (only what dependencies are needed).

    All that said you can solve your problem a different way -- fork the module, change the auth field to something else, list (and use) Fcntl:auth<mynewauth> as the dependency name, and then add your fork to an ecosystem. Alternative you could just bump the version so-to-speak.