Go to file
Jon Cinque 7aa82424ba
Add more checks to mergify due to GitHub Actions migration (#777)
* Add more checks to mergify

* Add "rollup" GitHub action

* Add "step" to rollup action

* Update mergify for new rollup step

* Update rollup step name to "all_github_action_checks"
2020-11-02 19:17:00 +01:00
.github Add more checks to mergify due to GitHub Actions migration (#777) 2020-11-02 19:17:00 +01:00
.travis Switch to Github Actions for CI (#768) 2020-11-01 18:42:51 +08:00
ci Switch to Github Actions for CI (#768) 2020-11-01 18:42:51 +08:00
docs Add Search functionality (#729) 2020-10-30 10:02:59 -07:00
memo Drop lifetimes 2020-11-01 20:48:15 -08:00
shared-memory Revert solana_rbpf to 0.1.32 to fix CI (#776) 2020-11-02 16:39:20 +01:00
stake-pool Drop lifetimes 2020-11-01 20:48:15 -08:00
themis Skip bpf-build while running clippy 2020-11-01 20:48:15 -08:00
token Revert solana_rbpf to 0.1.32 to fix CI (#776) 2020-11-02 16:39:20 +01:00
token-lending Bump rollup from 2.32.1 to 2.33.1 in /token-lending/js (#772) 2020-11-02 10:09:02 +00:00
token-swap Refactor curve.rs (#754) 2020-11-02 14:29:00 +01:00
utils Update to solana v1.4.4 2020-11-01 20:48:15 -08:00
.gitignore Port SPL to solana-program and `cargo build-bpf` 2020-10-24 19:21:38 -07:00
.mergify.yml Add more checks to mergify due to GitHub Actions migration (#777) 2020-11-02 19:17:00 +01:00
.travis.yml Switch to Github Actions for CI (#768) 2020-11-01 18:42:51 +08:00
Cargo.lock Revert solana_rbpf to 0.1.32 to fix CI (#776) 2020-11-02 16:39:20 +01:00
Cargo.toml sort 2020-11-01 21:13:52 -08:00
LICENSE Update contributors (#42) 2020-06-17 14:12:46 -07:00
README.md Port SPL to solana-program and `cargo build-bpf` 2020-10-24 19:21:38 -07:00
cbindgen.sh Move c header generation out of build.rs 2020-08-27 23:32:07 -07:00
coverage.sh Port SPL to solana-program and `cargo build-bpf` 2020-10-24 19:21:38 -07:00
package-lock.json Add rustdocs (#39) 2020-06-17 11:25:19 -07:00
patch.crates-io.sh Add token-perf-mon into the workspace 2020-11-01 20:48:15 -08:00
update-solana-dependencies.sh Add remote-wallet to dependency patching 2020-11-01 20:58:46 -08:00

README.md

Build status

Solana Program Library

The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime. These programs are tested against Solana's implementation of Sealevel, solana-runtime, and deployed to its mainnet. As others implement Sealevel, we will graciously accept patches to ensure the programs here are portable across all implementations.

Full documentation is available at https://spl.solana.com

Development

Environment Setup

  1. Install the latest Rust stable from https://rustup.rs/
  2. Install the latest Solana command-line tools from https://docs.solana.com/cli/install-solana-cli-tools

Build

The normal cargo build is available for building programs against your host machine:

$ cargo build

To build a specific program, such as SPL Token, for the Solana BPF target:

$ cd token/program
$ cargo build-bpf

Test

Unit tests contained within all projects can be run with:

$ cargo test

To run a specific program's tests, such as SPL Token:

$ cd token/program
$ cargo test

Integration testing may be performed via the per-project .js bindings. See the token program's js project for an example.

Clippy

$ cargo clippy

Coverage

$ ./coverage.sh

Release Process

SPL programs are currently tagged and released manually. Each program is versioned independently of the others, with all new development occurring on master. Once a program is tested and deemed ready for release:

Bump Version

  • Increment the version number in the program's Cargo.toml
  • Generate a new program ID and replace in <program>/program-id.md and <program>/src/lib.rs
  • Run cargo build <program> to update relevant C bindings. (Note the location of the generated spl_<program>.so for attaching to the Github release.)
  • Open a PR with these version changes and merge after passing CI.

Create Github tag

Program tags are of the form <program>-vX.Y.Z. Create the new tag at the version-bump commit and push to the solana-program-library repository, eg:

$ git tag token-v1.0.0 b24bfe7
$ git push upstream --tags

Publish Github release

  • Go to GitHub Releases UI
  • Click "Draft new release", and enter the new tag in the "Tag version" box.
  • Title the release "SPL vX.Y.Z", complete the description, and attach the spl_<program>.so binary
  • Click "Publish release"

Publish to Crates.io

Navigate to the program directory and run cargo package to test the build. Then run cargo publish. (Currently, programs with generated C bindings fail the final step of verification due to the location of the generated file. Once you are certain the crate is ready, run cargo publish --no-verify to bypass this error.)