Unverified Commit 25ccc144 by Alexander Popov Committed by GitHub

Merge pull request #80 from nE0sIghT/feature/gzipped-config

Added support for gzipped config (eg. /proc/config.gz)
parents b65af76d 8def541b
...@@ -12,6 +12,7 @@ This module performs input/output. ...@@ -12,6 +12,7 @@ This module performs input/output.
# pylint: disable=missing-function-docstring,line-too-long,invalid-name,too-many-branches,too-many-statements # pylint: disable=missing-function-docstring,line-too-long,invalid-name,too-many-branches,too-many-statements
import gzip
import sys import sys
from argparse import ArgumentParser from argparse import ArgumentParser
from collections import OrderedDict from collections import OrderedDict
...@@ -22,8 +23,16 @@ from .checks import add_kconfig_checks, add_cmdline_checks, normalize_cmdline_op ...@@ -22,8 +23,16 @@ from .checks import add_kconfig_checks, add_cmdline_checks, normalize_cmdline_op
from .engine import populate_with_data, perform_checks from .engine import populate_with_data, perform_checks
def _open(file: str, *args, **kwargs):
open_method = open
if file.endswith(".gz"):
open_method = gzip.open
return open_method(file, *args, **kwargs)
def detect_arch(fname, archs): def detect_arch(fname, archs):
with open(fname, 'r', encoding='utf-8') as f: with _open(fname, 'rt', encoding='utf-8') as f:
arch_pattern = re.compile("CONFIG_[a-zA-Z0-9_]*=y") arch_pattern = re.compile("CONFIG_[a-zA-Z0-9_]*=y")
arch = None arch = None
for line in f.readlines(): for line in f.readlines():
...@@ -40,7 +49,7 @@ def detect_arch(fname, archs): ...@@ -40,7 +49,7 @@ def detect_arch(fname, archs):
def detect_kernel_version(fname): def detect_kernel_version(fname):
with open(fname, 'r', encoding='utf-8') as f: with _open(fname, 'rt', encoding='utf-8') as f:
ver_pattern = re.compile("# Linux/.* Kernel Configuration") ver_pattern = re.compile("# Linux/.* Kernel Configuration")
for line in f.readlines(): for line in f.readlines():
if ver_pattern.match(line): if ver_pattern.match(line):
...@@ -58,7 +67,7 @@ def detect_kernel_version(fname): ...@@ -58,7 +67,7 @@ def detect_kernel_version(fname):
def detect_compiler(fname): def detect_compiler(fname):
gcc_version = None gcc_version = None
clang_version = None clang_version = None
with open(fname, 'r', encoding='utf-8') as f: with _open(fname, 'rt', encoding='utf-8') as f:
gcc_version_pattern = re.compile("CONFIG_GCC_VERSION=[0-9]*") gcc_version_pattern = re.compile("CONFIG_GCC_VERSION=[0-9]*")
clang_version_pattern = re.compile("CONFIG_CLANG_VERSION=[0-9]*") clang_version_pattern = re.compile("CONFIG_CLANG_VERSION=[0-9]*")
for line in f.readlines(): for line in f.readlines():
...@@ -146,7 +155,7 @@ def print_checklist(mode, checklist, with_results): ...@@ -146,7 +155,7 @@ def print_checklist(mode, checklist, with_results):
def parse_kconfig_file(parsed_options, fname): def parse_kconfig_file(parsed_options, fname):
with open(fname, 'r', encoding='utf-8') as f: with _open(fname, 'rt', encoding='utf-8') as f:
opt_is_on = re.compile("CONFIG_[a-zA-Z0-9_]*=[a-zA-Z0-9_\"]*") opt_is_on = re.compile("CONFIG_[a-zA-Z0-9_]*=[a-zA-Z0-9_\"]*")
opt_is_off = re.compile("# CONFIG_[a-zA-Z0-9_]* is not set") opt_is_off = re.compile("# CONFIG_[a-zA-Z0-9_]* is not set")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment