From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyg8m-0002eK-Ua for qemu-devel@nongnu.org; Wed, 21 Mar 2018 11:59:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyg8k-00046Y-BF for qemu-devel@nongnu.org; Wed, 21 Mar 2018 11:59:05 -0400 Date: Wed, 21 Mar 2018 17:58:49 +0200 From: "Michael S. Tsirkin" Message-ID: <20180321175452-mutt-send-email-mst@kernel.org> References: <1521642402-197739-1-git-send-email-mst@redhat.com> <20180321153439.GC3898@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180321153439.GC3898@localhost.localdomain> Subject: Re: [Qemu-devel] [PATCH v2] qemu: replace "" with <> in headers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-devel@nongnu.org, Daniel =?iso-8859-1?Q?P=2E_Berrang=E9?= , Thomas Huth , Laurent Vivier , Peter Maydell , Dmitry Fleytman , Ronnie Sahlberg , Li Zhijian , David Hildenbrand , Jeff Cody , Zhang Chen , BALATON Zoltan , Keith Busch , Max Filippov , Gerd Hoffmann , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang , Ben Warren , Marcel Apfelbaum , Yongbok Kim , Markus Armbruster , Stefan Berger , Christian Borntraeger , kvm@vger.kernel.org, =?iso-8859-1?Q?Herv=E9?= Poussineau , Shannon Zhao , Anthony Perard , Liu Yuan , David Gibson , Andrzej Zaborowski , Jason Wang , Artyom Tarasenko , Riku Voipio , Fam Zheng , Eduardo Habkost , Corey Minyard , Amit Shah , Pavel Dovgalyuk , Stefan Weil , Xie Changlong , Alistair Francis , Peter Lieven , "Dr. David Alan Gilbert" , Greg Kurz , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau , Alex Williamson , qemu-arm@nongnu.org, Peter Chubb , Yuval Shaia , Stefan Hajnoczi , Paolo Bonzini , xen-devel@lists.xenproject.org, John Snow , Richard Henderson , qemu-block@nongnu.org, Peter Crosthwaite , Hitoshi Mitake , Wen Congyang , qemu-s390x@nongnu.org, Cornelia Huck , "Richard W.M. Jones" , Juan Quintela , Max Reitz , Michael Walle , qemu-ppc@nongnu.org, Andreas =?iso-8859-1?Q?F=E4rber?= , Igor Mammedov , Hannes Reinecke , Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= On Wed, Mar 21, 2018 at 04:34:39PM +0100, Kevin Wolf wrote: > Am 21.03.2018 um 15:46 hat Michael S. Tsirkin geschrieben: > > Our current scheme is to use > > #include "" > > for internal headers, and > > #include <> > > for external ones. > > > > Unfortunately this is not based on compiler support: from C point of > > view, the "" form merely looks up headers in the current directory > > and then falls back on <> directories. > > > > Thus, for example, a system header trace.h - should it be present - will > > conflict with our local trace.h > > You're right that there is a conflict, even though only in one > direction: "trace.h" is unambiguously the local trace.h in our source > tree, but refers to the same local header rather than the > system header as you would expect. > > An easy way to resolve this conflict would be using -iquote rather than > -I for directories in the source tree, so that unambiguously > refers to the system header and "trace.h" unambiguously refers to the > QEMU header. I posted patches to that effect for 2.12. It's all still very much a non-standard convention and so less robust than prefixing file name with a project-specifix prefix. > > As another example of problems, a header by the same name in the source > > directory will always be picked up first - before any headers in > > the include directory. > > > > Let's change the scheme: make sure all headers that are not > > in the source directory are included through a path > > starting with qemu/ , thus: > > > > #include <> > > > > headers in the same directory as source are included with > > > > #include "" > > > > as per standard. > > > > This (untested) patch is just to start the discussion and does not > > change all of the codebase. If there's agreement, this will be > > run on all code to converting code to this scheme. > > Renaming files is always painful. If that's the fix, the cure might be > worse than the disease. As far as I know, the conflict is only > theoretical, so in that case I'd say: If it ain't broke, don't fix it. > > Kevin It's broke I think, it's very hard for new people to contribute to QEMU. Look e.g. at rdma which all has messed up includes - and that's from an experienced conributor who just isn't an experienced maintainer. Amount of time spent on teaching new people trivia about our conventions just isn't funny. They should be self-documenting and violations should cause the build to fail. -- MST