Subversion Repositories DevTools

Rev

Rev 235 | Rev 241 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 235 Rev 237
Line 139... Line 139...
139
    Error ("Need sbomid and/or rtagid, or -extract",
139
    Error ("Need sbomid and/or rtagid, or -extract",
140
           "Example: -sbomid=13543, for NZS Phase-1",
140
           "Example: -sbomid=13543, for NZS Phase-1",
141
           "Example: -sbomid=13543 -rtagid=xxxx, for NZS Phase-1, comapred against given release",
141
           "Example: -sbomid=13543 -rtagid=xxxx, for NZS Phase-1, comapred against given release",
142
           "Example: -rtagid=2362, for Sydney R1/R2",
142
           "Example: -rtagid=2362, for Sydney R1/R2",
143
           "Example: -rtagid=8843 -root=StockholmSBOM",
143
           "Example: -rtagid=8843 -root=StockholmSBOM",
144
 
-
 
145
    )
144
    )
146
}
145
}
147
 
146
 
148
#
147
#
149
#   The extract option is special
148
#   The extract option is special
Line 890... Line 889...
890
# Inputs          :
889
# Inputs          :
891
#
890
#
892
# Returns         :
891
# Returns         :
893
#
892
#
894
 
893
 
-
 
894
sub th
-
 
895
{
-
 
896
    my ($text, $span) = @_;
-
 
897
 
-
 
898
    my $string = '<th style="vertical-align: top;"';
-
 
899
    $string .= " colspan=\"$span\"" if ( $span );
-
 
900
    $string .= '>' . $text . '</th>' . "\n";
-
 
901
    return $string;
-
 
902
}
-
 
903
 
-
 
904
sub thl
-
 
905
{
-
 
906
    my ($text, $span) = @_;
-
 
907
 
-
 
908
    my $string = '<th style="text-align: left;"';
-
 
909
    $string .= " colspan=\"$span\"" if ( $span );
-
 
910
    $string .= '>' . $text . '</th>' . "\n";
-
 
911
    return $string;
-
 
912
}
-
 
913
 
-
 
914
 
895
sub GenerateHTML
915
sub GenerateHTML
896
{
916
{
897
    my $td = '<td style="vertical-align: top;">' . "\n";
917
    my $td = '<td style="vertical-align: top;">' . "\n";
898
    my $td3 = '<td style="vertical-align: top;" colspan="3">' . "\n";
918
    my $td3 = '<td style="vertical-align: top;" colspan="3">' . "\n";
899
    my $tdr = '<td style="text-align: right;">';
919
    my $tdr = '<td style="text-align: right;">';
Line 909... Line 929...
909
    print DP "<dd><a href=\"#Ignore\">Ignored Packages</a></dd>\n";
929
    print DP "<dd><a href=\"#Ignore\">Ignored Packages</a></dd>\n";
910
    print DP "<dd><a href=\"#Depend\">Dependency Info</a></dd>\n";
930
    print DP "<dd><a href=\"#Depend\">Dependency Info</a></dd>\n";
911
    print DP "<dd><a href=\"#Multi\">Multiple Package Version</a></dd>\n";
931
    print DP "<dd><a href=\"#Multi\">Multiple Package Version</a></dd>\n";
912
    print DP "<dd><a href=\"#Leaf\">Packages that have no parents</a></dd>\n";
932
    print DP "<dd><a href=\"#Leaf\">Packages that have no parents</a></dd>\n";
913
    print DP "<dd><a href=\"#NoBuild\">Packages that cannot be built</a></dd>\n";
933
    print DP "<dd><a href=\"#NoBuild\">Packages that cannot be built</a></dd>\n";
914
    print DP "<dd><a href=\"#Excess\">Excess Packages from Release: $opt_rtag_id</a></dd>\n" if ( $opt_rtag_id && $opt_sbom_id );
934
    print DP "<dd><a href=\"#Excess\">Excess Packages from Release: $opt_rtag_id</a></dd>\n" if ( $opt_rtag_id && ($opt_sbom_id || $opt_rootpkg ));
915
    print DP "<dd><a href=\"#Stray\">Required Packages, not part of the release</a></dd>\n" if ( $opt_rtag_id && !$opt_sbom_id );
935
    print DP "<dd><a href=\"#Stray\">Required Packages, not part of the release</a></dd>\n" if ( $opt_rtag_id && ! ($opt_sbom_id || $opt_rootpkg) );
916
    print DP "<dd><a href=\"#Inconsistent\">Packages in the Release, with inconsistent dependencies</a></dd>\n" if ( $opt_rtag_id && !$opt_sbom_id );
936
    print DP "<dd><a href=\"#Inconsistent\">Packages in the Release, with inconsistent dependencies</a></dd>\n" if ( $opt_rtag_id && !$opt_sbom_id );
917
 
937
 
918
    print DP "</dl>\n";
938
    print DP "</dl>\n";
919
 
939
 
920
    #
940
    #
Line 943... Line 963...
943
    #
963
    #
944
    print DP "<h1><a name=\"Depend\">Dependency Info</a></h1>\n";
964
    print DP "<h1><a name=\"Depend\">Dependency Info</a></h1>\n";
945
 
965
 
946
    print DP "<table border=\"1\"><tbody>\n";
966
    print DP "<table border=\"1\"><tbody>\n";
947
    print DP "<tr>\n";
967
    print DP "<tr>\n";
948
    print DP "<th>Package Dependency</th>\n";
968
    print DP th("Package Dependency");
949
    print DP "<th>Package Used by</th>\n";
969
    print DP th("Package Used by");
950
    print DP "<th>Build Info</th>\n";
970
    print DP th("Build Info");
951
    print DP "</tr>\n";
971
    print DP "</tr>\n";
952
 
-
 
-
 
972
    my $package_count = 0;
953
    foreach my $name ( sort keys %Package )
973
    foreach my $name ( sort keys %Package )
954
    {
974
    {
955
        foreach my $ver ( sort keys %{$Package{$name}} )
975
        foreach my $ver ( sort keys %{$Package{$name}} )
956
        {
976
        {
957
            print DP "<tr>\n";
977
            print DP "<tr>\n";
-
 
978
            $package_count++;
958
            #
979
            #
959
            #   Depends On info
980
            #   Depends On info
960
            #
981
            #
961
 
982
 
962
            print DP $td;
983
            print DP $td;
Line 1058... Line 1079...
1058
            #   End of Row
1079
            #   End of Row
1059
            #
1080
            #
1060
            print DP "</tr>\n";
1081
            print DP "</tr>\n";
1061
        }
1082
        }
1062
    }
1083
    }
-
 
1084
    print DP "<tr>\n";
-
 
1085
    print DP thl("Total Count: $package_count", 3);
-
 
1086
    print DP "</tr>\n";
-
 
1087
    
1063
    print DP "</tbody></table>\n";
1088
    print DP "</tbody></table>\n";
1064
 
1089
 
1065
 
1090
 
1066
    #
1091
    #
1067
    #   Multiple versions of a package
1092
    #   Multiple versions of a package
1068
    #
1093
    #
1069
    print DP "<h1><a name=\"Multi\">Multiple Package Versions</a></h1>\n";
1094
    print DP "<h1><a name=\"Multi\">Multiple Package Versions</a></h1>\n";
1070
    print DP "<table border=\"1\"><tbody>\n";
1095
    print DP "<table border=\"1\"><tbody>\n";
1071
    print DP "<tr>\n";
1096
    print DP "<tr>\n";
1072
    print DP "<th>Multiple Versions</th>\n";
1097
    print DP th("Multiple Versions");
1073
    print DP "</tr>\n";
1098
    print DP "</tr>\n";
1074
 
-
 
-
 
1099
    my $multiple_count = 0;
1075
    foreach my $name ( sort keys %Package )
1100
    foreach my $name ( sort keys %Package )
1076
    {
1101
    {
1077
        my @versions = keys %{$Package{$name}};
1102
        my @versions = keys %{$Package{$name}};
1078
        next unless ( $#versions > 0 );
1103
        next unless ( $#versions > 0 );
-
 
1104
        $multiple_count++;
1079
        print DP "<tr>\n";
1105
        print DP "<tr>\n";
1080
        print DP $td;
1106
        print DP $td;
1081
        printf  DP "<dl><dt>$name</a> Versions:<dt>\n";
1107
        printf  DP "<dl><dt>$name</a> Versions:<dt>\n";
1082
 
1108
 
1083
        foreach my $ver ( sort @versions )
1109
        foreach my $ver ( sort @versions )
Line 1090... Line 1116...
1090
        }
1116
        }
1091
        print DP "</dl>\n";
1117
        print DP "</dl>\n";
1092
        print DP "</td>\n";
1118
        print DP "</td>\n";
1093
        print DP "</tr>\n";
1119
        print DP "</tr>\n";
1094
    }
1120
    }
-
 
1121
    print DP "<tr>\n";
-
 
1122
    print DP thl("Total Count: $multiple_count");
-
 
1123
    print DP "</tr>\n";
-
 
1124
    
1095
    print DP "</tbody></table>\n";
1125
    print DP "</tbody></table>\n";
1096
 
1126
 
1097
 
1127
 
1098
    #
1128
    #
1099
    #   Leaf Packages
1129
    #   Leaf Packages
1100
    #
1130
    #
1101
    print DP "<h1><a name=\"Leaf\">Packages that have no parents</a></h1>\n";
1131
    print DP "<h1><a name=\"Leaf\">Packages that have no parents</a></h1>\n";
1102
    print DP "<table border=\"1\"><tbody>\n";
1132
    print DP "<table border=\"1\"><tbody>\n";
1103
    print DP "<tr>\n";
1133
    print DP "<tr>\n";
1104
    print DP "<th>Leaf Packages</th>\n";
1134
    print DP th("Leaf Packages");
1105
    print DP "</tr>\n";
1135
    print DP "</tr>\n";
1106
 
-
 
-
 
1136
    my $leaf_count = 0;
1107
    foreach my $name ( sort keys %Package )
1137
    foreach my $name ( sort keys %Package )
1108
    {
1138
    {
1109
        foreach my $ver ( sort keys %{$Package{$name}} )
1139
        foreach my $ver ( sort keys %{$Package{$name}} )
1110
        {
1140
        {
1111
            my @usedby = keys %{$Package{$name}{$ver}{usedby}};
1141
            my @usedby = keys %{$Package{$name}{$ver}{usedby}};
1112
            next if ( @usedby );
1142
            next if ( @usedby );
-
 
1143
            $leaf_count++;
1113
 
1144
 
1114
            print DP "<tr>\n";
1145
            print DP "<tr>\n";
1115
            print DP $td;
1146
            print DP $td;
1116
 
1147
 
1117
            my $tag = "${name}_${ver}";
1148
            my $tag = "${name}_${ver}";
Line 1120... Line 1151...
1120
 
1151
 
1121
            print DP "</td>\n";
1152
            print DP "</td>\n";
1122
            print DP "</tr>\n";
1153
            print DP "</tr>\n";
1123
        }
1154
        }
1124
    }
1155
    }
-
 
1156
    print DP "<tr>\n";
-
 
1157
    print DP thl("Total Count: $leaf_count");
-
 
1158
    print DP "</tr>\n";
1125
    print DP "</tbody></table>\n";
1159
    print DP "</tbody></table>\n";
1126
 
1160
 
1127
 
1161
 
1128
 
1162
 
1129
    #
1163
    #
1130
    #   Packages that cannot be built
1164
    #   Packages that cannot be built
1131
    #
1165
    #
1132
    print DP "<h1><a name=\"NoBuild\">Packages that cannot be built</a></h1>\n";
1166
    print DP "<h1><a name=\"NoBuild\">Packages that cannot be built</a></h1>\n";
1133
    print DP "<table border=\"1\"><tbody>\n";
1167
    print DP "<table border=\"1\"><tbody>\n";
1134
    print DP "<tr>\n";
1168
    print DP "<tr>\n";
1135
    print DP "<th>Not Built</th>\n";
1169
    print DP th("Not Built");
1136
    print DP "</tr>\n";
1170
    print DP "</tr>\n";
1137
    my $no_build_count = 0;
1171
    my $no_build_count = 0;
1138
 
1172
 
1139
    foreach my $name ( sort keys %Package )
1173
    foreach my $name ( sort keys %Package )
1140
    {
1174
    {
Line 1163... Line 1197...
1163
            print DP "</tr>\n";
1197
            print DP "</tr>\n";
1164
            
1198
            
1165
        }
1199
        }
1166
    }
1200
    }
1167
    print DP "<tr>\n";
1201
    print DP "<tr>\n";
1168
    print DP "<th>Total Count: $no_build_count</th>\n";
1202
    print DP thl("Total Count: $no_build_count");
1169
    print DP "</tr>\n";
1203
    print DP "</tr>\n";
1170
 
1204
 
1171
    print DP "</tbody></table>\n";
1205
    print DP "</tbody></table>\n";
1172
 
1206
 
1173
    #
1207
    #
1174
    #   Packages that are in a specified release, but not described by the SBOM
1208
    #   Packages that are in a specified release, but not described by the SBOM
1175
    #
1209
    #
1176
    if ( $opt_rtag_id && $opt_sbom_id )
1210
    if ( $opt_rtag_id && ($opt_sbom_id || $opt_rootpkg) )
1177
    {
1211
    {
1178
        print DP "<h1><a name=\"Excess\">Excess Packages from Release: $opt_rtag_id</a></h1>\n";
1212
        print DP "<h1><a name=\"Excess\">Excess Packages from Release: $opt_rtag_id</a></h1>\n";
1179
        print DP "<table border=\"1\"><tbody>\n";
1213
        print DP "<table border=\"1\"><tbody>\n";
1180
        print DP "<tr>\n";
1214
        print DP "<tr>\n";
1181
        print DP '<th colspan="3">Excess Packages</th>';
1215
        print DP th("Excess Packages",3);
1182
        print DP "</tr>\n";
1216
        print DP "</tr>\n";
1183
 
1217
 
1184
        print DP "<tr>\n";
1218
        print DP "<tr>\n";
1185
        print DP '<th>Package</th>';
1219
        print DP th("Package");
1186
        print DP '<th>PVID</th>';
1220
        print DP th("PVID");
1187
        print DP '<th>Used Package</th>';
1221
        print DP th("Used Package");
1188
        print DP "</tr>\n";
1222
        print DP "</tr>\n";
1189
 
1223
 
1190
        my $were_found = 0;
1224
        my $were_found = 0;
1191
        my $not_found = 0;
1225
        my $not_found = 0;
1192
        foreach my $name ( sort keys %Release )
1226
        foreach my $name ( sort keys %Release )
Line 1237... Line 1271...
1237
                print DP "</tr>\n";
1271
                print DP "</tr>\n";
1238
            }
1272
            }
1239
        }
1273
        }
1240
 
1274
 
1241
        print DP "<tr>\n";
1275
        print DP "<tr>\n";
1242
        print DP $td3;
-
 
1243
        print DP "Packages found in SBOM: $were_found";
1276
        print DP thl("Packages found in SBOM: $were_found",3);
1244
        print DP "</td>\n";
1277
        print DP "</td>\n";
1245
        print DP "</tr>\n";
1278
        print DP "</tr>\n";
1246
 
1279
 
1247
        print DP "<tr>\n";
1280
        print DP "<tr>\n";
1248
        print DP $td3;
-
 
1249
        print DP "Packages NOT found in SBOM: $not_found";
1281
        print DP thl("Packages NOT found in SBOM: $not_found", 3);
1250
        print DP "</td>\n";
1282
        print DP "</td>\n";
1251
        print DP "</tr>\n";
1283
        print DP "</tr>\n";
1252
        
1284
        
1253
        print DP "</tbody></table>\n";
1285
        print DP "</tbody></table>\n";
1254
    }
1286
    }
1255
 
1287
 
1256
    #
1288
    #
1257
    #   Packages that are strays
1289
    #   Packages that are strays
1258
    #   They are not top level packages in the release
1290
    #   They are not top level packages in the release
1259
    #
1291
    #
1260
    if ( $opt_rtag_id && !$opt_sbom_id )
1292
    if ( $opt_rtag_id && ! ($opt_sbom_id || $opt_rootpkg) )
1261
    {
1293
    {
1262
        print DP "<h1><a name=\"Stray\">Required Packages, not part of the release</a></h1>\n";
1294
        print DP "<h1><a name=\"Stray\">Required Packages, not part of the release</a></h1>\n";
1263
        print DP "<table border=\"1\"><tbody>\n";
1295
        print DP "<table border=\"1\"><tbody>\n";
1264
        print DP "<tr>\n";
1296
        print DP "<tr>\n";
1265
        print DP '<th colspan="3">Stray Packages</th>';
1297
        print DP th("Stray Packages",3);
1266
        print DP "</tr>\n";
1298
        print DP "</tr>\n";
1267
 
1299
 
1268
        print DP "<tr>\n";
1300
        print DP "<tr>\n";
1269
        print DP '<th>Inconsisient Package</th>';
1301
        print DP th("Inconsisient Package");
1270
        print DP '<th>PVID</th>';
1302
        print DP th("PVID");
1271
        print DP '<th>Preferred Package</th>';
1303
        print DP th("Preferred Package");
1272
        print DP "</tr>\n";
1304
        print DP "</tr>\n";
-
 
1305
        my $stray_count = 0;
1273
 
1306
 
1274
        foreach my $name ( sort keys %Package )
1307
        foreach my $name ( sort keys %Package )
1275
        {
1308
        {
1276
 
1309
 
1277
            my @versions = keys %{$Package{$name}};
1310
            my @versions = keys %{$Package{$name}};
Line 1292... Line 1325...
1292
                    next if (exists($Package{$name}{$pver}{stray} ) && $Package{$name}{$pver}{stray} );
1325
                    next if (exists($Package{$name}{$pver}{stray} ) && $Package{$name}{$pver}{stray} );
1293
                    push @preferred, $pver;
1326
                    push @preferred, $pver;
1294
                }
1327
                }
1295
 
1328
 
1296
                print DP "<tr>\n";
1329
                print DP "<tr>\n";
-
 
1330
                $stray_count++;
1297
 
1331
 
1298
                #
1332
                #
1299
                #  Package name and Used By information
1333
                #  Package name and Used By information
1300
                #
1334
                #
1301
                print DP $td;
1335
                print DP $td;
Line 1336... Line 1370...
1336
                print DP "</tr>\n";
1370
                print DP "</tr>\n";
1337
                
1371
                
1338
            }
1372
            }
1339
        }
1373
        }
1340
 
1374
 
-
 
1375
        print DP "<tr>\n";
-
 
1376
        print DP thl("Total Count: $stray_count", 3);
-
 
1377
        print DP "</tr>\n";
1341
        print DP "</tbody></table>\n";
1378
        print DP "</tbody></table>\n";
1342
    }
1379
    }
1343
 
1380
 
1344
    #
1381
    #
1345
    #   Packages that have components not in the release
1382
    #   Packages that have components not in the release
Line 1349... Line 1386...
1349
    {
1386
    {
1350
        print DP "<h1><a name=\"Inconsistent\">Packages in the Release, with inconsistent dependencies</a></h1>\n";
1387
        print DP "<h1><a name=\"Inconsistent\">Packages in the Release, with inconsistent dependencies</a></h1>\n";
1351
        print DP "<table border=\"1\"><tbody>\n";
1388
        print DP "<table border=\"1\"><tbody>\n";
1352
 
1389
 
1353
        print DP "<tr>\n";
1390
        print DP "<tr>\n";
1354
        print DP '<th>Inconsisient Package</th>';
1391
        print DP th("Inconsisient Package");
1355
        print DP "</tr>\n";
1392
        print DP "</tr>\n";
-
 
1393
        my $inconsistent_count = 0;
1356
 
1394
 
1357
        foreach my $name ( sort keys %Package )
1395
        foreach my $name ( sort keys %Package )
1358
        {
1396
        {
1359
 
1397
 
1360
            my @versions = keys %{$Package{$name}};
1398
            my @versions = keys %{$Package{$name}};
Line 1378... Line 1416...
1378
                        last;
1416
                        last;
1379
                    }
1417
                    }
1380
                }
1418
                }
1381
 
1419
 
1382
                next if ( $ok );
1420
                next if ( $ok );
1383
 
-
 
-
 
1421
                $inconsistent_count++;
1384
 
1422
 
1385
                #
1423
                #
1386
                #   Depends On info
1424
                #   Depends On info
1387
                #
1425
                #
1388
 
1426
 
Line 1404... Line 1442...
1404
                print DP "<tr>\n";
1442
                print DP "<tr>\n";
1405
 
1443
 
1406
            }
1444
            }
1407
        }
1445
        }
1408
 
1446
 
-
 
1447
        print DP "<tr>\n";
-
 
1448
        print DP thl("Total Count: $inconsistent_count");
-
 
1449
        print DP "</tr>\n";
1409
        print DP "</tbody></table>\n";
1450
        print DP "</tbody></table>\n";
1410
    }
1451
    }
1411
    
1452
    
1412
    
-
 
1413
 
-
 
1414
 
-
 
1415
    close DP;
1453
    close DP;
1416
}
1454
}
1417
 
1455
 
1418
#-------------------------------------------------------------------------------
1456
#-------------------------------------------------------------------------------
1419
# Function        : extract_files
1457
# Function        : extract_files