Upgrade jmake to 1.3.8-3, fixes issues where builds would fail when package-info.java is present.
Add package-info.java to test that it does not fail the build.

Reviewed at https://rbcommons.com/s/twitter/r/457/
Use temporary directory for publish local

Testing Done:
Locally.

CI.
https://travis-ci.org/pantsbuild/pants/builds/27161708

Bugs closed: 195

Reviewed at https://rbcommons.com/s/twitter/r/469/
remove unused parameter

Testing Done:
 ./pants goal test tests/python/pants_test:all

Bugs closed: 173

Reviewed at https://rbcommons.com/s/twitter/r/468/
fix a couple of missing deps

Testing Done:
./pants tests/python/pants_test:all

It passes. With this change, it passes even if I recently cleaned.

Reviewed at https://rbcommons.com/s/twitter/r/471/
Fix some nits.
Upgrade jar-tool to 0.1.7

This picks up a fix that prevented clean cross-fs
jar copies due to unclosed temprorary files.

Testing Done:
# observed jar-tool 0.1.7 ivy download and subsequent jarring (not cross-fs) work:
$ PANTS_DEV=1 ./pants goal clean-all killserver server
$ PANTS_DEV=1 ./pants goal binary bundle src/{java,scala}/::

Bugs closed: 198

Reviewed at https://rbcommons.com/s/twitter/r/475/
get doc gen working post-backend-refactor

'goal builddict' runs instead of crashing, yay.
re-enabled builddict tests; took out the "len(usual_symbols)>20" test; couldn't figure out an easy way to get the "usual symbols". No big loss; I don't think that test ever found an error.

Added a hardwired entry for the now-gone "egg" in BUILD dictionary: "If your pants is old, there might be `egg` in there." Sounds like instructions for someone wearing an outfit from the Owl Thrift Shop, but there you go.

gen.py grabbed code from "tasks" and "targets" dir. But now there's more than one of those dirs, so check 'em all.

Testing Done:
./pants tests/python/pants_test:all

./build-support/bin/publish_docs.sh -o
  compare list of entries in an old and new BUILD Dictionary (and thus notice "egg" went bye-bye)

Reviewed at https://rbcommons.com/s/twitter/r/463/
Fixup python integration tests under ci.

Release the lock for the pytest task as is done for the junit task
and other code-run tasks (run, repl).

Convert ci to use the pytest task (test goal) and eliminate dup
runs of python tests by restricting the jvm tests to just the
jvm targets.

This change also adds pass-through args for pytest to aid debugging
tests and otherwise running them.  When using this to un-suppress
pytest output, a second form of test blocking was uncovered with
the stdin 'yes' plumbing not working properly.  As a result this
change tweaks the IT in question to use a more robust method of stdin
piping to the pants subprocess.

Testing Done:
1st reproed IT test lock under the test goal (worked find under old build command test runner).

Python tests run once (normal and IT), and they no longer block.
$ ./build-support/bin/ci.sh

Also confirmed the it works with output un-suppressed:
$ PANTS_DEV=1 ./pants goal test tests/python/pants_test:integration --test-pytest-options="-v -s"
...
12:56:36 00:01   [test]
12:56:36 00:01     [pytest]
12:56:36 00:01       [run]
                     *** Running pants in dev mode from /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants2/src/python/pants/bin/pants_exe.py ***
                     ============== test session starts ===============
                     platform linux3 -- Python 2.6.8 -- py-1.4.20 -- pytest-2.5.2 -- /home/jsirois/dev/3rdparty/pyenv/versions/2.6.8/bin/python
                     plugins: cov, timeout
                     collected 2 items

                     tests/python/pants_test/tasks/test_jar_publish_integration.py:25: JarPublishIntegrationTest.test_java_publish Loading pants backends from source

                     12:56:38 00:00 [main]
                                    See a report at: http://localhost:37586/run/pants_run_2014_06_10_12_56_38_23
...
                     12:56:44 00:06     [jar_create_publish]
                     12:56:44 00:06       [jar-create]....
                     12:56:46 00:08     [publish]Skipping check for a clean jsirois/travis/it_unblock in test mode.

                     Changes for com.pants.examples#hello-greet since 0.0.0 @ None:

                     commit 7c56621a9c4e8a3aca2bee567d77e5a13b6f8a3b
                     Author: Benjy <benjy@foursquare.com>
                     Date:   Tue Apr 1 02:34:30 2014 +0000

                         Introduce java examples.

                      .../hello/greet/Greeting.java    | 13 ++++++++++
                      1 file changed, 13 insertions(+)

                     12:56:46 00:08       [jar-publish]
                                    Waiting for background workers to finish.
                                    SUCCESS*** Running pants in dev mode from /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants2/src/python/pants/bin/pants_exe.py ***

                     PASSED

...

Bugs closed: 201

Reviewed at https://rbcommons.com/s/twitter/r/478/
doc: add/improve "Implemented by..." in generated docs

I didn't have a great answer for: "If this is intended only for BUILD file authors, then stick with jar; otherwise you might want to mention both [jar and pants.backend...JarDependency] for clarity." Here's an attempt to rectify that: With this change, the generated doc for "jar" mentions "JarDependency". And other thingies similarly mention where they're implemented.

This change adds lines to most of BUILD Dictionary items a la
  Implemented by pants.backend.python.targets.python_tests.PythonTests
...so if someone gives you a python_tests and you're a new Pants developer, you can find the underlying code without having to grep all over.

Also, where the Goals reference used to say
  Implemented by MinimalCover
...with this change it says
  Implemented by pants.backend.core.tasks.minimal_cover.MinimalCover

Testing Done:
./build-support/bin/publish_docs.sh -o

./pants tests/python/pants_test:all

Bugs closed: 187

Reviewed at https://rbcommons.com/s/twitter/r/479/
Fixup test_targets_help.py and link back into :all.

Testing Done:
$ PANTS_DEV=1 ./pants goal test tests/python/pants_test/tasks/:targets_help
...
23:43:15 00:01       [jvm-compilers]
23:43:15 00:01   [test]
23:43:15 00:01     [pytest]
23:43:15 00:01       [run]
                     ============== test session starts ===============
                     platform linux3 -- Python 2.6.8 -- py-1.4.20 -- pytest-2.5.2
                     plugins: cov, timeout
                     collected 2 items

                     tests/python/pants_test/tasks/test_targets_help.py ..

                     ============ 2 passed in 0.32 seconds ============

23:43:22 00:08     [junit]
23:43:22 00:08     [specs]
               SUCCESS

Bugs closed: 203

Reviewed at https://rbcommons.com/s/twitter/r/483/
Remove unnecessary print to stdout

This breaks scripts that rely on parsing the stdout of various pants
commands.

Testing Done:
Works internally.  Change is extremely trivial.

Reviewed at https://rbcommons.com/s/twitter/r/486/
Some minor regressions in python test targets/builder

Fix a minor regression in the PythonTest interface (it used to take a timeout
param).  Also use a more recent version of coverage for python tests.

Testing Done:
CI passes

Reviewed at https://rbcommons.com/s/twitter/r/480/
Re-introduce jvm_app.binary.

This maintains support for specifying a JvmApp's binary via a singleton
dependency but favors the dedicated binary kwarg which properly evokes
both the type and cardinality of the argument.

Adds unit tests covering the new kwarg, backwards compat and new
lazy checks that the binary property is valid.

Testing Done:
$ PANTS_DEV=1 ./pants goal test tests/python/pants_test/:all

Bugs closed: 202

Reviewed at https://rbcommons.com/s/twitter/r/482/
Unbreak test_detect_duplicates.py and link into :all.

I think the test could be improved to be more black box and not dip
in to test a private method directly, but this fixes the basic break
due to a signature change in the tested private method.

Testing Done:
$ PANTS_DEV=1 ./pants goal test tests/python:: --test-pytest-options="-v -ktest_detect_duplicates"
...
00:15:23 00:01   [test]
00:15:23 00:01     [pytest]
00:15:23 00:01       [run]
                     ============== test session starts ===============
                     platform linux3 -- Python 2.6.8 -- py-1.4.20 -- pytest-2.5.2 -- /home/jsirois/dev/3rdparty/pyenv/versions/2.6.8/bin/python
                     plugins: cov, timeout
                     collected 282 items

                     tests/python/pants_test/tasks/test_detect_duplicates.py:68: DuplicateDetectorTest.test_duplicate_found PASSED
                     tests/python/pants_test/tasks/test_detect_duplicates.py:73: DuplicateDetectorTest.test_duplicate_not_found PASSED
                     tests/python/pants_test/tasks/test_detect_duplicates.py:78: DuplicateDetectorTest.test_fail_fast_error_raised PASSED

                      279 tests deselected by '-ktest_detect_duplicates'
                     ==== 3 passed, 279 deselected in 0.83 seconds ====

00:15:25 00:03     [junit]
00:15:25 00:03     [specs]
               SUCCESS

Bugs closed: 204

Reviewed at https://rbcommons.com/s/twitter/r/484/
Add resource products on the target itself in jar_create

This fixes a regression where scalac_plugins were not having their
scalac-plugin.xml files written into the jar.  Any other subclass of
JvmCompile that uses JvmCompile.extra_products will also suffer from
this regression.

Testing Done:
CI passes

Reviewed at https://rbcommons.com/s/twitter/r/489/
Add TODOs for JvmCompile.extra_products
Add "package" field to android BUILD file

This is merely a placeholder until I get to work on the ManifestParser.
Just use the field for now so that the size of this review doesn't
balloon out of all control.
Make Address abstract and support constructing SyntheticAddresses from specs or path, name tuples.

Testing Done:
$ PANTS_DEV=1 ./pants goal test tests/python/pants_test:all

Bugs closed: 205

Reviewed at https://rbcommons.com/s/twitter/r/487/
A python_binary_create task, to bring pex-building under goal.

This task supports 'compatibiity' specs in python_binary targets,
to restrict the interpreters the pex machinery can select from.

Old functionality via 'command' is unchanged.
Revert "A python_binary_create task, to bring pex-building under goal."

This reverts commit eb9413477401220c2299fa3e89a41fc42106d429.