Changeset View
Changeset View
Standalone View
Standalone View
CONTRIBUTING.md
Show First 20 Lines • Show All 127 Lines • ▼ Show 20 Lines | |||||
During submission of patches, arcanist will automatically run `arc lint` to | During submission of patches, arcanist will automatically run `arc lint` to | ||||
enforce Bitcoin ABC code formatting standards, and often suggests changes. | enforce Bitcoin ABC code formatting standards, and often suggests changes. | ||||
If code formatting tools do not install automatically on your system, you | If code formatting tools do not install automatically on your system, you | ||||
will have to install the following: | will have to install the following: | ||||
On Ubuntu (>= 18.04+updates): | On Ubuntu (>= 18.04+updates): | ||||
``` | ``` | ||||
sudo apt-get install clang-format-8 clang-tidy-8 clang-tools-8 cppcheck mypy python3-autopep8 flake8 php-codesniffer yamllint | sudo apt-get install clang-format-8 clang-tidy-8 clang-tools-8 cppcheck python3-autopep8 flake8 php-codesniffer yamllint | ||||
``` | ``` | ||||
On Debian (>= 10), the clang-8 family of tools is available from the `buster-backports` repository: | On Debian (>= 10), the clang-8 family of tools is available from the `buster-backports` repository: | ||||
``` | ``` | ||||
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list | echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list | ||||
sudo apt-get update | sudo apt-get update | ||||
sudo apt-get install cppcheck python3-autopep8 flake8 php-codesniffer mypy | sudo apt-get install cppcheck python3-autopep8 flake8 php-codesniffer mypy | ||||
sudo apt-get -t buster-backports install clang-format-8 clang-tidy-8 clang-tools-8 | sudo apt-get -t buster-backports install clang-format-8 clang-tidy-8 clang-tools-8 | ||||
``` | ``` | ||||
If not available in the distribution, `clang-format-8` and `clang-tidy` can be | If not available in the distribution, `clang-format-8` and `clang-tidy` can be | ||||
installed from <https://releases.llvm.org/download.html> or <https://apt.llvm.org>. | installed from <https://releases.llvm.org/download.html> or <https://apt.llvm.org>. | ||||
For example, for macOS: | For example, for macOS: | ||||
``` | ``` | ||||
curl http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz | tar -xJv | curl http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz | tar -xJv | ||||
ln -s $PWD/clang+llvm-8.0.0-x86_64-apple-darwin/bin/clang-format /usr/local/bin/clang-format | ln -s $PWD/clang+llvm-8.0.0-x86_64-apple-darwin/bin/clang-format /usr/local/bin/clang-format | ||||
ln -s $PWD/clang+llvm-8.0.0-x86_64-apple-darwin/bin/clang-tidy /usr/local/bin/clang-tidy | ln -s $PWD/clang+llvm-8.0.0-x86_64-apple-darwin/bin/clang-tidy /usr/local/bin/clang-tidy | ||||
``` | ``` | ||||
If you are modifying a python script, you will need to install `mypy`. The minimum required version is 0.780, because | |||||
the previous ones are known to have issues with some python type annotations. | |||||
On Debian based systems, this can be installed via: | |||||
``` | |||||
sudo apt-get install python3-pip | |||||
pip3 install mypy==0.780 | |||||
echo "export PATH=\"`python3 -m site --user-base`/bin:\$PATH\"" >> ~/.bashrc | |||||
source ~/.bashrc | |||||
``` | |||||
If you are modifying a shell script, you will need to install the `shellcheck` linter. | If you are modifying a shell script, you will need to install the `shellcheck` linter. | ||||
A recent version is required and may not be packaged for your distribution. | A recent version is required and may not be packaged for your distribution. | ||||
Standalone binaries are available for download on | Standalone binaries are available for download on | ||||
[the project's github release page](https://github.com/koalaman/shellcheck/releases). | [the project's github release page](https://github.com/koalaman/shellcheck/releases). | ||||
**Note**: In order for arcanist to detect the `shellcheck` executable, you need to make it available in your `PATH`; | **Note**: In order for arcanist to detect the `shellcheck` executable, you need to make it available in your `PATH`; | ||||
if another version is already installed, make sure the recent one is found first. | if another version is already installed, make sure the recent one is found first. | ||||
Arcanist will tell you what version is expected and what is found when running `arc lint` against a shell script. | Arcanist will tell you what version is expected and what is found when running `arc lint` against a shell script. | ||||
▲ Show 20 Lines • Show All 101 Lines • Show Last 20 Lines |