asheesh changed the topic of #sandstorm to: Welcome to #sandstorm: home of all things sandstorm.io. Say hi! | Channel glossary: "i,i" means "I have no point, I just want to say". b == thumbs up. | Public logs at https://botbot.me/freenode/sandstorm/ & http://logbot.g0v.tw/channel/sandstorm/today
xet7 has quit [Ping timeout: 252 seconds]
pie__ has quit [Ping timeout: 252 seconds]
wolcen has joined #sandstorm
neynah has joined #sandstorm
<neynah> Happy holidays everyone! :)
samba_ has quit [Ping timeout: 250 seconds]
nonaTure has quit [Ping timeout: 268 seconds]
isd has quit [Remote host closed the connection]
jemc has joined #sandstorm
aggelos__ has joined #sandstorm
aggelos_ has quit [Remote host closed the connection]
samba_ has joined #sandstorm
samba_ has quit [Ping timeout: 250 seconds]
neynah has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
wolcen has quit [Ping timeout: 258 seconds]
wolcen has joined #sandstorm
neynah has joined #sandstorm
jemc has quit [Ping timeout: 250 seconds]
tg` has joined #sandstorm
demonimin_ has joined #sandstorm
demonimin_ has joined #sandstorm
demonimin_ has quit [Changing host]
niek has joined #sandstorm
neynah has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
ftoad_ has joined #sandstorm
[d__d] has quit [Ping timeout: 252 seconds]
rolig has quit [Ping timeout: 252 seconds]
tg has quit [Ping timeout: 252 seconds]
Tek` has quit [Ping timeout: 252 seconds]
ftoad has quit [Ping timeout: 252 seconds]
tg` is now known as tg
demonimin has quit [Ping timeout: 250 seconds]
niekie has quit [Ping timeout: 250 seconds]
ocdtrekkie has quit [Ping timeout: 250 seconds]
rolig has joined #sandstorm
ocdtrekkie has joined #sandstorm
[d__d] has joined #sandstorm
rolig has quit [Ping timeout: 250 seconds]
rolig has joined #sandstorm
<asheesh> Happy holidays to everyone, too!
samba__ has joined #sandstorm
samba__ has quit [Client Quit]
fonfon has joined #sandstorm
Telesight has joined #sandstorm
nonaTure has joined #sandstorm
xet7 has joined #sandstorm
demonimin has joined #sandstorm
demonimin_ has quit [Ping timeout: 256 seconds]
digitalcircuit has quit [Ping timeout: 258 seconds]
digitalcircuit has joined #sandstorm
evernite- has quit [Quit: ZNC 1.6.1 - http://znc.in]
nonaTure has quit [Ping timeout: 258 seconds]
nonaTure has joined #sandstorm
samba__ has joined #sandstorm
samba__ has quit [Ping timeout: 256 seconds]
samba__ has joined #sandstorm
wolcen has quit [Ping timeout: 240 seconds]
jemc has joined #sandstorm
nonaTure has quit [Ping timeout: 258 seconds]
nonaTure has joined #sandstorm
samba__ has quit [Ping timeout: 268 seconds]
jemc has quit [Ping timeout: 250 seconds]
samba__ has joined #sandstorm
NwS has joined #sandstorm
isd has joined #sandstorm
<isd> Have to concur with maurer on being somewhat alergic to the vfs/syscall intercept thing
<isd> I feel like you could do basically everything you need without it. cpp's -M gives you the full dependency list, so if you just write a parser for a very small subset of make, you can lean on that. as for the merging tmp/ and src/... what's wrong with just passing an extra -I ?
<isd> Would also be a lot friendlier to using system packages.
<kentonv> isd: sure, specifically for C/C++ you can use the existing features of the compiler. But many tools haven't grown all the necessary flags.
<kentonv> and writing code to handle each one is kind of annoying
<isd> Is ekam actually usable/interesting for anything but C/C++
<isd> or do you mean stuff like yacc/capnpc?
<kentonv> code generators are one example. Neither protoc nor capnpc have a flag like -M.
<kentonv> also... what does cpp -M do when the header doesn't exist yet?
<kentonv> Ekam is able to understand when a C++ file includes a generated header that hasn't been generated yet, and re-run the compile later when that generated header shows up
<isd> Yeah, that would need to be handled separately.
<kentonv> yeah cpp -M doesn't even produce output if parsing failed (e.g. because a header wasn't found)
<isd> I guess I'm at the point where I feel like I'd rather have an 80% solution that resort to weird hacks like this. But then we're getting into the realm of philosophy.
<kentonv> sure, it's perfectly valid to argue that explicit build systems are better. The goal of Ekam was to try to create a system where you don't have to be explicit, and I think the syscall interception is necessary for that goal.
<isd> (I'm also not a big fan of vendoring)
<kentonv> I do often have to edit Cap'n Proto and Sandstorm together, which was a pretty big pain before we were able to build them together...
<TimMc> isd: What do you dislike about vendoring?
<isd> Also, sandstorm still has a bunch of custom build logic. I haven't looked closely at capnp's build system, but it seems like at best you're 1 for 2... I can't say that strikes me as wildly successful.
<kentonv> I don't understand what you mean by that.
<isd> I mean, it seems like the goal of this project is to have stuff "just work." And we know of two projects that are using it. And one of them still has a bunch of custom stuff in the build system. Not a lot of data, but this suggests that ekam isn't actually succeeding at the "just work" bit in practice, if half the projects that use it have to do custom stuff.
<isd> Re: vendoring... it has it's place. More what bugs me is having using system packages be difficult.
<isd> Granted, sandstorm does a bunch of custom stuff that would be really hard for any generic tool to pull off.
<kentonv> I mean, the goal of Ekam is not so much to be 100% automated as it is to remove the busy-work involved in adding each new source file and maintaining dependency relationships between them
<kentonv> I like that when I add a new .C++ file I don't have to go edit anything for it to start building.
<kentonv> I like that my binaries link in exactly the set of .o files they actually use rather than pulling in everything in all the libraries they declare dependencies on, without any need for me to declare this usage.
<isd> --as-needed?
<kentonv> no, look
<kentonv> that only helps if I first declare that I depend on the whole world
<kentonv> which isn't really a workable strategy
<isd> You mean having to declare the deps, not the just the fact that no extra symbols end up the binary. fair enough.
<kentonv> yes
<kentonv> I can just #include a header form a library I wasn't using before, start using it, and it works
<kentonv> currently Sandstorm delegates to Ekam purely for the C++ part of the build. Most of Sandstorm's code is Meteor-based Javascript. Meteor turns out to have a build system which basically accomplishes the same goals, for the narrow case of Meteor apps. So I didn't attempt to make Ekam handle that.
<isd> Yeah, just comes down the philosophy thing. Strikes me as a bad trade-off vs. having to add an #include *and* a -l<lib> in another file. I guess I'm just back to arguing that I'd rather have something explicit. But that's not really resolvable without better defined requirements.
<isd> It's also just hard to pull this off without digging into the language's tooling. #include is a nightmare of a "module system."
<isd> The plan9 c compilers have a #pragma lib foo that figures out the linking thing for you. And more modern languages generally are actually built with real build systems in mind.
<isd> If you want something that works with existing tools and does this there are going to be some hacks.
<isd> Pragmatically I'm more bothered by the difficulty of *not* vendoring. Less from a developer's standpoint, and more from the standpoint of wanting to be able to have stuff packaged for *nix in a way that's idiomatic with the local system
samba__ has quit [Ping timeout: 260 seconds]
<isd> Like, I consider packageability a feature of the thing I'm shipping. And I want to use tools that facilitate that.
<isd> But, I'm about to head out the door. Later.
<kentonv> isd: I'm not totally sure what you mean about it being difficult to use system packages. You can setenv LIBS="whatever" and Ekam will add it at link time. Of course, what would be better is if Ekam had an index of symbols from system libraries and could link them automatically but I never got around to implementing that.
<kentonv> that's not the idea's fault -- it's just one of many ways that Ekam is incomplete
fonfon has quit [Ping timeout: 264 seconds]
<isd> So could you theoretically rip out the vendoring of deps for existing projects this way? Maybe I was just under the impression that using system packages is harder than it really is.
<isd> And yeah, that's certainly not inherent to the approach.
Telesight has quit [Quit: Leaving.]
ecloud_wfh is now known as ecloud
isd1 has joined #sandstorm
isd has quit [Disconnected by services]
isd1 is now known as isd
fonfon has joined #sandstorm
neynah has joined #sandstorm
fonfon has quit [Ping timeout: 248 seconds]
<isd> In other news, there's a new IRC Idler release: https://groups.google.com/d/msg/sandstorm-dev/gCYNrdkmXVI/TZm2gT5jDwAJ
<kentonv> isd: yeah we could require all the dependencies to be system-installed and then just link them. But then there are problems like people want to build on distros that haven't updated that package in a while and it's too old, and they don't want to figure out how to update it from source, etc.
<kentonv> so, the usual arguments around vendoring
<isd> Yeah. This is also another thing that is "easy" if the language/it's tooling is designed around it -- it doesn't have to be hard to get a thing to build against libs in different locations.
jemc has joined #sandstorm
samba__ has joined #sandstorm
xet7 has quit [Quit: Leaving]
neynah has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
jemc has quit [Ping timeout: 245 seconds]