Coder Social home page Coder Social logo

Comments (16)

cjones051073 avatar cjones051073 commented on May 22, 2024 1

OK, have switch the MacPorts build to use ninja. We run a test to see if this shows the issue or not.

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

Update. The issue appears to be some sort of race-like condition in the build configuration, as disabling parallel builds

cmake --build . 2>&1 | tee ../build.log

works just fine.

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

IIRC that's just the build running out of file (or other) handles. You should be able to do parallel builds, but not as parallel, or raise the limits. Could you try?

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

How would I do that ? As far as I am aware I have no limits set.

Also, why would this only affect 6.22.02 ? The very same machine has no problems with any other ROOT versions ?

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

Right, so here's the Internet's cue: http://gnu-make.2324884.n4.nabble.com/EAGAIN-in-read-jobs-pipe-tp1224p1228.html

ulimit -a shows you "Maximum number of open file descriptors"; for me it shows the macOS default of 256 which is notoriously low. Try setting that tom 1024 and see whether it helps?

As for a less parallel build: cmake --build . -j8 might work?

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024
Oberon ~/Projects/MacPorts/ports > ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                2560

So no, the limit is not 256.

Please also note even if this is related to the problem, changing ulimit is not a practical solution in terms of fixing our automated builds in MacPorts, as I cannot request every user and the build systems make any changes to these settings. Also note we have NEVER run into an issue with any other port, or ROOT version, prior to 6.22.02, so I still maintain even if this is what is happening the core issue is something in the ROOT build system, new in 6.22.02, that is causing this.

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

Thanks. I'm evaluating what might be the cause, and the number of file handles is the only possible cause that I am aware of. If it's not that then I don't know. I remember this issue in the old days with Cygwin's make. Do you see the same issue with ninja? I suppose you use Macport's make?

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

We use the macOS system make /usr/bin/make, not one supply by macports.

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

Thanks. Does Ninja show the same issue?

I'm asking all these questions because in all our builds we have never seen that error.

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

how do I build with ninja ?

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

also note I also do not see the issue with a default configuration. I only see it when I enabled additional features. I presume you also test these in your builds ?

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

cmake -G Ninja. And you need ninja; you can grab it from https://github.com/ninja-build/ninja/releases but I bet MacPorts already has is?

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

Indeed we have a couple of options enabled - but as MacOS proper doesn't offer a lot we also don't build with a lot. But this part -G "CodeBlocks - Unix Makefiles" is probably crucial. How does -G "Unix Makefiles" work?

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

Honestly, I don't know much about that. I just cloned the cmake configuration from the exact command used internally by the MacPorts build, so its added by that. I will have to investigate the reasons for this.

from root.

cjones051073 avatar cjones051073 commented on May 22, 2024

ninja based builds work just fine in parallel, so this does seem a good way to sidestep the gnu make build issues, particularly as I now understand ninja is anyway the primary build system used by ROOT devs.

from root.

Axel-Naumann avatar Axel-Naumann commented on May 22, 2024

OK closing - let me know if there's something we can do on our side.

from root.

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.