Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Aug 2026 12:05:04 -0700
From:      "Edward Sanford Sutton, III" <mirror176@hotmail.com>
To:        questions@freebsd.org
Subject:   Re: Chromium availability.
Message-ID:  <SA1PR11MB8811826D04B453FC7838A84DE6D32@SA1PR11MB8811.namprd11.prod.outlook.com>
In-Reply-To: <564e15e8-cca9-4c4b-818b-e19319fcedf0@palaceofretention.ca>
References:  <4cc52e97-de21-47e2-baac-275d12aed1b5@palaceofretention.ca> <418ae9091e90abaf0f9ea6dbf70b72f45068000f.camel@telaman.net.au> <ccdb2283-7620-454b-bea7-57282816de7e@palaceofretention.ca> <20260805092829.GA3425@jmk1.org> <564e15e8-cca9-4c4b-818b-e19319fcedf0@palaceofretention.ca>

index | next in thread | previous in thread | raw e-mail

On 8/5/26 06:08, Mark G. wrote:
> On 8/5/26 02:28, Johannes-Maria Kaltenbach wrote:
>> Hello,
>>
>> just for your information:
>>
>> On Tue, Aug 04, 2026 at 07:59:17PM -0700, Mark G. wrote:
>>> On 8/4/26 19:35, David wrote:
>>>> On Tue, 2026-08-04 at 19:31 -0700, Mark G. wrote:
>>>>> On 8/4/26 19:26, David wrote:
>>>>>> On Tue, 2026-08-04 at 18:56 -0700, Mark G. wrote:
>>>>>>> On 8/4/26 18:51, David wrote:
>> ...
>>> I am running 14.4-RELEASE-p8, on another system and see
>>> that chromium is missing from "latest" and "quarterly"
>>> (I am just showing quarterly below, switching to latest
>>> gives the same results):
>>
>> same version here.
>> On 14 I was never able to install chromium; it always ended
>> in a timeout (after 24 hours).
>> Perhaps that's why it isn't in the repository?
>>
>> from the poudriere log:
>>
>> [00:01:08] [01] [00:00:00] Building www/chromium | chromium-148.0.7778.96
>> [00:01:08] [01] [00:00:00] Status   www/chromium | 
>> chromium-148.0.7778.96: check-sanity
>> [00:01:18] [01] [00:00:10] Status   www/chromium | 
>> chromium-148.0.7778.96: pkg-depends
>> [00:01:19] [01] [00:00:11] Status   www/chromium | 
>> chromium-148.0.7778.96: fetch-depends
>> [00:01:19] [01] [00:00:11] Status   www/chromium | 
>> chromium-148.0.7778.96: fetch
>> [00:01:55] [01] [00:00:47] Status   www/chromium | 
>> chromium-148.0.7778.96: checksum
>> [00:02:00] [01] [00:00:52] Status   www/chromium | 
>> chromium-148.0.7778.96: extract-depends
>> [00:02:00] [01] [00:00:52] Status   www/chromium | 
>> chromium-148.0.7778.96: extract
>> [00:03:00] [01] [00:01:52] Status   www/chromium | 
>> chromium-148.0.7778.96: patch-depends
>> [00:03:01] [01] [00:01:53] Status   www/chromium | 
>> chromium-148.0.7778.96: patch
>> [00:03:03] [01] [00:01:55] Status   www/chromium | 
>> chromium-148.0.7778.96: build-depends
>> [00:06:12] [01] [00:05:04] Status   www/chromium | 
>> chromium-148.0.7778.96: lib-depends
>> [00:06:53] [01] [00:05:45] Status   www/chromium | 
>> chromium-148.0.7778.96: configure
>> [00:07:27] [01] [00:06:19] Status   www/chromium | 
>> chromium-148.0.7778.96: build
>> [1D:00:07:42] [01] [1D:00:06:34] Status   www/chromium | 
>> chromium-148.0.7778.96: timeout
>> [1D:00:44:46] [01] [1D:00:43:38] Finished www/chromium | 
>> chromium-148.0.7778.96: Failed: build/timeout
>>
>>
>> I don't depend on chromium, so I ignored it.
>> Is there a built-in timeout in poudriere?
>>
> 
> 
> There are indeed a couple of knobs that need setting in:
> 
> /usr/local/etc/poudriere.conf
> 
> In no particular order (I had some file limit fails, so bumped this up):
> 
> # How many file descriptors to limit each jail process to (default: 1024)
> # This can also be set per PKGBASE, such as MAX_FILES_RStudio=2048.
> # Package names with hyphens (-) should be replaced with underscores (_).
> MAX_FILES=4096
> 
> 
> The one you're looking for (I set to 10 days, and chromium finishes):
> 
> # 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=864000
> 
> 
> I also lowered PARALLEL_JOBS from the max (32 in my case) to less,
> so I would have CPUs available for other things than the builder.
> 
> # parallel build support.
> #
> # By default poudriere uses hw.ncpu to determine the number of builders.
> # You can override this default by changing PARALLEL_JOBS here, or
> # by specifying the -J flag to bulk/testport.
> #
> # Example to define PARALLEL_JOBS to one single job
> PARALLEL_JOBS=28
> 
> 
> I also disabled the use of TMPFS (and some failures stopped):
> 
> # Use tmpfs(5)
> # This can be a space-separated list of options:
> # wrkdir    - Use tmpfs(5) for port building WRKDIRPREFIX
> # data      - Use tmpfs(5) for poudriere cache/temp build data
> # localbase - Use tmpfs(5) for LOCALBASE (installing ports for 
> packaging/testing)
> # all       - Run the entire build in memory, including builder jails.
> # yes       - Enables tmpfs(5) for wrkdir and data
> # no        - Disable use of tmpfs(5)
> # EXAMPLE: USE_TMPFS="wrkdir data"
> 
> # Disable 20240916 see if build problems go away
> USE_TMPFS=no

   Consider adjusting USE_TMPFS if your builds don't fit in memory. 
Going to swap slows down the build but it may still be faster than doing 
filesystem partially or fully on disk. Reducing PARALLEL_JOBS also helps 
as multiple ports being built = multiple extracted directories which 
adds up to using RAM faster than some people will expect.
   Once you have decreased PARALLEL_JOBS, you have decreased how many 
work directories are simultaneously extracted which with TMPFS can have 
a very large impact on the needed RAM as you get into larger builds. I 
find mathematical factors of the CPU count and set PARALLEL_JOBS to one 
of them and /usr/local/etc/poudriere.d/make.conf:MAKE_JOBS to the other 
to try to create an approximate limit of how many cores are used to 
equal those available. I will decrease it for better system 
responsiveness and increase it to try to guarantee full core saturation. 
I usually favor fewer PARALLEL and more MAKE + keep TMPFS set to get a 
more efficient run; seeing that rust requires >32GB of RAM and I only 
have 32GB I should make exceptions but for now I just let it force some 
swap for a bit which is still nothing like the havoc that occurs with 
swap from running Firefox for a while. Fewer PARALLEL_JOBS + more 
MAKE_JOBS means each port will finish faster and in the case of 
something like chromium it takes a very long time on modern processors 
when you give it the default of MAKE_JOBS=1 since you run only one, 
generally single threaded, command at a time. Unless all other 
PARALLEL_JOBS were active throughout the time you were building 
Chromium, you likely just increased package building throughput.
   Some ports do not properly respect MAKE_JOBS and will exceed the 
number, usually going up to a value of MAKE_JOBS*MAKE_JOBS. The problem 
seems to be a result of mixing build systems and having the outer build 
system + inner build system both launch MAKE_JOBS number of processes. 
The reverse is also going to happen as there are times where a port does 
not have as many tasks that can be worked on as MAKE_JOBS is set to and 
I assume there are still a few that consider multiple jobs as unsafe 
(which poudriere doesn't account for).
   Once you apply MAKE_JOBS, you can likely significantly reduce 
per-build timeouts. Applying the PARALLEL_JOBS+MAKE_JOBS adjustment to 
the official build servers would likely help if nothing else has changed 
as I thought I recall seeing amd64 reach at least 98% of swap space use 
reported during a build.
   Repeat runs that failed may complete the next time if there are less 
parallel jobs competing for resources and if you use ccache then the 
previously compiled results will be read much faster so without 
adjusting the timeout it will get much further along if it doesn't 
complete. Ports are normally extracted to a version dependent path so 
upgrades of the port's upstream version number will often invalidate 
ccache results on that next run. I'd assume ccache settings should be 
altered to disregard the path of input files as long as debug is off and 
won't have any symbols packaged as subpackages (whenever that becomes a 
thing).

   For a change that port maintainers are directly responsible for, the 
workspaces are further unnecessarily bloated by most ports extracting 
everything from their downloads when some things can be filtered out. 
When we use other ports instead of bundled copies of dependencies then 
the bundled copies don't need to be extracted. Conditional extract 
excludes like skipping NLS language files when NLS is off saves a little 
bit. Some ports extract some unused files like windows and macos 
specific files we don't touch in the build process and text documents 
that aren't installed nor used in the build.
   A few port maintainers have recognized this and added `rm` steps 
sometime after extract and before install (where it happens varies port 
to port) but that means we still get wasted I/O, wasted storage space, 
and for filesystems like ZFS we get further flagmentation to how data is 
laid out and accessed. a more appropriate solution is something like 
(adjusted to target directories/files relevant to the port):

#EXTRACT_AFTER_ARGS+=	--exclude ${WRKSRC}/*.ods --exclude '*.pdf'\
		--exclude '*.doc' --exclude '*.xls*' --exclude '*.xcf'\
		--exclude '*.blend' --exclude '*.blend1'\
		--exclude '*.yml' --exclude '*.vcproj'
NLS_VARS_OFF=           EXTRACT_AFTER_ARGS+="--exclude *.po --exclude *.gmo"

but we also need the following to avoid overwriting default extract args 
that will not be set if we define EXTRACT_AFTER_ARGS:

EXTRACT_AFTER_ARGS+="--no-same-owner --no-same-permissions"

   I seem to recall exclude syntax was not working as documented; think 
it was not working with paths but maybe it was path+wildcard or path 
without filename that was not working as I expected. If implementing, 
you should test that it really did what you expected.
   I think the default should go into an always-appended variable of its 
own so it can be directly overridden if needed but will be otherwise be 
included by default and not require the port maintainers each re-include 
those values since those defaults seemed to be an advised security 
adjustment.
   The ports framework can be designed to apply things like NLS defined 
excludes once NLS becomes involved but should be easy to override if any 
conflicts are found.
   It would be good if there was a general EXTRACT_EXCLUDES syntax that 
maintainers could use which could take a list of directories, files, 
wildcard expressions and build the proper syntax of exclude commands to 
auto-append to the extractor.
   Its been a while since I last tested it but I previously found some 
extract steps were slowed down by adding excludes; I would consider that 
a bug that should be addressed separately rather than working around it 
with an extract+delete.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?SA1PR11MB8811826D04B453FC7838A84DE6D32>