Re: Restarting a failed poudriere session

From: Mark Millard via freebsd-ports <freebsd-ports_at_freebsd.org>
Date: Sat, 03 Jul 2021 08:17:25 UTC
On 2021-Jul-2, at 19:21, Mark Millard <marklmi at yahoo.com> wrote:

> On 2021-Jul-2, at 19:16, bob prohaska <fbsd at www.zefox.net> wrote:
> 
>> On Fri, Jul 02, 2021 at 05:38:12PM -0700, Mark Millard wrote:
>>> From: bob prohaska <fbsd_at_www.zefox.net> wrote on
>>> Date: Fri, 2 Jul 2021 14:08:12 -0700 :
>>> 
>>>> There's an option to 
>>>> SAVE_WRKDIR=yes
>>>> in /usr/local/etc/poudriere.conf
>>>> 
>>>> What is its intended use?
>>> 
>>> It avoids having to remember to type -w on the
>>> poudriere bulk command line.
>>> 
>>> Both cause a crash in the jail to produce a .txz
>>> (or other tar format) of the /wrkdirs/ directory
>>> tree that it was using when the crash happened.
>>> 
>> I take it "crash" in this context is any stoppage,
>> even if orderly...
> 
> "failure to complete the package build" would have been
> a better wording on my part, for sure.
> 
> (I'm actually unsure what is done if the failure is after
> staging.)
> 
>>> The can later be extracted and the contents examined
>>> for getting evidence about the problem.
>>> 
>>>> In particular,
>>>> can it be used to pick up a failed build
>>>> close to the point where it stopped?
>>> 
>>> No.
>>> 
>>> Individual builders (jobs) never restart in the
>>> middle: always at the beginning. But prior
>>> completed builders/jobs are not rerun unless
>>> something changed to cause such.
>>> 
>> 
>> So much for wishfull thinking.  

If a builder fails, it is not obvious what all of
the built material prior to the obvious failure is
also suspect: problems are not always reasonably
detectable up front at every related point. If the
goal is reliably clean builds, then the rebuilds
fit with that, accepting just builds that have no
obvious failure. Poudriere's goal is clean builds.

>>>> There's no obvious reference to SAVE_WRKDIR
>>>> in the man page and a web search came up
>>>> empty in terms of what it's good for.
>>> 
>>>> From man poudriere-bulk :
>>> 
>>>    -w       Save WRKDIR on build failure.  The WRKDIR will be tarred up into
>>>             ${POUDRIERE_DATA}/wrkdirs.
>>> 
>>> I will note that the WRKDIR concept is not specific to
>>> poudriere but to all the ports infrastructure. From
>>> man ports :
>>> 
>>>    WRKDIRPREFIX      Where to create any temporary files.  Useful if
>>>                      PORTSDIR is read-only (perhaps mounted from a CD-ROM).
>>> 
>>> . . .
>>> 
>>>    SU_CMD            Command used to elevate privilege to configure and
>>>                      install a port.  The unprivileged user must have write
>>>                      access to WRKDIRPREFIX and DISTDIR.  The default is
>>>                      ???/usr/bin/su root -c???.  Many users set it to
>>>                      ???/usr/local/bin/sudo -E sh -c??? for convenience.
>>> 
>>> 
>>> SIDE NOTE:
>>> 
>>> main has commits today for avoiding the rust build failures.
>>> 
>> 
>> Thanks for answering my questions! I've got one more for a separate subject line.
>> 


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)