diff options
author | 2020-10-20 00:11:14 +0200 | |
---|---|---|
committer | 2020-10-24 21:32:22 +0200 | |
commit | 9cc74b0b688396be0f12c0c4c6593cfaccdd2489 (patch) | |
tree | ed4c5f1a1f24e5f605961a6df00a63b13818e298 | |
parent | 6e995e8d5f0e763b6dd6adef7b014eaf54121334 (diff) | |
download | paludis-9cc74b0b688396be0f12c0c4c6593cfaccdd2489.tar.gz paludis-9cc74b0b688396be0f12c0c4c6593cfaccdd2489.tar.xz |
Fix symbol visibility errors with clang
LabelsDepSpec visibility:
133: >>> test action_TEST 133: Traceback (most recent call last):
133: File "/home/marv/devel/paludis-worktrees/master/python/action_TEST.py", line 21, in <module>
133: from paludis import *
133: ImportError: /home/marv/devel/paludis-worktrees/master/build-clang/python/libpaludispython_3.0.so.300: undefined symbol: _ZN7paludis19spec_tree_internals14BasicInne
rNodeINS_8SpecTreeINS_13TypeListEntryINS_20SpecTreeLeafNodeTypeINS_14PackageDepSpecEEENS3_INS4_INS_12BlockDepSpecEEENS3_INS4_INS_13LabelsDepSpecINS_17DependenciesLabelEE
EEENS3_INS4_INS_15NamedSetDepSpecEEENS3_INS_21SpecTreeInnerNodeTypeINS_10AllDepSpecEEENS3_INSF_INS_10AnyDepSpecEEENS3_INSF_INS_18ConditionalDepSpecEEENS_12TypeListTailEE
EEEEEEEEEEEEESG_EEE6appendISB_EESt10shared_ptrINSU_8NodeTypeIT_E4TypeEERKSX_ISZ_E
133: >>> test action_TEST returned 1 [1s]
133: >>> exiting with error for test action_TEST
1/1 Test #133: python_action ....................***Failed 0.03 sec
The missing symbol is:
std::shared_ptr<DependencySpecTree::NodeType<paludis::LabelsDepSpec<paludis::DependenciesLabel>>::Type>
paludis::spec_tree_internals::BasicInnerNode<paludis::SpecTree<...>>::append<
paludis::LabelsDepSpec<paludis::DependenciesLabel>>(
std::shared_ptr<paludis::LabelsDepSpec<paludis::DependenciesLabel> > const&)
=> Move LabelsDepSpec<DependenciesLabel> instantiation to header file
Missing dep_spec.hh include:
133: >>> test action_TEST
133: Traceback (most recent call last):
133: File "/home/marv/devel/paludis-worktrees/master/python/action_TEST.py", line 21, in <module>
133: from paludis import *
133: ImportError: /home/marv/devel/paludis-worktrees/master/build-clang/python/libpaludispython_3.0.so.300: undefined symbol: _ZN7paludis19spec_tree_internals14BasicInnerNodeINS_8SpecTreeINS_13TypeListEntryINS_20SpecTreeLeafNodeTypeINS_14PackageDepSpecEEENS3_INS4_INS_12BlockDepSpecEEENS3_INS4_INS_13LabelsDepSpecINS_17DependenciesLabelEEEEENS3_INS4_INS_15NamedSetDepSpecEEENS3_INS_21SpecTreeInnerNodeTypeINS_10AllDepSpecEEENS3_INSF_INS_10AnyDepSpecEEENS3_INSF_INS_18ConditionalDepSpecEEENS_12TypeListTailEEEEEEEEEEEEEEESG_EEE6appendISD_EESt10shared_ptrINSU_8NodeTypeIT_E4TypeEERKSX_ISZ_E
133: >>> test action_TEST returned 1 [0s]
133: >>> exiting with error for test action_TEST
1/1 Test #133: python_action ....................***Failed 0.03 sec
The missing symbol is:
std::shared_ptr<DependencySpecTree::NodeType<paludis::NamedSetDepSpec>::Type>
paludis::spec_tree_internals::BasicInnerNode<DependencySpecTree>::append<
paludis::NamedSetDepSpec>(std::shared_ptr<paludis::NamedSetDepSpec> const&)
=> Provide full type for NamedSetDepSpec
-rw-r--r-- | paludis/dep_spec.cc | 4 | ||||
-rw-r--r-- | paludis/dep_spec.hh | 3 | ||||
-rw-r--r-- | paludis/spec_tree.cc | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/paludis/dep_spec.cc b/paludis/dep_spec.cc index fc5c98139..e603fc443 100644 --- a/paludis/dep_spec.cc +++ b/paludis/dep_spec.cc @@ -641,8 +641,8 @@ PackageDepSpec::data() const namespace paludis { - template class PALUDIS_VISIBLE LabelsDepSpec<URILabel>; - template class PALUDIS_VISIBLE LabelsDepSpec<DependenciesLabel>; + template class LabelsDepSpec<URILabel>; + template class LabelsDepSpec<DependenciesLabel>; template class Cloneable<DepSpec>; template class Pimp<ConditionalDepSpec>; diff --git a/paludis/dep_spec.hh b/paludis/dep_spec.hh index d4e5f5746..a74711329 100644 --- a/paludis/dep_spec.hh +++ b/paludis/dep_spec.hh @@ -710,6 +710,9 @@ namespace paludis const std::string label() const PALUDIS_ATTRIBUTE((warn_unused_result)); }; + extern template class PALUDIS_VISIBLE LabelsDepSpec<URILabel>; + extern template class PALUDIS_VISIBLE LabelsDepSpec<DependenciesLabel>; + extern template class PALUDIS_VISIBLE WrappedForwardIterator<DependenciesLabelsDepSpec::ConstIteratorTag, const std::shared_ptr<const DependenciesLabel> >; extern template class PALUDIS_VISIBLE WrappedForwardIterator<URILabelsDepSpec::ConstIteratorTag, diff --git a/paludis/spec_tree.cc b/paludis/spec_tree.cc index e6c68934c..d382f8b99 100644 --- a/paludis/spec_tree.cc +++ b/paludis/spec_tree.cc @@ -17,6 +17,7 @@ * Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <paludis/dep_spec.hh> #include <paludis/spec_tree.hh> #include <paludis/util/sequence-impl.hh> #include <paludis/util/wrapped_forward_iterator-impl.hh> |