Luís Oliveira wrote:
That of course is a more general problem that should be solved with something like this: http://paste.lisp.org/display/45282.
I have seen plenty of people taking advantage of the fact that CFFI-UFFI-COMPAT can easily be used as a drop-in replacement for UFFI. I have never seen anyone trying to use CFFI-UFFI-COMPAT and UFFI simultaneously and I strongly suspect you don't actually have that need either.
If for some reason you do need that, it's fairly straightforward to use RENAME-PACKAGE to remove CFFI-UFFI-COMPAT's UFFI nickname.
You are absolutely right - I don't have that need. And so far as I know, elephant doesn't either, but I haven't dug into their code. I'm just trying to install it to evaluate it. And I have many packages installed already that use the CFFI-UFFI-COMPAT capability.
Both UFFI and CFFI have a right to exist. The gcc analogy isn't valid - these aren't compilers that users expect to be substituting one for another. It doesn't matter that the CFFI people don't like the style of code writing that goes on in the ELEPHANT group.
By "the CFFI people" I presume you mean me, since the other CFFI developers haven't joined the discussion. I never said I didn't their code style.
Sorry, if I offended you - I didn't mean to offend anybody. I am new to this list and don't know who the developers are. I used the term "CFFI people" as a general term to refer to whoever it was on the list who was criticizing the elephant code rather than deal with the problem which I believe was created here by a using the uffi.asd name which was bound to lead to confusion in installations. I think if you asked any randomly 100 selected users _not_ involved in either of these groups, 98 of them would side with me on this.
They chose to use UFFI for whatever reason and should have the right to expect that some other development group won't break their code via the ASDF package system unless there is a dependency relationship.
How are we breaking their code? Just don't use CFFI-UFFI-COMPAT. If I just rename the system, Elephant/clbuild won't work either. That was my first concern.
I don't understand this comment. Please explain. Elephant isn't trying to use it. It depends on UFFI which wants to see uffi.asd in asdf:*central-registry*. But when it goes there, it gets diverted to your version which breaks it.
Yet, I have other codes - many - which use CFFI, so I don't want to remove that. Its a great package. What does that have to do with clbuild?
Since UFFI came up with the name first, I believe most people would agree they have a prior right to the name.
Nobody is arguing that.
I think you should change the name of your file to uffi-cffi-compat.asd
Like I said, I have no problem with that and I agree that it's the best way in principle. However, I have a couple of concerns that I've mentioned in my previous email which you decided to ignore and instead paint this as some personal conflict between the UFFI and CFFI developers. That was unfortunate.
Sorry, I'm not trying to paint a conflict, and certainly nothing of a personal nature. I'm just trying to get this resolved in what I think is the right way. I can't see anyway to resolve that doesn't involve some pain somewhere. I'm trying to take the long view, and in my opinion, the long view should be to improve the utility of Common Lisp, not UFFI or CFFI.
I don't see how you can argue that anyone should be able to set up a package so that when using common automated methods to create links from asd files it effectively masks another group's package is reasonable. As someone pointed out, it can be worked around, but only by excluding one link altogether, which is just as draconian and undesirable. If you would just name it something unique, they could both coexist and anyone could chose what they wanted to use.
Then, inform your users of the fact, and if they were relying on an implicit use of CFFI in place of UFFI they should change their projects to explicitly use CFFI by way of this definition file.
Not sure if this is what you mean, but some projects do indeed already use cffi-uffi-compat explicitly (e.g., Edi Weitz's CL-GD uses it in order to support CLISP.) but others don't, namely CL-SQL.
Bottom line is, if I rename CFFI's uffi.asd, it'll just break a bunch stuff within clbuild and Elephant still won't work out of the box. I don't see how that could be regarded as an improvement.
I would be glad to work with you to solve the problem, but renaming uffi.asd is clearly not the first step.
What, specifically, will break if you rename uffi.asd to cffi-uff-compat.asd? One solution would be to contact cl-sql devs and tell them you are going to change it. Give them a heads up. I'm guessing Edi already saw the potential problem and used the unique name in advance. Can you think of a single other package?
And, elephant works just fine out of the box so far as their claims go - if I rename your compatibility definition file something else.
--Jeff Cunningham