This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author zach.ware
Recipients BreamoreBoy, loewis, steve.dower, terry.reedy, tim.golden, trent, zach.ware
Date 2014-10-29.06:00:49
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1414562450.71.0.231127948688.issue17896@psf.upfronthosting.co.za>
In-reply-to
Content
I don't think we're on the same page here, Terry, so here's some patches and a wall of text to hopefully make me clearer.

In particular, I don't understand what you mean by "merge multiple tcltk directories in isolated build directories", as the "merge" and "isolated" seem mutually exclusive to me.

The layout I diagrammed in that message is basically what I use currently.  These patches would allow me to go from this:


root
  |_ default
  |   |_ cpython (clone of https://hg.python.org/cpython)
  |   |   |_ Doc
  |   |   |_ Lib
  |   |   |_ PCbuild
  |   |   |_ ...
  |   |_ tcl-8.6.1.0
  |   |_ tk-8.6.1.0
  |   |_ tcltk
  |   |_ ...
  |
  |_ 2.7
      |_ cpython (clone of https://hg.python.org/cpython#2.7)
      |   |_ Doc
      |   |_ Lib
      |   |_ PCbuild
      |   |_ ...
      |_ tcl-8.5.15.0
      |_ tk-8.5.15.0
      |_ tcltk
      |_ ...


To this:

root
  |_ default (clone of https://hg.python.org/cpython)
  |   |_ Doc
  |   |_ externals
  |   |   |_ tcl-8.6.1.0
  |   |   |_ tk-8.6.1.0
  |   |   |_ tcltk
  |   |   |_ ...
  |   |_ Lib
  |   |_ PCbuild
  |   |_ ...
  |
  |_ 2.7 (clone of https://hg.python.org/cpython#2.7)
      |_ Doc
      |_ externals
      |   |_ tcl-8.5.15.0
      |   |_ tk-8.5.15.0
      |   |_ tcltk
      |   |_ ...
      |_ Lib
      |_ PCbuild
      |_ ...


I don't think it's wise to try to use the same directory for builds of multiple Python versions without rebuilding all externals anyway.  The reason you can't use the same tcltk install between 2.7 and 3.4/default is because of the different compiler used for each branch.  These days, you'll run into the same issue with OpenSSL, since we now use the same version of it on all branches.  I suppose we could try to make the OpenSSL build put the compiler version in the output directory name and similarly version the tcltk install dirs, but I think that's a lot more effort than it's worth especially considering the other benefits of using separate checkouts for each branch (like being able to test more than one interpreter simultaneously).

These patches do make it significantly easier to switch between versions in the same checkout properly, though; an 'hg purge --all' after update will clear out all the externals as well as all build artifacts (though that would require re-downloading the externals).
History
Date User Action Args
2014-10-29 06:00:50zach.waresetrecipients: + zach.ware, loewis, terry.reedy, tim.golden, trent, BreamoreBoy, steve.dower
2014-10-29 06:00:50zach.waresetmessageid: <1414562450.71.0.231127948688.issue17896@psf.upfronthosting.co.za>
2014-10-29 06:00:50zach.warelinkissue17896 messages
2014-10-29 06:00:50zach.warecreate