18.11.2013, 08:02, "Robert P. Goldman" rpgoldman@sift.info:
Anton Vodonosov wrote:
18.11.2013, 07:50, "Robert P. Goldman" rpgoldman@sift.info:
Are you saying now that version 1.0.0 of Closer-MOP will satisfy the  requirement of 0.55, and that Anton should *not* be having this build  failure.
Robert, build failures happen on older ASDF, and not happen on newer ASDF.
Well this certainly was not an ASDF change I was consulted about or approved of.
It has happened right before ASDF maintenance was transferred to you, maybe even during the transition. See the mailing thread mentioned by Xach: http://thread.gmane.org/gmane.lisp.asdf.devel/3062/focus=3066
From this thread I understand that ASDF uses the same version-satisfies
for determining compatibility between ASDF versions, and for determining if an ASDF system satisfies the :depends-on ((:version ...)).
OK, so we clarified what happened with :version dependencies semantics.
Now we can think what should we do with the failures, if we should.
Note, the load failures do not happen with the most recent version of ASDF. Only with elder versions (which are still deployed together some Lisps, including the last releases of ECL, CLISP, CCL).
The ASDf systems depending on moptilities: "hu.dwim.perec" "hu.dwim.perec+hu.dwim.quasi-quote.xml" "hu.dwim.perec+iolib" "hu.dwim.perec+swank" "hu.dwim.perec.all" "hu.dwim.perec.oracle" "hu.dwim.perec.postgresql" "hu.dwim.perec.sqlite" "metacopy" "metacopy-test" "metacopy-test-with-contextl" "metacopy-with-contextl" "metatilities" "metatilities-test" "moptilities-test" "simple-blog" "tinaa" "tinaa-test" "weblocks" "weblocks-clsql-demo" "weblocks-demo" "weblocks-demo-popover" "weblocks-elephant" "weblocks-elephant-demo" "weblocks-memory" "weblocks-postmodern" "weblocks-prevalence" "weblocks-s11" "weblocks-store-test" "weblocks-stores" "weblocks-test" "weblocks-tree-widget" "weblocks-util" "weblocks-utils" "weblocks-yarek" "weblocks-yui"
I wonder, what exactly the moptilities author meant when declared :depends-on ((:version :closer-mop "0.55")))
- did he mean moptilities should only load with closer-mop 0.55? - or he meant only with closer-mop version >= 0.55? - or he meant moptiltiies should only load with closer-mop version "API compatible with 0.55" - or he didn't want to affect the asfd:load-op at all and just meant the declaration as a hint for the user?
I must say I am surprised ASDF implements some dependency version management. It is not a widely known feature.
I have even checked ASDF manual from 2009-08 http://web.archive.org/web/20090801104323/http://common-lisp.net/project/asd... , 7 month after moptilities introduced the :version dependency.
The manual says: "the :version, :author, description and other [defsystem] fields are not required but they provide documentation and information for people that want to use this system. It also says in the section about asdf:operate: "If a version argument is supplied, then operate also ensures that the system found satisfies it using the version-satisfies method."
From some other places in the manual we can even guess how version-satisfies work.
Still, I think it was too much to expect from closer-mop to encode API compatibility information in the version identifier. Note also, in 2009 ASDF didn't consider version "0.6" as satisfying requirement for "0.55": http://lists.common-lisp.net/pipermail/moptilities-devel/2009-December/date....
So, I think maybe the best fix is to remove :version from the dependency specification in metatilities.asd
Also, as we speak about versioning, I have been trying to use semantic versioning as described at http://semver.org/ and I don't think it is a silver bullet - it doesn't solve all problems.
Best regards, - Anton
I have posted the problem description together with possible solutions to the moptilities and closer-mop projects: https://github.com/gwkkwg/moptilities/issues/1 http://sourceforge.net/p/closer/mailman/message/31656992/