aboutsummaryrefslogtreecommitdiff
path: root/compute-definitions-from-results.sh
blob: b1c5dac87d4e5a8fa359b9fb851571c175257990 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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$},'