'goal builddict' Target classes "inherit" docstrings, signatures

Nowadays, our BUILD target implementations use class inheritance + some constructor idioms. But the BUILD Dictionary hasn't kept up. Thus, we have boilerplate docstrings and documented signatures like android_binary(build_type=None, *args, **kwargs)

This change...

Special-cases target handling in src/python/pants/backend/core/tasks/builddictionary.py to go up the inheritence tree, pull apart and re-assemble signatures and docstrings. Also, special-cases leaving out implementation-params we don't want in the user-facing doc (address, build_graph, payload). It doesn't have a general mechanism for leaving stuff out, though. E.g., python_binary's entry thinks it has a sources param (inherited from PythonTarget); mitigated by having a docstring for it saying "overridden: use source instead".

Removes many many redundant docstring fragments. My search wasn't scientific. Probably other removal-worthy pieces lurk.

Adds some docstrings. E.g. python_binary's "sources: overridden". Move some docstrings to superclass for easier inheriting.

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/35162328

Reviewed at https://rbcommons.com/s/twitter/r/1018/
Changed publish integration tests to use testprojects/*
Copied the examples required by the test to testprojects so they can be changed independently of examples without making those more convoluted.

Testing Done:
ci.sh

Reviewed at https://rbcommons.com/s/twitter/r/1026/
One publish/push db file per artifact

In order to reduce contention around publish/push db files this change splits up the repo wide db into one per artifact.

Reviewed at https://rbcommons.com/s/twitter/r/994/
Make a better error message when os.symlink fails during bundle.

Reviewed at https://rbcommons.com/s/twitter/r/1037/
Make SourceRoot fundamentally understand a rel_path.

Add a factory for constructing a SourceRoot from a ParseContext
as a secondary means of creation and wire this up to core's
regiaster.py.  Simplify a test as a result.

 src/python/pants/backend/core/register.py        |  2 +-
 src/python/pants/base/source_root.py             | 10 ++++++++--
 tests/python/pants_test/base/test_source_root.py |  6 +-----
 3 files changed, 10 insertions(+), 8 deletions(-)

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/35379833

Bugs closed: 575

Reviewed at https://rbcommons.com/s/twitter/r/1036/
Added --idea-exclude-maven-target to get exclude IntelliJ from indexing 'target' directories. If you are running maven and pants side by side, these 'target' files contain duplicates of a lot resources and other cruft you don't want to see when you search.

Testing Done:
Manual testing in the square/java repo.

Bugs closed: 570

Reviewed at https://rbcommons.com/s/twitter/r/1017/
 Added 'exclude-folders' option in pants.ini, defaulted to excluding a few dirs in .pants.d

 This is a followon to https://rbcommons.com/s/twitter/r/1017 that gets rid of the fixed list of includes in the .iml mustache template
 and allows you to override it.

Testing Done:
Updated the integration tests and inspected manually.

Reviewed at https://rbcommons.com/s/twitter/r/1023/
Update interpreter_cache.py to support a repo-wide interpreter requirement.

Reviewed at https://rbcommons.com/s/twitter/r/1025/
new page, 2014-09-16 Announcement

It's a "Hello Pants Build" announcement.

Testing Done:
eyeball

Reviewed at https://rbcommons.com/s/twitter/r/1008/
Support limiting coverage measurements globally by module or path.

This expands the PANTS_PY_COVERAGE env var from present/absent to
present and optionally specifying global coverage when its value is of
the form (modules|paths):[comma-sep list of modules or paths].

In the case of paths, make an effort to accomodate the sources
under test being contained in the test PEX chroot (the normal case),
but also support more exotic cases like running pants itself via
local live sources under PANTS_DEV=1.

Additionally re-structure the PythonTestBuilder coverage handling.

This change squelches reporting done by pytest-cov and just
uses that pytest plugin to generate the coverage data.  The
data is now post-processed to ensure sane paths are presented
to the user in the console and html reports.

Add a unit test to cover most aspects of the PythonTestBuilder
including basic test running, junit xml generation and coverage
and its path normalization.

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/35575246

Bugs closed: 328, 369, 574

Reviewed at https://rbcommons.com/s/twitter/r/1034/
Enable python coverage / coveralls in travis-ci runs.

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/35584970
Coverage looks good under ci now - 57% + sane paths on the console output.
Coveralls also looks good with 61.48% (not sure why it sums differently) and sane paths that display real coverage annotated files: https://coveralls.io/builds/1223782

Bugs closed: 369, 581

Reviewed at https://rbcommons.com/s/twitter/r/969/
Add coveralls badge to doc site and README.md.

Testing Done:
Sample doc site publish here - you may need to refresh: http://pantsbuild.github.io/jsirois/index.html
And README.md renders as such: https://github.com/jsirois/pants/blob/d5e2a149c2fc368327524d8c7b16168a8936c5db/README.md

Bugs closed: 369, 544

Reviewed at https://rbcommons.com/s/twitter/r/972/
Adding thrift-linter to pants.

Background and some discussion: https://groups.google.com/d/topic/pants-devel/xaYZ4ezUqok/discussion

thrift-linter calls scrooge-linter to detect problematic usage patterns in thrift files and fails if linter errors are found.

The linter has a strict option. If false, it prints the linter messages but does not fail the build.

The strict option can be set from command line (--[no-]thrift-linter-strict flag), in a BUILD file (java_thrift_library(... thrift_linter_strict=False|True)), or in pants.ini, in [thrift-linter section].

One requirement is to be able to call the thrift-linter goal separately. So it has to be a top level goal rather than a part of gen.

Testing Done:
build-support/bin/ci.sh
https://travis-ci.org/nshkrob/pants/builds/35587177

Reviewed at https://rbcommons.com/s/twitter/r/1044/
doc: if rbt fails, don't give up and workaround. things to try

Reviewed at https://rbcommons.com/s/twitter/r/1048/
remove page target whose README.md does not exist

Reviewed at https://rbcommons.com/s/twitter/r/1046/
Correct old examples/ reference - use testprojects/ copy.

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/35687312

Bugs closed: 585

Reviewed at https://rbcommons.com/s/twitter/r/1049/
Improve python CI robustness.

Ensure all tests/python targets are selected when dividing up unit
and integration tests - no longer use aggregator targets as a guide.

This change leaves the aggregators in-place and just divorces CI from
them to ensure we always CI all test targets.

 build-support/bin/ci.sh | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

Testing Done:
Locally:
$ ./build-support/bin/ci.sh

Travis went green here: https://travis-ci.org/pantsbuild/pants/builds/35691561

Bugs closed: 586

Reviewed at https://rbcommons.com/s/twitter/r/1050/
jvm_binary init handling of name param made more sense before kwargs idiom

...but now it's probably better not to mention it in the sig

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/35743270

Reviewed at https://rbcommons.com/s/twitter/r/1054/
Fix coverage tests on MacOS

Testing Done:
build-support/bin/ci.sh on my mac laptop.

ci green @ https://travis-ci.org/pantsbuild/pants/builds/35870205

Bugs closed: 595

Reviewed at https://rbcommons.com/s/twitter/r/1057/
Add a CI action to support CI against OSX.

This adds a sync action run on any push to pantsbuild/pants
master that replaces pantsbuild/pants-for-travis-osx-ci master
modifying the active .travis.yml to trigger an OSX CI run.

Testing Done:
Normal CI went green here: https://travis-ci.org/pantsbuild/pants/builds/35900516

OSX CI went green here: https://travis-ci.org/pantsbuild/pants-for-travis-osx-ci/builds/35899630
Via:
```console
$ set | grep GH_ | cut -d= -f1
GH_EMAIL
GH_TOKEN
GH_USER
$ ./build-support/bin/ci-sync.sh
[jsirois/pants-for-travis-osx-ci/sync 9a13170] Prepare pants OSX mirror for CI.
 Author: Pants CI <pants-ci@googlegroups.com>
 1 file changed, 13 insertions(+), 40 deletions(-)
 rewrite .travis.yml (87%)
Counting objects: 37, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (23/23), 3.05 KiB | 0 bytes/s, done.
Total 23 (delta 14), reused 9 (delta 3)
To https://github.com/pantsbuild/pants-for-travis-osx-ci.git
 + 888c8bf...9a13170 HEAD -> master (forced update)
$ gitbinfo
* jsirois/pants-for-travis-osx-ci/sync 9a13170 [pants/master: ahead 2] Prepare pants OSX mirror for CI.
$ git slog -2
commit 9a13170039dfe93824fd9487f78f96c134e09d88
Author: Pants CI <pants-ci@googlegroups.com>
Date:   Sun Sep 21 20:22:52 2014 -0600

    Prepare pants OSX mirror for CI.

 .travis.yml | 35 ++++-------------------------------
 1 file changed, 4 insertions(+), 31 deletions(-)

commit f4cb72ba4cc48ec5f6a23c86903fe83b735a8f3f
Author: John Sirois <john.sirois@gmail.com>
Date:   Sun Sep 21 17:30:29 2014 -0600

    Add a CI action to support CI against OSX.
...
```

Bugs closed: 596

Reviewed at https://rbcommons.com/s/twitter/r/1058/