[ https://issues.apache.org/jira/browse/BEAM-4021?focusedWorklogId=88289&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-88289 ]
ASF GitHub Bot logged work on BEAM-4021: ---------------------------------------- Author: ASF GitHub Bot Created on: 06/Apr/18 00:19 Start Date: 06/Apr/18 00:19 Worklog Time Spent: 10m Work Description: aaltay closed pull request #5032: [BEAM-4021] Work around tox bug. URL: https://github.com/apache/beam/pull/5032 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/sdks/python/build.gradle b/sdks/python/build.gradle index be17644e8d3..6c0f7f8e45a 100644 --- a/sdks/python/build.gradle +++ b/sdks/python/build.gradle @@ -26,6 +26,7 @@ task test {} check.dependsOn test def envdir = "${project.buildDir}/gradleenv" +def tox_opts = "-c tox.ini --recreate" task setupVirtualenv { doLast { @@ -37,7 +38,10 @@ task setupVirtualenv { args '-c', ". ${envdir}/bin/activate && pip install --upgrade tox" } } - outputs.files("${envdir}/bin/tox") + // Gradle will delete outputs whenever it thinks they are stale. Putting a + // specific binary here could make gradle delete it while pip will believe + // the package is fully installed. + outputs.dirs(envdir) } task sdist(dependsOn: 'setupVirtualenv') { @@ -77,7 +81,7 @@ task lintPy27(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e py27-lint -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e py27-lint" } } } @@ -87,7 +91,7 @@ task lintPy3(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e py3-lint -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e py3-lint" } } } @@ -97,7 +101,7 @@ task testGcp(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e py27-gcp -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e py27-gcp" } } } @@ -107,7 +111,7 @@ task testPython(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e py27 -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e py27" } } } @@ -117,7 +121,7 @@ task testCython(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e py27-cython2 -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e py27-cython" } } } @@ -131,7 +135,7 @@ task docs(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e docs -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e docs" } } } @@ -141,7 +145,7 @@ task cover(dependsOn: 'setupVirtualenv') { doLast { exec { executable 'sh' - args '-c', ". ${envdir}/bin/activate && tox -e cover -c tox.ini" + args '-c', ". ${envdir}/bin/activate && tox ${tox_opts} -e cover" } } } diff --git a/sdks/python/tox.ini b/sdks/python/tox.ini index add9bbfb2cc..ff88ac42fa8 100644 --- a/sdks/python/tox.ini +++ b/sdks/python/tox.ini @@ -17,7 +17,7 @@ [tox] # new environments will be excluded by default unless explicitly added to envlist. -envlist = py27,py27-{gcp,cython2,lint},py3-lint,docs +envlist = py27,py27-{gcp,cython,lint},py3-lint,docs toxworkdir = {toxinidir}/target/.tox [pycodestyle] @@ -33,6 +33,16 @@ extras = test whitelist_externals = find time +deps = + grpcio-tools==1.3.5 + cython: cython==0.26.1 + +# These 2 magic command overrides are required for Jenkins builds. +# Otherwise we get "OSError: [Errno 2] No such file or directory" errors. +# Source: +# https://github.com/tox-dev/tox/issues/123#issuecomment-284714629 +install_command = {envbindir}/python {envbindir}/pip install {opts} {packages} +list_dependencies_command = {envbindir}/python {envbindir}/pip freeze [testenv:py27] commands = @@ -43,15 +53,12 @@ commands = python setup.py test {toxinidir}/run_tox_cleanup.sh -# This environment will fail in Jenkins if named "py27-cython". -[testenv:py27-cython2] +[testenv:py27-cython] # cython tests are only expected to work in linux (2.x and 3.x) # If we want to add other platforms in the future, it should be: # `platform = linux2|darwin|...` # See https://docs.python.org/2/library/sys.html#sys.platform for platform codes platform = linux2 -deps = - cython==0.26.1 commands = python --version pip --version ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 88289) Time Spent: 1h 40m (was: 1.5h) > "No such file or directory" in beam_PreCommit_Python_GradleBuild > ---------------------------------------------------------------- > > Key: BEAM-4021 > URL: https://issues.apache.org/jira/browse/BEAM-4021 > Project: Beam > Issue Type: Sub-task > Components: testing > Reporter: Udi Meiri > Assignee: Udi Meiri > Priority: Major > Time Spent: 1h 40m > Remaining Estimate: 0h > > Seems to only happenĀ in this working directory: > {{/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild}} > but not this: > {{/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild@2}} > {{ERROR: invocation failed (errno 2), args: > ['/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/target/.tox/py27-cython2/bin/pip', > 'install', 'cython==0.26.1'], cwd: > /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python}} > {{ Traceback (most recent call last):}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/bin/tox", > line 11, in <module>}} > {{ sys.exit(run_main())}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 40, in run_main}} > {{ main(args)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 46, in main}} > {{ retcode = Session(config).runcommand()}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 415, in runcommand}} > {{ return self.subcommand_test()}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 599, in subcommand_test}} > {{ if self.setupenv(venv):}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 491, in setupenv}} > {{ status = venv.update(action=action)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/venv.py", > line 171, in update}} > {{ self.hook.tox_testenv_install_deps(action=action, venv=self)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/__init__.py", > line 617, in __call__}} > {{ return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/__init__.py", > line 222, in _hookexec}} > {{ return self._inner_hookexec(hook, methods, kwargs)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/__init__.py", > line 216, in <lambda>}} > {{ firstresult=hook.spec_opts.get('firstresult'),}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/callers.py", > line 201, in _multicall}} > {{ return outcome.get_result()}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/callers.py", > line 77, in get_result}} > {{ _reraise(*ex) # noqa}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/pluggy/callers.py", > line 180, in _multicall}} > {{ res = hook_impl.function(*args)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/venv.py", > line 452, in tox_testenv_install_deps}} > {{ venv._install(deps, action=action)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/venv.py", > line 331, in _install}} > {{ action=action)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/venv.py", > line 303, in run_install_command}} > {{ action=action, redirect=self.session.report.verbosity < 2)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/venv.py", > line 409, in _pcall}} > {{ redirect=redirect, ignore_ret=ignore_ret)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 150, in popen}} > {{ stdout=stdout, stderr=subprocess.STDOUT)}} > {{ File > "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_GradleBuild/src/sdks/python/build/gradleenv/local/lib/python2.7/site-packages/tox/session.py", > line 243, in _popen}} > {{ stdout=stdout, stderr=stderr, env=env)}} > {{ File "/usr/lib/python2.7/subprocess.py", line 710, in __init__}} > {{ errread, errwrite)}} > {{ File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child}} > {{ raise child_exception}} > {{ OSError: [Errno 2] No such file or directory}} -- This message was sent by Atlassian JIRA (v7.6.3#76005)