Closed
Bug 852473
Opened 12 years ago
Closed 12 years ago
We should not rely on third party sites as part of the build (B2G uses http://pypi.python.org/packages/source/m/mozInstall/mozInstall-1.5.tar.gz )
Categories
(Release Engineering :: General, defect)
Release Engineering
General
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: emorley, Assigned: mozilla)
References
Details
(Keywords: intermittent-failure, Whiteboard: [buildduty])
Attachments
(1 file)
11.72 KB,
patch
|
armenzg
:
review+
mozilla
:
checked-in+
|
Details | Diff | Splinter Review |
Yet again we sadly have tree bustage because a dependency for the build has snuck in, that relies on an external site.
In addition to fixing this one, can we vet for other uses of non-mozilla properties please :-)
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816680&tree=Mozilla-Inbound#error0
{
03:14:24 INFO - #####
03:14:24 INFO - ##### Running create-virtualenv step.
03:14:24 INFO - #####
03:14:24 INFO - Creating virtualenv /home/cltbld/talos-slave/test/build/venv
03:14:24 INFO - Running command: ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py', '--no-site-packages', '--distribute', '/home/cltbld/talos-slave/test/build/venv'] in /home/cltbld/talos-slave/test/build
03:14:24 INFO - Copy/paste: /tools/buildbot/bin/python /tools/misc-python/virtualenv.py --no-site-packages --distribute /home/cltbld/talos-slave/test/build/venv
03:14:27 INFO - Using real prefix '/usr'
03:14:27 INFO - New python executable in /home/cltbld/talos-slave/test/build/venv/bin/python
03:14:28 INFO - Installing distribute....................................................................................................................................................................................done.
03:14:29 INFO - Return code: 0
03:14:29 INFO - Installing mozinstall into virtualenv /home/cltbld/talos-slave/test/build/venv
03:14:29 INFO - Running command: ['/home/cltbld/talos-slave/test/build/venv/bin/pip', 'install', '-r', 'tests/b2g/b2g-unittest-requirements.txt', '--find-links', 'http://puppetagain.pub.build.mozilla.org/data/python/packages', 'mozinstall'] in /home/cltbld/talos-slave/test/build
03:14:29 INFO - Copy/paste: /home/cltbld/talos-slave/test/build/venv/bin/pip install -r tests/b2g/b2g-unittest-requirements.txt --find-links http://puppetagain.pub.build.mozilla.org/data/python/packages mozinstall
03:14:47 INFO - Downloading/unpacking mozinstall
03:14:47 INFO - Error <urlopen error timed out> while getting http://pypi.python.org/packages/source/m/mozInstall/mozInstall-1.5.tar.gz#md5=14188bdc11065f86dd48497b66ce9dd8 (from http://pypi.python.org/simple/mozInstall/)
03:14:47 INFO - Exception:
03:14:47 ERROR - Traceback (most recent call last):
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/basecommand.py", line 130, in main
03:14:47 INFO - self.run(options, args)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/commands/install.py", line 223, in run
03:14:47 INFO - requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/req.py", line 917, in prepare_files
03:14:47 INFO - self.unpack_url(url, location, self.is_download)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/req.py", line 1023, in unpack_url
03:14:47 INFO - return unpack_http_url(link, location, self.download_cache, only_download)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/download.py", line 429, in unpack_http_url
03:14:47 INFO - resp = _get_response_from_url(target_url, link)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/download.py", line 458, in _get_response_from_url
03:14:47 INFO - resp = urlopen(target_url)
03:14:47 INFO - File "/home/cltbld/talos-slave/test/build/venv/lib/python2.6/site-packages/pip-0.8.2-py2.6.egg/pip/download.py", line 84, in __call__
03:14:47 INFO - response = urllib2.urlopen(self.get_request(url))
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 124, in urlopen
03:14:47 INFO - return _opener.open(url, data, timeout)
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 383, in open
03:14:47 INFO - response = self._open(req, data)
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 401, in _open
03:14:47 INFO - '_open', req)
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 361, in _call_chain
03:14:47 INFO - result = func(*args)
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 1130, in http_open
03:14:47 INFO - return self.do_open(httplib.HTTPConnection, req)
03:14:47 INFO - File "/usr/lib/python2.6/urllib2.py", line 1105, in do_open
03:14:47 INFO - raise URLError(err)
03:14:47 INFO - URLError: <urlopen error timed out>
03:14:47 INFO - Storing complete log in /home/cltbld/.pip/pip.log
}
Reporter | ||
Updated•12 years ago
|
Keywords: intermittent-failure
Reporter | ||
Comment 1•12 years ago
|
||
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816731&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816729&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816733&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816735&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816727&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816717&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816796&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816680&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816700&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816712&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=20816728&tree=Mozilla-Inbound
Comment 2•12 years ago
|
||
I'm not sure how to word this, but we shouldn't even be depending on resources within Mozilla in most cases. For example, we used to have tests that referenced made requests to www.mozilla.org. In general, requiring the any remote resource for any part of a compile step or actual test (as opposed to setting up a test) is very bad form (b2g builds that pull xulrunner, I'm looking at you).
Reporter | ||
Comment 3•12 years ago
|
||
Yeah I agree - it was more I couldn't think of a better way to describe "anything other than ftp.m.o, *.build.m.o, hg.m.o/*, ..." :-)
Comment 4•12 years ago
|
||
IIRC the public data/python/packages mirrors to some internal hosts for us to use and we should not puppetagain.pub directly.
On another note, I think we have to add --no-index with --find-links:
-f, --find-links <URL> URL to look for packages at
--no-index Ignore package index (only looking at --find-links URLs instead)
Does this make sense?
Comment 5•12 years ago
|
||
IIUC we should aim for these hosts:
releng-puppet1.build.scl1.mozilla.com
releng-puppet1.build.mtv1.mozilla.com
releng-puppet1.srv.releng.scl3.mozilla.com
The problem I find is that we can't reach data/python/packages through a web head.
Assignee | ||
Comment 6•12 years ago
|
||
I think Dustin wants us to point at http://repos/python/packages/ , since "repos" is a dns CNAME that points at the nearest one of those three hosts.
Adding Jonathan and Andrew; did you guys realize we were adding a new dependency that wasn't in puppetagain?
Comment 7•12 years ago
|
||
It seems like it works for us:
[cltbld@talos-r3-fed-001 ~]$ host repos
repos.build.scl1.mozilla.com is an alias for releng-puppet1.build.scl1.mozilla.com.
releng-puppet1.build.scl1.mozilla.com has address 10.12.51.224
[cltbld@talos-r3-fed-001 ~]$ wget repos/python/packages/carrot-0.10.7.tar.gz--2013-03-19 09:51:47-- http://repos/python/packages/carrot-0.10.7.tar.gz
Resolving repos... 10.12.51.224
Connecting to repos|10.12.51.224|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 62069 (61K) [application/x-gzip]
Saving to: `carrot-0.10.7.tar.gz'
100%[===========================================================================================>] 62,069 --.-K/s in 0.009s
2013-03-19 09:51:47 (6.53 MB/s) - `carrot-0.10.7.tar.gz' saved [62069/62069]
Assignee | ||
Comment 8•12 years ago
|
||
The main reason I was avoiding pointing at "repos" is it's another thing that keeps people outside our network from taking our configs and using them easily. Maybe now that we have multiple config file support that's not as big an issue.
Comment 9•12 years ago
|
||
You should be using repos since that's fault tolerant. Just specifying one puppet server or the pub website is not.
Comment 10•12 years ago
|
||
(In reply to Aki Sasaki [:aki] from comment #6)
> I think Dustin wants us to point at http://repos/python/packages/ , since
> "repos" is a dns CNAME that points at the nearest one of those three hosts.
>
> Adding Jonathan and Andrew; did you guys realize we were adding a new
> dependency that wasn't in puppetagain?
We haven't added a new dependency here; 'mozinstall' is not a recent addition to the mozharness script, it's been around for a long time:
http://hg.mozilla.org/build/mozharness/file/7599724311e0/scripts/b2g_emulator_unittest.py#l118
And, it is in puppetagain:
http://puppetagain.pub.build.mozilla.org/data/python/packages/mozInstall-1.4.tar.gz
so, I'm not sure why it's intermittently failing.
Assignee | ||
Comment 11•12 years ago
|
||
Ok. I wondered if mozinstall==1.5 snuck in somewhere.
It's possible that puppetagain.pub.build.m.o was down at the time of these issues; pointing at repos/ would fix that.
Comment 12•12 years ago
|
||
(In reply to Aki Sasaki [:aki] from comment #8)
> The main reason I was avoiding pointing at "repos" is it's another thing
> that keeps people outside our network from taking our configs and using them
> easily. Maybe now that we have multiple config file support that's not as
> big an issue.
The other issue is that people outside of rel-eng/IT can't determine what's in "repos", so we can't be sure when/if we need to update packages there.
Comment 13•12 years ago
|
||
(In reply to Armen Zambrano G. [:armenzg] from comment #4)
> IIRC the public data/python/packages mirrors to some internal hosts for us
> to use and we should not puppetagain.pub directly.
>
> On another note, I think we have to add --no-index with --find-links:
>
> -f, --find-links <URL> URL to look for packages at
> --no-index Ignore package index (only looking at
> --find-links URLs instead)
>
> Does this make sense?
I think --no-index makes sense if we want to hit our find-links only page only, yes.
Comment 14•12 years ago
|
||
Maybe we can start with --no-index everywhere.
Would changing the CNAME to "puppetagain-internal" (or similar) instead of "repos" be a more clear CNAME?
Assignee | ||
Updated•12 years ago
|
Assignee: nobody → aki
Assignee | ||
Comment 15•12 years ago
|
||
Ok. I'm going to use this bug for --no-index only, and bug 843568 for puppetagain -> repos.
Assignee | ||
Comment 16•12 years ago
|
||
* adds pip_index = False to all config files with a find_links
* adds --pip-index and --no-pip-index commandline options. I debated on naming for a while. The fact that we'll want a --no-___ option made me avoid --pip-no-index and --no-pip-no-index (or --no-index --no-no-index, or --no-index --index).
* pep8-ified mozharness.base.python
I could have also assumed that if we ever specify --find-links, we'll want --no-index. I'm not sure that's the case for developers, so I went this route. I don't have strong feelings about it, though.
Attachment #726824 -
Flags: review?(armenzg)
Comment 17•12 years ago
|
||
Comment on attachment 726824 [details] [diff] [review]
--no-index
Review of attachment 726824 [details] [diff] [review]:
-----------------------------------------------------------------
r+ after addressing questions below.
::: mozharness/base/python.py
@@ +208,5 @@
> for link in c.get('find_links', []):
> command.extend(["--find-links", link])
>
> + if not c["pip_index"]:
> + command += ['--no-index']
Should this be --no-pip-index?
Attachment #726824 -
Flags: review?(armenzg) → review+
Assignee | ||
Comment 18•12 years ago
|
||
(In reply to Armen Zambrano G. [:armenzg] from comment #17)
> Comment on attachment 726824 [details] [diff] [review]
> --no-index
>
> Review of attachment 726824 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> r+ after addressing questions below.
>
> ::: mozharness/base/python.py
> @@ +208,5 @@
> > for link in c.get('find_links', []):
> > command.extend(["--find-links", link])
> >
> > + if not c["pip_index"]:
> > + command += ['--no-index']
>
> Should this be --no-pip-index?
No, it's |pip install --no-index| .
pip install --help
<snip>
--no-index Ignore package index (only looking at --find-links URLs instead)
Assignee | ||
Comment 19•12 years ago
|
||
Comment on attachment 726824 [details] [diff] [review]
--no-index
http://hg.mozilla.org/build/mozharness/rev/c840a99c6b7d
Merged to production.
Attachment #726824 -
Flags: checked-in+
Assignee | ||
Comment 20•12 years ago
|
||
This should be fixed.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 21•12 years ago
|
||
Looks like now that we have --no-index, we get this for Marionette:
14:21:38 INFO - Downloading/unpacking mozcrash>=0.5 (from marionette-client)
14:21:38 INFO - Could not find a version that satisfies the requirement mozcrash>=0.5 (from marionette-client) (from versions: )
14:21:38 INFO - No distributions matching the version for mozcrash>=0.5 (from marionette-client)
Reporter | ||
Comment 22•12 years ago
|
||
(In reply to Aki Sasaki [:aki] from comment #20)
> This should be fixed.
Thank you for doing this :-)
Comment 23•12 years ago
|
||
(In reply to Aki Sasaki [:aki] from comment #6)
> I think Dustin wants us to point at http://repos/python/packages/ , since
> "repos" is a dns CNAME that points at the nearest one of those three hosts.
(In reply to Amy Rich [:arich] [:arr] from comment #9)
> You should be using repos since that's fault tolerant. Just specifying one
> puppet server or the pub website is not.
Almost - 'repos' is just a CNAME for a puppet server, so it's no more fault-tolerant. The correct fix here is to use a pip.conf that lists multiple mirrors (bug 843568) and to list explicit package versions everywhere, rather than pulling "latest" (bug 851305).
Updated•11 years ago
|
Product: mozilla.org → Release Engineering
Updated•7 years ago
|
Component: General Automation → General
You need to log in
before you can comment on or make changes to this bug.
Description
•