[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] libacpi: use temporary files for generated files
On Thu, Oct 29, 2020 at 09:47:09AM +0100, Jan Beulich wrote: > On 28.10.2020 19:13, Anthony PERARD wrote: > > On Tue, Oct 27, 2020 at 12:06:56PM +0100, Jan Beulich wrote: > >> On 27.10.2020 11:57, Andrew Cooper wrote: > >>> On 27/10/2020 10:37, Jan Beulich wrote: > >>>> On 27.10.2020 11:27, Olaf Hering wrote: > >>>>> Am Tue, 27 Oct 2020 11:16:04 +0100 > >>>>> schrieb Jan Beulich <jbeulich@xxxxxxxx>: > >>>>> > >>>>>> This pattern is used when a rule consists of multiple commands > >>>>>> having their output appended to one another's. > >>>>> My understanding is: a rule is satisfied as soon as the file exists. > >>>> No - once make has found that a rule's commands need running, it'll > >>>> run the full set and only check again afterwards. > >>> > >>> It stops at the first command which fails. > >>> > >>> Olaf is correct, but the problem here is an incremental build issue, not > >>> a parallel build issue. > >>> > >>> Intermediate files must not use the name of the target, or a failure and > >>> re-build will use the (bogus) intermediate state rather than rebuilding > >>> it. > >> > >> But there's no intermediate file here - the file gets created in one > >> go. Furthermore doesn't make delete the target file(s) when a rule > >> fails? (One may not want to rely on this, and hence indeed keep multi- > >> part rules update intermediate files of different names.) > > > > What if something went badly enough and sed didn't managed to write the > > whole file and make never had a chance to remove the bogus file? > > How's this different from an object file getting only partly written > and not deleted? We'd have to use the temporary file approach in > literally every rule if we wanted to cater for this. I though that things like `gcc' would write the final object to a temporary place then rename it to the final destination, but that doesn't seems to be the case. I tried to see what happens if the `sed' command fails, and the target is created, empty, and doesn't gets deleted by make. So an incremental build uses a broken file without trying to rebuild it. If we want `make' to delete target when a rule fails, I think we need to add '.DELETE_ON_ERROR:' somewhere. Or avoid creating files before the command is likely to succeed. Cheers, -- Anthony PERARD
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |