clang6 sysutils/facter

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

clang6 sysutils/facter

Alexander Bluhm
Hi,

This fixes facter build with clang6.

/usr/include/c++/v1/memory:2541:13: error: delete called on 'facter::facts::external::resolver' that is abstract but has non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
            delete __ptr;
            ^
/usr/include/c++/v1/memory:2541:13: error: delete called on non-final 'facter::facts::collection' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
            delete __ptr;
            ^

ok?

bluhm

Index: sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
===================================================================
RCS file: sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
diff -N sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp 15 Apr 2018 22:36:22 -0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: lib/inc/facter/facts/collection.hpp
+--- lib/inc/facter/facts/collection.hpp.orig
++++ lib/inc/facter/facts/collection.hpp
+@@ -101,7 +101,7 @@ namespace facter { namespace facts {
+         /**
+          * Destructor for fact collection.
+          */
+-        ~collection();
++        virtual ~collection();
+
+         /**
+          * Prevents the fact collection from being copied.
Index: sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
===================================================================
RCS file: sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
diff -N sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp 16 Apr 2018 00:07:52 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Index: lib/inc/facter/facts/external/resolver.hpp
+--- lib/inc/facter/facts/external/resolver.hpp.orig
++++ lib/inc/facter/facts/external/resolver.hpp
+@@ -44,6 +44,11 @@ namespace facter { namespace facts { namespace externa
+          * @param facts The fact collection to populate the external facts into.
+          */
+         virtual void resolve(std::string const& path, collection& facts) const = 0;
++
++        /**
++         * Destructor for external resolver.
++         */
++        virtual ~resolver() {}
+     };
+
+ }}}  // namespace facter::facts::external

Reply | Threaded
Open this post in threaded view
|

Re: clang6 sysutils/facter

Jeremie Courreges-Anglas-2

+cc maintainer

On Mon, Apr 16 2018, Alexander Bluhm <[hidden email]> wrote:

> Hi,
>
> This fixes facter build with clang6.
>
> /usr/include/c++/v1/memory:2541:13: error: delete called on 'facter::facts::external::resolver' that is abstract but has non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
>             delete __ptr;
>             ^
> /usr/include/c++/v1/memory:2541:13: error: delete called on non-final 'facter::facts::collection' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
>             delete __ptr;
>             ^
>
> ok?

We should really stop using -Werror (iiuc those CFLAGS come from
leatherman) but the fix looks right anyway.  ok jca@

> bluhm
>
> Index: sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
> ===================================================================
> RCS file: sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
> diff -N sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ sysutils/facter/patches/patch-lib_inc_facter_facts_collection_hpp 15 Apr 2018 22:36:22 -0000
> @@ -0,0 +1,14 @@
> +$OpenBSD$
> +
> +Index: lib/inc/facter/facts/collection.hpp
> +--- lib/inc/facter/facts/collection.hpp.orig
> ++++ lib/inc/facter/facts/collection.hpp
> +@@ -101,7 +101,7 @@ namespace facter { namespace facts {
> +         /**
> +          * Destructor for fact collection.
> +          */
> +-        ~collection();
> ++        virtual ~collection();
> +
> +         /**
> +          * Prevents the fact collection from being copied.
> Index: sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
> ===================================================================
> RCS file: sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
> diff -N sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ sysutils/facter/patches/patch-lib_inc_facter_facts_external_resolver_hpp 16 Apr 2018 00:07:52 -0000
> @@ -0,0 +1,17 @@
> +$OpenBSD$
> +
> +Index: lib/inc/facter/facts/external/resolver.hpp
> +--- lib/inc/facter/facts/external/resolver.hpp.orig
> ++++ lib/inc/facter/facts/external/resolver.hpp
> +@@ -44,6 +44,11 @@ namespace facter { namespace facts { namespace externa
> +          * @param facts The fact collection to populate the external facts into.
> +          */
> +         virtual void resolve(std::string const& path, collection& facts) const = 0;
> ++
> ++        /**
> ++         * Destructor for external resolver.
> ++         */
> ++        virtual ~resolver() {}
> +     };
> +
> + }}}  // namespace facter::facts::external
>

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE