I use Conan in the most simple scenario, define one package, and one generator.
my conanfile.txt is:
[requires]
fmt/5.2.1@bincrafters/stable
[generators]
cmake
Run: conan install .
Result:
ERROR: /Users/shaulfridman/.conan/data/fmt/5.2.1/bincrafters/stable/export/conanfile.py: Error while initializing options. Please define your default_options as list or multiline string
The issue is also reproduced with package glew/2.1.0@bincrafters/stable
I used other packages, such as glfw/3.2.1@bincrafters/stable, and glm/0.9.8.5@bincrafters/stable and Conan works well.
Workaround
If I edit the conanfile.py of the fmt & glew packages in conan data folder, hard code change the default_options from:
default_options = {"shared": False, "header_only": False, "fPIC": True, ...
to
default_options = "shared=False", "header_only=False", "fPIC=True", ...
Conan package installtion works well :-O
System:
OS: macOS 10.14 Mojave
Python version: Python 2.7.10
Conan version: this is a bit suspicious.
When I run conan --version I get Conan version 1.7.3
I tried to remove conan and re-install, I get the same version.
I tried to update conan with pip install conan --upgrade --user and the version stayes the same.
you can see, Requirement already up-to-date, and the number (1.9.2) there, so I guess its ok...? :-|
I get:
$ pip install conan --user --upgrade
Requirement already up-to-date: conan in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (1.9.2)
Requirement already satisfied, skipping upgrade: PyJWT<2.0.0,>=1.4.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.5.3)
Requirement already satisfied, skipping upgrade: requests<3.0.0,>=2.7.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (2.18.4)
Requirement already satisfied, skipping upgrade: colorama<0.4.0,>=0.3.3 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.3.9)
Requirement already satisfied, skipping upgrade: PyYAML<3.14.0,>=3.11 in /Library/Python/2.7/site-packages (from conan) (3.12)
Requirement already satisfied, skipping upgrade: patch==1.16 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.16)
Requirement already satisfied, skipping upgrade: fasteners>=0.14.1 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.14.1)
Requirement already satisfied, skipping upgrade: six>=1.10.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.11.0)
Requirement already satisfied, skipping upgrade: node-semver==0.2.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.2.0)
Requirement already satisfied, skipping upgrade: distro<1.2.0,>=1.0.2 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.0.4)
Requirement already satisfied, skipping upgrade: pylint>=1.9.3 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.9.3)
Requirement already satisfied, skipping upgrade: future==0.16.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.16.0)
Requirement already satisfied, skipping upgrade: pygments<3.0,>=2.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (2.2.0)
Requirement already satisfied, skipping upgrade: astroid>=1.6.5 in /Library/Python/2.7/site-packages (from conan) (1.6.5)
Requirement already satisfied, skipping upgrade: deprecation<2.1,>=2.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (2.0.6)
Requirement already satisfied, skipping upgrade: tqdm<5,>=4.28.1 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (4.28.1)
Requirement already satisfied, skipping upgrade: idna==2.6 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (2.6)
Requirement already satisfied, skipping upgrade: cryptography<2.4.0,>=1.3.4 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (1.9)
Requirement already satisfied, skipping upgrade: pyOpenSSL<18.0.0,>=16.0.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (17.3.0)
Requirement already satisfied, skipping upgrade: bottle<0.13,>=0.12.8 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.12.13)
Requirement already satisfied, skipping upgrade: pluginbase<1.0,>=0.5 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from conan) (0.5)
Requirement already satisfied, skipping upgrade: urllib3<1.23,>=1.21.1 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from requests<3.0.0,>=2.7.0->conan) (1.22)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from requests<3.0.0,>=2.7.0->conan) (2017.11.5)
Requirement already satisfied, skipping upgrade: chardet<3.1.0,>=3.0.2 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from requests<3.0.0,>=2.7.0->conan) (3.0.4)
Requirement already satisfied, skipping upgrade: monotonic>=0.1 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from fasteners>=0.14.1->conan) (1.4)
Requirement already satisfied, skipping upgrade: isort>=4.2.5 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from pylint>=1.9.3->conan) (4.2.15)
Requirement already satisfied, skipping upgrade: singledispatch; python_version < "3.4" in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from pylint>=1.9.3->conan) (3.4.0.3)
Requirement already satisfied, skipping upgrade: mccabe in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from pylint>=1.9.3->conan) (0.6.1)
Requirement already satisfied, skipping upgrade: configparser; python_version == "2.7" in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from pylint>=1.9.3->conan) (3.5.0)
Requirement already satisfied, skipping upgrade: backports.functools-lru-cache; python_version == "2.7" in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from pylint>=1.9.3->conan) (1.4)
Requirement already satisfied, skipping upgrade: lazy-object-proxy in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from astroid>=1.6.5->conan) (1.3.1)
Requirement already satisfied, skipping upgrade: enum34>=1.1.3; python_version < "3.4" in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from astroid>=1.6.5->conan) (1.1.6)
Requirement already satisfied, skipping upgrade: wrapt in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from astroid>=1.6.5->conan) (1.10.11)
Requirement already satisfied, skipping upgrade: packaging in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from deprecation<2.1,>=2.0->conan) (18.0)
Requirement already satisfied, skipping upgrade: cffi>=1.7 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from cryptography<2.4.0,>=1.3.4->conan) (1.11.2)
Requirement already satisfied, skipping upgrade: asn1crypto>=0.21.0 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from cryptography<2.4.0,>=1.3.4->conan) (0.23.0)
Requirement already satisfied, skipping upgrade: ipaddress in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from cryptography<2.4.0,>=1.3.4->conan) (1.0.18)
Requirement already satisfied, skipping upgrade: pyparsing>=2.0.2 in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from packaging->deprecation<2.1,>=2.0->conan) (2.3.0)
Requirement already satisfied, skipping upgrade: pycparser in /Users/shaulfridman/Library/Python/2.7/lib/python/site-packages (from cffi>=1.7->cryptography<2.4.0,>=1.3.4->conan) (2.18)
Definitely the error is because to use conan-center, the latest conan version is necessary:
This means that public repositories, like conan-center assume the use of the latest version of the Conan client, and using an older version may result in failure of packages and recipes created with a newer version of the client.
https://docs.conan.io/en/latest/introduction.html#stable
So the error is that conan is not being correctly upgraded by pip. What happens if you uninstall it completely and run "conan"? (to rule out there is no other conan installed in your system). What happens if you do a pip install conan==1.8.4 --upgrade, for example? What is the last line in the output [conanfile.txt](https://github.com/conan-io/conan/files/2635972/conanfile.txt)? It is weird. I would try checking also the pip version and upgrading to latest pip.
Thank you very much for your detailed answer.
First, the line at the end of the output is a leftover, my fault. I remove it from the question.
Second, you were right about the Conan version.
I uninstall Conan with pip, and apparently, I still had Conan.
I found out that it was installed with brew. uninstalling it from brew, and re-install it with pip,
succeed to bring Conan version 1.9.2 up.
With version 1.9.2 all package installation works well.
I am not all that good in python, I didn't know they can have two (or actually with brew it seems I had even more version of Conan...) version of the same python package.
Here is brew output:
$ brew uninstall conan
Uninstalling /usr/local/Cellar/conan/1.7.3... (3,516 files, 25.6MB)
conan 1.1.1 and 1.2.1 are still installed.
Remove all versions with `brew uninstall --force conan`.
Thanks again for your help, and your great piece of software.
Hi @BlueSolei
Good to know, glad that it is solved now :)
Yes, the brew version is "independent" of the pip one, generated and maintained by the brew team. We recommend to use the pip-installed one whenever possible, though we document and list the brew one, because many OSX users rely on it for these things.
Love to help, do not hesitate to ask when you have further questions. Many thanks for your kind words!
I think, maybe, what we can take from this issue, and another issue I had with Conan updates in that past, is maybe to state in the documents to clean your env if you installed Conan in the past.
To make sure no stale version of Conan is hidden somewhere.
I played with Conan a couple of times in the past, apparently one of them was to install it with brew.
I did read the documentation, this is why this time I installedupdated it with pip.
Maybe it could be in the FAQ?
Anyway thanks again for the quick response :-)
Hi @BlueSolei !
My apologies for the incontinent, I updated many recipes, including fmt.
This new behavior is listed on changelog:
https://docs.conan.io/en/latest/changelog.html?highlight=default_options#id81
But we didn't add a note about it as "breaking change". I'll provide an update on docs, including a new note.
Thanks for reporting us.