-
-
Notifications
You must be signed in to change notification settings - Fork 5k
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
package cylp #14950
base: main
Are you sure you want to change the base?
package cylp #14950
Conversation
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipes/clpy:
|
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 ( |
So it seems https://github.com/coin-or/CyLP/blob/master/setup.py installs into a custom library folder, and we'll need to patch this. Hopefully an optional fall-back to an environment variable Also, I just saw that windows is blocked on conda-forge/coin-or-cbc-feedstock#3 |
Or perhaps, using |
I'm having trouble following what this package is trying to do. If you |
Hey @tkralphs, thanks for stopping by! Generally, mixing conda & pip is discouraged, so one definite advantage would be being able to install cylp completely without pip! Another benefit would be having precompiled packages across several platforms & python versions (currently there's only windows), without having to vendor the library, etc. So then
Conda tries to package things independently and resolve vendored/static dependencies through the build recipe, so that artefacts don't get duplicated unnecessarily. Currently, I get errors trying to build |
Hmm, guess I don't see the problem with mixing pip and conda in general, but I probabvly don't know what bad things can happen. It's worked for me so far. Anyway, it's just that I saw you removed
Right, but I'm not aware that it is doing that and I don't see anything in |
Conda needs its own packages to work properly - everything installed by pip might trample over what conda has carefully set up and break a given environment;
conda always builds from source (or at least wherever possible); and since we want to reuse the existing
The packaging effort is not automagic, there's an initial effort (which might be quite large for complicated packages) to get a package into the conda-ecosystem - this PR intends to do much of that initial work. Afterwards, things work almost completely automagically.
That's because you're not familiar with conda build, which is completely OK. But basically, for conda to correctly package what gets produced in the build phase (so that it can be reproduced whenever requested in an environment), it looks for the created libraries/headers etc. not in an arbitrary directory, but in the environment- |
Interestingly, the import of
|
Hey @h-vetinari, yes, I understand that the effort of actually doing the packaging is not automagic, what I meant was that the build itself should be. Looking at your build script, it does seem that all that is being done is a 'pip install', which is what I was expecting. I got the impression it was going to be more involved than that from your comments about patching, etc. Given that's what is done in the end, I'm still not quite grasping why doing that manually is a bad idea or why the result should be different, but don't feel like you need to explain further, I can do some Googling. You can, however, explain further what you meant by your comment that CyLP's In any case, I also couldn't see any obvious reason why |
hmm, it looks like it properly copies the
|
Yes, everything seems to get installed properly... |
The comment about patching was premature, at least before I found out about
If you go to the top-level run overview, you see "1 published", but since the build didn't succeed, that actually corresponds to the skipped windows build. otherwise if you want to try to run this locally, you could clone this branch, create a conda environment with
It seems that the |
How about explicitly importing the missing dependencies directly, either in the build or test section? That way you know if they're even available at all (Which they seem to be but apparently aren't).
From my (very) cursory glance it seems like you're doing everything that we did in |
Maybe a slightly related problem: I have a separate PR #17080 where I'm also getting |
Hi everybody, not sure if this helps but my upstream fixed it in these PRs: |
Hm, I cannot see how the patch you posted relates to missing symbols @BastianZim?
Could it be that we need to match compiler-options (like C++ standard or other ABI-relevant flags) between the coin-or-* packages and this PR? |
To be honest, at that point I was just grasping at straws. The only reason I mentioned it is because it fixed it on my side but the two can be completely unrelated of course. |
Looking some more at this answer, it sounds to me like the required libraries are not correctly declared in the build script (which isn't a Makefile or CMakelists.txt, but directly in setup.py), and indeed, it seems (at first glance) that this is not set correctly... |
OK, progress! 🥳 Imports succeed, now segfaulting in the test suite. This PR would hopefully benefit from conda-forge/coin-or-cbc-feedstock#14, so I'll probably wait for that. |
Hi friend! We really, really, really appreciate that you have taken the time to make a PR on In an effort to maintain this repository and increase the signal-to-noise for open PRs, the maintainers of If you'd like to keep it open, please comment/push and we will be happy to oblige! Note that very old PRs will likely need to be rebased on Cheers and thank you for contributing to this community effort! |
Not stale |
Hi friend! We really, really, really appreciate that you have taken the time to make a PR on In an effort to maintain this repository and increase the signal-to-noise for open PRs, the maintainers of If you'd like to keep it open, please comment/push and we will be happy to oblige! Note that very old PRs will likely need to be rebased on Cheers and thank you for contributing to this community effort! |
not stale |
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 ( |
Still passing the imports, still segfaulting (on both linux & unix) as soon as we hit the test suite. CC @tkralphs |
My bandwidth for looking into this is still pretty limited and my opinion is still that if this is useful for the community and we want to get it out there, we should just he happy with an import test for the time being. The package is working fine for the vast majority of people and it's clear that tests are failing in parts of the code that hardly anyone cares about. Unfortunately, I have to allocate my open source development time wisely and given that CyLP now has wheels for most platforms and |
I mean, I'd be fine with skipping a couple niche broken tests, but that would be something that's failing in python. A segfault is a sign of a major problem, and I'm not in favour of publishing anything with issues of that magnitude. It's great that cylp is installable through pip, yet those segfaults could very well be happening in the pip package as well (especially if installed in an environment with other conda-forge dependencies). If we cannot rely on a sensible test suite, we test nothing, and as the old programming adage goes: what's not tested is broken. We've also known about the segfaults since almost 1.5 years already, so I don't know how to further underline the importance of this. It's in the interest of the users of cylp users (whether through pip or conda-forge) to fix this. |
Hi friend! We really, really, really appreciate that you have taken the time to make a PR on In an effort to maintain this repository and increase the signal-to-noise for open PRs, the maintainers of If you'd like to keep it open, please comment/push and we will be happy to oblige! Note that very old PRs will likely need to be rebased on Cheers and thank you for contributing to this community effort! |
Not stale |
Checklist
url
) rather than a repo (e.g.git_url
) is used in your recipe (see here for more details).Saw a package I didn't yet know in the list of interfaces for cvxpy, and wanted to package it. Interestingly (AFAICT), the underlying library already has been packaged for conda-forge already, but not the python bindings.
CC @conda-forge/cvxpy @conda-forge/coin-or-cbc