From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Dependency graph for Emacs Lisp files Date: Thu, 01 Aug 2019 11:27:49 -0400 Message-ID: References: <8736ilnmp7.fsf@mouse.gnus.org> <87lfwdkoe8.fsf@mouse.gnus.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="105352"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 01 17:33:16 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htD4t-000RHJ-CB for ged-emacs-devel@m.gmane.org; Thu, 01 Aug 2019 17:33:15 +0200 Original-Received: from localhost ([::1]:56854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htD4s-00083c-00 for ged-emacs-devel@m.gmane.org; Thu, 01 Aug 2019 11:33:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38126) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htCzp-0004v9-8H for emacs-devel@gnu.org; Thu, 01 Aug 2019 11:28:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htCzl-0007ys-4J for emacs-devel@gnu.org; Thu, 01 Aug 2019 11:28:00 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:9238) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1htCzi-0007s1-E7 for emacs-devel@gnu.org; Thu, 01 Aug 2019 11:27:56 -0400 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 20F1085AF7; Thu, 1 Aug 2019 11:27:51 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EDE3885ACB; Thu, 1 Aug 2019 11:27:49 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1564673270; bh=vBF3iKN3QQw4+8o93d/XS+k5bsorNsDgtg3X/Gs3LNg=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=G+akV96dU/3wxTipaUbTl9jmsvXaLumR35I5kneqoTwAYYPONzzjer7dP6YR2dFAi PV/Yi5uS2E2SX6K3TBFFEszp7jppUOVKNVpqB4MveppnjNATNF/N4MkmDVV0VNIXIw apYjQMD3Nv9nfZCP6K16SIQZ2o7Y6KZmU8meBZwafTjhH4Em9hcx4C5pZ0aXX3FC3S 3ki+/FY+FPUBzdpWEccc3WB57HQ8drsdjvXQAW6q5dGyFAv8uPx+7tz29S3wLQ7qkp oJQY0LJy/aMDInlX+TiN65AYoUJCg539DZj+HULWro3Twny/0+TGbojowmqedgvbhI NAmkliCBsb+ZQ== Original-Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E2979120397; Thu, 1 Aug 2019 11:27:49 -0400 (EDT) In-Reply-To: <87lfwdkoe8.fsf@mouse.gnus.org> (Lars Ingebrigtsen's message of "Thu, 01 Aug 2019 15:26:23 +0200") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 132.204.25.50 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239108 Archived-At: > But are cycles a problem? You just delete all the .elc files in the > cycle and then stop. That's only if you want to do it yourself: instead I want GNU Make to do the job of traversing the dependencies. >> For (2), I think a better option is to generate the dependencies as >> a side-effect of compilation using after-load-functions: we should be >> able to collect reliably all the dependencies this way, regardless of >> how the files get loaded. > > Hm... interesting. That makes me wonder whether the same thing could > be used to collect the requires, too? This would work "regardless of how the files get loaded", so of course it would handle `require`s as well. > Speaking of excessive recompilation, it seems like all the .c files are > recompiled just about whenever anybody does something trivial in a .h > file, but I guess that's unavoidable. (I get the feeling that every day > when I do a "git pull" I get a full recompilation of the C bits in > Emacs, and then a couple of .el files, but perhaps that's not completely > accurate.) That's about right: we have a few .h files that are often changed and that are included in many/most other files. E.g. globals.h, config.h, and lisp.h are probably the main culprits. Not sure how to improve the situation. Stefan