On Sunday 11 July 2010 23:24:45 Denys Vlasenko wrote: > On Sunday 11 July 2010 21:48, Rob Landley wrote: > > Why are mount and acpid different? > > You know the answer. Because someone submitted the patch to add > those #defines to mount.c.
Actually git credited you with the patch, and a quick glance at the git comment didn't credit anyone else, so I thought it was you. (Looking more closely I see you were taking existing portability code out of platform.h code and spreading it around into the rest of the code. I'm not even going to ask why.) > If you want such defines in acpid.c, you can send the patch. > Or you can add it yourself. > Or you can simply ask me "please add #ifndef SW_LID #define SW_LID > to acpid.c", ... > > > I can switch off acpid. I haven't used defconfig in years because it's > > become useless to me, I start with allyesconfig and apply a trimconfig > > file that switches off the stuff that's broken in some context or other. > > > > I'm just wondering what the reasoning for doing different things in > > different applets is. > > ...instead of sort of accusing me of evil plot to make acpid.c > to not build on SLES 10. Trust me, I do not have such plan! :D I'm not trying to accuse you of an evil plot, sorry if it came across that way. The patch is trivial enough that pointing out the issue and coming up with an #ifdef are almost equivalent, my question was really "How do you want to handle this issue I tripped over". You set busybox policy these days, and I'm trying to ask policy questions. (And I'm trying to ask _questions_ rather than say "I think we should do it THIS way", because I don't wanna be bossy. I'm probably screwing that part up horribly.) One question is about defconfig: I've never quite understood what your criteria for putting stuff in defconfig is, and your initial suggestion that defconfig isn't intended to be particularly portable kind of confused me further. As for the applet in question, I'm really not that familiar with what it does. Possibly acpid falls under the same category as those weird "select 32bit/64bit mode" commands for x86-64, whatever they were called. (Searching for them in menuconfig I ran into the dozen "FEATURE_VOLUMEID_BLAH" entries which are attached to: config VOLUMEID bool #No description makes it a hidden option default n So the group entry is hidden but the individual "Ext filesystem" and "btrfs filesystem" ones aren't, and I can't clean that up because I have no idea what you're trying to do with it.) Anyway, back to the point: acpid might be x86-only since ACPI itself was Intel's attempt to get away from BIOSes written in 16-bit 8086 assembly language (because those made the itanic look bad, so intel launched a major denial-of-reality effort to try to make Itanic sink slower), and thus they came up with BIOSes written in a new bytecode that was neither Java nor Fortran, and everybody threw up on it and only fished the data tables out of it (and then System Management Mode happened and I <strike>fled in terror</strike> stopped paying attention to the non-coreboot stuff). So I'm out of the loop on acpi these days, and I dunno what acpid is actually doing. It's possible that acpid is fishing around in /proc or /sys interfaces that are only available on current kernels, so adding the #ifdef is pointless. (The result would compile, but never actually do anything useful.) Or, it's possible that the ACPI interface has become the generic way for Linux to report power events to userspace, even when the back-end is something else, and thus arm and mips and such care, and maybe that's how remaining battery life is reported on the HTC Inedible, and thus it _should_ be in defconig. I don't know. http://lesswatts.org/projects/acpi is a bit of an argument against it, but that's an Intel site so it probably wouldn't support mips and such even if the kernel did. So "should this build portably" and "should this be in defconfig" were actually two separate questions, which I wasn't clear on. I was focusing on "should this be in defconfig" (because I don't know), but I'm still trying to figure out what defconfig is actually for these days. > Please try this patch on SLES 10 and let me know if it doesn't help. The patch is overkill. The only symbol I needed to #define to build acpid was SW_LID. Three lines: --- a/util-linux/acpid.c +++ b/util-linux/acpid.c @@ -9,9 +9,12 @@ #include "libbb.h" #include <linux/input.h> +#ifndef SW_LID +# define SW_LID 0x00 +#endif #ifndef SW_RFKILL_ALL # define SW_RFKILL_ALL 3 #endif Of course that's to get it to build on sles10. On sles9 ionice dies because SYS_ioprio_set and SYS_ioprio_get are undeclared, but regression testing in general is a can of worms, and a policy issue. Back in 2006, I used to use Red Hat 9 as the metric, "you must be this tall for busybox to care about you as a build environment." But that was only a 3 year old version at the time, released April 2003. These days, it's probably fallen off the bottom of what most people care about. I'm more interested in the policy issues than any specific bug. These days I'd probably personally use Ubuntu 6.06 LTS as the regression test version, since Cannonical is still supporting that through June of next year according to https://wiki.ubuntu.com/Releases and it's currently the most popular Linux (about 40% market share among Linux distros last I heard). According to /proc/version, the kernel in SLES 9 was built in July 2006, and the one in SLES 10 was built in May 2008. (These machines would be honey pots if they weren't internal build servers behind a firewall.) So they're roughly on par with Ubuntu 6.06, more or less. (They're also what I have lying around at work.) So, three policy questions: 1) What should and shouldn't be in defconfig. 2) How portable should acpid be? 3) How old a system are we interested in regression testing on? Stated in my usual incoherent ramble... Rob -- GPLv3: as worthy a successor as The Phantom Meanace, as timely as Duke Nukem Forever, and as welcome as New Coke. _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox