Subject: Re: HTTP and FTP proxies for guix package / guix-daemon

From: Claes Wallin (韋嘉誠)<[email-masked]>
Date: Wed, 1 Jul 2015 16:53:15 +0200

Ludovic, sorry for duplicate mail again.

On Jul 1, 2015 4:45 PM, "Ludovic Courtès" <[email-masked]> wrote:

> > Yes. This is why the proxy is required. There is no internet DNS for
> > the VM, because it is on an isolated lab network.
>
> Hmm, when using Guile 2.0.11 or later, ‘open-socket-for-uri’ connects to
> the proxy (so its name must be available in DNS lookup), not to the
> target server.  The code in (web client) goes like this:

The proxy is in the DNS.

> Do you see the same DNS issue when running:
>
>   http_proxy=http://... guix download http://...

Nope. guix download works. It successfully looks up and connects to the
proxy.

When I next have the chance I will report:

1) Results with guix-compiled guix-daemon
2) Results with dev-compiled guix-daemon
3) /gnu/store hash of 1)
On Jul 1, 2015 4:45 PM, "Ludovic Courtès" <[email-masked]> wrote:

> "Claes Wallin (韋嘉誠)" <[email-masked]> skribis:
>
> > On Wed, Jul 1, 2015 at 10:19 AM, Ludovic Courtès <[email-masked]> wrote:
> >
> >> To test, I first run the daemon like this:
> >>
> >>   sudo sh -c 'export http_proxy=foobar ; ./pre-inst-env guix-daemon
> --build-users-group=guixbuild'
> >
> > Could there be a difference because you are testing with the
> > checked-out, semi-manually built guix and I was checking with a
> > freshly packaged (pull, package -i guix) guix? Like I said in
> > http://lists.gnu.org/archive/html/bug-guix/2015-06/msg00036.html ,
> > guix-daemon as compiled by guix seems to be using guile-2.0.9. Maybe
> > that only happens due to guix rewriting hashbangs etc, and on a build
> > outside guix (even when using guix environment) it uses whatever guile
> > happens to be in the paths?
>
> Could you send the store file name of Guix that is being used?
> For instance, I have:
>
> --8<---------------cut here---------------start------------->8---
> $ sudo deco status guix-daemon
> Pasvorto:
> Status of guix-daemon:
>   It is started.
>   Running value is 31316.
>   It is enabled.
>   Provides (guix-daemon).
>   Requires (user-processes).
>   Conflicts with ().
>   Will be respawned.
> $ ps 31316
>   PID TTY      STAT   TIME COMMAND
> 31316 ?        Ss     0:00
> /gnu/store/zg6j61inmmk5kyqgyfjnj7rdxl79i9ps-guix-0.8.2.684bf7c/bin/guix-daemon
> --build-users-group guixbu
> --8<---------------cut here---------------end--------------->8---
>
> That means I’m using commit 684bf7c of Guix, which has the fix, which
> came up after the http_proxy commit (commit 0d88313.)
>
> >>> No. Whenever the daemon is doing the downloading, http_proxy is
> >>> ignored and I get "Temporary failure in name resolution" because the
> >>> VM doesn't have an internet DNS.
> >>
> >> [...]
> >>
> >>> `/gnu/store/2zkyyw4bq0wzsxdysncrf9lmwl44w5wh-binutils-2.25.tar.bz2'
> >>> from `http://ftpmirror.gnu.org/binutils/binutils-2.25.tar.bz2'...
> >>> ERROR: In procedure getaddrinfo: Temporary failure in name resolution
> >>
> >> That’s another, unrelated issue, probably in your network or on your
> >> machine.
> >
> > Yes. This is why the proxy is required. There is no internet DNS for
> > the VM, because it is on an isolated lab network.
>
> Hmm, when using Guile 2.0.11 or later, ‘open-socket-for-uri’ connects to
> the proxy (so its name must be available in DNS lookup), not to the
> target server.  The code in (web client) goes like this:
>
> --8<---------------cut here---------------start------------->8---
> (define (open-socket-for-uri uri-or-string)
>   "Return an open input/output port for a connection to URI."
>   (define http-proxy (current-http-proxy))
>   (define uri (ensure-uri (or http-proxy uri-or-string)))  ;← proxy
>   (define addresses
>     (let ((port (uri-port uri)))
>       (delete-duplicates
>        (getaddrinfo (uri-host uri)
>                     (cond (port => number->string)
>                           (else (symbol->string (uri-scheme uri))))
>                     (if port
>                         AI_NUMERICSERV
>                         0))
>        ;; ...
> --8<---------------cut here---------------end--------------->8---
>
> Do you see the same DNS issue when running:
>
>   http_proxy=http://... guix download http://...
>
> ?
>
> Thanks,
> Ludo’.
>