Skip to content
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

Lib order in conanbuildinfo.props is generated randomly every time #4542

Closed
3 tasks done
sinall opened this issue Feb 18, 2019 · 19 comments
Closed
3 tasks done

Lib order in conanbuildinfo.props is generated randomly every time #4542

sinall opened this issue Feb 18, 2019 · 19 comments
Assignees
Milestone

Comments

@sinall
Copy link

sinall commented Feb 18, 2019

To help us debug your issue please explain:

  • I've read the CONTRIBUTING guide.
  • I've specified the Conan version, operating system version and any tool that can be relevant.
  • I've explained the steps to reproduce the error or the motivation/use case of the question/suggestion.

I'm using conan-1.12.2 on Windows-10.

conanfile.py

from conans import ConanFile

class MyConan(ConanFile):
	settings = "os", "compiler", "build_type", "arch"

	requires = (
		"OpenSSL/1.0.2q@conan/stable",
		"boost/1.69.0@conan/stable",
		"cpprestsdk/2.10.10@bincrafters/stable",
		"libzip/1.5.1@bincrafters/stable",
		"zlib/1.2.11@conan/stable",
		"gsl_microsoft/2.0.0@bincrafters/stable",
	)
	
	generators = "visual_studio"
	
	default_options = (
		"libzip:shared=True",
		"zlib:shared=True"
	)
		
	def imports(self):
		self.copy("*.dll", "..\\..\\" + str(self.settings.build_type), "bin")

The order of libboost_math libs is different each time I run conan install. It is annoying when using source control tool.

-      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboost_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboost_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10.lib;winhttp.lib;httpapi.lib;bcrypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_date_time.lib;libboost_coroutine.lib;libboost_context.lib;libboost_thread.lib;zlib.lib;bz2.lib;libboost_filesystem.lib;libboost_chrono.lib;libboost_locale.lib;libboost_math_c99l.lib;libboost_math_c99f.lib;libboost_math_tr1l.lib;libboost_math_tr1.lib;libboost_math_tr1f.lib;libboost_math_c99.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_regex.lib;libboost_exception.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboost_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboost_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10.lib;winhttp.lib;httpapi.lib;bcrypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_date_time.lib;libboost_coroutine.lib;libboost_context.lib;libboost_thread.lib;zlib.lib;bz2.lib;libboost_filesystem.lib;libboost_chrono.lib;libboost_locale.lib;libboost_math_c99f.lib;libboost_math_c99l.lib;libboost_math_tr1f.lib;libboost_math_tr1l.lib;libboost_math_c99.lib;libboost_math_tr1.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_regex.lib;libboost_exception.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>

@sinall sinall changed the title Lib order in conanbuildinfo.props is generated differently every time Lib order in conanbuildinfo.props is generated randomly every time Feb 18, 2019
@memsharded memsharded self-assigned this Feb 18, 2019
@memsharded
Copy link
Member

Hi @sinall

Thanks for reporting this issue.

It seems that this is mostly a boost package issue, not a conan issue, but I would discuss here and wait for feedback:

  • The boost package is using tools.collect_libs(), which internally uses files = os.listdir(lib_folder), which file order is not guaranteed.
  • The boost package is later iterating like this:
        gen_libs = tools.collect_libs(self)

        # List of lists, so if more than one matches the lib like serialization and wserialization
        # both will be added to the list
        ordered_libs = [[] for _ in range(len(lib_list))]

        # The order is important, reorder following the lib_list order
        missing_order_info = []
        for real_lib_name in gen_libs:
            for pos, alib in enumerate(lib_list):
                if os.path.splitext(real_lib_name)[0].split("-")[0].endswith(alib):
                    ordered_libs[pos].append(real_lib_name)
                    break

Possible fixes:

  • Change the boost recipe and make it use the same order always.
  • Fix the tools.collect_libs() to do a sort(os.listdir()) while iterating, to force it to return always the same order.

Will discuss with @lasote

@lasote
Copy link
Contributor

lasote commented Feb 20, 2019

I'm ok ordering the list of collect_libs().

@memsharded memsharded removed their assignment Feb 20, 2019
@memsharded
Copy link
Member

Perfect, yes, I agree, having a deterministic collect_libs() make sense.

@lasote lasote added this to the 1.14 milestone Mar 8, 2019
uilianries added a commit to uilianries/conan that referenced this issue Mar 18, 2019
- Sort library list name when calling collect_libs

Signed-off-by: Uilian Ries <uilianries@gmail.com>
memsharded pushed a commit that referenced this issue Mar 19, 2019
- Sort library list name when calling collect_libs

Signed-off-by: Uilian Ries <uilianries@gmail.com>
@memsharded
Copy link
Member

Implemented, will be released in Conan 1.14

@ghost ghost removed the stage: review label Mar 19, 2019
@sinall
Copy link
Author

sinall commented Mar 30, 2019

@memsharded I have installed Conan 1.14, but the issue still exists.
Is there any guide to resolve this issue?

@memsharded
Copy link
Member

Hi @sinall

This is really weird, now the output of collect_libs is sorted, so it should be deterministic. It is tested in the test suite.

Could you please provide more data to reproduce it? Besides your OS which is Windows 10, which python version are you using? How did you install Conan? Could you please double check that you don't have another Conan version in the python that might be executing (conan --version)?

BTW, something that I noticed, is that the issue was because of source control. The thing is that conanbuildinfo.props shouldn't be put under source control, because it can change for every user of the code, that might have the conan cache in a different place. Whenever possible, it will be the same, using %USERPROFILE% variables, but it the cache is somewhere else, it might not work, please take that into account.

@memsharded memsharded reopened this Apr 1, 2019
@sinall
Copy link
Author

sinall commented Apr 1, 2019

@memsharded

conanfile.py

from conans import ConanFile

class MyConan(ConanFile):
	settings = "os", "compiler", "build_type", "arch"

	requires = (
		"OpenSSL/1.0.2q@conan/stable",
		"boost/1.69.0@conan/stable",
		"cpprestsdk/2.10.10@bincrafters/stable",
		"libzip/1.5.1@bincrafters/stable",
		"zlib/1.2.11@conan/stable",
		"gsl_microsoft/2.0.0@bincrafters/stable",
	)
	
	generators = "visual_studio"
	
	default_options = (
		"libzip:shared=True",
		"zlib:shared=True"
	)
		
	def imports(self):
		self.copy("*.dll", "..\\..\\" + str(self.settings.build_type), "bin")

PS D:\Documents\Visual_Studio_2015\Projects\App> python --version
Python 3.5.5 :: Anaconda custom (64-bit)
PS D:\Documents\Visual_Studio_2015\Projects\App> conan --version
WARN: Migration: Updating settings.yml
WARN: ****************************************
WARN: settings.yml is locally modified, can't be updated
WARN: The new settings.yml has been stored in: C:\Users\Administrator\.conan\settings.yml.new
WARN: ****************************************
WARN: Migration: Generating missing metadata files
Migration: Generating missing metadata files finished OK!

Conan version 1.14.0
git diff conaninfo/Debug/conanbuildinfo.props
-      <AdditionalDependencies>cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;zip.lib;wbemuuid.lib;libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboost_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboost_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;bcrypt.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_date_time.lib;libboost_coroutine.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_filesystem.lib;libboost_chrono.lib;libboost_locale.lib;libboost_math_c99.lib;libboost_math_c99f.lib;libboost_math_c99l.lib;libboost_math_tr1.lib;libboost_math_tr1f.lib;libboost_math_tr1l.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_regex.lib;libboost_exception.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;zip.lib;wbemuuid.lib;libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboost_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboost_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;bcrypt.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_coroutine.lib;libboost_date_time.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_chrono.lib;libboost_filesystem.lib;libboost_locale.lib;libboost_math_c99f.lib;libboost_math_tr1f.lib;libboost_math_c99l.lib;libboost_math_c99.lib;libboost_math_tr1.lib;libboost_math_tr1l.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_exception.lib;libboost_regex.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>

The 'libboost_math' libs in the updated conanbuildinfo.props is not sorted.

@memsharded
Copy link
Member

Thanks for the feedback.

I have just realized what the issue is. The issue is not generated by tools.collect_libs() (though it was real that it was not deterministic enough), but from a different reason.

I am afraid you are hitting a problem by pulling 2 different versions of boost, you are using the modular boost from bincrafters, transitively from cpprestsdk, and the monolithic boost that is in conan-center. This can't be done, as both boost can be version incompatible, but they do not conflict because they have different names.

You'd need to decide which boost do you want to use, and then follow that. If you are going with the monolithic boost you have explicitly declared, you'd need to adapt (to fork) the cpprestsdk to use that boost.

Even if using the modular boost, the result shouldn't vary from consecutive installs. Was that the diff between different conan installs (both using Conan 1.14)? Or was it the result of Conan 1.14 with the previous stored version with a previous Conan version? Because if it is the latter, it makes sense, as the previous version was not deterministic.

@sinall
Copy link
Author

sinall commented Apr 1, 2019

The diff is between Conan 1.12 and Conan 1.14 (maybe 1.13 above).
Even with 1.12 they are not sorted, I manually modified the order before.

I will use monolithic boost. I have already declared it in conanfile.py. I thought Conan could resolve the conflict and manage the dependencies for me.

@memsharded
Copy link
Member

The diff is between Conan 1.12 and Conan 1.14 (maybe 1.13 above).
Even with 1.12 they are not sorted, I manually modified the order before.

Yes, they are not sorted, they will never be. Only from Conan 1.14 and newer, the output will be deterministic. It doesn't make sense to compare with previous Conan versions, but from Conan 1.14 and newer only.

Also, please take the above comment into account: it is not recommended to put the conanbuildinfo.props file in source control. It is a temporary file that should be generated in the user machine, not intended to be reused in different machines, as it might contain absolute paths.

I will use monolithic boost. I have already declared it in conanfile.py. I thought Conan could resolve the conflict and manage the dependencies for me.

That is the thing, Conan is not aware that the modular packages from bincrafters are packaging the same. If you decide to create a package for zlib, that is called "MyZCompression", conan doesn't have a way to know that it will collide with the zlib package. If the packages don't have the same name, they don't collide, and the modular boost packages have different names.

@sinall
Copy link
Author

sinall commented Apr 1, 2019

@memsharded I will consider ignoring conanbuildinfo.props. Since different branches may have different conanfile.py, I will regenerate those temp files once I switch to a different branch.
So what I really need to add into source control is 'conanfile.py', right?

On the other hand, I still expect Conan could generate deterministic <AdditionalDependencies> for the above conanfile.py.

@memsharded
Copy link
Member

So what I really need to add into source control is 'conanfile.py', right?

Yes, exactly. The conanfiles should be in source control. You also want to put in source control other things, like the profiles, or custom configuration (that you can install with conan config install)

On the other hand, I still expect Conan could generate deterministic for the above conanfile.py.

Yes, totally. From now on (versions Conan 1.14 and newer), Conan should generate always the same order for the <AdditionalDependencies>. It was previous versions that lacked that determinism.

@sinall
Copy link
Author

sinall commented Apr 3, 2019

@memsharded If I have only boost in requires, then they are sorted. But for above conanfile.py, <AdditionalDependencies> generated by Conan 1.14 is not sorted on my computer. Could you please have a try?

@memsharded
Copy link
Member

Hi @sinall

I have just tried again, with exactly your conanfile.py above. I add the conanbuildinfo.props to my source control, and do consecutive calls to conan install, with Conan 1.14. The result is always deterministic, it doesn't change.

Regarding the order, you should know that there are 2 orders:

  • the order of libraries defined within each package, and if a package contains more than one library, then the order is defined by the order declared in package_info() in self.cpp_info.libs. If you define it explicitly in a list, it will use that order. From conan 1.14 collect_libs will produce a sorted order.
  • the order of packages within the graph. In this case, the order is defined by the graph, according to graph levels (number of dependencies above), and between levels, by the order requires are defined in recipes.

In either case, from now the result is deterministic, and ordered according to the macro scale (graph) first, and by micro scale (libs within a package) second.

@sinall
Copy link
Author

sinall commented Apr 3, 2019

@memsharded libboost_math related libs change order every time with Conan 1.14.1 on my computer, is it because I use previously installed boost? You mentioned:

It seems that this is mostly a boost package issue, not a conan issue, but I would discuss here and wait for feedback:

In that case, how can I re-download and install boost?

@sinall
Copy link
Author

sinall commented Apr 3, 2019

Just tried to conan remove "boost/1.69.0@conan/stable", and re-install it again.
It still generate unsorted <AdditionalDependencies> every time.

PS D:\Documents\Visual_Studio_2015\Projects\ConanTest2> conan --version
Conan version 1.14.1
PS D:\Documents\Visual_Studio_2015\Projects\ConanTest2> git diff conaninfo/Debug/conanbuildinfo.props
diff --git a/conaninfo/Debug/conanbuildinfo.props b/conaninfo/Debug/conanbuildinfo.props
index 11c9061..6a2b112 100644
--- a/conaninfo/Debug/conanbuildinfo.props
+++ b/conaninfo/Debug/conanbuildinfo.props
@@ -95,7 +95,7 @@
     </ClCompile>
     <Link>
       <AdditionalLibraryDirectories>D:/.conan/060347/1/lib;D:/.conan/d5dcfe/1/lib;D:/.conan/data/libzip/1.5.1/bincrafte
rs/stable/package/3b2d343bfedc571aeac400a58bde6ad445a22446/lib;D:/.conan/data/websocketpp/0.7.0/bincrafters/stable/packa
ge/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib;D:/.conan/data/OpenSSL/1.0.2q/conan/stable/package/905af0349b2753e6dc595
39d1317f5af5de9dba9/lib;D:/.conan/a391b1/1/asio/lib;D:/.conan/acb686/1/coroutine/lib;D:/.conan/958977/1/context/lib;D:/.
conan/48b596/1/date_time/lib;D:/.conan/48b596/1/dynamic_bitset/lib;D:/.conan/48b596/1/iostreams/lib;D:/.conan/48b596/1/m
ultiprecision/lib;D:/.conan/48b596/1/random/lib;D:/.conan/48b596/1/serialization/lib;D:/.conan/48b596/1/spirit/lib;D:/.c
onan/48b596/1/thread/lib;D:/.conan/data/zlib/1.2.11/conan/stable/package/80166202f625101565fba7a537eb34961fbcaf89/lib;D:
/.conan/data/bzip2/1.0.6/conan/stable/package/ed382184232e3773ca604a5ef301b5d4c04bd866/lib;D:/.conan/49c082/1/chrono/lib
;D:/.conan/68f0df/1/endian/lib;D:/.conan/b13e7a/1/filesystem/lib;D:/.conan/3a306a/1/foreach/lib;D:/.conan/e2381f/1/local
e/lib;D:/.conan/0745d5/1/phoenix/lib;D:/.conan/523de6/1/pool/lib;D:/.conan/e65077/1/tokenizer/lib;D:/.conan/c26aae/1/tti
/lib;D:/.conan/16042b/1/variant/lib;D:/.conan/data/lzma/5.2.4/bincrafters/stable/package/a8aed829304fe5cc95659bc2d44fa16
28511899a/lib;D:/.conan/data/zstd/1.3.5/bincrafters/stable/package/a8aed829304fe5cc95659bc2d44fa1628511899a/lib;D:/.cona
n/7bba52/1/ratio/lib;D:/.conan/1fb3d2/1/system/lib;D:/.conan/4dd529/1/io/lib;D:/.conan/ead9fa/1/lexical_cast/lib;D:/.con
an/ead9fa/1/math/lib;D:/.conan/e173bd/1/proto/lib;D:/.conan/0e986d/1/atomic/lib;D:/.conan/287a23/1/rational/lib;D:/.cona
n/7df410/1/winapi/lib;D:/.conan/8df570/1/lambda/lib;D:/.conan/bb8cc6/1/algorithm/lib;D:/.conan/bb8cc6/1/range/lib;D:/.co
nan/49b8b3/1/array/lib;D:/.conan/fef55c/1/exception/lib;D:/.conan/affc08/1/function/lib;D:/.conan/eae6dd/1/numeric_conve
rsion/lib;D:/.conan/ddd774/1/regex/lib;D:/.conan/67ab8e/1/unordered/lib;D:/.conan/1d5e1f/1/bind/lib;D:/.conan/9bd617/1/t
ype_index/lib;D:/.conan/275c88/1/iterator/lib;D:/.conan/886f5a/1/container/lib;D:/.conan/2abfc1/1/concept_check/lib;D:/.
conan/483f18/1/conversion/lib;D:/.conan/53fe7b/1/fusion/lib;D:/.conan/15980a/1/optional/lib;D:/.conan/4da81e/1/intrusive
/lib;D:/.conan/205753/1/smart_ptr/lib;D:/.conan/e0a42f/1/tuple/lib;D:/.conan/a50c06/1/typeof/lib;D:/.conan/5b9b9d/1/func
tion_types/lib;D:/.conan/cb5616/1/move/lib;D:/.conan/d5ef0d/1/mpl/lib;D:/.conan/23e736/1/predef/lib;D:/.conan/8d3fd3/1/u
tility/lib;D:/.conan/4417b1/1/throw_exception/lib;D:/.conan/600597/1/container_hash/lib;D:/.conan/da0a74/1/detail/lib;D:
/.conan/cb9569/1/integer/lib;D:/.conan/38491a/1/core/lib;D:/.conan/a7c6bf/1/preprocessor/lib;D:/.conan/e742fa/1/type_tra
its/lib;D:/.conan/87a1fa/1/assert/lib;D:/.conan/d7119c/1/static_assert/lib;D:/.conan/16fe35/1/config/lib;%(AdditionalLib
raryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboos
t_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboos
t_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib
;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;bcr
ypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_coroutine.lib;libb
oost_date_time.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_chrono.lib;libboost_filesystem.li
b;libboost_locale.lib;libboost_math_c99l.lib;libboost_math_tr1f.lib;libboost_math_c99.lib;libboost_math_tr1l.lib;libboos
t_math_c99f.lib;libboost_math_tr1.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_excep
tion.lib;libboost_regex.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboos
t_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboos
t_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib
;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;bcr
ypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_coroutine.lib;libb
oost_date_time.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_chrono.lib;libboost_filesystem.li
b;libboost_locale.lib;libboost_math_tr1l.lib;libboost_math_tr1f.lib;libboost_math_c99l.lib;libboost_math_c99f.lib;libboo
st_math_tr1.lib;libboost_math_c99.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_excep
tion.lib;libboost_regex.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
     </Link>
     <Midl>
PS D:\Documents\Visual_Studio_2015\Projects\ConanTest2> git diff
diff --git a/conaninfo/Debug/conanbuildinfo.props b/conaninfo/Debug/conanbuildinfo.props
index 11c9061..6a2b112 100644
--- a/conaninfo/Debug/conanbuildinfo.props
+++ b/conaninfo/Debug/conanbuildinfo.props
@@ -95,7 +95,7 @@
     </ClCompile>
     <Link>
       <AdditionalLibraryDirectories>D:/.conan/060347/1/lib;D:/.conan/d5dcfe/1/lib;D:/.conan/data/libzip/1.5.1/bincrafte
rs/stable/package/3b2d343bfedc571aeac400a58bde6ad445a22446/lib;D:/.conan/data/websocketpp/0.7.0/bincrafters/stable/packa
ge/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib;D:/.conan/data/OpenSSL/1.0.2q/conan/stable/package/905af0349b2753e6dc595
39d1317f5af5de9dba9/lib;D:/.conan/a391b1/1/asio/lib;D:/.conan/acb686/1/coroutine/lib;D:/.conan/958977/1/context/lib;D:/.
conan/48b596/1/date_time/lib;D:/.conan/48b596/1/dynamic_bitset/lib;D:/.conan/48b596/1/iostreams/lib;D:/.conan/48b596/1/m
ultiprecision/lib;D:/.conan/48b596/1/random/lib;D:/.conan/48b596/1/serialization/lib;D:/.conan/48b596/1/spirit/lib;D:/.c
onan/48b596/1/thread/lib;D:/.conan/data/zlib/1.2.11/conan/stable/package/80166202f625101565fba7a537eb34961fbcaf89/lib;D:
/.conan/data/bzip2/1.0.6/conan/stable/package/ed382184232e3773ca604a5ef301b5d4c04bd866/lib;D:/.conan/49c082/1/chrono/lib
;D:/.conan/68f0df/1/endian/lib;D:/.conan/b13e7a/1/filesystem/lib;D:/.conan/3a306a/1/foreach/lib;D:/.conan/e2381f/1/local
e/lib;D:/.conan/0745d5/1/phoenix/lib;D:/.conan/523de6/1/pool/lib;D:/.conan/e65077/1/tokenizer/lib;D:/.conan/c26aae/1/tti
/lib;D:/.conan/16042b/1/variant/lib;D:/.conan/data/lzma/5.2.4/bincrafters/stable/package/a8aed829304fe5cc95659bc2d44fa16
28511899a/lib;D:/.conan/data/zstd/1.3.5/bincrafters/stable/package/a8aed829304fe5cc95659bc2d44fa1628511899a/lib;D:/.cona
n/7bba52/1/ratio/lib;D:/.conan/1fb3d2/1/system/lib;D:/.conan/4dd529/1/io/lib;D:/.conan/ead9fa/1/lexical_cast/lib;D:/.con
an/ead9fa/1/math/lib;D:/.conan/e173bd/1/proto/lib;D:/.conan/0e986d/1/atomic/lib;D:/.conan/287a23/1/rational/lib;D:/.cona
n/7df410/1/winapi/lib;D:/.conan/8df570/1/lambda/lib;D:/.conan/bb8cc6/1/algorithm/lib;D:/.conan/bb8cc6/1/range/lib;D:/.co
nan/49b8b3/1/array/lib;D:/.conan/fef55c/1/exception/lib;D:/.conan/affc08/1/function/lib;D:/.conan/eae6dd/1/numeric_conve
rsion/lib;D:/.conan/ddd774/1/regex/lib;D:/.conan/67ab8e/1/unordered/lib;D:/.conan/1d5e1f/1/bind/lib;D:/.conan/9bd617/1/t
ype_index/lib;D:/.conan/275c88/1/iterator/lib;D:/.conan/886f5a/1/container/lib;D:/.conan/2abfc1/1/concept_check/lib;D:/.
conan/483f18/1/conversion/lib;D:/.conan/53fe7b/1/fusion/lib;D:/.conan/15980a/1/optional/lib;D:/.conan/4da81e/1/intrusive
/lib;D:/.conan/205753/1/smart_ptr/lib;D:/.conan/e0a42f/1/tuple/lib;D:/.conan/a50c06/1/typeof/lib;D:/.conan/5b9b9d/1/func
tion_types/lib;D:/.conan/cb5616/1/move/lib;D:/.conan/d5ef0d/1/mpl/lib;D:/.conan/23e736/1/predef/lib;D:/.conan/8d3fd3/1/u
tility/lib;D:/.conan/4417b1/1/throw_exception/lib;D:/.conan/600597/1/container_hash/lib;D:/.conan/da0a74/1/detail/lib;D:
/.conan/cb9569/1/integer/lib;D:/.conan/38491a/1/core/lib;D:/.conan/a7c6bf/1/preprocessor/lib;D:/.conan/e742fa/1/type_tra
its/lib;D:/.conan/87a1fa/1/assert/lib;D:/.conan/d7119c/1/static_assert/lib;D:/.conan/16fe35/1/config/lib;%(AdditionalLib
raryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboos
t_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboos
t_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib
;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;bcr
ypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_coroutine.lib;libb
oost_date_time.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_chrono.lib;libboost_filesystem.li
b;libboost_locale.lib;libboost_math_c99l.lib;libboost_math_tr1f.lib;libboost_math_c99.lib;libboost_math_tr1l.lib;libboos
t_math_c99f.lib;libboost_math_tr1.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_excep
tion.lib;libboost_regex.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libboost_wave.lib;libboost_contract.lib;libboost_graph.lib;libboost_iostreams.lib;libboos
t_log.lib;libboost_program_options.lib;libboost_serialization.lib;libboost_wserialization.lib;libboost_fiber.lib;libboos
t_timer.lib;libboost_type_erasure.lib;libboost_log_setup.lib;libboost_stacktrace_noop.lib;libboost_stacktrace_windbg.lib
;libboost_stacktrace_windbg_cached.lib;libboost_unit_test_framework.lib;cpprest140_2_10d.lib;winhttp.lib;httpapi.lib;bcr
ypt.lib;zip.lib;ssleay32.lib;libeay32.lib;crypt32.lib;msi.lib;ws2_32.lib;libboost_random.lib;libboost_coroutine.lib;libb
oost_date_time.lib;libboost_context.lib;libboost_thread.lib;zlibd.lib;bz2.lib;libboost_chrono.lib;libboost_filesystem.li
b;libboost_locale.lib;libboost_math_tr1l.lib;libboost_math_tr1f.lib;libboost_math_c99l.lib;libboost_math_c99f.lib;libboo
st_math_tr1.lib;libboost_math_c99.lib;liblzma.lib;zstd_static.lib;libboost_system.lib;libboost_atomic.lib;libboost_excep
tion.lib;libboost_regex.lib;libboost_container.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions> %(AdditionalOptions)</AdditionalOptions>
     </Link>
     <Midl>
diff --git a/conaninfo/Debug/conanbuildinfo.txt b/conaninfo/Debug/conanbuildinfo.txt
index d99b63a..e39dcf5 100644
--- a/conaninfo/Debug/conanbuildinfo.txt
+++ b/conaninfo/Debug/conanbuildinfo.txt
@@ -340,12 +340,12 @@ bz2
 libboost_chrono
 libboost_filesystem
 libboost_locale
-libboost_math_c99l
-libboost_math_tr1f
-libboost_math_c99
 libboost_math_tr1l
+libboost_math_tr1f
+libboost_math_c99l
 libboost_math_c99f
 libboost_math_tr1
+libboost_math_c99
 liblzma
 zstd_static
 libboost_system
@@ -1457,12 +1457,12 @@ D:/.conan/ead9fa/1/math/lib
 D:/.conan/9d09df/1/

 [libs_boost_math]
-libboost_math_c99l
-libboost_math_tr1f
-libboost_math_c99
 libboost_math_tr1l
+libboost_math_tr1f
+libboost_math_c99l
 libboost_math_c99f
 libboost_math_tr1
+libboost_math_c99

 [defines_boost_math]
 BOOST_ALL_NO_LIB=1
(END)

@memsharded
Copy link
Member

Can't reproduce here.

My output is always the same:

[libs_boost_math]
libboost_math_c99
libboost_math_tr1
libboost_math_c99f
libboost_math_tr1f
libboost_math_c99l
libboost_math_tr1l

I'll try to come up with a script so we can both test it exactly the same way.

@sinall
Copy link
Author

sinall commented Apr 3, 2019

OK.

Should it be?

[libs_boost_math]
libboost_math_c99
libboost_math_c99f
libboost_math_c99l
libboost_math_tr1
libboost_math_tr1f
libboost_math_tr1l

@sinall
Copy link
Author

sinall commented Apr 9, 2019

@memsharded Any findings? Previously, if I have only boost in conanfile.py, then it generates libs in order. So I guess there's something wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants