This is an automated email from the ASF dual-hosted git repository.

pengzheng pushed a commit to branch feature/483-conan-2-support
in repository https://gitbox.apache.org/repos/asf/celix.git


The following commit(s) were added to refs/heads/feature/483-conan-2-support by 
this push:
     new ff7ad59d Fix linking error caused by private linking of transitive 
dependencies and wrong cwd.
ff7ad59d is described below

commit ff7ad59d20072e3ea6e86df3c4edfc315c077c9b
Author: PengZheng <[email protected]>
AuthorDate: Wed Aug 23 14:37:48 2023 +0800

    Fix linking error caused by private linking of transitive dependencies and 
wrong cwd.
---
 examples/conan_test_package_v2/conanfile.py | 189 ++++++++++++++--------------
 1 file changed, 98 insertions(+), 91 deletions(-)

diff --git a/examples/conan_test_package_v2/conanfile.py 
b/examples/conan_test_package_v2/conanfile.py
index 587a6acb..cf2aca10 100644
--- a/examples/conan_test_package_v2/conanfile.py
+++ b/examples/conan_test_package_v2/conanfile.py
@@ -18,6 +18,7 @@
 from conan import ConanFile
 from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
 from conan.tools.build import can_run
+from conan.tools.files import chdir
 import os
 
 
@@ -75,6 +76,11 @@ class TestPackageConan(ConanFile):
         tc.cache_variables["TEST_CELIX_DFI"] = celix_options.build_celix_dfi
         tc.cache_variables["TEST_UTILS"] = celix_options.build_utils
         tc.cache_variables["TEST_COMPONENTS_READY_CHECK"] = 
celix_options.build_components_ready_check
+        # the following is workaround 
https://github.com/conan-io/conan/issues/7192
+        if self.settings.os == "Linux":
+            tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = 
"-Wl,--unresolved-symbols=ignore-in-shared-libs"
+        elif self.settings.os == "Macos":
+            tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = "-Wl,-undefined 
-Wl,dynamic_lookup"
         tc.user_presets_path = False
         tc.generate()
 
@@ -85,94 +91,95 @@ class TestPackageConan(ConanFile):
 
     def test(self):
         if can_run(self):
-            celix_options = self.dependencies["celix"].options
-            if celix_options.build_framework:
-                self.run("./use_framework", run_environment=True)
-            if celix_options.build_http_admin:
-                self.run("./use_http_admin", cwd=os.path.join("deploy", 
"use_http_admin"), run_environment=True)
-            if celix_options.build_log_service:
-                self.run("./use_log_writer", cwd=os.path.join("deploy", 
"use_log_writer"), run_environment=True)
-            if celix_options.build_syslog_writer:
-                self.run("./use_syslog_writer", cwd=os.path.join("deploy", 
"use_syslog_writer"), run_environment=True)
-            if celix_options.build_pubsub:
-                self.run("./use_my_psa", cwd=os.path.join("deploy", 
"use_my_psa"), run_environment=True)
-            if celix_options.build_pubsub_psa_zmq:
-                self.run("./use_psa_zmq", cwd=os.path.join("deploy", 
"use_psa_zmq"), run_environment=True)
-            if celix_options.build_pubsub_psa_tcp:
-                self.run("./use_psa_tcp", cwd=os.path.join("deploy", 
"use_psa_tcp"), run_environment=True)
-            if celix_options.build_pubsub_psa_udp_mc:
-                self.run("./use_psa_udp_mc", cwd=os.path.join("deploy", 
"use_psa_udp_mc"), run_environment=True)
-            if celix_options.build_pubsub_psa_ws:
-                self.run("./use_psa_ws", cwd=os.path.join("deploy", 
"use_psa_ws"), run_environment=True)
-            if celix_options.build_pubsub_discovery_etcd and 
celix_options.build_launcher:
-                self.run("./use_psa_discovery_etcd",
-                         cwd=os.path.join("deploy", "use_psa_discovery_etcd"), 
run_environment=True)
-            if celix_options.build_remote_service_admin:
-                self.run("./use_my_rsa", cwd=os.path.join("deploy", 
"use_my_rsa"), run_environment=True)
-                self.run("./use_c_rsa_spi", run_environment=True)
-            if celix_options.build_rsa_remote_service_admin_dfi and 
celix_options.build_launcher:
-                self.run("./use_rsa_dfi", cwd=os.path.join("deploy", 
"use_rsa_dfi"), run_environment=True)
-            if celix_options.build_rsa_remote_service_admin_shm_v2:
-                self.run("./use_rsa_shm_v2", cwd=os.path.join("deploy", 
"use_rsa_shm_v2"), run_environment=True)
-            if celix_options.build_rsa_json_rpc:
-                self.run("./use_rsa_rpc_json", cwd=os.path.join("deploy", 
"use_rsa_rpc_json"), run_environment=True)
-            if celix_options.build_rsa_discovery_configured and 
celix_options.build_launcher:
-                self.run("./use_rsa_configured", cwd=os.path.join("deploy", 
"use_rsa_configured"), run_environment=True)
-            if celix_options.build_rsa_discovery_etcd and 
celix_options.build_launcher:
-                self.run("./use_rsa_etcd", cwd=os.path.join("deploy", 
"use_rsa_etcd"), run_environment=True)
-            if celix_options.build_rsa_discovery_zeroconf:
-                self.run("./use_rsa_discovery_zeroconf",
-                         cwd=os.path.join("deploy", 
"use_rsa_discovery_zeroconf"), run_environment=True)
-            if celix_options.build_shell:
-                self.run("./use_shell", run_environment=True)
-                if celix_options.celix_cxx17 or celix_options.celix_cxx14:
-                    self.run("./use_cxx_shell", run_environment=True)
-            if celix_options.build_remote_shell:
-                self.run("./use_remote_shell", cwd=os.path.join("deploy", 
"use_remote_shell"), run_environment=True)
-            if celix_options.build_shell_tui:
-                self.run("./use_shell_tui", cwd=os.path.join("deploy", 
"use_shell_tui"), run_environment=True)
-            if celix_options.build_shell_wui:
-                self.run("./use_shell_wui", cwd=os.path.join("deploy", 
"use_shell_wui"), run_environment=True)
-            if celix_options.build_celix_etcdlib:
-                self.run("./use_etcd_lib", run_environment=True)
-            if celix_options.build_launcher:
-                self.run("./use_launcher", cwd=os.path.join("deploy", 
"use_launcher"), run_environment=True)
-            if celix_options.build_promises:
-                self.run("./use_promises", run_environment=True)
-            if celix_options.build_pushstreams:
-                self.run("./use_pushstreams", run_environment=True)
-            if celix_options.build_deployment_admin:
-                self.run("./use_deployment_admin",
-                         cwd=os.path.join("deploy", "use_deployment_admin"), 
run_environment=True)
-            if celix_options.build_log_helper:
-                self.run("./use_log_helper", run_environment=True)
-            if celix_options.build_log_service_api:
-                self.run("./use_log_service_api", run_environment=True)
-            if celix_options.build_pubsub_wire_protocol_v1:
-                self.run("./use_pubsub_wire_protocol_v1",
-                         cwd=os.path.join("deploy", 
"use_pubsub_wire_protocol_v1"), run_environment=True)
-            if celix_options.build_pubsub_wire_protocol_v2:
-                self.run("./use_pubsub_wire_protocol_v2",
-                         cwd=os.path.join("deploy", 
"use_pubsub_wire_protocol_v2"), run_environment=True)
-            if celix_options.build_pubsub_json_serializer:
-                self.run("./use_pubsub_json_serializer",
-                         cwd=os.path.join("deploy", 
"use_pubsub_json_serializer"), run_environment=True)
-            if celix_options.build_pubsub_avrobin_serializer:
-                self.run("./use_pubsub_avrobin_serializer",
-                         cwd=os.path.join("deploy", 
"use_pubsub_avrobin_serializer"), run_environment=True)
-            if celix_options.build_cxx_remote_service_admin:
-                self.run("./use_cxx_remote_service_admin",
-                         cwd=os.path.join("deploy", 
"use_cxx_remote_service_admin"), run_environment=True)
-                self.run("./use_rsa_spi", run_environment=True)
-            if celix_options.build_shell_api:
-                self.run("./use_shell_api", run_environment=True)
-            if celix_options.build_shell_bonjour:
-                self.run("./use_shell_bonjour",
-                         cwd=os.path.join("deploy", "use_shell_bonjour"), 
run_environment=True)
-            if celix_options.build_celix_dfi:
-                self.run("./use_celix_dfi", run_environment=True)
-            if celix_options.build_utils:
-                self.run("./use_utils", run_environment=True)
-            if celix_options.build_components_ready_check:
-                self.run("./use_components_ready_check",
-                         cwd=os.path.join("deploy", 
"use_components_ready_check"), run_environment=True)
+            with chdir(self, self.build_folder):
+                celix_options = self.dependencies["celix"].options
+                if celix_options.build_framework:
+                    self.run("./conan_test_package/use_framework", 
env="conanrun")
+                if celix_options.build_http_admin:
+                    self.run("./use_http_admin", cwd=os.path.join("deploy", 
"use_http_admin"), env="conanrun")
+                if celix_options.build_log_service:
+                    self.run("./use_log_writer", cwd=os.path.join("deploy", 
"use_log_writer"), env="conanrun")
+                if celix_options.build_syslog_writer:
+                    self.run("./use_syslog_writer", cwd=os.path.join("deploy", 
"use_syslog_writer"), env="conanrun")
+                if celix_options.build_pubsub:
+                    self.run("./use_my_psa", cwd=os.path.join("deploy", 
"use_my_psa"), env="conanrun")
+                if celix_options.build_pubsub_psa_zmq:
+                    self.run("./use_psa_zmq", cwd=os.path.join("deploy", 
"use_psa_zmq"), env="conanrun")
+                if celix_options.build_pubsub_psa_tcp:
+                    self.run("./use_psa_tcp", cwd=os.path.join("deploy", 
"use_psa_tcp"), env="conanrun")
+                if celix_options.build_pubsub_psa_udp_mc:
+                    self.run("./use_psa_udp_mc", cwd=os.path.join("deploy", 
"use_psa_udp_mc"), env="conanrun")
+                if celix_options.build_pubsub_psa_ws:
+                    self.run("./use_psa_ws", cwd=os.path.join("deploy", 
"use_psa_ws"), env="conanrun")
+                if celix_options.build_pubsub_discovery_etcd and 
celix_options.build_launcher:
+                    self.run("./use_psa_discovery_etcd",
+                             cwd=os.path.join("deploy", 
"use_psa_discovery_etcd"), env="conanrun")
+                if celix_options.build_remote_service_admin:
+                    self.run("./use_my_rsa", cwd=os.path.join("deploy", 
"use_my_rsa"), env="conanrun")
+                    self.run("./conan_test_package/use_c_rsa_spi", 
env="conanrun")
+                if celix_options.build_rsa_remote_service_admin_dfi and 
celix_options.build_launcher:
+                    self.run("./use_rsa_dfi", cwd=os.path.join("deploy", 
"use_rsa_dfi"), env="conanrun")
+                if celix_options.build_rsa_remote_service_admin_shm_v2:
+                    self.run("./use_rsa_shm_v2", cwd=os.path.join("deploy", 
"use_rsa_shm_v2"), env="conanrun")
+                if celix_options.build_rsa_json_rpc:
+                    self.run("./use_rsa_rpc_json", cwd=os.path.join("deploy", 
"use_rsa_rpc_json"), env="conanrun")
+                if celix_options.build_rsa_discovery_configured and 
celix_options.build_launcher:
+                    self.run("./use_rsa_configured", 
cwd=os.path.join("deploy", "use_rsa_configured"), env="conanrun")
+                if celix_options.build_rsa_discovery_etcd and 
celix_options.build_launcher:
+                    self.run("./use_rsa_etcd", cwd=os.path.join("deploy", 
"use_rsa_etcd"), env="conanrun")
+                if celix_options.build_rsa_discovery_zeroconf:
+                    self.run("./use_rsa_discovery_zeroconf",
+                             cwd=os.path.join("deploy", 
"use_rsa_discovery_zeroconf"), env="conanrun")
+                if celix_options.build_shell:
+                    self.run("./conan_test_package/use_shell", env="conanrun")
+                    if celix_options.celix_cxx17 or celix_options.celix_cxx14:
+                        self.run("./conan_test_package/use_cxx_shell", 
env="conanrun")
+                if celix_options.build_remote_shell:
+                    self.run("./use_remote_shell", cwd=os.path.join("deploy", 
"use_remote_shell"), env="conanrun")
+                if celix_options.build_shell_tui:
+                    self.run("./use_shell_tui", cwd=os.path.join("deploy", 
"use_shell_tui"), env="conanrun")
+                if celix_options.build_shell_wui:
+                    self.run("./use_shell_wui", cwd=os.path.join("deploy", 
"use_shell_wui"), env="conanrun")
+                if celix_options.build_celix_etcdlib:
+                    self.run("./conan_test_package/use_etcd_lib", 
env="conanrun")
+                if celix_options.build_launcher:
+                    self.run("./use_launcher", cwd=os.path.join("deploy", 
"use_launcher"), env="conanrun")
+                if celix_options.build_promises:
+                    self.run("./conan_test_package/use_promises", 
env="conanrun")
+                if celix_options.build_pushstreams:
+                    self.run("./conan_test_package/use_pushstreams", 
env="conanrun")
+                if celix_options.build_deployment_admin:
+                    self.run("./use_deployment_admin",
+                             cwd=os.path.join("deploy", 
"use_deployment_admin"), env="conanrun")
+                if celix_options.build_log_helper:
+                    self.run("./conan_test_package/use_log_helper", 
env="conanrun")
+                if celix_options.build_log_service_api:
+                    self.run("./conan_test_package/use_log_service_api", 
env="conanrun")
+                if celix_options.build_pubsub_wire_protocol_v1:
+                    self.run("./use_pubsub_wire_protocol_v1",
+                             cwd=os.path.join("deploy", 
"use_pubsub_wire_protocol_v1"), env="conanrun")
+                if celix_options.build_pubsub_wire_protocol_v2:
+                    self.run("./use_pubsub_wire_protocol_v2",
+                             cwd=os.path.join("deploy", 
"use_pubsub_wire_protocol_v2"), env="conanrun")
+                if celix_options.build_pubsub_json_serializer:
+                    self.run("./use_pubsub_json_serializer",
+                             cwd=os.path.join("deploy", 
"use_pubsub_json_serializer"), env="conanrun")
+                if celix_options.build_pubsub_avrobin_serializer:
+                    self.run("./use_pubsub_avrobin_serializer",
+                             cwd=os.path.join("deploy", 
"use_pubsub_avrobin_serializer"), env="conanrun")
+                if celix_options.build_cxx_remote_service_admin:
+                    self.run("./use_cxx_remote_service_admin",
+                             cwd=os.path.join("deploy", 
"use_cxx_remote_service_admin"), env="conanrun")
+                    self.run("./conan_test_package/use_rsa_spi", 
env="conanrun")
+                if celix_options.build_shell_api:
+                    self.run("./conan_test_package/use_shell_api", 
env="conanrun")
+                if celix_options.build_shell_bonjour:
+                    self.run("./use_shell_bonjour",
+                             cwd=os.path.join("deploy", "use_shell_bonjour"), 
env="conanrun")
+                if celix_options.build_celix_dfi:
+                    self.run("./conan_test_package/use_celix_dfi", 
env="conanrun")
+                if celix_options.build_utils:
+                    self.run("./conan_test_package/use_utils", env="conanrun")
+                if celix_options.build_components_ready_check:
+                    self.run("./use_components_ready_check",
+                             cwd=os.path.join("deploy", 
"use_components_ready_check"), env="conanrun")

Reply via email to