aboutsummaryrefslogtreecommitdiff
path: root/compute-definitions-from-results.sh
diff options
context:
space:
mode:
authorW. Kosior <koszko@koszko.org>2025-09-19 12:47:44 +0200
committerW. Kosior <koszko@koszko.org>2025-09-19 13:09:45 +0200
commit7000b1f2bb2fca5b7707c9b1a9f58f43100212d3 (patch)
treecc5531b93b8e76c39e3c58d52574f68e86c3f05e /compute-definitions-from-results.sh
downloadAGH-msc-thesis-magister.tar.gz
AGH-msc-thesis-magister.zip
Initial commit.HEADmagister
Diffstat (limited to 'compute-definitions-from-results.sh')
-rw-r--r--compute-definitions-from-results.sh81
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$},'