[Pkg-puppet-devel] Bug#1136963: facter: Apply upstream patch to fix 'virtual' resolution on Illumos LX

Steve Mokris smokris-debian at softpixel.com
Sun May 17 18:41:38 BST 2026


Package: facter
Version: 4.10.0-1
Severity: normal
Tags: patch

Facter 4.8.0 introduced a regression causing the 'virtual' fact to
return an incorrect result under Illumos/SmartOS LX virtualization.

Upstream merged a fix for this back in 2024[^1], but it's unclear when
upstream will tag a new release, so if practical I'd like the Debian
Puppet Package Maintainers to apply the attached patch to the Debian
package.

[^1]: https://github.com/puppetlabs/facter/pull/2772

>From 31d32da513aae094bdbcc011155c2e247be11284 Mon Sep 17 00:00:00 2001
From: Steve Mokris <steve at kosada.com>
Date: Sun, 20 Oct 2024 19:09:14 -0400
Subject: [PATCH] On Illumos LX, make Facter::Resolvers::Containers return nil,
 so Facter::Util::Facts::Posix::VirtualDetector#check_illumos_lx is executed

---
 lib/facter/resolvers/containers.rb       |  2 ++
 spec/facter/resolvers/containers_spec.rb | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/lib/facter/resolvers/containers.rb b/lib/facter/resolvers/containers.rb
index ac02b321df..030d7267a4 100644
--- a/lib/facter/resolvers/containers.rb
+++ b/lib/facter/resolvers/containers.rb
@@ -51,6 +51,8 @@ def read_environ(fact_name)
             vm = 'podman'
           when 'crio'
             vm = 'crio'
+          when 'zone'
+            return nil
           when 'systemd-nspawn'
             vm = 'systemd_nspawn'
             info = { 'id' => Facter::Util::FileHelper.safe_read('/etc/machine-id', nil).strip }
diff --git a/spec/facter/resolvers/containers_spec.rb b/spec/facter/resolvers/containers_spec.rb
index 87b567d434..64348c3794 100644
--- a/spec/facter/resolvers/containers_spec.rb
+++ b/spec/facter/resolvers/containers_spec.rb
@@ -92,6 +92,16 @@
     end
   end
 
+  context 'when hypervisor is illumos' do
+    let(:cgroup_output) { nil }
+    let(:environ_output) { ['container=zone'] }
+
+    it 'return nil' do
+      expect(containers_resolver.resolve(:vm)).to eq(nil)
+      expect(containers_resolver.resolve(:hypervisor)).to eq(nil)
+    end
+  end
+
   context 'when hypervisor is neighter lxc nor docker' do
     let(:cgroup_output) { load_fixture('cgroup_file').read }
     let(:environ_output) { ['PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin'] }



More information about the Pkg-puppet-devel mailing list