Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2017 13:09:34 +0000 (UTC)
From:      =?UTF-8?Q?Romain_Tarti=c3=a8re?= <romain@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r447826 - in head/sysutils/facter: . files
Message-ID:  <201708121309.v7CD9Yrg080778@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: romain
Date: Sat Aug 12 13:09:34 2017
New Revision: 447826
URL: https://svnweb.freebsd.org/changeset/ports/447826

Log:
  Update to 3.7.1
  
  - Prepare the port to have a slave-port: java-facter;
  - Add a bunch of patches that where merged upstream but not yet released so
    that facter can be a drop-in replacement of rubygem-facter.
  
  With hat:	puppet

Added:
  head/sysutils/facter/files/patch-cmake_FindCPPHOCON.cmake   (contents, props changed)
  head/sysutils/facter/files/patch-lib_CMakeLists.txt   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_facter_facts_fact.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_facter_facts_vm.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_memory__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_operating__system__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_virtualization__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zfs__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zpool__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_operating__system__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zfs__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zpool__resolver.hpp   (contents, props changed)
  head/sysutils/facter/files/patch-lib_schema_facter.yaml   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_bsd_collection.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_collection.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_memory__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_operating__system__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_virtualization__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_zfs__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_freebsd_zpool__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_openbsd_collection.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_resolvers_operating__system__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_resolvers_zfs__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_src_facts_resolvers_zpool__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zfs__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zpool__resolver.cc   (contents, props changed)
  head/sysutils/facter/files/patch-lib_tests_facts_schema.cc   (contents, props changed)
Deleted:
  head/sysutils/facter/files/patch-vendor_leatherman_cmake_cflags.cmake
  head/sysutils/facter/files/patch-vendor_leatherman_logging_src_logging.cc
Modified:
  head/sysutils/facter/Makefile
  head/sysutils/facter/distinfo
  head/sysutils/facter/pkg-plist

Modified: head/sysutils/facter/Makefile
==============================================================================
--- head/sysutils/facter/Makefile	Sat Aug 12 12:46:01 2017	(r447825)
+++ head/sysutils/facter/Makefile	Sat Aug 12 13:09:34 2017	(r447826)
@@ -1,9 +1,9 @@
 # $FreeBSD$
 
 PORTNAME=	facter
-PORTVERSION=	3.1.3
-PORTREVISION=	6
-CATEGORIES=	sysutils
+PORTVERSION=	3.7.1
+PORTREVISION?=	0
+CATEGORIES?=	sysutils
 MASTER_SITES=	http://downloads.puppetlabs.com/facter/
 
 MAINTAINER=	puppet@FreeBSD.org
@@ -12,25 +12,53 @@ COMMENT=	Cross-platform library for retrieving facts f
 LICENSE=	APACHE20
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-LIB_DEPENDS=	libboost_system.so:devel/boost-libs \
-		libyaml-cpp.so:devel/yaml-cpp
+USES=		cmake
 
+.if !defined(PKGNAMEPREFIX)
+
+BROKEN_DragonFly=	DragonFly is not supported upstream
 BROKEN_powerpc64=	fails to compile: collection.cc: 'stoi' was not declared in this scope
 
+CONFLICTS_INSTALL=	rubygem-facter-2*
+
+LIB_DEPENDS=	libboost_system.so:devel/boost-libs \
+		liblibcpp-hocon.so:devel/cpp-hocon \
+		libleatherman_locale.so:devel/leatherman \
+		libyaml-cpp.so:devel/yaml-cpp
+
 PLIST_SUB+=	PORTVERSION="${PORTVERSION}"
 
 USE_LDCONFIG=	yes
 USE_RUBY=	yes
-USES=	cmake compiler:c++11-lib
+USES+=		compiler:c++11-lib ssl
 CMAKE_ARGS+=	-DMAN_PATH=${MANPREFIX}/man
 
-CONFLICTS_INSTALL=	rubygem-facter-2*
+test: build
+	cd ${WRKSRC}/lib && bundle install --path vendor
+	cd ${WRKSRC} && ninja test
 
-BROKEN_DragonFly=	DragonFly is not supported upstream
+.elif ${PKGNAMEPREFIX} == java-
 
+LIB_DEPENDS=	libfacter.so:sysutils/facter
+
+ALL_TARGET=	facter-jruby
+USE_JAVA=	yes
+JAVA_BUILD=	yes
+CMAKE_ARGS+=	-DJAVA_HOME=${JAVA_HOME}
+
+# Ignore sysutils/facter's pkg-plist by providing a non-existent file
+PLIST=		${WRKDIR}/no-plist
+PLIST_FILES=	${PREFIX}/lib/ruby/vendor_ruby/facter.jar
+
+do-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/lib/ruby/vendor_ruby
+	cd ${WRKSRC} && ${INSTALL_DATA} lib/facter.jar ${STAGEDIR}${PREFIX}/lib/ruby/vendor_ruby
+
+.endif
+
 .include <bsd.port.pre.mk>
 
-.if ${OPSYS} == FreeBSD && ${COMPILER_FEATURES:Mlibstdc++}
+.if !defined(PKGNAMEPREFIX) && ${OPSYS} == FreeBSD && ${COMPILER_FEATURES:Mlibstdc++}
 BROKEN=		Build with system libstdc++ is unsupported
 .endif
 

Modified: head/sysutils/facter/distinfo
==============================================================================
--- head/sysutils/facter/distinfo	Sat Aug 12 12:46:01 2017	(r447825)
+++ head/sysutils/facter/distinfo	Sat Aug 12 13:09:34 2017	(r447826)
@@ -1,2 +1,3 @@
-SHA256 (facter-3.1.3.tar.gz) = b27bfeade320331a02a68d3d2b41491d5cfcbb889292a8e9e1a11bd8641ff7d9
-SIZE (facter-3.1.3.tar.gz) = 603386
+TIMESTAMP = 1500912593
+SHA256 (facter-3.7.1.tar.gz) = 54fc56bfc3997b40c806982759c837f609a7268f669764921424fd41fda83467
+SIZE (facter-3.7.1.tar.gz) = 330767

Added: head/sysutils/facter/files/patch-cmake_FindCPPHOCON.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-cmake_FindCPPHOCON.cmake	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,12 @@
+
+$FreeBSD$
+
+--- cmake/FindCPPHOCON.cmake.orig	2017-06-27 17:42:22 UTC
++++ cmake/FindCPPHOCON.cmake
+@@ -1,5 +1,5 @@
+ include(FindDependency)
+-find_dependency(CPPHOCON DISPLAY "cpp-hocon" HEADERS "hocon/config.hpp" LIBRARIES "libcpp-hocon.a")
++find_dependency(CPPHOCON DISPLAY "cpp-hocon" HEADERS "hocon/config.hpp" LIBRARIES "liblibcpp-hocon.so")
+ 
+ include(FeatureSummary)
+ set_package_properties(CPPHOCON PROPERTIES DESCRIPTION "A C++ parser for the HOCON configuration language" URL "https://github.com/puppetlabs/cpp-hocon")

Added: head/sysutils/facter/files/patch-lib_CMakeLists.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_CMakeLists.txt	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,14 @@
+--- lib/CMakeLists.txt.orig	2017-07-18 18:49:09 UTC
++++ lib/CMakeLists.txt
+@@ -203,6 +203,11 @@ elseif ("${CMAKE_SYSTEM_NAME}" MATCHES "
+         "src/facts/freebsd/dmi_resolver.cc"
+         "src/facts/freebsd/networking_resolver.cc"
+         "src/util/bsd/scoped_ifaddrs.cc"
++        "src/facts/freebsd/virtualization_resolver.cc"
++        "src/facts/freebsd/memory_resolver.cc"
++        "src/facts/freebsd/zfs_resolver.cc"
++        "src/facts/freebsd/zpool_resolver.cc"
++        "src/facts/freebsd/operating_system_resolver.cc"
+     )
+ elseif ("${CMAKE_SYSTEM_NAME}" MATCHES "OpenBSD")
+     set(LIBFACTER_PLATFORM_SOURCES

Added: head/sysutils/facter/files/patch-lib_inc_facter_facts_fact.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_facter_facts_fact.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,31 @@
+--- lib/inc/facter/facts/fact.hpp.orig	2017-07-18 18:49:09 UTC
++++ lib/inc/facter/facts/fact.hpp
+@@ -528,9 +528,9 @@ namespace facter { namespace facts {
+         constexpr static char const* zfs_version = "zfs_version";
+ 
+         /**
+-         * The ZFS supported feature numbers.
++         * The ZFS supported version numbers.
+          */
+-        constexpr static char const* zfs_featurenumbers = "zfs_featurenumbers";
++        constexpr static char const* zfs_versionnumbers = "zfs_featurenumbers";
+ 
+         /**
+          * The ZFS storage pool (zpool) version fact.
+@@ -538,9 +538,14 @@ namespace facter { namespace facts {
+         constexpr static char const* zpool_version = "zpool_version";
+ 
+         /**
+-         * The ZFS storage pool supported feature numbers.
++         * The ZFS storage pool supported feature flags.
+          */
+-        constexpr static char const* zpool_featurenumbers = "zpool_featurenumbers";
++        constexpr static char const* zpool_featureflags = "zpool_featureflags";
++
++        /**
++         * The ZFS storage pool supported version numbers.
++         */
++        constexpr static char const* zpool_versionnumbers = "zpool_featurenumbers";
+ 
+         /**
+          * The fact for number of Solaris zones.

Added: head/sysutils/facter/files/patch-lib_inc_facter_facts_vm.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_facter_facts_vm.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,14 @@
+--- lib/inc/facter/facts/vm.hpp.orig	2017-06-27 17:42:22 UTC
++++ lib/inc/facter/facts/vm.hpp
+@@ -137,6 +137,11 @@ namespace facter { namespace facts {
+          * The name for Solaris ldom
+          */
+         constexpr static char const* ldom = "ldom";
++
++        /**
++         * The name of FreeBSD jails
++         */
++        constexpr static char const* jail = "jail";
+     };
+ 
+ }}  // namespace facter::facts

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_memory__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_memory__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,28 @@
+--- lib/inc/internal/facts/freebsd/memory_resolver.hpp.orig	2017-07-10 14:30:58 UTC
++++ lib/inc/internal/facts/freebsd/memory_resolver.hpp
+@@ -0,0 +1,25 @@
++/**
++ * @file
++ * Declares the FreeBSD memory fact resolver.
++ */
++#pragma once
++
++#include "../resolvers/memory_resolver.hpp"
++
++namespace facter { namespace facts { namespace freebsd {
++
++    /**
++     * Responsible for resolving memory facts.
++     */
++    struct memory_resolver : resolvers::memory_resolver
++    {
++     protected:
++        /**
++         * Collects the resolver data.
++         * @param facts The fact collection that is resolving facts.
++         * @return Returns the resolver data.
++         */
++        virtual data collect_data(collection& facts) override;
++    };
++
++}}}  // namespace facter::facts::osx

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_operating__system__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_operating__system__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,27 @@
+--- lib/inc/internal/facts/freebsd/operating_system_resolver.hpp.orig	2017-07-28 07:09:48 UTC
++++ lib/inc/internal/facts/freebsd/operating_system_resolver.hpp
+@@ -0,0 +1,24 @@
++/**
++ * @file
++ * Declares the FreeBSD operating system fact resolver.
++ */
++#pragma once
++
++#include "../posix/operating_system_resolver.hpp"
++
++namespace facter { namespace facts { namespace freebsd {
++
++    /**
++     * Responsible for resolving operating system facts.
++     */
++    struct operating_system_resolver : posix::operating_system_resolver
++    {
++    protected:
++        /**
++         * Collects the resolver's release data.
++         * @param facts The fact collection that is resolving facts.
++         * @param result The current resolver data.
++         */
++        virtual void collect_release_data(collection& facts, data& result) override;
++    };
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_virtualization__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_virtualization__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,30 @@
+--- lib/inc/internal/facts/freebsd/virtualization_resolver.hpp.orig	2017-07-10 14:30:58 UTC
++++ lib/inc/internal/facts/freebsd/virtualization_resolver.hpp
+@@ -0,0 +1,27 @@
++/**
++ * @file
++ * Declares the FreeBSD virtualization fact resolver.
++ */
++#pragma once
++
++#include "../resolvers/virtualization_resolver.hpp"
++
++namespace facter { namespace facts { namespace freebsd {
++
++    /**
++     * Responsible for resolving virtualization facts.
++     */
++    struct virtualization_resolver : resolvers::virtualization_resolver
++    {
++     protected:
++        /**
++         * Gets the name of the hypervisor.
++         * @param facts The fact collection that is resolving facts.
++         * @return Returns the name of the hypervisor or empty string if no hypervisor.
++         */
++        virtual std::string get_hypervisor(collection& facts) override;
++     private:
++        static std::string get_jail_vm();
++    };
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zfs__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zfs__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,27 @@
+--- lib/inc/internal/facts/freebsd/zfs_resolver.hpp.orig	2017-07-10 16:43:09 UTC
++++ lib/inc/internal/facts/freebsd/zfs_resolver.hpp
+@@ -0,0 +1,24 @@
++/**
++ * @file
++ * Declares the ZFS fact resolver.
++ */
++#pragma once
++
++#include "../resolvers/zfs_resolver.hpp"
++
++namespace facter { namespace facts { namespace freebsd {
++
++    /**
++     * Responsible for resolving ZFS facts.
++     */
++    struct zfs_resolver : resolvers::zfs_resolver
++    {
++     protected:
++        /**
++         * Gets the platform's ZFS command.
++         * @return Returns the platform's ZFS command.
++         */
++        virtual std::string zfs_command();
++    };
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zpool__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_freebsd_zpool__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,27 @@
+--- lib/inc/internal/facts/freebsd/zpool_resolver.hpp.orig	2017-07-10 16:43:09 UTC
++++ lib/inc/internal/facts/freebsd/zpool_resolver.hpp
+@@ -0,0 +1,24 @@
++/**
++ * @file
++ * Declares the FreeBSD ZFS storage pool (zpool) fact resolver.
++ */
++#pragma once
++
++#include "../resolvers/zpool_resolver.hpp"
++
++namespace facter { namespace facts { namespace freebsd {
++
++    /**
++     * Responsible for resolving ZFS storage pool (zpool) facts.
++     */
++    struct zpool_resolver : resolvers::zpool_resolver
++    {
++     protected:
++        /**
++         * Gets the platform's zpool command.
++         * @return Returns the platform's zpool command.
++         */
++        virtual std::string zpool_command();
++    };
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_operating__system__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_operating__system__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,23 @@
+--- lib/inc/internal/facts/resolvers/operating_system_resolver.hpp.orig	2017-07-18 18:49:09 UTC
++++ lib/inc/internal/facts/resolvers/operating_system_resolver.hpp
+@@ -216,6 +216,20 @@ namespace facter { namespace facts { nam
+          * @return Returns the resolver data.
+          */
+         virtual data collect_data(collection& facts);
++
++        /**
++         * Collects the resolver's kernel data.
++         * @param facts The fact collection that is resolving facts.
++         * @param result The current resolver data.
++         */
++        virtual void collect_kernel_data(collection& facts, data &result);
++
++        /**
++         * Collects the resolver's release data.
++         * @param facts The fact collection that is resolving facts.
++         * @param result The current resolver data.
++         */
++        virtual void collect_release_data(collection& facts, data &result);
+     };
+ 
+ }}}  // namespace facter::facts::resolvers

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zfs__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zfs__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,14 @@
+--- lib/inc/internal/facts/resolvers/zfs_resolver.hpp.orig	2017-07-18 18:49:09 UTC
++++ lib/inc/internal/facts/resolvers/zfs_resolver.hpp
+@@ -43,9 +43,9 @@ namespace facter { namespace facts { nam
+              */
+             std::string version;
+             /**
+-             * Stores the ZFS feature numbers.
++             * Stores the ZFS version numbers.
+              */
+-            std::vector<std::string> features;
++            std::vector<std::string> versions;
+         };
+ 
+         /**

Added: head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zpool__resolver.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_inc_internal_facts_resolvers_zpool__resolver.hpp	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,18 @@
+--- lib/inc/internal/facts/resolvers/zpool_resolver.hpp.orig	2017-07-18 18:49:09 UTC
++++ lib/inc/internal/facts/resolvers/zpool_resolver.hpp
+@@ -43,9 +43,13 @@ namespace facter { namespace facts { nam
+              */
+             std::string version;
+             /**
+-             * Stores the zpool feature numbers.
++             * Stores the zpool feature flags.
+              */
+-            std::vector<std::string> features;
++            std::vector<std::string> feature_flags;
++            /**
++             * Stores the zpool version numbers.
++             */
++            std::vector<std::string> versions;
+         };
+ 
+         /**

Added: head/sysutils/facter/files/patch-lib_schema_facter.yaml
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_schema_facter.yaml	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,17 @@
+--- lib/schema/facter.yaml.orig	2017-07-18 18:49:09 UTC
++++ lib/schema/facter.yaml
+@@ -1894,6 +1894,14 @@ zones:
+     caveats: |
+         Solaris: the `zoneadm` utility must be present.
+ 
++zpool_featureflags:
++    type: string
++    description: Return the comma-delimited feature flags for ZFS storage pools.
++    resolution: |
++        Solaris: use the `zpool` utility to retrieve the feature numbers for ZFS storage pools
++    caveats: |
++        Solaris: the `zpool` utility must be present.
++
+ zpool_featurenumbers:
+     type: string
+     description: Return the comma-delimited feature numbers for ZFS storage pools.

Added: head/sysutils/facter/files/patch-lib_src_facts_bsd_collection.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_bsd_collection.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,19 @@
+--- lib/src/facts/bsd/collection.cc.orig	2017-06-27 17:42:22 UTC
++++ lib/src/facts/bsd/collection.cc
+@@ -1,6 +1,6 @@
+ #include <facter/facts/collection.hpp>
+ #include <internal/facts/posix/kernel_resolver.hpp>
+-#include <internal/facts/resolvers/operating_system_resolver.hpp>
++#include <internal/facts/posix/operating_system_resolver.hpp>
+ #include <internal/facts/bsd/uptime_resolver.hpp>
+ #include <internal/facts/bsd/filesystem_resolver.hpp>
+ #include <internal/facts/posix/ssh_resolver.hpp>
+@@ -15,7 +15,7 @@ namespace facter { namespace facts {
+     void collection::add_platform_facts()
+     {
+         add(make_shared<posix::kernel_resolver>());
+-        add(make_shared<resolvers::operating_system_resolver>());
++        add(make_shared<posix::operating_system_resolver>());
+         add(make_shared<bsd::uptime_resolver>());
+         add(make_shared<bsd::filesystem_resolver>());
+         add(make_shared<posix::ssh_resolver>());

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_collection.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_collection.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,36 @@
+--- lib/src/facts/freebsd/collection.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/src/facts/freebsd/collection.cc
+@@ -8,8 +8,12 @@
+ #include <internal/facts/posix/kernel_resolver.hpp>
+ #include <internal/facts/posix/ssh_resolver.hpp>
+ #include <internal/facts/posix/timezone_resolver.hpp>
+-#include <internal/facts/resolvers/operating_system_resolver.hpp>
++#include <internal/facts/freebsd/operating_system_resolver.hpp>
+ #include <internal/facts/freebsd/networking_resolver.hpp>
++#include <internal/facts/freebsd/virtualization_resolver.hpp>
++#include <internal/facts/freebsd/memory_resolver.hpp>
++#include <internal/facts/freebsd/zfs_resolver.hpp>
++#include <internal/facts/freebsd/zpool_resolver.hpp>
+ 
+ using namespace std;
+ 
+@@ -18,7 +22,7 @@ namespace facter { namespace facts {
+     void collection::add_platform_facts()
+     {
+         add(make_shared<posix::kernel_resolver>());
+-        add(make_shared<resolvers::operating_system_resolver>());
++        add(make_shared<freebsd::operating_system_resolver>());
+         add(make_shared<freebsd::networking_resolver>());
+         add(make_shared<bsd::uptime_resolver>());
+         add(make_shared<bsd::filesystem_resolver>());
+@@ -28,6 +32,10 @@ namespace facter { namespace facts {
+         add(make_shared<glib::load_average_resolver>());
+         add(make_shared<freebsd::processor_resolver>());
+         add(make_shared<freebsd::dmi_resolver>());
++        add(make_shared<freebsd::virtualization_resolver>());
++        add(make_shared<freebsd::memory_resolver>());
++        add(make_shared<freebsd::zfs_resolver>());
++        add(make_shared<freebsd::zpool_resolver>());
+     }
+ 
+ }}  // namespace facter::facts

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_memory__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_memory__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,79 @@
+--- lib/src/facts/freebsd/memory_resolver.cc.orig	2017-07-10 14:30:58 UTC
++++ lib/src/facts/freebsd/memory_resolver.cc
+@@ -0,0 +1,76 @@
++#include <internal/facts/freebsd/memory_resolver.hpp>
++#include <leatherman/execution/execution.hpp>
++#include <leatherman/logging/logging.hpp>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#include <vm/vm_param.h>
++#include <unistd.h>
++
++using namespace std;
++using namespace leatherman::execution;
++
++namespace facter { namespace facts { namespace freebsd {
++
++    memory_resolver::data memory_resolver::collect_data(collection& facts)
++    {
++        data result;
++
++        size_t size;
++        int pagesize = getpagesize();
++
++        // Memory usage
++
++        unsigned long physmem;
++        size = sizeof(physmem);
++        if (0 == sysctlbyname("hw.physmem", &physmem, &size, NULL, 0)) {
++            result.mem_total = physmem;
++        }
++
++        unsigned int inactive_count = 0;
++        size = sizeof(inactive_count);
++        sysctlbyname("vm.stats.vm.v_inactive_count", &inactive_count, &size, NULL, 0);
++
++        unsigned int cache_count = 0;
++        size = sizeof(cache_count);
++        sysctlbyname("vm.stats.vm.v_cache_count", &cache_count, &size, NULL, 0);
++
++        unsigned int free_count = 0;
++        size = sizeof(free_count);
++        sysctlbyname("vm.stats.vm.v_free_count", &free_count, &size, NULL, 0);
++
++        long mem_free_page_count = inactive_count + cache_count + free_count;
++        result.mem_free = mem_free_page_count * pagesize;
++
++        // Swap usage
++
++        struct xswdev xsw;
++        size = sizeof(xsw);
++
++        int mib[16];
++        size_t mibsize;
++        mibsize = sizeof mib / sizeof mib[0];
++        if (sysctlnametomib("vm.swap_info", mib, &mibsize) == -1) {
++            LOG_DEBUG("sysctlnametomib() failed");
++        } else {
++            for (int n = 0; ; ++n) {
++                mib[mibsize] = n;
++                if (-1 == sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0))
++                    break;
++
++                if (xsw.xsw_version != XSWDEV_VERSION) {
++                    LOG_DEBUG("xswdev version mismatch");
++                } else {
++                    result.swap_total += xsw.xsw_nblks;
++                    result.swap_free += xsw.xsw_nblks - xsw.xsw_used;
++                }
++            }
++
++            result.swap_free *= pagesize;
++            result.swap_total *= pagesize;
++        }
++
++        return result;
++    }
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_operating__system__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_operating__system__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,20 @@
+--- lib/src/facts/freebsd/operating_system_resolver.cc.orig	2017-07-28 07:09:48 UTC
++++ lib/src/facts/freebsd/operating_system_resolver.cc
+@@ -0,0 +1,17 @@
++#include <leatherman/execution/execution.hpp>
++
++#include <internal/facts/freebsd/operating_system_resolver.hpp>
++
++using namespace std;
++using namespace leatherman::execution;
++
++namespace facter { namespace facts { namespace freebsd {
++
++    void operating_system_resolver::collect_release_data(collection& facts, data& result)
++    {
++        auto exec = execute("freebsd-version");
++        if (exec.success) {
++            result.release = exec.output;
++        }
++    }
++} } }  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_virtualization__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_virtualization__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,47 @@
+--- lib/src/facts/freebsd/virtualization_resolver.cc.orig	2017-07-10 14:30:58 UTC
++++ lib/src/facts/freebsd/virtualization_resolver.cc
+@@ -0,0 +1,44 @@
++#include <internal/facts/freebsd/virtualization_resolver.hpp>
++#include <facter/facts/scalar_value.hpp>
++#include <facter/facts/collection.hpp>
++#include <facter/facts/fact.hpp>
++#include <facter/facts/vm.hpp>
++#include <leatherman/execution/execution.hpp>
++#include <boost/algorithm/string.hpp>
++
++#include <sys/types.h>
++#include <sys/sysctl.h>
++
++using namespace std;
++using namespace facter::facts;
++using namespace leatherman::execution;
++
++namespace facter { namespace facts { namespace freebsd {
++
++    string virtualization_resolver::get_hypervisor(collection& facts)
++    {
++        string value = get_jail_vm();
++
++        if (value.empty()) {
++            auto product_name = facts.get<string_value>(fact::product_name);
++            if (product_name) {
++                value = get_product_name_vm(product_name->value());
++            }
++        }
++
++        return value;
++    }
++
++    string virtualization_resolver::get_jail_vm()
++    {
++        int jailed;
++        size_t size = sizeof(jailed);
++        if (sysctlbyname("security.jail.jailed", &jailed, &size, NULL, 0) == 0) {
++            if (jailed)
++                return vm::jail;
++        }
++
++        return {};
++    }
++
++} } }  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_zfs__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_zfs__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,15 @@
+--- lib/src/facts/freebsd/zfs_resolver.cc.orig	2017-07-10 16:43:09 UTC
++++ lib/src/facts/freebsd/zfs_resolver.cc
+@@ -0,0 +1,12 @@
++#include <internal/facts/freebsd/zfs_resolver.hpp>
++
++using namespace std;
++
++namespace facter { namespace facts { namespace freebsd {
++
++    string zfs_resolver::zfs_command()
++    {
++        return "/sbin/zfs";
++    }
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_src_facts_freebsd_zpool__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_freebsd_zpool__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,15 @@
+--- lib/src/facts/freebsd/zpool_resolver.cc.orig	2017-07-10 16:43:09 UTC
++++ lib/src/facts/freebsd/zpool_resolver.cc
+@@ -0,0 +1,12 @@
++#include <internal/facts/freebsd/zpool_resolver.hpp>
++
++using namespace std;
++
++namespace facter { namespace facts { namespace freebsd {
++
++    string zpool_resolver::zpool_command()
++    {
++        return "/sbin/zpool";
++    }
++
++}}}  // namespace facter::facts::freebsd

Added: head/sysutils/facter/files/patch-lib_src_facts_openbsd_collection.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_openbsd_collection.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,20 @@
+--- lib/src/facts/openbsd/collection.cc.orig	2017-06-27 17:42:22 UTC
++++ lib/src/facts/openbsd/collection.cc
+@@ -11,7 +11,7 @@
+ #include <internal/facts/posix/kernel_resolver.hpp>
+ #include <internal/facts/posix/ssh_resolver.hpp>
+ #include <internal/facts/posix/timezone_resolver.hpp>
+-#include <internal/facts/resolvers/operating_system_resolver.hpp>
++#include <internal/facts/posix/operating_system_resolver.hpp>
+ 
+ using namespace std;
+ 
+@@ -20,7 +20,7 @@ namespace facter { namespace facts {
+     void collection::add_platform_facts()
+     {
+         add(make_shared<posix::kernel_resolver>());
+-        add(make_shared<resolvers::operating_system_resolver>());
++        add(make_shared<posix::operating_system_resolver>());
+         add(make_shared<bsd::uptime_resolver>());
+         add(make_shared<bsd::filesystem_resolver>());
+         add(make_shared<posix::ssh_resolver>());

Added: head/sysutils/facter/files/patch-lib_src_facts_resolvers_operating__system__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_resolvers_operating__system__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,32 @@
+--- lib/src/facts/resolvers/operating_system_resolver.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/src/facts/resolvers/operating_system_resolver.cc
+@@ -231,18 +231,27 @@ namespace facter { namespace facts { nam
+     {
+         data result;
+ 
++        collect_kernel_data(facts, result);
++        collect_release_data(facts, result);
++
++        return result;
++    }
++
++    void operating_system_resolver::collect_kernel_data(collection& facts, data& result)
++    {
+         auto kernel = facts.get<string_value>(fact::kernel);
+         if (kernel) {
+             result.name = kernel->value();
+             result.family = kernel->value();
+         }
++    }
+ 
++    void operating_system_resolver::collect_release_data(collection& facts, data& result)
++    {
+         auto release = facts.get<string_value>(fact::kernel_release);
+         if (release) {
+             result.release = release->value();
+         }
+-
+-        return result;
+     }
+ 
+     tuple<string, string> operating_system_resolver::parse_distro(string const& name, string const& release)

Added: head/sysutils/facter/files/patch-lib_src_facts_resolvers_zfs__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_resolvers_zfs__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,40 @@
+--- lib/src/facts/resolvers/zfs_resolver.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/src/facts/resolvers/zfs_resolver.cc
+@@ -18,7 +18,7 @@ namespace facter { namespace facts { nam
+             "ZFS",
+             {
+                 fact::zfs_version,
+-                fact::zfs_featurenumbers
++                fact::zfs_versionnumbers
+             })
+     {
+     }
+@@ -30,8 +30,8 @@ namespace facter { namespace facts { nam
+         if (!data.version.empty()) {
+             facts.add(fact::zfs_version, make_value<string_value>(move(data.version)));
+         }
+-        if (!data.features.empty()) {
+-            facts.add(fact::zfs_featurenumbers, make_value<string_value>(boost::join(data.features, ",")));
++        if (!data.versions.empty()) {
++            facts.add(fact::zfs_versionnumbers, make_value<string_value>(boost::join(data.versions, ",")));
+         }
+     }
+ 
+@@ -48,12 +48,12 @@ namespace facter { namespace facts { nam
+             return true;
+         });
+ 
+-        // Get the ZFS features
+-        static boost::regex zfs_feature("\\s*(\\d+)[ ]");
++        // Get the ZFS versions
++        static boost::regex zfs_supported_version("^\\s*(\\d+)[ ]");
+         each_line(zfs_command(), {"upgrade", "-v"}, [&] (string& line) {
+-            string feature;
+-            if (re_search(line, zfs_feature, &feature)) {
+-                result.features.emplace_back(move(feature));
++            string version;
++            if (re_search(line, zfs_supported_version, &version)) {
++                result.versions.emplace_back(move(version));
+             }
+             return true;
+         });

Added: head/sysutils/facter/files/patch-lib_src_facts_resolvers_zpool__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_src_facts_resolvers_zpool__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,82 @@
+--- lib/src/facts/resolvers/zpool_resolver.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/src/facts/resolvers/zpool_resolver.cc
+@@ -18,7 +18,8 @@ namespace facter { namespace facts { nam
+             "ZFS storage pool",
+             {
+                 fact::zpool_version,
+-                fact::zpool_featurenumbers,
++                fact::zpool_featureflags,
++                fact::zpool_versionnumbers,
+             })
+     {
+     }
+@@ -30,8 +31,11 @@ namespace facter { namespace facts { nam
+         if (!data.version.empty()) {
+             facts.add(fact::zpool_version, make_value<string_value>(move(data.version)));
+         }
+-        if (!data.features.empty()) {
+-            facts.add(fact::zpool_featurenumbers, make_value<string_value>(boost::join(data.features, ",")));
++        if (!data.feature_flags.empty()) {
++            facts.add(fact::zpool_featureflags, make_value<string_value>(boost::join(data.feature_flags, ",")));
++        }
++        if (!data.versions.empty()) {
++            facts.add(fact::zpool_versionnumbers, make_value<string_value>(boost::join(data.versions, ",")));
+         }
+     }
+ 
+@@ -39,16 +43,47 @@ namespace facter { namespace facts { nam
+     {
+         data result;
+ 
++        enum { UNKNOWN, FEATURES, VERSIONS } state = UNKNOWN;
++
+         // Get the zpool version and features
+-        static boost::regex zpool_version("ZFS pool version (\\d+)[.]");
+-        static boost::regex zpool_feature("\\s*(\\d+)[ ]");
++        static boost::regex zpool_version("^This system is currently running ZFS pool version (\\d+)\\.$");
++        static boost::regex zpool_feature_flags("^This system supports ZFS pool feature flags\\.$");
++
++        static boost::regex zpool_supported_feature_header("^The following features are supported:$");
++        static boost::regex zpool_supported_versions_header("^The following versions are supported:$");
++        static boost::regex zpool_supported_legacy_versions_header("^The following legacy versions are also supported:$");
++
++        static boost::regex zpool_supported_feature("^([[:alnum:]_]+)(\\s+\\(read-only compatible\\))?$");
++        static boost::regex zpool_supported_version("^\\s*(\\d+)[ ]");
++
++        string feature;
+         each_line(zpool_command(), {"upgrade", "-v"}, [&] (string& line) {
+-            if (re_search(line, zpool_version, &result.version)) {
+-                return true;
+-            }
+-            string feature;
+-            if (re_search(line, zpool_feature, &feature)) {
+-                result.features.emplace_back(move(feature));
++            switch (state) {
++            case UNKNOWN:
++                if (re_search(line, zpool_version, &result.version)) {
++                } else if (re_search(line, zpool_feature_flags)) {
++                    result.version = "5000";
++                } else if (re_search(line, zpool_supported_feature_header)) {
++                    state = FEATURES;
++                } else if (re_search(line, zpool_supported_versions_header)) {
++                    state = VERSIONS;
++                }
++                break;
++
++            case FEATURES:
++                if (re_search(line, zpool_supported_feature, &feature)) {
++                    result.feature_flags.emplace_back(move(feature));
++                } else if (re_search(line, zpool_supported_legacy_versions_header)) {
++                    state = VERSIONS;
++                }
++                break;
++
++            case VERSIONS:
++                string feature;
++                if (re_search(line, zpool_supported_version, &feature)) {
++                    result.versions.emplace_back(move(feature));
++                }
++                break;
+             }
+             return true;
+         });

Added: head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zfs__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zfs__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,20 @@
+--- lib/tests/facts/resolvers/zfs_resolver.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/tests/facts/resolvers/zfs_resolver.cc
+@@ -37,7 +37,7 @@ struct test_zfs_resolver : zfs_resolver
+     {
+         data result;
+         result.version = "1";
+-        result.features = { "1", "2", "3" };
++        result.versions = { "1", "2", "3" };
+         return result;
+     }
+ };
+@@ -57,7 +57,7 @@ SCENARIO("using the ZFS resolver") {
+             auto value = facts.get<string_value>(fact::zfs_version);
+             REQUIRE(value);
+             REQUIRE(value->value() == "1");
+-            value = facts.get<string_value>(fact::zfs_featurenumbers);
++            value = facts.get<string_value>(fact::zfs_versionnumbers);
+             REQUIRE(value);
+             REQUIRE(value->value() == "1,2,3");
+         }

Added: head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zpool__resolver.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_tests_facts_resolvers_zpool__resolver.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,31 @@
+--- lib/tests/facts/resolvers/zpool_resolver.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/tests/facts/resolvers/zpool_resolver.cc
+@@ -37,7 +37,8 @@ struct test_zpool_resolver : zpool_resol
+     {
+         data result;
+         result.version = "1";
+-        result.features = { "1", "2", "3" };
++        result.versions = { "1", "2", "3" };
++        result.feature_flags = { "async_destroy", "lz4_compress", "enabled_txg" };
+         return result;
+     }
+ };
+@@ -53,13 +54,16 @@ SCENARIO("using the zpool resolver") {
+     WHEN("data is present") {
+         facts.add(make_shared<test_zpool_resolver>());
+         THEN("flat facts are added") {
+-            REQUIRE(facts.size() == 2u);
++            REQUIRE(facts.size() == 3u);
+             auto value = facts.get<string_value>(fact::zpool_version);
+             REQUIRE(value);
+             REQUIRE(value->value() == "1");
+-            value = facts.get<string_value>(fact::zpool_featurenumbers);
++            value = facts.get<string_value>(fact::zpool_versionnumbers);
+             REQUIRE(value);
+             REQUIRE(value->value() == "1,2,3");
++            value = facts.get<string_value>(fact::zpool_featureflags);
++            REQUIRE(value);
++            REQUIRE(value->value() == "async_destroy,lz4_compress,enabled_txg");
+         }
+     }
+ }

Added: head/sysutils/facter/files/patch-lib_tests_facts_schema.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/facter/files/patch-lib_tests_facts_schema.cc	Sat Aug 12 13:09:34 2017	(r447826)
@@ -0,0 +1,21 @@
+--- lib/tests/facts/schema.cc.orig	2017-07-18 18:49:09 UTC
++++ lib/tests/facts/schema.cc
+@@ -396,7 +396,7 @@ protected:
+     {
+         data result;
+         result.version = 1;
+-        result.features = { "1", "2", "3" };
++        result.versions = { "1", "2", "3" };
+         return result;
+     }
+ };
+@@ -433,7 +433,8 @@ protected:
+     {
+         data result;
+         result.version = 1;
+-        result.features = { "1", "2", "3" };
++        result.versions = { "1", "2", "3" };
++        result.feature_flags = { "async_destroy", "lz4_compress", "enabled_txg" };
+         return result;
+     }
+ };

Modified: head/sysutils/facter/pkg-plist
==============================================================================
--- head/sysutils/facter/pkg-plist	Sat Aug 12 12:46:01 2017	(r447825)
+++ head/sysutils/facter/pkg-plist	Sat Aug 12 13:09:34 2017	(r447826)
@@ -13,6 +13,7 @@ include/facter/facts/value.hpp
 include/facter/facts/vm.hpp
 include/facter/logging/logging.hpp
 include/facter/ruby/ruby.hpp
+include/facter/util/config.hpp
 include/facter/util/string.hpp
 include/facter/version.h
 lib/libfacter.so



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201708121309.v7CD9Yrg080778>