rob_w changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information || Attention due to latest spam floods this channel will only allow registered users to send messages - check https://freenode.net/kb/answer/registration
pierpal has joined #picolisp
erkin has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 244 seconds]
alexshendi has quit [Ping timeout: 252 seconds]
Nistur has quit [Ping timeout: 246 seconds]
Nistur has joined #picolisp
Fwirt has joined #picolisp
Fwirt has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<mtsd> Good morning!
<Regenaxer> Good morning mtsd!
<mtsd> Hello Regenaxer
<Regenaxer> :)
<beneroth> Good morning mtsd, Regenaxer :)
<mtsd> Morning beneroth!
<Regenaxer> Hi beneroth!
<Nistur> mornin'
<beneroth> Hi Nistur
<razzy> hi
<beneroth> Hey razzy :)
<Nistur> o7
<Regenaxer> Hi Nistur, razzy
<razzy> o7?
<beneroth> tiny head and a salut
<beneroth> apt-get install sl
<beneroth> sl -alh
<beneroth> \o/
<Regenaxer> uh? What is 'sl' good for? :)
<Regenaxer> "Correct you if you type `sl' by mistake" ?
<Regenaxer> So sl corrects itself?
<Nistur> razzy: it's a salute
<razzy> Nistur: woa, i was expecting right hand
<beneroth> Regenaxer, it shows an ASCII train when you mistype ls
<razzy> but 7 is ok :]
<beneroth> known bug: when you mistype sl as ls, it shows the current directory
<beneroth> Regenaxer, no other functional use beside making people smile ;-)
<beneroth> similar to 'apt-get moo'
<Regenaxer> sick ;)
<beneroth> you spelled slick wrong :P
<Nistur> there's a similar thing you can get which, if you type in something it doesn't recognise, or something that isn't installed, it'd do `sudo rm -rf /`
<Regenaxer> hmm, moo not found
<Regenaxer> neither Debian nor Termux
<Regenaxer> nevermind :)
<beneroth> it's a easter egg of apt-get, not a separate package
<Regenaxer> ok
<beneroth> I have it on ubuntu and debian
<beneroth> Nistur, never heard of that.
<Nistur> beneroth: I'll try and find it
<Nistur> beneroth: https://qntm.org/suicide
<beneroth> sounds like a pretty crowley-eske approach to teaching...
<beneroth> Nistur, there was a space invader game implementation which randomly deleted a system file whenever you got hit by an enemy
<beneroth> was for windows though, afaik
<Nistur> there's also this http://psdoom.sourceforge.net/ which is fun :P but I'm sure there was one where it showed the filesystem as enemies, and if you shot them, it would delete them
orivej has joined #picolisp
<beneroth> lol xD
<razzy> well, it is way to up the stakes,.. permadeath at its best
ubLIX has joined #picolisp
<Nistur> 'hurt me plenty'
<Nistur> ... which I've just found out is a gay sex game
<Nistur> I MEANT the skill level on Doom, which was obviously more relevant to our current conversation
<Nistur> I would have gone for 'Ultra-Violence' or 'Nightmare!', but, despite them being higher skill levels, they don't seem as relevant from a system maintenance perspective
<Nistur> maybe Nightmare!, but that was more ambiguous
<beneroth> [OT/news] btw in case you haven't saw that: chrome browser is messing with URLs: https://bugs.chromium.org/p/chromium/issues/detail?id=881410
<beneroth> looks a lot like Google wanting to make even more people use their search website as address bar instead of using browsers properly (most non-IT users do already...)
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
<Nistur> beneroth: urgh.
<beneroth> they even claim safety / anti-phishing reasons, but that is imho complete bs, as that URL meddling just allows more ways to make a site appear like another one
<Nistur> yup
orivej has quit [Ping timeout: 264 seconds]
<freemint> morning
<beneroth> hi freemint
<freemint> what are you up to recently?
<razzy> beneroth: T , google is preparing to setup global goverment
<beneroth> razzy, would not say that, they just want to keep and extend their domination of the internet
libertas has joined #picolisp
<razzy> beneroth: control communication and coordination and you are doing goverment job
<razzy> you might as well dismiss goverment at that point
<razzy> :]
orivej has joined #picolisp
freeemint has joined #picolisp
freemint has quit [Ping timeout: 252 seconds]
mtsd has quit [Quit: Leaving]
_whitelogger has joined #picolisp
ubLIX has quit [Quit: ubLIX]
freeemint has quit [Ping timeout: 246 seconds]
freemint has joined #picolisp
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
_whitelogger has joined #picolisp
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
alexshendi has joined #picolisp
erkin has joined #picolisp
freemint has quit [Ping timeout: 252 seconds]
freemint has joined #picolisp
alexshendi has quit [Ping timeout: 245 seconds]
ubLIX has joined #picolisp
alexshendi has joined #picolisp
orivej has quit [Ping timeout: 244 seconds]
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #picolisp
ubLIX has quit [Quit: ubLIX]
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
orivej has joined #picolisp
ubLIX has joined #picolisp
grp has joined #picolisp
<grp> *yawn*
<grp> -_-
<grp> Regenaxer: ping
<grp> got fix
<grp> trivial stuff but still...
<Regenaxer> Hi grp!
<grp> src64/mkAsm: /usr/bin/picolisp shouldn't be hardcoded. I know... it's where it should be, but that's only for LSB-compliant distros
<grp> it better if it's which picolisp >/dev/null
<grp> and no absolute path for 'pil' either
<grp> what's with that you may ask... well... I was revising nixos packaging and had to patch that to build correctly
<Regenaxer> (?) src64/mkAsm has #!/bin/sh
<grp> no no, the following lines
<Regenaxer> ah, ok, I see what you mean
<Regenaxer> yes
<grp> the first three should be:
<grp> if which picolisp >/dev/null
<grp> then
<grp> pil mkAsm.l "$@"
<grp>
<grp> and done
<Regenaxer> hmm, but there may be many
<grp> many what
<grp> pil binaries?
<Regenaxer> it assumes you have a global install from the distro
<Regenaxer> Thin it tests a local one
<grp> yeah, and it holds as long as you have /usr/bin in $PATH
<Regenaxer> yep
<Regenaxer> no
<Regenaxer> not in path
<grp> and in non-LSB distros, $PATH can be stuff like /root/bin:/run/wrappers/bin:/etc/profiles/per-user/root/bin:/root/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin
<Regenaxer> it calls it absolutely
<Regenaxer> PATH is not used at all
<grp> and picolisp is in /nix/store/5nga2bx6jh4f1nq6fg6zr3dr4wj70cdf-picolisp-18.6
<Regenaxer> well, then change the script
<Regenaxer> this version is intended for a Linux distro installation
<grp> I did... but I believe there shouldn't be a hardcoded path. So long as it's in $PATH, should work
<Regenaxer> I don't want to depend on PATH
<grp> why not
<Regenaxer> And I have tons of hash-bang scripts
<Regenaxer> we must live with that
<Regenaxer> On Android it is different too
<Regenaxer> #!/data/data/com.termux/files/home/pico/bin/picolisp
<Regenaxer> So it is OK
<grp> I use #!/usr/bin/env pil
<grp> or #!/usr/bin/env picolisp
<grp> which resolves from $PATH
<grp> so everything works
<Regenaxer> my wrong above
<Regenaxer> I meant #!/data/data/com.termux/files/usr/bin/pil
<Regenaxer> no, env is not good
<Regenaxer> you have to encode the path again, does not help at all
<grp> but isn't #!/data/data/com.termux/files/usr/bin/pil in $PATH or symlinked into a path that's already in $PATH?
<Regenaxer> and, most importantly, you cant pass file names
<grp> how so?
<Regenaxer> Like this:
<Regenaxer> #!/data/data/com.termux/files/usr/bin/pil -load "@lib/http.l" "@lib/xhtml.l"
<grp> I know, had to deal with that
<Regenaxer> wont work with env
<grp> fixed it like this:
<grp> #!/bin/sh
<grp> exec /data/data/com.termux/files/usr/bin/pil -load "@lib/http.l" "@lib/xhtml.l" "$@"
<grp>
<Regenaxer> no!
<Regenaxer> I want to call it also with 'load'
<Regenaxer> then the first line is a comment
<grp> actually, that's the only way to make it work in nixos, since /nix/store paths are humongous and go over the hashbang length limit
<Regenaxer> I think the current way is the best
<Regenaxer> thought about it many times
<grp> hmm, right... you can't (load ..) that
<Regenaxer> unix is stupid here
<Regenaxer> an ancient limitation in hash bangs
<grp> indeed, hashbang being limited to 128 bytes is idiotic
<grp> same happens in BSDs
<Regenaxer> I did not know this limit
<Regenaxer> I meant the absolute path and the *single* arg
<Regenaxer> 128 might be all right
<Regenaxer> (I edit in 80 columns usually ;)
<Regenaxer> Concerning PATH, I have not a single setup where it points to some 'pil' or 'picolisp' except for the global insalls (eg /usr/bin)
<Regenaxer> install
<Regenaxer> s
<grp> yeah... problem is, nixos implements packages as closures, so scripts and stuff deppend on specific package builds, so the shebang for bin/pil is /nix/store/5nga2bx6jh4f1nq6fg6zr3dr4wj70cdf-picolisp-18.6/bin/pil /nix/store/5nga2bx6jh4f1nq6fg6zr3dr4wj70cdf-picolisp-18.6/lib/picolisp/lib.l
<grp> which goes over the limit and gets truncated
<grp> so it must be restructured using /bin/sh + exec
<Regenaxer> oh, I see
<Regenaxer> Or set a symbolic link
<grp> in nixos, you could have scripts depending on different picolisp arch (64 / 32) living in the same system with no conflict
<grp> anyway, I'm not trying to sell nixos
<grp> just that I stumbled with that problem
<Regenaxer> I understand
<grp> and thought... "this shouldn't be hardcodded...."
<Regenaxer> Well, in case of mkAsm it does not matter much
<grp> but yes, the (load ...) case breaks with this approach
<grp> right
<Regenaxer> it uses normally ../pil mkAsm.l "$@"
<grp> and it shouldn't matter for anything else to be honest, since hashbangs can just call pil which is just ok
<grp> and it loads the lib.l
<grp> so it's all right
<Regenaxer> yes
<Regenaxer> for the initial build, it is best to download the pre-built *.s files
<Regenaxer> after that ../pil is used
freeemint has joined #picolisp
<grp> I missed those, where are they?
<Regenaxer> They are listed in INSTALL
<grp> (I made 2 derivations, one for pil32 to bootstrap, and the standard 64bit)
<Regenaxer> good, pil32 does not need anything
<Regenaxer> and then it can build pil64
<grp> yes, but it pulls a lot of 32bit runtime so I'll rewrite the definitions later to use the .s files
freemint has quit [Ping timeout: 240 seconds]
<Regenaxer> Which definitions do you mean here?
<grp> nixos package/derivation definitions
<Regenaxer> ah
<Regenaxer> src64 will simply use the .s files and not call mkAsm
<Regenaxer> src64/Makefile I mean
freemint has joined #picolisp
<grp> good, so it's a secondary package and done
freeemint has quit [Ping timeout: 252 seconds]
<grp> (meaning, just need to unpack it into src64 and make)
<grp> that simplifies things
<Regenaxer> yeah
<grp> when I installed picolisp in nixos I found it to be outdated and quite broken
<grp> so I'm revising everything
<Regenaxer> cool
<grp> aaaanyway~ ¯\_(-_-)_/¯
<Regenaxer> :)
<grp> Regenaxer: what's the current practice for modules (if any)
<grp> I've sees some repos out there that include a module.l
<grp> but have yet to find the source that actually uses it for anything
<grp>
<Regenaxer> Hmm, not sure if there is a special practice
<Regenaxer> ah, aw-
<Regenaxer> here?
<Regenaxer> not atm
<Regenaxer> early morning in Japan ;)
<grp> since I'm trying to distribute some trivial sources using nixos package management (so I can just define a script with it's picolisp library/modules dependencies and they get installed, no missing stuff)
<grp> so I was checking if there was some current practice to handle such case
<grp> plan B is implementing my own
<grp> I was thinking of including a definition for (loadlib ...) in pil script
<grp>
<grp> nixos systems are immutable, so the only way to put stuff anywhere other than /home is through definitions. So it's not like I can just go around copying .l files into /usr/lib/picolisp/
<grp> and since they'll get installed into /nix/store/<hella-long-hash>/
<Regenaxer> I have not thought about the issue, always load stuff relative
<grp> patching scripts/libs so they use the right paths will be a pain in the ass
<grp> so I'm planning on riding on top of nix and define a (loadlib ..) of sorts
<Regenaxer> As I said, I make massive use of symbolic links
<Regenaxer> I have apps running in web and on PilBox
<Regenaxer> all with symbolic links
<grp> yeah, I mostly know how you do things... keeping pil folders everywhere, each one with it's stuff
<grp> but I was trying to do a more general system-wide approach
<Regenaxer> yes, good
<grp> where I can distribute... say... a logging set of fuctions into a "log.l" file
<grp> then load it from everywhere
<Regenaxer> How about (chdir xxx (load ... ?
<Regenaxer> Problem is that debug pathes are wrong then
<Regenaxer> (vi 'foo) etc
<grp> problem is I don't know what dir that would be... since it's a path like that long abomination I showed you earlier
<grp> anything that goes into the system, symlinked into a standard dir or not, is stored in /nix/store/<hash>/
<Regenaxer> If you don't know it, it can't be loaded
<grp> such hash is determined at build time based on parameters and the definition contents itself, so it's unique and the same between equivalent definitions and dependencies versions
<grp> but I can keep an env var with the libs paths, so I can load them, but need to abstract that into something practical
<Regenaxer> ok
* grp sigh
<grp> I guess you are thinking: what's the point in doing things in such a complicated/roundabout way
<Regenaxer> Well (chdir (sys "MYPATH") .. would work
<Regenaxer> but with the debug disadvantage
<Regenaxer> hehe :)
<grp> shouldn't really... since it's really (chdir (pilibpath "log") (load "main.l"))
<grp> something like that
<Regenaxer> hmm
<Regenaxer> I think chdir is not good here generally
<grp> where pilibpath is something along: (find '[(X) (islib "log" X)] (split (sys "PILIBS") " "))
<grp> why not
<Regenaxer> Better (load (mkPath ...) (mkPath ...))
<Regenaxer> mom, wife needs me
<grp> aye
* grp cringed at (while T ...)
<grp> (aw's nanomsg lib)
<Regenaxer> yeah, a case for (loop ...)
<grp> indeed
freeemint has joined #picolisp
<Regenaxer> ret
freemint has quit [Ping timeout: 264 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #picolisp
freemint has joined #picolisp
<grp> btw, do those .tgz containing the prebuilt .s change often?
freeemint has quit [Ping timeout: 244 seconds]
<Regenaxer> Yes, automatically with every release of a new .tgz
<grp> 'cause I need to specify the sha256 hash for everything the definition needs to download, so if they change often, the bootstrap will fail unless the definition is updated
<Regenaxer> always in sync
<grp> oh.. damn
<Regenaxer> nasty
<grp> hmm... well... it's not like the asm sources need the latest pil version anyway
<grp> so I can just include a working version in the definition and that should do the trick
<grp> (in the definition's dir)
<Regenaxer> right, if it is not toooo old
freemint has quit [Ping timeout: 244 seconds]
<grp> well, it makes sense to need a hash, it's a security measure. That way there can be no tampering
<Regenaxer> T
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #picolisp
<grp> iirc it's not possible to bootstrap using miniPicolisp right?
<Regenaxer> correct
<Regenaxer> I don't remember why though
<Regenaxer> I/O perhaps
<grp> maybe... maybe if I search through logs from around 2012...
<grp> or just compile it and throw it some asm.l
<grp> and see what happens
<grp>
<Regenaxer> Why mini if you have pil32 already?
<grp> it's just a matter of not pulling 32bit build and runtime stuff (it's ~100MiB download, not that I care but sometimes it's bothersome)
<Regenaxer> At least mini compiled in 64 bits is needed for large constants
<Regenaxer> ok, but mini also uses libc
<grp> but native arch
<Regenaxer> true
<Regenaxer> What if you copy the .s files temporarily to make the hashes automatically?
<grp> I have kickass bandwidth so I couldn't care less about downloading at this point, but still... if I can minimize the download size, I should
<grp> the cleanest option would be having .s .tgz files for every source version available, so any definition is as long-lived as the sources for that version are available.
<Regenaxer> hmm, the .s files are overwritten with each new release
<Regenaxer> The releases persist forever
<Regenaxer> The problem is only the checksums then?
<grp> I can avoid them if I just make the definition run a script where I wget the file but it's most probably not going to be accepted in upstream
<grp> (security concerns)
<Regenaxer> I see
<grp> nevermind, I'll deal with it later
<Regenaxer> I stop for today
<Regenaxer> Good luck! :)
<freemint> Good Luck
<Regenaxer> afp
<freemint> grp would it help if the thing you download would be signed by let's say Regenaxer's private key?
<grp> I guess that'd be good enough, so long Regenaxer minds doing such signing
<grp> s/minds/doesn't mind
<grp> s/so long/as long as
<grp> sorry, I'm tired
grp has quit [Quit: box shutting down...]
orivej has quit [Ping timeout: 245 seconds]
razzy` has joined #picolisp
razzy has quit [Ping timeout: 244 seconds]
_whitelogger has joined #picolisp
freeemint has joined #picolisp
freemint has quit [Ping timeout: 252 seconds]
freeemint has quit [Ping timeout: 244 seconds]
freemint has joined #picolisp
pierpal has quit [Ping timeout: 245 seconds]
ubLIX has quit [Quit: ubLIX]