From 406f89271452fdb573c7e28113b1ed08ff2b4eda Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Sun, 17 Mar 2019 17:31:05 +0100
Subject: Squashed 'waflib/' changes from 915dcb1..e7a29b6

e7a29b6 Upgrade to waf 2.0.15
8280f9d Add command for running executables from the build directory
8073c1a Make make_simple_dox() safe in case of exception
70d03b8 Avoid use of global counter hacks for configuration display
b7d689a Rewrite test framework
94deadf Automatically add options and move add_flags() to options context
f4259ee Reduce system include path noise
927b608 Automatically display configuration header
c44b8f3 Set line justification from a constant in the wscript
a48e26f Automatically detect if wscript has a test hook
ef66724 Save runtime variables in the environment
63bcbcd Clean up TestContext
b1d9505 Add ExecutionContext for setting runtime environment
387c1df Add show_diff() and test_file_equals() utilities
29d4d29 Fix in-tree library paths
9fde01f Add custom configuration context
6d3612f Add lib_path_name constant

git-subtree-dir: waflib
git-subtree-split: e7a29b6b9b2f842314244c23c14d8f8f560904e1
---
 waflib/extras/cpplint.py | 209 -----------------------------------------------
 1 file changed, 209 deletions(-)
 delete mode 100644 waflib/extras/cpplint.py

(limited to 'waflib/extras/cpplint.py')

diff --git a/waflib/extras/cpplint.py b/waflib/extras/cpplint.py
deleted file mode 100644
index e3302e5..0000000
--- a/waflib/extras/cpplint.py
+++ /dev/null
@@ -1,209 +0,0 @@
-#! /usr/bin/env python
-# encoding: utf-8
-#
-# written by Sylvain Rouquette, 2014
-
-'''
-
-This is an extra tool, not bundled with the default waf binary.
-To add the cpplint tool to the waf file:
-$ ./waf-light --tools=compat15,cpplint
-
-this tool also requires cpplint for python.
-If you have PIP, you can install it like this: pip install cpplint
-
-When using this tool, the wscript will look like:
-
-    def options(opt):
-        opt.load('compiler_cxx cpplint')
-
-    def configure(conf):
-        conf.load('compiler_cxx cpplint')
-        # optional, you can also specify them on the command line
-        conf.env.CPPLINT_FILTERS = ','.join((
-            '-whitespace/newline',      # c++11 lambda
-            '-readability/braces',      # c++11 constructor
-            '-whitespace/braces',       # c++11 constructor
-            '-build/storage_class',     # c++11 for-range
-            '-whitespace/blank_line',   # user pref
-            '-whitespace/labels'        # user pref
-            ))
-
-    def build(bld):
-        bld(features='cpplint', source='main.cpp', target='app')
-        # add include files, because they aren't usually built
-        bld(features='cpplint', source=bld.path.ant_glob('**/*.hpp'))
-'''
-
-from __future__ import absolute_import
-import sys, re
-import logging
-from waflib import Errors, Task, TaskGen, Logs, Options, Node, Utils
-
-
-critical_errors = 0
-CPPLINT_FORMAT = '[CPPLINT] %(filename)s:\nline %(linenum)s, severity %(confidence)s, category: %(category)s\n%(message)s\n'
-RE_EMACS = re.compile('(?P<filename>.*):(?P<linenum>\d+):  (?P<message>.*)  \[(?P<category>.*)\] \[(?P<confidence>\d+)\]')
-CPPLINT_RE = {
-    'waf': RE_EMACS,
-    'emacs': RE_EMACS,
-    'vs7': re.compile('(?P<filename>.*)\((?P<linenum>\d+)\):  (?P<message>.*)  \[(?P<category>.*)\] \[(?P<confidence>\d+)\]'),
-    'eclipse': re.compile('(?P<filename>.*):(?P<linenum>\d+): warning: (?P<message>.*)  \[(?P<category>.*)\] \[(?P<confidence>\d+)\]'),
-}
-CPPLINT_STR = ('${CPPLINT} '
-               '--verbose=${CPPLINT_LEVEL} '
-               '--output=${CPPLINT_OUTPUT} '
-               '--filter=${CPPLINT_FILTERS} '
-               '--root=${CPPLINT_ROOT} '
-               '--linelength=${CPPLINT_LINE_LENGTH} ')
-
-
-def options(opt):
-    opt.add_option('--cpplint-filters', type='string',
-                   default='', dest='CPPLINT_FILTERS',
-                   help='add filters to cpplint')
-    opt.add_option('--cpplint-length', type='int',
-                   default=80, dest='CPPLINT_LINE_LENGTH',
-                   help='specify the line length (default: 80)')
-    opt.add_option('--cpplint-level', default=1, type='int', dest='CPPLINT_LEVEL',
-                   help='specify the log level (default: 1)')
-    opt.add_option('--cpplint-break', default=5, type='int', dest='CPPLINT_BREAK',
-                   help='break the build if error >= level (default: 5)')
-    opt.add_option('--cpplint-root', type='string',
-                   default='', dest='CPPLINT_ROOT',
-                   help='root directory used to derive header guard')
-    opt.add_option('--cpplint-skip', action='store_true',
-                   default=False, dest='CPPLINT_SKIP',
-                   help='skip cpplint during build')
-    opt.add_option('--cpplint-output', type='string',
-                   default='waf', dest='CPPLINT_OUTPUT',
-                   help='select output format (waf, emacs, vs7, eclipse)')
-
-
-def configure(conf):
-    try:
-        conf.find_program('cpplint', var='CPPLINT')
-    except Errors.ConfigurationError:
-        conf.env.CPPLINT_SKIP = True
-
-
-class cpplint_formatter(Logs.formatter, object):
-    def __init__(self, fmt):
-        logging.Formatter.__init__(self, CPPLINT_FORMAT)
-        self.fmt = fmt
-
-    def format(self, rec):
-        if self.fmt == 'waf':
-            result = CPPLINT_RE[self.fmt].match(rec.msg).groupdict()
-            rec.msg = CPPLINT_FORMAT % result
-        if rec.levelno <= logging.INFO:
-            rec.c1 = Logs.colors.CYAN
-        return super(cpplint_formatter, self).format(rec)
-
-
-class cpplint_handler(Logs.log_handler, object):
-    def __init__(self, stream=sys.stderr, **kw):
-        super(cpplint_handler, self).__init__(stream, **kw)
-        self.stream = stream
-
-    def emit(self, rec):
-        rec.stream = self.stream
-        self.emit_override(rec)
-        self.flush()
-
-
-class cpplint_wrapper(object):
-    def __init__(self, logger, threshold, fmt):
-        self.logger = logger
-        self.threshold = threshold
-        self.fmt = fmt
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, exc_type, exc_value, traceback):
-        if isinstance(exc_value, Utils.subprocess.CalledProcessError):
-            messages = [m for m in exc_value.output.splitlines() 
-                        if 'Done processing' not in m 
-                        and 'Total errors found' not in m]
-            for message in messages:
-                self.write(message)
-            return True
-
-    def write(self, message):
-        global critical_errors
-        result = CPPLINT_RE[self.fmt].match(message)
-        if not result:
-            return
-        level = int(result.groupdict()['confidence'])
-        if level >= self.threshold:
-            critical_errors += 1
-        if level <= 2:
-            self.logger.info(message)
-        elif level <= 4:
-            self.logger.warning(message)
-        else:
-            self.logger.error(message)
-
-
-cpplint_logger = None
-def get_cpplint_logger(fmt):
-    global cpplint_logger
-    if cpplint_logger:
-        return cpplint_logger
-    cpplint_logger = logging.getLogger('cpplint')
-    hdlr = cpplint_handler()
-    hdlr.setFormatter(cpplint_formatter(fmt))
-    cpplint_logger.addHandler(hdlr)
-    cpplint_logger.setLevel(logging.DEBUG)
-    return cpplint_logger
-
-
-class cpplint(Task.Task):
-    color = 'PINK'
-
-    def __init__(self, *k, **kw):
-        super(cpplint, self).__init__(*k, **kw)
-
-    def run(self):
-        global critical_errors
-        with cpplint_wrapper(get_cpplint_logger(self.env.CPPLINT_OUTPUT), self.env.CPPLINT_BREAK, self.env.CPPLINT_OUTPUT):
-            params = {key: str(self.env[key]) for key in self.env if 'CPPLINT_' in key}
-            if params['CPPLINT_OUTPUT'] is 'waf':
-                params['CPPLINT_OUTPUT'] = 'emacs'
-            params['CPPLINT'] = self.env.get_flat('CPPLINT')
-            cmd = Utils.subst_vars(CPPLINT_STR, params)
-            env = self.env.env or None
-            Utils.subprocess.check_output(cmd + self.inputs[0].abspath(),
-                                          stderr=Utils.subprocess.STDOUT,
-                                          env=env, shell=True)
-        return critical_errors
-
-@TaskGen.extension('.h', '.hh', '.hpp', '.hxx')
-def cpplint_includes(self, node):
-    pass
-
-@TaskGen.feature('cpplint')
-@TaskGen.before_method('process_source')
-def post_cpplint(self):
-    if not self.env.CPPLINT_INITIALIZED:
-        for key, value in Options.options.__dict__.items():
-            if not key.startswith('CPPLINT_') or self.env[key]:
-                continue
-            self.env[key] = value
-        self.env.CPPLINT_INITIALIZED = True
-
-    if self.env.CPPLINT_SKIP:
-        return
-
-    if not self.env.CPPLINT_OUTPUT in CPPLINT_RE:
-        return
-
-    for src in self.to_list(getattr(self, 'source', [])):
-        if isinstance(src, Node.Node):
-            node = src
-        else:
-            node = self.path.find_or_declare(src)
-        if not node:
-            self.bld.fatal('Could not find %r' % src)
-        self.create_task('cpplint', node)
-- 
cgit v1.2.1