Closed weiji14 closed 4 years ago
It shouldn't happen. VCRUNTIME140D.dll is a required library for debug version, but the conda-forge package is built with CMAKE_BUILD_TYPE=Release.
Right, I can reproduce the same issue on my Windows machine.
This is the DLL dependency tree reported by Dependency Walker.
It's obvious that the zstd library needs the debug version libraries (i.e. vcruntime140d.dll and ucrtbased.dll), which causes the trouble. This is a bug of the zstd feedstock and was fixed in https://github.com/conda-forge/zstd-feedstock/pull/36.
GMT should work well if the latest zstd (1.4.4, build 1) is installed, but the conda --list
shows zstd 1.4.3 is installed. Not sure what we should do here.
It's possible that libtiff is pinning zstd to 1.4.3 in your environment. See conda-forge/libtiff-feedstock#44.
That makes sense. Thanks for letting us know.
Actually, I just learned it's a global pinning issue:
https://github.com/conda-forge/libtiff-feedstock/pull/45#issuecomment-554495921
Thanks for the information @jpgill86. Didn't know about global pinning before! I found some documentation at https://conda-forge.org/docs/maintainer/infrastructure.html#conda-forge-pinning and will read up on it now.
The global pinning has been migrated to zstd 1.4.4 (https://github.com/conda-forge/conda-forge-pinning-feedstock/pull/334). @weiji14 Could you try if gmt works now?
If not, we probably need to rebuild the gmt package.
Ok, I'll try and make a push at https://github.com/GenericMappingTools/pygmt/pull/354 and see how the tests go. Might take ~15min. Edit: Hmm, actually I might drag myself to uni (to a Windows computer) to test things properly. Also might take ~15min.
Thanks for the information @jpgill86. Didn't know about global pinning before! I found some documentation at https://conda-forge.org/docs/maintainer/infrastructure.html#conda-forge-pinning and will read up on it now.
We are in exactly the same boat, at the same time! 🤣 I'm currently wondering how long the migration process takes if zstd is used by many packages. Minutes? Days?
Minutes? Days?
Sorry, it will be a few days. But thanks the @CJ-Wright's automation it is way faster than before!
Minutes? Days?
Sorry, it will be a few days. But thanks the @CJ-Wright's automation it is way faster than before!
Gotcha. I'm reading about it now and am very impressed by the orchestration required to keep everything running!
If not, we probably need to rebuild the gmt package.
I've removed the "gmt" conda environment and creating a fresh one using conda create -n gmt gmt
still wants to install zstd 1.4.3. Let's wait for https://github.com/conda-forge/libtiff-feedstock/pull/46 😄
The status page lets you check on the state of the migration. You can also look at the graph plot.
Cool, thanks everyone! libtiff
is now updated but conda create -n gmt gmt
won't work directly (yet) as it's still trying to get 4.1.0 build 0 instead of build 1. It'll just take some time for the repodata.json file to update itself and there shouldn't be a need to rebuild the gmt package.
Meanwhile, following this stackoverflow post on installing a specific build of an anaconda package, (Edit: this works for gmt 5.4.5 but not 6.0.0, see below).conda create -n gmt gmt libtiff=4.1.0=h21b02b4_1
or conda install libtiff=4.1.0=h21b02b4_1
works so I'll close this issue
Once the new packages are available on the channel, in a few hours, please let me know if they work.
Once the new packages are available on the channel, in a few hours, please let me know if they work.
I'm not using gmt, but the (possibly) related issue that prompted me to open conda-forge/libtiff-feedstock#44 is now fixed by the migration of zstd to 1.4.4. Thanks @ocefpaf!
Thanks for letting us know!
Sorry, just realized that the workaround above installed gmt 5.4.5 instead of version 6.0.0... There's still some conflicts if we do conda create --name gmt gmt=6.0.0 libtiff=4.1.0=h21b02b4_1
because libgdal depends on tiledb but the zstd rebuild in https://github.com/conda-forge/tiledb-feedstock/pull/48 only updated tiledb 1.7.0 and not 1.6.*
(base) C:\>conda create --name gmt gmt=6.0.0 libtiff=4.1.0=h21b02b4_1
Solving environment: failed
UnsatisfiableError: The following specifications were found to be in conflict:
- gmt=6.0.0 -> gdal[version='>=3.0.1,<3.1.0a0'] -> libgdal==3.0.1=h2491c49_10 -> tiledb[version='>=1.6.2,<1.6.3.0a0'] -> zstd[version='>=1.4.0,<1.4.1.0a0']
- libtiff==4.1.0=h21b02b4_1
(base) C:\>conda create --name gmt gmt=6.0.0 libtiff=4.1.0=h21b02b4_1 gdal=3.0.2
Solving environment: failed
UnsatisfiableError: The following specifications were found to be in conflict:
- gmt=6.0.0 -> gdal[version='>=3.0.1,<3.1.0a0'] -> libgdal==3.0.1=h2491c49_10 -> tiledb[version='>=1.6.2,<1.6.3.0a0'] -> zstd[version='>=1.4.0,<1.4.1.0a0']
- libtiff==4.1.0=h21b02b4_1
(base) C:\>conda create --name gmt gmt=6.0.0 libtiff=4.1.0=h21b02b4_1 libgdal=3.0.2
Solving environment: failed
UnsatisfiableError: The following specifications were found to be in conflict:
- libgdal=3.0.2 -> tiledb[version='>=1.6.2,<1.6.3.0a0'] -> zstd[version='>=1.4.0,<1.4.1.0a0']
- libtiff==4.1.0=h21b02b4_1
but the zstd rebuild in conda-forge/tiledb-feedstock#48 only updated tiledb 1.7.0 and not 1.6.*
We can build the older tiledb
with the new zstd
but we can also update tiledb
global pin. I'll work on this tomorrow.
We can build the older
tiledb
with the newzstd
but we can also updatetiledb
global pin. I'll work on this tomorrow.
@ocefpaf, I've put in two pull requests to update tiledb on conda-forge, hopefully that helps a bit?
Guys, you should not be building GDAL against an external TIF lib. Just let it use it's internal TIF library. This lib is maintained by the same person I (Even Rouault) is is always most up to date. With this the zstd issue will simple go away.
Could you elaborate a bit more @joa-quim? Do you mean the GMT
source code contains the TIF
library already? Looking at the meta.yaml file, my impression was that we're not building gdal
here (I could be wrong though), just getting the already-built gdal
library on conda-forge.
No, GMT doesn't have any TIF
lib. What I mean is when building GDAL, let it use its own TIF
library instead of linking against an external one. See the dependencies of my GDAL (the one shipped with the GMT installer). No TIF
, still one can read and create GeoTIFFs
with GMT.
Ok, let me know if this makes sense. So you're saying we shouldn't be using the conda-forge built gdal because it links to an external TIF library. Instead, we should be building our own gdal without that external TIF link?
What I'm saying is that your dependency issue is coming from a GDAL that was built against an external TIF
(and, btw, a Jpeg
one). I don't know how things work on the Conda build and if you have to use the Conda GDAL's or if you can use another build.
Also, though we all would like to have a completely scriptable GMT build, please be aware that the Conda GMT build will rather more limited than the one we provide with the official installer. For example, no MEX and the GDAL build will not come with its GDAL_DATA as well as PROJ_DAT included and automatically detectable by GMT. This mean that the -Jepsg:xxx syntax will not be available with that build.
(Very late here, going to bed)
Ah I see, good to keep that in mind. Anyways, best to continue that discussion in a separate issue.
I think the upstream dependencies are settled now (i.e. conda create -n gmt gmt
works), and I'll close this issue shortly after I run some tests.
Issue:
Fresh conda installation of
gmt==6.0.0
on Windows doesn't seem to work. After installinggmt
inside a clean conda environment usingconda create -n gmt gmt
, runninggmt
in Anaconda prompt results in the popups below:Transcription: The code execution cannot proceed because ucrtbased.dll was not found. Reinstalling the program may fix this problem.
Transcription: The code execution cannot proceed because VCRUNTIME140D.dll was not found. Reinstalling the program may fix this problem.
Environment (
conda list
):Details about
conda
and system (conda info
):