diff --git a/development/centos-kernels.txt b/development/centos-kernels.txt new file mode 100644 index 000000000..17280a517 --- /dev/null +++ b/development/centos-kernels.txt @@ -0,0 +1,51 @@ +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190218180909/4.14.94-200.el7.x86_64/kernel-core-4.14.94-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190218180909/4.14.94-200.el7.x86_64/kernel-debuginfo-4.14.94-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190218180954/4.14.101-200.el7.x86_64/kernel-core-4.14.101-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190218180954/4.14.101-200.el7.x86_64/kernel-debuginfo-4.14.101-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190314091448/4.14.106-200.el7.x86_64/kernel-core-4.14.106-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190314091448/4.14.106-200.el7.x86_64/kernel-debuginfo-4.14.106-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190415175139/4.14.111-200.el7.x86_64/kernel-core-4.14.111-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190415175139/4.14.111-200.el7.x86_64/kernel-debuginfo-4.14.111-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190506131339/4.14.116-200.el7.x86_64/kernel-core-4.14.116-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190506131339/4.14.116-200.el7.x86_64/kernel-debuginfo-4.14.116-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190506131813/4.19.39-300.el7.x86_64/kernel-core-4.19.39-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190506131813/4.19.39-300.el7.x86_64/kernel-debuginfo-4.19.39-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190516234433/4.14.119-200.el7.x86_64/kernel-core-4.14.119-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190516234433/4.14.119-200.el7.x86_64/kernel-debuginfo-4.14.119-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190918210642/4.19.72-300.el7.x86_64/kernel-core-4.19.72-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20190918210642/4.19.72-300.el7.x86_64/kernel-debuginfo-4.19.72-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20191121160255/4.19.84-300.el7.x86_64/kernel-core-4.19.84-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20191121160255/4.19.84-300.el7.x86_64/kernel-debuginfo-4.19.84-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200109160334/4.19.94-300.el7.x86_64/kernel-core-4.19.94-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200109160334/4.19.94-300.el7.x86_64/kernel-debuginfo-4.19.94-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200217152238/4.19.104-300.el7.x86_64/kernel-core-4.19.104-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200217152238/4.19.104-300.el7.x86_64/kernel-debuginfo-4.19.104-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200316161817/4.19.110-300.el7.x86_64/kernel-core-4.19.110-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200316161817/4.19.110-300.el7.x86_64/kernel-debuginfo-4.19.110-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200330144235/4.19.113-300.el8.x86_64/kernel-core-4.19.113-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200330144235/4.19.113-300.el8.x86_64/kernel-debuginfo-4.19.113-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200330211837/4.19.113-300.el8.x86_64/kernel-core-4.19.113-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200330211837/4.19.113-300.el8.x86_64/kernel-debuginfo-4.19.113-300.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200522143231/5.4.42-200.el7.x86_64/kernel-core-5.4.42-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7-kernels.x86_64/kernel/20200522143231/5.4.42-200.el7.x86_64/kernel-debuginfo-5.4.42-200.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.02/kernel/20140529190808/3.10.0-121.el7.x86_64/kernel-3.10.0-121.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.02/kernel/20140529190808/3.10.0-121.el7.x86_64/kernel-debuginfo-3.10.0-121.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.03/kernel/20140609184350/3.10.0-121.el7.x86_64/kernel-3.10.0-121.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.03/kernel/20140609184350/3.10.0-121.el7.x86_64/kernel-debuginfo-3.10.0-121.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.04/kernel/20140612172658/3.10.0-123.el7.x86_64/kernel-3.10.0-123.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.04/kernel/20140612172658/3.10.0-123.el7.x86_64/kernel-debuginfo-3.10.0-123.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.04/kernel/20140619231033/3.10.0-123.el7.x86_64/kernel-3.10.0-123.el7.x86_64.rpm +https://buildlogs.centos.org/c7.00.04/kernel/20140619231033/3.10.0-123.el7.x86_64/kernel-debuginfo-3.10.0-123.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1611.01/kernel/20161117160457/3.10.0-514.el7.x86_64/kernel-3.10.0-514.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1611.01/kernel/20161117160457/3.10.0-514.el7.x86_64/kernel-debuginfo-3.10.0-514.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1708.00/kernel/20170822030048/3.10.0-693.el7.x86_64/kernel-3.10.0-693.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1708.00/kernel/20170822030048/3.10.0-693.el7.x86_64/kernel-debuginfo-3.10.0-693.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1804.00.x86_64/kernel/20180410150127/3.10.0-862.el7.x86_64/kernel-3.10.0-862.el7.centos.x86_64.rpm +https://buildlogs.centos.org/c7.1804.00.x86_64/kernel/20180410150127/3.10.0-862.el7.x86_64/kernel-debuginfo-3.10.0-862.el7.centos.x86_64.rpm +https://buildlogs.centos.org/c7.1810.00.x86_64/kernel/20181030130226/3.10.0-957.el7.x86_64/kernel-3.10.0-957.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1810.00.x86_64/kernel/20181030130226/3.10.0-957.el7.x86_64/kernel-debuginfo-3.10.0-957.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1908.00.x86_64/kernel/20190808101829/3.10.0-1062.el7.x86_64/kernel-3.10.0-1062.el7.x86_64.rpm +https://buildlogs.centos.org/c7.1908.00.x86_64/kernel/20190808101829/3.10.0-1062.el7.x86_64/kernel-debuginfo-3.10.0-1062.el7.x86_64.rpm +https://buildlogs.centos.org/c7.2003.00.x86_64/kernel/20200331233310/3.10.0-1127.el7.x86_64/kernel-3.10.0-1127.el7.x86_64.rpm +https://buildlogs.centos.org/c7.2003.00.x86_64/kernel/20200331233310/3.10.0-1127.el7.x86_64/kernel-debuginfo-3.10.0-1127.el7.x86_64.rpm + diff --git a/development/centos-profiles.py b/development/centos-profiles.py new file mode 100644 index 000000000..c7f18a8bd --- /dev/null +++ b/development/centos-profiles.py @@ -0,0 +1,94 @@ +import argparse +import lzma +import os +import subprocess +import tempfile +from typing import List, Dict + +import requests +import rpmfile + +DWARF2JSON = './dwarf2json' + + +class Downloader: + + def __init__(self, url_lists: List[List[str]]) -> None: + self.url_lists = url_lists + + def download_lists(self): + for url_list in self.url_lists: + print("Downloading files...") + files_for_processing = self.download_list(url_list) + self.process_files(files_for_processing) + for fname in files_for_processing.values(): + os.unlink(fname) + + def download_list(self, urls: List[str]) -> Dict[str, str]: + processed_files = {} + for url in urls: + print(" - Downloading {}".format(url)) + data = requests.get(url) + with tempfile.NamedTemporaryFile() as rpmdata: + rpmdata.write(data.content) + rpmdata.seek(0) + rpm = rpmfile.RPMFile(fileobj = rpmdata) + for member in rpm.getmembers(): + if 'vmlinux' in member.name or 'System.map' in member.name: + print(" - Extracting {}".format(member.name)) + extracted = rpm.extractfile(member) + break + with tempfile.NamedTemporaryFile( + delete = False, prefix = 'vmlinux' if 'vmlinux' in member.name else 'System.map') as output: + print(" - Writing to {}".format(output.name)) + output.write(extracted.read()) + processed_files[url] = output.name + return processed_files + + def process_files(self, named_files: Dict[str, str]): + """Runs the dwarf2json binary across the files""" + print("Processing Files...") + args = [DWARF2JSON, 'linux'] + output_filename = 'unknown-kernel.json' + for named_file in named_files: + prefix = '--system-map' + if not 'System' in named_files[named_file]: + prefix = '--elf' + output_filename = './' + '-'.join((named_file.split('/')[-1]).split('-')[2:])[:-4] + '.json.xz' + args += [prefix, named_files[named_file]] + print(" - Running {}".format(args)) + proc = subprocess.run(args, capture_output = True) + + print(" - Writing to {}".format(output_filename)) + with lzma.open(output_filename, 'w') as f: + f.write(proc.stdout) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description = "Takes a list of URLs for Centos and downloads them") + parser.add_argument("-f", + "--file", + dest = 'filename', + metavar = "FILENAME", + help = "Filename to be read", + required = True) + parser.add_argument("-d", + "--dwarf2json", + dest = 'dwarfpath', + metavar = "PATH", + default = DWARF2JSON, + help = "Path to the dwarf2json binary", + required = True) + args = parser.parse_args() + + DWARF2JSON = args.dwarfpath + + with open(args.filename) as f: + lines = f.readlines() + + urls = [] + for i in range(len(lines) // 2): + urls += [[lines[2 * i].strip(), lines[(2 * i) + 1].strip()]] + + d = Downloader(urls) + d.download_lists()