)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"23cb760e318769f83ff4a77478cb9ee331cb464b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"785c7076_2c673479","updated":"2023-04-03 04:24:12.000000000","message":"I have run this and the results are in mirror.iad.rax.opendev.org ~ianw\n\nIn summary\n\nmirror dirs inspected\n\n $ cat log.txt | wc -l\n 3530\n\nreported empty dirs after audit\n\n ianw@mirror01:~$ cat log.txt | grep \u0027^   0\u0027 | wc -l\n 1727\n\nthis is \n\n $ while read filename ;  do stat -c \u0027%s\u0027 $filename ; done \u003c to-delete.txt | awk \u0027{total+\u003d$1} END {print total}\u0027\n 24511115915\n\nbytes, and \n\n $ cat to-delete.txt | grep \u0027.whl$\u0027 | wc -l\n 32371\n \nwheel files\n","commit_id":"8669bc033cd770b5eaf53404baa392e90ed43718"}],"tools/upstream-wheel-audit.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1353f715edb0d42d698f39322db471e41f8d14c9","unresolved":true,"context_lines":[{"line_number":57,"context_line":"                except NoSuchProjectError:"},{"line_number":58,"context_line":"                    print(\"Removing disappeared project : %s\" % name, file\u003dsys.stderr)"},{"line_number":59,"context_line":"                    for w in d[\u0027dirs\u0027][name][\u0027files\u0027]:"},{"line_number":60,"context_line":"                        print(\"%s/%s\" % (path, w), file\u003dFILE_DEL)"},{"line_number":61,"context_line":"                    return"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"                upstream \u003d set([package.filename for package in page.packages])"}],"source_content_type":"text/x-python","patch_set":2,"id":"d6381d76_d9ddd49d","line":60,"updated":"2023-04-04 21:40:58.000000000","message":"It is possible that these wheels would protect openstack from removed dependencies in CI. I think removing them from the cache is the correct thing to do but this may expose the problem exists. We should be prepared for that.","commit_id":"d1548e504937d6239bf35938c8213581f97046ae"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1353f715edb0d42d698f39322db471e41f8d14c9","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                dups \u003d local.intersection(upstream)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"                # Print files to delete, and if the directory is empty"},{"line_number":70,"context_line":"                # put that in the list to delete too."},{"line_number":71,"context_line":"                for d in dups:"},{"line_number":72,"context_line":"                    print(\"%s/%s\" % (path, d), file\u003dFILE_DEL)"},{"line_number":73,"context_line":"                if len(not_upstream) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"19774a36_bd125f08","line":70,"updated":"2023-04-04 21:40:58.000000000","message":"The len(not_upstream) case doesn\u0027t just check if the directory is empty but would call out any packges whose file listings somehow exactly match our wheel mirror? I think practically this doesn\u0027t matter but I found the comment here a bit confusing.","commit_id":"d1548e504937d6239bf35938c8213581f97046ae"}]}
