Mailinglist Archive: opensuse-buildservice (96 mails)

< Previous Next >
[opensuse-buildservice] python 3.5 build problems in OBS

so i've been researching the problems related to getrandom() and python 3.5 all week (see bsc#949816 [1] for details).

TL;DR: python switched from reading /dev/urandom directly to calling the new syscall getrandom(). For this to work, you need to collect 128 bits of true entropy first. Buildservice VMs don't have entropy.
Therefore, most builds depending on python 3.5 will simply hang and wait to be killed by the scheduler many hours later.

In addition, Adrian suggested that actually *using* randomness in the build is a bad idea because then the build is not reproducible. We suppose that packages don't need it for anything, but there's a lot of packages and i'd be surprised if none of them did something weird...

Now, I have a package that, when present, solves both problems at once. It sets PYTHONHASHSEED to 0, to disable python's hash randomization, and monkey-patches os.urandom() to return a string of zero bytes instead of accessing urandom.

My question is, how to get this package to be used during all builds that depend on python 3.5?

At the moment, i added the package to d:l:python3 project (see [2]), and I want to require it through prjconf for all builds.

Is this a good idea? Would it be applicable to Factory? Is there a better way to accomplish what i'm trying to do (that is, modify python's environment specifically for buildservice builds)?


To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous Next >