@@ -19,30 +19,30 @@ SBOM_FILE="$OUTPUT_DIR/sbom.csv"
19
19
20
20
# Function to run a command safely, capture stdout, and restore 'set -e' state
21
21
run_command_with_restore () {
22
- # Save the current state of 'set -e'
23
- if [[ $- == * e* ]]; then
24
- errexit_was_set=true
25
- else
26
- errexit_was_set=false
27
- fi
22
+ # Save the current state of 'set -e'
23
+ if [[ $- == * e* ]]; then
24
+ errexit_was_set=true
25
+ else
26
+ errexit_was_set=false
27
+ fi
28
28
29
- # Temporarily disable 'set -e'
30
- set +e
29
+ # Temporarily disable 'set -e'
30
+ set +e
31
31
32
- # Run the command, capturing stdout
33
- output=$( " $@ " 2> /dev/null)
34
- exit_code=$?
32
+ # Run the command, capturing stdout
33
+ output=$( " $@ " 2> /dev/null)
34
+ exit_code=$?
35
35
36
- # Restore the original state of 'set -e'
37
- if [ " $errexit_was_set " = true ]; then
38
- set -e
39
- else
40
- set +e
41
- fi
36
+ # Restore the original state of 'set -e'
37
+ if [ " $errexit_was_set " = true ]; then
38
+ set -e
39
+ else
40
+ set +e
41
+ fi
42
42
43
- # Return the command’s exit code and captured output
44
- echo " $output "
45
- return 0
43
+ # Return the command’s exit code and captured output
44
+ echo " $output "
45
+ return 0
46
46
}
47
47
48
48
# Continue with the rest of the script
@@ -76,14 +76,14 @@ sbom_scan_installed_files() {
76
76
"\($source[9:]),\($dest | sub("/[^/]+/?$"; ""))"
77
77
end
78
78
' " $dir_file "
79
- done > ${INSTALLERS_FILE}
79
+ done > ${INSTALLERS_FILE}
80
80
81
- cat ${RUNTIME_INSTALLERS_FILE} | sed ' s|C:/msys64||' >> ${INSTALLERS_FILE}
82
- cat ${RUNTIME32_INSTALLERS_FILE} | sed ' s|C:/msys64||' >> ${INSTALLERS_FILE}
81
+ cat ${RUNTIME_INSTALLERS_FILE} | sed ' s|C:/msys64||' >> ${INSTALLERS_FILE}
82
+ cat ${RUNTIME32_INSTALLERS_FILE} | sed ' s|C:/msys64||' >> ${INSTALLERS_FILE}
83
83
}
84
84
85
85
function sbom_scan_headers() {
86
- ninja -C $BUILD_DIR -t deps > $BUILD_DIR /deps.txt
86
+ ninja -C $BUILD_DIR -t deps > $BUILD_DIR /deps.txt
87
87
88
88
EXCLUDE_DIR=" C:/msys64/clang64/include/c++|.*/$BUILD_DIR /_deps"
89
89
CURRENT_DIR=" $( pwd) "
@@ -92,21 +92,21 @@ function sbom_scan_headers() {
92
92
processed_dirs=()
93
93
94
94
sort -u $BUILD_DIR /deps.txt -o $BUILD_DIR /deps.txt
95
- grep -oP ' (?<=\s\s\s\s)[^\s]+\.(h|hh|hpp|hxx)\b' $BUILD_DIR /deps.txt | grep -Ev " ^($EXCLUDE_DIR |$CURRENT_DIR )" > $BUILD_DIR /deps-unique.txt
95
+ grep -oP ' (?<=\s\s\s\s)[^\s]+\.(h|hh|hpp|hxx)\b' $BUILD_DIR /deps.txt | grep -Ev " ^($EXCLUDE_DIR |$CURRENT_DIR )" > $BUILD_DIR /deps-unique.txt
96
96
97
97
cat $BUILD_DIR /deps-unique.txt | while read -r line; do
98
- include=true
99
- file_dir=$( dirname " $line " )
98
+ include=true
99
+ file_dir=$( dirname " $line " )
100
100
101
- if [[ " ${processed_dirs[@]} " =~ " ${file_dir} " ]]; then
102
- include=false
103
- fi
101
+ if [[ " ${processed_dirs[@]} " =~ " ${file_dir} " ]]; then
102
+ include=false
103
+ fi
104
104
105
- if $include ; then
106
- echo " $line " | sed ' s|C:/msys64||'
107
- processed_dirs+=(" $file_dir " )
108
- fi
109
- done > $MSYS_INSTALLERS_FILE
105
+ if $include ; then
106
+ echo " $line " | sed ' s|C:/msys64||'
107
+ processed_dirs+=(" $file_dir " )
108
+ fi
109
+ done > $MSYS_INSTALLERS_FILE
110
110
}
111
111
112
112
declare -A installer_map
@@ -116,10 +116,10 @@ sbom_create_installer_map() {
116
116
source=$( echo " $source " | sed ' s/[[:space:]]*$//;s:/*$::;s:/\.$::' )
117
117
destination=$( echo " $destination " | sed ' s/[[:space:]]*$//;s:/*$::;s:/\.$::' )
118
118
name=$( basename " $source " )
119
- if [[ $source == * " /clang64/" * || $source == * " /clang32 /" * ]]; then
119
+ if [[ $source == * " /clang64/" * || $source == * " /mingw32 /" * ]]; then
120
120
installer_map[" $destination /$name " ]=" $source "
121
121
fi
122
- done < ${INSTALLERS_FILE}
122
+ done < ${INSTALLERS_FILE}
123
123
}
124
124
125
125
sbom_create_msys_installed_files () {
@@ -131,11 +131,11 @@ sbom_create_msys_installed_files() {
131
131
while [ -n " $relative_path " ]; do
132
132
if [[ -n " ${installer_map[$relative_path]} " ]]; then
133
133
echo " Matched: $file (Source: ${installer_map[$relative_path]} + ${removed_path} )"
134
- echo " ${installer_map[$relative_path]}${removed_path} " >> ${MSYS_INSTALLERS_FILE}
134
+ echo " ${installer_map[$relative_path]}${removed_path} " >> ${MSYS_INSTALLERS_FILE}
135
135
found=true
136
136
break
137
137
fi
138
- base_name=" ${relative_path##*/ } " # Get the last part of the relative path
138
+ base_name=" ${relative_path##*/ } " # Get the last part of the relative path
139
139
if [ -n " $removed_path " ]; then
140
140
removed_path=" /$base_name$removed_path "
141
141
else
@@ -157,28 +157,28 @@ sbom_create_msys_installed_files() {
157
157
}
158
158
159
159
sbom_create_msys2_package_list () {
160
- > ${MSYS_PACKAGES_FILE}
160
+ > ${MSYS_PACKAGES_FILE}
161
161
while IFS= read -r filename; do
162
- packages=$( run_command_with_restore pacman -Qo --config <( sed ' s/^SigLevel.*/SigLevel = Never/' /etc/pacman.conf) " $filename " )
163
- pacman_exit_code=$?
162
+ packages=$( run_command_with_restore pacman -Qo --config <( sed ' s/^SigLevel.*/SigLevel = Never/' /etc/pacman.conf) " $filename " )
163
+ pacman_exit_code=$?
164
164
165
- if [ " $pacman_exit_code " -ne 0 ]; then
166
- echo " Pacman failed for $filename , skipping."
167
- continue
168
- fi
165
+ if [ " $pacman_exit_code " -ne 0 ]; then
166
+ echo " Pacman failed for $filename , skipping."
167
+ continue
168
+ fi
169
169
170
- echo " $packages " | while IFS= read -r package_info; do
171
- echo " $filename belongs to $package_info "
172
- package=$( echo " $package_info " | awk ' { printf "%s,%s\n", $5,$6 }' )
173
- echo " $package " >> ${MSYS_PACKAGES_FILE}
174
- done
175
- done < ${MSYS_INSTALLERS_FILE}
170
+ echo " $packages " | while IFS= read -r package_info; do
171
+ echo " $filename belongs to $package_info "
172
+ package=$( echo " $package_info " | awk ' { printf "%s,%s\n", $5,$6 }' )
173
+ echo " $package " >> ${MSYS_PACKAGES_FILE}
174
+ done
175
+ done < ${MSYS_INSTALLERS_FILE}
176
176
177
177
sort -u ${MSYS_PACKAGES_FILE} -o ${MSYS_PACKAGES_FILE}
178
178
}
179
179
180
180
sbom_create_sbom () {
181
- echo " Package Name,Version,License,Description,URL" > $SBOM_FILE
181
+ echo " Package Name,Version,License,Description,URL" > $SBOM_FILE
182
182
183
183
while IFS=, read -r package_name package_version; do
184
184
pacman_info=$( run_command_with_restore pacman --config <( sed ' s/^SigLevel.*/SigLevel = Never/' /etc/pacman.conf) -Qi " $package_name " )
@@ -207,11 +207,11 @@ sbom_create_sbom() {
207
207
description=$( echo " $pacman_info " | awk -F ' : ' ' /^Description/ {print $2}' )
208
208
209
209
# Add package info to SBOM
210
- echo " $package_name ,$package_version ,$license ,$description ,$url " >> $SBOM_FILE
210
+ echo " $package_name ,$package_version ,$license ,$description ,$url " >> $SBOM_FILE
211
211
212
- done < " $MSYS_PACKAGES_FILE "
212
+ done < " $MSYS_PACKAGES_FILE "
213
213
214
- cat $EXTERNAL_SBOM_FILE >> $SBOM_FILE
214
+ cat $EXTERNAL_SBOM_FILE >> $SBOM_FILE
215
215
echo " SBOM generated: $SBOM_FILE "
216
216
}
217
217
0 commit comments