github.phpd.cn/thought-machine/please@v12.2.0+incompatible/ChangeLog (about) 1 Version 12.2.0 2 -------------- 3 4 * Initial cross-compiling support via new --arch flag. 5 See the docs for more info: https://please.build/cross_compiling.html 6 * Added support for the Java --release flag (new in Java 9/10). 7 * Support to pass environment variables (#302, fixes #205) 8 * Added 'plz query changes' subcommand. This supersedes the old workflow 9 involving plz_diff_graphs and is considerably faster. 10 11 12 Version 12.1.8 13 -------------- 14 15 * Make sure run arguments are passed into sh_binary. 16 * Use jarcat when creating archives for sh_binary rules. 17 * Fix sh_binary to use zip/unzip instead of tar. 18 * Ensure sh_binary extracts files into the same directory as the script being run. 19 20 Version 12.1.3 21 -------------- 22 23 * More symlink fixes in outputs (#299) 24 25 26 Version 12.1.2 27 -------------- 28 29 * Fix for some errors relating to symlinks in outputs. 30 31 32 Version 12.1.1 33 -------------- 34 35 * Fix to incrementality in python_library rules where in some cases bytecode 36 was generated inconsistently. 37 38 39 Version 12.1.0 40 -------------- 41 42 * `pip_library` rules output single .whl files for better cache performance (#297) 43 * Corrected some distutils errors when using Homebrew's `pip3` (#294) 44 * Initial (still experimental) implementation of `http_archive` and 45 `new_http_archive` rules. 46 * Various other improvements to Bazel compatibility. 47 * `remote_file` now has a builtin implementation and can show progress. 48 * A lot of internal refactoring around the implementation of subinclude(). 49 Parse tasks now happen off the main worker 'threads' so they don't block them. 50 This is a prerequisite for subrepo support. 51 * Migrated most uses of `filepath.Walk` to `godirwalk` (#273). 52 * Fixed handling of aliases (#298) 53 54 55 Version 12.0.0 56 -------------- 57 58 * Parser overhaul, cgo interface / cffi has been removed. There is now no requirement 59 for Python to be installed on a machine during initial bootstrap. 60 The still-unnamed BUILD language is now a much tighter subset of Python, which 61 will hopefully not present too many issues unless one is doing particularly fiddly 62 things in BUILD files. 63 * Go rules now filter their sources via build tags (including implicit ones derived from 64 filenames) as `go build` would. This can be suppressed by setting `filter_srcs = False` 65 if the old behaviour is preferred. 66 * The default Python interpreter is now python3. It can be set to python in the 67 .plzconfig if one prefers the old behaviour. 68 * The GoVersion config attribute has been removed, and with it support for versions < 1.5. 69 * The BUILD file linter (accessed via `plz tool lint`) has been removed. The warnings that 70 it reported are essentially all now prohibited by the parser. 71 * The RPC cache now uses gzip compression; the server will need to be updated to the 72 latest version to be able to communicate with clients. 73 74 75 Version 11.4.0 76 -------------- 77 78 * Added --run flag to plz watch which invokes the targets using `plz run` 79 instead of build / test. 80 * Replace hyphen with underscore in buildenv plzconfig sections (#274) 81 * Added `plz query rules` which prints out the currently known set of rules definitions. 82 83 84 Version 11.3.2 85 -------------- 86 87 * Fix for build failures in a rare case where there's a stale output file that is 88 part of the path for another output in a subdirectory, ultimately failing with 89 "not a directory" errors. 90 91 92 Version 11.3.1 93 -------------- 94 95 * Improved checking for banned or deprecated BUILD language features 96 * Compiled with Go 1.9.3, hopefully this may fix rare "sweep increased allocation count" 97 bugs due to https://github.com/golang/go/issues/22781. 98 99 100 Version 11.3.0 101 -------------- 102 103 * Support for Java 9 and JEP-220 features: `java_module` and `java_runtime_image` 104 can be used to build a standalone Java image using modules. 105 New config properties `jlinktool` and `javahome` have been added. 106 107 108 Version 11.2.1 109 -------------- 110 111 * Small fix for some Java coverage instrumentation issues. 112 113 114 Version 11.2.0 115 -------------- 116 117 * Add support for merging Akka's reference.conf files when building 118 java_library and java_binary targets with akka dependencies 119 * Add --env flag on plz run that applies config values to the environment 120 (notably PATH) 121 122 Version 11.1.3 123 -------------- 124 125 * As much sorting as possible of original targets is now retained when they are passed 126 into subcommands (most notably `plz run sequential`, but could be others too). 127 * Fixed some duplicate flags on proto_library. 128 129 130 Version 11.1.2 131 -------------- 132 133 * Fix for go_library when asm_srcs are passed, in some cases build would fail 134 with permissions errors. 135 136 137 Version 11.1.0 138 -------------- 139 140 * python_binary and python_test rules can now import binary modules directly 141 via an import hook that dynamically extracts them as needed. Hence zip_safe is 142 not needed in many cases it was previously. 143 144 145 Version 11.0.2 146 -------------- 147 148 * Several small fixes to please_maven correcting a few cases. 149 150 151 Version 11.0.1 152 -------------- 153 154 * Fixed a rare internal data race. 155 * Added a warning for potential cases where one target outputs into a directory written 156 by another target, which can cause subtle build failures. 157 158 159 Version 11.0.0 160 -------------- 161 162 * Now ships with a builtin parser engine so the .so's aren't necessary (although 163 still included for now) and there's no requirement to have cffi or any Python 164 version installed to run. 165 * Interactive debugging for tests; passing `-d` to `plz test` or `plz cover` 166 causes the test to break into an interactive debugger on failure. Currently only 167 works on Python, C and C++ tests. 168 * Altered priority of config files; `/etc/plzconfig` is now the lowest priority and 169 there is an additional `~/.please/plzconfig` immediately after it. 170 * Added --profile flag which selects a config profile, e.g. `--profile dev` will 171 attempt to read `.plzconfig.dev` if it exists. 172 * Added --version flag to `plz update` to force updating to a particular version, 173 and --latest flag to always update to the latest. 174 * parse.experimentaldir config property can now be repeated. 175 * Removed deprecated plz query completions --bash_script / --zsh_script flags 176 in favour of plz --completion_script. 177 * Fixed a bug where Python tests could fail under coverage for non-trivial setups 178 (like where the srcs are outputs of rules from another package). 179 180 181 Version 10.3.5 182 -------------- 183 184 * Fix an issue on OSX where the parser engine was sometimes not found when plz 185 was invoked through a symlink. 186 187 188 Version 10.3.4 189 -------------- 190 191 * Fix bug where some java tests couldn't load package-private classes when run with 192 coverage and without a test package specified due to security boundaries created 193 by instrumentation process. 194 195 196 Version 10.3.3 197 -------------- 198 199 * Fixed RPC cache server to serve metrics on --http_port as the flag documentation said. 200 --metrics_port still works but will be removed in some future version. 201 202 203 Version 10.3.2 204 -------------- 205 206 * Minor fix to calculation of number of test runs when specifying -n on a flaky test. 207 * Updated metrics on RPC cache server. 208 209 210 Version 10.3.1 211 -------------- 212 213 * Small tab completion fixes. 214 215 216 Version 10.3.0 217 -------------- 218 219 * Support for using pytest as the test runner instead of unittest 220 * Python tests now supply test files as runtime files instead of packaging into 221 the pex itself, leading to somewhat faster rebuild times. 222 * `go_library` rules can now be individually opted out of coverage instrumentation. 223 * `cgo_library` rules now accept a `pkg_config` argument to determine appropriate 224 compiler flags for dependencies. 225 226 227 Version 10.2.0 228 -------------- 229 230 * Support for specifying Go import paths (#249) 231 * `plz follow` now works anywhere (you don't have to be in a plz repo) 232 * Fixed `sh_binary` which wasn't honouring visibility correctly. 233 234 235 Version 10.1.1 236 -------------- 237 238 * Fixes a long-lurking bug where some config values didn't override properly. 239 240 241 Version 10.1.0 242 -------------- 243 244 * Dynamic support for Python wheel naming schemes, either via name_scheme on the 245 rule or by setting it in the config. 246 * diff_graphs added to plz tool. 247 248 249 Version 10.0.1 250 -------------- 251 252 * Minor fix to Python import hooks in please_pex. 253 254 255 Version 10.0.0 256 -------------- 257 258 * please_pex rewritten to be more efficient. This is a breaking change for anyone 259 who assumed they could import pkg_resources or pex as a global which will no longer 260 be available (although these are easy to add using pip_library or python_wheel rules 261 if still needed). 262 * cgo_library takes a subdir argument that is needed if sources are in a subdirectory 263 from the BUILD file (this isn't breaking since it never worked without). 264 * Support for assembly (using go tool asm) in go_library and go_binary rules. 265 * Removed a number of deprecated config properties. 266 * Removed a number of deprecated arguments to builtin build rules (most have been 267 deprecated and often nonfunctional for a long time now). 268 269 270 Version 9.5.1 271 ------------- 272 273 * Is now possible to prevent Java tests from consuming stdout / stderr by passing 274 -DPLZ_NO_OUTPUT_CAPTURE to Java when running the jars. This isn't exposed through 275 plz anywhere though. 276 277 278 Version 9.5.0 279 ------------- 280 281 * New config property, parse.preloadbuilddefs which specifies files to be loaded 282 into the global rule context. 283 * Moved a bunch of config properties (buildfilename, blacklistdirs, lang, parserengine, 284 nonce, experimentaldir and linttool) out of the [please] section since that had 285 turned into a bit of a grab-bag of unstructured properties. 286 Old ones are still honoured for now but will be removed in v10.0. 287 * please_sandbox now mounts a tmpfs on /tmp 288 * `plz query print` prints a comment & build label on stdout rather then the bare label 289 on stderr. 290 291 292 Version 9.4.3 293 ------------- 294 295 * Fix a subtle bug in junit_runner where it could throw an index exception on 296 certain filenames. 297 298 299 Version 9.4.2 300 ------------- 301 302 * Fix to result parsing of Go tests when things log to stdout 303 before the first test begins. 304 305 306 Version 9.4.1 307 ------------- 308 309 * Small fix to maven_jar rules on OSX which would sometimes take the wrong path for 310 binary artifacts. 311 312 313 Version 9.4.0 314 ------------- 315 316 * Added a c_object rule which lets you compile a C or C++ object file from a single 317 input. It's lower-level than c_library so rarely needed, but allows a bit more control. 318 * Added protoc_binary which can download a protoc release to use as the protoc_tool. 319 Unfortunately there is no equivalent available for gRPC C++ / Python plugins. 320 * Pre- and post- build functions are now better optimised about recalculating 321 changes after they run. Can significantly speed up building packages with 322 many c_library rules in them. 323 * Jarcat can now align files to specific size boundaries in a similar way to 324 Android's zipalign command. 325 * Setting PDEATHSIG on child commands which may help ensure that subprocesses 326 (especially workers) terminate correctly. 327 * Runtime data of tests is exposed in a $DATA env var. 328 * Cleaning of the directory cache is now done in-process rather than in a 329 forked subprocess. This allows it to be better synchronised with the main build 330 about what it's deleting. 331 332 333 Version 9.3.2 334 ------------- 335 336 * Fixed a bug where data entries of targets would turn up at build time as well. 337 338 339 Version 9.3.1 340 ------------- 341 342 * Fixed command in previous version. 343 344 345 Version 9.3.0 346 ------------- 347 348 * Downloaded versions are now verified against a detached GPG signature. 349 * Support for following the progress of a remote build using `plz follow`. 350 Requires it to open a port, which is configured in the [events] section 351 of .plzconfig. 352 * Support for arbitrary env vars in .plzconfig which are available to all build rules. 353 Note that these cause rebuilds of all targets on change, because we can't know what 354 effects they'll have. 355 * Go 1.9 is now required to compile Please. 356 357 358 Version 9.2.3 359 ------------- 360 361 * Fix a bug where C++ rules with a single source didn't always honour includes. 362 * Fixed a panic in flags unmarshalling (only when flags were already incorrect, 363 but we now handle it more nicely). 364 365 366 Version 9.2.2 367 ------------- 368 369 * Bugfix in go_get which sometimes failed due to not finding any directories to remove. 370 371 372 Version 9.2.1 373 ------------- 374 375 * Fixed one case that didn't correctly honour the `go` command location. 376 * maven_jars / please_maven now correctly support the @aar syntax. 377 378 379 Version 9.2.0 380 ------------- 381 382 * Added check_config builtin which helps with asserting that things are 383 set in .plzconfig, and ConfigError which is a little more specific than 384 ParseError. 385 * Support for passing multiple values for Maven repos (in config and to 386 rules directly). They're searched in sequence and the rule succeeds as 387 long as any one contains the requested artifact. 388 * The name / location of the command invoked for `go` is now configurable. 389 390 391 Version 9.1.7 392 ------------- 393 394 * Fixed -o flag to be able to override map fields in config, such as buildconfig 395 and aliases. 396 * Fixed gc.keep field in config which wasn't being honoured properly. 397 398 399 Version 9.1.6 400 ------------- 401 402 * Fixed a subtle interaction of srcs and deps whereby transitive deps couldn't 403 be accessed when specified as both srcs and deps. 404 405 406 Version 9.1.5 407 ------------- 408 409 * Actually fixed Python coverage some more. 410 411 412 Version 9.1.4 413 ------------- 414 415 * Fixed test code accidentally introduced into previous version for Python tests. 416 417 418 Version 9.1.3 419 ------------- 420 421 * Fixed `plz tool lint` which was looking in the wrong place. 422 423 424 Version 9.1.2 425 ------------- 426 427 * Fixed plz_diff_graphs again, pray I do not fix it further. 428 429 430 Version 9.1.1 431 ------------- 432 433 * Quick fix for plz_diff_graphs to honour manual:linux_amd64. 434 Doesn't work correctly on OSX yet though. 435 436 437 Version 9.1.0 438 ------------- 439 440 * The 'manual' label can now be applied per-architecture, e.g. manual:linux_amd64. 441 442 443 Version 9.0.4 444 ------------- 445 446 * Fixed plz hash --update for cases where the hashes are on child rules. 447 448 449 Version 9.0.3 450 ------------- 451 452 * Minor fix to plz_maven to allow it to compare multiple repositories correctly. 453 454 455 Version 9.0.2 456 ------------- 457 458 * Fixed some pexes from previous commit where pex_root wasn't set properly. 459 460 461 Version 9.0.1 462 ------------- 463 464 * Better incrementality for python_test / python_binary rules. 465 466 467 Version 9.0.0 468 ------------- 469 470 * Better support for multiple Python versions; should now support python 2.7, 3.4, 3.5 471 and 3.6 for bootstrap, and binary artifacts for all of those are written for coverage 472 in generated test pexes. 473 * Removed a number of esoteric builtin rules: github_file, git_repo, fpm_package and 474 fpm_deb. Removed long-deprecated go_yacc rule and `link` argument to filegroup. 475 Removed rules are available at github.com/thought-machine/pleasings as build_defs 476 files; they will still work equivalently but it's unnecessary to have those built 477 into the core. 478 479 480 Version 8.7.5 481 ------------- 482 483 * $(hash ) replacements correctly use output hashes instead of target hashes. 484 485 486 Version 8.7.4 487 ------------- 488 489 * Small fix for `maven_jar`; output filegroup is correctly tagged as binary. 490 491 492 Version 8.7.3 493 ------------- 494 495 * Fix for Debian's pip mess; we now attempt to pass --system to fix it 496 if we can identify that we're running on Debian and using pip3. 497 498 499 Version 8.7.2 500 ------------- 501 502 * Fixed some bugs around handling >= in version specifier. 503 504 505 Version 8.7.1 506 ------------- 507 508 * Fixed a bug where building the :all or /... pseudo-targets would fail when 509 post-build functions ran and require/provide meant not all the targets were needed. 510 511 512 Version 8.7.0 513 ------------- 514 515 * The protoc_flags argument to proto_library now applies transitively to any 516 further protoc_library rules that depend on it, in a similar fashion to C++ rules. 517 Since protos always need all transitive dependencies to compile they typically 518 require transitive compiler flags as well. 519 * Added a decompose function to the build builtins which breaks a build label into 520 its package and name parts. 521 522 523 Version 8.6.1 524 ------------- 525 526 * No code change, but is now compiled with Go 1.9. 527 528 529 Version 8.6.0 530 ------------- 531 532 * Optional support for per-test metrics. 533 534 535 Version 8.5.4 536 ------------- 537 538 * Separate build & test sandboxing more correctly. 539 540 541 Version 8.5.3 542 ------------- 543 544 * Expand home paths correctly in secrets. 545 546 547 Version 8.5.2 548 ------------- 549 550 * Corrections to incrementality calculations when toggling targets between 551 sandboxed and unsandboxed. 552 553 554 Version 8.5.1 555 ------------- 556 557 * Fixing timeouts in sandboxed actions by passing signals through to subprocesses. 558 559 560 Version 8.5.0 561 ------------- 562 563 * Adds an option for lightweight sandboxing of test / build actions. 564 This only works on Linux right now, using a helper binary named please_sandbox 565 which must be installed separately (the .deb is still built in this repo). 566 567 568 Version 8.4.4 569 ------------- 570 571 * Fixed issue with java_library rule introduced in previous version. 572 573 574 Version 8.4.3 575 ------------- 576 577 * Set $HOME during builds for some tools (notably Python) that want to know 578 where it is and on some machine setups can fail without. 579 580 581 Version 8.4.2 582 ------------- 583 584 * Collect _pb2_grpc.py files for Python grpc_library rules. 585 * Minor jarcat fix to improve determinism of outputs for tarballs. 586 587 588 Version 8.4.1 589 ------------- 590 591 * Pass -S when invoking the Python interpreter to byte-compile code. 592 Fixes some cases where it failed importing site due to $HOME not being defined. 593 594 595 Version 8.4.0 596 ------------- 597 598 * `--include` and `--exclude` can now take a comma-separated list. These are essentially 599 ANDed together (unlike passing the flag multiple times which ORs them). 600 * `plz run parallel` limits the number of subprocesses run simultaneously. 601 602 603 Version 8.3.1 604 ------------- 605 606 * RPC cache now writes metadata files indicating who submitted artifacts. 607 608 609 Version 8.3.0 610 ------------- 611 612 * Added `manifest` argument to `java_binary` so you can specify an explicit MANIFEST.MF 613 614 615 Version 8.2.6 616 ------------- 617 618 * Fix to dependency cycle detection which could sometimes take a very long time. 619 620 621 Version 8.2.5 622 ------------- 623 624 * Some changes to how source hashes of other rules are calculated; fixes 625 some subtle cases related to file names changing when contents don't. 626 627 628 Version 8.2.4 629 ------------- 630 631 * Internal improvements to hash_filegroup; it is now a known internal rule 632 and operates more like normal filegroups (e.g. outputs are links and are 633 never cached etc). 634 635 636 Version 8.2.3 637 ------------- 638 639 * Another fairly subtle fix to cc rules. 640 641 642 Version 8.2.2 643 ------------- 644 645 * Fairly subtle fix; add a missing `require` on `cc_static_library`. 646 647 648 Version 8.2.1 649 ------------- 650 651 * Leave the Python interpreter as given in the shebang of the pex, don't 652 turn it into an absolute path. 653 654 655 Version 8.2.0 656 ------------- 657 658 * Rewrite of parts of Python rules for better performance 659 * Added `static` argument to `go_test` rule, analogous to `go_binary`. 660 661 662 Version 8.1.1 663 ------------- 664 665 * Minor completion fixes to suppress warnings when version differs. 666 667 668 Version 8.1.0 669 ------------- 670 671 * Rewritten completion script; is now activated using 672 `source <(plz --completion_script)` which works for both bash and zsh. 673 It should also be more robust for more subtle flag combinations. 674 675 676 Version 8.0.5 677 ------------- 678 679 * Potential fix for a rare issue with rules like `hash_filegroup` that sometimes 680 weren't marked as rebuilt correctly. 681 682 683 Version 8.0.4 684 ------------- 685 686 * Fix some tool-related errors in `proto_library` and `grpc_library`. 687 688 689 Version 8.0.3 690 ------------- 691 692 * Fix to cgo_library for cases where some of the sources are produced by a genrule. 693 694 695 Version 8.0.2 696 ------------- 697 698 * Small fix to jarcat to add __init__.py files in a couple more cases. 699 * Subtle require/provide fix. 700 701 702 Version 8.0.1 703 ------------- 704 705 * Small fix to secrets in previous version which were causing some targets to rebuild 706 more often than they should. 707 708 709 Version 8.0.0 710 ------------- 711 712 * The `tarball` rule has been rewritten to be more deterministic. As a consequence it now 713 only supports gzip compression; the previous `compression` argument has been removed. 714 This is obviously a breaking change for anything that was setting that argument. 715 * Build rules with `needs_transitive_deps = True` no longer receive transitive deps of 716 their `srcs`, only their `deps`. 717 This is again a breaking change although a relatively subtle case that doesn't affect 718 many rules; most cases that were using `srcs` and `deps` semantically correctly won't notice. 719 * `plz query print` now accepts a `--fields` argument to print only the given fields. 720 * `plz run` now has two new subcommands, `sequential` and `parallel` that allow passing 721 multiple targets to be run either consecutively or concurrently. 722 * Go 1.8 is now required to build the Please repo. Support for targeted Go versions is 723 unchanged. 724 725 726 Version 7.12.0 727 -------------- 728 729 * Support for named output groups on rules. Outs can now optionally be specified as 730 a dict of name -> outputs, and other rules can collect just the group they want. 731 Resolves a few long-standing TODOs around the place. 732 733 734 Version 7.11.4 735 -------------- 736 737 * Fixed some indeterminacy in Go rules to do with the infamous symlinking malarkey. 738 739 740 Version 7.11.3 741 -------------- 742 743 * Fixed bug in RPC server that failed to load certificates from a directory. 744 745 746 Version 7.11.2 747 -------------- 748 749 * Tarballs are now correctly marked as `output_is_complete` so downstream rules don't 750 fetch their transitive dependencies as well. Fixes some subtle interactions between 751 `tarball` and `sh_binary`. 752 753 754 Version 7.11.1 755 -------------- 756 757 * Fix for performance regression of some setups (mostly large Java trees) introduced 758 in previous version. 759 760 761 Version 7.11.0 762 -------------- 763 764 * `pkg_config_libs` is now applied transitively for `cc_library` and `c_library` rules. 765 * Fixed a bug in pex writing where the output was not always deterministic. 766 * Linter now detects deprecated & missing arguments and for duplicate third-party artifacts. 767 768 769 Version 7.10.3 770 -------------- 771 772 * Disabling tracing on RPC cache server, possible fix for aforementioned 773 memory leak. 774 * Fix for #208, whereby some C++ settings were not being honoured properly. 775 776 777 Version 7.10.2 778 -------------- 779 780 * Protobuf / gRPC update, testing to see if this helps an apparent memory leak in 781 RPC cache server. 782 783 784 Version 7.10.1 785 -------------- 786 787 * Fix to go_get change in 7.10 to make it BSD-compatible. 788 789 790 Version 7.10.0 791 -------------- 792 793 * Add support for classifiers on `maven_jar`. 794 * Automatic creation of `plz-out/go`, which contains some symlinks making it 795 suitable for setting your GOPATH to to find some things in plz-out/gen (e.g. 796 generated code). 797 * Fix go_get with dependencies when in declared in repo root 798 799 800 Version 7.9.2 801 ------------- 802 803 * Honour the PATH settings given in plzconfig when starting worker processes. 804 805 806 Version 7.9.1 807 ------------- 808 809 * `proto_library` is a little more robust about some cases involving sources in 810 subdirectories. 811 * Fixed alwayslink for `cc_library` which was sometimes not honoured. 812 813 814 Version 7.9.0 815 ------------- 816 817 * Rewrite of proto_library and grpc_library rules. It's now possible to configure new 818 languages externally for plugins such as grpc-gateway. 819 * Add <root>/third_party/ to the default GOPATH 820 * Added --shell flag to plz build, which is like --prepare but opens a shell in the 821 work directory with an appropriate environment set. 822 * Added --update flag to plz hash to rewrite hashes in a BUILD file. 823 824 825 Version 7.8.2 826 ------------- 827 828 * Correctly pass `pkg_config_libs` through `cc_binary` to `cc_library` (#190). 829 830 831 Version 7.8.1 832 ------------- 833 834 * Fixate tarball timestamps #188 835 836 837 Version 7.8.0 838 ------------- 839 840 * Added `plz export` command which exports a subset of the repo and its dependencies 841 to an arbitrary directory. 842 * Updating has a progress bar 843 * Fixed some subtle linking issues in the compiled artifacts. 844 845 846 Version 7.7.1 847 ------------- 848 849 * Fixed flags argument to python_test rules. 850 851 852 Version 7.7.0 853 ------------- 854 855 * Versions in .plzconfig can now be specified as >=. Other patterns aren't (yet?) supported. 856 * plz clean honours --include / --exclude 857 * plz gc now rewrites / removes files and can be filtered to a list of targets 858 * python3 parser engine now (mostly) works 859 * Help message output improved 860 * Fixed plz query revdeps when given a subpackage path (//src/... etc) 861 862 863 Version 7.6.4 864 ------------- 865 866 * Excluding errors from Python coverage reports; fixes failures when dynamically 867 loading modules inside tests which coverage can't find the source for. 868 869 870 Version 7.6.3 871 ------------- 872 873 * Logging a periodic message during long-running tasks so it's possible to see 874 what's still going (often the slowest test started a while back and you don't see 875 any further messages logged while waiting). 876 877 878 Version 7.6.2 879 ------------- 880 881 * Minor bugfixes 882 883 884 Version 7.6.1 885 ------------- 886 887 * Fix to Istanbul coverage parsing to support instrumenting the source in a different 888 target to the test target. 889 890 891 Version 7.6.0 892 ------------- 893 894 * Allow Unicode characters in target names. 895 * Fixed some issues with plz cover when using Go 1.8 896 * Fixed plz clean so it does not parse the repo unnecessarily. 897 * Add current package directory to GOPATH, fixes #184. 898 * Correctly exclude BUILD files from glob() 899 * Fixed glob() for paths containing some atoms like ++ 900 901 902 Version 7.5.0 903 ------------- 904 905 * Support for Istanbul's JSON coverage format. 906 * please_pex now packages multiple versions of coverage.tracer which it attempts to 907 import as appropriate. 908 909 910 Version 7.4.8 911 ------------- 912 913 * Support for Go 1.8 (specifically the changes to testing.MainStart). 914 915 916 Version 7.4.7 917 ------------- 918 919 * Fixed long-standing subtle issue with packaging Guava in junit_runner. 920 921 922 Version 7.4.6 923 ------------- 924 925 * Fix outs for js grpc_library rules. 926 927 928 Version 7.4.5 929 ------------- 930 931 * Add missing option to JS protos to generate serialisation code. 932 933 934 Version 7.4.4 935 ------------- 936 937 * Fix deadlock in metrics code. 938 939 940 Version 7.4.3 941 ------------- 942 943 * Suppress logging messages from worker processes as they die. 944 945 946 Version 7.4.2 947 ------------- 948 949 * Ensure that worker processes are killed at the end of a build. 950 951 952 Version 7.4.1 953 ------------- 954 955 * Fixed proto JS rules to correctly pick up transitive dependencies. 956 957 958 Version 7.4.0 959 ------------- 960 961 * Fixed please_pex for Python 3.6 962 * Fixed go_test rules in the repo root. 963 * Added proto.jsdep config option that gets used when building JS protos (#176) 964 965 966 Version 7.3.0 967 ------------- 968 969 * Support for generating Javascript files from a proto_library. Currently the 970 generated code is not compiled in any way. 971 * Fix to some obscure cases of building filegroups that weren't working properly. 972 * Removed -Wextra from default CFLAGS, since many repos don't compile cleanly with it. 973 * Falls back to trying to find a Bazel WORKSPACE file if run outside a plz repository. 974 975 976 Version 7.2.0 977 ------------- 978 979 * Support for 'remote' worker processes which are persisted throughout the build. 980 These can be used to speed up compile times in cases where the compiler supports this 981 and has significant startup overhead. Initial implementation for Java can have up to 982 a 4x speedup on sufficiently large build graphs. 983 * Added `plz help` command which can show reference information about built-in build rules, 984 config settings, etc. 985 * The Linux implementation will attempt to download a portable PyPy distribution if 986 none of the plugins work against the system versions. Should make it easier to get 987 up & running since it's not completely trivial to install. 988 * Support for caches to store asynchronously, so further build actions don't have to 989 wait on network latency. Retrieves must still happen synchronously, of course. 990 The cache request scheme is also a little more efficient and will make slightly 991 fewer requests overall. 992 993 994 Version 7.1.1 995 ------------- 996 997 * Reverted an internal update to guava which broke some Java tests. 998 In future we'll look more at compatibility here, ideally it shouldn't matter but it's 999 not fully obvious what is best to do. 1000 1001 1002 Version 7.1.0 1003 ------------- 1004 1005 * Support for an "experimental" directory specified in plzconfig. If set it is subject 1006 to the following rules: 1007 - Targets in the experimental tree can depend on any other target, regardless 1008 of visibility constraints. 1009 - Targets outside the experimental tree can't depend on targets in it, again 1010 regardless of their visibility declaration. 1011 - Please doesn't descend into the experimental tree for commands like `plz test //...` 1012 so tests in there wouldn't generally be run. 1013 * New command, `plz gc`, which attempts to identify unused targets across the repo. 1014 "GC roots" are inferred from non-test binary targets, but can also be specified in .plzconfig. 1015 * `plz query revdeps` no longer prints the targets it was given in the first place. 1016 * More careful locking when building filegroups to avoid some race conditions. 1017 * `plz query graph` is now better optimised for the case of outputting the entire graph, 1018 which should be close to twice as fast as before. 1019 * filegroup() now honours the `hashes` argument correctly. 1020 1021 1022 Version 7.0.8 1023 ------------- 1024 1025 * Fixed a formatting bug with `plz query print`. 1026 1027 1028 Version 7.0.6 1029 ------------- 1030 1031 * Fixed a long-standing but mysteriously unfound bug in incrementality where we did not 1032 correctly handle symlinks to directories within a build dir. 1033 1034 1035 Version 7.0.5 1036 ------------- 1037 1038 * Fixed a requires statement on python_binary / python_test rules. 1039 1040 1041 Version 7.0.4 1042 ------------- 1043 1044 * Fixed some small issues around coverage for cgo_test rules. 1045 1046 1047 Version 7.0.3 1048 ------------- 1049 1050 * Fixed dependencies on fpm_deb again, pray I do not fix them further. 1051 1052 1053 Version 7.0.2 1054 ------------- 1055 1056 * Fixed dependencies on fpm_deb rules so they have Depends, not Build-Depends. 1057 1058 1059 Version 7.0.1 1060 ------------- 1061 1062 * Fixed a small bug where get_labels and has_label would return labels below a target 1063 marked output_is_complete, which would cause some build rules to then fail. 1064 * Fixed fpm_package which was not correctly honouring the `labels` argument. 1065 1066 1067 Version 7.0.0 1068 ------------- 1069 1070 * Introduced a set of c_library, c_binary rules etc. These parallel the cc_ versions and 1071 share most of the implementation. 1072 * cctool config setting renamed to cpptool, cctool now defines the compiler used for new 1073 c_library etc rules. This is a breaking change. 1074 * Similarly defaultoptcppflags and defaultdbgcppflags introduced. 1075 * The defines argument to cc_library now accepts a dict of token name -> value. 1076 * cgo_library has been extensively rewritten, and now takes separate arguments for srcs, 1077 go_srcs (Go files that don't import "C"), c_srcs and hdrs. This allows better integration 1078 with other native rules since it now honours the compiler and linker settings correctly. 1079 * Timeouts in .plzconfig are now given as durations instead of plain ints. 1080 The default is seconds but they can be suffixed with units (m, s, ms, etc). 1081 Interpretation of any existing values is unchanged apart from metrics.frequency which 1082 was inconsistently interpreted as milliseconds, and will now be interpreted as seconds 1083 if no unit is given. This would obviously only affect anyone who'd overridden that value. 1084 1085 1086 Version 6.1.2 1087 ------------- 1088 1089 * Some small fixes to Java rules 1090 * Fixed a bug where two filegroup rules outputting the same rule would sometimes fail 1091 when built simultaneously. 1092 1093 1094 Version 6.1.0 1095 ------------- 1096 1097 * Added a static flag to cc_binary to attempt to link it statically. 1098 * Fix cc_shared_object when srcs is empty. 1099 * Suppress gcc build ids to reduce nondetermism 1100 * Can now call HasLabel on an arbitrary build label, but it should be a transitive 1101 dependency of the currently building rule to be safe. 1102 * All sub-rules of a rule are rebuilt on 'plz rebuild' 1103 * fpm_deb and fpm_package take a 'dirs' argument allowing passing rules with multiple outputs 1104 1105 1106 Version 6.0.3 1107 ------------- 1108 1109 * Finally fixed cc_embed_binary for OSX 1110 1111 1112 Version 6.0.2 1113 ------------- 1114 1115 * Another small maven_jar fix, related to Android this time 1116 * plz query deps now filters its outputs by --include and --exclude 1117 1118 1119 Version 6.0.1 1120 ------------- 1121 1122 * Small maven_jar fix. 1123 1124 1125 Version 6.0.0 1126 ------------- 1127 1128 * Outputs are ordered canonically before hashing so tools like buildifier don't change 1129 rule hashes. 1130 * maven_jar is split into separate rules for binary & source artifacts, for better 1131 incrementality & being easier to consume by other rules (since source artifacts are 1132 generally not part of the build and only there for help for IDEs). 1133 * cgo_library's 'package' argument has been changed to 'out' to be more consistent with 1134 other rules (most notably go_library). 1135 * cgo_library and cgo_test now have a setting in the config describing what they should 1136 use for CC. 1137 * go_binary now accepts a 'static' flag that attempts to completely statically link 1138 the target. 1139 * plz watch now discards events that do not relate to source files it cares about 1140 (previously it would fire on any event in a relevant directory). 1141 * include_defs and the cxx_ forms of the cc_* rules are now only available in Bazel 1142 compatibility mode (which essentially also covers Buck now too). 1143 * The version in .plzconfig is now parsed as a semver so must be valid by those rules. 1144 Shouldn't be a major problem since there haven't been any versions for a long time 1145 that wouldn't be valid. 1146 1147 1148 Version 5.5.4 1149 ------------- 1150 1151 * Fix a bug where multiple filegroups writing the same file could race with one another. 1152 1153 Version 5.5.3 1154 ------------- 1155 1156 * bugfix: make sh_binary work with and without dependencies 1157 * sh_binary switched to use the same shebang as the original script (when there 1158 are dependencies) 1159 1160 Version 5.5.2 1161 ------------- 1162 1163 * Increased maximum message size limit on RPC cache server to 100MB since at some 1164 point gRPC started limiting it, and their 4MB default is too low for this case. 1165 * Small fix for plz watch for targets with named sources. 1166 1167 1168 Version 5.5.1 1169 ------------- 1170 1171 * Fixed several potential sources of nondeterminism in various places. 1172 1173 1174 Version 5.5.0 1175 ------------- 1176 1177 * Linter can now suppress warnings over an entire file by adding a line with only 1178 the suppression comment on it. 1179 * Support for adding generic properties to the config which makes it less awkward to 1180 write third-party rules that want to be able to set such things. 1181 * Log file is always written (there seems to be no real performance penalty) 1182 * `plz query revdeps` correctly identifies subincludes 1183 1184 1185 Version 5.4.1 1186 ------------- 1187 1188 * Fixed name of please_build_linter to be consistent between .deb and tarballs. 1189 1190 1191 Version 5.4.0 1192 ------------- 1193 1194 * Now ships with a linter to identify potential problems in BUILD / build_defs files. 1195 * Minor determinism fix to go_get 1196 * please_pex now only specifies 'python', not the version it was built with. 1197 * Fixed running single tests in go_test rules. 1198 1199 1200 Version 5.3.0 1201 ------------- 1202 1203 * Some fairly extensive tweaks / cleanups to C++ rules. 1204 * Added config options for configuring flags for pip in pip_library rules. 1205 * Fixed generation of __init__.py files. 1206 * Various _test rules now support being passed flags which are added to their test_cmd. 1207 * Fixed some indeterminacy in some Java rules 1208 * Fixed some deps being incorrectly attached to proto rules of the wrong language. 1209 * Cache servers now accept durations in the form "3m", "10h25m", etc. 1210 * Cache servers have a parameter to clean artifacts that haven't been accessed in 1211 a certain period, defaulting to 30 days. 1212 1213 1214 Version 5.2.3 1215 ------------- 1216 1217 * Correct a small bug where visibility labels sometimes incorrectly applied too widely 1218 * Various Python rules now respect package() directives correctly 1219 * Fix to pip_library for rules with install_subdirectory=True and names not matching 1220 the package name. 1221 1222 1223 Version 5.2.2 1224 ------------- 1225 1226 * Added missing protoc tool to proto_library / grpc_library rules. 1227 1228 1229 Version 5.2.1 1230 ------------- 1231 1232 * Reduced cardinality of labels sent to Prometheus so pushgateways don't get 1233 overwhelmed so quickly. 1234 * Licence matching is now case-insensitive. 1235 1236 1237 Version 5.2.0 1238 ------------- 1239 1240 * Added support for pushing metrics to a Prometheus pushgateway 1241 * New flag --show_output / -s for plz test (+cover) to show the output of tests 1242 even when successful. 1243 * __init__.py writing moved from parse time to build time. 1244 * Releases now built with Go 1.7 1245 1246 1247 Version 5.1.0 1248 ------------- 1249 1250 * Initial C++ coverage support 1251 * Support for coverage in Go 1.7 1252 * Support for Go 1.7 style subtests 1253 * Added identifying labels to grpc_library rules 1254 * Support for optional additional outputs on rules. 1255 1256 1257 Version 5.0.1 1258 ------------- 1259 1260 * Fix bug in java_library which would fail when given both srcs and resources. 1261 1262 1263 Version 5.0.0 1264 ------------- 1265 1266 * `tools` can now accept non-build rule labels which are interpreted as system binaries. 1267 They are then hashed into the rule so it will rebuild appropriately. 1268 * Corollary to above: grpcversion and protocversion properties have been removed from config. 1269 goversion remains since it identifies some compatibility changes for 1.4. 1270 * please_maven better supports more esoteric details of Maven. 1271 * `plz watch` honours the previously set build config (i.e. `plz watch -c dbg` invokes 1272 its subprocesses with `-c dbg` as well). 1273 1274 1275 Version 4.5.1 1276 ------------- 1277 1278 * `plz run` does not print to stdout any more, so things can consume stdout of it 1279 and only get that of the running target. 1280 1281 1282 Version 4.5.0 1283 ------------- 1284 1285 * `plz build` now outputs more information about what target produced what files, and 1286 prints to stdout so other programs can consume it if needed. 1287 1288 1289 Version 4.4.1 1290 ------------- 1291 1292 * Fix to `plz watch` which wasn't deduplicating dependencies correctly, so could take 1293 a very long time to start on deep dependency trees. 1294 * Performance improvements to `get_labels()`. 1295 1296 1297 Version 4.4.0 1298 ------------- 1299 1300 * Added support for multiple per-config test commands in the same way as build commands. 1301 * Added hash_filegroup rule which acts like a normal filegroup but creates outputs with 1302 a name based on their hash, which facilitates having immutable names for artifacts. 1303 1304 1305 Version 4.3.2 1306 ------------- 1307 1308 * Fix a divide by zero bug in coverage stats display. 1309 1310 1311 Version 4.3.1 1312 ------------- 1313 1314 * Fix to java configs from previous version where opt didn't have debug info, 1315 we have an example of a test that fails in that configuration, so disabling 1316 until we have more info. 1317 1318 1319 Version 4.3.0 1320 ------------- 1321 1322 * Default compiler options for javac are now settable in config file. 1323 * Fixes to rare, subtle & quick to anger panics from concurrent map accesses in 1324 plz and the cache servers. 1325 * Fix to C++ tests where very rarely the output file got overwritten. 1326 * Work paths are correctly stripped from cgo_library and go_get rules. 1327 1328 1329 Version 4.2.2 1330 ------------- 1331 1332 * Fix divide by zero in coverage stats. 1333 * Another RPC cache fix, do not delete outputs when retrieving other files, only 1334 when retrieving the main ones in the build step. 1335 1336 1337 Version 4.2.1 1338 ------------- 1339 1340 * The RPC cache now deletes outputs of a target to fix a rare case around targets 1341 that have an output that is a directory and items in it are later removed. 1342 1343 1344 Version 4.2.0 1345 ------------- 1346 1347 * Adds some extra stats to output coverage file. 1348 1349 Version 4.1.0 1350 ------------- 1351 1352 * New command, `plz watch`, which watches the sources of a set of targets for 1353 changes and rebuilds / re-tests them when they do. 1354 * Support for generating C++ gRPC code in grpc_library. 1355 * maven_jar now has a `binary` argument which prompts it to download a 1356 native binary (.exe in Maven parlance). 1357 * Some subtle changes to pexes to make them work better when not zip_safe. 1358 * Bazel compatibility mode now supports $@, $<, etc. 1359 1360 1361 Version 4.0.2 1362 ------------- 1363 1364 * Remove Docker containers more forcibly. 1365 * Exit code of fatal build failures changed slightly. 1366 * python_binary now correctly accepts a rule for its `main`. 1367 1368 1369 Version 4.0.1 1370 ------------- 1371 1372 * Fixes some containerised Java tests when calculating coverage. 1373 1374 1375 Version 4.0.0 1376 ------------- 1377 1378 * Some rewrites of Go rules with several advantages: 1379 - Now compatible with Go 1.7. Previously the linker would panic, apparently when doing 1380 a dead code pass related to x/net/context. Still a little unsure of details. 1381 - Should be faster, does some linking instead of copying & gives the compiler / linker 1382 fewer directories to search. 1383 - Compilation of binary / test code is separated from the linking step for better 1384 incrementality. 1385 There are some consequences from this: 1386 - The gopath config entry must be set appropriately for libraries to be found. 1387 Normally the defaults will be adequate here. 1388 - Similarly, `src` subdirs are no longer implicitly searched in some circumstances. 1389 - A go_binary rule must declare all dependencies used in its main package explicitly; 1390 previously it was possible to pick them up transitively. 1391 These will likely break some code that relied on the old behaviour; although such 1392 code was probably technically incorrect, it's reasonable to consider this a breaking 1393 change, hence the major version bump. 1394 * Config options can be dynamically overridden on the command line, 1395 e.g. `plz build -o go.version:1.7` 1396 * Output files are made read-only in most cases. 1397 * Post-build functions are run once only since it's quite tough to require them to be 1398 idempotent. 1399 1400 1401 Version 3.6.2 1402 ------------- 1403 1404 * Remove undocumented skip_cache argument to build_rule; filegroups implicitly have this 1405 and it's nicer not to expose it to anyone else. 1406 1407 1408 Version 3.6.1 1409 ------------- 1410 1411 * Update SRCS for named sources as well as unnamed ones when affected by require/provide. 1412 * Jarcat has an extra flag to allow renaming directories within a zip file (currently 1413 not used by any builtin rules). 1414 1415 Version 3.6.0 1416 ------------- 1417 1418 * add a `src_dir` argument to java_library 1419 * allow attaching deps to a remote_file 1420 * fix `plz clean` background bug 1421 * #107 Introduce https and mutual auth support to RPC cache 1422 * #108 New query subcommand, `plz query whatoutputs`, which queries the current graph and returns the 1423 target responsible for the provided file(s) 1424 1425 1426 Version 3.5.0 1427 ------------- 1428 1429 * New command, `plz rebuild`, which behaves like `plz build` except that the named targets 1430 (but not their dependencies) are always rebuilt. 1431 * `remote_file` and `maven_jar` rules now print the URL before fetching, to make it a 1432 bit easier to follow what they're actually trying to do if they fail. 1433 * The Python hash seed is fixed before initialising the interpreter, so dict / set iteration 1434 order should be deterministic between runs. The security implications aren't really a 1435 concern in this context but repeatability is. 1436 1437 1438 Version 3.4.1 1439 ------------- 1440 1441 * fix for type checking script when run through python3 1442 * Don't try to retrieve results from containerised tests that have no_test_output = True. 1443 * Private targets are omitted from `plz query somepath`. 1444 1445 1446 Version 3.4.0 1447 ------------- 1448 1449 * `plz run` and `plz test` now default to the current package + subpackages when run 1450 without arguments. `plz clean` and `plz query` still retain the old semantics of the 1451 entire repo. 1452 1453 1454 Version 3.3.0 1455 ------------- 1456 1457 * Build / test commands are now run with "-o pipefail" so you don't have to specify 1458 yourself. This could potentially break any rules that relied on the default 1459 behaviour although it's unlikely that anything did that deliberately. 1460 * Sources are deduplicated on build rules. 1461 * Fixed a minor bug where plz run would incorrectly pass the --assert_version flag to 1462 the target if it updated automatically. 1463 * RPC cache now gives up after a sufficient number of failures so it doesn't drown 1464 you in messages on long builds. 1465 * If any of the entries in `srcs` in a build rule are None, they're skipped. This makes 1466 it easier to write some rules with optional inputs. 1467 * Added a config property for the default maven repo. 1468 * Output file from java_binary is now configurable. 1469 1470 1471 Version 3.2.0 1472 ------------- 1473 1474 * Added type checks on arguments to build rules, because the errors can be 1475 obtuse if you get them wrong. 1476 Strictly speaking this is compatible with the previous release since it simply 1477 enforces documentation, although there are subtle cases that would have been 1478 accepted before that no longer are. 1479 1480 1481 Version 3.1.3 1482 ------------- 1483 1484 * Die immediately after a build finishes with unsuccessful targets; this matches 1485 previous behaviour in the face of --failing_tests_ok. 1486 1487 1488 Version 3.1.2 1489 ------------- 1490 1491 * When a target fails, plz now waits for all other building targets to conclude 1492 before terminating. We expect that over repeated builds this will be faster 1493 because it won't keep abandoning half-complete tasks. 1494 Compiler feedback should show immediately, and you can Ctrl+C it to stop whenever. 1495 1496 1497 Version 3.1.1 1498 ------------- 1499 1500 * Fixed `plz run` on java_binary rules not marked as self_executable. 1501 * Various minor cache fixes. Access times should be correctly regenerated 1502 on restart now. 1503 * Initial work on FreeBSD port; is now mostly buildable there. 1504 1505 1506 Version 3.1.0 1507 ------------- 1508 1509 * Extra GOPATH additions for cgo_library / cgo_test are configurable through 1510 [go]gopath setting. We typically use third_party/go for this. 1511 * pip_library commands changed a bit to try to make it more deterministic. 1512 * When artifacts fail hash verification after cache retrieval, attempt to build 1513 locally instead of failing. 1514 1515 1516 Version 3.0.2 1517 ------------- 1518 1519 * Some caching fixes; directory entries are now retrieved correctly between restarts 1520 of the RPC cache server. 1521 1522 1523 Version 3.0.1 1524 ------------- 1525 1526 * Fix to pex generation from previous version where it could sometimes add extraneous 1527 __init__.py files which conflicted with real ones added later. 1528 1529 1530 Version 3.0.0 1531 ------------- 1532 1533 * Rewrite of cffi parser interface to use cffi's new embedding 1534 (see http://cffi.readthedocs.io/en/latest/embedding.html). 1535 This means that we can use cpython or pypy as engines, and build both as separate 1536 .so's which we attempt to dlopen() at runtime. The advantage of all this is that 1537 it becomes possible to run plz with CPython + cffi, which is quite a bit more 1538 straightforward to get installed in the way we need on Linux at present. 1539 PyPy should continue to work for anyone who had it working already though. 1540 * Builtin rules no longer call zip and jar, because those produce nondeterministic 1541 output due to encoding timestamps into their output. They now use jarcat instead. 1542 Note that this is a breaking change for some maven_jars rules whose hashes will change. 1543 1544 1545 Version 2.4.0 1546 ------------- 1547 1548 * Minor fixes to Python coverage code 1549 * Added a 'native' attribute to maven_jar which attempts to fetch a .jar with 1550 native code. It also now takes 'hashes' since those might of course have 1551 different ones on each architecture. 1552 * Minor fixes to reverse deps queries. 1553 1554 1555 Version 2.3.5 1556 ------------- 1557 1558 * Better identification of dependency mediation in please_maven 1559 * Rewording of version upgrade message. 1560 1561 1562 Version 2.3.4 1563 ------------- 1564 1565 * Incrementality fix for some cases where targets weren't correctly rebuilt 1566 if their dependencies had been cached. 1567 1568 1569 Version 2.3.3 1570 ------------- 1571 1572 * Fix for sh_binary which used an incorrectly formatted version of sed. 1573 1574 Version 2.3.2 1575 ------------- 1576 1577 * Fix where existing partial outputs were sometimes not removed correctly. 1578 1579 1580 Version 2.3.1 1581 ------------- 1582 1583 * Fix for cc_static_library which was broken in previous version. 1584 1585 1586 Version 2.3.0 1587 ------------- 1588 1589 * Added Bazel compatibility mode; can be configured in .plzconfig and alters several 1590 aspects of parsing behaviour to better mimic Bazel's behaviour. This allows parsing 1591 of simple Bazel projects, complex Skylark rules are a long way from working at this 1592 point though. 1593 * cc_library gained new arguments, `includes` and `defines` which add directories to 1594 the include path and define preprocessor symbols respectively. These are transitively 1595 applied to dependent cc_library rules. 1596 * cc_test has a new argument, `write_test_main` which defaults to true. If set to False 1597 it does not provide a main() and you must write it yourself. 1598 * java_binary no longer has to have main_class specified. 1599 * cc_library generates (possibly) more sub-rules to compile each of its `srcs` separately, 1600 which is significantly faster for large numbers of inputs. 1601 * filegroup now has an internal implementation rather than being done in bash. This 1602 allows some things internally to be done more robustly and avoids errors from command 1603 line length limits for very large filegroups. 1604 * `plz query somepath` now respects :all labels. 1605 1606 1607 Version 2.2.1 1608 ------------- 1609 1610 * Reworked ordering of tasks during build; should make little difference to overall time 1611 but parses will happen relatively faster so the estimated total task number will rise 1612 faster. This is more akin to the pre-1.8 behaviour. 1613 * Fix bug where targets with need_transitive_deps = True could incorrectly receive tools 1614 of their indirect deps in their tmp directory. 1615 1616 1617 Version 2.2.0 1618 ------------- 1619 1620 * Python targets now have a `stripped` build config in which the .py files are stripped out 1621 and only .pyc / .pyo bytecode files included in the .pex. 1622 We're considering making this the default behaviour for `opt` but if we do that will be 1623 left for a future major revision. 1624 1625 1626 Version 2.1.2 1627 ------------- 1628 * Fixes one more bug with sh_binary where paths were taken to be relative when they were absolute. 1629 1630 Version 2.1.1 1631 ------------- 1632 * Fixes bug with sh_binary not ignoring the main script properly when generating the tarball. 1633 1634 Version 2.1.0 1635 ------------- 1636 * Adds additional features to sh_binary to make it more complete. sh_binary now creates 1637 a single bash script. This script contains all dependencies as well as the main 1638 script to be executed. When the sh_binary is run, it extracts all the files 1639 to the current directory and finally executes the main script. 1640 1641 Version 2.0.0 1642 ------------- 1643 1644 * We are going to try doing semver from here on, so this release increments the major 1645 version due to several very slightly breaking changes. 1646 * More convenient output on incorrect hashes. 1647 * C++ tests now honour being given a specific test to run (The current implementation 1648 of this requires C++11, we could write it in a more tedious way if it's a problem). 1649 * Reading stdin for build labels is now done asynchronously, so Please will build initial 1650 targets from a relatively slow supplying process immediately rather than waiting for them all. 1651 `plz query affectedtargets` and `plz query completions` still retain the old behaviour 1652 for technical reasons (aka. laziness). 1653 It is also slightly more robust about the input it accepts (esp. around spaces). 1654 * `plz query alltargets` now does not display hidden targets (those starting with an 1655 underscore) by default. It has a new `--hidden` flag which will show them as well. 1656 * `subinclude()` can now be given a URL to download build defs from. Downloads will be 1657 deduplicated and run as `real` build targets so the parse remains fast (or at least 1658 as fast as possible given that something has to be downloaded for it to proceed). 1659 1660 1661 Version 1.8.2 1662 ------------- 1663 1664 * Fix interactive display on versions of iTerm (2.1.x) that don't support the 1665 ANSI CPL instruction. 1666 * Go version in config now only affects hashes of Go targets. This alters the 1667 general hash calculation logic so unfortunately will force rebuilds of all targets - 1668 this is unavoidable but will lead to better incrementality in future. 1669 * Suffix temp build directories with #.build (and tests with #.test instead of just .test) 1670 to avoid cases where they clash with paths to sub-packages that happen to 1671 begin with the same name. 1672 1673 1674 Version 1.8.1 1675 ------------- 1676 1677 * Support for loading arch-specific config files, .plzconfig_linux_amd64 etc. 1678 Allows tweaking config for different machine types. 1679 1680 1681 Version 1.8.0 1682 ------------- 1683 1684 * Reworked internal queuing implementation which prioritises `subinclude()` targets 1685 more highly. `subinclude()` itself also caches compiled code. 1686 * New feature, `plz query reverseDeps` which finds reverse dependencies of a target. 1687 * `plz query graph` output has more features in it. 1688 * new setting in config, blacklistdirs, which excludes certain directory names from 1689 being walked by `plz build ...` and the like. 1690 * Upgraded python coverage package. 1691 * Upgraded gRPC implementation. Note that this is a breaking change for the RPC cache 1692 so that will need to be upgraded in sync with plz itself. 1693 * Allow passing build target expressions to --exclude. 1694 * Fix for some relative implicit labels passed on the command line which sometimes 1695 incorrectly lost a slash. 1696 * Terminal window titles are now updated as build progresses. 1697 1698 1699 Version 1.7.3 1700 ------------- 1701 1702 * Support for maven_jars fetching specified optional dependencies via 'optional' argument. 1703 1704 1705 Version 1.7.2 1706 ------------- 1707 1708 * Fix to Java rules which were subtly broken in previous version. 1709 1710 1711 Version 1.7.1 1712 ------------- 1713 1714 * Additional flag, `--include_file`, to `plz cover` which filters coverage output to 1715 just the given files. 1716 * maven_jars now has two new arguments, `combine` which combines its transitive deps 1717 into a single uberjar and `hash` which sets the hash for that uberjar. 1718 The intention here is to make it more lightweight to set a hash for a single target 1719 rather than having to provide potentially many individual hashes. 1720 * Fixed aliases which were accidentally broken by some flag changes. 1721 1722 1723 Version 1.7.0 1724 ------------- 1725 1726 * Reworking of error handling in parsing code. Previous code used to panic back through 1727 the parser which deeply upset PyPy (often we got away with it because we'd die before 1728 anything else could go wrong, but not always). Now errors are returned to Python and 1729 reraised as exceptions there - which implies that it's possible for BUILD code to 1730 catch and handle such exceptions, although I don't recommend writing them that way :) 1731 * Optimised glob() a bit so it doesn't descend into directories that will never match 1732 the given pattern. 1733 * Fixed compilation of clang tests with python3 1734 * Officially ban subincluding of local targets (didn't actually work before anyway) 1735 * `plz clean` now cleans sub-targets as well 1736 * Banned double slashes in build labels which was being incorrectly let though, leading 1737 to some very strange failures. 1738 * Ensure paths are relative in hash memoisation - improves hit rate by about 30% and 1739 is a performance improvement (although probably not very noticeable in most cases). 1740 * `plz cover` now has a `--line_coverage_report` / `-l` flag to produce line-by-line 1741 coverage output for its affected files. 1742 1743 1744 Version 1.6.7 1745 ------------- 1746 1747 * Fix for go_src part of proto_library; don't think we exercise that internally 1748 anywhere any more, but it is now a bit less broken than before. 1749 1750 1751 Version 1.6.6 1752 ------------- 1753 1754 * Fix to flaky tests; don't count as failures once success has been reached. 1755 1756 1757 Version 1.6.5 1758 ------------- 1759 1760 * BuildGraph now uses a RWMutex instead of a normal Mutex for slightly better concurrency. 1761 * Added `plz hash` command which calculates the current hash for targets. 1762 * Jarcat now does proper unsigning of jars always. 1763 1764 1765 Version 1.6.4 1766 ------------- 1767 1768 * `glob()` now correctly finds files in the current directory that are prefixed 1769 with **, ie. `glob(['**/*.png'])` matches `a.png`. 1770 1771 1772 Version 1.6.3 1773 ------------- 1774 1775 * Proto rules now correctly set up C++ headers / sources separately which fixes 1776 compilation with Clang. 1777 1778 1779 Version 1.6.2 1780 ------------- 1781 1782 * Fix for proto rules where grpc_library sometimes did not add a plugin correctly. 1783 1784 1785 Version 1.6.1 1786 ------------- 1787 1788 * Various tools now honour the please.location setting correctly. 1789 1790 1791 Version 1.6.0 1792 ------------- 1793 1794 * RPC cache now initialises asynchronously so if it's not available the 1795 build will not hang waiting for its connection to time out. 1796 This is a breaking addition to the cache's interface since it is now required to 1797 implement the gRPC health check (from google.golang.org/grpc/health) so 1798 v1.6+ of the server will have to be deployed to support v1.6+ clients. 1799 It will remain backwards compatible for older clients though. 1800 * Plz now comes with a wrapper script which can be committed and will fetch 1801 plz and invoke it. Makes it easy to use for people who don't have it 1802 installed already, ala Gradle's gradlew script. 1803 * The default location for tools is in ~/.please instead of /opt/please, 1804 which again makes it easier for people who don't have the tools already. 1805 * --max_flakes flag has been removed in favour of --num_runs always making 1806 a test run exactly that many times. Hopefully this is less confusing. 1807 * `query alltargets` now obeys the original targets and --include / --exclude better. 1808 * There is now a `system_library` rule which can collect files from outside the build tree. 1809 Correspondingly, there is a `system_srcs` attribute on `build_rule`. 1810 1811 1812 Version 1.5.12 1813 -------------- 1814 1815 * Altered exclusion rules for java_binary / java_test to better support native libraries. 1816 1817 1818 Version 1.5.11 1819 -------------- 1820 1821 * Write explicit failures into unit test output on timeout etc. Needed for some downstream 1822 tools that don't check attributes like 'failures' and need explicit entries. 1823 1824 1825 Version 1.5.10 1826 -------------- 1827 1828 * Fix for multiple caches which could sometimes panic with a negative waitgroup. 1829 1830 1831 Version 1.5.9 1832 ------------- 1833 1834 * grpc_library now correctly honours the 'languages' argument. 1835 1836 1837 Version 1.5.8 1838 ------------- 1839 1840 * Various fixes to RPC cache. Use base64 URL encoding and short hashes. 1841 1842 1843 Version 1.5.7 1844 ------------- 1845 1846 * Adds `go generate` support. You can now call it by adding `go_tools` to your go_library. 1847 1848 1849 Version 1.5.6 1850 ------------- 1851 1852 * Fix bug where golang tests pass if they panic since the exit code was being ignored 1853 after piping the command to tee. 1854 * 'plz query completions' now treats \: as equivalent to : to work around #18. 1855 1856 1857 Version 1.5.5 1858 ------------- 1859 1860 * Another similar fix for ForkExec call to cache_cleaner. 1861 1862 1863 Version 1.5.4 1864 ------------- 1865 1866 * Fix to cache_cleaner which wasn't always cleaning correctly. 1867 1868 1869 Version 1.5.3 1870 ------------- 1871 1872 * Fix tarballs to be consistent about /opt/please/please_go_test. 1873 1874 1875 Version 1.5.2 1876 ------------- 1877 1878 * Fix incorrect warning on tools that have multiple outputs. 1879 1880 1881 Version 1.5.1 1882 ------------- 1883 1884 * Fixed a bug where importing of libraries in test main files could be indeterminate 1885 if you had multiple libraries of the same name in different subdirectories. 1886 1887 1888 Version 1.5.0 1889 ------------- 1890 1891 * Support for build configurations, activated by '-c opt' and '-c dbg'. Those two 1892 are provided by default on C++ and Go rules; other languages can stick with a 1893 single command at present, use those and / or define their own configs. 1894 * The 'strip' config option and go_binary argument has been removed. It's now 1895 implicit in -c opt for go_binary. 1896 * C++ config options have changed a lot; the test / normal dichotomy has gone, we now 1897 have defaults for dbg and opt and a default set of ldflags. -lunittest++ is applied 1898 automatically by cc_test. 1899 * --no_cache has been changed to --nocache for consistency. 1900 * The -c argument to plz clean is now removed. Default is to clean the cache, 1901 and it honours the top-level --nocache flag if you don't want to clean that. 1902 * python_library now has an 'out' argument where you can set the name of the output 1903 pex. It defaults to the same as before. 1904 * More reliable returning of test output when tests time out. 1905 1906 1907 Version 1.4.9 1908 ------------- 1909 1910 * 'plz clean' now backgrounds itself when possible, in which case the user can 1911 continue with other tasks with no delay. 1912 * Added licenses() builtin function for Bazel compatibility; it roughly parallels 1913 theirs in setting the default licence for all targets in a BUILD file. Implicitly 1914 we can also now use package(default_licences = [...]) which is equivalent. 1915 * + is now allowed in names of build rules. 1916 * Fixed .deb package to include plz_diff_graphs. 1917 1918 1919 Version 1.4.8 1920 ------------- 1921 1922 * Fixed a bug where Please would sometimes panic during coverage display. 1923 * 'plz query graph' now includes all transitive dependencies of requested targets 1924 as well as the targets themselves. 1925 1926 1927 Version 1.4.7 1928 ------------- 1929 1930 * Quoting of expansions in shell commands now only happens when needed. 1931 * $PKG variable is available to test commands as well. 1932 * $ROOT_DIR variable is no longer available to any commands. 1933 1934 1935 Version 1.4.6 1936 ------------- 1937 1938 * Added a 'tools' attribute on genrules which refers to things used to build a rule 1939 which aren't copied into the temp directory. 1940 * Fixed bug where filegroup() didn't correctly honour the binary flag. 1941 1942 1943 Version 1.4.5 1944 ------------- 1945 1946 * Fix debs to have .jar suffix correctly. 1947 * cc_library now correctly supports multiple srcs. As a result it produces a single .a 1948 always instead of .o files. 'archive' attribute is now deprecated. 1949 1950 1951 Version 1.4.4 1952 ------------- 1953 1954 * Make timeout for retrieving Dockerised test results configurable, and default to 1955 a higher value. 1956 * Remove results file before running plz test or plz cover. 1957 * Add configurable extensions which can be excluded from coverage. 1958 1959 1960 Version 1.4.3 1961 ------------- 1962 1963 * Adds support for nested tests in golang (e.g. test suites). 1964 1965 1966 Version 1.4.2 1967 ------------- 1968 1969 * Add a test failure when the test returns nonzero but produces a valid output 1970 file with no errors, so we always show at least one in the summary. 1971 * Add a cc_static_library rule which archives a transitive set of C++ rules. 1972 Essentially it's the static counterpart to cc_shared_object. 1973 * 'plz op' repeats the previous operation. 1974 * Non-zip-safe pexes are now always extracted at startup, even if pex thinks 1975 it doesn't need to. Fixes a bug where incrementality wasn't always correct 1976 because we modify the .pex file after pex has built it. 1977 * New flags --colour and --nocolour allow one to force coloured output on/off. 1978 1979 1980 Version 1.4.1 1981 ------------- 1982 1983 * Temporary directories are now cleaned after successfully building or testing. 1984 * Minor updates to interactive console display. 1985 * Fixes to make cgo_library more robust. 1986 * Small fix to cc_embed_binary which no longer requires passing deps if the src 1987 is generated via a genrule. 1988 1989 1990 Version 1.4.0 1991 ------------- 1992 1993 * java_binary and java_test now generate a self-executable .jar file and no 1994 wrapper script, so the _name#jar sub-rule is no longer generated. 1995 * A number of deprecated arguments have been removed; for example 1996 source_under_test, headers / exported_headers, etc. 1997 * Added a global config parameter to allow enabling/disabling PyPI globally. 1998 * Slightly stricter type checking of arguments to build_rule 1999 * All output of build steps now prints to stderr instead of stdout 2000 (plz query still prints to stdout but plz test / plz build don't) 2001 * Config hashes are now much more granular; only things that affect something 2002 global are used in the calculation of the config hash. Changes to tools etc 2003 are assumed to be handled by the rule hash of any rule using that tool. 2004 * Test container settings in the global config only affect containerised 2005 test rules and only at test time. 2006 * Added a nonce field to the config which we'll use to invalidate the config 2007 hash when necessary. This might happen at any minor release but should 2008 be rare that we'll have to change it. 2009 * Interactive display should be a bit nicer on some non-vsynced terminals 2010 (xterm? not entirely sure what the conditions here were). 2011 * 'query graph' now accepts a list of targets to filter to. 2012 * Support for building with python3. 2013 * Initial support for aliases in config file; the implementation is a little 2014 agricultural but they seem to work so far, within their limits. 2015 * Fix a bunch of small bugs too numerous to mention here. 2016 2017 2018 Version 1.3.9 2019 ------------- 2020 2021 * go_get now takes a `revision` argument which allows pinning libraries to a 2022 particular git revision. `install` now has no effect on it. 2023 * Adding new targets to a package in post build functions now takes effect 2024 immediately, rather than waiting until the end of that post build function. 2025 Fixes some subtle race conditions around dependencies. 2026 2027 2028 Version 1.3.8 2029 ------------- 2030 2031 * Fixed several (benign) race conditions in the interactive display in the interest 2032 of having it run cleanly under go's race detector. 2033 * Bunch of small cleanups suggested by gometalint. 2034 * Add fpm_package and fpm_deb rules and use those to build packages instead of 2035 top-level script. 2036 * Fix for test result hashes; make them the same length as others so the cache cleaner 2037 finds them ok. 2038 * Fixed a hash calculation bug that would sometimes silently fail when the sources of a rule 2039 included a symlink to a directory. 2040 2041 2042 Version 1.3.7 2043 ------------- 2044 2045 * Rules that specify a source dependency on a single output of another rule are now 2046 honoured correctly when being built into a larger rule (eg. a python_library into 2047 a python_binary, as happens often with protos). 2048 * Added option to proto config to rewrite package of Python proto modules. 2049 2050 2051 Version 1.3.6 2052 ------------ 2053 2054 * please_maven now correctly fetches all transitive dependencies, not just one level. 2055 * Added org.ow2.asm:asm-debug-all as a dependency for the test runner which was missing. 2056 * 'plz query graph' now outputs labels in the graph dump. 2057 * plz_diff_graphs can now include/exclude based on labels. 2058 2059 2060 Version 1.3.5 2061 ------------- 2062 2063 * Fixed a couple of subtle internal race conditions. Suspect that most but not all 2064 cases were benign, and it's nicer to have them gone, albeit at the cost of more 2065 lock contention - not that it seems to matter particularly. 2066 * More robust Python licence detection. 2067 2068 2069 Version 1.3.4 2070 ------------- 2071 2072 * More informative error messages when parsing fails due to not finding a package. 2073 * Defaults for repeated entries in the config files now only take effect if nothing else 2074 is specified (ie. the entries in the config replace instead of appending). This 2075 was always the intended behaviour although it's technically breaking. 2076 * Added 'plz query graph' command that produces a (currently fairly minimal) JSON 2077 representation of the graph that other tools could consume. 2078 * Added a tool to diff two graphs produced by new 'query graph' command. 2079 2080 2081 Version 1.3.3 2082 ------------- 2083 2084 * Fix to filegroup rules at the top level of the repo. 2085 * Fix some hash instability in at least some rules. 2086 2087 2088 Version 1.3.2 2089 ------------- 2090 2091 * Support for autodetecting licenses for packages found in a maven_jars rule. 2092 Still pretty experimental since it's surprisingly hard to handle all the maven output 2093 (maybe having someone write this who knew more about Maven would have been an idea...) 2094 * Fix a parse bug where we need to transitively pass the requirement to build a target 2095 that's needed for parse. 2096 * Correct bug in output where it would sometimes crash in rare circumstances (attempting 2097 to print build output of a target that wasn't built due to 'manual' label or similar) 2098 2099 2100 Version 1.3.1 2101 ------------- 2102 2103 * Added possibility for targets to depend on a single output of another rule, 2104 using the format //package:target:output_file. This isn't accepted as a command 2105 line input and is still a little experimental. Proto rules have been changed to 2106 use it instead of generating #only sub-rules. 2107 * Changed detection of multiple rules outputting the same file to parse-time detection 2108 instead of unreliable build-time detection (this requires the proto changes above). 2109 * The exec statement is now banned from the build language. 2110 * When multiple caches are configured, artifacts fetched from a lower-priority cache 2111 are stored into a higher-priority cache (eg. RPC cache -> dir cache). 2112 * Support for associating licences with build targets. Can specify which to accept 2113 and reject in the config. 2114 2115 2116 Version 1.3 2117 ----------- 2118 2119 * Add support to go_binary for stripping symbols. 2120 * Added self-cleaning to HTTP cache 2121 * Added RPC cache implementation. 2122 * Fixed "source file not found" error in some (fairly complex) cases 2123 (I think, this one has been a long battle...) 2124 * Changed jarcat to proper logging & go-flags library 2125 * Implement file copying to dir cache via copy+rename to avoid errors when files 2126 are half-written. 2127 * Building with PyPy 4.0 2128 * Redid locking around parsing, should allow for better parallelism there 2129 (although I think PyPy is still limited by its GIL). 2130 * Introduced new builtin build function subinclude() which is similar to include_defs 2131 but can be visibility controlled and consumes a real build label instead of basically 2132 a file path. Will eventually remove include_defs since it can't be visibility controlled. 2133 * python_binary rules can be depended on by python_library rules and imported as though 2134 they were a python_library. 2135 2136 2137 Version 1.2.7 2138 ------------- 2139 2140 * Tag test results files with their runtime hash so they are correctly re-run 2141 when runtime data files change 2142 * Small fix to cc_shared_object which was incorrectly marked as binary. 2143 2144 2145 Version 1.2.6 2146 ------------- 2147 2148 * Propagate require / provide through exported_deps when producing sources. 2149 * Add zip_safe as a flag on python_library and pip_library. python_binary and 2150 python_test will pick this up if it's in their transitive dependencies and 2151 mark the pex appropriately. 2152 * Add a flag to control level of messages logged to file output separate from 2153 normal verbosity. 2154 2155 2156 Version 1.2.5 2157 ------------- 2158 2159 * Import ban in Python changed to work by inspecting the AST instead of hacking 2160 __builtins__. Removed some hacky global state changes as a result and added 2161 caching of bytecode which seems quite a bit faster for parsing. 2162 * Add flag to print commands as they're run (CEO request). 2163 * Use directories under /tmp for containerised tests rather than top-level ones 2164 so they can be run as non-root users within the container. 2165 2166 2167 Version 1.2.4 2168 ------------- 2169 2170 * Add detection of multiple rules outputting the same files. This is trickier 2171 then one might think due to things like filegroup() and python_library() 2172 repeating their outputs again so must be done at build time (not parse time). 2173 * Make output trace file configurable. 2174 * Delete test results file at plz startup. 2175 * Disallow : or / in an incoming target name. 2176 * Small cleanup which results in Java source / target levels now being strings. 2177 2178 2179 Version 1.2.3 2180 ------------- 2181 2182 * Small bugfix: named sources that are build labels now automatically add the 2183 dependency in the same way that anonymous sources do. 2184 * Fix a case where post-build rules weren't always linking up deps properly. 2185 * Rename split_path_ext to just splitext, it's more natural. 2186 2187 2188 Version 1.2.2 2189 ------------- 2190 2191 * Small bugfix: always attempt to kill container, even if we can't retrieve results. 2192 * Add basename, dirname, split_path and split_path_ext as global utility functions. 2193 2194 2195 Version 1.2.1 2196 ------------- 2197 2198 * Docker change: rather than attempting to run as the current user which often 2199 has weird effects because they're not known within the container, run as root and 2200 extract the files afterwards with 'docker cp' to avoid root ownership. 2201 * Added timeout and container arguments to sh_test which were missing 2202 * Small improvement to 'plz query print' to not repeat things that are implied 2203 (requires -> labels, exported_deps -> deps). 2204 * Strip all leading underscores for dependent rule names in interactive display 2205 * Remove PY_PKG variable, just replace it in bash 2206 * OP has merged my go-flags patch upstream, it's no longer needed 2207 * Allow specifying the output name of a go_library rule 2208 * Add labels arg to filegroup 2209 2210 2211 Version 1.2 2212 ----------- 2213 2214 * Support for acquiring the transitive set of labels a rule & its dependencies possess. 2215 Useful for implementing properties that affect the final target, eg. cc_library 2216 linker flags being applied to the final cc_binary. 2217 * cc rules: change 'headers' and 'exported_headers' to just 'hdrs', which are always 2218 exported because that's generally what you want. Will consider adding 'private_headers' 2219 or similar later if there's a need but for now I'd prefer the default to be obvious. 2220 * Incremental pex compilation; every python_library rule generates a little .zip file 2221 of just its stuff which get merged together in the final rule. Quite fiddly to get 2222 right but the speedup is dramatic. 2223 * Some rewriting of Go rules to make them more robust for complex libraries & go_get. 2224 * Added an exclusive file lock to two plz processes running in the same repo will 2225 not run simultaneously (unless you pass --nolock). 2226 2227 2228 Version 1.1.4 2229 ------------- 2230 2231 * Added jvm_args parameters to java_test and java_binary so it's possible to 2232 customise JVM startup. 2233 2234 2235 Version 1.1.3 2236 ------------- 2237 2238 * `plz update` now ignores the selfupdate field in config and always updates. 2239 * Added new subcommand, `plz query output` to get the outputs of a rule. 2240 2241 2242 Version 1.1.2 2243 ------------- 2244 2245 * Fix passing relative targets on command line; was accidentally broken by parsing 2246 build labels earlier on in the initialisation process. 2247 * Refactor of the underlying zip writer stuff in jarcat. Doesn't make much difference 2248 yet but is a step towards some future work. 2249 * Add a count of number of targets done / total which better approximates progress. 2250 2251 2252 Version 1.1.1 2253 ------------- 2254 2255 * Upgrade to go 1.5, at last fixed the PyPy issue with a couple of lines of Go. 2256 Note that this is a breaking change for developers (but invisible to users of plz, 2257 so we're doing it at a minor version). 2258 * Share env-building code between build & test, and log more for tests. 2259 * Fixes to http cache. 2260 * New command, 'query affectedtargets', which is similar to 'query affectedtests' but 2261 finds all targets, not just tests. 'query affectedtargets --tests' obsoletes 2262 'query affectedtests' which will be removed at plz 1.2. 2263 2264 2265 Version 1.1 2266 ----------- 2267 2268 * Major version bump because numbers were getting too big. 2269 * HTTP cache ready for early adopter testing 2270 * Can set containerisation settings on a per-target basis and control the user Docker 2271 runs as within the container. 2272 * Changed $(location ...) style substitutions to use relative instead of absolute paths 2273 so they can be shared via the HTTP cache. 2274 2275 2276 Version 1.0.13 2277 -------------- 2278 2279 * Expand ~ to home path when building targets. 2280 2281 2282 Version 1.0.12 2283 -------------- 2284 2285 * Initial implementation of HTTP cache, not yet ready to use. 2286 * Add a little more logging when targets fail to build, which we've seen a few times. 2287 * Some suggestions from go vet, one of which may improve locking potentially 2288 * Ensure rule outputs are added uniquely. 2289 2290 2291 Version 1.0.11 2292 -------------- 2293 2294 * Fix for cases where sometimes parse errors would not be reported. 2295 Turned out to be related to disallowing imports, so we attempt to 2296 allow them during compilation (but not execution) of code. 2297 * Update of go rules to be more correct and hopefully streamlined around go_get. 2298 2299 2300 Version 1.0.10 2301 -------------- 2302 2303 * Added RunArgs to [docker] section of config file to allow passing it 2304 arbitrary extra arguments. 2305 * Rewrite of parts of the Go rules to more correctly support targets 2306 in subdirectories. 2307 * add_out() function introduced to build language which can be used 2308 to annotate a target with additional outputs, particularly during 2309 post-build function. Still slightly experimental. 2310 2311 2312 Version 1.0.9 2313 ------------- 2314 2315 * 'query completions' can now be filtered to particular targets, so it will 2316 only complete binaries for 'plz run' and tests for 'plz test' or 'plz cover'. 2317 * Update by downloading tarballs instead of individual binaries. This deprecates 2318 the --extra_tools flag but we will keep it for compatibility for a while. 2319 * Fix for query affectedtests so it correctly excludes manual tests. 2320 2321 2322 Version 1.0.8 2323 ------------- 2324 2325 * Bugfix, 'query affectedtests' not always reading from stdin properly. 2326 2327 2328 Version 1.0.7 2329 ------------- 2330 2331 * Bugfix, previous version mistakenly changed 'query input' to 'query inputs'. 2332 2333 2334 Version 1.0.6 2335 ------------- 2336 2337 * Remove SRCDIR variable and built-in supporting code. No longer needed 2338 for compatibility and the symlink causes problems for some rules because 2339 it introduces a diamond into the folder structure. 2340 * Remove __import__ builtin from parser so build scripts can no longer 2341 import external modules. 2342 * Added a test_only attribute for library rules that ensures they can only be 2343 used by tests or other test_only rules. 2344 * python3 compatibility fix in test_main.py 2345 * Added a package() function that can be used to set various global config 2346 things (probably most usefully, default_visibility). 2347 * Flag parsing refactor; should mostly be invisible externally except that 2348 `plz clean cache` is now `plz clean --cache`. 2349 * Selective test running, eg. `plz test //test:my_test my_test_function` 2350 * --num_runs flag to force a test to run multiple times. 2351 * Some refactoring & bugfixes to require/provide. 2352 2353 2354 Version 1.0.5 2355 ------------- 2356 2357 * Fix crash in output code when window is very small vertically. 2358 * Support for Go 1.5. Seeing some issues that may be caused by it so 2359 not upgrading just yet. 2360 * Populate Java test class names correctly. 2361 * Display elapsed time for each test. 2362 * Fix for require / provide stuff still building unnecessary targets 2363 (they weren't depended on, but still got built). 2364 * Fix caching targets when run with plz cover. 2365 * Support for pseudo-targets like :all and ... with plz clean. 2366 2367 2368 Version 1.0.4 2369 ------------- 2370 2371 * Fix crash when running tests with --no_cache. 2372 * Nothing else, quick release to fix crasher. 2373 2374 2375 Version 1.0.3 2376 ------------- 2377 2378 * Test results are now cached & retrieved as other build artifacts. 2379 * Hashes are verified after retrieving from cache 2380 * Targets retrieved from cache are marked as unchanged when appropriate 2381 * Added a join_path builtin to the build language. 2382 * Remove all outputs after a build fails. 2383 * Attempt to import Python test modules ourselves before relying on unittest's 2384 detection, which produces misleading error messages if an ImportError is 2385 thrown while attempting to load the test. 2386 * Display depending target when we encounter a missing dependency. 2387 * If build fails due to an apparent dependency cycle, attempt to detect and 2388 print the cycle. 2389 2390 2391 Version 1.0.2 2392 ------------- 2393 2394 * Generate a python_library rule behind a python_binary to symlink 2395 the main .py file into plz-out. Fixes certain run issues. 2396 * Set ROOT_DIR variable while running tests. 2397 2398 2399 Version 1.0.1 2400 ------------- 2401 2402 * Support for skipping tests in go_test 2403 * Limit length of printed lines in interactive shell mode so 2404 output doesn't go berserk when window is too narrow. 2405 (it's still not great at being resized down but at least it 2406 stabilises after the window is reduced). 2407 * Fall back to attempting to copy files if hardlink fails. 2408 2409 2410 Version 1.0 2411 ----------- 2412 2413 * f1rst post!!!1!one