From: Max Nikulin <manikulin@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: yantar92@posteo.net, 62762@debbugs.gnu.org, bzg@gnu.org,
dmitry@gutov.dev, monnier@iro.umontreal.ca, acm@muc.de
Subject: bug#62762: circular dependencies in elisp files and make
Date: Sat, 13 May 2023 17:25:06 +0700 [thread overview]
Message-ID: <63ccd7e3-f622-eef3-0ce4-4e7da4b92bb6@gmail.com> (raw)
In-Reply-To: <83y1lsaaay.fsf@gnu.org>
On 13/05/2023 15:46, Eli Zaretskii wrote:
>> Date: Sat, 13 May 2023 14:34:06 +0700 From: Max Nikulin
>>
>> 1. A script reads dependency files (if they exist) created during
>> previous build and removes stale .elc files.
>
> This will break if the updated files have different dependencies. You
> need to recreate the dependencies each build.
Let's consider a.el that contains (require 'd) or it autoloads some
macro from d.el. If a.el changed then a.elc is removed on this stage, so
updated a.elc will be created on the next stage. Dependency on d.elc is
known from previous build, so if d.el is changed then both a.elc and
d.elc are removed. If new (require 'd-new) is added to a.el then it is
not a problem as well. a.elc is removed due to changed a.el. d-new.elc
is either up to date or it is removed due to changes in its dependencies
or in d-new.el.
So no stale files should survive stage 1. The only issue with obsolete
dependencies is that compilation order may be not optimal.
> Also, it is not clear what is the plan for the macros. If one of the
> macros used during byte compilation changes in incompatible ways,
> trying to byte-compile using Emacs which preloaded the previous
> (outdated) definition of the macro will fail.
I hope, it is addressed above.
> So some changes need
> also to generate a new Emacs binary, not just byte-compile in the
> right order.
I expect that dependencies of the script removing stale files are
minimized. If changes in the breaks this script then it is time for
"make clean". If emacs binary depends on .elc files then some file may
be touched to let "make" know that the executable needs rebuild.
>> 2. Normal "make" pass that takes into account dependency between files
>> for ordering of compile commands. Dependency files are created or
>> updated as a side-effect of compilation.
>>
>> Likely it is reasonable to split stage 2 into steps similar to current
>> targets like main-first and mark most of files as dependent on a target
>> that (throw its dependencies) compiles files required for byte compilation.
>
> What is the plan for the various autoloads files? They depend on all
> the files, and many (all?) files depend on them.
My plan is that autoloads/loaddefs are order-only dependencies for .elc
files. However autoloads/loaddefs files depends on all files necessary
to generate them.
next prev parent reply other threads:[~2023-05-13 10:25 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-10 23:09 bug#62762: 'make' often errors with "Org version mismatch" after pulling a new version of the code Dmitry Gutov
2023-04-11 6:10 ` Eli Zaretskii
2023-04-11 7:18 ` Ihor Radchenko
2023-04-11 8:03 ` Eli Zaretskii
2023-04-11 18:35 ` Ihor Radchenko
2023-04-11 18:51 ` Eli Zaretskii
2023-04-11 18:59 ` Ihor Radchenko
2023-04-11 19:28 ` Eli Zaretskii
2023-04-11 19:37 ` Eli Zaretskii
2023-04-12 9:03 ` Ihor Radchenko
2023-04-12 9:21 ` Eli Zaretskii
2023-04-13 8:34 ` Ihor Radchenko
2023-04-13 8:37 ` Eli Zaretskii
2023-04-13 14:20 ` Ihor Radchenko
2023-04-13 14:55 ` Eli Zaretskii
2023-04-13 15:05 ` Ihor Radchenko
2023-04-15 10:48 ` Eli Zaretskii
2023-04-15 11:36 ` Ihor Radchenko
2023-04-15 11:40 ` Eli Zaretskii
2023-04-15 11:57 ` Ihor Radchenko
2023-04-15 12:08 ` Eli Zaretskii
2023-04-21 11:44 ` Eli Zaretskii
2023-04-21 15:28 ` Ihor Radchenko
2023-04-22 9:49 ` Eli Zaretskii
2023-04-22 12:39 ` Ihor Radchenko
2023-04-22 12:48 ` Eli Zaretskii
2023-04-22 14:32 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-23 8:55 ` Ihor Radchenko
2023-04-24 11:21 ` Eli Zaretskii
2023-04-24 12:29 ` Ihor Radchenko
2023-11-24 17:43 ` Dmitry Gutov
2023-11-24 18:54 ` Eli Zaretskii
2023-11-24 18:56 ` Dmitry Gutov
2023-11-25 7:08 ` Eli Zaretskii
2023-11-25 12:38 ` Dmitry Gutov
2023-11-25 12:59 ` Eli Zaretskii
2023-11-25 13:55 ` Dmitry Gutov
2023-04-22 14:30 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-22 14:59 ` Eli Zaretskii
2023-04-23 9:21 ` Ihor Radchenko
2023-05-01 1:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-01 10:25 ` Ihor Radchenko
2023-05-01 16:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-02 11:26 ` Ihor Radchenko
2023-05-02 13:12 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-03 10:30 ` Ihor Radchenko
2023-05-03 21:37 ` Alan Mackenzie
2023-05-04 5:35 ` Eli Zaretskii
2023-05-04 14:02 ` Alan Mackenzie
2023-05-04 14:10 ` Eli Zaretskii
2023-05-04 15:31 ` Max Nikulin
2023-05-04 21:53 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-05 4:18 ` Max Nikulin
2023-05-05 5:27 ` Max Nikulin
2023-05-05 6:46 ` Eli Zaretskii
2023-05-05 7:27 ` Max Nikulin
2023-05-05 10:38 ` Eli Zaretskii
2023-05-05 11:20 ` Max Nikulin
2023-05-05 11:33 ` Eli Zaretskii
2023-05-05 15:33 ` Max Nikulin
2023-05-05 15:49 ` Eli Zaretskii
2023-05-05 16:46 ` Max Nikulin
2023-05-05 17:48 ` Eli Zaretskii
2023-05-05 18:26 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-11 15:14 ` bug#62762: circular dependencies in elisp files and make Max Nikulin
2023-05-11 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-11 15:59 ` Eli Zaretskii
2023-05-12 14:59 ` Max Nikulin
2023-05-12 15:10 ` Eli Zaretskii
2023-05-12 15:26 ` Max Nikulin
2023-05-12 16:01 ` Eli Zaretskii
2023-05-13 3:08 ` Max Nikulin
2023-05-13 6:50 ` Eli Zaretskii
2023-05-13 7:34 ` Max Nikulin
2023-05-13 8:46 ` Eli Zaretskii
2023-05-13 10:25 ` Max Nikulin [this message]
2023-05-13 10:58 ` Eli Zaretskii
2023-05-13 11:21 ` Max Nikulin
2023-05-13 14:49 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-13 14:48 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-15 10:11 ` Max Nikulin
2023-05-15 11:20 ` Eli Zaretskii
2023-05-15 13:00 ` Max Nikulin
2023-05-15 15:00 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-13 15:43 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-05 14:29 ` bug#62762: 'make' often errors with "Org version mismatch" after pulling a new version of the code Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-05 16:37 ` Max Nikulin
2023-05-05 18:17 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-06 5:25 ` Max Nikulin
2023-05-06 13:02 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-07 16:23 ` Max Nikulin
2023-05-07 21:57 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-08 10:05 ` Ihor Radchenko
2023-05-10 14:52 ` Max Nikulin
2023-06-23 12:02 ` Ihor Radchenko
2023-06-25 14:37 ` Max Nikulin
2023-06-27 10:59 ` Ihor Radchenko
2023-06-27 11:40 ` Eli Zaretskii
2023-06-27 12:08 ` Ihor Radchenko
2023-06-27 12:12 ` Eli Zaretskii
2023-06-27 12:30 ` Ihor Radchenko
2023-06-27 12:51 ` Eli Zaretskii
2023-06-27 16:11 ` Max Nikulin
2023-07-04 12:20 ` Ihor Radchenko
2023-05-06 6:00 ` Max Nikulin
2023-05-06 7:51 ` bug#62762: Incremental builds and Lisp files dependencies " Eli Zaretskii
2023-05-06 15:50 ` Max Nikulin
2023-05-06 16:26 ` Eli Zaretskii
2023-05-07 2:45 ` Max Nikulin
2023-05-07 5:34 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=63ccd7e3-f622-eef3-0ce4-4e7da4b92bb6@gmail.com \
--to=manikulin@gmail.com \
--cc=62762@debbugs.gnu.org \
--cc=acm@muc.de \
--cc=bzg@gnu.org \
--cc=dmitry@gutov.dev \
--cc=eliz@gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=yantar92@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).