# Do not assume BB binary is used everywhere

**URL:** https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760
**Category:** Internals & Design
**Created:** [February 5, 2021, 2:28pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760 "2021-02-05T14:28:03Z")
**Posts on this page:** 8
**Page:** 3

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [February 9, 2021, 6:01pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/41 "2021-02-09T18:01:39Z")

</div>

> [@josuagrw](#):
>
> accidentally install several Gigs worth of NumPy/SciPy packages

do you know python resolve dependency by downloading multiple versions of different packages and try out? 😉

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [February 9, 2021, 7:41pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/42 "2021-02-09T19:41:11Z")

</div>

> [@josuagrw](#):
>
> same goes for Conda – very paranoid I will rebuild a PyCall dependency

PyCall remembers which Python you set it up with for subsequent builds/updates. If you set it up to use your system Python, it should never install its own Anaconda distro in a subsequent update unless you change the setting explicitly by setting the PYTHON environment variable.

---

<div class="post-metadata">

### Author: ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)
#### Post date: [February 9, 2021, 10:03pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/43 "2021-02-09T22:03:55Z")

</div>

> [@jling](#):
>
> the difference is Julia packages rely on binaries, if you compile a binary with some flags and made a julia package based on it, how do you plan the users to install your package (and your binary with special compile instruction).

Again, I’m mostly talking about compilation options that affect performance. So it makes total sense to have the default binary without `ffast-math` (less so for `march native`…), but for willing users adding such options should be possible.

> [@jling](#):
>
> Do you suggest Julia asks users to compile every binary each package needs?

Not sure where did you get this suggestion in my comment.

> [@jling](#):
>
> Pacman is primarily a binary pkg manager, I would guess 95%+ Arch users don’t compile from source for every package.

So? It definitely allows to modify compilation options, which is my point.

> [@jling](#):
>
> you still can, ygg doesn’t replace your system lol…

Note that I’m not talking about ygg at all, didn’t mention it even once!  
I just wish there was a reasonably-simple way to modify compilation options for a jll binary B\_jll which is used from Julia package P1 which is used from P2. Overrides mechanism likely allows to substitute the pre-built jll with another binary, but I didn’t really understand how it should be used and how easy it is…

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [February 9, 2021, 10:07pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/44 "2021-02-09T22:07:30Z")

</div>

> [@aplavin](#):
>
> wish there was a reasonably-simple way to modify compilation options for a jll binary B\_jll

totally agree, but as pointed out, it _looks like_ this has never been a deal-breaking thing, ever,

---

<div class="post-metadata">

### Author: ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)
#### Post date: [February 9, 2021, 11:16pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/45 "2021-02-09T23:16:28Z")

</div>

Of course, real “deal-breakers” are very rare and uncommon. E.g. non-existence of real programming languages and libraries were not deal-breakers for solving many problems, but now most prefer writing in something higher level than machine code 🙂

---

<div class="post-metadata">

### Author: ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)
#### Post date: [February 10, 2021, 6:25pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/46 "2021-02-10T18:25:58Z")

</div>

> [@simeonschaub](#):
>
> All the build scripts are contributed by the community

By coincidence, I found this today on HN. I think it’s at least tangentially relevant: [Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies | by Alex Birsan | Medium](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)

---

<div class="post-metadata">

### Author: ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)
#### Post date: [February 10, 2021, 6:35pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/47 "2021-02-10T18:35:13Z")

</div>

That is something that is currently being discussed for Pkg.jl, but it’s not really related to BB directly.

---

<div class="post-metadata">

### Author: ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)
#### Post date: [February 16, 2021, 8:18pm UTC](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760/48 "2021-02-16T20:18:13Z")

</div>

> [@oxinabox](#):
>
> I still don’t understand what makes it _“selfish”_ .

Because it is assuming that nothing exist outside julia and is unwilling to work with anything else.

> [@oxinabox](#):
>
> **It just works.**

It doesn’t if you have something else that also makes the same assumption. If two projects A and B both requires two different exact source of binary to work, there’s no way for the two to work with each other. And the reason for that is because both projects have made an incredibly selfish decision. This is very different from a version requirement, which is usually a range and usually for much fewer libraries. Anything that requires an exact version of 3-rd party library is almost as bad, but this is much work due to the scope.

> [@oxinabox](#):
>
> The override mechanism was specially designed for that with MPI as the example use-case.

And as I said, it would not have been a problem if this didn’t work before and if there hasn’t been comments about being proud of breaking my working setup and regarding the way I’d like to have julia interact with my system as unimportant and non-existing.

> [@oxinabox](#):
>
> But I guess I am not the target of your comment,

Which is totally fine. And which is also I **have been** totally fine with having a solution that just work for 99% of the people, especially since more than 90% of people are using windows and lack a working package manager anyway. It is when people assume 99% == 100% and start to break it for the rest 1% and say they never existed that is the big problem.

> [@oxinabox](#):
>
> Or have I got it wrong again, and it isn’t about hard-drive, or HPC system adminstration?

No it has absolutely nothing to do with either. And especially not about harddrive space which I explicitly mentioned above already. It may share concerns with HPC admin but I know nothing about their constraints.

It’s about being able to build julia and all the packages so that it’ll use the system libraries automatically. It used to work and it has been working with some hack until a few month ago and it was intentionally broken since it’s “not the kind of build we like to create.”.

[Previous page](https://discourse.julialang.org/t/do-not-assume-bb-binary-is-used-everywhere/54760.md?page=2)
