Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make configuration cleaner and more sensible by using a tool such as autoconf or cmake #24633

Closed
schnaitterm opened this issue Nov 16, 2017 · 6 comments

Comments

@schnaitterm
Copy link

I guess this could be considered a feature request. The current way of configuring and building Julia is honestly pretty messy and fails frequently, even with a vanilla GCC build on linux and no special options. This is especially an issue when building dependencies, as variables frequently either get passed incorrectly, or don't get passed at all. It would be cleaner and more standard to use something along the lines of autoconf to take care of all of the configuration for the whole package, including deps. The configure scripts can/should be nested. I think this will make the build process a lot cleaner and more reliable. Thanks

@kmsquire
Copy link
Member

kmsquire commented Nov 16, 2017

Duplicate of #11754, #11645, #9422, and #1832.

@kmsquire
Copy link
Member

I should add, if you're up to the task, you could try to pick up #11754 and finish it up. Assuming @yuyichao isn't planning to finish it anytime soon. (It might be a bit of work, though, since the build system has gone through some changes since then...)

@StefanKarpinski
Copy link
Member

We don’t actually get many reports of build failures. Julia’s make scripts are one of the most reliable ways to get so many complex numerical libraries built correctly without manual intervention. If you do have cases where builds have failed, please report them. There’s little reason to believe that using autoconf would fix any problems that do occur.

@schnaitterm
Copy link
Author

schnaitterm commented Nov 20, 2017

@StefanKarpinski autoconf would fix the convolution that seems to exist in the large number of Makefiles. In my situation, at least, certain vars aren't always passed correctly or at all and there are certain options that I should be able to control better without having to edit the master makefile (i.e I can't do it in a Make.user without modifying Makefile). building failed in parallel with both icc and gcc, which I think is partially attributable to libtool locking, where some dependencies of julia get built before their own dependencies, and thus fail. There's also the problem that not all of the dependencies use the same build system and the various configs for them are confusing. Tracking down various variables gets messy pretty fast. I'm not set on autoconf by any means, but I think using mostly static makefiles is not exactly reliable nor is it scalable as the complexity of Julia grows. Maintaining all of these separate makefiles is time consuming and prone to error as more and more gets added to julia and more things change. The configurability issue comes into play especially when building in an HPC/cluster environment, which is an important user base for a language like Julia. Granted, I think some of this will get a bit better as Julia stabilizes more and more, especially with the upcoming 1.0 release.

@StefanKarpinski
Copy link
Member

StefanKarpinski commented Nov 20, 2017

If you're well-versed in autotools and are interested in contributing such a change, PRs would be welcomed. Detailed descriptions of the problems you've encountered with error output and how to reproduce would also be helpful.

@schnaitterm
Copy link
Author

@StefanKarpinski I'm not extremely well versed in any of them, as far as creating builds for large projects. This is motivating me to fix that, which is a good thing either way I suppose. Currently doing some research right now :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants