10.08.2013, 12:25, "Mark Evenson" evenson@panix.com:
That being said, I will endeavor to incorporate your patch in a way which maintains compatibility into trunk in the next few days.
Other than a hack 'n slash (IF old-maven new-maven) job, I wonder if there is a more elegant way to deal with the package change. My gut feeling is that I would need to re-organize the code so substantially, that I would then have to chase down bugs from that reorg. If it were just a simple renaming of package, I think I could whip up an appropiate macro, but from looking at your patch, it seems that there are a couple behavioral API changes as well.
Anyone have any elegant ideas on how to maintain compatibility with both versions of Aether or point to an example of something clever that I can study for inspiration?
What if we then keep contrib/abcl-asdf/maven-embedder.lisp (mostly) unchanged, and just put new code into maven-3.1-embedder.lisp, giving it a separate package.
Then we have
(defmethod abcl-asdf::resolve ((string string)) (if (version> (mvn-version) "3.1") (maven-3.1-embedder:resolve string) (maven-embedder:resolve string))
So, the only thing to factor-out is maven version testing.
After doing so, we can keep old versoin of maven-embedder immutable forever, thug avoiding testing and bugs in it.
If someday (some years later) we decide the old maven support is not relevant anymore, we can just delete the maven-embedder.lisp