Search code examples
buildmodulerakuzef

How can I rebuild an edited Raku module that I've downloaded?


I've installed Time::Duration and it failed most of its tests. I want to be able to rebuild the module - with my edits - from the locally stored module.

I edited the file that contains the module (that corresponds to Duration.pm6):

~/.perl6/sources/D00C101A0157E3EAC494310C9961F299240423E7

And then try building via it's json file:

zef --debug build ~/.perl6/dist/83839D8D315EEDEDFEAF211EE42E8D936ACE29CB

This returns:

===> # SKIP: No need to build Time::Duration:ver<2.00>
!!!> Build failure: ~/.perl6/dist/83839D8D315EEDEDFEAF211EE42E8D936ACE29CB at ~/.perl6/dist

I was hoping that this would rebuild the module with the change I made to the source.

Have I done this wrong, or am I going about this entirely wrong?


Solution

  • As it has been noted already you should not modify installed files. However, the workflow for testing changes of some module is pretty straight forward.

    First:

    # Fetch and extract the distribution, then change into its directory.
    # If the distribution is still in zef's local file cache then it will
    # skip the fetch and extraction steps.
    
    zef look Time::Duration
    

    Then:

    At this point you can edit any of the files you wish.

    Finally:

    # test your changes without reinstalling (assumes all dependencies are installed)
    zef test .
    
    # Reinstall the modified version of Time::Duration using one of the following:
    zef install . --force-install
    zef uninstall Time::Duration && zef install .