1

My current flow is to build package-a, then deploy package-a to Artifactory. Then I'm building package-b pointing at artifactory channels that contain the package-a conda package. However, I'm getting a lot (hundreds) of dependency conflicts when I build package-b. Am I doing this flow correct?

Below are my meta.yaml's

package-a

{% set data = load_setup_py_data() %}

package:
  name: "package-a"
  version: {{ data.get('version') }}

build:
  noarch: generic
  script: python setup.py install --single-version-externally-managed --record=record.txt

source:
  path: ..

requirements:
  run:
    - python 3.6
    - aiohttp-swagger
    - elasticsearch-dsl
    - aiocache
    - aiohttp
    - aioredis
    - arrow

  build:
    - python 3.6

package-b

{% set data = load_setup_py_data() %}

package:
  name: "package-b"
  version: {{ data.get('version') }}

build:
  noarch: generic
  script: python setup.py install --single-version-externally-managed --record=record.txt

source:
  path: ..

requirements:
  run:
    - python 3.6
    - albumentations
    - package-a
    - pillow
    - rasterio
    - shapely-geojson
    - scikit-image
    - scikit-learn

  build:
    - python 3.6

Note: That I'm installing package-a (from artifactory) into package-b.

Sample of error output

Package ca-certificates conflicts for:
python=3.6 -> openssl[version='>=1.1.1l,<1.1.2a'] -> ca-certificates
scikit-learn -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
keras -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
geojson -> python -> ca-certificates
shapely -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
noise -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
pillow -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
scikit-image -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
tqdm -> python[version='>=2.7'] -> ca-certificates
shapely-geojson -> python -> ca-certificates
rasterio -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
opencv[version='<=4.5.3'] -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates
albumentations -> python -> ca-certificates
...
...
...
RustyShackleford
  • 25,262
  • 6
  • 22
  • 38
  • 1
    Could you try doing it with Mamba instead? Conda’s conflict reporting is very imprecise. https://stackoverflow.com/a/69137255/570918 – merv Jan 17 '22 at 20:52
  • BTW, if the error is from solving *during* the build process, install the `conda-forge::boa` package. That provides `conda mambabuild` as a drop-in replacement for `conda build`, and uses `mamba` for any of the solve steps in the build process. – merv Jan 17 '22 at 21:11
  • The errors are during the build process, I'm trying `mamba build` now. Should I use `conda mambabuild` – RustyShackleford Jan 17 '22 at 21:24
  • @merv looks like mamba build worked 100%, without any conflicts to resolve. Crazy that it works that much better. – RustyShackleford Jan 17 '22 at 21:40
  • Well, that's a bonus! I was only expecting you'd get a more precise error message. Mamba does use a different solver, so maybe you were hitting a bug in the Conda solver - not sure. – merv Jan 17 '22 at 23:15

0 Answers0