multi-build / multibuild

Machinery for building and testing Python Wheels for Linux, OSX and (less flexibly) Windows.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

question about travis ci new pricing plans

ofajardo opened this issue · comments

hi

This week I learned about the new pricing plans and limits Travis CI is imposing to projects. Since multibuild uses travis for linux and mac builds (and particularly the later ones consume 50 credits per minute compared to 10 credits per minute for linux), I was wondering if there is going to be any reaction? (like do nothing because the free credits should be enough, or migrate to another CI platform, etc ...).

Thanks

:) - do nothing is definitely a bad option - I'm afraid my inaction is only to do with my being a teacher in the middle of a COVID-19 encumbered university semester, while also writing grants. We should definitely switch elsewhere. Does anyone have any free time to work on that?

You can use multi build on other ci platforms. For instance, numpy-wheels migrated to azure. So I guess this is more a documentation issue than one that requires code changes.

Or were you concerned about multibuild’s CI for testing itself?

@mattip thanks for the tip, I am using multibuild just for building wheels, I thought travis was the only option, that was my concern (as it is the only one mentioned in the README - I think-), so updating the documentation on what other options are with some examples would definitely help.

Another example: pillow-wheels moved x86 builds to GitHub Actions in python-pillow/pillow-wheels#169.

@mattip

Question: I am migrating my CI to Azure. So far it is going well, but intermittently I am getting the following error in the Building Wheel step when downloading . Have you seen it? How do you solved it?

https://dev.azure.com/ofajardo/pyreadstat_wheels3/_build/results?buildId=25&view=logs&j=aaada960-d85f-5b88-82e5-99df4d27a2ce&t=4435c465-1139-5a9c-54f6-0578f1194078&l=64

Status: Downloaded newer image for quay.io/pypa/manylinux1_x86_64:latest
quay.io/pypa/manylinux1_x86_64:latest
(many more lines)
    repoXML = self.repoXML
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1399, in <lambda>
    repoXML = property(fget=lambda self: self._getRepoXML(),
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1391, in _getRepoXML
    self._loadRepoXML(text=self)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1381, in _loadRepoXML
    return self._groupLoadRepoXML(text, ["primary"])
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1365, in _groupLoadRepoXML
    if self._commonLoadRepoXML(text):
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1201, in _commonLoadRepoXML
    result = self._getFileRepoXML(local, text)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 974, in _getFileRepoXML
    cache=self.http_caching == 'all')
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 811, in _getFile
    http_headers=headers,
  File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 412, in urlgrab
    return self._mirror_try(func, url, kw)
  File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 398, in _mirror_try
    return func_ref( *(fullurl,), **kwargs )
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 936, in urlgrab
    return self._retry(opts, retryfunc, url, filename)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 854, in _retry
    r = apply(func, (opts,) + args, {})
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 922, in retryfunc
    fo = URLGrabberFileObject(url, filename, opts)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1010, in __init__
    self._do_open()
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1093, in _do_open
    fo, hdr = self._make_request(req, opener)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1202, in _make_request
    fo = opener.open(req)
  File "/usr/lib64/python2.4/urllib2.py", line 358, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.4/urllib2.py", line 376, in _open
    '_open', req)
  File "/usr/lib64/python2.4/urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.4/site-packages/M2Crypto/m2urllib2.py", line 82, in https_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/lib64/python2.4/httplib.py", line 810, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib64/python2.4/httplib.py", line 833, in _send_request
    self.endheaders()
  File "/usr/lib64/python2.4/httplib.py", line 804, in endheaders
    self._send_output()
  File "/usr/lib64/python2.4/httplib.py", line 685, in _send_output
    self.send(msg)
  File "/usr/lib64/python2.4/httplib.py", line 652, in send
    self.connect()
  File "/usr/lib64/python2.4/site-packages/M2Crypto/httpslib.py", line 55, in connect
    sock.connect((self.host, self.port))
  File "/usr/lib64/python2.4/site-packages/M2Crypto/SSL/Connection.py", line 174, in connect
    ret = self.connect_ssl()
  File "/usr/lib64/python2.4/site-packages/M2Crypto/SSL/Connection.py", line 167, in connect_ssl
    return m2.ssl_connect(self.ssl, self._timeout)
M2Crypto.SSL.SSLError: tlsv1 alert protocol version

You probably are using an older version of OpenSSL which does not support modern protocols. But somehow the results are cached for you via some other run, so the python2.4 run will succeed via the cache but fail when it is first.

makes sense ... and how come you are using a more modern version of OpenSSL, are you setting it manually somewhere?

I only use supported versions of python. 2.4 is at least 10 years old. Even python2.7 would be an improvement.

hmm, no that python 2.4 is coming from the system, I am only building wheels for python 3
So, what I am saying is I am not setting anywhere python 2.4 to be used ...
I guess it is coming from Centos?

I was using MB_ML_VER: "1" everywhere in my matrix, now I switched to 2010 everywhere and it the issue is gone, I guess the centos on ML 1 is too old?

I am now wondering why do you have both:
MB_ML_VER: "2010"
MB_ML_VER: "1"

and also: why not using 2014? (I am now switching to 2014 ,everything looks good but I'm wondering if there is any drawback) Is it just to keep compatibility with old OSs?