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

Tuesday, September 5, 2023

14-stable update, etcupdate, and a struggle

When I set out to update my system to use FreeBSD 14-stable in lieu of 13-stable, I knew there was a chance things could go awry.  Usually a switch between major versions will involve substantial changes to how things are done and thus indirectly invalidate a large swath of (or everything) that is installed.  I was ready for this task but first I had to get a running system to begin my other (userland) updates.

As usual, essentially the same way I've done many times, I updated my /usr/src to the most current 14-stable, and began the usual buildworld and kernel processes as described in another blog post,Kernel and world rebuild.  Since this was going to be a new ball of wax instead of some minor tweaks of 13-stable, I wisely chose to install a GENERIC kernel.

What I was not so aware of, was how issues with etcupdate could thwart a complete update.  After a couple attempts to rebuild and reinstall, I looked closer at etcupdate and what might possibly be the wrench in the works.  This discussion of my kernel and world challenge is being written from memory as I didn't remember to take any notes to be more precise.  What I recall is that I eventually clarified six or eight files so that they would match what was expected in the new system, etcupdate could then be satisfied (no more conflicts) and my usual process could be completed.

Aside from the etcupdate hiccup, the transformation from 13-stable to the new shiny 14-stable went rather smoothly and easily.  Since I now had a fresh install, I could work on getting my userland (ports) updated and back to a functioning desktop.  I now have a list of ports I need to re-install when I update my kernel and this along with a helpful script to iterate through each of them, would update anything needing the kernel and all the rest.

misc/pciids
graphics/libdrm
graphics/linux-c7-libdrm
graphics/libglvnd
graphics/libGLU
graphics/gpu-firmware-amd-kmod
x11/xorg
graphics/mesa-libs
graphics/mesa-dri
graphics/drm-kmod
devel/libudev-devd
x11-drivers/xf86-input-mouse
x11-drivers/xf86-input-keyboard

I had those ports rebuilt and reinstalled, and made sure that x11-wm/fvwm was installed as well.  When I tried to startx it told me there were no screens detected, which is an obscure way to say that there is no graphics driver, or that is just one cause of the message.  I tried to reinstall the few items I knew would affect this, and made sure to install graphics/gpu-firmware-amd-kmod because that is the hardware I have.  I was still unable to issue startx and get my fvwm desktop back up.  I figured that since I had trouble in the past and desktop-installer cured things before, I could use it now and get back a gui.

I recall there being a moment (but I am very uncertain where in the order of events) when I was unable to connect to the freebsd pkg repo, and I hadn't changed anything myself (directly, intentionally) so I looked online for some documentation about it.  At that time I may have noticed that ports were no longer updating.  Strangely, what had always worked was no longer functioning, I had to change my freebsd.conf to get that back.

This is my /usr/local/etc/pkg/repos/FreeBSD.conf with the former text all commented out with # characters, the working portion below.

# $FreeBSD$
#
# To disable this repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
#
#   mkdir -p /usr/local/etc/pkg/repos
#   echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#
#
#FreeBSD: {
#  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
#  mirror_type: "srv",
#  signature_type: "fingerprints",
#  fingerprints: "/usr/share/keys/pkg",
#  enabled: yes
#  priority: 0
#}

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
}

Since desktop-installer succeeded to set me up with SDDM and fluxbox, I had a GUI to work on the rest of my updates.  I needed to figure out or disable SDDM and get fvwm going.  At some point I noticed that graphics/drm-kmod had a way to auto choose the right port to install based upon the version of FreeBSD.  The Makefile did not permit the newer version for 14-stable to be drm-515-kmod as it at that moment could only install drm-505-kmod.

I tried to get things updated using the file list mentioned earlier but kept running into problems until I happened to use graphics/gpu-firmware-kmod to install things instead of the more direct amdgpu in the list.  Once I did this, both drm-505-kmod or drm-515-kmod worked fine.  When I reinstalled that list, I kept thinking that maybe one thing in the list affected others, and maybe they do but repeated installs did not solve it.

So finally again I had a gui and everything seemed to be going the right direction.  All it would take to bring things back to a broken state yet again is to update those ports.  I liked the idea of sysutils/auto-admin and it mostly worked fine, aside from how it would insist to reinstall (from pkg) versions with one-size-fits-all default port configs.  The more ridicules was ftp/curl which by removal caused auto-admin scripts themselves to fail.

Eventually I realized that if auto-admin wanted to deinstall ftp/curl and use bad defaults for it (I must have static for some other port) I could build it the way I need then lock it.  This became the solution for a number of issues.  Pango also needed the libthai option because firefox insisted upon it, so that was built and locked.  Some time later, vlc was also affected by changed options, MAD being the only mp3 decoder available, so this too rebuilt and locked.  I know ffmpeg and firefox were both eventually locked as well.

It seems that within the week or so that I rebuilt and reinstalled FreeBSD from 13-stable to now 14-stable, more things mysteriously broke and had to be fixed than usual.  I do not know what to point to as the precise cause.  Most if not all of these difficulties are within the realm of FreeBSD ports and not kernel or world related at all.

Somehow after updating fvwm3 to its most recent commit, what will be the next release version, I exited out to start the new version and couldn't get back.  I was getting a very odd message related to some sort of X windows thing which at this moment I cannot recall.  It was something like how it wasn't sure which amdgpu driver or definition or something to use.  This was odd as when I looked at what I thought was pertinent, there was only one related to this.  I think it was related to drivers again, or I assumed it was, so back to that list and reinstalling.  I eventually added new things to the list after finally getting fvwm up again, mostly.

The trouble was, even though I had fvwm up, my mouse cursor was stuck at the center of the screen and things felt stalled, I think they *were* stalled.  I tried reinstalling the mouse driver and then went back to desktop-installer for the essentials and hopefully a fix.  Once more, desktop-installer cured the issue.  I looked at what drivers were now installed and added more to the list.

x11/libXxf86dga
x11/libXxf86vm
x11-drivers/xf86-input-libinput
x11/xf86dga
x11/xmodmap

I believe now after desktop-installer saved me yet one more time, everything should be working and I would have no troubles.  Except that I was wrong of course.  Now I am unsure how but something with my keyboard configuration now lacked anything for arrow keys.  After a lot of digging around I finally found how to fix them.  What I didn't discover until in the process of writing this is that my delete key does not function (fixed in below list).  I had to edit /usr/local/etc/Xmodmap to add some lines.  Later with xmodmap -pke > ~/.Xmodmap I told xmodmap to copy the file to my home directory.  Vermaden's blog post on FreeBSD desktop (part 9) was also useful to help me remember xev and its function, and some other things.

keycode 111 = 0xFF52
keycode 116 = 0xFF99
keycode 114 = 0xFF98
keycode 113 = 0xFF96
keycode 119 = BackSpace

I keep adding to my 'kernel rebuilt redo GUI' file list, at present this is the correct listing, missteps left out but vulkan stuff added just in case as it is an AMD card.

misc/pciids
graphics/libdrm
graphics/linux-c7-libdrm
graphics/libglvnd
graphics/libGLU
graphics/gstreamer1-plugins-vulkan
graphics/realesrgan-ncnn-vulkan
graphics/realsr-ncnn-vulkan
graphics/vapoursynth-waifu2x-ncnn-vulkan
graphics/vulkan-caps-viewer
graphics/vulkan-extension-layer
graphics/vulkan-headers
graphics/vulkan-loader
graphics/vulkan-tools
graphics/vulkan-validation-layers
graphics/gpu-firmware-kmod
x11/xorg
graphics/mesa-libs
graphics/mesa-dri
graphics/drm-515-kmod
devel/libudev-devd
x11-drivers/xf86-input-mouse
x11-drivers/xf86-input-keyboard
x11/libXxf86dga
x11/libXxf86vm
x11-drivers/xf86-input-libinput
x11-drivers/xf86-video-amdgpu
x11/xf86dga
x11/xmodmap

They always say what does not kill you makes you stronger, well, in the software/computer world it might be more like perseverence along with a little knowledge will always lead to a victory against those inanimate objects.  There is definitely an aspect of the former saying, in that, the greater the struggle, the more extreme the frustration, surpassing both will lead to greater knowlege and understanding, but in a nutshell: just don't give up.  Look for answers, look for help, embrace the puzzle.

Writing about our difficulties, successes, and failures, will help others who find the content.  You too could start a FreeBSD blog.

Sunday, September 3, 2023

Revised minetest-dev: fonts!

Anyone watching my git repo for minetest-dev or any of the others will know that I have expanded a bit on what I attempt to maintain in a reasonably timely manner.  Not too long ago, during a period when my FreeBSD install was functioning without hiccups, I eventually figured out another improvement to the minetest-dev Makefile.  I also have done a little cleanup for the options exposed to those who wish to install it.

Something I have wanted to do but hadn't the motivation or free time simultaneously is to have a way for the fonts installed on the system to be used by minetest, instead of duplicating them.  The solution I worked out is definitely not the best and actually begs upstream developers to include a proper mechanism to do this properly.  I understand that the minetest client should be guaranteed to have fonts it expects but without a mechanism within its build structure or configuration, we are stuck with a duplication of files for no real purpose.

minetest-dev:

PORTNAME=       minetest
DISTVERSION=    g20230902
CATEGORIES=     games
PKGNAMESUFFIX=  -dev
DISTNAME=       ${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR=    ${PORTNAME}${PKGNAMESUFFIX}

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

LICENSE=        LGPL21+

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

USES=           cmake compiler:c++14-lang iconv:wchar_t sqlite luajit
# Upstream requires Clang 3.5+ which for our criteria matches c++14-lang
# since https://en.cppreference.com/w/cpp/compiler_support
# lists "C++14 library support status (complete as of 3.5)"
# All other dependency version numbers are more direct and obvious, and surpass requirement.

CONFLICTS=      minetest

USE_GITHUB=     nodefault
GH_ACCOUNT=     minetest
GH_PROJECT=     minetest
GH_TAGNAME=     83b85ba16aaab7bddc479beada4ca3af9fa54a1b

CMAKE_ARGS=     -DCMAKE_BUILD_TYPE="MinSizeRel" \
                -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
                -DCUSTOM_MANDIR="${PREFIX}/man"

WRKSRC=         ${WRKDIR}/${PORTNAME}-${GH_TAGNAME}

OPTIONS_DEFINE=                 CURL DOCS FREETYPE LUAJIT NCURSES NLS SOUND SPATIAL TOUCH PROMETHEUS
OPTIONS_DEFAULT=                CURL DOCS FREETYPE LUAJIT SOUND SPATIAL SYSTEM_FONTS SYSTEM_GMP SYSTEM_JSONCPP CLIENT GLVND

OPTIONS_SINGLE=                 GRAPHICS
OPTIONS_MULTI=                  SYSTEM COMP
OPTIONS_GROUP=                  BUILD DATABASE

COMP_DESC=                      Software components
OPTIONS_MULTI_COMP=             CLIENT SERVER

SYSTEM_DESC=                    System subsitutes
OPTIONS_MULTI_SYSTEM=           SYSTEM_GMP SYSTEM_JSONCPP SYSTEM_FONTS

SYSTEM_GMP_DESC=                Use gmp from ports (ENABLE_SYSTEM_GMP)
SYSTEM_GMP_CMAKE_BOOL=          ENABLE_SYSTEM_GMP
SYSTEM_GMP_CMAKE_ON=            -DGMP_INCLUDE_DIR="${PREFIX}/include"
SYSTEM_GMP_LIB_DEPENDS=         libgmp.so:math/gmp

SYSTEM_JSONCPP_DESC=            Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)
SYSTEM_JSONCPP_CMAKE_BOOL=      ENABLE_SYSTEM_JSONCPP
SYSTEM_JSONCPP_CMAKE_ON=        -DJSON_INCLUDE_DIR="${PREFIX}/include/jsoncpp"
SYSTEM_JSONCPP_LIB_DEPENDS=     libjsoncpp.so:devel/jsoncpp

SYSTEM_FONTS_DESC=              Use or install default fonts from ports
SYSTEM_FONTS_RUN_DEPENDS=       ${LOCALBASE}/share/fonts/ChromeOS/Arimo-Bold.ttf:x11-fonts/croscorefonts-fonts-ttf \
                                ${LOCALBASE}/share/fonts/Droid/DroidSans.ttf:x11-fonts/droid-fonts-ttf

BUILD_DESC=                     Dev Build options
OPTIONS_GROUP_BUILD=            BENCHMARKS EXAMPLES UNITTESTS DEVTEST

BENCHMARKS_DESC=                Build benchmark sources (BUILD_BENCHMARKS)
BENCHMARKS_CMAKE_BOOL=          BUILD_BENCHMARKS
EXAMPLES_DESC=                  BUILD_EXAMPLES
EXAMPLES_CMAKE_BOOL=            BUILD_EXAMPLES
DEVTEST_DESC=                   Install Development Test game also (INSTALL_DEVTEST)
DEVTEST_CMAKE_BOOL=             INSTALL_DEVTEST
UNITTESTS_DESC=                 Build unittest sources (BUILD_UNITTESTS)
UNITTESTS_CMAKE_BOOL=           BUILD_UNITTESTS

OPTIONS_SINGLE_GRAPHICS=        GLVND LEGACY
GRAPHICS_DESC=                  Graphics support

GLVND_DESC=                     Use libOpenGL or libGLX
GLVND_CMAKE_BOOL=               ENABLE_GLVND
GLVND_CMAKE_ON=                 -DOPENGL_GL_PREFERENCE="GLVND" -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"
GLVND_USE=                      GL+=opengl

LEGACY_DESC=                    Use libGL - where GLVND may be broken on nvidia
LEGACY_CMAKE_BOOL=              ENABLE_LEGACY
LEGACY_CMAKE_ON=                -DOPENGL_GL_PREFERENCE="LEGACY" -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"
LEGACY_USE=                     GL+=opengl

DATABASE_DESC=                  Database support
OPTIONS_GROUP_DATABASE=         LEVELDB PGSQL REDIS

OPTIONS_SUB=                    yes

CLIENT_DESC=                    Build client
CLIENT_CMAKE_BOOL=              BUILD_CLIENT
CLIENT_LIB_DEPENDS=             libIrrlichtMt.so:x11-toolkits/irrlicht-minetest \
                                libpng.so:graphics/png

CLIENT_USES=                    gl xorg
CLIENT_USE=                     jpeg 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

SERVER_DESC=                    Build server
SERVER_CMAKE_BOOL=              BUILD_SERVER

CURL_DESC=                      Enable cURL support for fetching media
CURL_CMAKE_BOOL=                ENABLE_CURL
CURL_LIB_DEPENDS=               libcurl.so:ftp/curl

SOUND_DESC=                     Enable sound via openal-soft
SOUND_CMAKE_BOOL=               ENABLE_SOUND

FREETYPE_DESC=                  Support for TrueType fonts with unicode
FREETYPE_CMAKE_BOOL=            ENABLE_FREETYPE
FREETYPE_LIB_DEPENDS=           libfreetype.so:print/freetype2

NCURSES_DESC=                   Enables server side terminal (cli option: --terminal)
NCURSES_CMAKE_BOOL=             ENABLE_CURSES
NCURSES_USES=                   ncurses

# This option is becoming uncertain, though it does something, is it useful?
LUAJIT_DESC=                    Require LUAJIT (always enabled)
LUAJIT_CMAKE_BOOL_ON=           REQUIRE_LUAJIT
LUAJIT_CMAKE_BOOL_OFF=          ENABLE_LUAJIT

LEVELDB_DESC=                   Enable LevelDB backend
LEVELDB_CMAKE_BOOL=             ENABLE_LEVELDB
LEVELDB_LIB_DEPENDS=            libleveldb.so:databases/leveldb

PGSQL_DESC=                     Enable PostgreSQL map backend
PGSQL_USES=                     pgsql
PGSQL_CMAKE_BOOL=               ENABLE_POSTGRESQL

REDIS_DESC=                     Enable Redis backend
REDIS_CMAKE_BOOL=               ENABLE_REDIS
REDIS_LIB_DEPENDS=              libhiredis.so:databases/hiredis

SPATIAL_DESC=                   Enable SpatialIndex (Speeds up AreaStores)
SPATIAL_LIB_DEPENDS=            libspatialindex.so:devel/spatialindex
SPATIAL_CMAKE_BOOL=             ENABLE_SPATIAL

NLS_DESC=                       Native Language Support (ENABLE_GETTEXT)
NLS_CMAKE_BOOL=                 ENABLE_GETTEXT
NLS_USES=                       gettext
NLS_LDFLAGS=                    -L${LOCALBASE}/lib

TOUCH_DESC=                     Build with touch interface support
TOUCH_CMAKE_BOOL=               ENABLE_TOUCH
# dependency?

PROMETHEUS_DESC=                Build with Prometheus metrics exporter
PROMETHEUS_CMAKE_BOOL=          ENABLE_PROMETHEUS
# dependency?

.include 

.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND}
USES+=                  openal
LIB_DEPENDS+=           libogg.so:audio/libogg \
                        libvorbis.so:audio/libvorbis \
                        libvorbisfile.so:audio/libvorbis
.endif

.if ${PORT_OPTIONS:MSERVER}
#USE_RC_SUBR=   ${PORTNAME}
#USERS=         ${PORTNAME}
#GROUPS=        ${PORTNAME}
#USE_RC_SUBR=           minetest/ERX
USE_RC_SUBR=            minetest
USERS=                  minetest
GROUPS=                 minetest
.endif

# Exactly why this must be done this way eludes me but this works and satisfies the install needs.
.if ${PORT_OPTIONS:MSYSTEM_FONTS}
pre-install:
        ${MKDIR} ${LOCALBASE}/share/minetest/fonts
        ${RM} ${LOCALBASE}/share/minetest/fonts/Arimo-Bold.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Arimo-BoldItalic.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Arimo-Italic.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Cousine-Bold.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Cousine-BoldItalic.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Cousine-Italic.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/Cousine-Regular.ttf
        ${RM} ${LOCALBASE}/share/minetest/fonts/DroidSansFallbackFull.ttf
        ${MKDIR} ${LOCALBASE}/share/minetest/fonts
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Arimo-Bold.ttf ${LOCALBASE}/share/minetest/fonts/Arimo-Bold.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Arimo-BoldItalic.ttf ${LOCALBASE}/share/minetest/fonts/Arimo-BoldItalic.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Arimo-Italic.ttf ${LOCALBASE}/share/minetest/fonts/Arimo-Italic.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Cousine-Bold.ttf ${LOCALBASE}/share/minetest/fonts/Cousine-Bold.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Cousine-BoldItalic.ttf ${LOCALBASE}/share/minetest/fonts/Cousine-BoldItalic.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Cousine-Italic.ttf ${LOCALBASE}/share/minetest/fonts/Cousine-Italic.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/ChromeOS/Cousine-Regular.ttf ${LOCALBASE}/share/minetest/fonts/Cousine-Regular.ttf
        ${LN} -s ${LOCALBASE}/share/fonts/Droid/DroidSansFallbackFull.ttf ${LOCALBASE}/share/minetest/fonts/DroidSansFallbackFull.ttf
.endif

post-install:
        @${ECHO_MSG} " "
        @${ECHO_MSG} "-->  "${PREFIX}/etc/"minetest.conf.example explains options and gives their default values. "
        @${ECHO_MSG} " "
        @${ECHO_MSG} "-->  Local network issues could cause singleplayer to fail. "
        @${ECHO_MSG} " "
        @${ECHO_MSG} "-->  Alternate graphics driver may be set in client config, must be set to get used."
        @${ECHO_MSG} " "
        @${ECHO_MSG} " "

# hacky way to not bring irrlicht and X11 depends for server only
#.if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER}
#BROKEN= server only hack fails for irrlicht fork
#.endif
# From wiki:
#  Building without Irrlicht / X dependency
# You can build the Minetest server without library dependencies to Irrlicht or any graphical stuff.
# You still need the Irrlicht headers for this, so first, download the irrlicht source to somewhere.
#
# When invoking CMake, use -DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source.

#----------------------------------------------------------------------
#
# Strangely network issues can prevent singleplayer from functioning.
# GCC           7.5+    or Clang 6.0+
# CMake         3.5+
# IrrlichtMt    -       Custom version of Irrlicht, see https://github.com/minetest/irrlicht
# Freetype      2.0+
# SQLite3       3+
# Zstd          1.0+
# LuaJIT        2.0+    Bundled Lua 5.1 is used if not present
# GMP           5.0.0+  Bundled mini-GMP is used if not present
# JsonCPP       1.0.0+  Bundled JsonCPP is used if not present
# Curl          7.56.0+ Optional
# gettext       -       Optional
#----------------------------------------------------------------------
.include 

The post-install message is there for information which I believe an official port wouldn't even place within a pkg-message file, and why must I bother with another file if this remains the same much of the time. It would be one more file to track and possibly update.

Once more: I am not an official port maintainer of official ports, and although I may have based my initial Makefiles upon prior works, these are different, unique, and likely never to be annointed in their format or style or technique.  Use them as you choose, the risk is yours regardless of whether they seem safe and effective on my system, caveat emptor for both and all.  I will attempt to keep both updated nearly as frequently as I discover new commits.

Repo urls:

Maintaining these unofficial ports [tree leaf contents files] is an enjoyable hobby which ensures that I also have the very most current software.  The process to do this officially or not is not particularly difficult but it can certainly be a challenge.  I have yet to completely beat dbeaver into utter submission, but the datestamp solution is less than obvious even with a partial answer I am uncertain how to adapt it.  You will never know how you could succeed if you never attempt it.  If there is ANYTHING out there in the Linux world which you want to have for yourself, you can try to port it.  Read the porter's handbook, my own blog posts relate my experiences.

Wednesday, May 24, 2023

The trouble with alsa

The trouble with alsa-plugins could be unique to me, which seems too often to be the case when I do choose to submit a bug report.  I have decided to play Veloren a bit more often in lieu of minetest.  In ports now is games/veloren-weekly which means this game client/server combo install will be updated by the maintainer on a 7-day cycle.  I adjusted a copy of the Makefile in my personal Ported_Software directory after copying everything else from /usr/ports/games/veloren-weekly.  My only change being to revise the commit hash and date.  This is one of the few ports that I know of which would follow the most recent git repo commit hash in a similar fashion as my own.  My revised veloren port got through all of its build and then the install of it discovered that alsa was incomplete, alsa-plugins being one of the dependencies, and it failed to install.

Instead of alsa-plugins getting installed, it stops with an error from pkg-static:

mkdir -p /usr/ports/audio/alsa-plugins/work/stage/usr/local/etc/alsa/conf.d
cd /usr/ports/audio/alsa-plugins/work/stage/usr/local/etc/alsa/conf.d
/bin/rm -f 60-speex.conf; ln -s /usr/local/share/alsa/alsa.conf.d/60-speex.conf .
cd /usr/ports/audio/alsa-plugins/work/stage/usr/local/etc/alsa/conf.d && for i in [0-9][0-9]-*.conf ; do  /bin/ln -sf ../../../share/alsa/alsa.conf.d/$i .  ; done
====> Compressing man pages (compress-man)
===>   Installing ldconfig configuration file
===>  Installing for alsa-plugins-1.2.2_9
===>  Checking if alsa-plugins is already installed
===>   Registering installation for alsa-plugins-1.2.2_9
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/etc/alsa/conf.d/10-rate-lav.conf:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/etc/alsa/conf.d/60-a52-encoder.conf:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_pcm_a52.la:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_pcm_a52.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate.la:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate_fast.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate_faster.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate_high.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/lib/alsa-lib/libasound_module_rate_lavrate_higher.so:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/share/alsa/alsa.conf.d/10-rate-lav.conf:No such file or directory
pkg-static: Unable to access file /usr/ports/audio/alsa-plugins/work/stage/usr/local/share/alsa/alsa.conf.d/60-a52-encoder.conf:No such file or directory
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/audio/alsa-plugins
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/audio/alsa-plugins
*** Error code 1

Stop.
make: stopped in /usr/ports/audio/alsa-plugins
root@ichigo:/usr/ports/audio/alsa-plugins #

Since I have handled numerous updates to my unofficial ports, from time to time I see a similar message.  What this means is that something about the install has changed but the pkg-plist no longer matches what was built.  Just as when updating minetest-dev or some other of my unofficial ports, what needs to be done is to set aside the pkg-plist by renaming it pkg-plist-old, and then re-creating one.  This is a quick and easy task, simply make makeplist > pkg-plist and edit the result to remove one line.  I assume that what gets built with my present alsa-plugins configuration is what would satisfy Veloren, I will just replace the pkg-plist to solve the pkg-static error messages.  The result of creating the new pkg-plist when I do a diff between them, just to show you how they are not identical, is below.  The one line I had to remove is: /you/have/to/check/what/makeplist/gives/you

root@ichigo:/usr/ports/audio/alsa-plugins # diff -y -W 120 pkg-plist pkg-plist-old | more
etc/alsa/conf.d/10-samplerate.conf                         |    %%FFMPEG%%etc/alsa/conf.d/10-rate-lav.conf
etc/alsa/conf.d/10-speexrate.conf                          |    %%SAMPLERATE%%etc/alsa/conf.d/10-samplerate.conf
etc/alsa/conf.d/50-arcam-av-ctl.conf                       |    %%FFMPEG%%etc/alsa/conf.d/60-a52-encoder.conf
etc/alsa/conf.d/50-oss.conf                                |    @comment etc/alsa/conf.d/50-arcam-av-ctl.conf
etc/alsa/conf.d/60-speex.conf                              |    @comment etc/alsa/conf.d/50-oss.conf
etc/alsa/conf.d/60-upmix.conf                              |    @comment etc/alsa/conf.d/50-pulseaudio.conf
etc/alsa/conf.d/60-vdownmix.conf                           |    %%SPEEX%%etc/alsa/conf.d/60-speex.conf
etc/alsa/conf.d/98-usb-stream.conf                         |    @comment etc/alsa/conf.d/60-upmix.conf
                                                           >    @comment etc/alsa/conf.d/60-vdownmix.conf
                                                           >    @comment etc/alsa/conf.d/98-usb-stream.conf
                                                           >    @comment etc/alsa/conf.d/99-pulseaudio-default.conf.exa
                                                           >    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_conf_pulse.
                                                           >    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_conf_pulse.
lib/alsa-lib/libasound_module_ctl_arcam_av.la                   lib/alsa-lib/libasound_module_ctl_arcam_av.la
lib/alsa-lib/libasound_module_ctl_arcam_av.so                   lib/alsa-lib/libasound_module_ctl_arcam_av.so
lib/alsa-lib/libasound_module_ctl_oss.la                        lib/alsa-lib/libasound_module_ctl_oss.la
lib/alsa-lib/libasound_module_ctl_oss.so                        lib/alsa-lib/libasound_module_ctl_oss.so
                                                           >    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_ctl_pulse.l
                                                           >    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_ctl_pulse.s
                                                           >    %%FFMPEG%%lib/alsa-lib/libasound_module_pcm_a52.la
                                                           >    %%FFMPEG%%lib/alsa-lib/libasound_module_pcm_a52.so
                                                           >    %%JACK%%lib/alsa-lib/libasound_module_pcm_jack.la
                                                           >    %%JACK%%lib/alsa-lib/libasound_module_pcm_jack.so
lib/alsa-lib/libasound_module_pcm_oss.la                        lib/alsa-lib/libasound_module_pcm_oss.la
lib/alsa-lib/libasound_module_pcm_oss.so                        lib/alsa-lib/libasound_module_pcm_oss.so
lib/alsa-lib/libasound_module_pcm_speex.la                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_pcm_pulse.l
lib/alsa-lib/libasound_module_pcm_speex.so                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_pcm_pulse.s
                                                           >    %%SPEEX%%lib/alsa-lib/libasound_module_pcm_speex.la
                                                           >    %%SPEEX%%lib/alsa-lib/libasound_module_pcm_speex.so
lib/alsa-lib/libasound_module_pcm_upmix.la                      lib/alsa-lib/libasound_module_pcm_upmix.la
lib/alsa-lib/libasound_module_pcm_upmix.so                      lib/alsa-lib/libasound_module_pcm_upmix.so
lib/alsa-lib/libasound_module_pcm_usb_stream.la                 lib/alsa-lib/libasound_module_pcm_usb_stream.la
lib/alsa-lib/libasound_module_pcm_usb_stream.so                 lib/alsa-lib/libasound_module_pcm_usb_stream.so
lib/alsa-lib/libasound_module_pcm_vdownmix.la                   lib/alsa-lib/libasound_module_pcm_vdownmix.la
lib/alsa-lib/libasound_module_pcm_vdownmix.so                   lib/alsa-lib/libasound_module_pcm_vdownmix.so
lib/alsa-lib/libasound_module_rate_samplerate.la           |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate.la
lib/alsa-lib/libasound_module_rate_samplerate.so           |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate.so
lib/alsa-lib/libasound_module_rate_samplerate_best.so      |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate_fa
lib/alsa-lib/libasound_module_rate_samplerate_linear.so    |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate_fa
lib/alsa-lib/libasound_module_rate_samplerate_medium.so    |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate_hi
lib/alsa-lib/libasound_module_rate_samplerate_order.so     |    %%FFMPEG%%lib/alsa-lib/libasound_module_rate_lavrate_hi
lib/alsa-lib/libasound_module_rate_speexrate.la            |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_speexrate.so            |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_speexrate_best.so       |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_speexrate_medium.so     |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
libdata/ldconfig/alsa-plugins                              |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
share/alsa/alsa.conf.d/10-samplerate.conf                  |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
share/alsa/alsa.conf.d/10-speexrate.conf                   |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate.l
share/alsa/alsa.conf.d/50-arcam-av-ctl.conf                |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate.s
share/alsa/alsa.conf.d/50-oss.conf                         |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate_b
share/alsa/alsa.conf.d/60-speex.conf                       |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate_m
share/alsa/alsa.conf.d/60-upmix.conf                       |    %%FFMPEG%%share/alsa/alsa.conf.d/10-rate-lav.conf
share/alsa/alsa.conf.d/60-vdownmix.conf                    |    %%SAMPLERATE%%share/alsa/alsa.conf.d/10-samplerate.conf
share/alsa/alsa.conf.d/98-usb-stream.conf                  |    @comment share/alsa/alsa.conf.d/50-arcam-av-ctl.conf
                                                           >    @comment share/alsa/alsa.conf.d/50-oss.conf
                                                           >    %%PULSEAUDIO%%share/alsa/alsa.conf.d/50-pulseaudio.conf
                                                           >    %%FFMPEG%%share/alsa/alsa.conf.d/60-a52-encoder.conf
                                                           >    %%SPEEX%%share/alsa/alsa.conf.d/60-speex.conf
                                                           >    @comment share/alsa/alsa.conf.d/60-upmix.conf
                                                           >    @comment share/alsa/alsa.conf.d/60-vdownmix.conf
                                                           >    @comment share/alsa/alsa.conf.d/98-usb-stream.conf

You may notice those items which are in the error messages from install are omitted from the new pkg-plist on the left or have changed to reflect what is now installed.  Of course, because I am doing this sort of 'quick and dirty' solve for installing this dependency for games/veloren, there are a number of other differences.  The old pkg-plist includes all options ticked which have conditional pkg include tags related to each config option, such as %%SPEEX%% and %%FFMPEG%% which I may not have ticked in this recent install.

After this cure for the pkg-plist issue I had when installing alsa-plugins to satisfy the dependency for veloren-weekly, it can be successfully installed (because the pkg-plist will now match what will get installed) and I can then install veloren-weekly as initially desired.  This sort of fix is fairly simple and could apply to nearly any port which strangely has a pkg-plist issue like this one.  With regard to my veloren-weekly install, I would need to re-generate the distinfo file in order to begin the reinstall process with the updated upstream commit source.

Should this pkg-plist disparity linger for any significant period of time, it would be a good candidate for a bugzilla report to help its maintainer to recognize an adjustment needs to be made for the pkg-plist.  However, I intend to assume that my system, my install, my build methods, and anything else which could affect the legitimacy of such a bug report are suspect or different or incorrect or flawed, and so I will not be making a report.  It may also already be the case that this has been updated within the time it has taken me to write this blog post.

Addendum

Whoops, a more proper less quick or dirty fix for alsa-plugins means I have to revise the pkg-plist correctly.  I had hoped that my less pretty solution would have worked but I lacked audio even though veloren was satisfied by the dependencies and successfully built.  This meant I did a much more careful comparison (diff) and modification of the generated pkg-plist to match what had been built.

The diff that I ended with is below.  If you compare the fixed one with the unedited pkg-plist in the above blog post, there are still oddities of things missing or present or renamed.  Even though it seems odd, the fixed pkg-plist did result with audio in veloren.

root@ichigo:/usr/ports/audio/alsa-plugins # diff -y -W 120 pkg-plist pkg-plist-fixed | more
etc/alsa/conf.d/10-samplerate.conf                         |    %%SAMPLERATE%%etc/alsa/conf.d/10-samplerate.conf
etc/alsa/conf.d/10-speexrate.conf                          |    %%SPEEX%%etc/alsa/conf.d/10-speexrate.conf
etc/alsa/conf.d/50-arcam-av-ctl.conf                       |    @comment etc/alsa/conf.d/50-arcam-av-ctl.conf
etc/alsa/conf.d/50-jack.conf                               |    @comment etc/alsa/conf.d/50-jack.conf
etc/alsa/conf.d/50-oss.conf                                |    @comment etc/alsa/conf.d/50-oss.conf
etc/alsa/conf.d/50-pulseaudio.conf                         |    @comment etc/alsa/conf.d/50-pulseaudio.conf
etc/alsa/conf.d/60-speex.conf                              |    %%SPEEX%%etc/alsa/conf.d/60-speex.conf
etc/alsa/conf.d/60-upmix.conf                              |    @comment etc/alsa/conf.d/60-upmix.conf
etc/alsa/conf.d/60-vdownmix.conf                           |    @comment etc/alsa/conf.d/60-vdownmix.conf
etc/alsa/conf.d/98-usb-stream.conf                         |    @comment etc/alsa/conf.d/98-usb-stream.conf
etc/alsa/conf.d/99-pulseaudio-default.conf.example         |    @comment etc/alsa/conf.d/99-pulseaudio-default.conf.exa
lib/alsa-lib/libasound_module_conf_pulse.la                |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_conf_pulse.
lib/alsa-lib/libasound_module_conf_pulse.so                |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_conf_pulse.
lib/alsa-lib/libasound_module_ctl_arcam_av.la                   lib/alsa-lib/libasound_module_ctl_arcam_av.la
lib/alsa-lib/libasound_module_ctl_arcam_av.so                   lib/alsa-lib/libasound_module_ctl_arcam_av.so
lib/alsa-lib/libasound_module_ctl_oss.la                        lib/alsa-lib/libasound_module_ctl_oss.la
lib/alsa-lib/libasound_module_ctl_oss.so                        lib/alsa-lib/libasound_module_ctl_oss.so
lib/alsa-lib/libasound_module_ctl_pulse.la                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_ctl_pulse.l
lib/alsa-lib/libasound_module_ctl_pulse.so                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_ctl_pulse.s
lib/alsa-lib/libasound_module_pcm_jack.la                  |    %%JACK%%lib/alsa-lib/libasound_module_pcm_jack.la
lib/alsa-lib/libasound_module_pcm_jack.so                  |    %%JACK%%lib/alsa-lib/libasound_module_pcm_jack.so
lib/alsa-lib/libasound_module_pcm_oss.la                        lib/alsa-lib/libasound_module_pcm_oss.la
lib/alsa-lib/libasound_module_pcm_oss.so                        lib/alsa-lib/libasound_module_pcm_oss.so
lib/alsa-lib/libasound_module_pcm_pulse.la                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_pcm_pulse.l
lib/alsa-lib/libasound_module_pcm_pulse.so                 |    %%PULSEAUDIO%%lib/alsa-lib/libasound_module_pcm_pulse.s
lib/alsa-lib/libasound_module_pcm_speex.la                 |    %%SPEEX%%lib/alsa-lib/libasound_module_pcm_speex.la
lib/alsa-lib/libasound_module_pcm_speex.so                 |    %%SPEEX%%lib/alsa-lib/libasound_module_pcm_speex.so
lib/alsa-lib/libasound_module_pcm_upmix.la                      lib/alsa-lib/libasound_module_pcm_upmix.la
lib/alsa-lib/libasound_module_pcm_upmix.so                      lib/alsa-lib/libasound_module_pcm_upmix.so
lib/alsa-lib/libasound_module_pcm_usb_stream.la                 lib/alsa-lib/libasound_module_pcm_usb_stream.la
lib/alsa-lib/libasound_module_pcm_usb_stream.so                 lib/alsa-lib/libasound_module_pcm_usb_stream.so
lib/alsa-lib/libasound_module_pcm_vdownmix.la                   lib/alsa-lib/libasound_module_pcm_vdownmix.la
lib/alsa-lib/libasound_module_pcm_vdownmix.so                   lib/alsa-lib/libasound_module_pcm_vdownmix.so
lib/alsa-lib/libasound_module_rate_samplerate.la           |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_samplerate.so           |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_samplerate_best.so      |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_samplerate_linear.so    |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_samplerate_medium.so    |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_samplerate_order.so     |    %%SAMPLERATE%%lib/alsa-lib/libasound_module_rate_sample
lib/alsa-lib/libasound_module_rate_speexrate.la            |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate.l
lib/alsa-lib/libasound_module_rate_speexrate.so            |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate.s
lib/alsa-lib/libasound_module_rate_speexrate_best.so       |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate_b
lib/alsa-lib/libasound_module_rate_speexrate_medium.so     |    %%SPEEX%%lib/alsa-lib/libasound_module_rate_speexrate_m
libdata/ldconfig/alsa-plugins                                   libdata/ldconfig/alsa-plugins
share/alsa/alsa.conf.d/10-samplerate.conf                  |    %%SAMPLERATE%%share/alsa/alsa.conf.d/10-samplerate.conf
share/alsa/alsa.conf.d/10-speexrate.conf                   |    %%SPEEX%%share/alsa/alsa.conf.d/10-speexrate.conf
share/alsa/alsa.conf.d/50-arcam-av-ctl.conf                |    @comment share/alsa/alsa.conf.d/50-arcam-av-ctl.conf
share/alsa/alsa.conf.d/50-jack.conf                        |    %%JACK%%share/alsa/alsa.conf.d/50-jack.conf
share/alsa/alsa.conf.d/50-oss.conf                         |    @comment share/alsa/alsa.conf.d/50-oss.conf
share/alsa/alsa.conf.d/50-pulseaudio.conf                  |    %%PULSEAUDIO%%share/alsa/alsa.conf.d/50-pulseaudio.conf
share/alsa/alsa.conf.d/60-speex.conf                       |    %%SPEEX%%share/alsa/alsa.conf.d/60-speex.conf
share/alsa/alsa.conf.d/60-upmix.conf                       |    @comment share/alsa/alsa.conf.d/60-upmix.conf
share/alsa/alsa.conf.d/60-vdownmix.conf                    |    @comment share/alsa/alsa.conf.d/60-vdownmix.conf
share/alsa/alsa.conf.d/98-usb-stream.conf                  |    @comment share/alsa/alsa.conf.d/98-usb-stream.conf

Sunday, October 30, 2022

LibreSSL hermit cousin

I have now been through a process of switching back and forth between LibreSSL and openssl at least a few too many times.  I really would prefer to use LibreSSL but it is very much not suited to a standard desktop system with a bunch of other things like multimedia and games installed.  The trouble is not precisely LibreSSL itself but that it is like openssl's hermit cousin, left off in the wilderness somewhere perfectly secure but not dealing much with others.

I'm sure the open source community at large and software in general would be best served if LibreSSL were widely adopted except that it is not.  If you use OpenBSD, I'm certain that LibreSSL is a first class citizen, as well as seeing the soonest updates of LibreSSL for anything OpenBSD or its users actively maintain.  Here in FreeBSD land, we are a bit more cozy with Linux and its upstream whims and therefore cannot expect LibreSSL to be noticed for what it is and can do.  We therefore should not attempt to keep LibreSSL on our personal use machines if we also use a plethora of other software because eventually something will become updated or break or lack compatibility with LibreSSL for a short time or if we're unlucky for weeks or permanently.

In our world, LibreSSL compatibility is not a huge concern, except for firewall-router platforms such as OPNsense.  It may not always be the first choice but it is a choice and with the more security and network oriented applications or plugins involved on such a platform, we can be most assured that LibreSSL will be treated properly, kept up to date with everything else, and likely the software it finds itself among will be well aware of LibreSSL.

I have had LibreSSL in my custom base install for a while, then due to updates of FreeBSD temporarily shifted to openssl, and then back to LibreSSL when I had the time to do so.  Even when I did not have it explicitly in my base install, I had it installed from ports and expected everything to use it.  My most recent difficulty is what has lead me to the bizarre (as in why did it take me so damn long) realization that I should quit attempting to use LibreSSL on my desktop machine.  For the longest moment things were working just fine, but then this always ends kinda sudden, with one more mass build via poudriere and huge pkg upgrade process which then leaves me without any of various previously installed things.

Two ports that have each become a 'lynchpin' for numerous others, and in some ways that defy my own understanding of dependency mechanisms, are rust and py-cryptography.  I understand that crypto for or related to ssl makes sense but it and rust seem to prevent many ports from building when they fail within a poudriere bulk build.  I can look at any number of the ports which are claimed to need rust or py-cryptography but they are most certainly not a first order requirement for some as expected.  Firefox has needed rust for quite a while now, so I can understand that failing but since when has Xorg or x apps themselves individually been built needing rust?  In order to battle past this seeming database confusion I now regularly pkg check -Ba to hopefully correct or alert me of issues.

I don't mean for this to be a diatribe against LibreSSL which performs its job well when used.  It is not the fault of LibreSSL that more things have not been made compatible with it, it is the shortcomings of what is largely the Linux community for not offering it as a functional drop-in where ssl is concerned.  It may be that LibreSSL works best on OpenBSD and for limited software installs such as router-firewall devices, or perhaps even a very limited desktop, but hoping for it to never fail you when having thousands of other things including games and multimedia installed is expecting too much-- and even then it is still not LibreSSL that is the actual issue.  Avoid future headaches, use openssl on your do-everything desktop but employ it for your firewall-router box, or maybe containerize all your other tools and games where they can use openssl while the host functions nicely with LibreSSL.

Wednesday, September 28, 2022

SSL port update fail recovery

Sometimes because of your own insistence at having the most current software and doing frequent updates, you slam head first into another's oversight.  This is not always a huge issue but it can be.  When you discover in the process of updating that you've found a dead end, you cannot go forward and immediately going backward is also impossible, you may need to do something a bit more drastic, but happily not a clean fresh install.

Recently, once again, something related to security/ssl broke many things, and as I was partly through updating I had also lost the previous install of security/libressl.  My first idea was to figure out what version of libressl I had before things went wrong, I knew part of the issue was the newer version being incompatible.  Due to that or some other combination, security/py-cryptography also could not build, and from there lang/rust was also affected.  Between py-cryptography, libressl, and rust, I was without any direct method to do much of anything on my box.  Firefox was broken, my irc clients wouldn't start, but luckily I had some things setup properly on my system although disabled or unused.

Trying to backtrack libressl by modifying the version number in its Makefile and removing distinfo and pkg-plist files worked, except that I discovered other ports which needed the same process to get these older versions built.  Although the second port I tried to change in this way wound up in failure, I also figured that I was going to discover yet more things I'd need to manually edit, so I gave up on this idea for the solution.  What I knew I could do is revert my ports from the most current to quarterly, and this I could do very easily with gitup.  I have been using a short script that eliminated some typing, so I just need to switch 'ports' to 'quarterly' in my script which calls gitup.  The configuration file for gitup already has this set as an option but as I mentioned, it was unused.

cat /usr/local/etc/gitup.conf

# $FreeBSD$
#
# Default configuration options for gitup.conf.
{
	"defaults" : {
		"host"           : "git.freebsd.org",
		"port"           : 443,
#		"proxy_host"     : "",
#		"proxy_port"     : 0,
#		"proxy_username" : "",
#		"proxy_password" : "",
#		"source_address" : "",
		"low_memory"     : false,
		"display_depth"  : 0,
		"verbosity"      : 1,
		"work_directory" : "/var/db/gitup",
	},

	"ports" : {
		"repository_path"  : "/ports.git",
		"branch"           : "main",
		"target_directory" : "/usr/ports",
		"ignores"          : [],
	},

	"quarterly" : {
		"repository_path"  : "/ports.git",
		"branch"           : "quarterly",
		"target_directory" : "/usr/ports",
		"ignores"          : [],
	},

	"release" : {
		"repository_path"  : "/src.git",
		"branch"           : "releng/13.1",
		"target_directory" : "/usr/src",
		"ignores"          : [
			"sys/[^\/]+/conf",
		],
	},

	"stable" : {
		"repository_path"  : "/src.git",
		"branch"           : "stable/13",
		"target_directory" : "/usr/src",
		"ignores"          : [
			"sys/[^\/]+/conf",
		],
	},

	"current" : {
		"repository_path"  : "/src.git",
		"branch"           : "main",
		"target_directory" : "/usr/src",
		"ignores"          : [
			"sys/[^\/]+/conf",
		],
	}
}

Somewhere in the process of this whole mess becoming an issue, gitup was no longer working either.  Thankfully I still had connectivity so all I needed to do is grab the FreeBSD pkg for it.  In order to do this, I have to re-enable the FreeBSD pkg repo which I generally avoid in lieu of my own poudriere built ports, local repo.  My configuration file has two similar sections, and enable section and a disable section, all I need to do is switch which lines are commented out.

cat /usr/local/etc/pkg/repos/FreeBSD.conf

# $FreeBSD$
#
# To disable this repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
#
#   mkdir -p /usr/local/etc/pkg/repos
#   echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#
#
#FreeBSD: {
#  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
#  mirror_type: "srv",
#  signature_type: "fingerprints",
#  fingerprints: "/usr/share/keys/pkg",
#  enabled: yes
#  priority: 0
#}

FreeBSD: {
  enabled: no
}

My local poudriere repo configuration file I do not need to change at all, although it has a disable section as well.

cat /usr/local/etc/pkg/repos/my_poudriere_repo.conf

# Set for test 9-20-20 8:20pm
# revised for stable-13 2-13-21 2:48am

poudriere: {
  url      : file:///usr/local/poudriere/data/packages/13amd64-default,
  priority : 10,
  enabled  : yes
}

#poudriere: {
#  enabled  : no
#}

With this changed, I can do pkg install gitup, and having revised my script, I can tell gitup to revise my /usr/ports to quarterly.  After my ports are effectively reset to an earlier time, I can tell poudriere (since I have it configured to use that same ports tree as I would for manual builds) to re-build any number of lists of bulk port builds.  Simply issuing a pkg upgrade after the ports tree was reverted and while the FreeBSD pkg repo was enabled caused many things to be reinstalled, a few to be updated (was not expecting that) and a few things to be uninstalled.  When I set poudriere to do the first bulk build, I discovered that ccache installed from FreeBSD pkg repo was not a static build/lib which poudriere requires.  This is when I disabled the FreeBSD pkg repo in favor of exclusively using my own local repo from poudriere, and then I manually rebuilt and installed ccache with the correct options.

Part of the problem is my own, for being a bit excessive with trying to have the most current ports on my system.  This is possibly essential for my unofficial port tree leaf git repos for those ports I maintain on my own.  The rest of the cause for my recent troubles is from ports maintainers not recognizing a breaking change.  I did check /usr/ports/UPDATING after this struck me, and it simply mentions the libressl upgrade but not that some other thing is not yet compatible with the newest 3.5.3 version.  I would strongly suggest some sort of way to be more certain that all ssl changes are compatible before openssl or libressl are updated as a final commit to the ports tree.  We can find a way out of our predicament but it wouldn't hurt to not have an unknowing pitfall exposed if it can be avoided, and none of us would be spending time (even with the caveat of being on a more bleeding edge) extricating ourselves from it and more on being productive in some way-- possibly even via contributions to our community or one we touch through it.

Sunday, August 28, 2022

Never far from FreeBSD

Although it may seem that I have taken a vacation from FreeBSD, what I did do is more of a break from doing NEW things and thus didn't feel it worth reporting on the "SSDD repeat" it may have been.

One of the last new things I did relating to FreeBSD is creating the concept of 'FreeBSD Games Directory' which I did not myself promote but did make accessible to the public.  BSD Now somehow discovered it and mentioned the nascent project on one of their episodes.  Progress on it has been somewhat slow and it is presently kind of on a back burner.  What I have decided is that I will evolve it into a more proper database format thing which will output an easily consumable html format file.  Both varieties will be available but the barrier to use will be particularly low as it will only necessitate a browser and the more recent output.

This brings us to my other new project, which, if you've looked at the FreeBSD group on Gab, you'd know is my attempt to port dbeaver to FreeBSD.  This is mostly accomplished except that due to the way that it builds and it may be a maven build system default, each build even if the source is unchanged will receive a timestamp in each filename built.  This is completely useless for FreeBSD ports as we expect reproducibility in our pkg-plist file.  I have not yet discovered a sure way to disable the timestamp, nor have I figured out a workaround.  dbeaver is listed in the wanted ports wiki page.

So then, because dbeaver is what I hope to use, as a smaller database manipulation tool than something like open- or libre- office, and dbeaver on FreeBSD is stalled, therefore the games directory as I reimagined it is presently stalled as well.

Prior to playing with dbeaver porting, I had discovered a dependency of godot, libthorvg, and that it could be built fairly easily for FreeBSD.  I created an unofficial port for it, and even gave some feedback to upstream for correcting a few issues with building on FreeBSD.  It is among the six unofficial ports that I maintain now, dbeaver as incomplete is not among them yet.

Since all of that, which occurred some time ago, I have been continuing to play minetest on the NodeCore game servers.  I recently now officially have a consumer of the unofficial minetest-dev port I maintain which is cool, I know that it works nicely for me but it is good to hear that someone else succeeds with it on FreeBSD also.  Another player on one of the servers asked if I would test some software he was helping develop (gpusph: The world's first CUDA implementation of Weakly-Compressible Smoothed Particle Hydrodynamics) and when I followed the instructions he gave for building and testing, it worked fine for me.  This is good news overall, the code includes checks for FreeBSD in the build, which is always cool to see.

One of the NodeCore server admins chose to switch the texture from plain vanilla (included with the game install) to something else for whatever reason.  This felt a bit jarring for me and I didn't really like the appearance change to the game there.  I decided to solve the issue for myself if I could.  I knew that I could use a local texture pack to override whatever is on a server as its default, so I set myself to task.  First, I needed to find the vanilla textures which was relatively easy as I did have NodeCore Alpha installed for other testing and experimentation in singleplayer mode.  I did a search for all of the files in any directory named textures then copied them into a new directory.  The new directory needed a few more things added to complete its creation as a "new" texture pack.  I chose the name everywheres_nc and made a texture_pack.conf file by revising another I already had close at hand.  What began as a way to get vanilla textures back for myself and provide them to others via github became a way to make a few subtle changes.  First I corrected the texture of a rake to fit the components used to create it, three tines instead of four, this became two different designs.  The first design has a definite pitchfork style to it, the second was my initial idea of being rather triangular.  Both options are in the texture pack and will need to be renamed to the vanilla name for the item.  The next change is to a flower that I like least of all the vanilla flower shapes.  This was another mild change, simply shifting the colored portion of the flower up one pixel and leaving the one pixel space vacant in the greenery secondary part of the texture.  The plan for this texture pack, first, make any other adjustments to what is available strictly for NodeCore and its mods, and then expand to override the textures of regular minetest and its mods.  As some things do not have anything at all close to NodeCore, I am not yet sure if I will nodecorify those textures or do something else.  I like the super-polished look of the high DPI mesecon nodes because it is high tech and looks right for those in my opinion, so that is one option.  I'll have to experiment a bit to decide.

Along with my plan to have a nicely searchable database of games available for FreeBSD via ports, which includes screenshots and additional information to facilitate deciding whether to install or try a game or not, I am also hoping to help get more games and game engines ported to FreeBSD.  I would hope that my efforts lead to others creating official ports even if they are based upon upstream releases instead of upstream repo commits.  Even if this does not happen, I intend to continue to provide my own repo for each unofficial port which does track the upstream repo commit and following my philosophy of exposing all the applicable options for building and configuring a port for FreeBSD.  I have put some effort into various potential future unofficial ports the same way as those I've done already.  Besides a general theme of games, I wish to maintain a more 'bleeding edge' upstream commit tracked version of many different programs that I often use, so you might note feh and fvwm among my repos on github.  Firefox seems to be getting more bloated and has some undesirable default features, so that is on my "eventually to do" list, but there is also Librewolf which is a project which already modifies a Firefox build to adjust some things, and I have begun attempting to port it.  Librewolf is very linux centric with how things are done, so it will be a bit of effort to get things 'converted' to FreeBSD methodology.

We use FreeBSD and we may accomplish things, though we might not make mention of them.  Sometimes we are surprised to be recognized for our efforts even when they're incomplete and in a very work-in-progress condition but possibly this would lead to other contributions to it.  Simply using FreeBSD often leads to learning more things about the OS or small steps toward various ways of giving back.  Learning and exploration is on-going, we can each report on our progress or accomplishments, offer tips and techniques, give back to the the rest of FreeBSD in any small way, help new users and others who may struggle by our posted essays.  Our choice is FreeBSD for our reasons and if we didn't enjoy it we would switch to something else.  We're out here doing, even when we say nothing about our progress, speaking of it doesn't necessarily make it occur but it can be a record and inspire or teach others.

Thursday, March 3, 2022

Repo update routine

I had a blog post begun ages ago to say that the task of updating of my various repos for FreeBSD port tree leaf files is a whole lot of wash-rinse-repeat.  Instead of going back to that partly begun but unfinished post, and since I am now in need of updating at least one repo, I'll just write and describe now as I go.  It truly is not a big task once the initial setup is done, just some small file changes, regenerating others, and verifying that nothing else needs to be adjusted.

The first step, is of course to go to the upstream repo and see if there has been a more recent commit than what is in my Makefile for that particular port tree leaf content repo.  The image below is what I see in my web browser for the upstream site, https://github.com/minetest/minetest/commits/master

View of github.com/minetest/minetest/commits/master
As you can see, the Commits on Mar 2, 2022 shown above is the most recent commit right at this moment, and below, the line in the Makefile, indicates Feb 26, 2022.
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # head Makefile
PORTNAME=       minetest
DISTVERSION=    g20220226
CATEGORIES=     games
PKGNAMESUFFIX=  -dev
DISTNAME=       ${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR=    ${PORTNAME}${PKGNAMESUFFIX}

MAINTAINER=     nope@nothere
COMMENT=        Near-infinite-world block sandbox game

Knowing now that there is an update to make, what I do is erase the distinfo and dist files for this port.  This is easily done in a quick one line, make distclean ; rm distinfo which is the output below.  It complains because the companion port, irrlicht-minetest which is a dependency in the Makefile is outside of the ports tree but this is not important since I build both of these outside and this build ultimately finds the dependency installed, so there is no failure.

root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # make distclean ; rm distinfo
minetest-dev-g20220226: "/usr/ports/x11-toolkits/irrlicht-minetest" non-existent -- dependency list incomplete
===>  Cleaning for minetest-dev-g20220226
===>  Deleting distfiles for minetest-dev-g20220226
The reason I clean up things this way is so that the remnants of old builds and old distfiles do not linger.  This is easier than manually erasing them myself which I would need to do if I missed this step, but since the details of their prior build is cached it can do this for me. Before I can begin the steps that would allow it to build, I need to modify the Makefile to update it for the new version.  I change the date and the hash, lines highlighted below and save the updated Makefile.
PORTNAME=       minetest
DISTVERSION=    g20220226
CATEGORIES=     games
PKGNAMESUFFIX=  -dev
DISTNAME=       ${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR=    ${PORTNAME}${PKGNAMESUFFIX}

MAINTAINER=     nope@nothere
COMMENT=        Near-infinite-world block sandbox game

LICENSE=        LGPL21+

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

#USES=          cmake compiler:c11 iconv:wchar_t pgsql          # complains missing sqlite
#USES=          cmake compiler:c11 iconv:wchar_t sqlite         # complains missing pgsql
USES=           cmake compiler:c11 iconv:wchar_t pgsql sqlite

CONFLICTS=      minetest

USE_GITHUB=     nodefault
GH_ACCOUNT=     minetest
GH_PROJECT=     minetest
GH_TAGNAME=     04bd253390cc6c67a555e4837e7e48d524fdf014

CMAKE_ARGS=     -DBUILD_UNITTESTS="FALSE" \
                -DCMAKE_BUILD_TYPE="MinSizeRel" \
                -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
                -DCUSTOM_MANDIR="${PREFIX}/man" \
                -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"

WRKSRC= ${WRKDIR}/${PORTNAME}-${GH_TAGNAME}
The above becomes revised below, changes highlighted:
PORTNAME=       minetest
DISTVERSION=    g20220302
CATEGORIES=     games
PKGNAMESUFFIX=  -dev
DISTNAME=       ${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR=    ${PORTNAME}${PKGNAMESUFFIX}

MAINTAINER=     nope@nothere
COMMENT=        Near-infinite-world block sandbox game

LICENSE=        LGPL21+

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

#USES=          cmake compiler:c11 iconv:wchar_t pgsql          # complains missing sqlite
#USES=          cmake compiler:c11 iconv:wchar_t sqlite         # complains missing pgsql
USES=           cmake compiler:c11 iconv:wchar_t pgsql sqlite

CONFLICTS=      minetest

USE_GITHUB=     nodefault
GH_ACCOUNT=     minetest
GH_PROJECT=     minetest
GH_TAGNAME=     f2d1295fe646105f1b98b0c204f47f781336e211

CMAKE_ARGS=     -DBUILD_UNITTESTS="FALSE" \
                -DCMAKE_BUILD_TYPE="MinSizeRel" \
                -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
                -DCUSTOM_MANDIR="${PREFIX}/man" \
                -DOPENGL_xmesa_INCLUDE_DIR="${PREFIX}/lib"

WRKSRC= ${WRKDIR}/${PORTNAME}-${GH_TAGNAME}

You may wonder how I obtained the GH_TAGNAME information.  On the commits page, there is a link that I copy (image below).

This can be done by the copy icon or by choosing to copy the link "f2d1295" which results in a url which I clean up to only the needed text. https://github.com/minetest/minetest/commit/f2d1295fe646105f1b98b0c204f47f781336e211 becomes what is used in the Makefile edit previously shown above.

Since I am obtaining a new tarball from github, I erased the old distinfo file.  In order to re-create this distinfo file, it is another easy command make makesum and again warnings I can ignore but this time they are better explained, and besides I am not an official ports committer.

root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # make makesum
/!\ minetest-dev-g20220302: Makefile warnings, please consider fixing /!\

Not validating first entry in CATEGORIES due to being outside of PORTSDIR.
Please ensure this is proper when committing.

===>  License LGPL21+ accepted by the user
/!\ minetest-dev-g20220302: Makefile warnings, please consider fixing /!\

Not validating first entry in CATEGORIES due to being outside of PORTSDIR.
Please ensure this is proper when committing.

===>  License LGPL21+ accepted by the user
===>   minetest-dev-g20220302 depends on file: /usr/local/sbin/pkg - found
=> minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.gz doesn't seem to exist in /usr/ports/distfiles/minetest-dev.
=> Attempting to fetch https://codeload.github.com/minetest/minetest/tar.gz/f2d1295fe646105f1b98b0c204f47f781336e211?dummy=/minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.gz
fetch: https://codeload.github.com/minetest/minetest/tar.gz/f2d1295fe646105f1b98b0c204f47f781336e211?dummy=/minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.gz: size of remote file is not known
minetest-f2d1295fe646105f1b98b0c204f47f781336e        9342 kB  873 kBps    11s
===> Fetching all distfiles required by minetest-dev-g20220302 for building
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev #
Now that everything is in place, I can reinstall this port using the updated Makefile and distinfo files.  I am not asking it to clean after because I need the results in the work directory for some other maintenance checks.  I am providing a short part of the beginning of this build process output and the last portion since the long output is not of much value overall for this illustration.
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # make reinstall
===>  Deinstalling for minetest-dev
===>   Deinstalling minetest-dev-g20220226
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        minetest-dev: g20220226

Number of packages to be removed: 1

The operation will free 20 MiB.
[1/1] Deinstalling minetest-dev-g20220226...
[1/1] Deleting files for minetest-dev-g20220226: 100%
==> You should manually remove the "minetest" user.
==> You should manually remove the "minetest" group
Generating GTK icon cache for /usr/local/share/icons/hicolor
Building cache database of MIME types
/!\ minetest-dev-g20220302: Makefile warnings, please consider fixing /!\

Not validating first entry in CATEGORIES due to being outside of PORTSDIR.
Please ensure this is proper when committing.

===>  License LGPL21+ accepted by the user
===>   minetest-dev-g20220302 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by minetest-dev-g20220302 for building
===>  Extracting for minetest-dev-g20220302
=> SHA256 Checksum OK for minetest-dev/minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.gz.
===>  Patching for minetest-dev-g20220302
===>   minetest-dev-g20220302 depends on file: /usr/local/bin/cmake - found
===>   minetest-dev-g20220302 depends on executable: ninja - found
===>   minetest-dev-g20220302 depends on executable: msgfmt - found
===>   minetest-dev-g20220302 depends on package: xorgproto>=0 - found
===>   minetest-dev-g20220302 depends on package: xorgproto>=0 - found
===>   minetest-dev-g20220302 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found
===>   minetest-dev-g20220302 depends on file: /usr/local/libdata/pkgconfig/sm.pc - found
===>   minetest-dev-g20220302 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found
===>   minetest-dev-g20220302 depends on file: /usr/local/libdata/pkgconfig/xext.pc - found
===>   minetest-dev-g20220302 depends on file: /usr/local/libdata/pkgconfig/xxf86vm.pc - found
===>   minetest-dev-g20220302 depends on file: /usr/local/bin/ccache - found
===>   minetest-dev-g20220302 depends on shared library: libIrrlichtMt.so - found (/usr/local/lib/libIrrlichtMt.so)
===>   minetest-dev-g20220302 depends on shared library: libzstd.so - found (/usr/local/lib/libzstd.so)
===>   minetest-dev-g20220302 depends on shared library: libIrrlichtMt.so - found (/usr/local/lib/libIrrlichtMt.so)
===>   minetest-dev-g20220302 depends on shared library: libpng.so - found (/usr/local/lib/libpng.so)
===>   minetest-dev-g20220302 depends on shared library: libcurl.so - found (/usr/local/lib/libcurl.so)
===>   minetest-dev-g20220302 depends on shared library: libfreetype.so - found (/usr/local/lib/libfreetype.so)
===>   minetest-dev-g20220302 depends on shared library: libluajit-5.1.so - found (/usr/local/lib/libluajit-5.1.so)
===>   minetest-dev-g20220302 depends on shared library: libgmp.so - found (/usr/local/lib/libgmp.so)
===>   minetest-dev-g20220302 depends on shared library: libjsoncpp.so - found (/usr/local/lib/libjsoncpp.so)
===>   minetest-dev-g20220302 depends on shared library: libogg.so - found (/usr/local/lib/libogg.so)
===>   minetest-dev-g20220302 depends on shared library: libvorbis.so - found (/usr/local/lib/libvorbis.so)
===>   minetest-dev-g20220302 depends on shared library: libvorbisfile.so - found (/usr/local/lib/libvorbisfile.so)
===>   minetest-dev-g20220302 depends on shared library: libiconv.so - found (/usr/local/lib/libiconv.so)
===>   minetest-dev-g20220302 depends on shared library: libpq.so.5 - found (/usr/local/lib/libpq.so.5)
===>   minetest-dev-g20220302 depends on shared library: libsqlite3.so - found (/usr/local/lib/libsqlite3.so)
===>   minetest-dev-g20220302 depends on shared library: libGL.so - found (/usr/local/lib/libGL.so)
===>   minetest-dev-g20220302 depends on shared library: libGLU.so - found (/usr/local/lib/libGLU.so)
===>   minetest-dev-g20220302 depends on shared library: libjpeg.so - found (/usr/local/lib/libjpeg.so)
===>   minetest-dev-g20220302 depends on shared library: libintl.so - found (/usr/local/lib/libintl.so)
===>   minetest-dev-g20220302 depends on shared library: libopenal.so.1 - found (/usr/local/lib/libopenal.so.1)
===>  Configuring for minetest-dev-g20220302
===>  Performing out-of-source build
/bin/mkdir -p /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/.build
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/local/libexec/ccache/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/libexec/ccache/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- *** Will build version 5.6.0-dev ***
-- Found IrrlichtMt 1.9.0
-- Using MANDIR=/usr/local/man
-- Using EXAMPLE_CONF_DIR=/usr/local/etc
-- Using GMP provided by system.
-- Found GMP: /usr/local/lib/libgmp.so
-- Using JsonCpp provided by system.
-- Found Json: /usr/local/lib/libjsoncpp.so
-- Found LuaJIT: /usr/local/lib/libluajit-5.1.so
-- Using LuaJIT provided by system.
-- Found CURL: /usr/local/lib/libcurl.so
-- cURL support enabled.
-- Found GettextLib: /usr/local/include
-- GetText enabled; locales found: ar;be;bg;ca;cs;da;de;dv;el;eo;es;et;eu;fi;fil;fr;gd;gl;he;hi;hu;id;it;ja;jbo;kk;kn;ko;ky;lt;lv;lzh;mr;ms;ms_Arab;nb;nl;nn;pl;pt;pt_BR;ro;ru;sk;sl;sr_Cyrl;sr_Latn;sv;sw;th;tr;tt;uk;vi;yue;zh_CN;zh_TW
-- Found OpenAL: /usr/local/lib/libopenal.so
-- Found Vorbis: /usr/local/include
-- Sound enabled.
-- Found OpenGL: /usr/local/lib/libOpenGL.so
-- Found Freetype: /usr/local/lib/libfreetype.so (found version "2.11.1")
-- Found PostgreSQL: /usr/local/lib/libpq.so (found version "12.10")
-- PostgreSQL backend enabled
-- PostgreSQL includes: /usr/local/include;/usr/local/include/postgresql/server
-- Found SQLite3: /usr/local/lib/libsqlite3.so
-- Prometheus client disabled.
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11")
-- Looking for ZSTD_initCStream
-- Looking for ZSTD_initCStream - found
-- Found Zstd: /usr/local/lib/libzstd.so
-- Found X11: /usr/local/include
-- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/lib/libXext.so
-- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Looking for include file endian.h
-- Looking for include file endian.h - not found
-- Locale blacklist applied; Locales used: be;bg;ca;cs;da;de;el;eo;es;et;eu;fi;fil;fr;gd;gl;hu;id;it;ja;jbo;kk;ko;ky;lt;lv;lzh;mr;ms;nb;nl;nn;pl;pt;pt_BR;ro;ru;sk;sl;sr_Cyrl;sr_Latn;sv;sw;tr;tt;uk;vi;yue;zh_CN;zh_TW
-- Performing Test IS_AARCH64
-- Performing Test IS_AARCH64 - Failed
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Configuring done
-- Generating done

And the end portion is below, plenty more was prior to the gear_icon.png line but this last part gives an idea.

-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/textures/base/pack/gear_icon.png
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/README.md
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/lua_api.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/client_lua_api.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/menu_lua_api.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/texture_packs.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/doc/minetest/world_format.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/etc/minetest.conf.example
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/man/man6/minetest.6
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/man/man6/minetestserver.6
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/applications/net.minetest.minetest.desktop
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/metainfo/net.minetest.minetest.appdata.xml
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/icons/hicolor/scalable/apps/minetest.svg
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/icons/hicolor/128x128/apps/minetest.png
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/bin/minetest
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/be/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/bg/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ca/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/cs/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/da/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/de/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/el/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/eo/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/es/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/et/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/eu/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/fi/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/fil/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/fr/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/gd/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/gl/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/hu/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/id/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/it/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ja/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/jbo/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/kk/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ko/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ky/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/lt/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/lv/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/lzh/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/mr/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ms/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/nb/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/nl/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/nn/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/pl/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/pt/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/pt_BR/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ro/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/ru/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sk/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sl/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sr_Cyrl/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sr_Latn/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sv/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/sw/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/tr/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/tt/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/uk/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/vi/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/yue/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/zh_CN/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/locale/zh_TW/LC_MESSAGES/minetest.mo
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/DroidSansFallbackFull.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Arimo-Bold.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Cousine-LICENSE.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/DroidSansFallbackFull-LICENSE.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Cousine-Regular.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Cousine-Bold.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Arimo-Italic.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Arimo-LICENSE.txt
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Arimo-BoldItalic.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Arimo-Regular.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Cousine-BoldItalic.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/share/minetest/fonts/Cousine-Italic.ttf
-- Installing: /usr/home/tigersharke/Ported_Software/games/minetest-dev/work/stage/usr/local/bin/minetestserver
====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
====> Running Q/A tests (stage-qa)
===>  Installing for minetest-dev-g20220302
===>  Checking if minetest-dev is already installed
===>   Registering installation for minetest-dev-g20220302
Installing minetest-dev-g20220302...
===> Creating groups.
Using existing group 'minetest'.
===> Creating users
Using existing user 'minetest'.
Generating GTK icon cache for /usr/local/share/icons/hicolor
Building cache database of MIME types
===> 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:/home/tigersharke/Ported_Software/games/minetest-dev #

Above you can see "Running Q/A tests" which is something I enable for my local manual builds and my poudriere pkg builds.  This would catch some of the more obscure and less obvious problems, such as if I somehow missed a library dependency that it linked against.  My last check I try to do each time is to verify the pkg-plist remains accurate.  This I do by first setting aside the previous pkg-plist by renaming it to pkg-plist-old.  After that, I tell it to re-create the pkg-plist from what is in the work directory from this recent build (why I didn't do clean).  The command for this is easy as well but possibly not entirely obvious: make makeplist > pkg-plist and then I make a comparison with diff.  Right before I do that, I remove the line in this new pkg-plist: /you/have/to/check/what/makeplist/gives/you which is there to remind committers that you should scrutinize the result such as with diff like I am doing.

root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # diff -y pkg-plist pkg-plist-old | more
bin/minetest                                                    |       %%CLIENT%%bin/minetest
bin/minetestserver                                              |       %%SERVER%%bin/minetestserver
%%ETCDIR%%.conf.example                                         |       %%EXAMPLES%%@sample etc/minetest.conf.example etc/minetes
etc/rc.d/minetest                                               |       %%DOCS%%man/man6/minetest.6.gz
man/man6/minetest.6.gz                                          |       %%DOCS%%man/man6/minetestserver.6.gz
man/man6/minetestserver.6.gz                                    |       %%SERVER%%etc/rc.d/minetest
share/applications/net.minetest.minetest.desktop                        share/applications/net.minetest.minetest.desktop
%%PORTDOCS%%%%DOCSDIR%%/README.md                                       %%PORTDOCS%%%%DOCSDIR%%/README.md
%%PORTDOCS%%%%DOCSDIR%%/client_lua_api.txt                              %%PORTDOCS%%%%DOCSDIR%%/client_lua_api.txt
%%PORTDOCS%%%%DOCSDIR%%/lua_api.txt                                     %%PORTDOCS%%%%DOCSDIR%%/lua_api.txt
%%PORTDOCS%%%%DOCSDIR%%/menu_lua_api.txt                                %%PORTDOCS%%%%DOCSDIR%%/menu_lua_api.txt
%%PORTDOCS%%%%DOCSDIR%%/texture_packs.txt                               %%PORTDOCS%%%%DOCSDIR%%/texture_packs.txt
%%PORTDOCS%%%%DOCSDIR%%/world_format.txt                                %%PORTDOCS%%%%DOCSDIR%%/world_format.txt
share/icons/hicolor/128x128/apps/minetest.png                           share/icons/hicolor/128x128/apps/minetest.png
share/icons/hicolor/scalable/apps/minetest.svg                          share/icons/hicolor/scalable/apps/minetest.svg
share/locale/be/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/be/LC_MESSAGES/minetest.mo
share/locale/bg/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/bg/LC_MESSAGES/minetest.mo
share/locale/ca/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ca/LC_MESSAGES/minetest.mo
share/locale/cs/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/cs/LC_MESSAGES/minetest.mo
share/locale/da/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/da/LC_MESSAGES/minetest.mo
share/locale/de/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/de/LC_MESSAGES/minetest.mo
share/locale/el/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/el/LC_MESSAGES/minetest.mo
share/locale/eo/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/eo/LC_MESSAGES/minetest.mo
share/locale/es/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/es/LC_MESSAGES/minetest.mo
share/locale/et/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/et/LC_MESSAGES/minetest.mo
share/locale/eu/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/eu/LC_MESSAGES/minetest.mo
share/locale/fi/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/fi/LC_MESSAGES/minetest.mo
share/locale/fil/LC_MESSAGES/minetest.mo                        |       %%CLIENT%%%%NLS%%share/locale/fil/LC_MESSAGES/minetest.mo
share/locale/fr/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/fr/LC_MESSAGES/minetest.mo
share/locale/gd/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/gd/LC_MESSAGES/minetest.mo
share/locale/gl/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/gl/LC_MESSAGES/minetest.mo
share/locale/hu/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/hu/LC_MESSAGES/minetest.mo
share/locale/id/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/id/LC_MESSAGES/minetest.mo
share/locale/it/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/it/LC_MESSAGES/minetest.mo
share/locale/ja/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ja/LC_MESSAGES/minetest.mo
share/locale/jbo/LC_MESSAGES/minetest.mo                        |       %%CLIENT%%%%NLS%%share/locale/jbo/LC_MESSAGES/minetest.mo
share/locale/kk/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/kk/LC_MESSAGES/minetest.mo
share/locale/ko/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ko/LC_MESSAGES/minetest.mo
share/locale/ky/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ky/LC_MESSAGES/minetest.mo
share/locale/lt/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/lt/LC_MESSAGES/minetest.mo
share/locale/lv/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/lv/LC_MESSAGES/minetest.mo
share/locale/lzh/LC_MESSAGES/minetest.mo                        |       %%CLIENT%%%%NLS%%share/locale/lzh/LC_MESSAGES/minetest.mo
share/locale/mr/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/mr/LC_MESSAGES/minetest.mo
share/locale/ms/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ms/LC_MESSAGES/minetest.mo
share/locale/nb/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/nb/LC_MESSAGES/minetest.mo
share/locale/nl/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/nl/LC_MESSAGES/minetest.mo
share/locale/nn/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/nn/LC_MESSAGES/minetest.mo
share/locale/pl/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/pl/LC_MESSAGES/minetest.mo
share/locale/pt/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/pt/LC_MESSAGES/minetest.mo
share/locale/pt_BR/LC_MESSAGES/minetest.mo                      |       %%CLIENT%%%%NLS%%share/locale/pt_BR/LC_MESSAGES/minetest.
share/locale/ro/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ro/LC_MESSAGES/minetest.mo
share/locale/ru/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/ru/LC_MESSAGES/minetest.mo
share/locale/sk/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/sk/LC_MESSAGES/minetest.mo
share/locale/sl/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/sl/LC_MESSAGES/minetest.mo
share/locale/sr_Cyrl/LC_MESSAGES/minetest.mo                    |       %%CLIENT%%%%NLS%%share/locale/sr_Cyrl/LC_MESSAGES/minetes
share/locale/sr_Latn/LC_MESSAGES/minetest.mo                    |       %%CLIENT%%%%NLS%%share/locale/sr_Latn/LC_MESSAGES/minetes
share/locale/sv/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/sv/LC_MESSAGES/minetest.mo
share/locale/sw/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/sw/LC_MESSAGES/minetest.mo
share/locale/tr/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/tr/LC_MESSAGES/minetest.mo
share/locale/tt/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/tt/LC_MESSAGES/minetest.mo
share/locale/uk/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/uk/LC_MESSAGES/minetest.mo
share/locale/vi/LC_MESSAGES/minetest.mo                         |       %%CLIENT%%%%NLS%%share/locale/vi/LC_MESSAGES/minetest.mo
share/locale/yue/LC_MESSAGES/minetest.mo                        |       %%CLIENT%%%%NLS%%share/locale/yue/LC_MESSAGES/minetest.mo
share/locale/zh_CN/LC_MESSAGES/minetest.mo                      |       %%CLIENT%%%%NLS%%share/locale/zh_CN/LC_MESSAGES/minetest.
share/locale/zh_TW/LC_MESSAGES/minetest.mo                      |       %%CLIENT%%%%NLS%%share/locale/zh_TW/LC_MESSAGES/minetest.
share/metainfo/net.minetest.minetest.appdata.xml                        share/metainfo/net.minetest.minetest.appdata.xml
%%DATADIR%%/builtin/async/init.lua                                      %%DATADIR%%/builtin/async/init.lua
%%DATADIR%%/builtin/client/chatcommands.lua                             %%DATADIR%%/builtin/client/chatcommands.lua
%%DATADIR%%/builtin/client/death_formspec.lua                           %%DATADIR%%/builtin/client/death_formspec.lua
%%DATADIR%%/builtin/client/init.lua                                     %%DATADIR%%/builtin/client/init.lua
%%DATADIR%%/builtin/client/register.lua                                 %%DATADIR%%/builtin/client/register.lua
%%DATADIR%%/builtin/common/after.lua                                    %%DATADIR%%/builtin/common/after.lua
%%DATADIR%%/builtin/common/chatcommands.lua                             %%DATADIR%%/builtin/common/chatcommands.lua
%%DATADIR%%/builtin/common/filterlist.lua                               %%DATADIR%%/builtin/common/filterlist.lua
%%DATADIR%%/builtin/common/information_formspecs.lua                    %%DATADIR%%/builtin/common/information_formspecs.lua
%%DATADIR%%/builtin/common/misc_helpers.lua                             %%DATADIR%%/builtin/common/misc_helpers.lua
%%DATADIR%%/builtin/common/serialize.lua                                %%DATADIR%%/builtin/common/serialize.lua
%%DATADIR%%/builtin/common/strict.lua                                   %%DATADIR%%/builtin/common/strict.lua
%%DATADIR%%/builtin/common/tests/misc_helpers_spec.lua                  %%DATADIR%%/builtin/common/tests/misc_helpers_spec.lua
%%DATADIR%%/builtin/common/tests/serialize_spec.lua                     %%DATADIR%%/builtin/common/tests/serialize_spec.lua
%%DATADIR%%/builtin/common/tests/vector_spec.lua                        %%DATADIR%%/builtin/common/tests/vector_spec.lua
%%DATADIR%%/builtin/common/vector.lua                                   %%DATADIR%%/builtin/common/vector.lua
%%DATADIR%%/builtin/fstk/buttonbar.lua                                  %%DATADIR%%/builtin/fstk/buttonbar.lua
%%DATADIR%%/builtin/fstk/dialog.lua                                     %%DATADIR%%/builtin/fstk/dialog.lua
%%DATADIR%%/builtin/fstk/tabview.lua                                    %%DATADIR%%/builtin/fstk/tabview.lua
%%DATADIR%%/builtin/fstk/ui.lua                                         %%DATADIR%%/builtin/fstk/ui.lua
%%DATADIR%%/builtin/game/auth.lua                                       %%DATADIR%%/builtin/game/auth.lua
%%DATADIR%%/builtin/game/chat.lua                                       %%DATADIR%%/builtin/game/chat.lua
%%DATADIR%%/builtin/game/constants.lua                                  %%DATADIR%%/builtin/game/constants.lua
%%DATADIR%%/builtin/game/deprecated.lua                                 %%DATADIR%%/builtin/game/deprecated.lua
%%DATADIR%%/builtin/game/detached_inventory.lua                         %%DATADIR%%/builtin/game/detached_inventory.lua
%%DATADIR%%/builtin/game/falling.lua                                    %%DATADIR%%/builtin/game/falling.lua
%%DATADIR%%/builtin/game/features.lua                                   %%DATADIR%%/builtin/game/features.lua
%%DATADIR%%/builtin/game/forceloading.lua                               %%DATADIR%%/builtin/game/forceloading.lua
%%DATADIR%%/builtin/game/init.lua                                       %%DATADIR%%/builtin/game/init.lua
%%DATADIR%%/builtin/game/item.lua                                       %%DATADIR%%/builtin/game/item.lua
%%DATADIR%%/builtin/game/item_entity.lua                                %%DATADIR%%/builtin/game/item_entity.lua
%%DATADIR%%/builtin/game/knockback.lua                                  %%DATADIR%%/builtin/game/knockback.lua
%%DATADIR%%/builtin/game/misc.lua                                       %%DATADIR%%/builtin/game/misc.lua
%%DATADIR%%/builtin/game/privileges.lua                                 %%DATADIR%%/builtin/game/privileges.lua
%%DATADIR%%/builtin/game/register.lua                                   %%DATADIR%%/builtin/game/register.lua
%%DATADIR%%/builtin/game/statbars.lua                                   %%DATADIR%%/builtin/game/statbars.lua
%%DATADIR%%/builtin/game/static_spawn.lua                               %%DATADIR%%/builtin/game/static_spawn.lua
%%DATADIR%%/builtin/game/voxelarea.lua                                  %%DATADIR%%/builtin/game/voxelarea.lua
%%DATADIR%%/builtin/init.lua                                            %%DATADIR%%/builtin/init.lua
%%DATADIR%%/builtin/locale/__builtin.de.tr                              %%DATADIR%%/builtin/locale/__builtin.de.tr
%%DATADIR%%/builtin/locale/__builtin.it.tr                              %%DATADIR%%/builtin/locale/__builtin.it.tr
%%DATADIR%%/builtin/locale/template.txt                                 %%DATADIR%%/builtin/locale/template.txt
%%DATADIR%%/builtin/mainmenu/async_event.lua                            %%DATADIR%%/builtin/mainmenu/async_event.lua
%%DATADIR%%/builtin/mainmenu/common.lua                                 %%DATADIR%%/builtin/mainmenu/common.lua
%%DATADIR%%/builtin/mainmenu/dlg_config_world.lua                       %%DATADIR%%/builtin/mainmenu/dlg_config_world.lua
%%DATADIR%%/builtin/mainmenu/dlg_contentstore.lua                       %%DATADIR%%/builtin/mainmenu/dlg_contentstore.lua
%%DATADIR%%/builtin/mainmenu/dlg_create_world.lua                       %%DATADIR%%/builtin/mainmenu/dlg_create_world.lua
%%DATADIR%%/builtin/mainmenu/dlg_delete_content.lua                     %%DATADIR%%/builtin/mainmenu/dlg_delete_content.lua
%%DATADIR%%/builtin/mainmenu/dlg_delete_world.lua                       %%DATADIR%%/builtin/mainmenu/dlg_delete_world.lua
%%DATADIR%%/builtin/mainmenu/dlg_rename_modpack.lua                     %%DATADIR%%/builtin/mainmenu/dlg_rename_modpack.lua
%%DATADIR%%/builtin/mainmenu/dlg_settings_advanced.lua                  %%DATADIR%%/builtin/mainmenu/dlg_settings_advanced.lua
%%DATADIR%%/builtin/mainmenu/game_theme.lua                             %%DATADIR%%/builtin/mainmenu/game_theme.lua
%%DATADIR%%/builtin/mainmenu/generate_from_settingtypes.l               %%DATADIR%%/builtin/mainmenu/generate_from_settingtypes.l
%%DATADIR%%/builtin/mainmenu/init.lua                                   %%DATADIR%%/builtin/mainmenu/init.lua
%%DATADIR%%/builtin/mainmenu/pkgmgr.lua                                 %%DATADIR%%/builtin/mainmenu/pkgmgr.lua
%%DATADIR%%/builtin/mainmenu/serverlistmgr.lua                          %%DATADIR%%/builtin/mainmenu/serverlistmgr.lua
%%DATADIR%%/builtin/mainmenu/tab_about.lua                              %%DATADIR%%/builtin/mainmenu/tab_about.lua
%%DATADIR%%/builtin/mainmenu/tab_content.lua                            %%DATADIR%%/builtin/mainmenu/tab_content.lua
%%DATADIR%%/builtin/mainmenu/tab_local.lua                              %%DATADIR%%/builtin/mainmenu/tab_local.lua
%%DATADIR%%/builtin/mainmenu/tab_online.lua                             %%DATADIR%%/builtin/mainmenu/tab_online.lua
%%DATADIR%%/builtin/mainmenu/tab_settings.lua                           %%DATADIR%%/builtin/mainmenu/tab_settings.lua
%%DATADIR%%/builtin/mainmenu/tests/favorites_wellformed.t               %%DATADIR%%/builtin/mainmenu/tests/favorites_wellformed.t
%%DATADIR%%/builtin/mainmenu/tests/serverlistmgr_spec.lua               %%DATADIR%%/builtin/mainmenu/tests/serverlistmgr_spec.lua
%%DATADIR%%/builtin/profiler/init.lua                                   %%DATADIR%%/builtin/profiler/init.lua
%%DATADIR%%/builtin/profiler/instrumentation.lua                        %%DATADIR%%/builtin/profiler/instrumentation.lua
%%DATADIR%%/builtin/profiler/reporter.lua                               %%DATADIR%%/builtin/profiler/reporter.lua
%%DATADIR%%/builtin/profiler/sampling.lua                               %%DATADIR%%/builtin/profiler/sampling.lua
%%DATADIR%%/builtin/settingtypes.txt                                    %%DATADIR%%/builtin/settingtypes.txt
%%DATADIR%%/client/shaders/3d_interlaced_merge/opengl_fra       |       %%CLIENT%%%%DATADIR%%/client/shaders/3d_interlaced_merge/
%%DATADIR%%/client/shaders/3d_interlaced_merge/opengl_ver       |       %%CLIENT%%%%DATADIR%%/client/shaders/3d_interlaced_merge/
%%DATADIR%%/client/shaders/default_shader/opengl_fragment       |       %%CLIENT%%%%DATADIR%%/client/shaders/default_shader/openg
%%DATADIR%%/client/shaders/default_shader/opengl_vertex.g       |       %%CLIENT%%%%DATADIR%%/client/shaders/default_shader/openg
%%DATADIR%%/client/shaders/minimap_shader/opengl_fragment       |       %%CLIENT%%%%DATADIR%%/client/shaders/minimap_shader/openg
%%DATADIR%%/client/shaders/minimap_shader/opengl_vertex.g       |       %%CLIENT%%%%DATADIR%%/client/shaders/minimap_shader/openg
%%DATADIR%%/client/shaders/nodes_shader/opengl_fragment.g       |       %%CLIENT%%%%DATADIR%%/client/shaders/nodes_shader/opengl_
%%DATADIR%%/client/shaders/nodes_shader/opengl_vertex.gls       |       %%CLIENT%%%%DATADIR%%/client/shaders/nodes_shader/opengl_
%%DATADIR%%/client/shaders/object_shader/opengl_fragment.       |       %%CLIENT%%%%DATADIR%%/client/shaders/object_shader/opengl
%%DATADIR%%/client/shaders/object_shader/opengl_vertex.gl       |       %%CLIENT%%%%DATADIR%%/client/shaders/object_shader/opengl
%%DATADIR%%/client/shaders/selection_shader/opengl_fragme       |       %%CLIENT%%%%DATADIR%%/client/shaders/selection_shader/ope
%%DATADIR%%/client/shaders/selection_shader/opengl_vertex       |       %%CLIENT%%%%DATADIR%%/client/shaders/selection_shader/ope
%%DATADIR%%/client/shaders/shadow_shaders/pass1_fragment.       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass1
%%DATADIR%%/client/shaders/shadow_shaders/pass1_trans_fra       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass1
%%DATADIR%%/client/shaders/shadow_shaders/pass1_trans_ver       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass1
%%DATADIR%%/client/shaders/shadow_shaders/pass1_vertex.gl       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass1
%%DATADIR%%/client/shaders/shadow_shaders/pass2_fragment.       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass2
%%DATADIR%%/client/shaders/shadow_shaders/pass2_vertex.gl       |       %%CLIENT%%%%DATADIR%%/client/shaders/shadow_shaders/pass2
%%DATADIR%%/client/shaders/stars_shader/opengl_fragment.g       |       %%CLIENT%%%%DATADIR%%/client/shaders/stars_shader/opengl_
%%DATADIR%%/client/shaders/stars_shader/opengl_vertex.gls       |       %%CLIENT%%%%DATADIR%%/client/shaders/stars_shader/opengl_
%%DATADIR%%/fonts/Arimo-Bold.ttf                                |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Arimo-Bold.ttf
%%DATADIR%%/fonts/Arimo-BoldItalic.ttf                          |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Arimo-BoldItalic.
%%DATADIR%%/fonts/Arimo-Italic.ttf                              |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Arimo-Italic.ttf
%%DATADIR%%/fonts/Arimo-LICENSE.txt                             |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Arimo-LICENSE.txt
%%DATADIR%%/fonts/Arimo-Regular.ttf                             |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Arimo-Regular.ttf
%%DATADIR%%/fonts/Cousine-Bold.ttf                              |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Cousine-Bold.ttf
%%DATADIR%%/fonts/Cousine-BoldItalic.ttf                        |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Cousine-BoldItali
%%DATADIR%%/fonts/Cousine-Italic.ttf                            |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Cousine-Italic.tt
%%DATADIR%%/fonts/Cousine-LICENSE.txt                           |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Cousine-LICENSE.t
%%DATADIR%%/fonts/Cousine-Regular.ttf                           |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/Cousine-Regular.t
%%DATADIR%%/fonts/DroidSansFallbackFull-LICENSE.txt             |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/DroidSansFallback
%%DATADIR%%/fonts/DroidSansFallbackFull.ttf                     |       %%CLIENT%%%%FREETYPE%%%%DATADIR%%/fonts/DroidSansFallback
%%DATADIR%%/games/devtest/LICENSE.txt                                   %%DATADIR%%/games/devtest/LICENSE.txt
%%DATADIR%%/games/devtest/README.md                                     %%DATADIR%%/games/devtest/README.md
%%DATADIR%%/games/devtest/game.conf                                     %%DATADIR%%/games/devtest/game.conf
%%DATADIR%%/games/devtest/menu/background.png                           %%DATADIR%%/games/devtest/menu/background.png
%%DATADIR%%/games/devtest/menu/header.png                               %%DATADIR%%/games/devtest/menu/header.png
%%DATADIR%%/games/devtest/menu/icon.png                                 %%DATADIR%%/games/devtest/menu/icon.png
%%DATADIR%%/games/devtest/mods/basenodes/init.lua                       %%DATADIR%%/games/devtest/mods/basenodes/init.lua
%%DATADIR%%/games/devtest/mods/basenodes/mod.conf                       %%DATADIR%%/games/devtest/mods/basenodes/mod.conf
%%DATADIR%%/games/devtest/mods/basenodes/textures/basenod               %%DATADIR%%/games/devtest/mods/basenodes/textures/basenod
%%DATADIR%%/games/devtest/mods/basenodes/textures/basenod               %%DATADIR%%/games/devtest/mods/basenodes/textures/basenod
%%DATADIR%%/games/devtest/mods/basenodes/textures/basenod               %%DATADIR%%/games/devtest/mods/basenodes/textures/basenod
%%DATADIR%%/games/devtest/mods/basenodes/textures/basenod               %%DATADIR%%/games/devtest/mods/basenodes/textures/basenod
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/default               %%DATADIR%%/games/devtest/mods/basenodes/textures/default
%%DATADIR%%/games/devtest/mods/basenodes/textures/dirt_wi               %%DATADIR%%/games/devtest/mods/basenodes/textures/dirt_wi
%%DATADIR%%/games/devtest/mods/basenodes/textures/dirt_wi               %%DATADIR%%/games/devtest/mods/basenodes/textures/dirt_wi
%%DATADIR%%/games/devtest/mods/basenodes/textures/info.tx               %%DATADIR%%/games/devtest/mods/basenodes/textures/info.tx
%%DATADIR%%/games/devtest/mods/basetools/init.lua                       %%DATADIR%%/games/devtest/mods/basetools/init.lua
%%DATADIR%%/games/devtest/mods/basetools/mod.conf                       %%DATADIR%%/games/devtest/mods/basetools/mod.conf
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/basetools/textures/basetoo               %%DATADIR%%/games/devtest/mods/basetools/textures/basetoo
%%DATADIR%%/games/devtest/mods/broken/init.lua                          %%DATADIR%%/games/devtest/mods/broken/init.lua
%%DATADIR%%/games/devtest/mods/broken/mod.conf                          %%DATADIR%%/games/devtest/mods/broken/mod.conf
%%DATADIR%%/games/devtest/mods/bucket/init.lua                          %%DATADIR%%/games/devtest/mods/bucket/init.lua
%%DATADIR%%/games/devtest/mods/bucket/mod.conf                          %%DATADIR%%/games/devtest/mods/bucket/mod.conf
%%DATADIR%%/games/devtest/mods/bucket/textures/bucket.png               %%DATADIR%%/games/devtest/mods/bucket/textures/bucket.png
%%DATADIR%%/games/devtest/mods/bucket/textures/bucket_lav               %%DATADIR%%/games/devtest/mods/bucket/textures/bucket_lav
%%DATADIR%%/games/devtest/mods/bucket/textures/bucket_wat               %%DATADIR%%/games/devtest/mods/bucket/textures/bucket_wat
%%DATADIR%%/games/devtest/mods/chest/init.lua                           %%DATADIR%%/games/devtest/mods/chest/init.lua
%%DATADIR%%/games/devtest/mods/chest/mod.conf                           %%DATADIR%%/games/devtest/mods/chest/mod.conf
%%DATADIR%%/games/devtest/mods/chest/textures/chest_chest               %%DATADIR%%/games/devtest/mods/chest/textures/chest_chest
%%DATADIR%%/games/devtest/mods/chest_of_everything/init.l               %%DATADIR%%/games/devtest/mods/chest_of_everything/init.l
%%DATADIR%%/games/devtest/mods/chest_of_everything/mod.co               %%DATADIR%%/games/devtest/mods/chest_of_everything/mod.co
%%DATADIR%%/games/devtest/mods/chest_of_everything/textur               %%DATADIR%%/games/devtest/mods/chest_of_everything/textur
%%DATADIR%%/games/devtest/mods/dignodes/init.lua                        %%DATADIR%%/games/devtest/mods/dignodes/init.lua
%%DATADIR%%/games/devtest/mods/dignodes/mod.conf                        %%DATADIR%%/games/devtest/mods/dignodes/mod.conf
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes               %%DATADIR%%/games/devtest/mods/dignodes/textures/dignodes
%%DATADIR%%/games/devtest/mods/experimental/commands.lua                %%DATADIR%%/games/devtest/mods/experimental/commands.lua
%%DATADIR%%/games/devtest/mods/experimental/detached.lua                %%DATADIR%%/games/devtest/mods/experimental/detached.lua
%%DATADIR%%/games/devtest/mods/experimental/init.lua                    %%DATADIR%%/games/devtest/mods/experimental/init.lua
%%DATADIR%%/games/devtest/mods/experimental/items.lua                   %%DATADIR%%/games/devtest/mods/experimental/items.lua
%%DATADIR%%/games/devtest/mods/experimental/mod.conf                    %%DATADIR%%/games/devtest/mods/experimental/mod.conf
%%DATADIR%%/games/devtest/mods/experimental/textures/expe               %%DATADIR%%/games/devtest/mods/experimental/textures/expe
%%DATADIR%%/games/devtest/mods/experimental/textures/expe               %%DATADIR%%/games/devtest/mods/experimental/textures/expe
%%DATADIR%%/games/devtest/mods/experimental/textures/expe               %%DATADIR%%/games/devtest/mods/experimental/textures/expe
%%DATADIR%%/games/devtest/mods/experimental/textures/expe               %%DATADIR%%/games/devtest/mods/experimental/textures/expe
%%DATADIR%%/games/devtest/mods/give_initial_stuff/init.lu               %%DATADIR%%/games/devtest/mods/give_initial_stuff/init.lu
%%DATADIR%%/games/devtest/mods/give_initial_stuff/mod.con               %%DATADIR%%/games/devtest/mods/give_initial_stuff/mod.con
%%DATADIR%%/games/devtest/mods/initial_message/init.lua                 %%DATADIR%%/games/devtest/mods/initial_message/init.lua
%%DATADIR%%/games/devtest/mods/initial_message/mod.conf                 %%DATADIR%%/games/devtest/mods/initial_message/mod.conf
%%DATADIR%%/games/devtest/mods/mapgen/init.lua                          %%DATADIR%%/games/devtest/mods/mapgen/init.lua
%%DATADIR%%/games/devtest/mods/mapgen/mod.conf                          %%DATADIR%%/games/devtest/mods/mapgen/mod.conf
%%DATADIR%%/games/devtest/mods/modchannels/init.lua                     %%DATADIR%%/games/devtest/mods/modchannels/init.lua
%%DATADIR%%/games/devtest/mods/modchannels/mod.conf                     %%DATADIR%%/games/devtest/mods/modchannels/mod.conf
%%DATADIR%%/games/devtest/mods/soundstuff/init.lua                      %%DATADIR%%/games/devtest/mods/soundstuff/init.lua
%%DATADIR%%/games/devtest/mods/soundstuff/mod.conf                      %%DATADIR%%/games/devtest/mods/soundstuff/mod.conf
%%DATADIR%%/games/devtest/mods/soundstuff/sounds/soundstu               %%DATADIR%%/games/devtest/mods/soundstuff/sounds/soundstu
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds               %%DATADIR%%/games/devtest/mods/soundstuff/textures/sounds
%%DATADIR%%/games/devtest/mods/stairs/init.lua                          %%DATADIR%%/games/devtest/mods/stairs/init.lua
%%DATADIR%%/games/devtest/mods/stairs/mod.conf                          %%DATADIR%%/games/devtest/mods/stairs/mod.conf
%%DATADIR%%/games/devtest/mods/testentities/armor.lua                   %%DATADIR%%/games/devtest/mods/testentities/armor.lua
%%DATADIR%%/games/devtest/mods/testentities/callbacks.lua               %%DATADIR%%/games/devtest/mods/testentities/callbacks.lua
%%DATADIR%%/games/devtest/mods/testentities/init.lua                    %%DATADIR%%/games/devtest/mods/testentities/init.lua
%%DATADIR%%/games/devtest/mods/testentities/mod.conf                    %%DATADIR%%/games/devtest/mods/testentities/mod.conf
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/textures/test               %%DATADIR%%/games/devtest/mods/testentities/textures/test
%%DATADIR%%/games/devtest/mods/testentities/visuals.lua                 %%DATADIR%%/games/devtest/mods/testentities/visuals.lua
%%DATADIR%%/games/devtest/mods/testfood/init.lua                        %%DATADIR%%/games/devtest/mods/testfood/init.lua
%%DATADIR%%/games/devtest/mods/testfood/mod.conf                        %%DATADIR%%/games/devtest/mods/testfood/mod.conf
%%DATADIR%%/games/devtest/mods/testfood/textures/testfood               %%DATADIR%%/games/devtest/mods/testfood/textures/testfood
%%DATADIR%%/games/devtest/mods/testfood/textures/testfood               %%DATADIR%%/games/devtest/mods/testfood/textures/testfood
%%DATADIR%%/games/devtest/mods/testfood/textures/testfood               %%DATADIR%%/games/devtest/mods/testfood/textures/testfood
%%DATADIR%%/games/devtest/mods/testfood/textures/testfood               %%DATADIR%%/games/devtest/mods/testfood/textures/testfood
%%DATADIR%%/games/devtest/mods/testfood/textures/testfood               %%DATADIR%%/games/devtest/mods/testfood/textures/testfood
%%DATADIR%%/games/devtest/mods/testformspec/LICENSE.txt                 %%DATADIR%%/games/devtest/mods/testformspec/LICENSE.txt
%%DATADIR%%/games/devtest/mods/testformspec/callbacks.lua               %%DATADIR%%/games/devtest/mods/testformspec/callbacks.lua
%%DATADIR%%/games/devtest/mods/testformspec/dummy_items.l               %%DATADIR%%/games/devtest/mods/testformspec/dummy_items.l
%%DATADIR%%/games/devtest/mods/testformspec/formspec.lua                %%DATADIR%%/games/devtest/mods/testformspec/formspec.lua
%%DATADIR%%/games/devtest/mods/testformspec/init.lua                    %%DATADIR%%/games/devtest/mods/testformspec/init.lua
%%DATADIR%%/games/devtest/mods/testformspec/mod.conf                    %%DATADIR%%/games/devtest/mods/testformspec/mod.conf
%%DATADIR%%/games/devtest/mods/testformspec/models/testfo               %%DATADIR%%/games/devtest/mods/testformspec/models/testfo
%%DATADIR%%/games/devtest/mods/testformspec/models/testfo               %%DATADIR%%/games/devtest/mods/testformspec/models/testfo
%%DATADIR%%/games/devtest/mods/testformspec/textures/defa               %%DATADIR%%/games/devtest/mods/testformspec/textures/defa
%%DATADIR%%/games/devtest/mods/testformspec/textures/defa               %%DATADIR%%/games/devtest/mods/testformspec/textures/defa
%%DATADIR%%/games/devtest/mods/testformspec/textures/defa               %%DATADIR%%/games/devtest/mods/testformspec/textures/defa
%%DATADIR%%/games/devtest/mods/testformspec/textures/defa               %%DATADIR%%/games/devtest/mods/testformspec/textures/defa
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testformspec/textures/test               %%DATADIR%%/games/devtest/mods/testformspec/textures/test
%%DATADIR%%/games/devtest/mods/testhud/init.lua                         %%DATADIR%%/games/devtest/mods/testhud/init.lua
%%DATADIR%%/games/devtest/mods/testhud/mod.conf                         %%DATADIR%%/games/devtest/mods/testhud/mod.conf
%%DATADIR%%/games/devtest/mods/testnodes/README.md                      %%DATADIR%%/games/devtest/mods/testnodes/README.md
%%DATADIR%%/games/devtest/mods/testnodes/drawtypes.lua                  %%DATADIR%%/games/devtest/mods/testnodes/drawtypes.lua
%%DATADIR%%/games/devtest/mods/testnodes/init.lua                       %%DATADIR%%/games/devtest/mods/testnodes/init.lua
%%DATADIR%%/games/devtest/mods/testnodes/light.lua                      %%DATADIR%%/games/devtest/mods/testnodes/light.lua
%%DATADIR%%/games/devtest/mods/testnodes/liquids.lua                    %%DATADIR%%/games/devtest/mods/testnodes/liquids.lua
%%DATADIR%%/games/devtest/mods/testnodes/meshes.lua                     %%DATADIR%%/games/devtest/mods/testnodes/meshes.lua
%%DATADIR%%/games/devtest/mods/testnodes/mod.conf                       %%DATADIR%%/games/devtest/mods/testnodes/mod.conf
%%DATADIR%%/games/devtest/mods/testnodes/models/testnodes               %%DATADIR%%/games/devtest/mods/testnodes/models/testnodes
%%DATADIR%%/games/devtest/mods/testnodes/models/testnodes               %%DATADIR%%/games/devtest/mods/testnodes/models/testnodes
%%DATADIR%%/games/devtest/mods/testnodes/nodeboxes.lua                  %%DATADIR%%/games/devtest/mods/testnodes/nodeboxes.lua
%%DATADIR%%/games/devtest/mods/testnodes/param2.lua                     %%DATADIR%%/games/devtest/mods/testnodes/param2.lua
%%DATADIR%%/games/devtest/mods/testnodes/properties.lua                 %%DATADIR%%/games/devtest/mods/testnodes/properties.lua
%%DATADIR%%/games/devtest/mods/testnodes/textures.lua                   %%DATADIR%%/games/devtest/mods/testnodes/textures.lua
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testnodes/textures/testnod               %%DATADIR%%/games/devtest/mods/testnodes/textures/testnod
%%DATADIR%%/games/devtest/mods/testpathfinder/README.md                 %%DATADIR%%/games/devtest/mods/testpathfinder/README.md
%%DATADIR%%/games/devtest/mods/testpathfinder/init.lua                  %%DATADIR%%/games/devtest/mods/testpathfinder/init.lua
%%DATADIR%%/games/devtest/mods/testpathfinder/mod.conf                  %%DATADIR%%/games/devtest/mods/testpathfinder/mod.conf
%%DATADIR%%/games/devtest/mods/testpathfinder/textures/te               %%DATADIR%%/games/devtest/mods/testpathfinder/textures/te
%%DATADIR%%/games/devtest/mods/testpathfinder/textures/te               %%DATADIR%%/games/devtest/mods/testpathfinder/textures/te
%%DATADIR%%/games/devtest/mods/testpathfinder/textures/te               %%DATADIR%%/games/devtest/mods/testpathfinder/textures/te
%%DATADIR%%/games/devtest/mods/testpathfinder/textures/te               %%DATADIR%%/games/devtest/mods/testpathfinder/textures/te
%%DATADIR%%/games/devtest/mods/testtools/README.md                      %%DATADIR%%/games/devtest/mods/testtools/README.md
%%DATADIR%%/games/devtest/mods/testtools/init.lua                       %%DATADIR%%/games/devtest/mods/testtools/init.lua
%%DATADIR%%/games/devtest/mods/testtools/light.lua                      %%DATADIR%%/games/devtest/mods/testtools/light.lua
%%DATADIR%%/games/devtest/mods/testtools/mod.conf                       %%DATADIR%%/games/devtest/mods/testtools/mod.conf
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/testtools/textures/testtoo               %%DATADIR%%/games/devtest/mods/testtools/textures/testtoo
%%DATADIR%%/games/devtest/mods/tiled/init.lua                           %%DATADIR%%/games/devtest/mods/tiled/init.lua
%%DATADIR%%/games/devtest/mods/tiled/mod.conf                           %%DATADIR%%/games/devtest/mods/tiled/mod.conf
%%DATADIR%%/games/devtest/mods/tiled/textures/tiled_tiled               %%DATADIR%%/games/devtest/mods/tiled/textures/tiled_tiled
%%DATADIR%%/games/devtest/mods/unittests/crafting.lua                   %%DATADIR%%/games/devtest/mods/unittests/crafting.lua
%%DATADIR%%/games/devtest/mods/unittests/crafting_prepare               %%DATADIR%%/games/devtest/mods/unittests/crafting_prepare
%%DATADIR%%/games/devtest/mods/unittests/init.lua                       %%DATADIR%%/games/devtest/mods/unittests/init.lua
%%DATADIR%%/games/devtest/mods/unittests/itemdescription.               %%DATADIR%%/games/devtest/mods/unittests/itemdescription.
%%DATADIR%%/games/devtest/mods/unittests/misc.lua                       %%DATADIR%%/games/devtest/mods/unittests/misc.lua
%%DATADIR%%/games/devtest/mods/unittests/mod.conf                       %%DATADIR%%/games/devtest/mods/unittests/mod.conf
%%DATADIR%%/games/devtest/mods/unittests/player.lua                     %%DATADIR%%/games/devtest/mods/unittests/player.lua
%%DATADIR%%/games/devtest/mods/unittests/textures/default               %%DATADIR%%/games/devtest/mods/unittests/textures/default
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/unittests/textures/unittes               %%DATADIR%%/games/devtest/mods/unittests/textures/unittes
%%DATADIR%%/games/devtest/mods/util_commands/init.lua                   %%DATADIR%%/games/devtest/mods/util_commands/init.lua
%%DATADIR%%/games/devtest/mods/util_commands/mod.conf                   %%DATADIR%%/games/devtest/mods/util_commands/mod.conf
%%DATADIR%%/games/devtest/screenshot.png                                %%DATADIR%%/games/devtest/screenshot.png
%%DATADIR%%/games/devtest/settingtypes.txt                              %%DATADIR%%/games/devtest/settingtypes.txt
%%DATADIR%%/textures/base/pack/air.png                          |       %%CLIENT%%%%DATADIR%%/textures/base/pack/air.png
%%DATADIR%%/textures/base/pack/aux1_btn.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/aux1_btn.png
%%DATADIR%%/textures/base/pack/blank.png                        |       %%CLIENT%%%%DATADIR%%/textures/base/pack/blank.png
%%DATADIR%%/textures/base/pack/bubble.png                       |       %%CLIENT%%%%DATADIR%%/textures/base/pack/bubble.png
%%DATADIR%%/textures/base/pack/bubble_gone.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/bubble_gone.png
%%DATADIR%%/textures/base/pack/camera_btn.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/camera_btn.png
%%DATADIR%%/textures/base/pack/cdb_add.png                      |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_add.png
%%DATADIR%%/textures/base/pack/cdb_clear.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_clear.png
%%DATADIR%%/textures/base/pack/cdb_downloading.png              |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_downloading.
%%DATADIR%%/textures/base/pack/cdb_queued.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_queued.png
%%DATADIR%%/textures/base/pack/cdb_update.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_update.png
%%DATADIR%%/textures/base/pack/cdb_viewonline.png               |       %%CLIENT%%%%DATADIR%%/textures/base/pack/cdb_viewonline.p
%%DATADIR%%/textures/base/pack/chat_btn.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/chat_btn.png
%%DATADIR%%/textures/base/pack/chat_hide_btn.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/chat_hide_btn.pn
%%DATADIR%%/textures/base/pack/chat_show_btn.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/chat_show_btn.pn
%%DATADIR%%/textures/base/pack/checkbox_16.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/checkbox_16.png
%%DATADIR%%/textures/base/pack/checkbox_32.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/checkbox_32.png
%%DATADIR%%/textures/base/pack/checkbox_64.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/checkbox_64.png
%%DATADIR%%/textures/base/pack/clear.png                        |       %%CLIENT%%%%DATADIR%%/textures/base/pack/clear.png
%%DATADIR%%/textures/base/pack/crack_anylength.png              |       %%CLIENT%%%%DATADIR%%/textures/base/pack/crack_anylength.
%%DATADIR%%/textures/base/pack/debug_btn.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/debug_btn.png
%%DATADIR%%/textures/base/pack/down.png                         |       %%CLIENT%%%%DATADIR%%/textures/base/pack/down.png
%%DATADIR%%/textures/base/pack/drop_btn.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/drop_btn.png
%%DATADIR%%/textures/base/pack/end_icon.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/end_icon.png
%%DATADIR%%/textures/base/pack/error_screenshot.png             |       %%CLIENT%%%%DATADIR%%/textures/base/pack/error_screenshot
%%DATADIR%%/textures/base/pack/fast_btn.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/fast_btn.png
%%DATADIR%%/textures/base/pack/fly_btn.png                      |       %%CLIENT%%%%DATADIR%%/textures/base/pack/fly_btn.png
%%DATADIR%%/textures/base/pack/gear_icon.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/gear_icon.png
%%DATADIR%%/textures/base/pack/halo.png                         |       %%CLIENT%%%%DATADIR%%/textures/base/pack/halo.png
%%DATADIR%%/textures/base/pack/heart.png                        |       %%CLIENT%%%%DATADIR%%/textures/base/pack/heart.png
%%DATADIR%%/textures/base/pack/heart_gone.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/heart_gone.png
%%DATADIR%%/textures/base/pack/ignore.png                       |       %%CLIENT%%%%DATADIR%%/textures/base/pack/ignore.png
%%DATADIR%%/textures/base/pack/inventory_btn.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/inventory_btn.pn
%%DATADIR%%/textures/base/pack/joystick_bg.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/joystick_bg.png
%%DATADIR%%/textures/base/pack/joystick_center.png              |       %%CLIENT%%%%DATADIR%%/textures/base/pack/joystick_center.
%%DATADIR%%/textures/base/pack/joystick_off.png                 |       %%CLIENT%%%%DATADIR%%/textures/base/pack/joystick_off.png
%%DATADIR%%/textures/base/pack/jump_btn.png                     |       %%CLIENT%%%%DATADIR%%/textures/base/pack/jump_btn.png
%%DATADIR%%/textures/base/pack/loading_screenshot.png           |       %%CLIENT%%%%DATADIR%%/textures/base/pack/loading_screensh
%%DATADIR%%/textures/base/pack/logo.png                         |       %%CLIENT%%%%DATADIR%%/textures/base/pack/logo.png
%%DATADIR%%/textures/base/pack/menu_bg.png                      |       %%CLIENT%%%%DATADIR%%/textures/base/pack/menu_bg.png
%%DATADIR%%/textures/base/pack/menu_header.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/menu_header.png
%%DATADIR%%/textures/base/pack/minimap_btn.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/minimap_btn.png
%%DATADIR%%/textures/base/pack/minimap_mask_round.png           |       %%CLIENT%%%%DATADIR%%/textures/base/pack/minimap_mask_rou
%%DATADIR%%/textures/base/pack/minimap_mask_square.png          |       %%CLIENT%%%%DATADIR%%/textures/base/pack/minimap_mask_squ
%%DATADIR%%/textures/base/pack/minimap_overlay_round.png        |       %%CLIENT%%%%DATADIR%%/textures/base/pack/minimap_overlay_
%%DATADIR%%/textures/base/pack/minimap_overlay_square.png       |       %%CLIENT%%%%DATADIR%%/textures/base/pack/minimap_overlay_
%%DATADIR%%/textures/base/pack/next_icon.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/next_icon.png
%%DATADIR%%/textures/base/pack/no_screenshot.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/no_screenshot.pn
%%DATADIR%%/textures/base/pack/no_texture.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/no_texture.png
%%DATADIR%%/textures/base/pack/no_texture_airlike.png           |       %%CLIENT%%%%DATADIR%%/textures/base/pack/no_texture_airli
%%DATADIR%%/textures/base/pack/noclip_btn.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/noclip_btn.png
%%DATADIR%%/textures/base/pack/object_marker_red.png            |       %%CLIENT%%%%DATADIR%%/textures/base/pack/object_marker_re
%%DATADIR%%/textures/base/pack/player.png                       |       %%CLIENT%%%%DATADIR%%/textures/base/pack/player.png
%%DATADIR%%/textures/base/pack/player_back.png                  |       %%CLIENT%%%%DATADIR%%/textures/base/pack/player_back.png
%%DATADIR%%/textures/base/pack/player_marker.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/player_marker.pn
%%DATADIR%%/textures/base/pack/plus.png                         |       %%CLIENT%%%%DATADIR%%/textures/base/pack/plus.png
%%DATADIR%%/textures/base/pack/prev_icon.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/prev_icon.png
%%DATADIR%%/textures/base/pack/progress_bar.png                 |       %%CLIENT%%%%DATADIR%%/textures/base/pack/progress_bar.png
%%DATADIR%%/textures/base/pack/progress_bar_bg.png              |       %%CLIENT%%%%DATADIR%%/textures/base/pack/progress_bar_bg.
%%DATADIR%%/textures/base/pack/rangeview_btn.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/rangeview_btn.pn
%%DATADIR%%/textures/base/pack/rare_controls.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/rare_controls.pn
%%DATADIR%%/textures/base/pack/refresh.png                      |       %%CLIENT%%%%DATADIR%%/textures/base/pack/refresh.png
%%DATADIR%%/textures/base/pack/search.png                       |       %%CLIENT%%%%DATADIR%%/textures/base/pack/search.png
%%DATADIR%%/textures/base/pack/server_favorite.png              |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_favorite.
%%DATADIR%%/textures/base/pack/server_flags_creative.png        |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_flags_cre
%%DATADIR%%/textures/base/pack/server_flags_damage.png          |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_flags_dam
%%DATADIR%%/textures/base/pack/server_flags_pvp.png             |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_flags_pvp
%%DATADIR%%/textures/base/pack/server_incompatible.png          |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_incompati
%%DATADIR%%/textures/base/pack/server_ping_1.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_ping_1.pn
%%DATADIR%%/textures/base/pack/server_ping_2.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_ping_2.pn
%%DATADIR%%/textures/base/pack/server_ping_3.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_ping_3.pn
%%DATADIR%%/textures/base/pack/server_ping_4.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_ping_4.pn
%%DATADIR%%/textures/base/pack/server_public.png                |       %%CLIENT%%%%DATADIR%%/textures/base/pack/server_public.pn
%%DATADIR%%/textures/base/pack/smoke_puff.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/smoke_puff.png
%%DATADIR%%/textures/base/pack/start_icon.png                   |       %%CLIENT%%%%DATADIR%%/textures/base/pack/start_icon.png
%%DATADIR%%/textures/base/pack/sunrisebg.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/sunrisebg.png
%%DATADIR%%/textures/base/pack/unknown_item.png                 |       %%CLIENT%%%%DATADIR%%/textures/base/pack/unknown_item.png
%%DATADIR%%/textures/base/pack/unknown_node.png                 |       %%CLIENT%%%%DATADIR%%/textures/base/pack/unknown_node.png
%%DATADIR%%/textures/base/pack/unknown_object.png               |       %%CLIENT%%%%DATADIR%%/textures/base/pack/unknown_object.p
%%DATADIR%%/textures/base/pack/wieldhand.png                    |       %%CLIENT%%%%DATADIR%%/textures/base/pack/wieldhand.png
%%DATADIR%%/textures/base/pack/zoom.png                         |       %%CLIENT%%%%DATADIR%%/textures/base/pack/zoom.png
--More--(END)
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # 

That looks good.  I don't see anything I need to change, to add or remove, which would have been indicated by > or < instead of the pipe | that is on a number of the lines above which differ slightly, mostly due to %%text%% which relates to port options chosen.  The pkg-plist can have conditional lines which are invoked for install or removal if those specific options are set for the build, such as %%SERVER%%.  I can rename pkg-plist-old back to pkg-plist and then do a make clean and update my repo.

I can check the status of my local repo here and then add the changed files after.

root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
        modified:   Makefile
        modified:   distinfo

no changes added to commit (use "git add" and/or "git commit -a")
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # git add *
The following paths are ignored by one of your .gitignore files:
my_notes
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev #

Two more steps before this is finished, I need to make a commit message and then push the updates.  The command git commit will automatically invoke your preferred cli editor which for me is vi with some content provided.  I usually add the same kind of message at the bottom and save the changes.  The last thing to do is git push to send the update to github.


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
#       modified:   Makefile
#       modified:   distinfo
#
Update to Mar 2nd upstream commit.
~
/usr/home/tigersharke/Ported_Software/games/minetest-dev/.git/COMMIT_EDITMSG: 12 lines, 319 characters
[master da649cf] Update to Mar 2nd upstream commit.
 2 files changed, 5 insertions(+), 5 deletions(-)
You have new mail.
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # git push
Username for 'https://github.com':
Password for 'https://tigersharke@github.com':
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 6 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 539 bytes | 539.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/tigersharke/minetest-dev.git
   94c1745..da649cf  master -> master
root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev #

So now that you know the process, how truly easy it can be, you can most definitely perform similar tasks yourself for other bleeding edge ports the way that I have been doing.  The only difference between doing this and maintaining a port, is that most are updated with each upstream release rather than commit.  You would modify a few lines in the Makefile after proving that nothing else has changed which needs to be modified for the FreeBSD ports tree besides the version number.  The various ports tree mechanisms ease the whole process whichever direction you take and you can read about all of it in the FreeBSD Porter's Handbook, a guide for porters, maintainers, and tinkerers like me.

Frequently viewed this week