sparcians / map

Modeling Architectural Platform
Apache License 2.0
157 stars 57 forks source link

Trouble building Conda sparta env on macOS #523

Open kathlenemagnus opened 1 week ago

kathlenemagnus commented 1 week ago

I am trying to build the Sparta conda env on my Mac and the command hangs here:

$ ./scripts/create_conda_env.sh sparta dev
+ cd ./scripts/..
+ ./scripts/render_recipe_for_platform.sh rendered_recipe.dlkPII
conda is /Users/kathlenehurt/miniconda3/bin/conda
jq is /Users/kathlenehurt/miniconda3/bin/jq
yq is /Users/kathlenehurt/miniconda3/bin/yq
Rendering recipe in /Users/kathlenehurt/Desktop/sparcians/map/conda.recipe
Warning: 'conda-forge' already in 'channels' list, moving to the top
+ conda render -m .ci_support/osx_64_.yaml --file rendered_recipe.dlkPII conda.recipe
/Users/kathlenehurt/miniconda3/lib/python3.11/site-packages/conda_build/environ.py:499: UserWarning: The environment variable 'SYSTEM_DEFAULTWORKINGDIRECTORY' is being passed through with value '/Users/kathlenehurt/Desktop/sparcians/map'.  If you are splitting build and test phases with --no-test, please ensure that this value is also set similarly at test time.
  warnings.warn(

I've tried building the "safe" env but get a long list of missing packages:

$ conda env create -f scripts/rendered_safe_environment.yaml 
Collecting package metadata (repodata.json): done
Solving environment: failed

ResolvePackageNotFound: 
  - mpfr==4.2.1=h38ae2d0_2
  - libxkbcommon==1.7.0=h2c5496b_1
  - gmp==6.3.0=hac33072_2
  - gst-plugins-base==1.24.6=hbaaba92_0
  - libexpat==2.6.2=h59595ed_0
  - gstreamer==1.24.6=haf2f30d_0
  - xorg-libxcursor==1.2.0=h0b41bf4_1
  - xorg-libice==1.1.1=hd590300_0
  - contourpy==1.2.1=py310hd41b1e2_0
  - make==4.3=hd18ef5c_1
  - xorg-damageproto==1.2.1=h7f98852_1002
  - libxml2==2.12.7=h4c95cb1_3
  - lerc==4.0.0=h27087fc_0
  - libsqlite==3.46.0=hde9e2c9_0
  - clang-15==15.0.7=default_h127d8a8_5
  - yaml-cpp==0.8.0=h59595ed_0
  - xorg-inputproto==2.3.2=h7f98852_1002
  - xorg-util-macros==1.19.3=h7f98852_0
  - unicodedata2==15.1.0=py310h2372a71_0
  - xorg-randrproto==1.5.0=h7f98852_1001
  - keyutils==1.6.1=h166bdaf_0
  - xz==5.2.6=h166bdaf_0
  - libzlib==1.3.1=h4ab18f5_1
  - xorg-libxdmcp==1.1.3=h7f98852_0
  - readline==8.2=h8228510_1
  - xorg-libsm==1.2.4=h7391055_0
  - xorg-libxext==1.3.4=h0b41bf4_2
  - zstd==1.5.6=ha6fb4c9_0
  - xorg-libxi==1.7.10=h4bc722e_1
  - icu==73.2=h59595ed_0
  - zlib==1.3.1=h4ab18f5_1
  - lcms2==2.16=hb7c19ff_0
  - openjpeg==2.5.2=h488ebb8_0
  - atk-1.0==2.38.0=h04ea711_2
  - graphite2==1.3.13=h59595ed_1003
  - tinyxml2==10.0.0=h59595ed_0
  - libedit==3.1.20191231=he28a2e2_2
  - gxx_impl_linux-64==12.4.0=h557a472_0
  - expat==2.6.2=h59595ed_0
  - libnsl==2.0.1=hd590300_0
  - glib-tools==2.80.3=h73ef956_1
  - hdf5==1.14.3=nompi_hdf9ad27_105
  - libvorbis==1.3.7=h9c3ff4c_0
  - sqlite==3.46.0=h6d4b2fc_0
  - openssl==3.3.1=h4bc722e_2
  - xorg-xextproto==7.3.0=h0b41bf4_1003
  - xorg-xproto==7.0.31=h7f98852_1007
  - boost==1.78.0=py310hc4a4660_4
  - python==3.10.14=hd12c33a_0_cpython
  - xorg-libxrandr==1.5.2=h7f98852_1
  - lz4-c==1.9.4=hcb278e6_0
  - libnghttp2==1.58.0=h47da74e_1
  - pango==1.54.0=h84a9a3c_0
  - kiwisolver==1.4.5=py310hd41b1e2_1
  - xxhash==0.8.2=hd590300_0
  - libclang-cpp15==15.0.7=default_h127d8a8_5
  - xorg-libxinerama==1.1.5=h27087fc_0
  - numpy==1.21.6=py310h45f3432_0
  - libxcb==1.16=hd590300_0
  - _libgcc_mutex==0.1=conda_forge
  - libiconv==1.17=hd590300_2
  - hicolor-icon-theme==0.17=ha770c72_2
  - glib==2.80.3=h8a4344b_1
  - libblas==3.9.0=23_linux64_openblas
  - boost-cpp==1.78.0=h2c5509c_4
  - libbrotlidec==1.1.0=hd590300_1
  - cython==3.0.10=py310hc6cd4ac_0
  - freetype==2.12.1=h267a509_2
  - pyyaml==6.0.1=py310h2372a71_1
  - gdk-pixbuf==2.42.12=hb9ae30d_0
  - rsync==3.3.0=he6cb5fe_0
  - libopus==1.3.1=h7f98852_1
  - ld_impl_linux-64==2.40=hf3520f5_7
  - pcre2==10.44=h0f59acf_0
  - libcurl==8.9.1=hdb1bdb2_0
  - libcups==2.3.3=h4637d8d_4
  - libev==4.33=hd590300_2
  - libwebp-base==1.4.0=hd590300_0
  - binutils_linux-64==2.40=hb3c18ed_0
  - binutils_impl_linux-64==2.40=ha1999f0_7
  - rhash==1.4.4=hd590300_0
  - texlive-core==20230313=h14aa9ea_12
  - llvm-tools==15.0.7=hb3ce162_4
  - librsvg==2.58.2=hf0cb8fb_0
  - cairo==1.18.0=hbb29018_2
  - brotli-bin==1.1.0=hd590300_1
  - libtiff==4.6.0=h1dd3fc0_3
  - alsa-lib==1.2.12=h4ab18f5_0
  - xorg-libxrender==0.9.11=hd590300_0
  - harfbuzz==8.5.0=hfac3d4d_0
  - _openmp_mutex==4.5=2_gnu
  - libjpeg-turbo==3.0.0=hd590300_1
  - cppcheck==2.14.2=py310h5d8bd85_0
  - libopenblas==0.3.27=pthreads_hac2b453_1
  - yaml==0.2.5=h7f98852_2
  - at-spi2-atk==2.38.0=h0630a04_3
  - libcblas==3.9.0=23_linux64_openblas
  - wxpython==4.2.1=py310h809cb23_6
  - matplotlib-base==3.8.4=py310hef631a5_2
  - popt==1.16=h0b475e3_2002
  - libdeflate==1.20=hd590300_0
  - wayland==1.23.0=h5291e77_0
  - xorg-libxfixes==5.0.3=h7f98852_1004
  - at-spi2-core==2.40.3=h0630a04_0
  - libaec==1.1.3=h59595ed_0
  - ncurses==6.5=h59595ed_0
  - doxygen==1.10.0=h661eb56_0
  - xorg-libxtst==1.2.5=h4bc722e_0
  - fribidi==1.0.10=h36c2ea0_0
  - libxcrypt==4.4.36=hd590300_1
  - libbrotlicommon==1.1.0=hd590300_1
  - libpng==1.6.43=h2797004_0
  - rapidjson==1.1.0.post20240409=hac33072_1
  - xorg-compositeproto==0.4.2=h7f98852_1001
  - libgomp==14.1.0=h77fa898_0
  - pcre==8.45=h9c3ff4c_0
  - xorg-fixesproto==5.0=h7f98852_1002
  - libstdcxx-ng==14.1.0=hc0a3c3a_0
  - libssh2==1.11.0=h0841786_0
  - wxwidgets==3.2.5=h400ed56_1
  - epoxy==1.5.10=h166bdaf_1
  - gxx_linux-64==12.4.0=h8489865_0
  - dbus==1.13.6=h5008d03_3
  - brotli==1.1.0=hd590300_1
  - krb5==1.21.3=h659f571_0
  - xorg-libxcomposite==0.4.6=h0b41bf4_1
  - fontconfig==2.14.2=h14ed4e7_0
  - libgcc-ng==14.1.0=h77fa898_0
  - tk==8.6.13=noxft_h4845f30_101
  - pillow==10.4.0=py310hebfe307_0
  - xorg-renderproto==0.11.1=h7f98852_1002
  - clangxx==15.0.7=default_h127d8a8_5
  - libgfortran5==14.1.0=hc5f4f2c_0
  - libsanitizer==12.4.0=h46f95d5_0
  - libffi==3.4.2=h7f98852_5
  - xkeyboard-config==2.42=h4ab18f5_0
  - bzip2==1.0.8=h4bc722e_7
  - clang==15.0.7=h39da44c_5
  - xorg-libx11==1.8.9=hb711507_1
  - c-ares==1.32.3=h4bc722e_0
  - libglib==2.80.3=h8a4344b_1
  - gcc_linux-64==12.4.0=h6b7512a_0
  - xorg-libxau==1.0.11=hd590300_0
  - ca-certificates==2024.7.4=hbcca054_0
  - libgfortran-ng==14.1.0=h69a702a_0
  - pthread-stubs==0.4=h36c2ea0_1001
  - cmake==3.30.2=hf8c4bd3_0
  - gtk3==3.24.43=h0359ba6_0
  - libbrotlienc==1.1.0=hd590300_1
  - libuv==1.48.0=hd590300_0
  - xorg-libxxf86vm==1.1.5=h4bc722e_1
  - fonttools==4.53.1=py310h5b4e0ec_0
  - libogg==1.3.5=h4ab18f5_0
  - pixman==0.43.2=h59595ed_0
  - xorg-kbproto==1.0.7=h7f98852_1002
  - xorg-libxdamage==1.1.5=h7f98852_1
  - gcc_impl_linux-64==12.4.0=hb2e57f8_0
  - liblapack==3.9.0=23_linux64_openblas
  - xorg-recordproto==1.14.2=h7f98852_1002
  - libuuid==2.38.1=h0b41bf4_0
  - libllvm15==15.0.7=hb3ce162_4

I'm using Conda version 23.7.4 and the latest version of the map repo.

kathlenemagnus commented 4 days ago

So my first problem is that I'm impatient and didn't let the create_conda_env.sh script run long enough. After letting it run, I do come across a real error:

    ValueError: Incompatible component merge:
      - 'h2f2b2fd_4'
      - 'hfcd56d9_4'

Which seems to be caused by the environment yaml including 2 different versions of boost:

$ egrep h2f2b2fd_4 environment.GvLbsq.yml 
  - boost-cpp=1.78.0=h2f2b2fd_4
$ egrep hfcd56d9_4 environment.GvLbsq.yml 
  - boost-cpp=1.85.0=hfcd56d9_4

I've actual seen this same error when building the Sparta Conda env on WSL. I tried directly modifying the environment yaml to remove the duplicate entries for boost (1.85.0), icu (75.1) and libxml2 (2.12.7=heaf3512_4), but I ended up with a MASSIVE error message that listed a bunch of libraries that were incompatible with each other.

So then I tried just removing the version specifiers in these environment yaml for these libraries

dependencies:
  - boost-cpp
  - icu
  - libboost-devel
  - libboost-headers
  - libboost
  - libxml2

And that seems to work! I'm not very familiar with the create_conda_env.sh script, but I'll take a look and see if I can submit a fix.