From patchwork Wed Jan 28 10:50:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 2626 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id AAC9ECF9; Wed, 28 Jan 2015 11:51:43 +0100 (CET) Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by dpdk.org (Postfix) with ESMTP id 8D87E1F5 for ; Wed, 28 Jan 2015 11:51:38 +0100 (CET) Received: by mail-wi0-f180.google.com with SMTP id h11so10909764wiw.1 for ; Wed, 28 Jan 2015 02:51:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=Tgl99ET1joX16fspPckJ+Aa/w7RzeOjwSwfxXM1xq7U=; b=NTqZLnoZNNkCI/D0Mt2s2wPeD8u1bnWRahx1ykw/CV5dCJJKan/AHHxA4UO52Rh7/P VIDSaZV/Zf4yHHR4hztoDn7+G0tP91HGVSZ5n0LPLQ/SQ+rnMWFP8qDSPg0vcSFvbH3N zvWgGpiwtc3BoaliyClfUiqzRFzJDrAWzoEWzih1PkE36EezeA6SkbRFnsZwbR8do07s CPlp35R4hm138Fg3lDT/zUN6Wmrx4Zx2GfmqgJplPK2nge+4RUi6hRDGcNMe7xPVc1Lp No3YpgYQpuBQL9jxOTZ5loBaNiKjdU7bjV8tPKLsH3OB7wAe8cvsCkkl+59kNz+HvDE4 UA4g== X-Gm-Message-State: ALoCoQmUe8trJFQFOhuroCD/EjdktTJiPONd9MliFVHSHY2pLWHsm/stTSrQI7jV54LP0cbZbjt2 X-Received: by 10.180.74.141 with SMTP id t13mr5293723wiv.45.1422442294580; Wed, 28 Jan 2015 02:51:34 -0800 (PST) Received: from localhost.localdomain (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id lg7sm1731063wic.0.2015.01.28.02.51.33 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 28 Jan 2015 02:51:33 -0800 (PST) From: Thomas Monjalon To: dev@dpdk.org Date: Wed, 28 Jan 2015 11:50:55 +0100 Message-Id: <1422442255-25367-1-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.2.2 In-Reply-To: <1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com> References: <1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2] maintainers: start a Linux-style file X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This MAINTAINERS file is inspired from the Linux one. Almost all files are split into areas in order to identify maintainers of each DPDK area. Note that a maintainer is not a git tree manager. Candidates are welcome to send a patch to sign up for one or several areas. There is a script to check coverage, especially when adding or moving files. Signed-off-by: Thomas Monjalon Acked-by: Neil Horman --- Changes in v2: - add copyright and licence to check-maintainers.sh - minor improvements in the script --- MAINTAINERS | 388 +++++++++++++++++++++++++++++++++++++++++++ scripts/check-maintainers.sh | 117 +++++++++++++ 2 files changed, 505 insertions(+) create mode 100644 MAINTAINERS create mode 100755 scripts/check-maintainers.sh diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000..1f7d04a --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,388 @@ +DPDK Maintainers +================ + +The intention of this file is to provide a set of names that we can rely on +for helping in patch reviews and questions. +These names are additional recipients for emails sent to dev@dpdk.org. +Please avoid private emails. + +Descriptions of section entries: + + M: Maintainer's Full Name + T: Git tree location. + F: Files and directories with wildcard patterns. + A trailing slash includes all files and subdirectory files. + A wildcard includes all files but not subdirectories. + One pattern per line. Multiple F: lines acceptable. + X: Files and directories exclusion, same rules as F: + K: Keyword regex pattern to match content. + One regex pattern per line. Multiple K: lines acceptable. + + +General Project Administration +------------------------------ +M: Thomas Monjalon +T: git://dpdk.org/dpdk +F: MAINTAINERS +F: scripts/check-maintainers.sh + + +Security Issues +--------------- +M: maintainers@dpdk.org + + +Documentation (with overlaps) +------------- +F: doc/ + + +Build System +------------ +F: GNUmakefile +F: Makefile +F: config/ +F: mk/ +F: pkg/ +F: scripts/depdirs-rule.sh +F: scripts/gen-build-mk.sh +F: scripts/gen-config-h.sh +F: scripts/relpath.sh + + +Environment Abstraction Layer +----------------------------- + +EAL API and common code +M: Thomas Monjalon +F: lib/librte_eal/common/* +F: lib/librte_eal/common/include/* +F: lib/librte_eal/common/include/generic/ +F: app/test/test_alarm.c +F: app/test/test_atomic.c +F: app/test/test_byteorder.c +F: app/test/test_common.c +F: app/test/test_cpuflags.c +F: app/test/test_cycles.c +F: app/test/test_debug.c +F: app/test/test_devargs.c +F: app/test/test_eal* +F: app/test/test_errno.c +F: app/test/test_func_reentrancy.c +F: app/test/test_interrupts.c +F: app/test/test_logs.c +F: app/test/test_memcpy* +F: app/test/test_memory.c +F: app/test/test_memzone.c +F: app/test/test_pci.c +F: app/test/test_per_lcore.c +F: app/test/test_prefetch.c +F: app/test/test_rwlock.c +F: app/test/test_spinlock.c +F: app/test/test_string_fns.c +F: app/test/test_tailq.c +F: app/test/test_version.c + +Secondary process +K: RTE_PROC_ +F: doc/guides/prog_guide/multi_proc_support.rst +F: app/test/test_mp_secondary.c +F: examples/multi_process/ +F: doc/guides/sample_app_ug/multi_process.rst + +IBM Power +F: lib/librte_eal/common/include/arch/ppc_64/ + +Intel x86 +F: lib/librte_eal/common/include/arch/x86/ + +Linux EAL (with overlaps) +F: lib/librte_eal/linuxapp/Makefile +F: lib/librte_eal/linuxapp/eal/ +F: doc/guides/linux_gsg/ + +Linux UIO +F: lib/librte_eal/linuxapp/igb_uio/ +F: lib/librte_eal/linuxapp/eal/*uio* + +Linux VFIO +F: lib/librte_eal/linuxapp/eal/*vfio* + +Linux Xen +F: lib/librte_eal/linuxapp/xen_dom0/ +F: lib/librte_eal/linuxapp/eal/*xen* +F: lib/librte_eal/linuxapp/eal/include/exec-env/rte_dom0_common.h +F: lib/librte_mempool/rte_dom0_mempool.c +F: lib/librte_pmd_xenvirt/ +F: app/test-pmd/mempool_* +F: examples/vhost_xen/ +F: doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst + +FreeBSD EAL (with overlaps) +F: lib/librte_eal/bsdapp/Makefile +F: lib/librte_eal/bsdapp/eal/ +F: doc/guides/freebsd_gsg/ + +FreeBSD contigmem +F: lib/librte_eal/bsdapp/contigmem/ + +FreeBSD UIO +F: lib/librte_eal/bsdapp/nic_uio/ + + +Core Libraries +-------------- + +Memory management +F: lib/librte_malloc/ +F: doc/guides/prog_guide/malloc_lib.rst +F: app/test/test_malloc.c +F: lib/librte_mempool/ +F: doc/guides/prog_guide/mempool_lib.rst +F: app/test/test_mempool* +F: app/test/test_func_reentrancy.c + +Ring queue +F: lib/librte_ring/ +F: app/test/test_ring* +F: app/test/test_func_reentrancy.c + +Packet buffer +F: lib/librte_mbuf/ +F: doc/guides/prog_guide/mbuf_lib.rst +F: app/test/test_mbuf.c + +Ethernet API +M: Thomas Monjalon +F: lib/librte_ether/ + + +Drivers +------- + +Link bonding +F: lib/librte_pmd_bond/ +F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst +F: app/test/test_link_bonding.c + +Linux KNI +F: lib/librte_eal/linuxapp/kni/ +F: lib/librte_kni/ +F: doc/guides/prog_guide/kernel_nic_interface.rst +F: app/test/test_kni.c +F: examples/kni/ +F: doc/guides/sample_app_ug/kernel_nic_interface.rst + +Linux AF_PACKET +F: lib/librte_pmd_af_packet/ + +Cisco enic +F: lib/librte_pmd_enic/ + +Intel e1000 +F: lib/librte_pmd_e1000/ + +Intel ixgbe +F: lib/librte_pmd_ixgbe/ + +Intel i40e +F: lib/librte_pmd_i40e/ + +RedHat virtio +F: lib/librte_pmd_virtio/ +F: doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst +F: lib/librte_vhost/ +F: doc/guides/prog_guide/vhost_lib.rst +F: examples/vhost/ +F: doc/guides/sample_app_ug/vhost.rst + +VMware vmxnet3 +F: lib/librte_pmd_vmxnet3/ +F: doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst + +PCAP PMD +F: lib/librte_pmd_pcap/ +F: doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst + +Ring PMD +F: lib/librte_pmd_ring/ +F: doc/guides/prog_guide/ring_lib.rst +F: app/test/test_pmd_ring.c + + +Packet processing +----------------- + +Network headers +F: lib/librte_net/ + +IP fragmentation & reassembly +F: lib/librte_ip_frag/ +F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst +F: examples/ip_fragmentation/ +F: doc/guides/sample_app_ug/ip_frag.rst +F: examples/ip_reassembly/ +F: doc/guides/sample_app_ug/ip_reassembly.rst + +Distributor +F: lib/librte_distributor/ +F: doc/guides/prog_guide/packet_distrib_lib.rst +F: app/test/test_distributor* +F: examples/distributor/ +F: doc/guides/sample_app_ug/dist_app.rst + +Hierarchical scheduler +F: lib/librte_sched/ +F: doc/guides/prog_guide/qos_framework.rst +F: app/test/test_red.c +F: app/test/test_sched.c +F: examples/qos_sched/ +F: doc/guides/sample_app_ug/qos_scheduler.rst + + +Packet Framework +---------------- +F: lib/librte_pipeline/ +F: lib/librte_port/ +F: lib/librte_table/ +F: doc/guides/prog_guide/packet_framework.rst +F: app/test/test_table* +F: app/test-pipeline/ +F: doc/guides/sample_app_ug/test_pipeline.rst +F: examples/ip_pipeline/ +F: doc/guides/sample_app_ug/internet_proto_ip_pipeline.rst + + +Algorithms +---------- + +ACL +F: lib/librte_acl/ +F: doc/guides/prog_guide/packet_classif_access_ctrl.rst +F: app/test-acl/ +F: app/test/test_acl.* +F: examples/l3fwd-acl/ +F: doc/guides/sample_app_ug/l3_forward_access_ctrl.rst + +Hashes +F: lib/librte_hash/ +F: doc/guides/prog_guide/hash_lib.rst +F: app/test/test_hash* +F: app/test/test_func_reentrancy.c + +LPM +F: lib/librte_lpm/ +F: doc/guides/prog_guide/lpm* +F: app/test/test_lpm* +F: app/test/test_func_reentrancy.c + +Traffic metering +F: lib/librte_meter/ +F: doc/guides/sample_app_ug/qos_scheduler.rst +F: app/test/test_meter.c +F: examples/qos_meter/ +F: doc/guides/sample_app_ug/qos_metering.rst + + +Other libraries +--------------- + +Configuration file +F: lib/librte_cfgfile/ + +Interactive command line +F: lib/librte_cmdline/ +F: app/cmdline_test/ +F: app/test/test_cmdline* +F: examples/cmdline/ +F: doc/guides/sample_app_ug/cmd_line.rst + +Qemu IVSHMEM +F: lib/librte_ivshmem/ +F: lib/librte_eal/linuxapp/eal/eal_ivshmem.c +F: doc/guides/prog_guide/ivshmem_lib.rst +F: app/test/test_ivshmem.c +F: examples/l2fwd-ivshmem/ + +Key/Value parsing +F: lib/librte_kvargs/ +F: app/test/test_kvargs.c + +Power management +F: lib/librte_power/ +F: doc/guides/prog_guide/power_man.rst +F: app/test/test_power* +F: examples/l3fwd-power/ +F: doc/guides/sample_app_ug/l3_forward_power_man.rst +F: examples/vm_power_manager/ +F: doc/guides/sample_app_ug/vm_power_management.rst + +Timers +F: lib/librte_timer/ +F: doc/guides/prog_guide/timer_lib.rst +F: app/test/test_timer* +F: examples/timer/ +F: doc/guides/sample_app_ug/timer.rst + + +Test Applications +----------------- + +Unit tests framework +F: app/test/autotest* +F: app/test/commands.c +F: app/test/packet_burst_generator.c +F: app/test/packet_burst_generator.h +F: app/test/process.h +F: app/test/test.c +F: app/test/test.h +F: app/test/test_pmd_perf.c +F: app/test/virtual_pmd.c +F: app/test/virtual_pmd.h + +Driver testing tool +F: app/test-pmd/ +F: doc/guides/testpmd_app_ug/ + + +Other Example Applications +-------------------------- + +F: examples/dpdk_qat/ +F: doc/guides/sample_app_ug/intel_quickassist.rst + +F: examples/exception_path/ +F: doc/guides/sample_app_ug/exception_path.rst + +F: examples/helloworld/ +F: doc/guides/sample_app_ug/hello_world.rst + +F: examples/ipv4_multicast/ +F: doc/guides/sample_app_ug/ipv4_multicast.rst + +F: examples/l2fwd/ +F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst + +F: examples/l3fwd/ +F: doc/guides/sample_app_ug/l3_forward.rst + +F: examples/l3fwd-vf/ +F: doc/guides/sample_app_ug/l3_forward_virtual.rst + +F: examples/link_status_interrupt/ +F: doc/guides/sample_app_ug/link_status_intr.rst + +F: examples/load_balancer/ +F: doc/guides/sample_app_ug/load_balancer.rst + +F: examples/netmap_compat/ +F: doc/guides/sample_app_ug/netmap_compatibility.rst + +F: examples/quota_watermark/ +F: doc/guides/sample_app_ug/quota_watermark.rst + +F: examples/skeleton/ + +F: examples/vmdq/ +F: examples/vmdq_dcb/ +F: doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst diff --git a/scripts/check-maintainers.sh b/scripts/check-maintainers.sh new file mode 100755 index 0000000..2687cad --- /dev/null +++ b/scripts/check-maintainers.sh @@ -0,0 +1,117 @@ +#! /bin/sh + +# BSD LICENSE +# +# Copyright 2015 6WIND S.A. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of 6WIND S.A. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Do some basic checks in MAINTAINERS file + +cd $(dirname $0)/.. + +# Get files matching paths with wildcards and / meaning recursing +files () # [ ...] +{ + if [ -z "$1" ] ; then + return + fi + if [ -d .git ] ; then + git ls-files "$1" + else + find "$1" -type f | + sed 's,^\./,,' + fi | + # if not ended by / + if ! echo "$1" | grep -q '/[[:space:]]*$' ; then + # filter out deeper directories + sed "/\(\/[^/]*\)\{$(($(echo "$1" | grep -o / | wc -l) + 1))\}/d" + else + cat + fi + # next path + shift + files "$@" +} + +# Get all files matching F: and X: fields +parse_fx () # +{ + IFS=' +' + # parse each line excepted underlining + for line in $( (sed '/^-\+$/d' $1 ; echo) | sed 's,^$,§,') ; do + if echo "$line" | grep -q '^§$' ; then + # empty line delimit end of section + whitelist=$(files $flines) + blacklist=$(files $xlines) + match=$(aminusb "$whitelist" "$blacklist") + if [ -n "$match" ] ; then + echo "# $title" + echo "$match" + fi + # flush section + unset flines + unset xlines + elif echo "$line" | grep -q '^[A-Z]: ' ; then + # file matching pattern + flines=$(add_line_to_if "$line" "$flines" 'F: ') + # file exclusion pattern + xlines=$(add_line_to_if "$line" "$xlines" 'X: ') + else # assume it is a title + title="$line" + fi + done +} + +# Add a line to a set of lines if it begins with right pattern +add_line_to_if () # +{ + ( + echo "$2" + echo "$1" | sed -rn "s,^$3(.*),\1,p" + ) | + sed '/^$/d' +} + +# Subtract two sets of lines +aminusb () # +{ + printf "$1\n$2\n$2" | sort | uniq -u | sed '/^$/d' +} + +all=$(files ./) +listed=$(parse_fx MAINTAINERS | sed '/^#/d' | sort -u) + +echo '##########' +echo '# files not listed' +echo '##########' +aminusb "$all" "$listed" + +# TODO: check patterns that match nothing +# TODO: check overlaps +# TODO: check orphan areas