Merge pull request #28589 from disassembler/doc-pull-request-template

doc: explain pull request template

authored by Jörg Thalheim and committed by GitHub e682cfc8 029e0f24

+127
+127
doc/submitting-changes.xml
··· 224 224 </section> 225 225 226 226 <section> 227 + <title>Pull Request Template</title> 228 + <para> 229 + The pull request template helps determine what steps have been made for a 230 + contribution so far, and will help guide maintainers on the status of a 231 + change. The motivation section of the PR should include any extra details 232 + the title does not address and link any existing issues related to the pull 233 + request. 234 + </para> 235 + <para>When a PR is created, it will be pre-populated with some checkboxes detailed below: 236 + </para> 237 + <section> 238 + <title>Tested using sandboxing</title> 239 + <para> 240 + When sandbox builds are enabled, Nix will setup an isolated environment 241 + for each build process. It is used to remove further hidden dependencies 242 + set by the build environment to improve reproducibility. This includes 243 + access to the network during the build outside of 244 + <function>fetch*</function> functions and files outside the Nix store. 245 + Depending on the operating system access to other resources are blocked 246 + as well (ex. inter process communication is isolated on Linux); see <link 247 + xlink:href="https://nixos.org/nix/manual/#description-45">build-use-sandbox</link> 248 + in Nix manual for details. 249 + </para> 250 + <para> 251 + Sandboxing is not enabled by default in Nix due to a small performance 252 + hit on each build. In pull requests for <link 253 + xlink:href="https://github.com/NixOS/nixpkgs/">nixpkgs</link> people 254 + are asked to test builds with sandboxing enabled (see <literal>Tested 255 + using sandboxing</literal> in the pull request template) because 256 + in<link 257 + xlink:href="https://nixos.org/hydra/">https://nixos.org/hydra/</link> 258 + sandboxing is also used. 259 + </para> 260 + <para> 261 + Depending if you use NixOS or other platforms you can use one of the 262 + following methods to enable sandboxing <emphasis role="bold">before</emphasis> building the package: 263 + <itemizedlist> 264 + <listitem> 265 + <para> 266 + <emphasis role="bold">Globally enable sandboxing on NixOS</emphasis>: 267 + add the following to 268 + <filename>configuration.nix</filename> 269 + <screen>nix.useSandbox = true;</screen> 270 + </para> 271 + </listitem> 272 + <listitem> 273 + <para> 274 + <emphasis role="bold">Globally enable sandboxing on non-NixOS platforms</emphasis>: 275 + add the following to: <filename>/etc/nix/nix.conf</filename> 276 + <screen>build-use-sandbox = true</screen> 277 + </para> 278 + </listitem> 279 + </itemizedlist> 280 + </para> 281 + 282 + </section> 283 + <section> 284 + <title>Built on platform(s)</title> 285 + <para> 286 + Many Nix packages are designed to run on multiple 287 + platforms. As such, it's important to let the maintainer know which 288 + platforms your changes have been tested on. It's not always practical to 289 + test a change on all platforms, and is not required for a pull request to 290 + be merged. Only check the systems you tested the build on in this 291 + section. 292 + </para> 293 + </section> 294 + <section> 295 + <title>Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)</title> 296 + <para> 297 + Packages with automated tests are much more likely to be merged in a 298 + timely fashion because it doesn't require as much manual testing by the 299 + maintainer to verify the functionality of the package. If there are 300 + existing tests for the package, they should be run to verify your changes 301 + do not break the tests. Tests only apply to packages with NixOS modules 302 + defined and can only be run on Linux. For more details on writing and 303 + running tests, see the <link 304 + xlink:href="https://nixos.org/nixos/manual/index.html#sec-nixos-tests">section 305 + in the NixOS manual</link>. 306 + </para> 307 + </section> 308 + <section> 309 + <title>Tested compilation of all pkgs that depend on this change using <command>nox-review</command></title> 310 + <para> 311 + If you are updating a package's version, you can use nox to make sure all 312 + packages that depend on the updated package still compile correctly. This 313 + can be done using the nox utility. The <command>nox-review</command> 314 + utility can look for and build all dependencies either based on 315 + uncommited changes with the <literal>wip</literal> option or specifying a 316 + github pull request number. 317 + </para> 318 + <para> 319 + review uncommitted changes: 320 + <screen>nix-shell -p nox --run nox-review wip</screen> 321 + </para> 322 + <para> 323 + review changes from pull request number 12345: 324 + <screen>nix-shell -p nox --run nox-review pr 12345</screen> 325 + </para> 326 + </section> 327 + <section> 328 + <title>Tested execution of all binary files (usually in <filename>./result/bin/</filename>)</title> 329 + <para> 330 + It's important to test any executables generated by a build when you 331 + change or create a package in nixpkgs. This can be done by looking in 332 + <filename>./result/bin</filename> and running any files in there, or at a 333 + minimum, the main executable for the package. For example, if you make a change 334 + to <package>texlive</package>, you probably would only check the binaries 335 + associated with the change you made rather than testing all of them. 336 + </para> 337 + </section> 338 + <section> 339 + <title>Meets nixpkgs contribution standards</title> 340 + <para> 341 + The last checkbox is fits <link 342 + xlink:href="https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md">CONTRIBUTING.md</link>. 343 + The contributing document has detailed information on standards the Nix 344 + community has for commit messages, reviews, licensing of contributions 345 + you make to the project, etc... Everyone should read and understand the 346 + standards the community has for contributing before submitting a pull 347 + request. 348 + </para> 349 + 350 + </section> 351 + </section> 352 + 353 + <section> 227 354 <title>Hotfixing pull requests</title> 228 355 229 356 <itemizedlist>