rattler-build icon indicating copy to clipboard operation
rattler-build copied to clipboard

Content test: windows dll / lib with ABI version

Open wolfv opened this issue 1 year ago • 7 comments

The openjph package installs dll / lib files with a ABI version like foo.0.17.dll and foo.0.17.lib.

 │ │   - Library\bin\openjph.0.17.dll
...
 │ │   - Library\lib\openjph.0.17.lib

Should we support that?

wolfv avatar Oct 13 '24 16:10 wolfv

https://github.com/conda-forge/staged-recipes/pull/25772#issuecomment-2409033956

wolfv avatar Oct 13 '24 16:10 wolfv

Isuru pointed out on Element:

A common pattern is foo.lib and foo.0.17.dll which are equivalent to libfoo.so and libfoo.so.0.17 in linux

Another common pattern from GMP:

https://github.com/conda-forge/gmp-feedstock/blob/6f7078d255019fadadb8081a8c51bd5829231f8b/recipe/meta.yaml#L45-L54

    - test ! -f ${PREFIX}/lib/libgmp.a      # [unix]
    - test -f ${PREFIX}/lib/libgmp.dylib    # [osx]
    - test -f ${PREFIX}/lib/libgmp.so       # [linux]
    - test ! -f ${PREFIX}/lib/libgmpxx.a    # [unix]
    - test -f ${PREFIX}/lib/libgmpxx.dylib  # [osx]
    - test -f ${PREFIX}/lib/libgmpxx.so     # [linux]
    - if not exist %LIBRARY_BIN%\libgmp-10.dll exit 1  # [win]
    - if not exist %LIBRARY_LIB%\libgmp.dll.a exit 1   # [win]
    - if not exist %LIBRARY_LIB%\gmp.lib exit 1        # [win]

wolfv avatar Oct 14 '24 04:10 wolfv

but is it common to have the lib file with these .0.0.17? i don't think so right?

hmaarrfk avatar Oct 15 '24 23:10 hmaarrfk

I'd say that most of the time there is no version in the .lib filename. When there is a version, it's usually in the form mylib-2.lib.

FWI, i patched out the "lib" in the offending project and requested input from upstream https://github.com/aous72/OpenJPH/issues/155

hmaarrfk avatar Oct 16 '24 00:10 hmaarrfk

@jaimergp can we use your tool to run a query for the names of all *.dll and *.lib files in the conda-forge universe?

I am not sure if enforcing a naming rule makes a lot of sense. I imagine that, if the CMake find_package works correctly, things will be found no-matter-what their name ends up.

So we could also change the regex to something like foo*.dll and foo*.lib ...

wolfv avatar Oct 16 '24 05:10 wolfv

can we use your tool to run a query for the names of all *.dll and *.lib files in the conda-forge universe?

The sqlite dumps are downloadable for this kind of large query that wouldn't be efficient in a public server. Some links:

  • The DB dump is at https://github.com/Quansight-Labs/conda-forge-paths/releases/tag/latest
  • The Python package and datassette config is at https://github.com/Quansight-Labs/conda-forge-paths

jaimergp avatar Oct 16 '24 13:10 jaimergp