Conversation with #inferno at Wed Apr 6 14:38:48 2011 on powerman-asdf@irc.freenode.net (irc) (14:38:48) card.freenode.net: (notice) [freenode-info] if you're at a conference and other people are having trouble connecting, please mention it to staff: http://freenode.net/faq.shtml#gettinghelp (15:41:18) mjl-: hah, finally i found a way to properly scroll a text window so the last line in the widget is shown exactly at the bottom (15:41:38) mjl-: namely: .w scan mark 0 0; .w scan dragto -10000 -10000 (15:41:58) mjl-: where -10000 should be a big number, so that's a bit ugly (16:06:14) dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] entered the room. (16:43:19) GriffenJBS: jas, mjl-, thanks I've seen the notation but figured they were defined constants, didn't think about the r being radix (16:47:10) tensai_cirno [~cirno@77.232.15.216] entered the room. (16:47:21) GriffenJBS: mjl-: you mentioned the compiler inlining functions, does it also prune dead code? (16:50:00) mjl-: it probably does, but i don't know for sure (16:59:04) GriffenJBS: I'd assume it's like java, since the modules are publicly imported the only thing that can be pruned is private objects (17:19:06) GriffenJBS: is it possible to dynamicly load modules ie http://pastebin.com/Uz96fjqb (17:23:04) mjl-: haven't succeeded in loading a module that way (17:27:36) GriffenJBS: so many 'tricks' I've learned from C/Java/Javascript that don't apply here (17:27:56) GriffenJBS: is it possible to serialize a adt? (17:29:46) jas: mjl: there's still amber (orange) on black (17:30:14) jas: I think what I liked most about the prior version was the single output view for each command (17:30:59) jas: since wm/sh doesn't have an efficient way to clear the scroll back buffer, wm/run's approach was a nice clean start (17:31:20) mjl-: jas: i see :) (17:31:42) mjl-: jas: so did you use the history function? that you scrolled back to outputs of previous commands? (17:32:00) mjl-: i can easily add a mode that clears the screen before running a command (17:32:06) jas: nope, though that is an interesting approach (17:32:35) jas: either a mode that clears the screen before each new command, or a clear way to purge the scrollback buffer (17:32:37) mjl-: you could access earlier i/o with ^n and ^p (17:32:46) mjl-: ok (17:32:56) mjl-: jas: did you notice the button2 wm/sh-like menu? (17:33:04) mjl-: i could add a "clear" button there (17:33:08) mjl-: to clear the screen once (17:33:13) GriffenJBS: wm/sh has a menu? (17:33:21) jas: oh... neat (17:33:28) mjl-: or a clear/noclear mode, that clears before running a command (and clears when you enable "clear mode" (17:33:34) mjl-: GriffenJBS: yeah, button2! (17:33:40) mjl-: and it shows up (17:35:01) mjl-: hmms, something is off in wm/run, sometimes you drag with button2 instead of getting the menu (17:35:38) GriffenJBS: my mouse has 2 buttons, and 2 scroll wheels, I don't know if inferno thinks it's button 2 or button 3, but chording and so many other things don't work (17:35:52) mjl-: that sucks (17:35:53) jas: yeah, a clear buffer menu would work great (17:36:13) mjl-: ok, i'll make that (17:36:21) jas: scroll wheels do muck up button 2 chording (17:37:00) GriffenJBS: X lets you reassign inputs so a keyboard event could be assigned to missing mouse buttons (17:37:11) GriffenJBS: I've found no such option in wm (17:38:00) GriffenJBS: XInput gathers all keyboard/mouse input, does some remapping magic and then sends on the the X apps (17:38:17) GriffenJBS: s/the the/to the/ (17:38:52) jas: that's probably a code addition required to win-x11: the osx port assigns a meta key, but I always forget which one I assigned for button-2 and button-3 since I tend to keep a nice mouse on hand (17:39:28) GriffenJBS: in wm/sh if I right click a filename, it' opened in brutus (17:39:46) GriffenJBS: jas, laptop, I'm moving alot so dragging a mouse along is a pain (17:39:47) mjl-: jas: pushed it (17:40:33) GriffenJBS: think of it as an accessability problem, if I'm missing fingers could I use the keyboard instead of a mouse? currently not (17:41:24) jas: excellent... (17:43:26) jas: mjl: spawn the main loop off in a separate function, that will detach wm/run without requiring the user to type `wm/run &' (17:43:59) mjl-: makes sense, i'll do that (17:44:36) GriffenJBS: :-) thank you man, I have buttons 1&3 reported by inferno so I'm missing 2 (17:47:01) anth: can you really use any radix? i never thought about that. i should start writing everything in base 5 or 27. (17:47:41) GriffenJBS: strange, most systems I've worked with, assuming LtR, left==button1, right==button2, middle~=button3, wheelclick~=button4, thumbclick ... (17:47:47) jas: base 12 is nice (17:48:33) GriffenJBS: base 5? fan of finger counting are we? (17:48:50) jas: off to the lab to test out wm/run a bit more (17:49:45) GriffenJBS: mjl-: wm/run is pretty nice, it stopped the term I was working on (17:50:14) GriffenJBS: wm/sh became a lot more useful when I discovered /chan/shcctl and 'button' (17:50:44) GriffenJBS: /chan/shctl that is (17:59:37) mjl-: GriffenJBS: how do you use /chan/shctl? (18:00:05) mjl-: GriffenJBS: left & right buttons, that's insensitive to left-handed people! ;) (18:00:33) GriffenJBS: mjl-: echo 'button ''mk'' ''mk''' > /chan/shctl (18:00:44) GriffenJBS: replace with actual new line (18:01:00) GriffenJBS: mjl-: I stated LtR when I started (18:01:09) dreadlorde left the room (quit: Ping timeout: 248 seconds). (18:01:24) GriffenJBS: those systems also allowed remapping for RtL with no problem (18:01:44) GriffenJBS: I get the joke, but it accomadates for both (18:01:47) mjl-: ah, never used the /chan/shctl thing. it gives an actual button, pretty handy (18:02:13) mjl-: GriffenJBS: ok, but b1 is clearer imho (18:02:23) mjl-: though you may get into trouble as to how many buttons there should be between "left" and "right" (18:02:51) GriffenJBS: so then I made scripts that would clear the buttons, setup a mini ide for make, compile, clear, run with different arg lists (18:03:02) GriffenJBS: acme is pretty useless with limited mouse buttons (18:04:05) GriffenJBS: mjl-: at the OS level it's button1, button2 ... 1 is assigned to primary (LtR or RtL) click and 2 to the opposite (18:04:07) anth: not useless, just not awesome. it removes the chording, which makes it more like other editors (bad) (18:04:39) GriffenJBS: the input mapper keep a flag to flip map B1<->B2 or not for L or R handedness (18:05:34) GriffenJBS: and XInput is advanced enough you can put escapes in it to pipe input through filters (18:06:25) GriffenJBS: ie CtrlM turns on keyboard mouse mode and arrows move, ABCD clicks 1234, until ESC is pressed, if you chose to config it that way (18:07:07) GriffenJBS: I'm rambling. Is it possible to serialize an adt? (18:08:52) robot12 left the room. (18:13:41) mjl-: GriffenJBS: no, you can't serialze an adt... (18:13:48) mjl-: and that's a pity (18:13:53) GriffenJBS: sure is (18:14:15) GriffenJBS: no pointers so you can't map data into one either (18:15:10) mjl-: one could probably write a function in the dis vm that packs/unpack an adt from a string or fd (18:16:19) GriffenJBS: I know enough of the system, that sounds like an unwise/insecure/etc thing for me to attempt (18:16:32) GriffenJBS: s/I know/I don't know/ (18:16:59) GriffenJBS: thanks for the pointer (18:17:24) mjl-: hmm, i don't know if the dis vm knows enough about types to be able to fill them in (18:18:24) GriffenJBS: with a known adt writing the code yourself isn't too bad, but it seems impossible to ad-hoc (18:19:15) mjl-: the adt must always be known, in a limbo program at least. (18:21:02) GriffenJBS: seralize[T] (obj: T): string isn't possible (18:22:26) GriffenJBS: the price of portablility I guess (18:28:36) anth: i don't think allowing that would need to be inherently unportable. (18:29:13) GriffenJBS: I was speaking in general, like in limbo val++ overflow is undefined (18:29:58) GriffenJBS: I know C/C++ has quirks, but that seems strange to me (18:34:46) eno left the room (quit: Ping timeout: 260 seconds). (18:36:09) eno [~eno@nslu2-linux/eno] entered the room. (19:50:26) tensai_cirno left the room (quit: Ping timeout: 276 seconds). (20:34:53) tensai_cirno [~cirno@77.232.15.216] entered the room. (21:23:17) arvindht_ left the room (quit: Ping timeout: 252 seconds). (21:27:14) perdix left the room (quit: Remote host closed the connection). (21:50:31) tensai_cirno left the room (quit: Read error: Operation timed out). (21:55:12) perdix [~mkhl@sxemacs/devel/perdix] entered the room. (23:18:49) perdix left the room (quit: Ping timeout: 246 seconds). (23:30:56) perdiy [~mkhl@sxemacs/devel/perdix] entered the room. (01:08:58) GriffenJBS: how do you reassign types? casting doesn't seem to work, I'm guessing I need load (01:09:26) mjl-: from which type to which? (01:09:51) GriffenJBS: but is 'a: InterfaceA = load ClassWithInterfaceA ClasB;' possible? (01:10:26) GriffenJBS: mjl-: from ESHostobj to Ecmascript (01:11:18) GriffenJBS: Esmascript should contain ESHostobj, but I can't assign to Ecmascript->Exec.global.host (01:12:41) GriffenJBS: :-) I just had my code really borked, recursive look with no exit, under deb it takes a while to pop the stack (01:12:50) GriffenJBS: recursive loop (01:14:16) mjl-: GriffenJBS: there is sys-self(2) (01:14:25) mjl-: for loading yourself (a module) as another module (01:14:32) mjl-: another module's interface (01:15:06) GriffenJBS: but I'm not trying to load myself, I'm trying to load B as A for use by self (01:16:15) GriffenJBS: ESHostobj appears to have no code of it's own, it's an interface (is the the right term in limbo?) which Ecmascript implements (01:16:50) mjl-: yeah, ESHostobj seems to be a module interface (01:17:11) mjl-: so you can probably make various implementations, and somehow put them in an Ecmascript module or something (01:17:22) GriffenJBS: I've been looking through charon, but there is a lot in there (01:17:36) mjl-: i bet it's for building things for which you need limbo support, i.e. can't be done in pure js (01:17:41) mjl-: or just for convenience (01:18:23) GriffenJBS: in charon it looks to be a easy catchall for the object access so you can override it with browsers objects (01:21:55) GriffenJBS: nvm, I'll just forward the calls, fix it later if someone has a better way (01:22:24) mjl-: ok, i'm not of much help in this area. i don't know javascript or inferno's implementation (01:22:31) mjl-: plus, it doesn't seem to have documentation (01:23:03) GriffenJBS: :-) tell me about it, even the source is light on comments (01:23:27) GriffenJBS: source with little to no comments in a language you don't really know (01:23:33) GriffenJBS: at least it's fun ;-) (01:23:38) mjl-: hehe ) (01:23:41) mjl-: ☺ (01:24:48) GriffenJBS: I was in a robotics channel the other day, made me stop and think when a guy said "I can't do it, have to be in the mood; I'm glad I don't program for a living" (01:25:49) GriffenJBS: I enjoy programming more than any other optional thing I can think of (01:26:12) GriffenJBS: sleeping, eating... yeah I guess they still win (01:29:47) KillerX [~anant@nat/mozilla/x-fwupvwjjteiqdqwm] entered the room. (01:32:00) mjl-: same here (01:45:30) GriffenJBS: opps, been running debugger and not killing the app on exit, I just found a whole bunch of broken processes (01:48:26) mjl-: broke (01:48:35) mjl-: it should kill them (01:53:27) GriffenJBS: yeah, I can confirm, started deb, started prog, exited deb, found broken process (03:26:14) KillerX left the room (quit: Quit: KillerX). (03:26:35) KillerX [~anant@nat/mozilla/x-lauffdvyuhpkotqd] entered the room. (03:56:05) KillerX left the room (quit: Quit: KillerX). (04:25:49) perdix [~mkhl@sxemacs/devel/perdix] entered the room. (04:27:10) perdiy left the room (quit: Ping timeout: 246 seconds). (04:34:10) perdix left the room (quit: Ping timeout: 246 seconds). (04:40:14) perdix [~mkhl@sxemacs/devel/perdix] entered the room. (04:51:31) tensai_cirno [~cirno@77.232.15.216] entered the room. (05:01:40) __20h__ left the room (quit: *.net *.split). (05:02:40) mycroftiv left the room (quit: *.net *.split). (05:03:13) mycroftiv [~ircguy@h69-128-47-242.mdsnwi.dedicated.static.tds.net] entered the room. (05:03:47) __20h__ [~some_one@r-36.net] entered the room. (05:18:26) perdix left the room (quit: Ping timeout: 258 seconds). (05:22:11) perdix [~mkhl@sxemacs/devel/perdix] entered the room. (05:40:36) vsrinivas [~me@c-68-48-11-23.hsd1.md.comcast.net] entered the room. (05:48:14) bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] entered the room. (05:51:29) bugQ left the room (quit: Read error: Operation timed out). (05:59:27) bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] entered the room. (06:10:48) bugQ left the room (quit: Remote host closed the connection). (06:11:06) bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] entered the room. (06:13:55) tensai_cirno left the room (quit: Ping timeout: 246 seconds). (06:47:23) jas: ok, having a bit of trouble w/ the Vi mode (06:47:35) jas: (this is wm/run) (06:48:17) jas: while attempting to yank, I see `tkcmd: '.e.input get' -> '!bad index -width' (06:51:15) bugQ left the room (quit: Ping timeout: 246 seconds). (06:53:00) bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] entered the room. (07:13:19) tensai_cirno [~cirno@194.186.188.95] entered the room. (07:32:48) bugQ left the room (quit: Remote host closed the connection). (07:44:11) arvindht [c2ed8e11@gateway/web/freenode/ip.194.237.142.17] entered the room. (07:48:38) tensai_cirno left the room (quit: Ping timeout: 260 seconds). (08:30:48) tensai_cirno [~cirno@80.250.216.102] entered the room. (08:39:34) eno left the room (quit: Ping timeout: 276 seconds). (08:39:48) eno [~eno@nslu2-linux/eno] entered the room. (10:14:58) tensai_cirno left the room (quit: Quit: Leaving). (10:37:20) robot12 [~kazzhilki@proxy10.ts.fujitsu.com] entered the room. (10:42:25) mjl-: do you have a key sequence that reproduces that error? (11:56:13) mjl-: i've got a new idea (11:56:20) mjl-: useful for emuq mostly (11:56:50) mjl-: namely: when starting graphically, pick a resolution based on the host os desktop resolution, minus some padding (11:57:27) mjl-: i normally start inferno with a wrapper script that sets the resolution to something slightly smaller than my host os resolution. inferno could do that automatically (11:57:44) mjl-: having full resizing capability would be much better, but also more work (11:58:00) mjl-: thoughts on this? (12:00:30) powerman: mjl-: sane and usable defaults are always good idea, especially if it doesn't require any sort of complex smart logic trying to guess what is better for user (12:02:00) mjl-: yeah. currently it defaults to 640x480. perhaps that's good for some cases... (12:02:08) mjl-: powerman-asdf: do you have a nearly fullscreen inferno window? (12:02:12) mjl-: or perhaps really fullscreen (12:02:56) mjl-: next question would be: how much margin do you need. properly more for the top/bottom, then left/right. at the top/bottom of the host os is probably more often a task bar or whatever (12:04:45) powerman: mjl-: http://powerman.name/tmp/screenshot.png (click reload if you'll see mc instead of emu cached from previous time) (12:05:54) powerman: i think you should check ubuntu instead of my fluxbox to define better margins, because chances are default gnome/kde environment require larger margins (12:09:03) mjl-: hah, so you have more margin for the left/right :) (12:09:14) mjl-: better always have enough on both sides. (12:10:08) powerman: mjl-: btw, about "emuq is extremely easy to set up and use". imagine user who know nothing about secstore, doesn't have any sort of $auth, etc. (12:10:59) mjl-: yeah, good point (12:11:13) mjl-: requiring secstore is quite annoying (12:11:19) mjl-: i bet even most inferno/plan 9 users don't have secstore (12:11:31) mjl-: i certainly didn't use it before making & using emuq (12:11:53) powerman: after starting emuq and clicking Enter he will find "secstore" window, which is asks for something completely unclear. trying to press Enter again result in error "can't translate $auth" (12:12:16) mjl-: i think i'll duplicate the builtin config. to a new builtin-secstore or something. and make the default builtin not ask for secstore credentials. (12:12:24) mjl-: perhpas it also shouldn't ask for an sftp server (12:12:40) mjl-: powerman-asdf: with the new version you can press Esc! (12:12:48) mjl-: but it's still unclear (12:16:45) powerman: yep. next, about sftp. while I doesn't have secstore (and while I have auth server it's private for our company and doesn't suitable for use with emuq), I was lucky enough to have ssh/sftp. so I can try to use it. but that doesn't clear too: (12:18:49) powerman: at first, user name in Win doesn't match user name in sftp. so, input line now looks like: (12:18:49) powerman: sftp server for /n/home [powerman@powerman.name] (12:18:49) powerman: which isn't intuitive (some help about "user@host" would be nice) (12:20:48) powerman: now, I doesn't have allowed password auth on ssh - keys only! - so now I see "Need key" window, with two empty lines to set some variables, but I've no idea which variable and how I should set. I guess I should copy&paste my ssh private/public keys somehow in this window, but how to do this? (12:21:19) powerman: also there are minimized "Sshkeys" window with "Waiting for request…" text (12:23:19) mjl-: myeah, the ssh stuff isn't terribly clear (12:23:35) mjl-: factotum asks for a ssh-rsa and ssh-dsa keys becuase that is what ssh tries first (12:23:43) powerman: just clicking "Done" in "Need key" window few times result in freezing it (can't even move it or minimize/close) (12:23:51) mjl-: you can just press "done" without (12:23:56) mjl-: oh really? (12:24:03) mjl-: it continues for me when i click done (12:24:15) mjl-: i.e. first asks ssh-rsa, then ssh-dsa, then for normal password (12:24:45) mjl-: the "sshkeys" problem asks if using the remote hosts key fingerprint is okay (12:24:54) powerman: yep. after first "Done" it probably asked for password (there was "!password" var added on top of this window), after second "Done" it now doesn't show any vars, it's just small windows with single "Done" button (12:25:34) mjl-: that is weird (12:25:46) mjl-: could you perhaps make a screenshot? (12:26:10) mjl-: anyway, i may be able to fix that: tell sftpfs to make an ssh connection that doesn't try to do rsa or dsa auth, only password auth (12:26:46) mjl-: perhaps factotum should be changed never to ask for public/private keys... noone is ever going to type them in anyway (12:27:03) powerman: yeah, it asks for ssh-rsa, then ssh-dsa, then password, then it minimized. if I restore it, there no more vars and just one "Done" button, but window is alive. after clicking that "Done" window freezes (12:29:15) powerman: typing ssh keys is probably bad idea, you right. but password-only auth is bad idea too. I suppose '#U' already mounted at that time, so you can popup file chooser window to locate putty's files with private/public keys (12:29:35) mjl-: ah! (12:29:56) mjl-: the "need key" is always minimized when there is noone asking factotum for anything (12:30:18) mjl-: it's probably a bug in auth/feedkey (i think that's the name of the program) (12:30:57) mjl-: if you type the password, it should authenticate, and you should have your sftp files on /n/home. it doesn't automatically start a remote shell (12:31:47) mjl-: powerman-asdf: if all is well, /usr/$user is already mounted with your windows/unix/plan9/macosx home directory by the time you see the prompt (12:31:57) mjl-: so yeah, asking for putty's pub/priv key files should work (12:32:13) mjl-: a simple program to look for the file and write them to factotum should work (12:32:25) mjl-: but... i bet those pub/priv key files are encrypted (12:33:02) mjl-: using secstore sounds like a good way to give factotum the pub/priv keys at startup. you do need a network connection then (12:35:46) mjl-: i also see what you mean with the user@host thing. auth/feedkey has a wrong default for the username (12:35:53) mjl-: actually it has a duplicate field :) (12:36:03) mjl-: there is also a read-only "user" field that is set correctly (12:36:16) mjl-: i'll have to address these things with an upcoming rework of the ssh tools (12:36:55) mjl-: sftpfs needs work, i'm going to write an sshnet, and ssh itself needs improvements too. and also how it works together with factotum. plenty of room for improvements :) (12:40:04) powerman: as for putty's encrypted private key - if it's too complex to ask for password and decrypt it, nice ui probably will: (12:40:04) powerman: 1) detect encryption; 2) notify user about needs to provide unencrypted key (once); 3) when given unencrypted key it will store it in (local) secstore or in some other secure way inside inferno; 4) notify user he can safely remove unencrypted key from windows disk. (12:40:47) powerman: and take that key from secstore on next run, of course (12:45:40) powerman: about keeping emuq up to date: I suppose it will mount updated root from venti, but how about updating emuq itself? I think it should at least detect availability of updated version (using some file on venti's root fs, I think), and popup notification window with download url to user. (12:47:32) powerman: if user will keep emuq.exe in home dir (already mounted within inferno), then it will be even possible to download updated emuq.exe (using charon?) and save it to disk overwriting previous version - all within inferno (12:48:17) mjl-: powerman-asdf: it may be of use to too few people to learn how putty encrypts keys, and to ask user about it. i do really want some encrypted local store for use by inferno. part of the goal of emuq is to be able to work offline. inferno doesn't have a secstore server though. perhaps my cryptfile can be used (after some improvements, as always :)) (12:49:47) mjl-: and updating needs some attention too. it's not ideal: you can update the config by putting focus on the tk entry widget and pressing return. tab switches the focus there. after fetching the config, the focus is again on the config in the list on the left, where you can hit return (12:49:49) powerman: probably even `echo reboot >/dev/sysctl` allow to reload emuq.exe after update :) sadly, but such reboot doesn't work well in linux, and I've no idea is it works good enough in windows (12:50:02) mjl-: so updating & starting the config is: tab return return (12:50:33) mjl-: the config holds the root score, so indeed it gives you a new root file system (12:51:07) mjl-: the emuq.exe holds that root score though (for the builtin config), so it's a chicken & egg problem if you want to include emuq.exe in the root file system :) (12:51:38) mjl-: getting a notification of an update would be nice yeah (12:52:03) mjl-: there should be a simple way to detect that. perhaps just do an http HEAD request and look at the last-modified timestamp. (12:52:15) mjl-: also, i've been thinking of making an emuq project page on googlecode (12:52:36) mjl-: hopefully that will allow me to upload emuq.exe in the projects download page (12:52:48) mjl-: which is probably available over https (12:52:51) powerman: yeah, googlecode is good at least because it's simple but useful issue tracker (12:52:58) mjl-: yeah, that too (12:53:18) mjl-: perhaps i'm too security paranoid about wanting "secure" downloads. but this is your OS you're running. (12:54:05) mjl-: hopefully google also transparently compresses files it offers for download. it is required to live up to emuq's claim of requiring only an initial 750KB download. without compression it's more like 1.6MB (12:54:09) mjl-: but, details ☺ (12:54:35) mjl-: i've got a suspicion that you cannot overwrite a running emuq.exe (12:54:48) mjl-: windows being so anal about not touching files/dirs that are in use (12:56:16) mjl-: ok, overwriting the file is no problem (12:56:30) mjl-: would be cute to be able to "echo reboot >/dev/sysctl" ☺ (12:57:03) powerman: actually, googlecode's download page work with https://, but download links are http:// - but they work as https:// too if you manually edit url (not sure is there no auto-redirect to http) (12:57:26) powerman: probably http:// download links on https:// page is just a bug in googlecode itself (13:03:21) mjl-: yeah (13:03:32) mjl-: it seems reboot to /dev/sysctl does work on emu in windows (13:03:40) mjl-: but not good enough (13:04:24) mjl-: it seems not everything is cleaned properly. the venti's started by vacinit fail because the tcp port is not available, i.e. the old announced sockets are still alive somewhere (13:05:46) mjl-: http://www.ueber.net/who/mjl/tmp/feedkey-nohang.diff ← makes feedkey not hang when you press the "done" button while no request is pending (13:06:25) powerman: correct reboot implementation should be as simple and killing all threads and then exec(self). in theory. :) (13:06:28) mjl-: but factotum/feedkey can use much more work (13:09:37) mjl-: and run the gc long enough so all references do sockets have been collected :) (13:10:08) mjl-: it seems googlecode doesn't provide transparent compression for downloads. bummer, but i can live with it (13:14:44) powerman: no needs to run gc at all (13:15:04) powerman: why? if all threads killed and main process completely replaced by new one with exec()? (13:16:11) mjl-: if you kill threads, but don't gc, there may be references to fd's alive. if you exec, those will not be closed. so announced sockets will survive to the new emu, which knows nothing about them (13:18:01) powerman: hm. yeah. you right. I think sure this should be done using gc, probably it's easier to cleanup all sort of things which child process will inherit in more straightforward way - just close everything except stdin/out/err, etc. (13:18:55) powerman: s/I think sure/I'm unsure/ (13:18:56) powerman: :) (13:21:20) mjl-: it seems currently devcons.c just calls osreboot(), on openbsd that does just an exec(), so no threads are killed. perhaps it's not so hard to fix. (13:21:33) mjl-: which problems did you see on linux with rebooting emu/ (13:24:45) GriffenJBS left the room (quit: Ping timeout: 252 seconds). (13:25:18) powerman: mjl-: if it is done in emu-g with just one console sh, after reboot it looks like there two sh running on same stdin - i.e. only each second command executed, etc. (13:25:25) GriffenJBS [~john@adsl-8-186-128.mia.bellsouth.net] entered the room. (13:25:33) powerman: probably that's because old threads wasn't killed (13:25:37) mjl-: yeah (13:27:33) powerman: is there are any chances this reboot was supposed to, say, replace current dis implementation without interrupting current processes, sort of nginx's "graceful upgrade" feature? (13:28:32) mjl-: sounds like a lot to ask (13:28:46) mjl-: i can't imagine that was the attempt (13:28:57) mjl-: you'ld have to pass info about the current state around (13:29:13) mjl-: i don't know about nginx's feature, but perhaps its state is not so complex, or it just goes through enough hoops to make it work (13:29:41) mjl-: i think irssi also had an upgrade feature. it would pass info about irc connections (eg fd's) to the newly exec'ed process (13:30:21) powerman: nginx just start new process listing on port 80, and stop listening on port 80 in old process. so, old process continue running, handling current http connections until they all will be closed, then exists. new process at same time already serving new connections. (13:30:55) powerman: very simple. sadly, this doesn't compatible with service supervisors like daemontools/runit (13:31:35) powerman: s/exists/exits/ (13:32:55) powerman: not sure such functionality can be implemented for VM like dis at all, not saying about simple and reliable implementation (13:35:06) powerman: mjl-: so, for me it looks like sysctl's reboot just should be fixed, it shouldn't be too complex to fix it, and while only real task requiring reboot is emuq upgrade, it's unlikely will be fixed if you doesn't fix it yourself :) (13:35:56) mjl-: agreed (13:36:15) mjl-: it shouldn't be too hard. just have to make sure you kill enough :) (13:36:19) mjl-: KILL KILL KILL (13:37:40) powerman: mjl-: btw… any progress with ideas how to package/distribute 3rd-party things? last time we discussed that I've wrote huge amount of rationale text here, but you didn't replied (13:38:08) powerman: or maybe it was more like rant than rationale, not sure ;-) (13:40:21) mjl-: i've not thought much about it i'm afraid (13:40:29) mjl-: do you still have the text somewhere? (13:40:33) mjl-: i think it was about /opt too? (13:42:55) mjl-: sorry for not responding (13:42:57) powerman: yep. send you logs by email? (13:43:56) tensai_cirno [~cirno@77.232.15.216] entered the room. (13:43:59) powerman: I can live with different schemes for packaging/distributing apps/libs, but if we define something general it would be ease for everyone to use, even for us. (13:44:41) mjl-: yeah, please send it to me, mechiel@ueber.net (13:52:47) powerman: sent (14:10:11) mjl-: got it! (14:10:19) mjl-: well, my spam filter got it :( (14:10:25) mjl-: i've got to get rid of it (14:17:16) The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects.