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

Sunday, March 31, 2024

Easy fresh hobo HDD

It was a suprisingly simple fresh install on an attached HDD using some cables to power and then access by USB.  I put together a seperate hard drive to use on a machine I do not own.  I had the 14.0 installer on a usb, the only question was which attached drive via the bios boot menu would be the one among many.  The bios menu does show 'transcend' for the usb3.0 reader which is good but the real HDD attached via usb looked to blend into all the others.  I figured it out (maybe a semi-random guess) and got FreeBSD installed clean.

I chose ports and source, chose various needed options, and it installed as a ZFS stripe to the one drive.  The 14.0 installer is quite nice actually, even though it is not vastly different than most in the past.  I cannot make a custom kernel or reduced install since this will be used with hardware I cannot know right now, it may have nVidia and intel.  My next task was to get as much setup as possible so that when I finally use this drive I will be able to get right back to minetest or anything else.

I began with trying to install fvwm3 which gave me the temporary error that pkg was not yet setup.  Once pkg was functional, I installed fvwm3, then xorg-server and xorg-drivers, I tried to startx but it was not yet present, a very simple solitary line "exec fvwm3" was in my .xinitrc file.  Installing xinit and then xauth solved the startx issue.  I could get fvwm3 up but quickly realized xterm was not yet present.  I looked at the fvwm menu option for "XDG Menu" which needed py39-xdg, and after that I fleshed out most of my usual desktop items.  I installed firefox, gkrellm2, flameshot, and feh.

I chose to create a unique wallpaper for this portable 'hobo' drive, and then I tried to add it to the fvwm options for wallpaper but it wasn't displaying how I wished.  It took a bit of time before I figured out that what I needed was feh --no-fehbg --bg-max hobo_wall.png & in my .xinitrc above the exec fvwm3 line.  Everything was now about as workable as I could want, the rest I needed was to copy a bunch of things from my primary box, like my .cshrc and 'Ported_Software' and Blog directories.  I forgot to add bluefish but that is just one thing, if I end up writing another blog post via the drive running on another's pc.

This makes me wonder about my struggles to restore a desktop or graphics on my primary box when something disturbs what was installed and configured.  Certainly installing everything by pkg from the FreeBSD repo means it should all just work which is good, and I guess proves how much I need to learn or how fragile things can be when you customize.  I could have used desktop-installer but I did not, and succeeded anyway.  It definitely helps to have an idea of which components are necessary to get a desktop GUI up, though fvwm is much simpler than KDE or any other all-encompassing Desktop Environment.

Thursday, March 28, 2024

Streamlining minetest

Not long ago the upstream minetest developers made a commit which would fold irrlichtMt back into minetest.The minetest devs split the two apart quite a long time ago so they could focus on what they needed to strip out of irrlicht and what needed to be customized for their own needs.  With this recent commit it seems as though much of that effort has been accomplished and further improvements would be made with it more integral to minetest once more.  I was not ready to make this overhaul of my own Makefile but I knew I would soon enough.

The first thing I did was to revise the minetest Makefile for the recent commit date and hash, then I changed directory into /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/minetest-6a7a613741fe32fa14897a4f780d7382105a103c/ so that I could check the cmake options via

cmake -L | awk '{if(f)print} /-- Cache values/{f=1}' > ../../cmake_options_new

with a diff.  Since I had the previous cmake_options gathered in the same fashion, I could take a diff to see how things changed.  This would also prove to me that nearly all of the Makefile options from irrlicht-minetest would be shifted into minetest-dev.

diff -y -W 120 cmake_opts cmake_opts_new | more

APPLY_LOCALE_BLACKLIST:BOOL=ON                                  APPLY_LOCALE_BLACKLIST:BOOL=ON
BUILD_BENCHMARKS:BOOL=FALSE                                     BUILD_BENCHMARKS:BOOL=FALSE
BUILD_CLIENT:BOOL=TRUE                                          BUILD_CLIENT:BOOL=TRUE
BUILD_DOCUMENTATION:BOOL=TRUE                                   BUILD_DOCUMENTATION:BOOL=TRUE
                                                           >    BUILD_EXAMPLES:BOOL=OFF
BUILD_SERVER:BOOL=FALSE                                         BUILD_SERVER:BOOL=FALSE
BUILD_UNITTESTS:BOOL=TRUE                                       BUILD_UNITTESTS:BOOL=TRUE
CMAKE_BUILD_TYPE:STRING=Release                                 CMAKE_BUILD_TYPE:STRING=Release
CMAKE_INSTALL_PREFIX:PATH=/usr/local                            CMAKE_INSTALL_PREFIX:PATH=/usr/local
CUSTOM_BINDIR:STRING=                                           CUSTOM_BINDIR:STRING=
CUSTOM_DOCDIR:STRING=                                           CUSTOM_DOCDIR:STRING=
CUSTOM_EXAMPLE_CONF_DIR:STRING=                                 CUSTOM_EXAMPLE_CONF_DIR:STRING=
CUSTOM_ICONDIR:STRING=                                          CUSTOM_ICONDIR:STRING=
CUSTOM_LOCALEDIR:STRING=                                        CUSTOM_LOCALEDIR:STRING=
CUSTOM_MANDIR:STRING=                                           CUSTOM_MANDIR:STRING=
CUSTOM_SHAREDIR:STRING=                                         CUSTOM_SHAREDIR:STRING=
CUSTOM_XDG_APPS_DIR:STRING=                                     CUSTOM_XDG_APPS_DIR:STRING=
ENABLE_CURL:BOOL=ON                                             ENABLE_CURL:BOOL=ON
ENABLE_CURSES:BOOL=ON                                           ENABLE_CURSES:BOOL=ON
ENABLE_GETTEXT:BOOL=ON                                          ENABLE_GETTEXT:BOOL=ON
                                                           >    ENABLE_GLES1:BOOL=OFF
                                                           >    ENABLE_GLES2:BOOL=OFF
ENABLE_LEVELDB:BOOL=ON                                          ENABLE_LEVELDB:BOOL=ON
ENABLE_LTO:BOOL=TRUE                                            ENABLE_LTO:BOOL=TRUE
ENABLE_LUAJIT:BOOL=ON                                           ENABLE_LUAJIT:BOOL=ON
                                                           >    ENABLE_OPENGL:BOOL=ON
                                                           >    ENABLE_OPENGL3:BOOL=ON
ENABLE_POSTGRESQL:BOOL=ON                                       ENABLE_POSTGRESQL:BOOL=ON
ENABLE_PROMETHEUS:BOOL=OFF                                      ENABLE_PROMETHEUS:BOOL=OFF
ENABLE_REDIS:BOOL=ON                                            ENABLE_REDIS:BOOL=ON
ENABLE_SOUND:BOOL=ON                                            ENABLE_SOUND:BOOL=ON
ENABLE_SPATIAL:BOOL=ON                                          ENABLE_SPATIAL:BOOL=ON
ENABLE_SYSTEM_GMP:BOOL=ON                                       ENABLE_SYSTEM_GMP:BOOL=ON
ENABLE_SYSTEM_JSONCPP:BOOL=ON                                   ENABLE_SYSTEM_JSONCPP:BOOL=ON
ENABLE_TOUCH:BOOL=OFF                                           ENABLE_TOUCH:BOOL=OFF
ENABLE_UPDATE_CHECKER:BOOL=(;NOT;TRUE;)                         ENABLE_UPDATE_CHECKER:BOOL=(;NOT;TRUE;)
GETTEXT_MSGFMT:FILEPATH=/usr/local/bin/msgfmt                   GETTEXT_MSGFMT:FILEPATH=/usr/local/bin/msgfmt
INSTALL_DEVTEST:BOOL=FALSE                                      INSTALL_DEVTEST:BOOL=FALSE
IRRLICHTMT_BUILD_DIR:PATH=                                 <
IrrlichtMt_DIR:PATH=/usr/local/lib/cmake/IrrlichtMt        <
LEVELDB_INCLUDE_DIR:PATH=/usr/include                           LEVELDB_INCLUDE_DIR:PATH=/usr/include
LEVELDB_LIBRARY:FILEPATH=LEVELDB_LIBRARY-NOTFOUND               LEVELDB_LIBRARY:FILEPATH=LEVELDB_LIBRARY-NOTFOUND
REDIS_INCLUDE_DIR:PATH=REDIS_INCLUDE_DIR-NOTFOUND               REDIS_INCLUDE_DIR:PATH=REDIS_INCLUDE_DIR-NOTFOUND
REDIS_LIBRARY:FILEPATH=REDIS_LIBRARY-NOTFOUND                   REDIS_LIBRARY:FILEPATH=REDIS_LIBRARY-NOTFOUND
REQUIRE_LUAJIT:BOOL=OFF                                         REQUIRE_LUAJIT:BOOL=OFF
RUN_IN_PLACE:BOOL=FALSE                                         RUN_IN_PLACE:BOOL=FALSE
                                                           >    SDL2_DIR:PATH=/usr/local/lib/cmake/SDL2
SPATIAL_INCLUDE_DIR:PATH=/usr/local/include                     SPATIAL_INCLUDE_DIR:PATH=/usr/local/include
SPATIAL_LIBRARY:FILEPATH=/usr/local/lib/libspatialindex.        SPATIAL_LIBRARY:FILEPATH=/usr/local/lib/libspatialindex.
USE_GPROF:BOOL=FALSE                                            USE_GPROF:BOOL=FALSE
                                                           >    USE_SDL2:BOOL=ON
VERSION_EXTRA:STRING=                                           VERSION_EXTRA:STRING=
WARN_ALL:BOOL=TRUE                                              WARN_ALL:BOOL=TRUE

Before I began the attempted reinstall, I removed irrlichtMt that was installed which also caused minetest to be removed.  This way I can know whether the newly incorporated irrlichtMt will satisfy the minetest build.  Output of the build seems to indicate that I might have a few things to adjust, although most do not seem to be critical issues I suppose I will need to add the jpeg to USES.

====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
====> Running Q/A tests (stage-qa)
Error: /usr/local/bin/minetest is linked to /usr/local/lib/libjpeg.so.8 from graphics/jpeg-turbo but it is not declared as a dependency
Warning: you need USES+=jpeg
Warning: you might not need LIB_DEPENDS on libpng.so
Warning: you might not need LIB_DEPENDS on liblua-5.4.so
Warning: you might not need LIB_DEPENDS on libSDL2.so
Warning: you might not need LIB_DEPENDS on libSDL2_ttf.so
Warning: you might not need LIB_DEPENDS on libGL.so
Warning: you might not need LIB_DEPENDS on libopenal.so.1
===>  Installing for minetest-dev-g20240326
===>  Checking if minetest-dev is already installed
===>   Registering installation for minetest-dev-g20240326
pkg-static: duplicate file listing: /usr/local/etc/rc.d/minetest, ignoring
Installing minetest-dev-g20240326...
===> Creating groups.
Using existing group 'minetest'.
===> Creating users
Using existing user 'minetest'.
==> Running trigger: desktop-file-utils.ucl
Building cache database of MIME types
==> Running trigger: gtk-update-icon-cache.ucl
Generating GTK icon cache for /usr/local/share/icons/hicolor
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/bin/minetestserver
/usr/local/bin/minetest

      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/minetest

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
https://www.minetest.net/
root@ichigo:/usr/home/tigersharke/Ported_Software/games/minetest-dev #

A quick test proved that everything runs well enough to show the main menu and access a server, so at least with most of the usual options selected for test builds-- I don't use touch option for my client nor most or any in the Admin/Dev section, it built fine.

                 ┌───────────────────────────────────────┤minetest-dev-g20240326├────────────────────────────────────────┐
                 │ 'F1' for Ports Collection help.                                                                       │
                 │ ┌───────────────────────────────────────────────────────────────────────────────────────────────────┐ │
                 │ │──────────────────────────────────────── Database support ─────────────────────────────────────────│ │
                 │ │[ ] LEVELDB        Enable LevelDB backend                                                          │ │
                 │ │[ ] PGSQL          Enable PostgreSQL map backend                                                   │ │
                 │ │[ ] REDIS          Enable Redis backend                                                            │ │
                 │ │──────────────────────────────────────── Admin/Dev needs ──────────────────────────────────────────│ │
                 │ │[X] BENCHMARKS     Build benchmarks (Adds some benchmark chat commands)                            │ │
                 │ │[X] DEVTEST        Install Development Test game also (INSTALL_DEVTEST)                            │ │
                 │ │[X] DOCS           Build and install documentation (via doxygen)                                   │ │
                 │ │[X] EXAMPLES       BUILD_EXAMPLES                                                                  │ │
                 │ │[X] NCURSES        Enables server side terminal (cli option: --terminal)                           │ │
                 │ │[X] PROFILING      Use gprof for profiling                                                         │ │
                 │ │[X] PROMETHEUS     Build with Prometheus metrics exporter                                          │ │
                 │ │[X] TOUCH          Build with touch interface support (to test on amd64)                           │ │
                 │ │[X] UNITTESTS      Build unit test sources (BUILD_UNITTESTS)                                       │ │
                 │ │─────────────────────────────────────── Client essentials ─────────────────────────────────────────│ │
                 │ │[X] CURL           Enable cURL support for fetching media: contentdb                               │ │
                 │ │[X] FREETYPE       Support for TrueType fonts with unicode                                         │ │
                 │ │[X] NLS            Native Language Support (ENABLE_GETTEXT)                                        │ │
                 │ │[X] SOUND          Enable sound via openal-soft                                                    │ │
                 │ │[X] SPATIAL        Enable SpatialIndex (Speeds up AreaStores)                                      │ │
                 │ │───────────────────────────────────────── Other options ───────────────────────────────────────────│ │
                 │ │[X] LTO            Build with IPO/LTO optimizations (smaller and more efficient than regular build)│ │
                 │ │─────────────────────────────────────── System subsitutes ─────────────────────────────────────────│ │
                 │ │[X] SYSTEM_FONTS   Use or install default fonts from ports                                         │ │
                 │ │[X] SYSTEM_GMP     Use gmp from ports (ENABLE_SYSTEM_GMP)                                          │ │
                 │ │[X] SYSTEM_JSONCPP Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)                                  │ │
                 │ │[X] SYSTEM_LUAJIT  Use or install luajit-openresty from ports                                      │ │
                 │ │──────────────────────────── Software components [select at least one] ────────────────────────────│ │
                 │ │[X] CLIENT         Build client and add graphics support, dependency                               │ │
                 │ │[X] SERVER         Build server                                                                    │ │
                 │ │───────────────────────────── Graphics support [select at least one] ──────────────────────────────│ │
                 │ │( ) GLES1          Enable GLES1 (testing)                                                          │ │
                 │ │( ) GLES2          Enable GLES2 (testing)                                                          │ │
                 │ │(*) OPENGL         Support OPENGL (<3.x)                                                           │ │
                 │ │( ) OPENGL3        Support OPENGL3 --Builds but seems incomplete--                                 │ │
                 │ └───────────────────────────────────────────────────────────────────────────────────────────────────┘ │
                 ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤
                 │                                         [  OK  ]     [Cancel]                                         │
                 └───────────────────────────────────────────────────────────────────────────────────────────────────────┘

I can add the jpeg item to the Makefile and now future minetest-dev builds will be one process.  Testing the gles1 option tells me that I cannot include SDL and so will need to adjust the options a bit more.  The jpeg item was actually a typo, having added it the wrong way in the wrong place.  There were a few other adjustments and one I cannot solve right now.  The git diff is how it looks now:

# git diff
diff --git a/Makefile b/Makefile
index e20fedc..176fcbb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 # Portname block
 PORTNAME=              minetest
-DISTVERSION=   g20240324
+DISTVERSION=   g20240326
 CATEGORIES=            games
 PKGNAMESUFFIX= -dev
 DISTNAME=              ${PORTNAME}-${GH_TAGNAME}
@@ -15,15 +15,14 @@ WWW=                        https://www.minetest.net/
 LICENSE=               LGPL21+

 # dependencies
-LIB_DEPENDS=   libIrrlichtMt.so:x11-toolkits/irrlicht-minetest libzstd.so:archivers/zstd
+LIB_DEPENDS=   libzstd.so:archivers/zstd

 # uses block
-USES=                  cmake iconv:wchar_t sqlite lua luajit ninja:make llvm:min=16 pkgconfig:build sdl
+USES=                  cmake iconv:wchar_t sqlite lua luajit ninja:make llvm:min=16 pkgconfig:build
 USE_GITHUB=     nodefault
 GH_ACCOUNT=     minetest
 GH_PROJECT=     minetest
-GH_TAGNAME=            a7908da968bba82129f60c9601c9cefabd36a389
-USE_SDL=               sdl2 ttf2
+GH_TAGNAME=            6a7a613741fe32fa14897a4f780d7382105a103c

 # uses=cmake related variables
 CMAKE_ARGS=            -DCMAKE_BUILD_TYPE="MinSizeRel" \
@@ -31,7 +30,7 @@ CMAKE_ARGS=           -DCMAKE_BUILD_TYPE="MinSizeRel" \
                                -DCMAKE_CXX_FLAGS="-stdlib=libc++"

 # conflicts
-CONFLICTS=             minetest
+CONFLICTS=             minetest irrlichtMt irrlicht-minetest

 # wrksrc block
 WRKSRC=                        ${WRKDIR}/${PORTNAME}-${GH_TAGNAME}
@@ -43,7 +42,7 @@ WRKSRC=                       ${WRKDIR}/${PORTNAME}-${GH_TAGNAME}
 # FATAL: Makefile: PORTDOCS appears in plist but DOCS is not listed in OPTIONS_DEFINE.

 # options definitions
-OPTIONS_DEFAULT=                       CURL DOCS FREETYPE LTO LUAJIT SOUND SPATIAL SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP CLIENT GLVND
+OPTIONS_DEFAULT=                       CURL DOCS FREETYPE LTO LUAJIT SOUND SPATIAL SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP CLIENT OPENGL
 OPTIONS_GROUP=                         DATABASE BUILD NEEDS MISC SYSTEM
 OPTIONS_GROUP_BUILD=           BENCHMARKS DEVTEST DOCS EXAMPLES NCURSES PROFILING PROMETHEUS TOUCH UNITTESTS
 OPTIONS_GROUP_DATABASE=                LEVELDB PGSQL REDIS
@@ -52,13 +51,13 @@ OPTIONS_GROUP_NEEDS=                CURL FREETYPE NLS SOUND SPATIAL
 OPTIONS_GROUP_SYSTEM=          SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP SYSTEM_LUAJIT
 OPTIONS_MULTI=                         SOFTWARE
 OPTIONS_MULTI_SOFTWARE=                CLIENT SERVER
-#OPTIONS_SINGLE=                       GRAPHICS  # Graphics buried option GLVND/LEGACY stuff obsoleted log ago, likely did nothing.
-#OPTIONS_SINGLE_GRAPHICS=      GLVND LEGACY
+OPTIONS_SINGLE=                                GRAPHICS
+OPTIONS_SINGLE_GRAPHICS=       GLES1 GLES2 OPENGL OPENGL3
 OPTIONS_SUB=                           yes

 # options descriptions
-BUILD_DESC=                                    Admin/Dev needs
 BENCHMARKS_DESC=                       Build benchmarks (Adds some benchmark chat commands)
+BUILD_DESC=                                    Admin/Dev needs
 CLIENT_DESC=                           Build client and add graphics support, dependency
 CURL_DESC=                                     Enable cURL support for fetching media: contentdb
 DATABASE_DESC=                         Database support
@@ -66,19 +65,22 @@ DEVTEST_DESC=                               Install Development Test game also (INSTALL_DEVTEST)
 DOCS_DESC=                                     Build and install documentation (via doxygen)
 EXAMPLES_DESC=                         BUILD_EXAMPLES
 FREETYPE_DESC=                         Support for TrueType fonts with unicode
-#GLVND_DESC=                                   Use libOpenGL or libGLX
-#GRAPHICS_DESC=                                Graphics support
-#LEGACY_DESC=                          Use libGL - where GLVND may be broken on nvidia
+GLES1_DESC=                                    Enable GLES1 --broken due to SDL--
+GLES2_DESC=                                    Enable GLES2
+GRAPHICS_DESC=                         Graphics support
 LEVELDB_DESC=                          Enable LevelDB backend
 LTO_DESC=                                      Build with IPO/LTO optimizations (smaller and more efficient than regular build)
 MISC_DESC=                                     Other options
 NCURSES_DESC=                          Enables server side terminal (cli option: --terminal)
 NEEDS_DESC=                                    Client essentials
 NLS_DESC=                                      Native Language Support (ENABLE_GETTEXT)
+OPENGL3_DESC=                          Support OPENGL3 --Builds but seems incomplete--
+OPENGL_DESC=                           Support OPENGL (<3.x)
 PGSQL_DESC=                                    Enable PostgreSQL map backend
 PROFILING_DESC=                                Use gprof for profiling
 PROMETHEUS_DESC=                       Build with Prometheus metrics exporter
 REDIS_DESC=                                    Enable Redis backend
+#SDL_DESC=                                     Use SDL
 SERVER_DESC=                           Build server
 SOFTWARE_DESC=                         Software components
 SOUND_DESC=                                    Enable sound via openal-soft
@@ -93,9 +95,9 @@ UNITTESTS_DESC=                               Build unit test sources (BUILD_UNITTESTS)

 # options helpers
 BENCHMARKS_CMAKE_BOOL=         BUILD_BENCHMARKS
-CLIENT_LIB_DEPENDS=                    libIrrlichtMt.so:x11-toolkits/irrlicht-minetest libpng.so:graphics/png
-CLIENT_USES=                           gl xorg
-CLIENT_USE=                                    jpeg GL=gl,glu \
+CLIENT_LIB_DEPENDS=                    libpng.so:graphics/png
+CLIENT_USES=                           gl xorg jpeg
+CLIENT_USE=                                    GL=gl,glu \
                                                        XORG=ice,sm,x11,xext,xcb,xres,xshmfence,xau,xaw,xcomposite,xcursor,xdamage,xdmcp,\
                                                        xfixes,xft,xi,xinerama,xkbfile,xmu,xpm,xrandr,xrender,xscreensaver,xt,xtst,xv,xxf86vm
 CLIENT_CMAKE_ON=                       BUILD_CLIENT REQUIRE_LUAJIT ENABLE_LUAJIT
@@ -107,13 +109,10 @@ DOCS_CMAKE_BOOL=                  BUILD_DOCUMENTATION
 EXAMPLES_CMAKE_BOOL=           BUILD_EXAMPLES
 FREETYPE_LIB_DEPENDS=          libfreetype.so:print/freetype2
 FREETYPE_CMAKE_BOOL=           ENABLE_FREETYPE
-#GLVND_LIB_DEPENDS=                    libOpenGL.so:graphics/libglvnd
-#GLVND_USE=                                    GL+=opengl
-#GLVND_CMAKE_BOOL=                     ENABLE_GLVND
-#GLVND_CMAKE_ON=                               -DOPENGL_GL_PREFERENCE="GLVND" -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"
-#LEGACY_USE=                                   GL+=opengl
-#LEGACY_CMAKE_BOOL=                    ENABLE_LEGACY
-#LEGACY_CMAKE_ON=                      -DOPENGL_GL_PREFERENCE="LEGACY" -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"
+GLES1_USE=                                     GL+=glesv1
+GLES1_CMAKE_BOOL=                      ENABLE_GLES1
+GLES2_USE=GL+=                         glesv2
+GLES2_CMAKE_BOOL=                      ENABLE_GLES2
 LEVELDB_LIB_DEPENDS=           libleveldb.so:databases/leveldb
 LEVELDB_CMAKE_BOOL=                    ENABLE_LEVELDB
 LTO_CMAKE_BOOL=                                ENABLE_LTO
@@ -122,12 +121,18 @@ NCURSES_CMAKE_BOOL=                       ENABLE_CURSES
 NLS_USES=                                      gettext
 NLS_CMAKE_BOOL=                                ENABLE_GETTEXT
 NLS_LDFLAGS=                           -L${LOCALBASE}/lib
+OPENGL3_USE=                           GL+=gl
+OPENGL3_CMAKE_BOOL=                    ENABLE_OPENGL3
+OPENGL3_CMAKE_ON=                      USE_SDL
+OPENGL_USE=                                    GL+=gl
+OPENGL_CMAKE_BOOL=                     ENABLE_OPENGL
 PGSQL_USES=                                    pgsql
 PGSQL_CMAKE_BOOL=                      ENABLE_POSTGRESQL
 PROFILING_CMAKE_ON=                    USE_GPROF
 PROMETHEUS_CMAKE_BOOL=         ENABLE_PROMETHEUS
 REDIS_LIB_DEPENDS=                     libhiredis.so:databases/hiredis
 REDIS_CMAKE_BOOL=                      ENABLE_REDIS
+#SDL_CMAKE_ON=                         USE_SDL2
 SERVER_CMAKE_BOOL=                     BUILD_SERVER
 SOUND_CMAKE_BOOL=                      ENABLE_SOUND
 SPATIAL_LIB_DEPENDS=           libspatialindex.so:devel/spatialindex
@@ -144,13 +149,19 @@ SYSTEM_LUAJIT_USES=                       luajit:luajit-openresty
 TOUCH_CMAKE_BOOL=                      ENABLE_TOUCH
 UNITTESTS_CMAKE_BOOL=          BUILD_UNITTESTS

+# SDL cannot be used with GLES1 but having it installed causes a fail without enabled in Makefile?
+
 .include 

+.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MOPENGL}
+USES+=                 sdl
+USE_SDL=               sdl2 ttf2
+SDL_CMAKE_ON=  USE_SDL2=ON
+.endif
+
 .if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND}
 USES+=                 openal
-LIB_DEPENDS+=  libogg.so:audio/libogg \
-                               libvorbis.so:audio/libvorbis \
-                               libvorbisfile.so:audio/libvorbis
+LIB_DEPENDS+=  libogg.so:audio/libogg libvorbisfile.so:audio/libvorbis
 .endif

 .if ${PORT_OPTIONS:MSERVER}
diff --git a/distinfo b/distinfo
index f485f6f..d444723 100644
--- a/distinfo
+++ b/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1711406948
-SHA256 (minetest-dev/minetest-a7908da968bba82129f60c9601c9cefabd36a389.tar.gz) = f2431461c2307c5111cabf6c0c360e7d2e516942b7cc407ca9aaeae25843bb92
-SIZE (minetest-dev/minetest-a7908da968bba82129f60c9601c9cefabd36a389.tar.gz) = 10477004
+TIMESTAMP = 1711653177
+SHA256 (minetest-dev/minetest-6a7a613741fe32fa14897a4f780d7382105a103c.tar.gz) = 74a3c9b5038541ce4375d583d1b60ef4bb5e6e2345b8f7a5610b1ed1222020e5
+SIZE (minetest-dev/minetest-6a7a613741fe32fa14897a4f780d7382105a103c.tar.gz) = 11276813

The pkg-plist did not change, which means irrlichtMt is very integrated into the minetest build so that it is not a distinct install any longer.  It might possibly be a bit more time to compile since irrlichtMt is built also, but it will only be one thing to maintain instead of two.  It will be easier for consumers to keep updated since they will only need to look in one place, install one thing not including external dependencies.

Tuesday, March 26, 2024

Sed on a plist adjusts fvwm install

Sed can be a beast but its easy to be distracted by a silly solution you find online somewhere.  Whether it is a linuxism or simply an inaccurate solution, attempting to adapt it to your need could send you down the wrong road.  I recently cleaned up my unofficial port of fvwm3-dev to better comply via portclippy and to add options I may have missed.  After all of that, I discovered that the GO option causes some things to be present or not whether it is enabled.  This meant the pkg-plist needed a different mechanism for a few things.  I chose to have GO as a default option and with it selected when I re-verify the pkg-plist each time I update.  Since GO is enabled, there will need to be two lines added and this is what had me stuck, until I finally realized I could include newlines in the subsitution for the line prior to the added lines.  One small test proved that I could include the newline within the substitution and after that I knew the issue was solved with a little bit more editing.

I don't choose to manually edit all these things, just rename the present pkg-plist as pkg-plist-old, and after I generate a new pkg-plist, I use my plist-fix script to add all the conditional %TAG% to lines needing them, now with other adjustments as well.

Here is the script, this one is a bit more complex but many of my unofficial ports have a similar script in the files directory for the same purpose, specific to each port.

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

echo "adding conditional list tags"

cat /var/tmp/fvwm3-dev_pkg-plist | \
sed \
-e 's#^\/you\/have\/to\/check\/what\/makeplist\/gives\/you##' \
-e '/^$/d' \
-e 's#^bin\/FvwmPrompt#\%\%GOLANG\%\%\bin\/FvwmPrompt#g' \
-e 's#^bin\/fvwm-convert-2.6#\%\%PERL\%\%\bin\/fvwm-convert-2.6#g' \
-e 's#^bin\/fvwm-menu-directory#\%\%PERL\%\%\bin\/fvwm-menu-directory#g' \
-e 's#^bin\/fvwm-menu-xlock#\%\%PERL\%\%\bin\/fvwm-menu-xlock#g' \
-e 's#^bin\/fvwm-perllib#\%\%PERL\%\%\bin\/fvwm-perllib#g' \
-e 's#^libexec\/fvwm3\/\([0-9]\.[0-9]\.[0-9])*\)\/FvwmCommandS#\%\%GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmCommandS \
\%\%NO_GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmConsoleC\n\%\%NO_GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmConsole#g' \
-e 's#^libexec\/fvwm3\/\([0-9]\.[0-9]\.[0-9])*\)\/FvwmPerl#\%\%PERL\%\%\libexec\/fvwm3\/\1\/FvwmPerl#g' \
-e 's#^share\/man\/man1\/fvwm-convert-2.6#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-convert-2.6#g' \
-e 's#^share\/man\/man1\/fvwm-menu-directory#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-menu-directory#g' \
-e 's#^share\/man\/man1\/fvwm-menu-xlock#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-menu-xlock#g' \
-e 's#^share\/man\/man1\/fvwm-perllib#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-perllib#g' \
-e 's#^share\/man\/man1\/fvwmPerl#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwmperl#g' \
-e 's#^share\/man\/man1\/fvwm-perllib#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-perllib#g' \
-e 's#\%\%MANPAGES\%\%share\/man\/man1\/FvwmConsole#\%\%GOLANG\%\%\%\%MANPAGES\%\%share\/man\/man1\/FvwmConsole#g' \
-e 's#^share\/man\/man1#\%\%MANPAGES\%\%share\/man\/man1#g' \
-e 's#^\%\%DATADIR\%\%\/fvwm-menu-desktop-config.fpl#\%\%PERL\%\%\%\%DATADIR\%\%\/fvwm-menu-desktop-config.fpl#g' \
-e 's#^\%\%DATADIR\%\%\/fvwm-script-ComExample.pl#\%\%PERL\%\%\%\%DATADIR\%\%\/fvwm-script-ComExample.pl#g' \
-e 's#^\%\%DATADIR\%\%/locale#\%\%NLS\%\%\%\%DATADIR\%\%/locale#g' \
-e 's#^\%\%DATADIR\%\%/perllib#\%\%PERL\%\%\%\%DATADIR\%\%/perllib#g' \
> /var/tmp/fvwm-dev_pkg-plist-fixed
cp /var/tmp/fvwm-dev_pkg-plist-fixed ../pkg-plist

There are a few other things in the Makefile that I add simply because we often do not realize caMelcaSe is used and expect all lowercase manpages.

# This detail has been annoying, why are some manpages all lowercase and some
# have an initial capital? Whether there was a purpose, the vast majority of
# man1 manpages are all lowercase. Cure this here. Also fix the recent change
# from /usr/local/man to /usr/local/share/man  It is a mistake to change all
# these manpages to lowercase only because fvwm scripts use those camelcased,
# instead, for convenience create symbolic links.

post-stage:
    @${MV} ${STAGEDIR}${LOCALBASE}/man/man1/* \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmAnimate.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmanimate.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmAuto.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmauto.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmBacker.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmbacker.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmButtons.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmbuttons.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmCommand.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmcommand.1
#   @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmConsole.1 \
#       ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmconsole.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmEvent.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmevent.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmForm.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmform.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmIconMan.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmiconMan.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmIdent.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmident.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmMFL.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmmfl.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmPager.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmpager.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmPerl.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmperl.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmRearrange.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmrearrange.1
    @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmScript.1 \
        ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmscript.1

These particular adjustments that I figured out may lead to finally succeeding with the dbeaver reproducible install, avoiding the generated date stamp inserted into many file or directory names which would cause pkg to fail because the pkg-plist would be different the first time it was used after an update.

Saturday, March 16, 2024

Some blog cleanup

A short time ago I looked at some old posts after changing the theme css for this blog.  Much of the theme changes should not have affected the display of any pages or posts and I still think that was not the cause. However, I did find at least two pages in the distilled section which did not display properly.  Those i had built with the online editor of this site and when I looked at the source discovered how horrible they were. Since this may be a task for me for a bit of time, to clean up and improve pages and posts here, I added a further note to the header that I am aware of the display issues while I complete this.  I also want to finally change the background image to something different that I create mysefl, but intend to use inkscape and this fails for me at present.

Since I am not going to show the rendered new versus old, I'll show you how the change looks in the source as I adjust it. Below is what I found as source on the site initially, which I wrote in 2021, already some years old now.

Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory: <br /><p><span style="font-family: courier;">cp -pRP /usr/src /usr/src-last_svn_update</span></p><p><span style="font-family: courier;"> </span></p><p>Remove the directory and all contents then create a fresh directory.  As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step.  After, we still need the directory to use with git, so re-create it.<br /></p><p><span style="font-family: courier;">rm -rf /usr/src </span></p><p><span style="font-family: courier;"><span style="font-family: courier;">mkdir /usr/src</span> <br /></span></p><p>Or just delete the /usr/src directory contents:<br /></p><span style="font-family: courier;">rm -rf /usr/src/*</span><p><span style="font-family: courier;"></span></p><p> <br /><br />Now obtain source <br /><span style="font-family: courier;">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span> <br /><br />Source for a specific branch (depth implies single-branch)<br /><span style="font-family: courier;">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span></p><p> </p><p>Update -- the first line is needed for the initial update, just the pull thereafter.<br /></p><p><span style="font-family: courier;">git config pull.rebase true</span></p><p><span style="font-family: courier;">git pull</span></p><p><br /></p><p>FYI Sept 2021 github change.</p><p>Adjust url from git:// to https://</p><p><span style="font-family: courier;">edit .git/config</span></p><p><span style="font-family: courier;">under [origin] modify the url</span></p><p><span style="font-family: courier;">from: <br /></span></p><p><span style="font-family: courier;"> url = git://github.com/freebsd/freebsd.git</span></p><p><span style="font-family: courier;">to:</span></p><p><span style="font-family: courier;"> </span><span style="font-family: courier;">url = https://github.com/freebsd/freebsd.git</span><span style="font-family: courier;"></span></p>

It turns out that once again I managed to get something done without documenting it.  The worst looking page had been "Updating Kernel & World" both with how it was rendered (many things were missing and not visible) and how the html looked. The above example is not nice but because I did a bit more complex display for the other page, there were numerous extra essentially empty span and div tags, bunches of inline style, extra page break tags.  It took a while to clean up and the revised version is somewhat different since I am using a more standardized set of css for everything. One other thing to notice about the above example source is the text formatting of it itself.  I have been using the wordwrap feature of bluefish editor so other pages and posts will look similar.  That the above includes a lot of inline style means both that it is of course old and likely edited online as well.

After the initial cleanup to better see how it is, you can notice once more a lot of excess junk that is useless or not needed. I used bluefish to replace all "<" with "<" followed with a carriage return. I am not going to show a continual pile of adjustments, just the original, this one, and the final cleaned html.

Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory:
<br />
<p>
<span style="font-family: courier;">cp -pRP /usr/src /usr/src-last_svn_update
</span>
</p>
<p>
<span style="font-family: courier;"> 
</span>
</p>
<p>Remove the directory and all contents then create a fresh directory.  As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step.  After, we still need the directory to use with git, so re-create it.
<br />
</p>
<p>
<span style="font-family: courier;">rm -rf /usr/src 
</span>
</p>
<p>
<span style="font-family: courier;">
<span style="font-family: courier;">mkdir /usr/src
</span>
<br />
</span>
</p>
<p>Or just delete the /usr/src directory contents:
<br />
</p>
<span style="font-family: courier;">rm -rf /usr/src/*
</span>
<p>
<span style="font-family: courier;">
</span>
</p>
<p> 
<br />
<br />Now obtain source
<br />
<span style="font-family: courier;">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src
</span>
<br />
<br />Source for a specific branch (depth implies single-branch)
<br />
<span style="font-family: courier;">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src
</span>
</p>
<p> 
</p>
<p>Update -- the first line is needed for the initial update, just the pull thereafter.
<br />
</p>
<p>
<span style="font-family: courier;">git config pull.rebase true
</span>
</p>
<p>
<span style="font-family: courier;">git pull
</span>
</p>
<p>
<br />
</p>
<p>FYI Sept 2021 github change.
</p>
<p>Adjust url from git:// to https://
</p>
<p>
<span style="font-family: courier;">edit .git/config
</span>
</p>
<p>
<span style="font-family: courier;">under [origin] modify the url
</span>
</p>
<p>
<span style="font-family: courier;">from:
<br />
</span>
</p>
<p>
<span style="font-family: courier;"> url = git://github.com/freebsd/freebsd.git
</span>
</p>
<p>
<span style="font-family: courier;">to:
</span>
</p>
<p>
<span style="font-family: courier;"> 
</span>
<span style="font-family: courier;">url = https://github.com/freebsd/freebsd.git
</span>
<span style="font-family: courier;">
</span>
</p>

After a lot of deletions and substitutions we have a much better version of the html for the page and it will display slightly different as it uses the css from my customized theme.  Instead of a single long line as a paragraph, each distinct paragraph within the <p> tags is one long editor word-wrapped line which still permits readability without the effort of inserting linebreaks manually (which is a bit too much unnecessary effort).

<p>Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory: </p><p><span class="icode">cp -pRP /usr/src /usr/src-last_svn_update</span></p>
<p>Remove the directory and all contents then create a fresh directory.  As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step.  After, we still need the directory to use with git, so re-create it.</p>
<p><span class="icode">rm -rf /usr/src </span></p>
<p><span class="icode">mkdir /usr/src</span>
<p>Or just delete the /usr/src directory contents:</p>
<p><span class="icode">rm -rf /usr/src/*</span></p>
<p>Now obtain source </p>
<p><span class="icode">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span> </p>
<p>Source for a specific branch (depth implies single-branch)</p>
<p><span class="icode">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span></p>
<p>Update -- the first line is needed for the initial update, just the pull thereafter.</p>
<p><span class="icode">git config pull.rebase true</span></p>
<p><span class="icode">git pull</span></p>
<p>FYI Sept 2021 github change.</p>
<p>Adjust url from git:// to https://</p>
<p><span class="icode">edit .git/config</span></p>
<p><span class="icode">under [origin] modify the url</span></p>
<p>from:</p>
<p><span class="icode">url = git://github.com/freebsd/freebsd.git</span></p>
<p>to:</p>
<p><span class="icode">url = https://github.com/freebsd/freebsd.git</span></p>

Not only have I cleaned up a number of pages and posts, with more yet to complete to my satisfaction, I decided to revise the appearance.  Gone is that orangy stained glass image background, and some other colors have been revised.  I wanted to create my own background image but as image uploads are rather indirect due to how this site or firefox has been acting lately, I may not do so much with images here, and I chose to let the online theme editor suffice.  I hope overall that this blog is now considerably more readable. Remember, you could write your own for the same purpose that I have been, to contribute back a perspective and tips and feedback to the community.

Thursday, March 14, 2024

Another dialog change

Already included in FreeBSD 14.0, bsddialog will replace dialog.  I was looking at the 15.0 release notes and UPDATING files to see what new thing I could switch to using early as I did with portdialog.  This one appears to be a much more developer-oriented item, so I will have to create some examples as I go, on the commmandline to give you something to see here.

% bsddialog
Error: expected a --<dialog>.

See 'bsddialog --help' or 'man 1 bsddialog' for more information.
%

I really like this as feedback from attempting to use it without knowing how or what to do, it gives both the built-in help as below, plus informs about the much more verbose manpage option.

% bsddialog --help
usage: bsddialog --help
       bsddialog --version
       bsddialog [--<opt>] --<dialog> <text> <rows> <cols> [<arg>]
       bsddialog --<dialog1> ...  [--and-dialog --<dialog2> ...] ...

Options:
 --alternate-screen, --ascii-lines, --backtitle <backtitle>, --begin-x <x>,
 --begin-y <y>, --bikeshed, --calendar, --cancel-label <label>, --clear-dialog,
 --clear-screen, --colors, --columns-per-row <columns>, --cr-wrap,
 --date-format <format>, --default-button <label>, --default-item <name>,
 --default-no, --disable-esc, --esc-return-cancel, --exit-label <label>,
 --extra-button, --extra-label <label>, --generic-button1 <label>,
 --generic-button2 <label>, --help-button, --help-label <label>,
 --help-print-name, --help-status, --hfile <file>, --hline <string>,
 --hmsg <string>, --ignore, --insecure, --item-bottom-desc, --item-depth,
 --item-prefix, --load-theme <file>, --max-input <size>, --no-cancel,
 --no-descriptions, --no-label <label>, --no-lines, --no-names, --no-ok,
 --no-shadow, --normal-screen, --ok-label <label>, --output-fd <fd>,
 --output-separator <sep>, --print-maxsize, --print-size, --print-version,
 --quoted, --save-theme <file>, --separate-output, --separator <sep>, --shadow,
 --single-quoted, --sleep <secs>, --stderr, --stdout, --tab-escape,
 --tab-len <spaces>, --text-unchanged, --switch-buttons,
 --theme <blackwhite|bsddialog|flat|dialog>, --time-format <format>,
 --title <title>, --yes-label <label>.

Dialogs:
 --calendar <text> <rows> <cols> [<dd> <mm> <yy>]
 --checklist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
 --datebox <text> <rows> <cols> [<dd> <mm> <yy>]
 --form <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
 --gauge <text> <rows> <cols> [<perc>]
 --infobox <text> <rows> <cols>
 --inputbox <text> <rows> <cols> [init]
 --menu <text> <rows> <cols> <menurows> [<name> <desc>] ...
 --mixedform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters> <0|1|2>] ...
 --mixedgauge <text> <rows> <cols> <mainperc> [<minilabel> <miniperc>] ...
 --msgbox <text> <rows> <cols>
 --passwordbox <text> <rows> <cols> [init]
 --passwordform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
 --pause <text> <rows> <cols> <secs>
 --radiolist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
 --rangebox <text> <rows> <cols> <min> <max> [<init>]
 --textbox <file> <rows> <cols>
 --timebox <text> <rows> <cols> [<hh> <mm> <ss>]
 --treeview <text> <rows> <cols> <menurows> [<depth> <name> <desc> <on|off>] ...
 --yesno <text> <rows> <cols>

See 'man 1 bsddialog' for more information.
%

Here are some examples of what this tool can provide:

% bsddialog --calendar "Example calendar" 20 38 14 03



┌────────────────────────────────────┐  
│ Example calendar                   │  
│                                    │  
│                                    │  
│ Month            Year              │  
│ ┌───────────────┐┌───────────────┐ │  
│ │          March││           2024│ │  
│ └───────────────┘└───────────────┘ │  
│ ┌────────────────────────────────┐ │  
│ │    Sun Mon Tue Wed Thu Fri Sat │ │  
│ │                         1   2  │ │  
│ │     3   4   5   6   7   8   9  │ │  
│ │    10  11  12  13  14  15  16  │ │  
│ │    17  18  19  20  21  22  23  │ │  
│ │    24  25  26  27  28  29  30  │ │  
│ │    31                          │ │  
│ └────────────────────────────────┘ │  
├────────────────────────────────────┤  
[  OK  ]     [Cancel]       │  
└────────────────────────────────────┘  
                                        

% bsddialog --inputbox "an inputbox" 8 20


┌──────────────────┐  
│ an inputbox      │  
│ ┌──────────────┐ │  
│ │              │ │  
│ └──────────────┘ │  
├──────────────────┤  
[  OK  ] [Cancel]│  
└──────────────────┘  
                      

% bsddialog --timebox "timebox" 8 20 10 27 05


┌──────────────────┐  
│ timebox          │  
│  ┌──┐ ┌──┐ ┌──┐  │  
│  │10│:│27│:│05│  │  
│  └──┘ └──┘ └──┘  │  
├──────────────────┤  
[  OK  ] [Cancel]│  
└──────────────────┘  
                      

% bsddialog --infobox "This is an infobox for giving info to the reader" 5 24


┌──────────────────────┐  
│ This is an infobox   │  
│ for giving info to   │  
│ the reader           │  
└──────────────────────┘  
                          

bsddialog --menu "Choose what to do:" 12 40 3 "Leave" "Hit the road" "Stay"
"Take a load off" "Think" "Ponder other options"


┌──────────────────────────────────────┐  
│ Choose what to do:                   │  
│                                      │  
│                                      │  
│ ┌──────────────────────────────────┐ │  
│ │    Leave Hit the road            │ │  
│ │    Stay  Take a load off         │ │  
│ │    Think Ponder other options    │ │  
│ └──────────────────────────────────┘ │  
├──────────────────────────────────────┤  
[  OK  ]     [Cancel]        │  
└──────────────────────────────────────┘  
                                          

These examples do not touch the large number of possible customizations.  I used a few of the pre-designed options which you may notice has any text within quotes.  When I tested the calendar it seems like the expected input might actually be a 4-digit year.  You will get feedback if the content would not fit within the rows and columns defined, some of the needed space is for the default output which might not be known before you test with an extra large row/column value.  Since this works within an xterm, I expect that the NO_COLOR environment variable would affect it as well, I am not sure that this has the other display options which portdialog has, possibly those would be good additions to it.

Since the dialog manpage is quite extensive I will provide the information about compatibility to the end of the manpage for both.  One thing to note about dialog is that it is actually an X application, rather than a terminal program, and bsddialog is a TUI.  The manpage excerpts are below.

DIALOG(1)		    General Commands Manual		     DIALOG(1)
COMPATIBILITY
       You may want to write scripts which run with other dialog "clones".

   Original Dialog
       First, there is the "original" dialog program to	consider (versions 0.3
       to 0.9).	 It had	some misspelled	(or inconsistent) options.  The	dialog
       program	maps  those  deprecated	 options  to the preferred ones.  They
       include:
	      Option	     Treatment
	      ---------------------------------
	      --beep-after   ignored
	      --guage	     mapped to --gauge
	      ---------------------------------

   Xdialog
       This is an X application, rather	than a terminal	 program.   With  some
       care,  it  is  possible	to  write  useful  scripts that	work with both
       Xdialog and dialog.

       The dialog program  ignores  these  options  which  are	recognized  by
       Xdialog:
	      Option		 Treatment
	      -----------------------------------------------
	      --allow-close	 ignored
	      --auto-placement	 ignored
	      --fixed-font	 ignored
	      --icon		 ignored
	      --keep-colors	 ignored
	      --no-close	 ignored
	      --no-cr-wrap	 ignored
	      --screen-center	 ignored
	      --separator	 mapped	to --separate-output
	      --smooth		 ignored
	      --under-mouse	 ignored
	      --wmclass		 ignored
	      -----------------------------------------------

       Xdialog's  manpage  has	a  section  discussing	its compatibility with
       dialog.	There are some differences not	shown  in  the	manpage.   For
       example,	the html documentation states

	      Note:  former  Xdialog  releases	used the "\n" (line feed) as a
	      results separator	 for  the  checklist  widget;  this  has  been
	      changed  to  "/"	in  Xdialog  v1.5.0 to make it compatible with
	      (c)dialog.  In your old scripts using the	Xdialog	checklist, you
	      will then	have to	add the	--separate-output  option  before  the
	      --checklist one.

       Dialog  has  not	 used a	different separator; the difference was	likely
       due to confusion	regarding some script.

   Whiptail
       Then there is whiptail.	For practical purposes,	it  is	maintained  by
       Debian  (very  little  work  is	done by	its upstream developers).  Its
       documentation (README.whiptail) claims

	      whiptail(1) is a lightweight replacement for dialog(1),
	      to provide dialog	boxes for shell	scripts.
	      It is built on the
	      newt windowing library rather than the ncurses library, allowing
	      it to be smaller in embedded environments	such as	installers,
	      rescue disks, etc.

	      whiptail is designed to be drop-in compatible with dialog, but
	      has less features: some dialog boxes are not implemented,	such
	      as tailbox, timebox, calendarbox,	etc.

       Comparing actual	sizes (Debian testing, 2007/1/10): The total of	 sizes
       for  whiptail,  the  newt,  popt	 and  slang  libraries is 757 KB.  The
       comparable number for dialog (counting ncurses) is  520 KB.   Disregard
       the first paragraph.

       The  second  paragraph is misleading, since whiptail also does not work
       for common options of dialog, such as the gauge box.  whiptail is  less
       compatible with dialog than the original	mid-1990s dialog 0.4 program.

       whiptail's  manpage borrows features from dialog, e.g., but oddly cites
       only dialog versions up to 0.4  (1994)  as  a  source.	That  is,  its
       manpage	refers	to  features  which  were  borrowed  from  more	recent
       versions	of dialog, e.g.,

       o   --gauge (from 0.5)

       o   --passwordbox (from Debian changes in 1999),

       o   --default-item (from	dialog 2000/02/22),

       o   --output-fd (from dialog 2002/08/14).

       Somewhat	humorously, one	may note that the popt	feature	 (undocumented
       in its manpage) of using	a "--" as an escape was	documented in dialog's
       manpage	about  a  year	before it was mentioned	in whiptail's manpage.
       whiptail's manpage  incorrectly	attributes  that  to  getopt  (and  is
       inaccurate anyway).

       Debian uses whiptail for	the official dialog variation.

       The  dialog  program ignores or maps these options which	are recognized
       by whiptail:
	      Option		Treatment
	      -------------------------------------------
	      --cancel-button	mapped to --cancel-label
	      --fb		ignored
	      --fullbutton	ignored
	      --no-button	mapped to --no-label
	      --nocancel	mapped to --no-cancel
	      --noitem		mapped to --no-items
	      --notags		mapped to --no-tags
	      --ok-button	mapped to --ok-label
	      --scrolltext	mapped to --scrollbar
	      --topleft		mapped to --begin 0 0
	      --yes-button	mapped to --yes-label
	      -------------------------------------------

       There are visual	differences which are not  addressed  by  command-line
       options:

       o   dialog  centers  lists  within the window.  whiptail	typically puts
	   lists against the left margin.

       o   whiptail uses angle brackets	("<" and  ">")	for  marking  buttons.
	   dialog uses square brackets.

       o   whiptail  marks the limits of subtitles with	vertical bars.	dialog
	   does	not mark the limits.

       o   whiptail attempts to	mark the top/bottom cells of a scrollbar  with
	   up/down  arrows.  When it cannot do this, it	fills those cells with
	   the background color	of  the	 scrollbar  and	 confusing  the	 user.
	   dialog  uses	 the  entire  scrollbar	 space,	thereby	getting	better
	   resolution.

BUGS
       Perhaps.

AUTHOR
       Thomas E.  Dickey	(updates for 0.9b and beyond)

CONTRIBUTORS
       Kiran Cherupally	- the mixed form and mixed gauge widgets.

       Tobias C.  Rittweiler

       Valery Reznic - the form	and progressbox	widgets.

       Yura Kalinichenko adapted the gauge widget as "pause".

       This is a rewrite (except as needed to provide  compatibility)  of  the
       earlier version of dialog 0.9a, which lists as authors:

       o   Savio Lam - version 0.3, "dialog"

       o   Stuart Herbert - patch for version 0.4

       o   Marc	Ewing -	the gauge widget.

       o   Pasquale De Marco "Pako" - version 0.9a, "cdialog"

$Date: 2021/01/17 17:25:01 $					     DIALOG(1)

And in comparison, bsddialog which being less extensive and purely a TUI.  It can still be contained by an Xterm without need of direct interaction with X itself, and so very likely is a bit less hefty, could be speedier, or take up less space installed.

BSDDIALOG(1)		    General Commands Manual		  BSDDIALOG(1)
COMPATIBILITY
       Outdated	 options  are  retained	for compatibility, properly equivalent
       options are used:
	     Obsolete			  Equivalent
	     --and-widget		  --and-dialog
	     --calendar	<text> 2 <cols>	  --calendar <text> 0 <cols>
	     --clear			  --clear-screen
	     --defaultno		  --default-no
	     --exit-label		  --ok-label
	     --help-tags		  --help-print-name
	     --item-help		  --item-bottom-desc
	     --keep-tite		  --alternate-screen
	     --no-items			  --no-descriptions
	     --no-label			  --cancel-label
	     --no-tags			  --no-names
	     --nocancel			  --no-cancel
	     --nook			  --no-ok
	     --separator		  --output-separator
	     --yes-label		  --ok-label

SEE ALSO
       bsddialog(3)

HISTORY
       The bsddialog utility first appeared in FreeBSD 14.0.

AUTHORS
       bsddialog    was	   written     by     Alfonso	  Sabato     Siciliano
       <asiciliano@FreeBSD.org>.

       bsddialog  provides  a  subset  of  the	functionality described	in the
       dialog manual.  The following features were reimplemented:

       Options:	 --and-widget,	--ascii-lines,	--backtitle,   --cancel-label,
       --clear,	    --colors,	  --cr-wrap,	--date-format,	  --defaultno,
       --default-button,    --default-no,    --default-item,	 --exit-label,
       --extra-button,	--extra-label,	--help,	 --help-button,	 --help-label,
       --help-status, --help-tags,  --hfile,  --hline,	--ignore,  --insecure,
       --item-help,   --keep-tite,   --max-input,   --no-cancel,   --nocancel,
       --no-items,  --no-label,	 --no-lines,  --no-ok,	--nook,	  --no-shadow,
       --no-tags,	--ok-label,	 --output-fd,	   --output-separator,
       --print-maxsize,	    --print-size,      --print-version,	     --quoted,
       --separate-output,  --separator,	 --shadow,  --single-quoted,  --sleep,
       --stderr,  --stdout,  --tab-len,	 --time-format,	 --title,   --version,
       --yes-label.

       Dialogs:	  --calendar,	--checklist,   --form,	 --gauge,   --infobox,
       --inputbox, --menu, --mixedform,	--mixedgauge, --msgbox,	--passwordbox,
       --passwordform, --pause,	--radiolist, --rangebox, --textbox, --timebox,
       --treeview, --yesno.

       Some feature differs in input, output, or behavior.   Compatibility  is
       not a priority for future development.

THANKS TO
       Baptiste	 Daroussin  <bapt@FreeBSD.org>,	 Ed Maste <emaste@FreeBSD.org>
       and Juraj Lutter	<otis@FreeBSD.org> for suggestions, help, and testing.

FreeBSD	13.2		      September	23, 2022		  BSDDIALOG(1)

Aside from a functionally similar tool and some things partly compatible, it is not truly a drop-in replacement as switching to portdialog from dialiog4 ports.  There are some notable mentions in UPDATING which should be considered.

From UPDATING:

20231010:
	dialog(1) has been replaced in base by bsddialog(1), while most of the
	time replacing a dialog(1) call by a bsddialog(1) call works out of the
	box, bsddialog(1) is not considered as a drop-in replacement for
	dialog(1).

	If you do depend on dialog(1) functionality, please install cdialog
	from ports:

	pkg install cdialog

From RELNOTES: (for FreeBSD 15.0.)

ff01d71e48d4:
	dialog(1) has been replaced by bsddialog(1)

This looks like a cool new thing for us to have available, bsddialog offers more flexibility to ease a greater variety of dialog types.  I might consider some rewrites to some of my scripts to include bsddialog if it is possible (I suspect so) which would make them even more friendly and easy to use I believe.  Look into what bsddialog is on your FreeBSD 14.0 system or CURRENT (aka 15.0) to see how you might take advantage of this interesting flexible dialog creation tool.

PS. This has been an effort for GPLinBase for removal of those items so licensed (few remain), bsddialog is one completed for that project.

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