From Fedora Project Wiki
Fedora Packaging Committee Meeting of {2007-05-22}
Present
- DavidLutterkort (
lutter) - JasonTibbitts (
tibbs) - JesseKeating (
f13) - RalfCorsepius (
racor) - RexDieter (
rdieter) - TomCallaway (
spot) - ToshioKuratomi (
abadger1999) - VilleSkyttä (
scop)
Writeups
No meeting last week, so no writeups this week.
Votes
The following proposals were considered:
- Tweaks to static library packaging guidelines: http://fedoraproject.org/wiki/PackagingDrafts/StaticLibraryChanges
- Accepted (7-0)
- Voting for: racor spot tibbs rdieter abadger1999 scop lutter
- Voting against: (none)
Other Discussions
The following additional items were discussed; see the logs for full details.
- Emacs packaging guidelines; will probably be considered next week: http://fedoraproject.org/wiki/PackagingDrafts/EmacsenAddOns
- Guidelines for packages needing users and groups: http://fedoraproject.org/wiki/PackagingDrafts/UsersAndGroups
- OCaml guidelines; draft not yet ready for a vote: http://fedoraproject.org/wiki/PackagingDrafts/OCaml
IRC Logs
[12:01] * spot wakes up
[12:01] <Kevin_Kofler> Time to bring up the compat naming stuff? ;-)
[12:01] <rdieter> let's wait for jeremy first.
[12:01] --> abadger1999 has joined this channel (n=abadger1@090.164-78-65.ftth.swbr.surewest.net).
[12:01] <spot> maybe we'll have quorum this week. if not, early lunch for me!
[12:02] * lutter looks around
[12:02] <spot> ok, i see abadger1999, rdieter, lutter
[12:02] <jeremy> spot: no lunch for you!
[12:02] <spot> f13: ?
[12:02] <abadger1999> I'm here.
[12:02] * scop here too
[12:02] <spot> racor?
[12:02] <rdieter> food good.here
[12:03] <XulChris> food?
[12:03] <spot> ok, we've got quorum. i'll give the others a chance to awaken/arrive
[12:03] <rdieter> bummer, food can wait I spose
[12:04] <racor> as usual at this time frame, here, but half distracted
[12:05] <spot> i suppose f13 isn't awake...
[12:05] <spot> ok, lets go ahead and start
[12:05] <spot> rdieter/lutter: reminder: writeup your guidelines!
[12:06] <rdieter> yes, I'm bad.
[12:06] <lutter> spot: ugh .. yeah, completely forgot
[12:06] <spot> First item: emacs guidelines
[12:06] <spot> http://fedoraproject.org/wiki/PackagingDrafts/EmacsenAddOns
[12:06] <spot> those who care about emacs have written some guidelines for emacs packaging
[12:07] <spot> no changes to existing guidelines, just new ones for emacs along with some templates.
[12:08] <spot> any thoughts? is anyone reading them and need more time?
[12:08] <scop> I read it through earlier once, and looks like most of my comments are now addressed
[12:08] <tibbs> Bagh.
[12:09] <rdieter> ugh, just wiped out -emacs bits from a few of my packages awhile back, rely on %triggers now (I forget where I stole/borrowed the idea from).
[12:09] <scop> there are some bits still missing though
[12:09] <spot> scop: are those bits that could be added later, or should we hold on this draft?
[12:09] <tibbs> Folks, if I don't perk up immediately at meeting time, feel free to ping me. The sound will help to get me out of whatever I happen to be stuck with.
[12:10] <scop> I think they can wait
[12:10] <scop> the only one I see at the moment is that the built packages should require >= the (x)emacs used to build the package, not some hardcoded values in specfile
[12:11] <scop> and there were some questions about the "-common" part of "emacs-common-foo" as the main package srpm name on the list
[12:11] <tibbs> I think we need emacs guidelines but I'm rather unqualified to judge how good the draft ones are.
[12:11] <spot> scop: the naming questions can be brought up in a separate draft
[12:11] <rdieter> scop: why >= exactly?
[12:11] <scop> at least in the xemacs case, there are no guarantees that the built *.elc are backwards compatible
[12:11] <tibbs> The naming question was beaten out a long time ago, though. I only vaguely remember the discussion.
[12:12] <rdieter> scop: ok.
[12:12] <scop> rdieter, they mostly tend to be, but for example *.elc built with xemacs 21.5 will probably exhibit some more or less hard to find bugs when run with 21.4
[12:12] <spot> it seems like that it wouldn't be too hard to ask xemacs/emacs what version it is, and macroize that
[12:12] <rdieter> spot: +1
[12:13] <scop> yeah, I have some of that in xemacs-packages-{base,extra}
[12:13] <spot> scop: do you want to work with the draft author to integrate that?
[12:13] <tibbs> We do that in plenty of other places so it makes sense.
[12:13] <scop> spot, sure
[12:13] <spot> we'll revisit it next week then.
[12:14] <f13> I'm in another meeting.
[12:14] <f13> trying to pay attention to both but...
[12:14] <scop> I'd also like to see something about smaller elisp snippet packaging mentioned
[12:14] <spot> next: http://fedoraproject.org/wiki/PackagingDrafts/StaticLibraryChanges
[12:15] <spot> ralf pointed out that .la files, once included, need to stick around for the life of that Fedora release.
[12:15] <rdieter> s/need/should/
[12:15] <rdieter> :)
[12:15] <spot> is it really a should?
[12:16] <rdieter> is it worth mentioning that .la files are often required for static linking to work?
[12:16] <scop> (for reference, "smaller elisp snippet packaging": #235431, #235437, rpmdevtools)
[12:16] <spot> i think the logic there is that once they're in, removing them causes unexpected behavior
[12:16] <racor> rdieter: MUST, if they have been used
[12:16] <rdieter> spot: imo, anyway, the gain of omission is often greater than risk of "unexpected behavior", but that's just me.
[12:16] <racor> by other *.la's
[12:17] <scop> yep, they tend to propagate into other *.la's
[12:17] <rdieter> racor: of course, if you *know* that's one thing.
[12:17] <spot> i think it is easier to err on the MUST side for this one
[12:17] <scop> I think keeping/removing *.la's falls into the same category as major API/ABI/packaging changes within a release
[12:18] <racor> rule of thumb, ever since FE has existed: Never remove *.la's from a package once it's in
[12:18] <scop> there are several cases where they have been removed
[12:18] <racor> scop: ACK
[12:19] <racor> scop: Yes, but there have been cases where they broke things
[12:19] <abadger1999> k. So add a note that *.la's should be treated the same as an API change?
[12:19] <rdieter> yep (begrudgingly)
[12:19] <spot> racor also pointed out that he'd like this added:
[12:20] <spot> Development libraries (libraries not being used at runtime) must not be packaged in /%{_lib}.
[12:20] <tibbs> That's reasonable.
[12:20] <rdieter> agreed.
[12:20] <scop> "same as other major changes affecting other packages"
[12:20] <tibbs> We shouldn't let /lib fill up with useless crap.
[12:20] <abadger1999> I like that.
[12:20] <spot> They should go in %{_libdir} instead.
[12:21] <spot> Last, but not least: ocaml appears to be retard^Wspecial
[12:21] <spot> it needs to be exempted from this, at least for now.
[12:21] <rdieter> So, we could get icky situations where /usr/lib/libfoo.so symlink points to /lib/libfoo.so.1 ?
[12:21] <tibbs> ocaml is going to be the source of many nightmares, I think.
[12:22] <racor> rdieter: Yes.
[12:22] <spot> rdieter: better that than the other way around.
[12:22] <tibbs> I don't see that situation as being icky.
[12:22] <rdieter> I can see the esthetic value in that, but that's just nasty ugly.
[12:22] <abadger1999> Wait -- ocaml needs static C libraries?
[12:23] <tibbs> As long as ldconfig doesn't crap out on it, that is.
[12:23] <abadger1999> Or just static ocaml libraries?
[12:23] <tibbs> I think there's some weirdness there.
[12:23] <racor> rdieter: It's not "just esthetic", it's more.
[12:23] <rdieter> racor: like?
[12:23] <racor> consider GCC's system library path
[12:23] <spot> "Again, OCaml binaries are always statically linked to OCaml libraries (not to the C libraries they may use however)."
[12:24] <racor> the order of -L -lsystem matters
[12:24] <rdieter> I don't see how /lib vs /usr/lib is affected by that. ??
[12:24] <scop> btw, I think a full review of whether things installed in /bin, /sbin and /lib(64) have dependencies to /usr would be in order
[12:24] <racor> hacking around on it (like glib did in Fc6) can break things in nasty subtile manners
[12:25] <spot> abadger1999: i think you can just add an exception section that says that OCaml libraries are static, and need only to follow the naming policies.
[12:25] <abadger1999> spot: k. Editing.
[12:25] <rdieter> racor: I 'spose I'll take your word on that. :)
[12:28] <racor> sorry, i'm out-of-time for today (wife is waiting with dinner)
[12:29] <racor> should you want to vote, consider mine as 0 on emacs (not enough clues about emacs)
[12:29] <spot> racor: thanks for the time
[12:29] <spot> racor: and on the static with updates?
[12:29] <racor> and +1 on abadger's static link
[12:29] <racor> +1
[12:29] <scop> usersandgroups?
[12:30] <tibbs> You can feel the enthusiasm in the air....
[12:30] <lutter> tibbs: I think it's trembling
[12:31] <spot> ok, lets vote on static draft with edits
[12:31] <spot> +1
[12:31] <tibbs> +1
[12:32] <rdieter> +1
[12:32] <abadger1999> +1
[12:32] <scop> +1 (one minor change: "staticly linking executables" section also affects other things besides executables)
[12:32] <lutter> +1
[12:32] <tibbs> And ralf's +1
[12:33] <spot> scop: is "binaries" a better term?
[12:33] <scop> spot++
[12:33] <abadger1999> scop: Or just static linkage?
[12:33] <scop> even better
[12:33] <spot> +
[12:33] <spot> ok, it passes.
[12:34] <spot> i don't think the Ocaml draft is ready yet...
[12:34] <spot> it seems rather contentious on the lists
[12:34] <abadger1999> spot: I agree. The SIG is still contributing new ideas for it.
[12:35] <spot> which brings us to everyone's favorite flame war
[12:35] <tibbs> What's troublesome is that the language system seems antithetical to many good practises.
[12:35] <spot> http://fedoraproject.org/wiki/PackagingDrafts/UsersAndGroups
[12:36] <tibbs> Didn't seem to be a whole lot of discussion about this the last time it came up.
[12:36] <tibbs> On-list, that is.
[12:36] <spot> I would like to see a Requires(post): shadow-utils instead of the binary
[12:36] <spot> err, pre rather
[12:37] <scop> I think with that change, the executables invoked should be pathless
[12:37] <tibbs> Or perhaps we could get the shadow-utils package to grow Provides: useradd
[12:37] <spot> scop: thats fine
[12:37] <rdieter> not necessarily true is it: Aborting with an error in %pre (as opposed to %post) doesn't trash the rpm database.
[12:37] <rdieter> what if package in question is 1 of 10 in a transaction?
[12:38] <scop> 2-10 proceed fine to the end, assuming their scripts don't require anything that 1 would bring to the table
[12:38] <spot> the other idea is to trap error codes
[12:39] <spot> notting pointed out that "There is a specific exit status for 'user already exists'."
[12:39] <rdieter> I've seen %pre's fail, and it's not pretty cleaning up the mess.
[12:39] <scop> rdieter, define "the mess"?
[12:39] <rdieter> transactions not finished => multiple pkgs installed (foo-1.0 and foo-1.1)
[12:40] <scop> rdieter, are you *sure* you've seen that caused by a failing %pre?
[12:40] <tibbs> From the stanpoint of the guideline, though, don't we have to fail if useradd fails, regardless of whether rpm screws something else up?
[12:40] <scop> dupes can be left behind by failing %post, %preun and %postun yes, but %pre?
[12:40] <spot> tibbs: do we want to fail if useradd fails because the user already exists?
[12:41] <rdieter> scop: pretty sure, I can work up a test-case if it will make you feel better, though I'd counter are you *sure* %pre can't cause what I'm describing?
[12:41] <lutter> spot: no, that would prevent people from preassigning user id's
[12:41] <spot> tibbs: this either means the user was pre-created specifically by the admin, or a "normal" user already chose it.
[12:41] <scop> rdieter, well, I can't think of how would I go about constructing a test case showing %pre leaving dupes behind
[12:41] <rdieter> scop: I can, and will try it.
[12:41] <spot> there's a security hole in there somewhere...
[12:42] <scop> spot, yes, that is noted in the last paragraph
[12:43] <rdieter> or can yum proceed to the cleanup stage for other non-broken packages in the same transaction?
[12:43] <rdieter> I thought it (used to anyway) would abort
[12:43] <scop> if it does, I do see how the trashing could happen
[12:44] <scop> I also think that would be a pretty severe bug in yum or whatever works that way
[12:44] <spot> seems to me like this is worth testing before we vote on that draft
[12:44] <rdieter> ok, then nevermind, it's yum's fault... :)
[12:44] <scop> ("that way" = aborts)
[12:44] <rdieter> is that what: yum -t , yum --tolerant is for?
[12:45] <lutter> rdieter: arether any other options if using %pre doesn't do the right thing ?
[12:46] <spot> would it be worthwhile to print "User $foo already exists!"
[12:46] <rdieter> I'm starting to think keeping the proposal as-is is the lesser evil.
[12:46] <lutter> it seems the nameclash is a problem with creating users from packages, no matter what we do; only choice is how messy it gets
[12:46] <spot> trap the exit code, print on the conditional, let the user installing it know that the user existed already and that the app may not behave as expected.
[12:47] <scop> hey, let's add vendor prefixes to user/group names!
[12:47] * scop ducks
[12:47] * spot throws his lunch at scop
[12:47] * scop ducked too early
[12:47] <rdieter> spot: I thought we're not supposed to spew output in scriptlets?
[12:48] <spot> We're not supposed to, but this is a special "your baby is about to be eaten by dingos" case.
[12:48] <lutter> spot: might be worth it, even if in a lot of cases nobody will see it
[12:48] <rdieter> oh well, that's ok then.
[12:48] <Kevin_Kofler> Don't forget that there's other depsolvers than yum too. There's apt-rpm, there's smart, and then there's even the case of someone running rpm -Uvh on a bunch of packages manually.
[12:48] <lutter> scop: what we could do is keep a registry of system accounts across Fedora; that'll at least give admins some sense of whether their favorite user names will cause problems
[12:49] <scop> lutter, agreed, that's what I mentioned on list too when this was last discussed
[12:49] --> aalamC has joined this channel (n=aalam@220.224.76.193).
[12:49] --> inserto has joined this channel (n=Belkin@217.8.236.2).
[12:49] <spot> I think the registry is a decent idea, it should be integrated as part of the process in the draft
[12:49] <spot> "1. add user/group to registry 2. do it in the package like this"
[12:50] <spot> we might even be able to hook the registry into shadow-utils to warn admins
[12:51] <spot> "Note: this username is reserved by $application"
[12:51] <lutter> that would be even better
[12:51] <tibbs> But some packages do have pretty dumb user names. Like "amanda".
[12:52] * spot shrugs innocently
[12:52] <tibbs> For years I had to rebuild that package to use "dumpuser" instead.
[12:53] <wwoods> 's a backronym. advanced maryland automatic network disk archiver. but yeah, reserving the username "amanda" kinda sucks
[12:53] <lutter> just keeping something like the uidgid from setup up-to-date that way would be good
[12:53] <f13> email from 'amanda' makes admin's wives "happy".
[12:53] <scop> http://fedoraproject.org/wiki/PackagingDrafts/UsersAndGroupsThoughts has some registry related ideas
[12:54] <scop> Provides: user(foo) and friends would be good for querying purposes
[12:54] * spot would like to see some of that incorporated in the draft
[12:54] <spot> scop: ++
[12:54] <spot> oh, thats nice. :)
[12:55] <rdieter> nice++
[12:55] <tibbs> I don't see what Provides: user(blah) could hurt, and it might be useful at some point.
[12:55] <lutter> scop++
[12:55] <scop> ok, what about the "already exists when package installed" case?
[12:56] <spot> I think we should trap the error code
[12:56] <scop> I think spewing the warnings would end up in a *lot* of spewage
[12:56] <tibbs> It definitely can't throw any error.
[12:56] <spot> and just print a warning if the user existed
[12:56] <lutter> how about distinguishing betwen a system account with the same name (probably ok) and a normal user account with the same name (warning/error)
[12:56] <scop> essentially a warning would be printed on upgrade of every package that installs one!
[12:57] <spot> scop: thats a valid concern
[12:57] * spot mumbles about a wish for %{preupdate}
[12:58] <scop> my concern is that when we get these scripts to do everything everyone wants, it'll take a 50 line shell script to do it
[12:58] <lutter> yeah, to do spiffy error checking, you'd want that in some standard script, not in every specfile
[12:58] <tibbs> lutter: It's not possible to distinguish between a normal user account and an account the admin created to fix the user ID.
[12:59] <spot> as much as i'd like to solve this one, i'm not sure we can. we dont want to spew on upgrades
[12:59] <lutter> tibbs: not perfectly, no, but you could use some heuristics like uid >= | < 500, same homedir as what the package wants etc.
[12:59] <spot> how about, if we fail, fallback to a known system user
[12:59] <spot> like nobody
[12:59] <lutter> spot: that kills preassigning uid's, too
[12:59] <tibbs> lutter: That would break on my systems already.
[12:59] <scop> rpm already falls back to root for stuff in %files
[13:00] <lutter> tibbs: and I only meant the heuristic to decide whether there should be a warning or we carry on and assume it's ok
[13:00] <tibbs> I'm not sure what good a warning would do in any case. People don't actually get to see them.
[13:01] <-- inserto has left this server ("Leaving").
[13:02] * rdieter needs to run soon (another meeting).
[13:02] <abadger1999> spot: How would that work? Failure to create the user in the %pre would have to edit a config file or even recompile a binary, right?
[13:02] <-- nim-nim has left this server ("Leaving.").
[13:02] <scop> ok, action items: I'll add some user registry stuff to the draft, and rdieter provides me with some test cases/results related to %pre trashes-or-not?
[13:02] <rdieter> scop: can do.
[13:02] <scop> rdieter, thanks
[13:03] <spot> abadger1999: i was more thinking "if user creation failed, reset the user variable to something safe and present, then use that in the rest of the spec."
[13:03] *** rdieter is now known as rdieter_away.
[13:04] <spot> anyways, i think we're done for the day. any last items?
[13:04] <scop> none here
[13:04] <abadger1999> nope
[13:04] <spot> ok, thanks guys. time for lunch!
