Hi, I have two builds for my Python library failing to deploy from macOS. It seems to have something to do with the openssl ruby gem for the deployment.
A likely explanation here is that your upgrading Homebrew updated OpenSSL on which our pre-built Ruby depends on (from 1.0.x to 1.1.y), and made it unusable. A newer macOS image may not (or may) have this problem.
thanks for the fast response. I noticed that previous builds would also upgrade homebrew’s openssl to the exact same version (openssl@1.1-1.1.1d) and there I had no problems. Here’s the log from the previous (successfull) deployment: https://travis-ci.org/pupil-labs/apriltags/jobs/588936482
So I did not change anything really. It appears the dependencies of the deployment changed instead?
Unfortunately I have to use this image, as the Python wheels will be only compatible for macOS versions above the one used for building this wheel. This library is used in a bigger context for a software which still has to support OSX 10.12. So I have to build wheels from 10.12 somehow.
Do you have any hints on what I could try to get this working?
@BanzaiMan
I ran brew list --versions right at the start (before upgrading homebrew) of the image → output
Note that there seem to be 2 versions of openssl installed:
139 openssl 1.0.2l
140 openssl@1.1 1.1.0f
If you go back to the broken deployment job, you can see that your deployment tries to reference /usr/local/opt/openssl/lib/libssl.1.0.0.dylib, which appears to be the first of the two installed versions.
My upgrade command will only update openssl@1.1, which also lives in a different folder: /usr/local/opt/openssl@1.1.
From what I am seeing here it appears that the base-installation of homebrew got updated on the image? From the travis docs:
Homebrew is installed and updated every time the virtual machines are updated.
That would mean that the deployment on this image (xcode8.3) is broken in general.
@pfaion First af all, as https://travis-ci.org/pupil-labs/apriltags/jobs/633671779#L3963 says, 10.12 is unsupported by Apple and Homebrew so your builds are bound to break eventually and you’ll be on your own (Homebrew does accept PRs from users that fix breakages though). Consider upgrading to a supported version.
As a workaround, running the following in before_deploy: might work (I can’t test it):
rvm reinstall $(travis_internal_ruby)
It’s supposed to implement the first option. It might not work if rvm reinstall wipes custom installed gems and some need to be present for Travis machinery to work properly.
@native-api As I said, I have to support macOS 10.12 for now with this library. I specifically looked at the travis docs for macOS and did not find any information that any of those versions were not officially supported by travis anymore. It seems the image was updated (probably with a security update?) since OpenSSL 1.0 is not even installed anymore on the bare image, even without me upgrading homebrew?
Anyways. The first workaround unfortunately did not work, see this log.
I am not sure how to proceed with the second option as I have no experience with ruby.
I’ll see if I can just get the PyPI deployment working on macOS, as I am using the script deployment provider for this. It might be that just the GitHub releases provider is broken. This would be unfortunate but at least it would push my release to the public on some channel.
The script deployment also does not work. I can’t even get it to work by e.g. including
deploy:
on:
- condition: os != osx
Even though it’s disabled by condition, dpl still is getting loaded up, which causes the crash.
I made a manual release now by running custom code in after_success on a custom branch, but this is definitely only a workaround.
Is this supposed to get fixed at some point, or do I have to fix or appropriately workaround this myself?
Since I don’t know how to mess with the ruby installation, I’d probably just stop using deploy and implement custom scripts for branch/tag testing and manual deploy.
before_deploy:
- for lib in ssl crypto; do ln -s /usr/local/opt/openssl{@1.0,}/lib/lib${lib}.1.0.0.dylib; done
- rvm reinstall $(travis_internal_ruby) --disable-binary
- for lib in ssl crypto; do rm /usr/local/opt/openssl/lib/lib${lib}.1.0.0.dylib; done