16:00:28 #startmeeting Fedora Packaging Meeting 16:00:28 Meeting started Wed Oct 24 16:00:28 2012 UTC. The chair is spot. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:28 Useful Commands: #action #agreed #halp #info #idea #link #topic. 16:00:39 #meetingname fpc 16:00:39 The meeting name has been set to 'fpc' 16:01:35 Howdy. 16:01:48 * SmootherFrOgZ waves 16:01:52 * abadger1999 here 16:02:00 #topic Roll Call 16:02:40 geppetto, rdieter, limburgher: ping? 16:04:08 * limburgher back. 16:04:18 * geppetto is here 16:04:24 okay, thats quorum 16:04:41 #topic New Java Guidelines Draft - https://fedorahosted.org/fpc/ticket/222 16:05:11 diff here: https://fedoraproject.org/w/index.php?title=User:Akurtakov/JavaPackagingDraftUpdate&diff=305374&oldid=275277 16:07:21 We allow .so's in jar files? 16:07:48 Not sure we actually talked about it before. 16:08:07 good question 16:08:11 Also jnidir expands to %{_prefix}/lib/java? 16:08:22 My problem is, again, some of this java stuff is weird magic. 16:08:24 that seems wrong for arch-specific files 16:09:11 abadger1999: You seen the comment right at the bottom? 16:09:21 .so's, or pre-built .so's? 16:10:14 We don't allow pre-built anything. 16:10:24 Right. 16:10:25 ugh. 16:10:31 Hence my question. 16:10:38 I don't think anything here allows pre-built anything. 16:10:43 geppetto: k.... I'd say still have to use %{_libdir} 16:10:52 Good, just wanted clarification. My java-fu is weak. 16:10:54 The jar files themselves can't be pre-built. 16:11:10 No. 16:11:24 I've had to strip jars that couldn't be built in the past. 16:11:44 i don't think these changes imply use of pre-built so files, i think they're being built from source 16:12:03 %{_jnidir} having /usr/lib hardcoded is a problem 16:12:04 As far as I can tell, that's just how jni stuff works. 16:12:09 ok. 16:12:15 Java code with .so files for "glue". 16:13:16 So I suppose my only question here is: Is there any reason %{_jnidir} can't eval to "%{_libdir}/java" ? 16:13:41 Note current guidelines: 16:13:46 %{_jnidir} usually expands into /usr/lib/java. 16:14:39 But on 64-bit it does currently expand to %{_libdir}/java 16:14:57 So, "usually" is kind of incorrect, I guess. 16:15:58 So the big change is "%{_jnidir} usually expands into %{_prefix}/lib/java. %{_prefix}/lib64/java will cease its existence and will be decomissioned", and I guess I think that needs some justification. 16:16:46 There is some discussion about this in their meeting notes. 16:17:31 It appears that since multiarch is "close to impossible to do right", stuffing everything in /usr/lib is seen as OK. 16:17:50 discussion seems to be: multiarch is hard to do correctly with all the noarch stuff … so just make it go away. 16:18:12 Well, I am happy to see them do whatever they want with regards to multiarch. 16:18:21 But does that mean that /usr/lib becomes the right place? 16:18:22 If there is no compelling win by doing that I'd rather they didn't. 16:18:43 /usr/lib is guaranteed to exist on both targets 16:18:50 And I don't see a "this is a big benefit of stuffing everything in /usr/lib" 16:19:03 spot: So is %{_libdir} 16:19:04 16:19:12 oh, yes, i agree. 16:19:32 i'd prefer to know what specifically makes use of %{_libdir} impossible 16:19:36 before proceeding 16:19:45 It seems like it isn't impossible -- just inconvenient. 16:20:08 I guess I've sort of lost the plot as to why we insist on lib64 for anything arch-specific if that reason isn't entirely due to multiarch. 16:20:08 i don't know why it is inconvenient, aside from the "we don't support multilib" 16:20:20 which i'm completely okay with them not caring about. 16:20:59 IIRC there was some discussion of eclipse stuff recently where they wanted to have %{_libdir} in noarch, and wanted it to be correct for all arches. 16:21:19 yes, but that was noarch 16:21:40 and i'm pretty sure we covered the "don't use %{_libdir} in noarch packaging, you cannot rely on it" 16:22:00 Yeh, but my guess is that this might be their fix for that 16:22:08 well, okay. 16:22:35 * geppetto adds quotes around "fix" 16:22:42 %python2_sitelib is precedence 16:23:10 But that's for the non-native stuff. 16:23:15 although, i will note that arch specific bits do end up in /usr/lib64/python... 16:23:42 so it seems like they may want to use %{_jnidir} in noarch and arch contexts 16:24:01 Yeh, python has python_sitelib_platform which is the jni equiv. 16:25:00 errr 16:25:07 python_sitearch vs python_sitelib 16:25:19 at the rpm macro level 16:25:45 ahh … yeh, the package I'm using is old. 16:26:04 so, i guess the question is, do we care enough about this to enforce this complexity especially given that they have no plans to support multilib? 16:26:22 we could require a %{jnidir} and %{jniarchdir} 16:26:30 is multilib a "Feature" -- ie a fesco question? 16:26:39 maybe. 16:26:47 We don't do it currently. 16:27:40 But there's a general question here: Do we require arch-specific stuff in %{_libdir} instead of /usr/lib even when there's no possibility of multilib? 16:27:43 I think they should at least provide a good reason before we let them go from "multilib. is hard, and not done" to "multilib. is incompatible with our packaging" 16:27:46 If they don't support multilib... it seems like everything should get stuffed into %{_libdir} 16:27:56 tibbs: right now we do. 16:28:26 tibbs: I would say +1, unless there's a really good reason. 16:28:26 Right. But allowing this means we wouldn't. At least not uniformly. 16:28:40 16:28:42 Though we might not be requiring this uniformly even now; I'm not entirely sure. 16:28:49 i wonder if it is possible to be clever with the macro such that on noarch it evals to /usr/lib/java and in all other cases uses %{_libdir}/java 16:29:02 Maybe not even then … although NFS mounting non-arch specific dirs. is so last millenium. 16:29:11 spot: But is that wise, necessarily? 16:29:35 limburgher: well, on noarch, you don't want to be evaluating from %{_libdir}, and /usr/lib/java is a safe bet on either arch 16:29:44 spot: True. 16:29:50 Well, there's the wise thing, the possible thing and the sane thing, and they aren't always the same thing. 16:31:10 I'd just like to avoid some sort of macropolalypse. 16:31:14 c 16:31:27 spot: I'm here 16:31:41 basically, the issue seems to be that some of us are uncomfortable with %{_jnidir} always evaluating to /usr/lib/java 16:31:46 instead of using %{_libdir} 16:32:32 A possible alternative is to adopt a python style split, where there is a noarch macro %{_jnidir} (/usr/lib/java) and an arch macro %{_jniarchdir} (%{_libdir}/java) 16:32:38 spot: the problem is that in java many packages are noarch 16:32:50 but they require arch packages 16:33:11 as _libdir is not evaled properly when building noarch packages 16:33:15 we don't have a choice 16:33:16 spot: I don't think that helps -- jni is for "java native interface" -- ie: things that are arched. 16:33:49 akurtakov: that's untrue. we've showed various ways of doing that. 16:34:53 abadger1999: please remind me how do I do a symlink in spec file to smth that's in e.g. _libdir/java/smth.jar 16:35:34 akurtakov: is the symlink only used at buildtime? 16:35:40 abadger1999: yes 16:35:49 hm. i could see a reasonably simple "%{_find_arch_jar}" sort of macro that looks in the two possible targets for it 16:36:12 * abadger1999 looks for the jpackage utility that allows that 16:36:25 spot: but this would not buy us anything 16:36:50 spot: the jvm has no idea of multilib 16:37:05 * agrimm reads scrollback 16:37:20 so even trying to has multilib packages is losing our time 16:37:31 akurtakov: if that is true, how is it finding jar files in /usr/lib64/java now? 16:37:49 spot: everyone does it on his own 16:38:16 in some spec file I checked for existance of 64 bit and if it's missing symlink the 32 one :) 16:38:31 akurtakov: presumably, noarch spec files. 16:38:49 spot: note that the fixes depend on the build system used 16:39:02 it's one thing for ant and another for maven 16:39:31 spot: http://pkgs.fedoraproject.org/cgit/piccolo2d.git/tree/piccolo2d.spec#n47 16:39:54 to workaround this we install swt in libdir 16:40:05 but even then I symlink it to both 32 and 64 16:40:14 and one of them is obviously wrong 16:40:17 well, you could just do -f file existence checks 16:40:18 it's a total mess 16:40:35 having two symlinks doesn't seem that bad 16:40:37 if the file exists in the 64bit location, then use that one, because the 32 bit target won't have it 16:41:05 if not, you're either on 32bit (and you know where that file is), or something else is terribly wrong and ABORT! 16:41:08 well, the idea is to make packaging easier 16:41:22 akurtakov: sure, but we can macroize that 4 lines of shell 16:41:53 you could just pass in the jar file name and it would spit out the found location for the arch specific jar 16:41:58 I saw a script earlier but here's a non-scripted method: source /etc/java/java.conf 16:42:02 He's right; if we're enforcing the lib-lib64 split for pointless reasons then we should take a hard look at why. 16:42:24 ln -s ${JNI_LIBDIR}/foo.so foo.so 16:42:36 that's a case where maven uses fragments 16:42:50 But I don't feel like we can address grant Java an exception to that until we address the general issue. 16:42:52 but sometimes artifacts are with differnt names based on arch 16:42:55 and etc. 16:43:06 tibbs: not disagreeing, but if we're going to do that, i think we want FESCo to signoff on java being exempt from the standard multilib policy and permitted to put arch specific files in /usr/lib/java (technically an FHS violation on x86_64, i think) 16:43:13 the real problem is that there is no unified way on the java side 16:43:30 spot: Right, it gets into a much larger discussion. 16:43:39 spot: I thought java has this exemption as the jvm already does it ?? 16:44:09 I don't recall any blanket exception for anything java. 16:44:21 I don't think FPC even had a hand in how the jvm stores its stuff. 16:44:44 akurtakov: probably the jvm just does it wrong. 16:44:54 Sometimes things just get done without talking to anyone, and sometimes it gets done wrong. 16:44:57 And was grandfathered? 16:45:07 Sort of? 16:45:35 limburgher: with heavy emphasis on sort of, maybe. 16:45:42 so, instead of arguing about it here, i propose that we ask FESCo to consider whether java is exempt from the standard multilib policy and if it has permission to put arch specific files in /usr/lib/java on all arch targets (including noarch) 16:45:45 ie: FPC doesn't do enforcement 16:45:50 abadger1999: That was intended. :) 16:46:04 but if it is wrong, and pointed out it would need to be fixed. 16:46:06 i would encourage the Fedora Java SIG folks to make their case there 16:46:21 * spot is happy to open that ticket with FESCo 16:46:54 spot: we don't want to put noarch stuff there 16:47:00 The openjdk seems to have things like this: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/headless/libmawt.so 16:47:10 akurtakov: yes, sorry, that was poorly worded on my part 16:47:23 so is this two part? 16:47:28 (1) exemption from multilib 16:47:42 (2) arch specific files in lib instead of %{_libdir} ? 16:47:57 i think 1 implies 2, but yes. 16:48:02 1 I can agrre is fesco 16:48:07 but 2 would be us. 16:48:31 spot: abadger1999: fwiw - I'm asking for same threatment of jvm and other packages 16:48:48 i think if FESCo exempted java from multilib, with the understanding that it would mean that /usr/lib/java would be used for all arches, i would support that use case. 16:48:49 if tghe only reason to separate lib and libdir is multilib, that seems like something we could try and pass, though. 16:48:59 abadger1999: Right, because while 1 implies 2 it doesn't require it. 16:49:07 akurtakov: same treatment as what? 16:49:23 abadger1999: allow java packages to do like the jvm 16:49:28 akurtakov: same treatment right now would be that if it's arch specific, it goes to %{_libdir} 16:49:47 akurtakov: so make jvm follow what java packages do would also be acceptable? 16:49:53 (ie: same treatment) 16:49:57 abadger1999: NO, the jvm puts arch specific things into /usr/lib/jvm 16:50:13 abadger1999: i can confirm that the jvm is using /usr/lib on x86_64 16:50:25 akurtakov: exactly. So same treatment would be -- make the jvm put the arch'd bits into %{_libdir} 16:50:34 in /usr/lib 16:50:44 abadger1999: he means "same treatment as the jvm is being permitted to do now" 16:50:50 unless the jvm multilib handing is improved internally 16:51:05 which would not happen magically 16:51:47 is anyone opposed to asking fesco if java (including the jvm) is exempt from multilib? 16:51:53 Not at all. 16:51:53 ah I think the script I was looking for is /usr/bin/build-classpath 16:52:06 /usr/bin/build-classpath java_cup => /usr/share/java/java_cup.jar 16:52:16 i think that detail will shed light on whether we grant permission for universal arch use of /usr/lib/java for x86 && x86_64 16:52:18 * SmootherFrOgZ isn't 16:53:07 spot: abadger1999: note that System.loadLibrary will need improvements too if one wants java to be truly multilib 16:53:31 akurtakov: i think you will want to make your case as to why java is exempt from multilib in the fesco ticket. :) 16:53:40 16:53:42 * spot will open the ticket and send you the #. :) 16:53:59 tbh, I'll let sochotni do it as he has been dealing with this change :) 16:54:04 multilib was a Fedora "Feature" from back before the unified repos. 16:54:20 the aspect of multilib we're considering might even have been a RHL feature. 16:54:29 I gave up on writing guidelines about that long ago :) 16:55:52 Shall we also have a followup for FPC -- things that do not attempt to use multilib do not need to use libdir? 16:56:38 abadger1999: lets worry about that if FESCo says something is exempt 16:56:46 akurtakov: https://fedorahosted.org/fesco/ticket/961 16:56:52 I would tentatively be behind such a thing, but I'd really have to think about it more. 16:57:01 okay... it has applications to certain other things that we've had difficulty with too. 16:57:13 So it would be good to hammer that out regardless. 16:57:19 For instance, arch-specific data files 16:57:29 btw, a strict reading of the FHS does not prevent this case, it merely states that /usr/lib can be used, but it does not require it 16:57:36 16:57:46 Yes, that was my understanding. 16:57:50 although, it is worth noting that i doubt this situation was conceived of when the FHS was written 16:58:26 Like many things, Horatio. 16:58:45 #action FPC will wait on Java draft until an answer for FESCo ticket 961 is received 16:58:52 and we're at the hour. 16:59:58 there are several bundling requests pending 17:00:11 and the hylafax conflicts issue 17:00:14 I'm still around. 17:00:18 I can't stay. 17:00:23 I will recuse myself from the hylafax issue. 17:00:51 Can we all do a quick bunch of -1's for the version naming ticket? 17:01:02 Yes, -1 from me. 17:01:18 227 17:01:24 and, yeh, -1 from me. 17:01:45 -1 17:01:49 #topic Multiple packages with the same base name versioning - https://fedorahosted.org/fpc/ticket/227 17:02:19 -1 17:02:27 the only point i would make is that while i am opposed to making this sort of logic a must 17:03:14 in most cases where a newer version obsoletes an older one, i would hope that it eventually emerged in an unversioned name 17:04:19 but as an absolute, i'm -1 here 17:04:48 I would not object to more fleshing out of that section of the naming guidelines. 17:04:59 http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Multiple_packages_with_the_same_base_name 17:05:13 tibbs: me neither, but i think that probably looks a lot more complex than what vondruch is proposing here 17:05:26 * limburgher pops in for a -1 17:05:36 e.g. gambas upstream supporting gambas 2 and gambas 3 simultaneously with incompatible APIs 17:05:52 which one is "gambas" ? :) 17:05:56 spot: Yeh, I understand … and I kind of assume that's what the OP was thinking about. But trying to put that in policy feels a lot like saying "use your common sense". 17:06:11 (the answer, neither, gambas 1 was "gambas") 17:06:19 ha 17:06:19 There have been a number of proposals that reduce to "use common sense". 17:06:57 tibbs: +1 17:07:00 It seems that some folks think that any time there's disagreement in a review ticket, the guidelines need to be updated to answer whatever specific question was raised. 17:07:03 i could even see policy to encourage that the most recent version of a multi-version packaged package provides the common name 17:07:36 (assuming, obviously that another package doesn't have the common name already, see above with gambas) 17:07:43 It would also be good to canonicalize the difference between compat-foo and foo$VER but I guess that's another draft. 17:07:58 someone with a bit more sanity left than me should tackle this one. 17:08:32 We're at -4 on this issue, which means it cannot receive +5 based on the present attendees 17:09:06 one more -1 and we can mark it as rejected... or we can table it without any additional votes. 17:09:19 Anyhow, -1 to proposal as written 17:09:29 abadger1999: Yeh, that one is more draft worthy … as it's kind of random. 17:09:41 #action -5 votes, this proposal (as written) is rejected. 17:10:07 abadger1999: And it would actually be nice is that was a single std. for naming (eg. drop all compat- prefixes). 17:10:20 s/is that/if there/ 17:10:56 geppetto: well... in the past, compat-* signified "runtime libraries, no header files", whereas foo${VER} meant parallel installable devel and runtime. 17:11:20 but that's gotten increasingly muddy over the years since there's nothing written 17:11:39 abadger1999: yeh. 17:11:52 abadger1999: non-C languages don't help :) 17:11:58 geppetto: yeah :-) 17:12:27 okay, i think with that we're done for this week 17:12:29 thanks everyone 17:12:44 #endmeeting