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:
- Clone upstream repository in "upstream" branch
- Create the files required to build a debian source package on "debian/sid" branch.
- Commit these files
- Create a Raku module project on Debian's salsa
- Setup "origin" remote on Salsa