From owner-freebsd-ports@freebsd.org Sun May 16 01:57:37 2021 Return-Path: Delivered-To: freebsd-ports@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D49C46301C0 for ; Sun, 16 May 2021 01:57:37 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic310-22.consmr.mail.gq1.yahoo.com (sonic310-22.consmr.mail.gq1.yahoo.com [98.137.69.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4FjQPr25QMz3Cn3 for ; Sun, 16 May 2021 01:57:35 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1621130253; bh=7m561GcTUDBDBdqYyXCTJ9yv5SzsD8gKcNHDejb24TR=; h=X-Sonic-MF:Subject:From:Date:To:From:Subject; b=Z2JNq+nWMlKPsm1nzwH0IXdFO/AuFXXXStjCBlDmRFz3ddKa8kL5Lrk+74/746HPTIcL30amupGPLECR4v2ZcHOyIUUzrFXcmBdlEhNEIzFvDbb6pGIgsI+6vUJJ0igIQ7sqobckWObT1U9d3bqptVVNGKb4TBJEhxEMYMJe/tTF/1bZmUoLVr+tAlqIvn/l6yu/eXw6p8vsgtxyFUhtTJvfs2vPbAjpk892m7Eevl81tXYj8jeAOazjYtmmx+XYTfG33Y9vPYJgw6Ph/ra6i5Vdt0RSh2jQz/P3bRzS/Yz0SqTE49kmylWaYWHm+miVQQsVqHZpgdfLrSL5Dzrn0w== X-YMail-OSG: A9Zbb2AVM1nPsTIuiFaLUNp9sglSM26fEAT2tMtRoF1PyWXv.cSQqtV0Ofn9Ou3 l3Xb4iSbJcSRtD_ZoiRRg4ljnA2.3TYP_T5CNWYnmUPzHtJvYgNWWJq3YHECNaHCWdj1U3JtjsvF MGWEBFEEiY_eTrPM2mgC0x4XtFcDEUntNpX8tRpzrKoU2KaIo92wN5nQu1tn4LZ3N6lLd1CffSRN LJ088oEJfDM5JDIgQn9BbJViTlPrQjjcx1wTrU8_Q2MC_pX6YSP79C2Q9fttg8Ym9ufJiCrZqW48 fwTwbJSMuX93U9Tj4ke0tlbOx8vJ0WBI0vdVeUyvC2mb1GARUSmDej6yjJqPvz2Rx6QaDi3ykABv Z3xvoyGYGMxQ_JWKxhBzuHGEtaF1VQd36W95aXTlPVcEIp4szYfXyw5OaS9qS1I2ra1tzpKWfX2k qgIJ3Aogej_qt1.mYLEb5lDwafTxl3u3PPb4jK3lgs9Vdgf0aou4di_fodlGn9JkW7ydfS.Pq3mi pEaCASHscwcWkJ2xlWFKRYphBzbNwYn97PTa60HI.HjrkxqOSwuhN.Mxwm3vA2OlPuB0ka48CLgH Quz0t5_c.g1Nhdj3Pk5W3FixQq0EDKq9Vo1oVbTAoT6id4ruyn4I_OzcK_Q.ssoGcH7gkLOknUpW Vx89f0SU0C8rGcSMp4c.qE68Q3oXI.yKTcO0MheidJzH2JRLUDhVl8PevT23a5J6GVyNNSd8NSpu IJkGVIjeS.9TqtcsR0CvVtRFBM9k2TCU1MiZkdyfUCbm82EDxFsr0onwfYmhknL_Tp_HuTiAGNSE T.xQmPgRCuimI2hCwjN6o2ZRF0uhQcArh8VPDQGyL5tF.IvH31zICDtfL96jyj89cT3DU7XvIXEg EuzbrXI67qHGAZWOZWlwip7x67T8VB8wrQ1KeIvVeq_rBS4_bV4YAk34WsXi007Z2hM4jDXFJlWq um9ijxc_YzWTdnEm5SP8nUTLXPULdG4ZsuFaWy6qKGc7Pz04H78AOxQa9JpJq3pUP80apAi.DyID LC4ykQHq9mXW0Lqft2T1Zm4lGE0E7rpscDd3eMssQuwO9X5pM9e7ls6PKvOK8rQDDsEMCtyqhqFd w8EjzBoFh3DeXftUFejTeAiY7jiOzs0cBoWoCoYT_e0mlEMOyesI41Rg9eCVtRW1iW.L9rM64pji v6Y255RAWDU0A67Aj0cSF.f0V0PGHDn_CVTYQ.BXlDTXtuL0k6ZH5AUbhngSW5_dEmTCq7QlmpHu dZhao8So1kWnHHPlZBOJl.MW.MsEUM9MXVcYA2ntABwtXFlsLLwKGIgpxN4eZ3RrJShRxtk6dzQe tJUuXyXhxD4325YZrXcspYSOqmgqB0wv.kaanF7V74Fm2N9jlrSp8XkfrrFzHEr676J3.5vhZGxQ 6V0zJe.KwFH.N4XW09OGO08Q6aWyZvIUxisA_XbzWF_Xhwgs7SFcoxxiwgTcMLpKFN_bzLj1wAXe TJn2ZFjnoCH_ExsHqC1wWyqVW84njOP3bJZSskN_bAMhJDtHA7W2rAJDIURGXatTsOt7PY9WSP02 YWh3L4NydP8IqQrdJajP7TJUvpgrnh3YgNL87PmzqgyIww60Ud7d.8hv21WDmYNuyd6I8NmXzDkK zmg15R0cFR9bHAxETCkb5i3XKafEf4CbTT_GC.gKFUf_LNyeoINBmxZfoCpeAjAT4RScy2_gD_NW aXMjGd9qKPAPFxFLADBd50CqGXiIytZProsKPbsL6g_seI71Fw8LVsunWd2x.ESUkc5y_W6hhYOv ctuMn2o5DXrnq3.h9qTeV4nZ7T0U2iv0UrcbYTHNyzqg8RPfEcjqqivKuNKCgHCJhfSiiygx2cAe rIQp6UznuDcwx1aN7Ra44f5ShIMjXxCgLaZqZWKUvksm8f7h4OPuOjaSC6Vgrp__vEGlnaD27f3e c7BkwWVXnVRELTwRwE.1SggBlCb6FO.89yRu6.dhsNZFUL2cyIkO2ge..uUCPMauuVA8fEztk3ku sGf7HVg3ydnDqZL8LyjFZusugZQ.axYF.tPuI5JjESbenJS9VZwXER9Un3_xqtDX4WwrtPsQzcW1 .9Wq3mxrMxVrePT56XiTJaDKjm.SadqMf97sLPbRlCmEKBXrh.7QIHNyz0vIabxl8znl95FAfXuu Pr4N.Z3K5c7gFCV5R3Rg7iMKecfnvh_pRvolrojymNly97.zH8Gt37tVXOGu8dcN8C4Zd5x88da9 P4VIpg5wvpSHG6hf4EUFPGEwWlz4GAm_TDQKpZO9UcuYuxttCd3zJa0ixRLlVx3MV92o_iCwB8IP IHO2W3isTTdxMTIzybOVBMTbDkehFQTQe4YizL.isJf0zXd9Qjo0gavsRkNVL6YDzpC16kbZl5d2 E4niydQzNVP7rJmH5T5fQ.KhU_dALgXVXZB1e8HtqXBGiMN5kEmGqBcy9wJbMdeN5fVLpW8ESByV KcexH9XSp5LrqXKe_pL77lEePLve_eSQJ0gMtQYw60w2IO.Xx25u4pHFbyeADUAwJkvjoINRAcI6 ai64oKfFlY.oRHZokDp8gwlbL1b.MM0iRbNklyvTB9BJ3o9uHN1OZA25gd3JmesQf7Zb7gsYuvAq wN.PryVGTBRjVoQ-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.gq1.yahoo.com with HTTP; Sun, 16 May 2021 01:57:33 +0000 Received: by kubenode570.mail-prod1.omega.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 3d9ad4563afc21ce8237709503885e2d; Sun, 16 May 2021 01:57:32 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.80.0.2.43\)) Subject: Re: Python 37/38 conflict, was Re: Trubles compiling lxqt on RPi4 From: Mark Millard In-Reply-To: <20210515233735.GA58311@www.zefox.net> Date: Sat, 15 May 2021 18:57:31 -0700 Cc: FreeBSD ports Content-Transfer-Encoding: quoted-printable Message-Id: References: <0B407A98-E0D4-461E-BFD8-E02019E96757.ref@yahoo.com> <0B407A98-E0D4-461E-BFD8-E02019E96757@yahoo.com> <20210515233735.GA58311@www.zefox.net> To: bob prohaska X-Mailer: Apple Mail (2.3654.80.0.2.43) X-Rspamd-Queue-Id: 4FjQPr25QMz3Cn3 X-Spamd-Bar: / X-Spamd-Result: default: False [0.49 / 15.00]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; ARC_NA(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[98.137.69.148:from]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; NEURAL_SPAM_SHORT(1.00)[0.998]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; NEURAL_SPAM_MEDIUM(1.00)[0.997]; SPAMHAUS_ZRD(0.00)[98.137.69.148:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[98.137.69.148:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.69.148:from]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-ports] X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2021 01:57:37 -0000 On 2021-May-15, at 16:37, bob prohaska wrote: > 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 : >>=20 >>> 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=20 >>> complexity and overhead, but maybe it's time.=20 >>>=20 >>=20 >> 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.) >>=20 > So far, OOM problems haven't appeared on the 8GB Pi4. If they > do, the problems will be recognizable & the solutions known. >=20 >> 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. >>=20 >=20 > Build time is less a problem than completion. This is a single = machine,=20 > self-hosting for kernel and world. The only installation target for = ports=20 > is itself, at least for now. Good to know. >> Some basic questions will be: >>=20 >> A) ZFS vs. UFS? (There are some configuration setting(s) >> dependent on which.) >>=20 >=20 > 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. Good to know. >=20 >> 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 >=3D 8 >> GiBytes of RAM. I do not try to tune it for small >> memory contexts (small on ZFS's scale). >>=20 >>=20 >> 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.) >>=20 >=20 > I'm a bit confused here. I _think_ the world-context is the kernel > and root directory, all living under / . [I use some of your later notes in making choices here.] poudriere works in its own world in for a builder's jail (no separate kernel involved). Otherwise it would not being making a clean build of the ports (producing packages for later installation). In the form that I use poudriere I use something like the following. I presume here that /usr/src is populated and has the source for the system involved. (I do not remember your describing its status.) First, per "man poudriere-jail" and its description of using "-m method" for method "null", the later poudriere commands are based on already having set up via something like (and picking a path for the system poudriere is to use): # cd /usr/src # make installworld DESTDIR=3D/usr/obj/poudriere-system DB_FROM_SRC=3D1 # make distrib-dirs DESTDIR=3D/usr/obj/poudriere-system DB_FROM_SRC=3D1 # make distribution DESTDIR=3D/usr/obj/poudriere-system DB_FROM_SRC=3D1 Note that this system does not have any tailoring or any pre-installed packages/ports. Having ports installed messes up poudriere's operation: no longer clean. poudriere only uses ports that it has built packages for: it installs such packages in its system, but only as needed for each port builder. (It cleans up between ports.) It does not touch your live system's packages or installed ports during the build. (I'll not list deatils for updating /usr/obj/poudriere-system as the system progresses over time. The above is initial installation. But delete-old and delete-old-libs can be involved. distrib-dirs and distribution are instead of etcupdate or the like.) As for setting up a ports binding and a jail: # poudriere ports -c -m null -M /usr/ports # poudriere jail -c -jmain -m null -M /usr/obj/poudriere-system -S = /usr/src -v 14.0-CURRENT Note: the above picks the name "main" for the poudriere jail and sets up to use /usr/src and is told the context is to be 14.0-CURRENT . Neither of these commands do the build: they instead establish context for doing builds in the future. Note: the cd and 3 "DESTDIR=3D" lines are the kind of activity that I called a "prebuild" of the system that poudriere is to use. (So: poudriere itself is not building or installing a system.) This style avoid having another system build involved, just an install. (I avoid the complications of describing alternatives to this particular style.) > If it's particular to the > port being built please clarify. Not particular to a port, but to a poudriere jail. A poudriere jail does not have your installed packages already installed, for example. (I'll not try to list all the types of potentially dirty/problematical that this allows avoiding.) >> 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.) >>=20 >> You could, of course, just deal with "native" and ignore >> the RPi* aarch64's supporting doing armv7 builds. >>=20 > For now the machine is building ports for itself. I'd guess > that's native.=20 So I'll ignore setting up for targeting armv7 on the RPi4B as well: just aarch64 . >> 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. >>=20 >=20 >=20 >> If you prebuild, there will be questions of what paths >> you want to use to reference the for-poudriere build >> trees. >>=20 > I'm a bit confused here. I _think_ the world-context is the kernel > and root directory, all living under / . That is not a clean environment. For example: already installed packages/ports. Avoiding depending on such is how odd mixes of, for example, python37 and python38 are avoided: the builds never see anything old. Also, the builds do not touch your running systems installations, so build failures leave your system as it was. Installing what poudriere built is a separate step after the whole build's overall status is known. > If it's particular to the > port being built please clarify. Again: Not particular to a port, but to a poudriere jail. > 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". See the earlier note about the 3 make "DESTDIR=3D" lines. >>=20 >> 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.) >>=20 >> I use the same /usr/ports for both aarch64 and armv7, so >> only the one copy. >>=20 >> You might want a different path than /usr/ports if you >> pre-establish the ports tree. >>=20 >>=20 > 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-) The: # poudriere ports -c -m null -M /usr/ports that I listed earlier reuses your /usr/ports without duplicating it. The: # poudriere jail -c -jmain -m null -M /usr/obj/poudriere-system -S = /usr/src -v 14.0-CURRENT that I listed earlier reuses your /usr/src without duplicating it. >> 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. >>=20 > The target is the host running poudriere, in this case=20 > 14.0-CURRENT FreeBSD 14.0-CURRENT #1 main-49c894ddc > It appears to be a simpler case than intended for poudriere. poudriere allows a lot of alternatives, your is just a special, limiting case. But your case is covered. Things appear more complicated because of all the alternatives poudriere allows covering that you happen to not have involved. I'm trying to help isolate the subset that you need to pay attention to. Also it may help in being able to look at poudriere materials and identification of what you can ignore. >> 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. >>=20 >> 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. >>=20 > Just one build for each port, for the system it's built on.=20 poudriere does the builds of the packages, not the installs of the packages it builds. You configure pkg to reference the packages that poudriere builds and then use pkg to do the installs (instead of getting packages from FreeBSD servers). For now I'm ignoring the pkg configuration. I figure getting a poudriere build that completes should come first. Afterwards you can point pkg to use it and then install. >> E) Build as root? As non-root? >>=20 >> 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. >>=20 >=20 > It isn't apparent that root vs non-root build matters, > though in principle the less root activity the better. Simply because I've only used root, you may want to match what I've been doing, avoiding any extra issues that I've not seen. > It looks like changes to the config file would include >=20 > NO_ZFS=3Dyes > FREEBSD_HOST=3Dhttps://download.FreeBSD.org > RESOLV_CONF=3D/etc/resolv.conf As I remember, RESOVE_CONF is in the poudriere.conf.sample already. I suggest duplicating that and just editing in differences/additions. That is part of why I supplied a diff output. It also avoids needing to explain every option in the sample: just "what do you need to tailor" needs some description. > USE_TMPFS=3Dno > NOHANG_TIME=3D28800 > MAX_EXECUTION_TIME_EXTRACT=3D14400 > MAX_EXECUTION_TIME_INSTALL=3D14400 > MAX_EXECUTION_TIME_PACKAGE=3D28800 You may want MAX_EXECUTION_TIME=3D432000 like I showed (or some figure). But things like ALLOW_MAKE_JOBS=3Dyes feedback into how long builds take. Other than reporting what combination I've used, I can not help much with exploring and judging the ALLOW_MAKE_JOBS=3Dyes vs. not tradeoffs (and other such). Setting numbers large and then backing off towards observed elapsed times (with margins) is probably better than failing builds and doing retries from not having set big enough figures. poudriere's defaults are not designed for this class of machine. Every time constraint that I explicitly set it was because I ran into a failure at 1/2 of value I use. But that spans doing builds on cortex-A53 (4 GiByte RAM) and cortex-A7 (2 GiByte RAM), not just cortex-A72 (4 GiByte or 8 GiBYte). I did not try to keep track of figures for each arm machine separately. I list the ports (that I want to have installed eventually) in a file in origin form. For example: # more ~root/origins/main-origins.txt archivers/unzip archivers/zip base/binutils #base/gcc6 benchmarks/bonnie benchmarks/bonnie++ benchmarks/iorate benchmarks/iozone benchmarks/iperf3 benchmarks/randomio benchmarks/stream devel/binutils devel/binutils@aarch64 devel/dwarfdump devel/freebsd-gcc6@aarch64 devel/freebsd-gcc9@aarch64 devel/gdb devel/git@lite devel/llvm11 devel/llvm12 devel/patch ftp/wget lang/gcc10 math/gnuplot-lite net/rsync ports-mgmt/bsdadminscripts2 ports-mgmt/portlint ports-mgmt/portmaster ports-mgmt/poudriere-devel security/sudo sysutils/acpica-tools sysutils/dmidecode sysutils/dtrace-toolkit sysutils/edk2@macchiatobin sysutils/edk2@rpi3 sysutils/edk2@rpi4 sysutils/i2c-tools sysutils/mmc-utils sysutils/py-diffoscope sysutils/rpi-firmware sysutils/smartmontools sysutils/stress sysutils/u-boot-orangepi-plus-2e sysutils/u-boot-pine64 sysutils/u-boot-rock64 sysutils/u-boot-rpi-arm64 sysutils/u-boot-rpi2 sysutils/u-boot-rpi3 sysutils/u-boot-rpi4 sysutils/u-boot-sinovoip-bpi-m3 x11-drivers/xf86-video-scfb x11/lumina x11/xorg-minimal x11/xterm I then reference the file on the poudriere build command: # poudriere bulk -jmain -f ~root/origins/main-origins.txt (Again: that I use an "as root" context is visible. You might want an explicit full path or some such.) poudriere deals with building and using dependencies. It also deals with updated dependencies causing the more overall ports to rebuild. This only does the builds, not installing to your running system at all. I'll note that pkg uses different notation for those lines that have a "@" in them above. An example is that devel/binutils@aarch64 is named aarch64-binutils as far as pkg is concerned. So I have a file listing the pkg notation as well: # more ~root/origins/main-pkgs.txt archivers/unzip archivers/zip benchmarks/bonnie benchmarks/bonnie++ benchmarks/iorate benchmarks/iozone benchmarks/iperf3 benchmarks/randomio benchmarks/stream binutils aarch64-binutils devel/dwarfdump aarch64-gcc6 aarch64-gcc9 gdb git-lite devel/llvm11 devel/llvm12 devel/patch ftp/wget lang/gcc10 math/gnuplot-lite net/rsync ports-mgmt/bsdadminscripts2 ports-mgmt/portlint ports-mgmt/portmaster ports-mgmt/poudriere-devel security/sudo sysutils/acpica-tools sysutils/dmidecode sysutils/dtrace-toolkit edk2-macchiatobin edk2-rpi3 edk2-rpi4 sysutils/i2c-tools sysutils/mmc-utils py38-diffoscope sysutils/rpi-firmware sysutils/smartmontools sysutils/stress sysutils/u-boot-orangepi-plus-2e sysutils/u-boot-pine64 sysutils/u-boot-rock64 sysutils/u-boot-rpi-arm64 sysutils/u-boot-rpi2 sysutils/u-boot-rpi3 sysutils/u-boot-rpi4 sysutils/u-boot-sinovoip-bpi-m3 x11-drivers/xf86-video-scfb x11/lumina x11/xorg-minimal x11/xterm The files that configure pkg to use what poudriere has built are: # ls -Tld /usr/local/etc/pkg/repos/* -rw-r--r-- 1 root wheel 25 Apr 25 20:35:22 2021 = /usr/local/etc/pkg/repos/FreeBSD.conf -rw-r--r-- 1 root wheel 111 Apr 25 20:39:38 2021 = /usr/local/etc/pkg/repos/custom.conf (Again: that I use an "as root" context is visible. Adjust as needed.) Example content for this is as shown: # more /usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD: { enabled: no } # more /usr/local/etc/pkg/repos/custom.conf custom: { url: "file:///usr/local/poudriere/data/packages/main-default", enabled: yes, } With those, something like: # pkg install `cat ~root/origins/main-pkgs.txt` would try installing the packages that had been built. pkg has a -f option but it means "force", not "file": thus the use of cat. With pre-existing ports installed, -f may be required to replace them all with poudriere's builds. The command will install other ports needed at run-time, not just what you explicitly list. The command will not install ports only needed at build time. Given the initial problem that you are starting from, you likely want to do: # pkg delete -a # pkg install `cat ~root/origins/main-pkgs.txt` so that no cruft is left installed, ending up with just what poudriere built. Hopefully the above material helps. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)