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