-
-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a png.lib file on windows #4
Conversation
matplotlib expects the lib under that name, so add it as well. The file is also in the package from the defaults channel, so this could also be considered a regression against that version. See matplotlib/matplotlib#6460 for the discussion on that topic.
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
I'm currently building it locally to see if the file is included... [Update: my local version had the file...] |
Seems that everything built fine :-) and there were 4 files copied on appveyor, so this seems to be ok, too |
@JanSchulz I am OK with this if there is no other way. However, even copying the versioned lib to an unversioned incarnation is weird. We should keep the lib as pristine as possible and fix the packages that use it and not the lib. After all there is a reason to why the lib is called There are other issues here though that is quite puzzling. Why the name Note that there are many packages where we do rename the libs on Windows b/c those are imported from |
I think this is just a problem with fallbacks mpl implements for windows when pkgconfig is not there: Usually pkgconfig takes Here are the names for the fallback defined and I guess that windows runs into this lines here which use the fallback defaults. I think in this case matplotlib could be changed to at least add the This also seems to be not png specifc, as e.g. the zlib package also does export the lib under three different names... A better way to fix it would probably be to make the pkgconfig scripts work so that the default fallbacks are not used? This looks like it is a bigger problem under windows :-( [Update: as it is "just" the lib versions which will be statically compiled in and not the dll version (which is only available as |
Re the libpng package itself and linking to the right version: as long as the package is called For more on this, see Debian Policy manual 8.1
So IMO the Right now, the whole (conda-forge) ecosystem will really break big time when one of the core libraries would change the ABI in an incompatible way and this is uploaded without anyone noticing: every installation would upgrade to it and suddenly all packages which link against that lib would stop working... In this case, the [update: for mpl, which takes the lib version and not the dll, it seems less problematic: if it compiles, all is good and if there is an incompatibility, it breaks on build time... Not sure which packages use a dll and not statically compile the lib versions in.] |
Ok, I digged a bit deeper and it seems that there are two kinds of I'm not sure what the fix is: on linux this all works because the default path calls pkgconfig and get the right flags for the name. On windows this seems to be not possible :-( The problem I see is that [mpltest_35] λ dumpbin.exe /DEPENDENTS _png.cp35-win_amd64.pyd
Dump of file _png.cp35-win_amd64.pyd
File Type: DLL
Image has the following dependencies:
libpng16.dll
MSVCP140.dll
python35.dll
KERNEL32.dll
VCRUNTIME140.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll Including "unversioned" "header" files ( So, my recommendation would be:
(I still think this also points to some problems with conda, which has no distinction between source and binary packages, can't build multiple packages from a source package and has no automatic dependencies for binary packages. All of these would help to make this much easier to handle :-/) CC: @tacaswell |
@JanSchulz is this still valid? Or will this be fixed in matplotlib? (Sorry I missed this for a while and I just found it again). |
Probably not. I currently copy the static file to the right place in the matplotlib build matplotlib/matplotlib@a5d8e7e and the conda-forge recipe patches setup.py |
matplotlib expects the lib under that name, so add it as well. The file is also
in the package from the defaults channel, so this could also be considered a
regression against that version.
See matplotlib/matplotlib#6460 for the discussion on
that topic.