4 ms·
How do you setup the rest of dependencies configuration ? How do you know that there are no hidden dependencies ? How do you handle time ? How do you ensure tha
by di4na 9y ago
How do you setup the rest of dependencies configuration ? How do you know that there are no hidden dependencies ? How do you handle time ? How do you ensure that it can be reproduce ? How do you define the dependencies ? How do you make sure that nothing change the build paths ? The deps paths ? That your environment is exactly the one you want ? That you dynamicly link to the correct lib ? And let's not talk about cross compilation.
Also how do you clean behind yourself ?
Same thing for testing with even more setup.
- ZenoArrow 9y ago> "How do you setup the rest of dependencies configuration ? How do you know that there are no hidden dependencies ?" Each dependency has its own build configuration file. You build a tree of dependencies and start compilation from the lowest level (i.e. the build objects without any non-compiled dependencies). With such an approach, why would you have a hidden dependency? > "How do you handle time ?" What do you mean by this? > "How do you ensure that it can be reproduce ?" Semantic version control on the dependencies. > "How do you define the dependencies ?" Is this a hard problem? > "How do you make sure that nothing change the build paths ? The deps paths ? That your environment is exactly the one you want ?" By testing during the build process. In the case of the environment, it's just a question of checking against a list of expected environment settings (e.g. OS version, processor architecture, processor features, etc...). > "That you dynamicly link to the correct lib ?" This comes down to version control. > "Also how do you clean behind yourself ?" Again, is this a hard problem? Even the simplest of makefiles can describe how to handle this. Perhaps it's best to give a concrete example of a task which is hard for a build system to manage, because I'm still not seeing the complexity here.
- benley 9y agoThere have been a bunch of papers published discussing these topics at great length, and many attempts at producing simpler systems that still work at non-trivial scales. I'd suggest taking a look at https://nixos.org/~eelco/pubs/phd-thesis.pdf https://nixos.org/~eelco/pubs/phd-thesis.pdf and/or https://nixos.org/~eelco/pubs/nspfssd-lisa2004-final.pdf https://nixos.org/~eelco/pubs/nspfssd-lisa2004-final.pdf for an overview of the origins of Guix and the reasoning behind its apparent complexity.