Greetings all,
I have downloaded the 0.15 release of abcl from the official site, to use it in a side-project at work. I found out that the archive does not contain the src/org/armedbear/lisp/scripting directory, where the JSR-223 stuff resides. Worse, the archive does contain the META-INF/services/javax.script.ScriptEngineFactory, so when built the jar actually declares it contains a JSR-223 implementation, but it does not. How is the archive built? I think I saw tasks in the Ant-based build file to zip the source, maybe those don't include the scripting/ directory. If that is the case, I can fix it for build.xml. I don't know how the Lisp based build works, though.
Alessio
On 8/27/09 6:33 PM, Alessio Stalla wrote:
Greetings all,
I have downloaded the 0.15 release of abcl from the official site, to use it in a side-project at work. I found out that the archive does not contain the src/org/armedbear/lisp/scripting directory, where the JSR-223 stuff resides. Worse, the archive does contain the META-INF/services/javax.script.ScriptEngineFactory, so when built the jar actually declares it contains a JSR-223 implementation, but it does not. How is the archive built? I think I saw tasks in the Ant-based build file to zip the source, maybe those don't include the scripting/ directory. If that is the case, I can fix it for build.xml. I don't know how the Lisp based build works, though.
Ant-based, aka build.xml, is the way we build releases, as far as I know, as the Lisp based build currently doesn't have the necessary features. It makes sense that we use a build process that is reproducible by developers, by adding some verification steps to build.xml, so we can all test the results.
From examining 'build.xml' (i.e. without testing) it appears that using these source targets on Java5 will falsely include the 'META-INF/services/javax.script.ScriptEngineFactory' in the JAR even when compiling in the absence of JSR-223 support. So, I think the abcl-src-0.15 release was made with Java5, which would explain this behavior.
If we can confirm that using a JSR-223 enabled abcl.jar doesn't cause any problems running in Java5 without JSR-223 classes present, we can just ship these classes with future releases. I think the references to JSR-223 from the org.armedbear.lisp package are all soft (i.e. there are no direct references in Java), so there should actually be nothing that breaks Java5 with such a release such as "Class not found errors" as long as nothing tries to use the JSR-223 code. We have to test this, and maybe Alessio can give some feedback.
We should probably then
a) fix 'build.xml' to not include any scripting artifacts when compiled with java5 in the absence of JSR-223
b) change the source archive targets to complain if Java6 is not used to make a release
c) use Java6 to make a release
d) Test that this release works in both Java5/Java6
On Fri, Aug 28, 2009 at 7:52 AM, Mark Evensonevenson@panix.com wrote:
On 8/27/09 6:33 PM, Alessio Stalla wrote:
Greetings all,
I have downloaded the 0.15 release of abcl from the official site, to use it in a side-project at work. I found out that the archive does not contain the src/org/armedbear/lisp/scripting directory, where the JSR-223 stuff resides. Worse, the archive does contain the META-INF/services/javax.script.ScriptEngineFactory, so when built the jar actually declares it contains a JSR-223 implementation, but it does not. How is the archive built? I think I saw tasks in the Ant-based build file to zip the source, maybe those don't include the scripting/ directory. If that is the case, I can fix it for build.xml. I don't know how the Lisp based build works, though.
Ant-based, aka build.xml, is the way we build releases, as far as I know, as the Lisp based build currently doesn't have the necessary features. It makes sense that we use a build process that is reproducible by developers, by adding some verification steps to build.xml, so we can all test the results.
From examining 'build.xml' (i.e. without testing) it appears that using these source targets on Java5 will falsely include the 'META-INF/services/javax.script.ScriptEngineFactory' in the JAR even when compiling in the absence of JSR-223 support. So, I think the abcl-src-0.15 release was made with Java5, which would explain this behavior.
If we can confirm that using a JSR-223 enabled abcl.jar doesn't cause any problems running in Java5 without JSR-223 classes present, we can just ship these classes with future releases. I think the references to JSR-223 from the org.armedbear.lisp package are all soft (i.e. there are no direct references in Java), so there should actually be nothing that breaks Java5 with such a release such as "Class not found errors" as long as nothing tries to use the JSR-223 code. We have to test this, and maybe Alessio can give some feedback.
Using a JSR-223 enabled abcl.jar with Java 5 cannot possibly cause any problem, because all the JSR-223 code is self-contained and never called by the rest of abcl, in fact it is a kind of wrapper around Interpreter and other abcl classes. You will have errors only if you try to instantiate one of the JSR-223 classes.
We should probably then
a) fix 'build.xml' to not include any scripting artifacts when compiled with java5 in the absence of JSR-223
Right, I can do that. I wasn't aware that build.xml was used for releases too when I added JSR-223 to it.
b) change the source archive targets to complain if Java6 is not used to make a release
c) use Java6 to make a release
d) Test that this release works in both Java5/Java6
Ok. I'll do all this and make some tests. Independent testing by someone else would be useful, I think. Does the 0.15 release lie in its own branch? If not, how can we backport the changes to build.xml to it?
Bye, Alessio
On 8/28/09 9:07 AM, Alessio Stalla wrote: […]
a) fix 'build.xml' to not include any scripting artifacts when compiled with java5 in the absence of JSR-223
Right, I can do that. I wasn't aware that build.xml was used for releases too when I added JSR-223 to it.
I committed a fix as [svn r12121][1] (our messages crossed in passing). If you could look at this, I think we are ok.
[1]: http://trac.common-lisp.net/armedbear/changeset/12121
b) change the source archive targets to complain if Java6 is not used to make a release
c) use Java6 to make a release
d) Test that this release works in both Java5/Java6
Ok. I'll do all this and make some tests. Independent testing by someone else would be useful, I think.
I just finished testing under Mac OSX with the Apple Java VMs that a jar built with Java6 (and JSR-223 code) works with Java5. With your assurance about the separate nature of the JSR-223 codebase, I think we're pretty safe on this, but further testing would be welcome.
Does the 0.15 release lie in its own branch? If not, how can we backport the changes to build.xml to it?
Would you really go for a 0.15.1 release? I would be more for starting the 0.16 release process soon. The only problem there, is that I suspect that Erik is going to be real busy in September (personal reasons). There is a branch for 0.15 ("branches/0.15.x/abcl"), so backporting the changes shouldn't be much of problem. Making a release might be a bit tricky, because I think only Erik has the necessary authorization rights for pushing files onto Sourceforge. Or maybe Ville can do that? Alternatively, we could host the ABCL release on GoogleCode under my abcl-dynamic-install project (I already host pre-built 0.15 abcl.jar's there linked from the Cliki page.
armedbear-devel@common-lisp.net