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$},'
|