Warning: there may be occasional oddness due to css and blog edits. **KNOWN ISSUE: possible hidden text**
Showing posts with label Ports. Show all posts
Showing posts with label Ports. Show all posts

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.

Friday, August 9, 2024

make.conf in control

I have mentioned previously that I have a rather extensive /etc/make.conf file.  This very copiously commented file is below.  In the past I defined many of the defaults listed but now accept many of those as defined by /usr/ports/Mk/bsd.default-versions.mk because some of the most current versions are set as default.  Some other ports which may have ambiguous versions I choose to be specific or if the default is not as new as I wish, I set it.  It is a very good idea to include comments where ever possible in any configuration file because you may want to note a documentation source as the reason or to recall why something was done.

Using this extensive make.conf it should default to any options defined within, if the config is removed (make rmconfig).  Some things specifically set options, some options are defined in order to help avoid conflicts, especially when radio buttons are used.  Many documentation excerpts from /usr/ports/Mk files.  The bulk set/unset keywords assume that those keywords are consistent across disparite ports but where this is not true or other keywords are needed, those are options defined.  it would be a very good idea to periodically revisit this file to see what needs adjusting.  Check with each release and when noted in /usr/ports/updating when things change, especially defaults in /usr/ports/Mk/bsd.default-versions.mk to be sure the desired result is achieved.

### make.conf
#################################################################################################################################################
# There are a number of things you can do to reduce the size and number of files in /boot/kernel.
#
# Possibly the best space saving is to be had by setting WITHOUT_KERNEL_SYMBOLS in /etc/src.conf
# (if this file doesn't already exist, just create it), and the next time you installkernel, the
# debug symbol files won't be installed. It's safe to delete them now, if you need the space
# immediately (rm /boot/kernel/*.symbols)
#
# There are a few make.conf settings that control what modules are built:
#
#    NO_MODULES - disable building of modules completely
#    MODULES_OVERRIDE - specify the modules you want to build
#    WITHOUT_MODULES - list of modules that should not be built
#
# The NO_MODULES option is probably a bit too heavy-handed, so a judicious combination of the
# other two is a better choice. If you know exactly which modules you want, you can simply set
# them in MODULES_OVERRIDE. Note that WITHOUT_MODULES is evaluated after MODULES_OVERRIDE, so
# any module named in both lists will not be built.
#
# If you really want to suppress building of all modules, you can use NO_MODULES, and ensure
# that all required drivers and modules are statically compiled into the kernel. Each driver's
# manpage shows the appropriate lines to add to your kernel config file, so you should be able
# to figure out what you need.
#################################################################################################################################################
#_______________________________________________________________________________
#										|
# This toggle for developer helps to discover issues with ports building. It is |
# not used by poudriere, which would need testport or other options.		|
#_______________________________________________________________________________|

DEVELOPER=yes

DISABLE_VULNERABILITIES=yes
TRYBROKEN=true

#_______________________________________________________________
#								|
# USE_PACKAGE_DEPENDS=yes					|
#								|
# Try to install dependencies from existing packages instead	|
#  of building the port from scratch. Fallback on source	|
#  if an existing package is not present.			|
#								|
# USE_PACKAGE_DEPENDS_ONLY=yes					|
#								|
# Like USE_PACKAGE_DEPENDS, but do not fallback on source.	|
#_______________________________________________________________|

USE_PACKAGE_DEPENDS=yes

#_______________________________________________________
#							#
# Use ccache for builds					#
#_______________________________________________________#

WITH_CCACHE_BUILD=yes

.if ${.CURDIR:M^/usr/src/}
CCACHE_DIR=/var/cache/base/ccache
.else
CCACHE_DIR=/var/cache/ccache
.endif

#_______________________________________________________________________________
#										#
#  This is set in /usr/ports/Mk/Uses/jpeg.mk					#
#	JPEG_PORT=graphics/jpeg-turbo						#
#_______________________________________________________________________________#

#_______________________________________________________
#							#
#WITH_DEBUG_PORTS+=editors/openoffice-devel		#
#WITH_DEBUG_PORTS+=editors/openoffice-4			#
#_______________________________________________________#

#################################################################################################################################################

#  _____________________________________________________________
# /								\
# | Universal DEFAULT versions					|
# |								|
# | values defined in /usr/ports/Mk/bsd.default-versions.mk	|
# \_____________________________________________________________/


#_______________________________________________________
#							#
# No reason to set this as prefer llvm etc.		#
# DEFAULT_VERSIONS+=gcc=12				#
#_______________________________________________________#


#_______________________________________________________
#							#
# Ghostscript						#
# Possible values: 10					#
# DEFAULT_VERSIONS+=GHOSTSCRIPT=10			#
#_______________________________________________________#


#_______________________________________________________
#							#
# Possible values: mesa-libs, mesa-devel		#
# GL_DEFAULT?=            mesa-libs			#
# DEFAULT_VERSIONS+=gl=mesa-libs			#
#_______________________________________________________#


#_______________________________________________________
#							#
# Imagemagick						#
# Possible versions: 6, 7				#
# Possible flavors:  x11, nox11				#
#                    (defaults to x11 if not specified) #
# Format:            version[-flavor]			#
# Examples:          6-nox11, 7				#
#							#
# DEFAULT_VERSIONS+=IMAGEMAGICK=7			#
#_______________________________________________________#


#_______________________________________________________
#							#
# Java							#
# Possible values: 8, 11, 17, 18, 19, 20, 21		#
#_______________________________________________________#
DEFAULT_VERSIONS+=JAVA=21


#_______________________________________________________
#							#
# centos or rocky linux	both downstream rhel		#
# centos is deprecated but has 32bit?			#
# rocky is newer but 64bit only?			#
# Possible values: c7 rl9				#
#_______________________________________________________#
DEFAULT_VERSIONS+=LINUX=rl9


#_______________________________________________________
#							#
# llvm							#
# Possible values: 					#
#  11, 12, 13, 14, 15, 16, 17, -devel			#
# (to be used when non-base compiler is required)	#
# 							#
#_______________________________________________________#
DEFAULT_VERSIONS+=LLVM=17


#_______________________________________________________
#							#
# Lua							#
# Possible values: 5.1, 5.2, 5.3, 5.4			#
#							#
# DEFAULT_VERSIONS+=LUA=5.4				#
#_______________________________________________________#


#_______________________________________________________
#                                                       #
# Luajit                                                #
# Possible values:                                      #
#        luajit, luajit-devel, luajit-openresty         #
#                                                       #
# Auto sets to luajit-devel if not powerpc64*		#
#                                                       #
# DEFAULT_VERSIONS+=LUAJIT=luajit-openresty		#
#_______________________________________________________#


#_______________________________________________________
# Possible values: 3.8, 3.9, 3.10, 3.11			#
#							#
# PYTHON_DEFAULT?=        3.11				#
#							#
# Possible values: 2.7					#
# PYTHON2_DEFAULT?=       2.7				#
#							#
# DEFAULT_VERSIONS+=python=3.11				#
#_______________________________________________________#


#_______________________________________________________
#							#
# Ruby							#
# Possible values: 2.7, 3.0, 3.1, 3.2			#
#							#
# DEFAULT_VERSIONS+=RUBY=3.2				#
#_______________________________________________________#


#_______________________________________________________
#							#
# Rust 							#
# While it may make some sense to have -nightly the 	#
# default, it is build fail prone or too new.		#
# Possible values: rust, rust-nightly			#
#_______________________________________________________#
DEFAULT_VERSIONS+=RUST=rust


#_______________________________________________________________________________
#										#
# Would prefer libressl for all things but it tends to be incompatible with any	#
# random thing periodically which breaks MANY ports.				#
# libressl-devel is often too new for rust-nightly etc				#
#										#
# FYI:	security/cryptopp is just as important for many ports.			#
#	py-cryptography								#
#										#
# When updating this, please also update the same list in ssl.mk and the checks	#
# for USES=ssl in qa.sh!							#
# Possible values: base, openssl, openssl111, openssl31, openssl32, openssl33,	#
#				   libressl, libressl-devel			#
#.  if !defined(SSL_DEFAULT)							#
#       If no preference was set, check for an installed base version		#
#       but give an installed port preference over it.				#
# SSL										#
# Possible values: base, openssl, libressl, libressl-devel			#
#										#
# DEFAULT_VERSIONS+=SSL=openssl							#
#										#
# Do I have ssl in base built or denied?					#
#_______________________________________________________________________________#
DEFAULT_VERSIONS+=SSL=openssl


#_______________________________________________________
#							#
# tcl/tk						#
# Possible values: 8.5, 8.6, 8.7			#
#							#
# DEFAULT_VERSIONS+=TCLTK=8.6				#
#_______________________________________________________#
DEFAULT_VERSIONS+=TCLTK=8.7


#################################################################################################################################################

#_______________________________________________________
#							#
# Changes in general to config toggles			#
#_______________________________________________________#

OPTIONS_UNSET+=A4 ALSA APE APPLEDEV ARCHDEF ATK_BRIDGE ATLAS AVAHI AVX AVX2
OPTIONS_UNSET+=BASH BONMIN BOOTSTRAP
OPTIONS_UNSET+=CCL CHEESE CHINESE CHROMECAST CMUCL COLORD CPACK CPU_CLIP
OPTIONS_UNSET+=DBUS DEBUG DEVD DTRACE
OPTIONS_UNSET+=ECL EMACS_KEYS ENCODINGS ETERSOFT
OPTIONS_UNSET+=FAM FREERDP FRENCH
OPTIONS_UNSET+=GCRYPT GEOCLUE GEOIP GEOLOC GLX GNUTLS GNOMEUI GNOMEVFS GPERFTOOLS GPOD GPS GPSD GRAPHITE GRAPHVIZ
OPTIONS_UNSET+=HAL HALD
OPTIONS_UNSET+=IMOBILE INOTIFY INTEGER_SAMPLES IPOD IPOPT
OPTIONS_UNSET+=JACK JAPANESE
OPTIONS_UNSET+=KOREAN
OPTIONS_UNSET+=LAPACK LDAP LIBBLURAY LIBEXECINFO LIBJTE LIBSIGSEGV LIRC LOCALE_DE LOCALE_RU
OPTIONS_UNSET+=MAD MARS MDNS MDNSRESPONDER METRIC MHASH MTPFS MTPZ MUPDF
OPTIONS_UNSET+=NETTLE NLS NOTIFY NTSC NVIDIA NVIT NVTHREADS NVTT
OPTIONS_UNSET+=OPENBLAS OPENCV
OPTIONS_UNSET+=PAL PERL_64BITINT PGSQL PSGHOSTSCRIPT PSHYBRID PULSEAUDIO PURPOSE
OPTIONS_UNSET+=Q8BIT QPOASES QTWEBENGINE QT5AGGBACKEND
OPTIONS_UNSET+=RCC READLINE RUNROOT RUSSIAN RETEXTURE_FULL
OPTIONS_UNSET+=SAGE SAMBA SASL SCFB SMB SKYDRIVE SNDIO SOX SPEECHD SPEED STATIC
OPTIONS_UNSET+=TEST TOMCAT85 TOMCAT9 TPM
OPTIONS_UNSET+=UPNP
OPTIONS_UNSET+=V4L
OPTIONS_UNSET+=WEBENGINE WIIMOTEDEV WIKI_PUBLISHER
OPTIONS_UNSET+=XBACKLIGHT
OPTIONS_UNSET+=ZSH

#----------

OPTIONS_SET+=3DNOW 7ZIP
OPTIONS_SET+=A52 AALIB AAC ALLSTAGES ANY2DJVU AOM API APNG ARMOR ASM ASS AUDIO AUDIOCD
OPTIONS_SET+=BABEL BE_AMDGPU BEATPORT BE_NATIVE BOOST BROTLI BUNDLED_READLINE BZIP2
OPTIONS_SET+=CA_BUNDLE CACA CAIRO CBLAS CDDA2MP3 CDDA2OGG CDDB CERTS CLANG CLEARTYPE CLIENT COMPFACE COMPILER_RT COINMP CONFIG \
		CONTRIB CPU_OPTS CRAFTY CRYPTO CRYPTOPP CUPS CURL
OPTIONS_SET+=DCA DCRAW DESKTOPFILES DRILL DTS DUNSTIFY DVD DYNAMIC_ARCH DYNSIMD
OPTIONS_SET+=EDITOR EGL ELMUSIC ELSOUND ENCHANT ETCSYMLINK EXAMPLES EXIV EXPAT EXR EXTRAFONTS EXTRAS EYECANDY
OPTIONS_SET+=FAAC FAAD FAIRYMAX FETCHART FFMPEG FFTW FFTW3 FLAC FLANG FLITE FLUID FLUIDSYNTH FONTCONFIG FORTRAN FREETYPE FREI0R \
		FRIBIDI
OPTIONS_SET+=GAME GECKO GHOSTSCRIPT GIR GLASSFISH GLX GM GMP GNUCHESS GNUPG2 GOEMON GOLD GSL GSTREAMER GST_PLUGINS GUESTADDITIONS
OPTIONS_SET+=HARFBUZZ HUNSPELL HYPRE
OPTIONS_SET+=ICONV ICS_VCAL ID3TAG IJS IMAGEMAGICK IO_PTR IPV6 IRRLICHT
OPTIONS_SET+=JASPER JAVA JPEG2000 JSON
OPTIONS_SET+=KF5 KNIGHTCAP
OPTIONS_SET+=LADSPA LAME LARGE_STACK LASTFM LAUNCHER LCMS2 LHA LIBEDIT LIBEDIT_DL LIBFFI LIBPAPER LIBPLACEBO LIBPNG LIBRSVG2 LIBSSH2 \
		LIBXML LIBYAML LIT LLD LLDB LLD_LINK LOCALE_EN LUAJIT LV2 LZ4 LZO
OPTIONS_SET+=MAN MAN3 MANPAGE MANPAGES MATERIALX MFX MIDI MIKMOD MLIR MMX MNG_OPTIMIZE MODPLUG MONO MP3 MP3OGG MPG123 MPEG2 MPI \
		MT32EMU MTP MULTILIB MULTIPLICITY MUSEPACK MUSIC MYSQL
OPTIONS_SET+=NCURSES NETLIB NETTLE NONFREE NUMPY
OPTIONS_SET+=OBJC OGG OGRE ONIGURUMA OPENAL OPENAL_DLOPEN OPENCL OPENGL OPENH264 OPENJADE OPENMP OPENMPI OPTIMIZE OPTIMIZED_CFLAGS \
		OPUS OSS
OPTIONS_SET+=PANGO PANGOCAIRO PARALLEL_MARK PERL_MALLOC PETSC PHALANX PHYSFS PNG POPPLER PSPOPPLER PTHREADS PYCLANG PYGMENTS PYMALLOC \
		PYSTEMMER
#OPTIONS_SET+=QT5AGGBACKEND
OPTIONS_SET+=RAR RDOFF REALRTSP RELEASE RELRO REMIX1 REMIX2 REMIX3 REMIX4 REPLAYGAIN RETEXTURE RHASH RTCPU RUNTIME
OPTIONS_SET+=SAMPLERATE SBCL SCHROEDINGER SDL SDL1 SDL2 SDLCLIENT SDLGL SDL_AUDIO SDL_VIDEO SESSION_MGMT SHARED SHOUTCAST SIMD \
		SIPHASH SKINS SLP SLURM SMPEG SNAPPY SOLUTIONS SOUND SOUNDTOUCH SPEEX SQLITE SSE SSE2 SSH STARTUP SUITESPARSE SVG \
		SYSTEM_ZLIB
OPTIONS_SET+=TAGLIB TAGSOUP TCL THEMES THEORA THREADS TIDYHTML5 TIMIDITYPLUS TKINTER TOC2MP3 TWOLAME TZDATA TZUPDATE
OPTIONS_SET+=UDEV
OPTIONS_SET+=VAAPI VALA VDPAU VIDEOREC VIEWER VKD3D VLC VOICE VORBIS VPX VULKAN
OPTIONS_SET+=WATCHDOG WAVPACK WAYLAND WINEMAKER WXGTK
OPTIONS_SET+=X11 X264 X265 XCB XGLK XINERAMA
OPTIONS_SET+=YAML
OPTIONS_SET+=ZIP ZIPPY ZLIB ZSTD ZVBI
# ---------------------------------------------<  End user additions and modifications >--------------------------------------------- #


#_______________________________________________________________________________________________________
#													#
#  * Openblas, Netlib (cblas), and Atlas are all options for math routines.				#
#  * cblas seems to be ovewhelmingly used with games, and by py-numpy.					#
#    therefore set to prefer cblas and netlib								#
#													#
#  * qt-location is problematic and depended upon by qt-webengine					#
#													#
#  * egl purported better and more supported than glx							#
# libedit is BSD and lighter while readline is gpl/gnu -- better to use bundled readline than as port	#
#													#
#  * rhash is MIT, gcrypt is gnu/gpl, mhash is lgpl							#
#													#
#  * MTPFS and MTPZ are related to accessing mobile devices such as their internal storage.		#
#													#
#  * NOTIFY option causes dbus to be installed								#
#_______________________________________________________________________________________________________#


#_______________________________________________________________________________
#										#
#  processor instructions support						#
#										#
#   older AMD processors do not have AVX or AVX2				#
#   https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX2	#
#   AMD does have SSE2								#
#   newer AMD processors do not have 3dNow					#
#_______________________________________________________________________________#


#############################################        #######   #######   #######   ######   ######
####                                     ####      #######   #######   #######   ######   ######
####  an UNSET always overrides a SET    ####    #######   #######   ######    ######   ######
####                                     ####      #######   #######   #######   ######   ######
#############################################        #######   #######   #######   ######   ######

####################################################################
####								####
####	OPTIONS_UNSET_FORCE overrides user interactive set	####
####								####
####################################################################

#_______________________________________________________________________
#									#
# Flavored ports -- this works as expected				#
#_______________________________________________________________________#

.if ${.CURDIR:M*/ports/security/libressl-devel}
  #FLAVOR=libtls
  FLAVOR=default
.endif

.if ${.CURDIR:M*/ports/devel/git}
#  FLAVOR=tiny
.endif

.if ${.CURDIR:M*/ports/x11-toolkits/wx}
  FLAVOR=gtk3
.endif

.if ${.CURDIR:M*/ports/devel/bullet}
  FLAVOR=
.endif

#_______________________________________________________________________
#									#
# Flavored ports end							#
#_______________________________________________________________________#


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Static needed for use with poudriere --		#
# revisit the memcached option when not experimental	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/ccache}
  NO_CCACHE=yes
  WITH_CCACHE_BUILD=no
.endif
.if ${.CURDIR:M*/ports/devel/ccache}
  OPTIONS_UNSET=DOCS
  OPTIONS_SET=CLANGLINK STATIC LLVMLINK
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# OpenSSL has many options, some unsafe			#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

.if ${.CURDIR:M*/ports/security/openssl}
OPTIONS_SET+=ASYNC
OPTIONS_SET+=CT
OPTIONS_SET+=KTLS
OPTIONS_SET+=MAN3
OPTIONS_SET+=RFC3779
OPTIONS_SET+=SHARED
OPTIONS_SET+=ZLIB

OPTIONS_SET+=ARIA
OPTIONS_SET+=DES
OPTIONS_SET+=GOST
OPTIONS_SET+=IDEA
OPTIONS_UNSET+=SM4
OPTIONS_UNSET+=RC2
OPTIONS_UNSET+=RC4
OPTIONS_UNSET+=RC5
OPTIONS_UNSET+=WEAK-SSL-CIPHERS

OPTIONS_UNSET+=MD2
OPTIONS_UNSET+=MD4
OPTIONS_SET+=MDC2
OPTIONS_SET+=RMD160
OPTIONS_SET+=SM2
OPTIONS_SET+=SM3

OPTIONS_SET+=ASM
OPTIONS_SET+=SSE2
OPTIONS_SET+=THREADS
OPTIONS_SET+=EC

OPTIONS_SET+=NEXTPROTONEG
OPTIONS_SET+=SCTP
OPTIONS_UNSET+=SSL3
OPTIONS_SET+=TLS1
OPTIONS_SET+=TLS1_1
OPTIONS_SET+=TLS1_2
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# py-sphinx adjustments dunno why now			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/textproc/py-sphinx}
RUN_DEPENDS=    ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-devhelp>=0:textproc/py-sphinxcontrib-devhelp@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-jsmath>=0:textproc/py-sphinxcontrib-jsmath@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-htmlhelp>=2.0.0:textproc/py-sphinxcontrib-htmlhelp@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-serializinghtml>=1.1.5:textproc/py-sphinxcontrib-serializinghtml@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}sphinxcontrib-qthelp>=0:textproc/py-sphinxcontrib-qthelp@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}Jinja2>=3.0:devel/py-Jinja2@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}pygments>=2.12:textproc/py-pygments@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}docutils>=0.14,1<0.20,1:textproc/py-docutils@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}snowballstemmer>=2.0:textproc/py-snowballstemmer@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}Babel>=2.9:devel/py-babel@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}alabaster>=0.7<0.8:textproc/py-alabaster@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}imagesize>=1.3:graphics/py-imagesize@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}requests>=2.5.0:www/py-requests@${PY_FLAVOR} \
                ${PYTHON_PKGNAMEPREFIX}packaging>=21.0:devel/py-packaging@${PY_FLAVOR} \
                ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# force pkg to have default: DOCS			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/json-glib}
OPTIONS_SET+=DOCS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# force pkg to have default: GNUTLS			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/glib-networking}
OPTIONS_SET+=GNUTLS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Speed up gcc build					#
#_______________________________________________________#
.if ${.CURDIR:M*/ports/lang/gcc*}
OPTIONS_UNSET+=LTO_BOOTSTRAP
OPTIONS_UNSET_FORCE+=LTO_BOOTSTRAP
OPTIONS_UNSET_FORCE+=STANDARD_BOOTSTRAP
.endif

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# wine fails with ccache				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/emulators/wine}
WITH_CCACHE_BUILD=no
NO_CCACHE=yes
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Until ruby builds with v3.0 this fails for manpages	#
# textproc/rubygem-asciidoctor for doc creation		#
# Rust fails to build which prevents rust-svg stuff	#
#							#
# Been building my own fvwm3-dev was with SVG or not?	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/x11-wm/fvwm3}
OPTIONS_UNSET+=SVG
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# force json-glib proper config for clutter dependency	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/json-glib}
OPTIONS_SET+=GIR
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Reverse tactic, special case this for slightly older	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/pylint}
DEFAULT_VERSIONS+=python=3.8
DEFAULT_VERSIONS+=python3=3.8
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# qbittorrent settings					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net-p2p/qbittorrent}
  OPTIONS_SET+=PYTHON
  OPTIONS_UNSET+=DBUS DEBUG
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# zziplib has trouble with sdl?				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/zziplib}
  OPTIONS_UNSET+=SDL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# libmad radio fix					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/libmad}
  OPTIONS_UNSET+=SPEED
  OPTIONS_SET+=ACCURACY
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# soundtouch - openmp incompatible at present		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/soundtouch}
  OPTIONS_UNSET+=OPENMP
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# slurm-wlm - trouble with HDF5				#
# fails if hdf5 is enabled and was built with CXX 	#
# circular dependency if hdf5 uses PARALLEL instead	#
# all other options build fine so are set.		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/sysutils/slurm-wlm}
  OPTIONS_SET+=CURL DOCS GUI HWLOC IPMI MYSQL RRD
  OPTIONS_UNSET+=HDF5
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# hdf5 circular dependency caused by PARALLEL option	#
# radio button so should define both as appropriate	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/science/hdf5}
  OPTIONS_SET+=CXX
  OPTIONS_UNSET+=PARALLEL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fontforge config					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/print/fontforge}
  OPTIONS_UNSET+=GTK3
  OPTIONS_SET+=READLINE FREETYPE X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# freetype config					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/print/freetype*}
  OPTIONS_SET+=BROTLI
  OPTIONS_UNSET+=DEBUG
  OPTIONS_SET+=DOCS
  OPTIONS_SET+=LONG_PCF_NAMES
  OPTIONS_SET+=PNG
  OPTIONS_SET+=TABLE_VALIDATION

  OPTIONS_SET+=LCD_FILTERING
  OPTIONS_UNSET+=LCD_RENDERING

  OPTIONS_SET+=TT_SIZE_METRICS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# libcaca config					#
# FTGL - Freetype font rendering in OpenGL		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/libcaca}
  OPTIONS_SET+=DOCS FTGL IMLIB2 SLANG X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# libplacebo config					#
# GLSLANG - since already SLANG above choose that here	#
# If determined better otherwise, change both and all	#
# same for ffmpeg					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/libplacebo}
  OPTIONS_SET+=GLSLANG
  OPTIONS_UNSET+=SHADERC
.endif

.if ${.CURDIR:M*/ports/multimedia/ffmpeg}
  OPTIONS_SET+=GLSLANG
  OPTIONS_UNSET+=SHADERC
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# mysql SASL for client not needed - connections local	#
# also has had issues with cyrus-sasl2			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/databases/mysql57-client}
  OPTIONS_UNSET+=SASLCLIENT
.endif

.if ${.CURDIR:M*/ports/databases/mysql80-client}
  OPTIONS_UNSET+=SASLCLIENT
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# sqlite better config -- luanti (minetest) uses this	#
# Many options formalized here				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/databases/sqlite3}
  OPTIONS_SET+=ARMOR DBPAGE DBSTAT DIRECT_READ DQS EXTENSION FTS3_TOKEN  FTS4 FTS5 MEMMAN METADATA SECURE_DELETE \
		STRIP TCL THREADS UNLOCK_NOTIFY URI
  OPTIONS_UNSET+=EXAMPLES LIKENOTBLOB NORMALIZE NULL_TRIM RBU SORT_REF STATIC STMT TRUSTED_SCHEMA UNKNOWN_SQL \
		UPDATE_LIMIT URI_AUTHORITY
#----
  OPTIONS_SET+=JSON1
  OPTIONS_UNSET+=SESSION
#----
  #OPTIONS_SET+=# none set
  OPTIONS_UNSET+=OFFSET SER1 SOUNDEX
#----
  OPTIONS_SET+=RTREE
  OPTIONS_UNSET+=GEOPOLY RTREE_INT
#----
  OPTIONS_SET+=UNICODE61
  OPTIONS_UNSET+=ICU
#----
  OPTIONS_SET+=TS2
  OPTIONS_UNSET+=TS0 TS1 TS3
#----
  #OPTIONS_SET+=# none set
  OPTIONS_UNSET+=STAT3 STAT4
#----
  OPTIONS_SET+=LIBEDIT
  OPTIONS_UNSET+=READLINE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# cockatrice -- mysql fails to build server needs too	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/cockatrice}
  OPTIONS_UNSET+=MYSQL SERVEATRICE
.endif



#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# net-snmp config					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net-mgmt/net-snmp}
  OPTIONS_SET+=MFD_REWRITES TKMIB
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# ode adjustments					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/ode}
  OPTIONS_UNSET+=GIMPACT OU
  OPTIONS_SET+=DOUBLE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# exult radio conflict fix				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/exult}
  OPTIONS_UNSET+=SDL1
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# heretic radio conflict fix				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/heretic}
  OPTIONS_UNSET+=X11 SDL
  OPTIONS_SET+=FASTX11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# uhexen2 radio conflict fix				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/uhexen2}
  OPTIONS_UNSET+=MAD
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# instead radio conflict fix				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/instead}
  OPTIONS_UNSET+=SDL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# espeak radio conflict fix				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/espeak}
  OPTIONS_UNSET+=PORTAUDIO PULSEAUDIO
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# love luajit conflict 					#
# was partly solved or was I checking it was solved?	#
#_______________________________________________________#

#.if ${.CURDIR:M*/ports/devel/love}
#  OPTIONS_UNSET+=LUAJIT
#.endif
.if ${.CURDIR:M*/ports/devel/love10}
  OPTIONS_UNSET+=LUAJIT
.endif
#.if ${.CURDIR:M*/ports/devel/love*}
#  OPTIONS_UNSET+=LUAJIT
#.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openoffice config					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/editors/openoffice-4}
  OPTIONS_UNSET+=MMEDIA GNOME GNOMEVFS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# casadi build option failure				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/casadi}
  OPTIONS_UNSET+=CLANG
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openblas build options				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/openblas}
  OPTIONS_SET+=AVX AVX2 AVX512 DYNAMIC_ARCH OPENMP
  OPTIONS_UNSET+=INTERFACE64
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# suitesparse build options				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/suitesparse-umfpack}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-amd}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-config}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-camd}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-colamd}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-ccolamd}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif

.if ${.CURDIR:M*/ports/math/suitesparse-cholmod}
  OPTIONS_UNSET+=ATLAS BLIS NETLIB
  OPTIONS_SET+=OPENBLAS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# xorg-drivers configuration -- if scfb ticked		#
# this causes scfb dependency and scfb being		#
# available to load which prevents my AMD graphics 	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/x11-drivers/xorg-drivers}
  OPTIONS_SET+=AMDGPU ATI KEYBOARD LIBINPUT MOUSE
  OPTIONS_UNSET+=NV SCFB VESA
  OPTIONS_UNSET_FORCE+=NV SCFB VESA
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# If options MANPAGE set requires DOCS too		#
# CPACK is experimental option right now.		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/cmake}
  OPTIONS_UNSET=CPACK
  OPTIONS_SET=DOCS MANPAGES
.endif
.if ${.CURDIR:M*/ports/devel/kf5-extra-cmake-modules}
  OPTIONS_SET+=DOCS
.endif
.if ${.CURDIR:M*/ports/devel/ncurses}
  OPTIONS_SET+=DOCS PROFILE
.endif
.if ${.CURDIR:M*/ports/graphics/waffle}
  OPTIONS_SET+=DOCS
.endif
.if ${.CURDIR:M*/ports/devel/ocl-icd}
  OPTIONS_SET+=DOCS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# add some capabilities, all non-defaults, and		#
# test removing fortran option to see what breaks	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/coinmp}
  OPTIONS_SET+=GLPK PARALLEL
  OPTIONS_UNSET+=FORTRAN
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# gkrellm2 configuration -- needs client		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/sysutils/gkrellm2}
  OPTIONS_UNSET+=DOCS NLS NTLM OPENSSL
  OPTIONS_SET+=CLIENT
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# en-hunspell configuration				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/textproc/en-hunspell}
  OPTIONS_SET+=CA_LARGE GB_IZE US_STANDARD
  OPTIONS_UNSET+=CA_STANDARD GB_ISE GB_LARGE US_LARGE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# hplip configuration					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/print/hplip}
  OPTIONS_SET+=SNMP X11
  OPTIONS_UNSET+=FAX SCAN XSANE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# chromium-bsu fix radio options			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/chromium-bsu}
  OPTIONS_UNSET+=OPENAL
  OPTIONS_SET+=SDL_MIXER
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# gdb fix radio options					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/gdb}
  OPTIONS_UNSET+=PORT_READLINE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# ffmpeg has a LOT of options, lets formalize them here		#
#								#
# SSH causes cascade py-cryptography dependency?		#
# V4L (video for linux) is a problem				#
#								#
# disable encoders, unused features, dupes, and kitchensink	#
#_______________________________________________________________#

.if ${.CURDIR:M*/ports/multimedia/ffmpeg}
#  OPTIONS_SET+=AMR_NB AMR_WB ASM ASS BS2B CACA CDIO CELT CODEC2 DAV1D
#  OPTIONS_SET+=DC1394 DOCS DRM FLITE FONTCONFIG FREETYPE FREIOR FRIBIDI
#  OPTIONS_SET+=GLSLANG GME GSM ICONV ILBC KVAZAAR LADSPA LAME LENSFUN
#  OPTIONS_SET+=LIBRSVG2 LIBXML2 LV2 LTO MFX MODPLUG MYSOFA OPENAL OPENGL
#  OPTIONS_SET+=OPENMPT OPTIMIZED_CFLAGS OPUS RIST RTCPU RUBBERBAND SDL
#  OPTIONS_SET+=SNAPPY SPEEX SRT TESSERACT THEORA TWOLAME VAAPI VDPAU
#  OPTIONS_SET+=VIDSTAB VMAF VORBIS VPX VULKAN WEBP X264 X265 XCB XVID
#  OPTIONS_SET+=XVIDEO ZIMG ZMQ ZVBI
  OPTIONS_UNSET+=ALSA AOM DEBUG FDK_AAC JACK LIBBLURAY LV2 LTO
  OPTIONS_UNSET+=OPENH264 OPENJPG POCKETSPHINX PULSEAUDIO RABBITMQ
  OPTIONS_UNSET+=RAV1E SMB SHADERC SNDIO SOXR SSH SVTAV1 SVTHEVC SVTVP9
  OPTIONS_UNSET+=V4L VAPOURSYNTH VO_AMRWBENC
#----
  OPTIONS_SET+=GPL NONFREE
#----
  OPTIONS_SET+=GMP
  OPTIONS_UNSET+=GCRYPT LIBRTMP
#----
  OPTIONS_UNSET+=GNUTLS MBEDTLS
  OPTIONS_SET+=OPENSSL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# vlc adjustments to avoid dbus and other reasons 	#
# QT5 removed from global set options due to this port	#
# SKINS implies QT5 so it must be disabled too		#
# lua seems to have some sort of error			#
#_______________________________________________________#
#.if ${.CURDIR:M*/ports/multimedia/vlc}
#multimedia_vlc_UNSET= QT5 SKINS DBUS AVAHI LUA
#multimedia_vlc_UNSET= SKINS DBUS AVAHI LUA
#OPTIONS_UNSET_FORCE=  SKINS DBUS AVAHI LUA
#.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# vlc has a LOT of options, lets formalize them here		#
# mostly identical to ffmpeg -- duplicated but added more	#
#								#
# SSH causes cascade py-cryptography dependency?		#
# V4L (video for linux) is a problem				#
#								#
# disable encoders, unused features, dupes, and kitchensink	#
#								#
# MAD unset because cores, SHROEDINGER is obsoleted		#
#_______________________________________________________________#

.if ${.CURDIR:M*/ports/multimedia/vlc}
  OPTIONS_SET+=A52 AALIB AMR_NB AMR_WB ASM ASS BS2B CACA CDIO CELT CODEC2 DAV1D
  OPTIONS_SET+=DC1394 DCA DOCS DRM DVDNAV DVDREAD FAAD FLAC FLITE FLUID
  OPTIONS_SET+=FONTCONFIG FREETYPE FREIOR FRIBIDI
  OPTIONS_SET+=GLSLANG GME GSM HARFBUZZ ICONV ILBC JPEG KATE KVAZAAR LADSPA
  OPTIONS_SET+=LAME LENSFUN LIBPLACEBO LIBRSVG2 LIBXML2
  OPTIONS_SET+=LV2 LTO MAD MFX MODPLUG MUSEPACK MYSOFA NCURSES
  OPTIONS_SET+=NOTIFY OGG OPENAL OPENGL OPENMPT
  OPTIONS_SET+=OPTIMIZED_CFLAGS OPUS PNG REALRTSP RIST RTCPU RUBBERBAND SDL
  OPTIONS_SET+=SAMPLERATE SHOUTCAST SNAPPY SPEEX SRT
  OPTIONS_SET+=TAGLIB TESSERACT THEORA TWOLAME
  OPTIONS_SET+=VAAPI VCD VDPAU VIDSTAB VMAF VORBIS VPX VULKAN
  OPTIONS_SET+=WAYLAND WEBP X264 X265 XCB XVID
  OPTIONS_SET+=XVIDEO ZIMG ZMQ ZVBI
  OPTIONS_UNSET+=ALSA AOM DEBUG FDK_AAC JACK LIBBLURAY LIBSSH2 LTO MAD
  OPTIONS_UNSET+=OPENH264 OPENJPG POCKETSPHINX PULSEAUDIO QT5 RABBITMQ
  OPTIONS_UNSET+=RAV1E SDL SCHROEDINGER SKINS SMB SNDIO SOXR SSH STREAM SVTAV1
  OPTIONS_UNSET+=SVTHEVC SVTVP9 V4L VAPOURSYNTH VO_AMRWBENC
  OPTIONS_SET+=GNUTLS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openssh-portable config -- unset insecure option	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/security/openssh-portable}
  OPTIONS_UNSET+=NONECIPHER
  OPTIONS_UNSET_FORCE+=NONECIPHER
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# sundials add blas support				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/sundials}
  OPTIONS_SET+=BLAS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# better maxima config					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/math/maxima}
  OPTIONS_SET+=DOCS EXAMPLES MANPAGES NOUSERINIT TEST XMAXIMA
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# bad option name -- remove samba			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/kdenetwork}
  OPTIONS_UNSET+=FILESHARING
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fix qt-multimedia radio selection			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/multimedia/qt*-multimedia}
  OPTIONS_SET+=ALSA
  OPTIONS_UNSET+=PULSEAUDIO
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fix qt-webengine radio selection			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/multimedia/qt*-multimedia}
  OPTIONS_SET+=ALSA
  OPTIONS_UNSET+=PULSEAUDIO
  OPTIONS_UNSET+=SNDIO
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fix qtcurve radio selection				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/x11-themes/qtcurve}
  OPTIONS_SET+=GTK2 KF5
  OPTIONS_UNSET+=QT5
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# bad audio radio selections -- remove audio support	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/mail/faces}
  OPTIONS_UNSET+=AUDIO NAS RPLAY SOX
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fix pam conflict					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/security/sudo}
  OPTIONS_UNSET+=PAM
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# add claws-mail docs					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/mail/claws-mail}
  OPTIONS_SET+=DOCS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix pinentry				#
# choose default -- unset other make.conf options	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/security/pinentry}
  OPTIONS_SET+=TTY
  OPTIONS_UNSET+=NCURSES FLTK GTK2 QT5 GNOME3
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix neon				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/www/neon}
  OPTIONS_SET+=EXPAT
  OPTIONS_UNSET+=LIBXML
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix claws-mail-bogofilter		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/mail/claws-mail-bogofilter}
  OPTIONS_SET+=SQLITE
  OPTIONS_UNSET+=BDB TC
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# good zbar defaults					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/zbar}
  OPTIONS_SET+=X11 V7
  OPTIONS_UNSET+=GTK2 V4L V6
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# good py-pillow defaults				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/py-pillow}
#  OPTIONS_SET+=X11 V7
  OPTIONS_UNSET+=IMAGEQUANT
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix lua				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/lang/lua5*}
  OPTIONS_UNSET+=LIBEDIT
.endif

.if ${.CURDIR:M*/ports/lang/lua54}
  OPTIONS_UNSET+=LIBEDIT
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix wildmidi				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/wildmidi}
  OPTIONS_SET+=OSS
  OPTIONS_UNSET+=ALSA OPENAL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix glfw				#
#_______________________________________________________#
.if ${.CURDIR:M*/ports/graphics/glfw}
  OPTIONS_SET+=WAYLAND
  OPTIONS_UNSET+=X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio selector fix vkquake				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/vkquake}
  OPTIONS_SET+=MIKMOD
  OPTIONS_UNSET+=MODPLUG XMP
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# rubygem -- take advantage of clang?			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/rubygem-multi_json}
  OPTIONS_SET+=JSON
  OPTIONS_UNSET+=JSON_PURE YAJL_RUBY
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# nss from mozilla purported faster and more featured than openSSL	#
# https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/FAQ	#
#_______________________________________________________________________#

.if ${.CURDIR:M*/ports/devel/apr}
  OPTIONS_SET+=NSS
  OPTIONS_UNSET+=SSL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# gimp help might be unique				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/gimp}
  OPTIONS_SET+=HELP
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openSSL here is uncertain -- purports speedier	#
# http://anrieff.net/ucbench/technical_qna.html		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/archivers/libarchive}
  OPTIONS_SET+=OPENSSL
  OPTIONS_UNSET+=NETTLE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Cannot use libressl so second best is bundled.	#
# except if openssl is used then is unset		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/www/node12}
  OPTIONS_NSET+=BUNDLED_SSL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# radio button conflicts these ports for these options	#
# mpg123 purported to be speedier if given the choice	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/sdl_mixer}
  OPTIONS_SET+=MIKMOD
  OPTIONS_UNSET+=MODPLUG
.endif

.if ${.CURDIR:M*/ports/audio/sdl2_mixer}
  OPTIONS_SET+=MIKMOD MPG123
  OPTIONS_UNSET+=MODPLUG MAD
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# some odd reason doc causes issues? Weird		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/sysutils/cdrtools}
  OPTIONS_UNSET+=DOCS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Openoffice builds or pkg install; immediately cores.	#
#_______________________________________________________#

#WITH_DEBUG_PORTS+=${PKGORIGIN}

WITH_DEBUG_PORTS+=editors/openoffice-devel
WITH_DEBUG_PORTS+=editors/openoffice-4


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# samba option fails build and hal not needed		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/gnome-vfs}
  OPTIONS_UNSET+=HAL SAMBA
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# docs fails build, manpages=docs, and bash not needed	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/security/p11-kit}
  OPTIONS_UNSET+=BASH
  OPTIONS_UNSET+=DOCS
  OPTIONS_UNSET+=MANPAGES
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# I do not use kerberos so none of them are needed      #
# proper is to explicitly set GSSAPI_NONE		#
# pkgs insist ftp/curl include GSSAPI_HEIMDAL		#
#_______________________________________________________#

OPTIONS_UNSET+=KERBEROS HEIMDAL MIT HEIMDAL_BASE KERB_GSSAPI GSSAPI_BASE GSSAPI_MIT
OPTIONS_UNSET+=GSSAPI_HEIMDAL
OPTIONS_SET+=GSSAPI_NONE


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# dependents of curl need TLS_SRP for some things?	#
# that option requires openssl or gnutls		#
# choose gnutls but libssh2 option requires openssl	#
# and TPM causes dependency loop due to gnutls		#
# gnutls causes dependency on nettle which conflicts	#
# with libressl-devel-libtls and tls-srp fails so then	#
# NSS is compromise which works, solves conflicts.	#
#							#
# only supports TLS-SRP with either OpenSSL or GnuTLS 	#
#							#
# libetpan needs something this config removes		#
# which causes claws-mail to fail to build		#
#							#
# Decided to allow openssl and libssh2			#
#							#
# threaded resolver doesn't work with luanti (minetest) #
#							#
# poudriere requires static				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/ftp/curl}
  OPTIONS_SET+=ALTSVC
  OPTIONS_SET+=BROTLI
  OPTIONS_SET+=CA_BUNDLE
  OPTIONS_SET+=COOKIES
  OPTIONS_UNSET+=CURL_DEBUG
  OPTIONS_UNSET+=DEBUG
  OPTIONS_SET+=DOCS
  OPTIONS_SET+=EXAMPLES
  OPTIONS_UNSET+=IDN
  OPTIONS_SET+=IPV6
  OPTIONS_SET+=NTLM
  OPTIONS_SET+=PROXY
  OPTIONS_SET+=PSL
  OPTIONS_SET+=STATIC
  OPTIONS_UNSET+=TLS_SRP
  OPTIONS_SET+=ZSTD

  OPTIONS_SET+=DICT
  OPTIONS_SET+=FTP
  OPTIONS_SET+=GOPHER
  OPTIONS_SET+=HTTP
  OPTIONS_SET+=HTTP2
  OPTIONS_SET+=IMAP
  OPTIONS_UNSET+=LDAP
  OPTIONS_UNSET+=LDAPS
  OPTIONS_UNSET+=LIBSSH
  OPTIONS_SET+=LIBSSH2
  OPTIONS_UNSET+=MQTT
  OPTIONS_SET+=POP3
  OPTIONS_UNSET+=RTMP
  OPTIONS_SET+=RTSP
  OPTIONS_UNSET+=SMB
  OPTIONS_SET+=SMTP
  OPTIONS_SET+=TELNET
  OPTIONS_SET+=TFTP
  OPTIONS_UNSET+=WEBSOCKET

  OPTIONS_UNSET+=GSSAPI_BASE
  OPTIONS_UNSET+=GSSAPI_HEIMDAL
  OPTIONS_UNSET+=GSSAPI_MIT
  OPTIONS_SET+=GSSAPI_NONE

  OPTIONS_SET+=CARES
  OPTIONS_UNSET+=THREADED_RESOLVER

  OPTIONS_UNSET+=GNUTLS
  OPTIONS_SET+=OPENSSL
  OPTIONS_UNSET+=WOLFSSL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# pango has a THAI requirement or firefox throws a fit	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/ftp/curl}
  OPTIONS_SET+=DOCS MANPAGES THAI X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# some things require gnutls built with P11KIT option	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/security/gnutls}
  OPTIONS_UNSET+=TPM
  OPTIONS_SET+=P11KIT
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# nettle via crypto? why does textproc need crypto?	#
# gnutls calls in nettle				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/textproc/libxslt}
  OPTIONS_UNSET+=CRYPTO
.endif

.if ${.CURDIR:M*/ports/devel/py-twisted}
  OPTIONS_UNSET+=TLS
.endif

.if ${.CURDIR:M*/ports/archivers/libarchive}
  OPTIONS_SET+=OPENSSL
  OPTIONS_UNSET+=MBEDTLS NETTLE
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# some things cannot handle libressl			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/krdc}
  OPTIONS_UNSET+=FREERDP
.endif

.if ${.CURDIR:M*/ports/net/remotebox}
  OPTIONS_UNSET+=FREERDP
.endif

.if ${.CURDIR:M*/ports/net/remina-plugins}
  OPTIONS_UNSET+=RDP
.endif

.if ${.CURDIR:M*/ports/net/guacamole-server}
  OPTIONS_UNSET+=RDP
.endif

.if ${.CURDIR:M*/ports/net/vinagre}
  OPTIONS_UNSET+=RDP
.endif

.if ${.CURDIR:M*/ports/www/node}
  OPTIONS_UNSET+=BUNDLED_SSL
.endif

.if ${.CURDIR:M*/ports/devel/qca}
  OPTIONS_SET+=OPENSSL
.endif

.if ${.CURDIR:M*/ports/dns/ldns}
  OPTIONS_UNSET+=DANETAUSAGE GOST
  OPTIONS_SET+=DRILL
.endif

.if ${.CURDIR:M*/ports/dns/unbound}
  OPTIONS_UNSET+=ECDSA GOST EVAPI
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# npm -- node package manager, keep synced with node	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/www/npm}
  OPTIONS_SET+=NODE
  OPTIONS_UNSET+=NODE10 NODE12
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Maybe limit things with ATKONLY option?		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/accessibility/at-spi2-core}
  OPTIONS_SET+=ATKONLY
  OPTIONS_SET+=X11
.endif

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# This adds samba support that I don't use		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/kdenetwork}
  OPTIONS_UNSET+=FILESHARING
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# gtk3 adjustments but will it still ask for dbus?	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/x11-toolkits/gtk30}
  OPTIONS_UNSET+=ATK_BRIDGE CLOUDPRINT COLORD DEBUG
  OPTIONS_SET+=BROADWAY CUPS WAYLAND X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openal -  avoiding dbus means no config utility	#
# Warnings from this report "alsoft" self-identifier	#
# qt5 requires dbus so we avoid qt5 too			#
# sndio causes trouble for firefox audio		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/audio/openal-soft}
  OPTIONS_UNSET+=CONFIG EXAMPLES JACK PORTAUDIO PULSEAUDIO SNDIO UTILS
  OPTIONS_SET+=OSS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Try optimal firefox config				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/www/firefox}
  OPTIONS_UNSET+=CANBERRA DBUS DEBUG OPTIMIZED_CFLAGS PROFILE LIBPROXY TEST ALSA JACK PULSEAUDIO SNDIO
  OPTIONS_SET+=LTO FFMPEG
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# does firefox issue with libressl via libevent remain?	#
# mysql needs libevent to have openssl			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/libevent}
#  OPTIONS_UNSET+=OPENSSL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Minetest special adjustments test			#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/games/minetest}
#  OPTIONS_SET+=CURL DOCS EXAMPLES LUAJIT SOUND CLIENT SERVER FREETYPE
#  OPTIONS_UNSET+=NCURSES NLS PGSQL LEVELDB REDIS SPATIAL
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# override defaults for llvm?				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/devel/llvm*}
  OPTIONS_UNSET+=BE_FREEBSD BE_STANDARD
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# match rust-nightly					#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/lang/rust}
  OPTIONS_UNSET+=GDB
## maybe firefox needs webassembly?
  OPTIONS_SET+=WASM
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# mDNSResponder vs Avahi choose Avahi			#
# if mDNSResponder does not require dbus, revise	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/ntp-devel}
 CONFLICTS+=avahi*
.endif
.if ${.CURDIR:M*/ports/audio/murmur}
 CONFLICTS+=avahi*
.endif

.if ${.CURDIR:M*/ports/devel/android-tools-adb}
  OPTIONS_UNSET+=MDNSRESPONDER
.endif

.if ${.CURDIR:M*/ports/audio/shairplay}
  OPTIONS_UNSET+=MDNSRESPONDER
.endif

.if ${.CURDIR:M*/ports/audio/xmms2}
  OPTIONS_UNSET+=MDNS_APPLE
  OPTIONS_SET+=MDNS_AVAHI
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Fix circular dependency loops				#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/net/avahi}
  OPTIONS_UNSET+=GTK
.endif

.if ${.CURDIR:M*/ports/print/cups}
  OPTIONS_UNSET+=AVAHI GNUTLS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  remove dbus from cups				#
#_______________________________________________________#
.if ${.CURDIR:M*/ports/print/cups}
  OPTIONS_UNSET+=DBUS
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# ImageMagick6 vs 7 conflict -- most use V6		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/zbar}
  OPTIONS_UNSET+=V7
  OPTIONS_SET+=V6
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# damned wayland additions				#
# some cause problems? Looks like I changed my mind?	#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/mesa-dri}
#    OPTIONS_UNSET+=WAYLAND
    OPTIONS_SET+=WAYLAND
.endif
.if ${.CURDIR:M*/ports/graphics/mesa-libs}
#    OPTIONS_UNSET+=WAYLAND
    OPTIONS_SET+=WAYLAND
.endif
.if ${.CURDIR:M*/ports/devel/sdl20}
#    OPTIONS_UNSET+=VIDEO_WAYLAND
    OPTIONS_SET+=VIDEO_WAYLAND
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  sdl2 options settings				#
#_______________________________________________________#
.if ${.CURDIR:M*/ports/devel/sdl20}
    OPTIONS_UNSET+=CSD DBUS FCITX HIDAPI IBUS JOYSTICK \
		ALSA JACK NAS PIPEWIRE PULSEAUDIO SNDIO
    OPTIONS_SET+=SAMPLERATE UDEV \
		OSS \
		KMSDRM OPENGL OPENGLES VULCAN X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  libglvnd must have X11 set for cairo			#
#_______________________________________________________#
.if ${.CURDIR:M*/ports/graphics/libglvnd}
    OPTIONS_SET+=X11
    OPTIONS_SET_FORCE=X11
.endif


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# ImageMagick7  - explicitly set options		#
#_______________________________________________________#

.if ${.CURDIR:M*/ports/graphics/ImageMagick7}
  OPTIONS_UNSET+=FPX GRAPHVIZ GSLIB
  OPTIONS_SET+=16BIT_PIXEL BZIP2 DJVU DOCS FFMPEG FFTW FLIF FONTCONFIG FREETYPE HDRI HEIF JBIG JPEG
  OPTIONS_SET+=JXL LCMS2 LQR LZMA MODULES OPENEXR OPENMP PANGO PDF PERL PNG RAQM RAW SVG THREADS
  OPTIONS_SET+=TIFF WEBP WMF
.endif

# ---------------------------------------------<  End user additions and modifications >--------------------------------------------- #


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Automatically added portconf section -- DON'T TOUCH	#
#_______________________________________________________#


Tuesday, March 12, 2024

Was dialog4ports now portconfig

Somewhere I ran across the existence of portconfig which is a drop-in replacement for dialog4ports.  I installed and I believe removed dialog4ports shortly after.  What I did not do was investigate the manpage and that documentation already installed.  I have now tried some of its options and saw how it is somewhat different.  I never thought to look at the manpage for dialog4ports but looking at it shows me that its replacement has some improvements also.  Portconfig is indeed a drop-in replacement, all that needs to be done to switch to it is remove the old and install the new.

This is more of an introduction than anything, so how about comparing the manpages.

DIALOG4PORTS(1)		    General Commands Manual	       DIALOG4PORTS(1)          PORTCONFIG(1)           FreeBSD General Commands Manual          PORTCONFIG(1)

NAME                                                                                    NAME
       dialog4ports -- a dialog	for FreeBSD ports                                            portconfig – port options

SYNOPSIS                                                                                SYNOPSIS
       Port environment	variables dialog4ports.                                              portconfig [-h | -v]

DESCRIPTION                                                                             DESCRIPTION
       dialog4ports is a utility for providing a dialog	interface to configure                The portconfig utility provides a TUI to customize the options to build a
       ports options                                                                         port.  The following options are available:

ENVIRONMENT                                                                                  -h      Display options, a short description and exit.
       The list	of environment variables dialog4ports:
                                                                                             -v      Show version and exit.
       D4PHEIGHT
	 Dialog	height.	(Default value:	0)                                                   The following user interface features are available:

       D4PMINHEIGHT                                                                          F1 key  General PORTS usage.
	 Minimal dialog	height,	for example:
	 if  D4PMINHEIGHT     5	 and  count of options elements(1-4) less than               Help button
	 D4PMINHEIGHT, then height will	extended to 5. (Default	value: 0)                            Specific port help, if pkg-help exists.

       D4PWIDTH                                                                              Space key
	 Dialog	width. (Default	value: 80)                                                           Select/deselect an option.

       D4PFULLSCREEN                                                                    ENVIRONMENT
	 Dialog	full screen mode. (Default: N)                                               The following environment variables can customize portconfig:

       D4PALIGNCENTER                                                                        NO_COLOR
	 Text in dialog	becomes	to center. (Default: N)                                              Disable colors if present and not an empty string (regardless of
                                                                                                     its value).
       D4PASCIILINES
	 Use ASCII character for line drawing. (Default: N)                                  PORTCONFIG_ALIGNCENTER
                                                                                                     Align options to center, “YES” to enable, default left.
SEE ALSO
       dialog(3)                                                                             PORTCONFIG_ASCIILINES
                                                                                                     Ascii characters to draw lines, “YES” to enable.
AUTHORS
       The dialog4ports	utility	was written by:                                              PORTCONFIG_FULLSCREEN
       Ilya A. Arkhipov	<rum1cro@yandex.ru>                                                          Fullscreen mode, “YES” to enable.
       with help from:
       Eitan Adler <eadler@FreeBSD.org>,                                                     PORTCONFIG_HEIGHT
       Baptiste	Daroussin <bapt@FreeBSD.org>,                                                        Fixed height, default autosize.
       Alexey Dokuchaev	<danfe@FreeBSD.org>
                                                                                             PORTCONFIG_MINHEIGHT
FreeBSD	13.2			 March 9, 2013		       DIALOG4PORTS(1)                       Minimum height, takes effect only with autosize.

                                                                                             PORTCONFIG_MINWIDTH
                                                                                                     Minimum width, takes effect only with autosize.

                                                                                             PORTCONFIG_NOLINES
                                                                                                     Do not draw lines, “YES” to enable.

                                                                                             PORTCONFIG_NOSHADOW
                                                                                                     “YES” to disable dialog shadow.

                                                                                             PORTCONFIG_WIDTH
                                                                                                     Fixed width, default autosize.

                                                                                           Compatibility
                                                                                             The following environment variables are available for compatibility:
                                                                                                   D4PALIGNCENTER        PORTCONFIG_ALIGNCENTER
                                                                                                   D4PASCIILINES         PORTCONFIG_ASCIILINES
                                                                                                   D4PFULLSCREEN         PORTCONFIG_FULLSCREEN
                                                                                                   D4PHEIGHT             PORTCONFIG_HEIGHT
                                                                                                   D4PMINHEIGHT          PORTCONFIG_MINHEIGHT
                                                                                                   D4PWIDTH              PORTCONFIG_WIDTH

                                                                                        EXIT STATUS
                                                                                             The portconfig utility exits 0 on success, and >0 if an error occurs.

                                                                                        SEE ALSO
                                                                                             ports(7)

                                                                                        AUTHORS
                                                                                             The portconfig utility was written by Alfonso Sabato Siciliano
                                                                                             <asiciliano@FreeBSD.org>.

                                                                                        THANKS TO
                                                                                             Baptiste Daroussin <bapt@FreeBSD.org> for suggestions, help, and testing.

                                                                                        FreeBSD 14.0-STABLE             August 4, 2023             FreeBSD 14.0-STABLE

There are some environment variables that are new.  We are all accustomed to the dialog4ports config screen but below is a rather clean and crisp portconfig screen for my unofficial minetest-dev port.

The following is what I placed in my user's .xinitrc file so that I will get the result above regardless of defaults.  I think I could use a different group of settings in the .cshrc file for root, which would function primarily if I were at console rather than in a terminal that I 'switched user' to root.  I have decided that I need the lines and I prefer not fullscreen, and centered looks best.  I can do either black and white like the image above or use the blue and white and black the way the former dialog4ports had.

##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
## Portconfig options via environment vars              ##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
# Disable colors if present and not an empty string (regardless of its value)
NO_COLOR="NO"
export NO_COLOR

# Align options to center, “YES” to enable, default left.
PORTCONFIG_ALIGNCENTER="YES"
export PORTCONFIG_ALIGNCENTER

# Ascii characters to draw lines, “YES” to enable.
PORTCONFIG_ASCIILINES="NO"
export PORTCONFIG_ASCIILINES

# Fullscreen mode, “YES” to enable.
#PORTCONFIG_FULLSCREEN=
#export PORTCONFIG_FULLSCREEN

# Fixed height, default autosize.
#PORTCONFIG_HEIGHT=
#export PORTCONFIG_HEIGHT

# Minimum height, takes effect only with autosize.
#PORTCONFIG_MINHEIGHT=
#export PORTCONFIG_MINHEIGHT

# Minimum width, takes effect only with autosize.
#PORTCONFIG_MINWIDTH=
#export PORTCONFIG_MINWIDTH

# Do not draw lines, “YES” to enable.
PORTCONFIG_NOLINES="NO"
export PORTCONFIG_NOLINES

# “YES” to disable dialog shadow.
PORTCONFIG_NOSHADOW="NO"
export PORTCONFIG_NOSHADOW

# Fixed width, default autosize.
#PORTCONFIG_WIDTH=
#export PORTCONFIG_WIDTH

Whether you define any of the variables above within your .cshrc or .xinitrc or another file, or at the moment directly on the commandline, you will still need to comply with the format and syntax for the shell that is used.  How you decide which options to use or how to configure it may take a little exploration to understand.  There do not seem to be shadows without color and it may be that you agree with me that lines are useful.  One other thing to consider when using a terminal is whether the font used has the line characters and if you prefer a font that has none you may want the ascii lines instead.

WARNING: The NO_COLOR environment variable will also be interpreted by xterm to disable colors which may eliminate one way portclippy displays the differences needing adjustment.

If you like white text on a black background, want to be very specific about the dimensions of the dialog, or prefer color without shadows or lines, then this portconfig will be able to do all this.  It may be that this would become the permanent replacement for dialog4ports but even if it does not, while it is maintained we have two options for our port configuration menu needs.

Monday, March 11, 2024

Poudriere bulk build lists

I may have briefely mentioned or possibly even described how I collect what is installed on my system for rebuilding via poudriere.  I have two methods that I use from time to time, one takes a list direct from those directories which exist in the ports tree, and the other uses pkg to collect what is installed already.  There are only two areas which I am most likely to install all or a majority of the ports and that is fonts and games.  I might use these lists periodically to ensure that new things were added.  I could use the ports tree built-in mechanisms to build every port in a category such as fonts or games but this means I would get items I do not desire.  Building via poudriere will permit me to limit to what I wish and more quickly handle the task as it would work upon a bulk list and has a blacklist capability.

The simple script to collect all the fonts that could be installed looks like this:

#!/bin/sh
[ -f /root/allfonts-list ] && rm /root/allfonts-list
for dir in `ls /usr/ports/x11-fonts`
 do
  echo x11-fonts/$dir >> /root/allfonts-list
done

The same for games is only changed a little:

#!/bin/sh
[ -f /root/allgames-list ] && rm /root/allgames-list
for dir in `ls /usr/ports/games`
 do
  echo games/$dir >> /root/allgames-list
done

My script to create the gross bulk list as well as lists divided into categories of what ports are installed is a bit larger and provides more feedback than most of my scripts.  It was quieter but I decided that it is nice to know what its doing rather than possibly failing, so more of my newer or re-written scripts include a bit more echoes.  You may notice in this script (below) that I specifically exclude the various llvm ports from the bulk list.  These I won't ever need built as non-dependent ports so I expect that poudriere or pkg would draw them in automatically.  This also eliminates the chance that I would have multiple versions of llvm in any bulk list which could become outdated and unneeded.  The blacklist can further eliminate old versions of llvm which could be dependencies but probably ought to be newer versions when upstream for those ports finally get to that task.

#!/bin/sh
echo "Clearing /var/tmp p-keglist files.."
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 >> /var/tmp/installed-pkgs-gross-added &&echo -n "."
cat /var/tmp/installed-pkgs-gross-added | sed -E 's:devel\/llvm[0-9]*::'| 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.."
category=0

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

echo $category $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.."
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

I had noticed that my bulk list constructing script seemed to be including duplicates while my intent at that time had been to maintain a list of what had been installed which had newer items added.  I want to keep track of the things I consistently have installed on my system but which due to some upgrade might be left out due to becoming uninstalled (unintentionally).  During that moment if I were to create the bulk list, those items which I didn't truly want removed from my system would not be included in my bulk list.  My solution may have been faulty, to add-to my bulk list, which caused the duplicates in the bulk listings.  This is why I include a little bit of an attempt to remove possible duplicate lines.  There is also a bulk list which excludes games because those might not be what is most important at the time.

Now that the bulk lists exist, one could issue the following command for their poudriere build process poudriere bulk -j 14amd64 -f `p-keg-deblack installed-pkgs-games` with some small explanation that the "installed=pkgs-games" is the bulk list preceded with -f to indicate to poudriere to take the list from a file.  The "p-keg-deblack" is a script mentioned prevously which filters blacklisted items before sending the list to poudriere, it acts upon the bulk list and the content within the ` characters is seen by poudriere as "installed-pkgs-games-deblack" which is a new file it created.  The -j indicates the poudriere jail that it will use for building.  The blacklist can be crafted how ever you wish, my own and a revised p-keg-deblack script is shown in a previous blog post, Working on a blacklist which may be something you could use, however, Essential caveat: Use this script at your own risk, I make no promises.

Working on a blacklist

The ports-mgmt tool poudriere as a local package builder for installing built ports on the same system is a pretty efficient and effective tool nearly all of the time.  It seems that the default or more well-known method is to build everything in the entire ports tree, surely because the primary or initial intent of this tool was for that particular task.  Whether you use a subset with the -f option and a filename of listed port origins, or use that default massive build, you will be able to get some scrutiny on the builds via poudriere's testing, and bunch of ports will be added to your repository.  It will also build multiple ports in rough parallel which speeds the whole process.  Sometimes even when you give it up to the four or six processor cores worth of builds to do at the same time, it will drop to fewer because a larger dependency like llvm or rust is needed as an update for further ports depending on those.  The file list option I mention is one way to determine what is built, but you can more forcefully deny other things from being built by creating a blacklist.

A blacklist for poudriere is simply a listing of port origins in a file and can include comments or further organization any way you wish.  This file is created and placed in the poudriere directory.  The manpage describes the required filename:

   Blacklist ports
     You can also specify a blacklist which will disallow the lists port
     origins from building on the matched jail. Any of the following are
     allowed and will all be used in the order shown:

           /usr/local/etc/poudriere.d/blacklist
           /usr/local/etc/poudriere.d/<setname>-blacklist
           /usr/local/etc/poudriere.d/<tree>-blacklist
           /usr/local/etc/poudriere.d/<jailname>-blacklist
           /usr/local/etc/poudriere.d/<tree>gt;-<setname>-blacklist
           /usr/local/etc/poudriere.d/<jailname>-<tree>-blacklist
           /usr/local/etc/poudriere.d/<jailname>-<setname>-blacklist
           /usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-blacklist

     If QEMU is being used then a special qemu blacklist is also loaded.
           /usr/local/etc/poudriere.d/qemu-blacklist

I have been using the jailname option as this is how I have been building my ports, I have not looked deeper into the other methods yet.  My jail is 14amd64, this means the proper path for my blacklist is /usr/local/etc/poudriere.d/14amd64-blacklist and below is what mine looks like at present.

# 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		#
#_______________________________________________________#
games/minetest-dev
games/minetestmapper-dev
x11-toolkits/irrlicht-minetest
x11-wm/fvwm3-dev
graphics/feh-dev
graphics/libthorvg
games/lutris-freebsd
games/eternallands-dev
games/eternallands-data
databases/dbeaver-dev
devel/distcc-dev


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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  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		#
#							#
# favoring llvm13					#
#_______________________________________________________#
#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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  This built with python39 not 38 as makefile expects	#
#							#
# Need to 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


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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# 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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  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


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  Avoid all nvidia -- hidden deps			#
#_______________________________________________________#
x11-drivers/xf86-video-scfb


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#  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

Lots of text, many comments.  I have changed my mind about building and installing various things, used the standard ports tree for most and chose custom ones for others.  Eventually if I take the time, I might better understand what some of the other poudriere build methods mean, and possibly could gain a bit more flexibility with how I bulk build via my lists.

There is no other need except to create and properly place the blacklist file, it is found without an added commandline option, but for me, I would issue poudriere bulk -j 14amd64 -f `p-keg-deblack installed-pkgs-gross` because I discovered that poudriere would cull them as part of its initial process.  I believe that there is no need to send a list of files which may include blacklisted items, so I pre-remove them from the initial list.  This alleviates a little of the extra, but poudriere will still use the blacklist file if there still remain hidden among dependencies things I do not desire built.

The p-keg-deblack script is described in a prior blog post, poudriere blacklist filter but I had since revised it as below:

#!/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

I'll repeat myself as I said previously, Essential caveat: Use this script at your own risk, I make no promises.

Whether you simply use the blacklist mechanism within poudriere or pre-filter your file list with my script, either way there will be fewer ports built into packages in your repo.  There is no need for the whole circus including troupe of clowns to be handled by your system, if your purpose is a local repo for your own use and install.  I make larger bulk lists which may include all of the games or all of the fonts, and neither might all be installed, so I use the blacklist to avoid some I wouldn't use.  Those two bulk lists would be made directly from what is present in the ports tree while other things I install are based on what I do have installed already on my system.  Build your needed ports into installed packages through the use of poudriere, its a good tool for the average user when its limited to what you need rather than everything it might ordinarily act upon without a blacklist.

Frequently viewed this week