mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
7be2b2456a
fa3c910bfeab00703c947c5200a64c21225b50ef test: Move linters to test/lint, add readme (MarcoFalke) Pull request description: This moves the checks and linters from `devtools` to a subfolder in `test`. (Motivated by my opinion that the dev tools are mostly for generating code and updating the repo whereas the linters are read-only checks.) Also, adds a readme to clarify that checks and linters are only meant to prevent bugs and user facing issues, not merely stylistic preference or inconsistencies. (This is motivated by the diversity in developers and work flows as well as existing code styles. It would be too disruptive to change all existing code to a single style or too burdensome to force all developers to adhere to a single style. Also note that our style guide is changing, so locking in at the wrong style "too early" would only waste resources.) Tree-SHA512: 9b10e89f2aeaf0c8a9ae248aa891d74e0abf0569f8e5dfd266446efa8bfaf19f0ea0980abf0b0b22f0d8416ee90d7435d21a9f9285b66df43f370b7979173406
177 lines
6.0 KiB
Markdown
177 lines
6.0 KiB
Markdown
Contents
|
|
========
|
|
This directory contains tools for developers working on this repository.
|
|
|
|
clang-format-diff.py
|
|
===================
|
|
|
|
A script to format unified git diffs according to [.clang-format](../../src/.clang-format).
|
|
|
|
For instance, to format the last commit with 0 lines of context,
|
|
the script should be called from the git root folder as follows.
|
|
|
|
```
|
|
git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
|
|
```
|
|
|
|
copyright\_header.py
|
|
====================
|
|
|
|
Provides utilities for managing copyright headers of `The Dash Core
|
|
developers` in repository source files. It has three subcommands:
|
|
|
|
```
|
|
$ ./copyright_header.py report <base_directory> [verbose]
|
|
$ ./copyright_header.py update <base_directory>
|
|
$ ./copyright_header.py insert <file>
|
|
```
|
|
Running these subcommands without arguments displays a usage string.
|
|
|
|
copyright\_header.py report \<base\_directory\> [verbose]
|
|
---------------------------------------------------------
|
|
|
|
Produces a report of all copyright header notices found inside the source files
|
|
of a repository. Useful to quickly visualize the state of the headers.
|
|
Specifying `verbose` will list the full filenames of files of each category.
|
|
|
|
copyright\_header.py update \<base\_directory\> [verbose]
|
|
---------------------------------------------------------
|
|
Updates all the copyright headers of `The Dash Core developers` which were
|
|
changed in a year more recent than is listed. For example:
|
|
```
|
|
// Copyright (c) <firstYear>-<lastYear> The Dash Core developers
|
|
```
|
|
will be updated to:
|
|
```
|
|
// Copyright (c) <firstYear>-<lastModifiedYear> The Dash Core developers
|
|
```
|
|
where `<lastModifiedYear>` is obtained from the `git log` history.
|
|
|
|
This subcommand also handles copyright headers that have only a single year. In
|
|
those cases:
|
|
```
|
|
// Copyright (c) <year> The Dash Core developers
|
|
```
|
|
will be updated to:
|
|
```
|
|
// Copyright (c) <year>-<lastModifiedYear> The Dash Core developers
|
|
```
|
|
where the update is appropriate.
|
|
|
|
copyright\_header.py insert \<file\>
|
|
------------------------------------
|
|
Inserts a copyright header for `The Dash Core developers` at the top of the
|
|
file in either Python or C++ style as determined by the file extension. If the
|
|
file is a Python file and it has `#!` starting the first line, the header is
|
|
inserted in the line below it.
|
|
|
|
The copyright dates will be set to be `<year_introduced>-<current_year>` where
|
|
`<year_introduced>` is according to the `git log` history. If
|
|
`<year_introduced>` is equal to `<current_year>`, it will be set as a single
|
|
year rather than two hyphenated years.
|
|
|
|
If the file already has a copyright for `The Dash Core developers`, the
|
|
script will exit.
|
|
|
|
gen-manpages.sh
|
|
===============
|
|
|
|
A small script to automatically create manpages in ../../doc/man by running the release binaries with the -help option.
|
|
This requires help2man which can be found at: https://www.gnu.org/software/help2man/
|
|
|
|
With in-tree builds this tool can be run from any directory within the
|
|
repostitory. To use this tool with out-of-tree builds set `BUILDDIR`. For
|
|
example:
|
|
|
|
```bash
|
|
BUILDDIR=$PWD/build contrib/devtools/gen-manpages.sh
|
|
```
|
|
|
|
github-merge.py
|
|
===============
|
|
|
|
A small script to automate merging pull-requests securely and sign them with GPG.
|
|
|
|
For example:
|
|
|
|
./github-merge.py 3077
|
|
|
|
(in any git repository) will help you merge pull request #3077 for the
|
|
dashpay/dash repository.
|
|
|
|
What it does:
|
|
* Fetch master and the pull request.
|
|
* Locally construct a merge commit.
|
|
* Show the diff that merge results in.
|
|
* Ask you to verify the resulting source tree (so you can do a make
|
|
check or whatever).
|
|
* Ask you whether to GPG sign the merge commit.
|
|
* Ask you whether to push the result upstream.
|
|
|
|
This means that there are no potential race conditions (where a
|
|
pullreq gets updated while you're reviewing it, but before you click
|
|
merge), and when using GPG signatures, that even a compromised GitHub
|
|
couldn't mess with the sources.
|
|
|
|
Setup
|
|
---------
|
|
Configuring the github-merge tool for the bitcoin repository is done in the following way:
|
|
|
|
git config githubmerge.repository dashpay/dash
|
|
git config githubmerge.testcmd "make -j4 check" (adapt to whatever you want to use for testing)
|
|
git config --global user.signingkey mykeyid (if you want to GPG sign)
|
|
|
|
optimize-pngs.py
|
|
================
|
|
|
|
A script to optimize png files in the dash
|
|
repository (requires pngcrush).
|
|
|
|
security-check.py and test-security-check.py
|
|
============================================
|
|
|
|
Perform basic ELF security checks on a series of executables.
|
|
|
|
symbol-check.py
|
|
===============
|
|
|
|
A script to check that the (Linux) executables produced by Gitian only contain
|
|
allowed gcc, glibc and libstdc++ version symbols. This makes sure they are
|
|
still compatible with the minimum supported Linux distribution versions.
|
|
|
|
Example usage after a Gitian build:
|
|
|
|
find ../gitian-builder/build -type f -executable | xargs python contrib/devtools/symbol-check.py
|
|
|
|
If only supported symbols are used the return value will be 0 and the output will be empty.
|
|
|
|
If there are 'unsupported' symbols, the return value will be 1 a list like this will be printed:
|
|
|
|
.../64/test_dash: symbol memcpy from unsupported version GLIBC_2.14
|
|
.../64/test_dash: symbol __fdelt_chk from unsupported version GLIBC_2.15
|
|
.../64/test_dash: symbol std::out_of_range::~out_of_range() from unsupported version GLIBCXX_3.4.15
|
|
.../64/test_dash: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
|
|
|
|
update-translations.py
|
|
======================
|
|
|
|
Run this script from the root of the repository to update all translations from transifex.
|
|
It will do the following automatically:
|
|
|
|
- fetch all translations
|
|
- post-process them into valid and committable format
|
|
- add missing translations to the build system (TODO)
|
|
|
|
See doc/translation-process.md for more information.
|
|
|
|
circular-dependencies.py
|
|
========================
|
|
|
|
Run this script from the root of the source tree (`src/`) to find circular dependencies in the source code.
|
|
This looks only at which files include other files, treating the `.cpp` and `.h` file as one unit.
|
|
|
|
Example usage:
|
|
|
|
cd .../src
|
|
../contrib/devtools/circular-dependencies.py {*,*/*,*/*/*}.{h,cpp}
|