This is based on the discussion started here:
- https://github.com/johnmyleswhite/PackageTesting.jl
- https://groups.google.com/forum/#!searchin/julia-dev/package/julia-dev/I_Ul4TgpcZw/z0PVPNurn3cJ
as well as the manual.
This Julep sets the rules for packages to improve the quality of the packaging ecosystem. All packages submitted to METADATA.jl
must meet these requirements.
- Packages must have a
REQUIRE
file that, as well as listing all packages it depends on, explicitly states the version of Julia it depends on.
- Packages should have license information, either in a dedicated
LICENSE
file or stated in a README
- Packages should have a
test/
directory, that contains a fileruntests.jl
- The
runtests.jl
file will be called by an automatic package ecosystem testing system. As such, it should not call long-running performance tests, and should not require any configuration above-and-beyond that is automatically carried out during package installation. If a test fails it should throw an error that causes Julia to exit with an error code. - Packages may contain other testing code in this folder of any nature, it will not be called.
- Packages are encouraged to have a
.travis.yml
file for TravisCI integration.
Each package has a folder in METADATA.jl, with the following contents
- Every package must have a url file in the root of their folder in
METADATA.jl
- The file should contain a single line that states the address of the package's git repository, e.g.
git://github.com/JuliaStats/DataFrames.jl.git
- Every package must have a
DESCRIPTION.md
file in the root of their folder inMETADATA.jl
- The format of the file should be as follows:
# Description
A short description of the package
# Keywords
A comma separated list of keywords, e.g. distributions, probability, random normals, monte carlo
# Maintainers
A comma separated list of maintainers
# Install notes
A short description that will be displayed when the package is installed. Should be used only if manual operations must be performed to complete installation.
- Every package must have a
versions
folder, see the README in https://github.com/JuliaLang/METADATA.jl/tree/devel
@staticfloat, Only reason to separate INSTALL and TEST is that some package's full test suite might take too long to run - slowing down package installation. I imagine running the DataFrames.jl test suite takes a non-trivial amount of time (does it?). If this is a non-factor, we should combine them, because it definitely adds complexity.
Automatic issue submission is awesome.
Given we're looking at rolling this out post 0.2, or at least not blocking 0.2 on it, I'm going to take some time prototyping some code in https://github.com/IainNZ/PackageEvaluator.jl