Git Product home page Git Product logo

Comments (5)

gonuke avatar gonuke commented on June 16, 2024

Thanks for all the effort to sort this out. We're always happy to take input like this and update our installation documentation, but I wonder if there are deeper lessons about how we can make the installation more straightforward? Do you think there are other changes we could make that would render some of this less important/fragile?

Hopefully, we'll soon have some resources to review and update much of our build/install infrastructure.

from cyclus.

dermesser avatar dermesser commented on June 16, 2024

I have to add a caveat: With these dependencies, cyclus builds and runs, but I've experienced spurious crashes (e.g. in the python library). The docker image works well for me, and I'm still trying other ways to build cyclus directly. About that I'll keep this issue posted though :)

FWIW, I don't seem to be alone. See #1273, from 2016: After more all-consuming weeks of my life wasted #notbitter, I finally have a version of Cyclus that is building & testing on conda-forge on Linux and Mac. See the end of conda-forge/staged-recipes#678 for proof. ;-)

Do you think there are other changes we could make that would render some of this less important/fragile?

(rambling ahead, I'm sorry)

A good question, which I have asked myself too, because attempting to build cyclus has me question the way that things in software are done today, on a very general level. While I acknowledge that it's mostly impossible to make such a complex piece of software build on any random Linux distribution due to the version hell of shared libraries, it would be very nice to not only have to rely on Docker or Virtualbox images. Thus, from my perspective, providing the information to enable building Cyclus from source within an anaconda environment would be both enough and very useful. It used to be (apparently? I am guessing from what I can see) possible to use cyclus-build-deps to do exactly that, and having that up-to-date would be a good step forward.

The other part is that due to the great flexibility of cyclus, the build system seems quite complex. So while it works well if it works, in the past weeks I've struggled hard with library issues that were really difficult to track down, and sometimes vanished on their own. Just as an example; my current favorite is this error below, despite having libxml2 and libiconv installed, found by pkg-config, etc. (this happens with the dependencies used by the official docker image, on my own machine):

/home/lbo/.anaconda3/envs/fuelcycle_docker/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: cannot find -lxml2
/home/lbo/.anaconda3/envs/fuelcycle_docker/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: cannot find -liconv

My past weeks have been filled with issues such as this one.

How to solve this in general? Again, I don't think there is an easy way. A lot of time and effort has gone into the current build system, enabling it to work in many places. But at the same time, it doesn't really anymore, right? At least not in a current Linux distribution, nor in anaconda environments as far as I have tried. The INSTALL and DEPENDENCIES documentation also is not helping anymore. The only way I've reliably managed to build Cyclus is by using the provided Dockerfile (respectively the docker image), and building cyclus inside of that. Maybe that's just what should be the accepted approach, and cyclus is to document this situation. In addition, documentation surrounding docker (or singularity, for the hard-core HPC scientists), e.g. how to mount your own source code into a container, may help alleviate the lack of a convenient build-on-your-own-machine option.

Apologies for the ranting, and I want to emphasize that I do not see any fault with cyclus. It's just the world we have to live in, as programmers,, and I'm looking forward to finding ways to improve the current situation :))

from cyclus.

gonuke avatar gonuke commented on June 16, 2024

Rant accepted! We have our own rants on similar topics - it is challenging to maintain complex software with a small team.

from cyclus.

dermesser avatar dermesser commented on June 16, 2024

A more humble goal for now would probably be updating the website and repository's documentation about installing Cyclus from source: it makes it seem very easy, but points readers the wrong way, as the shown required dependencies (e.g. at https://fuelcycle.org/user/install_from_git.html) are not present in anaconda anymore.

As so often, wrong information is worse than no information, so just by removing the outdated instructions and saying "if you want to run Cyclus, try the docker or virtualbox images" (or similar, whatever you think is best), this would already help beginners like me have an easier start :)

from cyclus.

gonuke avatar gonuke commented on June 16, 2024

Would you like to submit a PR to this effect? No pressure, but thought I'd check before seeing who else might be better suited to tackling this.

from cyclus.

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.