From 28c1af9b876508bf9982a1acb7b3a18edd00b4c9 Mon Sep 17 00:00:00 2001 From: Dan Voiculeasa Date: Tue, 7 Sep 2021 14:02:45 +0300 Subject: [PATCH] Add debian package for facter 3.14.12 Facter 3 was rewritten in C++. Looking at the source code there are big differences. For example ipaddress fact is now collected part of a networking fact. Porting patch 5 require testing of puppet modules which are not yet packaged for Debian. Some Facter 2 modules were removed in Facter 3. Porting patch 1 ,3, 4 may be done at a latter time if the modules from facter 2 are added back. Adapted only 0002 patch. Did build facter 3.14.12-1 + 1 starlingx patch adapted from CentOS7. Did build an iso. Tested facter showing personality and subfunction. Story: 2009101 Task: 43222 Signed-off-by: Dan Voiculeasa Change-Id: Id9270ab5c986cb6570346faec8a78893ff0363fb --- config/facter/debian/meta_data.yaml | 10 + ...0001-Add-personality-and-subfunction.patch | 178 ++++++++++++++++++ config/facter/debian/patches/series | 1 + debian_pkg_dirs | 1 + 4 files changed, 190 insertions(+) create mode 100644 config/facter/debian/meta_data.yaml create mode 100644 config/facter/debian/patches/0001-Add-personality-and-subfunction.patch create mode 100644 config/facter/debian/patches/series create mode 100644 debian_pkg_dirs diff --git a/config/facter/debian/meta_data.yaml b/config/facter/debian/meta_data.yaml new file mode 100644 index 000000000..a1ec24ca6 --- /dev/null +++ b/config/facter/debian/meta_data.yaml @@ -0,0 +1,10 @@ +--- +debname: facter +debver: 3.14.12-1 +dl_path: + name: facter-3.14.12-1.tar.gz + url: https://salsa.debian.org/puppet-team/facter/-/archive/debian/3.14.12-1/facter-debian-3.14.12-1.tar.gz + md5sum: 2394099bd9d6c63eaa1fb5fda5e79fca +revision: + dist: $STX_DIST + PKG_GITREVCOUNT: true diff --git a/config/facter/debian/patches/0001-Add-personality-and-subfunction.patch b/config/facter/debian/patches/0001-Add-personality-and-subfunction.patch new file mode 100644 index 000000000..a549d0f57 --- /dev/null +++ b/config/facter/debian/patches/0001-Add-personality-and-subfunction.patch @@ -0,0 +1,178 @@ +From 2bd09160543d0e170d0ade2f695691a03aa3d5fa Mon Sep 17 00:00:00 2001 +From: Dan Voiculeasa +Date: Tue, 14 Sep 2021 16:33:23 +0000 +Subject: [PATCH] Add personality and subfunction + +Adapt 0002-personality.patch from CentOS. + +Signed-off-by: Dan Voiculeasa +--- + lib/CMakeLists.txt | 9 ++++++ + lib/facter/personality.rb | 21 +++++++++++++ + lib/facter/subfunction.rb | 61 ++++++++++++++++++++++++++++++++++++ + lib/facter/util/file_read.rb | 37 ++++++++++++++++++++++ + 4 files changed, 128 insertions(+) + create mode 100644 lib/facter/personality.rb + create mode 100644 lib/facter/subfunction.rb + create mode 100644 lib/facter/util/file_read.rb + +diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt +index 8dd7063..f7d336a 100644 +--- a/lib/CMakeLists.txt ++++ b/lib/CMakeLists.txt +@@ -435,6 +435,15 @@ if(RUBY_VENDORDIR) + message(STATUS "\"make install\" will install facter.rb to ${RUBY_VENDORDIR}") + install(FILES ${CMAKE_BINARY_DIR}/lib/facter.rb DESTINATION ${RUBY_VENDORDIR}) + ++ message(STATUS "\"make install\" will install facter/personality.rb to ${RUBY_VENDORDIR}/facter") ++ install(FILES facter/personality.rb DESTINATION ${RUBY_VENDORDIR}/facter) ++ ++ message(STATUS "\"make install\" will install facter/subfunction.rb to ${RUBY_VENDORDIR}/facter") ++ install(FILES facter/subfunction.rb DESTINATION ${RUBY_VENDORDIR}/facter) ++ ++ message(STATUS "\"make install\" will install facter/util/file_read.rb to ${RUBY_VENDORDIR}/facter/util") ++ install(FILES facter/util/file_read.rb DESTINATION ${RUBY_VENDORDIR}/facter/util) ++ + if (JRUBY_SUPPORT) + message(STATUS "\"make install\" will install facter.jar to ${RUBY_VENDORDIR} to support JRuby") + install(FILES ${CMAKE_BINARY_DIR}/lib/facter.jar DESTINATION ${RUBY_VENDORDIR}) +diff --git a/lib/facter/personality.rb b/lib/facter/personality.rb +new file mode 100644 +index 0000000..0a4e8cf +--- /dev/null ++++ b/lib/facter/personality.rb +@@ -0,0 +1,21 @@ ++# ++# personality.rb ++# ++# This fact gives the personality of this node. ++# ++require 'facter/util/file_read' ++ ++Facter.add('personality') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ if match = release.match(/^nodetype\=(.*)/) ++ match[1] ++ end ++ end ++ end ++end ++ ++# vim: set ts=2 sw=2 et : ++# encoding: utf-8 +diff --git a/lib/facter/subfunction.rb b/lib/facter/subfunction.rb +new file mode 100644 +index 0000000..589bcb3 +--- /dev/null ++++ b/lib/facter/subfunction.rb +@@ -0,0 +1,61 @@ ++# ++# subfunction.rb ++# ++# This fact gives the subfunction of this node. ++# ++require 'facter/util/file_read' ++ ++Facter.add('subfunction') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ if match = release.match(/^subfunction\=(.*)/) ++ match[1] ++ end ++ end ++ end ++end ++ ++Facter.add('is_worker_subfunction') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ match = release.match(/^subfunction\=.*worker/) ? true : false ++ end ++ end ++end ++ ++Facter.add('is_controller_subfunction') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ match = release.match(/^subfunction\=.*controller/) ? true : false ++ end ++ end ++end ++ ++Facter.add('is_storage_subfunction') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ match = release.match(/^subfunction\=.*storage/) ? true : false ++ end ++ end ++end ++ ++Facter.add('is_lowlatency_subfunction') do ++ confine :kernel => :linux ++ ++ setcode do ++ if release = Facter::Util::FileRead.read('/etc/platform/platform.conf') ++ match = release.match(/^subfunction\=.*lowlatency/) ? true : false ++ end ++ end ++end ++ ++# vim: set ts=2 sw=2 et : ++# encoding: utf-8 +diff --git a/lib/facter/util/file_read.rb b/lib/facter/util/file_read.rb +new file mode 100644 +index 0000000..c92185a +--- /dev/null ++++ b/lib/facter/util/file_read.rb +@@ -0,0 +1,37 @@ ++module Facter ++module Util ++ ++# {Facter::Util::FileRead} is a utility module intended to provide easily ++# mockable methods that delegate to simple file read methods. The intent is to ++# avoid the need to execute the `cat` system command or `File.read` directly in ++# Ruby, as mocking these behaviors can have wide-ranging effects. ++# ++# All Facter facts are encouraged to use this method instead of File.read or ++# Facter::Core::Execution.exec('cat ...') ++# ++# @api public ++module FileRead ++ # read returns the raw content of a file as a string. If the file does not ++ # exist, or the process does not have permission to read the file then nil is ++ # returned. ++ # ++ # @api public ++ # ++ # @param path [String] the path to be read ++ # ++ # @return [String, nil] the raw contents of the file or `nil` if the ++ # file cannot be read because it does not exist or the process does not have ++ # permission to read the file. ++ def self.read(path) ++ File.read(path) ++ rescue Errno::ENOENT, Errno::EACCES => detail ++ Facter.debug "Could not read #{path}: #{detail.message}" ++ nil ++ end ++ ++ def self.read_binary(path) ++ File.open(path, "rb") { |contents| contents.read } ++ end ++end ++end ++end +-- +2.25.1 + diff --git a/config/facter/debian/patches/series b/config/facter/debian/patches/series new file mode 100644 index 000000000..e2f6fb2f8 --- /dev/null +++ b/config/facter/debian/patches/series @@ -0,0 +1 @@ +0001-Add-personality-and-subfunction.patch diff --git a/debian_pkg_dirs b/debian_pkg_dirs new file mode 100644 index 000000000..5d3af08cd --- /dev/null +++ b/debian_pkg_dirs @@ -0,0 +1 @@ +config/facter