Line 5: |
Line 5: |
| == Get the source code == | | == Get the source code == |
| | | |
− | The CRIU sources are tracked by Git. Official CRIU repo is at [https://github.com/xemul/criu https://github.com/xemul/criu]. | + | The CRIU sources are tracked by Git. Official CRIU repo is at [https://github.com/checkpoint-restore/criu https://github.com/checkpoint-restore/criu]. |
| | | |
| The repository may contain multiple branches. Development happens in the '''criu-dev''' branch. | | The repository may contain multiple branches. Development happens in the '''criu-dev''' branch. |
Line 12: |
Line 12: |
| | | |
| <pre><nowiki> | | <pre><nowiki> |
− | git clone https://github.com/xemul/criu | + | git clone https://github.com/checkpoint-restore/criu criu |
| + | cd criu |
| git checkout criu-dev | | git checkout criu-dev |
| </nowiki></pre> | | </nowiki></pre> |
Line 22: |
Line 23: |
| To compile CRIU, run: | | To compile CRIU, run: |
| | | |
− | cd criu
| |
| make | | make |
| | | |
− | This should make the <code>./criu</code> executable. | + | This should create the <code>./criu/criu</code> executable. |
| | | |
| == Edit the source code == | | == Edit the source code == |
Line 36: |
Line 36: |
| | | |
| * we prefer tabs and indentations to be 8 characters width | | * we prefer tabs and indentations to be 8 characters width |
− | * consider reading [https://www.kernel.org/doc/Documentation/CodingStyle Linux kernel coding style]. | + | * consider reading [https://www.kernel.org/doc/Documentation/process/coding-style.rst Linux kernel coding style]. |
| | | |
| Other conventions can be learned from the source code itself. In short, make sure your new code | | Other conventions can be learned from the source code itself. In short, make sure your new code |
Line 51: |
Line 51: |
| In case you'd rather have someone else run the tests, you can use travis-ci for your | | In case you'd rather have someone else run the tests, you can use travis-ci for your |
| own github fork of CRIU. It will check the compilation for various supported platforms, | | own github fork of CRIU. It will check the compilation for various supported platforms, |
− | as well as run most of the tests from the suite. See https://travis-ci.org/xemul/criu | + | as well as run most of the tests from the suite. See https://travis-ci.org/checkpoint-restore/criu |
| for more details. | | for more details. |
| | | |
Line 58: |
Line 58: |
| To create a patch, run | | To create a patch, run |
| | | |
− | git format-patch
| + | git format-patch --signoff origin/criu-dev |
| | | |
| You might need to read GIT documentation on how to prepare patches | | You might need to read GIT documentation on how to prepare patches |
Line 64: |
Line 64: |
| http://git-scm.com/documentation for details. It should not be hard | | http://git-scm.com/documentation for details. It should not be hard |
| at all. | | at all. |
| + | |
| + | We recommend to post patches using <code>git send-email</code> |
| + | |
| + | git send-email --cover-letter --no-chain-reply-to --annotate \ |
| + | --confirm=always --to=criu@openvz.org criu-dev |
| + | |
| + | Note that the <code>git send-email</code> subcommand may not be in |
| + | the main git package and using it may require installation of a |
| + | separate package, for example the "git-email" package in Fedora and |
| + | Debian. |
| + | |
| + | If this is your first time using git send-email, you might need to |
| + | configure it to point it to your SMTP server with something like: |
| + | |
| + | git config --global sendemail.smtpServer stmp.example.net |
| + | |
| + | If you get tired of typing <code>--to=criu@openvz.org</code> all the time, |
| + | you can configure that to be automatically handled as well: |
| + | |
| + | git config sendemail.to criu@openvz.org |
| + | |
| + | If a developer is sending another version of the patch (e.g. to address |
| + | review comments), they are advised to note differences to previous versions |
| + | after the <code>---</code> line in the patch so that it helps reviewers but |
| + | doesn't become part of git history. Moreover, such patch needs to be prefixed |
| + | correctly with <code>--subject-prefix=PATCHv2</code> appended to |
| + | <code>git send-email</code> (substitute <code>v2</code> with the correct |
| + | version if needed though). |
| | | |
| == Sign your work == | | == Sign your work == |
Line 75: |
Line 103: |
| can certify the below: | | can certify the below: |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="width: 64em;"> | + | <div class="toccolours mw-collapsible mw-collapsed" style="width: 46em;"> |
| '''Developer's Certificate of Origin 1.1''' | | '''Developer's Certificate of Origin 1.1''' |
| <div class="mw-collapsible-content"> | | <div class="mw-collapsible-content"> |
Line 113: |
Line 141: |
| <code>git commit --amend -s</code>. | | <code>git commit --amend -s</code>. |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="width: 64em;"> | + | <div class="toccolours mw-collapsible mw-collapsed" style="width: 46em;"> |
| '''Example patch message''' | | '''Example patch message''' |
| <div class="mw-collapsible-content"> | | <div class="mw-collapsible-content"> |
Line 140: |
Line 168: |
| sometimes a patch may fly around a week before it gets reviewed. | | sometimes a patch may fly around a week before it gets reviewed. |
| | | |
− | == Continuous Integration == | + | == Continuous integration == |
− | CRIU tests are run for each series. If you get a message from our patchwork that patches haven't pass tests, you have to investigate what is wrong. We recommend to use https://travis-ci.org/ to check patches before sending them into the mailing list. | + | |
| + | ''Main article: [[Continuous integration]]'' |
| + | |
| + | CRIU tests are run for each series sent to the mailing list. If you get a message from our patchwork that patches failed to pass the tests, you have to investigate what is wrong. |
| + | |
| + | We also recommend you to [[Continuous integration#Enable Travis CI for your repo|enable Travis CI for your repo]] to check patches in your git branch, before sending them to the mailing list. |
| | | |
| [[Category:Development]] | | [[Category:Development]] |