From 10eba896ac00b33d43d3709b29e4f08bbbb34a3d Mon Sep 17 00:00:00 2001 From: Keith Valin Date: Thu, 30 Oct 2025 13:19:31 -0400 Subject: [PATCH 1/3] fix(pkg_tool): Suppress stdout messages when installing jq for wapper_config Fixes a bug where installing JQ for the first time causes messages to reach stdout, which messes with the list of packages to install. --- package_tool | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package_tool b/package_tool index 358cbd3..66a4fd4 100755 --- a/package_tool +++ b/package_tool @@ -63,7 +63,7 @@ parse_json() platform=$2 if ! command -v jq > /dev/null; then - install_system_pkgs jq + install_system_pkgs jq >&2 # Move stdout to stderr to avoid returning noisy package install fi packages=$(jq -r ".dependencies.$platform | @csv" $json_file 2> /dev/null) From 39fa8b912c01c0815143259c4a501f05c874aa09 Mon Sep 17 00:00:00 2001 From: Keith Valin Date: Thu, 30 Oct 2025 13:21:27 -0400 Subject: [PATCH 2/3] feat(pkg_tool): Add ability for wrapper_config to specify OS versions Adds the ability to specify dependencies on an OS version level. The previous way of working with dependencies is still supported ("osname": [ /dev/stderr exit $2 } @@ -66,7 +66,28 @@ parse_json() install_system_pkgs jq >&2 # Move stdout to stderr to avoid returning noisy package install fi - packages=$(jq -r ".dependencies.$platform | @csv" $json_file 2> /dev/null) + jq_args="-r --arg platform $platform" + is_empty=$(jq $jq_args '.dependencies | if has($platform) then "0" else 1 end' $json_file) + if [[ "$is_empty" -eq 1 ]]; then + return + fi + + dep_type=$(jq $jq_args '.dependencies[$platform] | if type=="array" then "unversioned" else "versioned" end' $json_file 2> /dev/null) + + if [[ "$dep_type" == "unversioned" ]]; then + packages=$(jq $jq_args ".dependencies.$platform | @csv" $json_file 2> /dev/null) + elif [[ "$dep_type" == "versioned" ]]; then + os_version=$($base_dir/detect_os --os-version) + os_major_version=$($base_dir/detect_os --os-version --major-version) + + for version in $os_version $os_major_version "default"; do + packages=$(jq $jq_args --arg version "$version" '.dependencies[$platform][$version] | @csv' $json_file 2> /dev/null) + + if [[ $? -eq 0 ]]; then + break + fi + done + fi if [[ $? -ne 0 ]]; then echo "WARN: Could not find dependency information for $platform in $json_file, this could be intended behavior" > /dev/stderr @@ -235,7 +256,13 @@ fi if [[ -n "$wrapper_config" ]]; then wrapper_pkgs=$(parse_json $wrapper_config $running_os) + if [[ $? -ne 0 ]]; then + exit 1 + fi wrapper_pip=$(parse_json $wrapper_config pip) + if [[ $? -ne 0 ]]; then + exit $? + fi packages=$(append_packages $packages $wrapper_pkgs) pip_packages=$(append_packages $pip_packages $wrapper_pip) From 43665f0c7c2d21e78501f1ed708709df28377a6d Mon Sep 17 00:00:00 2001 From: Keith Valin Date: Mon, 10 Nov 2025 12:59:57 -0500 Subject: [PATCH 3/3] fix: Improve error messages when parsing wrapper_config --- package_tool | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package_tool b/package_tool index 9d3374f..2bdbb62 100755 --- a/package_tool +++ b/package_tool @@ -257,11 +257,11 @@ fi if [[ -n "$wrapper_config" ]]; then wrapper_pkgs=$(parse_json $wrapper_config $running_os) if [[ $? -ne 0 ]]; then - exit 1 + exit_out "Error parsing .dependencies.$running_os in $wrapper_config" 1 fi wrapper_pip=$(parse_json $wrapper_config pip) if [[ $? -ne 0 ]]; then - exit $? + exit_out "Error parsing .dependencies.pip in $wrapper_config" 1 fi packages=$(append_packages $packages $wrapper_pkgs)