[PATCH 001/285] add classifier option directly to jar dependency, and use in pom file

RB_ID=145265

(sapling split of 03358b24f920789dbda1320e2349376ca8f1cb4e)
add classifier option directly to jar dependency, and use in pom file

RB_ID=145265

(sapling split of 03358b24f920789dbda1320e2349376ca8f1cb4e)

 Ensure requests to materialize pure thrift as compiled thrift are unique.

Extract _register_once to centralize gating unique synthetic target cration requests
Elevate the Request to a simple class
Fix ScroogeGen to not transfer ids which de-uniquified synthetic targets.

RB_ID=145358

(sapling split of ac09c295deb98c93eb8bb8f43856d9c23548d2cb)

 Fixup --no-publish-transitive to select synthetic library pairs for any codegen targets listed on the CLI.

RB_ID=145594

(sapling split of 8383fa90c8d8be13bca37142119d7ea9775d16a6)

 Fixup protobuf parsing

Trim matched tokens, surrounding ws is not to be taken as a portion of any of the tokens we parse.
Cleanup pep8 lints.

RB_ID=145955

(sapling split of 2bd02b44bf911171cabc4b6636e5f3ce82f353ac)

 Ensure compiled_idl synthetic targets have fully unique names across all Request attributes.

RB_ID=146124

(sapling split of d43c523631ad915a7352ebce95938ba19f8b94ed)

 Pin science to psutil 0.5.0 until api incompatibilities in 0.7.1+ can be resolved.

Kill instances of unused psutil.

RB_ID=147275

(sapling split of 38c61f4fec5d72d6450afae82264d08b16226a1c)

 Fixup Git to use the older -a to signal an annotated tag.

RB_ID=146973

(sapling split of 93f16019f240e74b6edd663274166c7f87aad267)

 Register a standard source root for thrift_libraries in maven layouts.

RB_ID=147285

(sapling split of bc7fdcfa8970cf05234efbb1715403e0bd78bc66)

 enable publishing to Confluence4.0+

RB_ID=144041

(sapling split of b33350d93726c100109616c3d880985d42742831)

Fixup compiled_idl to locate synthetic JavaThriftLibraries pairs to ThriftLibraries in the same virtual BUILD file.

Shorten naming to go along with this.

The synthetic pair for a ThriftJar is still the same, ie:
  JavaThriftLibrary(.pants.d/idl/BUILD:com.twitter-expandodo-thrift-only-1.0.6)
  JavaThriftLibrary(.pants.d/idl/BUILD:com.twitter-expandodo-thrift-only-1.0.6-scrooge-scala-ostrich-70f2c955594cf989a94c36e08a0417fae4f7dce3)

The synthetic pair for a ThriftLibrary though goes from this:
  JavaThriftLibrary(sandbox/users/jsirois/src/main/thrift/BUILD:sandbox.users.jsirois.src.main.thrift.com.twitter.service.base-scrooge-scala-ostrich-70f2c955594cf989a94c36e08a0417fae4f7dce3)
To this:
  JavaThriftLibrary(sandbox/users/jsirois/src/main/thrift/com/twitter/service/BUILD:base-scrooge-scala-ostrich-70f2c955594cf989a94c36e08a0417fae4f7dce3)

Also add in LAST_GREEN and DEBUG support to auto-ci.sh instead of continually hacking this in to debug auto-ci driver script issues.

RB_ID=147679
NO-QUEUE=true

(sapling split of 20b3af6cd4e64f8b27448754f94fb118c059a8bf)

 Restrict JarCreate to operating on libraries.

RB_ID=147635

(sapling split of b221a3e8de36c507318e1e27939468d05d74f142)

 Bump to junit-runner 0.0.31 to pick up moved @TestParallel/@TestSerial support.

RB_ID=148463

(sapling split of bc9730970f51cec72d778494d5760e8096dab803)

 Remove run-specific identifier from GC executor service name

RB_ID=149043

(sapling split of 01a81d3a45727944ccc6ab8422e19177a35a1b20)

 Fixup thrift_gen compiler error handling and add error to the context log level set (in red).

RB_ID=148501

(sapling split of 2eec050feff1384e1ae2106cb365131681dc6516)

Fixup args-apt resource mapping for published jars.

RB_ID=149880
NO-QUEUE=true

(sapling split of 29e1d581a46da448a3c306f83c06be939efa7160)

Fix AWESOME-3690

RB_ID=150286

(sapling split of 744308686b06cfeb62539712e1150db60b03c252)

Allow for registration of maven subprojects from the root BUILD.

RB_ID=149104

(sapling split of 765825e5e39da64d2427eae8c409a64f2a2e7284)

Some pants tips
New pants doc with a few pants tips I think are generally useful, which can be expanded upon as we learn new stuff.

* Always provide a default target
* Avoid rglobs whenever possible
* Use separate targets for interfaces and implementations

RB_ID=149583

(sapling split of c9f60e2e05a7bef3404ef1841e2461b8fbb9576f)

Allow anchors on pants() links, link to anchor within page.
Link within page, a la [[See section two|pants(':page')#two]]

RB_ID=150833

(sapling split of ede75de03a0e2933dbd75ddff6f3bed74b719052)

Pants README: add links -> Usage; don't encourage using rglobs

RB_ID=151174

(sapling split of e9bf4e97cf0f1a6356ac8f4f6f570684b04c6134)

Netrc can handle multiple hosts

RB_ID=155943

(sapling split of 84f5b5bf379b80a5af1666dd0b8e5ef4548b8d58)

Fixup jar_publish for local and otherwise unauthenticated target repos.

RB_ID=157753
NO-QUEUE=true

(sapling split of a028a12c95896d55208b232ee389a46c7998bde9)

Add a simple sort goal.

RB_ID=157739

(sapling split of 3ab2184b45f69b349972a415e51574b73e4674b9)

Fixup Filemap dups.

Move to ConsoleTask infrastructure and add a unit test.

RB_ID=158201

(sapling split of 19827d7dc344b34c722464197e606d5383477012)

Fail fast when mapping classes to targets is ambiguous.

RB_ID=158215

(sapling split of 9817133dae7fd8a07ecf6fd71fb95631ba819a3e)

Help jar.force act transitively by pairing an <override/> whenever we find a force.

RB_ID=158231

(sapling split of 8072a06787749a0b729ce1f1b5f1e5b3aa566d0f)

Revert "Fail fast when mapping classes to targets is ambiguous."

This reverts commit 9817133dae7fd8a07ecf6fd71fb95631ba819a3e.

RB_ID=158468
NO-QUEUE=true

(sapling split of 26b27fdb8017fdd26e9b8cb4b519ff2f9f6c48f7)

Support bundling binaries directly for those cases when there are no extra loose files to bundle.

RB_ID=159888

(sapling split of 82d5b9b8065a4dcd3d29485e2d197314fa37ea9d)

Fixup BundleCreate to resolve the target roots specified on the CLI
to concrete targets before processing.

RB_ID=160301

(sapling split of dd852bf43f194d36168ba8dd6c0f0b0aa3b1d128)

Added a note under python_requirement about including once and then using the name.

RB_ID=160309

(sapling split of 6eeedbb25d8b3e0c76cdfa3f2a8a6e1b630b05bb)

Pants doc: nailgun specific failure information

RB_ID=161754

(sapling split of d14b5835fe8f14ac692663933029181f72071257)

Fixup bad synthetic library thrift file paths introduced by 20b3af6c.

RB_ID=162837
NO-QUEUE=true

(sapling split of 3a3d3612561f28a4c6c6a94d2bc5e776baba0906)

 Python checkstyle tool run errors

RB_ID=153672

(sapling split of 504136fa4322179f22d312f8713d7222c8db2eec)

Pants: added --test-junit-test-shard option, that translates into -test-shard option of ConsoleRunner.

RB_ID=163230

(sapling split of 5406c183808c4b46dcf8a1dd06ae6696daa8e8fe)

Correct the default noop Log to support error.

RB_ID=163635

(sapling split of 506c1d7759fe37413fbf05c6f1537f99dd7b7e98)

Fixup depmap goal to actually iterate over all its results.

RB_ID=163828

(sapling split of 444b8befeaa34200066aa5e043156732b67567dc)

split out twitter.pants.python code generator

splits out twitter.pants.python sdist/egg builders into the code generator
target to reuse code

implements the MultiResolver for py3.new => updates PythonRequirement to
duck-type to pkg_resources.Requirement

a few plumbing changes for multiple interpreter versions.

no-queue because last run (of ~5) passed all tests except an unrelated devprod test.

RB_ID=154612
NO-QUEUE=true

(sapling split of 20e78147c0212dd5eabca11d1e44fb9f99d4cd85)

Revert "split out twitter.pants.python code generator"

RB_ID=164594
TBR=true
NO-QUEUE=true

(sapling split of 28a70c1aee858adca05bb6dc3439a6098a4b9674)

Add a sanity check to idl extraction - fail fast on collisions.

RB_ID=164433

(sapling split of b192ad4938820c1fac4bd2cc907811bd5f2f54d1)

unrevert and fix "split out twitter.pants.python code generator""

RB_ID=164668

(sapling split of 444108a8221973b420ae60dbe7122bdf19db3ff3)

Update pants py to be multiplatform.

Step 3 towards python.new
- Add Python interpreter cache
- Update pants py to be multiplatform. (None of the other pants.old targets have been updated yet.)
- Adds -r option to pants py to allow free-form bundling of requirements
- Fixes pants py to work with PythonBinary targets that define .entry_point instead of .source
- Fix shadowing of the zip directory cache so that PyPy and PEX get along.

RB_ID=154623

(sapling split of 5e9c98d7783fb39cf9adc6daa15fc5c87de5c371)

don't erase skipped argument in pants py

RB_ID=165283

(sapling split of 1d2181eb4e7ab6c3044d6469590664902cc632f7)

port pants sdist_builder over to use twitter.common.python

RB_ID=166358

(sapling split of 974bc36cf90064523c3c68ece5f92230119971fa)

Avoid a stack trace when an invalid target is supplied to ./pants py.

RB_ID=166417

(sapling split of 76e39de12cf22de68a6d7d8c8e18b5cee207509d)

options for more memory-efficient pex files

Adds always_write_cache option to PEX files (please suggest a better name if there is one.)  What this feature does is the following:
  if the PEX is a directory or (the PEX is compressed but always_write_cache=True):
     don't bother monkeypatching zipimport=twitter.common.python.importer
  else:
     monkeypatch

The t.c.p.importer recursive zipimporter needs to load all zip-based eggs
into RAM in order to use them, so that uses a bit of extra memory if any of
the eggs happen to be big (e.g.  mesos core.)

always_write_cache=True will dump all pexfile/.deps into ~/.pex/eggs first,
then relies upon the standard library zipimporter.

the motivation for this can be found at
https://jira.twitter.biz/browse/MESOS-3251?focusedCommentId=997079&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-997079

specifically, we were OOMing when launching the thermos_executor.pex in a
128M cgroup even though the steady-state RSS is ~50M.  turns out that we
were using >80M just to write mesos eggs to disk in order to launch.

RB_ID=168593

(sapling split of 03476b14ac08d921817e0fa1877790a44240fd09)

Fixup ConsoleTask to handle sigpipe gracefully.

Add a unit test for this.

RB_ID=170712

(sapling split of c6d74c7af5670806a80bf74e6c8b9ecf979324a3)

Add support for resolving any jar format as a root thrift_jar.

RB_ID=170211

(sapling split of 135ff841eded0f4a011118889ecb1cf89f8d63dc)

Don't try to walk the target graph while being parsed, push target resolution by targets themselves into lazy properties.

This is a bridge fix.  What really needs to happen is breaking target parsing into a struct eval stage followed by a graph construction and validation phase.

RB_ID=171655

(sapling split of a6127080f0291fbf3ebd29f264fbd1cf2b9caabc)

Add support for finding git tag refs and not just annotated tag objects.

RB_ID=172268

(sapling split of e821e9f2ef75a5ab19585fc3f4abb6b68e23c51e)

Revert bare address pointer form to pants(...) form until open source pants bits that enable this are synced inbound.

RB_ID=172551

(sapling split of 9011f83ef02265e454b329a5b540bf9c49a3b144)

Pull in fixes from the AWESOME-1265 merge that ameliorate issues caused by compiled_idl synthetic targets in the auto-ci pipeline.

Introduce derived_from to track synthesized targets.
Fixup compiled_idl, code_gen and scrooge_gen to tag synthetic targets as such.
Adapt the changed and dependees goals to take synthetic targets into account.

RB_ID=173481

(sapling split of 3fbb23b9a3a8005809e7569f853428f5ca23013a)

Extract idl jars to dedicated directories and drop file content uniqueness checks.

Kill obsolete extract dup check tests.

RB_ID=174361

(sapling split of d4e11ea5b8f82ce5e4e3b76738bfdb165ae1d7cb)

Fixup ScroogeGen to use a unique output dir per compiler permutation.

RB_ID=174667

(sapling split of b1ebe2133d5b4e84d5b9587580d688e21ea1a23a)

allow python_requirement to use custom repo and configured repos

RB_ID=173316

(sapling split of 18cfa18b4f4dcbdc734ccb8dd8b95ea66dd67da5)

Pants troubleshooting advice plagiarized from email threads

RB_ID=175574

(sapling split of 58ee13c734d2bcd1f15041a030c3c30f43e0750b)

Fixup the changed goal to just skip synthetic targets.

The comment in the code had the gist right, the code however
over-reached.

Add a unit test to confirm that modification of a source file with
more than one owner detects all owning targets have changed.

RB_ID=175595

(sapling split of fa6e6bd61351d1fde4b65adc7742681c710e916a)

Telling open-source Pants folks to use a science-tools script: unintentional troll

RB_ID=176165

(sapling split of a055144b9589c534e86f251b0da75be886b4e694)

Start a Pants-with-JVM page. Wanted a place to doc http://go/jira/TECHDOCS-48

RB_ID=175321

(sapling split of 0eb14e17db6e5c43cdc75607f0d99c8c390fb202)

Introduce safe_filename and use this to guard BuildCache cache entry filenames and jar filenames for synthetic targets.

RB_ID=176106

(sapling split of 2c14fa48c927ff3ccd6a4a775beb78fa79c4a506)

Patch-up classifed jar names to take into account their full, larger, extensions.

RB_ID=176544

(sapling split of 750b62bd4b2ceac8b4afadfc4ca7719fbe58f8b2)

expand docstringage.

RB_ID=174462

(sapling split of ed1b7d5655761c576edcd9e90e5c6c4f09dcded9)

Cap jar names at 200 characters to leave headroom for processes that might manipulate the jar names blindly.

Pants now guards for too-long-filenames but processes that use its file outputs may not.  In particular
we know IntelliJ IDEA does not, blindly appending a suffix to jar names as part of its internal caching
scheme.  This fix just crudely provides 'reasonable' headroom.

RB_ID=178061

(sapling split of dedd48d8fcdf28c584582ca2077a89e17029511c)

Clarification from HSato: Tasks are part of Goal implementation too

RB_ID=178632

(sapling split of ee3dd2ab4346f7eb2395946cd74f114248c013ed)

Add pants and thrift dependencies doc.

I considered updating https://cgit.twitter.biz/science/tree/3rdparty/README.md because part of this doc talks about external dependencies. However, thrift sharing is a large enough topic around here I thought it needs a dedicated page.

This was motivated by https://reviewboard.twitter.biz/r/175276/ where the question of how to layout an external dep was discussed.

RB_ID=175355

(sapling split of c7f35322759d918f60d3455d4a1f8e1033d884dd)

thrift compiler's includes option should use absolute paths in python build

RB_ID=179433

(sapling split of 3b2e96f62a2a44ef9af9393d1a04b4e83a17eb38)

add ipython support to pants py.

RB_ID=175158

(sapling split of db60830d21663683dfb4fb54ce98f8358803c329)

Add pants goal to display help about installed target types.

Add a "targets" goal to pants that displays online help for installed targets.
This was inspired by the "goals" goal that displays detailed info about installed goals.
This change was coordinated with the technical writers about docstring locations
so it works with autogenerated documentation.

RB_ID=176825

(sapling split of c1063db20071a6cabd9d2b828483c63008bfc2c5)

discard source => dist translations that do not match the expected platform

RB_ID=181179

(sapling split of a0dfd1d0b557ef93e58d8d006e4a9ee74004b1e2)

quiet resolution failures that aren't resolution failures

RB_ID=181346
TBR=true

(sapling split of a1c6786b2dfe1c73920cefbdbc056dbe1d0c080d)

Add mention of diamond deps, a topic of past pants-users discussions

To think about: this is also an issue for Python, but we don't seem
to get questions from Python folks. Maybe they're all geniuses?

RB_ID=179967

(sapling split of 3a104a1c85e1b3ff0a4d48eb7ab4b6893181eb8a)

Update pants to use per-target jars rather than a single jar for all internal sources.

Previously, pants created a single jar for all internal sources. This change now
creates a jar per internal target, bundled in the "libs" bundle directory.
Internal sources are at the beginning of the manifest classpath.

RB_ID=179253

(sapling split of b594e8f0e4c5407fa7d20fcc6c866a31cdcc2086)

Pants website config, docs, and reference generator.

This change includes the Sphinx configuration file and supporting tools to generate a Pants website. We do the following here:

* Generate a skeleton website our existing docs can be migrated into, giving a single cross-referenced site for all our docs.
* Generate a reference manual for Tasks and Targets. Note currently the docstrings are not formatted in rst so the output looks poor. The credentials.py change shows an example of what we need to do to all our docstrings. I've included one example here, and if it looks good can update the others.
* Include a page describing how the documentation works, as this will be needed at first. Other markdown pages will be migrated here.

I expect we'll make a number of tweaks to the site as this gets more attention, but I'd like to have a skeleton to iterate and get feedback on.

Initially I plan to publish this on blabber and setup a pants link. After the open-source merge I'd like this to be the github.io page.

RB_ID=181764

(sapling split of bd50dd70f9eaa1bff71ec3da349697edf7eedd57)

Update pants targets docstrings so targets online-help command displays useful info.

RB_ID=181318

(sapling split of ffe5c7a50e92f489a7a7099d66a1e45e8ab19632)

Switch science over to use scrooge for thrift java.
- This change inadvertently changes the chunking around in pants, so declare dependencies that are missing.
- Thrift changes to be compatible with scrooge.
- Scrooge does not have a -recurse feature, so you need to explicitly include targets for files included by other thrift files.
- Keep twadoop on apache thrift since they use 0.7.0

RB_ID=179179
NO-QUEUE=true

(sapling split of 403224b7a5140ecb73195cfb3a06057ddc1c252e)

Fix idl_deps example.

Sean found this documentation bug during a code review cycle.

RB_ID=184039

(sapling split of e68aa679485bd50e7a7cda55f0a9b93dcd2f8173)

Update pants target constructor docstrings

Update pants target constructor docstrings, both improving their descriptions and formatting in RST so the generated site looks nice.

RB_ID=183759

(sapling split of ee07ff25f2dfd626201248be26b3c8707516f527)

Consolidate pants-for-recovering-mavenistas in one doc

Plagiarizes material from Birdpants and PantsTips wikis.
I'll replace the maven-ish material from those wikis with links to this doc.

RB_ID=181728

(sapling split of c41c7a7d975ee35f55b847696d9573a75c2f6a07)

BUILD dictionary builder

RB_ID=173811

(sapling split of a61016cba35cb5cc5288b0723c86875e1849be1c)

Add a Task that prints jar publish information about a target.

RB_ID=172762

(sapling split of 92f4a23167521a99a52fba7b4ee975d6c7491e56)

Added Depend on API in library targets, implementation in binary targets

This has come up a few times in the birdpants migration code reviews.

RB_ID=186343

(sapling split of 59d09733b3cad8341998fe1e0fe8ded815940064)

FIX: pants Ivy sometimes can't create symbolic links

When I was running pants for Java or Scala projects, I found that Ivy is trying to copy many dependency jars from ~/.ivy to ./.pants.d/classpath/mapped-jars even if we give -symlink option.

I traced the source code and found that Ivy is calling "ln -s" internally to create a symbolic link and after that, using File.getCanonicalPath() to make sure whether it is actual symbolic link or not. Unfortunately it doesn't work in very specific case, then Ivy just removes the symbolic link then copies file instead.
Here is a proof of concept why Ivy fails to confirm the symbolic links using File.getCanonicalPath() - https://gist.github.com/niw/6456578

In the Ivy code, it invokes File.exists() before making symbolic links, which eventually calls File.getCanonicalPath() and cache non-resolved path when we're using SecurityManager.
And, pants using Nailgun as default and Nailgun sessions are using NGSecurityManager which is inherited from SecurityManager causes this issue.

To address this issue, I gave -Dsun.io.useCanonCaches to jvm to not use cache when calling File.getCanonicalPath().

RB_ID=180945

(sapling split of c661afea1e8601ba3fe6ac3ba6365d5bc9a0ce72)

Pants doc Template: record visit analytics to TwitterOSS account

RB_ID=187443

(sapling split of 20322ce775be643e34d489c478ec32182736c836)

Update docstring for ThriftJar.

This came up on pants-users and the docstring was not good enough to simply point the user at.

RB_ID=187937

(sapling split of a214e1d5564854b6e4648d3783bfea3acda758a8)

Fix docstring from https://reviewboard.twitter.biz/r/187937/

RB_ID=188083

(sapling split of c94c7dcc5f4ba878d39a118ebe735ad5898d3501)

Improve jvm tool profile classpath caching with a stopgap.

+ base caching on the hash of the ivy file to ensure ivy file changes force new tool classpath resolves automatically
+ invalidate caches for tasks that use caching and a jvm tool where appropriate
+ re-arrange some tasks such that profile classpaths are resolved prior to change detection to allow for a tool change to invalidate targets

RB_ID=186171

(sapling split of de1aa3412f9ec6ffb0f55e54489a6e41a835b80e)

BUILD dictionary generator: now via reST

RB_ID=188477

(sapling split of 36179fdd387cfd28a2b1b5a97f1ae58ca6f6b373)

Remove use of unsued buildflags and deployjar args. These flags have been ignored for some time and this change is a no-op.

RB_ID=189971

(sapling split of 3dfc320d6cb05fcfbda421bc18363ee47e86c99b)

BUILD dictionary uses docstrings. Their indentation is gnarlier than I thought

RB_ID=189663

(sapling split of 2993d45017eea38242216744e4e860e103b0c297)

Fix jar_publish to handle non-synth paired idl publishing.

DRY for ivy publish.
Break up stage_artifacts and stage normal and derived idl artifacts explicitly.
Fixup idl publishing to only append/assume -only for synth idl targets, not pure thrift_library idl targets.

RB_ID=188393

(sapling split of 2d865db5f7387d771c56c51142774d06fa2d5b22)

Revert "Fix jar_publish to handle non-synth paired idl publishing."

This reverts commit 2d865db5f7387d771c56c51142774d06fa2d5b22.

RB_ID=190937
TBR=true
NO-QUEUE=true

(sapling split of c71e65bf2cfe0970a82fec777ae048cfb69486b6)

add :param to be Sphinx-friendly

RB_ID=188657

(sapling split of c4fa5402dabe14ff0912712efe0df4565cd1b080)

Fix pants tests to run on osx.

RB_ID=191313

(sapling split of bfa72eb4211f176530c9399c6b210ea3a150d4d1)

Revert "Revert "Fix jar_publish to handle non-synth paired idl publishing.""

This reverts commit c71e65bf2cfe0970a82fec777ae048cfb69486b6.

Adds these fixes on the revert-revert:

Fixup InternalTarget jar dependency filtering - was not narrow enough and is now exact.  Also fixup (revert to old)  JarDepency representation.

RB_ID=190951

(sapling split of 8e2cb66c5523616d6497283f79b65abd5324f89a)

- Add docs about Python tests to python/README.md

RB_ID=179187

(sapling split of aa8656a0578acdee317f0b21c8c8805b6db86403)

verbiage about targets

RB_ID=189767

(sapling split of 84ed8aaa634a05662b192fa762442ded067528fc)

Fix for bug where using relative paths for --bundle-outdir is failing.

RB_ID=192581

(sapling split of c3b78009d33c08ba32aa874eec1e82da7ca64a22)

Improve pants resources error handling.

In AWESOME-5477 a user reported a pants issue when trying to mix
old/new style resources handling. This change improves checking
for such errors, gives a useful error message when misconfigured,
and updates documentation so we can point users at the Right Way
of doing things.

RB_ID=191093

(sapling split of 4db2a8f5c0f5ea6632ccee66bbab217ac9238c65)

Require java_library targets have either sources or resources.

Pants users often use `java_library' targets as pure aggregation
targets rather than the explicit `dependencies' target. Often
this is okay as a dependencies only library is similar to an
explicit dependencies target.

This causes issues when folks go to publish artifacts and find
out it doesn't work.

This change cleans up a lot of the "dependency targets incorrectly
defined as libraries" issue, and adds a check to ensure we do not
allow `java_library' targets to be accidentally used as aggregation
targets going forward.

Users with publishing issues simply need to stop using the
aggregation targets, which is guidance enough that anyone can fix
the issue themselves.

RB_ID=190259

(sapling split of 5506addddf9492874bf1a8ad3f1e500b5d969ab8)

Update pants compiled_idl docs.

RB_ID=196317

(sapling split of 438c8ded25a7a5de29b82d006eadd86b5991927a)

MOAR DOCSTRING for things in Pants Build Dictionary

RB_ID=191407

(sapling split of 85cf25b1c40cb44d61d1a798c995805507a80caf)

Fixup ScroogeGen to use self.profile_classpath and self.runjava from NailgunTask

Also fixup NailgunTask to use a unique workdir based on the subclass name when
no workdir is supplied.

+ Kill now unused JvmCommandLine type in binary_util.py
+ Kill unused constructor in scrooge_gen.py's Compiler class
+ Fix unused parameters found in NailgunTask when spelunking this

RB_ID=196739

(sapling split of 239ed303f642ec39ddc4ae6c150bace56b066135)

trying out builddict changes? no need to 'rm pants.pex' each time, that's for chumps

RB_ID=197047

(sapling split of ae64e6a86192e9dba8642beae0891c0ae5acf1fa)

script to "publish" generated HTML to git-powered sites

RB_ID=195259

(sapling split of 5eb9daaba9c46e977771515833472bbf50df322b)

Update markdown docs to sphinx in order to build static sphinx documentation
site for pants.

RB_ID=196965

(sapling split of e11a1a521bcce73cf70869c487323fba8f7f821f)

Minor pants code cleanup and fixing pants test on mac.

RB_ID=197761

(sapling split of aa333e4cfd312462399caaf62dd093a6203984c8)

Pants essentials tech talk

Pants essentials tech talk slides.

These slides are generated with the Twitter University Courseware Development Kit (cdk) that's still a private github project. It generates a self-contained html file with all the javascript/images embedded.

The goal of this talk is to set a baseline of pants knowledge for the entire engineering org. Its targeted at folks who know what a build system is, know how to write code, etc. They just don't know how to use pants yet. So its practically oriented to get them up to speed quickly. Folks who are interested in learning more could take a followup internals class, but we won't subject everyone to that by default.

The tech talk would be these slides first, then this demo: https://github.com/traviscrawford/commons/tree/echo_codelab/src/java/com/twitter/common/codelab/echo

RB_ID=198971

(sapling split of 7d54d3defae75f99e8552404531399fe3556a1c8)

Fixup refactor error that broke publishes skipping javadoc.

RB_ID=201013

(sapling split of 9069f14c500f290a25bfd5a7be65cabfb79ffbed)

Improve sphinx pants documentation.

RB_ID=200639

(sapling split of 70c644f96e49d814446204af6f3c9fe72cce9a2c)

remove .md "go here instead" pages. we have others that play nice with search

RB_ID=200771

(sapling split of 6a24fe30fb80723c434262fe08d8b33adbee588e)

pants docs BUILD Dictionary: don't forget globs, rglobs

RB_ID=201413

(sapling split of 663602b21d5d7f5abaab90b9dcd65b0146d6aafa)

Update JavaTests docstring

RB_ID=201743

(sapling split of 1776184c4463afc25134d26a4c6ab6f5a245332a)

Correct target selection predicates for javadoc and scaladoc.

RB_ID=200659

(sapling split of 5a45fbd824ecdbaddba3f481a5b4b41703c22152)

Fixup jvm doc gen to only operate on generated code if asked to.

RB_ID=200723

(sapling split of 39b929cff6b2ff5db752f45ce4c6e444d0059233)

re-order chapters, change some titles. Hide "install" in advanced section

RB_ID=202023

(sapling split of 9834ede1fa3d7edeef9570769edba19ce95ad44e)

fix b0rken link, remove obsolete link

RB_ID=202689

(sapling split of 32138091894f123916c78ce5c998e10d6345e0fd)

Updates to pants essentials tech talk

RB_ID=199763

(sapling split of 6ed2887d0b31479eba7d6fb30c7e53d1ac281ca5)

Add OS X Mavericks support to pants

RB_ID=203319

(sapling split of 83bd524b8792b62695919b3b79b746214c56bc29)

Fix duplicate target address error for synthetic JavaThriftLibrary targets with defaults

RB_ID=200947

(sapling split of 7b384517b486f234704b70d17973406aa8b831cd)

Revert "Fix duplicate target address error for synthetic JavaThriftLibrary targets with defaults"

RB_ID=204127
TBR=true
NO-QUEUE=true

(sapling split of 9dd750b7244edabb18026c1959393fcf758852f7)

scrub "see instead" .md files I didn't catch before, including busted build target

RB_ID=202449

(sapling split of f88c1c3bc75f47a914563b6ef183f95aae7e909d)

Remove invalid dependency

RB_ID=204261

(sapling split of 5f0d450481aac63ef11868d40caaf29204440147)

Pants: added an option to pass an arbitrary argument directly to the test runner.

RB_ID=204476

(sapling split of e0e6c3dedf7e1907d497979f045cfdf805b9457e)

Add pants support for publishing to kerberized svn servers

Twitter has moved to Kerberos for SVN authentication - time for pants to update. Fortunately, Java does the heavy lifting for us.

A pre-requisite for this change is installing the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files". Since these do not ship with the JVM and are client-side JVM configuration files, this part is something every single developer will have to do locally. I'm open to suggestions on how to automate this if folks have ideas.

The JVM args are specified in pants.ini to pants itself stays flexible and can publish to any SVN type of SVN repo, regardless of what auth it uses.

REFERENCES:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
https://code.google.com/p/ivysvn/
http://www.smartsvn.com/techarticles/configuration.kerberos-over-spnego

RB_ID=204976

(sapling split of 579aebdffdb6f50fd3ff89b2b7a1b278be435af6)

Made it possible to configure the testing entry point

I made it possible to configure the entry point for tests on a per-project
basis. That way most tests can continue running under pytest, but some
projects can use an alternate testing framework when it's necessary. I updated
the docs, so you can read those to see how the feature works. This is a very
small change, and I tested that things continue to work.

RB_ID=205088

(sapling split of 5de1c5e8a14bce701a5479cc05dd6f955db3f3cf)

Fix idl extraction for multiple compilers

RB_ID=202587

(sapling split of 6b15ba61c72570df3538ffe22306a29176ad6fcb)

the barest start of a tutorial. how should source-including work?

RB_ID=202217

(sapling split of 367b8a4dcbbc870a8a5e77a68c4c6533f4f81548)

Utility to check if the JVM has unlimited strength crypto installed.

RB_ID=205602

(sapling split of c590734d3997a29bcded1c77b06308c25a4dd4b3)

Fix the Cachekey invocation in the pants BuildCache

RB_ID=179770

(sapling split of ae444fc29989f33e66050532a77d2fe2390b6bdd)

pants BUILD dictionary: add :ref:-able anchors

RB_ID=205774

(sapling split of f062f0dd3ed56ae16eda065ef0d6133891169002)

pants doc. Page about BUILD files. moved "Effective Pants" here, it's all BUILD files. + new mat'l

RB_ID=204427

(sapling split of 2a4d13235dd4d4e076ed798c5be1a6d19b33a77a)

Take 2 - Summary:Fix duplicate target address error for synthetic JavaThriftLibrary targets with defaults

Fix an issue where "compiled_idl" that depends on "thrift_library" with no additional args generates a duplicate target name and fails.

This change also corrects an issue found after merged to master where JavaThriftstoreDMLLibrary is an allowed JavaThriftLibrary dependency type.

Originally reviewed at https://jira.twitter.biz/browse/AWESOME-5053
Reverted in https://reviewboard.twitter.biz/r/204127/

RB_ID=204277

(sapling split of 1be3bacfdea076d109b8897ab970cc35d9f1e154)

Pants essentials tech talk updates.

Some updates based on the trial run feedback:
- Removed some intro material that folks said was unnecessary.
- Removed python targets stuff; we will simply mention python is supported too.
- Moved the diamond dependencies part to where 3rdparty is talked about.
- Add a section about thrift namespace mapping. Not strictly pants related but really confusing for people.

RB_ID=207364

(sapling split of ff1eac7b624d74f8d8f00e6a32de471b6c605d4e)

pants docs: a little about pants.ini

RB_ID=207288

(sapling split of 09aa6ab9c0d52af467882c6128031f5862683bd0)

Add a batch publishing flag, and fix an input validation error.

RB_ID=207918

(sapling split of faf8382952320ef3906422ea02943a0f2d81eff9)

Fixup thrift idl jar compilation.

Previously sources could be overwritten with empty sources when multiple compiler permutations were in scope but not in play.
Also simplify the mapping request / extraction interplay.

RB_ID=207596

(sapling split of 9312693732b3482bb54df9e0ff62276d5f7b29c1)

Improve Artifact input validation, and docstrings for Artifact and Repository.

RB_ID=208430

(sapling split of 2c70cb6aa7ddccb746e53c442d4e849955953363)

pants docs: rc files.

RB_ID=207754

(sapling split of 010bbe3ad072f970c45a7e11ce34059fab9258bc)

Add a page about pants target addresses.

RB_ID=209468

(sapling split of 74c5c37aa6c50341e58764679a819859b9a8a9ed)

fix b0rken link ; README.rst expects ref to have this name, whoops

RB_ID=208986

(sapling split of 5d6d70d0ae9670c45ae43f72aae6d20b89950f46)

pants+thrift docs: smooth some rough edges

RB_ID=205414

(sapling split of 8e616d6b917e5a95cdc46170f32d7e91a7622e50)

Pin 3rdparty python libs to specific versions, split out Commons.

RB_ID=207370

(sapling split of a96cbab526b1dc268cb3da1a7424d8b492a5fa1c)

pants tutorial: invoking Pants. moved some from README; wrote some new stuff

RB_ID=208424

(sapling split of c5cc4166af3b4ee9311b5bee3cce40e70973063d)

pants docs: example of java consuming thrift

This change adds a simple thrift-based pingpong client and server, build files, and description of how/why things are structured as they are.

Currently we have two ways of using thrift:

  (a) java_thrift_library - for when everything lives in the same repo.
  (b) compiled_idl - for cross-repo situations

This change only covers (a) at this time. If this looks good, I can do a followup adding (b).

RB_ID=210506

(sapling split of d026de72b41f86c54910267d517d4687c62e40bc)

AWESOME-5401 Add python test target to find test targets for given python source target

RB_ID=185057

(sapling split of 8dce469ff3d7ddda11e53ffa6353b02c06a01655)

pants docs: 3rdparty , the no-Twitterisms edition

RB_ID=210814

(sapling split of 512ebace2e2f54a320a97926e3c7f4d69d83e3ae)

Simplify java_thriftstore_dml_library

Inherit from java_thrift_library and allow for publishing the thrift.
Fixup a dup vulcan target.

RB_ID=212686

(sapling split of 28745e4b3efc8c215051c9570a75197f2547e7a9)

Concepts: mix of new material and stuff pulled out of README

RB_ID=211816

(sapling split of c6e48cc75a2bc33062c388158ad7d900bb4431ad)

Pants input validation improvements

This change makes some improvements to pants input validation. Currently these errors cause pants to fail internally making the user think pants did something wrong when in fact the input is bad. We now throw TargetDefinitionException signaling to the user where the issue is so they can fix.

* Ensure target names are strings.
* Refactor AnonymousDeps into the targets tree for clarity and to fix the import issue.
* Restrict the types of dependencies InternalTarget can have. When walking deps ensure they have a resolve method.
* Check dependency types in JarDependency. Do NOT change the inheritance hierarchy at this time.
* Guard against bad pants() definitions.
* Tests.

RB_ID=212024

(sapling split of a7108e5f37b3ce23bb8c171cc95f7a3286935224)

Pants essentials talk polishing

I noticed the following areas for improvement while doing a dry run.

- Update thrift section and add excercise path.
- Mention scalac everywhere we mention javac
- Use goal terminology (not phase) because that is the public name. Phase is an internal detail to our users.
- Remove jvm_app targets from example graphs as they seem to be unnecessary details rather than the essence of the graphs.

RB_ID=216480

(sapling split of a7a536c4fb947c4c4a8d79fc5b49a717f32f2fbb)

Improve/fix depmap graphviz output

Currently depmap graphviz output does not show dependencies between internal targets. This change updates the graphviz output to be a proper dependency graph, as well as improves the style with hopes its easier to read. To keep target types out of depmap the colors are not stable, although they're consistent within a given output. Internal  targets are rectangles and external targets are ellipses, which is consistent.

RB_ID=217526

(sapling split of 0a2014b13030bb82fb44e11d9f3dade5143b34a5)

Science CI jobs to create ivy cache for each workspace

RB_ID=217770

(sapling split of d03d8c1e866c42f2d6a1b578d1a6ad3280b88be0)

comment change: python_antlr_library uses module; python_library not so much

"I believe it's still wired up for python_antlr_targets but no longer for python_library targets."

RB_ID=219628

(sapling split of bbe1efbc64c919bfa17ea86248a93ded875fcae8)

update setup.py directives for publishing twitter.common.* to pypi

RB_ID=177226

(sapling split of 01e4df2122c58a87636735d524b9e228fd0adbf0)

Revert "update setup.py directives for publishing twitter.common.* to pypi"

This reverts commit 01e4df2122c58a87636735d524b9e228fd0adbf0.

RB_ID=219830
NO-QUEUE=true

(sapling split of cb90f8ce5f006cbbba561bcafce2e69c4a3ccd90)

Fix pants goal.py

RB_ID=219898

(sapling split of 1975ec8df9a196c1f68167a56e16af343d2b3ae9)

Revert "Revert "update setup.py directives for publishing twitter.common.* to pypi""

RB_ID=219928

(sapling split of 37623f399a44344959e096fea1a8046839a60772)

pants install instructions: the tl;dr was too short

RB_ID=220296

(sapling split of 8eb3ea3111006f1efa8543014da26dd8a3ecb6ec)

add a flag to turn scrooge-gen verbose off

RB_ID=219686

(sapling split of 366bbb9d732d9a5d317a8ef90ccefa8ea8247d2c)

update science to psutil 1.1.2

RB_ID=220760

(sapling split of c19c8ca6394ae225c583100b9ff86b224b23b9e0)

Support passing pants ivy cache dir as an option

RB_ID=220620

(sapling split of f96a6e51cb41a42bcbf30111a2967bcd7bea3d41)

BUILD dictionary: doc some methodss

RB_ID=219432

(sapling split of acb2219362901045888ad9fbb1f538dc16d12932)

pants docs: JVMProjects additions

RB_ID=218556

(sapling split of 6fa6c4d3fe175a56edc9f7b333de96f1ee23533e)

fat jars considered harmful... but mentioned prominently in README whoops

RB_ID=219750

(sapling split of ab885e4be3914fe3e315edca2b71eca2d21dc196)

 [AWESOME-6323] This change is to check if a changed build file path matches any buildfiles in buildfile.family and then idenitfy all the targets in entire buildfile family as changed targets. It also, removes unnecessary yield to build_files.siblings

RB_ID=220028

(sapling split of ed1fdedc07d93dd9740732f0ec8cba4f4be0b150)

Support passing in ivysettings.xml to antlr_builder via an env var

RB_ID=222871

(sapling split of 1cc3604907c3da362f67ddaa7fd641f908494501)

upgrade science to setuptools 1.x

distribute and setuptools got merged at 0.7.x; setuptools is now in the 1.x series, so upgrade.
this also upgrades virtualenv from ancient to current (1.10.1)

RB_ID=221137

(sapling split of 5fdbda54b758cc4be58a4ae9e58406dec3703931)

binary_util.py to read ivysettings.xml from environment var

RB_ID=223825
TBR=true

(sapling split of 3733cc2d4563c086ea308d322d8a2de3bb190b23)

Unify all jackson targets into one file

RB_ID=221683

(sapling split of 60070d41652e5103b26a22fd113aa29c511c049b)

 Inital checkin for detecting resource file changes in what_changed task

RB_ID=214746

(sapling split of 5bc98c292c5de44df8c3330c0be1ac005f0aeeee)

 Reverting "Initial Checkin..."
 - reverting accidental change to guice BUILD
 - Revert " Inital checkin for detecting resource file changes in what_changed task"

RB_ID=224507
TBR=true
NO-QUEUE=true

(sapling split of a7f512a433b6db51830aebf2c85718ba78ad207a)

add python_thrift_library and console_scripts support to setup_py

Adds with_binaries to PythonArtifact so that binaries can be properly symlinked/setup when pip installed.

RB_ID=222867

(sapling split of 067674768266f8cf2563df641b43d22e4078840e)

detect namespace packages from repository contents

Instead of requiring all BUILDs to specify namespace packages, properly
define namespace packages in twitter/__init__.py,
twitter/common/__init__.py, etc.  This also slightly refactors how we do
package/resource detection so that it's a little more robust/testable.

RB_ID=223027

(sapling split of 0e6b2e5cfa02deafbb1ddd16e188e9e24f5f7b29)

make python_binary source/entry_points interoperate

RB_ID=223061

(sapling split of 60b2fc63c339623f01a120eddf3b086962850a7d)

capture some tidbits from that Pants Internals talks.

RB_ID=226113

(sapling split of ee93a015b5ce25cbed292f0308d7dd55da2283b8)

make twitter.common.python fully standalone

This removes dependencies between twitter.common.* and
twitter.common.python.  This is in order to solve the nagging issue of .pex
files polluting the global sys.modules namespace with twitter/twitter.common
and potentially outdated/undesirable versions of those artifacts e.g.
twitter.common.dirutil.  The code copying is unfortunate but it's a fairly
small set of dependencies.

This review is being submitted --no-queue with permission of Chris Chen due
to the expensive nature of these submitqueue runs (3-4 hours.) It has been
run through submitqueue three times with only unrelated flaky tests failing.

RB_ID=223029
NO-QUEUE=true

(sapling split of deb2f99ce65dd04777dc7035cbfaa5311ea26001)

 Inital checkin for detecting resource file changes in what_changed task

RB_ID=214746

(sapling split of 88a64de08943cc49d7ca0e83346b3263913e196f)

pants build dictionary: tag page target's register_wiki method as interesting

RB_ID=227243

(sapling split of 42828e9faa5e751638485e6df20baf5c6cad0553)

build dictionary: show bundle.add method, seeing as how bundle's docstring totally mentions it

RB_ID=227829

(sapling split of 60583015a77b61c042dcf19e1e6d0568ab7d11e3)

pants docs: fill in some gaps

the first_* pages are hand-wavey in some places where they could be concrete. so make those concrete.

(they're also abstract in a few places that are likely to stay that way for a couple of whiles. but let's not dwell on that.)

RB_ID=227697

(sapling split of 74b6a263f53bf84bc669a491874bf5f275b3309e)

Introduce a basic java distribution abstraction that can be used to validate the existence and basic constraints required of the distribution.

RB_ID=225531

(sapling split of 18abb18ad12652f1b2dd1fcca8e5a2b778f7d810)

Start cleaning up the nailgun client for cleaner integration with the new java Distribution mechanism.

RB_ID=225895

(sapling split of 6e3ebe7b34c9cbc80c99fa5c11e68fe440f24ae6)

 Pants publish fail in master since we added resouces in dependency: Check if target type is resource in publish target.

RB_ID=229521
NO-QUEUE=true

(sapling split of daf2dde48d40169c502d99bb92225252361b5f9f)

Update invalid target check to ensure targets provide an artifact.

This change is motivated by documenting how to publish artifacts.
Looking at go/pantstips there's a lengthy section that mentions
all dependencies must be publishable, and some depmap | grep
workflow to identify what targets in a given graph do not have
a `provides` argument specified.

Rather than moving this tip into the sphinx site we can change
pants to provide a better error report, eliminating the need
for this depmap | grep workflow.

Specifically, before attempting to publish we check stuff that
needs published and ensure it has a provides argument.
If there's a broken chain we print a full report of what's wrong.
Currently we show just the item that failed, and you'd need to
keep iterating to find all targets that are not provided.

RB_ID=224421

(sapling split of cc633b110e7d1956954cec690381262982102808)

 Adding dervied from target in the dependees_by_target since input target given to depmap is real target and not synthetic target

RB_ID=228107

(sapling split of 6010379b4704a857694d5d76b21cb922bd5c2555)

Revert " Adding dervied from target in the dependees_by_target since input target given to depmap is real target and not synthetic target"
To fix build breakage, see https://jira.twitter.biz/browse/AWESOME-6521

RB_ID=230375
TBR=true
NO-QUEUE=true

(sapling split of c10a7a2995abdd2b304963b7323fe0c2232552b1)

 Adding dervied from target in the dependees_by_target since input target given to depmap is real target and not synthetic target

RB_ID=228107

(sapling split of 51bc907f362e969bbafb5e432747e5975c4baaa1)

Pants publish documentation

This change documents how jar publishing works.
Additionally, some publishing-related configuration
simplification has been done.

RB_ID=224993

(sapling split of 149f0aecf715d1f32bf2a96b174e415b34527c69)

clean up some misleading wording: names != addresses

RB_ID=228991

(sapling split of 9ed78f8812918bcff421ae1788ac4bc34e8ce9fa)

3rdparty doc: replace copy-paste code with literalinclude. theoretically less brittle!

RB_ID=229105

(sapling split of f439c8e10d5c666a3bf913f85ccf2880c5018eb1)

Add the ability to locate a java distribution that meets constraints from the user's path.

RB_ID=226541

(sapling split of 361b004ccb1cb55365a407fa74992e5e52302e86)

Use Ivy verbose logging when resolving artifacts in pants debug mode.

RB_ID=231717

(sapling split of f326412da29955312e604e2236332fd126386010)

Update checkstyle to check everything with Java sources. This is the same approach used by JavaCompile to identify what it should compile.

RB_ID=231129

(sapling split of 96d13b6dbcba8c2d109ee37bfd16af85352a8416)

Fix a bug in invalidate thats was introduced in 607745c2 on 4/24/2013.

RB_ID=226853

(sapling split of 4c121a5ef18015414b4ab3d1a5335d1fa1c73c25)

finish moving stuff out of old README page to other pages

While I was in outline-tweaking mode, move ThriftDeps out of "beginning" section and into "patterns" section.

RB_ID=229395

(sapling split of b024e7c1b7edee3fad9ba59d168bdc8681a75029)

Add a java executor abstraction powered by a distribution.

Implement 2 executors:
+ a jvm subprocess spawner
+ a nailgun daemon

Replace the core nailgun client/server logic in NailgunTask with the new NailgunExecutor.

RB_ID=226877

(sapling split of c4d53627b5751818e4451919093baf17193d99e2)

with_sources now excludes Resources when it is specified with extension.
Fixes pants goal idea for ads.

RB_ID=231271

(sapling split of 9ea10542633d759faf416665dd33bd8edb09b709)

Pants docs: Pattern Publish.

RB_ID=223869

(sapling split of 46a67c23d284ec8d3bb28a24e20bd17260deddce)

Revert "Add a java executor abstraction powered by a distribution."

This reverts commit c4d53627b5751818e4451919093baf17193d99e2.

Reverting to suss out issues described in https://jira.twitter.biz/browse/AWESOME-6580

RB_ID=232919
NO-QUEUE=true

(sapling split of 22f106a28a13b2a4e52fd3fc723ff9314aa1a370)

Revert "Revert "Add a java executor abstraction powered by a distribution.""

This reverts commit 258ef055ea79511f5e7c7a8e488f269a0b72b8a9.

RB_ID=232947

(sapling split of 5c6801dfe982f34b4ef2a03c66857c71587f26f6)

Revert "Revert "Revert "Add a java executor abstraction powered by a distribution."""

This reverts commit 5c6801dfe982f34b4ef2a03c66857c71587f26f6.

More issues in the ads ci.

RB_ID=233359
NO-QUEUE=true

(sapling split of f664067580c86d1ae6a40e7d98a0c0e68ebe3167)

Thread the exit code of a sub-process through TaskError. Pants will now return the sub processes exit code in $?.

RB_ID=232673

(sapling split of e00454677e0b6585f747e13d0f870c6f98e9326d)

publish pants 0.0.12 / twitter.common.python 0.2.1

RB_ID=235007

(sapling split of faeb05543adfdd689beb205c29a612ce13226904)

You know, that plural really is confusing

RB_ID=233205

(sapling split of 42afeadbf6790c0657274186022a8156d1552ad5)

Pants docs: fix rst formatting ::: ::: TOO MANY COLONS ::: :::

RB_ID=235037

(sapling split of 2709e4dcf175613da175d146f7ee69ec514003ab)

Added goal "detect_duplicates" - find duplicate classes and resources
  - detect classes and resources with the same qualified name on the classpath
  - Added this as a dependency for "binary" and "bundle" goals.

RB_ID=227447

(sapling split of b92591df7872b89aa30cde83ab8ea366729fa29b)

Pants docs: mv ForMavens.md from_maven.rst and further plagiarize Sarnat
Our advice for folks transitioning from Maven -> Pants didn't get converted from .md -> .rst , so convert it now.

While I'm in there, plagiarize some of Sarnat's recent advice: batten down the hatches, you're probably about to uncover lurking dependency hell.

RB_ID=233039

(sapling split of f1b63ea8306db2a3c24b71f59aff633446b7f76a)

Initial pants task development guide. Shows how to generate a targets pagerank report.

RB_ID=237537

(sapling split of cc3459c73dd5980b347c9b9a29925e86db75d756)

words about bundles

RB_ID=238059

(sapling split of 89425c51681f4bb2bbdead61645ca192081066e2)

Rename ivy resolve option name to match open source version of pants

RB_ID=241511
TBR=true
NO-QUEUE=true

(sapling split of 65cb8f1a1e6db8fd30c81429b9580dc4b8c31a8e)

 [pants] Sort Imports to true when generating IDEA project file

RB_ID=235507

(sapling split of 3dd11d74c6bd439263c305278bd73eaa0ad7eb23)

Ruby gem publishing and ibis gem targets

RB_ID=235219

(sapling split of 8ace6540fd7128114047b487594841bee422ed62)

Add a java executor abstraction powered by a distribution.

Implement 2 executors:
+ a jvm subprocess spawner
+ a nailgun daemon

Replace the core nailgun client/server logic in NailgunTask with the new NailgunExecutor.

RB_ID=233729

(sapling split of 05fb1103075a22ceb79fdd294ae5a69182d2dd31)

Cleanup and uniformize java process launching in pants tasks.

Lift the xargs idea out to an abstraction that can be mixed into any execution
context and isolate its use to the 1 task that needs it today - Checkstyle.

Kill the tool spec work :( - this was just providing refactor drag and is not
in use today.  Adding to that - Benjy has a fellow actively advancing on
implementing the full doc'd spec in the open.  I'm very sorry about this
John & Tejal.

RB_ID=227855

(sapling split of e2955b434ba60f98e2cbac37b62a4c7d8ad76364)

Fixup log module/variable shadowing.

RB_ID=244751
NO-QUEUE=true

(sapling split of b7ad54b167f7cce15a944a10a11243b179c4ef06)

Executor._create_command did not guard against invocations via subclasses through spawn - robustify to handle no args or jvm_args which are optional.

RB_ID=244761
NO-QUEUE=true

(sapling split of c14660d784d35e851930910be524a202e4a6f77f)

Add a hadoop_binary target to pants. This target is a jvm_binary which excludes dependencies
provided by the Hadoop cluster.

RB_ID=228213

(sapling split of 795e2926d8f7c94219e85b6b2b02eafec1636428)

Fixup NailgunTask jvm args handling - by default grab jvm args from pants.ini

Also gut custom ng workdir setup - let the baseclass handle this.

Finally - go through all jvm tasks, nailgun or not and uniformize:
+ pull jvm args from pants.ini via the `jvm_args` key uniformly
+ adjust down IvyResole, IdlResolve, ScroogeGen and Checkstyle to the default global -Xmx1G
+ adjust up ScalaCompile to -Xmx3G - ads:ads needs ~2.2
+ get ScroogeGen appending its file.encoding setting to the default jvm_args

RB_ID=244877

(sapling split of efac4a68c74ca8d5c4ce395cc223105050cf2400)

Python thrift is hard.

I was going to snarkily chime in on a mail thread with a link to python_thrift_library's documentation in the BUILD dictionary, but stayed my hand: that documentation had the relevant param name wrong.

As penance, I corrected the docstring and pointed out a Python thrift quirk that surprises folks, including folks in that thread.

RB_ID=244783

(sapling split of 9815c5326c258263d1e97ff955ae91df3f415d85)

Introduce an URL Fetcher for robust cli-friendly downloads.

RB_ID=228121

(sapling split of acb4b0eb7f4faeb7f76a058a55e14eed8b530758)

Fix missed opts -> args refactor.

RB_ID=246743
NO-QUEUE=true

(sapling split of 773082834e8e929572a57a0d21f0dac1299e487c)

Introduce an Ivy object and a Bootstrapper to obtain one with.

RB_ID=228127

(sapling split of f316dfc538a0a968758fe87706a1888f2e1d0136)

Pants scalastyle task

RB_ID=237649

(sapling split of 11fb553a6154a72b4cee3bb6cc6fc8bb291494e9)

Publish idl dependencies in compile scope.

RB_ID=247183

(sapling split of 3564f7df3232bd9c533ed5d6e69f2be75f4b58e6)

change copy-paste samplecode to literalinclude ; create "Usual Commands" for JVM

updated existing literalincludes now that pingpong's code is all moved around

RB_ID=232759

(sapling split of b96c07e2a9d7c0c66e8eddbb047e91678719325d)

Pants docs: overview of a pants run. It plans, it acts.

High-level overview of a pants run. Started out based on PSeibel comments (DPB-287). But it evolved; he'd really honed in on a weak spot in this doc: If you don't know the "life cycle" of a pants run, it's hard to reason about, uhm, how screwed-up your code is if Pants makes it partway through.

So, a high-level overview, pointing out some potentially-surprising implications.

RB_ID=244997

(sapling split of 582298bb8887f98b98966888f39e70a51cba4dae)

 Add --force-upload-stats for CI to upload build time stats.

RB_ID=241651
TBR=true

(sapling split of 2ac2cd866137221752dd395b5131e343e375df6f)

Add restrict_push_branches directly to JarPublish and ThriftGemerator

RB_ID=247173

(sapling split of 6a11680de3fea48763a935c79a2a96112a05b2f0)

Update scala_libray to require sources or resources (as java_library already does). Update all invalid usages.

RB_ID=248639

(sapling split of a7ff15c29352ebbfd15308f52cf1bb78cbe41eb5)

Pants goal markdown: support utf-8

empirical evidence* suggests the library can handle unicode; but I was python-opening files w/out specifying a codec doohickey. So specify a codec doohickey

*it worked once

RB_ID=248953

(sapling split of c91895a6e5bb4e94a4dae1b823bd76e576547d3a)

Remove Twitter-specific subclasses of JarPublish and ThirftGemerator as the builtin versions are now sufficient.

RB_ID=249489

(sapling split of 7d23d8095ebe84935349ef41fd6dea8693dd9efa)

Print a better error when 'xdg-open' is missing on Linux

RB_ID=248171

(sapling split of 21e6f6c68c73f840f25dee991393d34feb7c70e4)

Tweak pants essentials slides

RB_ID=250671

(sapling split of f82bfbf02e234c18fe329d4e4df4ff9d5b68aae0)

Add a pants goals reference to the sphinx site.

Goals are essential to pants, defining the "stuff" pants can do. However, we don't actually document what the goals are, nor how the tasks that perform the actual work work.

This change lays the groundwork to document goals and tasks. We have a new "Goals Reference" page that starts with a summary of the goal names and their one-line description. The goal names link to sections that show the installed tasks and their docstrings.

In followup changes we need to actually add docstrings to the goals and tasks, but when those are added they'll be easy to put on the site.

RB_ID=250263

(sapling split of 19d83acffd29bd639350319df035a65497e74d78)

another reason publish can fail: artifact already uploaded 'cos you're racing

Based on a true story of *cheesy theme music* Build Support Teama

RB_ID=250169

(sapling split of be0dc4fdd84210d8efb95b5bff7cbfb6be2db800)

pants troubleshooting doc: that build-support dir ain't always named build-support
The doc has some bad advice, recently corrected on a mail thread: "build-support is a science dir, try pants-support"

This doc is open-source, so we're extra-unsure of what the name of that dir is.
So link to the pants.ini docs

RB_ID=250729

(sapling split of 6be52a6380e7106675935df46b869ceaa247472f)

Say JVM when you mean JVM, not Java. MarkC has eagle eyes

RB_ID=252209

(sapling split of 53f0e3293deeeac48d9a92bcb8bbe7074c185240)

Support deploy_excludes for OinkBundle

RB_ID=250663

(sapling split of 133b6b50340755777b027749782976b701b72d28)

Fix JarLibrary docstring to reflect current reality. Remove unnecessary None check as maybe_list handles this.

RB_ID=253705

(sapling split of ed629b7d5a10b652e8912be310517f1adb94114d)

Improve jvm_app docs and input validation, and fix newly invalid usages.

This change updates jvm_app pants targets with improved documentation and input validation.

* Update 'jvm_app' and 'bundle' docstrings.
* Require 'basename' not match 'name' because name is used as the default value. Remove all invalid usages. Note this is a no-op and likely was propagated so widely due to cargo-culting.
* Require 'binary' resolve to a single JvmBinary instance. A consequence of this check is having to define jvm_binary targets before jvm_app targets within the same BUILD file. Updated the two places this happened.

RB_ID=252107

(sapling split of dcb2dce5316715a10e807dff107a1aa75fac4684)

Add generic params support to caliper bench task

RB_ID=256483

(sapling split of b3d3b5174da7f9f40cef9ea56a92d4f245c734ee)

Port existing uses of ivy to Bootstrapper / Ivy

Add support for bootstrapping from an ivy.xml insted of just an ivy version to
support ivysettings plugins - the ivy svn resolver used inside Twitter drove
this.  Also add support for injecting ivysettings into all bootstrapped ivy
commands.

Fixup SubprocessExecutor.spawn to scrub its args.

RB_ID=228151

(sapling split of 8d2a425af40957cbfa8185e47b3e6613392a2abe)

Revert "Port existing uses of ivy to Bootstrapper / Ivy"

This reverts commit 8d2a425af40957cbfa8185e47b3e6613392a2abe.

This change removed ivy cache flags passed by the leaf auto-ci scripts
and this can't be done until a new pants.pex is released that uses the
env-var reading code.

RB_ID=256917
NO-QUEUE=true

(sapling split of 06378a51c6242653696a8324381d776f8f2597d6)

Pants docs: link to troubleshooting sections from front page

Maybe folks will have an easier time finding troubleshooting docs if we make them more obvious. Let's link to them from the front page.

RB_ID=255105

(sapling split of 8f8ac43cbe5f8fa4f8d0fdaf85219c2230a1b371)

pants docs: add a publish howto

RB_ID=254673

(sapling split of e56a95f48e4174987f88fa750b540fecd2ea15c9)

Clean up changes to bench task

RB_ID=256855

(sapling split of f0fcd38eacc87a51fb59f8a307e57f0eaac45aa3)

Introduce in an idl_java_thrift_library target

RB_ID=254003

(sapling split of b8ec6af9fcbcf8e04bc02e6afb5e02ab96da5f75)

Update jvm_binary-related bundle docs.

RB_ID=257275

(sapling split of 37eb8234b20433789eebe718573a7615a01649ec)

Port existing uses of ivy to Bootstrapper / Ivy

Add support for bootstrapping from an ivy.xml insted of just an ivy version to
support ivysettings plugins - the ivy svn resolver used inside Twitter drove
this.  Also add support for injecting ivysettings into all bootstrapped ivy
commands.

Fixup SubprocessExecutor.spawn to scrub its args.

RB_ID=256941

(sapling split of ebccb28d3cab40f1f38e8f6d3645c350445789b7)

Pants publish doc: troubleshooting guide: the questions

RB_ID=254609

(sapling split of 12454d2b12250cbcf396a8a26de04ed314fcc6eb)

pants docs: troubleshoot publish: failed to merge

RB_ID=258035

(sapling split of 3ebef3868bbc33ff8e8b86990eac959f4d1543d7)

Cleanup context_utils and useages

Refactor Config to fundamentally take a ConfigParser and not do real work in its constructor - this makes it more test friendly.
Switch context_utils from subclasses to factory functions with checks and docs.
Cleanup DuplicateDetectorTest to better use the apis and fix a leak of 3 jars to the build_root when running.

RB_ID=257911

(sapling split of 1439fbef63657a5b379ee841b1ae0e6c4be4389f)

Update developers guide with a section on profiles. Reorganize the API stuff into its own chapter in which this is a section.

RB_ID=258319

(sapling split of 99641f6e673e501ae8ded6520429d1576da516cd)

Pants docs: troubleshooting publish... Versioned Artifact Already Exists

RB_ID=258227

(sapling split of e84bbdadabf071df9b5b395ae3ad6dd05131c4dc)

Add support for proper working local -SNAPSHOT consumption from maven-style artifact repos.

Fixup ivysettings local sbt and m2 resolvers and document the magic needed to get local live -SNAPSHOT
  resolution working.

Change Ivy handling of the cache dir - plumb this through to ivysettings.xml via a system property
  instead of via the ivy CLI -cache flag.
Add back custom <caches/> in a trimmed down form to use ivy.cache.dir.

Cleanup Bootstrapper error handling: introduce a custom Error and trap for this in existing use-sites.
Fix a name shadowing bug in NailgunExecutor._log_kill.

RB_ID=229315

(sapling split of 1ea60e5031c0950bd5ce129652ba953358214df6)

pants docs: publish troubleshooting... didn't provides coordinates

RB_ID=258101

(sapling split of cf571d73814418cd499f2b63d2130d9e7ef23d51)

Clear extraction root at the beginning of each target, not at the beginning of each extraction.

RB_ID=258955

(sapling split of 5401623dd54f548ac38404647ba7940081e8fd40)

Add a targets graph traversal section to the pants task developers guide.

RB_ID=259035

(sapling split of c1b75310db94230b4ae0697a6fe187ed09967240)

Fixup idl jar creation to work for both java_thrift_library and thrift_library targets.

Add unit tests for jar creation.

RB_ID=258651

(sapling split of 0a51ededb08413014540470d29b50c002c5d8faa)

Re-shuffle pants execution engine - extract the concept and clean up Phase, Group and Goal metadata commands as a result.

RB_ID=256435

(sapling split of 2e2c001a159502fbceeda49124c26abf2871812c)

pants: help text for --test-specs-text += some detail

RB_ID=259785

(sapling split of c4788f4ab07f5834273a35d125b4ace948ed0d39)

Pull runjava and profile_classpath from binary_util.py up into the java package.

RB_ID=260233

(sapling split of 972a749deda7b9b1e4cb16e0775d7660625fe1f1)

Limit `scanning` debug output to 1x per jar instead of once for each entry in the jar.

RB_ID=260353

(sapling split of 77cf7f72e1c46987451a0c029693fb5d302dc80c)

Move open_jar into its own package along with Manifest, fixup imports and kill manual dup open_jar impls.

RB_ID=260373

(sapling split of 5b4403b9a38a491c4ac1a517773efe725be22765)

Respect dep order in the breadth 1st dep walk.

RB_ID=261169

(sapling split of 77b1b374c83e62fc1d106102b744644913567832)

Implementing ./pants goal roots

RB_ID=222763

(sapling split of 87d37b02d1162a83edfd210d56cfc4ae4ea0208d)

Update pants doc theme to sphinx_rtd_theme.

RB_ID=262453

(sapling split of b7f6267bab5690b15264f8cc07202065dd174325)

Pants docs: java_* target docstring mention resources targ type
Using naked file paths is old. You'll probably be happier if you use a resources() target. Actually, for some target types, it's required.

RB_ID=262105

(sapling split of c4975af5b839655e930d3952f3db1e82627d2b01)

Pants docs : fix google analytics

RB_ID=262643

(sapling split of d62040b84512cfa8acf74ba5da097ba225dcfd8c)

sphinx thinks {@link}s is an email address and linkifies it as such

RB_ID=263607

(sapling split of 1921b96bb06ce3a63925e5f72579e858bcf02497)

Update pants essentials slide graphs

Simeon updated CDK to natively support graphviz graphs! Inline the graphs that are only used in this talk, and include graphs shared with the Pants Task Developer slide deck.

RB_ID=263611

(sapling split of 01c8d6fc2f5ae94d50e11638ec9666a8143b920c)

There is no need to clean the ivy report output directory - ivy regenerates all the files it needs to stitch together a report every time so there can be no report contamination.

RB_ID=263767

(sapling split of b50ac82cebbd9adb26b47e3525baa68b510ec233)

Pants task development class slides

Add a "Pants Task Development" class slide deck.

The general idea is there are three main audiences for pants classes: regular users, plugin writers, and core developers. Regular users take the "essentials" class to learn how to use pants as it works today. This class is targeted at folks who don't want to hack on the core of pants itself, but do need pants to behave differently than it does today. Those folks can learn how to write new tasks, such as a new type of report, new compiler support, etc.

Core developers do not have any materials at this time, although they will likely find the task development materials useful.

Giving this class is my hack week project, so the materials as not at the level I typically aim for. They're a good first pass and I'll use them as-is, and likely make a bunch of edits in response to student feedback from the three classes offered this week.

RB_ID=262455

(sapling split of 6aec0c4ecf5a28607eb1d9a5c1d1a5af34ee6601)

Update JarDependency docstring to RST so it renders in the Sphinx site correctly.

RB_ID=263923

(sapling split of 39a4871c4fd1ea59c20c63532f3ff7313a60574d)

Give a useful error message when thrift dependency trees have differing compiler configs.

This change was prompted by an issue hazen saw. Currently pants throws an internal stack trace if thrift dependency trees are configured with differing compiler configurations. Explicitly handle this case and give users enough information to fix the issue.

RB_ID=264747

(sapling split of d3f4bf740c9d5b9e7882619199dbd16055a4112e)

Introduce the ability to extend the global namespace with additional functionality

RB_ID=245771

(sapling split of 88fa661e9629f803d4d55bd8261e691f70f0a374)

Add --entry_point to pants py.

RB_ID=265585

(sapling split of 39d2345c1c9f3daccedcb72e4985fa77a750a350)

Improve the onvalid pants pointer error - we know the BUILD that houses the bad pointer.

RB_ID=268077

(sapling split of 3b90e1b8fe03ec41ccde06d53f2a0356f2a761d3)

add interpreter selection support to python build/test

Plumbs through PythonInterpreter support to build/test.
Switches twitter.common.python tests to mock from mox.

RB_ID=267043

(sapling split of 4b0a99bc801818d16eb70af152966fb0b35ba60e)

Merging pantslogo branch to add logo to pants sphinx-built docs

RB_ID=267413

(sapling split of 0d8fea19dca6f29fe9ea6b2162d5bb9e0cc1ceb9)

deploy_exclude hadoop/pig/hbase jars from oink_query by default

RB_ID=254273

(sapling split of 73f2cde6a970a0afba0994664e4dd29913cf5f77)

Add "Pants Contributors Guide" page

RB_ID=270797

(sapling split of 56944baad19a364cacf0db639a7e86888e7f669c)

re-org Pants contributor docs
Mostly, this is splitting howto_contribute into [ howto_develop, howto_contribute ]. So far, the howto_contribute page is kinda skimpy, but when I look at its todo list, I suspect it will grow into a beast.

While I was doing that, I bumped into other places where our hacking-on-Pants-itself pages should be linking to each other; so added some links.

And updated the doc-generating instructions to use pants.bootstrap , because it was on my mind as I tried to generate^W^W^W^W^W^W^W^W^W^W^W to match the howto_contribute instructions.

RB_ID=271249

(sapling split of 2549c42f29cdbcdbc79cda15f01ac518e74c9555)

Add --recursive flag to setup_py.

RB_ID=268477

(sapling split of c40b3a26228eb94f5a16865fb0c71c7666bd159e)

Conflicts:
	src/python/twitter/pants/BUILD
	src/python/twitter/pants/INSTALL.md
	src/python/twitter/pants/__init__.py
	src/python/twitter/pants/base/__init__.py
	src/python/twitter/pants/base/build_cache.py
	src/python/twitter/pants/base/config.py
	src/python/twitter/pants/base/parse_context.py
	src/python/twitter/pants/base/target.py
	src/python/twitter/pants/bin/pants_exe.py
	src/python/twitter/pants/binary_util.py
	src/python/twitter/pants/build_root.py
	src/python/twitter/pants/buildtimestats/buildtime_stats.py
	src/python/twitter/pants/commands/__init__.py
	src/python/twitter/pants/commands/build.py
	src/python/twitter/pants/commands/goal.py
	src/python/twitter/pants/commands/py.py
	src/python/twitter/pants/commands/setup_py.py
	src/python/twitter/pants/docs/SetUpRepo.md
	src/python/twitter/pants/goal/context.py
	src/python/twitter/pants/goal/group.py
	src/python/twitter/pants/goal/phase.py
	src/python/twitter/pants/java/bin/ng.py
	src/python/twitter/pants/java/nailgun_client.py
	src/python/twitter/pants/python/BUILD
	src/python/twitter/pants/python/README.md
	src/python/twitter/pants/python/antlr_builder.py
	src/python/twitter/pants/python/binary_builder.py
	src/python/twitter/pants/python/python_builder.py
	src/python/twitter/pants/python/python_chroot.py
	src/python/twitter/pants/python/thrift_builder.py
	src/python/twitter/pants/scm/git.py
	src/python/twitter/pants/targets/__init__.py
	src/python/twitter/pants/targets/annotation_processor.py
	src/python/twitter/pants/targets/artifact.py
	src/python/twitter/pants/targets/doc.py
	src/python/twitter/pants/targets/exclude.py
	src/python/twitter/pants/targets/exportable_jvm_library.py
	src/python/twitter/pants/targets/internal.py
	src/python/twitter/pants/targets/jar_dependency.py
	src/python/twitter/pants/targets/jar_library.py
	src/python/twitter/pants/targets/java_library.py
	src/python/twitter/pants/targets/java_protobuf_library.py
	src/python/twitter/pants/targets/java_tests.py
	src/python/twitter/pants/targets/java_thrift_library.py
	src/python/twitter/pants/targets/java_thriftstore_dml_library.py
	src/python/twitter/pants/targets/jvm_binary.py
	src/python/twitter/pants/targets/jvm_target.py
	src/python/twitter/pants/targets/pants_target.py
	src/python/twitter/pants/targets/python_antlr_library.py
	src/python/twitter/pants/targets/python_binary.py
	src/python/twitter/pants/targets/python_library.py
	src/python/twitter/pants/targets/python_requirement.py
	src/python/twitter/pants/targets/python_target.py
	src/python/twitter/pants/targets/python_tests.py
	src/python/twitter/pants/targets/python_thrift_library.py
	src/python/twitter/pants/targets/repository.py
	src/python/twitter/pants/targets/resources.py
	src/python/twitter/pants/targets/scala_library.py
	src/python/twitter/pants/targets/scala_tests.py
	src/python/twitter/pants/targets/scalac_plugin.py
	src/python/twitter/pants/targets/sources.py
	src/python/twitter/pants/targets/thrift_library.py
	src/python/twitter/pants/targets/with_dependencies.py
	src/python/twitter/pants/tasks/__init__.py
	src/python/twitter/pants/tasks/antlr_gen.py
	src/python/twitter/pants/tasks/benchmark_run.py
	src/python/twitter/pants/tasks/binary_create.py
	src/python/twitter/pants/tasks/bundle_create.py
	src/python/twitter/pants/tasks/checkstyle.py
	src/python/twitter/pants/tasks/code_gen.py
	src/python/twitter/pants/tasks/confluence_publish.py
	src/python/twitter/pants/tasks/console_task.py
	src/python/twitter/pants/tasks/dependees.py
	src/python/twitter/pants/tasks/depmap.py
	src/python/twitter/pants/tasks/extract.py
	src/python/twitter/pants/tasks/filemap.py
	src/python/twitter/pants/tasks/ide_gen.py
	src/python/twitter/pants/tasks/idea/templates/project-11.mustache
	src/python/twitter/pants/tasks/ivy_resolve.py
	src/python/twitter/pants/tasks/jar_create.py
	src/python/twitter/pants/tasks/jar_publish.py
	src/python/twitter/pants/tasks/java_compile.py
	src/python/twitter/pants/tasks/javadoc_gen.py
	src/python/twitter/pants/tasks/junit_run.py
	src/python/twitter/pants/tasks/jvm_run.py
	src/python/twitter/pants/tasks/jvmdoc_gen.py
	src/python/twitter/pants/tasks/listtargets.py
	src/python/twitter/pants/tasks/nailgun_task.py
	src/python/twitter/pants/tasks/oink_bundle.py
	src/python/twitter/pants/tasks/protobuf_gen.py
	src/python/twitter/pants/tasks/python/setup.py
	src/python/twitter/pants/tasks/scala_compile.py
	src/python/twitter/pants/tasks/scala_repl.py
	src/python/twitter/pants/tasks/scaladoc_gen.py
	src/python/twitter/pants/tasks/scrooge_gen.py
	src/python/twitter/pants/tasks/specs_run.py
	src/python/twitter/pants/tasks/templates/ivy_resolve/ivy.mustache
	src/python/twitter/pants/tasks/thrift_gen.py
	src/python/twitter/pants/tasks/thriftstore_dml_gen.py
	src/python/twitter/pants/tasks/what_changed.py
	tests/python/twitter/pants/base/context_utils.py
	tests/python/twitter/pants/build_root_test.py
	tests/python/twitter/pants/buildtimestats/buildtimestats_test.py
	tests/python/twitter/pants/commands/BUILD
	tests/python/twitter/pants/python/test_resolver.py
	tests/python/twitter/pants/scm/test_git.py
	tests/python/twitter/pants/targets/test_resources.py
	tests/python/twitter/pants/targets/test_thrift_library.py
	tests/python/twitter/pants/tasks/__init__.py
	tests/python/twitter/pants/tasks/test_args_resource_mapping.py
	tests/python/twitter/pants/tasks/test_binary_create.py
	tests/python/twitter/pants/tasks/test_bundle_create.py
	tests/python/twitter/pants/tasks/test_depmap.py
	tests/python/twitter/pants/tasks/test_jar_create.py
	tests/python/twitter/pants/test_build_root.py
Fixup import cycle issue introduced with ParseContext custom SourceRoot
Fixup more imports.
Override rename fix.
More source_root fallout.
Fixup source root bases to be rel to the buildroot.
Fixup import
Fixup help command.
Minimize python 3rdparty deps.
Fixup target linkage, fixup Fileset usage in ParseContext - we dep on commons now for this.
More helpful error msg in maybe_list.
Merge branch 'jsirois/sync/pants-1' of https://github.com/twitter/commons into jsirois/sync/pants-1
Many test fixes including the introduction of a BaseMockTargetTest.
Fixup missing target aliases.
Fixup BUILD targets for moved files.
Fixup lazy dep handling in InternalTarget.
Fixup artifact repo validation to properly handle resolved target address strings.
Add the missing pants_cachedir config key.
Fixup InternalTargetTest dependency mutation.
More task/paired test fixes.
Fixup missed merge variable rename.
Fixup FilterTest.
Fixup CheckPublishedDepsTest.