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

Instructions for distro package maintainers #25905

Closed
simonbyrne opened this issue Feb 6, 2018 · 4 comments
Closed

Instructions for distro package maintainers #25905

simonbyrne opened this issue Feb 6, 2018 · 4 comments
Labels
building Build system, or building Julia or its dependencies docs This change adds or pertains to documentation external dependencies Involves LLVM, OpenBLAS, or other linked libraries

Comments

@simonbyrne
Copy link
Contributor

Some linux distributions provide Julia through their various package managers. Typically they make some modifications, such as using system-provided libraries where possible.

At the moment, we include this line in the README:

Please be aware that this procedure is not officially supported, as it introduces additional variability into the installation and versioning of the dependencies, and is recommended only for system package maintainers.

which is not all that useful, as we don't give any further advice for what package maintainers should do.

It is probably worth documenting (either in the current README, or a new one) exactly:

  1. What versions of the dependencies should work (either officially, or "have been known to work")
  2. Which custom patches are used, and which are necessary

See also JuliaNLSolvers/NLsolve.jl#123 (comment).

@ararslan ararslan added docs This change adds or pertains to documentation building Build system, or building Julia or its dependencies external dependencies Involves LLVM, OpenBLAS, or other linked libraries labels Feb 6, 2018
@nalimilan
Copy link
Member

Good idea. AFAIK the versions of the dependencies are listed in README.md, so that's not an issue. But custom patches should be mentioned, e.g. pointing to the relevant files in the source tree. This only applies to LLVM and libuv I think (there have been patches for other projects, but they just fixed normal bugs which hit any user of these projects and have nothing specific to Julia).

Another point which could be stressed is that distro packages should use a multithreaded OpenBLAS and LAPACK and not the reference BLAS, as users then get poor performance and don't know why. This used to be the case with the Arch package IIRC. Depending on the distributions, it may not be possible as some distros prefer allowing the user to choose BLAS for the whole system.

@simonbyrne
Copy link
Contributor Author

simonbyrne commented Feb 6, 2018

It might also be a good idea to provide links to existing Julia packages. Currently maintained ones I know of are:

Additionally, the following unmaintained packages:

@simonbyrne
Copy link
Contributor Author

simonbyrne commented Feb 6, 2018

From the discussion on the Arch issue it seems that we really need to emphasise the LLVM problem, so maybe something like:

The most complicated dependency is LLVM, for which we require version 3.9 with some additional patches. We recommend either:

  • adding the patches to the LLVM 3.9 package of the distribution (note: these are backported bug fixes, not Julia specific patches: all have been contributed into upstream LLVM), or
  • bundling a Julia-only LLVM library inside the Julia package.

Using an unpatched or different version of LLVM will result in errors and/or poor performance.

@omus
Copy link
Member

omus commented Feb 6, 2018

Gentoo Julia package: https://packages.gentoo.org/packages/dev-lang/julia

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
building Build system, or building Julia or its dependencies docs This change adds or pertains to documentation external dependencies Involves LLVM, OpenBLAS, or other linked libraries
Projects
None yet
Development

No branches or pull requests

4 participants