/srv/irclogs.ubuntu.com/2007/05/31/#upstart.txt

=== Amaranth [n=travis@ubuntu/member/Amaranth] has joined #upstart
=== rgl [n=Rui@84.90.10.107] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== Amaranth [n=travis@ubuntu/member/Amaranth] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== esr [n=chatzill@static-71-162-243-5.phlapa.fios.verizon.net] has joined #upstart
=== Amaranth [n=travis@ubuntu/member/Amaranth] has joined #upstart
=== jonibo [n=jonas@ua-83-227-144-18.cust.bredbandsbolaget.se] has joined #upstart
=== Starting logfile irclogs/upstart.log
=== ubuntulog [i=ubuntulo@ubuntu/bot/ubuntulog] has joined #upstart
=== Topic for #upstart: Upstart 0.3.8 | http://upstart.ubuntu.com/ | http://upstart.ubuntu.com/wiki/UpstartOnGentoo
=== Topic (#upstart): set by Md at Sun May 6 19:59:46 2007
=== Md [i=md@freenode/staff/md] has joined #upstart
=== rgl_ [n=Rui@84.90.10.107] has joined #upstart
=== AlexExtreme wonders whether it would be better to define profiles in seperate files for each profile rather than a single file
AlexExtremeit would be much easier to work with IMO11:24
Keybukprofiles are interesting11:25
Keybukone could almost define them as a state in their own right11:25
AlexExtremeyes11:31
Keybukwhich means you'd be able to turn them on/off during system runtime11:31
AlexExtremeif I were to use seperate files for each profile, what would be a good directory name for the profiles to live in? i thought /etc/bootprofiles.d, but a) it's a bit long b) profiles wouldn't just be used during boot :)11:31
AlexExtremehmm, just a random thought: how about a directory structure like this for upstart:11:36
AlexExtreme /etc/upstart11:36
AlexExtreme         |-----> profiles.d/ - Profiles defined here11:36
AlexExtreme         |-----> jobs.d/     - Jobs defined here11:36
AlexExtreme         |-----> states.d/   - States defined here11:36
AlexExtremeSo instead, everything would live under /etc/upstart/something rather than scattered in many directories in /etc11:37
KeybukI've been thinking of that, yeah11:38
AlexExtremeand /etc/event.d is incorrectly named anyway, since they aren't events really, they're jobs and states ;)11:38
Keybukyeah11:39
KeybukI'd thought of /etc/init instead of /etc/upstart11:39
AlexExtrememaybe11:39
AlexExtremeshall I write a spec for a new directory structure? ;)11:46
KeybukI don't think it needs one at this point ;)11:46
Keybukit's a one-line code change <g>11:46
AlexExtreme:P11:47
=== Keybuk debates the ".d"
AlexExtremethe .d is unnecessary, really11:48
AlexExtremeit'd only be necessary really if there was something like: /etc/upstart/jobs - some static file, and /etc/upstart/jobs.d - a directory to do with that static file11:49
AlexExtremesince that static file is not there, and most likely won't ever need to be there, the .d is unnecessary11:49
Keybukyeah that's what I thought11:52
Keybukthough it does fit other standard naming11:52
Keybuke.g. /etc/udev/rules.d11:52
Keybukand upstart will actually support single-conf-files11:52
Keybuk(I'm gonna push for 0.3.9 at the weekend, while my partner is away <g>11:53
AlexExtremecool11:53
AlexExtremeso what super-duper-cool features are we gonna have? ;)11:53
Keybuk - portability fixes11:54
Keybuk - bug fixes11:54
Keybuk - works when there's no console support by default (openvz, etc.)11:54
Keybuk - internal rework of Event11:55
Keybuk - multiple configuration file and directory support11:55
Keybuk - "reload" support for configuration11:55
Keybuk - new initctl commands to replace use of signals11:55
Keybuk - new config layout11:55
Keybukthat lot11:56
AlexExtreme<Keybuk>  - new config layout << what's that one?11:56
Keybuksee above ;)12:01
Keybukwe just agreed on that, no? :p12:01
AlexExtremeoh12:01
AlexExtremei thought that was this one: <Keybuk>  - multiple configuration file and directory support12:02
AlexExtremeanyhow, sounds good :)12:02
Keybukthat one is the code support in cfgfile to support tracking what config directories/files have been parsed, and which jobs were found in them12:03
Keybuklooks something like12:03
Keybuk  cfg_source_new (NULL, "/etc/init/jobs.d", NULL);12:03
Keybuk  cfg_source_new (NULL, "/etc/init/states.d", NULL);12:03
Keybuk  cfg_reload ();12:03
AlexExtremeah12:04
=== Amaranth [n=travis@ubuntu/member/Amaranth] has joined #upstart
AlexExtremewhoo, written my basic profile parser :p12:27
=== Md [i=md@freenode/staff/md] has joined #upstart
rgl_Keybuk, 0.3.9 will work inside a linux-vserver guest?12:54
=== rgl_ is now known as rgl
Keybukrgl: in theory12:59
rglKeybuk, it will use syslog instead of /dev/console ?01:00
Keybukno01:03
Keybukit reopens /dev/console properly01:03
rglKeybuk, humm, but there is no /dev/console 01:05
Keybukthere's always a /dev/console01:07
rglno there isn't ;)01:07
rglyou have to either link it to /dev/null, or start up syslog-ng to create a pipe at /dev/console01:08
rgl(linux-vserver does not have a virtualized /dev/console)01:08
Keybukit still exists in the kernel01:08
rglsure.  but last time I've checked, its not advised to export it to guests.01:09
Keybuksyslog won't be running, because this is init :)01:09
rglhumm, good point *G*01:11
AlexExtremewell, what does sysvinit do? :)01:11
=== jonibo [n=jonas@ua-83-227-144-18.cust.bredbandsbolaget.se] has left #upstart []
rglby default, a linux-vserver does not start init.  it just runs /etc/init.d/rc01:13
rglbut we can make it run init.  but last time I've tried, I failed to make upstart work at all :-(01:14
KeybukAlexExtreme: opens /dev/null01:14
AlexExtremergl: then what is the parent of all the processes? surely when rc exits it'll drop dead since process #1 has died01:14
=== Md [i=md@freenode/staff/md] has joined #upstart
rglAlexExtreme, there is a "virtual" #1.   the guest will stay awake until all its processes die.  (and not when #1 dies)01:15
AlexExtremeah01:15
Keybukwhat reaps children?01:16
rglI think its that "virtual" #1.01:16
rglbut I don't known for sure.  there is some magic/vudu out there *G*01:17
rglanyways, last night, I couldn't make upstart 0.3.8 do what I want :-(01:17
rglcan you guys look at http://pastie.caboo.se/66469 and tell me if I'm doing something wrong?01:18
rglnamely, when I "start php-fcgi", the "php-fcgi-1" does not start at all.01:18
KeybukI don't see why that shouldn't work01:31
Keybukrun in another window01:32
Keybuk"sudo initctl events"01:32
Keybukthen do "start php-fcgi" and paste the output of initctl from the other window01:32
rglOK.  give me a sec to fireup vmware. :D01:33
rglKeybuk, odd.  it now works!01:36
rglKeybuk, do I have to restart upstart after I add a new service file or something like that?01:37
Keybukshouldn't need to01:40
Keybuk0.2.7 had bugs where it didn't notice01:40
Keybuk0.3.8 should work just fine01:40
Keybukif you have experienced bugs, we'd like to get them fixed :p01:40
rglI can't reproduce the problem I had yesterday.  but sure, if I found some bug I'll let you known.01:42
rglI found one quirk that is bugging me, if a process fails to restart for five(?) times in a row, upstart never tries to launch it again, it that normal?  can I config it?01:43
Keybukright01:43
Keybukyou'll see a "respawning too fast" type warning01:43
KeybukI think it's attempting to respawn 5 times in 10 seconds01:43
Keybukit's configurable01:44
Keybuk  "respawn limit COUNT PERIOD"01:44
Keybuke.g.01:44
Keybuk  respawn limit 100 1001:44
Keybuk(stop job if it respawns more than 100 times in any 10s period)01:44
rglah nice :D01:44
Keybukif either of them are 0, then the respawn catching is disabled01:45
rglworks on 0.3.8? :D01:45
Keybukmost things work on 0.3.801:45
rglcool :D01:46
rglwhat you mean respawn catching is disabled?  the service is always restarted?01:46
Keybukyeah01:47
Keybukservice is allowed to restart as many times as it likes01:47
Keybukwhy were you hitting the respawn limit out of interest?01:47
Keybukusually that means that the thing you're exec'ing is dying01:47
Keybukwhich is bad, no?01:47
rglyes it is a bad thing :D01:48
Keybukwhy was it dying?01:48
rglI was trying it :D01:48
rglto see how upstart reacted when the service dies01:48
Keybukah right01:49
Keybuka few notes from scrollback01:49
Keybuk"service"01:49
Keybukand "start" doesn't exit01:49
KeybukUpstart has two basic types of jobs01:49
KeybukTasks and Services01:49
KeybukTasks are things like "run fsck", or "backup my home directory", etc.01:49
KeybukServices are daemons and stuff01:49
Keybukfor tasks, "start" deliberately doesn't exist until it's complete (and events they "start on" aren't deemed finished), since the task is not successful until it exists01:50
Keybuks/exist/exit/01:50
Keybukfor services, you want "start" to exit (and events to finish) when it is running, since that's when it's successful01:50
Keybuk(a successful fsck is a finished one, a successful web server is a running one)01:51
Keybukthey're otherwise identical in configuration01:51
KeybukUpstart jobs default to being tasks01:51
Keybukif you want them to be services, you need to put either "service" or "respawn" in the config01:51
rglwoah, thx!  that explains things :-)01:52
Keybukthere's a third option as well01:53
Keybukbut this is not fully implemented yet01:53
Keybuk(supervision on processes that fork into the background)01:53
Keybuk-- 01:53
Keybukwhy failing services still say "started"01:54
Keybukthis is because from Upstart's point of view, it has started -- the script is running01:54
Keybukthere's no internal way (yet) for the service to notify Upstart that it is, in fact, really running and really ready01:54
Keybukthere's two planned improvements here:01:54
Keybuk 1 - better catching of exec() failures.  Right now Upstart forks the child and assumes it's running; exec() failures aren't special.  This will change so that the exec() has to finish before Upstart moves the job out of the spawned state (and thus can move directly into stopping if the exec() failed for some reason)01:55
Keybuk 2 - libupstart readyness notification.  services that take a while to be ready will be able to use libupstart to notify upstart that they're accepting connections, etc.  if this fails to happen, they can be considered failed, killed, and restarted01:56
rglI see.  thx for the explanation :-)02:00
rglare you also planning on having monit alike-features? :D02:00
Keybukno02:02
Keybukno particular reason to, since monit already has those features02:03
Keybukyou can use monit to do the monitoring, and have it tell upstart to restart services, etc.02:03
rglah ok.02:04
rglmaybe monit could be enhanced to do real time monitoring by listening to upstart events.02:04
KeybukI'm a full believer in the "do only one thing well"02:04
Keybukexactly02:04
Keybuksame for heartbeat, et al02:04
Keybukit makes no sense for upstart to grow the ability to communicate across serial ports, etc.02:05
Keybukit makes far more sense for the services that already can do that to link to libupstart and emit events, or even start/stop processes themselves02:05
Keybukif you look at initctl, it's just a wrapper around libupstart02:05
Keybukso any process can do whatever it can do02:05
Keybuk(ie. list services, start/stop them, emit events, etc.)02:05
rglmakes sense :)02:06
rglwhat is libupstart?02:07
rglI mean, I see no libupstart package02:07
Keybukthe IPC library02:07
Keybuksee upstart/message.h in the source code02:08
Keybukit's not separately packaged yet, because the API isn't anywhere near stable02:08
rglah, so its not yet packed as a .so file.02:08
Keybukright, it's an .a file in the source linked to by initctl02:08
Keybukanything initctl does is through libupstart messages02:09
Keybuke.g. "initctl version"02:09
Keybukthat's done by something like:02:10
Keybuk  int sock = upstart_open ();02:10
Keybuk  NihIoMessage *msg = upstart_message_new (NULL, UPSTART_INIT_DAEMON, UPSTART_VERSION_QUERY);02:10
Keybuk  nih_io_message_send (msg, sock);02:10
Keybuk  msg = nih_io_message_recv (NULL, sock, NULL);02:11
Keybuk  upstart_message_handle (NULL, msg, { UPSTART_VERSION, my_func }, NULL);02:11
Keybukmy_func (..., const char *version, ...) {02:11
Keybuk   printf ("%s\n", version);02:11
Keybuk}02:11
rglsweet :D02:12
rglwhat is NIH?   (not invented here? *G*)02:12
ion_NihIoMessage *msg = upstart_message_new (NULL, UPSTART_INIT_DAEMON, UPSTART_I_NEED_CAFFEINE_NOW);02:12
Keybukyes02:12
Keybukion_: UPSTART_EVENT_EMIT, "i-need-caffeine" :p02:12
ion_:-)02:13
Keybukrgl: libnih is my "Copy & Paste" code library02:13
Keybukthat stack of code that most developers have of useful bits and pieces that don't quite exist anywhere else02:13
Keybukit's roughly akin to glib, or the hackerlab lib, etc.02:13
rglah, good old misc. utils lib :D02:13
KeybukI should put that in the FAQ?02:14
Keybuk"Q. Why do you use libnih and not glib?"02:14
Keybuk"A. typedef int gint"02:14
ion_Hehe02:14
rglwhats the pun? :D02:14
Keybukpun?02:15
rglI didn't get the answer *G*02:15
rglso I suppose its a pun or something like that02:15
Keybukglib provides alternate names for all of the C standard types02:16
Keybukallegedly for portability02:16
Keybukso instead of "int", you have "gint"02:16
Keybukand instead of "char", you have "gchar"02:16
rglso what?02:17
Keybukit's silly02:17
Keybuk"gpointer is easier to use than void *"02:18
Keybukno it's not02:18
rglits like having DWORD, UNIT and the like, no? :D02:18
Keybukit's longer to type, and it's not very C-ish02:18
KeybukDWORD makes sense, since it varies between platforms02:18
Keybukand needs to be defined differently in different circumstances02:18
rglthe "WORD" is "DWORD" is different for each CPU I guess.  so its like silly too.  unless WORD is not as in CPU WORD.02:19
Keybukglib tries to hide C from the programmer02:20
Keybukyou don't program in C, you program in "glib"02:20
Keybukthis strange OO-ish variant of C02:20
Keybukthis, to me, seems silly02:20
rglC with gobjects :D02:21
rglwhy do jobs default to task instead of service?02:27
ion_Id expect most of the jobs to be tasks eventually.02:29
Keybukrgl: had to pick one02:33
rglwhy not make it explicit?  02:33
Keybukif "service" was the default, you'd need a "task" stanza02:33
Keybukand then you'd have the issue where you'd have to error if both "task" and "respawn", or "task" and "daemon" were specified02:34
Keybukwith "task" as the default, there's no need for any conflicts checking - "service", "respawn" and "daemon" are all possible options; and any of them implicitly enable "service" if not already specified02:34
Keybukexplicit is the likely end-point, yeah02:35
Keybukbut then that's icky, because you'd need "file doesn't state any of 'task', 'service', 'respawn', 'daemon', 'state', 'profile'" etc.02:35
Keybukanother option is to configure them in different directories02:35
Keybuk/etc/init/tasks.d02:35
Keybuk/etc/init/services.d02:36
rglor "unknown job type" *G*02:36
ion_In the long run, multiple directories might be good, as the number of jobs will go up.02:36
Keybukof course, multiple directories has the namespace issue02:36
ion_True.02:37
Keybuk/etc/init.d/task.d/foo02:37
Keybuk/etc/init.d/service.d/foo02:37
Keybukwhich wins?02:37
rglhumm, havin different directories means you'll have different event namespaces?  that is, how you'd wait for a task/service?02:37
rglyeah *G*02:37
ion_Neither. Upstart gives an error and doesnt use either one.02:37
rglor foo.task foo.service *G*02:38
Keybukrgl: ick02:39
Keybuk:p02:39
rglhehe02:41
rglone thing I would like is "nested" services, that is, php-fcgi, php-fcgi/1, etc :D02:41
=== rgl hides
=== AlexExtreme deserves to be slapped right now. i spent half an hour figuring out why my profile parser was segfaulting, then realised i wasn't putting braces round the else block so only the first line was being run for it, the rest would always be run ><
Keybukrgl: we kinda have that <g>02:47
Keybukyour php-fcgi is an excellent use case for something else we've been thinking of02:47
Keybukand let me explain by first talking about that02:47
Keybukright now we have /etc/event.d/tty[1-6] 02:47
Keybuk6 files, all of which do the same thing, with different arguments02:47
Keybukand each one would need something like02:47
Keybuk  while tty-added tty1 until tty-removed $TTY02:48
Keybuk  exec /sbin/getty 38400 tty102:48
Keybukeurgh02:48
Keybukit would be better to have one getty job that runs 6 times, with different arguments02:48
Keybukwe have this kind of thing already02:48
Keybuk"instance" jobs02:48
Keybukif you put the "instance" keyword in the config file, then every "start" will spawn off a new instance02:48
Keybukso "status php-fcgi" would return as many lines as "start" has been called02:49
Keybuklikewise for events02:49
Keybukso, we could have a single getty job:02:49
Keybuk  instance02:49
Keybuk  while tty-added tty[1-6]  until tty-removed $TTY02:49
Keybuk  exec /sbin/getty 38400 $TTY02:49
Keybukthat'd get run 6 times, since six matching "tty-added" events would occur02:50
Keybukand each one would run until its associated tty was removed02:50
Keybukyour example would work very well with file events02:50
Keybuk  instance02:50
Keybuk  while file-exists /var/run/php/fcgi.*02:51
Keybuk  exec /usr/bin/php5-cgi -b $FILE02:51
Keybukyou'd get as many events as you had matching files, and thus as many instances of that job02:51
Keybuk"status" would show them all02:51
Keybuk"start" would have to specify which file it wanted to start with ...02:51
Keybuk   # initctl start php-fcgi FILE=/var/run/php/fcgi.foo02:52
=== tale [n=tale@207.235.54.1] has joined #upstart
Keybuk"stop" would have to specify which instance to stop; or "stop php-fcgi" would stop them all02:52
rglhum, so to start an instance we just need to touch a file?   and to stop it we just need to rm it?02:55
Keybukyeah02:55
rglall FS have notifications? 02:56
Keybukinotify is in the VFS layer, so yeah02:56
rglyou are targetting linux only?02:57
Keybukabsolutely02:57
KeybukUpstart is unashamedly dependant on features of the Linux kernel02:57
rglokay :D02:57
KeybukI think the above is a pretty elegant solution, what do you think?02:58
rglits pretty neat :D02:59
rglat least for this particular use-case :-)03:00
rglcan I have it now? ;-)03:00
Keybuksoon03:01
Keybukthe instance bit works now03:01
Keybukthe tying instances to events bit depends on complex-event-config03:01
Keybukand you'd want file events as well, which are todo03:01
rglcool :D03:02
AlexExtremebah03:03
AlexExtremeKeybuk, can you help me with NihList quickly? :)03:03
Keybuksure03:03
AlexExtremehang on03:04
AlexExtremehttp://frugalware.org/paste/1453 << ok, that's my code. it's probably really ugly, but anyway :) the loop at the bottom goes through each of the things i've added to the list and prints them out, but it prints out complete rubbish and uses the wrong value for disabled. so obviously i'm adding stuff incorrectly. it's mostly based on what i've seen from notify.c in upstart03:06
AlexExtremes/disabled/enabled/03:06
Keybukstyle: "NihList entry" is nominally the first thing in a struct03:09
Keybuk(nothing assumes this, but it's just a style point)03:09
AlexExtremeheh03:09
AlexExtremewell03:09
AlexExtremethat kinda fixed it :p03:09
Keybukyou don't need NIH_LIST_FOREACH_SAFE03:09
Keybukjust NIH_LIST_FOREACH will do03:09
Keybukaha!03:09
Keybukyes, the iter points you're getting are pointers to the entry member03:10
Keybukso you can't just cast them to upstart_profileentry_t03:10
Keybuk(this is the reason I always put the NihList entry first <g>)03:10
AlexExtreme:)03:10
AlexExtremewell03:10
AlexExtremenow i'm getting this03:10
AlexExtreme[14:09:35]  [ alex in ~/Frugalware/work/upstart/profile ]  $ ./profile default 03:10
AlexExtremeParsing profile default...03:10
AlexExtreme * Everything will be enabled by default but can be overridden03:10
AlexExtreme * network will be enabled no matter what03:10
AlexExtremebut, it doesn't seem to recognise the fact that there is also an apache entry there somewhere03:10
AlexExtreme[14:10:39]  [ alex in ~/Frugalware/work/upstart/profile ]  $ cat default 03:11
AlexExtreme* = y03:11
AlexExtremeapache = y03:11
AlexExtremenetwork = n03:11
Keybukyou free the job in the loop ;)03:11
AlexExtremeoops03:11
AlexExtreme:p03:11
AlexExtreme[14:11:22]  [ alex in ~/Frugalware/work/upstart/profile ]  $ ./profile default 03:12
AlexExtremeParsing profile default...03:12
AlexExtreme * Everything will be enabled by default but can be overridden03:12
AlexExtreme * apache will be disabled no matter what03:12
AlexExtreme * network will be enabled no matter what03:12
AlexExtremeyay \o/03:12
AlexExtremethanks ;)03:12
AlexExtremenow to make it check against files in /etc/event.d03:12
rgl"stop on runlevel [!1] " is that a stop on runlevel not 1 ?03:13
Keybukyes03:13
rglis so, why the []  ?03:13
Keybukfnmatch()03:13
Keybukstandard UNIX glob(7) syntax03:13
rglthe runlevel arg is a glob?03:14
Keybukyes03:14
rglah alright :D03:14
Keybukarguments to events in "on" are globs03:14
rglI can have: stop on runlevel 1 2 3 ?03:14
Keybukso that means stop on any runlevel event with a single-character argument that is not the character "1"03:14
Keybukno03:14
Keybukstop on runlevel [12303:14
Keybukstop on runlevel [123] 03:14
Keybukthe runlevel event has a single argument, the runlevel being entered03:14
rglACK :)03:15
KeybukI realised the other day that the runlevel event should have a RUNLEVEL and PREVLEVEL environment variable03:17
Keybukthen I could do away with all of the code in the rc jobs03:17
Keybukrunlevel would update utmp and emit the event itself03:18
Keybukerr, telinit would03:19
Keybukthen I could do away with runlevel --set03:20
rglhow do I make sure the admin does not start an service because another one is not running?03:40
rglsomething like dependencies.03:40
rgloh well, scrap that.  if it depends on other, and that one is not started, the start of the service will eventually fail because of that.  so the admin will notice that somehing is not right.03:42
Keybukhow do you mean03:44
Keybukright03:44
AlexExtremehooray! http://frugalware.org/paste/145403:47
rglKeybuk, what is the behaviour of jobs that are symlinks?   I mean, I have a symlink: php-fcgi-3 -> php-fcgi-1 and when I change php-fcg-1 job file, and do a: stop php-fcgi-3 ; start php-fcgi-3;  upstart does not reload the job file.  Is that intended?04:02
Keybukerr04:03
Keybukyes :-)04:03
AlexExtremeiirc inotify has some bugs with symlinks04:03
Keybukeither we need to handle symlinks specially, or inotify needs to handle them specially04:04
Keybukuse hardlinks for now :o)04:04
rglok :D04:04
AlexExtremekernel command line arguments that the kernel doesn't use are passed to init, right?04:04
KeybukAlexExtreme: foo=bar arguments are set in init's environment04:05
KeybukAlexExtreme: anything else is an argument, yes04:05
AlexExtremeah, cool. so if i were to do what my profiles spec says on the kernel command line, i'd get the requested profile in the environment?04:06
Keybukright04:08
Keybukexcept upstart doesn't pass those yet (bug)04:08
rglKeybuk, ouch, even hardlinks do not work *G*04:18
Keybukheh04:18
Keybukreally?04:18
Keybukinteresting04:18
rglyup, really.  I had to touch the file to upstart to reload it.04:19
Keybukthat's odd04:20
Keybuksince touching the file is the same effect as editing it, no? :p04:20
Keybukmaybe it's touch-by-name04:20
rglthe point is.  if I edit the config file (say, on hardlink 1), I have to touch all the other hardlinks too.04:21
rglso I really need that "instance" feature you've talked yearlier, or else I might be biten in the arse someday heheh04:23
AlexExtremei don't need upstart to pass them to the jobs, i need it from upstart itself :)04:29
AlexExtreme(the environment vars)04:29
AlexExtremehmm04:43
AlexExtremeis the profile override on the kernel command line thing that I put in the profiles spec really necessary? I can't really think of a valid use case for it04:45
Keybukdunno, I can't remember what it was for?04:45
AlexExtremeThe profile can be overridden at boot-time by specifying extra kernel command line arguments, like the example below. It tells upstart to use the "noserver" profile but overrides what the profile defines should be done with mysql and postgresql:04:46
AlexExtreme    *04:46
AlexExtreme      bootprofile=noserver override=mysql:no,postgresql:no04:46
AlexExtremeit's just the override part i'm referring to04:46
Keybukoh right04:46
AlexExtremeyou should definitely be able to change the profile at boot :)04:46
Keybukand after booted? :p04:47
AlexExtremeyes, of course :P04:47
AlexExtremeactually04:47
=== AlexExtreme rewrites the spec ;)
Keybukwhich begs the question, do the jobs respond to the events, and just not start04:47
Keybukso when you re-enable the profile, they start immediately04:47
AlexExtremeIMO they shouldn't immediately start04:48
Keybukwhy not?04:49
Keybukif I enable multiuser, shouldn't things like getty start? :p04:49
AlexExtremetrue04:49
AlexExtremethat, of course, makes life a lot harder :) (at least, afaik)04:50
=== juergbi [n=juerg@80-219-19-101.dclient.hispeed.ch] has joined #upstart
AlexExtremehttp://upstart.ubuntu.com/wiki/Profiles << how's that?05:03
rglI have to ask this.  why a file and not a directory with the jobs you want on a profile?05:05
AlexExtremehuh?05:06
AlexExtremethe file only lists the names of the jobs05:06
rgland the directory would too.  you just need to have a file named after the job name.05:07
rglthat way, its easier for a package to add a job into a profile.  (it doesn't need to edit a file).05:07
AlexExtremethere would be a utility to do that05:07
AlexExtremeso the packages would just call a utility05:08
AlexExtremeand you wouldn't be able to do the * with that, nor disable jobs easily05:08
AlexExtremeand it requires you to use symlinks05:08
rglI like the directory better.  *G*05:08
rglif you don't want a job in a profile, that create a file for it.05:08
rglif you don't want a job in a profile, don't create a file for it.05:09
AlexExtremei don't see why it's better, all i can see are disadvantages05:09
rgl*srug*05:09
rglmaybe the command should be named "profile" as in "initctl profile new-profile-name"?05:13
=== Md_ [i=md@freenode/staff/md] has joined #upstart
=== Md_ is now known as Md
=== juerg [n=juerg@80-219-17-120.dclient.hispeed.ch] has joined #upstart
=== rgl_ [n=Rui@84.90.10.107] has joined #upstart
=== juerg__ [n=juerg@80-219-16-162.dclient.hispeed.ch] has joined #upstart
=== juerg__ is now known as juergbi

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!