diff --git a/MAINTAINERS b/MAINTAINERS index d27640708c5..200a223b431 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15,8 +15,13 @@ To report problems in GCC, please visit: http://gcc.gnu.org/bugs/ -Note: when adding someone to a more specific section please remove any -corresponding entry from the Write After Approval list. +If you'd like to CC a maintainer in bugzilla, please add @gcc.gnu.org +to the account name given in the Write After Approval section below. +Please use the email address given in <...> for direct email communication. + +Note: when adding someone who has commit access to a more specific section, +please also ensure that there is a corresponding entry in the Write After +Approval list, since that list contains the gcc.gnu.org account name. Note: please verify that sorting is correct with: ./contrib/check-MAINTAINERS.py MAINTAINERS @@ -24,21 +29,21 @@ Note: please verify that sorting is correct with: Maintainers =========== - Global Reviewers + Global Reviewers -Richard Biener -Richard Earnshaw -Jakub Jelinek -Richard Kenner -Jeff Law -Michael Meissner -Jason Merrill -David S. Miller -Joseph Myers -Richard Sandiford -Bernd Schmidt -Ian Lance Taylor -Jim Wilson +Richard Biener +Richard Earnshaw +Jakub Jelinek +Richard Kenner +Jeff Law +Michael Meissner +Jason Merrill +David S. Miller +Joseph Myers +Richard Sandiford +Bernd Schmidt +Ian Lance Taylor +Jim Wilson Note that while global reviewers can approve changes to any part of the compiler or associated libraries, they still need approval for @@ -47,713 +52,858 @@ their own patches from other maintainers or reviewers. Also note that maintainership of any area covers changes to web pages, docs, and the testsuite related to that. - CPU Port Maintainers (CPU alphabetical order) + CPU Port Maintainers (CPU alphabetical order) -aarch64 port Richard Earnshaw -aarch64 port Richard Sandiford -aarch64 port Marcus Shawcroft -aarch64 port Kyrylo Tkachov -alpha port Richard Henderson -amdgcn port Julian Brown -amdgcn port Andrew Stubbs -arc port Claudiu Zissulescu -arm port Nick Clifton -arm port Richard Earnshaw -arm port Ramana Radhakrishnan -avr port Denis Chertykov -bfin port Jie Zhang -bpf port Jose E. Marchesi -c6x port Bernd Schmidt -cris port Hans-Peter Nilsson -c-sky port Xianmiao Qu -c-sky port Yunhai Shang -fr30 port Nick Clifton -frv port Nick Clifton -frv port Alexandre Oliva -ft32 port James Bowman -h8 port Jeff Law -hppa port Jeff Law -hppa port John David Anglin -i386 port Jan Hubicka -i386 port Uros Bizjak -i386 vector ISA extns Kirill Yukhin -i386 vector ISA extns Hongtao Liu -iq2000 port Nick Clifton -lm32 port Sebastien Bourdeauducq -LoongArch port Chenghua Xu -LoongArch port Lulu Cheng -m32r port Nick Clifton -m68k port (?) Jeff Law -m68k port Andreas Schwab -m68k-motorola-sysv port Philippe De Muyter -mcore port Nick Clifton -microblaze Michael Eager -mips port YunQiang Su -mmix port Hans-Peter Nilsson -mn10300 port Jeff Law -mn10300 port Alexandre Oliva -moxie port Anthony Green -msp430 port Nick Clifton -nds32 port Chung-Ju Wu -nds32 port Shiva Chen -nios2 port Chung-Lin Tang -nios2 port Sandra Loosemore -nvptx port Tom de Vries -nvptx port Thomas Schwinge -or1k port Stafford Horne -pdp11 port Paul Koning -powerpcspe port Andrew Jenner -pru port Dimitar Dimitrov -riscv port Kito Cheng -riscv port Palmer Dabbelt -riscv port Andrew Waterman -riscv port Jim Wilson -rs6000/powerpc port David Edelsohn -rs6000/powerpc port Segher Boessenkool -rs6000/powerpc port Kewen Lin -rs6000 vector extns Aldy Hernandez -rx port Nick Clifton -s390 port Ulrich Weigand -s390 port Andreas Krebbel -sh port Alexandre Oliva -sh port Oleg Endo -sparc port David S. Miller -sparc port Eric Botcazou -v850 port Nick Clifton -vax port Matt Thomas -vax port Maciej W. Rozycki -visium port Eric Botcazou -x86-64 port Jan Hubicka -xstormy16 port Nick Clifton -xtensa port Sterling Augustine -xtensa port Max Filippov +aarch64 port Richard Earnshaw +aarch64 port Richard Sandiford +aarch64 port Marcus Shawcroft +aarch64 port Kyrylo Tkachov +alpha port Richard Henderson +amdgcn port Julian Brown +amdgcn port Andrew Stubbs +arc port Claudiu Zissulescu +arm port Nick Clifton +arm port Richard Earnshaw +arm port Ramana Radhakrishnan +avr port Denis Chertykov +bfin port Jie Zhang +bpf port Jose E. Marchesi +c6x port Bernd Schmidt +cris port Hans-Peter Nilsson +c-sky port Xianmiao Qu +c-sky port Yunhai Shang +fr30 port Nick Clifton +frv port Nick Clifton +frv port Alexandre Oliva +ft32 port James Bowman +h8 port Jeff Law +hppa port Jeff Law +hppa port John David Anglin +i386 port Jan Hubicka +i386 port Uros Bizjak +i386 vector ISA extns Kirill Yukhin +i386 vector ISA extns Hongtao Liu +iq2000 port Nick Clifton +lm32 port Sebastien Bourdeauducq +LoongArch port Chenghua Xu +LoongArch port Lulu Cheng +m32r port Nick Clifton +m68k port (?) Jeff Law +m68k port Andreas Schwab +m68k-motorola-sysv port Philippe De Muyter +mcore port Nick Clifton +microblaze Michael Eager +mips port YunQiang Su +mmix port Hans-Peter Nilsson +mn10300 port Jeff Law +mn10300 port Alexandre Oliva +moxie port Anthony Green +msp430 port Nick Clifton +nds32 port Chung-Ju Wu +nds32 port Shiva Chen +nios2 port Chung-Lin Tang +nios2 port Sandra Loosemore +nvptx port Tom de Vries +nvptx port Thomas Schwinge +or1k port Stafford Horne +pdp11 port Paul Koning +powerpcspe port Andrew Jenner +pru port Dimitar Dimitrov +riscv port Kito Cheng +riscv port Palmer Dabbelt +riscv port Andrew Waterman +riscv port Jim Wilson +rs6000/powerpc port David Edelsohn +rs6000/powerpc port Segher Boessenkool +rs6000/powerpc port Kewen Lin +rs6000 vector extns Aldy Hernandez +rx port Nick Clifton +s390 port Ulrich Weigand +s390 port Andreas Krebbel +sh port Alexandre Oliva +sh port Oleg Endo +sparc port David S. Miller +sparc port Eric Botcazou +v850 port Nick Clifton +vax port Matt Thomas +vax port Maciej W. Rozycki +visium port Eric Botcazou +x86-64 port Jan Hubicka +xstormy16 port Nick Clifton +xtensa port Sterling Augustine +xtensa port Max Filippov - OS Port Maintainers (OS alphabetical order) + OS Port Maintainers (OS alphabetical order) -aix David Edelsohn -Android sub-port Maxim Kuvyrkov -darwin port Iain Sandoe -darwin port Mike Stump -DJGPP DJ Delorie -freebsd Andreas Tobler -GNU/Hurd Thomas Schwinge -hpux John David Anglin -solaris Rainer Orth -netbsd Jason Thorpe -netbsd Krister Walfridsson -sh-linux-gnu Kaz Kojima -RTEMS Ports Joel Sherrill -RTEMS Ports Ralf Corsepius -RTEMS Ports Sebastian Huber -VMS Douglas Rupp -VMS Tristan Gingold -VxWorks ports Olivier Hainque -cygwin, mingw-w64 Jonathan Yong <10walls@gmail.com> +aix David Edelsohn +Android sub-port Maxim Kuvyrkov +darwin port Iain Sandoe +darwin port Mike Stump +DJGPP DJ Delorie +freebsd Andreas Tobler +GNU/Hurd Thomas Schwinge +hpux John David Anglin +solaris Rainer Orth +netbsd Jason Thorpe +netbsd Krister Walfridsson +sh-linux-gnu Kaz Kojima +RTEMS Ports Joel Sherrill +RTEMS Ports Ralf Corsepius +RTEMS Ports Sebastian Huber +VMS Douglas Rupp +VMS Tristan Gingold +VxWorks ports Olivier Hainque +cygwin, mingw-w64 Jonathan Yong <10walls@gmail.com> - Language Front Ends Maintainers + Language Front Ends Maintainers -C front end/ISO C99 Joseph Myers -Ada front end Arnaud Charlet -Ada front end Eric Botcazou -Ada front end Marc Poulhiès -Ada front end Pierre-Marie de Rodat -c++ Jason Merrill -c++ Nathan Sidwell -D front end Iain Buclaw -go Ian Lance Taylor -Modula-2 front end Gaius Mulley -objective-c/c++ Mike Stump -objective-c/c++ Iain Sandoe -Rust Arthur Cohen -Rust Philip Herron +C front end/ISO C99 Joseph Myers +Ada front end Arnaud Charlet +Ada front end Eric Botcazou +Ada front end Marc Poulhiès +Ada front end Pierre-Marie de Rodat +c++ Jason Merrill +c++ Nathan Sidwell +D front end Iain Buclaw +go Ian Lance Taylor +Modula-2 front end Gaius Mulley +objective-c/c++ Mike Stump +objective-c/c++ Iain Sandoe +Rust Arthur Cohen +Rust Philip Herron - Various Maintainers + Various Maintainers -libbacktrace Ian Lance Taylor -libcpp Per Bothner -libcpp All C and C++ front end maintainers -libcpp David Malcolm -fp-bit Ian Lance Taylor -libgcc Ian Lance Taylor -libgo Ian Lance Taylor -libgomp Jakub Jelinek -libgomp Tobias Burnus -libgomp (OpenACC) Thomas Schwinge -libgrust All Rust front end maintainers -libiberty Ian Lance Taylor -libitm Torvald Riegel -libobjc Nicola Pero -libobjc Andrew Pinski -libquadmath Tobias Burnus -libquadmath Jakub Jelinek -libvtv Caroline Tice -libphobos Iain Buclaw -line map Dodji Seketeli -soft-fp Joseph Myers -scheduler (+ haifa) Jim Wilson -scheduler (+ haifa) Michael Meissner -scheduler (+ haifa) Jeff Law -scheduler (+ haifa) Vladimir Makarov -modulo-scheduler Roman Zhuykov -reorg Jeff Law -caller-save.cc Jeff Law -callgraph Jan Hubicka -debugging code Jim Wilson -dwarf debugging code Jason Merrill -dwarf debugging code Cary Coutant -c++ runtime libs Paolo Carlini -c++ runtime libs Ulrich Drepper -c++ runtime libs Benjamin De Kosnik -c++ runtime libs Jonathan Wakely -c++ runtime libs special modes François Dumont -fixincludes Bruce Korb -*gimpl* Jakub Jelinek -*gimpl* Aldy Hernandez -*gimpl* Jason Merrill -gcse.cc Jeff Law -global opt framework Jeff Law -jump.cc David S. Miller -web pages Gerald Pfeifer -config.sub/config.guess Ben Elliston -i18n Philipp Thomas -i18n Joseph Myers -diagnostic messages Dodji Seketeli -diagnostic messages David Malcolm -build machinery (*.in) Paolo Bonzini -build machinery (*.in) Nathanael Nerode -build machinery (*.in) Alexandre Oliva -build machinery (*.in) Ralf Wildenhues -docs co-maintainer Gerald Pfeifer -docs co-maintainer Joseph Myers -docs co-maintainer Sandra Loosemore -docstring relicensing Gerald Pfeifer -docstring relicensing Joseph Myers -predict.def Jan Hubicka -gcov Jan Hubicka -gcov Nathan Sidwell -option handling Joseph Myers -middle-end Jeff Law -middle-end Ian Lance Taylor -middle-end Richard Biener -*vrp, ranger Aldy Hernandez -*vrp, ranger Andrew MacLeod -tree-ssa Andrew MacLeod -tree browser/unparser Sebastian Pop -scev, data dependence Sebastian Pop -profile feedback Jan Hubicka -AutoFDO Eugene Rozenfeld -reload Ulrich Weigand -RTL optimizers Eric Botcazou -instruction combiner Segher Boessenkool -auto-vectorizer Richard Biener -auto-vectorizer Zdenek Dvorak -loop infrastructure Zdenek Dvorak -loop ivopts Bin Cheng -loop optimizer Bin Cheng -OpenACC Thomas Schwinge -OpenACC Tobias Burnus -OpenMP Jakub Jelinek -OpenMP Tobias Burnus -testsuite Rainer Orth -testsuite Mike Stump -register allocation Vladimir Makarov -gdbhooks.py David Malcolm -jit David Malcolm -gen* on machine desc Richard Sandiford -static analyzer David Malcolm +libbacktrace Ian Lance Taylor +libcpp Per Bothner +libcpp All C and C++ front end maintainers +libcpp David Malcolm +fp-bit Ian Lance Taylor +libgcc Ian Lance Taylor +libgo Ian Lance Taylor +libgomp Jakub Jelinek +libgomp Tobias Burnus +libgomp (OpenACC) Thomas Schwinge +libgrust All Rust front end maintainers +libiberty Ian Lance Taylor +libitm Torvald Riegel +libobjc Nicola Pero +libobjc Andrew Pinski +libquadmath Tobias Burnus +libquadmath Jakub Jelinek +libvtv Caroline Tice +libphobos Iain Buclaw +line map Dodji Seketeli +soft-fp Joseph Myers +scheduler (+ haifa) Jim Wilson +scheduler (+ haifa) Michael Meissner +scheduler (+ haifa) Jeff Law +scheduler (+ haifa) Vladimir Makarov +modulo-scheduler Roman Zhuykov +reorg Jeff Law +caller-save.cc Jeff Law +callgraph Jan Hubicka +debugging code Jim Wilson +dwarf debugging code Jason Merrill +dwarf debugging code Cary Coutant +c++ runtime libs Paolo Carlini +c++ runtime libs Ulrich Drepper +c++ runtime libs Benjamin De Kosnik +c++ runtime libs Jonathan Wakely +c++ runtime libs special modes François Dumont +fixincludes Bruce Korb +*gimpl* Jakub Jelinek +*gimpl* Aldy Hernandez +*gimpl* Jason Merrill +gcse.cc Jeff Law +global opt framework Jeff Law +jump.cc David S. Miller +web pages Gerald Pfeifer +config.sub/config.guess Ben Elliston +i18n Philipp Thomas +i18n Joseph Myers +diagnostic messages Dodji Seketeli +diagnostic messages David Malcolm +build machinery (*.in) Paolo Bonzini +build machinery (*.in) Nathanael Nerode +build machinery (*.in) Alexandre Oliva +build machinery (*.in) Ralf Wildenhues +docs co-maintainer Gerald Pfeifer +docs co-maintainer Joseph Myers +docs co-maintainer Sandra Loosemore +docstring relicensing Gerald Pfeifer +docstring relicensing Joseph Myers +predict.def Jan Hubicka +gcov Jan Hubicka +gcov Nathan Sidwell +option handling Joseph Myers +middle-end Jeff Law +middle-end Ian Lance Taylor +middle-end Richard Biener +*vrp, ranger Aldy Hernandez +*vrp, ranger Andrew MacLeod +tree-ssa Andrew MacLeod +tree browser/unparser Sebastian Pop +scev, data dependence Sebastian Pop +profile feedback Jan Hubicka +AutoFDO Eugene Rozenfeld +reload Ulrich Weigand +RTL optimizers Eric Botcazou +instruction combiner Segher Boessenkool +auto-vectorizer Richard Biener +auto-vectorizer Zdenek Dvorak +loop infrastructure Zdenek Dvorak +loop ivopts Bin Cheng +loop optimizer Bin Cheng +OpenACC Thomas Schwinge +OpenACC Tobias Burnus +OpenMP Jakub Jelinek +OpenMP Tobias Burnus +testsuite Rainer Orth +testsuite Mike Stump +register allocation Vladimir Makarov +gdbhooks.py David Malcolm +jit David Malcolm +gen* on machine desc Richard Sandiford +static analyzer David Malcolm Note that individuals who maintain parts of the compiler need approval to check in changes outside of the parts of the compiler they maintain. - Reviewers + Reviewers -callgraph Martin Jambor -C front end Marek Polacek -CTF, BTF Indu Bhagat -CTF, BTF, bpf port David Faust -dataflow Paolo Bonzini -dataflow Seongbae Park -dataflow Kenneth Zadeck -driver Joseph Myers -Fortran Harald Anlauf -Fortran Janne Blomqvist -Fortran Tobias Burnus -Fortran François-Xavier Coudert -Fortran Jerry DeLisle -Fortran Erik Edelmann -Fortran Daniel Franke -Fortran Thomas König -Fortran Daniel Kraft -Fortran Toon Moene -Fortran Mikael Morin -Fortran Tobias Schlüter -Fortran Paul Thomas -Fortran Janus Weil -Graphite Tobias Grosser -Graphite Sebastian Pop -libcpp Tom Tromey -libsanitizer, asan.cc Jakub Jelinek -libsanitizer, asan.cc Dodji Seketeli -libsanitizer, asan.cc Kostya Serebryany -libsanitizer, asan.cc Dmitry Vyukov -loop optimizer Zdenek Dvorak -LTO Richard Biener -LTO plugin Cary Coutant -Plugin Le-Chun Wu -register allocation Peter Bergner -register allocation Kenneth Zadeck -register allocation Seongbae Park -riscv port Robin Dapp -riscv port Juzhe Zhong -RTL optimizers Steven Bosscher -selective scheduling Andrey Belevantsev -selective scheduling Alexander Monakov -wide-int Kenneth Zadeck -wide-int Mike Stump -wide-int Richard Sandiford +callgraph Martin Jambor +C front end Marek Polacek +CTF, BTF Indu Bhagat +CTF, BTF, bpf port David Faust +dataflow Paolo Bonzini +dataflow Seongbae Park +dataflow Kenneth Zadeck +driver Joseph Myers +Fortran Harald Anlauf +Fortran Janne Blomqvist +Fortran Tobias Burnus +Fortran François-Xavier Coudert +Fortran Jerry DeLisle +Fortran Erik Edelmann +Fortran Daniel Franke +Fortran Thomas König +Fortran Daniel Kraft +Fortran Toon Moene +Fortran Mikael Morin +Fortran Tobias Schlüter +Fortran Paul Thomas +Fortran Janus Weil +Graphite Tobias Grosser +Graphite Sebastian Pop +libcpp Tom Tromey +libsanitizer, asan.cc Jakub Jelinek +libsanitizer, asan.cc Dodji Seketeli +libsanitizer, asan.cc Kostya Serebryany +libsanitizer, asan.cc Dmitry Vyukov +loop optimizer Zdenek Dvorak +LTO Richard Biener +LTO plugin Cary Coutant +Plugin Le-Chun Wu +register allocation Peter Bergner +register allocation Kenneth Zadeck +register allocation Seongbae Park +riscv port Robin Dapp +riscv port Juzhe Zhong +RTL optimizers Steven Bosscher +selective scheduling Andrey Belevantsev +selective scheduling Alexander Monakov +wide-int Kenneth Zadeck +wide-int Mike Stump +wide-int Richard Sandiford Note that while reviewers can approve changes to parts of the compiler that they maintain, they still need approval for their own patches from other maintainers or reviewers. - Write After Approval (last name alphabetical order) + Write After Approval (last name alphabetical order) -Mark G. Adams -Ajit Kumar Agarwal -Pedro Alves -Paul-Antoine Arras -Arsen Arsenović -Raksit Ashok -Matt Austern -David Ayers -Prakhar Bahuguna -Giovanni Bajo -Simon Baldwin -Richard Ball -Scott Bambrough -Wolfgang Bangerth -Gergö Barany -Charles Baylis -Tejas Belagod -Matthew Beliveau -Serge Belyshev -Jon Beniston -Andrew Bennett -Andrew Benson -Daniel Berlin -Pat Bernardi -Jan Beulich -David Billinghurst -Tomas Bily -Laurynas Biveinis -Eric Blake -Phil Blundell -Hans Boehm -Lynn Boger -Ian Bolton -Andrea Bona -Neil Booth -Antoni Boucher -Robert Bowdidge -Joel Brobecker -Dave Brolley -Christian Bruel -Kevin Buettner -Andrew Burgess -Adam Butcher -Andrew Cagney -Andrew Carlotti -Daniel Carrera -Stephane Carrez -Gabriel Charette -Chandra Chavva -Dehao Chen -Fabien Chêne -Monk Chiang -Clément Chigot -Harshit Chopra -Juergen Christ -Tamar Christina -Eric Christopher -Paul Clarke -William Cohen -Michael Collison -Josh Conner -R. Kelley Cook -Alex Coplan -Andrea Corallo -Christian Cornelssen -Ludovic Courtès -Lawrence Crowl -Lili Cui -Ian Dall -David Daney -Simon Dardis -Sudakshina Das -Bud Davis -Chris Demetriou -Sameera Deshpande -Wilco Dijkstra -Benoit Dupont de Dinechin -Lehua Ding -Jason Eckhardt -Bernd Edlinger -Phil Edwards -Mark Eggleston -Steve Ellcey -Mohan Embar -Revital Eres -Marc Espie -Ansgar Esztermann -Doug Evans -Chris Fairles -Alessandro Fanfarillo -Changpeng Fang -Sam Feifer -Eric Feng -Li Feng -Thomas Fitzsimmons -Alexander Fomin -Brian Ford -Matthew Fortune -John Freeman -Nathan Froyd -Chao-ying Fu -Gary Funck -Pompapathi V Gadad -Eric Gallager -Gopalasubramanian Ganesh -Fei Gao -Kaveh Ghazi -Doug Gilmore -Matthew Gingell -Jan-Benedict Glaw -Marc Glisse -Prachi Godbole -Torbjorn Granlund -James Greenhalgh -Doug Gregor -Matthew Gretton-Dann -Yury Gribov -Jon Grimm -Laurent Guerby -Haochen Gui -Jiufu Guo -Xuepeng Guo -Wei Guozhi -Vineet Gupta -Naveen H.S -Mostafa Hagog -Jivan Hakobyan -Andrew Haley -Demin Han -Frederik Harwath -Stuart Hastings -Michael Haubenwallner -Pat Haugen -Michael Hayes -Alan Hayward -Li Jia He -Mark Heffernan -George Helffrich -Daniel Hellstrom -Fergus Henderson -Stuart Henderson -Marius Hillenbrand -Matthew Hiller -Kazu Hirata -Manfred Hollstein -Cong Hou -Levy Hsu -Lin Hu -Falk Hueffner -Andrew John Hughes -Dominique d'Humieres -Andy Hutchinson -Joel Hutton -Lewis Hyatt -Paul Iannetta -Roland Illig -Meador Inge -Bernardo Innocenti -Mihail Ionescu -Vladislav Ivanishin -Alexander Ivchenko -Balaji V. Iyer -Pekka Jääskeläinen -Daniel Jacobowitz -Andreas Jaeger -Harsha Jagasia -Fariborz Jahanian -Surya Kumari Jangala -Haochen Jiang -Qian Jianhua -Michal Jires -Janis Johnson -Teresa Johnson -Kean Johnston -Phillip Jordan -Tim Josling -Victor Kaplansky -Filip Kastl -Geoffrey Keating -Brendan Kehoe -Andi Kleen -Matthias Klose -Jeff Knaggs -Michael Koch -Nicolas Koenig -Boris Kolpackov -Lingling Kong -Dave Korn -Julia Koval -Matt Kraai -Jan Kratochvil -Matthias Kretz -Louis Krupp -Prathamesh Kulkarni -Venkataramanan Kumar -Doug Kwan -Aaron W. LaFramboise -Scott Robert Ladd -Razya Ladelsky -Thierry Lafage -Rask Ingemann Lambertsen -Jerome Lambourg -Tim Lange -Asher Langton -Chris Lattner -Terry Laurenzo -Alan Lawrence -Jozef Lawrynowicz -Georg-Johann Lay -Vlad Lazar -Marc Lehmann -James Lemke -Ilya Leoshkevich -Kriang Lerdsuwanakij -Pan Li -Renlin Li -Xinliang David Li -Chen Liqin -Martin Liska -Hao Liu -Jiangning Liu -Sa Liu -Ralph Loader -Sheldon Lobo -Manuel López-Ibáñez -Carl Love -Martin v. Löwis -Edwin Lu -H.J. Lu -Xiong Hu Luo -Bin Bin Lv -Christophe Lyon -Jun Ma -Luis Machado -Ziga Mahkovec -Matthew Malcomson -Mikhail Maltsev -Stamatis Markianos-Wright -Patrick Marlier -Simon Martin -Alejandro Martinez -Ranjit Mathew -Paulo Matos -Ken Matsui -Michael Matz -Greg McGary -Roland McGrath -Bryce McKinlay -Adam Megacz -Bingfeng Mei -Jim Meyering -Martin Michlmayr -Lee Millward -Immad Mir -Cupertino Miranda -Dragan Mladjenovic -Alan Modra -Catherine Moore -James A. Morrison -Brooks Moses -Dirk Mueller -Phil Muldoon -Gaius Mulley -Christoph Müllner -Steven Munroe -Szabolcs Nagy -Victor Do Nascimento -Quentin Neill -Adam Nemet -Thomas Neumann -Dan Nicolaescu -Kelvin Nilsen +Name BZ account Email + +Mark G. Adams mgadams +Ajit Kumar Agarwal aagarwa +Pedro Alves palves +John David Anglin danglin +Harald Anlauf anlauf +Paul-Antoine Arras parras +Arsen Arsenović arsen +Raksit Ashok raksit +Sterling Augustine sterling +Matt Austern austern +David Ayers ayers +Prakhar Bahuguna prakhar +Giovanni Bajo - +Simon Baldwin simonb +Richard Ball ricbal02 +Scott Bambrough - +Wolfgang Bangerth - +Gergö Barany - +Charles Baylis cbaylis +Tejas Belagod belagod +Andrey Belevantsev abel +Matthew Beliveau - +Serge Belyshev - +Jon Beniston jbeniston +Andrew Bennett - +Andrew Benson abensonca +Peter Bergner bergner +Daniel Berlin dberlin +Pat Bernardi - +Jan Beulich - +Indu Bhagat ibhagat +Richard Biener rguenth +David Billinghurst billingd +Tomas Bily tomby +Laurynas Biveinis lauras +Uros Bizjak uros +Eric Blake ericb +Janne Blomqvist jb +Phil Blundell pb +Hans Boehm - +Segher Boessenkool segher +Lynn Boger boger +Ian Bolton ibolton +Andrea Bona andreabo +Paolo Bonzini - +Neil Booth neil +Steven Bosscher steven +Eric Botcazou ebotcazou +Per Bothner bothner +Antoni Boucher - +Sebastien Bourdeauducq lekernel +Robert Bowdidge bowdidge +James Bowman - +Joel Brobecker - +Dave Brolley - +Julian Brown jules +Christian Bruel chrbr +Iain Buclaw ibuclaw +Kevin Buettner - +Andrew Burgess aburgess +Tobias Burnus burnus +Adam Butcher abutcher +Andrew Cagney cagney +Paolo Carlini paolo +Andrew Carlotti acarlotti +Daniel Carrera dcarrera +Stephane Carrez ciceron +Gabriel Charette gchare +Arnaud Charlet charlet +Chandra Chavva - +Dehao Chen dehao +Fabien Chêne fabien +Bin Cheng amker +Kito Cheng kito +Lulu Cheng - +Denis Chertykov denisc +Monk Chiang - +Clément Chigot - +Harshit Chopra harshit +Juergen Christ - +Tamar Christina tnfchris +Eric Christopher echristo +Paul Clarke pc +Nick Clifton nickc +Arthur Cohen cohenarthur +William Cohen - +Michael Collison collison +Josh Conner jconner +R. Kelley Cook kcook +Alex Coplan acoplan +Andrea Corallo akrl +Christian Cornelssen ccorn +Ralf Corsepius corsepiu +François-Xavier Coudert fxcoudert +Ludovic Courtès ludo +Cary Coutant - +Lawrence Crowl crowl +Lili Cui - +Palmer Dabbelt palmer +Ian Dall iandall +David Daney daney +Robin Dapp rdapp +Simon Dardis dardiss +Sudakshina Das sudi +Bud Davis bdavis +Jerry DeLisle jvdelisle +DJ Delorie dj +Chris Demetriou cgd +Sameera Deshpande sameerad +Wilco Dijkstra wilco +Dimitar Dimitrov dimitar +Benoit Dupont de Dinechin bd3 +Lehua Ding - +Ulrich Drepper drepper +François Dumont fdumont +Zdenek Dvorak rakdver +Michael Eager eager +Richard Earnshaw rearnsha +Jason Eckhardt - +Erik Edelmann eedelman +David Edelsohn dje +Bernd Edlinger edlinger +Phil Edwards pme +Mark Eggleston markeggleston +Steve Ellcey sje +Ben Elliston bje +Mohan Embar membar +Oleg Endo olegendo +Revital Eres revitale +Marc Espie - +Ansgar Esztermann - +Doug Evans devans +Chris Fairles cfairles +Alessandro Fanfarillo afanfa +Changpeng Fang cfang +David Faust - +Sam Feifer - +Eric Feng efric +Li Feng lifeng +Max Filippov jcmvbkbc +Thomas Fitzsimmons fitzsim +Alexander Fomin afomin +Brian Ford - +Matthew Fortune mpf +Daniel Franke dfranke +John Freeman - +Nathan Froyd froydnj +Chao-ying Fu - +Gary Funck gfunck +Pompapathi V Gadad pompa +Eric Gallager egallager +Gopalasubramanian Ganesh - +Fei Gao - +Kaveh Ghazi ghazi +Doug Gilmore dgilmore +Matthew Gingell - +Tristan Gingold gingold +Jan-Benedict Glaw jbglaw +Marc Glisse glisse +Prachi Godbole prachigodbole +Torbjorn Granlund - +Anthony Green green +James Greenhalgh jgreenhalgh +Doug Gregor dgregor +Matthew Gretton-Dann mgretton +Yury Gribov ygribov +Jon Grimm jgrimm +Tobias Grosser grosser +Laurent Guerby guerby +Haochen Gui guihaoc +Jiufu Guo guojiufu +Xuepeng Guo xguo +Wei Guozhi carrot +Vineet Gupta vineetg +Naveen H.S naveenh +Mostafa Hagog hagog +Olivier Hainque hainque +Jivan Hakobyan - +Andrew Haley aph +Demin Han deminhan +Frederik Harwath frederik +Stuart Hastings stuart +Michael Haubenwallner haubi +Pat Haugen pthaugen +Michael Hayes m.hayes +Alan Hayward alahay01 +Li Jia He helijia +Mark Heffernan meheff +George Helffrich george +Daniel Hellstrom danielh +Fergus Henderson - +Richard Henderson rth +Stuart Henderson shenders +Aldy Hernandez aldyh +Philip Herron redbrain +Marius Hillenbrand - +Matthew Hiller - +Kazu Hirata kazu +Manfred Hollstein - +Stafford Horne shorne +Cong Hou congh +Levy Hsu - +Lin Hu - +Sebastian Huber sh +Jan Hubicka hubicka +Falk Hueffner falk +Andrew John Hughes gandalf +Dominique d'Humieres dominiq +Andy Hutchinson hutchinsonandy +Joel Hutton joelh +Lewis Hyatt lhyatt +Paul Iannetta - +Roland Illig - +Meador Inge meadori +Bernardo Innocenti - +Mihail Ionescu - +Vladislav Ivanishin - +Alexander Ivchenko aivchenk +Balaji V. Iyer bviyer +Pekka Jääskeläinen visit0r +Daniel Jacobowitz drow +Andreas Jaeger aj +Harsha Jagasia hjagasia +Fariborz Jahanian - +Martin Jambor jamborm +Surya Kumari Jangala jskumari +Jakub Jelinek jakub +Andrew Jenner andrewjenner +Haochen Jiang - +Qian Jianhua - +Michal Jires mjires +Janis Johnson janis +Teresa Johnson tejohnson +Kean Johnston - +Phillip Jordan pmj +Tim Josling timjosling +Victor Kaplansky victork +Filip Kastl pheeck +Geoffrey Keating geoffk +Brendan Kehoe - +Richard Kenner kenner +Andi Kleen ak +Matthias Klose doko +Jeff Knaggs - +Michael Koch - +Nicolas Koenig koenigni +Kaz Kojima kkojima +Boris Kolpackov boris +Lingling Kong - +Thomas König tkoenig +Paul Koning pkoning +Bruce Korb korbb +Dave Korn davek +Julia Koval jkoval +Matt Kraai kraai +Daniel Kraft domob +Jan Kratochvil jkratoch +Andreas Krebbel krebbel +Matthias Kretz mkretz +Louis Krupp lkrupp +Prathamesh Kulkarni prathamesh3492 +Venkataramanan Kumar vekumar +Maxim Kuvyrkov mkuvyrkov +Doug Kwan dougkwan +Aaron W. LaFramboise - +Scott Robert Ladd - +Razya Ladelsky razya +Thierry Lafage tlafage +Rask Ingemann Lambertsen rask +Jerome Lambourg - +Tim Lange tlange +Asher Langton langton +Chris Lattner sabre +Terry Laurenzo tlaurenzo +Jeff Law law +Alan Lawrence - +Jozef Lawrynowicz jozefl +Georg-Johann Lay gjl +Vlad Lazar vladlazar +Marc Lehmann - +James Lemke jwlemke +Ilya Leoshkevich iii +Kriang Lerdsuwanakij lerdsuwa +Pan Li - +Renlin Li renlin +Xinliang David Li davidxl +Kewen Lin linkw +Chen Liqin liqin +Martin Liska marxin +Hao Liu - +Hongtao Liu liuhongt +Jiangning Liu liujiangning +Sa Liu saliu +Ralph Loader ralph +Sheldon Lobo smlobo +Gabor Loki loki +Sandra Loosemore sandra +Manuel López-Ibáñez manu +Carl Love carll +Martin v. Löwis loewis +Edwin Lu - +H.J. Lu hjl +Xiong Hu Luo - +Bin Bin Lv shlb +Christophe Lyon clyon +Jun Ma junma +Andrew MacLeod - +Luis Machado luisgpm +Ziga Mahkovec ziga +Vladimir Makarov vmakarov +David Malcolm dmalcolm +Matthew Malcomson matmal01 +Mikhail Maltsev miyuki +Jose E. Marchesi jemarch +Stamatis Markianos-Wright stammark +Patrick Marlier pmarlier +Simon Martin simartin +Alejandro Martinez alejandro +Ranjit Mathew rmathew +Paulo Matos pmatos +Ken Matsui kmatsui +Michael Matz matz +Greg McGary - +Roland McGrath roland +Bryce McKinlay bryce +Adam Megacz - +Bingfeng Mei meibf +Michael Meissner meissner +Jason Merrill jason +Jim Meyering - +Martin Michlmayr tbm +David S. Miller davem +Lee Millward lmillward +Immad Mir mir +Cupertino Miranda - +Dragan Mladjenovic draganm +Alan Modra amodra +Toon Moene toon +Alexander Monakov amonakov +Catherine Moore clm +Mikael Morin mikael +James A. Morrison phython +Brooks Moses brooks +Dirk Mueller mueller +Phil Muldoon pmuldoon +Gaius Mulley gaius +Christoph Müllner cmuellner +Steven Munroe munroesj +Philippe De Muyter - +Joseph Myers jsm28 +Szabolcs Nagy nsz +Victor Do Nascimento victorldn +Quentin Neill qneill +Adam Nemet nemet +Nathanael Nerode neroden +Thomas Neumann tneumann +Dan Nicolaescu - +Kelvin Nilsen kelvin +Hans-Peter Nilsson hp James Norris -Diego Novillo -Dorit Nuzman -David O'Brien -Carlos O'Donell -Peter O'Gorman -Patrick O'Neill -Braden Obrzut -Tsukasa Oi -Andrea Ornstein -Maxim Ostapenko -Jeevitha Palanisamy -Patrick Palka -Srinath Parvathaneni -Devang Patel -Andris Pavenis -Fernando Pereira -Sebastian Perta -Sebastian Peryt -Johannes Pfau -Kaushik Phatak -Nicolas Pitre -Michael Ploujnikov -Paul Pluzhnikov -Antoniu Pop -Siddhesh Poyarekar -Vidya Praveen -Thomas Preud'homme -Benjamin Priour -Vladimir Prus -Hafiz Abid Qadeer -Yao Qi -Jerry Quinn -Navid Rahimi -Rishi Raj -Easwaran Raman -Joe Ramsay -Rolf Rasmussen -Fritz Reese -Volker Reichelt -Joern Rennecke -Bernhard Reutner-Fischer -Tom Rix -Thomas Rodgers -Craig Rodrigues -Erven Rohou -Ira Rosen -Yvan Roux -Silvius Rus -Matthew Sachs -Ankur Saini -Hariharan Sandanagobalane -Duncan Sands -Sujoy Saraswati -Trevor Saunders -Aaron Sawdey -Roger Sayle -Will Schmidt -Stefan Schulze Frielinghaus -Tilo Schwarz -Martin Sebor -Svein Seldal -Senthil Kumar Selvaraj -Thiemo Seufer -Bill Seurer -Nathaniel Shead -Tim Shen -David Sherwood -Sharad Singhai -Johannes Singler -Franz Sirl -Jan Sjodin -Trevor Smigiel -Edward Smith-Rowland -Anatoly Sokolov -Michael Sokolov -Jayant Sonar -Fangrui Song -Richard Stallman -Basile Starynkevitch -Jakub Staszak -Graham Stott -Jeff Sturm -Robert Suchanek -Andrew Sutton -Gabriele Svelto -Torbjörn Svensson -Toma Tabacu -Omar Tahir -Sriraman Tallam -Samuel Tardieu -Sam Tebbs -Dinar Temirbulatov -Kresten Krab Thorup -Kai Tietz -Ilya Tocar -Petter Tomner -Philipp Tomsich -Daniel Towner -Konrad Trifunovic -Markus Trippelsdorf -Sergei Trofimovich -Igor Tsimbalist -Martin Uecker -David Ung -Neil Vachharajani -Kris Van Hees -Joost VandeVondele -Andre Vehreschild -Alex Velenko -Ilya Verbin -Andre Vieira -Rasmus Villemoes -Kugan Vivekanandarajah -Marcel Vollweiler -Ville Voutilainen -Nenad Vukicevic -Feng Wang -Feng Wang -Hongyu Wang -Jiong Wang -Stephen M. Webb -John Wehle -Florian Weimer -Zack Weinberg -Alexander Westbrooks -Mark Wielaard -Edmar Wienskoski -Ollie Wild -Kevin Williams -Przemyslaw Wirkus -Carlo Wood -Jackson Woodruff -Jonathan Wright -Ruoyao Xi -Mingjie Xing -Chenghua Xu -Li Xu -Canqun Yang -Fei Yang -Jeffrey Yasskin -Joey Ye -Kwok Cheung Yeung -Greta Yorsh -David Yuste -Adhemerval Zanella -Xiao Zeng -Dennis Zhang -Yufeng Zhang -Qing Zhao -Shujing Zhao -Pengxuan Zheng -Jon Ziegler -Roman Zippel -Josef Zlomek +Diego Novillo dnovillo +Dorit Nuzman dorit +David O'Brien - +Carlos O'Donell carlos +Peter O'Gorman pogma +Patrick O'Neill - +Braden Obrzut blzut3 +Tsukasa Oi - +Alexandre Oliva aoliva +Andrea Ornstein andreao +Rainer Orth ro +Maxim Ostapenko chefmax +Jeevitha Palanisamy jeevitha +Patrick Palka ppalka +Seongbae Park spark +Srinath Parvathaneni sripar01 +Devang Patel dpatel +Andris Pavenis andris +Fernando Pereira pronesto +Nicola Pero nicola +Sebastian Perta - +Sebastian Peryt speryt +Johannes Pfau jpfau +Gerald Pfeifer gerald +Kaushik Phatak kaushikp +Andrew Pinski pinskia +Nicolas Pitre nico +Michael Ploujnikov plouj +Paul Pluzhnikov ppluzhnikov +Marek Polacek mpolacek +Antoniu Pop apop +Sebastian Pop spop +Marc Poulhiès dkm +Siddhesh Poyarekar siddhesh +Vidya Praveen vp +Thomas Preud'homme - +Benjamin Priour vultkayn +Vladimir Prus vprus +Hafiz Abid Qadeer abidh +Yao Qi qiyao +Xianmiao Qu - +Jerry Quinn jlquinn +Ramana Radhakrishnan ramana +Navid Rahimi navidr +Rishi Raj - +Easwaran Raman eraman +Joe Ramsay joeramsay +Rolf Rasmussen - +Fritz Reese foreese +Volker Reichelt reichelt +Joern Rennecke amylaar +Bernhard Reutner-Fischer aldot +Torvald Riegel torvald +Tom Rix - +Pierre-Marie de Rodat pmderodat +Thomas Rodgers rodgertq +Craig Rodrigues rodrigc +Erven Rohou erven +Ira Rosen irar +Yvan Roux yroux +Eugene Rozenfeld - +Maciej W. Rozycki - +Douglas Rupp - +Silvius Rus rus +Matthew Sachs matthewg +Ankur Saini arsenic +Hariharan Sandanagobalane hariharans +Richard Sandiford rsandifo +Iain Sandoe iains +Duncan Sands baldrick +Sujoy Saraswati ssaraswati +Trevor Saunders tbsaunde +Aaron Sawdey acsawdey +Roger Sayle sayle +Tobias Schlüter tobi +Bernd Schmidt bernds +Will Schmidt willschm +Stefan Schulze Frielinghaus stefansf +Andreas Schwab schwab +Tilo Schwarz tiloschwarz +Thomas Schwinge tschwinge +Martin Sebor msebor +Dodji Seketeli dodji +Svein Seldal - +Senthil Kumar Selvaraj saaadhu +Kostya Serebryany kcc +Thiemo Seufer - +Bill Seurer seurer +Marcus Shawcroft mshawcroft +Nathaniel Shead nshead +Tim Shen timshen +Joel Sherrill joel +David Sherwood davids +Nathan Sidwell nathan +Sharad Singhai singhai +Johannes Singler singler +Franz Sirl sirl +Jan Sjodin jsjodin +Trevor Smigiel tsmigiel +Edward Smith-Rowland emsr +Anatoly Sokolov aesok +Michael Sokolov - +Jayant Sonar jayants +Fangrui Song - +Richard Stallman - +Basile Starynkevitch bstarynk +Jakub Staszak kuba +Graham Stott grahams +Andrew Stubbs ams +Mike Stump mrs +Jeff Sturm jsturm +YunQiang Su syq +Robert Suchanek rts +Andrew Sutton asutton +Gabriele Svelto gsvelto +Torbjörn Svensson azoff +Toma Tabacu tomtab +Omar Tahir - +Sriraman Tallam tmsriram +Chung-Lin Tang cltang +Samuel Tardieu sam +Ian Lance Taylor ian +Sam Tebbs samtebbs +Dinar Temirbulatov dinar +Matt Thomas matt +Paul Thomas pault +Philipp Thomas - +Jason Thorpe thorpej +Kresten Krab Thorup - +Caroline Tice ctice +Kai Tietz ktietz +Kyrylo Tkachov ktkachov +Andreas Tobler andreast +Ilya Tocar tocarip +Petter Tomner - +Philipp Tomsich ptomsich +Daniel Towner - +Konrad Trifunovic trifunovic +Markus Trippelsdorf trippels +Sergei Trofimovich slyfox +Tom Tromey tromey +Igor Tsimbalist itsimbal +Martin Uecker uecker +David Ung davidu +Neil Vachharajani nvachhar +Kris Van Hees - +Joost VandeVondele vondele +Andre Vehreschild vehre +Alex Velenko avelenko +Ilya Verbin iverbin +Andre Vieira avieira +Rasmus Villemoes - +Kugan Vivekanandarajah kugan +Marcel Vollweiler - +Ville Voutilainen ville +Tom de Vries vries +Nenad Vukicevic nenadv +Dmitry Vyukov dvyukov +Jonathan Wakely redi +Krister Walfridsson kristerw +Feng Wang - +Feng Wang fengwang +Hongyu Wang hongyuw +Jiong Wang jiwang +Stephen M. Webb smw +John Wehle - +Ulrich Weigand uweigand +Janus Weil janus +Florian Weimer fw +Zack Weinberg - +Alexander Westbrooks alexanderw +Mark Wielaard mark +Edmar Wienskoski edmarwjr +Ollie Wild - +Ralf Wildenhues rwild +Kevin Williams kwilliam +Jim Wilson wilson +Przemyslaw Wirkus wirkus +Carlo Wood carlo +Jackson Woodruff jcw +Jonathan Wright - +Chung-Ju Wu jasonwucj +Le-Chun Wu lcwu +Ruoyao Xi xry111 +Mingjie Xing xmj +Chenghua Xu paulhua +Li Xu - +Canqun Yang canqun +Fei Yang fyang +Jeffrey Yasskin jyasskin +Joey Ye jye2 +Kwok Cheung Yeung - +Jonathan Yong jyong <10walls@gmail.com> +Greta Yorsh gretay +Kirill Yukhin kyukhin +David Yuste dyuste +Kenneth Zadeck zadeck +Adhemerval Zanella - +Xiao Zeng - +Dennis Zhang - +Jie Zhang jiez +Yufeng Zhang yufeng +Qing Zhao qinzhao +Shujing Zhao pzhao +Pengxuan Zheng pzheng +Juzhe Zhong - +Roman Zhuykov zhroma +Jon Ziegler jonz +Roman Zippel zippel +Claudiu Zissulescu claziss +Josef Zlomek zlomek - Bug database only accounts + Bug database only accounts -James Dennett -Christian Ehrhardt -Dara Hazeghi +James Dennett +Christian Ehrhardt +Dara Hazeghi - Contributing under the DCO + Contributing under the DCO By adding your name and email to this section, you certify that all your subsequent contributions to GCC are made under the terms of the Developer's @@ -762,34 +912,34 @@ information. Juergen Christ -Robin Dapp -Robin Dapp -Michal Jires -Matthias Kretz -Prathamesh Kulkarni -Tim Lange -Jeff Law -Jeff Law -Jeff Law -H.J. Lu -Immad Mir -Gaius Mulley -Andrew Pinski -Siddhesh Poyarekar -Ramana Radhakrishnan -Navid Rahimi -Rishi Raj -Trevor Saunders -Bill Schmidt -Nathaniel Shead -Nathan Sidwell -Edward Smith-Rowland -Fangrui Song -Kyrylo Tkachov -Petter Tomner -Martin Uecker -Kugan Vivekanandarajah -Jonathan Wakely -Alexander Westbrooks -Chung-Ju Wu -Pengxuan Zheng +Robin Dapp +Robin Dapp +Michal Jires +Matthias Kretz +Prathamesh Kulkarni +Tim Lange +Jeff Law +Jeff Law +Jeff Law +H.J. Lu +Immad Mir +Gaius Mulley +Andrew Pinski +Siddhesh Poyarekar +Ramana Radhakrishnan +Navid Rahimi +Rishi Raj +Trevor Saunders +Bill Schmidt +Nathaniel Shead +Nathan Sidwell +Edward Smith-Rowland +Fangrui Song +Kyrylo Tkachov +Petter Tomner +Martin Uecker +Kugan Vivekanandarajah +Jonathan Wakely +Alexander Westbrooks +Chung-Ju Wu +Pengxuan Zheng diff --git a/contrib/check-MAINTAINERS.py b/contrib/check-MAINTAINERS.py index 2bac67f0821..144d8815772 100755 --- a/contrib/check-MAINTAINERS.py +++ b/contrib/check-MAINTAINERS.py @@ -25,7 +25,7 @@ import locale import sys from difflib import ndiff -from itertools import dropwhile, takewhile +from itertools import groupby import unidecode @@ -38,8 +38,7 @@ if len(sys.argv) != 2: sys.exit(1) -def sort_by_surname(line): - name = line.split('\t')[0] +def get_surname(name): parts = name.split() surname = parts[-1] @@ -52,35 +51,61 @@ def sort_by_surname(line): surname = 'Humieres' # Remove accents - return (unidecode.unidecode(surname), line) + return unidecode.unidecode(surname) -def has_tab(line): - return '\t' in line - - -def is_empty(line): - return line - - -def check_group(name, lines): +def check_group(name, lines, columns): global exit_code + named_lines = [] for line in lines: if line.startswith(' '): print(f'Line should not start with space: "{line}"') exit_code = 2 + continue + + if line.endswith(' '): + print(f'Line should not end with space: "{line}"') + exit_code = 3 + continue # Special-case some names if line == 'James Norris': + named_lines.append((get_surname(line), line + "\n")) continue - if '\t' not in line: - print(f'Name and email should be separated by tabs: "{line}"') - exit_code = 2 + pieces = [] + for i, column in enumerate(columns): + piece = "" + if len(line) <= column: + print(f'Line too short: "{line}"') + exit_code = 4 + elif column > 0 and line[column - 1] != ' ': + print(f'Column {column - 1} should be empty: "{line}"') + exit_code = 5 + elif line[column] == ' ': + print(f'Column {column} should be nonempty: "{line}"') + exit_code = 6 + elif i == len(columns) - 1: + piece = line[column:].rstrip() + else: + piece = line[column:columns[i + 1]].rstrip() - lines = [line + '\n' for line in lines] - sorted_lines = sorted(lines, key=sort_by_surname) + if " " in piece: + print(f'Malformed field at column {column}: "{line}"') + exit_code = 7 + + pieces.append(piece) + + named_lines.append((get_surname(pieces[0]), line + "\n")) + + email = pieces[-1] + if email and (not email.startswith('<') or not email.endswith('>')): + print(f'Malformed email address: "{line}"') + exit_code = 8 + + lines = [line + "\n" for line in lines] + sorted_lines = [line for _, line in sorted(named_lines)] if lines != sorted_lines: exit_code = 1 diff = ndiff(lines, sorted_lines) @@ -90,32 +115,35 @@ def check_group(name, lines): print(f'{name} are fine!') -lines = open(sys.argv[1]).read().splitlines() +text = open(sys.argv[1]).read() +if '\t' in text: + print('The file should not contain tabs') + exit_code = 9 -needle = 'Global Reviewers' -lines = list(dropwhile(lambda x: x.strip() != needle, lines)) -lines = lines[2:] +sections = [ + # heading, paragraph index, column numbers + ('Global Reviewers', 1, [0, 48]), + ('Write After Approval', 2, [0, 32, 48]), + ('Bug database only accounts', 1, [0, 48]), + ('Contributing under the DCO', 2, [0, 48]) +] -chunk = list(takewhile(is_empty, lines)) -check_group(needle, chunk) +i = 0 +count = 0 +for is_empty, lines in groupby(text.splitlines(), lambda x: not x): + if is_empty: + continue + lines = list(lines) + if count > 0: + count -= 1 + if count == 0: + check_group(sections[i][0], lines, sections[i][2]) + i += 1 + elif len(lines) == 1 and i < len(sections) and sections[i][0] in lines[0]: + count = sections[i][1] -needle = 'Write After Approval' -lines = list(dropwhile(lambda x: needle not in x, lines)) -lines = lines[2:] - -chunk = list(takewhile(is_empty, lines)) -check_group(needle, chunk) - -needle = 'Bug database only accounts' -lines = list(dropwhile(lambda x: needle not in x, lines)) -lines = lines[2:] - -chunk = list(takewhile(is_empty, lines)) -check_group(needle, chunk) - -needle = 'Contributing under the DCO' -lines = list(dropwhile(lambda x: needle not in x, lines))[1:] -lines = list(dropwhile(lambda x: not has_tab(x), lines)) -check_group(needle, lines) +if i < len(sections): + print(f'Missing "{sections[i][0]}" section') + exit_code = 10 sys.exit(exit_code)