conda-tools / conda-execute

Execute scripts in their own temporary environment
BSD 3-Clause "New" or "Revised" License
72 stars 19 forks source link

CI: add the latest conda version 4.6.2 #56

Open mrakitin opened 5 years ago

mrakitin commented 5 years ago

I observed an issue when running conda-execute with conda=4.6.2:

======================================================================
ERROR: test_conda_execute_removes_envs_with_no_exe_log (tests.test_tmpenv.Test_tmpenv)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/mrakitin/src/mrakitin/work/conda-execute/conda_execute/tests/test_tmpenv.py", line 24, in test_conda_execute_removes_envs_with_no_exe_log
    env_locn = conda_execute.tmpenv.create_env(env_spec)
  File "/Users/mrakitin/src/mrakitin/work/conda-execute/conda_execute/tmpenv.py", line 118, in create_env
    full_list_of_packages = sorted(r.solve(list(spec)))
TypeError: '<' not supported between instances of 'PackageRecord' and 'PackageRecord'

This PR is to reproduce the error on TravisCI, and the follow-up commits will fix the issue.

mrakitin commented 5 years ago

Here is the failing test/build: https://travis-ci.org/conda-tools/conda-execute/jobs/489259402.

mrakitin commented 5 years ago

The reasoning for removing the sorted(...) function is that in conda v4.5.13 and v4.6.2 the solve method of the Resolve class already returns the sorted values, see the following code snippets correspondingly:

mrakitin commented 5 years ago

This is still failing even after the proposed fix, but with a different error:

ERROR: test_conda_execute_removes_envs_with_no_exe_log (tests.test_tmpenv.Test_tmpenv)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/conda-tools/conda-execute/conda_execute/tests/test_tmpenv.py", line 24, in test_conda_execute_removes_envs_with_no_exe_log
    env_locn = conda_execute.tmpenv.create_env(env_spec)
  File "/home/travis/build/conda-tools/conda-execute/conda_execute/tmpenv.py", line 123, in create_env
    _create_env_conda_44(env_locn, full_list_of_packages)
  File "/home/travis/build/conda-tools/conda-execute/conda_execute/tmpenv.py", line 92, in _create_env_conda_44
    txn = m.solve_for_transaction()
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/core/solve.py", line 107, in solve_for_transaction
    force_remove, force_reinstall)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/core/solve.py", line 145, in solve_for_diff
    force_remove)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/core/solve.py", line 242, in solve_final_state
    ssc = self._run_sat(ssc)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/core/solve.py", line 462, in _run_sat
    conflicting_specs = ssc.r.get_conflicting_specs(tuple(final_environment_specs))
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/resolve.py", line 852, in get_conflicting_specs
    reduced_index = self.get_reduced_index(specs)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/common/io.py", line 85, in decorated
    return f(*args, **kwds)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/resolve.py", line 356, in get_reduced_index
    specs, features = self.verify_specs(specs)
  File "/home/travis/miniconda/lib/python3.6/site-packages/conda/resolve.py", line 244, in verify_specs
    raise ResolvePackageNotFound(bad_deps)
conda.exceptions.ResolvePackageNotFound: 
  - pkgs/free/linux-64::blas==1.0=mkl
mrakitin commented 5 years ago

I got stuck with it. Not sure why conda tries to get blas from the free channel - it's the only package requested from there. Here is a part of output in the debug mode:

> /Users/mrakitin/anaconda3/envs/tmpenv_create_env/lib/python3.6/site-packages/conda/resolve.py(356)get_reduced_index()
    354             log.debug('Retrieving packages for: %s', dashlist(sorted(text_type(s) for s in specs)))
    355
--> 356         specs, features = self.verify_specs(specs)
    357         filter_out = {prec: False if val else "feature not enabled"
    358                       for prec, val in iteritems(self.default_filter(features))}
...
ipdb> for s in specs: print(s)
pkgs/main/osx-64::pip==18.1=py37_0
pkgs/main/osx-64::mkl_random==1.0.2=py37h27c97d8_0
pkgs/main/osx-64::python==3.7.2=haf84260_0
pkgs/main/osx-64::libgfortran==3.0.1=h93005f0_2
pkgs/main/osx-64::ncurses==6.1=h0a44026_1
pkgs/main/osx-64::numpy-base==1.15.4=py37h6575580_0
pkgs/main/osx-64::libedit==3.1.20181209=hb402a30_0
pkgs/main/osx-64::libffi==3.2.1=h475c297_4
pkgs/main/osx-64::xz==5.2.4=h1de35cc_4
pkgs/main/osx-64::openssl==1.1.1a=h1de35cc_0
pkgs/main/osx-64::ca-certificates==2018.12.5=0
pkgs/main/osx-64::setuptools==40.6.3=py37_0
pkgs/main/osx-64::mkl_fft==1.0.10=py37h5e564d8_0
pkgs/main/osx-64::zlib==1.2.11=h1de35cc_3
pkgs/main/osx-64::numpy==1.15.4=py37hacdab7b_0
pkgs/main/osx-64::certifi==2018.11.29=py37_0
pkgs/main/osx-64::mkl==2019.1=144
pkgs/main/osx-64::libcxxabi==4.0.1=hcfea43d_1
pkgs/main/osx-64::tk==8.6.8=ha441bb4_0
pkgs/main/osx-64::intel-openmp==2019.1=144
pkgs/free/osx-64::blas==1.0=mkl
pkgs/main/osx-64::readline==7.0=h1de35cc_5
pkgs/main/osx-64::sqlite==3.26.0=ha441bb4_0
pkgs/main/osx-64::wheel==0.32.3=py37_0
pkgs/main/osx-64::libcxx==4.0.1=hcfea43d_1

@pelson, do you have any ideas about it? Thanks!