Skip to content

ruamel.yaml automatically updates to 0.15.52 and breaks BuildStream

Summary

We don't pin a version of ruamel in our setup.py and the newly-released 0.15.52 version breaks BuildStream.

Steps to reproduce

On a currently installed BuildStream instance, run pip3 install --user -e . as per the current install instructions, then invoke bst (Just bst on the command line on its own is enough).

What is the current bug behavior?

Line present in pip upgrade log:

Collecting ruamel.yaml (from BuildStream==1.3.0+38.g8c9fd9e4)
  Using cached https://files.pythonhosted.org/packages/07/0f/c57e0f402f8f0b780d0cf3b5814489c30a531b7fdf21f9180a90320bc347/ruamel.yaml-0.15.52-cp36-cp36m-manylinux1_x86_64.whl

Running bst will produce:

Error loading user configuration: YAML file has content of type 'CommentedMap' instead of expected type 'dict': /home/jimmacarthur/bs/buildstream/buildstream/data/userconfig.yaml

What is the expected correct behavior?

bst should work as it previously did.

Possible fixes

Pin ruamel version number in setup.py, like this:

-          'ruamel.yaml',
+          'ruamel.yaml <= 0.15',

Other relevant information

Pinning is the current advice given by ruamel for production systems:

Starting with version 0.15.0 the way YAML files are loaded and dumped is changing. See the API doc for details. Currently existing functionality will throw a warning before being changed/removed. For production systems you should pin the version being used with ``ruamel.yaml<=0.15``.
  • BuildStream version affected: /milestone %BuildStream_v1.3

Edited by Jim MacArthur
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information