diff options
Diffstat (limited to 'compute-definitions-from-results.sh')
-rw-r--r-- | compute-definitions-from-results.sh | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/compute-definitions-from-results.sh b/compute-definitions-from-results.sh new file mode 100644 index 0000000..b1c5dac --- /dev/null +++ b/compute-definitions-from-results.sh @@ -0,0 +1,81 @@ +#!/bin/sh + +## SPDX-License-Identifier: CC0-1.0 +## +## Copyright (C) 2025 Woj. Kosior <koszko@koszko.org> + +set -e + +RESULTS_PATH="$1" +COUNTS_PATH="$2" +STATS_PATH="$3" + +ALL_SELECTED=$(($(wc -l "$RESULTS_PATH" | awk '{print $1}') - 1)) +FAKES=$(grep -c ST-not-a-real-package "$RESULTS_PATH") +SKIPPED_DUE_TO_LIMITATIONS=$(grep -c ST-experiment-limitation "$RESULTS_PATH") +ALL_TESTED=$(awk -F , '{sum += $3;} END {print sum;}' < "$COUNTS_PATH") +ERESOLVE_YARN=$(grep -cE 'ST-failure,FR-failed-to-resolve.*,YL-yes' "$RESULTS_PATH") +INVALID_LOCKFILES=$(grep -c FR-invalid-lockfile-supplied "$RESULTS_PATH") +IN_DEBIAN=$(grep -c ,ID-yes,ST-built-with-lockfiles-removed "$RESULTS_PATH") +BUILT_SUCCESSFULLY=$(grep -c ,ST-built-with-lockfiles-removed "$RESULTS_PATH") +ANY_TARBALLS_DIFFERENT=$(grep -v ,BC-no-only-package.json-unicode "$RESULTS_PATH" | + grep -cE ',T[A-Z]+-different' ) +ONLY_PACKAGE_JSON_DIFFERENT=$(grep -cE ',BC-no-only-package.json(,|$)' "$RESULTS_PATH") +BUILT_BROKEN=$(grep -c ,BC-yes "$RESULTS_PATH") +BUILT_BROKEN_IN_DEBIAN=$(grep ,BC-yes "$RESULTS_PATH" | grep -c ,ID-yes) +BUILT_ONCE=$(grep -c ,ST-built-once "$RESULTS_PATH") + +orig_tree_get() { + ./helper.sh --get-csv-columns "$STATS_PATH" DESCRIPTION "$1" | + awk -F , '/^Vanilla de/{print $2;}' +} +ORIG_TREE_MIN=$(orig_tree_get VERS-MIN) +ORIG_TREE_MAX=$(orig_tree_get VERS-MAX) +ORIG_TREE_STD_DEV=$(orig_tree_get VERS-STD_DEV) +ORIG_TREE_MULTIVER_AVG=$(orig_tree_get MULTIVER-AVG) +ORIG_TREE_MULTIVER_STD_DEV=$(orig_tree_get MULTIVER-STD_DEV) + +LATEST_TAG_USERS_COUNT=$(grep -c ,LTR-yes "$RESULTS_PATH") + +(cat <<EOF + allSelectedCount $ALL_SELECTED + fakePackagesCount $FAKES + skippedDueToLimitationsCount $SKIPPED_DUE_TO_LIMITATIONS + allTestedCount $ALL_TESTED + failedToResolveAndUsingYarnCount $ERESOLVE_YARN + invalidLockfilesCount $INVALID_LOCKFILES + inDebianCount $IN_DEBIAN + builtSuccessfullyCount $BUILT_SUCCESSFULLY + withAnyTarballsDifferentCount $ANY_TARBALLS_DIFFERENT + onlyPackageJsonDifferentCount $ONLY_PACKAGE_JSON_DIFFERENT + builtBrokenCount $BUILT_BROKEN + builtBrokenInDebianCount $BUILT_BROKEN_IN_DEBIAN + builtOnceCount $BUILT_ONCE + origTreeMin $ORIG_TREE_MIN + origTreeMax $ORIG_TREE_MAX + origTreeStdDev $ORIG_TREE_STD_DEV + origTreeMultiverAvg $ORIG_TREE_MULTIVER_AVG + origTreeMultiverStdDev $ORIG_TREE_MULTIVER_STD_DEV + latestTagUsersCount $LATEST_TAG_USERS_COUNT +EOF + awk ' + /,UNDC-[0-9].*,BC-no/ { + count += 1; + unnecessary = gensub(/.*,UNDC-([^,]+).*/, "\\1", "g"); + necessary = gensub(/.*,NDC-([^,]+).*/, "\\1", "g"); + necessary_sum += necessary; + necessary_squares_sum += necessary^2; + all = necessary + unnecessary; + all_sum += all; + all_squares_sum += all^2; + } + END { + printf "necessaryDepsAvg %.1f\n", necessary_sum / count; + printf "necessaryDepsStdDev %.1f\n", + sqrt((necessary_squares_sum - necessary_sum^2 / count) / count); + printf "allDirectDepsAvg %.1f\n", all_sum / count; + printf "allDirectDepsStdDev %.1f\n", + sqrt((all_squares_sum - all_sum^2 / count) / count); + } + ' "$RESULTS_PATH") \ + | sed 's, *\([^ ]\+\) \+\(.*\),\\newcommand{\\\1}{$\2$},' |