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.
Regression in handling an external dep containing a unicode character classname.

I chose to make the dependency on cucumber-java declared right in the BUILD file and not in 3rdParty/dependencies because I did not think another class would need to reference this library and it isn't needed by the rest of pants, just the example.

Testing Done:
In our case, the error was occuring if you ran 'goal binary' or 'goal bundle' as it ran the 'dups' task.

Added an example project that depends on 'cucumber-java' which has non-ascii classnames.

Added a unit test that depends on it, (but this would not catch the problem we saw because it was in the duplicate detection task)

Added a test to test_duplicate_detection.py to make sure unicode names are properly handled in this step.

Bugs closed: 207

Reviewed at https://rbcommons.com/s/twitter/r/494/
Regression in handling an external dep containing a unicode character classname

  (Accidentally left out changed from feedback in last merge)
jaxb_library target now exists. It takes in sources=[] for the schema file(s), and a package='...' parameter for what package to generate the output java files in. It uses the xjc compiler included in the jdk (executed using nailgun, using the tools.jar library found under java_home's lib directory). Code modeled after corresponding code for protobuffers, thrift, and antlr code generation.

Testing Done:
Python unit test under tests/python/pants_test/tasks/test_jaxb_gen.py - testing correct filename and package generation
Java unit test under tests/java/com/pants/examples/usejaxb - testing jaxb_library as a dependency in java code which uses generated classes

Jaxb file generation and compilation worked successfully for arbitrary package names, with an arbitrary number of output source files. XML class instance was read in against an .xsd schema, and properly filled fields in the generated java class.

Reviewed at https://rbcommons.com/s/twitter/r/446/
Fix protoc parser

- Add service support
- Better support for filename casing
Refactor the code
More refactoring
Added more tests
Split test case to 2 different tests
Revert "jaxb_library target now exists. It takes in sources=[] for the schema file(s), and a package='...' parameter for what package to generate the output java files in. It uses the xjc compiler included in the jdk (executed using nailgun, using the tools.jar library found under java_home's lib directory). Code modeled after corresponding code for protobuffers, thrift, and antlr code generation."

This reverts commit a0b1aefd811de3826423caa3ba636923e759a158.
The existing parser does not understand service protos, therefore the type_depth is wrong after it sees a service definition

e.g:

message AMessage {
}
service AService {
  rpc someRpc() {}
}
message AnotherMessage {
}

AService and AnotherMessage should get source generated and should be in outer_types in this case.

This change also includes a fix for filenames with - instead of _ as the camelcasing delimiter.

e.g

twitter-service.proto --> TwitterService.java instead of Twitter-service.java

Testing Done:

Added test cases to test_protobuf_gen.py

Fixed bug: 200

Reviewed at  https://rbcommons.com/s/twitter/r/488/
Added jaxb support for pants.

jaxb_library target now exists. It takes in sources=[] for the schema file(s), and a package='...' parameter for what package to generate the output java files in. It uses the xjc compiler included in the jdk.
jaxb_library target now exists. It takes in sources=[] for the schema file(s), and a package='...' parameter for what package to generate the output java files in. It uses the xjc compiler included in the jdk (executed using n

Testing Done:
Python unit test under tests/python/pants_test/tasks/test_jaxb_gen.py - testing correct filename and package generation
Java unit test under tests/java/com/pants/examples/usejaxb - testing jaxb_library as a dependency in java code which uses generated classes

Jaxb file generation and compilation worked successfully for arbitrary package names, with an arbitrary number of output source files. XML class instance was read in against an .xsd schema, and properly filled fields in the ge

Reviewed at https://rbcommons.com/s/twitter/r/446/
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.

This is the second attempt, after reverting and fixing
eb9413477401220c2299fa3e89a41fc42106d429.
Removing .pants.d during clean.sh makes it easier for me to get past the Untranslatable... exception

Testing Done:
travis-ci passes.

Tested manually

~/Src/Pants zundel/remove-dot-pants-dot-d ls .pants.d/
build_invalidator compile           gen               ivy               ng                python            reports           resources         runs              test              thrift
~/Src/Pants zundel/remove-dot-pants-dot-d ./build-support/python/clean.sh
~/Src/Pants zundel/remove-dot-pants-dot-d ls .pants.d/
ls: .pants.d/: No such file or directory

Bugs closed: 210

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

This reverts commit be65d80d1e7f573e447608d6fc8e3e395adc3957.
CI is failing in the same way as in the first iteration of this change.
Use os.path.normpath before os.path.basename

Testing Done:
[tw-mbp13-tdesai pants]$ ./pants tests/python/pants_test/base:address
Loading pants backends from source
Build operating on top level addresses: set([BuildFileAddress(tests/python/pants_test/base/BUILD, address)])
================================================================================ test session starts ================================================================================
platform darwin -- Python 2.6.7 -- py-1.4.20 -- pytest-2.5.2
plugins: cov, timeout
collected 3 items

tests/python/pants_test/base/test_address.py ...

============================================================================= 3 passed in 0.06 seconds ==============================================================================
tests.python.pants_test.base.address                                            .....   SUCCESS
[tw-mbp13-tdesai pants]$

Bugs closed: 209

Reviewed at https://rbcommons.com/s/twitter/r/499/
Updated pants script to clean after a failed attempt to bootstrap

Testing Done:
I've run 'build-support/clean.sh' and had it encounter an Untranslatable... kind of error.

On the next invocation, I see the output "Last bootstrap failed, cleaning up .pants.d" and the next bootstrapping succeeded.

Bugs closed: 213

Reviewed at https://rbcommons.com/s/twitter/r/501/
Third time's a charm?

A python_binary_create task, to bring pex-building under goal.