/srv/irclogs.ubuntu.com/2009/05/14/#ubuntu-java.txt

mib_hku7zs1fCan an applet that is compiled on a 64bit open in a 32bit ?00:01
david_yuhas there been a java project being packaged by debian that was built by maven?04:55
david_yuwe are trying get jetty6 have an official debian/ubuntu release04:57
persiaThere's been a lot of discussion about maven.  Last I knew it wasn't quite ready to be used to build packages.05:34
persiaMost of the work on this has been happening in Debian.05:35
persiaSeems I'm out of date.  See http://wiki.debian.org/Java/MavenBuilder05:36
persiaAnd http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=425152 is probably of most direct interest05:36
ubottuDebian bug 425152 in jetty "jetty: New upstream 6.1.3" [Wishlist,Open]05:36
david_yuthanks ... so basically, there has not been any maven-based java projects out there that has been packaged by debian06:54
persiaNot as such.06:56
persiaOr rather, not packaged normally.06:56
persiaThere's a means by which freely redistributable binary blobs can be distributed alongside Debian, and some of those are also distributed in Ubuntu's multiverse component.06:56
persiaThis mechanism has been used in the past for distributing the results of a build, but it's neither typical packaging nor generally considered optimal.06:57
persiaI'd suggest that if you're working on jetty, you contact Tormod.  He's probably the most knowledgeable about the current state of things, and how that affects Jetty.06:58
persiaOnce the remaining issues are resolved, Ubuntu would prefer to just sync.06:58
david_yupersia: hmm, so u mean debian accepts pre-built jars and just package it? or do they require that they build the whole project itself?06:59
persiaFor proper inclusion, it is required that everything be built from source.07:00
persiaThere's a means to distribute other bits (e.g. firmware), which has been abused in the past to work around issues with Java.07:00
persiaIf at all possible, I recommend trying to get it done the normal way.07:01
david_yupersia: if we could provide them our pom.xml files that they can build for themselves (using maven) and generate the debs (using maven), would they accept that?07:02
david_yusince I've noticed most packages I've seen are built with ant ... if they dont have a problem building with maven, that would work07:03
persiadavid_yu, Um.  Could you more explicitly define "we" and "them" in that sentence?07:04
david_yupersia: we as in the jetty devs, and them as in the uploaders07:04
persiaOK.07:04
persiaI don't even think it's quite that much.  I think it's that there might be some issues with building everything (with maven) from within Debian.07:05
ttxpersia: What was the question ?07:06
persiaAnd I still think that your best path is to chat with Tormod.  I know he's been trying to build jetty, and a closer relationship between you and he would likely determine any remaining issues in short order.07:06
david_yuah, where do I reach him?07:06
persiattx, david_yu> persia: if we could provide them our pom.xml files that they can build for themselves (using maven) and generate the debs (using maven), would they accept that?07:06
ttxdavid_yu, persia: Torsten Werner was working on Maven support with the final objective of packaging Jetty6 with it07:07
persiattx, Right.07:07
persiaAh, darn.  I hate it when I misremember names.07:07
* ttx looks up email address07:08
persiadavid_yu, I'd recommend email right now.  He doesn't seem to be in #debian-java@OFTC right now.07:08
ttxdavid_yu: see pm07:09
david_yuttx: yea I saw his attempt to build jetty... I actually sent him a mail 3 days ago07:10
ttxhttp://wiki.debian.org/Java/MavenBuilder tracks his progress07:10
persiaWell, and Debian bug 42515207:10
ubottuDebian bug 425152 in jetty "jetty: New upstream 6.1.3" [Wishlist,Open] http://bugs.debian.org/42515207:10
persiaBut he's really the best person to chat with about it.07:11
david_yuhopefully he's not too busy, sent him mail 3 days ago07:11
ttxdavid_yu: iirc the key issue was getting all the dependencies properly packaged07:12
ttxsince we cannot use maven to /just/ provide them07:12
ttxdavid_yu: anyway, I am very much interested in getting jetty6 somewhere, so if I can act as facilitator somewhere, let me know07:13
david_yuactually with jetty6, the 3rd party dependencies are: slf4j (core), ant(jsp), eclipse-compiler(jsp) ... everything else are jetty modules07:14
ttxdavid_yu: it's not reasonable to try to emulate the build process using a simple ant build.xml ? That would remove the complexity of using maven on our build system from the equation07:15
david_yuso like when maven downloads the other depenencies, they are build-time dependencies, but not runtime dependencies07:15
ttxdavid_yu: unfortunately we need to package the build deps as well :)07:15
david_yuttx: hmm, why is that ... most of them are maven-plugins required for build ... and junit07:16
ttxdavid_yu: then they should all be packaged already, good07:16
ttx(in Debian, maybe not synced to Ubuntu yet)07:17
persiaOne factor that may be important to note is that the buildds don't have network access, which is part of why we have to take special care, because maven can't download anything, so has to be convinced it's already present.07:18
ttxand you cannot install anything else on the buildds than packaged build dependencies.07:19
ttxdavid_yu: you can cc me on future emails with Torsten. At one point if it's a question of disponibility I might be able to stand in for him.07:21
david_yupersia: hmm, could we provide an initial repo(temporary ... just for the maven-plugins required along the way)?07:21
persiadavid_yu, If you'd like to help get the plugins packaged, that'd be great.07:22
david_yuyea I'd like to help07:22
persiaI don't think it's best to try to hack around packaging them: that just increases the chance of some integration issue once they are packaged.07:22
ttxdavid_yu: basically we have been trying to make maven-built things compatible with our build-daemons for some time07:23
ttxdavid_yu: the initial Ubuntu spec was https://wiki.ubuntu.com/JavaTeam/Specs/MavenSupportSpec07:24
persiaSo, based on the Plans on the Debian wiki page, I think building agreement on http://wiki.debian.org/Java/MavenRepoSpec is probably the next step.07:24
ttxit outlines the challenges and proposes a solution07:24
ttxbut Torsten went faster with his solution07:24
persiaAnd then adding the hooks to all the required libraries.07:25
ttxMavenRepoSpec and MavenBuilder07:25
ttxso we met in Berlin to discuss convergence and agreed that he was on the right track07:25
ttxdavid_yu: what TZ are you in ?07:26
david_yu+807:27
ttxhm, that doesn't help to join our #ubuntu-java meetings, unless we don't sleep, like persia07:27
ttxunless you don't sleep, I mean07:28
david_yuwhat time (GMT) do the meetings start?07:29
ttx140007:33
ttxbut we could move the time. It's not as if so much people came in07:33
ttxpersia: no meeting this week ?15:11
persiaYes, I'm just not paying enough attention to the clock :/15:11
astrommeHi all. I've got a question about https://bugs.launchpad.net/ubuntu/+source/soprano-backend-sesame/+bug/33418618:57
ubottuUbuntu bug 334186 in soprano-backend-sesame "soprano-backend-sesame requires missing /usr/lib/libjvm.so" [Undecided,Confirmed]18:57
astrommeIt looks like all that needs to happen is a symlink to /usr/lib/libjvm.so18:58
astrommeIs that something that could happen for a Jaunty SRU? ScottK pointed me here18:58
astrommeThe bug currently prevents Soprano and Strigi (A pillar of kde, part of the search framework) from working at all with the java backend.18:59
persiaGlah.  Native libraries suck.18:59
astrommeAnd the java backend is needed for anything resembling decent performance18:59
persiaRight.19:00
astrommeOne of the comments on the bug report said that this is something that update-java-alternatives should probably be setting this symlink19:00
persiaI'm not sure which of the fixes is the right one, unfortunately.19:00
astromme:(19:01
persiaThere's a fairly good argument that nothing should use /usr/lib/libjvm.so directly, because there's no promise the ABI is constant for different implementations.19:01
persiaWhich would make this a bug in the way that soprano-backend-sesame was built.19:01
astrommeIt looks like a symlink from $JAVA_HOME/jre/lib/i386/server/libjvm.so to /usr/lib/libjvm.so is what is needed19:02
astrommepersia: hmm, interesting19:02
astrommebut wait... then why are there headers for libjvm.so and why can things be built against it?19:02
astrommeand what would be the 'correct' way? (I'm a true java packaging/library newb)19:03
persiaWell, see, one builds against the .so and headers, and *should* end up linked against some specific implementation with a known ABI (e.g. libfoo.so.3.4.1)19:03
persiaBut that's in C.19:03
astrommepersia: but java has many implementations19:04
astrommeand you don't know which will be installed19:04
persiaRight, which makes it tricky to know how to deal with something like this.19:04
astrommehow do other java apps do this?19:04
astrommes/java apps/things that link against java libs/19:04
persia99% of java applications don't need to access libraries directly.19:04
persiaNearly nothing does, and arguably nothing should, except for JVM implementations.19:05
persiaIn an ideal world, each library that isn't written in Java provides Java bindings that link against the specific implementation.19:05
persiaThen the JVM just runs itself, java apps, and the bindings glue.19:06
persiaThis looks like an extra-special case.19:07
persiaPersonally, I think that it ought link directly to openjdk's implementation, and depend on openjre, rather than on java2-runtime, but that's clearly not ideal.19:08
persiaThe risk of doing it any other way is that since it builds against openjdk, if someone has another implementation, we can't know it's ABI-compatible (since I don't think it must be for Java compliance)19:09
persiaOf course, my knowledge of this corner of stuff isn't very deep, as it's the part of Java that I hide from the most.  I prefer pure-java apps and libraries.19:10
astrommepersia: ok, I think I understand19:12
astrommepersia: this is something that really hurts kde users who want desktop search19:12
persiaastromme, Then it needs fixing.  How do you think it ought be fixed?19:13
astrommebecause the only way around it is to symlink manually (and of course that assumes an abi)19:13
persiaOr hack ld.conf, which comes to the same thing.19:13
astrommetrue19:13
persiaOr change the build instructions for the package, and rebuild to hardlink against openjdk (which means that people can't use it with Sun Java)19:13
astrommepersia: For the Karmic cycle it is likely that soprano will move to a c++ library called virtuoso by default, which means this may not be as important after Jaunty19:14
astrommepersia: Is java updated to be an abi break during the Jaunty update cycle?19:14
astrommepersia: if not, I would suggest doing the symlink/ld.conf19:14
astromme(after testing it using openjvm, sun jvm)19:15
persiaastromme, Would you mind testing that against all Java implementations in jaunty?19:15
persiaIf it happens to work with all of them, I'm happy with that solution.19:15
persiaIf it only works with some of them, then I think that's not complete19:15
persia(and only worry about java2-runtime providers: we don't care about the others, because they wouldn't satisfy the dependencies anyway)19:15
astrommepersia: sure, I would test against all of them. Other than openjvm and sun java, what are the others?19:19
persiaastromme, `aptitude show java2-runtime` should give you the list.19:20
persiaIt's basically openJDK, 2 versions of Sun java, and GCJ.19:20
astrommepersia: I assume 'default-jre' is a metapackage?19:41
persiaNo, it's an actual package, with some bits here and there, but it doesn't contain a JVM implementation.19:42
persiaIt depends on different implementations for different architectures though.19:42
persiaSo, extra points if you also test against cacao :)19:42
* astromme has never even heard of cacao! :P19:43
persiahttp://www.cacaovm.org/19:44
astrommeSo my plan would be purge old package, install new one, start all the daemons/etc fresh, test basic features (if it failed it would fail from the starting of the binary, right?), do a checkoff?19:44
persiaRight.19:44
persiaInstall your package.19:44
persiaInstall a JVM19:45
persiamake the symlink19:45
persiarun it.19:45
persiapurge the JVM, and install the next19:45
persiamake the (different) symlink.19:45
persiarun it.19:45
persiaetc.19:45
persiaTo test cacao I think you need powerpc.19:45
astrommepersia: if you can belive it, I had a Jaunty running powerpc until last week19:45
astrommewe have a bunch of G5s here19:46
astrommeSadly it got reverted to osx. No nvidia drivers, meh19:46
persiaCool!  It'd be lovely if you could test with cacao, as it's one of the less well tested JVMs, and I know that powerpc has a kubuntu userbase.19:46
persiapity.19:47
astrommetruely is19:53
astrommethe machine ran great19:53
astrommejust that silly video card19:53
astromme(we need the machine as a media center, more or less)19:53
persiaOh well.  For extra points, find someone who can test that case :)19:55
astrommeok19:55
astrommeI'll see what I can do19:55
astrommeI wonder if a livecd would be enough...19:55
persiaBut I suspect the package doesn't even build properly for architectures that don't have openjdk, so it probably doesn't matter that much.19:55
persiaNevermind.  Looks like openjdk on powerpc does work to some degree.19:57
astrommehmm, interesting19:57
astrommeUh oh.... starting the server, terminate called after throwing an instance of 'CLuceneError'19:57
astrommeI wonder if that has any relation to the java stuff19:58
* astromme doesn't know how it all fits together really19:58
persiaastromme, So it worked with openJDK, and failed with the next JVM?19:59
astrommepersia: that might just be my fault, I'm restarting my session. And it might be something else. It *looks* like it loaded the library correctly19:59
astromme(Soprano::PluginManager) loaded plugin from "/usr/lib/soprano/libsoprano_sesame2backend.so"19:59
astrommesesame2backend.so sesame2 is the java component that it uses20:00
persiaRight, but that indicates that it loaded that library.  The trick is when that library actually makes a call to java.20:00
persiaOr rather to libjvm.so20:00
astrommehmm, ok20:00
astrommewell let me see20:00
persiaIf the entry points don't match then it crashes (or executes something unexpected if you're particularly unlucky)20:01
astrommeok20:02
astrommeWell, it appears to be indexing, which is a good sign20:02
* astromme tries a search20:02
astrommeIt found some music files, this is looking like it is working20:03
astrommeNepomuk is eating ram as usual.... lol they really need to figure out if the ram usage is a: reasonable and b: worth it20:06
persiaThat's encouraging.  I don't suppose one of the ones you tried was gcj?20:08
astrommepersia: not yet, the sun and openjdk20:09
persiaThey share some code history, which makes it easier that they match :)20:09
* astromme is on stage 3 of four, sun-java6-jre20:12
astrommepersia: bad news bears... We might have problems with gcj20:28
astrommethe nepomuk search process just hung on me20:28
persiaThat was the reason I feared this might not be the right solution.20:29
persiaAt least it makes it easier to fix, because it's only the one package that needs updating and testing, rather than the fuss involved in an update to how the JVM shared libaries are coordinated between JVMs.20:30
persiaSo, just change the build in such a way that the link is against the real location, rather than /usr/lib/libjvm.so20:30
persiaAnd have the package depend on the openjdk jre, rather than java2-runtime20:31
astrommethis is curios... now it is working20:32
astrommecurious*20:32
astrommeHmm, ok, I suppose that would work20:32
astrommeespecially if we know it does work with one specific java implementation20:32
astrommewow, gcj is much slower, at least it seems so20:33
=== ttx is now known as ttx_
=== ttx_ is now known as ttx
persiagcj is much slower when running java bytecode.  Many gcj users prefer to compile java to native code.20:34
astrommeinteresting20:35
astrommepersia: ok, I need your suggestion. It appears to work on all 4 java2-runtime providing-packges. I had a bit of instability with gcj, but that could have just as easily been nepomuk doing its "I'm going to hang" dance that it likes to do20:39
astrommeShould we do the symlink?20:40
astrommeOr should I run off to find whoever maintains the sesame2 package to get them to change how it is built20:40
persiaastromme, You tell me which you think is less work for you (as you'll be the person who chases it, or so I guess from your interest).20:41
persiaI can't upload the fixes for either solution.20:42
persiaI'm not happy with the situation existing, but I'm not sure which solution is less bad.20:42
astrommehmm20:42
persiaThe real fix would be for the package not to link against that, but that's not going to happen in an SRU, because it would require massive code changes.20:43
astrommepersia: I would go for option 1, symlink. My only worry is that would this give others a 'conceptual license' to exhibit the same bad behavior?20:44
astrommeand if I understand it correctly, "symlink" can be replaced with "ld.conf change" and would result in the same thing?20:45
astrommehow would this affect apps that linked against a specific (say openjvm) libjvm.so? Could they potentially get screwed up?20:45
persiaUmm, maybe?20:49
persiaI don't know how ld works well enough to answer that.20:49
astrommepersia: Ok. Thank you for all of your help. Where would I go to move this further towards people who can actually make the change?20:56
persiaI'd start by documenting the results in the bug.20:57
persiaThen, I'd prepare a debdiff for any packages you want to change to fix it, and generally follow the guidelines for SRU20:57
persia!sru20:57
ubottuStable Release Update information is at http://wiki.ubuntu.com/StableReleaseUpdates20:57
persiaWhen you get to the upload point, find a sponsor using one of the sponsoring queues.20:58
persiaAnd I'm fairly certain the sponsoring will get bounced about until someone who understands the problem well enough gets it.20:58
astrommepersia: ok, yikes sounds involved :P21:02
persiaWell, yeah.21:02
* astromme is just a humble kde dev, he hasn't messed with packages. 21:02
astrommeBut I understand the critical situation21:02
persiaOh, in that case, grab someone in kubuntu-devel to help you out.21:02
astrommeI will, I came from there originally21:02
persiaI know :)21:02
persiaI'm hoping my explanations can help describe the issue better.21:03
astrommeBut not now, I've got other work :)21:03
astrommeAnd I also understand how updates have to be taken very seriously, it is not good to break things in a release distro... not good at all21:03
persiaTruth be told, the symlink solution scares me, largely because we rely so heavily on Debian to decide if things like that are safe.21:03
astrommeThat's true, I kept mulling it over21:04
persiaAnd I'm just not sure the hack-the-build-to-force-openjdk is right either.21:04
astrommeAnd in theory if something is packaged internally to a libjvm.so it could find (wrongly) /usr/lib/libjvm.so21:04
astrommewhich could cause bad bad problems if these things aren't ABI compat21:04
astrommewell, that's the reason why we have multiple java implementations in the first place... so we don't depend on one single one21:05
astrommeIn any case, I'm out for now. Thanks persia, I will likely be back for more advice :)21:07
persiaHappy to help to my limited ability :)21:08

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!