Warning: there may be occasional oddness due to css and blog edits. **KNOWN ISSUE: possible hidden text**

Saturday, February 15, 2025

Remote poudriere build

What I had forgot to include in a previous blog post was how I managed to successfully setup poudriere on atlas for use with remote package serving to ichigo.  I initially followed a Vermaden blog post Simple FreeBSD poudriere harvester guide which helped me get the majority of the setup configured, adjusted.  I attempted to leave a comment on the blog post but for whatever reason it failed, so I am going to provide that here as well.  The process is not difficult but there is at least one detail left out which could be discernable to some but it took a little for me to discover.

Vermaden does a very good job for the community to provide insights and guides and is part why I chose to write my own blog as well, beginning years ago.  It became obvious to me that writing about my experiences on FreeBSD would help me to remember and help others to find their way more easily.  I would recommend to any FreeBSD user to do the same for at least the same or similar reasons, it may seem a no-brainer.

The essentials of Vermaden's blog which I needed were as follows:

Adjust the rc.conf (or rc.conf.local) file to include:

  sshd_enable=YES
  nginx_enable=YES

Those lines will permit a web browser such as firefox to view the progress and results of the current poudriere bulk build, and permit ssh including access to X windows applications via ssh -X and sftp for any LAN file transfer needs.

Add needed packages:
  poudriere
  nginx
  git-lite

Although when I read the blog post I believe I already had those installed and some other things he mentions.

The most important step that I needed was for the pkg signing which is a series of steps, each command as root:

# mkdir -p   /usr/local/etc/ssl/keys /usr/local/etc/ssl/certs /usr/ports/distfiles
# chmod 0600 /usr/local/etc/ssl/keys
# openssl genrsa -out /usr/local/etc/ssl/keys/poudriere.key 4096
# openssl rsa -in /usr/local/etc/ssl/keys/poudriere.key -pubout -out /usr/local/etc/ssl/certs/poudriere.cert

I wasn't sure that mkdir would create multiple paths in one command, and I already had /usr/ports/distfiles, so I did them individually but testing a moment ago I now know I could have just copied that line entirely.  Those steps above are perfect for the poudriere build machine but a detail that is essential here which can be done now or anytime before trying to use the signed pkgs, is to copy the /usr/local/etc/ssl/certs/poudriere.cert to the client box(es).  This is one thing that is missing and tripped me up, surely it is assumed and obvious but not to me right then.

Since I already had poudriere running previously for use on the same machine, a poudriere.conf already existed.  I edited the file to be sure to add and revise as needed the lines he provided:

  ZPOOL=zroot
  BASEFS=/usr/local/poudriere
  ZROOTFS=/dev/null
 #FREEBSD_HOST=ftp://ftp.freebsd.org
  POUDRIERE_DATA=/usr/local/poudriere/data
  CHECK_CHANGED_OPTIONS=verbose
  CHECK_CHANGED_DEPS=yes
  PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key
  URL_BASE=http://172.16.0.12
  USE_TMPFS=all
  TMPFS_LIMIT=5
  MAX_MEMORY=4
  MAX_FILES=2048
  DISTFILES_CACHE=/usr/ports/distfiles
  KEEP_OLD_PACKAGES=yes
  KEEP_OLD_PACKAGES_COUNT=2
  CHECK_CHANGED_OPTIONS=verbose
  CHECK_CHANGED_DEPS=yes
  CCACHE_DIR=/var/cache/ccache
  RESTRICT_NETWORKING=yes
  

Since I use the same ports tree for the poudriere machine and also for poudriere, I did not create a seperate ports tree for it.  I also have the /etc/makeconf symbolic linked to /usr/local/etc/poudriere.d/make.conf because I want local things built to match what poudriere builds.  This way hopefully there is no difference but automation.

I setup nginx as described in Vermaden's blog post, possibly from a previous nginx poudriere progress view attempt, only needed to check it was accurate.  I have also had ccache setup for ages as well, so did not need to look at that much either.

One of the last steps in this whole process is to define the repos.  I had already setup poudriere.conf in /usr/local/etc/pkg/repos for the build machine to use the pkgs it makes, but I revised it to use the signature, the two lines were added.

poudriere: {
        url      : file:///usr/local/poudriere/data/packages/14amd64-default,
        signature_type: "pubkey",
        pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
        enabled  : yes,
        priority : 10
}

On the client machine, I needed a new pkg repo configuration file.

atlas: {
  url: "http://172.16.0.12/packages/14amd64-default",
  signature_type: "pubkey",
  pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
  enabled: yes,
  priority: 100
}

Since when I originally followed the instructions I missed placing a cert file on my client machine, this setup failed inexplicably.  I used pkg -v -v update -f to try to figure it out.  The results did not clearly say that I had no cert or that that was the issue, because something else was interfering.  I had pf setup on the poudriere build machine, and this halted the client from requesting anything, it literally silently failed, no explanation.  I probably had it in the back of my mind that pf could be the reason, so I eventually tried service pf stop and tried again, this time it was able to update the meta file and others.  Now was when it took a bit to figure out that I needed to copy the cert file to the client.  Once everything was in place, all I needed to remember was to periodically disable pf as needed.  I knew I could permanently cut a hole in pf for the pkg update or install requests but that was something for another time.

Tuesday, February 11, 2025

Remote LAN work

A new PC makes the old one a file server and sometimes build server.  Previously I had setup poudriere so I could periodically update the ports via pkg on my box with my own desired options.  I also have been keeping a number of unofficial ports updated as well, most notably, luanti (formerly minetest) which I described in an old blog post and revisit periodically it seems.  My plan is to continue to build on the same machine and use it to update ports on that box as well as on my new pc.  I also decided I wanted to figure out how to build my custom unofficial ports for pkgs to install on the new pc.  It turns out that there was a thread of documentation to find which eventually got me to the destination.

Firstly, I put both boxes onto the same LAN which is an obvious step, except that my new PC has an indirectly supported ethernet device on the motherboard.  I sidestepped this issue after temporarily solving it during a test install on an SSD.  The realtek 2.5GB ethernet card requires a driver from ports and an rc.conf adjustment to override the normally included re driver.  There was a little too long of a moment when everything should have worked but did not, an ethernet cable with a broken clip had fallen out of the switch.  With both machines on the same network and functioning, I could setup some things to make my transfer to the new box easier.

Since I have both machines accessible to each other it is a simple matter of setting up ssh so that I can sftp or ssh -X and use X server applications from the old box.  ssh is easy to setup, and with ssh you get the ability to use a secure ftp (sftp) the exact same way as the original deprecated ftp.  At this point the new box was barely configured and had a lot of what I needed for my GUI but my customizations for FVWM were not yet present.  There are other configuration files I transferred over using sftp, such as rc.conf.local and loader.conf.local which I believe I may have named rc.conf and loader.conf on the new box after I moved them.  With things mostly usable and shortly after a number of applications installed on the new box, some days later I finally got motivated to get poudriere setup.

The setup for poudriere to handle building and for pkg to access the files it builds took a little too long to figure out, even though its not particularly complicated.  The later step to handle the default ports tree and my custom local ports tree all in one step took a very close read of documentation to solve.  The basic idea is to use an overlay which is a relatively new addition to ports functionality.  Poudriere supports overlays but I was unable to figure it out with the anecdotal documentation I found.

First, after reading some forum posts and obviously missing some detail I went to the manpages and fell upon a couple details:

FreeBSD	13.2			August 9, 2024		     POUDRIERE-BULK(8)
(excerpt)
       -n	Dry run.  Show what would be done, but do not  actually	 build
		or delete any packages.

       -O overlay
		Specify	an extra poudriere-ports(8) tree to use	as an overlay.
		Multiple -O overlay arguments may be specified to stack	them.

       -p tree	Specify	 on  which  ports  tree	 the  bulk build will be done.
		(Default: "default")

FreeBSD	13.2			April 26, 2021		    POUDRIERE-PORTS(8)
(excerpt)
EXAMPLES
       Creates a new checkout from Git called default from FreeBSD's  official
       ports tree branch main.

	 # poudriere ports -c
       Creates	a  new checkout	from Git called	quarterly from FreeBSD's offi-
       cial ports tree branch 2021Q1.

	 # poudriere ports -c -p quarterly -B 2021Q1
       Updates ports tree named	quarterly.

	 # poudriere ports -u -p quarterly
       Import a	local manually-managed ports tree named	local from /usr/ports.

	 # poudriere ports -c -p local -m null -M /usr/ports

After reading this I now better understood what the command that was in the forum post was about:

With overlays:
Code:

# poudriere bulk accessibility/sct www/firefox tools/tool1 -p default -O privateportstree

The part -p default is essentially automatic as a default itself, so I can ignore it, the other part, -O privateportstree is important, but there needs to be additional setup to use this.  Since my alternative ports tree is incomplete but already existing, I used the command from the examples with adjustments:

  poudriere ports -c -p local -m null -M /usr/local/ports

I did that after I copied all of the contents of my /home/tigersharke/Ported_software directory into the newly created ports directory in the path /usr/local and to help me if I forget, I also created a symbolic link in my user directory to this named Local_ports.

Now I can use a similar command as in the past, to build all ports I wish with my unofficial ones included:

  poudriere bulk -O local -j 14amd64 -f `p-keg-deblack installed-pkgs-gross`

I had to make some adjustments to my blacklist because I was assuming I would not be able to do this combined build and maybe only might use poudriere on specific unofficial ports.  I have been working on getting pkgs updated and installed onto my new ichigo box which get built on the former ichigo now called atlas.  A number of adjustments to my make.conf and blacklist files were necessary, as well as avoiding some non-vital options in some ports which presently cause them to fail building.  While all this is going on, my repeated builds and adjustments, I am editing this blog post using bluefish which I am running via ssh -X from atlas to appear on my monitor which shows me the new ichigo desktop.  A lot of remote lan work including poudriere, ssh edits and an X app appearing from a different machine.  It is amazing what can be done and much of this technology is not brand new, poudriere is the most recent of the bunch actually.

Wednesday, January 22, 2025

Gentoo does its way

Since I have been trying Gentoo, I have learned that it is definitely a bit more tedious and detailed to accomplish many things as compared to FreeBSD.  There isn't much automation in a default install and at the moment I am not sure what automation could be added.  Gentoo just does things differently, and you may need a crib sheet to know what to use or how to do something, until it becomes second nature.  It can be learned but there may be many bumps or hiccups along the way, correcting misunderstood methods and finally getting success.

For FreeBSD there is a bootable image which guides you through the entire process from preparing the storage medium (hard drives) all the way to installing and configuring the base system, and adding users.  A reboot into a fresh install drops you to a shell login prompt and then you need to setup your GUI.  Some flavors of FreeBSD such as long defunct PC-BSD and present Ghost BSD will finish by installing your desired GUI or a default GUI.  There is also sysutils/desktop-installer in ports which can be very helpful to automate a number of GUI installations.

If you have to setup a FreeBSD desktop, you can use a desktop installer and choose one of those it supports, or you can work from the basic level.  When you install a GUI for FreeBSD, you first need to get X windows with its assorted support mechanisms (including xterm), and then you choose a GUI like FVWM and maybe a login session manager such as SLiM.  After that is accomplished, you can continue to use pkg or the FreeBSD ports system to install further software.  The hierarchy of the ports system allows for easy discovery of software one may wish to add to their system.  There is plenty of associated documentation that is available online or installed, even as part of the base system, so that many questions can be answered easily.  One can fairly quickly and simply get a FreeBSD system up and running as desired with all the software of interest assuming it is already in ports or a pkg exists.

Gentoo does have documentation, it does have a handbook and wiki and forums.  What it does not seem to have, at least from a default basic install is automation or scripting all set-up to be used.  There is no poudriere, there is no ports tree with its hierarchy and predefined make files that easily facilitate the process.  Gentoo does have a build system, it does have packages.  Installing a fresh system is a long process, every step and detail the user must type and carry out.  There is great flexibility in this but some things may take using or trying to know if those are the best choices to make, the best configuration to use.  There are things that act like helpers, which complete tasks in a similar fashion as sysrc on FreeBSD can set variables for rc.conf, but aside from those it is a long journey with small step after small step process.  Gentoo has its niche, it has its advocates and fans, and it may aid me with porting things to FreeBSD, but if compared to Ubuntu, or as FreeBSD -release compared to -current, it is just a bit more difficult to handle and possibly not really for the novice.

This has though been the most time I have spent trying to use and understand any specific Linux distro and I believe the experience has been useful.  I am certainly not going to erase the long fought work of getting a usable Gentoo in Virtualbox, but instead move it to a faster machine to learn more.  My preference is to use FreeBSD, I have been using it sporadically since before 2000 as v2.2.6 and almost constantly since about 2008 beginning with PC-BSD 8.x which I eventually abandoned (due mostly to my tinkering) for FreeBSD 9.x and FreeBSD stable-9.  I eventually decided to work on porting things to FreeBSD in an unofficial capacity, which is where understanding Linux will be useful.  Gentoo in a virtual box might help me with that.

Wednesday, January 15, 2025

Involved with Gentoo

Since I have been stymied in my attempts to get gaming going on FreeBSD for myself, I decided to attempt another tactic.  After some effort I was able to get VirtualBox installed and setup to function properly, and it took a number of attempts to get the Gentoo iso to startup within it.  I chose Gentoo due to a remembered mention of it being somewhat like FreeBSD, maybe I was remembering something else but I went with Gentoo.  My plan was to see if I could get some stuff to work in the virtual environment which had failed me on FreeBSD.

The Gentoo install is involved.  We may hear complaints from those who try to install FreeBSD or any other BSD as it not being easy or is complicated, or that updating things later is difficult.  I would doubt most of those people have used Gentoo or have gone through all the details necessary to install it.  Luckily for me there is a guy in Kentucky who regularly (annually or so) records a step by step install video for Gentoo. He says that things change from time to time and he likes to keep an updated walkthrough for those who would need it.

I followed his video, pausing and rewatching in order to be sure I got the steps correct as I worked to setup Gentoo in virtualbox.  He tells of some settings that he might not use himself but that others may, and I chose to use some of those.  When it came to setting up the EFI partition and installing the needed files, it did not work.  It took me three iterations through the whole process to this point, restarting from a fresh install each time, to discover what I did wrong.  There was a path or file or directory name that I mistyped each of those previous times.  How I noticed that I made this mistake I am unsure, except that perhaps the emphasis on a third attempt made me look closer.  I made it past this and it felt like I would finally finish.

I was able to reach nearly the last steps when grub is setup for the last reboot.  This is the moment I had difficulty again.  What went wrong I may need to revisit, watching the video again to be sure.  I corrected whatever it was, and succeeded to get grub working, I thought.  Yes it would reboot and grub did function, but the trouble now was that when I went through the second video to install a GUI, I had made some mistakes with SLiM and FVWM3.  How I was trying to execute slim and direct it to start fvwm3 was inaccurate.  I solved this mistake but then discovered that due to the entire Gentoo install being rather bare bones, I was again stopped because although fvwm did load up, I had no way that I knew how to continue.

I had to install xterm, and I tried to solve a script issue that uses python.  Gentoo has a lot of things compile on your system with the emerge commands.  Getting most of what I needed built (and installed) took nearly a day to complete.  I still did it, using FreeBSD as the host, virtualbox provided with as much ram (22G) as I could and as many processor cores (5) as I was able.  The host was still mostly responsive but Gentoo inside virtualbox worked at a snails pace in comparison.

I hoped that if I could install Lutris, and get that to function, I would learn what I am missing with my unofficial port of it, the same for any other port like the ryzom client, or wine functionality, or steam.  Each install took forever which somewhat dampened my expectations, and then when I believed I had done everything for Lutris and the ryzom client to function, there were still unsatisfied dependencies or misconfigured things.  My hopeful panacea for Gentoo in virtualbox to help me solve problems became barely different than attempting directly from FreeBSD.

I still have a lot to learn about how to install a linux thing for Gentoo and how to find and discover dependencies, and where to look for documentation, and which documentation might be most accurate.  I have not yet abandoned it as both a challenge to learn more about and as a possible route to discovering how to make things function properly on FreeBSD.  The amount of non-automated detail that goes into doing things on Gentoo is mostly okay, I do tedious tasks on FreeBSD also, but a little more automation and speed would definitely not hurt, especially speed.  Waiting a day to verify success, to try something is a bit depressing.

I recently bought and assembled a new pc, about a month after I had my virtualbox experience above.  One massively beefier than my present Phenom IIx6, it is a Ryzen 3 and ram jumps from 32 gigabytes up to 128.  When I transfer the virtualbox machine to the new hardware (I have very little intent to go through THAT process again), perhaps the build and install process with emerge will not be so onerous.  Maybe at some future date I can write about how my understanding of Gentoo helped me succeed with something like dbeaver or lutris.

Thursday, December 5, 2024

Custom kernel 11 stays

I recently looked over my custom kernel configuration file prior to updating kernel and world on Dec 5th 2024.  I compared the kernconf I revised to GENERIC to see whether anything was new or changed.  I noticed a bunch of extra space that I had included which I forget why, except that it was to match an older GENERIC or an prior kernconf.  There were a few things missing which were present in GENERIC and I added those, using the same nomenclature as I had before.

I noticed that I was including a pile of compatibility shims for older versions of FreeBSD.  I decided to revise this to exclude all but the last version, just in case.  I had a comment in the file at the end which mentions an issue with building certain ports.  Since the newer 14-stable was what I was building, I pared them down to just the 13, and I still hope to use 32bit wine, so I made sure to keep the i386 compatibility.  My method (nomenclature) is to copy the GENERIC kernconf as a custom kernconf, keep used options in my custom kernconf but commented, and unused options prefixed with no.  I described creating a customized kernel in another blog post.

#options    COMPAT_FREEBSD32    # Compatible with i386 binaries
nooptions   COMPAT_FREEBSD4     # Compatible with FreeBSD4
nooptions   COMPAT_FREEBSD5     # Compatible with FreeBSD5
nooptions   COMPAT_FREEBSD6     # Compatible with FreeBSD6
nooptions   COMPAT_FREEBSD7     # Compatible with FreeBSD7
nooptions   COMPAT_FREEBSD9     # Compatible with FreeBSD9
nooptions   COMPAT_FREEBSD10    # Compatible with FreeBSD10
nooptions   COMPAT_FREEBSD11    # Compatible with FreeBSD11
nooptions   COMPAT_FREEBSD12    # Compatible with FreeBSD12
#options   COMPAT_FREEBSD13    # Compatible with FreeBSD13

Building world and kernel went fine.  No issues, the etcupdate was silent, and I rebooted into the updated kernel and world without issue.  I started up FVWM and noticed it felt faster already.  I cannot say exactly why it felt faster, I believe it was mostly my imagination.  Once I had my GUI of choice up, next is to return to my usual programs, firefox in particular.  I used my configured gui option to startup firefox but in never appeared after multiple attempts.  At this moment I believe firefox was present but would not start for an unknown reason.  Without keeping any notes on the output I am sure I saw when I tried to start firefox from an xterm, I chose to reinstall firefox.  It wasn't present in my local poudriere repository, so I guess it failed to build the last time, was removed due to some other update and the firefox rebuild failed as well.  When I got set to rebuild firefox outside of poudriere, just in the ports tree, I discovered my mistake.

root@ichigo:/usr/home/tigersharke # cd /usr/ports/www/firefox
root@ichigo:/usr/ports/www/firefox # make reinstall
===>  Deinstalling for firefox
===>   firefox not installed, skipping
===>   firefox-133.0_2,2 depends on package: nspr>=4.32 - found
===>   firefox-133.0_2,2 depends on package: nss>=3.106 - found
===>   firefox-133.0_2,2 depends on package: icu>=73.1 - found
===>   firefox-133.0_2,2 depends on package: libevent>=2.1.8 - found
===>   firefox-133.0_2,2 depends on package: harfbuzz>=10.0.1 - found
===>   firefox-133.0_2,2 depends on package: graphite2>=1.3.14 - found
===>   firefox-133.0_2,2 depends on package: png>=1.6.44 - found
===>   firefox-133.0_2,2 depends on package: dav1d>=1.0.0 - found
===>   firefox-133.0_2,2 depends on package: libvpx>=1.14.1 - found
===>   firefox-133.0_2,2 depends on package: py311-sqlite3>0 - found
===>   firefox-133.0_2,2 depends on package: v4l_compat>0 - found
===>   firefox-133.0_2,2 depends on executable: autoconf2.13 - found
===>   firefox-133.0_2,2 depends on executable: nasm - found
===>   firefox-133.0_2,2 depends on executable: yasm - found
===>   firefox-133.0_2,2 depends on executable: zip - found
===>   firefox-133.0_2,2 depends on file: /usr/local/share/wasi-sysroot/lib/wasm32-wasi/libc++abi.a - found
===>   firefox-133.0_2,2 depends on file: /usr/local/share/wasi-sysroot/lib/wasm32-wasi/libc.a - found
===>   firefox-133.0_2,2 depends on package: wasi-compiler-rt17>0 - found
===>   firefox-133.0_2,2 depends on package: rust-cbindgen>=0.26.0 - found
===>   firefox-133.0_2,2 depends on package: rust>=1.83.0 - not found
===>  Deinstalling for rust
===>   rust not installed, skipping
===>   rust-1.83.0 depends on file: /usr/local/bin/cmake - found
===>   rust-1.83.0 depends on executable: ninja - found
===>   rust-1.83.0 depends on package: pkgconf>=1.3.0_1 - found
===>   rust-1.83.0 depends on file: /usr/local/bin/python3.11 - found
===>   rust-1.83.0 depends on file: /usr/local/lib/libcrypto.so.12 - found
===>   rust-1.83.0 depends on file: /usr/local/bin/ccache - found
===>   rust-1.83.0 depends on shared library: libcurl.so - found (/usr/local/lib/libcurl.so)
===>  Configuring for rust-1.83.0
Bad system call
=> Sanity check failed: kernel is missing COMPAT_FREEBSD11
=> Aborting build
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/lang/rust
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/lang/rust
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/lang/rust
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/www/firefox
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/www/firefox
*** Error code 1

Stop.
make: stopped in /usr/ports/www/firefox
root@ichigo:/usr/ports/www/firefox #

Glorious, right? My kernel is missing something I should not have removed.  The nooptions COMPAT_FREEBSD11 # Compatible with FreeBSD11 line needs to be restored by switching nooptions to #options which would then not override the GENERIC kernel configuration file.  Since I have not updated /usr/src after building (the faulty) kernel and world, I can simply fix the kernconf file and remake the kernel and reboot.  Another thing I have avoided due to discovering the firefox issue is that normally right after I rebuild my kernel I also rebuild my poudriere to match.  I did not get to that step so I don't double my repair work and waste three times as much time.  Along with fixing my error, I decided that since I have made the transition from FreeBSD 13-stable to 14-stable, I actually no longer need the compatibility to FreeBSD 13.  It is a good idea to keep compatibility with the prior major release initially with your first rebuild after the transition, it may take some time to get all ports rebuilt.

It is somewhat amazing that FreeBSD 14.x still needs to be compatible with FreeBSD 11.  What is preventing the applicable changes to eliminate this issue?  Maybe there needs to be work done on cargo/rust so that we can build them without needing to rely upon a bootstrap from the days of FreeBSD 11.  Luckily this is a hidden pitfall which most vanilla users would never encounter, because the GENERIC kernel providers and the port maintainers both keep firefox and rust easy to install without needing to think about any issues at all.  Even though many users would not be hit by this issue with compatibility with an old FreeBSD version, it remains a less than ideal solution.  How far into the future will we need to keep the compatibility for this solitary purpose?  This is now an additional firefox caveat and a rust caveat that I have added to the distilled notes.

Sunday, November 3, 2024

Bulklist blacklist deblacked

Using poudriere locally can allow you to define the ports you install the way you want them.  My present /etc/make.conf controls some defaults and many configurations, I discuss and reveal the iteration as of August 9th at make.conf in control.  The configurations, if I make rmconfig will revert not to the ports normal defaults but those settings I prefer which I set for some of them within the make.conf file.

Collecting the installed ports is as easy as pkg origin >> /var/tmp/installed-pkgs-gross but my script takes this and complicates it substantially so that my bulk list contains only what I desire regardless of what is actually installed.  It also makes category lists and a list which excludes any installed games.  In the past I have installed nearly every game in ports, aside from those which require a CDROM or some other special thing I may not possess.

There are some specific excludes from the final bulk list files which avoids some versioned ports which are largely build dependencies, or can be more easily updated if bulk lists do not include a versioned port.  You can see below in the organizing section that I avoid intel drivers (I have AMD), llvm, qt5, kf5.  java, anything in the lang category, python specifically, bash, and samba.

#!/bin/sh
echo "Clearing /var/tmp p-keglist files.."; sleep 3
rm /var/tmp/installed-pkgs-gross 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-gross-added 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-gross-sorted 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-ungamed 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-* 2>/dev/null &&echo -n "."
echo;echo "--"; echo


echo "Backing up installed-gross list to /var/tmp"
cp ~/installed-pkgs-gross /var/tmp/installed-pkgs-gross.backup
echo;echo "--"; echo


echo "Gathering list of installed pkgs.."
pkg origin >> /var/tmp/installed-pkgs-gross
echo;echo "--"; echo


echo "Organizing the list.."
cat /var/tmp/installed-pkgs-gross | sort -d | sort -u | \
sed -E 's:^graphics\/gpu-firmware-intel-kmod$::'| \
sed -E 's:^devel\/llvm[0-9]+::'| \
sed -E 's:[a-z,1,\-]+\/qt5-.+::' | \
sed -E 's:[a-z,1,\-]+\/kf5-.+::' | \
sed -E 's:^java\/.+$::' | \
sed -E 's:^lang\/.+$::' | \
sed -E 's:^lang\/python$::' | \
sed \
-e 's:shells\/bash::' \
-e 's:net\/samba[a-z,\-]+[0-9]+::' \
>> /var/tmp/installed-pkgs-gross-added &&echo -n "."
cat /var/tmp/installed-pkgs-gross-added | \
sort -u -d > /var/tmp/installed-pkgs-gross-sorted && echo -n "."
mv /var/tmp/installed-pkgs-gross-sorted /var/tmp/installed-pkgs-gross &&echo -n "."
cp /var/tmp/installed-pkgs-gross ~ &&echo -n "."
echo;echo "--"; echo


echo "Dividing the list.."; sleep 3
category=0

for portorigin in `cat /var/tmp/installed-pkgs-gross`
do
category=`echo $portorigin | cut -d / -f 1`
echo $portorigin >> /var/tmp/installed-pkgs-$category

#echo $category $portorigin
echo $portorigin
if ! [ "$category" = "games" ] ; then
echo $portorigin >> /var/tmp/installed-pkgs-ungamed
fi
done
echo;echo "--"; echo


rm /var/tmp/installed-pkgs-gross-added 2>/dev/null

echo "Finalizing and checking list sizes, one looong moment.." ;sleep 2
for listfile in `ls -1 /var/tmp/installed-pkgs-*`
do
wc -l $listfile |sed -e 's:\/var\/tmp\/::'
done

cp /var/tmp/installed-pkgs-* ~
echo;echo "--"; echo

The blacklist is still rather extensive, it has too many lines still in the file but commented out with a pound symbol (#).  A few of them I have toggled between commented and active, usually rust and firefox and veloren, which tend to be a bit consuming.  I have also changed my mind about libressl and some other ports, those all likely commented right now.  Aside from the lines which are port origins with a # as the first character, I have chosen to include a lot of comments to help document why something is in the file.  It is most certainly good practice to include documentation with any comment mechanism the file format allows, you may not review a file for quite a while after you initially create it.  Frequently the purpose may be lost to time, so add comments at creation so you won't have to remember what you did or why, a good safeguard.

# Doesn't exist
devel/libtar

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  oddness with py39 something issue			#
#_______________________________________________________#
graphics/lensfun


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  these presently fail					#
#_______________________________________________________#
#games/wesnoth
#games/abstreet
#games/opendungeons
#games/jinput
#graphics/ocaml-images
#emulators/wine
#www/py-aiohttp
#devel/opengrok
#games/DDNet
#games/libretro-fbneo
#www/nspluginwrapper
#games/orthorobot


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Try to use version 7 and avoid 6			#
#_______________________________________________________#
graphics/ImageMagick6
graphics/ImageMagick6-nox11


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  use 17 rather than 16 or others.			#
#_______________________________________________________#
www/node16


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  These do not exist in ports				#
#_______________________________________________________#
#sysutils/pcbsd-libsh
#x11-fonts/font-bitstream-speedo
#x11-fonts/fontconfig-reference
#x11-wm/fvwm-crystal
net/libmms


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Expired/Deprecated/Unsupported upstream		#
#_______________________________________________________#
multimedia/schroedinger


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Except when using testport Build outside poudriere	#
# minetest fork of irrlicht does not conflict		#
#_______________________________________________________#
databases/dbeaver-dev
deskutils/flameshot-dev
devel/distcc-dev
games/eternallands-data
games/eternallands-dev
games/godot-dev
games/lutris-freebsd
games/minetest-dev
games/minetestmapper-dev
#games/ryzomcore
graphics/feh-dev
graphics/libthorvg
x11-toolkits/irrlicht-minetest
x11-wm/fvwm3-dev


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Build without poudriere: tigersharke/Ported_Software #
#_______________________________________________________#
audio/easytag
databases/dbeaver
deskutils/flameshot
games/el
games/el-data
games/eternallands-data
games/godot
games/lutris
games/minetest
games/minetestmapper
games/minetest_game
graphics/feh
graphics/libthorvg
net/libmms
x11-toolkits/irrlicht
x11-wm/fvwm3


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  avoid bulk build of these silly things		#
# These or others get added by bulk list creation	#
#_______________________________________________________#
games/pink-pony
games/cowsay
games/neo-cowsay
games/xcowsay
games/coffeebreak
games/powdertoy
games/powder-toy
games/powdertoy-devel
games/powder-toy-devel
games/sex
games/weebsay


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  builds but doesn't work				#
#_______________________________________________________#
games/excido


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  toggle these - often cause troubles or take FOREVER	#
#_______________________________________________________#
#games/veloren-weekly
#games/veloren
www/firefox
#lang/rust
lang/rust-nightly
#x11-fonts/iosevka
#lang/rust-bootstrap
#devel/efl
#x11-wm/enlightenment
#devel/rust-cbindgen


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  conflicts in port or its depends			#
#_______________________________________________________#
#java/jmf
#devel/typetools
#games/openarena
#games/slade
#games/golly
#games/gnubik
#games/openmw


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Try to force more current version of llvm 		#
#  Discover what breaks and adjust accordingly.		#
#  first is "default" version, unversioned LLVM		#
#							#
#  Some things require llvm15				#
#_______________________________________________________#
#devel/llvm
#devel/llvm17@default
#
devel/llvm70
devel/llvm80
devel/llvm90
devel/llvm10
devel/llvm11
devel/llvm12
devel/llvm13
devel/llvm14
devel/llvm15
devel/llvm16
#devel/llvm17
#devel/llvm-devel
#devel/ccache


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#							#
# I should make a Ported_Software build for it		#
#_______________________________________________________#
#www/bluefish


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Should be no need for these at all due to git	#
#_______________________________________________________#
devel/subversion
devel/p5-subversion


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  these fail due to ruby default			#
#_______________________________________________________#
#accessibility/rubygem-atk
#archivers/rubygem-rubyzip
#devel/git@tiny
#devel/rubygem-cairo-gobject
#devel/rubygem-gettext
#devel/rubygem-gio2
#devel/rubygem-glib2
#devel/rubygem-gobject-introspection
#devel/rubygem-highline
#devel/rubygem-json_pure
#devel/rubygem-locale
#devel/rubygem-manpages
#devel/rubygem-native-package-installer
#devel/rubygem-optimist
#devel/rubygem-paint
#devel/rubygem-pkg-config
#devel/rubygem-rake
#devel/rubygem-thor
#devel/ruby-sdl
#editors/neovim
#games/freecell-solver
#games/jaggedalliance2
#games/magicmaze
#games/ninix-aya
#games/rubygem-fortune_gem
#games/rubygem-lolcat
#games/rubygem-vimgolf
#graphics/rubygem-cairo
#graphics/rubygem-gdk_pixbuf2
#graphics/rubygem-opengl
#math/rubygem-narray
#multimedia/rubygem-gstreamer
#textproc/rubygem-asciidoctor
#textproc/rubygem-charlock_holmes
#textproc/rubygem-text
#x11-toolkits/rubygem-gdk3
#x11-toolkits/rubygem-gtk3
#x11-toolkits/rubygem-pango


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Openoffice 						#
#_______________________________________________________#
editors/openoffice-4
editors/openoffice-devel
java/bootstrap-openjdk6
math/suitesparse


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# According to vigra comment: 				#
# Using py-NumPY implies Fortran and GCC 4.7+ as hard 	#
# dependencies and require all ports, depending on	#
# vigra, to set USE_GCC=yes				#
#							#
# So lets avoid py-numpy				#
#_______________________________________________________#
#math/py-numpy
graphics/vigra


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Dependent upon py-numpy via math/suitesparse		#
#_______________________________________________________#
#games/freeorion


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  unexplained dependency on openjdk7 which fails build #
#_______________________________________________________#
java/openjdk7
java/bootstrap-openjdk6
#
#math/cgal
#math/suitesparse
#math/eigen3

#devel/apr1
#databases/db5
#textproc/redland
#www/serf


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  mesa-libs conflicts with libglvnd?			#
#_______________________________________________________#
#graphics/libglvnd


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# complicates the issue?				#
#_______________________________________________________#
#graphics/linux-c7-libglvnd


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  avoid colord						#
#_______________________________________________________#
graphics/colord


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  dbus dependent -- GNOME - not a necessary dependency #
#_______________________________________________________#
#devel/dconf


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Until dependencies fixed in official Makefile	#
#  Use home/tigersharke/Ported_Software instead		#
#_______________________________________________________#
sysutils/dunst


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  lets avoid dbus -- it sucks but allowing for now	#
#_______________________________________________________#
#devel/dbus
#devel/dbus-glib


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  dbus dependent so no need for them - subset likely	#
#_______________________________________________________#
#accessibility/at-spi2-atk
# accessibility/at-spi2-core
#net/avahi-app
#net/avahi-libdns
#sysutils/bsdisks
#x11/compton-conf
#sysutils/consolekit2
#devel/dconf
#x11-toolkits/kf5-attica
#devel/kf5-kauth
#devel/kf5-kbookmarks
#x11-toolkits/kf5-kcompletion
#devel/kf5-kconfig
#x11-toolkits/kf5-kconfigwidgets
#devel/kf5-kcrash
#devel/kf5-kdbusaddons
#x11/kf5-kded
#devel/kf5-kdoctools
#x11/kf5-kglobalaccel
#x11-toolkits/kf5-kguiaddons
#devel/kf5-ki18n
#x11-themes/kf5-kiconthemes
#x11-toolkits/kf5-kitemviews
#x11-toolkits/kf5-kjobwidgets
#devel/kf5-kservice
#x11-toolkits/kf5-ktextwidgets
#x11/kf5-kwayland
#x11-toolkits/kf5-kwidgetsaddons
#x11/kf5-kwindowsystem
#x11-toolkits/kf5-kxmlgui
#textproc/kf5-sonnet
#security/libgnome-keyring
#x11/lumina-coreutils
#sysutils/polkit
#sysutils/polkit-qt
#sysutils/polkit-qt-1
#devel/py39-dbus
#devel/py39-qt5-dbussupport
#devel/qt5-dbus
#x11-toolkits/qt5-declarative
#graphics/qt5-graphicaleffects
# x11-toolkits/qt5-gui
#graphics/qt5-imageformats
#multimedia/qt5-multimedia
#graphics/qt5-opengl
#print/qt5-printsupport
#accessibility/qt5-speech
#graphics/qt5-svg
#x11-toolkits/qt5-uiplugin
#devel/qt5-uitools
#graphics/qt5-wayland
#x11-toolkits/qt5-widgets
#x11/qt5-x11extras


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Since qt5-core has no config, and requires dbus as	#
# well as accessibility/at-spi2-core			#
#_______________________________________________________#
#devel/qt5-core


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Dependent upon math/suitesparse			#
#_______________________________________________________#
#devel/boost-python-libs


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# kerberos or heimdal or gssapi stuff not needed	#
#_______________________________________________________#
net-mgmt/nagstamon
net/rubygem-omniauth-kerberos
security/cyrus-sasl2-gssapi
#security/heimdal
security/krb5-appl
security/krb5-devel
security/p5-Authen-Krb5
security/p5-Authen-Krb5-Simple
security/p5-Authen-Simple-Kerberos
security/p5-GSSAPI
security/p5-Heimdal-Kadm5
security/pam_krb5
security/py-flask-kerberos
security/py-gssapi
security/py-kerberos
security/py-pywinrm
security/py-requests-kerberos
security/rubygem-gssapi
www/gitlab-ce
www/mod_auth_gssapi
www/mod_auth_kerb2


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Unmaintained and dead upstream, 			#
#	does not build with -fno-common (llvm 11)	#
#_______________________________________________________#
#games/bomberinstinct
#games/bygfoot
#games/cavezofphear
#games/cosmo
#games/cre
#games/drm


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# used to avoid this as luajit-openresty is preferred	#
# -- conflicts with luajit				#
#_______________________________________________________#
lang/luajit
#lang/luajit-devel
lang/luajit-openresty


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Build outside of ports until luajit-openresty default #
#_______________________________________________________#
#games/catesc
#games/freeminer-default
#games/freeminer
#games/instead
#games/mari0
#games/minerbold
#games/minetest_game
#games/minetest
#games/naev
#games/powder-toy
#games/solarus-quest-editor
#games/solarus
#games/voadi


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Avoid libressl of any variety on desktop, use openSSL	#
# libressl is fine on simpler systems like firewall but	#
# is NOT properly supported by software in general.	#
#_______________________________________________________#
security/libressl
security/libressl-devel
security/libressl*


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# conflicts with libressl-devel				#
#	but maybe avoid anyhow if possible		#
#_______________________________________________________#
#security/gnutls
#security/nettle


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these things require gnupg -- no option visible	#
#_______________________________________________________#
#devel/kf5-kcmutils
#devel/kf5-kdeclarative
#devel/kf5-kio
#devel/kf5-knewstuff
#devel/kf5-knotifyconfig
#devel/kf5-kparts
#devel/libgdata
#games/kanagram
#games/khangman
#mail/gmime30
#misc/libkeduvocdocument
#multimedia/totem-pl-parser
#net/gnome-online-accounts
#security/gcr
#security/gpgme
#security/gpgme-cpp
#security/gpgme-qt5
#sysutils/kf5-kwallet
#x11/kf5-kactivities
#x11/kf5-kinit
x11/kf5-plasma-framework
#x11-toolkits/kf5-kirigami2


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# nettle dependents					#
#_______________________________________________________#
#devel/librest
#devel/libsoup
#devel/qca
#mail/gmime30
#multimedia/totem-pl-parser
#net/geoclue
#net/glib-networking
#net-im/gloox
#net/uhttpmock
#security/gnupg

#security/gnutls

#security/gpgme
#security/gpgme-cpp
#security/gpgme-qt5
#security/libgsasl
#sysutils/password-store
#sysutils/qtpass
#sysutils/tracker
#x11-toolkits/gnome-pty-helper
#x11-toolkits/vte


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these things require nettle -- no option visible	#
#_______________________________________________________#
#audio/audacity
#audio/lollypop
#devel/appstream-glib
#devel/glade
#devel/libgdata
#devel/librest
#devel/libsoup
#games/0ad
#games/atomix
#games/diaspora
#games/four-in-a-row
#games/freedink
#games/freedink-dfarc
#games/gnome-2048
#games/gnome-chess
#games/gnome-nibbles
#games/gnome-robots
#games/gnome-sudoku
#games/golly
#games/hitori
#games/iagno
#games/megaglest
#games/pioneers
#games/quadrapassel
#games/trenchbroom
#games/wxlauncher
#graphics/gimp
#graphics/gimp-app
#graphics/gimp-data-extras
#mail/claws-mail
#mail/claws-mail-gdata
#mail/claws-mail-libravatar
#mail/claws-mail-litehtml_viewer
#mail/claws-mail-mailmbox
#mail/claws-mail-newmail
#mail/claws-mail-notification
#mail/claws-mail-rssyl
##multimedia/totem-pl-parser
#net/glib-networking
#net/gnome-online-accounts
#net-im/gloox
#net/uhttpmock
#print/gimp-gutenprint

#security/gnutls

#www/gtkhtml4
#www/webkit2-gtk3
#x11-fonts/cantarell-fonts
#x11/gnome-desktop
#x11-toolkits/libhandy
#x11-toolkits/wxgtk30
#x11-toolkits/wxgtk31
#x11/yelp


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# git -- avoid other flavors				#
#_______________________________________________________#
devel/git@default
devel/git@gui
devel/git@lite
devel/git@svn
devel/git-default
devel/git-gui
devel/git-lite
devel/git-svn


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# avoid -- also dbus dependents				#
#_______________________________________________________#
#accessibility/at-spi2-atk
#accessibility/at-spi2-core


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# accessibility/at-spi2-atk dependents without config	#
#_______________________________________________________#
#devel/electron11
#editors/vscode
#www/chromium
#x11/cinnamon
#x11/gnome-shell
#x11-toolkits/gtkada3


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# db5 issue 						#
#_______________________________________________________#
#audio/jack


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  obslete and would need makefile changes to fix build	#
#_______________________________________________________#
graphics/osg34


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  osg34 dependent cannot build				#
#_______________________________________________________#


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Rebuild only with updated kernel/world		#
#  and maybe keep pkg locked in between times.		#
#_______________________________________________________#
emulators/virtualbox-ose
emulators/virtualbox-ose-kmod


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  talloc and tevent not needed -- ldap/samba focus	#
#_______________________________________________________#
devel/talloc
devel/tevent


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  samba not needed - depends above denied won't build	#
#_______________________________________________________#
net/samba


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  openblas conflicts with netlib/cblas preferred	#
#_______________________________________________________#
#math/openblas


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  openblas dependent cannot build			#
#_______________________________________________________#
#biology/bolt-lmm
#biology/gcta
#biology/gemma
#biology/plink
#cad/gmsh
#graphics/opencv
#math/adept
#math/ambit
#math/armadillo
#math/blaze
#math/blazeiterative
#math/casadi
#math/ceres-solver
#math/cminpack
#math/coinutils
#math/dbcsr
#math/deal.ii
#math/dune-common
#math/dune-fem
#math/dune-geometry
#math/dune-grid
#math/dune-pdelab
#math/dune-polygongrid
#math/dune-uggrid
#math/dune-vtk
#math/eigen3
#math/elemental
#math/elpa
#math/faiss
#math/fflas-ffpack
#math/flint2
#math/freefem++
#math/g2o
#math/hmat-oss
#math/iml
#math/jags
#math/lapack++
#math/linbox
#math/moab
#math/octave
#math/octave-forge-ltfat
#math/openturns
#math/osi
#math/primme
#math/py-numpy
#math/py-scs
#math/qposases
#math/sage
#math/scalapack
math/scs
#math/suitesparse
#math/sundials
#misc/mxnet
#misc/openmvg
#misc/visp
#science/bagel
#science/berkeleygw
#science/chemps2
#science/chrono
#science/code_saturne
#science/dalton
#science/elk
#science/elmerfem
#science/erkale
#science/gamess-us
#science/iboview
#science/lammps
#science/latte
#science/libcint
#science/mpb
#science/multiwfn
#science/opensim-core
#science/py-gpaw
#science/py-phono3py
#science/py-scipy
#science/qiskit-aer
#science/qmcpack
#science/simbody
#science/xtb

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Avoid all nvidia -- hidden deps			#
#_______________________________________________________#
graphics/nvidia-texture-tools
net-mgmt/nvidia_gpu_prometheus_exporter
x11/linux-nvidia-libs*
#x11/linux-nvidia-libs-304
#x11/linux-nvidia-libs-340
#x11/linux-nvidia-libs-390
x11/nvidia-driver*
#x11/nvidia-driver-304
#x11/nvidia-driveR-340
#X11/nvidia-driver-390
x11/nvidia*
#x11/nvidia-settings
#x11/nvidia-xconfig


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  This one often causes problems, avoid if possible	#
#_______________________________________________________#
x11-drivers/xf86-video-scfb


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  WHY should these ever be built on ICHIGO?		#
#_______________________________________________________#
#graphics/gpu-firmware-intel-kmod
x11/xbacklight


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  fails when fontforge fails				#
#_______________________________________________________#
#x11-fonts/oxygen-fonts


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  deprecated version of python 2.7			#
#_______________________________________________________#
lang/python27


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  python27 dependent cannot build			#
#_______________________________________________________#
devel/py-backports.functools_lru_cache
graphics/gif2png
devel/godot2
lang/cython@py27
devel/py-enum34
devel/py-future@py27
devel/py-game_sdl2@py27
net/py-ipaddress
devel/py-setuptools@py27
x11-toolkits/py-tkinter@py27
devel/scons@py27
net/py-ipaddress
#
devel/electron13
devel/py-setuptools44
dns/py-dnspython1
games/renpy
lang/python2
mail/mailman
mail/mailman-exim4
mail/mailman-postfix
sysutils/uefi-edk2-bhyve-csm
www/moinmoin
www/qt5-webengine


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  license confirmation needed				#
#_______________________________________________________#
games/taipan
games/tyrian-data
games/linux-unigine-valley
games/primateplunge
games/linux-unigine-heaven
games/minecraft-server
games/rawgl
games/steelstorm
games/mtaserver
games/goonies


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  cdrom or mount of cdrom needed			#
#_______________________________________________________#
games/HeroesOfMightAndMagic
games/jaggedalliance2
games/kodi-addon-game.libretro.genplus
games/kodi-addon-game.libretro.pcsx-rearmed
games/kodi-addon-game.libretro.picodrive
games/linux-quake4
games/linux-ssamtse
games/linux-ssamtfe
games/linux-unrealgold
games/linux-ut



#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  i386 only or fails on amd64				#
#_______________________________________________________#
#devel/bennugd-core
games/q3cellshading
games/quake3
games/lmpc
games/doom


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  run depends						#
#_______________________________________________________#
emulators/i386-wine-devel


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  stupid dependencies					#
#_______________________________________________________#
games/valyriatear
games/eboard
games/foobillard
games/xconq


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  stupid nvidia textures dependency			#
#_______________________________________________________#
games/xray_re-tools


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  fetch - config issue (missing file via option)	#
#_______________________________________________________#
games/quake2-extras


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  stage - broken due to missing file			#
#_______________________________________________________#
#games/odamex


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  depends upon broken love				#
#_______________________________________________________#
#games/mari0
#games/gunfudeadlands


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  broken due to sdl12 & opengl includes in source	#
#_______________________________________________________#
devel/love07
devel/love08


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  investigation needed					#
#_______________________________________________________#
#devel/godot2


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  dependencies already blacklisted			#
#_______________________________________________________#


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  metaport fails due to blacklisted component		#
#_______________________________________________________#
#games/gnome-games


The deblack script below, excludes the port origins by filtering through the blacklist which then creates a fresh bulk list which then becomes the file sent to poudriere.  The command you might issue, if the script is named 'p-keg-deblack' would be poudriere bulk -j 14amd64 -f `p-keg-deblack installed-pkgs-gross` and note the part enclosed by the (`) characters which provides the result of the script in its place.

#!/bin/sh
rm ~/$1-deblack 2>/dev/null
rm /var/tmp/cleaned_blacklist 2>/dev/null
rm /var/tmp/list 2>/dev/null
rm /var/tmp/sorted_list 2>/dev/null
cp $1 /var/tmp/list
cat /var/tmp/list | sort -d -u > /var/tmp/sorted_list && rm $1 && cp /var/tmp/sorted_list $1
grep -v \# ~/Symbolic_Links/14amd64-blacklist | sort -d -u > /var/tmp/cleaned_blacklist

diff -B -w $1 /var/tmp/cleaned_blacklist | grep \< |sed  -e 's/^<\ //g' -e 's/---//g' -e '1d' > ~/$1-deblack

echo $1-deblack

When I figure out how I might handle moved or renamed or nonexistent ports, I may revisit the scripts and post an update.  Until then, if any of those conditions exist, poudriere will halt right after providing an error or warning message describing which correction needs to be made.  Be careful about typos in your blacklist file since those can be confusing because you may assume the error is in your bulk list like it would be for the previous reasons.

Try out building your own local ports with the options you prefer that are different than the defaults.  Of course, once more, Essential caveat: Use those scripts at your own risk, I make no promises.  I believe they are safe but test and verify and choose to use them when you're satisfied.

Luanti minetest fallout

It had been mentioned long ago that minetest ought to change its name.  This was considered necessary for the minetest engine to be viewed apart from minetest the minecraft-esque game.  Distancing itself from a very specific type of voxel game would allow for the engine to be used for a greater variety of game development using the engine, much like godot and others.  The change to the name of the executable, and all references to it in most places in the code and supporting files, and the eventual switch to a git repo with its name cause a lot of upheaval.

The new name for the engine is Luanti, is a sensible and meaningful name even if some won't change their thinking of it and may continue to refer to it as minetest.  Many paths once had a minetest directory, many files installed either had minetest in their name or were placed in one of those directories.  What I had to change over a few days and a few upstream commits included the pkg-plist and some lines in the Makefile.  I had to test numerous times, after each change to be sure everything was done accurately.  At present, the upstream git repo is not yet luanti-org/luanti, but it may change in time from what is now minetest/minetest.

The Makefile adjustments below took more time to test than to edit of course because I had to attempt to build and then check what the pkg-plist that was generated looked like.

diff -y -W 200 ./Makefile ../minetest-dev/Makefile | more

# PORTNAME block											# PORTNAME block
PORTNAME=		luanti									   |	PORTNAME=		minetest
DISTVERSION=	g20241102									   |	DISTVERSION=	g20241026
CATEGORIES=		games										CATEGORIES=		games
MASTER_SITES=	GH											MASTER_SITES=	GH
PKGNAMESUFFIX=	-dev											PKGNAMESUFFIX=	-dev
DISTNAME=		${PORTNAME}-${GH_TAGNAME}							DISTNAME=		${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR=	${PORTNAME}${PKGNAMESUFFIX}								DIST_SUBDIR=	${PORTNAME}${PKGNAMESUFFIX}

# Maintainer block											# Maintainer block
MAINTAINER=		nope@nothere									MAINTAINER=		nope@nothere
COMMENT=		Near-infinite-world block sandbox game						COMMENT=		Near-infinite-world block sandbox game
WWW=			https://www.minetest.net/							WWW=			https://www.minetest.net/

# License block												# License block
LICENSE=		LGPL21+										LICENSE=		LGPL21+

# dependencies												# dependencies
LIB_DEPENDS=	libzstd.so:archivers/zstd \								LIB_DEPENDS=	libzstd.so:archivers/zstd \
				libfreetype.so:print/freetype2										libfreetype.so:print/freetype2

# uses block												# uses block
USES=			cmake iconv:wchar_t sqlite ninja:make pkgconfig:build				USES=			cmake iconv:wchar_t sqlite ninja:make pkgconfig:build
USE_GITHUB=		nodefault								   |	USE_GITHUB=     nodefault
GH_ACCOUNT=		minetest #GH_ACCOUNT=		luanti-org				   |	GH_ACCOUNT=     minetest
GH_PROJECT=		minetest #GH_PROJECT=		luanti					   |	GH_PROJECT=     minetest
GH_TAGNAME=		e952a0807b85e089eaa320cfeb09e33816d141ed				   |	GH_TAGNAME=		b7073df68cc9ca89e62a2b97c5fbb23cd1454bdf

# uses=cmake related variables										# uses=cmake related variables
CMAKE_ARGS=		-DCMAKE_BUILD_TYPE="MinSizeRel" \						CMAKE_ARGS=		-DCMAKE_BUILD_TYPE="MinSizeRel" \
				-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \								-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
				-DCMAKE_CXX_FLAGS="-stdlib=libc++"									-DCMAKE_CXX_FLAGS="-stdlib=libc++"
#				-DCMAKE_FETCHCONTENT_FULLY_DISCONNECTED="FALSE"				#				-DCMAKE_FETCHCONTENT_FULLY_DISCONNECTED="FALSE"

# conflicts												# conflicts
CONFLICTS=		minetest irrlichtMt minetest-dev irrlicht-minetest			   |	CONFLICTS=		minetest irrlichtMt irrlicht-minetest

# wrksrc block												# wrksrc block
WRKSRC=			${WRKDIR}/minetest-${GH_TAGNAME} #WRKSRC=			${WRKDIR   |	WRKSRC=			${WRKDIR}/${PORTNAME}-${GH_TAGNAME}

# packaging list block											# packaging list block
#DOCS=		*											#DOCS=		*
#PORTDATA=		*										#PORTDATA=		*

# options definitions											# options definitions
OPTIONS_DEFAULT=			CURL DOCS LTO SOUND SPATIAL SYSTEM_LUAJIT SYSTEM_FONTS S	OPTIONS_DEFAULT=			CURL DOCS LTO SOUND SPATIAL SYSTEM_LUAJIT SYSTEM_FONTS S
OPTIONS_GROUP=				BUILD DATABASE MISC NEEDS SYSTEM				OPTIONS_GROUP=				BUILD DATABASE MISC NEEDS SYSTEM
OPTIONS_GROUP_BUILD=		BENCHMARKS DEVTEST DOCS NCURSES PROFILING PROMETHEUS UNITTESTS #	OPTIONS_GROUP_BUILD=		BENCHMARKS DEVTEST DOCS NCURSES PROFILING PROMETHEUS UNITTESTS #
OPTIONS_GROUP_DATABASE=		LEVELDB PGSQL REDIS							OPTIONS_GROUP_DATABASE=		LEVELDB PGSQL REDIS
OPTIONS_GROUP_MISC=			LTO								OPTIONS_GROUP_MISC=			LTO
OPTIONS_GROUP_NEEDS=		CURL NLS SOUND SPATIAL							OPTIONS_GROUP_NEEDS=		CURL NLS SOUND SPATIAL
OPTIONS_GROUP_SYSTEM=		SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP SYSTEM_LUAJIT			OPTIONS_GROUP_SYSTEM=		SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP SYSTEM_LUAJIT
OPTIONS_MULTI=				SOFTWARE							OPTIONS_MULTI=				SOFTWARE
OPTIONS_MULTI_SOFTWARE=		CLIENT SERVER								OPTIONS_MULTI_SOFTWARE=		CLIENT SERVER
OPTIONS_SINGLE=				GRAPHICS							OPTIONS_SINGLE=				GRAPHICS
OPTIONS_SINGLE_GRAPHICS=	GLES1 GLES2 OPENGL OPENGL3						OPTIONS_SINGLE_GRAPHICS=	GLES1 GLES2 OPENGL OPENGL3
OPTIONS_SUB=				yes								OPTIONS_SUB=				yes

# options descriptions											# options descriptions
BENCHMARKS_DESC=			Build benchmarks (Adds some benchmark chat commands)		BENCHMARKS_DESC=			Build benchmarks (Adds some benchmark chat commands)
BUILD_DESC=					Admin/Dev needs						BUILD_DESC=					Admin/Dev needs
CLIENT_DESC=				Build client, add graphics and sdl2 support, dependencie	CLIENT_DESC=				Build client, add graphics and sdl2 support, dependencie
CURL_DESC=					Enable cURL support for fetching media: contentd	CURL_DESC=					Enable cURL support for fetching media: contentd
DATABASE_DESC=				Database support						DATABASE_DESC=				Database support
DEVTEST_DESC=				Install Development Test game also (INSTALL_DEVTEST)		DEVTEST_DESC=				Install Development Test game also (INSTALL_DEVTEST)
DOCS_DESC=					Build and install documentation (via doxygen)		DOCS_DESC=					Build and install documentation (via doxygen)
#GITTRACY_DESC=				Fetch Tracy git tag --build fails-- --purpose uncertain-	#GITTRACY_DESC=				Fetch Tracy git tag --build fails-- --purpose uncertain-
GLES1_DESC=					Enable OpenGL ES driver, legacy				GLES1_DESC=					Enable OpenGL ES driver, legacy
GLES2_DESC=					Enable OpenGL ES 2+ driver				GLES2_DESC=					Enable OpenGL ES 2+ driver
GRAPHICS_DESC=				Graphics support						GRAPHICS_DESC=				Graphics support
LEVELDB_DESC=				Enable LevelDB backend --broken - build fails--			LEVELDB_DESC=				Enable LevelDB backend --broken - build fails--
LTO_DESC=					Build with IPO/LTO optimizations (smaller and mo	LTO_DESC=					Build with IPO/LTO optimizations (smaller and mo
MISC_DESC=					Other options						MISC_DESC=					Other options
NCURSES_DESC=				Enables server side terminal (cli option: --terminal) (E	NCURSES_DESC=				Enables server side terminal (cli option: --terminal) (E
NEEDS_DESC=					Client essentials					NEEDS_DESC=					Client essentials
NLS_DESC=					Native Language Support (ENABLE_GETTEXT)		NLS_DESC=					Native Language Support (ENABLE_GETTEXT)
OPENGL3_DESC=				Enable OpenGL 3+ driver (likely needs sdl2 built with OP	OPENGL3_DESC=				Enable OpenGL 3+ driver (likely needs sdl2 built with OP
OPENGL_DESC=				Enable OpenGL driver						OPENGL_DESC=				Enable OpenGL driver
PGSQL_DESC=					Enable PostgreSQL map backend				PGSQL_DESC=					Enable PostgreSQL map backend
PROFILING_DESC=				Use gprof for profiling (USE_GPROF)				PROFILING_DESC=				Use gprof for profiling (USE_GPROF)
PROMETHEUS_DESC=			Build with Prometheus metrics exporter				PROMETHEUS_DESC=			Build with Prometheus metrics exporter
REDIS_DESC=					Enable Redis backend					REDIS_DESC=					Enable Redis backend
SERVER_DESC=				Build server							SERVER_DESC=				Build server
SOFTWARE_DESC=				Software components						SOFTWARE_DESC=				Software components
SOUND_DESC=					Enable sound via openal-soft				SOUND_DESC=					Enable sound via openal-soft
SPATIAL_DESC=				Enable SpatialIndex (Speeds up AreaStores)			SPATIAL_DESC=				Enable SpatialIndex (Speeds up AreaStores)
SYSTEM_DESC=				System subsitutes						SYSTEM_DESC=				System subsitutes
SYSTEM_FONTS_DESC=			Use or install default fonts from ports				SYSTEM_FONTS_DESC=			Use or install default fonts from ports
SYSTEM_GMP_DESC=			Use gmp from ports (ENABLE_SYSTEM_GMP)				SYSTEM_GMP_DESC=			Use gmp from ports (ENABLE_SYSTEM_GMP)
SYSTEM_JSONCPP_DESC=		Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)				SYSTEM_JSONCPP_DESC=		Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)
SYSTEM_LUAJIT_DESC=			Use or install luajit from ports (instead of bundled lua	SYSTEM_LUAJIT_DESC=			Use or install luajit from ports (instead of bundled lua
#TRACY_DESC=					Build with Tracy frame and sampling profiler --b	#TRACY_DESC=					Build with Tracy frame and sampling profiler --b
UNITTESTS_DESC=				Build unit test sources (BUILD_UNITTESTS)			UNITTESTS_DESC=				Build unit test sources (BUILD_UNITTESTS)

# options helpers											# options helpers
BENCHMARKS_CMAKE_BOOL=		BUILD_BENCHMARKS							BENCHMARKS_CMAKE_BOOL=		BUILD_BENCHMARKS
#TRACY_BUILD_DEPENDS=		tracy>0:devel/tracy							#TRACY_BUILD_DEPENDS=		tracy>0:devel/tracy
#TRACY_CMAKE_BOOL=			BUILD_WITH_TRACY						#TRACY_CMAKE_BOOL=			BUILD_WITH_TRACY
CLIENT_LIB_DEPENDS=			libpng16.so:graphics/png					CLIENT_LIB_DEPENDS=			libpng16.so:graphics/png
CLIENT_USES=				gl xorg jpeg sdl						CLIENT_USES=				gl xorg jpeg sdl
CLIENT_USE=	\											CLIENT_USE=	\
							GL=glu \												GL=glu \
							SDL=sdl2,ttf2 \												SDL=sdl2,ttf2 \
							XORG=ice,sm,x11,xext,xcb,xres,xshmfence,								XORG=ice,sm,x11,xext,xcb,xres,xshmfence,
							xfixes,xft,xinerama,xkbfile,xmu,xpm,xran								xfixes,xft,xinerama,xkbfile,xmu,xpm,xran

CLIENT_CMAKE_BOOL=			BUILD_CLIENT							CLIENT_CMAKE_BOOL=			BUILD_CLIENT
CURL_LIB_DEPENDS=			libcurl.so:ftp/curl						CURL_LIB_DEPENDS=			libcurl.so:ftp/curl
CURL_CMAKE_BOOL=			ENABLE_CURL							CURL_CMAKE_BOOL=			ENABLE_CURL
DEVTEST_CMAKE_BOOL=			INSTALL_DEVTEST							DEVTEST_CMAKE_BOOL=			INSTALL_DEVTEST
DOCS_CMAKE_BOOL=			BUILD_DOCUMENTATION						DOCS_CMAKE_BOOL=			BUILD_DOCUMENTATION
GLES1_USE=					GL+=glesv1						GLES1_USE=					GL+=glesv1
GLES1_CMAKE_BOOL=			ENABLE_GLES1							GLES1_CMAKE_BOOL=			ENABLE_GLES1
GLES2_USE=					GL+=glesv2						GLES2_USE=					GL+=glesv2
GLES2_CMAKE_BOOL=			ENABLE_GLES2							GLES2_CMAKE_BOOL=			ENABLE_GLES2
LEVELDB_LIB_DEPENDS=		libleveldb.so:databases/leveldb						LEVELDB_LIB_DEPENDS=		libleveldb.so:databases/leveldb
LEVELDB_CMAKE_BOOL=			ENABLE_LEVELDB							LEVELDB_CMAKE_BOOL=			ENABLE_LEVELDB
LTO_CMAKE_BOOL=				ENABLE_LTO							LTO_CMAKE_BOOL=				ENABLE_LTO
NCURSES_USES=				ncurses								NCURSES_USES=				ncurses
NCURSES_CMAKE_BOOL=			ENABLE_CURSES							NCURSES_CMAKE_BOOL=			ENABLE_CURSES
NLS_USES=					gettext							NLS_USES=					gettext
NLS_CMAKE_BOOL=				ENABLE_GETTEXT							NLS_CMAKE_BOOL=				ENABLE_GETTEXT
NLS_LDFLAGS=				-L${LOCALBASE}/lib						NLS_LDFLAGS=				-L${LOCALBASE}/lib
OPENGL3_USE=				GL+=gl								OPENGL3_USE=				GL+=gl
OPENGL3_CMAKE_BOOL=			ENABLE_OPENGL3							OPENGL3_CMAKE_BOOL=			ENABLE_OPENGL3
OPENGL_USE=					GL+=gl							OPENGL_USE=					GL+=gl
OPENGL_CMAKE_BOOL=			ENABLE_OPENGL							OPENGL_CMAKE_BOOL=			ENABLE_OPENGL
PGSQL_USES=					pgsql							PGSQL_USES=					pgsql
PGSQL_CMAKE_BOOL=			ENABLE_POSTGRESQL						PGSQL_CMAKE_BOOL=			ENABLE_POSTGRESQL
PROFILING_CMAKE_BOOL=		USE_GPROF								PROFILING_CMAKE_BOOL=		USE_GPROF
PROMETHEUS_CMAKE_BOOL=		ENABLE_PROMETHEUS							PROMETHEUS_CMAKE_BOOL=		ENABLE_PROMETHEUS
REDIS_LIB_DEPENDS=			libhiredis.so:databases/hiredis					REDIS_LIB_DEPENDS=			libhiredis.so:databases/hiredis
REDIS_CMAKE_BOOL=			ENABLE_REDIS							REDIS_CMAKE_BOOL=			ENABLE_REDIS
SERVER_CMAKE_BOOL=			BUILD_SERVER							SERVER_CMAKE_BOOL=			BUILD_SERVER
SOUND_CMAKE_BOOL=			ENABLE_SOUND							SOUND_CMAKE_BOOL=			ENABLE_SOUND
SPATIAL_LIB_DEPENDS=		libspatialindex.so:devel/spatialindex					SPATIAL_LIB_DEPENDS=		libspatialindex.so:devel/spatialindex
SPATIAL_CMAKE_BOOL=			ENABLE_SPATIAL							SPATIAL_CMAKE_BOOL=			ENABLE_SPATIAL
SYSTEM_FONTS_RUN_DEPENDS=	${LOCALBASE}/share/fonts/ChromeOS/Arimo-Bold.ttf:x11-fonts/crosc	SYSTEM_FONTS_RUN_DEPENDS=	${LOCALBASE}/share/fonts/ChromeOS/Arimo-Bold.ttf:x11-fonts/crosc
							${LOCALBASE}/share/fonts/Droid/DroidSans								${LOCALBASE}/share/fonts/Droid/DroidSans
SYSTEM_GMP_LIB_DEPENDS=		libgmp.so:math/gmp							SYSTEM_GMP_LIB_DEPENDS=		libgmp.so:math/gmp
SYSTEM_GMP_CMAKE_BOOL=		ENABLE_SYSTEM_GMP							SYSTEM_GMP_CMAKE_BOOL=		ENABLE_SYSTEM_GMP
SYSTEM_GMP_CMAKE_ON=		-DGMP_INCLUDE_DIR="${PREFIX}/include"					SYSTEM_GMP_CMAKE_ON=		-DGMP_INCLUDE_DIR="${PREFIX}/include"
SYSTEM_JSONCPP_LIB_DEPENDS=	libjsoncpp.so:devel/jsoncpp						SYSTEM_JSONCPP_LIB_DEPENDS=	libjsoncpp.so:devel/jsoncpp
SYSTEM_JSONCPP_CMAKE_BOOL=	ENABLE_SYSTEM_JSONCPP							SYSTEM_JSONCPP_CMAKE_BOOL=	ENABLE_SYSTEM_JSONCPP
SYSTEM_JSONCPP_CMAKE_ON=	-DJSON_INCLUDE_DIR="${PREFIX}/include/jsoncpp"				SYSTEM_JSONCPP_CMAKE_ON=	-DJSON_INCLUDE_DIR="${PREFIX}/include/jsoncpp"
SYSTEM_LUAJIT_USES=			luajit								SYSTEM_LUAJIT_USES=			luajit
SYSTEM_LUAJIT_USE=			luajit								SYSTEM_LUAJIT_USE=			luajit
#SYSTEM_LUAJIT_CMAKE_BOOL=	ENABLE_LUAJIT # Redundant as one of the above includes this		#SYSTEM_LUAJIT_CMAKE_BOOL=	ENABLE_LUAJIT # Redundant as one of the above includes this
UNITTESTS_CMAKE_BOOL=		BUILD_UNITTESTS								UNITTESTS_CMAKE_BOOL=		BUILD_UNITTESTS

.include 										.include 

.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSYSTEM_LUAJIT}						.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSYSTEM_LUAJIT}
CMAKE_ARGS+=	-DENABLE_LUAJIT="ON" \									CMAKE_ARGS+=	-DENABLE_LUAJIT="ON" \
				-DREQUIRE_LUAJIT="ON"											-DREQUIRE_LUAJIT="ON"
.endif													.endif

# It used to be such that 

I automate some pkg-plist adjustments with a simple script I modify for each significant 'unofficial port' that I make.  It speeds the process of making sure that everything is accurate and consistent between rebuilds and new commits to my repo based upon upstream changes.  All the places in the script where it now has luanti had once been minetest.

#!/bin/sh
rm /var/tmp/luanti-dev_pkg-plist 2>/dev/null
rm /var/tmp/luanti-dev_pkg-plist-fixed 2>/dev/null
cp ../pkg-plist /var/tmp/luanti-dev_pkg-plist

echo "adding conditional list tags"

cat /var/tmp/minetest-dev_pkg-plist | \
sed \
-e 's#^\/you\/have\/to\/check\/what\/makeplist\/gives\/you##' \
-e '/^$/d' \
-e 's#^share\/locale#\%\%CLIENT\%\%\%\%NLS\%\%share\/locale#g' \
-e 's#^\%\%PORT#\%\%#g' \
-e 's#^bin/luantiserver#\%\%SERVER\%\%bin/luantiserver#1' \
-e 's#^bin/luanti#\%\%CLIENT\%\%bin/luanti#1' \
-e 's#^\%\%ETCDIR\%\%.conf.example#@sample\ etc/minetest.conf.example\ etc/minetest.conf#' \
-e 's#^\%\%ETCDIR\%\%.conf.example#@sample\ etc/luanti.conf.example\ etc/luanti.conf#' \
-e 's#^etc/rc.d/minetest#\%\%SERVER\%\%etc/rc.d/minetest#1' \
-e 's#^etc/rc.d/luanti#\%\%SERVER\%\%etc/rc.d/luanti#1' \
-e 's#^share/man/man6/luanti.6.gz#\%\%CLIENT\%\%share/man/man6/luanti.6.gz#1' \
-e 's#^share/man/man6/luantiserver.6.gz#\%\%SERVER\%\%share/man/man6/luantiserver.6.gz#1' \
-e 's#^\%\%DATADIR\%\%/client#\%\%CLIENT\%\%\%\%DATADIR\%\%/client#g' \
-e 's#^\%\%DATADIR\%\%/fonts#\%\%CLIENT\%\%\%\%DATADIR\%\%/fonts#g' \
-e 's#^\%\%DATADIR\%\%/textures#\%\%CLIENT\%\%\%\%DATADIR\%\%/textures#g' \
-e 's#^\%\%DATADIR\%\%/games/devtest#\%\%DEVTEST\%\%\%\%DATADIR\%\%/games/devtest#g' \
> /var/tmp/luanti-dev_pkg-plist-fixed
cp /var/tmp/luanti-dev_pkg-plist-fixed ../pkg-plist

The options config has changed somewhat, organized a little nicer.  The touch option was moved into the luanti config itself, and my method to use system fonts instead of bundled fonts can still be toggled.


                    ┌────────────────────────────────────────┤luanti-dev-g20241102├─────────────────────────────────────────┐
                    │ 'F1' for Ports Collection help.                                                                       │
                    │ ┌───────────────────────────────────────────────────────────────────────────────────────────────────┐ │
                    │ │──────────────────────────────────────── Admin/Dev needs ──────────────────────────────────────────│ │
                    │ │[X] BENCHMARKS     Build benchmarks (Adds some benchmark chat commands)                            │ │
                    │ │[X] DEVTEST        Install Development Test game also (INSTALL_DEVTEST)                            │ │
                    │ │[X] DOCS           Build and install documentation (via doxygen)                                   │ │
                    │ │[X] NCURSES        Enables server side terminal (cli option: --terminal) (ENABLE_CURSES)           │ │
                    │ │[X] PROFILING      Use gprof for profiling (USE_GPROF)                                             │ │
                    │ │[X] PROMETHEUS     Build with Prometheus metrics exporter                                          │ │
                    │ │[X] UNITTESTS      Build unit test sources (BUILD_UNITTESTS)                                       │ │
                    │ │──────────────────────────────────────── Database support ─────────────────────────────────────────│ │
                    │ │[ ] LEVELDB        Enable LevelDB backend --broken - build fails--                                 │ │
                    │ │[ ] PGSQL          Enable PostgreSQL map backend                                                   │ │
                    │ │[ ] REDIS          Enable Redis backend                                                            │ │
                    │ │───────────────────────────────────────── Other options ───────────────────────────────────────────│ │
                    │ │[X] LTO            Build with IPO/LTO optimizations (smaller and more efficient than regular build)│ │
                    │ │─────────────────────────────────────── Client essentials ─────────────────────────────────────────│ │
                    │ │[X] CURL           Enable cURL support for fetching media: contentdb                               │ │
                    │ │[X] NLS            Native Language Support (ENABLE_GETTEXT)                                        │ │
                    │ │[X] SOUND          Enable sound via openal-soft                                                    │ │
                    │ │[X] SPATIAL        Enable SpatialIndex (Speeds up AreaStores)                                      │ │
                    │ │─────────────────────────────────────── System subsitutes ─────────────────────────────────────────│ │
                    │ │[X] SYSTEM_FONTS   Use or install default fonts from ports                                         │ │
                    │ │[X] SYSTEM_GMP     Use gmp from ports (ENABLE_SYSTEM_GMP)                                          │ │
                    │ │[X] SYSTEM_JSONCPP Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)                                  │ │
                    │ │[X] SYSTEM_LUAJIT  Use or install luajit from ports (instead of bundled lua)                       │ │
                    │ │──────────────────────────── Software components [select at least one] ────────────────────────────│ │
                    │ │[X] CLIENT         Build client, add graphics and sdl2 support, dependencies                       │ │
                    │ │[X] SERVER         Build server                                                                    │ │
                    │ │───────────────────────────── Graphics support [select at least one] ──────────────────────────────│ │
                    │ │( ) GLES1          Enable OpenGL ES driver, legacy                                                 │ │
                    │ │( ) GLES2          Enable OpenGL ES 2+ driver                                                      │ │
                    │ │(*) OPENGL         Enable OpenGL driver                                                            │ │
                    │ │( ) OPENGL3        Enable OpenGL 3+ driver (likely needs sdl2 built with OPENGLES)                 │ │
                    │ └───────────────────────────────────────────────────────────────────────────────────────────────────┘ │
                    ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤
                    │                                         [  OK  ]     [Cancel]                                         │
                    └───────────────────────────────────────────────────────────────────────────────────────────────────────┘

If you had used minetest in the past, one other change is rather visible.  I toggled off the clouds in the luanti config which makes it much more game agnostic.

Luanti start screen GUI

At the moment this is the only way you can use the very most current Lunati client for minetest games and for your game engine needs.  Eventually the ports committer for games/minetest will have to go through much of the same work I finished above to create games/luanti.  Their task is delayed for public consumption even if they have done the work on their local machine because they track releases rather than upstream commits as I do.

Repo url:

Frequently viewed this week