-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Julia package repository for CentOS/Fedora #7363
Comments
What is the criterion for closing this issue? Distro package maintainers are working on this. What does "various" include? |
Ok, I have updated this issue to be specific to CentOS/Fedora. |
Highly reminiscent of #2523 |
Slightly different - this is not just about packaging, but setting up a repository so that users can easily install with dependencies and get nightlies, etc. |
I've set up a Copr project, which offers a repository for Fedora 19 and 20, and RHEL/Centos 6 and 7: At the moment it doesn't work for RHEL6 since we need to build a few more packages which are too old there. But it shouldn't be too hard to fix. As regards building nightlies, I should also be quite easy by simply running an automated script on a custom server. If you can provide the server, I can write the script. For example, I can adapt this one: https://github.com/domcleal/puppet-nightly-builder/blob/master/build.sh |
@nalimilan I've been building myself on RHEL5 with only occasional trouble. Let me know if you need any assistance there. |
@tkelman Good to hear. Though the harder part is to make separate packages, using where possible the system libraries. If RHEL5 packages are really too old for Julia, maybe bundling everything would be OK. Anyway, Copr does not support RHEL5, so we will need to build the package elsewhere. |
I believe we should be able to do this on Cc: @Keno I believe CentOS 6 should be good starting point. We can do CentOS 5 if someone asks. |
Hopefully not too many people are still on RHEL/Centos 5, it's a pretty painful experience. I'll do my best to keep checking that things stay functional though (at the moment they aren't, see JuliaLang/libuv#26). Will become harder when we switch to LLVM 3.5, it's tough to get C++11 compilers in the repos for these distributions. |
In the meantime, why not provide binary builds for Linux just like you do for Windows/OSX? |
About RHEL6, OpenBLAS has compile issues on RHEL6 due to outdated binutils. The build fails for me on HASWELL kernel. |
@ViralBShah You don't need a powerful machine, the script is just downloading the latest Julia, making an RPM package and asking the Copr server to run the builds. But you need to be able to create a source RPM, so it would be easier to use a RPM distro. Really, the only other requirement is that the machine is online at least once a day. |
Just build OpenBLAS for NEHALEM on centos 6. The compiler is too old to support the new instructions. Binaries for Linux are a good idea. A tar.gz built on an oldish distro should do the trick for most users. |
@nalimilan you can talk to me about servers once you're ready. One of my projects this summer is to create a small virtual machine buildfarm using Vagrant to allow us to build binaries for everything, all in one place. I don't have the automated vagrant stuffs working yet, (That won't happen until mid-July, once I'm over in Cambridge) but these kinds of issues are definitely what we'll be hoping to address with the infrastructure I'll be building. |
@staticfloat OK, will do. |
@ViralBShah @nalimilan It turns out, Scientific Linux provides rebuilt version of RHEL devtoolset-2, using which I was able to build openblas with dynamic arch. This devtoolset includes more recent gcc and binutils. the version of julia built with this toolset passed all tests on regular Centos6, so I think no extra libraries are required on end user machines. |
@ViralBShah I succeeded in building julia binaries on Centos5 using the devtoolset from Scientific Linux. Tests pass on Centos 5, 6, 7. Builds are done in chroot, using mock tool. So you can lower entry point to Centos 5. |
Thanks @crayxt. Can you provide a Make.user.centos5? |
@ViralBShah I only set JULIA_CPU_TARGET=core2 Although Scientific Linux states that their rebuilt version of RedHat devtoolset is provided in testing purposes only (http://linux.web.cern.ch/linux/devtoolset/). |
@crayxt That's great you got so far on RHEL/CentOS. I copied your packages to make Julia build on EPEL7. But do you know why it fails on your Copr for EPEL6? Have you tried building a more recent LAPACK? |
@nalimilan I am glad I can help. Pay attention when copying them, I cannot guarantee their correctness. I did not try to build more recent lapack. |
@crayxt Sure. It would be great if you could add a changelog entry stating what you modified in the packages. @ViralBShah @staticfloat I've put together a script to build RPM nightlies, based on the script for Debian. It works on my machine, but at the moment it needs my credentials to put the SRPM on a FTP server, and then to tell the Copr build service to build it. Regarding the first point, we should find another public place to put the tarballs; regarding the second one, I think we should set up a Copr repo for the Julia team. Should be fairly easy to get working. |
@nalimilan I've been using sourceforge as a dumping ground for binaries, it's a little slow and antiquated, but it works for my purposes. Should be able to upload files in a script over scp. |
@nalimilan I will - just give me the list of packages that you copied. |
@nalimilan I guess it is because of the way openblas is packaged in EPEL6, see, in my full chroot build with
While in library provided in your repo
gives nothing.
RHEL7, AFAIK is based on Fedora 18. |
@nalimilan I've enabled tests in my spec file and adapted it to epel5, 6 and 7. Only 64-bits can be built at the moment https://copr.fedoraproject.org/coprs/baurzhanm/devtoolset-rebuild/build/51366/ |
Good catch. Unfortunately, I've tried building Julia with the reference LAPACK, and still no luck: Regarding your package, wouldn't it be better to install files to |
Ah, got it, |
@nalimilan I've added profile scripts to my package, they are sourced when shell starts and PATH gets updated. For sh shells (
See https://copr.fedoraproject.org/coprs/baurzhanm/devtoolset-rebuild/build/51451/ |
That's right - a newer lapack is nice to have, since there are some nice performance improvements in there. |
@crayxt OK, fine. Regarding my EPEL6 package, the issue with LAPACK is fixed. Now 64-bit build passes, but there's a failure with
|
I think this is the same as an already known openblas issue: |
Indeed. So it would be a problem when compiling openlibm. I'll try rebuilding it with a more recent compiler, and setting |
Another thing to check is |
What do you mean, enabling it? For now I'm setting |
Yes, I am wondering if the problem goes away if you use the system libm. |
Yes, it passes with |
After rebuilding both openlibm and openspecfun with gcc 4.8.2, the Julia RPM for EPEL6 works! Now let's try EPEL5... |
Wow, this is a major milestone! |
OK, now the Julia 0.3.1 RPM builds on EPEL5 64-bit, with only limited modifications. Most of the work consisted in porting the required dependencies. EPEL5 32-bit does not work because of build failures of llvm and double-conversion, not sure it's worth investigating. Any testing of EPEL5 and 6 packages would be appreciated. My main concern is whether enabling the Copr won't pull dependencies which may conflict with distribution packages. Normally it should be OK as I made several packages parallel-installable when they are not compatible with existing versions, but I haven't tested that yet. |
So, from here, what does it take for us to be part of the next Fedora release? I know the Debian world's process, but not the RedHat world. |
Julia is already accepted to current Fedora release (Fedora 20), thanks to @nalimilan. |
Awesome! |
It seems like we can close this issue then. |
@nalimilan do you have instructions somewhere for how to add your EPEL5 repo? I agree that 32 bit RHEL5 is a low-value target, as long as more recent versions can work on 32 bit. Generic binaries for 32 bit Linux might be able to work on RHEL5, we'll see when someone tries making a set. One thing I'm keeping an eye out for is upgrading our LLVM version will require using a C++11 compiler, which can be a bit tough to get on RHEL5 or 6 without the devtoolset. If the packages can be built with the devtoolset without requiring the user to have the devtoolset to run them, then maybe it's a non-issue. |
I made some progress towards 32bit generic binaries today. The generic
|
@tkelman On the other hand I have rpms of Julia with all libs bundled.
|
@tkelman I've just updated instructions on the Copr: https://copr.fedoraproject.org/coprs/nalimilan/julia/ Regarding the devtoolset, I'm already using it anyway for several packages, including Julia, and apparently that doesn't force installing it on the user's system. So now we actually offer three install options to users of RHEL/Centos 5! |
@staticfloat Do you think you could add the Copr nightly build status to http://status.julialang.org/? The return value of |
Sure, I'll rename |
I think at this point, we can close this issue. Good work, everyone. |
I wonder if there is some kind of build farm out there that makes it possible for us to generate Julia binaries for multiple linux distros. I believe work has already been done to build linux RPMs for CentOS/Fedora, and it would be great if we can have nightlies and releases through a yum repository just like we do for ubuntu right now.
The text was updated successfully, but these errors were encountered: