Re: The www/chromium build timed out again: Killing timed out build after 904800 seconds

From: Mark Millard via freebsd-ports <freebsd-ports_at_freebsd.org>
Date: Mon, 16 Aug 2021 16:45:02 UTC
On 2021-Aug-16, at 07:39, bob prohaska <fbsd at www.zefox.net> wrote:

> On Mon, Aug 16, 2021 at 06:46:18AM -0700, Mark Millard wrote:
>> [257:10:19][ 85% 41061/47953] c++ -MMD -MF . . .
>> [257:10:25]=>> Killing timed out build after 904800 seconds
>> [257:10:39][ 85% 41062/47953] c++ -MMD -MF . . .
>> . . .
>> [260:10:14][ 86% 41290/47953] c++ -MMD -MF . . .
>> (still running as of when I looked)
>> 
>> 
>> May be try more like 1640000? (approx. 1.5*(258*3600)/0.85))
>> (Other timeout figures could also require adjustment.)
>> 
>> 
>> Note: The 20210805.log size is over 1.1 GiBytes and will take
>> hours to download.
>> 
> 
> The top window I normally watch still reports C++ running as 
> usual, so I didn't notice.
> 
> I'm inclined to concede that poudriere is unfeasible on a 1
> GB Pi3 for www/chromium. Using make did work with some finesse
> around dependency conflicts, as does poudriere on an 8 GB Pi4.
> 
> Once poudriere finally quits and cleans up I'll give make in
> www/chromium another try, as a sanity check.

I recommend that you first "pkg delete -a" and then install
all the prerequesite ports from your poudriere built packages
that you have made. As I remember your environement from
before this effort started was messed up and could not build.
This should clean out and replace the messed up port
installs.

After that "pkg delete -a", for each direct dependency:

pkg install category/portname

should also install indirect dependencies automatically.
(But the list of direct dependencies is long.)

The Makefile lists (use the category/portname contents
that is after the ":"s). You have to replace notation
like ${PY_FLAVOR} yourself. Here they should be: py27
(which matches up with the USES information about python).

BUILD_DEPENDS=	bash:shells/bash \
		${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \
		${PYTHON_PKGNAMEPREFIX}ply>0:devel/py-ply@${PY_FLAVOR} \
		gperf:devel/gperf \
		ffmpeg>=3.2.2,1:multimedia/ffmpeg \
		flock:sysutils/flock \
		node:www/node \
		xcb-proto>0:x11/xcb-proto \
		${LOCALBASE}/bin/ar:devel/binutils \
		${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
		${LOCALBASE}/share/usbids/usb.ids:misc/usbids \
		${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR} \
		${LOCALBASE}/include/va/va.h:multimedia/libva

LIB_DEPENDS=	libatk-bridge-2.0.so:accessibility/at-spi2-atk \
		libatspi.so:accessibility/at-spi2-core \
		libspeechd.so:accessibility/speech-dispatcher \
		libsnappy.so:archivers/snappy \
		libFLAC.so:audio/flac \
		libopus.so:audio/opus \
		libspeex.so:audio/speex \
		libdbus-1.so:devel/dbus \
		libdbus-glib-1.so:devel/dbus-glib \
		libicuuc.so:devel/icu \
		libjsoncpp.so:devel/jsoncpp \
		libpci.so:devel/libpci \
		libnspr4.so:devel/nspr \
		libre2.so:devel/re2 \
		libcairo.so:graphics/cairo \
		libdrm.so:graphics/libdrm \
		libexif.so:graphics/libexif \
		libpng.so:graphics/png \
		libwebp.so:graphics/webp \
		libavcodec.so:multimedia/ffmpeg \
		libopenh264.so:multimedia/openh264 \
		libfreetype.so:print/freetype2 \
		libharfbuzz.so:print/harfbuzz \
		libharfbuzz-icu.so:print/harfbuzz-icu \
		libgcrypt.so:security/libgcrypt \
		libsecret-1.so:security/libsecret \
		libnss3.so:security/nss \
		libexpat.so:textproc/expat2 \
		libfontconfig.so:x11-fonts/fontconfig \
		libxkbcommon.so:x11/libxkbcommon \
		libxshmfence.so:x11/libxshmfence

RUN_DEPENDS=	xdg-open:devel/xdg-utils \
		noto-basic>0:x11-fonts/noto-basic

There are also ports dependencies implicitly involved in
each entry (or most) of:

USES=		bison compiler:c++17-lang cpe desktop-file-utils dos2unix gl gnome jpeg localbase:ldflags \
		ninja perl5 pkgconfig python:2.7,build shebangfix tar:xz xorg

but this notation does not show the category and sometimes does
not show the portname. For example, you have to infer the llvm
dependency that is involved. Some of this may be covered by the
dependencies (direct and indirect) from BUILD_DEPENDS,
LIB_DEPENDS, and RUN_DEPENDS.


> Perhaps something
> new has gone wrong....
> 

I expect that you will discover that the www/chromium build
will still run python's in parallel and you will be stuck
with using -j1 style builds to avoid running out of swap,
unless you again detune the system by having a larger swap
partitions total than recommended. (Also true of poudreire
use.) Similarly for other issues.

Remember that once poudriere has established a clean
environment in a builder it runs the same make in that
envronment that you would. poudriere does not control what
that make does. Poudriere's purpose is to manage having
a clean environment present for each builder's make
execution.

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