Note: this is very much a draft and under discussion, please contribute or comment!

Raku Core Packages

XXX explain moarvm, nqp, rakudo and raku packages, their roles etc

XXX explain core/site/vendor

Packaged Modules

A module package is a debian package that contains Raku code to be used by other Raku code, typically in the form of .pm6 files, and/or Raku executable scripts that are directly executable by a user. The majority of all packages in the Raku ecosystem will fall into this category.

XXX delineate to end-user-programs that happen to be implemented in raku

Package Names

Raku module package names should start with "raku-" to make it clear that they are part of the Raku ecosystem. The remainder of the package name should be formed from the "primary" module in the package, what will typically show up in a "use" statement. So for example JSON::Tiny would be packaged as "raku-json-tiny".

Section, Priority, Arch

Raku module packages should be in section "interpreters" and Priority "optional". Typical Raku module packages will be Architecture: any.

Dependencies

Module packages should depend on rakudo, as well as any other raku module packages that they require to be operational. See .p6deps below as well. Additionally these packages may of course depend on any other debian package that is required for operations, and may have recommends and suggests line as well.

Contents

A Raku module package contains pre-compiled files, which are installed in /usr/lib/perl6/vendor/.

Executables

Packaged executables should start with a shebang line using /usr/bin/raku as the interpreter

Many Raku pieces in the wild use /usr/bin/env. We must: * patch executable file to start with #!/usr/bin/raku * patch non-executable module files to remove the first line beginning with #! (aka the shebang line)

Documentation

XXX where does it go, also READMEs

Tests

XXX run tests during package build with prove6

Packaging Support

Please use dh-make-raku to create and maintain Raku module packages.

This tool will: dh-make-raku does the following tasks: