IRC channel logs

2021-05-26.log

back to list of logs

<stikonas>not sure if sudo works with others though...
<fossy>sudo isnt the problem
<fossy>we are already running as root
<fossy>the problem is its running in a container itself that probably dosent allow chroot
<stikonas>well, yeah, it's that CAP_ADMIN
<stikonas>that docker needs
<stikonas>in the meantime I've rebased my PRs on top of perl
<stikonas>(there was a small merge conflict, resolved now)
<stikonas>it's actually not chroot, but mounting inside docker
<fossy>yeah cause cirrus uses docker
<fossy>What are we even mounting inside docker though
<stikonas>tmpfs
<stikonas>maybe we can avoid doing that
<stikonas>add some argument to rootfs.py
<stikonas>like --no-tmpfs
<stikonas>with perl merged, I think I can try to build latest automake and also latest texinfo
<fossy>yeah I think adding -no-tmpfs is best
<stikonas>hopefully that's sufficient...
<stikonas>we still to chroot there
<stikonas>wow, new perl is FAST!
<stikonas>fossy: have you noticed how much faster it is....
<stikonas>although, maybe that's because of gcc and not perl itself
<fossy>stikonas: not rly, whats fast about it? Automake and co?
<fossy>Im guessig its a mix
<fossy>gcc and optimizations
<stikonas>yeah, automake is lightning fast now
<fossy>hm
<fossy>that could be concerning
<fossy>although I think it works
<stikonas>no, I think it is alright
<fossy>ok good
<stikonas>well, I tried building automake-1.16...
<stikonas>it's probably also because automake is not that big piece of software, so automake on itself runs fast too
<oriansj>ekaitz: congrats on the almost hex0-seed. one minor problem that really matters at such a low level is writing to stdout in a shell that doesn't support > redirection means it can't actually build anything.
<oriansj>oops it looks like you had that too; a little clunky but it would work.
<oriansj>just missing one piece (use hex0 to make your initial hex0-seed binary from your hex0 sources and check it in) and then I will merge it into bootstrap-seeds as the first part of the RISC-V port
***illegal is now known as V
***lfam is now known as zebracloud
***orionwl is now known as laanwj
<amirouche>hello, re past bootstrap attempt that relied on forth. A) Why did it not succeed? B) What forth implementation did you use?
<siraben>amirouche: ooh, oriansj would be able to answer that
<siraben>he wrote his own implementation
***NieDzejkob_ is now known as NieDzejkob
<oriansj>amirouche: A) because it failed to be a useful and/or productive environment for bootstrapping anything more than having a FORTH environment. B) we used multiple for development and even wrote our own from scratch https://github.com/oriansj/stage0/blob/master/stage2/forth.s but ultimately if we wanted to do anything serious; FORTH just kept being more pain than it was worth. In short we achieved more progress in a weekend with cc_x86 (a
<oriansj>minimal C compiler written in assembly that supports structs, unions, gotos and inline assembly) than we did in 6 months of FORTH. Oh and the C compiler took less time to write too... (Heck the garbage collecting Lisp we wrote in assembly took less time to write than the FORTH)
<amirouche>ty!
<oriansj>So it isn't to say that someone couldn't do something useful in FORTH for bootstrapping; I am just saying we haven't seen it yet.
<amirouche>hmm
<oriansj>Because writing a C compiler (cc_* type) in assembly takes 24 hours.
<amirouche>without the parser?
<amirouche>with or without the parser?
<amirouche>24h is surely when you know what you are doing ^^'
<fossy>yeah that would be when you know what youre doing
<amirouche>it took me more time to find an off-by-one error this week-end.
<fossy>i certinaly couldn't do it in 24 hrs
<fossy>oriansj could
<oriansj>amirouche: with a full and proper parser
<oriansj>actually it took 24hours knowing assembly but once I knew what I was doing I did a speed run of 4 C compilers in assembly in only 2 hours
<amirouche>I window shopping a project, that boils down to a bootstrappable Scheme/Kernel system, but I would like it to be somewhat portable across hardware and OS (linux/netbsd), and eventually have its own OS kernel.
<oriansj>amirouche: then use C if you want portable code
<amirouche>I wonder what would be the best target a forth or gnu lightning.
<amirouche>My C knowledge is weak, and I do not want to improve it ^^'
<oriansj>amirouche: that is fine. It doesn't need to be strong. Only read a byte and write a byte, loop and conditional
<amirouche>it would be a separate bootstrap path wrt to guix/guile/mes
<oriansj>ok
<amirouche>I can not start ex-nihilo, but having both performance constraints and portability makes the thing seems impossible.
<oriansj>if you need portable *AND* fast, C is pretty much the only option
<oriansj>or go or Rust depending on your preferences
<oriansj>C as a language is elegant if used correctly
<oriansj>It is that last part where most of C's sins were born.
<amirouche>it is complex to explain, but I prefer to keep the number of programming language syntax and programming concepts to a minimum. One way to see it, is that it is a whole stack Scheme/Kernel system (wanna-be). So, if I rely on forth, it will need some s-expr syntax.
<amirouche>I follow that principle: "If a system must serve the creative spirit, it must be entirely comprehensible by a single individual."
<oriansj>amirouche: just do everything in scheme if you want, that is fine
<amirouche>so mixing C semantic with Scheme, and hardware architecture specifics make the whole system brittle IMO
<oriansj>amirouche: just only mix scheme and assembly and it will not be brittle but portable.
<amirouche>re my system, it is also less pragmatic.
<amirouche>yes, that is what I am thinking too :)
<oriansj>It'll be slightly slower than C but it'll run reasonably fast on modern hardware.
<amirouche>Thank you oriansj :)
<oriansj>amirouche: If you wanted to do a scheme compiler written in scheme; I know a piece that could use your help ^_^
<amirouche>Guile?
<oriansj>nope
<amirouche>what is it?
<oriansj>Ur-Scheme
<oriansj> http://canonical.org/~kragen/sw/urscheme/
<oriansj>the hope is to have it extended enough to compile mescc
<oriansj>(and be able to run on mes-m2)
<oriansj>as compiled scheme is much faster than interpreted scheme
<amirouche>what about guile?
<stikonas>isn't Guile written in C
<stikonas>you'll have to build guile eventually though
<stikonas>if you want to bootstrap the whole system
<amirouche>ah yes you are right, guile is not self-hosted.
<oriansj>amirouche: guile's C isn't the simplest thing to build either
<stikonas>yeah, gcc is recommended for that
<stikonas>tcc is porbably too simple
<oriansj>and we had mihi spend a bunch of time to solve the psyntax.pp bootstrapping issue (not sure how many more might exist)
<oriansj>hence the desire for a lower in the bootstrap scheme compiler
<stikonas>well, there is mes
<stikonas>although, that's interpreter
<oriansj>and mescc but that is a C compiler and not a scheme compiler
<stikonas>but I think stuff like autogen actually needs guile
<stikonas>for scriptint
<stikonas>*scripting
<stikonas>although, maybe some other scheme implementation would work too if it's sufficiently complete
<oriansj>stikonas: yeah. hence why GCC got bootstrapped far easier than guile.
*oriansj gtg
<stikonas>well, we skipped part of the GCC build system because it needed autogen
<stikonas>but with a bit more work GCC was compiled and we'll use that GCC to build guile
<stikonas>and then build GCC properly
<amirouche>so, if understand correctly, if I can write a forth interpreter in assembly, than can interpret scheme or kernel code, that is self-hosted, I will have a bootstrap path for my system
<stikonas>well, basically anything can work, the problem is just doing the work
<amirouche>yes sure, as usual :)
<amirouche>I could also code a scheme interpreter in assembly but that looks more complex.
<amirouche>And a scheme interpreter in forth, is not given either.
<amirouche>re doing the work is a problem, but a bigger problem is doing the "good" work.
<stikonas>so at the moment we have basically two variants of bootstrap: 1) guix bootstrap which uses some pre-generated files, and some external automation driver (guile). 2) live-bootstrap which does not use any pregen files, drives the whole process with just kaem-optional-seed (757 bytes) but stops at around GCC 4.0.4 for now
<amirouche>good work, I mean following the principle that I will be able to understand the whole system.
<stikonas>so if you want some further changes, you can pick one component from there and try to bootstrap it some other wya
<amirouche>stikonas: ah thanks, that should be on a page at bootstrappable.org. I was looking for that.
<stikonas> https://github.com/fosslinux/live-bootstrap/blob/master/parts.rst
<stikonas>this is rough dependency graph of live-bootstrap https://stikonas.eu/files/bootstrap/live-bootstrap.svg
<stikonas>and this is what is done in guix https://guix.gnu.org/manual/en/html_node/images/gcc-core-mesboot0-graph.png
<stikonas>(a bit more is done in a branch of guix that starts from hex0 although it will still use guile)
<amirouche>so there is branch of guix that starts from hex0, but is not completly finished?
<amirouche>you said, guix use live-bootstrap.
<amirouche>oh ok I think I get it, it is working from kaem as seed toward hex0
<amirouche>that is fantastic!
<amirouche>I am not sure why I am interested by this bootstrapping stuff.
<stikonas>guix branch starts from hex0 seed and uses guile as automation driver
<stikonas>but also uses guile to run some stuff like gash and bootar
<stikonas>live-bootstrap is a separate project
<stikonas>that runs directly and process is driven by kaem
<amirouche>stikonas: why are you interested in bootstrappable
<stikonas>that's a tough question...
<stikonas>well, I also had used Gentoo for some time, so compiled stuff from source
<stikonas>building it form just source seems natural extention
<amirouche>I started GNU/Linux with Gentoo.
<siraben>amirouche: there is also a bootstrapped Haskell compiler https://github.com/OriansJ/blynn-compiler which isn't used for anything yet
<siraben>but I think it has a lot of potential because the subset of Haskell it supports is good enough to be compiled with GHC for double-checking
<siraben>(see README about plans for writing Scheme in Haskell)
<siraben>someone had questions on a nixos issue regarding making the stdenv bootstrappable, how would reproducibility get affected?
<siraben>AFAIK live-bootstrap is supposed to be quite deterministic
<Melg8>siraben yes it supposed to be deterministic for all files (except logs/temp files maybe)
<stikonas>at least all binary files in live-bootstrapped are checksummed
<stikonas>so should be quite deterministic
<stikonas>in some cases might be even more deterministic than nixos packages
<stikonas>we apply a few fixes to remove non-deterministic issues due to e.g. old kernels or CPUs
<siraben>link to bootstrap discussion: https://github.com/NixOS/nixpkgs/issues/123095
<stikonas>we don't checksum non-binary files right now, but I think that will come eventually, maybe once bauen1 finishes his work
<siraben>our bootstrap is 130 MB uncompressed o.O
<Melg8>siraben so you try to build everything using stdenv?
<siraben>Melg8: everything uses stdenv in Nixpkgs, pretty much
<siraben>change stdenv, change it all, tens of thousands of packages
<siraben>this question occurred to me when packaging up the bootstrappable tools in Nix
<siraben>I looked at the build closures and was surprised and why they were so big
<siraben>runtime of course is just the binaries themselves, but we care about the entire build-time closure
<Melg8>you want to replace make-bootstrap-tools part of boostrap in nix? or replace usage of those tools?
<siraben>I want to replace the standard environment for packages in Nix
<Melg8>because initial boostrap uses it's own thisStdenv instead of default one
<siraben>this basically provides things like, a C compiler, bash, perl, and all of the transitive dependencies
<siraben>ah, yeah
<siraben>I do want to replace that
<siraben>level 0
<Melg8>okay, maybe it will be interesting for you https://github.com/melg8/cit/blob/feature/BootstrapNix/bootstrap_nix/bootstrap_seeds/default.nix - it's all messy, because i'm just experimenting, but at least i know that you don't need stdenv to build initial stuff
<siraben>Melg8: oh, great, you already have initial work underway!
<siraben><3
<stikonas>lkdedihnirtrrgfkfnguefrjkfttvdlvlnlfugfeghvn
<stikonas>sorry wrong copy paste...
<Melg8>im stuck with my own idea to be backward compatible with live-bootstrap approach.. which is to build everything without nix seeds at all
<stikonas>(and it's not a password)
<siraben>lol I wonder what that paste is
<Melg8>stikonas ;P
<Melg8>siraben so my initial idea was to use nix to do two things - load github repos and unpack them into store. Than use kaem as runner and just generate kaem scripts with paths from nix store. + use nix to add some extra supporf of different arches - just by replacing parts of text with needed flags/ destinations
<Melg8>siraben plus it gives opportunity not to repeat by hands tons of setup code- and just generate it like https://github.com/melg8/cit/blob/feature/BootstrapNix/bootstrap_nix/bootstrap_seeds/generate_kaem_scripts.nix here
<siraben>Melg8: oh I notice you are on matrix as well, the r13y channel is another good place to bring this up
<siraben>reading now
<Melg8>i was asking if any want to do this in matrix/irc/discord) but finally find you here)
<Melg8>only problem with nix that i found is - nix wants outputs out of derivation. and initial kaem doesnt know how to track env variables, so i delayed package until kaem from c is ready, and just than copy binaries to out
<siraben>side note: why is this in "cit"?
<Melg8>i just doesn't want to bother with creating new git repo for that- because started as experiment, and i have already nix stuff there) but ofc if it grow to something - should be moved in proper place (nixpkgs xD)
<siraben>Melg8: ok, wow, writing raw derivations
<siraben>kaem-optional-seed won't track env vars?
<Melg8>nope
<Melg8>it just can send them to it;s childs
<Melg8>but it cant use them by itself
<siraben>once this is all done we need to bootstrap Nix in the first place heh, it's written in C++ though
<Melg8>siraben i want to warn you that i relatively new to nix, so that all crappy code, and i need somebody to have more experience for example, to push this ideas to nixpkgs
<stikonas>kaem-optional-seed can only exec applications with arguments, that's it (well, and parse .kaem files)
<siraben>You seem to have quite good knowledge of Nix already (writing raw derivations is usually an advanced topic) :)
<siraben>How far does this bootstrap in Nix go?
<siraben>do we get m2-planet?
<Melg8>that all what i've got https://github.com/melg8/cit/blob/c66f8733f4a872d67cd60c50c0a23a5c8bc9de17/bootstrap_nix/bootstrap_seeds/generate_kaem_scripts.nix#L321
<Melg8>but it's not hard to get all the way - to anything from live-bootstrap from there. i've stuck with idea of nix making cleared tree with no nix involved
<siraben>I see
<Melg8>siraben if you want we can collaborate to do something sane for nixpkgs) although i think we need some extra input from community - to how this all can fit without breaking hydra and without affecting build time to much.
<siraben>Melg8: yeah, it's something I would want, I don't know anyone else in the NixOS community familiar with the bootstrappable work (or even the names of the stages like kaem and m2-planet)
<siraben>we can also ask for our own hydra jobset
<Melg8>I learned about it like https://summer.nixos.org/ -> https://nlnet.nl/thema/NGIZeroPET.html -> https://nlnet.nl/project/GNUMes/
<siraben>Ah, cool, are you participating in summer of Nix?
<Melg8>stikonas btw, did anybody tried to build toybox(https://github.com/landley/toybox) (instead of busybox/coreutils/bash)?
<stikonas>Melg8: yeah, I think we briefly looked at it and also busybox
<Melg8>siraben idk, too shy to write them, but i'm intrested in topic , so i've started to prepare stuff)
<stikonas>couldn't easily build with tcc/meslibc
<stikonas>(note that first coreutils are built with mes libc)
<siraben>Melg8: Ah, I see. AFAIK it would likely be packaging work, and probably not making stdenv bootstrappable
<stikonas>and bash too
<siraben>So stdenv consists of bash/coreutils/gcc and what other things?
<siraben>I need to refresh my memory on the stages
<Melg8>siraben https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/linux/make-bootstrap-tools.nix this)
<stikonas>Melg8: it's probably not super surprising, mes libc was written to be just good enough to build bash/binutils/gcc-2.95.3
<Melg8>stikonas yea, i see. One day we would be able to cut some corners) if some of mes libc get upgraded
<siraben>Melg8: ah, thanks. Yeah, it looks like we'd want to replace make-bootstrap-tools with bootstrappable's one
<siraben>Melg8: another thing I was thinking about maybe as a good beginning, is create a new stdenv variant, stdenvMinimal
<stikonas>well, we already (mostly pder) pushed some patches into mes libc that live-bootstrap needed
<siraben>stdenvNoCC isn't even minimal enough
<Melg8>yes, i think that would be better than on "client" side - because less people would be affected, although - make-bootstrap-tools already use full nixpkgs stuff
<stikonas>most importantly ability to have more than 255 command line arguments
<Melg8>siraben my own - smallest possible goal were - to provide coreutils - from bootstrap - and not build with large binary seeds of gcc and so on.
<siraben>Yes, coreutils would be pretty well-defined, right?
<siraben>I think SuperSandro2000 did something regarding uutils-coreutils
<siraben>Yeah, a uutils-based stdenv https://github.com/NixOS/nixpkgs/pull/116274
<siraben>coreutils being bootstrapped sounds like another great goal
<Melg8>yea, at least i know the path (thanks to live-bootstrap) and proved to myself that nix can handle initial struggle, rest is just adapting scripts/choosing directions and implementations. But idk if community want this to be as pure as i would like it to be. (using stdenv and bash from host makes things more sane/ but less trusted) although nix
<Melg8>itself if present - is huge.
<Melg8>I've added some info which already been discussed in this cat to the issue, so people on nixpkgs can checkout too. and some additional questions - https://github.com/NixOS/nixpkgs/issues/123095#issuecomment-848795920
<siraben>Great, thank you.
<Melg8>siraben if you can - spread this issue in some chats/discussions, or with some of stakeholders on nixpkgs, so it at least get proper discussion with all interested parties involved. But from my personal experience bootstrapping story is not very popular in nix community ;(
<lfam>I am wondering if this is the new "official" bootstrappable IRC channel? If so, we'll update the reference in the Guix manual
<siraben>Melg8: bootstrapping (in general) was recently mentioned in the reproducibility channel on Matrix, I would really want to see Ercison2314 on it as well
<siraben>I think he's quite familiar with the stdenv and cross stuff
<Melg8>siraben from what i know there were efforts to start using tcc in bootstrap, but idk why they didn't make to repo https://github.com/edolstra/nixpkgs/tree/mes-stdenv-bootstrap
<xentrac>lfam: yeah, it is. the Leenode channel got shut down (by oriansj I think) before leenode started punishing such dissent
<qyliss>I think that was done at a conf and not pursued further
<lfam>Alright xentrac
<oriansj>lfam: well the final official vote for where our final stopping place is this week.
<oriansj>Which everyone here gets an equal vote
<lfam>Okay
<lfam>Is the freenode channel even open? I tried to join it but I'm banned for some reason
<lfam>Our manual points people to #bootstrappable on freenode
<oriansj>The vote is between libera, oftc and matrix as no other options were provided. The vote pattern is as follows: https://paste.debian.net/1198887/
<oriansj>(correction oftc.net, Libera.Chat and matrix:#bootstrappable)
<oriansj>So everyone here has until sunday (failure to vote just means Obstain for all 3 options). Post with the text: My Vote and a link to your vote in that format.
<oriansj>Thus far no votes have been posted. (let alone the 25vote majority needed to end the voting early)
<lfam>I will leave the vote to the people who are doing the work :) We will update our manual accordingly
<jackhill>My Vote: https://paste.debian.net/1198890/
<siraben>yikes, so said we got attacked on Leenode :()
<siraben>:(* darn electric-parens
<siraben>Oh misread
<siraben>we shut down voluntarily before it happened
<jackhill>like lfam, I'd like to leave the decision to those doing the actual work, so I've abstained, but I voted in case that helps judge engaguement on the topic :)
<Melg8>My vote: https://paste.debian.net/1198896/
<roptat>My Vote: https://paste.debian.net/1198902/
<bandali>it might be worth noting that last i checked, verifying a nick on OFTC requires running nonfree js (google recaptcha)
<Noisytoot>bandali, that is correct, but you can ask an ircop to manually verify it (like I did)
<bandali>ah i see, it's nice that they offer that option. i just wish they wouldn't expose people to the captcha by default to begin with
***Hagfish_ is now known as Hagfish
<jackhill>roptat: I haven't used any of them, but `guix search matrix-client` turns up some. My main experience is connecting via xmpp.
<roptat>jackhill, thanks, most of them are not clients, but libraries, but I see nheko and quaternion indeed
<roptat>I was under the impression they would depend on a qtwebengine or something, but looks like I was wrong, so consider I have no objection now :)
<roptat>mh, although nheko crashes at startup...
<jackhill>:) well … like I said, I hadn't tried any
<roptat>and quaternion too, great!
<roptat>[qml] [critical] Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) (:0, )
<roptat>and then core dumped
<roptat>so I am a bit concerned about being able to use Matrix :)
<roptat>(I can use it on my phone, and use the web interface of course, but none of these options are very practical)
<jackhill>well, I guess you don't need to change you vote then.
<oriansj>jackhill: that is why we give people a week to decide and openly debate, discuss and champion their preferred choice.
<oriansj>For example I certainly would have objections regarding to the default process being non-free javascript for OFTC
<oriansj>Or the lack of usuable matrix clients in Emacs