all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Daniel Colascione" <dancol@dancol.org>
To: "Achim Gratz" <Stromeko@nexgo.de>
Cc: emacs-devel@gnu.org
Subject: Re: CHECK_STRUCTS/dmpstruct.h mechanism is broken.
Date: Thu, 11 Apr 2019 15:10:35 -0700	[thread overview]
Message-ID: <4b117557f2ad040a178587a74ad4d998.squirrel@dancol.org> (raw)
In-Reply-To: <87v9zkqptq.fsf@Rainer.invalid>

> Paul Eggert writes:
>> On 4/11/19 2:35 AM, Robert Pluim wrote:
>>> Much as I dislike Autoconf, what would you have us replace it with?
>>
>> I was thinking of using just standard tools (as per the GNU Coding
>> Standards) along with GNU Make - and, once the Emacs core is built, we
>> can use Emacs itself. Although we started assuming GNU Make in Emacs 25,
>> we haven't been using GNU Make's features fully and some of its features
>> could effectively replace the need for Autoconf.
>
> I don't see how… autoconf got one thing right: it tries to actually
> _compile_, not just check preprocessor defines or compiler versions.
> That also makes it slow, especially as it's all serial.
>
>> A benefit of this approach would be faster builds. Right now the biggest
>> bottleneck on my system is the time to run 'configure' whenever I make a
>> trivial change to configure.ac or whatever. I *hate* that.
>
> The fun thing is that in this case you could run autoconf almost
> entirely from already cached decisions.  I have not tried to feed
> autoconf prepared caches in a long time, but it may be worth a try.
>
>> Although I looked into other possible approaches (switching to SCons,
>> say) none of them seemed to offer compelling advantages to the
>> more-conservative approach I have in mind.
>
> Most of the newfangled systems I've looked at focus on build speed
> (mostly by pre-computing dependencies) and take the configuration for
> granted (some even using autoconf again).
>
>> Eric Raymond reported success with this sort of approach when
>> deautoconfiscating giflib and the NTP code base:
>>
>> https://lists.gnu.org/r/bison-patches/2019-02/msg00041.html
>
> I can tell you something about NTPsec.  Yes, it has no autoconf, but
> that's been replaced with the configure step from waf, which has exactly
> one person you can ask if something doesn't work the way you think it
> should.  Based on Python it has a somewhat more agreeable syntax than M4
> macros (no surprise), but it's not actually more clear (to me anyway).
> Plus, there are a lot less depencies that need to be checked.

I like autoconf. It's flexible and it works for every weird thing I've
ever wanted to do with it. Trying to color outside the lines with
alternate systems like cmake has been hell. While m4 isn't the most
elegant macro system out there, its quirks are well-understood, and
autoconf has decades of institutional knowledge built into it. I've also
found that alternative systems frequently have problems with complex
configurations like out-of-tree builds, cross compilation, various forms
of path overriding, and tool specification. autoconf dealt with all of
these issues a very long time ago.

IMHO, instead of investing in some new system, we'd be better off
improving autoconf speed by

1) eliminating tests that have become unnecessary in the modern world,
2) adding an optimization pass that batched redundant tests, and
3) making caching Just Work, maybe by stracing and checking all inputs for
cache validation.

The basic model is fine. The basic configuration model is fine.




  reply	other threads:[~2019-04-11 22:10 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-28 20:21 CHECK_STRUCTS/dmpstruct.h mechanism is broken Alan Mackenzie
2019-02-28 20:55 ` Eli Zaretskii
2019-02-28 20:59 ` Alan Mackenzie
2019-03-01  7:31   ` Eli Zaretskii
2019-03-01 13:09     ` Alan Mackenzie
2019-03-05  2:17   ` Paul Eggert
2019-04-09 22:47     ` Paul Eggert
2019-04-10 13:12       ` Andy Moreton
2019-04-10 14:59         ` Andy Moreton
2019-04-10 17:36         ` Paul Eggert
2019-04-10 19:26           ` Andy Moreton
2019-04-10 19:43             ` Daniel Colascione
2019-04-10 16:22       ` Alan Mackenzie
2019-04-10 18:05         ` Paul Eggert
2019-04-10 19:45           ` Alan Mackenzie
2019-04-10 20:11             ` Daniel Colascione
2019-04-11  4:11               ` Paul Eggert
2019-04-15 12:36                 ` Andy Moreton
2019-04-15 15:32                   ` Andy Moreton
2019-04-15 15:53                     ` Paul Eggert
2019-04-11 13:13               ` Stefan Monnier
2019-04-11  4:17             ` Paul Eggert
2019-04-10 18:47         ` Daniel Colascione
2019-04-10 18:58           ` Paul Eggert
2019-04-10 19:02             ` Daniel Colascione
2019-04-10 19:22             ` Eli Zaretskii
2019-04-11  9:35             ` Robert Pluim
2019-04-11 18:31               ` Paul Eggert
2019-04-11 19:15                 ` Eli Zaretskii
2019-04-11 22:13                   ` Daniel Colascione
2019-04-12  6:44                     ` Eli Zaretskii
2019-04-11 22:23                   ` Paul Eggert
2019-04-11 22:26                     ` Daniel Colascione
2019-04-11 22:38                       ` Paul Eggert
2019-04-12  6:39                     ` Eli Zaretskii
2019-04-12 19:40                       ` Paul Eggert
2019-04-13  9:36                         ` Eli Zaretskii
2019-04-14  2:52                           ` Paul Eggert
2019-04-12 12:21                     ` Andy Moreton
2019-04-12 13:37                     ` Alan Mackenzie
2019-04-12 13:55                       ` Eli Zaretskii
2019-04-12 13:58                       ` Noam Postavsky
2019-04-13 14:06                         ` Alan Mackenzie
2019-04-13 14:46                           ` About ./configure --cache-file (WAS: CHECK_STRUCTS/dmpstruct.h mechanism is broken.) Noam Postavsky
2019-04-14  2:44                             ` Paul Eggert
2019-04-14  3:26                               ` Daniel Colascione
2019-04-14  3:49                                 ` Noam Postavsky
2019-04-14  9:45                               ` Alan Mackenzie
2019-04-14 14:08                                 ` Eli Zaretskii
2019-04-14 14:44                                   ` Noam Postavsky
2019-04-14 14:53                                     ` Eli Zaretskii
2019-04-13  8:11                     ` CHECK_STRUCTS/dmpstruct.h mechanism is broken Achim Gratz
2019-04-14  2:52                       ` Paul Eggert
2019-04-14  3:28                         ` Daniel Colascione
2019-04-14  7:22                         ` Achim Gratz
2019-04-14 23:29                           ` Paul Eggert
2019-04-15 11:31                             ` Alan Mackenzie
2019-04-15 14:14                               ` Paul Eggert
2019-04-15 18:11                             ` Richard Stallman
2019-04-16 18:10                               ` Paul Eggert
2019-04-22  2:18                                 ` Richard Stallman
2019-04-22  4:07                                   ` Paul Eggert
2019-04-23  1:41                                     ` Richard Stallman
2019-04-23  3:48                                       ` Paul Eggert
2019-04-23  6:25                                         ` Eli Zaretskii
2019-04-23 16:28                                           ` Paul Eggert
2019-04-23 17:08                                             ` Eli Zaretskii
2019-04-23 17:19                                             ` Stefan Monnier
2019-04-24  2:26                                             ` Richard Stallman
2019-04-15  3:36                         ` Richard Stallman
2019-04-15  5:30                           ` Paul Eggert
2019-04-11 19:55                 ` Achim Gratz
2019-04-11 22:10                   ` Daniel Colascione [this message]
2019-04-11 22:47                     ` Paul Eggert
2019-04-11 22:44                   ` Paul Eggert
2019-04-12 17:02                     ` Daniele Nicolodi
2019-04-13  8:26                     ` Achim Gratz

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4b117557f2ad040a178587a74ad4d998.squirrel@dancol.org \
    --to=dancol@dancol.org \
    --cc=Stromeko@nexgo.de \
    --cc=emacs-devel@gnu.org \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.