Discussion area for the Perl 6 toolchain
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
.gitignore
LICENSE
README.md
build.md

README.md

toolchain-bikeshed

Discussion area for the Perl 6 toolchain

packaging issues

For packaging you will want to build in a temporary directory with an unprivileged user, package the resulting files and make installation mostly just extracting of the resulting archive.

  • FIXED: precomp files and the .deps files contain absolute paths which during rpm package build contain $RPM_BUILD_ROOT.
  • FIXED: rev-deps have to be re-compiled on installing a package. This needs root and changing of installed files.
  • FIXED: .rev-deps files of installed modules have to be changed when installing new modules.
  • FIXED: existing files in the short/ directory have to be changed when installing new modules.

possible solutions

  • IMPLEMENTED: We're gonna need a way to provide the source file and the path to use as $?FILE separately to the precomp process (requires changes to rather straight forward code in nqp)
  • REMOVED: The .rev-deps files should be replaced by directories where you can simply drop in the additions.
  • IMPLEMENTED: The files in short/ should probably also be replaced by directories which unfortunatly will incure some runtime cost. This cost may be offset by adding enough information (ver, auth, api) to these files so we only need to load the dist file of the final candidate.

open tickets related to this discussion

nice to have

  • FIXED: Non-SHA filenames for installed modules (this doesn't have to be the case on disk, as long as backtraces include the original filenames)
  • IMPLEMENTED: CUR tools to list installed dists, uninstall dists, list dist contents (basically any(rpm|dpkg|pacman) for CUR)
  • (for panda) don't install to ~/.perl6 by default if you don't have access to site installation; that, or at least make this configurable. A really nice-to-have would be --site, --user, and --lib (which would install to a custom CUR, much like P5 local::lib).
  • META6.json could include a doc_requires for modules used only in DOC blocks.
  • The Elm package manager/ecosystem has some notable features I think it would be cool to adopt:
    • The package manager has a diff function that will tell you the differences between two versions of a package (which functions were added or removed, and which functions' signatures changed)
    • The Elm package ecosystem will refuse to accept a package update that changes the interface (removes a function or changes its signature) without bumping the semantic version