lib/Yam/Agama/LiveIso.pm

Yam::Agama::LiveIso

Yam::Agama::LiveIso - Retrieve Agama Live ISO metadata (image info and package versions) and expose it through openQA variables.

_run_and_slurp

_run_and_slurp($errmsg, @cmd);

Run @cmd as a child process and return its slurped output. @cmd is passed as a LIST, so no shell is spawned and its arguments can never be parsed as shell syntax (command injection fix, poo#202788). Dies with $errmsg if the command exits non-zero.

_write_tempfile

_write_tempfile($content, $suffix);

Write binary $content to a temporary file (auto-removed at exit) and return its path. $suffix defaults to .tmp.

_isoinfo_extract

_isoinfo_extract($member, $errmsg);

Extract $member from the ISO (get_var('ISO')) via isoinfo and return its content. Dies with $errmsg on failure. Returns an empty string, without dying, if $member is not present on the ISO (isoinfo exits 0 with no output in that case).

_read_packages_json

_read_packages_json();

Read /LiveOS/.packages.json.gz (a gzipped JSON array of {name, version, ...}) from the ISO, decompress it via the gunzip binary over a temp file (no shell pipe, deadlock-free) and return the decoded arrayref. Some media (e.g. the Online medium) don't ship this file at all; isoinfo then returns empty output rather than failing, so that case is treated as "no package info available" instead of a decompression error.