From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: GNAT Modification_Time limitation
Date: Mon, 26 Nov 2018 17:45:23 -0600
Date: 2018-11-26T17:45:23-06:00 [thread overview]
Message-ID: <pti0ik$c0b$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 0d4679d2-30d7-493f-b9fd-688d044e1a4e@googlegroups.com
<briot.emmanuel@gmail.com> wrote in message
news:0d4679d2-30d7-493f-b9fd-688d044e1a4e@googlegroups.com...
>> I'd argue that these are something else on top of individual builds. And
>> that it is a mistake trying to combine basic building with those
>> higher-level configuration management things.
>
> Not sure about the concepts about you describe. For me, "basic building"
> is one run of the compiler on one specific file, which always recompiles,
> no question asked.
> What we are talking about in this thread a tools at the level of make and
> gprbuild, that decide what should be compiled, and when. For me, this is
> thte "higher-level build management part". That includes configuration
> management, since this tool is also responsible for deciding where the
> build artifacts (object files, executables,...) should be stored.
I think of a single compilation as a "compilation", while a "build" to me is
something that results in one or more executable files, generally based on
the source code found in a single directory. Going further (and we have some
such features, particularly for sharing source/object between multiple
distinct builds) is part of the higher-level management. (I don't have an
simple name for that, which shows yet again how hard it is to describe.)
Ada of course allows "build" to be completely automated without any outside
intervention at all. In theory, it's only necessary to point the build tool
at the pile of source code.
...
>> It's hard to imagine a build taking less than two seconds; certainly not
>> if
>> a human is involved, and very unlikely even if automated.
>
> Don't forget that Lionel's make-like tool and gprbuild are both meant to
> be
> language-neutral. Compiling an Ada file in less than 2s is rare nowadays
> (but
> possible with very simple files. But compiling a python file takes a few
> ms,
> so just looking at timestamps cannot be enough (though when compilation
> is that fast, it doesn't matter much to redo it more often...
Again, a "build" in my view is compiling the set of files needed to create
an executable. (Again, I'll ignore the management of shared libraries.) That
generally requires the compilation of multiple files, and a linking phase as
well. Moreover, unless you are running multiple builds from some
higher-level tool, there's also human reaction time involved. The likelihood
of that happening faster than 2 seconds isn't high. The issues I've seen
almost always come from someone terminating a compilation in the middle
without letting the compiler clean up any half-created artifacts.
Of course, most other languages need a lot of help to determine dependencies
(information that is directly part of the Ada source code). That need for
help has confused the issues a lot, because however you give it can't be
automatic nor bullet-proof. Thus, this gets mixed up with the higher level
issues. Ada only needs that help at a higher level than basic building;
basic building should be automatic.
I've even had a customer (with large, complex systems) tell me that they
didn't want the Ada compiler to even try to manage such things. They wanted
to grab some set of source from version control and essentially have the
compiler build it from that source (all found in one large glob in a single
directory). They thought that build times were short enough that it wasn't
worth the intermediate steps to avoid recompilations. I've rather thought
that was the future of such tools; some higher-level management (probably
from the configuration management system) where whatever the compiler does
would seem to get in the way.
Randy.
prev parent reply other threads:[~2018-11-26 23:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-19 22:56 GNAT Modification_Time limitation Lionel Draghi
2018-11-20 0:47 ` Shark8
2018-11-20 1:33 ` Keith Thompson
2018-11-20 1:33 ` Keith Thompson
2018-11-20 23:32 ` Randy Brukardt
2018-11-21 8:23 ` Dmitry A. Kazakov
2018-11-20 8:08 ` briot.emmanuel
2018-11-20 11:57 ` Lionel Draghi
2018-11-21 7:40 ` briot.emmanuel
2018-11-21 11:16 ` briot.emmanuel
2018-11-21 19:13 ` Lionel Draghi
2018-11-21 19:02 ` Lionel Draghi
2018-11-21 19:48 ` Simon Wright
2018-11-21 22:14 ` Lionel Draghi
2018-11-20 23:53 ` Randy Brukardt
2018-11-21 7:31 ` briot.emmanuel
2018-11-21 14:38 ` Shark8
2018-11-21 17:32 ` Simon Wright
2018-11-21 17:43 ` briot.emmanuel
2018-11-21 23:34 ` Randy Brukardt
2018-11-22 8:15 ` briot.emmanuel
2018-11-26 23:45 ` Randy Brukardt [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox