X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=HACKING;h=cf3f58906064381952c45a52c9494faf8a0aa5ce;hb=9f1b4bbe706b3df40793a9573d7f6471a2442222;hp=d4f7a79f8ceec3e05092ff44e57d8397c7dcc556;hpb=57aa19f8460682a41f87b9f7d685278775fff6db;p=fw%2Fopenocd
diff --git a/HACKING b/HACKING
index d4f7a79f8..cf3f58906 100644
--- a/HACKING
+++ b/HACKING
@@ -1,13 +1,20 @@
// This file is part of the Doxygen Developer Manual
/** @page patchguide Patch Guidelines
-@b NB! If you're behind a corporate wall with http only access to the
-world, you can still use these instructions!
-
-@b NB2! You can't send patches to the mailing list anymore at all. Nowadays
+\attention You can't send patches to the mailing list anymore at all. Nowadays
you are expected to send patches to the OpenOCD Gerrit GIT server for a
review.
+\attention If you already have a Gerrit account and want to try a
+different sign in method, please first sign in as usually, press your
+name in the upper-right corner, go to @a Settings, select @a
+Identities pane, press Link Another Identity button. In case
+you already have duplicated accounts, ask administrators for manual
+merging.
+
+\attention If you're behind a corporate wall with http only access to the
+world, you can still use these instructions!
+
@section gerrit Submitting patches to the OpenOCD Gerrit server
OpenOCD is to some extent a "self service" open source project, so to
@@ -22,12 +29,58 @@ The procedure to create a patch is essentially:
- correct the patch and re-send it according to review feedback
Your patch (or commit) should be a "good patch": focus it on a single
-issue, and make it be easily reviewable. Don't make
+issue, and make it easily reviewable. Don't make
it so large that it's hard to review; split large
-patches into smaller ones. (That can also help
-track down bugs later on.) All patches should
+patches into smaller ones (this will also help
+to track down bugs later). All patches should
be "clean", which includes preserving the existing
-coding style and updating documentation as needed.
+coding style and updating documentation as needed. When adding a new
+command, the corresponding documentation should be added to
+@c doc/openocd.texi in the same commit. OpenOCD runs on both Little
+Endian and Big Endian hosts so the code can't count on specific byte
+ordering (in other words, must be endian-clean).
+
+There are several additional methods of improving the quality of your
+patch:
+
+- Runtime testing with Valgrind Memcheck
+
+ This helps to spot memory leaks, undefined behaviour due to
+ uninitialized data or wrong indexing, memory corruption, etc.
+
+- Clang Static Analyzer
+
+ Using this tool uncovers many different kinds of bugs in C code,
+ with problematic execution paths fully explained. It is a part of
+ standard Clang installation.
+
+ To generate a report, run this in the OpenOCD source directory:
+ @code
+ mkdir build-scanbuild; cd build-scanbuild
+ scan-build ../configure
+ scan-build make CFLAGS="-std=gnu99 -I. -I../../jimtcl"
+ @endcode
+
+- Runtime testing with sanitizers
+
+ Both GCC and LLVM/Clang include advanced instrumentation options to
+ detect undefined behaviour and many kinds of memory
+ errors. Available with @c -fsanitize=* command arguments.
+
+ Example usage:
+ @code
+ mkdir build-sanitizers; cd build-sanitizers
+ ../configure CC=clang CFLAGS="-fno-omit-frame-pointer \
+ -fsanitize=address -fsanitize=undefined -ggdb3"
+ make
+ export ASAN_OPTIONS=detect_stack_use_after_return=1
+ src/openocd -s ../tcl -f /path/to/openocd.cfg
+ @endcode
+
+Please consider performing these additional checks where appropriate
+(especially Clang Static Analyzer for big portions of new code) and
+mention the results (e.g. "Valgrind-clean, no new Clang analyzer
+warnings") in the commit message.
Say in the commit message if it's a bugfix (describe the bug) or a new
feature. Don't expect patches to merge immediately
@@ -38,7 +91,7 @@ Add yourself to the GPL copyright for non-trivial changes.
@section stepbystep Step by step procedure
--# Create a Gerrit account at: http://openocd.zylin.com
+-# Create a Gerrit account at: https://review.openocd.org
- On subsequent sign ins, use the full URL prefaced with 'http://'
For example: http://user_identifier.open_id_provider.com
-# Add a username to your profile.
@@ -47,8 +100,14 @@ Add yourself to the GPL copyright for non-trivial changes.
add a username of your choice.
Your username will be required in step 3 and substituted wherever
the string 'USERNAME' is found.
- -# Add an SSH public key following the directions on github:
- https://help.github.com/articles/generating-ssh-keys
+ -# Create an SSH public key following the directions on github:
+ https://help.github.com/articles/generating-ssh-keys . You can skip step 3
+ (adding key to Github account) and 4 (testing) - these are useful only if
+ you actually use Github or want to test whether the new key works fine.
+ -# Add this new SSH key to your Gerrit account:
+ go to 'Settings' > 'SSH Public Keys', paste the contents of
+ ~/.ssh/id_rsa.pub into the text field (if it's not visible click on
+ 'Add Key ...' button) and confirm by clicking 'Add' button.
-# Clone the git repository, rather than just download the source:
@code
git clone git://git.code.sf.net/p/openocd/code openocd
@@ -62,25 +121,34 @@ Add yourself to the GPL copyright for non-trivial changes.
to instruct git locally how to send off the changes.
-# Add a new remote to git using Gerrit username:
@code
-git remote add review ssh://USERNAME@openocd.zylin.com:29418/openocd.git
-git config remote.review.push HEAD:refs/publish/master
+git remote add review ssh://USERNAME@review.openocd.org:29418/openocd.git
+git config remote.review.push HEAD:refs/for/master
@endcode
Or with http only:
@code
-git remote add review http://openocd.zylin.com/p/openocd.git
-git config remote.review.push HEAD:refs/publish/master
+git remote add review https://USERNAME@review.openocd.org/p/openocd.git
+git config remote.review.push HEAD:refs/for/master
+@endcode
+ The http password is configured from your gerrit settings - https://review.openocd.org/#/settings/http-password.
+ \note If you want to simplify http access you can also add your http password to the url as follows:
+@code
+git remote add review https://USERNAME:PASSWORD@review.openocd.org/p/openocd.git
@endcode
+ \note All contributions should be pushed to @c refs/for/master on the
+Gerrit server, even if you plan to use several local branches for different
+topics. It is possible because @c for/master is not a traditional Git
+branch.
-# You will need to install this hook, we will look into a better solution:
@code
-scp -p -P 29418 USERNAME@openocd.zylin.com:hooks/commit-msg .git/hooks/
+scp -p -P 29418 USERNAME@review.openocd.org:hooks/commit-msg .git/hooks/
@endcode
Or with http only:
@code
-wget http://openocd.zylin.com/tools/hooks/commit-msg
+wget https://review.openocd.org/tools/hooks/commit-msg
mv commit-msg .git/hooks
chmod +x .git/hooks/commit-msg
@endcode
-@b NOTE A script exists to simplify the two items above. execute:
+ \note A script exists to simplify the two items above. Execute:
@code
tools/initial.sh
@endcode
@@ -92,7 +160,7 @@ git config --global user.email "john@smith.org"
@endcode
-# Work on your patches. Split the work into
multiple small patches that can be reviewed and
- applied seperately and safely to the OpenOCD
+ applied separately and safely to the OpenOCD
repository.
@code
while(!done) {
@@ -101,7 +169,7 @@ while(!done) {
run tools/checkpatch.sh to verify your patch style is ok.
}
@endcode
- @b TIP! use "git add ." before commit to add new files.
+ \note use "git add ." before commit to add new files.
Comment template, notice the short first line w/topic. The topic field
should identify the main part or subsystem the patch touches. Check
@@ -137,7 +205,7 @@ Further reading: http://www.coreboot.org/Git
The code review is intended to take as long as a week or two to allow
maintainers and contributors who work on OpenOCD only in their spare
-time oportunity to perform a review and raise objections.
+time opportunity to perform a review and raise objections.
With Gerrit much of the urgency of getting things committed has been
removed as the work in progress is safely stored in Gerrit and
@@ -160,7 +228,14 @@ not have to) be disregarded if all conditions listed below are met:
- reviewer does not answer e-mails for another month.
@section browsing Browsing Patches
-All OpenOCD patches can be reviewed here.
+All OpenOCD patches can be reviewed here.
+
+@section reviewing Reviewing Patches
+From the main Review
+page select the patch you want to review and click on that patch. On the
+appearing page select the download method (top right). Apply the
+patch. After building and testing you can leave a note with the "Reply"
+button and mark the patch with -1, 0 and +1.
*/
/** @file
This file contains the @ref patchguide page.