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

RFC: StdBinDeps package ? #16062

Closed
samoconnor opened this issue Apr 27, 2016 · 5 comments
Closed

RFC: StdBinDeps package ? #16062

samoconnor opened this issue Apr 27, 2016 · 5 comments
Labels
speculative Whether the change will be implemented is speculative

Comments

@samoconnor
Copy link
Contributor

What if there was a StdBinDeps package?

This package would contain no Julia code (except maybe for test code?) but would provide a standard set of binary libraries.

I am guessing that a small-ish set of "standard" libraries could be defined that would satisfy the binary requirements of the most commonly used Julia packages.

Some advantages:

  1. Many package authors could avoid dealing with BinDeps and just put StdBinDeps in REQUIRE.
  2. Package authors using StdBinDeps would not have to worry about supporting new platforms later. Any time a new platform is added to StdBinDeps (e.g. AWS Lambda, or Android, or WSL), all the client packages should just work.
  3. For platforms where the BinDeps are build from source, building them all at once avoids problems of version and comile-time-feature-configuraiton inter-dependency.
  4. Pre-built and pre-tested StdBinDeps for common platforms could make deployment of CI sandboxes faster and simpler.
  5. If StdBinDeps was included with the default ordinary-user-installer then doing Pkg.add would be smoother more of the time for ordinary users.
  6. Flexibility in how BinDeps are satisfied. e.g.: A pre-compiled set of binaries for Windows and Mac installers. For user-controlled Linux desktops use apt or yum. For Linux systems where users have non-privelaged accounts, build local copies. For embedded or containerised cloud deployments, build everything from source on a build box (See Building Cairo.jl for AWS Lambda JuliaGraphics/Cairo.jl#133).

Possible list of standard libraries:

cairo
crypto
fontconfig
freetype
gettext
gobject
liba
libcurl
libffi
libflac
libglib2
libhttp_parser
libogg
libopenssl
libpng
libvorbis
libxml2
mbed
mbed_crypto
mbed_x509
nettle
pango
pangocairo
pixman
zlib

@tkelman tkelman added the speculative Whether the change will be implemented is speculative label Apr 27, 2016
@tkelman
Copy link
Contributor

tkelman commented Apr 27, 2016

Pretty arbitrary list. No ZMQ? The problem with coming up with a "standard" list is no one can agree what does or does not belong in it. This way Conda leads. Improvement is needed w.r.t. BinDeps, but I'm not sure centralization is the answer.

edit: Given this isn't actionable in base I think we should close it for now, but discussion can continue here (or probably better, on julia-dev) and we could reopen if anything needs to be changed in Pkg etc. If this would be worth your time to work on, go for it, and feel free to advertise to other package authors who may find it useful. Bundling too many dependencies together does sort of defeat the purpose of package management though.

@nalimilan
Copy link
Member

It would be more natural for each Julia package wrapping a library to take care of installing/building it. Package authors then simply need to add the wrapper to their REQUIRES. That also reduces the amount of data to download everytime one of the libraries is updated.

@ViralBShah
Copy link
Member

I am not sure I like this. This doesn't prevent anyone from creating such a package, but I certainly do not want a StdBinDeps dependency to bring in all the cairo libraries.

@lobingera
Copy link

This looks seriously like an OS package management task, not a julia task. While i agree there is interaction between julia packages and library package management in e.g. BinDeps.

-1

@JeffBezanson
Copy link
Member

I think any problems with BinDeps should be addressed case-by-case. I don't see a fundamental reason getting native libraries as-needed can't work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
speculative Whether the change will be implemented is speculative
Projects
None yet
Development

No branches or pull requests

6 participants