Giter Site home page Giter Site logo

Comments (5)

mn200 avatar mn200 commented on June 21, 2024

Fascinating. Does it reproduce with --stdknl instead of --expk? (I'll be super-surprised if it doesn't.)

I guess there's an error still lurking in the way Holmake prints its little display of running processes to the screen (see an earlier one at b51b4f1). If you run with a smaller -j number but a narrower terminal screen can you also reproduce?

from hol.

mn200 avatar mn200 commented on June 21, 2024

I can confirm that it reproduces on --stdknl. It will also fail faster if you build with -t because the degree of parallelisation possible in tools/Holmake/tests/parallel_tests is enough to prompt the problem.

from hol.

mn200 avatar mn200 commented on June 21, 2024

The problem is definitely with the display: if you run

build -t --stdknl -j12 | tee logit

the pretty displaying doesn't happen because it doesn't think it's writing to a terminal and the build goes fine.

from hol.

someplaceguy avatar someplaceguy commented on June 21, 2024

I tried to build HOL with a terminal 1/3rd as wide (with -j12) and it also failed, but I'm not sure if that's actually doing anything because there are many layers of abstraction in-between the build and the actual terminal.

To be more precise, I'm running the build inside of a local tmux session, and furthermore the build is going through a local daemon (nix-daemon), which connects over ssh to another nix-daemon on a remote machine, which actually does the build inside a sandbox and captures the output log of the build (and in this specific case, it also sends it in real-time to my terminal).

So I heavily suspect that my actual terminal size has no effect on the build behavior and I would be slightly disappointed if it did (since it would interfere with all the efforts that NixOS has made to make builds as reproducible as possible, even though it still has countless limitations).

EDIT: sorry, I misread your question. I will try reproducing with a narrower terminal and with -j11.

EDIT 2: I can now confirm that in my setup, it succeeds with a terminal 1/3rd as wide and with -j11. In other words, the terminal width doesn't seem to have a difference in my environment.

But as I mentioned before, that's probably to be expected given my setup. So the bug might still be related to the terminal width, it's just that it seems that I have no easy way of changing it due to how the build is being done.

from hol.

mn200 avatar mn200 commented on June 21, 2024

Holmake explicitly makes shell calls to stty size and tput cols to try to figure out its "terminal" width (after first determining if the output stream is a tty at all). [I appreciate that this is gross.]

If you can resize your terminal so as to affect the numbers it gets out of those calls (it tries stty first and then falls back to tput), you might reproduce with a smaller -j. Of course, the error may well be quite dependent on things like width % j too, so simply making it narrower may mask the bug we're seeing at 80 columns.

It's still clearly a bug, and I think/hope it should be easy to fix.

from hol.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.