>>>>> On Wed, 13 Sep 2023, Eli Schwartz wrote: >> That's a rather bold statement. I can imagine a number of possible >> failures, e.g. no space left on device, quota exceeded, or a low-level >> I/O error of the filesystem. Also fork or exec of the cat command could >> fail (e.g. out of memory). >> >> While either of these may be unlikely here, best practice is to check >> for errors of _all_ external commands. > The implementation of `die` performs a fork+exec of the sed command, > invokes eerror (many times!) which forks to pipe, invokes $() which > forks, and could behave abnormally due to out of memory. It is not safe > to treat `|| die` as error recovery for an out of memory condition. > The implementation of `die` performs multiple writes to files inside of > ${PORTAGE_BUILDDIR}, and could behave abnormally due to write failures. > It is not safe to treat `|| die` as error recovery for a write failure > of the ${PORTAGE_BUILDDIR} drive (whatever the reason for that write > failure). An eclass must not rely on implementation details of any specific package manager. "die [...] aborts the build process." https://projects.gentoo.org/pms/8/pms.html#x1-12600012.3.6 So please report a Portage (or other package manager) bug if you can reproduce a condition where die doesn't abort the build process. > (And the `|| die` is added to the next revision of this patch either way.) Thanks. Ulrich