* Is it necessary to download the native inputs while installing packages? @ 2018-01-18 15:19 Fis Trivial 2018-01-18 17:36 ` Tobias Geerinckx-Rice 0 siblings, 1 reply; 14+ messages in thread From: Fis Trivial @ 2018-01-18 15:19 UTC (permalink / raw) To: guix-devel@gnu.org The network connections to hydra is bad at day time from where I am, the download speed is about 10kB/s, I can only work with guix at night. And sometimes I use guix --fallback option(like texlive), guix will redirect to the upstream download link. Chances are the upstream has even worse network bandwidth, then I have to manually find a mirror of that particular upstream and use `guix download`. In the case of *texlive-texmf*, it serves mostly as a build dependence. To make things even less convenient, most of the mirror site only store its ISO package, not the tar ball used in guix package. So, I gotta wonder, can we just download the normal inputs and propagated inputs from hydra while installing packages? Would that break something like the functional property of guix? ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 15:19 Is it necessary to download the native inputs while installing packages? Fis Trivial @ 2018-01-18 17:36 ` Tobias Geerinckx-Rice 2018-01-18 19:56 ` Leo Famulari 0 siblings, 1 reply; 14+ messages in thread From: Tobias Geerinckx-Rice @ 2018-01-18 17:36 UTC (permalink / raw) To: ybbs.daans, guix-devel Hullo, There are quite a few unrelated points mixed together here. I'll try to address all of them, but I'm not entirely sure what your main question is. I hope to answer it by accident. Fis Trivial wrote on 18/01/18 at 16:19: > The network connections to hydra is bad at day time from where I am, > the download speed is about 10kB/s, I can only work with guix at > night. And sometimes I use guix --fallback option(like texlive), guix > will redirect to the upstream download link. I get your meaning, but ‘redirect’ isn't the right word to use here. Redirection is something servers do, and that's not the case here. When installing a package, Guix queries all known substitute servers for a pre-built binary substitute. What ‘--fallback’ does is tell Guix to not give up if all servers answer negatively (404), but to build the package from source locally. For that it needs to download the source from upstream servers, and of course the native inputs required to perform the build. There's no way around that. If any of the substitute servers *can* provide a binary, no native-inputs will be downloaded at all. Why are you adding ‘--fallback’? > Chances are the upstream has even worse network bandwidth, then I > have to manually find a mirror of that particular upstream and use > `guix download`. This is an unrelated but valid point. I've previously mused that it should be possible to let users choose (a set of) their favourite mirror(s), instead of always downloading sources from the first mirror queried. It could be as simple as adding ISO codes to each mirror URI. > In the case of *texlive-texmf*, it serves mostly as a build > dependence. To make things even less convenient, most of the mirror > site only store its ISO package, not the tar ball used in guix > package. Oh. That's unfortunate. I'm not familiar with the Guix texlive packages, and all the ones I happened to look at now have a direct ftp:// link. Is upstream the one doing the — heh — redirection here? If so, it should arguably doing a better job. We could still help matters by hard-coding a shortlist of mirrors known to host the files we need. > So, I gotta wonder, can we just download the normal inputs and > propagated inputs from hydra while installing packages? Would that > break something like the functional property of guix? ‘Installing’ is too ambiguous to answer. - When *substituting* (installing a binary), native-inputs are not required and should never be downloaded. - When *building* (from source), they are. Kind regards, T G-R PS: Oh. Right. Sigh... To complicate matters, texlive-texmf is a special case that's never substituted, because doing so is thought to be worse than just building it from source[1]. That's the reason you're downloading TexLive from upstream, but it's *not* the reason you're pulling in TexLive to begin with and doesn't change the native-inputs situation. I think. [1]: https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/hydra/nginx/hydra.gnu.org-locations.conf#n23 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 17:36 ` Tobias Geerinckx-Rice @ 2018-01-18 19:56 ` Leo Famulari 2018-01-18 20:01 ` Tobias Geerinckx-Rice 2018-01-18 20:54 ` Fis Trivial 0 siblings, 2 replies; 14+ messages in thread From: Leo Famulari @ 2018-01-18 19:56 UTC (permalink / raw) To: guix-devel, Tobias Geerinckx-Rice, ybbs.daans Sorry for the top-posting. I need to clarify what --fallback does. Guix will always build locally if the substitute servers say they lack something Guix needs. --fallback works when the substitute servers say they have something, and then the substitution fails unexpectedly. For example, the server may become overloaded and drop the connection. -------- Original Message -------- From: Tobias Geerinckx-Rice <me@tobias.gr> Sent: January 18, 2018 9:36:50 AM PST To: ybbs.daans@hotmail.com, guix-devel@gnu.org Subject: Re: Is it necessary to download the native inputs while installing packages? Hullo, There are quite a few unrelated points mixed together here. I'll try to address all of them, but I'm not entirely sure what your main question is. I hope to answer it by accident. Fis Trivial wrote on 18/01/18 at 16:19: > The network connections to hydra is bad at day time from where I am, > the download speed is about 10kB/s, I can only work with guix at > night. And sometimes I use guix --fallback option(like texlive), guix > will redirect to the upstream download link. I get your meaning, but ‘redirect’ isn't the right word to use here. Redirection is something servers do, and that's not the case here. When installing a package, Guix queries all known substitute servers for a pre-built binary substitute. What ‘--fallback’ does is tell Guix to not give up if all servers answer negatively (404), but to build the package from source locally. For that it needs to download the source from upstream servers, and of course the native inputs required to perform the build. There's no way around that. If any of the substitute servers *can* provide a binary, no native-inputs will be downloaded at all. Why are you adding ‘--fallback’? > Chances are the upstream has even worse network bandwidth, then I > have to manually find a mirror of that particular upstream and use > `guix download`. This is an unrelated but valid point. I've previously mused that it should be possible to let users choose (a set of) their favourite mirror(s), instead of always downloading sources from the first mirror queried. It could be as simple as adding ISO codes to each mirror URI. > In the case of *texlive-texmf*, it serves mostly as a build > dependence. To make things even less convenient, most of the mirror > site only store its ISO package, not the tar ball used in guix > package. Oh. That's unfortunate. I'm not familiar with the Guix texlive packages, and all the ones I happened to look at now have a direct ftp:// link. Is upstream the one doing the — heh — redirection here? If so, it should arguably doing a better job. We could still help matters by hard-coding a shortlist of mirrors known to host the files we need. > So, I gotta wonder, can we just download the normal inputs and > propagated inputs from hydra while installing packages? Would that > break something like the functional property of guix? ‘Installing’ is too ambiguous to answer. - When *substituting* (installing a binary), native-inputs are not required and should never be downloaded. - When *building* (from source), they are. Kind regards, T G-R PS: Oh. Right. Sigh... To complicate matters, texlive-texmf is a special case that's never substituted, because doing so is thought to be worse than just building it from source[1]. That's the reason you're downloading TexLive from upstream, but it's *not* the reason you're pulling in TexLive to begin with and doesn't change the native-inputs situation. I think. [1]: https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/hydra/nginx/hydra.gnu.org-locations.conf#n23 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 19:56 ` Leo Famulari @ 2018-01-18 20:01 ` Tobias Geerinckx-Rice 2018-01-18 20:54 ` Fis Trivial 1 sibling, 0 replies; 14+ messages in thread From: Tobias Geerinckx-Rice @ 2018-01-18 20:01 UTC (permalink / raw) To: leo, guix-devel, ybbs.daans Leo, Leo Famulari wrote on 18/01/18 at 20:56: > --fallback works when the substitute servers say they have something, > and then the substitution fails unexpectedly. For example, the server > may become overloaded and drop the connection. You are, of course, completely right & I must have been smoking drugs. 'specially since I was thinking that's probably what's happening on an unreliable connection. Thanks, T G-R ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 19:56 ` Leo Famulari 2018-01-18 20:01 ` Tobias Geerinckx-Rice @ 2018-01-18 20:54 ` Fis Trivial 2018-01-19 13:24 ` Ludovic Courtès 2018-01-20 0:13 ` Leo Famulari 1 sibling, 2 replies; 14+ messages in thread From: Fis Trivial @ 2018-01-18 20:54 UTC (permalink / raw) To: Leo Famulari, guix-devel@gnu.org, Tobias Geerinckx-Rice Sorry about the mess in the original question. > > ‘Installing’ is too ambiguous to answer. > > - When *substituting* (installing a binary), native-inputs are not > required and should never be downloaded. This answers my question in mind, thanks. :) > > If any of the substitute servers *can* provide a binary, no > native-inputs will be downloaded at all. > > Why are you adding ‘--fallback’? > As you explained, the substituting process failed. Thanks for explaining things clearly. I will try to look into the source of guix next time. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 20:54 ` Fis Trivial @ 2018-01-19 13:24 ` Ludovic Courtès 2018-01-20 0:13 ` Leo Famulari 1 sibling, 0 replies; 14+ messages in thread From: Ludovic Courtès @ 2018-01-19 13:24 UTC (permalink / raw) To: Fis Trivial; +Cc: guix-devel@gnu.org Fis Trivial <ybbs.daans@hotmail.com> skribis: >> If any of the substitute servers *can* provide a binary, no >> native-inputs will be downloaded at all. >> >> Why are you adding ‘--fallback’? >> > > As you explained, the substituting process failed. This particular issue should now be fixed: <https://bugs.gnu.org/30157>. Ludo’. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Is it necessary to download the native inputs while installing packages? 2018-01-18 20:54 ` Fis Trivial 2018-01-19 13:24 ` Ludovic Courtès @ 2018-01-20 0:13 ` Leo Famulari 2018-01-20 10:40 ` Prevent native-inputs references ending up in the final binary Danny Milosavljevic 1 sibling, 1 reply; 14+ messages in thread From: Leo Famulari @ 2018-01-20 0:13 UTC (permalink / raw) To: Fis Trivial; +Cc: guix-devel@gnu.org [-- Attachment #1: Type: text/plain, Size: 584 bytes --] On Thu, Jan 18, 2018 at 08:54:32PM +0000, Fis Trivial wrote: > Sorry about the mess in the original question. > > > > > ‘Installing’ is too ambiguous to answer. > > > > - When *substituting* (installing a binary), native-inputs are not > > required and should never be downloaded. > > This answers my question in mind, thanks. :) Although native-inputs are typically things that are only required while building [0], there's nothing that prevents a built package from keeping references to native-inputs. [0] The "native" part is related to cross-compilation. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Prevent native-inputs references ending up in the final binary 2018-01-20 0:13 ` Leo Famulari @ 2018-01-20 10:40 ` Danny Milosavljevic 2018-01-20 15:47 ` Tobias Geerinckx-Rice 2018-01-26 0:56 ` Fis Trivial 0 siblings, 2 replies; 14+ messages in thread From: Danny Milosavljevic @ 2018-01-20 10:40 UTC (permalink / raw) To: Leo Famulari, ludo; +Cc: guix-devel@gnu.org Hi Leo, > Although native-inputs are typically things that are only required while > building [0], there's nothing that prevents a built package from keeping > references to native-inputs. We should change that in core-updates-next, if possible. I think that native-inputs shouldn't end up in the final binary as a reference, especially when cross-compiling (but we don't do cross-compilation much in Guix - usually, we let qemu-arm emulate the ARM CPU on x86_64 and just call the target tool :) ). If there are indeed parts of the same package, one a native part and one a runtime dependency part, I actually write the same package reference twice, once in the inputs, once in the native-inputs, in my custom package definitions. In a "previous life" I did a lot of Linux cellphone development and, there, it was kinda important that a x86_64 toolchain doesn't end up being referenced in an ARM binary, so the habit stuck - and I think it's important to distinguish the mold used to form a product from an integral part of that product. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-20 10:40 ` Prevent native-inputs references ending up in the final binary Danny Milosavljevic @ 2018-01-20 15:47 ` Tobias Geerinckx-Rice 2018-01-21 22:37 ` Leo Famulari 2018-01-26 0:56 ` Fis Trivial 1 sibling, 1 reply; 14+ messages in thread From: Tobias Geerinckx-Rice @ 2018-01-20 15:47 UTC (permalink / raw) To: dannym, leo, ludo; +Cc: guix-devel Danny, Danny Milosavljevic wrote on 20/01/18 at 11:40: > We should change that in core-updates-next, if possible. > > I think that native-inputs shouldn't end up in the final binary as a > reference [...] This has been discussed before, and I agree. (I started a branch to do so but it breaks quite a few things and it got tedious. I think I'm ready for more now.) Kind regards, T G-R ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-20 15:47 ` Tobias Geerinckx-Rice @ 2018-01-21 22:37 ` Leo Famulari 2018-01-21 22:47 ` Tobias Geerinckx-Rice 0 siblings, 1 reply; 14+ messages in thread From: Leo Famulari @ 2018-01-21 22:37 UTC (permalink / raw) To: Tobias Geerinckx-Rice; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1024 bytes --] On Sat, Jan 20, 2018 at 04:47:14PM +0100, Tobias Geerinckx-Rice wrote: > Danny, > > Danny Milosavljevic wrote on 20/01/18 at 11:40: > > We should change that in core-updates-next, if possible. > > > > I think that native-inputs shouldn't end up in the final binary as a > > reference [...] > This has been discussed before, and I agree. (I started a branch to do > so but it breaks quite a few things and it got tedious. I think I'm > ready for more now.) Yeah, I think a lot of things will break. Something to consider is that not every reference has an effect on the built software. Sometimes the reference is a nonfunctional string that ends up in documentation, or for error messages, or many other places. It may be a lot of work to remove them all. I'd rather we do it somewhere else than core-updates. It's already very difficult to complete the core-updates cycles. We should limit core-updates to updates of core packages, and handle big changes to Guix itself on their own branches. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-21 22:37 ` Leo Famulari @ 2018-01-21 22:47 ` Tobias Geerinckx-Rice 2018-01-24 14:26 ` Ludovic Courtès 0 siblings, 1 reply; 14+ messages in thread From: Tobias Geerinckx-Rice @ 2018-01-21 22:47 UTC (permalink / raw) To: leo; +Cc: guix-devel [-- Attachment #1.1: Type: text/plain, Size: 1027 bytes --] Leo, Leo Famulari wrote on 21/01/18 at 23:37: > On Sat, Jan 20, 2018 at 04:47:14PM +0100, Tobias Geerinckx-Rice wrote: >> Danny, >> >> Danny Milosavljevic wrote on 20/01/18 at 11:40: >>> We should change that in core-updates-next, if possible. >>> >>> I think that native-inputs shouldn't end up in the final binary as a >>> reference [...] >> This has been discussed before, and I agree. (I started a branch to do >> so but it breaks quite a few things and it got tedious. I think I'm >> ready for more now.) [...] > I'd rather we do it somewhere else than core-updates. > > It's already very difficult to complete the core-updates cycles. We > should limit core-updates to updates of core packages, and handle big > changes to Guix itself on their own branches. Er, yeah. Definitely. Unfortunate quoting on my part if it seemed like I was implying otherwise. This is the right thing to do, but doing it on core-updates is going to hurt rather than help anyone. Kind regards, T G-R [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 248 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-21 22:47 ` Tobias Geerinckx-Rice @ 2018-01-24 14:26 ` Ludovic Courtès 0 siblings, 0 replies; 14+ messages in thread From: Ludovic Courtès @ 2018-01-24 14:26 UTC (permalink / raw) To: Tobias Geerinckx-Rice; +Cc: guix-devel Hi, Tobias Geerinckx-Rice <me@tobias.gr> skribis: > Leo Famulari wrote on 21/01/18 at 23:37: >> On Sat, Jan 20, 2018 at 04:47:14PM +0100, Tobias Geerinckx-Rice wrote: >>> Danny, >>> >>> Danny Milosavljevic wrote on 20/01/18 at 11:40: >>>> We should change that in core-updates-next, if possible. >>>> >>>> I think that native-inputs shouldn't end up in the final binary as a >>>> reference [...] >>> This has been discussed before, and I agree. (I started a branch to do >>> so but it breaks quite a few things and it got tedious. I think I'm >>> ready for more now.) > > [...] > >> I'd rather we do it somewhere else than core-updates. >> >> It's already very difficult to complete the core-updates cycles. We >> should limit core-updates to updates of core packages, and handle big >> changes to Guix itself on their own branches. > > Er, yeah. Definitely. +1 Anyway, I think it’s worth experimenting this on a branch. We’ll have to expect lots of breakage as Leo writes, so we’ll need to refine things progressively. Once such a branch exist, we can get it built on berlin or hydra. Ludo’. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-20 10:40 ` Prevent native-inputs references ending up in the final binary Danny Milosavljevic 2018-01-20 15:47 ` Tobias Geerinckx-Rice @ 2018-01-26 0:56 ` Fis Trivial 2018-01-26 1:05 ` Tobias Geerinckx-Rice 1 sibling, 1 reply; 14+ messages in thread From: Fis Trivial @ 2018-01-26 0:56 UTC (permalink / raw) To: Danny Milosavljevic, Leo Famulari, ludo@gnu.org; +Cc: guix-devel@gnu.org On 01/20/2018 06:40 PM, Danny Milosavljevic wrote: > Hi Leo, > >> Although native-inputs are typically things that are only required while >> building [0], there's nothing that prevents a built package from keeping >> references to native-inputs. > > We should change that in core-updates-next, if possible. > > I think that native-inputs shouldn't end up in the final binary as a > reference, especially when cross-compiling > (but we don't do cross-compilation much in Guix - usually, we let > qemu-arm emulate the ARM CPU on x86_64 and just call the target tool :) ). > > If there are indeed parts of the same package, one a native part and one a > runtime dependency part, I actually write the same package reference twice, > once in the inputs, once in the native-inputs, in my custom package > definitions. > > In a "previous life" I did a lot of Linux cellphone development and, > there, it was kinda important that a x86_64 toolchain doesn't end > up being referenced in an ARM binary, so the habit stuck - and I > think it's important to distinguish the mold used to form a product > from an integral part of that product. > I'm no expert, but can this little utility from nix help? https://nixos.org/patchelf.html ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Prevent native-inputs references ending up in the final binary 2018-01-26 0:56 ` Fis Trivial @ 2018-01-26 1:05 ` Tobias Geerinckx-Rice 0 siblings, 0 replies; 14+ messages in thread From: Tobias Geerinckx-Rice @ 2018-01-26 1:05 UTC (permalink / raw) To: Fis Trivial, Danny Milosavljevic, Leo Famulari, ludo@gnu.org Cc: guix-devel@gnu.org Hullo, On Fri, 2018-01-26 at 00:56 +0000, Fis Trivial wrote: > On 01/20/2018 06:40 PM, Danny Milosavljevic wrote: > > I think that native-inputs shouldn't end up in the final binary as > > a > > reference, especially when cross-compiling > > (but we don't do cross-compilation much in Guix - usually, we let > > qemu-arm emulate the ARM CPU on x86_64 and just call the target > > tool :) ). > > > > If there are indeed parts of the same package, one a native part > > and one a > > runtime dependency part, I actually write the same package > > reference twice, > > once in the inputs, once in the native-inputs, in my custom package > > definitions. > > > > In a "previous life" I did a lot of Linux cellphone development > > and, > > there, it was kinda important that a x86_64 toolchain doesn't end > > up being referenced in an ARM binary, so the habit stuck - and I > > think it's important to distinguish the mold used to form a product > > from an integral part of that product. > > > > I'm no expert, but can this little utility from nix help? > https://nixos.org/patchelf.html In what way? Patchelf re-writes library and/or loader paths in compiled binaries. It's cool, but I don't immediately see the connexion... Kind regards, T G-R ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2018-01-26 1:05 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-01-18 15:19 Is it necessary to download the native inputs while installing packages? Fis Trivial 2018-01-18 17:36 ` Tobias Geerinckx-Rice 2018-01-18 19:56 ` Leo Famulari 2018-01-18 20:01 ` Tobias Geerinckx-Rice 2018-01-18 20:54 ` Fis Trivial 2018-01-19 13:24 ` Ludovic Courtès 2018-01-20 0:13 ` Leo Famulari 2018-01-20 10:40 ` Prevent native-inputs references ending up in the final binary Danny Milosavljevic 2018-01-20 15:47 ` Tobias Geerinckx-Rice 2018-01-21 22:37 ` Leo Famulari 2018-01-21 22:47 ` Tobias Geerinckx-Rice 2018-01-24 14:26 ` Ludovic Courtès 2018-01-26 0:56 ` Fis Trivial 2018-01-26 1:05 ` Tobias Geerinckx-Rice
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).