Improve COutPoint less operator
[bitcoinplatinum.git] / contrib / devtools / README.md
blob1103ca86c5e82a719bee3b6fa58cee9b53394f3b
1 Contents
2 ========
3 This directory contains tools for developers working on this repository.
5 check-doc.py
6 ============
8 Check if all command line args are documented. The return value indicates the
9 number of undocumented args.
11 clang-format.py
12 ===============
14 A script to format cpp source code according to [.clang-format](../../src/.clang-format). This should only be applied to new files or files which are currently not actively developed on. Also, git subtrees are not subject to formatting.
16 clang-format-diff.py
17 ===================
19 A script to format unified git diffs according to [.clang-format](../../src/.clang-format).
21 For instance, to format the last commit with 0 lines of context,
22 the script should be called from the git root folder as follows.
24 ```
25 git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
26 ```
28 fix-copyright-headers.py
29 ========================
31 Every year newly updated files need to have its copyright headers updated to reflect the current year.
32 If you run this script from the root folder it will automatically update the year on the copyright header for all
33 source files if these have a git commit from the current year.
35 For example a file changed in 2015 (with 2015 being the current year):
37 ```// Copyright (c) 2009-2013 The Bitcoin Core developers```
39 would be changed to:
41 ```// Copyright (c) 2009-2015 The Bitcoin Core developers```
43 git-subtree-check.sh
44 ====================
46 Run this script from the root of the repository to verify that a subtree matches the contents of
47 the commit it claims to have been updated to.
49 To use, make sure that you have fetched the upstream repository branch in which the subtree is
50 maintained:
51 * for `src/secp256k1`: https://github.com/bitcoin/secp256k1.git (branch master)
52 * for `src/leveldb`: https://github.com/bitcoin/leveldb.git (branch bitcoin-fork)
53 * for `src/univalue`: https://github.com/bitcoin/univalue.git (branch master)
55 Usage: `git-subtree-check.sh DIR COMMIT`
57 `COMMIT` may be omitted, in which case `HEAD` is used.
59 github-merge.py
60 ===============
62 A small script to automate merging pull-requests securely and sign them with GPG.
64 For example:
66   ./github-merge.py 3077
68 (in any git repository) will help you merge pull request #3077 for the
69 bitcoin/bitcoin repository.
71 What it does:
72 * Fetch master and the pull request.
73 * Locally construct a merge commit.
74 * Show the diff that merge results in.
75 * Ask you to verify the resulting source tree (so you can do a make
76 check or whatever).
77 * Ask you whether to GPG sign the merge commit.
78 * Ask you whether to push the result upstream.
80 This means that there are no potential race conditions (where a
81 pullreq gets updated while you're reviewing it, but before you click
82 merge), and when using GPG signatures, that even a compromised github
83 couldn't mess with the sources.
85 Setup
86 ---------
87 Configuring the github-merge tool for the bitcoin repository is done in the following way:
89     git config githubmerge.repository bitcoin/bitcoin
90     git config githubmerge.testcmd "make -j4 check" (adapt to whatever you want to use for testing)
91     git config --global user.signingkey mykeyid (if you want to GPG sign)
93 optimize-pngs.py
94 ================
96 A script to optimize png files in the bitcoin
97 repository (requires pngcrush).
99 security-check.py and test-security-check.py
100 ============================================
102 Perform basic ELF security checks on a series of executables.
104 symbol-check.py
105 ===============
107 A script to check that the (Linux) executables produced by gitian only contain
108 allowed gcc, glibc and libstdc++ version symbols. This makes sure they are
109 still compatible with the minimum supported Linux distribution versions.
111 Example usage after a gitian build:
113     find ../gitian-builder/build -type f -executable | xargs python contrib/devtools/symbol-check.py 
115 If only supported symbols are used the return value will be 0 and the output will be empty.
117 If there are 'unsupported' symbols, the return value will be 1 a list like this will be printed:
119     .../64/test_bitcoin: symbol memcpy from unsupported version GLIBC_2.14
120     .../64/test_bitcoin: symbol __fdelt_chk from unsupported version GLIBC_2.15
121     .../64/test_bitcoin: symbol std::out_of_range::~out_of_range() from unsupported version GLIBCXX_3.4.15
122     .../64/test_bitcoin: symbol _ZNSt8__detail15_List_nod from unsupported version GLIBCXX_3.4.15
124 update-translations.py
125 ======================
127 Run this script from the root of the repository to update all translations from transifex.
128 It will do the following automatically:
130 - fetch all translations
131 - post-process them into valid and committable format
132 - add missing translations to the build system (TODO)
134 See doc/translation-process.md for more information.