Check https://github.com/conan-io/conan for issues and more details about development, contributors, etc.
Important
Please don't use cross-build settings os_build, arch_build for standard packages and libraries.
There were some errors in the docs, using them for all packages.
They are only useful for packages that are used via build_requires, like cmake_installer or mingw_installer.
- Fix: Adding a warning message for simultaneous use of
osandos_buildsettings. - Fix: Do not raise error from conanbuildinfo.cmake for Intel MSVC toolsets.
- Fix: Added more architectures to default settings.yml
arch_buildsetting. - Fix: using
--xxx-folderin command line help messages. - Bugfix: using quotes for Windows bash path with spaces.
- Bugfix: vcvars/vcvars_dict not including windows and windows/system32 directories in the path.
- Fix:
conan newdoes not generate cross-building (likeos_build) settings by default. They make only sense for dev-tools used asbuild_requires - Fix:
conaninfo.txtfile does not dump settings with None values
- Bugfix: Fixed bug from
remove_from_pathdue to Windows path backslash - Bugfix: Compiler detection in conanbuildinfo.cmake for Visual Studio using toolchains like LLVM (Clang)
- Bugfix: Added quotes to bash path.
- Fix: Errors from remotes different to a 404 will raise an error. Disconnected remotes have to be removed from remotes or use explicit remote with
-r myremote - Fix: cross-building message when building different architecture in same OS
- Fix:
$ conan profile shownow shows profile with same syntax as profile files - Fix: generated test code in
$ conan newtemplates will not run example app if cross building. - Fix:
$ conan export-pkguses the conanfile.py folder as the default--source-folder - Bugfix:
$ conan downloaddidn't download recipe if there are no binaries. Force recipe download. - Bugfix: Fixed blocked
self.run()when stderr outputs large tests, due to full pipe.
- Feature:
run_in_windows_bashaccepts a dict of environment variables to be prioritised inside the bash shell, mainly intended to control the priority of the tools in the path. Use withvcvarscontext manager andvcvars_dict, that returns the PATH environment variable only with the Visual Studio related directories - Fix: Adding all values to
arch_target - Fix:
conan newtemplates now use newos_buildandarch_buildsettings - Fix: Updated
CMakehelper to account foros_buildandarch_buildnew settings - Fix: Automatic creation of default profile when it is needed by another one (like
include(default)) - BugFix: Failed installation (non existing package) was leaving lock files in the cache, reporting a package for
conan search - BugFix: Environment variables are now applied to
build_requirements()for$ conan install . - BugFix: Dependency graph was raising conflicts for diamonds with
aliaspackages - BugFix: Fixed
conan export-pkgafter aconan installwhen recipe has options
- Fix: Upgraded pylint and astroid to latest
- Fix: Fixed
build_requireswith transitive dependencies to other build_requires - Fix: Improved pyinstaller creation of executable, to allow for py3-64 bits (windows)
- Deprecation: removed all
--some_argument, use instead--some-argumentin command line.
- Feature: New command line UI. Most commands use now the path to the package recipe, like
conan export . user/testingorconan create folder/myconanfile.py user/channel. - Feature: Better cross-compiling. New settings model for
os_build,arch_build,os_target,arch_target. - Feature: Better Windows OSS ecosystem, with utilities and settings model for MSYS, Cygwin, Mingw, WSL
- Feature:
package()will not warn of not copied files for known use cases. - Feature: reduce the scope of definition of
cpp_info,env_info,user_infoattributes topackage_info()method, to avoid unexpected errors. - Feature: extended the use of addressing folder and conanfiles with different names for
`source,packageandexport-pkgcommands - Feature: added support for Zypper system package tool
- Fix: Fixed application of build requires from profiles that didn't apply to requires in recipes
- Fix: Improved "test package" message in output log
- Fix: updated CI templates generated with
conan new - Deprecation: Removed
self.copy_headersand family for thepackage()method - Deprecation: Removed
self.conanfile_directoryattribute.
Note
This is a beta release, shouldn't be installed unless you do it explicitly
$ pip install conan==1.0.0b2 --upgrade
Breaking changes
- The new command line UI breaks command line tools and integration. Most cases, just add a
.to the command. - Removed
self.copy_headers,self.copy_libs, methods forpackage(). Useself.copy()instead. - Removed
self.conanfile_directoryattribute. Useself.source_folder,self.build_folder, etc. instead
- Reverted CMake() and Meson() build helpers to keep old behavior.
- Forced Astroid dependency to < 1.6 because of py3 issues.
- Fix: CMake() and Meson() build helpers and relative directories regression.
- Fix: ycm generator, removed the access of cpp_info to generators, keeping the access to deps_cpp_info.
- Feature: Introduced major versions for gcc (5, 6, 7) as defaults settings for OSS packages, as minors are compatible by default
- Feature:
VisualStudioBuildEnvironmenthas added more compilation and link flags. - Feature: new
MSBuildbuild helper that wraps the call tomsvc_build_commandwith the correct application of environment variables with the improvedVisualStudioBuildEnvironment - Feature:
CMakeandMesonbuild helpers got a newcache_build_dirargument forconfigure(cache_build_dir=None)that will be used to define a build directory while the package is being built in local cache, but not when built locally - Feature:
conanfilesgot a newapply_envattribute, defaulted toTrue. If false, the environment variables from dependencies will not be automatically applied. Useful if you don't want some dependency adding itself to the PATH by default, for example - Feature: allow recipes to use and run python code installed with
conan config install - Feature:
conanbuildinfo.cmakenow hasKEEP_RPATHSas argument to keep the RPATHS, as opposed to old SKIP_RPATH which was confusing. Also, it uses set(CMAKE_INSTALL_NAME_DIR "") to keep the old behavior even for CMake >= 3.9 - Feature:
conan infois able to get profile information from the previous install, instead of requiring it as input again - Feature:
tools.unix_pathsupport MSYS, Cygwin, WSL path flavors - Feature: added
destinationfolder argument totools.get()function - Feature:
SystemPackageToolfor apt-get now uses--no-install-recommendsautomatically. - Feature:
visual_studio_multigenerator now uses toolsets instead of IDE version to identify files. - Fix: generators failures print traces to help debugging
- Fix: typos in generator names, or non-existing generator now raise an Error instead of a warning
- Fix:
short_pathsfeature is active by default in Windows. If you want to opt-out, you can useCONAN_USER_HOME_SHORT=None - Fix:
SystemPackageTooldoesn't use sudo in Windows - BugFix: Not using parallel builds for Visual<10 in cmake build helper
- Deprecation:
conanfile_directoryshouldn't be used anymore in recipes. Usesource_folder,build_folder, etc
Note
Breaking changes
scopeshave been completely removed. You can use environment variables, or theconanfile.developorconanfile.in_local_cacheattributes instead.- Command
test_packagehas been removed. Useconan createinstead, andconan testfor just running package tests. werrorbehavior is now by default. Dependencies conflicts will now error, and have to be fixed.short_pathsfeature is again active by default in Windows, even with Py3.6 and system LongPathsEnabled.ConfigureEnvironmentandGCCbuild helpers have been completely removed
- Updated python cryptography requirement for OSX due the pyOpenSSL upgrade. See more: https://pypi.python.org/pypi/pyOpenSSL
- Support for OSX High Sierra
- Reverted concurrency locks to counters, removed
psutildependency - Implemented migration for settings.yml (for new VS toolsets)
- Fixed encoding issues in conan_server
- Feature: Support for WindowsStore (WinRT, UWP)
- Feature: Support for Visual Studio Toolsets.
- Feature: New
boost-buildgenerator for generic bjam (not only Boost) - Feature: new
tools.PkgConfighelper to parse pkg-config (.pc) files. - Feature: Added
self.developconanfile variable. It is true forconan createpackages and for local development. - Feature: Added
self.keep_importsto avoid removal of imported files in thebuild()method. Convenient for re-packaging. - Feature: Autodected MSYS2 for
SystemPackageTool - Feature:
AutoToolsBuildEnvironmentnow auto-loadspkg_config_path(to use withpkg_configgenerator) - Feature: Changed search for profiles. Profiles not found in the default
profilesfolder, will be searched for locally. Use./myprofileto force local search only. - Feature: Parallel builds for Visual Studio (previously it was only parallel compilation within builds)
- Feature: implemented syntax to check options with
if "something" in self.options.myoption - Fix: Fixed CMake dependency graph when using TARGETS, that produced wrong link order for transitive dependencies.
- Fix: Trying to download the
exports_sourcesis not longer done if such attribute is not defined - Fix: Added output directories in
cmakegenerator for RelWithDebInfo and MinSizeRel configs - Fix: Locks for concurrent access to local cache now use process IDs (PIDs) to handle interruptions and inconsistent states. Also, adding messages when locking.
- Fix: Not remove the .zip file after a
conan config installif such file is local - Fix: Fixed
CMake.test()for the Ninja generator - Fix: Do not crete local conaninfo.txt file for
conan install <pkg-ref>commands. - Fix: Solved issue with multiple repetitions of the same command line argument
- BugFix: Don't rebuild conan created (with conan-create) packages when
build_policy="always" - BugFix:
conan copywas always copying binaries, now can copy only recipes - BugFix: A bug in download was causing appends insteads of overwriting for repeated downloads.
- Development: Large restructuring of files (new cmd and build folders)
- Deprecation: Removed old CMake helper methods (only valid constructor is
CMake(self)) - Deprecation: Removed old
conan_info()method, that was superseded bypackage_id()
Note
Breaking changes
- CMAKE_LIBRARY_OUTPUT_DIRECTORY definition has been introduced in
conan_basic_setup(), it will send shared libraries .so to thelibfolder in Linux systems. Right now it was undefined. - Profile search logic has slightly changed. For
-pr=myprofile, such profile will be searched both in the default folder and in the local one if not existing. Use-pr=./myprofileto force local search only. - The
conan copycommand has been fixed. To copy all binaries, it is necessary to explicit--all, as other commands do - The only valid use of CMake helper is
CMake(self)syntax - If using
conan_info(), replace it withpackage_id() - Removed environment variable
CONAN_CMAKE_TOOLSET, now the toolset can be specified as a subsetting of Visual Studio compiler or specified in the build helpers.
- BugFix: Downloading (
tools.download) of files withcontent-encoding=gzipwere raising an exception because the downloaded content length didn't match the http headercontent-length
This is a big release, with many important and core changes. Also with a huge number of community contributions, thanks very much!
- Feature: Major revamp of most conan commands, making command line arguments homogeneous. Much
better development flow adapting to user layouts, with
install-folder,source-folder,build-folder,package-folder. - Feature: new
deploy()method, useful for installing binaries from conan packages - Feature: Implemented some concurrency support for the conan local cache. Parallel
conan installandconan createfor different configurations should be possible. - Feature: options now allow patterns in command line:
-o *:myoption=myvalueapplies to all packages - Feature: new
pcgenerator that generates files from dependencies forpkg-config - Feature: new
Mesonhelper, similar toCMakefor Meson build system. Works well withpcgenerator. - Feature: Support for read-only cache with
CONAN_READ_ONLY_CACHEenvironment variable - Feature: new
visual_studio_multigenerator to load Debug/Release, 32/64 configs at once - Feature: new
tools.whichhelper to locate executables - Feature: new
conan --helplayout - Feature: allow to override compiler version in
vcvars_command - Feature:
conan userinteractive (and not exposed) password input for empty-pargument - Feature: Support for
PacManToolforsystem_requirements()for ArchLinux - Feature: Define VS toolset in
CMakeconstructor and from environment variable CONAN_CMAKE_TOOLSET - Feature:
conan createnow acceptswerrorargument - Feature:
AutoToolsBuildEnvironmentcan useCONAN_MAKE_PROGRAMenv-var to define make program - Feature: added xcode9 for apple-clang 9.0, clang 5 to default settings.yml
- Feature: deactivation of
short_pathsin Windows 10 with Py3.6 and long path support is automatic - Feature: show unzip progress by percentage, not by file (do not clutters output)
- Feature: do not use
sudofor system requirements if already running as root - Feature:
tools.downloadable to use headers/auth - Feature: conan does not longer generate bytecode from recipes (no more .pyc, and more efficient)
- Feature: add parallel argument to
build_sln_commandfor VS - Feature: Show warning if vs150comntools is an invalid path
- Feature:
tools.get()now has arguments for hash checking - Fix: upload pattern now accepts
Pkg/* - Fix: improved downloader, make more robust, better streaming
- Fix:
tools.patchnow support adding/removal of files - Fix: The
defaultprofile is no longer taken as a base and merged with user profile. Use explicitinclude(default)instead. - Fix: properly manage x86 as cross building with autotools
- Fix:
tools.unzipremoved unnecessary long-paths check in Windows - Fix:
package_info()is no longer executed at install for the consumer conanfile.py - BugFix: source folder was not being correctly removed when recipe was updated
- BugFix: fixed
CMAKE_C_FLAGS_DEBUGdefinition incmakegenerator - BugFix:
CMAKE_SYSTEM_NAMEis now Darwin for iOS, watchOS and tvOS - BugFix:
xcodegenerator fixed handling of compiler flags - BugFix: pyinstaller hidden import that broke .deb installer
- BugFix:
conan profile listwhen local files matched profile names
Note
Breaking changes
This is an important release towards stabilizing conan and moving out of beta. Some breaking changes have been done, but mostly to command line arguments, so they should be easy to fix. Package recipes or existing packages shouldn't break. Please update, it is very important to ease the transition of future stable releases. Do not hesitate to ask questions, or for help if you need it. This is a possibly not complete list of things to take into account:
- The command
conan installdoesn't acceptcwdanymore, to change the directory where the generator files are written, use the--install-folderparameter. - The command
conan installdoesn't accept--allanymore. Useconan download <ref>instead. - The command
conan buildnow requires the path to theconanfile.py(optional before) - The command
conan packagenot longer re-package a package in the local cache, now it only operates in a user local folder. The recommended way to re-package a package is usingconan buildand thenconan export-pkg. - Removed
conan package_filesin favor of a new commandconan export-pkg. It requires a local recipe with apackage()method. - The command
conan sourceno longer operates in the local cache. now it only operates in a user local folder. If you usedconan sourcewith a reference to workaround the concurrency, now it natively supported, you can remove the command call and trust concurrent install processes. - The command
conan importsdoesn't accept-d, --destanymore, use--imports-folderparameter instead. - If you specify a profile in a conan command, like conan create or conan install the base profile ~/.conan/profiles/default won’t be applied.
Use explicit
includeto keep the old behavior.
- Feature:
conan config install <url>new command. Will install remotes, profiles, settings, conan.conf and other files into the local conan installation. Perfect to synchronize configuration among teams - Feature: improved traceback printing when errors are raised for more context. Configurable via env
- Feature: filtering out non existing directories in
cpp_info(include, lib, etc), so some build systems don't complain about them. - Feature: Added include directories to ResourceCompiler and to MIDL compiler in
visual_studiogenerator - Feature: new
visual_studio_legacygenerator for Visual Studio 2008 - Feature: show path where manifests are locally stored
- Feature:
replace_in_filenow raises error if replacement is not done (opt-out parameter) - Feature: enabled in conan.conf
[proxies]sectionno_proxy=url1,url2configuration (to skip proxying for those URLs), as well ashttp=Noneandhttps=Noneto explicitly disable them. - Feature: new conanfile
self.in_local_cacheattribute for conditional logic to apply in user folders local commands - Feature:
CONAN_USER_HOME_SHORT=Nonecan disable the usage ofshort_pathsin Windows, for modern Windows that enable long paths at the system level - Feature:
if "arm" in self.settings.archis now a valid check (without casting to str(self.settings.arch)) - Feature: added
--cwdargument toconan sourcelocal method. - Fix: unzip crashed for 0 Bytes zip files
- Fix:
collect_libsmoved to thetoolsmodule - Bugfix: fixed wrong regex in
deps_cpp_infocausing issues with dots and dashes in package names - Development: Several internal refactors (tools module, installer), testing (using VS2015 as default, removing VS 12 in testing). Conditional CI in travis for faster builds in developers, downgrading to CMake 3.7 in appveyor
- Deprecation:
dev_requireshave been removed (it was not documented, but accesible via therequires(dev=True)parameter. Superseded bybuild_requires. - Deprecation: sources tgz files for exported sources no longer contain ".c_src" subfolder. Packages created with 0.27 will be incompatible with conan < 0.25
- Feature: added apple-clang 9.0 to default settings.
- Fix:
conan copycommand now supports symlinks. - Fix: fixed removal of "export_source" folder when files have no permissions
- Bugfix: fixed parsing of
conanbuildinfo.txtwith package names containing dots.
- Feature:
conan profilecommand has implementedupdate,new,removesubcommands, with--detect, to allow creation, edition and management of profiles. - Feature:
conan package_filescommand now can call recipepackage()method if--build_folderor--source_folderarguments are defined - Feature: graph loading algorithm improved to avoid repeating nodes. Results in much faster times for dense graphs, and avoids duplications of private requirements.
- Feature: authentication based on environment variables. Allows very long processes without tokens being expired.
- Feature: Definition of Visual Studio runtime setting
MDorMDdis now automatic based on build type, not necessary to default in profile. - Feature: Capturing
SystemExitto return user error codes to the system withsys.exit(code) - Feature: Added SKIP_RPATH argument to cmake
conan_basic_setup()function - Feature: Optimized uploads, now uploads will be skipped if there are no changes, irrespective of timestamp
- Feature: Automatic detection of VS 15-2017, via both a
vs150comntoolsvariable, and usingvswhere.exe - Feature: Added NO_OUTPUT_DIRS argument to cmake
conan_basic_setup()function - Feature: Add support for Chocolatey system package manager for Windows.
- Feature: Improved in conan user home and path storage configuration, better error checks.
- Feature:
exportcommand is now able to export recipes without name or version, specifying the full reference. - Feature: Added new default settings, Arduino, gcc-7.2
- Feature: Add conan settings to cmake generated file
- Feature: new
tools.replace_prefix_in_pc_file()function to help with .pc files. - Feature: Adding support for system package tool
pkgutilon Solaris - Feature:
conan remote updatenow allows--insertargument to change remote order - Feature: Add
verbosedefinition toCMakehelper. - Fix:
conan packageworking locally failed if not specified build_folder - Fix: Search when using wildcards for version like
Pkg/*@user/channel - Fix: Change current working directory to the conanfile.py one before loading it, so relative python imports or code work.
- Fix:
package_filescommand now works withshort_pathstoo. - Fix: adding missing require of tested package in test_package/conanfile build() method
- Fix: path joining in
vcvars_commandfor custom VS paths defined via env-vars - Fix: better managing string escaping in CMake variables
- Fix:
ExecutablePathassignment has been removed from thevisual_studiogenerator. - Fix: removing
export_sourcefolder containing exported code, fix issues with read-only files and keeps cache consistency better. - Fix: Accept 100 return code from yum check-update
- Fix: importing *.so files from the
conan newgenerated test templates - Fix: progress bars display when download/uploads are not multipart (reported size 0)
- Bugfix: fixed wrong OSX
DYLD_LIBRARY_PATHvariable for virtual environments - Bugfix:
FileCopierhad a bug that affectedself.copy()commands, changing base reference directory.
- Bugfix: Build requires are now applied correctly to test_package projects.
- Fix: Fixed search command to print an error when --table parameter is used without a reference.
- Fix: install() method of the CMake() helper, allows parallel building, change build folder and custom parameters.
- Fix: Controlled errors in migration, print warning if conan is not able to remove a package directory.
Note
This release introduces a new layout for the local cache, with dedicated export_source folder to store the source code exported with exports_sources feature, which is much cleaner than the old .c_src subfolder. A migration is included to remove from the local cache packages with the old layout.
- Feature: new
conan createcommand that supersedestest_packagefor creating and testing package. It works even without the test_package folder, and have improved management for user, channel. The test_package recipe no longer definesrequires - Feature: new
conan getcommand that display (with syntax highlight) package recipes, and any other file from conan: recipes, conaninfo.txt, manifests, etc. - Feature: new
conan aliascommand that creates a special package recipe, that works like an alias or a proxy to other package, allowing easy definition and transparent management of "using the latest minor" and similar policies. Those special alias packages do not appear in the dependency graph. - Feature: new
conan search --table=file.htmlcommand that will output an html file with a graphical representation of available binaries - Feature: created default profile, that replace the
[settings_default]in conan.conf and augments it, allowing to define more things like env-vars, options, build_requires, etc. - Feature: new
self.user_infomember that can be used inpackage_info()to define custom user variables, that will be translated to general purpose variables by generators. - Feature:
conan removelearned the--outdatedargument, to remove those binary packages that are outdated from the recipe, both from local cache and remotes - Feature:
conan searchlearned the--outdatedargument, to show only those binary packages that are outdated from the recipe, both from local cache and remotes - Feature: Automatic management
CMAKE_TOOLCHAIN_FILEinCMakehelper for cross-building. - Feature: created
conan_api, a python API interface to conan functionality. - Feature: new
cmake.install()method ofCMakehelper. - Feature:
short_pathsfeature now applies also toexports_sources - Feature:
SystemPackageToolnow supports FreeBSD system packages - Feature:
build_requiresnow manage options too, also default options in package recipes - Feature:
conan buildlearned new--package_folderargument, useful if the build system perform the packaging - Feature:
CMakehelper now defines by defaultCMAKE_INSTALL_PREFIXpointing to the current package_folder, socmake.install()can transparently execute the packaging. - Feature: improved command UX with
--cwdarguments to allow define the current directory for the command - Feature: improved
VisualStudioBuildEnvironment - Feature: transfers now show size (MB, KB) of download/uploaded files, and current status of transfer.
- Feature:
conan newnow has arguments to generate CI scripts for Gitlab CI. - Feature: Added
MinRelSizeandRelWithDebInfomanagement inCMakehelper. - Fix: make
mkdir,rmdir,relative_dirsavailable for import fromconansmodule. - Fix: improved detection of Visual Studio default under cygwin environment.
- Fix:
package_filesnow allows symlinks - Fix: Windows installer now includes conan_build_info tool.
- Fix: appending environment variables instead of overwriting them when they come from different origins: upstream dependencies and profiles.
- Fix: made opt-in the check of package integrity before uploads, it was taking too much time, and provide little value for most users.
- Fix: Package recipe linter removed some false positives
- Fix: default settings from conan.conf do not fail for constrained settings in recipes.
- Fix: Allowing to define package remote with
conan remote add_refbefore download/upload. - Fix: removed duplicated BUILD_SHARED_LIBS in test_package
- Fix: add "rhel" to list of distros using yum.
- Bugfix: allowing relative paths in
exportsandexports_sourcesfields - Bugfix: allow custom user generators with underscore
- Feature:
conan newnew arguments to generate Travis-CI and Appveyor files for Continuous Integration - Feature: Profile files with
include()and variable declaration - Feature: Added
RelWithDebInfo/MinRelSizeto cmake generators - Feature: Improved linter, removing false positives due to dynamic conanfile attributes
- Feature: Added
tools.ftp_download()function for FTP retrieval - Feature: Managing symlinks between folders.
- Feature:
conan remote addcommand learned new--insertoption to add remotes in specific order. - Feature: support multi-config in the
SConsgenerator - Feature: support for gcc 7.1+ detection
- Feature:
toolsnow are using globalrequestsandoutputinstances. Proxies will work fortools.download() - Feature:
--jsonparameter added toconan infocommand to create a JSON with thebuild_order. - Fix: update default repos, now pointing to Bintray.
- Fix: printing
outdated from recipealso for remotes - Fix: Fix required slash in
configure_dirofAutoToolsBuildEnvironment - Fix: command
newwith very short names, now errors earlier. - Fix: better error detection for incorrect
Conanfile.pyletter case. - Fix: Improved some cmake robustness using quotes to avoid cmake errors
- BugFix: Fixed incorrect firing of building due to
--buildpatterns error - BugFix: Fixed bug with options incorrectly applied to
build_requiresand crashing - Refactor: internal refactors toward having a python api to conan functionality
- BugFix: Fixed bug while packaging symlinked folders in build folder, and target not being packaged.
- Relaxed OSX requirement of pyopenssl to <18
- Feature: new
build_requiresfield andbuild_requirements()in package recipes - Feature: improved commands (source, build, package, package_files) and workflows for local development of packages in user folders.
- Feature: implemented
no_copy_sourceattribute in recipes to avoid the copy of source code from "source" to "build folder". Created newself.source_folder,self.build_folder,self.package_folderfor recipes to use. - Feature: improved
qmakegenerator with multi-config support, resource directories - Feature: improved exception capture and formatting for all recipe user methods exceptions
- Feature: new
tools.sha256()method - Feature: folder symlinks working now for packages and upload/download
- Feature: added
set_find_paths()tocmake-multi, to set CMake FindXXX.cmake paths. This will work only for single-config build-systems. - Feature: using environment variables for
configure(),requirements()andtest()methods - Feature: added a
pylintrcenvironment variable inconan.confto define a PYLINTRC file with custom style definitions (like indents). - Feature: fixed
vcvarsarchitecture setting - Fix: Make
cacert.pemfolder use CONAN_USER_HOME if existing - Fix: fixed
options=a=boption definition - Fix:
package_filescommand allows--forceargument to overwrite existing instead of failing - BugFix: Package names with underscore when parsing
conanbuildinfo.txt
- Fix: Fixed CMake generator (in targets mode) with linker/exe flags like --framework XXX containing spaces.
- Fix: Fixed regression with usernames starting with non-alphabetical characters, introduced by 0.22.0
- Fix: "-" symbol available again in usernames.
- Fix: Added
futurerequirement to solve an error with pyinstaller generating the Windows installer.
- Feature:
[build_requires]can now be declared inprofilesand apply them to build packages. Those requirements are only installed if the package is required to build from sources, and do not affect its package ID hash, and it is not necessary to define them in the package recipe. Ideal for testing libraries, cross compiling toolchains (like Android), development tools, etc. - Feature: Much improved support for cross-building. Support for cross-building to Android provided, with toolchains installable via
build_requires. - Feature: New
package_filescommand, that is able to create binary packages directly from user files, without needing to definebuild()orpackage()methods in the the recipes. - Feature: command
conan newwith a new--bareoption that will create a minimal package recipe, usable with thepackage_filescommand. - Feature: Improved
CMakehelper, withtest()method, automatic setting of BUILD_SHARED_LIBS, better management of variables, support for parallel compilation in MSVC (via /MP) - Feature: new
tools.msvc_build_command()helper that both sets the Visual vcvars and calls Visual to build the solution. Alsovcvars_commandis improved to return non-empty string even if vcvars is set, for easier concatenation. - Feature: Added package recipe linter, warning for potential errors and also about Python 3 incompatibilities when running from Python 2. Enabled by default can be opt-out.
- Feature: Improvements in HTML output of
conan info --graph - Feature: allow custom path to bash, as configuration and environment variable.
- Fix: Not issuing an unused variable warning in CMake for the CONAN_EXPORTED variable
- Fix: added new
mipsarchitectures and latest compiler versions to default settings.yml - Fix: Unified username allowed patterns to those used in package references.
- Fix: hardcoded vs15 version in tools.vcvars
- BugFix: Clean crash and improved error messages when manifests mistmatch exists in conan upload.
- Bugfix: virtualenv generator quoting environment variables in Windows.
- BugFix: Fixed missing dependencies in
AutoToolsBuildEnvironment - BugFix: Escaping single quotes in html graph of
conan info --graph=file.html - BugFix: Fixed loading of auth plugins in conan_server
- BugFix: Fixed
visual_studiogenerator creating XML with dots.
- Feature:
conan info --graphor--graph=file.htmlwill generate a dependency graph representation in dot or html formats. - Feature: Added better support and tests for Solaris Sparc.
- Feature: custom authenticators are now possible in
conan_serverwith plugins. - Feature: extended
conan infocommand with path information and filter by packages. - Feature: enabled conditional binary packages removal with
conan removewith query syntax - Feature: enabled generation and validation of manifests from
test_package. - Feature: allowing
optionsdefinitions in profiles - Feature: new
RunEnvironmenthelper, that makes easier to run binaries from dependent packages - Feature: new
virtualrunenvgenerator that activates environment variable for execution of binaries from installed packages, without requiringimportsof shared libraries. - Feature: adding new version modes for ABI compatibility definition in
package_id(). - Feature: Extended
conan newcommand with new option forexports_sourcesexample recipe. - Feature:
CMakehelper defining parallel builds for gcc-like compilers via--jN, allowing user definition with environment variable and in conan.conf. - Feature:
conan profilecommand now show profiles in alphabetical order. - Feature: extended
visual_studiogenerator with more information and binary paths for execution with DLLs paths. - Feature: Allowing relative paths with $PROFILE_DIR place holder in
profiles - Fix: using only file checksums to decide for modified recipe in remote, for possible concurrent builds & uploads.
- Fix: Improved
--buildmodes management, with better checks and allowing multiple definitions and mixtures of conditions - Fix: Replaced warning for non-matching OS to one message stating the cross-build
- Fix: local
conan sourcecommand (working in user folder) now properly executes the equivalent ofexportsfunctionality - Fix: Setting command line arguments to cmake command as CMake flags, while using the TARGETS approach. Otherwise, arch flags like -m32 -m64 for gcc were not applied.
- BugFix: fixed
conan importsdestination folder issue. - BugFix: Allowing environment variables with spaces
- BugFix: fix for CMake with targets usage of multiple flags.
- BugFix: Fixed crash of
cmake_multigenerator for "multi-config" packages.
- Fix: Added opt-out for
CMAKE_SYSTEM_NAMEautomatically added when cross-building, causing users providing their own cross-build to fail - BugFix: Corrected usage of
CONAN_CFLAGSinstead ofCONAN_C_FLAGSin cmake targets
- Fix: Regression of
visual_studio``generator using ``%(ExecutablePath)instead of$(ExecutablePath) - Fix: Regression for
--build=outdated --build=Pkginstall pattern
- Fix: Disabled the use of cached settings and options from installed
conaninfo.txt - Fix: Revert the use of quotes in
cmakegenerator for flags. - Fix: Allow comments in artifacts.properties
- Fix: Added missing commit for CMake new helpers
NOTE: It is important that if you upgrade to this version, all the clients connected to the same remote, should upgrade too. Packages created with conan>=0.20.0 might not be usable with conan older conan clients.
- Feature: Largely improved management of environment variables, declaration in
package_info(), definition in profiles, in command line, per package, propagation to consumers. - Feature: New build helpers
AutotoolsBuildEnvironment,VisualStudioBuildEnvironment, which deprecateConfigureEnvironment, with much better usage of environment variables - Feature: New
virtualbuildenvgenerator that will generate a composable environment with build information from installed dependencies. - Feature: New
build_id()recipe method that allows to define logic to build once, and package multiple times without building. E.g.: build once both debug and release artifacts, then package separately. - Feature: Multi-config packages. Now packages can provide multi-configuration packages, like
both debug/release artifacts in the same package, with
self.cpp_info.debug.libs = [...]syntax. Not restricted to debug/release, can be used for other purposes. - Feature: new
conan configcommand to manage, edit, displayconan.confentries - Feature: :ref:`Improvements<cmake_reference>` to
CMakebuild helper, now it hasconfigure()andbuild()methods for common operations. - Feature: Improvements to
SystemPackageToolwith detection of installed packages, improved implementation, installation of multi-name packages. - Feature: Unzip with
tools.unzipmaintaining permissions (Linux, OSX) - Feature:
conan infocommand now allows profiles too - Feature: new tools
unix_path(),escape_windows_cmd(),run_in_windows_bash(), useful for autotools projects in Win/MinGW/Msys - Feature: new context manager
tools.chdir, to temporarily change directory. - Feature: CMake using
CMAKE_SYSTEM_NAMEfor cross-compiling. - Feature: Artifactory build-info extraction from traces
- Feature: Attach custom headers to artifacts uploads with an artifacts.properties file.
- Feature: allow and copy symlinks while
conan export - Fix: removing quotes in some cmake variables that were generating incorrect builds
- Fix: providing better error messages for non existing binaries, with links to the docs
- Fix: improved error messages if
tools.patchfailed - Fix: adding
resdirstocpp_infopropagated information, and cmake variables, for directories containing resources and other data. - Fix: printing error messages if a
--buildpolicy doesn't match any package - Fix: managing VS2017 by
tools. Still the manual definition ofvs150comntoolsrequired. - Bug fix: crashes when not supported characters were dumped to terminal by logger
- Bug fix: wrong executable path in Visual Studio generator
- Fix: backward compatibility for new environment variables. New features to be introduced in 0.20
will produce that
conaninfo.txtwill not be correctly parsed, and then package would be "missing". This will happen for packages created with 0.20, and consumed with older than 0.19.3
NOTE: It is important that you upgrade at least to this version if you are using remotes with packages that might be created with latest conan releases (like conan.io).
- Bug fix: Fixed bug with remotes behind proxies
- Bug fix: Fixed bug with
exports_sourcesfeature and nested folders
- Bug fix: Fixed issue with
conan copyfollowed byconan uploaddue to the newexports_sourcesfeature.
- Feature:
exports_sourcesallows to snapshot sources (likeexports) but retrieve them strictly when necessary, to build from sources. This can largely improve install times for package recipes containing sources - Feature: new configurable tracer able to create structured logs of conan actions: commands, API calls, etc
- Feature: new logger for
self.runactions, able to log information from builds and other commands to files, that can afterwards be packaged together with the binaries. - Feature: support for Solaris SunOS
- Feature:
Versionhelper improved withpatch, pre, buildcapabilities to handle1.3.4-alpha2+build1versions - Feature: compress level of tgz is now configurable via
CONAN_COMPRESSION_LEVELenvironment variable, default 9. Reducing it can lead to faster compression times, at the expense of slightly bigger archives - Feature: Add powershell support for virtualenv generator in Windows
- Feature: Improved
system_requirements()raising errors when failing, retrying if not successful, being able to execute in user space for local recipes - Feature: new cmake helper macro
conan_target_link_libraries() - Feature: new cmake
CONAN_EXPORTEDvariable, can be used in CMakeLists.txt to differentiate building in the local conan cache as package and building in user space - Fix: improving the caching of options from
conan installin conaninfo.txt and precedence. - Fix: conan definition of cmake output dirs has been disabled for
cmake_multigenerator - Fix:
imports()now uses environment variables at "conan install" (but not at "conan imports" yet) - Fix:
conan_info()method has been renamed topackage_id(). Backward compatibility is maintained, but it is strongly encouraged to use the new name. - Fix:
conan_find_librariesnow use the NO_CMAKE_FIND_ROOT_PATH parameter for avoiding issue while cross-compiling - Fix: disallowing duplicate URLs in remotes, better error management
- Fix: improved error message for wildcard uploads not matching any package
- Fix: remove deprecated
platform.linux_distribution(), using new "distro" package - Bugfix: fixed management of
VerifySSLparameter for remotes - Bugfix: fixed misdetection of compiler version in conanbuildinfo.cmake for apple-clang
- Bugfix: fixed trailing slash in remotes URLs producing crashes
- Refactor: A big refactor has been do to
options. Nested options are no longer supported, andoption.suboptionwill be managed as a single string option.
This has been a huge release with contributors of 11 developers. Thanks very much to all of them!
- Bug Fix: Handling of transitive private dependencies in modern cmake targets
- Bug Fix: Missing quotes in CMake macro for modern cmake targets
- Bug Fix: Handling LINK_FLAGS in cmake modern targets
- Bug Fix: Environment variables no propagating to test project with test_package command
- Feature: uploads and downloads with retries on failures. This helps to avoid having to fully rebuild on CI when a network transfer fails
- Feature: added SCons generator
- Feature: support for Python 3.6, with several fixes. Added Python 3.6 to CI.
- Feature: show package dates in
conan infocommand - Feature: new
cmake_multigenerator for multi-configuration IDEs like Visual Studio and XCode - Feature: support for Visual Studio 2017, VS-15
- Feature: FreeBSD now passes test suite
- Feature:
conan uploadshowing error messages or URL of remote - Feature: wildcard or pattern upload. Useful to upload multiple packages to a remote.
- Feature: allow defining settings as environment variables. Useful for use cases like dockerized builds.
- Feature: improved
--helpmessages - Feature: cmake helper tools to launch conan directly from cmake
- Added code coverage for code repository
- Fix: conan.io badges when containing dash
- Fix: manifests errors due to generated .pyc files
- Bug Fix: unicode error messages crashes
- Bug Fix: duplicated build of same binary package for private dependencies
- Bug Fix: duplicated requirement if using version-ranges and
requirements()method.
- Bug Fix: ConfigureEnvironment helper ignoring libcxx setting. #791
- Bug Fix: conan install --all generating corrupted packages. Thanks to @yogeva
- Improved case sensitive folder management.
- Fix: appveyor links in README.
- Feature: support for modern cmake with cmake
INTERFACE IMPORTEDtargets defined per package - Feature: support for more advanced queries in search.
- Feature: new
profile list|showcommand, able to list or show details of profiles - Feature: adding preliminary support for FreeBSD
- Feature: added new
descriptionfield, to document package contents. - Feature: generation of imports manifest and
conan imports --undofunctionality to remove imported files - Feature: optional SSL certificate verification for remotes, to allow self signed certificates
- Feature: allowing custom paths in profiles, so profiles can be easily shared in teams, just inside the source repository or elsewhere.
- Feature: fields
userandchannelnow available in conan recipes. That allows to declare requirements for the same user/channel as the current package. - Feature: improved conan.io package web, adding description.
- Fix: allow to modify cmake generator in
CMakehelper class. - Fix: added
stripparameter totools.patch()utility - Fix: removed unused dependency to Boto
- Fix: wrong line endings in Windows for conan.conf
- Fix: proper automatic use of
txtandenvgenerators intest_package - Bug fix: solved problem when uploading python packages that generated .pyc at execution
- Bug fix: crash when duplicate requires were declared in conanfile
- Bug fix: crash with existing imported files with symlinks
- Bug fix: options missing in "copy install command to clipboard" in web
- Solved bug with
test_packagewith arguments, like scopes.
Upgrade: The --build=outdated feature had a change in the hash computation, it might report
outdated binaries from recipes. You can re-build the binaries or ignore it (if you haven't changed
your recipes without re-generating binaries)
- Feature: version ranges. Conan now supports defining requirements with version range expressions
like
Pkg/[>1.2,<1.9||1.0.1]@user/channel. Check the :ref:`version ranges reference <version_ranges>` for details - Feature: decoupled
importsfrom normal install. Nowconan install --no-importsskips the imports section. - Feature: new
conan importscommand that will execute the imports section without running install - Feature: overriding settings per package. Now it is possible to specify individual settings
for each package. This can be specified both in the command line and in
profiles - Feature: environment variables definition in the command line, global and per package. This
allows to define specific environment variables as the compiler (CC, CXX) for a specific package.
These environment variables can also be defined in
profiles. Check :ref:`profiles reference <profiles>` - Feature: Now conan files copies handle symlinks, so files are not duplicated. This will
save some space and improve download speed in some large packages. To enable it, use
self.copy(..., links=True) - Fix: Enabling correct use of MSYS in Windows, by using the Windows
C:/...path instead of the MSYS ones - Fix: Several fixes in
conan search, both local and in remotes - Fix: Manifests line endings and order fix, and hash computation fixed (it had wrong ordering)
- Fix: Removed http->https redirection in conan_server that produced some issues for SSL reversed proxies
- Fix: Taking into account "ANY" definition of settings and options
- Fix: Improved some error messages and failures to encode OS errors with unicode characters
- Update: added new arch
ppc64to default settings - Update: updated python-requests library version
- Fix: Using
generator()instead of compiler to decide on cmake multi-configuration for Ninja+cl builds - Improved and completed documentation
Upgrade: If you were using the short_paths feature in Windows for packages with long paths, please
reset your local cache. You could manually remove packages or just run conan remove "*"
- Feature: New
--build=outdatedfunctionality, that allows to build the binary packages for those dependencies whose recipe has been changed, or if the binary is not existing. Each binary package stores a hash of the recipe to know if they have to be regenerated (are outdated). This information is also provided in theconan search <ref>command. Useful for package creators and CI. - Feature: Extended the
short_pathsfeature for Windows path limit to thepackagefolder, so package with very long paths, typically in headers in nested folder hierarchies are supported. - Feature: New
tool.build_sln_command()helper tobuild()Microsoft Visual Studio solution (.sln) projects - Feature: Extended the
sourceandpackagecommand, so together withbuildthey can be fully executed in a user folder, as a convenience for package creation and testing. - Feature: Extending the scope of
tools.pythonpathto work in local commands too - Improved the parsing of
profilesand better error messages - Not adding
-scompiler flag for clang, as it doesn't use it. - Automatic generation of
conanenv.txtin local cache, warnings if using local commands and noconanbuildinfo.txtand noconanenv.txtare present to cache the information form install - Fix: Fixed bug when using empty initial requirements (
requires = "") - Fix: Added
globhidden import to pyinstaller - Fix: Fixed minor bugs with
short_pathsas local search not listing packages - Fix: Fixed problem with virtual envs in Windows with paths separator (using / instead of )
- Fix: Fixed parsing of conanbuildinfo.txt, so the root folder for each dependency is available in local commands too
- Fix: Fixed bug in
test_packagewith the test project using therequirements()method.
- Fixed bug with short_paths feature in windows.
- Improved error messages for non-valid profile test files.
- Remove downloaded tgz package files from remotes after decompress them.
- Fixes bug with install --all and short_paths
- Feature: Added profiles, as user predefined settings and environment variables (as CC and CXX
for compiler paths). They are stored in files in the conan cache, so they can be easily edited,
added, and shared. Use them with
$ conan install --profile=name - Feature:
short_pathsfeature for Windows now also handle long paths for the final package, in case that a user library has a very long final name, with nested subfolders. - Feature: Added
tools.cpu_count()as a helper to retrieve the number of cores, so it can be used in concurrent builds - Feature: Detects cycles in the dependency graph, and raise error instead of exhausting recursion limits
- Feature: Conan learned the
--werroroption that will raise error and stop installation under some cases treated as warnings otherwise: Duplicated dependencies, or dependencies conflicts - Feature: New
envgenerator that generates a text file with the environment variables defined by dependencies, so it can be stored. Such file is parsed by$ conan buildto be able to use such environment variables forself.deps_env_infotoo, in the same way it uses thetxtgenerator to load variables forself.deps_cpp_info. - Fix: Do not print progress bars when output is a file
- Fix: Improved the local conan search, using options too in the query
conan search -q option=value - Fix: Boto dependency updated to 2.43.0 (necessary for ArchLinux)
- Fix: Simplified the
conan packagecommand, removing unused and confusing options, and more informative messages about errors and utility of this command. - Fix: More fixes and improvements on
ConfigureEnvironment, mainly for Windows - Fix: Conan now does not generate a
conanbuildinfo.txtfile when doing$ conan install <PkgRef> - Bug fix: Files of a package recipe are "touched" to update their timestamps to current time when retrieved, otherwise some build systems as Ninja can have problems with them.
- Bug fix:
qmakegenerator now uses quotes to handle paths with spaces - Bug fix: Fixed
OSInfoto return the short distro name instead of the long one. - Bug fix: fixed transitivy of
`privatedependencies
This minor solves some problems with ConfigureEnvironment, mainly for Windows, but also fixes
other things:
- Fixed concatenation problems in Windows for several environment variables. Fixed problems with path with spaces
- A batch file is created in Windows to be called, as
if definedstructures doesn't seem to work in the command line. - The
vcvars_commandfromtoolsnow checks the Visual Studio environment variable, if it is already set, it will check it with the current project settings, throwing an error if not matching, returning an empty command if matches. - Added a
compile_flagsproperty toConfigureEnvironment, to be passed in the command line to the compiler, but not as environment variables - Added
definesto environment for nix systems, it was not being handled before - Added new tests, compiling simple projects and diamond dependencies with cmake, cl (msvc), gcc (gcc in linux, mingw in win)
and clang (OSX), for a better coverage of the
ConfigureEnvironmentfunctionality. - Fixed wrong
CPP_INCLUDE_PATH, it is nowCPLUS_INCLUDE_PATH
IMPORTANT UPGRADE ISSUE: There was a small error in the computation of binary packages IDs, that
has been addressed by conan 0.13. It affects to third level (and higher) binary packages, i.e. A
and B in A->B->C->D, which binaries must be regenerated for the new hashes. If you don't plan
to provide support for older conan releases (<=0.12), which would be reasonable, you should remove
all binaries first (conan remove -p, works both locally and remotely), then re-build your binaries.
Features:
- Streaming from/to disk for all uploads/downloads. Previously, this was done for memory, but conan started to have issues for huge packages (>many hundreds Mbs), that sometimes could be alleviated using Python 64 bits distros. This issues should be alleviated now
- New security system that allows capturing and checking the package recipes and binaries manifests into user folders (project or any other folder). That ensures that packages cannot be replaced, hacked, forged, changed or wrongly edited, either locally or in any remote server, without notice.
- Possible to handle and reuse python code in recipes. Actually, conan can be used as a package
manager for python, by adding the package path to
env_info.PYTHONPATH. Useful if you want to reuse common python code between different package recipes. - Avoiding re-compress the tgz for packages after uploads if it didn't change.
- New command
conan sourcethat executes thesource()method of a given conanfile. Very useful for CI, if desired to run in parallel the construction of different binaries. - New propagation of
cpp_info, so it now allows for capturing binary packages libraries with newcollect_libs()helper, and access to created binaries to compute thepackage_info()in general. - Command
test_packagenow allows the--updateoption, to automatically update dependencies. - Added new architectures for
ppc64leand detection forAArch64 - New methods for defining requires effect over binary packages ID (hash) in
conan_info() - Many bugs fixes: error in
tools.downloadwith python 3, restore correct prompt in virtualenvs, bug if removing an option inconfig_options(), setup.py bug...
This release has contributions from @tru, @raulbocanegra, @tivek, @mathieu, and the feedback of many other conan users, thanks very much to all of them!
- Major changes to search api and commands. Decoupled the search of package recipes, from the search of binary packages.
- Fixed bug that didn't allow to
exportoruploadpackages with settings restrictions if the restrictions didn't match the host settings - Allowing disabling color output with
CONAN_COLOR_DISPLAY=0environment variable, or to configure color schema for light console backgrounds withCONAN_COLOR_DARK=1environment variable - Imports can use absolute paths, and files copied from local conan cache to those paths will not
be removed when
conan install. Can be used as a way to install machine-wise things (outside conan local cache) - More robust handling of failing transfers (network disconnect), and inconsistent status after such
- Large internal refactor for storage managers. Improved implementations and decoupling between server and client
- Fixed slow
conan removefor caches with many packages due to slow deletion of empty folders - Always allowing explicit options scopes,
- o Package:option=valueas well as the implicit-o option=valuefor currentPackage, for consistency - Fixed some bugs in client-server auth process.
- Allow to extract
.tarfiles intools.unzip() - Some helpers for
conan_info(), asself.info.requires.clear()and removal of settings and options
- New error reporting for failures in conanfiles, including line number and offending line, much easier for package creators
- Removed message requesting to create an account in
conan.iofor other remotes - Removed localhost:9300 remote that was added by default mostly for demo purposes. Clarified in docs.
- Fixed usernames case-sensitivity in conan_server, due to ConfigParser it was forcing lowercase
- Handling unicode characters in remote responses, fixed crash
- Added new compilers gcc 6.2, clang 8.0 to the default
settings.yml - Bumped cryptography, boto and other conan dependencies, mostly for ArchLinux compatibility and new OSX security changes
- New solution for the path length limit in Windows, more robust and complete. Package conanfile.py
just have to declare an attribute
short_paths=Trueand everything will be managed. The old approach is deprecated and totally removed, so no shorts_paths.conf file is necessary. It should fix also the issues with uploads/retrievals. - New
virtualenvgenerator that generatesactivateanddeactivatescripts that set environment variables in the current shell. It is very useful, for example to install tools (like CMake, MinGW) with conan packages, so multiple versions can be installed in the same machine, and switch between them just by activating such virtual environments. Packages for MinGW and CMake are already available as a demo - ConfigureEnvironment takes into account environment variables, defined in packages in new
env_info, which is similar tocpp_infobut for environment information (like paths). - New per-package build_policy, which can be set to
alwaysormissing, so it is not necessary to create packages or specify the--buildparameter in command line. Useful for example in header only libraries or to create packages that always get the latest code from a branch in a github repository. - Command
conan test_packagenow executes by default aconan exportwith smarter package reference deduction. It is introduced as opt-out behavior. - Conan
exportcommand avoids copyingtest_package/buildtemporary files in case ofexport=* - Now,
package_info()allows absolute paths inincludedir,libdirsandbindirs, so wrapper packages can be defined that use system or manually installed libraries. - LDFLAGS in
ConfigureEnvironmentmanagement of OSX frameworks. - Options allow the
ANYvalue, so such option would accept any value. For example a commit of a git repository, useful to create packages that can build any specific commit of a git repo. - Added gcc 5.4 to the default settings, as well as MinGW options (Exceptions, threads...)
- Command
conan infolearned a new option to output the packages from a project dependency tree that should be rebuilt in case of a modification of a certain package. It outputs a machine readable ordered list of packages to be built in that order. Useful for CI systems. - Better management of incomplete, dirty or failed
sourcedirectories (e.g. in case of a user interrupting with Ctrl+C a git clone inside thesource()method. - Added tools for easier detection of different OS versions and distributions, as well as command
wrappers to install system packages (apt, yum). They use
sudovia a new environment variable CONAN_SYSREQUIRES_SUDO, so using sudo is opt-in/out, for users with different sudo needs. Useful forsystem_requirements() - Deprecated the
config()method (still works, for backwards compatibility), but has been replaced by aconfig_options()to modify options based on settings, and aconfigure()method for most use cases. This removes a nasty behaviour of having theconfig()method called twice with side effects. - Now, running a
conan install MyLib/0.1@user/channelto directly install packages without any consuming project, is also able to generate files with the-goption. Useful for installing tool packages (MinGW, CMake) and generatevirtualenvs. - Many small fixes and improvements: detect compiler bug in Py3, search was crashing for remotes, conan new failed if the package name had a dash, etc.
- Improved some internal duplications of code, refactored many tests.
This has been a big release. Practically 100% of the released features are thanks to active users feedback and contributions. Thanks very much again to all of them!
- conan new command, that creates conan package conanfile.py templates, with a
test_packagepackage test (-t option), also for header only packages (-i option) - Definition of scopes. There is a default dev scope for the user project, but any other scope (test, profile...) can be defined and used in packages. They can be used to fire extra processes (as running tests), but they do not affect the package binares, and are not included in the package IDs (hash).
- Definition of dev_requires. Those are requirements that are only retrieved when the package is in dev scope, otherwise they are not. They do not affect the binary packages. Typical use cases would be test libraries or build scripts.
- Allow shorter paths for specific packages, which can be necessary to build packages with very long path names (e.g. Qt) in Windows.
- Support for bzip2 and gzip decompression in
tools - Added
package_folderattribute to conanfile, so thepackage()method can for example callcmake installto create the package. - Added
CONAN_CMAKE_GENERATORenvironment variable that allows to override theCMakedefault generator. That can be useful to build with Ninja instead of the default Unix Makefiles - Improved
ConfigureEnvironmentwith include paths in CFLAGS and CPPFLAGS, and fixed bug. - New
conan user --cleanoption, to completely remove all user data for all remotes. - Allowed to raise
Exceptionsinconfig()method, so it is easier for package creators to raise under non-supported configurations - Fixed many small bugs and other small improvements
As always, thanks very much to all contributors and users providing feedback.
- Fixed download bug that made it specially slow to download, even crash. Thanks to github @melmdk for fixing it.
- Fixed cmake check of CLang, it was being skipped
- Improved performance. Check for updates has been removed from install, made it opt-in in
conan infocommand, as it was very slow, seriously affecting performance of large projects. - Improved internal representation of graph, also improves performance for large projects.
- Fixed bug in
conan install --update
- Python 3 "experimental" support. Now the main conan codebase is Python 2 and 3 compatible. Python 2 still the reference platform, Python 3 stable support in next releases.
- Create and share your own custom generators for any build system or tool. With "generator packages", you can write a generator just as any other package, upload it, modify and version it, etc. Require them by reference, as any other package, and pull it into your projects dynamically.
- Premake4 initial experimental support via a generator package. Check https://www.conan.io/source/PremakeGen/0.1/memsharded/testing
- Very large re-write of the documentation. New "creating packages" sections with in-source and out-source explicit examples. Please read it! :)
- Improved
conan test. Renamedtesttotest_packageboth for the command and the folder, but backwards compatibility remains. Custom folder name also possible. Adapted test layout might require minor changes to your package test, automatic warnings added for your convenience. - Upgraded pyinstaller to generate binary OS installers from 2.X to 3.1
conan searchnow has command line options:, less verbose, verbose, extra verbose- Added variable with full list of dependencies in conanbuildinfo.cmake
- Several minor bugfixes (check github issues)
- Improved
conan userto manage user login to multiple remotes
- Fixed linker problems with the new apple-clang 7.3 due to libraries with no setted timestamp.
- Added apple-clang 7.3 to default settings
- Fixed default libcxx for apple-clang in auto detection of base conan.conf
- New conan remote command to manage remotes. Redesigned remotes architecture, now allows
to work with several remotes in a more consistent, powerful and "git-like" way. New remotes
registry keeps track of the remote of every installed package, and this information is shown
in
conan infocommand too. Also, it keeps different user logins for different remotes, to improve support in corporate environments running in-house servers. - New update functionality. Now it is possible to
conan install --updateto update packages that became obsolete because new ones were uploaded to the corresponding remote. Conan commands as install and info show information about the status of the local packages compared with the remote ones. In this way, using latest versions during development is much more natural. - Added new compiler.libcxx setting in order to support the different c++ standard libraries.
It can take libstdc++, libstdc++11 or libc++ values to take into account different standard
libraries for modern gcc and clang compilers. It is also possible to remove not needed settings,
like this one in pure C projects, with the new syntax:
del self.settings.compiler.libcxx - Conan virtual environment: Define a custom conan directory with CONAN_USER_HOME env variable,
and have a per project or per workspace storage for your dependencies. So you can isolate your
dependencies and even bundle them within your project, by just setting the CONAN_USER_HOME
variable to your
<project>/depsfolder, for example. This also improves support for continuous integration CI systems, in which many builds from different users could be run in parallel. - Better conanfile download method. More stable and now checks (opt-out) the ssl certificates.
- Lots of improvements: Increased library name length limit, Improved and cleaner output messages.
- Fixed several minor bugs: removing empty folders, case sensitive exports, arm settings detection.
- Introduced the concept of "package recipe" that refers to conanfile.py and exported files.
- Improved settings display in web, with new "copy install command to clipboard" to assist in installing packages discovered in web.
- The OSX installer, problematic with latest OSX releases, has been deprecated in favour of homebrew and pip install procedures.
- Custom conanfile names are allowed for developing. With
--fileoption you can define the file you want to use, allowing for.conaninfo.txtor having multipleconanfile_dev.py,conanfile_test.pybesides the standardconanfile.pywhich is used for sharing the package. Inheritance is allowed, e.g.conanfile_dev.pymight extend/inherit fromconanfile.py. - New
conan copycommand that can be used to copy/rename packages, promote them between channels, forking other users packages. - New
--alland--packageoptions forconan installthat allows to download one, several, or all package configurations for a given reference. - Added
patch()tool to easily patch sources if necessary. - New qmake and qbs generators
- Upload of conanfile exported files is also tgz'd, allowing fast upload/downloads of full sources if desired, avoiding retrieval of sources from externals sources.
conan infocommand improved showing info of current project too- Output of
run()can be redirected to buffer string for processing, or even removed. - Added proxy configuration to conan.conf for users behinds proxies.
- Large improvements in commands output, prefixed with package reference, and much clear.
- Updated settings for more versions of gcc and new arm architectures
- Treat dependencies includes as SYSTEM in cmake, so no warnings are raised
- Deleting source folder after
conan exportso no manual removal is needed - Normalizing to CRLF generated user files in Win
- Better detection and checks for compilers as VS, apple-clang
- Fixed CMAKE_SHARED_LINKER_FLAGS typo in cmake files
- Large internal refactor in generators
- New cmake variables in cmake generator to make FindPackage work better thanks to the underlaying FindLibrary. Now many FindXXX.cmake work "as-is" and the package creator does not have to create a custom override, and consumers can use packages transparently with the originals FindXXX.cmakes
- New "conan info" command that shows the full dependency graph and details (license, author, url, dependants, dependencies) for each dependency.
- New environment helper with a ConfigureEnvironment class, that is able to translate conan information to autotools configure environment definition
- Relative importing from conanfiles now is possible. So if you have common functionality between different packages, you can reuse those python files by importing them from the conanfile.py. Note that export="..." might be necessary, as packages as to be self-contained.
- Added YouCompleteMe generator for vim auto-completion of dependencies.
- New "conanfile_directory" property that points to the file in which the conanfile.py is located. This helps if using the conanfile.py "build" method to build your own project as a project, not a package, to be able to use any workflow, out-of-source builds, etc.
- Many edits and improvements in help, docs, output messages for many commands.
- All cmake syntax in modern lowercase
- Fixed several minor bugs: gcc detection failure when gcc not installed, missing import, copying source->build failing when symlinks
- New cmake functionality allows package creators to provide cmake finders, so that package consumers can use their CMakeLists.txt with typical FindXXX.cmake files, without any change to them. CMake CONAN_CMAKE_MODULES_PATH added, so that package creators can provide any additional cmake scripts for consumers.
- Now it is possible to generate out-of-source and multiple configuration installations for the
same project, so you can switch between them without having to
conan installagain. Check :ref:`the new workflows<workflows>` - New qmake generator (thanks @dragly)
- Improved removal/deletion of folders with shutil.rmtree, so
conan removecommands and other processes requiring deletion of folders do not fail due to permissions and require manual deletion. This is an improvement, especially in Win. - Created
pippackage, so conan can be installed via:pip install conan - Released
pyinstallercode for the creation of binaries from conan python source code. Distros package creators can create packages for the conan apps easily from those binaries. - Added md5, sha1, sha256 helpers in
tools, so external downloads fromconanfile.pyfilessource()can be checked. - Added latest gcc versions to default
settings.yml - Added CI support for conan development: travis-ci, appveyor
- Improved human-readability for download progress, help messages.
- Minor bug fixes