rpi2 V1.1 vs. hard coded max_execution_time figures in /usr/local/share/poudriere/common.sh (package; also: extract, install, deinstall)

Mark Millard markmi at dsl-only.net
Tue Dec 19 21:31:19 UTC 2017


I tied building devel/llvm50 on a rpi2 V1.1 via poudriere
and it got as far as:

. . .
=======================<phase: package        >============================
===>  Building package for llvm50-5.0.0_6
=>> Killing timed out build after 7200 seconds

This was for:

---Begin OPTIONS List---
===> The following configuration options are available for llvm50-5.0.0_6:
     CLANG=on: Build clang
     DOCS=on: Build and/or install documentation
     EXTRAS=on: Extra clang tools
     LIT=on: Install lit and FileCheck test tools
     LLD=on: Install lld, the LLVM linker
     LLDB=on: Install lldb, the LLVM debugger

But I had set in /usr/local/etc/poudriere.conf :

# This defines the max time (in seconds) that a command may run for a build
# before it is killed for taking too long. Default: 86400
#MAX_EXECUTION_TIME=86400
MAX_EXECUTION_TIME=432000
 
# This defines the time (in seconds) before a command is considered to
# be in a runaway state for having no output on stdout. Default: 7200
#NOHANG_TIME=7200
NOHANG_TIME=28800

The magic 7200 is from /usr/local/share/poudriere/common.sh :

                package)
                        max_execution_time=7200
. . .

There is also a lack of control over:

                extract)
                        max_execution_time=3600
. . .
                install)
                        max_execution_time=3600
. . .
                deinstall)
                        max_execution_time=3600
. . .

The rpi2 is now busy constructing a bsdtar when it
could have had a llvm50 package. (I wonder if the
bsdtar takes less time than the package would have
taken.)

As stands the only way to allow such large builds
on the rpi2 is to edit:

/usr/local/share/poudriere/common.sh

after each poudriere installation/update.

The following large things did manage to build
packages:

lang/gcc7
devel/cmake (indirect from selecting devel/llvm50)

(I avoid WITH_DEBUG for devel/llvm50 in all
environments: that build is massive, needing
between 24 GiBytes and 26 GiBytes for RAM+SWAP
on a powerpc64, if I remember right.)



Other than the hard coded max_execution_time
examples I've no found any fundmental problems
with using poudriere when configured as
indicated below. (Being willing to give it
the time it needed.)

For these experiments I've used:

NO_ZFS=yes
USE_TMPFS=no
PARALLEL_JOBS=1
ALLOW_MAKE_JOBS=yes
MAX_EXECUTION_TIME=432000
NOHANG_TIME=28800

For what I tried I've not had to
use MAKE_JOBS_NUMBER_LIMIT?= or
MAKE_JOBS_NUMBER?= . (Say, in
/usr/local/etc/poudriere.d/make.conf
testing the likes of
.if ${.CURDIR:M*/devel/llvm*}
code.)

The rpi2 has world, kernel, and its dtb
file via a USB SSD Stick, not from a
usdcard. The usdcard is very minimal
as far as its UFS / file system goes:

/etc/fstab (redirecting to the USB SSD)
/boot/* (with /boot/kernel/ empty and /boot/dtb/ empty)

The USB SSD stick has:

# df -m
Filesystem  1M-blocks  Used  Avail Capacity  Mounted on
/dev/da0p1     195378 31305 148443    17%    /
devfs               0     0      0   100%    /dev

(/dev/da0p1 has a UFS file system.)

# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/da0p2        1572864    16876  1555988     1%


===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-ports mailing list