Packaging:Minutes20070605
From FedoraProject
Contents |
Fedora Packaging Committee Meeting of {2007-06-05}
Present
- JasonTibbitts (
tibbs) - RalfCorsepius (
racor) - RexDieter (
rdieter) - VilleSkyttä (
scop)
(No quorum this week.)
Writeups
No proposals were submitted to FESCo last week.
Votes
No proposals were voted upon this week.
Other Discussions
The following additional items were discussed; see the logs for full details.
- OCaml guidelines: http://fedoraproject.org/wiki/PackagingDrafts/OCaml
- These are nearly done now.
IRC Logs
[12:02] <tibbs> So, FPC meeting?
[12:02] * rwmjones is here to help with ocaml
[12:02] <rdieter> no spot,abadger today...
[12:03] <tibbs> Yes, unfortunately we're missing some folks and I am going to have to run in and out a few times.
[12:04] <rdieter> any comments on XChat/desktop thread? https://www.redhat.com/archives/fedora-devel-list/2007-May/msg02138.html
[12:04] <racor> same for me, I am here, but I am on and off, and will have to leave early
[12:05] --> scop has joined this channel (n=scop@cs181043142.pp.htv.fi).
[12:05] <rdieter> and https://www.redhat.com/archives/fedora-devel-list/2007-May/msg01198.html
[12:05] <rdieter> imo, Kevin had a point.
[12:06] <rdieter> which was precisely my motivation for putting the wording into the Guidelines about Name=, GenericName=, ...
[12:06] <tibbs> Well, I thought the definitions of Name and GenericName were pretty clear, but it seems the desktop group doesn't agree and I'm still not sure why.
[12:07] <rdieter> I can understand their pov, but their implementation choice of abusing the spec was bad.
[12:08] <tibbs> So we have enough folks here to vote? We owe the ocaml folks some consideration.
[12:08] <rdieter> I count 3, so prolly not.
[12:08] <rdieter> f13?
[12:08] <tibbs> four with scop here.
[12:09] *** rdieter sets the channel topic to "Fedora Packaging Comittee meeting - http://fedoraproject.org/wiki/Communicate/FedoraMeetingChannel".
[12:09] <rwmjones> I'm fine with going over the packaging guidelines to see if there's anything wrong -- can spend the next week fixing them up
[12:09] <rwmjones> http://fedoraproject.org/wiki/PackagingDrafts/OCaml
[12:10] <rwmjones> also I have an ever-growing list of packages, here: http://tinyurl.com/2rl4w6
[12:10] <rdieter> as long as ocaml-find-requires.sh/provides doesn't use rpm queries... :)
[12:11] <rwmjones> yeah, I need to fix that one
[12:11] <tibbs> I wonder what it would take to get rid if the _use_internal_dependency_generator bits and have the ocaml-find-*.sh scripts be called like the perl ones.
[12:12] * rwmjones doesn't know how to do that
[12:13] <tibbs> Looks like they're hardcoded in the find-provides script. Kind of suboptimal, I guess.
[12:13] <rdieter> tibbs: good question, not using internal_dep_generator is prolly not ideal.
[12:13] <rwmjones> I thought that '%define _use_internal_dependency_generator 0' was necessary so that RPM would use the %define __find_provides/requires at all. Othewise it seems to ignore them.
[12:13] <rwmjones> s/RPM/rpmbuild/
[12:13] <tibbs> Yes, but the point is that we should get the dependency finding hooked up by defailt, as Perl, Python and Tcl are.
[12:13] <rdieter> rwmjones: you're right, it's just that the internal_*_generator is better at some things.
[12:13] <scop> hm, ocaml-Modulename-MD5hash
[12:14] <scop> looks inconsistent with other languages for which we have perl(Foo::Bar), ruby(foo) etc
[12:14] <rwmjones> scop, you end up with requires which look like this:
[12:14] <rwmjones> # rpm -q --requires ocaml-calendar
[12:14] <rwmjones> rpmlib(PayloadFilesHavePrefix) <= 4.0-1
[12:14] <rwmjones> rpmlib(CompressedFileNames) <= 3.0.4-1
[12:14] <rwmjones> ocaml-Array-a904b798dd9665c2d3635636d293403c
[12:14] <rwmjones> ocaml-Buffer-45f466ce46f213dae41be77dd8505f5f
[12:14] <rwmjones> ocaml-Format-67f81fa527012cf0f70f6f6a24f07417
[12:14] <rwmjones> ocaml-Lazy-27baa9469b2986a6ccbba3e85275ecf1
[12:14] <rwmjones> ocaml-List-5a0e3217fc356bd18f60bff31861dfd3
[12:14] <rwmjones> ocaml-Pervasives-71f888453b0f26895819460a72f07493
[12:14] <rwmjones> ocaml-Str-8a11c5ef144a995903cc9e1bac5e353c
[12:14] <rwmjones> ocaml-String-fec8292bb1a02d2c7b8b4ba7b83a7d8b
[12:14] <rwmjones> ocaml-Unix-1876ce678cfa5a1961fac21850f71efd
[12:15] <rwmjones> ocaml = 3.09.3-2.fc6
[12:15] <rwmjones> note that these are necessary because OCaml has very strict module dependencies, it's not at all like dynamic languages
[12:15] <scop> I understand the idea
[12:15] <tibbs> I think the point is that these should be something like ocaml(module-hash).
[12:15] <rwmjones> ok, I see - that shouldn't be a problem
[12:15] <rwmjones> ocaml(module-hash) or ocaml(module,hash)?
[12:15] <scop> right, that would look more like what other languages have
[12:16] <tibbs> Is the hash akin to a version?
[12:16] <rdieter> tibbs: looks like it, kinda sorta.
[12:16] <rwmjones> it's a hash of the signature and some internals
[12:16] <racor> are these cryptic strings in ocaml-XXX-... versions?
[12:16] <tibbs> perhaps Provides: ocaml(module) = hash
[12:16] <rdieter> tibbs: +1
[12:16] <rwmjones> the ocaml linker uses these hashes too to decide if modules are compatible
[12:17] <rwmjones> if we use '=' does that imply some sort of ordering? the hashes don't have an ordering
[12:17] <tibbs> There's no ordering, but it seems that all of the dependencies are going to require strict equality.
[12:17] <racor> rwmjones: so, are they are ids or version?
[12:17] <rwmjones> racor, not sure I understand that question, sorry
[12:18] <racor> your example contains strings like ocaml-Buffer-45f466ce46f213dae41be77dd8505f5f
[12:18] <tibbs> They encode a version, but they provide no specific ordering.
[12:18] <rwmjones> they are MD5 hashes over the signature & internals of the module
[12:18] <rwmjones> signature == interface
[12:18] <racor> my question would be: is the 45f466ce46f213dae41be77dd8505f5f a version, ie. steadily increasing or an id (ie. unique but without order)
[12:18] <scop> fwiw, see also rpm -q --provides kernel | grep -F 'kernel('
[12:18] <rwmjones> no, they definitely don't increase
[12:19] <rwmjones> no ordering
[12:19] <racor> then you're in trouble ...
[12:19] <rwmjones> scop, yes, they are just like those kernel deps
[12:19] <racor> you said, they need to match
[12:20] <tibbs> I don't see why there's any trouble.
[12:20] <rdieter> these seem to be strictly virtual Requires/Provides, and not any real package, so it shouldn't matter.
[12:20] <rdieter> but a valid concern to be aware of.
[12:20] <rwmjones> so the module (eg. Array) is part of base ocaml in that example
[12:20] <racor> tibbs: how would you want to upgrade from o-x-123 to o-x-abc
[12:20] <rwmjones> # rpm -q --provides ocaml-calendar
[12:20] <rwmjones> ocaml-Calendar-514a56b1c3e9c1e5139e81e0e2736ab8
[12:20] <rwmjones> ocaml-Date-0b9d8d46ec722919ef4a2b4f7576d8f1
[12:20] <rwmjones> ocaml-Period-d99e051c4c63bb80cd2586ea99584429
[12:20] <rwmjones> ocaml-Printer-de9afc53dc6db958fdf5927dc86df9aa
[12:20] <rwmjones> ocaml-Time-1b657b86bb0e7ba36acf02910897b2eb
[12:20] <rwmjones> ocaml-Time_Zone-8d84727c6f398e1a8b710d8161e26479
[12:20] <rwmjones> ocaml-calendar = 1.10-3
[12:21] <tibbs> racor: I don't see why that is a consideration, sorry.
[12:21] <tibbs> scop: Why do I not see those virtual kernel provides?
[12:21] <rdieter> racor: no upgrades, just to get strict runtime dependencies satisfied.
[12:21] <scop> tibbs, which distro version?
[12:21] <tibbs> scop: rawhide.
[12:22] <racor> tibbs: When using them in requires/provides you're in trouble
[12:22] <scop> dunno, I see them on FC6
[12:22] <tibbs> racor: I fail to see the trouble.
[12:22] <scop> but not on F7
[12:22] <rdieter> racor: true, it is kinda abusing Version, but I don't see the harm here.
[12:22] <scop> weird
[12:23] <tibbs> Ah, yes, those kernel provides follow the ocaml model precisely.
[12:23] <tibbs> The version is even a hash of the interface.
[12:23] <rdieter> rwmjones: as long as there is no chance of any real package ever being named, e.g., ocaml-Date, but that be avoided by using the suggested ocaml(Date) approach.
[12:24] <racor> package X version N will provide o-X-123, package Y will require o-X-123, now package X is updated to N+1 which provides o-X-abc, o-X-123 will vanish and Requires: o-X-123 wil not be satisfied
[12:24] <tibbs> That's precisely the issue that ocaml is facing.
[12:24] <rwmjones> racor, yes, you can only upgrade ocaml libraries all at once
[12:24] <rdieter> racor: we're trying to advocate using Requires/Provides: ocaml(module) = hash instead of Requires/Provides: ocaml-module = hash
[12:25] <rdieter> rwmjones: +1. racor, yeah it sucks, but we're stuck with how ocaml works.
[12:25] <racor> rdieter: I have no clue about ocaml, I want to understand which of these provides/requires are useful and which are not
[12:26] <racor> ATM, these are not clear to me
[12:26] <rdieter> racor: I haven't much a clue either, I'm taking rwmjones' word on it that ocaml has *very* strict runtime deps.
[12:26] <rwmjones> racor, so a hypothetical library which needs ocaml-calendar's Calendar and Date would require precise versions of them (the ones it was compiled against)
[12:26] <rwmjones> and the ocaml linker checks the hash of each
[12:26] <rwmjones> when linking the whole program
[12:27] <scop> what about toplevel or ocaml scripts?
[12:27] <scop> they may require some "modules", but no version in particular?
[12:27] <rwmjones> those are different, because they are compiled when they are run
[12:27] <racor> rwmjones: My conclusion from this: ocaml(X) would be useless
[12:27] <racor> or should be ocaml(X) = 12344
[12:27] <racor> but then ocaml-X-12344 would be redundant
[12:28] <rdieter> racor: the latter, exactly, that's what we've been advocating! :)
[12:28] <rdieter> ocaml(module) = hash
[12:28] <rwmjones> I think ocaml(X)=hash makes total sense
[12:28] <rwmjones> & if people agree, I'll change that
[12:28] <scop> rwmjones, so scripts etcthey might actually have use for let's say ocaml(Date) (without the hash)
[12:28] <scop> s/etcthey/etc/
[12:28] <rwmjones> scop, it's a good question - yes, maybe, but they still might fail if incompatible changes have been made
[12:28] <rwmjones> anyway, there are hardly any ocaml scripts
[12:29] <racor> rwmjones: Are these requires/provides automatically generated?
[12:29] <rwmjones> yes, by:
[12:29] <rwmjones> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=239004
[12:29] <rwmjones> the scripts attached to the ^^ bug
[12:29] <scop> rwmjones, sure, but having it in the Provides on the right of "=" would satisfy those too
[12:29] <rwmjones> comment 5 is the interesting one
[12:30] <scop> my point is that if it's attached to the name of the Provides, they couldn't use it
[12:30] <rwmjones> scop, yes
[12:31] <rwmjones> scop, I think you're saying: a hypothetical ocaml script could require ocaml(Date) (without any hash)? Yes, this could happen, but the script might still fail to run if changes had been made to Date - eg. if a function had a different number of arguments
[12:32] <scop> rwmjones, of course
[12:32] <scop> in that case there's not much else to do except to require (versioned) a main package or something
[12:32] <tibbs> So, a different question: what's the %opt bit?
[12:33] <tibbs> Are there fedora-supported platforms which don't have ocamlopt?
[12:33] <scop> anyway, just thinking aloud, I think ocaml(foo) = hash is fine
[12:33] <rwmjones> tibbs: ok, so ocamlopt is the native compiler for ocaml, but it's not been ported to all platforms that Fedora supports (eg. ppc64)
[12:33] <rwmjones> tibbs, http://fedoraproject.org/wiki/PackagingDrafts/OCaml#head-14a9d22bff07b51f58d01bb4e79bcbe98e426a7c
[12:34] <rwmjones> so on ppc64, we only get the bytecode compiler which is slower but still useful. So spec files need to run on full platforms and bytecode-only platforms
[12:34] <rdieter> cute.
[12:34] <tibbs> I guess it beats an ExcludeArch:.
[12:35] <rwmjones> with any luck ExcludeArch shouldn't be needed at all, because the bytecode compiler & interpreter runs everywhere
[12:36] <rdieter> good. update the draft, and I'll venture we would likely vote positively on this next week.
[12:37] <rwmjones> ok, I've got 3 things then: don't call RPM recursively, ocaml(Module)=hash, look at integrating find-provides and find-requires with the internal dep generator.
[12:37] <rdieter> that last one, don't worry too much about.
[12:38] <rdieter> unless someone comes up with something clever in the meantime.
[12:38] <rwmjones> thanks for your help everyone
[12:38] <tibbs> Well, we can ask for those bits to be added.
[12:38] <tibbs> Ideally we could get rpm to run through the find-whatever scripts in a directory.
[12:38] <rdieter> tibbs: +1
[12:39] <scop> comments about http://fedoraproject.org/wiki/PackagingDrafts/ScriptletSnippetsFixes ?
[12:41] <rdieter> looks good.
[12:42] <tibbs> Yes, that looks fine to me.
[12:43] <rdieter> the more I think about it, since failed scriptlets pretty reliably borks rpm/database/transactions, wouldn't it make sense to push to make scriptlet failures non-fatal in rpm?
[12:44] <scop> could very well be
[12:44] <tibbs> I guess it would always be nice if bogus rpm bits were fixed, but I guess all we can do is hope.
[12:46] <scop> anything else today?
[12:47] <rdieter> nothing here.
[12:48] <tibbs> I didn't have enough time to draft the "don't screw with the tarball more than you have to" draft.
[12:48] <rdieter> I think that about sums it up. :)
[12:49] <rdieter> and if you have to ask, then you're doing too much.
[12:49] <rdieter> ok, let's call it then.

