Skip to content

Release/1.13.0 #1109

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 59 commits into from
Mar 8, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
b1e9ce5
Premake conan_basic_setup() and example update (#998)
danimtb Jan 3, 2019
13e74d5
add notes about credentials being removed from URL in SCM/url attribu…
jgsogo Jan 3, 2019
e70da76
Included settings.yml content with new archs (#1001)
danimtb Jan 10, 2019
3f20c7d
Adding documentation in tools.rst to the feature suggested in https:/…
alacasta Jan 10, 2019
26b1844
Merge branch 'master' into develop
danimtb Jan 10, 2019
89e3f33
Update attributes.rst (#1007)
climblinne Jan 10, 2019
31bb544
add Note about „README.md“ and „LICENSE.txt“ (#1016)
NoWiseMan Jan 15, 2019
4d9d4bc
- document ctest variables (#1018)
SSE4 Jan 15, 2019
c5dd659
- document CONAN_CACHE_NO_LOCKS (#1019)
SSE4 Jan 16, 2019
9d105d5
- document MSBuild verbosity (#1012)
SSE4 Jan 16, 2019
c572207
- add clarification for unset behavior
SSE4 Jan 17, 2019
29791dd
- document CONAN_CMAKE_PROGRAM
SSE4 Jan 17, 2019
17717f6
Merge pull request #1025 from SSE4/conan_cmake_program
lasote Jan 17, 2019
03a89bf
Merge pull request #1023 from SSE4/environment_append_unset
lasote Jan 17, 2019
f13a357
Add full reference for build policies (#1017)
uilianries Jan 18, 2019
6bba8fe
Document method get_tag() for both Git and SVN (#1020)
danimtb Jan 18, 2019
e9baf8a
CMake default generator (#1026)
uilianries Jan 18, 2019
1ad20f7
- update premake generator (#1032)
SSE4 Jan 19, 2019
5e949b1
Update premake generator (#1034)
SSE4 Jan 21, 2019
b6ac5c7
Add conanfile.txt section about comments (#1033)
mloskot Jan 21, 2019
37f83b7
profile composition (#1036)
lasote Jan 21, 2019
267203c
Update make generator reference and integration with CXXFLAGS and *DI…
danimtb Jan 21, 2019
0b1e883
merged master
memsharded Jan 23, 2019
cce90e8
small example how to use template file in custom generators (#1043)
memsharded Jan 23, 2019
dd5074f
Document editable packages (#1009)
jgsogo Jan 24, 2019
af14656
fix typo
memsharded Jan 24, 2019
25a3fe8
Minor changes to documentation of editable packages (#1046)
jgsogo Jan 25, 2019
f0a266a
install-ref docs (#1045)
memsharded Jan 25, 2019
92bbc01
Split folders into real attributes (#1041)
danimtb Jan 25, 2019
6209d2e
- document definitions parameter for MSBuild/build_sln_command (#1024)
SSE4 Jan 28, 2019
6feaf50
Add system reqs description (#1038)
uilianries Jan 29, 2019
42713d7
Indicate the flags set in MSBuild by each parameter (#1040)
danimtb Jan 29, 2019
3afb26d
Documentation for JSON output of 'conan info' command (#1050)
jgsogo Jan 30, 2019
7dc6f5a
Document toolset
lasote Jan 30, 2019
b891347
Merge pull request #1052 from lasote/feature/document_toolset
lasote Jan 30, 2019
7207bba
Merge branch 'master' into develop
memsharded Feb 4, 2019
5475921
Fix removed links (#1066)
danimtb Feb 7, 2019
f4b6209
rephrase (#1065)
jgsogo Feb 7, 2019
45bfd2b
Merge branch 'master' into develop
memsharded Feb 18, 2019
9aa06d1
conan-io/conan#4265 Revert default cmake gen on Windows (#1072)
uilianries Feb 18, 2019
00e8b43
Adapt docs to new preferred behaviour in 'conan get' command (#1070)
jgsogo Feb 18, 2019
fab3aca
Fix code snippets (#1082)
piponazo Feb 19, 2019
4889d17
Merge branch 'master' into develop
memsharded Feb 22, 2019
5c69cdb
Merge remote-tracking branch 'origin/master' into develop
lasote Feb 26, 2019
80f694c
Add <package>_VERSION output variable to cmake_find_package generator…
Manu343726 Feb 26, 2019
523bea1
All references to cpp_info.cppflags are being changed to cxxflags (#1…
jgsogo Feb 27, 2019
2e532fe
get_safe (#1089)
memsharded Mar 5, 2019
e1d7671
armv5 archs (#1090)
lasote Mar 5, 2019
e7927da
Document with_login paramenter for run_in_windows_bash() (#1103)
danimtb Mar 6, 2019
21f6242
Docs for Jinja2 in layout files (editable packages) (#1093)
jgsogo Mar 6, 2019
3e6f4a4
Revisions Docs (#1105)
lasote Mar 6, 2019
30c233c
documentation for workspaces (#1086)
memsharded Mar 6, 2019
a1c7711
Adds CMAKE_BUILD_WITH_INSTALL_RPATH to RPATH how to (#1094)
danimtb Mar 6, 2019
bf12ce6
Changelog (#1107)
lasote Mar 8, 2019
9c9f7af
explain package_id_modes WIP (#1106)
memsharded Mar 8, 2019
6af31d8
Merge remote-tracking branch 'origin/master' into develop
lasote Mar 8, 2019
f1cad2e
1.13.0
lasote Mar 8, 2019
5445905
Redirects
lasote Mar 8, 2019
5428414
vs17
lasote Mar 8, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,41 @@ Check https://github.com/conan-io/conan for issues and more details about develo

.. important::

Conan 1.12 shouldn't break any existing 1.0 recipe or command line invocation. If it does, please submit a report on GitHub.
Conan 1.13 shouldn't break any existing 1.0 recipe or command line invocation. If it does, please submit a report on GitHub.
Read more about the :ref:`Conan stability commitment<stability>`.


1.13.0 (07-Mar-2019)
--------------------

- Feature: Added with_login parameter to tools.run_in_windows_bash() `#4673 <https://github.com/conan-io/conan/pull/4673>`_ . Docs `here <https://github.com/conan-io/docs/pull/1103>`__
- Feature: The `deb` and `windows` Conan installers now use Python 3. `#4663 <https://github.com/conan-io/conan/pull/4663>`_
- Feature: Allow configuring in *conan.conf* a different default ``package_id`` mode. `#4644 <https://github.com/conan-io/conan/pull/4644>`_ . Docs `here <https://github.com/conan-io/docs/pull/1106>`__
- Feature: Apply Jinja2 to layout files before parsing them `#4596 <https://github.com/conan-io/conan/pull/4596>`_ . Docs `here <https://github.com/conan-io/docs/pull/1093>`__
- Feature: Accept a PackageReference for the command :command:`conan get` (argument `-p` is accepted, but hidden) `#4494 <https://github.com/conan-io/conan/pull/4494>`_ . Docs `here <https://github.com/conan-io/docs/pull/1070>`__
- Feature: Re-implement Workspaces based on Editable packages. `#4481 <https://github.com/conan-io/conan/pull/4481>`_ . Docs `here <https://github.com/conan-io/docs/pull/1086>`__
- Feature: Removed old "compatibility" mode of revisions. `#4462 <https://github.com/conan-io/conan/pull/4462>`_ . Docs `here <https://github.com/conan-io/docs/pull/1105>`__
- Fix: When revisions enabled, add the revision to the json output of the info/install commands. `#4667 <https://github.com/conan-io/conan/pull/4667>`_
- Fix: JSON output for `multi_config` now works in `install` and `create` commands `#4656 <https://github.com/conan-io/conan/pull/4656>`_
- Fix: Deprecate 'cppflags' in favor of 'cxxflags' in class CppInfo `#4611 <https://github.com/conan-io/conan/pull/4611>`_ . Docs `here <https://github.com/conan-io/docs/pull/1091>`__
- Fix: Return empty list if env variable is an empty string `#4594 <https://github.com/conan-io/conan/pull/4594>`_
- Fix: `conan profile list` will now recursively list profiles. `#4591 <https://github.com/conan-io/conan/pull/4591>`_
- Fix: `Instance of 'TestConan' has no 'install_folder' member` when exporting recipe `#4585 <https://github.com/conan-io/conan/pull/4585>`_
- Fix: SCM replacement with comments below it `#4580 <https://github.com/conan-io/conan/pull/4580>`_
- Fix: Remove package references associated to a remote in *registry.json* when that remote is deleted `#4568 <https://github.com/conan-io/conan/pull/4568>`_
- Fix: Fixed issue with Artifactory when the anonymous user is enabled, causing the uploads to fail without requesting the user and password. `#4526 <https://github.com/conan-io/conan/pull/4526>`_
- Fix: Do not allow an alias to override an existing package `#4495 <https://github.com/conan-io/conan/pull/4495>`_
- Fix: Do not display the warning when there are files in the package folder (#4438). `#4464 <https://github.com/conan-io/conan/pull/4464>`_
- Bugfix: Solve problem with loading recipe python files in Python 3.7 because of ``module.__file__ = None`` `#4669 <https://github.com/conan-io/conan/pull/4669>`_
- Bugfix: Do not attempt to upload non-existing packages, due to empty short_paths folders, or to explicit ``upload -p=id`` command. `#4615 <https://github.com/conan-io/conan/pull/4615>`_
- Bugfix: Fix LIB overwrite in ``virtualbuildenv`` generator `#4583 <https://github.com/conan-io/conan/pull/4583>`_
- Bugfix: Avoid ``str(self.settings.xxx)`` crash when the value is None. `#4571 <https://github.com/conan-io/conan/pull/4571>`_ . Docs `here <https://github.com/conan-io/docs/pull/1089>`__
- Bugfix: Build-requires expand over the closure of the package they apply to, so they can create conflicts too. Previously, those conflicts were silently skipped, and builds would use an undetermined version and configuration of dependencies. `#4514 <https://github.com/conan-io/conan/pull/4514>`_
- Bugfix: meson build type actually reflects recipe shared option `#4489 <https://github.com/conan-io/conan/pull/4489>`_
- Bugfix: Fixed several bugs related to revisions. `#4462 <https://github.com/conan-io/conan/pull/4462>`_ . Docs `here <https://github.com/conan-io/docs/pull/1105>`__
- Bugfix: Fixed several bugs related to the package `metadata.json` `#4462 <https://github.com/conan-io/conan/pull/4462>`_ . Docs `here <https://github.com/conan-io/docs/pull/1105>`__


1.12.3 (18-Feb-2019)
--------------------

Expand Down
4 changes: 2 additions & 2 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
]

# The short X.Y version.
version = "1.12"
version = "1.13"
# The full version, including alpha/beta/rc tags.
release = u'1.12.3'
release = u'1.13.0'

dir_path = os.path.dirname(os.path.realpath(__file__))
if not os.path.exists(os.path.join(dir_path, "versions.json")):
Expand Down
130 changes: 112 additions & 18 deletions creating_packages/define_abi_compatibility.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,12 @@ Let's try and check that it works properly when installing the package for GCC 4

.. code-block:: bash

$ conan export myuser/mychannel
$ conan install Pkg/1.0@myuser/mychannel -s compiler=gcc -s compiler.version=4.5 ...
$ conan create . Pkg/1.0@myuser/mychannel -s compiler=gcc -s compiler.version=4.5 ...

Requirements
Pkg/1.0@myuser/mychannel from local
Packages
Pkg/1.0@myuser/mychannel:mychannel:af044f9619574eceb8e1cca737a64bdad88246ad
Pkg/1.0@myuser/mychannel:af044f9619574eceb8e1cca737a64bdad88246ad
...

We can see that the computed package ID is ``af04...46ad`` (not real). What happens if we specify GCC 4.6?
Expand All @@ -130,7 +129,7 @@ We can see that the computed package ID is ``af04...46ad`` (not real). What happ
Requirements
Pkg/1.0@myuser/mychannel from local
Packages
Pkg/1.0@myuser/mychannel:mychannel:af044f9619574eceb8e1cca737a64bdad88246ad
Pkg/1.0@myuser/mychannel:af044f9619574eceb8e1cca737a64bdad88246ad

The required package has the same result again ``af04...46ad``. Now we can try using GCC 4.4 (< 4.5):

Expand All @@ -141,7 +140,7 @@ The required package has the same result again ``af04...46ad``. Now we can try u
Requirements
Pkg/1.0@myuser/mychannel from local
Packages
Pkg/1.0@myuser/mychannel:mychannel:7d02dc01581029782b59dcc8c9783a73ab3c22dd
Pkg/1.0@myuser/mychannel:7d02dc01581029782b59dcc8c9783a73ab3c22dd

The computed package ID is different which means that we need a different binary package for GCC 4.4.

Expand Down Expand Up @@ -196,7 +195,9 @@ And the ``addition()`` function is called from the compiled *.cpp* files of ``My

Then, **a new binary for MyLib/1.0 is required to be built for the new dependency version**. Otherwise it will maintain the old, buggy
``addition()`` version. Even in the case that ``MyLib/1.0`` doesn't have any change in its code lines neither in the recipe, the resulting
binary rebuilding ``MyLib`` requires `MyOtherLib/2.1`` and the package to be different.
binary rebuilding ``MyLib`` requires ``MyOtherLib/2.1`` and the package to be different.

.. _package_id_mode:

Using package_id() for Package Dependencies
-------------------------------------------
Expand Down Expand Up @@ -265,6 +266,8 @@ You can determine if the following variables within any requirement change the I
+-------------------------+----------+-----------------------------------------+----------+-------------+----------------+
| **Modes / Variables** | ``name`` | ``version`` | ``user`` | ``channel`` | ``package_id`` |
+=========================+==========+=========================================+==========+=============+================+
| ``semver_direct_mode()``| Yes | Yes, only > 1.0.0 (e.g., **1**.2.Z+b102)| No | No | No |
+-------------------------+----------+-----------------------------------------+----------+-------------+----------------+
| ``semver_mode()`` | Yes | Yes, only > 1.0.0 (e.g., **1**.2.Z+b102)| No | No | No |
+-------------------------+----------+-----------------------------------------+----------+-------------+----------------+
| ``major_mode()`` | Yes | Yes (e.g., **1**.2.Z+b102) | No | No | No |
Expand All @@ -284,20 +287,65 @@ You can determine if the following variables within any requirement change the I
| ``unrelated_mode()`` | No | No | No | No | No |
+-------------------------+----------+-----------------------------------------+----------+-------------+----------------+

- ``semver_mode()``: This is the default mode. In this mode, only a major release version (starting from **1.0.0**) changes the package ID.
Every version change prior to 1.0.0 changes the package ID, but only major changes after 1.0.0 will be applied.
All the modes can be applied to all dependencies, or to individual ones:

.. code-block:: python

def package_id(self):
# apply semver_mode for all the dependencies of the package
self.info.requires.semver_mode()
# use semver_mode just for MyOtherLib
self.info.requires["MyOtherLib"].semver_mode()


- ``semver_direct_mode()``: This is the default mode. It uses ``semver_mode()`` for direct dependencies (first
level dependencies, directly declared by the package) and ``unrelated_mode()`` for indirect, transitive
dependencies of the package. It assumes that the binary will be affected by the direct dependencies, which
they will already encode how their transitive dependencies affect them. This might not always be true, as
explained above, and that is the reason it is possible to customize it.

In this mode, if the package depends on "MyLib", which transitively depends on "MyOtherLib", the mode means:

.. code-block:: text

MyLib/1.2.3@user/testing => MyLib/1.Y.Z
MyOtherLib/2.3.4@user/testing =>

So the direct dependencies are mapped to the major version only. Changing its channel, or using version
``MyLib/1.4.5`` will still produce ``MyLib/1.Y.Z`` and thus the same package-id.
The indirect, transitive dependency doesn't affect the package-id at all.

- ``semver_mode()``: In this mode, only a major release version (starting from **1.0.0**) changes the package ID.
Every version change prior to 1.0.0 changes the package ID, but only major changes after 1.0.0 will be applied.

.. code-block:: python

def package_id(self):
self.info.requires["MyOtherLib"].semver_mode()

This results in:

.. code-block:: text

MyLib/1.2.3@user/testing => MyLib/1.Y.Z
MyOtherLib/2.3.4@user/testing => MyOtherLib/2.Y.Z

In this mode, versions starting with ``0`` are considered unstable and mapped to the full version:

.. code-block:: text

MyLib/0.2.3@user/testing => MyLib/0.2.3
MyOtherLib/0.3.4@user/testing => MyOtherLib/0.3.4

- ``major_mode()``: Any change in the major release version (starting from **0.0.0**) changes the package ID.

.. code-block:: python

def package_id(self):
self.info.requires["MyOtherLib"].major_mode()
def package_id(self):
self.info.requires["MyOtherLib"].major_mode()

This mode is basically the same as ``semver_mode``, but the only difference is that major versions ``0.Y.Z``,
which are considered unstable by semver, are still mapped to only the major, dropping the minor and patch parts.

- ``minor_mode()``: Any change in major or minor (not patch nor build) version of the required dependency changes the package ID.

Expand Down Expand Up @@ -326,22 +374,39 @@ You can determine if the following variables within any requirement change the I

.. code-block:: python

def package_id(self):
self.info.requires["MyOtherLib"].full_version_mode()
def package_id(self):
self.info.requires["MyOtherLib"].full_version_mode()

.. code-block:: text

MyOtherLib/1.3.4-a4+b3@user/testing => MyOtherLib/1.3.4-a4+b3

- ``full_recipe_mode()``: Any change in the reference of the requirement (user & channel too) changes the package ID.

.. code-block:: python

def package_id(self):
self.info.requires["MyOtherLib"].full_recipe_mode()
def package_id(self):
self.info.requires["MyOtherLib"].full_recipe_mode()

This keeps the whole dependency reference, except the package-id of the dependency.

.. code-block:: text

MyOtherLib/1.3.4-a4+b3@user/testing => MyOtherLib/1.3.4-a4+b3@user/testing

- ``full_package_mode()``: Any change in the required version, user, channel or package ID changes the package ID.

.. code-block:: python

def package_id(self):
self.info.requires["MyOtherLib"].full_package_mode()
def package_id(self):
self.info.requires["MyOtherLib"].full_package_mode()

This is the stricter mode. Any change to the dependency, including its binary package-id, will in turn
produce a new package-id for the consumer package.

.. code-block:: text

MyOtherLib/1.3.4-a4+b3@user/testing:73b..fa56 => MyOtherLib/1.3.4-a4+b3@user/testing:73b..fa56

- ``unrelated_mode()``: Requirements do not change the package ID.

Expand Down Expand Up @@ -377,10 +442,39 @@ The default behavior produces a *conaninfo.txt* that looks like:
.. code-block:: text

[requires]
MyOtherLib/2.Y.Z
MyOtherLib/2.Y.Z

[full_requires]
MyOtherLib/2.2@demo/testing:73bce3fd7eb82b2eabc19fe11317d37da81afa56
MyOtherLib/2.2@demo/testing:73bce3fd7eb82b2eabc19fe11317d37da81afa56

Changing the default package-id mode
++++++++++++++++++++++++++++++++++++
It is possible to change the default ``semver_direct_mode`` package-id mode, in the
*conan.conf* file:

.. code-block:: text
:caption: *conan.conf* configuration file

[general]
default_package_id_mode=full_package_mode

Possible values are the names of the above methods: ``full_recipe_mode``, ``semver_mode``, etc.

Note that the default package-id mode is the mode that is used when the package is initialized
and **before** ``package_id()`` method is called. You can still define ``full_package_mode``
as default in *conan.conf*, but if a recipe declare that it is header-only, with:

.. code-block:: python

def package_id(self):
self.info.header_only() # clears requires, but also settings if existing
# or if there are no settings/options, this would be equivalent
self.info.requires.clear() # or self.info.requires.unrelated_mode()

That would still be executed, changing the "default" behavior, and leading to a package
that only generates 1 package-id for all possible configurations and versions of dependencies.

Remember that *conan.conf* can be shared and installed with :ref:`conan_config_install`.

Library Types: Shared, Static, Header-only
++++++++++++++++++++++++++++++++++++++++++
Expand Down
3 changes: 2 additions & 1 deletion deploy_gh_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ def deploy():
if should_deploy():
config_git()
clean_gh_pages()
versions_dict = {"master": "1.12",
versions_dict = {"master": "1.13",
"release/1.12.3": "1.12",
"release/1.11.2": "1.11",
"release/1.10.2": "1.10",
"release/1.9.4": "1.9",
Expand Down
Loading