[kaffe] Free Java @ FOSDEM 2011 - CFP extended to 17 December!
All: We already have some awesome proposals... but we want MORE! So we're giving you a little more time to get those talk proposals in. We have reserved some slots for quick lightning talks (5 min), these can be done spontaneously at the event, but please do let us know if you are attending and will likely want to do one, even if you are not 100% sure yet. That way we can better schedule the time slots. If you don't want to give a talk, but want to support speakers attending the Free Java devroom at FOSDEM 2011, please see our sponsoring campaign: http://pledgie.com/campaigns/14110 Original announcement with adjusted dates follows: Join us at FOSDEM 2011 to be part of our sessions where we'll discuss the state of Free Java! http://wiki.debian.org/Java/DevJam/2011/Fosdem Our theme is Java Sans Frontières * Why Free Java technology is awesome * Standing on the Shoulders of Free Java * The future of Free Java The Call For Participation is OPEN NOW, but closes on the 17th of December... So send in a talk proposal today and join us in Brussels 5-6 February! Why FOSDEM? * Engage in scintillating discussions with smart hackers over world famous Belgian Beer * Join the Web of Trust by getting your strong new key signed * Indulge in exquisite chocolate * Visit historic Brussels within walking distance Why the Free Java DevJam? * This is the most significant non-commercial, neutral environment for Java developers to meet * Learn how to get involved in technical Free Java projects * We will not shy away from politics (especially this year)! * We will get together for an awesome dinner * You will meet historic hackers in the evolution of Free Java Please join the freejava-devr...@lists.fosdem.org list for general discussion about the event. http://lists.fosdem.org/mailman/listinfo/freejava-devroom To submit a formal Talk Proposal follow the guidelines at http://wiki.debian.org/Java/DevJam/2011/Fosdem/CallForParticipation Respectfully, Andrew Haley GCJ Maintainer, GNU Classpath, IcedTea OpenJDK Developer. Andrew John Hughes IcedTea Maintainer, GNU Classpath Maintainer, OpenJDK GCJ Developer Christian Thalinger OpenJDK developer, former CACAO Maintainer Mark Wielaard GNU Classpath Maintainer, GCJ, IcedTea OpenJDK contributor. Tom Marble Java Libre hacker, Former OpenJDK Ambassador ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] CFP Free Java @ FOSDEM 2011 - ends this week
All: The CFP will end this week. So please submit your ideas for Free Java @ FOSDEM 2011 to fos...@developer.classpath.org ASAP. Join us at FOSDEM 2011 to be part of our sessions where we'll discuss the state of Free Java! http://wiki.debian.org/Java/DevJam/2011/Fosdem Our theme is Java Sans Frontières * Why Free Java technology is awesome * Standing on the Shoulders of Free Java * The future of Free Java The Call For Participation is OPEN NOW, but closes on the 3rd of December... So send in a talk proposal today and join us in Brussels 5-6 February! Why FOSDEM? * Engage in scintillating discussions with smart hackers over world famous Belgian Beer * Join the Web of Trust by getting your strong new key signed * Indulge in exquisite chocolate * Visit historic Brussels within walking distance Why the Free Java DevJam? * This is the most significant non-commercial, neutral environment for Java developers to meet * Learn how to get involved in technical Free Java projects * We will not shy away from politics (especially this year)! * We will get together for an awesome dinner * You will meet historic hackers in the evolution of Free Java Please join the freejava-devr...@lists.fosdem.org list for general discussion about the event. http://lists.fosdem.org/mailman/listinfo/freejava-devroom To submit a formal Talk Proposal follow the guidelines at http://wiki.debian.org/Java/DevJam/2011/Fosdem/CallForParticipation Respectfully, Andrew Haley GCJ Maintainer, GNU Classpath, IcedTea OpenJDK Developer. Andrew John Hughes IcedTea Maintainer, GNU Classpath Maintainer, OpenJDK GCJ Developer Christian Thalinger OpenJDK developer, former CACAO Maintainer Mark Wielaard GNU Classpath Maintainer, GCJ, IcedTea OpenJDK contributor. Tom Marble Java Libre hacker, Former OpenJDK Ambassador ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Free Java @ FOSDEM 2011 DevRoom Proposal
On Mon, 2010-10-11 at 14:08 +0200, Mark Wielaard wrote: Hi Libre Java Hackers, We are trying to organize a meeting for all free java hackers at Fosdem in Brussels, Belgium on Saturday 5 and Sunday 6 February 2011) http://fosdem.org/2011/ We have applied for a developer room, but we don't know yet if there will be enough free space this year (Fosdem is getting very popular). The FOSDEM organization has granted us a developer room! We will do an official call for participation soon. But feel free to propose ideas already to fos...@developer.classpath.org. And see if you can make it the first weekend in February to Brussels. The event itself will be free (as in beer). See http://fosdem.org/ Sincerely, Andrew Haley, Andrew John Hughes, Christian Thalinger, Mark Wielaard, and Tom Marble ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Free Java @ FOSDEM 2011 DevRoom Proposal
Hi Libre Java Hackers, We are trying to organize a meeting for all free java hackers at Fosdem in Brussels, Belgium on Saturday 5 and Sunday 6 February 2011) http://fosdem.org/2011/ We have applied for a developer room, but we don't know yet if there will be enough free space this year (Fosdem is getting very popular). Every request will receive an email around 2010-10-23 with an approval or reject of your Developer Room proposal. Details on further proceedings will then be communicated swiftly. So we will know for sure in two weeks. For those that want to start thinking about attending, or even submitting a talk proposal, here are the details of the devroom proposal. The organisation committee can also be reached at fos...@developer.classpath.org devroom name: Free Java developer room The Libre Java community goes well beyond a single project. In this devroom, we intend to provide a forum for many related core java projects to exchange ideas and plan for the future of implementations of Free Java on GNU/Linux and other free operating systems. This coming year, with JDK 7 due to make an appearance, our goal is to provide a venue for the developers and users of the Free Java projects (listed below) to collaborate and discuss on a range of topics from virtual machines through to deployment on FOSS operating systems. While our main focus is traditionally on the JDK, we are excited about hearing from new and exciting Free Java projects from across the spectrum. In particular we would love to see submissions about porting Java to small spaces or different architectures (e.g. ARM, MIPS, etc) and how to implement alternate languages on the JVM (e.g. Clojure, JRuby, Scala, etc.). The Libre Java developer room will be a collaboration between: - OpenJDK http://openjdk.java.net/ - IcedTea http://icedtea.classpath.org/ - GNU Classpath http://www.gnu.org/software/classpath - GCJ http://gcc.gnu.org/java/ And other projects around Free Java. preferred day: Saturday from 12:00 to 18:00 comments/remarks: Over the past several years, we have used FOSDEM as a unifying conference to bring the various communities around Free Java closer together, and it has become a central point in our calendar for us to meet, share ideas and plan for the future. We are very grateful for the opportunity that FOSDEM gives us to unite our respective projects and work towards a Free Java for everyone. Over the years, our developer room has proved very popular, among both developers and interested users alike, across both days of the conference and if possible, we would like to come together again at FOSDEM and have a gathering in a developer room. Organisers: - Andrew Haley a...@redhat.com GCJ Maintainer, GNU Classpath, IcedTea OpenJDK Developer. - Andrew John Hughes gnu_and...@member.fsf.org / ahug...@redhat.com IcedTea Maintainer, GNU Classpath Maintainer, OpenJDK GCJ Developer - Christian Thalinger christian.thalin...@oracle.com OpenJDK developer, former CACAO Maintainer - Mark Wielaard m...@klomp.org GNU Classpath Maintainer, GCJ, IcedTea OpenJDK contributor. - Tom Marble tmar...@info9.net Java Libre hacker, Former OpenJDK Ambassador ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Final Program Free Java Meeting at Fosdem - Brussels, Belgium on 7 and 8 February 2009
Hi all, In less than 2 weeks our little big event will take place! The program for our libre java meeting at Fosdem has been finalized. There are posters with a summary of the talks to print out at: http://www.klomp.org/mark/classpath/fosdem09/poster_09.odg http://www.klomp.org/mark/classpath/fosdem09/poster_09.pdf Talk abstracts and bios of the speakers can be found at: http://fosdem.org/2009/schedule/devroom/freejava The wiki has some pointers to extra activities: http://wiki.debian.org/Java/DevJam/2009/Fosdem Including a dinner on Saturday night. Please add yourself if you want to attend before Wednesday, January 28th Hoping to see you all there, your friendly ad hoc Fosdem meeting committee, Dalibor Topic, Andrew John Hughes, Andrew Haley, David Herron and Mark Wielaard ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Program Free Java Meeting at Fosdem - Brussels, Belgium on 7 and 8 February 2009
Hi all, We finally have a preliminary program for our libre java meeting at Fosdem. There were a lot of submissions and we tried to do our best to make an interesting schedule to discuss the wide spectrum of work that is being done. Hope you like it: Preliminarily Fosdem Libre-Java developer room program -- Fosdem 2009, Brussels, Belgium ULB Campus Solbosh - room AW1.120 Saturday, 7 February: 12:15 - 13:45 - OpenJDK status and future (1.5 hours, 30 min/talk) Mark Reinhold Joe Darcy - The state of OpenJDK, OpenJDK6 - Project Jigsaw - Small Language Changes (15 minute break) 14:00 - 15:30 - IcedTea, Plugin and Jalimo (1.5 hours, 30 min/talk) Lillian Angel, Deepak Bhole, Robert Schuster - The state of IcedTea - The IcedTea Plugin - Jalimo: Cross-compiling OpenJDK using IcedTea and OpenEmbedded (15 minute break) 15:45 - 17:45 - Graphics Sound (2 hours, 30 min/talk) Roman Kennke and Mario Torre, Guillaume Legris, Clemens Eisserer, Karl Helgason - Caciocavallo - OpenGL ES to boost embedded Java - XRender Java2D Pipeline - Gervill Software Synthesizer Sunday, 8 February: 10:00 - 11:30 VM Rumble (1.5 hours, 20 min/talk) Guennadi Liakhovetski, Nicolas Geoffray, Ian Rogers, Terrence Barr - Porting a Java VM to a Hardware Accelerator - VMKit - Jikes RVM 3 - PhoneME CLDC and CDC VMs (15 minute break) 11:45 - 13:15 It ain't Java (yet) (1.5 hours, 30 min/talk) Matthias Schmidt, Remi Forax, Alex Buckley - Groovy Grails for NetBeans - JSR292 - Supporting Dynamically Typed Languages - Towards a Universal VM (45 minute lunch break) 14:00 - 15:30 - VMRumble continued (1.5 hours, 20 min/talk) Robert Lougher, Michael Starzinger, Levente Santha, Gary Benson - JamVM - Cacao - JNode - Zero/Shark (15 minute break) 15:45 - 17:00 Distros/Community/Infra/Legal (1.25 hours, 24 min/talk) Petteri Raty, Ray Gans, Terrance Barr - Recruiting people to FOSS Java projects (distros/Gentoo) - OpenJDK Community Priorities - Pure GPL - Is it still up to date We will soon publish the full final program with the abstracts of each talk. Hoping to see you all there, your friendly ad hoc Fosdem meeting committee, Dalibor Topic, Andrew John Hughes, Andrew Haley, David Herron and Mark Wielaard ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Free Java Meeting at Fosdem - Brussels, Belgium on 7 and 8 February 2009
Hi all, Our Fosdem meeting is approaching quickly. http://fosdem.org/2009/ - February 7 and 8 in Brussels, Belgium. DEADLINE FOR SUBMITTING TALKS IS END OF THIS WEEK (see below). This is what will be at our disposal: - the room AW1.120 with a capacity of 74 seats (in the building AW), - on Saturday 2009-02-07 from 12:00 to 18:00 and - on Sunday 2009-02-08 from 09:00 to 17:00 - a video projector with VGA cable - Internet connectivity (wifi A and B only, no wired) This is what we need from you: - Talk proposals and abstracts for activities. Please submit these BEFORE Saturday January 10! Either by emailing the Fosdem meeting committee at: fosdem2...@developer.classpath.org Or adding your proposal to the wiki: http://wiki.debian.org/Java/DevJam/2009/Fosdem Hoping to see you all there, you friendly ad hoc Fosdem meeting committee, Dalibor Topic, Andrew John Hughes, Andrew Haley, David Herron and Mark Wielaard ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Free Java Meeting at Fosdem - Brussels, Belgium on 7 and 8 February 2009
Hi all, On Mon, 2008-11-17 at 19:53 +0100, Mark Wielaard wrote: Since we always have so much fun meeting each other at Fosdem we have again applied for a Developer Room at Fosdem early next year. This year Fosdem will be taking place in Brussels, Belgium on Saturday 7 and Sunday 8 February 2009. FOSDEM '09 is a free and non-commercial event organized by the community, for the community. Its goal is to provide Free and Open Source developers a place to meet. http://fosdem.org/2009/ We should know early next week if a developer room is available. If so we will start collecting ideas for activities. If there isn't a developer room available we will figure out something else. There were a lot of submissions this year, so it took the Fosdem organisation some time to go through them all. But I am happy to announce: The Free Java devroom request for FOSDEM 2009 (7+8 February) has been accepted. Details will follow (deadline for schedule, information we need for the schedule, room capacity, etc...). Welcome aboard, and thanks for your participation in FOSDEM 2009 :) Hope to see you there, you friendly ad hoc Fosdem meeting committee, Dalibor Topic, Andrew John Hughes, Andrew Haley, David Herron and Mark Wielaard ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Free Java Meeting at Fosdem - Brussels, Belgium on 7 and 8 February 2009
Hi all, Since we always have so much fun meeting each other at Fosdem we have again applied for a Developer Room at Fosdem early next year. This year Fosdem will be taking place in Brussels, Belgium on Saturday 7 and Sunday 8 February 2009. FOSDEM '09 is a free and non-commercial event organized by the community, for the community. Its goal is to provide Free and Open Source developers a place to meet. http://fosdem.org/2009/ We should know early next week if a developer room is available. If so we will start collecting ideas for activities. If there isn't a developer room available we will figure out something else. Hope to see you there, you friendly ad hoc Fosdem meeting committee, Dalibor Topic, Andrew John Hughes, Andrew Haley, David Herron and Mark Wielaard ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Removed GMP math?
Hi Dalibor, On Thu, 2008-02-28 at 14:16 +0100, Dalibor Topic wrote: I removed them myself, so I offer to produce a patch for you against the 1.1.9 source tarball, that adds Kaffe's GMP code back in, rather then reverting the commit. If you could post that somewhere that would be nice. Then people can compare that with what is in GNU Classpath and possibly suggest improvements for the classpath version. Thanks, Mark ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Get ready for Fosdem - Free Java Meeting
In just two weeks, 22 and 23 February, the Free Java Meeting will take place during Fosdem in Brussels, Belgium. There is a dynamic program with lots of (short) talks and space for discussions on the state of the various free java projects, mobile java, the VM and the Distro Rumble, the free java factory, cool stuff, freedom, compatibility, community and planning all the exciting stuff we are going to do together in the next year. So if you are interested in Debian-java, GNU Classpath, OpenJDK, JikesRVM, Fedora-java, IKVM.NET, JamVM, Jalimo, MobileEmbedded, Kaffe, Gentoo-java, IcedTea, JNode, MIDPath, FBToolkit, Brandweg, Duchess, IcePick, HotSpot, Zero, Ubuntu-java, and much, much more. Then please come and join us. More information on the program, who will be there and other activities at http://fosdem.org/2008/schedule/devroom/freejava and http://wiki.debian.org/Java/DevJam/2008/Fosdem Best of all, it is all free. You only have to pay the beer yourself *) Hope to see you all there! *) FOSDEM '08 is a free and non-commercial event organized by the community, for the community. Its goal is to provide Free Software and Open Source developers a place to meet. http://fosdem.org/ ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Free Java Meeting @ FOSDEM 2008 - Confirmed
Hi All, We got confirmation of the Fosdem organizers and they granted us a developer room during Fosdem 2008! http://fosdem.org/2008/ Saturday and Sunday 23-24 February in Brussels, Belgium. Note that to add your name or ideas for the program to http://wiki.debian.org/Java/DevJam/2008/ you will need to register on the Debian wiki as a user first http://wiki.debian.org/UserPreferences before you are allowed to edit the page. Cheers, Mark ---BeginMessage--- All: It's time to finalize our proposal for FOSDEM 2008. What was previously known as the Escape the Java Trap event and last year we called the GNU Classpath+OpenJDK DevJam will this year be the Free Java Meeting. Each project should have an introduction, but it may make most sense to organize the sessions around topics with cross-project interest (e.g. Virtual Machines, Architectures + Porting, Modularity, Packaging, etc.) Please add/correct/elaborate on the ideas for the Program here: http://wiki.debian.org/Java/DevJam/2008/Fosdem#Program Sponsorship is still to be determined, but it was very useful last year to have everyone that is planning to attend sign up so we have a sense of size/interests, etc. Please sign up now! On Wednesday this week (at the latest) we'll submit the formal proposal for a DevRoom (and then try to define specific time blocks). Thanks! --Tom ---End Message--- ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: kaffe + classpath 0.95 (Was: Re: kaffe 1.1.8 (Was: Re: [kaffe] Future directions for Kaffe))
Hi Dalibor, On Wed, 2007-06-13 at 23:49 +0200, Dalibor Topic wrote: Unfortuntely, there is one VM Interface change that (I assume) makes it hard to support both 0.93 and 0.95 (VMTimezone), so I think we should stay with 0.93 for the 1.1.8 release, and kick out a 1.1.9 soon afterwards. Meanwhile, it wouldn't hurt to get Kaffe added to builder.classpath.org, now that it supports the 'separate classpath' feature that JamVM Cacao support. Mark, can you take care of that? Very cool! Yes, I can take care of that, but it will take a couple of days, so ping me again next week if it isn't done yet. Or you could look at the builder scripts in CVS yourself: http://sources.redhat.com/cgi-bin/cvsweb.cgi/builder/scripts/?cvsroot=mauve Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] ./configure not finding X
Hi Steve, On Wed, 2007-05-30 at 16:53 -0400, Stephen Winiecki wrote: checking for X... no configure: error: GTK+ peers requested but no X library available configure: error: /bin/sh './configure' failed for libraries/javalib/external/classpath Can anyone surmise why the check for X would be failing - or things to look for? The config.log file might have more clues about which check was run and how it failed. Cheers, Mark ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Re: Who made Open Source Java real
On Thu, 2006-11-16 at 17:08 +0100, Dalibor Topic wrote: I largely blame Mark Wielaard's efforts to bring the different efforts together under one umbrella, and reach out to everyone else working on this. :) He's just plain awesome, and I'm glad to know him as a friend. Thanks :) You are awesome and a great friend too! And lets not forget all those people who are just happily hacking away on kaffe but don't yell and scream so much. The real heros are down in all those ChangeLog files that come with Kaffe! Cheers, Mark ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Re: F/OSS Java mini-talks during JavaOne
Hi Fernando, On Mon, 2006-05-15 at 05:03 -0200, [EMAIL PROTECTED] wrote: If you happen to be at JavaOne this year, please drop by the java.net community corner. This year we'll have some mini-talks about JPackage, Kaffe, Classpath and other free Java stuff, besides some Sun-sponsored talks. If people see there's interest from the community in Free Software Java projects, next years there'll be more space for us at the conference, and this will help more developers escape the Java trap. Wish I was there. But currently I am trapped in old-Europe. Audrius and I gave presentations in Zwitserland and Germany this month. Audrius setup a page on our wiki where you can find those and some other presentation/promotion material that you should feel free to reuse: http://developer.classpath.org/mediation/ClasspathPresentations There is also our support document which, although a bit dated, is nice because the PDF version can be printed as a 3 page handout and shows how important Compatibility, Correctness and Completeness is for our efforts (something which seems to always be a big theme with the JavaOne crowd): http://developer.classpath.org/support/ And I recently wrote a paper on the current state and GNU/Linux packaging challenges which you can find at: http://www.klomp.org/mark/classpath/lt2006/paper.html Hope some of that material is useful. And GNU Classpath 0.91 One for All, All for One was release yesterday: http://www.gnu.org/software/classpath/announce/20060515.html It is already included in Debian unstable and OpenSuse will hopefully follow today. To give a quick demo you can also just install a recent Ubuntu or Fedora release and show native gcj compiled eclipse, tomcat, openoffice, etc. Have fun, Mark -- Escape the Java Trap with GNU Classpath! http://www.gnu.org/philosophy/java-trap.html Join the community at http://planet.classpath.org/ ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] ppc: mouse keyboard problems with kaffe 1.1.7rc1
Hi Bernhard, On Thu, 2006-03-16 at 20:05 +0100, Bernhard Reiter wrote: Am Mittwoch, 15. März 2006 20:47 schrieb Mark Wielaard: Thanks. I see no key event is ever received by the Frame (this is on x86 for me). I have filed this as bug #26703 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26703 thanks for testing and filing the bug. We still haven't fixed it, but I believe we understand the issue now. See the bug report for some additional comments on where the problem is. Do you happen to know if this ever worked with kaffe in the past? To give you my full history: First I have tried: a) Mandriva (ia586) with their cooker kaffe package, probably Kaffe CVS from CVS (20060204) worked fine for me on the games.yahoo.com/go applets, I believe that this will use the classpath implementation of swing. Nice! I didn't know those worked already. But I am unable to try it against gcjwebplugin since it seems to demand some sort of yahoo id. Next I wanted this on powerpc and tried b) kaffe-1.1.7rc1 (my Debian backport on ppc): The go applet did display fine, but did not receive mouse or key events. Out of curiousiy I went deeper into the problem and thought it might be a ppc related problem, because it seemed to work on ia586 with seemingly the same version. It would be nice if some kaffe hacker could explain the relation between these versions. Which came before the other and what is the default awt implementation for both? Now I was looking at c) running example applications from www.javabuch.de using awt and swing on Debian. I found out that mouse and keyboard events did not work with the default setting, but worked using kaffe's other awt implementation; e.g. with kaffe -Xkaffe-xlib-awt TestKeyEvents . That does make sense. In the GNU Classpath gtk-peer awt implementation a lot of work has been done to support lightweight components (like Free Swing). This is less developed in the old style kaffe xlib-awt framework. But in a couple of places we seem to forgot to check that old-style heavyweight (aka plain awt components) still got the events if the lightweights didn't handle them. Trying to report the presumatley ppc related bug I have now learned: d) There seems to be generic event bugs in classpath for kaffe. Yes, as far as I can see they are not platform specific. The mouse events issue seems to be solved now in a generic way. See: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26641 And know looking closer I also see e) Mandriva has probably packages a CVS version after 1.1.7rc1 of Kaffe. Conclusion: next steps for me would be, i) try to test another version of classpath. I am unsure how to do this with kaffe without a new Debian version, so I might try jamvm, if this is easier on Debian. Or we can try to get kaffe to make a new release! :) Including at least the patch from PR26641. ii) Retest my two testcases for Mandriva. Thanks for all the testing. It (and the testcases) are really helpful. Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] ppc: mouse keyboard problems with kaffe 1.1.7rc1
Hi Bernhard, On Wed, 2006-03-15 at 15:42 +0100, Bernhard Reiter wrote: On Wed, 2006-03-15 at 11:35 +0100, Bernhard Reiter wrote: Yes. If you have a small testcase for the keyboard issue that would be appreciated. I have attached a smal test application. It shows the problem here. Thanks. I see no key event is ever received by the Frame (this is on x86 for me). I have filed this as bug #26703 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26703 Do you happen to know if this ever worked with kaffe in the past? Thanks, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] GNU Classpath friends meeting during Fosdem 2006
GNU Classpath friends meeting during Fosdem 2006. The various free software library, runtimes, compiler and tool projects around GNU Classpath will meet in Brussel to discuss what has happened in the last year in the Free Software community and what the next year will bring us during Fosdem. The 6th edition of FOSDEM (Free and Opensource Software Developers' European Meeting) will take place on February 25+26 2006 in Brussels (Belgium), at the Solbosch Campus of the ULB (Free University of Brussels). FOSDEM is a free and non-commercial event for the community and organized by the community. See http://www.fosdem.org/ The program will be as follows: - Saturday from 13:00 to 17:30 - End-User talks Presentations that show what cool stuff can be done with the Free Stack right now. - Putting the 'Free' into JFreeChart Dave Gilbert, JFreeChart Project Leader A review of the efforts to make JFreeChart work with GNU Classpath-based runtimes, including a brief history, a demonstration of the current state (using the java bindings for Cairo), and an overview of the work that remains to be done. - Using Eclipse for GNU Classpath development Tom Tromey Learn how to setup a fully working development environment based on GNU Classpath in Eclipse that can be used to bootstrap the full free toolchain (and can be used to run Eclipse itself) in just 10 minutes. - Eclipse RCP and GCJ/GIJ Wayne Beaton Eclipse Rich Client Platform (RCP) is a runtime platform for delivering your Java applications on multiple platforms. RCP is far more than just a windowing toolkit; it is rich client middleware that provides a comprehensive framework for building and deploying applications that are modular, extensible, and updatable. The kinds of applications you can build with Eclipse RCP are limited only by your imagination. During this talk, we will discuss how the Eclipse RCP can be used in conjunction with the Eclipse Eco-system and GCJ/GIJ to build high quality applications. If there is time at the end of the day we would like to do a Show-And-Tell where people do quick Demos of applications running on a completely free stack. Ideas and suggestions welcome. - Sunday from 09:00 to 13:00 - Developer talks Presentations of (core) libraries and runtimes that are in progress, made a lot of progress in the last year and are in active development. - Free Swing, past, present and future Roman Kennke An overview of that state of Free Swing one year ago, what has been done in the meantime, what still must be done and which applications work now. - The Free CORBA comes Dr Audrius Meskauskas If the Free world does not want to step back in the battle, we need a complete set of the Free tools for advanced communication over the network. For our CORBA implementation we needed: 1. Free. No classes with restricted license. 2. Fully workable, interoperable and pass tests, recognized by the CORBA user community as serious (we needed to find a well known Free testing suite). 3. Properly commented, being ready for the long life in the Free world. 4. No pressure to use the outdated approaches. CORBA 3.0.3 and jdk 1.5. To reach these goals, we have chosen for implementing a clean room implementation, using the published standard specifications only. During the recent year of the GNU Classpath development, this goal is in large degree achieved. The important directions of future development could be providing features that are outside the scope of the both CORBA standard and Sun API, but included in the near all proprietary implementations (SSH, HTTP and other bridges, get rid of rmic code generator for RMI/IIOP, fault tolerant behavior, reduced the footprint and others). - The JamVM runtime Robert Lougher An overview of the JamVM virtual machine, with comparisons to other GNU Classpath runtimes, and a section on the VM interface. - Integrating Vmgen-based interpreters Christian Thalinger Vmgen is a tool for writing efficient interpreters. The Cacao runtime recently added a Vmgen based interpreter in addition to the JIT engine. - Sunday from 14:00 to 17:30 - The Future Interactive technical hacker discussions on how to integrate the projects more and move forward in the next year. - State of the world, beyond japi Mark Wielaard, GNU Classpath Maintainer After a short overview of the various free stacks, libraries, compilers, tools and runtimes this session is mostly open discussion about what work remains to be done and how to integrate the various efforts better. Ideas for work items welcome. We hope to see you in Brussels on February 25 and 26 2006, If you have suggestions or ideas for the demos and discussion sessions please contact us at [EMAIL PROTECTED
[kaffe] Re: gcj 4.1.x issue
Hi Hanno, On Thu, 2005-12-22 at 13:45 +0100, Hanno Meyer-Thurow wrote: Hi list! First time I send to this list so please be kind! ;) Welcome. This message can almost not be an coincidence. So I am sharing it with that other free runtime initiative kaffe. (See CC.) I try to build apache-ant 1.6.2 with gcj 4.1.0-20051216 with some patches from fedora cvs for pr24899 pr25121 pr25432. The source compiles but executing gij with the class files breaks. I narrowed down the error to a testcase I would say. Java file is attached. # gcj -C DemuxOutputStream.java # gij -cp . DemuxOutputStream Exception in thread main java.lang.IllegalAccessError: DemuxOutputStream: DemuxOutputStream$BufferInfo.buffer at DemuxOutputStream.main (DemuxOutputStream.java:18) The kaffe hackers are tracking something that looks very similar. See the thread starting at: http://pogo.kaffe.org/pipermail/kaffe/2005-December/103649.html There is a strange interplay between the class access modifiers which are emitted by the compiler and how they are (supposed) to be interpreted between the outclass and the inner class. It seems only the outer class access flags should matter during runtime, but the compiler should interpret and emit access flags for the inner class attributes. I have looked a bit around, but don't have a clear picture in my head yet. There is also the following eclipse compiler bug (showing that different compilers output different access flags and/or accessor methods): https://bugs.eclipse.org/bugs/show_bug.cgi?id=77473 Does someone have a complete clear picture? And can we add some shared tests to mauve and/or jacks? This might actually be a little tricky since it seems to interplay with the actual byte code compiler used to emit the class files. So maybe we need a new module based on jasmin (can the verify module help here?) Cheers, Mark import java.io.ByteArrayOutputStream; public class DemuxOutputStream { /** * A data class to store information about a buffer. Such information * is stored on a per-thread basis. */ private static class BufferInfo { /** * The per-thread output stream. */ private ByteArrayOutputStream buffer; } public static void main (String[] args) { BufferInfo test = new BufferInfo(); test.buffer = new ByteArrayOutputStream(); } } signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Re: gcj 4.1.x issue
Hi Hanno, On Thu, 2005-12-22 at 16:48 +0100, Mark Wielaard wrote: The source compiles but executing gij with the class files breaks. I narrowed down the error to a testcase I would say. Java file is attached. # gcj -C DemuxOutputStream.java # gij -cp . DemuxOutputStream Exception in thread main java.lang.IllegalAccessError: DemuxOutputStream: DemuxOutputStream$BufferInfo.buffer at DemuxOutputStream.main (DemuxOutputStream.java:18) In this case it really does seem a bug in gcj -C byte code generation. Since this is a static inner class it should create an (package private) accessor method for the private ByteArrayOutputStream buffer field. (jikes does this correctly btw.) A workaround is to just remove the private flag from the buffer field in this case. Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Re: gcj 4.1.x issue
Hi Tom, On Thu, 2005-12-22 at 09:23 -0700, Tom Tromey wrote: This was PR 19870. We thought it was fixed but perhaps this is a new instance of it. Indeed it is. I added a slight variant of the original example to the bug report and reopened it. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19870 Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] GNU Classpath hacker room at FOSDEM 2006
Hi all, Like the last couple of years we want to come together with all the projects around GNU Classpath and the various free runtimes, compiler and tool projects to discuss what has happened in the last year in the Free Software community and what the next year will bring us during FOSDEM. The 6th edition of FOSDEM (Free and Opensource Software Developers' European Meeting) will take place on February 25+26 2006 in Brussels (Belgium), at the Solbosch Campus of the ULB (Free University of Brussels). FOSDEM is a free and non-commercial event for the community and organized by the community. See http://www.fosdem.org/ We were thinking of the following setup: - Saturday from 13:00 to 17:30 - End-User talks presentations to promote what we all build together to a wider audience that might have heard of what we do, but haven't actually seen it in action/put together. We might also want to have a lightning hour with lots of quick Demos of applications running on a completely free stack (5 - 10 minutes per demo). - Sunday from 09:00 to 12:30 - Developer talks presentations of things that are in progress and that people want to explain in more depth to get developers of the other projects to join in a share the fun. - Sunday from 13:00 to 17:30 - The Future hard core interactive technical hacker discussions on how to integrate the projects more and move forward in the next year. Arnaud Vandyck, Dalibor Topic, Mark Wielaard, Michael Koch and and Tom Tromey will be our program committee this year. If you would like to present something, have an idea for a demo or discussion topic please let us know at fosdem-at-developer.classpath.org Please mention the title, a little abstract, which track and whether you want to do a quick demo, a short 30 min talk or full hour talk (we prefer 30 minute talks to give everybody a chance to present something). Deadline for proposals is December 18, so you have a month to think of something cool. Then we make sure to have some kind of formal program at the start of January. Examples of presentations and reports from previous years: http://www.gnu.org/software/classpath/events/escape_fosdem05.html http://www.gnu.org/software/classpath/events/fosdem04.html Some ideas for interesting topics: - Free Swing - The Demo! - Your GNU/Linux distro and the free runtimes - package overview. - From 0 to 100 in 15 Minutes: Getting started with GNU Classpath development using Eclipse, JamVM, Mauve, and the ChangeLog plugin! - Integrating with Objectweb through native-(gcj)-JOnAS - Writing OpenOffice.org plugins using a free software stack. - Using GNU Classpath/gcj/kaffe for games - Using free runtimes on Wine and other win32 environments - Embedding GNU Classpath in web browsers and support for JNLP - Security Auditing! - 1.5 language support in GNU Classpath, gcjx and the free runtimes - GNU Classpath/OSGi/J2ME/Library splitting and trimming - Harmony through interfacing. - Beyond JAPI: what is needed to really finish GNU Classpath Or, Beyond Java -- what we can do when we finish 1.5. Or more generally some kind of presentation about development metrics: bug rates, rates of change in japi/lines of code/tests, email volume, stuff like that. - Debugging, JDWP development efforts. - etc. Hope to see you in Brussels on February 25 and 26 2006, Arnaud, Dalibor, Mark, Michael and Tom -- Escape the Java Trap with GNU Classpath! http://www.gnu.org/philosophy/java-trap.html Join the community at http://planet.classpath.org/ -- Escape the Java Trap with GNU Classpath! http://www.gnu.org/philosophy/java-trap.html Join the community at http://planet.classpath.org/ signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Adler32
Hi, Just created some Adler32 tests for mauve. It seems there are two bugs in the default kaffe (zlib based) Adler32 implementation. The checksum starts at 1, not 0. And the checksum is an unsigned int returned as long: 2005-09-01 Mark Wielaard [EMAIL PROTECTED] * libraries/javalib/java/util/zip/Adler32.java (Adler32): Set adler to 1. (reset): Likewise. (getValue): Return unsigned int value. With this all the new mauve tests pass. But please check carefully since I didn't find any official adler32 test vectors. Cheers, Mark -- Escape the Java Trap with GNU Classpath! http://www.gnu.org/philosophy/java-trap.html Join the community at http://planet.classpath.org/ signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Quick mauve test
Hi, Since kaffe 1.1.5-rc and gcj/gij 4.0-cvs should now be more or less comparable with respect to the core classes used from GNU Classpath I ran some quick tests against mauve (cvs) for both. In general kaffe wins :) 26843 PASSes against 25875 for gij. This is because kaffe does actually have more recent class libraries in CVS at the moment. Especially the locales support helps the numbers in favor of kaffe. Some failures people might want to look into are reported below. All these tests pass with gij, but FAIL with kaffe. None are probably release stoppers, but in the long run they should be fixed. FAIL: gnu.testlet.java.lang.reflect.Method.invoke: invoke package-private method (number 1) FAIL: gnu.testlet.java.lang.reflect.Field.promotion: byte (number 18) FAIL: gnu.testlet.java.lang.reflect.Field.promotion: int (number 4) FAIL: gnu.testlet.java.lang.reflect.Field.promotion: float (number 4) FAIL: gnu.testlet.java.lang.reflect.Field.promotion: long (number 4) FAIL: gnu.testlet.java.lang.reflect.Field.promotion: double (number 4) FAIL: gnu.testlet.java.io.ObjectStreamClass.Test: getSerialVersionUID (number 3) FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Surrogate Pairs (number 1) FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Surrogate Pairs (number 2) FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Surrogate Pairs (number 3) FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Surrogate Pairs (number 4) FAIL: gnu.testlet.java.io.Utf8Encoding.mojo: Surrogate Pairs (number 5) FAIL: gnu.testlet.java.lang.Class.ClassTest: test_forName (number 10) (In general kaffe seems better to do better with gnu.testlet.java.lang.Class.ClassTest then gij, except for this one.) FAIL: gnu.testlet.java.lang.Integer.getInteger (number 19) FAIL: gnu.testlet.java.lang.Math.max (number 3) FAIL: gnu.testlet.java.lang.Math.max (number 19) FAIL: gnu.testlet.java.lang.Math.min: Small doubles (number 3) FAIL: gnu.testlet.java.lang.Math.min: Small floats (number 3) FAIL: gnu.testlet.java.lang.Math.sin (number 1) FAIL: gnu.testlet.java.lang.Package.getPackage: checking package for 'java.lang' (number 1) FAIL: gnu.testlet.java.lang.String.surrogate (number 1) FAIL: gnu.testlet.java.lang.String.surrogate (number 2) FAIL: gnu.testlet.java.lang.String.surrogate (number 3) FAIL: gnu.testlet.java.lang.Thread.sleep abnormal termination 142 CRASH or TIMEOUT (This hang disappears when run mauve is ran with -verbose...) The gnu.testlet.java.lang.Thread.security10 test seems really bad. 20 of 20 tests failed FAIL: gnu.testlet.java.lang.ref.WeakReference.weakref: contents of weak reference (number 1) gnu.testlet.java.lang.reflect.ReflectAccess has lots of failures, with gij there are none. FAIL: gnu.testlet.java.net.Socket.jdk13 abnormal termination 142 CRASH or TIMEOUT Timeout. Caused by: gnu.testlet.java.net.Socket.jdk13 java.net.SocketException: Unknown socket option at gnu.java.net.PlainSocketImpl.getOption (PlainSocketImpl.java:249) at java.net.Socket.getKeepAlive (Socket.java:1006) FAIL: gnu.testlet.java.nio.ByteBuffer.putDouble (number 1) FAIL: gnu.testlet.java.security.SecureRandom.SHA1PRNG: instances generate same bytes when similarly seeded (number 1) FAIL: gnu.testlet.java.security.SecureRandom.SHA1PRNG: instances generate same bytes when similarly seeded (number 2) I haven't actually looked into why any of the above really fails. But hopefully someone is intrigued by these failures and will investigate a bit more. Cheers, Mark -- Escape the Java Trap with GNU Classpath! http://www.gnu.org/philosophy/java-trap.html Join the community at http://planet.classpath.org/ signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] NumberFormat.getInstance fails
Hi, On Mon, 2005-01-24 at 22:32 +, Ito Kazumitsu wrote: In message [kaffe] NumberFormat.getInstance fails on 05/01/21, Seo Sanghyeon [EMAIL PROTECTED] writes: : == Seo Sanghyeon [EMAIL PROTECTED] writes: : java.lang.IllegalArgumentException: The specified country code is invalid :at java.util.Currency.init (Currency.java:171) :at java.util.Currency.getInstance (Currency.java:262) :at java.text.DecimalFormatSymbols.init (DecimalFormatSymbols.java:151) :at java.text.NumberFormat.computeInstance (NumberFormat.java:327) :at java.text.NumberFormat.getNumberInstance (NumberFormat.java:456) :at java.text.NumberFormat.getInstance (NumberFormat.java:381) This seems to be the same problem that was reported in http://www.kaffe.org/pipermail/kaffe/2005-January/101287.html This should already been fixed in GNU Classpath CVS. Could one of you try to merge in this change? http://developer.classpath.org/compare/classpath-kaffe/compare/java.text.DecimalFormatSymbols.diff Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] CVS kaffe (robilad): Fixed synchronization problems when opening ZipFiles
Hi, On Wed, 2005-01-05 at 14:49 -0800, Kaffe CVS wrote: public ZipFile(String fname) throws IOException { name = fname; - zip = openZipFile0(fname); + /* only have one thread at a time attempt to open the zip file */ + synchronized(fname) { + zip = openZipFile0(fname); + } Note that strings don't have to be unique objects. You might want to do a fname = fname.intern() first to be sure. And depending on how openZipFile0 works (I haven't actually checked) you might want to make sure that it recognizes different paths to the same file correctly. The safest would be to just synchronize on ZipFile.class Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] [gump] NPE using Jar files w/o manifest
On Fri, 2004-12-24 at 15:02 -0600, Adam Heath wrote: Ah, simple. If we can't find the named entry, return null for the input stream. Fix in cvs. hehe. Simple he calls that. For the GNU Classpath implementation we had a lot of debate before we made this change. And basically the only reason to make such a change was for how ant was relying on this behaviour. See this comment in the source code: * This implementation returns null if the requested entry does not * exist. This decision is not obviously correct, however, it does * appear to mirror Sun's implementation, and it is consistant with * their javadoc. On the other hand, the old JCL book, 2nd Edition, * claims that this should return a non-null ZIP entry. We have * chosen for now ignore the old book, as modern versions of Ant (an * important application) depend on this behaviour. See discussion * in this thread: * http://gcc.gnu.org/ml/java-patches/2004-q2/msg00602.html BTW. Maybe it would be a good idea for kaffe to adopt the GNU Classpath java.util.zip implementation. We encountered a lot of subtle issues in this package. Sharing this kind of bugs/fixes with kaffe would be beneficial to both projects. Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] CVS kaffe (robilad): Use pure java XSLT engine by default
Hi, On Tue, 2004-12-07 at 21:35, Mark Wielaard wrote: First patch is for GNU JAXP. Handles the case were ReaderInputStream has too much characters. Here is a new patch. This one is a little bit more efficient if off 0. We used to read just len - off chars in read(byte[] b, int off, int len). But we don't have to be that conservative now. No observable change in behaviour for my tests. The other patch for kaffe is still necessary (since it actually doesn't have anything to do with encoding issues). Cheers, Mark Index: libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java,v retrieving revision 1.3 diff -u -r1.3 ReaderInputStream.java --- libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java 6 Dec 2004 09:02:52 - 1.3 +++ libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java 8 Dec 2004 08:35:26 - @@ -1,6 +1,6 @@ /* * ReaderInputStream.java - * Copyright (C) 1999,2000,2001 The Free Software Foundation + * Copyright (C) 1999, 2000, 2001, 2004 The Free Software Foundation * * This file is part of GNU JAXP, a library. * @@ -54,10 +54,17 @@ private Reader reader; private String encoding; + // Holds extra spillover data if necessary + private byte extra[]; + private int pos; + + private byte extra_marked[]; + private int pos_marked; + public ReaderInputStream(Reader reader) { this.reader = reader; -encoding = UTF-8; +this.encoding = UTF-8; } void setEncoding(String encoding) @@ -68,6 +75,14 @@ public int read() throws IOException { +if (extra != null) + { + int result = extra[pos]; + pos++; + if (pos = extra.length) + extra = null; + return result; + } return reader.read(); } @@ -80,14 +95,40 @@ public int read(byte[] b, int off, int len) throws IOException { -int l = len - off; -char[] c = new char[l]; -l = reader.read(c, 0, l); +if (len == 0) + return 0; + +if (extra != null) + { + int available = extra.length - pos; + int l = available len ? available : len; + System.arraycopy(extra, 0, b, off, l); + pos += l; + if (pos = extra.length) + extra = null; + return l; + } + +char[] c = new char[len]; +int l = reader.read(c, 0, len); +if (l == -1) + return -1; + String s = new String(c, 0, l); byte[] d = s.getBytes(encoding); -// FIXME d.length may be len -System.arraycopy(d, 0, b, off, d.length); -return d.length; + +int available = d.length; +int more = d.length - len; +if (more 0) + { + extra = new byte[more]; + pos = 0; + System.arraycopy(d, len, extra, 0, more); + available -= more; + } + +System.arraycopy(d, 0, b, off, available); +return available; } public void close() @@ -103,29 +144,74 @@ public void mark(int limit) { +if (extra != null) + { + extra_marked = new byte[extra.length]; + System.arraycopy(extra, 0, extra_marked, 0, extra.length); + pos_marked = pos; + } +else + extra_marked = null; + try { -reader.mark(limit); + // Note that this might be a bit more than asked for. + // Because we might also have the extra_marked bytes. + // That is fine (and necessary for reset() to work). + reader.mark(limit); } -catch (IOException e) +catch (IOException ioe) { -throw new RuntimeException(e.getMessage()); + throw new RuntimeException(ioe); } } public void reset() throws IOException { +extra = extra_marked; +pos = pos_marked; +extra_marked = null; + reader.reset(); } public long skip(long n) throws IOException { -return reader.skip(n); +long done = 0; +if (extra != null) + { + int available = extra.length - pos; + done = available n ? available : n; + pos += done; + if (pos = extra.length) + extra = null; + } + +n -= done; +if (n 0) + return reader.skip(n) + done; +else + return done; + } + + /** + * Returns conservative number of bytes available without blocking. + * Actual number of bytes that can be read without blocking might + * be (much) bigger. + */ + public int available() throws IOException + { +if (extra != null) + return pos - extra.length; + +return reader.ready() ? 1 : 0; } - // TODO available - + public String toString() + { +return ReaderInputStream[ + reader + , + encoding + ]; + } } signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] CVS kaffe (robilad): Use pure java XSLT engine by default
Hi, On Tue, 2004-12-07 at 01:58, Kaffe CVS wrote: 2004-12-06 Dalibor Topic [EMAIL PROTECTED] * libraries/javalib/javax/xml/transform/TransformerFactory.java: Use gnu.xml.transform.TransformerFactoryImpl as the default transformer instead of libxmlj one. Reported by: Benja Fallenstein [EMAIL PROTECTED] This is what Chris (CCed) recommends. But unfortunately we now need to start over with trying to get writing out dom trees to streams working again (most of my fixes were for the GnomeDocumentBuilder. With this you will hit something like the following: gnu.xml.dom.DomEx: The node belongs in another document. Node Name: #document at gnu.xml.dom.DomNode.checkMisc (DomNode.java:334) at gnu.xml.dom.DomNode.appendChild (DomNode.java:551) at gnu.xml.dom.DomDocument.appendChild (DomDocument.java:324) at gnu.xml.transform.TransformerImpl.transform (TransformerImpl.java:205) at org.eclipse.ui.XMLMemento.save (XMLMemento.java:413) Trying to work around this you will at least have to deal with the Writer problem yet again. Sigh. Patch attached. After that I am currently stuck unfortunately. Will try to debug some more tonight. Cheers, Mark Index: libraries/javalib/gnu/xml/transform/TransformerImpl.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/gnu/xml/transform/TransformerImpl.java,v retrieving revision 1.3 diff -u -r1.3 TransformerImpl.java --- libraries/javalib/gnu/xml/transform/TransformerImpl.java 4 Dec 2004 21:12:30 - 1.3 +++ libraries/javalib/gnu/xml/transform/TransformerImpl.java 7 Dec 2004 06:55:22 - @@ -43,6 +43,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; +import java.io.Writer; import java.net.MalformedURLException; import java.net.UnknownServiceException; import java.net.URL; @@ -74,9 +75,11 @@ import org.xml.sax.ext.LexicalHandler; import gnu.xml.dom.DomDoctype; import gnu.xml.dom.DomDocument; +import gnu.xml.dom.ls.WriterOutputStream; import gnu.xml.xpath.Expr; import gnu.xml.xpath.Root; + /** * The transformation process for a given stylesheet. * @@ -410,6 +413,12 @@ out = sr.getOutputStream(); if (out == null) { + Writer w = sr.getWriter(); + if (w != null) + out = new WriterOutputStream(w); + } + if (out == null) + { String systemId = sr.getSystemId(); try { signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] CVS kaffe (robilad): Use pure java XSLT engine by default
Hi, On Tue, 2004-12-07 at 08:59, Mark Wielaard wrote: Trying to work around this you will at least have to deal with the Writer problem yet again. Sigh. Patch attached. After that I am currently stuck unfortunately. Will try to debug some more tonight. Chris already made a couple of changes to gnu.xml.dom implementation (and added the above patch) to GNU JAXP CVS. If you resync with GNU JAXP and apply the following two patches it starts up again. First patch is for GNU JAXP. Handles the case were ReaderInputStream has too much characters. Second patch is for kaffe. Eclipse expects a SyncFailedException to have a non-null message, otherwise their log system just breaks spectacularly. We probably have a bug here. The SyncFailedException (caused by a ClosedChannelException) should not be thrown in the first place it seems. It is still not perfect. See the ArrayStoreException bug that I posted earlier and rereading the saved workspace is unfortunately still broken. But it is already much better then two days ago! Cheers, Mark Index: libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java,v retrieving revision 1.3 diff -u -r1.3 ReaderInputStream.java --- libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java 6 Dec 2004 09:02:52 - 1.3 +++ libraries/javalib/gnu/xml/dom/ls/ReaderInputStream.java 7 Dec 2004 20:34:57 - @@ -1,6 +1,6 @@ /* * ReaderInputStream.java - * Copyright (C) 1999,2000,2001 The Free Software Foundation + * Copyright (C) 1999, 2000, 2001, 2004 The Free Software Foundation * * This file is part of GNU JAXP, a library. * @@ -54,10 +54,17 @@ private Reader reader; private String encoding; + // Holds extra spillover data if necessary + private byte extra[]; + private int pos; + + private byte extra_marked[]; + private int pos_marked; + public ReaderInputStream(Reader reader) { this.reader = reader; -encoding = UTF-8; +this.encoding = UTF-8; } void setEncoding(String encoding) @@ -68,6 +75,14 @@ public int read() throws IOException { +if (extra != null) + { + int result = extra[pos]; + pos++; + if (pos = extra.length) + extra = null; + return result; + } return reader.read(); } @@ -81,13 +96,40 @@ throws IOException { int l = len - off; +if (l == 0) + return 0; + +if (extra != null) + { + int available = extra.length - pos; + l = available len ? available : len; + System.arraycopy(extra, 0, b, off, l); + pos += l; + if (pos = extra.length) + extra = null; + return l; + } + char[] c = new char[l]; l = reader.read(c, 0, l); +if (l == -1) + return -1; + String s = new String(c, 0, l); byte[] d = s.getBytes(encoding); -// FIXME d.length may be len -System.arraycopy(d, 0, b, off, d.length); -return d.length; + +int available = d.length; +int more = d.length - len; +if (more 0) + { + extra = new byte[more]; + pos = 0; + System.arraycopy(d, len, extra, 0, more); + available -= more; + } + +System.arraycopy(d, 0, b, off, available); +return available; } public void close() @@ -103,29 +145,74 @@ public void mark(int limit) { +if (extra != null) + { + extra_marked = new byte[extra.length]; + System.arraycopy(extra, 0, extra_marked, 0, extra.length); + pos_marked = pos; + } +else + extra_marked = null; + try { -reader.mark(limit); + // Note that this might be a bit more than asked for. + // Because we might also have the extra_marked bytes. + // That is fine (and necessary for reset() to work). + reader.mark(limit); } -catch (IOException e) +catch (IOException ioe) { -throw new RuntimeException(e.getMessage()); + throw new RuntimeException(ioe); } } public void reset() throws IOException { +extra = extra_marked; +pos = pos_marked; +extra_marked = null; + reader.reset(); } public long skip(long n) throws IOException { -return reader.skip(n); +long done = 0; +if (extra != null) + { + int available = extra.length - pos; + done = available n ? available : n; + pos += done; + if (pos = extra.length) + extra = null; + } + +n -= done; +if (n 0) + return reader.skip(n) + done; +else + return done; + } + + /** + * Returns conservative number of bytes available without blocking. + * Actual number of bytes that can be read without blocking might + * be (much) bigger. + */ + public int available() throws IOException + { +if (extra != null) + return pos - extra.length; + +return reader.ready() ? 1 : 0; } - // TODO available - + public String toString() + { +return ReaderInputStream[ + reader + , + encoding
[kaffe] VMSecurityManager.getClassContext() fixlet
Hi, ResourceBundle doesn't work correctly anymore when getBundle() is called from a user defined class loader Class. This is because VMSecurityManager.getClassContext() doesn't obey its interface: Hint: you may need to pop off one or more frames: don't include SecurityManager or VMSecurityManager.getClassContext in your result. This patch fixes that: 2004-12-05 Mark Wielaard [EMAIL PROTECTED] * libraries/javalib/java/lang/ClassLoader.java (setSigners): Don't throw Exception. * libraries/javalib/java/lang/VMSecurityManager.java (getClassContext): Cleanup returned stack. This isn't the most efficient way to handle this for ResourceBundle. We should probably introduce a VMResourceBundle that gives kaffe the option to do it the efficient way as Helmer once introduced. But this patch also fixes other potential bugs in the use of the SecurityManager getClassContext() method. It also tries to sneak in the patch to make ClassLoader.setSigners() not throw exceptions for anything that uses signed jar files (Casey his patch is way better, but I want to get at least something in to make kaffe CVS usable again.) Cheers, Mark Index: libraries/javalib/java/lang/ClassLoader.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/ClassLoader.java,v retrieving revision 1.33 diff -u -r1.33 ClassLoader.java --- libraries/javalib/java/lang/ClassLoader.java 14 Nov 2004 17:07:22 - 1.33 +++ libraries/javalib/java/lang/ClassLoader.java 5 Dec 2004 11:41:42 - @@ -206,8 +206,6 @@ } protected final void setSigners(Class cl, Object signers[]) { - throw new kaffe.util.NotImplemented(getClass().getName() - + .setSigners()); } protected final Class findLoadedClass(String name) { Index: libraries/javalib/java/lang/VMSecurityManager.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/VMSecurityManager.java,v retrieving revision 1.2 diff -u -r1.2 VMSecurityManager.java --- libraries/javalib/java/lang/VMSecurityManager.java 7 Apr 2004 21:11:06 - 1.2 +++ libraries/javalib/java/lang/VMSecurityManager.java 5 Dec 2004 11:41:42 - @@ -58,7 +58,19 @@ * @return an array of the declaring classes of each stack frame */ static Class[] getClassContext() { -return (ThreadStack.getClassStack()); +Class[] rawStack = ThreadStack.getClassStack(); +int i = 0; +while (i rawStack.length + (rawStack[i] == ThreadStack.class + || rawStack[i] == VMSecurityManager.class + || rawStack[i] == SecurityManager.class)) + i++; + +Class[] stack = new Class[rawStack.length - i]; +for (int j = 0; j stack.length; j++, i++) + stack[j] = rawStack[i]; + +return stack; } /** signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Turn exception into warning message for ClassLoader.setSigners()
Hi, On Sun, 2004-11-14 at 20:40, Casey Marshall wrote: Or, why not implement Class.getSigners and Class.setSigners? That is a very nice idea! Thanks for writing that patch. Could this patch please go into CVS? It is a bit of a pain to keep applying workarounds for testing anything that uses signed jar files. Thanks, Mark Index: kaffe/kaffevm/classMethod.h === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/classMethod.h,v retrieving revision 1.68 diff -u -b -B -r1.68 classMethod.h --- kaffe/kaffevm/classMethod.h 19 Aug 2004 19:29:02 - 1.68 +++ kaffe/kaffevm/classMethod.h 14 Nov 2004 19:39:20 - @@ -163,6 +163,9 @@ /** Stab type ID. */ int stab_id; #endif + + /** The array of 'signer' objects; usually Certificates. */ + HArrayOfObject* signers; }; #ifndef __DEFINED_CLASS Index: libraries/clib/native/Class.c === RCS file: /cvs/kaffe/kaffe/libraries/clib/native/Class.c,v retrieving revision 1.74 diff -u -b -B -r1.74 Class.c --- libraries/clib/native/Class.c 5 Jul 2004 16:40:53 - 1.74 +++ libraries/clib/native/Class.c 14 Nov 2004 19:39:20 - @@ -280,16 +280,16 @@ return (this-accflags (ACC_MASK ~ACC_SUPER)); } -HArrayOfObject* NONRETURNING -java_lang_Class_getSigners(struct Hjava_lang_Class* this UNUSED) +HArrayOfObject* +java_lang_Class_getSigners0(struct Hjava_lang_Class* this) { - unimp(java.lang.Class:getSigners unimplemented); + return this-signers; } -void NONRETURNING -java_lang_Class_setSigners(struct Hjava_lang_Class* this UNUSED, HArrayOfObject* sigs UNUSED) +void +java_lang_Class_setSigners(struct Hjava_lang_Class* this, HArrayOfObject* sigs) { - unimp(java.lang.Class:setSigners unimplemented); + this-signers = sigs; } /* Index: libraries/javalib/java/lang/Class.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/Class.java,v retrieving revision 1.49 diff -u -b -B -r1.49 Class.java --- libraries/javalib/java/lang/Class.java 22 Mar 2004 11:24:46 - 1.49 +++ libraries/javalib/java/lang/Class.java 14 Nov 2004 19:39:20 - @@ -356,7 +356,14 @@ return loader.getResourceAsStream(name); } -native public Object[] getSigners(); +public Object[] getSigners() +{ +Object[] signers = getSigners0(); +return signers == null ? null : (Object[]) signers.clone(); +} + +private native Object[] getSigners0(); + native void setSigners(Object[] signers); native public Class getSuperclass(); Index: libraries/javalib/java/lang/ClassLoader.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/ClassLoader.java,v retrieving revision 1.32 diff -u -b -B -r1.32 ClassLoader.java --- libraries/javalib/java/lang/ClassLoader.java 22 Mar 2004 11:24:46 - 1.32 +++ libraries/javalib/java/lang/ClassLoader.java 14 Nov 2004 19:39:20 - @@ -201,9 +201,8 @@ return parent; } -protected final void setSigners(Class cl, Object signers[]) { - throw new kaffe.util.NotImplemented(getClass().getName() - + .setSigners()); +protected final void setSigners(Class cl, Object[] signers) { +cl.setSigners (signers); } protected final Class findLoadedClass(String name) { signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Another ClassLoader (protection domain) issue
Hi, When ClassLoader.defineClass() gets a null ProtectionDomain is should use the default protection domain. This just moves the clutch from the other defineClass() method (that doesn't take a protection domain) into the one that takes an explicit ProtectionDomain: 2004-11-13 Mark Wielaard [EMAIL PROTECTED] * libraries/javalib/java/lang/ClassLoader.java (defineClass(String,byte[],int,int)): Move defaultProtectionDomain initialization to... (defineClass(String,byte[],int,int,ProtectionDomain)): ...here. Some of the Eclipse class loaders call defineClass() with a null ProtectionDomain apparently and you can not store those in a HashTable. Again, switching to the GNU Classpath ClassLoader implementation might be a good idea. Cheers, Mark Index: libraries/javalib/java/lang/ClassLoader.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/ClassLoader.java,v retrieving revision 1.32 diff -u -r1.32 ClassLoader.java --- libraries/javalib/java/lang/ClassLoader.java 22 Mar 2004 11:24:46 - 1.32 +++ libraries/javalib/java/lang/ClassLoader.java 14 Nov 2004 11:52:24 - @@ -165,11 +165,7 @@ protected final Class defineClass(String name, byte data[], int off, int len) throws ClassFormatError { - if (defaultProtectionDomain == null) { - // XXX FIXME.. - defaultProtectionDomain = new ProtectionDomain(null, null); - } - return defineClass(name, data, off, len, defaultProtectionDomain); + return defineClass(name, data, off, len, null); } protected final Class defineClass(String name, byte data[], int off, @@ -177,13 +173,21 @@ if (off 0 || len 0 || off + len data.length) { throw new IndexOutOfBoundsException(); } - Class clazz = defineClass0(name, data, off, len); + Class clazz = null; + clazz = defineClass0(name, data, off, len); if (name != null) { loadedClasses.put(name, clazz); } else { loadedClasses.put(clazz.getName(), clazz); } + if (pd == null) { + if (defaultProtectionDomain == null) { + // XXX FIXME.. + defaultProtectionDomain = new ProtectionDomain(null, null); + } + pd = defaultProtectionDomain; + } protectionDomains.put(clazz, pd); return (clazz); } protected final Class findLoadedClass(String name) { signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Turn nio locks unimplemented exceptions into IOExceptions
Hi, Apparently some parts of Eclipse 3 do try to use the new io file locks even when told not to. If the acquiring of the lock throws an IOException (as in GNU Classpath) everything works regardless. This patch makees the Kaffe library implementation behave the same as the GNU Classpath one: 2004-11-14 Mark Wielaard [EMAIL PROTECTED] libraries/clib/nio/FileChannelImpl.c (Java_gnu_java_nio_channels_FileChannelImpl_lock): Throw IOException. (Java_gnu_java_nio_channels_FileChannelImpl_unlock): Likewise. With this and the other patches I sent you can start playing with Eclipse 3. It doesn't work flawlessly yet though. Importing GNU Classpath from CVS for example works, but as soon as you start to edit or compile anything it breaks down. Clear error messages are thrown on the console though, so I hope someone finds that helpful to create further fixes. Cheers, Mark P.S You want to get eclipse-SDK-3.0.1-linux-gtk.zip from http://download.eclipse.org/ and xalan-j_2_6_0 from http://www.apache.org/dist/xml/xalan-j/ Unpack them both (for example in /tmp) and then run: LD_LIBRARY_PATH=plugins/org.eclipse.core.resources.linux_3.0.0/os/linux/x86:plugins/org.eclipse.swt.gtk_3.0.1/os/linux/x86 PATH=.:/usr/local/kaffe/bin:$PATH ./eclipse -vm kaffe -debug -consoleLog -vmargs -ms512M -mx512M -Xbootclasspath/p:/tmp/xalan-j_2_6_0/bin/xercesImpl.jar:/tmp/xalan-j_2_6_0/bin/xalan.jar:/tmp/xalan-j_2_6_0/bin/xml-apis.jar -Dosgi.locking=none Index: libraries/clib/nio/FileChannelImpl.c === RCS file: /cvs/kaffe/kaffe/libraries/clib/nio/FileChannelImpl.c,v retrieving revision 1.7 diff -u -r1.7 FileChannelImpl.c --- libraries/clib/nio/FileChannelImpl.c 21 Sep 2004 20:22:25 - 1.7 +++ libraries/clib/nio/FileChannelImpl.c 14 Nov 2004 12:08:30 - @@ -491,7 +491,7 @@ jlong size UNUSED, jboolean shared UNUSED, jboolean wait_lock UNUSED) { - (*env)-ThrowNew(env, (*env)-FindClass(env, java.lang.UnsupportedOperationException), gnu.java.nio.channels.FileChannelImpl.lock); + (*env)-ThrowNew(env, (*env)-FindClass(env, java.io.IOException), java.nio.FileChannelImpl.lock(): not implemented); return false; } @@ -499,7 +499,7 @@ Java_gnu_java_nio_channels_FileChannelImpl_unlock(JNIEnv *env UNUSED, jobject filechannel UNUSED, jlong position UNUSED, jlong size UNUSED) { - (*env)-ThrowNew(env, (*env)-FindClass(env, java.lang.UnsupportedOperationException), gnu.java.nio.channels.FileChannelImpl.lock); + (*env)-ThrowNew(env, (*env)-FindClass(env, java.io.IOException), java.nio.FileChannelImpl.unlock(): not implemented); } /* signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] ArrayStoreException description messages
Hi, I was hunting down a ArrayStoreException and was missing a message telling what exactly went wrong. The following patch adds a message wherever an ArrayStoreException is thrown in the vm or native code. 2004-11-13 Mark Wielaard [EMAIL PROTECTED] * include/errors.h (ArrayStoreException): Define to take a message. * kaffe/kaffevm/soft.c (soft_checkarraystore): Add message to ArrayStoreException. * libraries/clib/native/System.c (java_lang_System_arraycopy): Likewise. Hope this is useful for others. Cheers, Mark Index: include/errors.h === RCS file: /cvs/kaffe/kaffe/include/errors.h,v retrieving revision 1.14 diff -u -r1.14 errors.h --- include/errors.h 31 Oct 2004 14:35:32 - 1.14 +++ include/errors.h 13 Nov 2004 20:43:45 - @@ -101,7 +101,7 @@ #define IllegalMonitorStateException NEW_LANG_EXCEPTION(IllegalMonitorStateException) #define NullPointerException NEW_LANG_EXCEPTION(NullPointerException) #define ArrayIndexOutOfBoundsException NEW_LANG_EXCEPTION(ArrayIndexOutOfBoundsException) -#define ArrayStoreException NEW_LANG_EXCEPTION(ArrayStoreException) +#define ArrayStoreException(M) NEW_LANG_EXCEPTION_MESSAGE(ArrayStoreException, M) #define ArithmeticException NEW_LANG_EXCEPTION(ArithmeticException) #define AbstractMethodError(M) NEW_LANG_EXCEPTION_MESSAGE(AbstractMethodError, M) #define ThreadDeath NEW_LANG_EXCEPTION(ThreadDeath) Index: kaffe/kaffevm/soft.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/soft.c,v retrieving revision 1.67 diff -u -r1.67 soft.c --- kaffe/kaffevm/soft.c 6 Nov 2004 20:02:07 - 1.67 +++ kaffe/kaffevm/soft.c 13 Nov 2004 20:43:45 - @@ -584,7 +584,16 @@ soft_checkarraystore(Hjava_lang_Object* array, Hjava_lang_Object* obj) { if (obj != 0 soft_instanceof(CLASS_ELEMENT_TYPE(OBJECT_CLASS(array)), obj) == 0) { - throwException(ArrayStoreException); + Hjava_lang_Throwable* asexc; + const char* f = can't store `%s' in `%s'; + const char *otype = CLASS_CNAME(OBJECT_CLASS(obj)); + const char *atype = CLASS_CNAME(OBJECT_CLASS(array)); + char *b; + b = checkPtr(KMALLOC(strlen(otype)+strlen(atype)+strlen(f))); + sprintf(b, f, otype, atype); + asexc = ArrayStoreException(b); + KFREE(b); + throwException(asexc); } } Index: libraries/clib/native/System.c === RCS file: /cvs/kaffe/kaffe/libraries/clib/native/System.c,v retrieving revision 1.59 diff -u -r1.59 System.c --- libraries/clib/native/System.c 14 Oct 2004 11:12:10 - 1.59 +++ libraries/clib/native/System.c 13 Nov 2004 20:43:48 - @@ -519,8 +519,28 @@ dclass = OBJECT_CLASS(dst); /* Must be arrays */ - if (!CLASS_IS_ARRAY(sclass) || !CLASS_IS_ARRAY(dclass)) { - throwException (ArrayStoreException); + if (!CLASS_IS_ARRAY(sclass)) { + Hjava_lang_Throwable* asexc; + const char* f = source not an array `%s'; + const char *type = CLASS_CNAME(sclass); + char *b; + b = checkPtr(KMALLOC(strlen(type)+strlen(f))); + sprintf(b, f, type); + asexc = ArrayStoreException(b); + KFREE(b); + throwException(asexc); + } + + if(!CLASS_IS_ARRAY(dclass)) { + Hjava_lang_Throwable* asexc; + const char* f = destination not an array `%s'; + const char *type = CLASS_CNAME(dclass); + char *b; + b = checkPtr(KMALLOC(strlen(type)+strlen(f))); + sprintf(b, f, type); + asexc = ArrayStoreException(b); + KFREE(b); + throwException(asexc); } /* Make sure we'll keep in the array boundaries */ @@ -567,13 +587,31 @@ #endif } else { if (CLASS_IS_PRIMITIVE(sclass) || CLASS_IS_PRIMITIVE(dclass)) { - throwException (ArrayStoreException); + Hjava_lang_Throwable* asexc; + const char* f = incompatible array types `%s' and `%s'; + const char *stype = CLASS_CNAME(sclass); + const char *dtype = CLASS_CNAME(dclass); + char *b; + b = checkPtr(KMALLOC(strlen(stype)+strlen(dtype)+strlen(f))); + sprintf(b, f, stype, dtype); + asexc = ArrayStoreException(b); + KFREE(b); + throwException(asexc); } for (; len 0; len -= sizeof(Hjava_lang_Object*)) { Hjava_lang_Object* val = *(Hjava_lang_Object**)in; if (val != 0 !instanceof(dclass, OBJECT_CLASS(val))) { -throwException (ArrayStoreException); + Hjava_lang_Throwable* asexc; + const char* f = can't store `%s' in array of type `%s'; + const char *vtype = CLASS_CNAME(OBJECT_CLASS(val)); + const char *atype = CLASS_CNAME(dclass); + char *b; + b = checkPtr(KMALLOC(strlen(vtype)+strlen(atype)+strlen(f))); + sprintf(b, f, vtype, atype); + asexc = ArrayStoreException(b); + KFREE(b); + throwException(asexc); } *(Hjava_lang_Object**)out = val; in += sizeof(Hjava_lang_Object*); signature.asc Description: This is a digitally signed message part
[kaffe] Turn exception into warning message for ClassLoader.setSigners()
Hi, As reported on the GNU Classpath mailinglist Eclipse (2) doesn't start up anymore under kaffe since the URLClassLoader now calls super.setSigners() for classes loaded from signed jar files. For people that want to play with this anyway it would be nice to change the exception into a warning message: 2004-11-13 Mark Wielaard [EMAIL PROTECTED] * libraries/javalib/java/lang/ClassLoader.java (setSigners): Print warning. With this Eclipse 2.1 starts again, but is not completely usable, while printing lots of warning messages... (an alternative would be to actually implement setSigners() by adopting the GNU Classpath ClassLoader implementation). Cheers, Mark Index: libraries/javalib/java/lang/ClassLoader.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/ClassLoader.java,v retrieving revision 1.32 diff -u -r1.32 ClassLoader.java --- libraries/javalib/java/lang/ClassLoader.java 22 Mar 2004 11:24:46 - 1.32 +++ libraries/javalib/java/lang/ClassLoader.java 13 Nov 2004 21:02:07 - @@ -202,8 +202,7 @@ } protected final void setSigners(Class cl, Object signers[]) { - throw new kaffe.util.NotImplemented(getClass().getName() - + .setSigners()); + System.err.println(WARNING: ClassLoader.setSigners() not implemented); } protected final Class findLoadedClass(String name) { signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: Re: [kaffe] Misc. serialization patches
Hi, On Tue, 2004-11-02 at 19:44, Mattias Rehnberg wrote: Guilhem Lavaux [EMAIL PROTECTED] wrote: Thanks. Just one question: I don't remember why we should call defaultWrite/ReadObject in Vector. The logic behind this call is the same as if there would not be any write/readObject. BTW, these two patches concerning the core java library have to go to [EMAIL PROTECTED] As they are two lined I don't think you'll need paperwork. ;) Refering to the document at the URL below, 'classdata' will be writen on the form 'wrclass objectAnnotation' if it has a write method instead of just 'nowrclass'. Since objectAnnotation is a least an endBlockData byte, you'll get that byte when you try to deserialize the next object in the stream. I found this when I tried to deserialize a stream of two Vectors written with Sun's Java, the first one deserialized ok, but the second one gave me a null reference. http://java.sun.com/j2se/1.4.2/docs/guide/serialization/spec/protocol.html Thanks for the bug report, fix and for forwarding to GNU Classpath. It seems correct. And making the write method serialized is a good point since Vector should be thread-safe. But I don't think we need an explicit read method since there is no other thread trying to manipulate the Vector at the same time (since the object stream has the only reference to it). And luckily we don't need it, if we apply the follow fix from Andrew which went into libgcj a little while ago: 2004-11-06 Andrew Haley [EMAIL PROTECTED] * java/io/ObjectInputStream.java (readObject): ENDBLOCKDATA is generated if the class has a write method, not if it has a read method. This makes the mauve test pass even though we removed the readObject() method. (Without this patch, removing the read method, while a class has write object, doesn't work correctly). So I have also done that: 2004-11-06 Mark Wielaard [EMAIL PROTECTED] * java/util/Vector.java (readObject): Removed. Committed to GNU Classpath. Cheers, Mark Index: java/io/ObjectInputStream.java === RCS file: /cvsroot/classpath/classpath/java/io/ObjectInputStream.java,v retrieving revision 1.47 diff -u -r1.47 ObjectInputStream.java --- java/io/ObjectInputStream.java 11 Oct 2004 13:11:56 - 1.47 +++ java/io/ObjectInputStream.java 6 Nov 2004 14:54:56 - @@ -324,6 +324,14 @@ boolean oldmode = setBlockDataMode(true); callReadMethod(readObjectMethod, this.currentObjectStreamClass.forClass(), obj); setBlockDataMode(oldmode); + } + else + { + readFields(obj, currentObjectStreamClass); + } + + if (this.currentObjectStreamClass.hasWriteMethod()) + { if(dump) dumpElement(ENDBLOCKDATA? ); try { @@ -346,10 +354,6 @@ if(dump) dumpElementln(no, got IOException); } } - else - { - readFields(obj, currentObjectStreamClass); - } } this.currentObject = prevObject; Index: java/util/Vector.java === RCS file: /cvsroot/classpath/classpath/java/util/Vector.java,v retrieving revision 1.21 diff -u -r1.21 Vector.java --- java/util/Vector.java 3 Nov 2004 17:40:12 - 1.21 +++ java/util/Vector.java 6 Nov 2004 14:54:56 - @@ -929,18 +929,4 @@ s.defaultWriteObject(); } - /** - * Deserializes this object from the given stream. - * - * @param s the stream to read from - * @throws ClassNotFoundException if the underlying stream fails - * @throws IOException if the underlying stream fails - * @serialData just calls default read function - */ - private void readObject(ObjectInputStream s) -throws IOException, ClassNotFoundException - { -s.defaultReadObject(); - } - } signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Internal error: caught an unexpected exception.
Hi, On Sun, 2004-10-17 at 16:38, Guilhem Lavaux wrote: I've just committed the fix for it. Thanks. I just updated CVS and my programs always seem to just startup again. And they even seem a little faster! That might just be my joy of not having to try 5 times to run a program... :) Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] undefined symbol: xmlIsBaseCharGroup in kaffeh with ---enable-libxmlj
Hi, On Fri, 2004-10-01 at 15:22, Dalibor Topic wrote: It seems that configure is picking up the wrong libxmlj version. Could you post the relevant part of output from config.log? Hope the relevant part is in the attachement. Thanks, Mark This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Kaffe Virtual Machine configure 1.1.x-cvs, which was generated by GNU Autoconf 2.59. Invocation command line was $ ../kaffe/configure --prefix=/usr/local/kaffe --without-kaffe-qt-awt --with-threads=unix-pthreads --with-jikes --enable-libxmlj ## - ## ## Platform. ## ## - ## hostname = elsschot uname -m = i686 uname -r = 2.6.8-1-686-smp uname -s = Linux uname -v = #1 SMP Mon Sep 13 23:02:39 EDT 2004 /usr/bin/uname -p = unknown /bin/uname -X = unknown /bin/arch = i686 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /usr/local/bin PATH: /usr/bin PATH: /bin PATH: /usr/bin/X11 PATH: /usr/games [...] configure:54698: checking for gmp.h configure:54703: result: yes configure:54867: result: Information: Using native math library configure:54882: checking which extensions to include configure:54902: result: configure:54907: checking if malloc debugging is wanted configure:54928: result: no configure:54996: checking for xml2-config configure:55014: found /usr/bin/xml2-config configure:55027: result: /usr/bin/xml2-config configure:55035: checking for libxml - version = 2.5.1 configure:55142: gcc -o conftest -g -O2 -Wno-import -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wmissing-braces -Wmultichar -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable -Wunused-value -W -Wfloat-equal -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long -Wdisabled-optimization -pthread -I/usr/include/libxml2 -D_REENTRANT conftest.c -L/usr/lib -lxml2 -lz -lpthread -lm 5 conftest.c:217: warning: function declaration isn't a prototype configure:55145: $? = 0 configure:55147: ./conftest configure:55150: $? = 0 configure:55169: result: yes (version 2.6.11) configure:55302: checking for xslt-config configure:55320: found /usr/bin/xslt-config configure:55333: result: /usr/bin/xslt-config configure:55341: checking for libxslt - version = 1.0.24 configure:55475: result: yes (version 1.1.8) configure:55717: checking pthread.h usability configure:55729: gcc -c -I/usr/include/libxml2 -g -O2 -Wno-import -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wmissing-braces -Wmultichar -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable -Wunused-value -W -Wfloat-equal -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long -Wdisabled-optimization -pthread -I/usr/include/libxml2 -D_REENTRANT conftest.c 5 configure:55735: $? = 0 configure:55739: test -z || test ! -s conftest.err configure:55742: $? = 0 configure:55745: test -s conftest.o configure:55748: $? = 0 configure:55758: result: yes configure:55762: checking pthread.h presence configure:55772: gcc -E -I/usr/include/libxml2 -D_REENTRANT conftest.c configure:55778: $? = 0 configure:55798: result: yes configure:55833: checking for pthread.h configure:55840: result: yes configure:55864: checking whether binary relocation support should be enabled configure:55884: result: yes when available configure:55886: checking for linker mappings at /proc/self/maps configure:55889: result: yes configure:55893: checking whether everything is installed to the same prefix configure:55900: result: yes configure:56055: checking how to run the C preprocessor configure:56173: result: gcc -E configure:56197: gcc -E -I/usr/include/libxml2 -D_REENTRANT conftest.c configure:56203: $? = 0 configure:56235: gcc -E -I/usr/include/libxml2 -D_REENTRANT conftest.c conftest.c:211:28: ac_nonexistent.h: No such file or directory configure:56241: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME Kaffe Virtual Machine | #define PACKAGE_TARNAME kaffe | #define PACKAGE_VERSION 1.1.x-cvs | #define PACKAGE_STRING Kaffe Virtual Machine 1.1.x-cvs | #define PACKAGE_BUGREPORT [EMAIL
Re: [kaffe] undefined symbol: xmlIsBaseCharGroup in kaffeh with ---enable-libxmlj
Hi, On Fri, 2004-10-01 at 15:45, Mark Wielaard wrote: On Fri, 2004-10-01 at 15:22, Dalibor Topic wrote: It seems that configure is picking up the wrong libxmlj version. Could you post the relevant part of output from config.log? Hope the relevant part is in the attachement. Sigh. It probably is useless since I just build after doing that configure and it all builds fine now. Sorry for the noise. I am not sure what went wrong yesterday though. Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] undefined symbol: xmlIsBaseCharGroup in kaffeh with ---enable-libxmlj
Hi, When configuring with --enable-libxmlj I get: make[3]: Leaving directory `/home/mark/src/kaffe-obj/kaffe/kaffeh' ../kaffe/kaffeh/kaffeh -classpath ../../kaffe/libraries/javalib/Klasses.jar.bootstrap -o java_lang_Object.h java/lang/Object ../kaffe/kaffeh/kaffeh: relocation error: /usr/lib/libxslt.so.1: undefined symbol: xmlIsBaseCharGroup So I am forced to configure with --disable-libxmlj. Any idea what is happening here? Thanks, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Buglet in Jar for -C
Hi, When building gcjwebplugin and using kaffe jar I noticed that when -C was used the first directory name was always stripped of files in subdirectories of the directory of the -C argument. The following patch fixes it. This should be an if-else since in the if branch tmp is made absolute so if the first if statement succeeds the second if statement also (erronously) succeeds. Cheers, Mark * libraries/javalib/kaffe/tools/jar/Jar.java (createFileLookupTable): Don't double check File.isAbsolute(). --- libraries/javalib/kaffe/tools/jar/Jar.java 27 Apr 2004 18:25:19 - 1.6 +++ libraries/javalib/kaffe/tools/jar/Jar.java 14 Aug 2004 20:33:07 - @@ -494,9 +494,7 @@ if (! tmp.isAbsolute()) { tmp = new XPFile(parent,files[i]); - } - - if (tmp.isAbsolute()) { + } else { // Find and remove the first '/' in the short name String name = files[i]; int index = name.indexOf('/'); signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] kaffe/jikes makes incompatible code for jdk1.3? (was: [Detelin Batchovski] Bug#262897: libservlet2.3-java_4.0-4: Failed start Tomcat4 after upgrade)
Hi, On Wed, 2004-08-04 at 23:48, Arnaud Vandyck wrote: I built javax.servlet with kaffe/jikes/ant1.6, but when running with jre1.3, it seems there is a problem... log is attached. Seems the runtime that is used doesn't support newer versions of class file byte code (Unsupported major.minor version 48.0). You are probably using a modern version of jikes that by default generates this newer byte code. As far as I know all free runtimes in main have been updated already to support it. But you can probably downgrade the class byte code version used by giving jikes a -target 1.2 argument (see the jikes documentation). Debian: If the problem could not be solved soon, it means we'll have to build servlet with non-free JDK again! It means libservlet2.3-java back to contrib! Why? It isn't a bug with any of the free main runtimes. And it seems a upgrade of the non-free proprietary runtime that this person is using would solve the issue. I'll wait two or three days before uploading a servlet compiled with non-free jdk back to contrib, hoping kaffe guys can resolve this (but I assume it's not trivial!). Comments? If you really need to, why not create a new libservlet2.3-java-nonfree-old-runtime package and keep the current package in main since it seems to work fine with the free runtimes? Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Swing/AWT merge from GNU Classpath done
Hi, On Sun, 2004-07-25 at 02:39, Ito Kazumitsu wrote: But another problem that jikes dumps core while compiling library files is still there. My jikes is Version 1.19. Do we need another version of jikes? Before the big change around Swing/AWT, the library files could be successfully compiled with jikes 1.19. The version of jikes that I use is 1.21. I haven't tried with other versions. Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Swing/AWT merge from GNU Classpath done
On Fri, 2004-07-23 at 09:05, Guilhem Lavaux wrote: Dalibor Topic wrote: I've merged in the Swing/AWT code from GNU Classpath (before the last resync they had with gcj java-gui brach, so expect another tiny (600k) patch soon ;) You guys are awesome! It now works out of the box for me with: --with-jikes --without-kaffe-qt-awt --prefix=/usr/local/kaffe I tried to create a patch for that last tiny diff. This adds the following files (all.files): java/awt/image/ByteLookupTable.java java/awt/image/Kernel.java java/awt/image/LookupTable.java java/awt/image/ShortLookupTable.java javax/swing/Spring.java javax/swing/SpringLayout.java javax/swing/plaf/basic/BasicTextFieldUI.java javax/swing/plaf/basic/BasicToolBarSeparatorUI.java javax/swing/text/DefaultHighlighter.java javax/swing/text/FieldView.java javax/swing/text/Highlighter.java javax/swing/text/LayeredHighlighter.java javax/swing/text/PlainView.java javax/swing/text/TabExpander.java javax/swing/text/TabableView.java And remove these two files (all.files): javax/swing/text/CharacterIterator.java javax/swing/text/PlainEditorKit.java I did get it to work for me locally, but that was after a lot of fighting against the build system... :{ In the end I send the whole patch and ChangeLog to Guilhem hoping he could properly adapt it to the kaffe build process. It does seem to work and the latest Swing examples like the activityboard do look veery nice and kaffe. * since classpath's awt need pthreads, pthreads are now the default threading system. That's going to be fun on non-linux systems, I assume. *bug queue full please submit later* ;) Note that GNU Classpath AWT should be able to work with any java-like threading system when --enable-portable-native-sync is used. This tells gdk to use a locking mechanism that uses normal Object.wait()/notify() primitives. This is what the jrvm hackers want to use (although it doesn't actually work for them yet). See the VM threading Model section in the GNU Classpath VM Integration Guide: http://www.gnu.org/software/classpath/docs/vmintegration.html#SEC7 Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Swing/AWT merge from GNU Classpath done
Hi, On Sun, 2004-07-25 at 00:11, Ito Kazumitsu wrote: But the new problem is that, even though I use --without-kaffe-qte-awt, configure checks QTDIR and fails. Note that this configure option got renamed to --without-kaffe-qt-awt Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Swing/AWT merge from GNU Classpath done
Hi, On Fri, 2004-07-23 at 00:06, Ito Kazumitsu wrote: So I had to explicitly add --without-classpath-gtk-awt --without-kaffe-qte-awt to get configure working. And make failed while compiling kaffe/kaffe/main.c: main.c:389: `LIBDIR' undeclared (first use in this function) I had to specify --with-jikes The default is to use kjc, but that gives: javax/swing/JDesktopPane.java:87: error:Cannot find class AccessibleJComponent [JLS 8] And --without-kaffe-qte-awt otherwise I get: checking QTDIR... configure: error: *** QTDIR must be defined, or --with-qtdir option given I didn't have to give --without-classpath-gtk-awt that just seemed to work. But I am now stuck at: ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:20:28: qapplication.h: No such file or directory ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:23:33: qpaintdevicemetrics.h: No such file or directory In file included from ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:25: ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:50: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:51: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:52: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:53: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:207: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/toolkit.h:208: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:31: error: syntax error before `*' token ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:49: error: `QtMsgType' was not declared in this scope ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:49: error: parse error before `,' token ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc: In function `void qtawtMessageOutput(...)': ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:51: error: `type' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:51: error: (Each undeclared identifier is reported only once for each function it appears in.) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:52: error: `QtDebugMsg' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:53: error: `msg' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:55: error: `QtWarningMsg' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:58: error: `QtFatalMsg' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc: In function `jboolean Java_java_awt_Toolkit_tlkInit(JNIEnv*, _jclass*, _jstring*)': ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:71: error: ` qInstallMsgHandler' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:76: error: `qapp' undeclared (first use this function) ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:76: error: parse error before `(' token ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc: In function `jint Java_java_awt_Toolkit_tlkGetResolution(JNIEnv*, _jclass*)': ../../../../../kaffe/libraries/clib/awt/qt/tlk.cc:115: error: ` QPaintDeviceMetrics' undeclared (first use this function) Cheers, Mark signature.asc Description: This is a digitally signed message part ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Re: eclipse-jdt: kaffe cannot be used as a standard VM in eclipse
Hi, (CCed [EMAIL PROTECTED] to get this archived since I don't have time at this moment to work on it.) On Tue, 2004-02-24 at 15:35, Jens Lehmann wrote: Thanks for your information. I immediately compiled kaffe1.1.4 (Debian currently has only 1.1.3) and found out that it works with eclipse 2.1.2 without needing to change anything! However it stops working, if I use eclipse 3.0M6 or 3.0M7. See the Debian bug report for some more information: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=234518 Bah :{ Had the same problem with gcj/gij for newer 3.0 (= M6) builds. Something must have been changed in the way Eclipse detects JDKs. Just to avoid confusion: I don't want to run eclipse with (on top of) kaffe, but only add it as an additional JRE in eclipse. Understood. But what Eclipse (= M5 at least) does is actually running the found 'java' binary on a little program and examining its output to determine whether or not to accept the location as a standard JDK. Unfortunately Eclipse doesn't give very good debug output when it finds something unexpected. I actually had to hack Eclipse to make it more verbose when trying to make it accept gcj/gij and.or kaffe as standard JDK. See Eclipse CVS: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/ The JikesRVM hackers told me that they solved this issue by creating a customized launcher plugin. That way they do not need to alias stuff to the name java or anything like that, and they even have a bit of customization (like optionally choosing RVM_ROOT and RVM_BUILD from within Eclipse). It might be nice if someone looks at their plugin as a model for creating standardized free (GNU Classpath based) VM plugin support for Eclipse. It is in the rvm/src/tools/eclipse/plugin2 directory in their CVS archive, and I believe the relevant classes in Eclipse are stuff like AbstractVMInstall and AbstractVMInstallType. Browse CVS at: http://www-124.ibm.com/developerworks/oss/cvs/jikesrvm/rvm/src/tools/eclipse/plugin2/ Cheers, Mark signature.asc Description: This is a digitally signed message part
Re: [kaffe] [FW] Bug#230132: kaffe: JarException while running jar
Hi, On Fri, 2004-01-30 at 17:24, Arnaud Vandyck wrote: Is this a known bug? [...] jar cf ../lib/babel-0.8.8.jar gov/llnl/babel/backend/c/ArrayMethods.class [and a ton of other classes] java.util.jar.JarException: Attributes cannot be called 'Name' at java.util.jar.Manifest.write_attribute_entry (Manifest.java:404) Yep. And fixed by: 2003-12-28 Casey Marshall [EMAIL PROTECTED] * libraries/javalib/kaffe/tools/jar/Jar.java (createJar): Removed extra Name attribute. Cheers, Mark signature.asc Description: This is a digitally signed message part
Re: [kaffe] Re: bugwatcher problems
Hi, On Thu, 2004-01-29 at 20:42, Dalibor Topic wrote: Ean Schuessler wrote: As I recall (Dalibor will need to correct me here) forking a process with pthreads just plain doesn't work. The details escape me at this point other than the complexities of managing the relationship between the thread and the forked process hadn't really been worked out. Of course, this is going back to when I talked to Tim Wilkinson about the problem. For all I know, its fixed. Is it fixed? If not, enabling pthreads will break many, many Ant builds. Frankly, I don't know, I haven't hacked on kaffe's pthreads threading, so I can't claim to know much about it :( The last thread on pthreads and kaffe I found [1] mentions that stuff like wait run works fine with java threads under pthreads. The FAQ.pthreads still says that exec/fork/wait doesn't work, so it may mean Runtime.exec, I guess. That is easy to check. Attached RuntimeExec test program works fine on kaffe compiled with either unix-jthreads or unix-pthreads. And I think we would have noticed if other things were really broken under pthreads. Since it enables working with any JNI library that does blocking in native mode (which doesn't work with jthreads) for larger frameworks like java-gnome or eclipse I think it got at least some testing that it doesn work for non-trivial things. And enabling it by default would help us expose anything that might be broken. [1] http://www.kaffe.org/pipermail/kaffe/2002-June/039992.html Cheers, Mark import java.io.*; public class RuntimeExec { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec(/bin/cat); OutputStream out = p.getOutputStream(); Writer writer = new OutputStreamWriter(out); writer.write(Hello World!\n); writer.write(Have a nice day!\n); writer.close(); out.close(); InputStream in = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String s = reader.readLine(); while (s != null) { System.out.println(cat says: + s); s = reader.readLine(); } } } signature.asc Description: This is a digitally signed message part
[kaffe] Re: bugwatcher problems
Hi, On Wed, 2004-01-14 at 12:32, Mark Howard wrote: I was hoping that some Debian Java experts might be able to help out with a couple of problems with bugwatcher (debbuggtk package). 1) Bugwatcher works with gij or blackdown java My wrapper scripts just call /usr/bin/java, since both of the above create this. This has two problems: - my programs don't work if java alternative is set to something else I got it working (more or less, there are some little issues that I have to look into) with kaffe. But not with the kaffe package from Debian. The Debian kaffe package is compiled with unix-jthreads, but gtk (java-gnome) needs pthread support. When you recompile kaffe configured --with-threads=unix-pthreads then you can play with bugwatcher like you can with gij. (Thread system unix-pthread is also needed to run e.g. Eclipse with swt/gtk bindings). What do the kaffe developers think. Should kaffe default to pthreads on systems that support it? Cheers, mark signature.asc Description: This is a digitally signed message part
[kaffe] java.util.regex patch
Hi, I am preparing for inclusion of java.util.regex and gnu.regexp in GNU Classpath. I just added some test cases to Mauve. I need the following patches to make them work correctly with kaffe. Hope they make sense. 2004-01-08 Mark Wielaard [EMAIL PROTECTED] * java/util/regex/Matcher.java (find): Check whether or not we are stuck at the same position after a successful match and bump position of possible. * java/util/regex/Pattern.java (split(CharSequence, int)): Use ArrayList, not Vector. Make sure we match at most limit -1 times, when limit 0. Check whether or not to add emtpty strings. They are only against the java.util.regex wrappers, I haven't looked at gnu.regexp proper yet. I have some more Mauve tests that I will check in later, but gnu.regexp doesn't seem to support octal, hex and unicode escapes yet so most of them fail. Cheers, Mark Index: libraries/javalib/java/util/regex/Matcher.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/util/regex/Matcher.java,v retrieving revision 1.3 diff -u -r1.3 Matcher.java --- libraries/javalib/java/util/regex/Matcher.java 13 Oct 2003 03:10:04 - 1.3 +++ libraries/javalib/java/util/regex/Matcher.java 8 Jan 2004 11:17:50 - @@ -34,7 +34,25 @@ } public boolean find() { - return find(position); + boolean first = (match == null); + match = pattern.getRE().getMatch(input, position); + if (match != null) { + int endIndex = match.getEndIndex(); + // Are we stuck at the same position? + if (!first endIndex == position) { + match = null; + // Not at the end of the input yet? + if (position input.length() - 1) { + position++; + return find(position); + } else { + return false; + } + } + position = endIndex; + return true; + } + return false; } public boolean find(int start) { Index: libraries/javalib/java/util/regex/Pattern.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/util/regex/Pattern.java,v retrieving revision 1.3 diff -u -r1.3 Pattern.java --- libraries/javalib/java/util/regex/Pattern.java 13 Oct 2003 03:10:04 - 1.3 +++ libraries/javalib/java/util/regex/Pattern.java 8 Jan 2004 11:17:50 - @@ -3,7 +3,7 @@ import gnu.regexp.RE; import gnu.regexp.RESyntax; import gnu.regexp.REException; -import java.util.Vector; +import java.util.ArrayList; public final class Pattern implements Serializable { @@ -85,36 +85,58 @@ public String[] split(CharSequence input, int limit) { Matcher matcher = new Matcher(this, input); - Vector list = new Vector(); + ArrayList list = new ArrayList(); + int empties = 0; int count = 0; int start = 0; int end; - while (matcher.find()) { + boolean matched; + while (matched = matcher.find() (limit = 0 || count limit - 1)) { ++count; end = matcher.start(); if (start == end) { - if (limit != 0) { - list.addElement(); - } + empties++; } else { + while (empties-- 0) { + list.add(); + } String text = input.subSequence(start, end).toString(); - list.addElement(text); + list.add(text); } start = matcher.end(); - if (count == limit) break; } - // last token at end - if (count != limit) { - String text = input.subSequence(start, input.length()).toString(); - if (!(.equals(text) (limit == 0))) { - list.addElement(text); + + // We matched nothing. + if (!matched count == 0) { + return new String[] { input.toString() }; + } + + // Is the last token empty? + boolean emptyLast = (start == input.length()); + + // Can/Must we add empties or an extra last token at the end? + if (list.size() limit || limit 0 || (limit == 0 !emptyLast)) { + if (limit list.size()) { + int max = limit - list.size(); + empties = (empties max) ? max : empties; + } + while (empties-- 0) { + list.add(); } } - if (list.size() == 0) { - list.addElement(input.toString()); + + // last token at end + if (limit != 0 || (limit == 0 !emptyLast)) { + String t = input.subSequence(start, input.length()).toString(); + if (.equals(t) limit == 0) { + // Don't add. + } else { + list.add(t); + } } + String[] output = new String [list.size()]; - list.copyInto(output); + list.toArray(output); return output; } } signature.asc Description: This is a digitally signed message part
[kaffe] kaffe/kaffeh/support.c patchlet
Hi, I had the following in my tree for a long time. I cannot remember whether it actually fixed something for me, but it looks like a good idea. 2004-01-08 Mark Wielaard [EMAIL PROTECTED] * kaffe/kaffeh/support.c (kaffeh_findClass): Close jar file and continue when getDataJarFile(0 returns NULL. Cheers, Mark Index: kaffe/kaffeh/support.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffeh/support.c,v retrieving revision 1.34 diff -u -r1.34 support.c --- kaffe/kaffeh/support.c 3 Nov 2003 05:57:42 - 1.34 +++ kaffe/kaffeh/support.c 8 Jan 2004 11:04:58 - @@ -911,6 +911,10 @@ } buf = getDataJarFile(jfile, jentry); +if (buf == NULL) { +closeJarFile(jfile); +continue; +} classFileInit(hand, buf, jentry-uncompressedSize, CP_ZIPFILE); signature.asc Description: This is a digitally signed message part
[kaffe] Re: Bug Status of Kaffe
Hi, On Thu, 2003-12-25 at 03:12, Ben Burton wrote: #210716 jython causes kaffe to fail with assert error , | Version: 1:1.1.1-1 | | After removing the JNI lines from jython shell script (see | issue #207998) kaffe dies with kaffe-bin: machine.c:620: | installMethodCode: Assertion `e-start_pc = e-end_pc' | failed. [...] But this crash is not a debian-specific bug. The bug here is that jython causes kaffe to crash on startup *after* all of the required classes have been found - it has nothing to do with the library path. [..] This is where this crash comes up. Once you have kaffe finding all of the JNI libraries that it should (including the ones used with jython and the kaffe bootstrap classes), it then crashes with 'e-start_pc = e-end_pc' failed. So this is definitely a kaffe issue, not a debian-specific issue or a JNI path issue. Seen the same crash when using the CVS view from Eclipse 3.0M4 on kaffe. http://kaffe.org/pipermail/kaffe/2003-October/044318.html I just removed the assert. The problem is actually the byte code generated by the compiler since it should not generate an exception table entry whose start_pc is smaller (or equal - the assert is actually wrong) to end_pc. The attached patch turns the assert into a printf WARNING which can help debug the byte code. In my eclipse case it says: WARNING start_pc=164661273 end_pc=164661236 in org/eclipse/team/internal/core/streams/TimeoutInputStream.runThread(()V) WARNING start_pc=164661775 end_pc=164661236 in org/eclipse/team/internal/core/streams/TimeoutInputStream.runThread(()V) WARNING start_pc=161990681 end_pc=161990644 in org/eclipse/team/internal/core/streams/TimeoutOutputStream.runThread(()V) WARNING start_pc=161991183 end_pc=161990644 in org/eclipse/team/internal/core/streams/TimeoutOutputStream.runThread(()V) (Also included the other things needed to patch/hack around for eclipse) Cheers, Mark Index: kaffe/kaffevm/jni.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/jni.c,v retrieving revision 1.97 diff -u -r1.97 jni.c --- kaffe/kaffevm/jni.c 3 Nov 2003 05:29:31 - 1.97 +++ kaffe/kaffevm/jni.c 27 Dec 2003 20:21:35 - @@ -3024,6 +3024,12 @@ return (ret); } +static void* +Kaffe_GetPrimitiveArrayCritical(JNIEnv* env, jarray arr, jbool* iscopy) +{ + return (Kaffe_GetByteArrayElements(env, (jbyteArray)arr, iscopy)); +} + static jchar* Kaffe_GetCharArrayElements(JNIEnv* env, jcharArray arr, jbool* iscopy) { @@ -3159,6 +3165,12 @@ } static void +Kaffe_ReleasePrimitiveArrayCritical(JNIEnv* env, jbyteArray arr, jbyte* elems, jint mode) +{ + Kaffe_ReleaseByteArrayElements(env, (jbyteArray)arr, (jbyte*)elems, mode); +} + +static void Kaffe_ReleaseCharArrayElements(JNIEnv* env, jcharArray arr, jchar* elems, jint mode) { BEGIN_EXCEPTION_HANDLING_VOID(); @@ -4425,8 +4437,8 @@ Kaffe_GetJavaVM, NULL, NULL, - NULL, - NULL, + Kaffe_GetPrimitiveArrayCritical, + Kaffe_ReleasePrimitiveArrayCritical, NULL, NULL, NULL, Index: kaffe/kaffevm/jit3/machine.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/jit3/machine.c,v retrieving revision 1.44 diff -u -r1.44 machine.c --- kaffe/kaffevm/jit3/machine.c 2 Nov 2003 17:51:59 - 1.44 +++ kaffe/kaffevm/jit3/machine.c 27 Dec 2003 20:21:36 - @@ -611,7 +611,12 @@ e-start_pc = getInsnPC(e-start_pc, codeInfo, code) + (uintp)code-code; e-end_pc = getInsnPC(e-end_pc, codeInfo, code) + (uintp)code-code; e-handler_pc = getInsnPC(e-handler_pc, codeInfo, code) + (uintp)code-code; - assert (e-start_pc = e-end_pc); + if (e-start_pc e-end_pc) + printf(WARNING start_pc=%d end_pc=%d in %s.%s(%s)\n, + e-start_pc, e-end_pc, + CLASS_CNAME(meth-class), + meth-name-data, + METHOD_SIGD(meth)); } }
Re: [kaffe] Jar files in 1.1.3?
Hi, On Thu, 2003-12-11 at 16:18, Casey Marshall wrote: Ito == Ito Kazumitsu [EMAIL PROTECTED] writes: Ito In message Re: [kaffe] Jar files in 1.1.3? on 03/12/10, Casey Ito Marshall [EMAIL PROTECTED] writes: The problem is with kaffe.tools.jar.Jar. Line 1053. Ito I have not studied kaffe/tools/jar/Jar.java yet. But I could Ito reproduce the error. It seems that this error occurs when the Ito files to be archived are not directories but ordinary files. To me, it looks as though Jar.java was written for a different version of the java.util.jar classes (Classpath's versions were recently merged, right?) and they explictly put the Name attribute. Classpath's Manifest class writes Name attributes automatically, so I think Kaffe's Jar is wrong. The fix is trivial, and attached. I believe Casey his analysis is correct. If that doesn't fix the problem then please let me know (I wrote java.util.jar a long time ago so it could certainly be a bug in that code, but I believe it is indeed a bug in the Jar tool). Cheers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] Re: GregorianCalendar fixes
Hi, On Sat, 2003-11-29 at 20:15, Dalibor Topic wrote: after the discussion on the Classpath mailing list, I'd say it looks good ;) Mark, can I check it into Classpath's CVS with an updated ChangeLog entry? I'll check this in while I am resyncing with kaffe. There is only one functional change left between kaffe and classpath in computeFields(): @@ -606,7 +611,7 @@ calculateDay(++day, gregorian); } -fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 12) / 7; +fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 6) / 7; // which day of the week are we (0..6), relative to getFirstDayOfWeek int relativeWeekday = (7 + fields[DAY_OF_WEEK] - getFirstDayOfWeek()) % 7; Haven't looked at who is right here, so won't merge. 2003-11-29 Guilhem Lavaux [EMAIL PROTECTED] * java/util/GregorianCalendar.java (computeTime): 12:00 midnight is AM and 12:00 noon is PM. [...] --- java/util/GregorianCalendar.java.orig Thu Nov 27 15:35:08 2003 +++ java/util/GregorianCalendar.javaThu Nov 27 15:48:25 2003 @@ -402,7 +402,11 @@ { hour = fields[HOUR]; if (isSet[AM_PM] fields[AM_PM] == PM) - hour += 12; + if (hour != 12) /* not Noon */ +hour += 12; + /* Fix the problem of the status of 12:00 AM (midnight). */ + if (isSet[AM_PM] fields[AM_PM] == AM hour == 12) + hour = 0; } int minute = isSet[MINUTE] ? fields[MINUTE] : 0; Cheers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] gjdoc, libxmlj and kaffe
Hi, Played a bit with kaffe, gjdoc and libxmlj. It works mostly. But is difficult to setup since gjdoc and libxmlj haven't seen real releases so you have to get them from CVS. But savnnah is still down so that is kind of hard. For now I have put up my local copies at http://www.klomp.org/mark/classpath/ so people can play with it a bit. Making libxmlj should be easy with just a make make install (maybe a configure first). Dalibor said that he could use the ant build.xml file for gjdoc, but the Makefile is broken. I just did a: $ cd src $ mkdir classes $ jikes-classpath -d classes `find * -name *.java` $ cd classes $ fastjar cf ../../gjdoc.jar * Then to produce API documentation for all of GNU Classpath do something like: $ cd ~/src/classpath $ find java javax -type d ! -regex .*CVS ! -regex .*doc-files | tr '/' '.' | grep -v java.awt.dnd.peer | grep -v java.awt.peer /tmp/packages $ cd /tmp $ mkdir doc $ cd doc $ LD_LIBRARY_PATH=/usr/local/libxmlj/lib time kaffe -mx256M -classpath /home/mark/src/gjdoc/lib/gjdoc.jar:/home/mark/src/gjdoc/src/resources:/home/mark/src/libxmlj gnu.classpath.tools.gjdoc.Main -noemailwarn -sourcepath /home/mark/src/classpath -d . `cat /tmp/packages` Starting out with just one package (like java.lang) will give you results quicker, see obligatory screenshot: http://www.klomp.org/mark/classpath/Screenshot-4.png Doing the whole thing seems to go OK at first. But after two hours of happily generating HTML files it gives: Generating HTML Documentation for java.awt.geom.QuadCurve2D... Generating HTML Documentation for java.awt.geom.QuadCurve2D.Double... I/O error : flush error java.lang.ArrayIndexOutOfBoundsException at gnu.xml.libxmlj.transform.LibxsltStylesheet.libxsltTransform (LibxsltStylesheet.java) at gnu.xml.libxmlj.transform.LibxsltStylesheet.transform (LibxsltStylesheet.java:112) at gnu.xml.libxmlj.transform.TransformerImpl.transform (TransformerImpl.java:235) at gnu.classpath.tools.doclets.xmldoclet.doctranslet.DocTranslet.apply (DocTranslet.java:198) at gnu.classpath.tools.doclets.xmldoclet.Driver.instanceStart (Driver.java:1094) at gnu.classpath.tools.doclets.xmldoclet.Driver.start (Driver.java:232) at java.lang.reflect.Method.invoke0 (Method.java) at java.lang.reflect.Method.invoke (Method.java:255) at gnu.classpath.tools.gjdoc.Main.startDoclet (Main.java:408) at gnu.classpath.tools.gjdoc.Main.start (Main.java:612) at gnu.classpath.tools.gjdoc.Main.main (Main.java:480) ERROR: java.lang.ArrayIndexOutOfBoundsException Done. 1068 warnings 7537.15user 26.38system 2:07:27elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1199major+30340minor)pagefaults 0swaps Of course just generating api documentation for just this one class or just the java.awt.geom package works fine. So the only way to reproduce this seems to be generating the whole thing again and wait another 2 hours. Sigh. The I/O error : flush error seems to come from kaffe/kaffevm/jar.c getDataJarFile(). A quick look indicates that the result of this function is not checked in for example kaffe/kaffeh/support.c, but I don't know if that is related. Cheers, Mark signature.asc Description: This is a digitally signed message part
Re: [kaffe] [OffTopic] Savannah has been compromised
Hi, On Thu, 2003-12-04 at 00:54, Dalibor Topic wrote: since I haven't received any news on this yet, and many people here probably contribute to one project on Savannah or another, I just wanted to spread the news that savannah.gnu,org has been compromised. cracked. broken in. just like debian last week. Thanks. I tried to send the attached message to the classpath mailinglist about it. But it didn't arrive so probably the mailinglist at gnu.org are also down :{ I CCed the gcj mailinglist to make sure most of our contributors know about this issue. I'll try to keep you up to date when I know more. Be careful out there. And please check your machines for any irregularities. Cheers, Mark ---BeginMessage--- Hi all, If you were wondering why CVS doesn't work anymore or why the last classpath 0.07 release hasn't gone up on the gnu.org servers this is the reason. From http://savannah.gnu.org/statement.html: On December 1st, 2003, we discovered that the Savannah system, which is maintained by the Free Software Foundation and provides CVS and development services to the GNU project and other Free Software projects, was compromised at circa November 2nd, 2003. The compromise seems to be of the same nature as the recent attacks on Debian project servers; the attacker seemed to operate identically. However, this incident was distinctly different from the modus operandi we found in the attacks on our FTP server in August 2003. We have also confirmed that an unauthorized party gained root access and installed a root-kit (SucKIT) on November 2nd, 2003. In the interest of continuing cooperation and in helping to improve security for all essential Free Software infrastructure, and despite important philosophical differences, we are working closely with Debian project members to find the perpetrators and to secure essential Free Software infrastructure for the future. We hope to have future joint announcements that discuss a unified strategy for addressing these problems. For the moment, we are installing replacement hardware for the Savannah system, and we will begin restoring the Savannah software this week. Initially, there will be some security related changes which may be inconvenient for our developers. We will try to ease these as we find secure ways to do so. We are in particular researching ways to ensure secured authentication of the source code trees stored on the system. We will send more detailed announcements about efforts to verify the authenticity of the source code hosted on Savannah, and how the community can help in that effort once we've brought the system back online. We hope to have at least minimal services back up by Friday 5 December 2003. [...insert some strong negative statement here, not appropriate for little children...] As soon as I have more information I will let you know. Meanwhile please all check your own machines carefully. Some help for people running Debian GNU/Linux to do this can be found at: http://www.wiggy.net/debian/developer-securing/ (It specifically describes what debian developers should do, but is useful information for everybody.) Mark signature.asc Description: This is a digitally signed message part ---End Message---
[kaffe] Re: GregorianCalendar fixes
Hi, On Fri, 2003-11-28 at 04:39, Stephen Crawley wrote: Mark Wielaard [EMAIL PROTECTED] wrote: On Fri, 2003-11-28 at 02:03, Stephen Crawley wrote: The over-arching principle for Mauve testcases is that the behavior of Sun's Java implementations is the gold standard for conformance testing. I don't agree. We should not create Mauve tests to validate some proprietary library implementation. I don't understand what you are saying here. Sorry, was way past my bedtime. Maybe I should have taken more time explain. I was mainly disturbed by the suggestion that some proprietary implementation should be pointed out as the gold standard and that if that same implementation decides not to fix bugs then it isn't a bug. There are lots of examples of bugs in some widely used implementations. Mauve points those out. For example floating point string representation, or solving the solutions for some quadratic equation and very possible representations of date and time. I haven't checked Ito his test yet, but I hope you agree that even though some implementation might claim say that a certain month has 35 days then it is obviously a bug and not according to spec. What you seem to want is a list of bugs in certain implementations according to Mauve and an explanation why that bug is or isn't solved in that implementation. We don't provide that. Even though it might be useful for some of our users. We are not building Mauve tests in order to validate Sun's implementation. Rather, we are building it to check that other implementations (including Classpath) conform to the accepted specification for Java. The ultimate specification for Java is (according to Sun) the behaviour of Sun's reference implementations. Are you suggesting that there is a more appropriate or more definitive specification of Java? If so, what is it, and why is it more appropriate or definitive? No. Since Sun says what Java is and claims trademark on products which carry that name. It is their definitive specification: The thing that according to Sun is Java. So by definition Mauve isn't The Java Testsuite. But there are publicly published documents and books about the libraries and what Mauve can claim is that it is a testsuite that follows these publicly published specification as closely as possible without favoring any actual implementation. Mauve is a reference test suite that everybody can use and study and might even adapt (to better reflect their understanding of the spec) and publish its own version, which validates differences between core library implementations. In that sense Mauve is its own specification. And for our users it is certainly very useful to use Mauve to compare implementations against the currently dominant proprietary implementation to see if another implementation can be used to easily migrate away from the that implementation. Cheers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] Re: java/text/SimpleDateFormat.java (compileFormat)
Hi, On Thu, 2003-11-27 at 23:25, Ito Kazumitsu wrote: 2003-11-28 Ito Kazumitsu [EMAIL PROTECTED] * java/text/SimpleDateFormat.java (compileFormat): isLowerCase and isUpperCase allow too many characters. Just use = 'A' = 'Z' || = 'a' = 'z'. Thanks a lot for looking after this. I have committed it so that it can make the 0.07 release. BTW about releasing 0.07. I am to tired to roll it now and do all the checks to make sure it is perfect. So I will take a long sleep first. Then make the final test release in the morning. Take a walk on the beach and if nobody complained release it for real in the afternoon. Michael Koch also had some Socket cleanups that he tested with gcj that should go in 0.07 if possible. Cheers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] Re: GregorianCalendar fixes
Hi, On Mon, 2003-11-24 at 23:57, Ito Kazumitsu wrote: 2003-11-25 Ito Kazumitsu [EMAIL PROTECTED] * java/util/GregorianCalendar.java (getLinearTime): Avoid counting the leap day of the leap year twice. (computeFields): First week of month is 1 not 0. Thanks (I made it real sentences - starting with a capital). Looked some more at the code and I see now that the the first change was inside a if (time = gregorianCutover) so it now makes more sense to me. And the second change seems correct given the above remark. I'll commit it in Classpath. Thanks for your work (and patience before it was accepted), Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] null string concatenation and kjc/kaffe bug
Hi, Compiling the following with kjc and then running it with kaffe gives a NullPointerException. But it should give nulla. public class Test { static String something; public static void main(String[] args) throws Exception { something += 'a'; System.out.println(something); } } Found by Arnaud while he was debugging gjdoc. See also https://savannah.gnu.org/patch/?func=detailpatchpatch_id=2334group_id=508 Cheers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] GregorianCalendar fixes
Hi, Since I am not a GregorianCalendar expert I was hoping that someone could review the following patch which I have in my tree from Ito Kazumitsu. He and I wrote a couple of mauve test cases which are fixed by this and I see no new failures. But people didn't seem to be completely comfortable with it back in Augustus/September. It would be nice if we could create even more test cases to make sure that nothing else breaks and to have a ChangeLog entry for this patch (Ito?). Don't really have have time to learn about Calendars so I am just re-posting this patch in the hope that someone can review it. Thanks, Mark Index: java/util/GregorianCalendar.java === RCS file: /cvsroot/classpath/classpath/java/util/GregorianCalendar.java,v retrieving revision 1.20 diff -u -r1.20 GregorianCalendar.java --- java/util/GregorianCalendar.java 12 Aug 2003 13:41:27 - 1.20 +++ java/util/GregorianCalendar.java 21 Nov 2003 16:11:56 - @@ -1,5 +1,5 @@ /* java.util.GregorianCalendar - Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -264,8 +264,10 @@ // // The additional leap year factor accounts for the fact that // a leap day is not seen on Jan 1 of the leap year. + // And on and after the leap day, the leap day has already been + // included in dayOfYear. int gregOffset = (year / 400) - (year / 100) + 2; - if (isLeapYear (year, true) dayOfYear 31 + 29) + if (isLeapYear (year, true)) --gregOffset; time += gregOffset * (24 * 60 * 60 * 1000L); } @@ -604,12 +606,12 @@ calculateDay(++day, gregorian); } -fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 6) / 7; +fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 12) / 7; // which day of the week are we (0..6), relative to getFirstDayOfWeek int relativeWeekday = (7 + fields[DAY_OF_WEEK] - getFirstDayOfWeek()) % 7; -fields[WEEK_OF_MONTH] = (fields[DAY_OF_MONTH] - relativeWeekday + 6) / 7; +fields[WEEK_OF_MONTH] = (fields[DAY_OF_MONTH] - relativeWeekday + 12) / 7; int weekOfYear = (fields[DAY_OF_YEAR] - relativeWeekday + 6) / 7; signature.asc Description: This is a digitally signed message part
[kaffe] Re: Graphical Algorithm documents
Hi, On Mon, 2003-11-17 at 20:16, S. Meslin-Weber wrote: I stumbled on some interesting algorithm documents today and thought others implementing low-level primitives in Java (Graphics and/or Java2D) might find them useful. I emailed the author and we are welcome to use the documents at: http://www.magic-software.com/Documentation/ Hope some other than I will find this useful! Thanks for that info. It looks very useful. It is of course OK to read about those algorithms and create an implementation of them for inclusion in GNU Classpath. But please contact me before you use/copy any code snippets. The commercial-use restrictions in their license look confusing to me and when we want to use it in GNU Classpath (which may be used commercially) we certainly have to contact the author about it (and check with fsf-licensing). Thanks, Mark paranoia maintainer Wielaard signature.asc Description: This is a digitally signed message part
[kaffe] Re: Resynced with GNU Classpath
Hi, On Sat, 2003-10-25 at 20:32, Kaffe CVS wrote: Log: Resynced with GNU Classpath Members: ChangeLog:1.1716-1.1717 libraries/javalib/gnu/java/nio/FileLockImpl.java:1.1-1.2 [...] libraries/javalib/javax/naming/spi/NamingManager.java:1.4-1.5 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.1716 kaffe/ChangeLog:1.1717 --- kaffe/ChangeLog:1.1716Sat Oct 25 12:52:41 2003 +++ kaffe/ChangeLog Sat Oct 25 18:30:20 2003 @@ -1,3 +1,25 @@ +2003-10-25 Dalibor Topic [EMAIL PROTECTED] + + * libraries/javalib/gnu/java/nio/FileLockImpl.java, [...] +libraries/javalib/javax/naming/spi/NamingManager.java: + Resynced with GNU Classpath. If possible then having the actual ChangeLog entries from the Classpath ChangeLog file would be nice to have. That makes it much more easy to see exactly which changes did and didn't go into Kaffe from Classpath. Or any other method to quickly see exactly which version/date these files are from would help track differences in the code base. Cheeers, Mark signature.asc Description: This is a digitally signed message part
[kaffe] Eclipse 3.0M4 on kaffe
Hi, The following quick whacky hacks make Eclipse 3.0M4 work on my Debian GNU/Linux machine with gtk+ 2.2 installed. You will need eclipse-SDK-3.0M4-linux-gtk.zip from: http://download2.eclipse.org/downloads/drops/S-3.0M4-200310101454/ First replace java/net/URLen/decode.java with the versions from GNU Classpath. The apply the attached quick hack that implements provides two (fake) implementations for Get/ReleasePrimitiveArrayCritical JNI functions. Create a kaffe build which is configured with --with-threads=unix-pthreads After installation replace the kaffe/bin/java and kaffe/jre/bin/java scripts with the attached versions. (Eclipse needs some extra memory, doesn't like the default java.vm.version=1.3 and uses some strange system property to get at the bootstrap classes, finally our FileLock isn't implemented yet and throws an Error but Eclipse looks at the last system property to know whether or not to use it.) The unzip the eclipse build you downloaded above. And start it with something like: PATH=/usr/local/kaffe/bin:$PATH LD_LIBRARY_PATH=/usr/local/kaffe/lib:/tmp/eclipse/plugins/org.eclipse.swt.gtk_3.0.0/os/linux/x86 ./eclipse Lots of things work and with the File-New Project and File-New Class you get some wizard which should guide you through a simple Hello World type program which you should be able to run with the menu Run-Run As-Java Application to give you something like: http://www.klomp.org/mark/classpath/Screenshot-Kaffe-Eclipse3.png When you are finished playing look into workspace/.metadata/.log to see what breaks. And then fix it :) Cheers, Mark Index: include/jni.h === RCS file: /cvs/kaffe/kaffe/include/jni.h,v retrieving revision 1.23 diff -u -r1.23 jni.h --- include/jni.h 25 Oct 2003 12:52:39 - 1.23 +++ include/jni.h 30 Oct 2003 21:25:13 - @@ -294,8 +294,8 @@ void* reserved12; // GetStringRegion void* reserved13; // GetStringUTFRegion - void* reserved14; // GetPrimitiveArrayCritical - void* reserved15; // ReleasePromitiveArrayCritical + void* (*GetPrimitiveArrayCritical) (JNIEnv*, jarray, jboolean); + void (*ReleasePrimitiveArrayCritical) (JNIEnv*, jarray, void*, jint); void* reserved16; // GetStringCritical void* reserved17; // ReleaseStringCritical void* reserved18; // NewWeakGlobalRef Index: kaffe/kaffevm/jni.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/jni.c,v retrieving revision 1.95 diff -u -r1.95 jni.c --- kaffe/kaffevm/jni.c 25 Sep 2003 10:06:15 - 1.95 +++ kaffe/kaffevm/jni.c 30 Oct 2003 21:25:14 - @@ -3024,6 +3024,12 @@ return (ret); } +static void* +Kaffe_GetPrimitiveArrayCritical(JNIEnv* env, jarray arr, jbool* iscopy) +{ + return (Kaffe_GetByteArrayElements(env, (jbyteArray)arr, iscopy)); +} + static jchar* Kaffe_GetCharArrayElements(JNIEnv* env, jcharArray arr, jbool* iscopy) { @@ -3159,6 +3165,12 @@ } static void +Kaffe_ReleasePrimitiveArrayCritical(JNIEnv* env, jbyteArray arr, jbyte* elems, jint mode) +{ + Kaffe_ReleaseByteArrayElements(env, (jbyteArray)arr, (jbyte*)elems, mode); +} + +static void Kaffe_ReleaseCharArrayElements(JNIEnv* env, jcharArray arr, jchar* elems, jint mode) { BEGIN_EXCEPTION_HANDLING_VOID(); @@ -4425,8 +4437,8 @@ Kaffe_GetJavaVM, NULL, NULL, - NULL, - NULL, + Kaffe_GetPrimitiveArrayCritical, + Kaffe_ReleasePrimitiveArrayCritical, NULL, NULL, NULL, #! /bin/sh # Pretend Kaffe is Java prefix=/usr/local/kaffe exec_prefix=${prefix} exec ${exec_prefix}/bin/kaffe -mx 256M -Djava.vm.version=1.3 -Dsun.boot.class.path=/usr/local/kaffe/jre/lib/rt.jar -Dorg.eclipse.core.runtime.ignoreLockFile=true ${1+$@} signature.asc Description: This is a digitally signed message part
[kaffe] Some simple java.util.zip changes
Hi, Helmer found a nasty bug in the Classpath readManifest() implementation. Which is now fixed in Classpath and for which there is a new test in Mauve. When I make the following simple changes to kaffe java/util/zip then I can just drop in Classpath java/util/jar and all kaffe tests and the jar mauve tests succeed with that. Cheers, Mark Index: ChangeLog === RCS file: /cvs/kaffe/kaffe/ChangeLog,v retrieving revision 1.1718 diff -u -r1.1718 ChangeLog --- ChangeLog 25 Oct 2003 20:00:11 - 1.1718 +++ ChangeLog 26 Oct 2003 15:05:14 - @@ -1,3 +1,11 @@ +2003-10-26 Mark Wielaard [EMAIL PROTECTED] + + * libraries/javalib/java/util/zip/ZipFile.java + (ZipFile(File f, int mode)): New (dummy) method. + * libraries/javalib/java/util/zip/ZipInputStream.java + (getNextEntry): Use createZipEntry(). + (createZipEntry): Implement. + 2003-10-25 Dalibor Topic [EMAIL PROTECTED] * FAQ/FAQ.automake: Recommend autmake 1.7.8. Index: libraries/javalib/java/util/zip/ZipFile.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/util/zip/ZipFile.java,v retrieving revision 1.11 diff -u -r1.11 ZipFile.java --- libraries/javalib/java/util/zip/ZipFile.java 29 Sep 2003 23:50:26 - 1.11 +++ libraries/javalib/java/util/zip/ZipFile.java 26 Oct 2003 15:05:14 - @@ -51,6 +51,12 @@ this(f.getPath()); } +public ZipFile(File f, int mode) throws ZipException, IOException +{ + // XXX ignoring mode for now + this(f); +} + public void close() throws IOException { if (zip != null) { Index: libraries/javalib/java/util/zip/ZipInputStream.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/util/zip/ZipInputStream.java,v retrieving revision 1.17 diff -u -r1.17 ZipInputStream.java --- libraries/javalib/java/util/zip/ZipInputStream.java 24 Oct 2003 16:42:11 - 1.17 +++ libraries/javalib/java/util/zip/ZipInputStream.java 26 Oct 2003 15:05:15 - @@ -63,7 +63,7 @@ readFully(extra, 0, extra.length); // Setup new entry - entry = new ZipEntry(UTF8.decode(nameBuf)); + entry = createZipEntry(UTF8.decode(nameBuf)); entry.version = get16(zheader, LOCVER); entry.flag= get16(zheader, LOCFLG); @@ -211,8 +211,7 @@ } protected ZipEntry createZipEntry(String name) { - // XXX FIXME what is this supposed to do? - return null; + return new ZipEntry(name); } } signature.asc Description: This is a digitally signed message part
Re: [kaffe] loadClass() vs. loadClass()
Hi, On Fri, 2003-09-19 at 16:23, Helmer Krämer wrote: Whenever kaffe has to load some class using a user defined loader, it invokes the two parameter form of loadClass. [...] The simple and quick fix would be to modify kaffe so it calls the loadClass(String) method of a user defined class loader instead of the loadClass(String, boolean) one. In theory, this should not break existing code since loadClass(String) simply calls the other method. I don't know whether this is the right way to fix this, though. I think this is the correct fix. See: http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#79448 1 Since JDK release 1.1 the Java virtual machine invokes the loadClass method of a class loader in order to cause it to load a class or interface. The argument to loadClass is the name of the class or interface to be loaded. There is also a two-argument version of the loadClass method. The second argument is a boolean that indicates whether the class or interface is to be linked or not. Only the two-argument version was supplied in JDK release 1.0.2, and the Java virtual machine relied on it to link the loaded class or interface. From JDK release 1.1 onward, the Java virtual machine links the class or interface directly, without relying on the class loader. You should also call the one argument ClassLoader.loadClass(String) method for Class.forName(), but I cannot quickly find where in the spec this is defined. Cheers, Mark signature.asc Description: This is a digitally signed message part
Re: [kaffe] Serialization
Hi, On Tue, 2003-08-12 at 01:13, Brian Jones wrote: Sweet, when could this go into Classpath? Guilhem already send me a patch and as soon as the paperwork is done it will almost certainly go immediately (I will review it, but it looks pretty good). And Guilhem already checked in this new code (the GNU Classpath ObjectStream classes with his fixes into Kaffe so people can already play with it if they want. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] System.loadLibrary() should look in /lib and /usr/lib
Hi, On Sun, 2003-07-27 at 13:15, Dalibor Topic wrote: sorry for me taking so long to reply, I'm now going though my mailbiox folder with patches and suggestion, and noticed I hadn't replied. When doing a System.loadLibrary() kaffe doesn't look into the standard /lib and /usr/lib directories for the library. But gives: java.lang.UnsatisfiedLinkError: libGTKJava: not found Adding its directory to LD_LIBRARY_PATH may help. And indeed adding /usr/lib (where the library is installed) to LD_LIBRARY_PATH seems to work, but it would be more convenient if kaffe would automatically load standard libraries (from /lib and /usr/lib). I wrote a test case: public class LibLoad { public static void main(String [] args) { String lpath = System.getProperty(java.library.path); System.out.println(lpath); System.loadLibrary(args[0]); } } [...] that's the way it works in kaffe, too. Given that standard library paths are system dependant (i.e. there is no /lib on Win32 ;), I think we should keep doing as JDK does, and use LD_LIBRARY_PATH. Unfortunately, the Java Class Library books only specify the search order on Win32. Debian has now defined a standard directory for packages containing JNI libraries: /usr/lib/jni (see http://www.debian.org/doc/packaging-manuals/java-policy/c36.html). It is the job of the Debian okage maintainer to make sure that the VM works that way and the above LD_LIBRARY_PATH trick seems to make it possible. Haven't checked yet if the new kaffe package in Debian already does this. But it might be a good idea to see how this works out for Debian and maybe adopt this policy (searching for JNI libraries in /usr/lib/jni by default) for systems that have such a directory. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
StackTraceElements (Was: [kaffe] Notes on kaffe (GNU Classpathintegration) todo items)
Hi, On Mon, 2003-07-14 at 10:19, Helmer Krämer wrote: i've got a working version of this in my local tree (jetty for jdk 1.4 was working fine with it), but somehow didn't get around to commit it :( Could you probably post a patch of your implementation so I can fix and commit it? I got rid of the crashes, but there are still some regression test failures (some are just textual since the output of the stack trace is different, but some seem real). The attached patch merges Throwable.java from GNU Classpath which is used as is and adds a Kaffe specific VMThrowable class that holds the backtrace and provides the actual StackTraceElements when needed. I have to admit that I actually did not really design it but just copied bits and pieces of existing code of kaffevm. And C isn't really my language of choice. So if you could do a review of what I have now that would be great. Here is a ChangeLog entry for the attached (gzipped) patch: 2003-07-14 Mark Wielaard [EMAIL PROTECTED] * include/Makefile.am (INSTALL_DERIVED_HDRS): Add java_lang_VMThrowable.h and java_lang_StackTraceElement.h. * include/Makefile.in: Regenerated. * kaffe/kaffevm/baseClasses.h (javaLangVMThrowable): New extern struct. (javaLangStackTraceElement): Likewise. * kaffe/kaffevm/baseClasses.h (javaLangVMThrowable): New base class. (javaLangVMThrowable): Likewise. (initBaseClasses): loadStaticClass new base classes. * kaffe/kaffevm/exception.c (throwException): Get and initialize vmstate. (nullException): Create vmstate for exception. (unhandledException): Use new Throwable-detailedMessage field name. (floatingException): Create vmstate for exception. * kaffe/kaffevm/stackTrace.c (getLineNumber): New method. (getStackTraceElements): New method. (printStackTrace): Get backtrace from vmState. * libraries/clib/native/System.c (java_lang_System_debugE): Use new Throwable-detailedMessage field name. * libraries/clib/native/Throwable.c (java_lang_Throwable_fillInStackTrace): Removed. (java_lang_Throwable_printStackTrace0): Likewise. (java_lang_VMThrowable_fillInStackTrace): New method. (java_lang_VMThrowable_getStackTrace): Likewise. * libraries/javalib/java/lang/Throwable.java: Replaced with Classpath version. * libraries/javalib/java/lang/VMThrowable.java: New class. * libraries/javalib/bootstrap.classlist: Add VMThrowable. * libraries/javalib/essential.files: Add StackTaceElement and VMThrowable. * libraries/javalib/Klasses.jar.bootstrap: Regenerated. With this patch the attached program gives the following stack trace: java.lang.NullPointerException at Throw.testNull (Throw.java:17) at Throw.main (Throw.java:5) java.lang.ArithmeticException at Throw.testDivZero (Throw.java:30) at Throw.main (Throw.java:7) java.lang.Exception: b confused at Throw.a (Throw.java:58) at Throw.testChain (Throw.java:42) at Throw.main (Throw.java:9) Caused by: java.lang.Exception: d broken at Throw.c (Throw.java:75) at Throw.b (Throw.java:64) at Throw.a (Throw.java:54) ...2 more Caused by: java.lang.Exception: fatal error at Throw.e (Throw.java:86) at Throw.d (Throw.java:81) at Throw.c (Throw.java:71) ...4 more BTW how do you keep track of copyrights? I added a new copyright header to every file I changed, but looking through the rest of the sources this seems not customary. Cheers, Mark public class Throw { public static void main(String[] args) { testNull(); System.out.println(); testDivZero(); System.out.println(); testChain(); } private static void testNull() { try { Object o = null; o.toString(); } catch (Throwable t) { t.printStackTrace(); } } private static void testDivZero() { try { int i = 0; int j = 42/i; } catch (Throwable t) { t.printStackTrace(); } } private static void testChain() { try { a(); } catch(Exception e) { e.printStackTrace(); } } static void a() throws Exception { try { b(); } catch(Exception e) { throw new Exception(b confused, e); } } static void b() throws Exception { c(); } static void c() throws Exception { try { d(); } catch(Exception e) { throw new Exception(d broken, e); } } static void d() throws Exception { e(); } static void e() throws Exception { throw new Exception(fatal error); } } throwable.patch.gz Description: GNU Zip compressed data
[kaffe] Notes on kaffe (GNU Classpath integration) todo items
Hi, Dalibor Topic from the Kaffe OpenVM project and me saw each other last week when we went to the Libre Software Meeting. Attached are the (very raw) notes I made on what things could be imported from GNU Classpath into the kaffe library (and some other random notes). They might also be interesting to the GNU Classpath hackers to see where/how the code ends up in another free software project. Cheers, Mark Notes LSM meeting, Friday Jul 11, 2003 (Dalibor Topic, Mark Wielaard) === Things that could be imported from GNU Classpath into kaffe === - Complete GNU Classpath Collection import. Importing AbstractMap makes some mauve tests fail. - Goal to run japitools. - And import even more classpath classes that depend on collection stuff. - java.util.zip How to modularize to allow multiple implementations to coexist? (See what classes are different between classpath/gcj) Deflater/Inflater... Dalibor has still some outstanding bug reports against Classpath java.util.zip. - Goal automatically use pure java implementation if zlib isn't available. (This is currently already done for the BigInteger class, kaffe has a native implementation, but falls back to the non-native GNU Classpath version if the gmp library is not installed.) - Serialization ObjectIn/OutputStreams. Completely different implementations kaffe/GNU Classpath Some Mauve failures with Classpath/gcj code. Some other/same failures with current kaffe code. See also Eclipse startup stream failures. - Goal Jython installer to run. - Eclipse installer without ObjectStream failures - StackTraceElement stuff (pure java Throwable). Mark has some code hacked up. It compiles... but crashes in spectacular ways. - Goal log4j (used by either JBOSS or Tomcat) uses XMLized stacktraces from StackTraceElements. - Verifier and security manager checks - Classpath seems to have all the proper Permission checks in place. (But has anybody every really used it? Probably not, because AccessController isn't really implemented.) - Jar verification/certification handling isn't implemented. (Neither in Classpath or Kaffe.) - Policyfile processor (What to use for it?) - Goal savely run applets with appletviewer. - NIO - Only java part in Classpath. - gcj has some native (CNI) implementations (not complete) but JNI is completely stubs at the moment. - Talk to Michael Koch. Mark bought a book on NIO stuff and will probably look at it soon. - Goal run Freenet! === Some random other stuff === - Security/Crypto - Choose default provider (kaffe, GNU Classpath and/or GNU Crypto). - FAQ combining kaffe and GNU Crypto (provides javax.crypto and much more algorithms) - Make gjdoc the default tool to generate API doc. - Problem, only really available in CVS, not current packaged version. - javax.comm stuff - Kaffe has incomplete stubs - There is the rxtx (sp?) project which has been usable. (Check kaffe mailinglist archives) They have ported to lots of platforms - Wonka also has a implementation... (Status?) - Swing (text) - Claspath has some implemented stuff, but large parts are just stubs. - Start simple with javax.swing.text.html parser stuff. Some could get going with gnu jaxp giving it correct DTDs (Dalibor his crazy idea). Look at JTidy/HTMLTidy. - Goal make Appletviewer really parse parse. - Bugs that poped up when Mark showed various things on his laptop. - -Xmx doesn't work (off by one bug), workaround use -mx. Dalibor quickly hacked up a patch, but the current command line parsing is broken... - gmp replacement configuration is broken when both tests fail. - tritonus install goes bad...
[kaffe] Eclipse and strange ClassCastException
Hi, Did anybody try eclipse recently? When trying to run the eclipse-SDK-2.1-linux-gtk release (make sure that your java.version in System.csays 1.3 otherwise it won't try to run at all) I get a strange ClassCastException (workspace/.metainfo/.log file): java.lang.ExceptionInInitializerError: [exception was java.lang.ClassCastException: can't cast `org/apache/xerces/parsers/StandardParserConfiguration' to `org/apache/xerces/xni/parser/XMLParserConfiguration'] at org.eclipse.core.internal.plugins.RegistryLoader.processManifestFile(RegistryLoader.java:89) The strange thing is that at that point of the code there is no such cast (the eclipse binary release comes with complete source code). I tried a kaffe build without the xml and jaxp files but that wasn't it. The StandardParserConfiguration class implements the XMLPullParserConfiguration interface which extends the XMLParserConfiguration interface. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Re: kaffe and java-gnome (it works!)
Hi, On Sun, 2003-07-06 at 15:15, Dalibor Topic wrote: Could you post a short ChangeLog entry so that I can check it in, and mark java-gnome as working on the application compatibility web page? 2003-07-07 Mark Wielaard [EMAIL PROTECTED] * include/jni.h (JNINativeInterface): Mark reserved words which are used in JNI 1.2/1.4. Add ExceptionCheck slot. (JavaVMAttachArgs): Mark reserved3 word as future AttachCurrentThreadAsDaemon. (JNIEnv_): Add ExceptionCheck. * include/jni_cpp.h (JNIEnv::CheckException): New inline function. * kaffe/kaffevm/jni.c (Kaffe_ExceptionCheck): New function. (Kaffe_JNINativeInterface): Add Kaffe_ExceptionCheck function and mark unsupported callbacks with NULL. * kaffe/kaffevm/external.c (loadNativeLibrary2) Call JNI_OnLoad function if it exists in the library. Attached is a patch for the web page. I have been so bold to also add Snark. BTW nice list! Cheers, Mark Index: compatibility_applications.shtml === RCS file: /cvs/kaffe/website/compatibility_applications.shtml,v retrieving revision 1.24 diff -u -r1.24 compatibility_applications.shtml --- compatibility_applications.shtml 8 Jun 2003 14:10:36 - 1.24 +++ compatibility_applications.shtml 7 Jul 2003 08:53:15 - @@ -358,6 +358,14 @@ Status: Untested.p + lia href=http://www.klomp.org/snark/;Snark/ap + + A program for distributing and sharing files with the + BitTorrent protocol. Has an integrated (tiny) HTTP server + and torrent file tracker and an experimental java-gMon Jul 7 10:56:04 CEST 2003nome + GUI.p + + Status: Works.p /ol a name=nongraphicalclientapps @@ -625,6 +633,12 @@ Status: Untested.p + lia href=http://java-gnome.sourceforge.net/;java-gnome/ap + + A set of Java bindings for the GNOME and GTK libraries.p + + Status: Works.p + /ol @@ -652,7 +666,7 @@ a href=mailto:[EMAIL PROTECTED]Jim Pick/abr !-- Created: Wed Mar 13 19:10:07 PST 2002 -- !-- hhmts start -- -Last modified: Fri Apr 4 19:04:39 CEST 2003 +Last modified: Mon Jul 7 10:56:04 CEST 2003 !-- hhmts end -- /div !--#include virtual=bottom.html--
Re: [kaffe] Eclipse and strange ClassCastException
Hi, On Mon, 2003-07-07 at 11:25, Helmer Krämer wrote: the problem is that 'StandardParserConfiguration' is loaded by a PluginClassLoader and 'XMLParserConfiguration' is loaded by the PlatformClassLoader (the attached patch includes this info in the message of the ClassCastException). Nice patch. Useful info when you are playing with complex classloader hierarchies. (If you include it then I would only add the additional information if the classloaders are actaully different.) From what I know about eclipse, I would assume that the PlatformClassLoader should not be able to find that class, should it? Actually it should but it does so in a tricky way and then removes (!) those classes again from the classloader. This looks like it might be the same problem that IKVM.NET had: http://weblog.ikvm.net/PermaLink.aspx/66 The workaround for IKVM.NET was to add the xmlParserAPIs.jar and xercesImpl.jar to the bootclasspath but that doesn't work for kaffe. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Advogato
Hi, On Mon, 2003-07-07 at 22:38, Rob Gonzalez wrote: I recently joined Advogato (as gonzo) and was wondering how I would go about getting listed as a Contributor or Developer or something for the Kaffe Open VM project on that site :) I figured someone here (Jim?) would be the person to know. Just login on Advogato and go to the kaffe project page: http://www.advogato.org/proj/Kaffe%20OpenVM/ then you can just add yourself as a developer on the project. BTW Advogato is a fun place to keep up to date on the latest Free Software happenings. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Re: kaffe and java-gnome (it works!)
Hi, On Sat, 2003-07-05 at 01:35, Mark Wielaard wrote: java-gnome uses more JNI 1.2 stuff like ExceptionCheck(). When changing those calls in java-gnome to use the less efficient JNI 1.1 method ExceptionOccured() my program seems to actually work! And attached is the complete (admittedly minimal) patch that I use to get kaffe (configure --with-threads=unix-pthreads) to run an unpatched java-gnome build. Cheers, Mark Index: include/jni.h === RCS file: /cvs/kaffe/kaffe/include/jni.h,v retrieving revision 1.18 diff -u -r1.18 jni.h --- include/jni.h 18 May 2003 19:20:58 - 1.18 +++ include/jni.h 5 Jul 2003 08:55:44 - @@ -75,26 +75,26 @@ jint (*GetVersion) (JNIEnv*); jclass (*DefineClass) (JNIEnv*, jobject, const jbyte*, jsize); jclass (*FindClass) (JNIEnv*, const char*); - void* reserved4; - void* reserved5; - void* reserved6; + void* reserved4; // FromReflectedMethod + void* reserved5; // FromReflectedField + void* reserved6; // ToReflectedMethod jclass (*GetSuperclass) (JNIEnv*, jclass); jboolean (*IsAssignableFrom) (JNIEnv*, jclass, jclass); - void* reserved7; + void* reserved7; // ToReflectedField jint (*Throw) (JNIEnv*, jobject); jint (*ThrowNew) (JNIEnv*, jclass, const char*); jthrowable (*ExceptionOccurred) (JNIEnv*); void (*ExceptionDescribe) (JNIEnv*); void (*ExceptionClear) (JNIEnv*); void (*FatalError) (JNIEnv*, const char*); - void* reserved8; - void* reserved9; + void* reserved8; // PushLocalFrame + void* reserved9; // PopLocalFrame jref (*NewGlobalRef) (JNIEnv*, jref); void (*DeleteGlobalRef) (JNIEnv*, jref); void (*DeleteLocalRef) (JNIEnv*, jref); jboolean (*IsSameObject) (JNIEnv*, jobject, jobject); - void* reserved10; - void* reserved11; + void* reserved10; // NewLocalRef + void* reserved11; // EnsureLocalCapacity jobject (*AllocObject) (JNIEnv*, jclass); jobject (*NewObject) (JNIEnv*, jclass, jmethodID, ...); jobject (*NewObjectV) (JNIEnv*, jclass, jmethodID, va_list); @@ -289,6 +289,23 @@ jint (*MonitorExit) (JNIEnv*, jobject); jint (*GetJavaVM) (JNIEnv*, JavaVM**); + // New JNI 1.2 functions + + void* reserved12; // GetStringRegion + void* reserved13; // GetStringUTFRegion + void* reserved14; // GetPrimitiveArrayCritical + void* reserved15; // ReleasePromitiveArrayCritical + void* reserved16; // GetStringCritical + void* reserved17; // ReleaseStringCritical + void* reserved18; // NewWeakGlobalRef + void* reserved19; // DeleteWeakGlobalRef + jboolean (*ExceptionCheck) (JNIEnv*); + + // New JNI 1.4 functions + + void* reserved20; // NewDirectByteBuffer + void* reserved21; // GetDirectBufferAddress + void* reserved22; // GetDirectBufferCapacity }; struct JavaVMAttachArgs { @@ -309,6 +326,7 @@ jint (*AttachCurrentThread) (JavaVM*, JNIEnv**, ThreadAttachArgs*); jint (*DetachCurrentThread) (JavaVM*); jint (*GetEnv) (JavaVM*, void**, jint); + void* reserved3; // AttachCurrentThreadAsDaemon }; struct JNIEnv_ { @@ -522,6 +540,7 @@ jint MonitorEnter(jobject); jint MonitorExit(jobject); jint GetJavaVM(JavaVM**); + jboolean ExceptionCheck(void); #endif }; Index: include/jni_cpp.h === RCS file: /cvs/kaffe/kaffe/include/jni_cpp.h,v retrieving revision 1.4 diff -u -r1.4 jni_cpp.h --- include/jni_cpp.h 6 Apr 1999 19:13:56 - 1.4 +++ include/jni_cpp.h 5 Jul 2003 08:55:44 - @@ -1201,4 +1201,9 @@ return (functions-GetJavaVM(this, a)); } +inline jboolean JNIEnv::CheckException(void) +{ + return (functions-CheckException(this)); +} + #endif Index: kaffe/kaffevm/external.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/external.c,v retrieving revision 1.46 diff -u -r1.46 external.c --- kaffe/kaffevm/external.c 11 Jun 2003 16:54:14 - 1.46 +++ kaffe/kaffevm/external.c 5 Jul 2003 08:55:44 - @@ -115,6 +115,8 @@ extern jint Kaffe_JNI_native(Method*); +extern JavaVM Kaffe_JavaVM; + /* * Error stub function. Point unresolved link errors here to avoid * problems. @@ -316,6 +318,12 @@ #if defined(KAFFE_FEEDBACK) feedbackLibrary(path, true); #endif + + void *func = loadNativeLibrarySym(JNI_OnLoad); + if (func != NULL) { + JavaVM *jvm = Kaffe_JavaVM; + jint vers = ((jint(JNICALL *)(JavaVM *, void *))func)(jvm, NULL); + } return index; } Index: kaffe/kaffevm/jni.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/jni.c,v retrieving revision 1.84 diff -u -r1.84 jni.c --- kaffe/kaffevm/jni.c 30 Jun 2003 19:30:27 - 1.84 +++ kaffe/kaffevm/jni.c 5 Jul 2003 08:55:47 - @@ -435,6 +435,21 @@ return (obj); } +static jboolean +Kaffe_ExceptionCheck(JNIEnv* env) +{ + jboolean result; + jobject obj; + + BEGIN_EXCEPTION_HANDLING(0); + + obj = unhand(getCurrentThread())-exceptObj; + result = (obj == NULL) ? JNI_FALSE
kaffe and java-gnome (Was: [kaffe] System.loadLibrary() shouldlook in /lib and /usr/lib)
Hi, On Sun, 2003-06-22 at 15:49, Mark Wielaard wrote: On Sun, 2003-06-22 at 14:13, Mark Wielaard wrote: And indeed adding /usr/lib (where the library is installed) to LD_LIBRARY_PATH seems to work, but it would be more convenient if kaffe would automatically load standard libraries (from /lib and /usr/lib). Note that the latest debian packages store the JNI libraries in /usr/lib/jni. Work is a big word. I am trying to get my application that uses the java-gnome libraries working with kaffe (it works with gij) but it crashes in spectacular ways. Has someone successfully used java-gnome with kaffe? I played a bit more with it. And as long as I don't use glib timer callbacks I can play a bit with some windows and widgets. One of the problem with glib Timer support is that kaffe doesn't implement JNI_OnLoad() which java-gnome uses to store a pointer to the JavaVM for use in its own callback funtions. But even if I work around this I don't get that far when enabling the glib timer. Often kaffe will say that all threads are deadlocked. This seems to come from the fact that native method GtkMain() never returns. Dumping live threads: `gc' tid 0x825900c, status SUSPENDED flags DONTSTOP [EMAIL PROTECTED] (0x825900c-|) `finaliser' tid 0x825000c, status SUSPENDED flags DONTSTOP [EMAIL PROTECTED] (0x825000c-|) `main' tid 0x8119028, status SUSPENDED flags NOSTACKALLOC DONTSTOP [EMAIL PROTECTED] (0x8119028-|) Deadlock: all threads blocked on internal events ./snark-gnome.sh: line 9: 23839 Aborted ${JAVA} -verifyremote -classpath ${CLASSPATH} ${MAINCLASS} $* Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: kaffe and java-gnome (Was: [kaffe] System.loadLibrary() shouldlook in /lib and /usr/lib)
Hi Helmer, On Fri, 2003-07-04 at 23:25, Helmer Krämer wrote: seems like you're using the unix-jthreads threading system, right? Have you already tried what happens when you're using unix-pthreads instead? Thanks. When configure is given --with-threads=unix-pthreads it works a bit better. No more blocking threads and my other threads seem to actually run now. Good. Attached is my very simple JNI_OnLoad() support patch. But there is still some problem when the glib timer fires so it might be a bit bogus even though it seems to call the correct function when the library is loaded. Cheers, Mark Index: kaffe/kaffevm/external.c === RCS file: /cvs/kaffe/kaffe/kaffe/kaffevm/external.c,v retrieving revision 1.46 diff -u -r1.46 external.c --- kaffe/kaffevm/external.c 11 Jun 2003 16:54:14 - 1.46 +++ kaffe/kaffevm/external.c 4 Jul 2003 22:43:34 - @@ -115,6 +115,8 @@ extern jint Kaffe_JNI_native(Method*); +extern JavaVM Kaffe_JavaVM; + /* * Error stub function. Point unresolved link errors here to avoid * problems. @@ -316,6 +318,12 @@ #if defined(KAFFE_FEEDBACK) feedbackLibrary(path, true); #endif + + void *func = loadNativeLibrarySym(JNI_OnLoad); + if (func != NULL) { + JavaVM *jvm = Kaffe_JavaVM; + jint vers = ((jint(JNICALL *)(JavaVM *, void *))func)(jvm, NULL); + } return index; }
Re: [kaffe] The Verifier and Regression Tests
Hi, On Mon, 2003-06-30 at 00:05, Rob Gonzalez wrote: It would be nice if people would test kaffe with the verifier on whatever they're working on. By default kaffe doesn't not do any verification, but if you run it with -verifyremote it will verify everything that's not from the bootclasspath (i.e. the standard libraries). I tried a couple of things and it all seemed to work. BTW. Do you know about the verifier testsuite from Mauve? Tom Tromey who wrote the gcj verifier and Jeroen Frijters from the IKVM.NET project have checked in some tests written in Jasmin. It is in the verify module of Mauve CVS. http://sources.redhat.com/cgi-bin/cvsweb.cgi/verify/?cvsroot=mauve Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Build system for kjc / external jars + Jetty/JSPsuccess
Hi, On Thu, 2003-06-26 at 15:59, Dalibor Topic wrote: I'm not sure how it will affect kaffe's status in debian though. Didn't they have that weird policy that if we used ant anywhere, kaffe would have to be removed from debian-free? Or am I just misremembering last year's big licensing thread? According to http://packages.debian.org/unstable/devel/ant.html Ant is currently not part of Debian (main). And anything that (build) depends on something that is not part of Debian can also not be part of Debian. But I do admit that I am not sure why ant is not in main since it seems that all dependencies can be satisfied by free software packages in Debian. Are there any Debian developers on this list that know how to see what keeps a package from main (and in particular why Ant is kept out of main at the moment)? Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] System.loadLibrary() should look in /lib and /usr/lib
On Sun, 2003-06-22 at 14:13, Mark Wielaard wrote: And indeed adding /usr/lib (where the library is installed) to LD_LIBRARY_PATH seems to work, but it would be more convenient if kaffe would automatically load standard libraries (from /lib and /usr/lib). Work is a big word. I am trying to get my application that uses the java-gnome libraries working with kaffe (it works with gij) but it crashes in spectacular ways. Has someone successfully used java-gnome with kaffe? I always get some warnings during startup: (??:8927): Gdk-WARNING **: Error converting from UTF-8 to 'ANSI_X3.4-1968': Invalid byte sequence in conversion input Often the following exception: java.lang.ExceptionInInitializerError: [exception was java.lang.NullPointerException] at java.lang.Class.forName(Class.java:native) at java.lang.Class.forName(Class.java:45) at java.net.InetAddress.clinit(InetAddress.java:54) at java.net.ServerSocket.init(ServerSocket.java:54) at java.net.ServerSocket.init(ServerSocket.java:31) at java.net.ServerSocket.init(ServerSocket.java:27) at org.klomp.snark.Snark.init(Snark.java:204) at org.klomp.snark.Snark.parseArguments(Snark.java:425) at org.klomp.snark.SnarkGnome.run(SnarkGnome.java:293) at java.lang.Thread.run(Thread.java:334) java.lang.UnsatisfiedLinkError: Cannot find working InetAddressImpl at java.net.ServerSocket.init(ServerSocket.java:54) at java.net.ServerSocket.init(ServerSocket.java:31) at java.net.ServerSocket.init(ServerSocket.java:27) at org.klomp.snark.Snark.init(Snark.java:204) at org.klomp.snark.Snark.parseArguments(Snark.java:425) at org.klomp.snark.SnarkGnome.run(SnarkGnome.java:293) at java.lang.Thread.run(Thread.java:334) Sometimes almost immediatly: Internal error: caught an unexpected exception. Please check your CLASSPATH and your installation. java/lang/NullPointerException at java.lang.Thread.finish(Thread.java:201) Aborted Or: Dumping live threads: `Thread-0' tid 0x84ca00c, status SUSPENDED flags DONTSTOP [EMAIL PROTECTED] (0x84ca00c-|) `gc' tid 0x825900c, status SUSPENDED flags DONTSTOP [EMAIL PROTECTED] (0x825900c-|) `finaliser' tid 0x825000c, status SUSPENDED flags DONTSTOP [EMAIL PROTECTED] (0x825000c-|) `main' tid 0x8119028, status SUSPENDED flags NOSTACKALLOC DONTSTOP [EMAIL PROTECTED] (0x8119028-|) Deadlock: all threads blocked on internal events ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Problem with BufferedInputStream [patch]
Hi, On Thu, 2003-06-05 at 15:48, Helmer Krämer wrote: Just some minor comments, though. If I understand the spec correctly, BufferedInputStream.read() should block until data is available and read as much of it as possible afterwards (either until the destination buffer is full or until further reading from the underlying input stream would block again). IMHO, simply removing the loop would break this, since without the loop you will only read as much data as is already buffered in the BufferedInputStream itself, you will not take care of data that might be available in the underlying input stream and thus could be read without blocking. The Java Class Libraries (second edition, volume 1) isn't that clear on the subject. But the online java doc (1.4.2) say: This method implements the general contract of the corresponding read method of the InputStream class. As an additional convenience, it attempts to read as many bytes as possible by repeatedly invoking the read method of the underlying stream. This iterated read continues until one of the following conditions becomes true: * The specified number of bytes have been read, * The read method of the underlying stream returns -1, indicating end-of-file, or * The available method of the underlying stream returns zero, indicating that further input requests would block. So I would not completely remove the loop, but rather replace it with something like do {} while (len0 available()0); dunno whether that's really more correct, though... What do you think? Seems that is more correct. But since available() isn't that reliable I wouldn't implement it that way since it might make the method block much more then needed. See for example the java.util.ZipInputStream available() method definition (which says to almost always returns 1!). Also note that the javadoc say: Subclasses of this class are encouraged, but not required, to attempt to read as many bytes as possible in the same fashion. So users cannot rely on this behaviour anyway. Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
[kaffe] Problem with BufferedInputStream [patch]
Hi, I tried to get my java bittorrent project (http://www.klomp.org/snark/), working with kaffe and found a problem with BufferedInputStream. The code contains the following construct (simplified, the real code uses a Socket InputStream): public class ReadLineTest { public static void main(String args[]) throws Exception { InputStream in = System.in; BufferedInputStream bis = new BufferedInputStream(in); BufferedReader br = new BufferedReader (new InputStreamReader(bis, US-ASCII)); String line = br.readLine(); System.out.println(line); } } The expected behaviour is for the program to read a line and print it. But readLine() will not return with the first line till at least 2048 characters have been input (which can be multiple lines). The problem is in BufferedInputStream._read(byte b[], int off, int len). Which tries to fill the given byte[] with len bytes even if it has buffered less bytes (so it will keep readingfrom the underlying InputStream). The attached patch removes the while (len 0) construct which makes the above program (and The Hunting of the Snark Project) work correctly. Mauve and make check results do not show regressions with this change. Cheers, Mark Index: libraries/javalib/java/io/BufferedInputStream.java === RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/io/BufferedInputStream.java,v retrieving revision 1.10 diff -u -r1.10 BufferedInputStream.java --- libraries/javalib/java/io/BufferedInputStream.java 4 Apr 2003 06:11:41 - 1.10 +++ libraries/javalib/java/io/BufferedInputStream.java 5 Jun 2003 12:22:38 - @@ -102,44 +102,34 @@ return (1); } - int total = 0; - while (len 0) { - - // If buffer fully consumed, invalidate mark reset buffer - if (pos == buf.length) { - pos = count = 0; - markpos = -1; - } - - // Buffer empty? - int nread; - if (pos == count) { + // If buffer fully consumed, invalidate mark reset buffer + if (pos == buf.length) { + pos = count = 0; + markpos = -1; + } - // If the amount requested is more than the size - // of the buffer, we might as well optimize with - // a direct read to avoid needless copying of data. - if (len = buf.length) { -if ((nread = super.read(b, off, len)) == -1) { - return (total 0) ? total : -1; -} -return total + nread; - } + // Buffer empty? + if (pos == count) { - // Read another buffer's worth of data - if (!fillBuffer()) { -return (total 0) ? total : -1; - } + // If the amount requested is more than the size + // of the buffer, we might as well optimize with + // a direct read to avoid needless copying of data. + if (len = buf.length) { + return super.read(b, off, len); } - // Copy the next chunk of bytes from our buffer - nread = Math.min(count - pos, len); - System.arraycopy(buf, pos, b, off, nread); - total += nread; - pos += nread; - off += nread; - len -= nread; + // Read another buffer's worth of data + if (!fillBuffer()) { + return -1; + } } - return total; + + // Copy the next chunk of bytes from our buffer + int nread = Math.min(count - pos, len); + System.arraycopy(buf, pos, b, off, nread); + pos += nread; + + return nread; } public synchronized void reset() throws IOException {
Re: [kaffe] Kaffe and Freenet, round (N+1)
Hi, On Tue, 2003-06-03 at 01:36, Greg Wooledge wrote: Tech stuff: Freenet build 6043 or 593, Kaffe CVS from 2003-06-02, on OpenBSD 3.2 x86. Kaffe was configured with ./configure --with-includes=/usr/local/include --with-libraries=/usr/local/lib --with-engine=jit3 --enable-debug. Freenet was built with jikes 1.14 on a Debian unstable x86 box. You might want to try to configure kaffe with --enable-pure-java-math that will give you another (the GNU Classpath) java.math.BigInteger implementation (which doesn't use the native libgmp). Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: jikes 1.17 bug (Was: Re: [kaffe] Some patches to use jikes)
Hi, On Fri, 2002-12-06 at 16:56, Hervé Roussain wrote: It seems to be a jikes bug. But it is also a gcj bug (after a comment in SocketImpl.java DatagramSocketImpl.java in classpath's source) that classpath solve by redeclarations of setOption and getOption methods in the 2 mentioned classes. If you decide to do the same thing than in GNU Classpath, don't forget the DatagramSocketImpl (it has the same problem but this is not shown with regression tests). How interesting that this issue suddenly pops up in every VM implementation at the same time. It is actually a bug in the VM that is triggered by the fact that older byte code compilers added extra methods to abstract classes when they implemented interfaces but didn't declare the methods. It was workaround for old Sun VMs, but since Sun fixed the bug in their VM the workaround is no longer emitted by compilers. You can find more info at: IK.VM.NET: http://radio.weblogs.com/0109845/2002/11/22.html#a65 http://radio.weblogs.com/0109845/2002/11/25.html#a67 GIJ: http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=viewdatabase=gccpr=8823 Wonka: http://wonka.acunia.com/hypermail/hypermail-list008/2002-12/0012.html And yes, I just tested the Kissme VM and it seems to have the same issue :{ Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] Merging missing classes from GNU Classpath
Hi, (I added the classpath mailinglist to the CC.) On Fri, 2002-10-25 at 16:02, Dalibor Topic wrote: I'd like to know what people think about merging some missing parts of the class library from the GNU Classpath project. It would extend the range of software that can run on kaffe, for example allowing Saxon 7.2 to run, as Ito has shown in this mail : http://www.kaffe.org/pipermail/kaffe/2002-September/008902.html If everybody agrees it's a good thing to outsource part of the class library development, then I'll investigate what could be merged in. As it seems that full classpath integration is far away, I believe this step would ease the pain for those needing to run applications requiring class library features not yet supported in kaffe (java.util.WeakHashMap anyone?). I'm interested in your opinions, I think it is a good idea! And I am only moving very, very slowly forward with reworking and understanding(!) the VM interface issues. So I don't think just plugging Classpath into Kaffe will happen anytime soon. I have recently been thinking about Kaffe and GNU working more together. Firstly I think it would be a good idea if you get the following GNU packages working with Kaffe. This should be easy since it doesn't really need any real Kaffe integration, just checking that it all works (and some have nice testsuites). It will make the Kaffe 'product' more complete: - GNU Classpath-tools, standard tools Not yet released, but important bits, javap, javah, javadoc are here: http://savannah.gnu.org/cgi-bin/viewcvs/cp-tools/cp-tools/ http://savannah.gnu.org/cgi-bin/viewcvs/cp-tools/gjdoc/ - GNU JAXP, Sax and Dom implementations and interfaces. http://www.gnu.org/software/classpathx/jaxp.html - GNU Crypto a crypto library that can also be used as crypto provider. http://www.gnu.org/software/gnu-crypto/ - Kawa, the java based Scheme system. Contains lots of utility packages. http://www.gnu.org/software/kawa/ - GNU Paperclips, Servlet and JSP engine. http://www.gnu.org/software/paperclips/ - gnu.regexp, Regular Expressions for Java http://www.cacas.org/java/gnu/regexp/ - GNU Getopt in Java http://www.urbanophile.com/arenn/hacking/download.html Then there is the following list of GNU Classpath 'easy targets' (meaning, no-brainers, just use the complete package): - java.awt.color - java.awt.dnd - java.awt.geom - java.awt.im - java.awt.image.renderable - java.beans.beancontext - java.util.logging [1] - java.util.prefs [2] - javax.accessibility - javax.naming, javax.sql, javax.transaction [3] [1] Please ask Sascha Brawer ([EMAIL PROTECTED]) about the status. [2] I wrote this but never used it, it is not completely finished, missing a real backend. But I have heard some reports from people that used the MemoryBased backend successfully. [3] Not completely merged from libgcj, but you can get it from the GCC distribution. There very limited api doc which is why I don't like to import it in Classpath yet. I did write some documentation for some of the classes that were imported but not all. Minimal stuff to support JDBC3.0 is in Classpath. There are also a lot of javax.swing stubs, but I don't know how useful they are except to get more things to compile. And you could also look at the java.nio stuff but I have never really played with it and don't know the status. But how to go from there I don't know precisely. Things you might like to play with: - You already mentioned the new collection classes (IdentityHashMap, LinkedHashMap, LinkedHashSet, WeakHashMap and RandomAccess support). - java.lang.reflect.Proxy (this might make Jython run) - Look at the Throwable VM interface and adapt it for Kaffe, this will give you exception chaining and StackTraceElement. - See if the pure jave java.util.zip (jazzlib) library is something for kaffe. - Likewise for the pure java java.math implementation (said to be faster then going through JNI). - Security Permission model is better supported in Classpath then in Kaffe (but completely untested!) - Transvirtual donated the java.rmi implementation to the FSF al long time ago it has seen a couple of fixes and additions (some of the Orp patches are still waiting to be merged into Classpath). I don't know if Kaffe kept up to date with this version. - Michael Koch ([EMAIL PROTECTED]) recently did a lot of java.net 1.4 updates but I don't know if he has JNI support yet (he started with the libgcj version which uses CNI). We will have to make sure the we have good Mauve tests so you can see if replacing things fixes or breaks things in Kaffe so please run and contribute to Mauve regularly :) And I would like to ask that improvements to classes that you import are contributed back to the GNU Classpath project as described at: http://www.gnu.org/software/classpath/doc/hacking.html#SEC2 Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
Re: [kaffe] KeyEvent - JDK 1.4 patch (And longer explanation;)
Hi, On Mon, 2002-10-07 at 22:46, Dalibor Topic wrote: SQL interfaces have also changed in 1.4, breaking mauve tests, for example. If you check kaffe's sources in java/sql/ you'll see that I've left the new methods commented out when I updated the interfaces. I fixed some of this breakage in Mauve this morning. It would be nice if someone could try a recent checkout of Mauve with kaffe to see if it works OK now. Since our roadmap (And Richard Stallman:) currently calls for a Kaffe compatible release at the end of the month, this is bit tricky without tighter Kaffe release schedule or work-arounds in XSmiles. I'd expect RMS to call for a gcj compatible release ;) I do see the smiley, but I reply anyway to make sure that there is no miscommunication here. Richard has always asked people that write free software programs in java to make sure that it works with one of the free implementations. Since Kaffe is a free implementation that works for most applications it is only natural to point people to it. In the past he had also expected that Kaffe would be the free VM that would be used by the GNU project. And when other projects were launched like GNU Classpath and gcj he has always asked the developers to work together with the Kaffe developers. This has sadly not happened very much in the past. But mostly because it is a lot of work and there is just so little time. I still hope to get some work done to make at least Kaffe and GNU Classpath work together (which should make it easier to get kaffe working better with gcj compiled native code) but this is a lot of work and there is much other work to do and so little time... Cheers, Mark ___ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe