Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package conan for openSUSE:Factory checked 
in at 2024-01-12 23:45:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/conan (Old)
 and      /work/SRC/openSUSE:Factory/.conan.new.21961 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "conan"

Fri Jan 12 23:45:38 2024 rev:4 rq:1138222 version:2.0.17

Changes:
--------
--- /work/SRC/openSUSE:Factory/conan/conan.changes      2024-01-03 
12:23:45.380777083 +0100
+++ /work/SRC/openSUSE:Factory/.conan.new.21961/conan.changes   2024-01-12 
23:45:59.963855385 +0100
@@ -1,0 +2,19 @@
+Thu Jan 11 18:38:29 UTC 2024 - Atri Bhattacharya <[email protected]>
+
+- Update to version 2.0.17:
+  * Fix: Automatically create folder if conan cache save
+    --file=subfolder/file.tgz subfolder doesn't exist
+    (gh#conan-io/conan#15409).
+  * Bugfix: Fix libcxx detection when using CC/CXX env vars
+    (gh#conan-io/conan#15418).
+  * Bugfix: Solve winsdk_version bug in CMakeToolchain generator
+    for cmake_minimum_required(3.27) (gh#conan-io/conan#15373).
+  * Bugfix: Fix visible trait propagation with build=True trait
+    (gh#conan-io/conan#15357).
+  * Bugfix: Fix package_id calculation when including conf values
+    thru tools.info.package_id:confs (gh#conan-io/conan#15356).
+  * Bugfix: Order conf items when dumping them to allow
+    reproducible package_id independent of the order the confs
+    were declared (gh#conan-io/conan#15356).
+
+-------------------------------------------------------------------

Old:
----
  conan-2.0.16.tar.gz

New:
----
  conan-2.0.17.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ conan.spec ++++++
--- /var/tmp/diff_new_pack.CR4uWk/_old  2024-01-12 23:46:00.619879396 +0100
+++ /var/tmp/diff_new_pack.CR4uWk/_new  2024-01-12 23:46:00.619879396 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package conan
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 # Note: We only want to build for the default python3
 Name:           conan
-Version:        2.0.16
+Version:        2.0.17
 Release:        0
 Summary:        A C/C++ package manager
 License:        MIT

++++++ conan-2.0.16.tar.gz -> conan-2.0.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/PKG-INFO new/conan-2.0.17/PKG-INFO
--- old/conan-2.0.16/PKG-INFO   2023-12-21 11:50:16.676781400 +0100
+++ new/conan-2.0.17/PKG-INFO   2024-01-10 16:33:21.924171000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: conan
-Version: 2.0.16
+Version: 2.0.17
 Summary: Conan C/C++ package manager
 Home-page: https://conan.io
 Author: JFrog LTD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/api/subapi/cache.py 
new/conan-2.0.17/conan/api/subapi/cache.py
--- old/conan-2.0.16/conan/api/subapi/cache.py  2023-12-21 11:50:08.000000000 
+0100
+++ new/conan-2.0.17/conan/api/subapi/cache.py  2024-01-10 16:33:14.000000000 
+0100
@@ -13,7 +13,7 @@
 from conans.model.package_ref import PkgReference
 from conans.model.recipe_ref import RecipeReference
 from conans.util.dates import revision_timestamp_now
-from conans.util.files import rmdir, gzopen_without_timestamps
+from conans.util.files import rmdir, gzopen_without_timestamps, mkdir
 
 
 class CacheAPI:
@@ -113,6 +113,7 @@
         cache_folder = self.conan_api.cache_folder
         app = ConanApp(cache_folder, self.conan_api.config.global_conf)
         out = ConanOutput()
+        mkdir(os.path.dirname(tgz_path))
         name = os.path.basename(tgz_path)
         with open(tgz_path, "wb") as tgz_handle:
             tgz = gzopen_without_timestamps(name, mode="w", fileobj=tgz_handle)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/cli/cli.py 
new/conan-2.0.17/conan/cli/cli.py
--- old/conan-2.0.16/conan/cli/cli.py   2023-12-21 11:50:08.000000000 +0100
+++ new/conan-2.0.17/conan/cli/cli.py   2024-01-10 16:33:14.000000000 +0100
@@ -47,35 +47,43 @@
             for k, v in self._commands.items():  # Fill groups data too
                 self._groups[v.group].append(k)
 
-        custom_commands_path = 
HomePaths(self._conan_api.cache_folder).custom_commands_path
-        if not os.path.isdir(custom_commands_path):
-            return
+        conan_custom_commands_path = 
HomePaths(self._conan_api.cache_folder).custom_commands_path
+        # Important! This variable should be only used for testing/debugging 
purpose
+        developer_custom_commands_path = 
os.getenv("_CONAN_INTERNAL_CUSTOM_COMMANDS_PATH")
+        # Notice that in case of having same custom commands file names, the 
developer one has
+        # preference over the Conan default location because of the 
sys.path.append(xxxx)
+        custom_commands_folders = [developer_custom_commands_path, 
conan_custom_commands_path] \
+            if developer_custom_commands_path else [conan_custom_commands_path]
 
-        sys.path.append(custom_commands_path)
-        for module in pkgutil.iter_modules([custom_commands_path]):
-            module_name = module[1]
-            if module_name.startswith("cmd_"):
-                try:
-                    self._add_command(module_name, module_name.replace("cmd_", 
""))
-                except Exception as e:
-                    ConanOutput().error(f"Error loading custom command 
'{module_name}.py': {e}",
-                                        error_type="exception")
-        # layers
-        for folder in os.listdir(custom_commands_path):
-            layer_folder = os.path.join(custom_commands_path, folder)
-            sys.path.append(layer_folder)
-            if not os.path.isdir(layer_folder):
-                continue
-            for module in pkgutil.iter_modules([layer_folder]):
+        for custom_commands_path in custom_commands_folders:
+            if not os.path.isdir(custom_commands_path):
+                return
+
+            sys.path.append(custom_commands_path)
+            for module in pkgutil.iter_modules([custom_commands_path]):
                 module_name = module[1]
                 if module_name.startswith("cmd_"):
-                    module_path = f"{folder}.{module_name}"
                     try:
-                        self._add_command(module_path, 
module_name.replace("cmd_", ""),
-                                          package=folder)
+                        self._add_command(module_name, 
module_name.replace("cmd_", ""))
                     except Exception as e:
-                        ConanOutput().error(f"Error loading custom command 
{module_path}: {e}",
+                        ConanOutput().error(f"Error loading custom command 
'{module_name}.py': {e}",
                                             error_type="exception")
+            # layers
+            for folder in os.listdir(custom_commands_path):
+                layer_folder = os.path.join(custom_commands_path, folder)
+                sys.path.append(layer_folder)
+                if not os.path.isdir(layer_folder):
+                    continue
+                for module in pkgutil.iter_modules([layer_folder]):
+                    module_name = module[1]
+                    if module_name.startswith("cmd_"):
+                        module_path = f"{folder}.{module_name}"
+                        try:
+                            self._add_command(module_path, 
module_name.replace("cmd_", ""),
+                                              package=folder)
+                        except Exception as e:
+                            ConanOutput().error(f"Error loading custom command 
{module_path}: {e}",
+                                                error_type="exception")
 
     def _add_command(self, import_path, method_name, package=None):
         try:
@@ -84,7 +92,9 @@
             if command_wrapper.doc:
                 name = f"{package}:{command_wrapper.name}" if package else 
command_wrapper.name
                 self._commands[name] = command_wrapper
-                self._groups[command_wrapper.group].append(name)
+                # Avoiding duplicated command help messages
+                if name not in self._groups[command_wrapper.group]:
+                    self._groups[command_wrapper.group].append(name)
             for name, value in getmembers(imported_module):
                 if isinstance(value, ConanSubCommand):
                     if name.startswith("{}_".format(method_name)):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/cli/commands/list.py 
new/conan-2.0.17/conan/cli/commands/list.py
--- old/conan-2.0.16/conan/cli/commands/list.py 2023-12-21 11:50:08.000000000 
+0100
+++ new/conan-2.0.17/conan/cli/commands/list.py 2024-01-10 16:33:14.000000000 
+0100
@@ -109,7 +109,7 @@
             new_rrev = f"{ref}#{rrev}"
             timestamp = rrev_info.pop("timestamp", None)
             if timestamp:
-                new_rrev += f" ({timestamp_to_str(timestamp)})"
+                new_rrev += f"%{timestamp} ({timestamp_to_str(timestamp)})"
 
             packages = rrev_info.pop("packages", None)
             if packages:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/internal/api/detect_api.py 
new/conan-2.0.17/conan/internal/api/detect_api.py
--- old/conan-2.0.16/conan/internal/api/detect_api.py   2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conan/internal/api/detect_api.py   2024-01-10 
16:33:14.000000000 +0100
@@ -122,7 +122,7 @@
     }.get(platform.processor())
 
 
-def detect_libcxx(compiler, version):
+def detect_libcxx(compiler, version, compiler_exe=None):
     assert isinstance(version, Version)
 
     def _detect_gcc_libcxx(version_, executable):
@@ -166,7 +166,7 @@
     if compiler == "apple-clang":
         return "libc++"
     elif compiler == "gcc":
-        libcxx = _detect_gcc_libcxx(version, "g++")
+        libcxx = _detect_gcc_libcxx(version, compiler_exe or "g++")
         return libcxx
     elif compiler == "cc":
         if platform.system() == "SunOS":
@@ -179,7 +179,7 @@
         elif platform.system() == "Windows":
             return  # by default windows will assume LLVM/Clang with VS backend
         else:  # Linux
-            libcxx = _detect_gcc_libcxx(version, "clang++")
+            libcxx = _detect_gcc_libcxx(version, compiler_exe or "clang++")
             return libcxx
     elif compiler == "sun-cc":
         return "libCstd"
@@ -243,17 +243,17 @@
     return cppstd
 
 
-def detect_compiler():
-    """
-    find the default compiler on the build machine
-    search order and priority:
-    1. CC and CXX environment variables are always top priority
-    2. Visual Studio detection (Windows only) via vswhere or registry or 
environment variables
-    3. Apple Clang (Mac only)
-    4. cc executable
-    5. gcc executable
-    6. clang executable
+def detect_default_compiler():
     """
+        find the default compiler on the build machine
+        search order and priority:
+        1. CC and CXX environment variables are always top priority
+        2. Visual Studio detection (Windows only) via vswhere or registry or 
environment variables
+        3. Apple Clang (Mac only)
+        4. cc executable
+        5. gcc executable
+        6. clang executable
+        """
     output = ConanOutput(scope="detect_api")
     cc = os.environ.get("CC", "")
     cxx = os.environ.get("CXX", "")
@@ -263,11 +263,11 @@
         if "clang" in command.lower():
             return _clang_compiler(command)
         if "gcc" in command or "g++" in command or "c++" in command:
-            gcc, gcc_version = _gcc_compiler(command)
+            gcc, gcc_version, compiler_exe = _gcc_compiler(command)
             if platform.system() == "Darwin" and gcc is None:
                 output.error("%s detected as a frontend using apple-clang. "
                              "Compiler not supported" % command)
-            return gcc, gcc_version
+            return gcc, gcc_version, compiler_exe
         if platform.system() == "SunOS" and command.lower() == "cc":
             return _sun_cc_compiler(command)
         if (platform.system() == "Windows" and 
command.rstrip('"').endswith(("cl", "cl.exe"))
@@ -276,28 +276,28 @@
 
         # I am not able to find its version
         output.error("Not able to automatically detect '%s' version" % command)
-        return None, None
+        return None, None, None
 
     if platform.system() == "Windows":
         version = _detect_vs_ide_version()
         version = {"17": "193", "16": "192", "15": "191"}.get(str(version))  # 
Map to compiler
         if version:
-            return 'msvc', Version(version)
+            return 'msvc', Version(version), None
 
     if platform.system() == "SunOS":
-        sun_cc, sun_cc_version = _sun_cc_compiler()
+        sun_cc, sun_cc_version, compiler_exe = _sun_cc_compiler()
         if sun_cc:
-            return sun_cc, sun_cc_version
+            return sun_cc, sun_cc_version, compiler_exe
 
     if platform.system() in ["Darwin", "FreeBSD"]:
-        clang, clang_version = _clang_compiler()  # prioritize clang
+        clang, clang_version, compiler_exe = _clang_compiler()  # prioritize 
clang
         if clang:
-            return clang, clang_version
+            return clang, clang_version, compiler_exe
         return
     else:
-        gcc, gcc_version = _gcc_compiler()
+        gcc, gcc_version, compiler_exe = _gcc_compiler()
         if gcc:
-            return gcc, gcc_version
+            return gcc, gcc_version, compiler_exe
         return _clang_compiler()
 
 
@@ -326,11 +326,11 @@
             _, out = detect_runner("%s --version" % compiler_exe)
             out = out.lower()
             if "clang" in out:
-                return None, None
+                return None, None, None
 
         ret, out = detect_runner('%s -dumpversion' % compiler_exe)
         if ret != 0:
-            return None, None
+            return None, None, None
         compiler = "gcc"
         installed_version = re.search(r"([0-9]+(\.[0-9])?)", out).group()
         # Since GCC 7.1, -dumpversion return the major version number
@@ -338,9 +338,15 @@
         # number ("7.1.1").
         if installed_version:
             ConanOutput(scope="detect_api").info("Found %s %s" % (compiler, 
installed_version))
-            return compiler, Version(installed_version)
+            return compiler, Version(installed_version), compiler_exe
     except (Exception,):  # to disable broad-except
-        return None, None
+        return None, None, None
+
+
+def detect_compiler():
+    ConanOutput(scope="detect_api").warning("detect_compiler() is deprecated, 
use detect_default_compiler()", warn_tag="deprecated")
+    compiler, version, _ = detect_default_compiler()
+    return compiler, version
 
 
 def _sun_cc_compiler(compiler_exe="cc"):
@@ -354,28 +360,28 @@
             installed_version = re.search(r"([0-9]+\.[0-9]+)", out).group()
         if installed_version:
             ConanOutput(scope="detect_api").info("Found %s %s" % (compiler, 
installed_version))
-            return compiler, Version(installed_version)
+            return compiler, Version(installed_version), compiler_exe
     except (Exception,):  # to disable broad-except
-        return None, None
+        return None, None, None
 
 
 def _clang_compiler(compiler_exe="clang"):
     try:
         ret, out = detect_runner('%s --version' % compiler_exe)
         if ret != 0:
-            return None, None
+            return None, None, None
         if "Apple" in out:
             compiler = "apple-clang"
         elif "clang version" in out:
             compiler = "clang"
         else:
-            return None, None
+            return None, None, None
         installed_version = re.search(r"([0-9]+\.[0-9])", out).group()
         if installed_version:
             ConanOutput(scope="detect_api").info("Found %s %s" % (compiler, 
installed_version))
-            return compiler, Version(installed_version)
+            return compiler, Version(installed_version), compiler_exe
     except (Exception,):  # to disable broad-except
-        return None, None
+        return None, None, None
 
 
 def _msvc_cl_compiler(compiler_exe="cl"):
@@ -386,20 +392,20 @@
         compiler_exe = compiler_exe.strip('"')
         ret, out = detect_runner(f'"{compiler_exe}" /?')
         if ret != 0:
-            return None, None
+            return None, None, None
         first_line = out.splitlines()[0]
         if "Microsoft" not in first_line:
-            return None, None
+            return None, None, None
         compiler = "msvc"
         version_regex = 
re.search(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)\.([0-9]+)\.?([0-9]+)?",
                                   first_line)
         if not version_regex:
-            return None, None
+            return None, None, None
         # 19.36.32535 -> 193
         version = 
f"{version_regex.group('major')}{version_regex.group('minor')[0]}"
-        return compiler, Version(version)
+        return compiler, Version(version), compiler_exe
     except (Exception,):  # to disable broad-except
-        return None, None
+        return None, None, None
 
 
 def default_compiler_version(compiler, version):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/tools/cmake/toolchain/blocks.py 
new/conan-2.0.17/conan/tools/cmake/toolchain/blocks.py
--- old/conan-2.0.16/conan/tools/cmake/toolchain/blocks.py      2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conan/tools/cmake/toolchain/blocks.py      2024-01-10 
16:33:14.000000000 +0100
@@ -826,7 +826,7 @@
         cmake_sysroot = self._conanfile.conf.get("tools.build:sysroot")
         cmake_sysroot = cmake_sysroot.replace("\\", "/") if cmake_sysroot is 
not None else None
 
-        result = self._get_winsdk_version(system_version, generator)
+        result = self._get_winsdk_version(system_version, generator_platform)
         system_version, winsdk_version, gen_platform_sdk_version = result
 
         return {"toolset": toolset,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/tools/gnu/pkgconfigdeps.py 
new/conan-2.0.17/conan/tools/gnu/pkgconfigdeps.py
--- old/conan-2.0.16/conan/tools/gnu/pkgconfigdeps.py   2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conan/tools/gnu/pkgconfigdeps.py   2024-01-10 
16:33:14.000000000 +0100
@@ -286,7 +286,7 @@
         requires = self._get_cpp_info_requires_names(self._dep.cpp_info)
         # If we have found some component requires it would be enough
         if not requires:
-            # If no requires were found, let's try to get all the direct 
dependencies,
+            # If no requires were found, let's try to get all the direct 
visible dependencies,
             # e.g., requires = "other_pkg/1.0"
             requires = [_get_package_name(req, self._build_context_suffix)
                         for req in self._transitive_reqs.values()]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan/tools/google/bazeldeps.py 
new/conan-2.0.17/conan/tools/google/bazeldeps.py
--- old/conan-2.0.16/conan/tools/google/bazeldeps.py    2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conan/tools/google/bazeldeps.py    2024-01-10 
16:33:14.000000000 +0100
@@ -117,15 +117,16 @@
             full_path = os.path.join(libdir, f)
             if not os.path.isfile(full_path):  # Make sure that directories 
are excluded
                 continue
+            name, ext = os.path.splitext(f)
             # Users may not name their libraries in a conventional way. For 
example, directly
-            # use the basename of the lib file as lib name.
-            if f in libs:
+            # use the basename of the lib file as lib name, e.g., 
cpp_info.libs = ["liblib1.a"]
+            # Issue related: https://github.com/conan-io/conan/issues/11331
+            if ext and f in libs:  # let's ensure that it has any extension
                 _save_lib_path(f, full_path)
                 continue
-            name, ext = os.path.splitext(f)
             if name not in libs and name.startswith("lib"):
                 name = name[3:]  # libpkg -> pkg
-             # FIXME: Should it read a conf variable to know unexpected 
extensions?
+            # FIXME: Should it read a conf variable to know unexpected 
extensions?
             if (is_shared and ext in (".so", ".dylib", ".lib", ".dll")) or \
                (not is_shared and ext in (".a", ".lib")):
                 if name in libs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conan.egg-info/PKG-INFO 
new/conan-2.0.17/conan.egg-info/PKG-INFO
--- old/conan-2.0.16/conan.egg-info/PKG-INFO    2023-12-21 11:50:16.000000000 
+0100
+++ new/conan-2.0.17/conan.egg-info/PKG-INFO    2024-01-10 16:33:21.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: conan
-Version: 2.0.16
+Version: 2.0.17
 Summary: Conan C/C++ package manager
 Home-page: https://conan.io
 Author: JFrog LTD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/__init__.py 
new/conan-2.0.17/conans/__init__.py
--- old/conan-2.0.16/conans/__init__.py 2023-12-21 11:50:08.000000000 +0100
+++ new/conan-2.0.17/conans/__init__.py 2024-01-10 16:33:14.000000000 +0100
@@ -2,4 +2,4 @@
 REVISIONS = "revisions"  # Only when enabled in config, not by default look at 
server_launcher.py
 OAUTH_TOKEN = "oauth_token"
 
-__version__ = '2.0.16'
+__version__ = '2.0.17'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/client/conf/detect.py 
new/conan-2.0.17/conans/client/conf/detect.py
--- old/conan-2.0.16/conans/client/conf/detect.py       2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conans/client/conf/detect.py       2024-01-10 
16:33:14.000000000 +0100
@@ -1,6 +1,6 @@
 from conan.api.output import ConanOutput
 from conan.internal.api.detect_api import detect_os, detect_arch, 
default_msvc_runtime, \
-    detect_libcxx, detect_cppstd, detect_compiler, default_compiler_version
+    detect_libcxx, detect_cppstd, detect_default_compiler, 
default_compiler_version
 
 
 def detect_defaults_settings():
@@ -14,7 +14,7 @@
     arch = detect_arch()
     if arch:
         result.append(("arch", arch))
-    compiler, version = detect_compiler()
+    compiler, version, compiler_exe = detect_default_compiler()
     if not compiler:
         result.append(("build_type", "Release"))
         ConanOutput().warning("No compiler was detected (one may not be 
needed)")
@@ -28,7 +28,7 @@
         result.append(("compiler.runtime", runtime))
     if runtime_version:
         result.append(("compiler.runtime_version", runtime_version))
-    libcxx = detect_libcxx(compiler, version)
+    libcxx = detect_libcxx(compiler, version, compiler_exe)
     if libcxx:
         result.append(("compiler.libcxx", libcxx))
     cppstd = detect_cppstd(compiler, version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/client/graph/graph_builder.py 
new/conan-2.0.17/conans/client/graph/graph_builder.py
--- old/conan-2.0.16/conans/client/graph/graph_builder.py       2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conans/client/graph/graph_builder.py       2024-01-10 
16:33:14.000000000 +0100
@@ -1,6 +1,5 @@
 import copy
 import os
-import re
 from collections import deque
 
 from conans.client.conanfile.configure import run_configure_method
@@ -14,7 +13,6 @@
 from conans.errors import ConanException
 from conans.model.conan_file import ConanFile
 from conans.model.options import Options
-from conans.model.package_ref import PkgReference
 from conans.model.recipe_ref import RecipeReference, ref_matches
 from conans.model.requires import Requirement
 
@@ -280,11 +278,12 @@
             tracking_ref = require_version.split(':', 1)
             ref = require.ref
             if len(tracking_ref) > 1:
-                ref = RecipeReference.loads(str(node.ref))
+                ref = RecipeReference.loads(str(require.ref))
                 ref.name = tracking_ref[1][:-1]  # Remove the trailing >
             req = Requirement(ref, headers=True, libs=True, visible=True)
             transitive = node.transitive_deps.get(req)
-            if transitive is None:
+            if transitive is None or transitive.require.ref.user != ref.user \
+                    or transitive.require.ref.channel != ref.channel:
                 raise ConanException(f"{node.ref} require '{ref}': didn't find 
a matching "
                                      "host dependency")
             require.ref.version = transitive.require.ref.version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/client/migrations.py 
new/conan-2.0.17/conans/client/migrations.py
--- old/conan-2.0.16/conans/client/migrations.py        2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conans/client/migrations.py        2024-01-10 
16:33:14.000000000 +0100
@@ -58,11 +58,13 @@
 
 
 def _migrate_pkg_db_lru(cache_folder, old_version):
-    ConanOutput().warning(f"Upgrade cache from Conan version '{old_version}'")
-    ConanOutput().warning("Running 2.0.14 Cache DB migration to add LRU 
column")
     config = ConfigAPI.load_config(cache_folder)
     storage = config.get("core.cache:storage_path") or 
os.path.join(cache_folder, "p")
     db_filename = os.path.join(storage, 'cache.sqlite3')
+    if not os.path.exists(db_filename):
+        return
+    ConanOutput().warning(f"Upgrade cache from Conan version '{old_version}'")
+    ConanOutput().warning("Running 2.0.14 Cache DB migration to add LRU 
column")
     connection = sqlite3.connect(db_filename, isolation_level=None,
                                  timeout=1, check_same_thread=False)
     try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/client/profile_loader.py 
new/conan-2.0.17/conans/client/profile_loader.py
--- old/conan-2.0.16/conans/client/profile_loader.py    2023-12-21 
11:50:08.000000000 +0100
+++ new/conan-2.0.17/conans/client/profile_loader.py    2024-01-10 
16:33:14.000000000 +0100
@@ -126,8 +126,14 @@
                    "profile_name": file_path,
                    "conan_version": conan_version,
                    "detect_api": detect_api}
+
         rtemplate = 
Environment(loader=FileSystemLoader(base_path)).from_string(text)
-        text = rtemplate.render(context)
+
+        try:
+            text = rtemplate.render(context)
+        except Exception as e:
+            raise ConanException(f"Error while rendering the profile template 
file '{profile_path}'. "
+                                 f"Check your Jinja2 syntax: {str(e)}")
 
         try:
             return self._recurse_load_profile(text, profile_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/model/conf.py 
new/conan-2.0.17/conans/model/conf.py
--- old/conan-2.0.16/conans/model/conf.py       2023-12-21 11:50:08.000000000 
+0100
+++ new/conan-2.0.17/conans/model/conf.py       2024-01-10 16:33:14.000000000 
+0100
@@ -347,7 +347,7 @@
         """
         Returns a string with the format ``name=conf-value``
         """
-        return "\n".join([v.dumps() for v in reversed(self._values.values())])
+        return "\n".join([v.dumps() for v in sorted(self._values.values(), 
key=lambda x: x._name)])
 
     def serialize(self):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/model/requires.py 
new/conan-2.0.17/conans/model/requires.py
--- old/conan-2.0.16/conans/model/requires.py   2023-12-21 11:50:08.000000000 
+0100
+++ new/conan-2.0.17/conans/model/requires.py   2024-01-10 16:33:14.000000000 
+0100
@@ -268,7 +268,7 @@
         if require.build:  # public!
             # TODO: To discuss if this way of conflicting build_requires is 
actually useful or not
             downstream_require = Requirement(require.ref, headers=False, 
libs=False, build=True,
-                                             run=False, visible=True, 
direct=False)
+                                             run=False, visible=self.visible, 
direct=False)
             return downstream_require
 
         if self.build:  # Build-requires
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/conan-2.0.16/conans/test/conftest.py 
new/conan-2.0.17/conans/test/conftest.py
--- old/conan-2.0.16/conans/test/conftest.py    2023-12-21 11:50:08.000000000 
+0100
+++ new/conan-2.0.17/conans/test/conftest.py    2024-01-10 16:33:14.000000000 
+0100
@@ -91,6 +91,9 @@
             "path": {'Windows': 'C:/cmake/cmake-3.23.1-win64-x64/bin',
                      'Darwin': '/Users/jenkins/cmake/cmake-3.23.1/bin',
                      'Linux': "/usr/share/cmake-3.23.5/bin"}
+        },
+        "3.28": {
+            "disabled": True  # TODO: Still not in CI
         }
     },
     'ninja': {

Reply via email to