Thanks for the patches, I applied this to master.
On Fri, Nov 02, 2018 at 01:17:25PM -0700, Yifeng Sun wrote: > Looks good to me, thanks. > > Reviewed-by: Yifeng Sun <[email protected]> > > On Thu, Nov 1, 2018 at 8:07 AM Ben Pfaff <[email protected]> wrote: > > > On my machine it takes almost a second for enchant to read its dictionary. > > This time is wasted when spell checking is not enabled. This commit makes > > checkpatch read the dictionary only when it will be used. > > > > Signed-off-by: Ben Pfaff <[email protected]> > > --- > > utilities/checkpatch.py | 117 > > +++++++++++++++++++++++++----------------------- > > 1 file changed, 62 insertions(+), 55 deletions(-) > > > > diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py > > index 54aa4b6346db..8bbda78989c4 100755 > > --- a/utilities/checkpatch.py > > +++ b/utilities/checkpatch.py > > @@ -21,59 +21,6 @@ import os > > import re > > import sys > > > > -try: > > - import enchant > > - > > - extra_keywords = ['ovs', 'vswitch', 'vswitchd', 'ovs-vswitchd', > > 'netdev', > > - 'selinux', 'ovs-ctl', 'dpctl', 'ofctl', > > 'openvswitch', > > - 'dpdk', 'hugepage', 'hugepages', 'pmd', 'upcall', > > - 'vhost', 'rx', 'tx', 'vhostuser', 'openflow', > > 'qsort', > > - 'rxq', 'txq', 'perf', 'stats', 'struct', 'int', > > - 'char', 'bool', 'upcalls', 'nicira', 'bitmask', > > 'ipv4', > > - 'ipv6', 'tcp', 'tcp4', 'tcpv4', 'udp', 'udp4', > > 'udpv4', > > - 'icmp', 'icmp4', 'icmpv6', 'vlan', 'vxlan', 'cksum', > > - 'csum', 'checksum', 'ofproto', 'numa', 'mempool', > > - 'mempools', 'mbuf', 'mbufs', 'hmap', 'cmap', 'smap', > > - 'dhcpv4', 'dhcp', 'dhcpv6', 'opts', 'metadata', > > - 'geneve', 'mutex', 'netdev', 'netdevs', 'subtable', > > - 'virtio', 'qos', 'policer', 'datapath', 'tunctl', > > - 'attr', 'ethernet', 'ether', 'defrag', 'defragment', > > - 'loopback', 'sflow', 'acl', 'initializer', 'recirc', > > - 'xlated', 'unclosed', 'netlink', 'msec', 'usec', > > - 'nsec', 'ms', 'us', 'ns', 'kilobits', 'kbps', > > - 'kilobytes', 'megabytes', 'mbps', 'gigabytes', > > 'gbps', > > - 'megabits', 'gigabits', 'pkts', 'tuple', 'miniflow', > > - 'megaflow', 'conntrack', 'vlans', 'vxlans', 'arg', > > - 'tpid', 'xbundle', 'xbundles', 'mbundle', > > 'mbundles', > > - 'netflow', 'localnet', 'odp', 'pre', 'dst', 'dest', > > - 'src', 'ethertype', 'cvlan', 'ips', 'msg', 'msgs', > > - 'liveness', 'userspace', 'eventmask', 'datapaths', > > - 'slowpath', 'fastpath', 'multicast', 'unicast', > > - 'revalidation', 'namespace', 'qdisc', 'uuid', > > 'ofport', > > - 'subnet', 'revalidation', 'revalidator', > > 'revalidate', > > - 'l2', 'l3', 'l4', 'openssl', 'mtu', 'ifindex', > > 'enum', > > - 'enums', 'http', 'https', 'num', 'vconn', 'vconns', > > - 'conn', 'nat', 'memset', 'memcmp', 'strcmp', > > - 'strcasecmp', 'tc', 'ufid', 'api', 'ofpbuf', > > 'ofpbufs', > > - 'hashmaps', 'hashmap', 'deref', 'dereference', 'hw', > > - 'prio', 'sendmmsg', 'sendmsg', 'malloc', 'free', > > 'alloc', > > - 'pid', 'ppid', 'pgid', 'uid', 'gid', 'sid', 'utime', > > - 'stime', 'cutime', 'cstime', 'vsize', 'rss', > > 'rsslim', > > - 'whcan', 'gtime', 'eip', 'rip', 'cgtime', 'dbg', > > 'gw', > > - 'sbrec', 'bfd', 'sizeof', 'pmds', 'nic', 'nics', > > 'hwol', > > - 'encap', 'decap', 'tlv', 'tlvs', 'decapsulation', > > 'fd', > > - 'cacheline', 'xlate', 'skiplist', 'idl', > > 'comparator', > > - 'natting', 'alg', 'pasv', 'epasv', 'wildcard', > > 'nated', > > - 'amd64', 'x86_64', 'recirculation'] > > - > > - spell_check_dict = enchant.Dict("en_US") > > - for kw in extra_keywords: > > - spell_check_dict.add(kw) > > - > > - no_spellcheck = False > > -except: > > - no_spellcheck = True > > - > > RETURN_CHECK_INITIAL_STATE = 0 > > RETURN_CHECK_STATE_WITH_RETURN = 1 > > RETURN_CHECK_AWAITING_BRACE = 2 > > @@ -86,6 +33,66 @@ total_line = 0 > > colors = False > > spellcheck_comments = False > > quiet = False > > +spell_check_dict = None > > + > > + > > +def open_spell_check_dict(): > > + import enchant > > + > > + try: > > + extra_keywords = ['ovs', 'vswitch', 'vswitchd', 'ovs-vswitchd', > > + 'netdev', 'selinux', 'ovs-ctl', 'dpctl', > > 'ofctl', > > + 'openvswitch', 'dpdk', 'hugepage', 'hugepages', > > + 'pmd', 'upcall', 'vhost', 'rx', 'tx', > > 'vhostuser', > > + 'openflow', 'qsort', 'rxq', 'txq', 'perf', > > 'stats', > > + 'struct', 'int', 'char', 'bool', 'upcalls', > > 'nicira', > > + 'bitmask', 'ipv4', 'ipv6', 'tcp', 'tcp4', > > 'tcpv4', > > + 'udp', 'udp4', 'udpv4', 'icmp', 'icmp4', > > 'icmpv6', > > + 'vlan', 'vxlan', 'cksum', 'csum', 'checksum', > > + 'ofproto', 'numa', 'mempool', 'mempools', > > 'mbuf', > > + 'mbufs', 'hmap', 'cmap', 'smap', 'dhcpv4', > > 'dhcp', > > + 'dhcpv6', 'opts', 'metadata', 'geneve', 'mutex', > > + 'netdev', 'netdevs', 'subtable', 'virtio', > > 'qos', > > + 'policer', 'datapath', 'tunctl', 'attr', > > 'ethernet', > > + 'ether', 'defrag', 'defragment', 'loopback', > > 'sflow', > > + 'acl', 'initializer', 'recirc', 'xlated', > > 'unclosed', > > + 'netlink', 'msec', 'usec', 'nsec', 'ms', 'us', > > 'ns', > > + 'kilobits', 'kbps', 'kilobytes', 'megabytes', > > 'mbps', > > + 'gigabytes', 'gbps', 'megabits', 'gigabits', > > 'pkts', > > + 'tuple', 'miniflow', 'megaflow', 'conntrack', > > + 'vlans', 'vxlans', 'arg', 'tpid', 'xbundle', > > + 'xbundles', 'mbundle', 'mbundles', 'netflow', > > + 'localnet', 'odp', 'pre', 'dst', 'dest', 'src', > > + 'ethertype', 'cvlan', 'ips', 'msg', 'msgs', > > + 'liveness', 'userspace', 'eventmask', > > 'datapaths', > > + 'slowpath', 'fastpath', 'multicast', 'unicast', > > + 'revalidation', 'namespace', 'qdisc', 'uuid', > > + 'ofport', 'subnet', 'revalidation', > > 'revalidator', > > + 'revalidate', 'l2', 'l3', 'l4', 'openssl', > > 'mtu', > > + 'ifindex', 'enum', 'enums', 'http', 'https', > > 'num', > > + 'vconn', 'vconns', 'conn', 'nat', 'memset', > > 'memcmp', > > + 'strcmp', 'strcasecmp', 'tc', 'ufid', 'api', > > + 'ofpbuf', 'ofpbufs', 'hashmaps', 'hashmap', > > 'deref', > > + 'dereference', 'hw', 'prio', 'sendmmsg', > > 'sendmsg', > > + 'malloc', 'free', 'alloc', 'pid', 'ppid', > > 'pgid', > > + 'uid', 'gid', 'sid', 'utime', 'stime', 'cutime', > > + 'cstime', 'vsize', 'rss', 'rsslim', 'whcan', > > 'gtime', > > + 'eip', 'rip', 'cgtime', 'dbg', 'gw', 'sbrec', > > 'bfd', > > + 'sizeof', 'pmds', 'nic', 'nics', 'hwol', > > 'encap', > > + 'decap', 'tlv', 'tlvs', 'decapsulation', 'fd', > > + 'cacheline', 'xlate', 'skiplist', 'idl', > > + 'comparator', 'natting', 'alg', 'pasv', 'epasv', > > + 'wildcard', 'nated', 'amd64', 'x86_64', > > + 'recirculation'] > > + > > + global spell_check_dict > > + spell_check_dict = enchant.Dict("en_US") > > + for kw in extra_keywords: > > + spell_check_dict.add(kw) > > + > > + return True > > + except: > > + return False > > > > > > def get_color_end(): > > @@ -359,7 +366,7 @@ def filter_comments(current_line, keep=False): > > > > > > def check_comment_spelling(line): > > - if no_spellcheck or not spellcheck_comments: > > + if not spell_check_dict or not spellcheck_comments: > > return False > > > > comment_words = filter_comments(line, True).replace(':', ' ').split(' > > ') > > @@ -919,7 +926,7 @@ if __name__ == '__main__': > > elif o in ("-f", "--check-file"): > > checking_file = True > > elif o in ("-S", "--spellcheck-comments"): > > - if no_spellcheck: > > + if not open_spell_check_dict(): > > print("WARNING: The enchant library isn't availble.") > > print(" Please install python enchant.") > > else: > > -- > > 2.16.1 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
