Ports doesnt respect fetch environment settings
Tom Evans
tevans.uk at googlemail.com
Mon Jun 21 10:34:13 UTC 2010
On Mon, Jun 21, 2010 at 11:10 AM, Erwin Lansing <erwin at freebsd.org> wrote:
> On Mon, Jun 21, 2010 at 11:04:16AM +0100, Tom Evans wrote:
>> My company recently enabled proxy authentication for outgoing
>> connections, and this has stopped ports from working.
>>
>> >From fetch(5), I understand that I can place my proxy authentication
>> in plain text in the environment*, and this will allow fetch to work
>> correctly, and this does work:
>>
>> > # env | grep -i proxy
>> ftp_proxy=http://proxy:3128/
>> HTTP_PROXY_AUTH=basic:*:tevans at domain.com:password
>> HTTP_PROXY=http://proxy:3128/
>> > # fetch http://googlecl.googlecode.com/files/googlecl-0.9.5.tar.gz
>> googlecl-0.9.5.tar.gz 100% of 36 kB 77 MBps
>>
>> However, the ports makefiles seem to do something funky to my
>> environment which hides these environment variables, and so the ports
>> infrastructure stops working:
>>
> You should use FETCH_ENV or FETCH_ARGS to pass information to fetch(1) from the
> ports infrastructure. It is documented in /usr/ports/Mk/bsd.port.mk,
> search for FETCH_BINARY. Hope that helps.
>
> -erwin
>
Er, ok that makes slight sense. In /usr/ports/Mk/bsd.port.mk it says:
# FETCH_ENV - Environment to pass to ${FETCH_CMD}.
# Default: none
So how is it picking up that it needs to go thru a proxy at all, given
that this is also only specified in the environment?
Also, am I supposed to literally repeat my same environment variables
in FETCH_ENV? Meaning I have to place my password in plain text again
in my environment? This is horrific...
Also, even after doing that, it still doesn't look at the environment
variables. I prepended "-v" to FETCH_ENV to show that it is setting
the right environment variables, but fetch in ports is still not
looking at them:
> # export FETCH_ENV="-v HTTP_PROXY=$HTTP_PROXY HTTP_PROXY_AUTH=$HTTP_PROXY_AUTH ftp_proxy=$ftp_proxy"
root at strangepork '11:26:21' '/usr/ports/net/googlecl'
> # make fetch
===> Vulnerability check disabled, database not found
===> License check disabled, port has not defined LICENSE
=> googlecl-0.9.5.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://googlecl.googlecode.com/files/.
#env setenv: HTTP_PROXY=http://proxy:3128/
#env setenv: HTTP_PROXY_AUTH=basic:*:tevans at domain:pass
#env setenv: ftp_proxy=http://proxy:3128/
#env executing: /usr/bin/fetch
#env arg[0]= '/usr/bin/fetch'
#env arg[1]= '-ApRr'
#env arg[2]= '-S 37867'
#env arg[3]= 'http://googlecl.googlecode.com/files/googlecl-0.9.5.tar.gz'
fetch: http://googlecl.googlecode.com/files/googlecl-0.9.5.tar.gz:
Proxy Authentication Required
=> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
#env setenv: HTTP_PROXY=http://proxy:3128/
#env setenv: HTTP_PROXY_AUTH=basic:*:tevans at domain:pass
#env setenv: ftp_proxy=http://proxy:3128/
#env executing: /usr/bin/fetch
#env arg[0]= '/usr/bin/fetch'
#env arg[1]= '-ApRr'
#env arg[2]= '-S 37867'
#env arg[3]=
'ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/googlecl-0.9.5.tar.gz'
fetch: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/googlecl-0.9.5.tar.gz:
Not Found
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/ and try again.
*** Error code 1
*.freebsd.org is whitelisted through the proxies, which is why the
second fetch gets a 404 and not a 407
Any thoughts?
Cheers
More information about the freebsd-current
mailing list