On Fri, May 14, 2021 at 07:29:15PM -0700, Mark Millard wrote: > bob prohaska fbsd at www.zefox.net wrote on > Fri May 14 01:35:28 UTC 2021 : > > > Would use of poudriere help with this sort of problem? > > It isn't trivial to configure, but this sort of difficulty > > has been growing ever worse. I didn't want to deal with the > > complexity and overhead, but maybe it's time. > > > > I happen to use ports-mgmt/poudriere-devel and it > avoids such issues but does have build-time tradeoffs > and the like. (I'll note that I presume the sort of > sustem tuning to avoid Out Of Memory kills and I try > to scale to avoid a literal out of swap space > problems.) > So far, OOM problems haven't appeared on the 8GB Pi4. If they do, the problems will be recognizable & the solutions known.
> I'll start with very overall background for port > building because I do not understand your context > or goals. Otherwise my material could end-up > implicitly be picking from the alternatives in > an inappropriate way. Some of this is relevant to > (all?) other forms of port building as well. > Build time is less a problem than completion. This is a single machine, self-hosting for kernel and world. The only installation target for ports is itself, at least for now. > Some basic questions will be: > > A) ZFS vs. UFS? (There are some configuration setting(s) > dependent on which.) > The machine uses UFS, on a 1 TB mechanical hard disk over USB3 Memory is 8GB, plus a like amount of swap. So far, no swap has been used. > I currently have examples of both: I've started > experimenting with ZFS again in some contexts, after > years of not using it. No individual context is using > a mix of both and I use ZFS in contexts with >= 8 > GiBytes of RAM. I do not try to tune it for small > memory contexts (small on ZFS's scale). > > > B) How a builder establishes a world-context to execute in? > For reasons of testing patches and such I build and > install a world into a directory tree and have poudriere > use that tree instead of poudriere installing or even > building its own world in a tree. (And I've never done it > any other way.) > I'm a bit confused here. I _think_ the world-context is the kernel and root directory, all living under / . If it's particular to the port being built please clarify. > I do this with separate world-trees for aarch64 vs. armv7 > on an aarch64 system so I build for armv7 in a faster > context with more RAM and then transfer materials to > the armv7 system for pkg to use for pkg commands. (I've > not set up a server/client context.) > > You could, of course, just deal with "native" and ignore > the RPi* aarch64's supporting doing armv7 builds. > For now the machine is building ports for itself. I'd guess that's native. > I use the same buildworld for updating the running kernel > and world and for installing the world used for poudriere > when the same OS vintage/variation is to be used for both. > > If you prebuild, there will be questions of what paths > you want to use to reference the for-poudriere build > trees. > I'm a bit confused here. I _think_ the world-context is the kernel and root directory, all living under / . If it's particular to the port being built please clarify. At this point there's only one OS, aarch64 -current. It's building the port and will run the finished port Not familiar with the term "prebuild". > > C) How a builder establishes a ports tree? For reasons of > testing patches and such I have a /usr/ports tree of my > own (sometimes under another name) and have poudriere use > that tree instead of making its own. (And I've never done > it any other way.) > > I use the same /usr/ports for both aarch64 and armv7, so > only the one copy. > > You might want a different path than /usr/ports if you > pre-establish the ports tree. > > There is presently a single ports tree, cloned via git, at /usr/ports. I'd prefer not to duplicate it, for sake of sanity and space, the disk being only 1 TB. Sanity's even scarcer. 8-) > D) What FreeBSD versions to target? I do not happen to > use ports that must track the kernel version in detail > so I can target a releng/13's release/13.?.? and use the > ports for stable/13 as well. In fact, I can generally > get away with using those same ports on main [so: 14], > being explicit about the ABI for the pkg commands. > The target is the host running poudriere, in this case 14.0-CURRENT FreeBSD 14.0-CURRENT #1 main-49c894ddc It appears to be a simpler case than intended for poudriere. > You might use ports to drive displays and such in a way > that leaves you required to track kernel versions more > closely. But if it is only RPi*'s, then may be not for > that. But there are other ports around that violate the > clean separation vs. kernel details. > > To some extent this gets into "how many builds to cover > all the systems?". That in turn can influence how the > systems are set up, such as to eliminate some builds > being needed. Your context might be simple, with only > one type of context to cover. > Just one build for each port, for the system it's built on. > > E) Build as root? As non-root? > > I happen to only have done build as root but the > systems are not used for other activities. There > could be ownership/permission issues that I've > not run into. > It isn't apparent that root vs non-root build matters, though in principle the less root activity the better. It looks like changes to the config file would include NO_ZFS=yes FREEBSD_HOST=https://download.FreeBSD.org RESOLV_CONF=/etc/resolv.conf USE_TMPFS=no NOHANG_TIME=28800 MAX_EXECUTION_TIME_EXTRACT=14400 MAX_EXECUTION_TIME_INSTALL=14400 MAX_EXECUTION_TIME_PACKAGE=28800 Thanks for reading this far! bob prohaska _______________________________________________ freebsd-ports@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"