[dpdk-dev] maintainers: start a Linux-style file

Message ID 1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Thomas Monjalon Jan. 23, 2015, 12:54 p.m. UTC
  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 covering, especially when adding or moving files.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 MAINTAINERS                  | 388 +++++++++++++++++++++++++++++++++++++++++++
 scripts/check-maintainers.sh |  85 ++++++++++
 2 files changed, 473 insertions(+)
 create mode 100644 MAINTAINERS
 create mode 100755 scripts/check-maintainers.sh
  

Comments

Neil Horman Jan. 23, 2015, 2:18 p.m. UTC | #1
On Fri, Jan 23, 2015 at 01:54:13PM +0100, Thomas Monjalon wrote:
> 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 covering, especially when adding or moving files.
> 
> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
> ---
>  MAINTAINERS                  | 388 +++++++++++++++++++++++++++++++++++++++++++
>  scripts/check-maintainers.sh |  85 ++++++++++
>  2 files changed, 473 insertions(+)
>  create mode 100644 MAINTAINERS
>  create mode 100755 scripts/check-maintainers.sh
> 
Acked-by: Neil Horman <nhorman@tuxdriver.com>

feel free to add me in as the AF_PACKET pmd maintainer if Linville doesn't
want the official title.

One question, the security issues list, is that active already and in use?  Can
we document the membership of that list so we know who's handling security
issues?
  
Thomas Monjalon Jan. 23, 2015, 2:46 p.m. UTC | #2
2015-01-23 09:18, Neil Horman:
> One question, the security issues list, is that active already and in use?

It is "in use" since the beginning of dpdk.org. But traffic is very very low.

> Can we document the membership of that list so we know who's handling security
> issues?

Only me but you are welcome:
	http://dpdk.org/ml/listinfo/maintainers
  
Neil Horman Jan. 23, 2015, 3:52 p.m. UTC | #3
On Fri, Jan 23, 2015 at 03:46:08PM +0100, Thomas Monjalon wrote:
> 2015-01-23 09:18, Neil Horman:
> > One question, the security issues list, is that active already and in use?
> 
> It is "in use" since the beginning of dpdk.org. But traffic is very very low.
> 
> > Can we document the membership of that list so we know who's handling security
> > issues?
> 
> Only me but you are welcome:
> 	http://dpdk.org/ml/listinfo/maintainers
> 
> -- 
> Thomas> 
Thanks!
Neil
  

Patch

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 <address@domain>
+	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 <thomas.monjalon@6wind.com>
+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 <thomas.monjalon@6wind.com>
+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 <thomas.monjalon@6wind.com>
+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..fbee8bb
--- /dev/null
+++ b/scripts/check-maintainers.sh
@@ -0,0 +1,85 @@ 
+#! /bin/sh
+
+# Do some basic checks in MAINTAINERS file
+
+cd $(dirname $0)/..
+
+# Get files matching paths with wildcards and / meaning recursing
+files () # <path> [<path> ...]
+{
+	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
+	shift
+	files "$@"
+}
+
+# Get all files matching F: and X: fields
+parse_fx () # <index file>
+{
+	IFS='
+'
+	# parse each line excepted underlining
+	for line in $( (grep -v '^-\+$' $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 () # <new line> <lines> <head pattern>
+{
+	(
+	echo "$2"
+	echo "$1" | sed -rn "s,^$3(.*),\1,p"
+	) |
+	sed '/^$/d'
+}
+
+# Subtract two sets of lines
+aminusb () # <lines a> <lines b>
+{
+	printf "$1\n$2\n$2" | sort | uniq -u | sed '/^$/d'
+}
+
+all=$(files ./)
+listed=$(parse_fx MAINTAINERS | grep -v '^#' | sort -u)
+
+echo '##########'
+echo '# files not listed'
+echo '##########'
+aminusb "$all" "$listed"
+
+# TODO: check overlaps
+# TODO: check orphan area