git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 01/13] ci: also run linux-gcc pipeline with python-3.7 environment

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Dec 12, 2019, 14:13 UTC
Message-ID
<20191212141322.GK6527@szeder.dev>
In-Reply-To
<CABvFv3Lud80UzFXa6BRMGLwRV6gsJpNcs-mrgOiNHoJL0d+koA@mail.gmail.com>
On Tue, Dec 10, 2019 at 11:11:09AM -0800, Yang Zhao wrote:
Show 33 quoted lines
> On Tue, Dec 10, 2019 at 2:30 AM SZEDER Gábor <szeder.dev@gmail.com> wrote:
> > On Fri, Dec 06, 2019 at 04:33:19PM -0800, Yang Zhao wrote:
> > > diff --git a/azure-pipelines.yml b/azure-pipelines.yml
> > > index 37ed7e06c6..d5f9413248 100644
> > > --- a/azure-pipelines.yml
> > > +++ b/azure-pipelines.yml
> > > @@ -331,7 +331,18 @@ jobs:
> > >    displayName: linux-gcc
> > >    condition: succeeded()
> > >    pool: Hosted Ubuntu 1604
> > > +  strategy:
> > > +    matrix:
> > > +      python27:
> > > +        python.version: '2.7'
> > > +      python37:
> > > +        python.version: '3.7'
> > >    steps:
> > > +  - task: UsePythonVersion@0
> > > +    inputs:
> > > +      versionSpec: '$(python.version)'
> > > +  - bash: |
> > > +      echo "##vso[task.setvariable variable=python_path]$(which python)"
> >
> > I don't speak 'azure-pipelines.yml', so question: will this build Git
> > and run the whole test suite twice, once with Python 2.7 and once with
> > 3.7?  I'm asking because 'git-p4' is the one and only Python script we
> > have, with no plans for more, so running the whole test suite with a
> > different Python version for a second time instead of running only the
> > 'git-p4'-specific tests (t98*) seems to be quite wasteful.
> 
> The CI scripts as it is currently does not separate compiling and testing for
> non-Windows builds. I don't see a good way to only run a specific set of tests
> given a particular environment without re-architecturing the CI pipeline.

Building git and running the test suite is encapsulated in the 'ci/run-build-and-tests.sh' script, while installing dependencies is encapsulated in 'ci/install-dependencies.sh', just in case Azure Pipelines Linux images don't contain both Python 2 and 3 (Travis CI images contain 2.7 and 3.5) So I don't think it's necessary to touch 'azure-pipelines.yml' or '.travis.yml' at all.

Show 7 quoted lines
> Furthermore, there's a step in the build that hard-codes the
> environment's python
> path into the installed version of the script. This complicates being
> able to even create
> a `git-p4` that runs under different python environments in Azure
> Pipelines due to how
> `UsePythonVersion@0` pulls python into version-specific directories.

The PYTHON_PATH that we build 'git p4' with can be a symbolink link, and then choosing which Python version to use is only a matter of pointing that symbolic link to the python binary of the desired version.

In fact our default PYTHON_PATH is '/usr/bin/python', which is a symbolic link pointing to 'python2.7' on Ubuntu 16.04, including the Travis CI's images that we use.

Show 9 quoted lines
> I haven't dug into
> why this hardcoding is done in the first place.
> 
> So, the question is if it's worth doing this work now when the desire
> seems to be dropping
> python-2.7 completely in the (near?) future.
> 
> -- 
> Yang
Previous: Yang ZhaoNext: Yang Zhao
Message 5 of 33 in “git-p4: python3 compatibility”
  1. 00/13 git-p4: python3 compatibilityYang Zhao, Dec 7, 2019
  2. 01/13 ci: also run linux-gcc pipeline with python-3.7 environmentYang Zhao, Dec 7, 2019
  3. SZEDER GáborDec 10, 2019
  4. Yang ZhaoDec 10, 2019
  5. SZEDER GáborDec 12, 2019
  6. Yang ZhaoDec 12, 2019
  7. SZEDER GáborDec 12, 2019
  8. Yang ZhaoDec 12, 2019
  9. 02/13 git-p4: make python-2.7 the oldest supported versionYang Zhao, Dec 7, 2019
  10. 03/13 git-p4: simplify python version detectionYang Zhao, Dec 7, 2019
  11. 04/13 git-p4: decode response from p4 to str for python3Yang Zhao, Dec 7, 2019
  12. 05/13 git-p4: properly encode/decode communication with git for python 3Yang Zhao, Dec 7, 2019
  13. 06/13 git-p4: open .gitp4-usercache.txt in text modeYang Zhao, Dec 7, 2019
  14. 06/13 git-p4: convert path to unicode before processing themYang Zhao, Dec 7, 2019
  15. 07/13 git-p4: convert path to unicode before processing themYang Zhao, Dec 7, 2019
  16. 07/13 git-p4: open .gitp4-usercache.txt in text modeYang Zhao, Dec 7, 2019
  17. 09/13 git-p4: fix freezing while waiting for fast-import progressYang Zhao, Dec 7, 2019
  18. 08/13 git-p4: use marshal format version 2 when sending to p4Yang Zhao, Dec 7, 2019
  19. 10/13 git-p4: use functools.reduce instead of reduceYang Zhao, Dec 7, 2019
  20. 11/13 git-p4: use dict.items() iteration for python3 compatibilityYang Zhao, Dec 7, 2019
  21. 13/13 git-p4: use python3's input() everywhereYang Zhao, Dec 7, 2019
  22. 12/13 git-p4: simplify regex pattern generation for parsing diff-treeYang Zhao, Dec 7, 2019
  23. Denton LiuDec 7, 2019
  24. Yang ZhaoDec 7, 2019
  25. Ben KeeneDec 7, 2019
  26. Yang ZhaoDec 7, 2019
  27. Ben KeeneDec 9, 2019
  28. Ben KeeneDec 9, 2019
  29. Johannes SchindelinDec 9, 2019
  30. Ben KeeneDec 10, 2019
  31. Yang ZhaoDec 9, 2019
  32. Ben KeeneDec 13, 2019
  33. Yang ZhaoDec 7, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.