Prepare for the 0.0.30 release.

Review Request #1941 — Created March 19, 2015 and submitted

benjyw, ity, lahosken, mateor, nhoward_tw, patricklaw, zundel
This removes all deprecated items slated for removal and fixes up the
release script to force a clean master and a signed tag if all goes

 build-support/bin/                           |  16 ++++-
 src/python/pants/CHANGELOG.rst                         | 168 +++++++++++++++++++++++++++++++++++++++++++++++---
 src/python/pants/backend/jvm/targets/BUILD             |   1 -
 src/python/pants/backend/jvm/targets/ |  10 ---
 src/python/pants/backend/jvm/targets/     |  12 ----
 src/python/pants/base/BUILD                            |   1 -
 src/python/pants/base/                        |  41 ------------
 src/python/pants/                            |   2 +-
 8 files changed, 175 insertions(+), 76 deletions(-)
CI went green here:
  • 0
  • 0
  • 0
  • 1
  • 1
Description From Last Updated
  1. Note that if folks agree to this - I'm thinking of the deprecation removals and the scrambling this may cause as a reason folks may not - I'll probably - after LGTMS today TBR early tomorrow am with final CHANGELOG edits - today is somewhat active on the changes hitting master front.
  2. src/python/pants/base/ (Diff revision 1)

    I was thinking about this earlier (well, not this specficially, but removing the pants() lambda). What if instead of killing this code, the pants 0.0.30 release made this deprecated fatal. In that way, we would generate a nice error message for anyone that still has old BUILD files / tasks that are interacting with pants.

    Then, once it has been fatal for a release or two, kill the code?

    1. This change _does_ make it fatal since the method is removed.  If you are proposing a generic 2-phase deprecation system, I'll insist you provide details on exactly how you want to accomplish this.  The current system is only 1-step, that step can be however many strides you wish by setting a version N steps past the current.  Additionally - the current system is nice in that you get a CI build failure if you don't remove the deprecated item as promised!
    2. The reasonable requests seem to me to be:
      + [Nack] please don't release yet - we have X days of work to do before we can clean up our deprecated usages
      + [Qualified nack] please move the deprecation for X forward to version Y to buy us time to handle X
    3. I'm marking this issue as dropped since another tweep Acked - presumably you all talk to each other!
  1. Looks good, but I just want to make sure that also makes it in. It's a very important bug fix.

    1. Will do if I get no Nacks on the whole release.
    2. That fix is in master and this CHANGELOG so good to go.
  1. As of 8aa92e2294f757f44c7241be0d7efc9326839c88, Nick added a 0.0.30 deprecation to ScmPublish, so I have this failing on current OSS master.

    I also am getting a failure in some Android tests, but I don't think that has to delay publishing if I haven't found the fix.

    1. OK - 8aa92e2294f757f44c7241be0d7efc9326839c88 is in this RB's parent chain, so the CI shard that "compiles" python code should fail nicely.
    2. As you pointed out:
        File "/home/travis/build/pantsbuild/pants/src/python/pants/backend/core/tasks/", line 216, in ScmPublish
          @deprecated('0.0.30', hint_message='Use ScmPublishMixin instead.')
        File "/home/travis/build/pantsbuild/pants/src/python/pants/base/", line 86, in deprecated
        File "/home/travis/build/pantsbuild/pants/src/python/pants/base/", line 62, in check_deprecated_semver
          'version of {} - given {}'.format(VERSION, removal_version))
      Exception message: The removal version must be greater than the current pants version of 0.0.30 - given 0.0.30
      Fix coming.
    3. As for android tests - I repro locally, but the surface sheen indicates issues related to Stu's jvm compile changes/your attempted fix for android libs:

                           ==================== FAILURES ====================
                           __ AaptBuilderIntegrationTest.test_aapt_bundle ___
                           self = < testMethod=test_aapt_bundle>
                                                   reason='Android integration test requires tools {0!r} '
                                                          'and ANDROID_HOME set in path.'.format(TOOLS))
                               def test_aapt_bundle(self):
                           >     self.bundle_test(AndroidIntegrationTest.TEST_TARGET)
                           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                           tests/python/pants_test/android/tasks/ in bundle_test
                           E      18:43:44 00:01   [compile]
                           E      18:43:44 00:01     [compile]
                           E      18:43:44 00:01     [jvm]
                           E      18:43:44 00:01       [jvm-compilers]
                           E      18:43:44 00:01         [find-deleted-sources]
                           E                           Invalidated 2 targets.
                           E      FAILURE: Classpath entry /opt/android-sdk-linux/platforms/android-19/android.jar is located outside the buildroot.
                           E                     Waiting for background workers to finish.
                           E                     FAILURE

      Digging a bit more presenty...

    4. Yeah, I saw the same thing. I may have missed something in a later revision. I will fix it tonight.

    5. You know what this is? The ivy cache. I even made a note of it in that fix...Delete the relevant ivy cache for the example project and this should work. I will verify this when I get home.

    6. You are correct sir:

      jsirois@gill ~/dev-jsirois-pants4 (jsirois/release/prep_0.0.30) $ find ~/.ivy2/pants -type d | grep android
      jsirois@gill ~/dev-jsirois-pants4 (jsirois/release/prep_0.0.30) $ rm -rf /home/jsirois/.ivy2/pants/
      jsirois@gill ~/dev-jsirois-pants4 (jsirois/release/prep_0.0.30) $ test tests/python/pants_test/android/tasks/:aapt_builder_integration
      19:12:16 00:00   [test]
      19:12:16 00:00     [run_prep_command]
      19:12:16 00:00     [test]
      19:12:16 00:00     [pytest]
      19:12:16 00:00       [run]
                           ============== test session starts ===============
                           platform linux2 -- Python 2.7.8 -- py-1.4.26 -- pytest-2.6.4
                           plugins: cov, timeout
                           collected 1 items 
                           tests/python/pants_test/android/tasks/ .
                           ============ 1 passed in 5.52 seconds ============
      19:12:22 00:06     [junit]
      19:12:22 00:06     [specs]

      I won't block on this then.

  1. Ship It!
  2. build-support/bin/ (Diff revision 2)

    It doesn't matter but I'm suprised you didn't put && inside the [[ ]]

    1. Me too! - fixed.
  1. Ship It!
  1. Thanks folks - submitted @ and released:
    The rst render of the changelog is still borked on pypi so I'll need to dig on that next session.
Review request changed

Status: Closed (submitted)

  1. Ship It!