[11:15] <AlexExtreme> woah
[11:16] <AlexExtreme> launchpad's design totally doesn't work in internet explorer ;)
[11:17] <Keybuk> which lp design?
[11:18] <AlexExtreme> i mean
[11:18] <AlexExtreme> the page layout
[11:18] <AlexExtreme> the CSS
[11:19] <AlexExtreme> on launchpad.net
[11:20] <Keybuk> really?  intersting
[11:20] <Keybuk> I would have thought they tested that
[11:20] <Keybuk> what's broken about it?
[11:21] <AlexExtreme> umm
[11:21] <AlexExtreme> in the menu at the top left
[11:21] <AlexExtreme> when you move your mouse over it, it drops down, but there's spaces between all the menu items
[11:22] <AlexExtreme> also some things appear misaligned
[11:22] <Keybuk> heh
[11:22] <AlexExtreme> should i file a launchpad bug report?
[11:22] <Keybuk> there's a new UI coming soon anyway
[11:22] <AlexExtreme> oh ok
[11:22] <AlexExtreme> maybe file an IE bug instead ;)
[11:23] <AlexExtreme> bbl
[02:10] <AlexExtreme> Keybuk: one comment about the graph on the ReplacementInitscripts wiki page - shouldn't the line from "logging daemon" come from started rather than stopped?
[02:12] <AlexExtreme> bbl again
[05:54] <mbiebl> AlexExtreme: what about syslog-ng, did you investigate it any further if it could replace logd?
[05:55] <AlexExtreme> nah, i haven't had the chance - school work's been getting in the way and of course it's more important
[05:55] <mbiebl> np
[05:56] <mbiebl> When you mentioned it, I gave it a quick try and defined a new source like unix-stream("/com/ubuntu/upstart/logd");
[05:56] <mbiebl> But that didn't work out.
[05:57] <mbiebl> syslog-ng seems to expect a real file there.
[05:57] <AlexExtreme> ok
[05:57] <AlexExtreme> i'll take a look later once i've done homework
[06:00] <Keybuk> mbiebl: you forget the \0 on the front
[06:00] <Keybuk> the socket is in the abstract namespace, so it's \0/com/ubuntu/upstart/logd
[06:04] <AlexExtreme> mbiebl: could you test that then? I mean if it works then great, we have a logd replacement ;)
[06:07] <yankees26> sorry (accidental cmd+q)
[06:08] <Keybuk> you'd need to cope with the additional bit of logd protocol
[06:08] <Keybuk> SOCKET PROTOCOL
[06:08] <Keybuk>        logd listens on a unix(7) stream  socket  in  the  abstract  namespace,
[06:08] <Keybuk>        bound to /com/ubuntu/upstart/logd.
[06:08] <Keybuk>        init(8) opens a new connection for each job that is to be logged, bind
[06:08] <Keybuk>        ing the socket to the standard input, output and error file descriptors
[06:08] <Keybuk>        for the job.
[06:08] <Keybuk>        Before  running the job, it sends the job name on the socket so that it
[06:08] <Keybuk>        can be logged along with the messages.  This is sent as a  size_t  that
[06:08] <Keybuk>        contains  the length of the name to read, followed by that many charac
[06:09] <Keybuk>        ter bytes.  The NULL terminator is not sent as part of the protocol, it
[06:09] <Keybuk>        is up to the receiver to add that if required.
[06:09] <Keybuk>        Further  information  about  the  job,  such as its description, can be
[06:09] <Keybuk>        obtained by opening an ordinary connection to the  init(8)  daemon  and
[06:09] <Keybuk>        querying it using the name received.
[06:09] <Keybuk> --
[06:09] <Keybuk> (yes, it has a man page, don't look shocked <g>)
[06:09] <AlexExtreme> saying "have a look at man <whatever>" would have been simpler ;)
[06:09] <yankees26> hehe
[06:10] <Keybuk> it's only in 0.3.0, which isn't packaged yet
[06:10] <AlexExtreme> good point
[06:10] <AlexExtreme> btw did you see my comment about the graph on the ReplacementInitscripts wiki page?
[06:11] <Keybuk> I did
[06:11] <Keybuk> you're right
[06:11] <Keybuk> there's lots of bugs in that actually
[06:11] <Keybuk> it was just a brain dump to at least write something :)
[06:11] <AlexExtreme> like that empty oval in the middle of nowhere :)
[06:12] <Keybuk> that's deliberate
[06:12] <Keybuk> it meant something
[06:12] <Keybuk> unfortunately I did the graph before upstart got the ability (in my mind) to track states
[06:12] <AlexExtreme> ah
[06:12] <AlexExtreme> ok
[06:12] <Keybuk> so I have no idea how I'd redraw it now, dotty isn't good at those
[06:12] <yankees26> sorry once again
[06:15] <AlexExtreme> last question: there are a lot of things pointing to "multiuser". that's an event, right? if so, how do you have events generated once several things have been done?
[06:16] <mbiebl> Keybuk: I tried with @, \0 and nothing on the front.
[06:16] <mbiebl> The error is always: Error binding socket; addr='AF_UNIX(0/com/ubuntu/upstart/logd)', error='No such file or directory (2)'
[06:16] <Keybuk> probably needs doing inside the code then
[06:16] <Keybuk> abstract namespace unix sockets are a bit ... interesting :p
[06:16] <Keybuk> plus Linux specific afaik
[06:17] <Keybuk> AlexExtreme: it was in that draft (which is old)
[06:17] <AlexExtreme> AF_UNIX(0/com/ubuntu/upstart/logd) << that looks wrong, it seems to ignore the \
[06:17] <Keybuk> in reality, it'll just be a flag and we'll make all the jobs parallel again
[06:17] <AlexExtreme> ok, cool
[06:17] <Keybuk> but I've not even written the spec for flags yet
[06:17] <Keybuk> or, in fact, states
[06:17] <Keybuk> I AM TEH SUCK
[06:17] <AlexExtreme> lol
[06:18] <Keybuk> http://upstart.ubuntu.com/wiki/EventStructure
[06:18] <Keybuk> http://upstart.ubuntu.com/wiki/GoalChangeEvent
[06:18] <Keybuk> ^ so far
[06:21] <AlexExtreme> makes sense
[06:21] <Keybuk> I will try and write more tomorrow
[06:21] <Keybuk> this week has not been good for me :-/  too much jet lag and conf exhaustion
[06:22] <wasabi__> #
[06:22] <wasabi__> #
[06:22] <wasabi__> The arguments are not appended to binaries the job executes directly, scripts must be used for that.
[06:22] <Keybuk> I really need to get the stuff wasabi_ and I discussed over very hot thai down
[06:22] <wasabi__> ^ Except for special "exec $1" syntax?
[06:22] <Keybuk> wasabi_: sssh :)  we decided not to tell anyone about that trick <g>
[06:22] <wasabi__> that thai was fucking hot. holy shit.
[06:22] <thom> heh. yeah
[06:23] <AlexExtreme> lol
[06:27] <AlexExtreme> btw, what could be done about having the ability to enable/disable services? i mean, currently, if a file is in event.d, it will be used
[06:28] <yankees26> you could have a simple conf file somewhere (or something like that)
[06:28] <yankees26> kinda like a blacklist file
[06:28] <AlexExtreme> mbiebl: try putting \\0 at the start to see if that makes syslog-ng actually realise that the \ is there
[06:28] <wasabi__> We did some talking about white/blacklist files, for profile stuff. Probably need to talk about that more.
[06:29] <wasabi__> ya know, single-user mode, etc.
[06:29] <AlexExtreme> yeah
[06:29] <mbiebl> AlexExtreme: doesn't help :-/
[06:29] <AlexExtreme> still exactly the same error?
[06:29] <mbiebl> yep
[06:30] <AlexExtreme> then i'll write in something hardcoded to be able to specify an upstart source
[06:30] <AlexExtreme> gimme a few mins
[06:32] <yankees26> or in the actual file in event.d you have something like disable on startup
[06:33] <mbiebl> yankees26: this wouldn't be good from a package maintainer pov.
[06:33] <AlexExtreme> yeah
[06:33] <mbiebl> Having to mangle files is fragile
[06:33] <AlexExtreme> basically, modifying the event file is not an option
[06:33] <Keybuk> AlexExtreme: you probably want that anyway, to get the job name
[06:33] <wasabi__> It is an option.
[06:33] <wasabi__> Three way merge. Etc.
[06:34] <wasabi__> dish time!
[06:34] <AlexExtreme> because if the package providing the job file is upgraded, it would be overwritten
[06:34] <yankees26> mbiebl: true
[06:34] <Keybuk> AlexExtreme: three way merge
[06:34] <AlexExtreme> hmm well, the problem there: frugalware for example doesn't have any sort of capability for merging files
[06:34] <Keybuk> ucs, etc.
[06:34] <AlexExtreme> or am i talking BS? :)
[06:35] <Keybuk> the thought was to ship a standard upstart tool that would merge config files
[06:36] <wasabi__> I suspect if we go down the "profile" path, we'll have to do this too.
[06:36] <wasabi__> And it'll take care of it.
[06:36] <AlexExtreme> so, in a package's upgrade scriptlet you could run an upstart-provided tool that would merge them?
[06:36] <Keybuk> right
[06:36] <Keybuk> packages could install to /usr/share/upstart/... or something, and just run "update-event.d"
[06:36] <wasabi__> [default] \n*=on\ndisableme=off
[06:36] <AlexExtreme> k, sound's good
[06:36] <wasabi__> [single-user] *=off\nsvc1=on
[06:37] <mbiebl> So, update-event.d would create a link to /etc/event.d/?
[06:37] <wasabi__> That being a fairly easy file to update, compared to job files.
[06:38] <Keybuk> mbiebl: maybe.  or copy it
[06:38] <Keybuk> I have a mild allergy to symlinks
[06:38] <AlexExtreme> why's that?
[06:39] <Keybuk> I try and edit them
[06:39] <Keybuk> and end up editing non-config-files
[06:39] <Keybuk> or you end up with the hideous apache style configuration, where the editable config file is in one directory, symlinked to another right alongside
[06:39] <Keybuk> or worse, the Debian udev style, where the config files are just one level up
[06:41] <mbiebl> Maybe doesn't look nice, but it has it's pros
[06:41] <Keybuk> such as?
[06:41] <mbiebl> E.g. if you want to disable a udev rule, you can remove the symlink
[06:42] <mbiebl> I guess in Ubuntu you have to move the *.rules files somewhere else.
[06:42] <Keybuk> rm /etc/udev/rules.d/...
[06:42] <Keybuk> same command ;)
[06:42] <mbiebl> And if you want it back?
[06:43] <Keybuk> get it out of the package again
[06:43] <mbiebl> Not that easy.
[06:43] <Keybuk> why not?
[06:44] <mbiebl> apt-get install --reinstall will not get the file back.
[06:44] <mbiebl> You'd have to download the deb and extract the file
[06:44] <Keybuk> dpkg --force-confmiss --install ...
[06:45] <yankees26> what about a custom .rules?
[06:45] <Keybuk> you could also just edit the file and comment bits out
[06:46] <AlexExtreme> bleh, i can't think right now. i'll look at syslog-ng some other time
[06:47] <yankees26> turkey clogging your brain?
[06:47] <mbiebl> Keybuk: Imho both approaches have pros and cons, it's basically a matter of taste ;-)
[06:47] <Keybuk> indeed
[06:47] <mbiebl> And we know that it is hard to argue about that ;-)
[06:47] <Keybuk> my favourite phrase during UDS was "it's my bikeshed!"
[06:48] <AlexExtreme> mbiebl: want to try metalog? that can handle sockets AFAIK
[06:48] <AlexExtreme> http://metalog.sourceforge.net
[06:48] <thom> Keybuk: GREEN!
[06:49] <AlexExtreme> the only problem with it is that it seems to be unmaintained - the last change was 22 months ago
[06:49] <Keybuk> the truth is that I haven't put more than minimal thought into the config file problem yet
[06:49] <Keybuk> we briefly discussed it at UDS
[06:49] <yankees26> ugh, you guys are making me wanna look through upstart code (and in other words, hurt my brain)
[06:50] <Keybuk> the upstart code is nice
[06:50] <mbiebl> AlexExtreme: never tried metalog
[06:50] <yankees26> it'd still hurt my brain Keybuk :P
[06:50] <AlexExtreme> yankees26: it's better than this syslog-ng code *shudder*
[06:50] <yankees26> i start doing header file searches for functions and thats when it gets painful :P
[06:51] <yankees26> AlexExtreme: never looked at syslog-ng code
[06:51] <yankees26> (nor do i plan to :P)
[06:51] <AlexExtreme> the indentation in it is absolutely disgusting, it's completely unreadable
[06:51] <yankees26> i care a lot about indentatio
[06:51] <yankees26> n
[06:51] <Keybuk> indentation is easy, one TAB per indent ;)
[06:51] <yankees26> i spent like 5 minutes reindenting one of my nirvana perl modules
[06:52] <AlexExtreme> Keybuk: exactly how i like it :)
[06:53] <yankees26> i have it set for 4 spaces but it acts like a normal tab (set softtabstop=4 ftw)
[06:54] <mbiebl> And spaces for alignment ;-)
[06:54] <yankees26> alignment of what (i've never really fiddled with .vimrc)
[06:54] <Keybuk> spaces for alignment is ... irritatingly hard to get right in an editor
[06:55] <yankees26> TO GOOGLE FOR ALIGNMENT! ('cause im dumb and confused ;P)
[06:55] <mbiebl> yankees26: e.g. function arguments, that span over multiple lines.
[06:56] <mbiebl> They should be indented by spaces
[06:56] <Keybuk> yeah, ideally you'd have
[06:56] <yankees26> ah like: int my_extremely_painful_function( int a, string  adfadsfasdfasdf,
[06:57] <Keybuk> ^I^Isome_function (arg1,
[06:57] <Keybuk> ^I^I               arg2);
[06:57] <Keybuk> whereas most editors (including emacs) will do:
[06:57] <yankees26> ah
[06:57] <Keybuk> ^I^Isome_function (arg1,
[06:57] <Keybuk> ^I^I^I     arg2);
[06:57] <yankees26> ya
[06:57] <yankees26> (my example was too long :P thanks for typing that ;P)
[06:58] <Keybuk> it's almost certainly possible to get emacs to do that with some lithp
[06:58] <Keybuk> but my lithp-fu is not strong
[07:00] <yankees26> im gonna find out how in vim
[07:00] <yankees26> (hopefully)
[07:01] <AlexExtreme> hmm. "At the time we started, it was common for a Linux distribution to boot in a mere two or three minutes." Frugalware starts in 40 seconds! </boasting-session>
[07:01] <AlexExtreme> sorry, i had to say that ;)
[07:01] <yankees26> arch takes me 26 :P
[07:01] <yankees26> ;)
[07:01] <yankees26> seconds that is :P
[07:01] <AlexExtreme> arch?!
[07:02] <yankees26> dont act like you dont know where pacman came from :P
[07:02] <Keybuk> edgy is around 35s
[07:02] <mbiebl> Depends on what services you start and how much sanity checking they do.
[07:03] <AlexExtreme> http://frugalware.org/~alex/bootchart-sysvinit.png - i was wrong, it's 30 seconds ;)
[07:03] <mbiebl> Tried initng some time ago and was able to reduce my boot time to 18 sec.
[07:03] <yankees26> i still win ;)
[07:03] <yankees26> ok i lose now
[07:03] <mbiebl> Still it took quite some time until gdm was up.
[07:04] <AlexExtreme> yeah, the reason for that is that because things start in parallel there's more disk access and cpu usage going on which makes it a little slower
[07:04] <mbiebl> But to be honest, bootup time is not so important for me.
[07:04] <AlexExtreme> i found that with Runit, i had the services starting in parallel yet gdm still took the same amount of time to start
[07:04] <mbiebl> Service supervision is much more important e.g.
[07:04] <yankees26> off the top of my head i start: syslog-ng, network, hal, dbus, portmap, fam, alsa, mpd, crond, and then gdm goes
[07:05] <yankees26> i should try that bootchard thing
[07:05] <AlexExtreme> mbiebl: yes, but faster boot time is always nicer ;)
[07:05] <Keybuk> AlexExtreme: on a processor like that, it should be faster than 30 :p
[07:06] <mbiebl> AlexExtreme: but suspend to disk is getting more and more reliable
[07:06] <yankees26> this is why i wanna try upstart when i do lfs
[07:06] <Keybuk> AlexExtreme: you've got a few dead spots
[07:06] <AlexExtreme> yeah i know
[07:06] <mbiebl> You can't beat s2disk ;-)
[07:06] <AlexExtreme> heh
[07:06] <wasabi__> When I think of "profiles" I think of :
[07:06] <wasabi__> http://upstart.ubuntu.com/wiki/Profiles
[07:07] <AlexExtreme> Keybuk: well, this machine is limited in speed because of the hard disk, really. it's about 3 years old. i need to upgrade to SATA II sometime
[07:08] <AlexExtreme> ah well
[07:08] <AlexExtreme> http://frugalware.org/~alex/bootchart-runit.png << runit got 2 seconds improvement
[07:08] <AlexExtreme> anyway, i've gotta go
[07:08] <AlexExtreme> dinner's ready :)
[07:09] <AlexExtreme> btw wasabi__, looks good. quite easy to understand for the average user in my opinion
[07:10] <yankees26> 'cause im unaware of most upstart syntax
[07:10] <yankees26> what are the *=y do?
[07:11] <mbiebl> I guess it means, all available jobs are "activated"
[07:11] <yankees26> ok
[07:13] <wasabi__> the "current profile" is something that is simply set once, and the bits on the job that track whether they are enabled or disabled are just set when switched to it.
[07:13] <wasabi__> so you can pass "default" on the kernel command line, and it just applies those rules to enabled/disable jobs
[07:14] <mbiebl> wasabi_: What about creating directories in /etc/even.t/profiles/(default|single|foo)
[07:14] <wasabi__> And the file is distributed basically exactly as shown. Two levels.
[07:14] <mbiebl> and linking the to be activated jobs in there.
[07:15] <wasabi__> no linking. =(
[07:15] <mbiebl> Why not?
[07:16] <mbiebl> Would be more fool-prof
[07:18] <mbiebl> If the one profiles get's corrupted: bad
[07:18] <mbiebl> If the editor makes a syntax error: bad
[07:19] <mbiebl> Besides, it's harder to manage from withing package maintainer scripts.
[07:19] <wasabi__> i'd hope no package maintainer script would ever touch it
[07:20] <wasabi__> I'm a bit tired of symlink farms.
[07:20] <wasabi__> Also they can't represent *
[07:21] <mbiebl> That's surely is true
[07:21] <wasabi__> We also had an idea of "flags"... some arbitrary strings you could pass to init on boot... to disable things. I'm not sure where we went with that. It was between bofs.
[07:22] <wasabi__> Keybuk: ?
[07:22] <Keybuk> "corridor bof"
[07:22] <Keybuk> I quite liked the flags idea
[07:23] <wasabi__> i seem to have forgotten it
[07:23] <Keybuk> just a bunch of "on" or "off" values, jobs could elect to only run if a flag was on or off
[07:24] <Keybuk> so you could have "if networking" in a network-device-added task
[07:24] <wasabi__> ahh.
[07:24] <Keybuk> if you turn the networking flag off, that doesn't happen
[07:25] <wasabi__> So, on a kernel line, you could have networking=off, and they wouldn't run.   But what would turn networking on in the common case?
[07:25] <wasabi__> or would you call the flag no-networking
[07:25] <Keybuk> something like that
[07:25] <wasabi__> "if not no-networking"
[07:25] <Keybuk> it got fused in my head with the jobs-can-be-states idea, and I need to write that down first
[07:26] <Keybuk> I did at least write all my notes down this time
[07:26] <Keybuk> I just have pages of them
[07:30] <mbiebl> wasabi_:  Should we add the idea with the profile directories + symlinks as alternative proposal to the wiki?
[07:30] <Keybuk> sure, it's a wiki, fill it :)
[07:30] <mbiebl> IIRC it's basically what gentoo uses today.
[07:31] <Keybuk> you need to register to be able to edit pages, as usual
[07:31] <mbiebl> Another one is borrowed from initng.
[07:31] <yankees26> ugh, bootchart's dependency of java annoys me :(
[07:31] <AlexExtreme> yankees26: well
[07:31] <AlexExtreme> the actual script doesn't need java
[07:31] <mbiebl> There, a single file represents a profile.
[07:31] <yankees26> i run a java free system
[07:31] <yankees26> and yes, that is how much i hate java
[07:31] <Keybuk> right, off for dinner, l8r
[07:31] <mbiebl> And you can include files
[07:31] <yankees26> have fun eating Keybuk
[07:31] <AlexExtreme> just download it and run the log it creates through the chart creatorr on bootchart's site
[07:31] <AlexExtreme> Keybuk: have fun
[07:32] <yankees26> AlexExtreme: so java is what takes the log and creates the chart
[07:32] <yankees26> so really i dont need java, hmmm....
[07:32] <AlexExtreme> yeah
[07:33] <AlexExtreme> just download the script from bootchart's site, stick it in /sbin, run the log through the generator on their site
[07:33] <yankees26> will do
[07:33] <mbiebl> AlexExtreme: I thought java was only needed to generate the graph from the log file.
[07:33] <yankees26> hence i can do it from the website
[07:33] <yankees26> not java :D
[07:33] <yankees26> and keep my java free system
[07:33] <AlexExtreme> mbiebl: i know, that's what i'm saying
[07:34] <mbiebl> AlexExtreme: I'm a bit slow atm ;-)
[07:34] <AlexExtreme> heh
[07:34] <AlexExtreme> woah
[07:34] <AlexExtreme> i just found a gawping security hole in cherokee (it's a webserver)
[07:35] <mbiebl> bbl
[07:35] <AlexExtreme> it's htpasswd validation is totally broken - i put in a username that isn't listed in the passwd file and no password, it let me in
[07:35] <AlexExtreme> cya mbiebl
[07:35] <yankees26> bye mbiebl
[07:36] <yankees26> AlexExtreme: do i only need a certain script from the src tarball?
[07:37] <yankees26> thats prebuilt?
[07:37] <AlexExtreme> wait, let me find it
[07:38] <yankees26> ok, thanks
[07:39] <AlexExtreme> get the source tarball
[07:39] <AlexExtreme> copy the bootchartd script from the script dir to /sbin and chmod 755 it
[07:39] <yankees26> ok
[07:40] <AlexExtreme> and copy the bootchartd.conf file from the script dir to /etc and chmod 644 it
[07:40] <yankees26> ok
[07:42] <yankees26> then at boot i set init to init=/sbin/bootchartd, right?
[07:42] <AlexExtreme> yep
[07:42] <yankees26> where is the log file afterwards?
[07:44] <AlexExtreme> /var/log
[07:44] <yankees26> bootchart.tgz?
[07:44] <AlexExtreme> yep
[07:45] <yankees26> 24 seconds :D
[07:47] <yankees26> http://fhatsoft.googlepages.com/bootchart.png
[07:47] <yankees26> have fun admiring :P
[07:48] <AlexExtreme> heh
[07:48] <AlexExtreme> brb
[07:49] <yankees26> ok
[07:51] <AlexExtreme> back
[07:52] <yankees26> welcome back
[07:52] <yankees26> one more seinfeld disc left before i've finished season 7 ;D
[07:56] <yankees26> brb: i'm gonna get some lunch
[08:13] <yankees26> brb