all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH common] tools: explain reason for the explicit PerlIO load
@ 2024-12-02 16:03 Filip Schauer
  2025-02-03 11:13 ` [pve-devel] applied: " Fiona Ebner
  0 siblings, 1 reply; 2+ messages in thread
From: Filip Schauer @ 2024-12-02 16:03 UTC (permalink / raw)
  To: pve-devel

Explain the reason for the explicit `use PerlIO::scalar;` statement
introduced in c4945bf ("tools: load PerlIO explicitly to avoid odd
failures")

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
---
 src/PVE/Tools.pm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
index 0325f53..57eb86c 100644
--- a/src/PVE/Tools.pm
+++ b/src/PVE/Tools.pm
@@ -290,12 +290,12 @@ sub file_set_contents {
 	} else {
 	    # Encode wide characters with print before passing them to syswrite
 	    my $unencoded_data = $data;
-	    # Without this we get some "Can't locate PerlIO.pm in @INC" errors _sometimes_, and the
-	    # odd thing about it is that they can be "fixed" by calling file_set_contents in the
-	    # parent methode/code before the method, from another module, is called.
-	    # Anyway, loading PerlIO here should be fine as the in-memory variable writing is in
-	    # fact backed by the PerlIO based "scalar" module. This comment can be removed once the
-	    # odd behavior is really understood.
+	    # Preload PerlIO::scalar at compile time to prevent runtime loading issues when
+	    # file_set_contents is called with PVE::LXC::Setup::protected_call. Normally,
+	    # PerlIO::scalar is loaded implicitly during the execution of
+	    # `open(my $data_fh, '>', \$data)`. However, this fails if it is executed within a
+	    # chroot environment where the necessary PerlIO.pm module file is inaccessible.
+	    # Preloading the module ensures it is available regardless of the execution context.
 	    use PerlIO::scalar;
 	    open(my $data_fh, '>', \$data) or die "failed to open in-memory variable - $!\n";
 	    print $data_fh $unencoded_data;
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-02-03 11:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-02 16:03 [pve-devel] [PATCH common] tools: explain reason for the explicit PerlIO load Filip Schauer
2025-02-03 11:13 ` [pve-devel] applied: " Fiona Ebner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal