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