ChanServ changed the topic of #crystal-lang to: The Crystal programming language | https://crystal-lang.org | Fund Crystal's development: https://crystal-lang.org/sponsors | GH: https://github.com/crystal-lang/crystal | Docs: https://crystal-lang.org/docs | Gitter: https://gitter.im/crystal-lang/crystal
ur5us has quit [Ping timeout: 264 seconds]
notzmv has quit [Ping timeout: 268 seconds]
<FromGitter> <jgarte:matrix.org> But is it up to date and still works?
notzmv has joined #crystal-lang
<FromGitter> <Blacksmoke16> it takes you up to `0.36.1` which should then be able to compile 1.x yes
<FromGitter> <Blacksmoke16> tho whats the reason you need to go from the beginning? might be able to just cross compile
<FromGitter> <jgarte:matrix.org> I'd like to package crystal for GNU Guix
<FromGitter> <jgarte:matrix.org> In a way that captures the whole bootstrap
<FromGitter> <jgarte:matrix.org> It would be packaged in GNU Guile (Scheme)
<FromGitter> <Blacksmoke16> do current linux binaries not work on it?
<FromGitter> <jgarte:matrix.org> I had started here a while back: https://issues.guix.gnu.org/49158
<FromGitter> <jgarte:matrix.org> not sure what you mean
<FromGitter> <jgarte:matrix.org> Guix, is a package manager
ur5us has joined #crystal-lang
<FromGitter> <jgarte:matrix.org> The goal would be to write the Guile code that packages crystal through all the stages of the bootstrap
<FromGitter> <Blacksmoke16> so that you can install any version?
<FromGitter> <Blacksmoke16> so anytime someone wants to install/upgrade crystal they'd have to go thru the whole bootstrap process again?
<FromGitter> <jgarte:matrix.org> nope
<FromGitter> <jgarte:matrix.org> They would just install the binary
<FromGitter> <Blacksmoke16> gotcha
<FromGitter> <jgarte:matrix.org> But the whole process would be encoded with Guix as a Guile scheme program that is reproducible
<FromGitter> <Blacksmoke16> sounds like a plan, have to see how it turns out
<FromGitter> <jgarte:matrix.org> I have to find the time to understand the bootstrap scripts
<FromGitter> <jgarte:matrix.org> and then to figure out how/what parts would need to be handled by Guile and how
<FromGitter> <jgarte:matrix.org> might be a rabbit hole
<FromGitter> <Blacksmoke16> could you just start off with a pre-built 1.x binary
<FromGitter> <Blacksmoke16> like is it really necessary to go thru the whole bootstrapping process when the existing linux binaries on the GH release would prob work just fine
<FromGitter> <jgarte:matrix.org> Not sure what you mean by start off
<FromGitter> <Blacksmoke16> i.e. use that as a fallback if the user doesnt already have crystal installed
<FromGitter> <Blacksmoke16> or the system*
<FromGitter> <jgarte:matrix.org> I can use that already yes
<FromGitter> <jgarte:matrix.org> It's available
<FromGitter> <Blacksmoke16> so then what do you need the bootstrap script for then?
<FromGitter> <jgarte:matrix.org> The idea is to have the whole bootstrap story
<FromGitter> <jgarte:matrix.org> In GNU Guix
<FromGitter> <jgarte:matrix.org> I don't have to have it
<FromGitter> <jgarte:matrix.org> I can just use the binary and not worry about it
<FromGitter> <Blacksmoke16> is prob safe to not worry about pre 1.x versions, in which case you just need a 1.x binary to compile the latest version of the code directly
<FromGitter> <Blacksmoke16> if that makes things easier
<FromGitter> <jgarte:matrix.org> Why would it be safe to not worry about pre 1.x versions?
<FromGitter> <Blacksmoke16> just that it prob wouldnt be real common for someone to need to use one of those versions
<FromGitter> <jgarte:matrix.org> If there is a source code history for the compiler then Guix wants to capture that
<FromGitter> <jgarte:matrix.org> Yup it's not common
<FromGitter> <jgarte:matrix.org> most package managers do not go through this level of reproducible detail
<FromGitter> <jgarte:matrix.org> Guix wants to eliminate depending on binaries
<FromGitter> <jgarte:matrix.org> having to trust binaries
<FromGitter> <Blacksmoke16> kinda the con of self hosted compilers
<FromGitter> <jgarte:matrix.org> like chicken scheme?
<FromGitter> <jgarte:matrix.org> ya
<FromGitter> <Blacksmoke16> so yea, that bootstrap script prob your best bet then
<FromGitter> <jgarte:matrix.org> Yup, it's the starting point for making the Guix package
<FromGitter> <jgarte:matrix.org> Not sure if I have the motivation to do it though tbh
<FromGitter> <Blacksmoke16> my understanding is it starts off with a very early crystal version when it was written in Ruby, and slowly works its way up thru the Crystal/llvm versions up until the last pre 1.x release
<FromGitter> <Blacksmoke16> i.e. i imagine it takes quite a long time
<FromGitter> <jgarte:matrix.org> Maybe someday
<FromGitter> <jgarte:matrix.org> Or someone else will do it
<FromGitter> <Blacksmoke16> :shrug:
<FromGitter> <jgarte:matrix.org> https://issues.guix.gnu.org/49158
<FromGitter> <Blacksmoke16> this is the first i heard about Guix
<FromGitter> <jgarte:matrix.org> This is the early ruby version
<FromGitter> <jgarte:matrix.org> I had packaged it in 2021
<FromGitter> <jgarte:matrix.org> that was my start at this ha
<FromGitter> <jgarte:matrix.org> I haven't worked on it since
<FromGitter> <Blacksmoke16> 162 steps now ;)
<FromGitter> <jgarte:matrix.org> https://10years.guix.gnu.org/
<FromGitter> <jgarte:matrix.org> I maintain a Guix channel with some friends: https://whereis.みんな/
<FromGitter> <jgarte:matrix.org> cool things about Guix versus Nix is that Guix uses a full fledged programming language
<FromGitter> <jgarte:matrix.org> So I was able to generate that website with Guix pretty nicely since Guile has a pretty good standard library
<FromGitter> <Blacksmoke16> nice one
<FromGitter> <jgarte:matrix.org> 162 steps ha
<FromGitter> <jgarte:matrix.org> I might try to run the bootstrap script first
<FromGitter> <jgarte:matrix.org> and study those first
<FromGitter> <jgarte:matrix.org> just to understand the process
<FromGitter> <Blacksmoke16> 👍
<FromGitter> <Blacksmoke16> sounds like a plan
<FromGitter> <jgarte:matrix.org> then once I hack on that without Guix and understand it then I can think about how the heck I can invent a solution with the Guix infrastructure
<FromGitter> <jgarte:matrix.org> maybe macros could be used or something to facilitate the process
<FromGitter> <Blacksmoke16> most of it is the same thing over and over, but with certain core updates every while
<FromGitter> <jgarte:matrix.org> Have you tried running the bootstrap scripts before?
<FromGitter> <Blacksmoke16> nope
<FromGitter> <jgarte:matrix.org> Who maintains them?
<FromGitter> <jgarte:matrix.org> I wonder if someone is still maintaining the scripts
<FromGitter> <Blacksmoke16> i dont see why it *wouldnt* work, it seems up to date, at least until the version before 1.x
<FromGitter> <jgarte:matrix.org> Why does it matter (https://reproducible-builds.org/)
<FromGitter> <Blacksmoke16> unless some of the packages/stuff its doing had breaking changes itself
<FromGitter> <jgarte:matrix.org> could be
<FromGitter> <Blacksmoke16> oh, that was you
<FromGitter> <Blacksmoke16> 😅
<FromGitter> <jgarte:matrix.org> If those bootstrap script were in the Guix then you wouldn't have the breakages
<FromGitter> <jgarte:matrix.org> you'd be able to freeze the state of it more easily
<FromGitter> <jgarte:matrix.org> ah ok
<FromGitter> <jgarte:matrix.org> ha
<FromGitter> <jgarte:matrix.org> I had forgotten about that
<FromGitter> <jgarte:matrix.org> also
<FromGitter> <jgarte:matrix.org> installing all these dependencies in the readme is a tedious pain: https://github.com/crystal-lang/bootstrap-script
<FromGitter> <jgarte:matrix.org> in Guix it would be automated
<FromGitter> <jgarte:matrix.org> `guix build crystal`
<FromGitter> <jgarte:matrix.org> The above command would run the whole bootstrap process once encoded in Guile
<FromGitter> <jgarte:matrix.org> just a ton of work to do it
<FromGitter> <jgarte:matrix.org> it would take many hours I think
<FromGitter> <Blacksmoke16> :shrug: or i can just run `sudo pacman -S crystal` and be done with it :)
<FromGitter> <jgarte:matrix.org> and much research that is not coding
<FromGitter> <jgarte:matrix.org> Yes or just copy the binary off of GitHub
<FromGitter> <Blacksmoke16> pretty much :P
<FromGitter> <jgarte:matrix.org> Or install crystal in a docker container
<FromGitter> <Blacksmoke16> yup
<FromGitter> <Blacksmoke16> are official images provided
<FromGitter> <jgarte:matrix.org> But it wouldn't be the bootstrap
<FromGitter> <jgarte:matrix.org> but maybe whatevs
<FromGitter> <Blacksmoke16> does the avg user really care?
<FromGitter> <jgarte:matrix.org> I think it would still be cool to do
<FromGitter> <Blacksmoke16> yea sounds like a fun (not so little) project
<FromGitter> <jgarte:matrix.org> Yup, but I care
<FromGitter> <jgarte:matrix.org> But maybe I don't care enough also just like the avg user
<FromGitter> <jgarte:matrix.org> That's why I haven't done it yet
<FromGitter> <jgarte:matrix.org> because I can just curl the binary and be done with it
<FromGitter> <jgarte:matrix.org> so whatevs
<FromGitter> <Blacksmoke16> even if you're porting things to a new system you can just cross compile
<FromGitter> <Blacksmoke16> even if thats starting with `1.0.0` binary
<FromGitter> <jgarte:matrix.org> sure
<FromGitter> <jgarte:matrix.org> but this is a different goal
<FromGitter> <jgarte:matrix.org> it's the idea of capturing the whole bootstrap process in Guix
<FromGitter> <Blacksmoke16> have to keep it on the back burner for when you feel motivated to do it
<FromGitter> <jgarte:matrix.org> ya
<FromGitter> <jgarte:matrix.org> I've been doing that for a while now
<FromGitter> <jgarte:matrix.org> I'd like to package crystal and then mint
<FromGitter> <Blacksmoke16> could you work backwards so you get a more useful product sooner?
<FromGitter> <jgarte:matrix.org> I could
<FromGitter> <jgarte:matrix.org> I could just package it first in a less ambitious way
<FromGitter> <jgarte:matrix.org> and then work backwards
<FromGitter> <jgarte:matrix.org> to fill in the missing pieces of the bootstrap history
<FromGitter> <Blacksmoke16> exactly yea
<FromGitter> <Blacksmoke16> could even just kick the bootstrap process off with the `1.0.0` binary and build each version from there
<FromGitter> <Blacksmoke16> aye
<FromGitter> <Blacksmoke16> further you go back the more complex things get
<FromGitter> <jgarte:matrix.org> Guix doesn't allow binaries to be included upstream
<FromGitter> <jgarte:matrix.org> So I would have to do it in a custom channel
<FromGitter> <jgarte:matrix.org> like the one I shared above
<FromGitter> <jgarte:matrix.org> They are pretty hard core about that
<FromGitter> <jgarte:matrix.org> no binaries
<FromGitter> <jgarte:matrix.org> not even in tests
<FromGitter> <jgarte:matrix.org> that's what happened here: https://issues.guix.gnu.org/55896
<FromGitter> <jgarte:matrix.org> With pybare
<FromGitter> <jgarte:matrix.org> The test suite uses binaries for testing
ur5us has quit [Ping timeout: 264 seconds]
<FromGitter> <jgarte:matrix.org> Guix maintainers want me to compile those too ;()
<FromGitter> <Blacksmoke16> have fun :P
<FromGitter> <Blacksmoke16> anyway i wish you luck, im off to bed o/
<FromGitter> <jgarte:matrix.org> They don't care that it's only used for the tests
<FromGitter> <jgarte:matrix.org> no vendoring of binaries either
<FromGitter> <jgarte:matrix.org> gnight!
<FromGitter> <jgarte:matrix.org> nice chatting
<FromGitter> <jgarte:matrix.org> we have an irc channel if you ever want to hang out: #whereiseveryone on libera
<FromGitter> <jgarte:matrix.org> there's a matrix bridge also
_ht has joined #crystal-lang
walez__ has joined #crystal-lang
walez__ has quit [Remote host closed the connection]
walez__ has joined #crystal-lang
Sankalp has quit [Ping timeout: 252 seconds]
Sankalp has joined #crystal-lang
walez__ has quit [Quit: Leaving]
sagax has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 268 seconds]
jmdaemon has quit [Ping timeout: 248 seconds]
notzmv has joined #crystal-lang
luna has joined #crystal-lang
Sankalp has quit [Ping timeout: 246 seconds]
luna has left #crystal-lang [#crystal-lang]
Sankalp has joined #crystal-lang
luna has joined #crystal-lang
luna has left #crystal-lang [#crystal-lang]
dmgk has quit [Quit: ZNC - https://znc.in]
dmgk has joined #crystal-lang
<FromGitter> <jgarte:matrix.org> Would people be interested in a regular meetup to work on packaging crystal for Guix via the bootstrap?
<FromGitter> <jgarte:matrix.org> It would be a Guile Scheme meetup about Crystal essentially
notzmv has quit [Ping timeout: 268 seconds]
jmdaemon has joined #crystal-lang
notzmv has joined #crystal-lang
_ht has quit [Remote host closed the connection]
<FromGitter> <borpzorp:midov.pl> That should be easy though
<FromGitter> <borpzorp:midov.pl> Guix is are epic
notzmv has quit [Ping timeout: 250 seconds]
ur5us has joined #crystal-lang
walez__ has joined #crystal-lang
notzmv has joined #crystal-lang
ur5us has quit [Ping timeout: 246 seconds]
walez__ has quit [Ping timeout: 265 seconds]