tag:blogger.com,1999:blog-26296555766408681852024-03-28T16:23:07.850-05:00A little Daemon on my DesktopA journey with FreeBSD as my desktop OS. Insights, tips, and the occasional rant, all relating to the 'Beastie' or activities while using it.Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.comBlogger46125tag:blogger.com,1999:blog-2629655576640868185.post-57787309316658575272024-03-26T01:43:00.001-05:002024-03-26T02:09:09.915-05:00Sed on a plist adjusts fvwm install<p>Sed can be a beast but its easy to be distracted by a silly solution you find online somewhere. Whether it is a linuxism or simply an inaccurate solution, attempting to adapt it to your need could send you down the wrong road. I recently cleaned up my unofficial port of fvwm3-dev to better comply via portclippy and to add options I may have missed. After all of that, I discovered that the GO option causes some things to be present or not whether it is enabled. This meant the pkg-plist needed a different mechanism for a few things. I chose to have GO as a default option and with it selected when I re-verify the pkg-plist each time I update. Since GO is enabled, there will need to be two lines added and this is what had me stuck, until I finally realized I could include newlines in the subsitution for the line prior to the added lines. One small test proved that I could include the newline within the substitution and after that I knew the issue was solved with a little bit more editing.</p>
<p>I don't choose to manually edit all these things, just rename the present pkg-plist as pkg-plist-old, and after I generate a new pkg-plist, I use my plist-fix script to add all the conditional %TAG% to lines needing them, now with other adjustments as well.</p>
<p>Here is the script, this one is a bit more complex but many of my unofficial ports have a similar script in the files directory for the same purpose, specific to each port.</p>
<div><pre>
#!/bin/sh
rm /var/tmp/fvwm3-dev_pkg-plist 2>/dev/null
rm /var/tmp/fvwm3-dev_pkg-plist-fixed 2>/dev/null
cp ../pkg-plist /var/tmp/fvwm3-dev_pkg-plist
echo "adding conditional list tags"
cat /var/tmp/fvwm3-dev_pkg-plist | \
sed \
-e 's#^\/you\/have\/to\/check\/what\/makeplist\/gives\/you##' \
-e '/^$/d' \
-e 's#^bin\/FvwmPrompt#\%\%GOLANG\%\%\bin\/FvwmPrompt#g' \
-e 's#^bin\/fvwm-convert-2.6#\%\%PERL\%\%\bin\/fvwm-convert-2.6#g' \
-e 's#^bin\/fvwm-menu-directory#\%\%PERL\%\%\bin\/fvwm-menu-directory#g' \
-e 's#^bin\/fvwm-menu-xlock#\%\%PERL\%\%\bin\/fvwm-menu-xlock#g' \
-e 's#^bin\/fvwm-perllib#\%\%PERL\%\%\bin\/fvwm-perllib#g' \
-e 's#^libexec\/fvwm3\/\([0-9]\.[0-9]\.[0-9])*\)\/FvwmCommandS#\%\%GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmCommandS \
\%\%NO_GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmConsoleC\n\%\%NO_GOLANG\%\%\libexec\/fvwm3\/\1\/FvwmConsole#g' \
-e 's#^libexec\/fvwm3\/\([0-9]\.[0-9]\.[0-9])*\)\/FvwmPerl#\%\%PERL\%\%\libexec\/fvwm3\/\1\/FvwmPerl#g' \
-e 's#^share\/man\/man1\/fvwm-convert-2.6#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-convert-2.6#g' \
-e 's#^share\/man\/man1\/fvwm-menu-directory#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-menu-directory#g' \
-e 's#^share\/man\/man1\/fvwm-menu-xlock#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-menu-xlock#g' \
-e 's#^share\/man\/man1\/fvwm-perllib#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-perllib#g' \
-e 's#^share\/man\/man1\/fvwmPerl#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwmperl#g' \
-e 's#^share\/man\/man1\/fvwm-perllib#\%\%MANPAGES\%\%\%\%PERL\%\%\share\/man\/man1\/fvwm-perllib#g' \
-e 's#\%\%MANPAGES\%\%share\/man\/man1\/FvwmConsole#\%\%GOLANG\%\%\%\%MANPAGES\%\%share\/man\/man1\/FvwmConsole#g' \
-e 's#^share\/man\/man1#\%\%MANPAGES\%\%share\/man\/man1#g' \
-e 's#^\%\%DATADIR\%\%\/fvwm-menu-desktop-config.fpl#\%\%PERL\%\%\%\%DATADIR\%\%\/fvwm-menu-desktop-config.fpl#g' \
-e 's#^\%\%DATADIR\%\%\/fvwm-script-ComExample.pl#\%\%PERL\%\%\%\%DATADIR\%\%\/fvwm-script-ComExample.pl#g' \
-e 's#^\%\%DATADIR\%\%/locale#\%\%NLS\%\%\%\%DATADIR\%\%/locale#g' \
-e 's#^\%\%DATADIR\%\%/perllib#\%\%PERL\%\%\%\%DATADIR\%\%/perllib#g' \
> /var/tmp/fvwm-dev_pkg-plist-fixed
cp /var/tmp/fvwm-dev_pkg-plist-fixed ../pkg-plist
</pre></div>
<p>There are a few other things in the Makefile that I add simply because we often do not realize caMelcaSe is used and expect all lowercase manpages.</p>
<div><pre>
# This detail has been annoying, why are some manpages all lowercase and some
# have an initial capital? Whether there was a purpose, the vast majority of
# man1 manpages are all lowercase. Cure this here. Also fix the recent change
# from /usr/local/man to /usr/local/share/man It is a mistake to change all
# these manpages to lowercase only because fvwm scripts use those camelcased,
# instead, for convenience create symbolic links.
post-stage:
@${MV} ${STAGEDIR}${LOCALBASE}/man/man1/* \
${STAGEDIR}${LOCALBASE}/share/man/man1/
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmAnimate.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmanimate.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmAuto.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmauto.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmBacker.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmbacker.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmButtons.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmbuttons.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmCommand.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmcommand.1
# @${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmConsole.1 \
# ${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmconsole.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmEvent.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmevent.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmForm.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmform.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmIconMan.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmiconMan.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmIdent.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmident.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmMFL.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmmfl.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmPager.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmpager.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmPerl.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmperl.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmRearrange.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmrearrange.1
@${LN} ${STAGEDIR}${LOCALBASE}/share/man/man1/FvwmScript.1 \
${STAGEDIR}${LOCALBASE}/share/man/man1/fvwmscript.1
</pre></div>
<p>These particular adjustments that I figured out may lead to finally succeeding with the dbeaver reproducible install, avoiding the generated date stamp inserted into many file or directory names which would cause pkg to fail because the pkg-plist would be different the first time it was used after an update.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-28348163587522537782024-03-16T13:55:00.007-05:002024-03-17T14:27:02.143-05:00Some blog cleanup<p>A short time ago I looked at some old posts after changing the theme css for this blog. Much of the theme changes should not have affected the display of any pages or posts and I still think that was not the cause. However, I did find at least two pages in the distilled section which did not display properly. Those i had built with the online editor of this site and when I looked at the source discovered how horrible they were. Since this may be a task for me for a bit of time, to clean up and improve pages and posts here, I added a further note to the header that I am aware of the display issues while I complete this. I also want to finally change the background image to something different that I create mysefl, but intend to use inkscape and this fails for me at present.</p>
Since I am not going to show the rendered new versus old, I'll show you how the change looks in the source as I adjust it. Below is what I found as source on the site initially, which I wrote in 2021, already some years old now.</p>
<div><pre>
Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory: <br /><p><span style="font-family: courier;">cp -pRP /usr/src /usr/src-last_svn_update</span></p><p><span style="font-family: courier;"> </span></p><p>Remove the directory and all contents then create a fresh directory. As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step. After, we still need the directory to use with git, so re-create it.<br /></p><p><span style="font-family: courier;">rm -rf /usr/src </span></p><p><span style="font-family: courier;"><span style="font-family: courier;">mkdir /usr/src</span> <br /></span></p><p>Or just delete the /usr/src directory contents:<br /></p><span style="font-family: courier;">rm -rf /usr/src/*</span><p><span style="font-family: courier;"></span></p><p> <br /><br />Now obtain source <br /><span style="font-family: courier;">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span> <br /><br />Source for a specific branch (depth implies single-branch)<br /><span style="font-family: courier;">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span></p><p> </p><p>Update -- the first line is needed for the initial update, just the pull thereafter.<br /></p><p><span style="font-family: courier;">git config pull.rebase true</span></p><p><span style="font-family: courier;">git pull</span></p><p><br /></p><p>FYI Sept 2021 github change.</p><p>Adjust url from git:// to https://</p><p><span style="font-family: courier;">edit .git/config</span></p><p><span style="font-family: courier;">under [origin] modify the url</span></p><p><span style="font-family: courier;">from: <br /></span></p><p><span style="font-family: courier;"> url = git://github.com/freebsd/freebsd.git</span></p><p><span style="font-family: courier;">to:</span></p><p><span style="font-family: courier;"> </span><span style="font-family: courier;">url = https://github.com/freebsd/freebsd.git</span><span style="font-family: courier;"></span></p>
</pre></div>
<p>It turns out that once again I managed to get something done without documenting it. The worst looking <i>page</i> had been "Updating Kernel & World" both with how it was rendered (many things were missing and not visible) and how the html looked. The above example is not nice but because I did a bit more complex display for the other page, there were numerous extra essentially empty span and div tags, bunches of inline style, extra page break tags. It took a while to clean up and the revised version is somewhat different since I am using a more standardized set of css for everything. One other thing to notice about the above example source is the text formatting of it itself. I have been using the wordwrap feature of bluefish editor so other pages and posts will look similar. That the above includes a lot of inline style means both that it is of course old and likely edited online as well.</p>
<p>After the initial cleanup to better see how it is, you can notice once more a lot of excess junk that is useless or not needed. I used bluefish to replace all "<" with "<" followed with a carriage return. I am not going to show a continual pile of adjustments, just the original, this one, and the final cleaned html.</p>
<div><pre>
Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory:
<br />
<p>
<span style="font-family: courier;">cp -pRP /usr/src /usr/src-last_svn_update
</span>
</p>
<p>
<span style="font-family: courier;">
</span>
</p>
<p>Remove the directory and all contents then create a fresh directory. As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step. After, we still need the directory to use with git, so re-create it.
<br />
</p>
<p>
<span style="font-family: courier;">rm -rf /usr/src
</span>
</p>
<p>
<span style="font-family: courier;">
<span style="font-family: courier;">mkdir /usr/src
</span>
<br />
</span>
</p>
<p>Or just delete the /usr/src directory contents:
<br />
</p>
<span style="font-family: courier;">rm -rf /usr/src/*
</span>
<p>
<span style="font-family: courier;">
</span>
</p>
<p>
<br />
<br />Now obtain source
<br />
<span style="font-family: courier;">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src
</span>
<br />
<br />Source for a specific branch (depth implies single-branch)
<br />
<span style="font-family: courier;">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src
</span>
</p>
<p>
</p>
<p>Update -- the first line is needed for the initial update, just the pull thereafter.
<br />
</p>
<p>
<span style="font-family: courier;">git config pull.rebase true
</span>
</p>
<p>
<span style="font-family: courier;">git pull
</span>
</p>
<p>
<br />
</p>
<p>FYI Sept 2021 github change.
</p>
<p>Adjust url from git:// to https://
</p>
<p>
<span style="font-family: courier;">edit .git/config
</span>
</p>
<p>
<span style="font-family: courier;">under [origin] modify the url
</span>
</p>
<p>
<span style="font-family: courier;">from:
<br />
</span>
</p>
<p>
<span style="font-family: courier;"> url = git://github.com/freebsd/freebsd.git
</span>
</p>
<p>
<span style="font-family: courier;">to:
</span>
</p>
<p>
<span style="font-family: courier;">
</span>
<span style="font-family: courier;">url = https://github.com/freebsd/freebsd.git
</span>
<span style="font-family: courier;">
</span>
</p>
</pre></div>
<p>After a lot of deletions and substitutions we have a much better version of the html for the page and it will display slightly different as it uses the css from my customized theme. Instead of a single long line as a paragraph, each distinct paragraph within the <p> tags is one long editor word-wrapped line which still permits readability without the effort of inserting linebreaks manually (which is a bit too much unnecessary effort).</p>
<div><pre>
<p>Simply as a precaution. Copy your last /usr/src updated with svn to a backup directory: </p><p><span class="icode">cp -pRP /usr/src /usr/src-last_svn_update</span></p>
<p>Remove the directory and all contents then create a fresh directory. As /usr/src contains hidden files or directories, this may be more appropriate and an easier sure step. After, we still need the directory to use with git, so re-create it.</p>
<p><span class="icode">rm -rf /usr/src </span></p>
<p><span class="icode">mkdir /usr/src</span>
<p>Or just delete the /usr/src directory contents:</p>
<p><span class="icode">rm -rf /usr/src/*</span></p>
<p>Now obtain source </p>
<p><span class="icode">git clone -b master --single-branch --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span> </p>
<p>Source for a specific branch (depth implies single-branch)</p>
<p><span class="icode">git clone -b stable/12 --depth 1 https://github.com/freebsd/freebsd.git /usr/src</span></p>
<p>Update -- the first line is needed for the initial update, just the pull thereafter.</p>
<p><span class="icode">git config pull.rebase true</span></p>
<p><span class="icode">git pull</span></p>
<p>FYI Sept 2021 github change.</p>
<p>Adjust url from git:// to https://</p>
<p><span class="icode">edit .git/config</span></p>
<p><span class="icode">under [origin] modify the url</span></p>
<p>from:</p>
<p><span class="icode">url = git://github.com/freebsd/freebsd.git</span></p>
<p>to:</p>
<p><span class="icode">url = https://github.com/freebsd/freebsd.git</span></p>
</pre></div>
<p>Not only have I cleaned up a number of pages and posts, with more yet to complete to my satisfaction, I decided to revise the appearance. Gone is that orangy stained glass image background, and some other colors have been revised. I wanted to create my own background image but as image uploads are rather indirect due to how this site or firefox has been acting lately, I may not do so much with images here, and I chose to let the online theme editor suffice. I hope overall that this blog is now considerably more readable. Remember, you could write your own for the same purpose that I have been, to contribute back a perspective and tips and feedback to the community.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-48636874386056993462024-03-14T22:16:00.008-05:002024-03-25T12:13:36.686-05:00Another dialog change<p>Already included in FreeBSD 14.0, <span class="executable">bsddialog</span> will replace <span class="executable">dialog</span>. I was looking at the 15.0 release notes and UPDATING files to see what new thing I could switch to using early as I did with portdialog. This one appears to be a much more developer-oriented item, so I will have to create some examples as I go, on the commmandline to give you something to see here.</p>
<div><pre>
% bsddialog
Error: expected a --<dialog>.
See 'bsddialog --help' or 'man 1 bsddialog' for more information.
%
</pre></div>
<p>I really like this as feedback from attempting to use it without knowing how or what to do, it gives both the built-in help as below, plus informs about the much more verbose manpage option.</p>
<div><pre>
% bsddialog --help
usage: bsddialog --help
bsddialog --version
bsddialog [--<opt>] --<dialog> <text> <rows> <cols> [<arg>]
bsddialog --<dialog1> ... [--and-dialog --<dialog2> ...] ...
Options:
--alternate-screen, --ascii-lines, --backtitle <backtitle>, --begin-x <x>,
--begin-y <y>, --bikeshed, --calendar, --cancel-label <label>, --clear-dialog,
--clear-screen, --colors, --columns-per-row <columns>, --cr-wrap,
--date-format <format>, --default-button <label>, --default-item <name>,
--default-no, --disable-esc, --esc-return-cancel, --exit-label <label>,
--extra-button, --extra-label <label>, --generic-button1 <label>,
--generic-button2 <label>, --help-button, --help-label <label>,
--help-print-name, --help-status, --hfile <file>, --hline <string>,
--hmsg <string>, --ignore, --insecure, --item-bottom-desc, --item-depth,
--item-prefix, --load-theme <file>, --max-input <size>, --no-cancel,
--no-descriptions, --no-label <label>, --no-lines, --no-names, --no-ok,
--no-shadow, --normal-screen, --ok-label <label>, --output-fd <fd>,
--output-separator <sep>, --print-maxsize, --print-size, --print-version,
--quoted, --save-theme <file>, --separate-output, --separator <sep>, --shadow,
--single-quoted, --sleep <secs>, --stderr, --stdout, --tab-escape,
--tab-len <spaces>, --text-unchanged, --switch-buttons,
--theme <blackwhite|bsddialog|flat|dialog>, --time-format <format>,
--title <title>, --yes-label <label>.
Dialogs:
--calendar <text> <rows> <cols> [<dd> <mm> <yy>]
--checklist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
--datebox <text> <rows> <cols> [<dd> <mm> <yy>]
--form <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
--gauge <text> <rows> <cols> [<perc>]
--infobox <text> <rows> <cols>
--inputbox <text> <rows> <cols> [init]
--menu <text> <rows> <cols> <menurows> [<name> <desc>] ...
--mixedform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters> <0|1|2>] ...
--mixedgauge <text> <rows> <cols> <mainperc> [<minilabel> <miniperc>] ...
--msgbox <text> <rows> <cols>
--passwordbox <text> <rows> <cols> [init]
--passwordform <text> <rows> <cols> <formrows> [<label> <ylabel> <xlabel> <init> <yfield> <xfield> <fieldlen> <maxletters>] ...
--pause <text> <rows> <cols> <secs>
--radiolist <text> <rows> <cols> <menurows> [<name> <desc> <on|off>] ...
--rangebox <text> <rows> <cols> <min> <max> [<init>]
--textbox <file> <rows> <cols>
--timebox <text> <rows> <cols> [<hh> <mm> <ss>]
--treeview <text> <rows> <cols> <menurows> [<depth> <name> <desc> <on|off>] ...
--yesno <text> <rows> <cols>
See 'man 1 bsddialog' for more information.
%
</pre></div>
<p>Here are some examples of what this tool can provide:</p>
<p><pre>
% bsddialog --calendar "Example calendar" 20 38 14 03
</pre></p>
<div class="separator" style="clear: both; text-align: center;">
<div class="bsddialog"><pre>
<span class="bsddialog">┌────────────────────────────────────┐</span>
<span class="bsddialog">│ Example calendar │</span>
<span class="bsddialog">│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ Month Year │</span><span class="shadow"> </span>
<span class="bsddialog">│ ┌───────────────┐┌───────────────┐ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ March││ 2024│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ └───────────────┘└───────────────┘ │</span><span class="shadow"> </span>
<span class="bsddialog">│ ┌────────────────────────────────┐ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ Sun Mon Tue Wed Thu Fri Sat │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 1 2 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 3 4 5 6 7 8 9 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 10 11 12 13 <span class=active>14</span> 15 16 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 17 18 19 20 21 22 23 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 24 25 26 27 28 29 30 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ 31 │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ └────────────────────────────────┘ │</span><span class="shadow"> </span>
<span class="bsddialog">├────────────────────────────────────┤</span><span class="shadow"> </span>
<span class="bsddialog">│ <span class=active>[ OK ]</span> [Cancel] │</span><span class="shadow"> </span>
<span class="bsddialog">└────────────────────────────────────┘</span><span class="shadow"> </span>
<span class="shadow"> </span>
</pre>
</div>
</div>
<p><pre>
% bsddialog --inputbox "an inputbox" 8 20
</pre></p>
<div class="separator" style="clear: both; text-align: center;">
<div class="bsddialog"><pre>
<span class="bsddialog">┌──────────────────┐</span>
<span class="bsddialog">│ an inputbox │</span>
<span class="bsddialog">│ ┌──────────────┐ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │<span class="cursor"> </span> │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ └──────────────┘ │</span><span class="shadow"> </span>
<span class="bsddialog">├──────────────────┤</span><span class="shadow"> </span>
<span class="bsddialog">│ <span class=active>[ OK ]</span> [Cancel]│</span><span class="shadow"> </span>
<span class="bsddialog">└──────────────────┘</span><span class="shadow"> </span>
<span class="shadow"> </span>
</pre>
</div>
</div>
<p><pre>
% bsddialog --timebox "timebox" 8 20 10 27 05
</pre></p>
<div class="separator" style="clear: both; text-align: center;">
<div class="bsddialog"><pre>
<span class="bsddialog">┌──────────────────┐</span>
<span class="bsddialog">│ timebox │</span>
<span class="bsddialog">│ ┌──┐ ┌──┐ ┌──┐ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │10│:│27│:│05│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ └──┘ └──┘ └──┘ │</span><span class="shadow"> </span>
<span class="bsddialog">├──────────────────┤</span><span class="shadow"> </span>
<span class="bsddialog">│ <span class=active>[ OK ]</span> [Cancel]│</span><span class="shadow"> </span>
<span class="bsddialog">└──────────────────┘</span><span class="shadow"> </span>
<span class="shadow"> </span>
</pre>
</div>
</div>
<p><pre>
% bsddialog --infobox "This is an infobox for giving info to the reader" 5 24
</pre></p>
<div class="separator" style="clear: both; text-align: center;">
<div class="bsddialog"><pre>
<span class="bsddialog">┌──────────────────────┐</span>
<span class="bsddialog">│ This is an infobox │</span>
<span class="bsddialog">│ for giving info to │</span><span class="shadow"> </span>
<span class="bsddialog">│ the reader │</span><span class="shadow"> </span>
<span class="bsddialog">└──────────────────────┘</span><span class="shadow"> </span>
<span class="shadow"> </span>
</pre>
</div>
</div>
<p><pre>
bsddialog --menu "Choose what to do:" 12 40 3 "Leave" "Hit the road" "Stay"
"Take a load off" "Think" "Ponder other options"
</pre></p>
<div class="separator" style="clear: both; text-align: center;">
<div class="bsddialog"><pre>
<span class="bsddialog">┌──────────────────────────────────────┐</span>
<span class="bsddialog">│ Choose what to do: │</span>
<span class="bsddialog">│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │</span><span class="shadow"> </span>
<span class="bsddialog">│ ┌──────────────────────────────────┐ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ <span class=active>Leave</span> <span class=active>Hit the road</span> │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ Stay Take a load off │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ │ Think Ponder other options │ │</span><span class="shadow"> </span>
<span class="bsddialog">│ └──────────────────────────────────┘ │</span><span class="shadow"> </span>
<span class="bsddialog">├──────────────────────────────────────┤</span><span class="shadow"> </span>
<span class="bsddialog">│ <span class=active>[ OK ]</span> [Cancel] │</span><span class="shadow"> </span>
<span class="bsddialog">└──────────────────────────────────────┘</span><span class="shadow"> </span>
<span class="shadow"> </span>
</pre>
</div>
</div>
<p>These examples do not touch the large number of possible customizations. I used a few of the pre-designed options which you may notice has any text within quotes. When I tested the calendar it seems like the expected input might actually be a 4-digit year. You will get feedback if the content would not fit within the rows and columns defined, some of the needed space is for the default output which might not be known before you test with an extra large row/column value. Since this works within an xterm, I expect that the NO_COLOR environment variable would affect it as well, I am not sure that this has the other display options which <span class="executable">portdialog</span> has, possibly those would be good additions to it.</p>
<p>Since the dialog manpage is quite extensive I will provide the information about compatibility to the end of the manpage for both. One thing to note about dialog is that it is actually an X application, rather than a terminal program, and bsddialog is a TUI. The manpage excerpts are below.</p>
<div><pre>
<b>DIALOG(1) General Commands Manual DIALOG(1)</b>
COMPATIBILITY
You may want to write scripts which run with other dialog "clones".
Original Dialog
First, there is the "original" dialog program to consider (versions 0.3
to 0.9). It had some misspelled (or inconsistent) options. The dialog
program maps those deprecated options to the preferred ones. They
include:
Option Treatment
---------------------------------
--beep-after ignored
--guage mapped to --gauge
---------------------------------
Xdialog
This is an X application, rather than a terminal program. With some
care, it is possible to write useful scripts that work with both
Xdialog and dialog.
The dialog program ignores these options which are recognized by
Xdialog:
Option Treatment
-----------------------------------------------
--allow-close ignored
--auto-placement ignored
--fixed-font ignored
--icon ignored
--keep-colors ignored
--no-close ignored
--no-cr-wrap ignored
--screen-center ignored
--separator mapped to --separate-output
--smooth ignored
--under-mouse ignored
--wmclass ignored
-----------------------------------------------
Xdialog's manpage has a section discussing its compatibility with
dialog. There are some differences not shown in the manpage. For
example, the html documentation states
Note: former Xdialog releases used the "\n" (line feed) as a
results separator for the checklist widget; this has been
changed to "/" in Xdialog v1.5.0 to make it compatible with
(c)dialog. In your old scripts using the Xdialog checklist, you
will then have to add the --separate-output option before the
--checklist one.
Dialog has not used a different separator; the difference was likely
due to confusion regarding some script.
Whiptail
Then there is whiptail. For practical purposes, it is maintained by
Debian (very little work is done by its upstream developers). Its
documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the
newt windowing library rather than the ncurses library, allowing
it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but
has less features: some dialog boxes are not implemented, such
as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes
for whiptail, the newt, popt and slang libraries is 757 KB. The
comparable number for dialog (counting ncurses) is 520 KB. Disregard
the first paragraph.
The second paragraph is misleading, since whiptail also does not work
for common options of dialog, such as the gauge box. whiptail is less
compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites
only dialog versions up to 0.4 (1994) as a source. That is, its
manpage refers to features which were borrowed from more recent
versions of dialog, e.g.,
o --gauge (from 0.5)
o --passwordbox (from Debian changes in 1999),
o --default-item (from dialog 2000/02/22),
o --output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented
in its manpage) of using a "--" as an escape was documented in dialog's
manpage about a year before it was mentioned in whiptail's manpage.
whiptail's manpage incorrectly attributes that to getopt (and is
inaccurate anyway).
Debian uses whiptail for the official dialog variation.
The dialog program ignores or maps these options which are recognized
by whiptail:
Option Treatment
-------------------------------------------
--cancel-button mapped to --cancel-label
--fb ignored
--fullbutton ignored
--no-button mapped to --no-label
--nocancel mapped to --no-cancel
--noitem mapped to --no-items
--notags mapped to --no-tags
--ok-button mapped to --ok-label
--scrolltext mapped to --scrollbar
--topleft mapped to --begin 0 0
--yes-button mapped to --yes-label
-------------------------------------------
There are visual differences which are not addressed by command-line
options:
o dialog centers lists within the window. whiptail typically puts
lists against the left margin.
o whiptail uses angle brackets ("<" and ">") for marking buttons.
dialog uses square brackets.
o whiptail marks the limits of subtitles with vertical bars. dialog
does not mark the limits.
o whiptail attempts to mark the top/bottom cells of a scrollbar with
up/down arrows. When it cannot do this, it fills those cells with
the background color of the scrollbar and confusing the user.
dialog uses the entire scrollbar space, thereby getting better
resolution.
BUGS
Perhaps.
AUTHOR
Thomas E. Dickey (updates for 0.9b and beyond)
CONTRIBUTORS
Kiran Cherupally - the mixed form and mixed gauge widgets.
Tobias C. Rittweiler
Valery Reznic - the form and progressbox widgets.
Yura Kalinichenko adapted the gauge widget as "pause".
This is a rewrite (except as needed to provide compatibility) of the
earlier version of dialog 0.9a, which lists as authors:
o Savio Lam - version 0.3, "dialog"
o Stuart Herbert - patch for version 0.4
o Marc Ewing - the gauge widget.
o Pasquale De Marco "Pako" - version 0.9a, "cdialog"
$Date: 2021/01/17 17:25:01 $ DIALOG(1)
</pre></div>
<p>And in comparison, <span class="executable">bsddialog</span> which being less extensive and purely a TUI. It can still be contained by an Xterm without need of direct interaction with X itself, and so very likely is a bit less hefty, could be speedier, or take up less space installed.</p>
<div><pre>
<b>BSDDIALOG(1) General Commands Manual BSDDIALOG(1)</b>
COMPATIBILITY
Outdated options are retained for compatibility, properly equivalent
options are used:
Obsolete Equivalent
--and-widget --and-dialog
--calendar <text> 2 <cols> --calendar <text> 0 <cols>
--clear --clear-screen
--defaultno --default-no
--exit-label --ok-label
--help-tags --help-print-name
--item-help --item-bottom-desc
--keep-tite --alternate-screen
--no-items --no-descriptions
--no-label --cancel-label
--no-tags --no-names
--nocancel --no-cancel
--nook --no-ok
--separator --output-separator
--yes-label --ok-label
SEE ALSO
bsddialog(3)
HISTORY
The bsddialog utility first appeared in FreeBSD 14.0.
AUTHORS
bsddialog was written by Alfonso Sabato Siciliano
<asiciliano@FreeBSD.org>.
bsddialog provides a subset of the functionality described in the
dialog manual. The following features were reimplemented:
Options: --and-widget, --ascii-lines, --backtitle, --cancel-label,
--clear, --colors, --cr-wrap, --date-format, --defaultno,
--default-button, --default-no, --default-item, --exit-label,
--extra-button, --extra-label, --help, --help-button, --help-label,
--help-status, --help-tags, --hfile, --hline, --ignore, --insecure,
--item-help, --keep-tite, --max-input, --no-cancel, --nocancel,
--no-items, --no-label, --no-lines, --no-ok, --nook, --no-shadow,
--no-tags, --ok-label, --output-fd, --output-separator,
--print-maxsize, --print-size, --print-version, --quoted,
--separate-output, --separator, --shadow, --single-quoted, --sleep,
--stderr, --stdout, --tab-len, --time-format, --title, --version,
--yes-label.
Dialogs: --calendar, --checklist, --form, --gauge, --infobox,
--inputbox, --menu, --mixedform, --mixedgauge, --msgbox, --passwordbox,
--passwordform, --pause, --radiolist, --rangebox, --textbox, --timebox,
--treeview, --yesno.
Some feature differs in input, output, or behavior. Compatibility is
not a priority for future development.
THANKS TO
Baptiste Daroussin <bapt@FreeBSD.org>, Ed Maste <emaste@FreeBSD.org>
and Juraj Lutter <otis@FreeBSD.org> for suggestions, help, and testing.
FreeBSD 13.2 September 23, 2022 BSDDIALOG(1)
</pre></div>
<p>Aside from a functionally similar tool and some things partly compatible, it is not truly a drop-in replacement as switching to portdialog from dialiog4 ports. There are some notable mentions in UPDATING which should be considered.</p>
<p>From UPDATING:</p>
<div><pre>
20231010:
dialog(1) has been replaced in base by bsddialog(1), while most of the
time replacing a dialog(1) call by a bsddialog(1) call works out of the
box, bsddialog(1) is not considered as a drop-in replacement for
dialog(1).
If you do depend on dialog(1) functionality, please install cdialog
from ports:
pkg install cdialog
</pre></div>
<p>From RELNOTES: (for FreeBSD 15.0.)</p>
<div><pre>
ff01d71e48d4:
dialog(1) has been replaced by bsddialog(1)
</pre></div>
<p>This looks like a cool new thing for us to have available, <span class="executable">bsddialog</span> offers more flexibility to ease a greater variety of dialog types. I might consider some rewrites to some of my scripts to include <span class="executable">bsddialog</span> if it is possible (I suspect so) which would make them even more friendly and easy to use I believe. Look into what <span class="executable">bsddialog</span> is on your FreeBSD 14.0 system or CURRENT (aka 15.0) to see how you might take advantage of this interesting flexible dialog creation tool.</p>
<p>PS. This has been an effort for <a href="https://wiki.freebsd.org/GPLinBase">GPLinBase</a> for removal of those items so licensed (few remain), <a href="https://wiki.freebsd.org/RoadmapFromDialogToBSDDialog">bsddialog</a> is one completed for that project.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-85023419605528236552024-03-12T01:36:00.003-05:002024-03-15T00:14:57.486-05:00Was dialog4ports now portconfig<p>Somewhere I ran across the existence of portconfig which is a drop-in replacement for dialog4ports. I installed and I believe removed dialog4ports shortly after. What I did not do was investigate the manpage and that documentation already installed. I have now tried some of its options and saw how it is somewhat different. I never thought to look at the manpage for dialog4ports but looking at it shows me that its replacement has some improvements also. Portconfig is indeed a drop-in replacement, all that needs to be done to switch to it is remove the old and install the new.</p>
<p>This is more of an introduction than anything, so how about comparing the manpages.</p>
<div><pre>
DIALOG4PORTS(1) General Commands Manual DIALOG4PORTS(1) PORTCONFIG(1) FreeBSD General Commands Manual PORTCONFIG(1)
NAME NAME
dialog4ports -- a dialog for FreeBSD ports portconfig – port options
SYNOPSIS SYNOPSIS
Port environment variables dialog4ports. portconfig [-h | -v]
DESCRIPTION DESCRIPTION
dialog4ports is a utility for providing a dialog interface to configure The portconfig utility provides a TUI to customize the options to build a
ports options port. The following options are available:
ENVIRONMENT -h Display options, a short description and exit.
The list of environment variables dialog4ports:
-v Show version and exit.
D4PHEIGHT
Dialog height. (Default value: 0) The following user interface features are available:
D4PMINHEIGHT F1 key General PORTS usage.
Minimal dialog height, for example:
if D4PMINHEIGHT 5 and count of options elements(1-4) less than Help button
D4PMINHEIGHT, then height will extended to 5. (Default value: 0) Specific port help, if pkg-help exists.
D4PWIDTH Space key
Dialog width. (Default value: 80) Select/deselect an option.
D4PFULLSCREEN ENVIRONMENT
Dialog full screen mode. (Default: N) The following environment variables can customize portconfig:
D4PALIGNCENTER <span class="highlight">NO_COLOR</span>
Text in dialog becomes to center. (Default: N) Disable colors if present and not an empty string (regardless of
its value).
D4PASCIILINES
Use ASCII character for line drawing. (Default: N) PORTCONFIG_ALIGNCENTER
Align options to center, “YES” to enable, default left.
SEE ALSO
dialog(3) PORTCONFIG_ASCIILINES
Ascii characters to draw lines, “YES” to enable.
AUTHORS
The dialog4ports utility was written by: PORTCONFIG_FULLSCREEN
Ilya A. Arkhipov <rum1cro@yandex.ru> Fullscreen mode, “YES” to enable.
with help from:
Eitan Adler <eadler@FreeBSD.org>, PORTCONFIG_HEIGHT
Baptiste Daroussin <bapt@FreeBSD.org>, Fixed height, default autosize.
Alexey Dokuchaev <danfe@FreeBSD.org>
PORTCONFIG_MINHEIGHT
FreeBSD 13.2 March 9, 2013 DIALOG4PORTS(1) Minimum height, takes effect only with autosize.
<span class="highlight">PORTCONFIG_MINWIDTH</span>
Minimum width, takes effect only with autosize.
<span class="highlight">PORTCONFIG_NOLINES</span>
Do not draw lines, “YES” to enable.
<span class="highlight">PORTCONFIG_NOSHADOW</span>
“YES” to disable dialog shadow.
PORTCONFIG_WIDTH
Fixed width, default autosize.
Compatibility
The following environment variables are available for compatibility:
D4PALIGNCENTER PORTCONFIG_ALIGNCENTER
D4PASCIILINES PORTCONFIG_ASCIILINES
D4PFULLSCREEN PORTCONFIG_FULLSCREEN
D4PHEIGHT PORTCONFIG_HEIGHT
D4PMINHEIGHT PORTCONFIG_MINHEIGHT
D4PWIDTH PORTCONFIG_WIDTH
EXIT STATUS
The portconfig utility exits 0 on success, and >0 if an error occurs.
SEE ALSO
ports(7)
AUTHORS
The portconfig utility was written by Alfonso Sabato Siciliano
<asiciliano@FreeBSD.org>.
THANKS TO
Baptiste Daroussin <bapt@FreeBSD.org> for suggestions, help, and testing.
FreeBSD 14.0-STABLE August 4, 2023 FreeBSD 14.0-STABLE
</pre></div>
<p>There are some environment variables that are new. We are all accustomed to the dialog4ports config screen but below is a rather clean and crisp portconfig screen for my unofficial minetest-dev port.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://lh3.googleusercontent.com/-TmvbLM45Z30/Ze_lPZigHcI/AAAAAAAADAM/-Jx4QHu7VvYmlMe6MIXwxPlIaQD9HOVmACNcBGAsYHQ/s1600/1710220606839062-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">
<img border="0" src="https://lh3.googleusercontent.com/-TmvbLM45Z30/Ze_lPZigHcI/AAAAAAAADAM/-Jx4QHu7VvYmlMe6MIXwxPlIaQD9HOVmACNcBGAsYHQ/s1600/1710220606839062-0.png" width="400">
</a>
</div>
<p>The following is what I placed in my user's .xinitrc file so that I will get the result above regardless of defaults. I think I could use a different group of settings in the .cshrc file for root, which would function primarily if I were at console rather than in a terminal that I 'switched user' to root. I have decided that I need the lines and I prefer not fullscreen, and centered looks best. I can do either black and white like the image above or use the blue and white and black the way the former dialog4ports had.</p>
<div><pre>
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
## Portconfig options via environment vars ##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
# Disable colors if present and not an empty string (regardless of its value)
NO_COLOR="NO"
export NO_COLOR
# Align options to center, “YES” to enable, default left.
PORTCONFIG_ALIGNCENTER="YES"
export PORTCONFIG_ALIGNCENTER
# Ascii characters to draw lines, “YES” to enable.
PORTCONFIG_ASCIILINES="NO"
export PORTCONFIG_ASCIILINES
# Fullscreen mode, “YES” to enable.
#PORTCONFIG_FULLSCREEN=
#export PORTCONFIG_FULLSCREEN
# Fixed height, default autosize.
#PORTCONFIG_HEIGHT=
#export PORTCONFIG_HEIGHT
# Minimum height, takes effect only with autosize.
#PORTCONFIG_MINHEIGHT=
#export PORTCONFIG_MINHEIGHT
# Minimum width, takes effect only with autosize.
#PORTCONFIG_MINWIDTH=
#export PORTCONFIG_MINWIDTH
# Do not draw lines, “YES” to enable.
PORTCONFIG_NOLINES="NO"
export PORTCONFIG_NOLINES
# “YES” to disable dialog shadow.
PORTCONFIG_NOSHADOW="NO"
export PORTCONFIG_NOSHADOW
# Fixed width, default autosize.
#PORTCONFIG_WIDTH=
#export PORTCONFIG_WIDTH
</pre></div>
<p>Whether you define any of the variables above within your .cshrc or .xinitrc or another file, or at the moment directly on the commandline, you will still need to comply with the format and syntax for the shell that is used. How you decide which options to use or how to configure it may take a little exploration to understand. There do not seem to be shadows without color and it may be that you agree with me that lines are useful. One other thing to consider when using a terminal is whether the font used has the line characters and if you prefer a font that has none you may want the ascii lines instead.</p>
<p>WARNING: The NO_COLOR environment variable will also be interpreted by xterm to disable colors which may eliminate one way <span class="executable">portclippy</span> displays the differences needing adjustment.</p>
<p>If you like white text on a black background, want to be very specific about the dimensions of the dialog, or prefer color without shadows or lines, then this portconfig will be able to do all this. It may be that this would become the permanent replacement for dialog4ports but even if it does not, while it is maintained we have two options for our port configuration menu needs.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-65008113333118089072024-03-11T14:34:00.004-05:002024-03-11T15:02:56.725-05:00Poudriere bulk build lists<p>I may have briefely mentioned or possibly even described how I collect what is installed on my system for rebuilding via poudriere. I have two methods that I use from time to time, one takes a list direct from those directories which exist in the ports tree, and the other uses pkg to collect what is installed already. There are only two areas which I am most likely to install all or a majority of the ports and that is fonts and games. I might use these lists periodically to ensure that new things were added. I could use the ports tree built-in mechanisms to build every port in a category such as fonts or games but this means I would get items I do not desire. Building via poudriere will permit me to limit to what I wish and more quickly handle the task as it would work upon a bulk list and has a blacklist capability.</p>
<p>The simple script to collect all the fonts that could be installed looks like this:
</p>
<div><pre>
#!/bin/sh
[ -f /root/allfonts-list ] && rm /root/allfonts-list
for dir in `ls /usr/ports/x11-fonts`
do
echo x11-fonts/$dir >> /root/allfonts-list
done
</pre></div>
<p>The same for games is only changed a little:</p>
<div><pre>
#!/bin/sh
[ -f /root/allgames-list ] && rm /root/allgames-list
for dir in `ls /usr/ports/games`
do
echo games/$dir >> /root/allgames-list
done
</pre></div>
<p>My script to create the gross bulk list as well as lists divided into categories of what ports are installed is a bit larger and provides more feedback than most of my scripts. It was quieter but I decided that it is nice to know what its doing rather than possibly failing, so more of my newer or re-written scripts include a bit more echoes. You may notice in this script (below) that I specifically exclude the various llvm ports from the bulk list. These I won't ever need built as non-dependent ports so I expect that poudriere or pkg would draw them in automatically. This also eliminates the chance that I would have multiple versions of llvm in any bulk list which could become outdated and unneeded. The blacklist can further eliminate old versions of llvm which could be dependencies but probably ought to be newer versions when upstream for those ports finally get to that task.</p>
<div><pre>
#!/bin/sh
echo "Clearing /var/tmp p-keglist files.."
rm /var/tmp/installed-pkgs-gross 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-gross-added 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-gross-sorted 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-ungamed 2>/dev/null &&echo -n "."
rm /var/tmp/installed-pkgs-* 2>/dev/null &&echo -n "."
echo;echo "--"; echo
echo "Backing up installed-gross list to /var/tmp"
cp ~/installed-pkgs-gross /var/tmp/installed-pkgs-gross.backup
echo;echo "--"; echo
echo "Gathering list of installed pkgs.."
pkg origin >> /var/tmp/installed-pkgs-gross
echo;echo "--"; echo
echo "Organizing the list.."
cat /var/tmp/installed-pkgs-gross | sort -d | sort -u >> /var/tmp/installed-pkgs-gross-added &&echo -n "."
cat /var/tmp/installed-pkgs-gross-added | sed -E 's:devel\/llvm[0-9]*::'| sort -u -d > /var/tmp/installed-pkgs-gross-sorted &&echo -n "."
mv /var/tmp/installed-pkgs-gross-sorted /var/tmp/installed-pkgs-gross &&echo -n "."
cp /var/tmp/installed-pkgs-gross ~ &&echo -n "."
echo;echo "--"; echo
echo "Dividing the list.."
category=0
for portorigin in `cat /var/tmp/installed-pkgs-gross-added`
do
category=`echo $portorigin | cut -d / -f 1`
echo $portorigin >> /var/tmp/installed-pkgs-$category
echo $category $portorigin
if ! [ "$category" = "games" ] ; then
echo $portorigin >> /var/tmp/installed-pkgs-ungamed
fi
done
echo;echo "--"; echo
rm /var/tmp/installed-pkgs-gross-added 2>/dev/null
echo "Finalizing and checking list sizes, one looong moment.."
for listfile in `ls -1 /var/tmp/installed-pkgs-*`
do
wc -l $listfile |sed -e 's:\/var\/tmp\/::'
done
cp /var/tmp/installed-pkgs-* ~
echo;echo "--"; echo
</pre></div>
<p>I had noticed that my bulk list constructing script seemed to be including duplicates while my intent at that time had been to maintain a list of what had been installed which had newer items added. I want to keep track of the things I consistently have installed on my system but which due to some upgrade might be left out due to becoming uninstalled (unintentionally). During that moment if I were to create the bulk list, those items which I didn't truly want removed from my system would not be included in my bulk list. My solution may have been faulty, to add-to my bulk list, which caused the duplicates in the bulk listings. This is why I include a little bit of an attempt to remove possible duplicate lines. There is also a bulk list which excludes games because those might not be what is most important at the time.</p>
<p>Now that the bulk lists exist, one could issue the following command for their poudriere build process
<span class="command">poudriere bulk -j 14amd64 -f `p-keg-deblack installed-pkgs-games`</span> with some small explanation that the "installed=pkgs-games" is the bulk list preceded with -f to indicate to poudriere to take the list from a file. The <a href="https://daemondesktop.blogspot.com/2021/03/poudriere-blacklist-filter.html">"p-keg-deblack" is a script mentioned prevously</a> which filters blacklisted items before sending the list to poudriere, it acts upon the bulk list and the content within the ` characters is seen by poudriere as "installed-pkgs-games-deblack" which is a new file it created. The -j indicates the poudriere jail that it will use for building. The blacklist can be crafted how ever you wish, my own and a revised p-keg-deblack script is shown in a previous blog post, <a href="https://daemondesktop.blogspot.com/2024/03/working-on-blacklist.html">Working on a blacklist</a> which may be something you could use, however, Essential caveat: Use this script at your own risk, I make no promises.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-43518734031890259892024-03-11T13:03:00.006-05:002024-03-11T15:03:46.160-05:00Working on a blacklist<p>The ports-mgmt tool poudriere as a local package builder for installing built ports on the same system is a pretty efficient and effective tool nearly all of the time. It seems that the default or more well-known method is to build everything in the entire ports tree, surely because the primary or initial intent of this tool was for that particular task. Whether you use a subset with the -f option and a filename of listed port origins, or use that default massive build, you will be able to get some scrutiny on the builds via poudriere's testing, and bunch of ports will be added to your repository. It will also build multiple ports in rough parallel which speeds the whole process. Sometimes even when you give it up to the four or six processor cores worth of builds to do at the same time, it will drop to fewer because a larger dependency like llvm or rust is needed as an update for further ports depending on those. The file list option I mention is one way to determine what is built, but you can more forcefully deny other things from being built by creating a blacklist.</p>
<p>A blacklist for poudriere is simply a listing of port origins in a file and can include comments or further organization any way you wish. This file is created and placed in the poudriere directory. The manpage describes the required filename:</p>
<div><pre>
<b>Blacklist ports</b>
You can also specify a blacklist which will disallow the lists port
origins from building on the matched jail. Any of the following are
allowed and will all be used in the order shown:
/usr/local/etc/poudriere.d/blacklist
/usr/local/etc/poudriere.d/<setname>-blacklist
/usr/local/etc/poudriere.d/<tree>-blacklist
<span class="highlight">/usr/local/etc/poudriere.d/<jailname>-blacklist</span>
/usr/local/etc/poudriere.d/<tree>gt;-<setname>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<tree>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<setname>-blacklist
/usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-blacklist
If QEMU is being used then a special qemu blacklist is also loaded.
/usr/local/etc/poudriere.d/qemu-blacklist
</pre></div>
<p>I have been using the jailname option as this is how I have been building my ports, I have not looked deeper into the other methods yet. My jail is 14amd64, this means the proper path for my blacklist is <span class="path">/usr/local/etc/poudriere.d/14amd64-blacklist</span> and below is what mine looks like at present.</p>
<div><pre>
# Doesn't exist
devel/libtar
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# oddness with py39 something issue #
#_______________________________________________________#
graphics/lensfun
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these presently fail #
#_______________________________________________________#
games/wesnoth
games/abstreet
games/opendungeons
games/jinput
graphics/ocaml-images
emulators/wine
www/py-aiohttp
devel/opengrok
games/DDNet
games/libretro-fbneo
www/nspluginwrapper
games/orthorobot
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Try to use version 7 and avoid 6 #
#_______________________________________________________#
graphics/ImageMagick6
graphics/ImageMagick6-nox11
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# use 17 rather than 16 or others. #
#_______________________________________________________#
www/node16
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# These do not exist in ports #
#_______________________________________________________#
#sysutils/pcbsd-libsh
#x11-fonts/font-bitstream-speedo
#x11-fonts/fontconfig-reference
#x11-wm/fvwm-crystal
net/libmms
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Expired/Deprecated/Unsupported upstream #
#_______________________________________________________#
multimedia/schroedinger
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Except when using testport Build outside poudriere #
# minetest fork of irrlicht does not conflict #
#_______________________________________________________#
games/minetest-dev
games/minetestmapper-dev
x11-toolkits/irrlicht-minetest
x11-wm/fvwm3-dev
graphics/feh-dev
graphics/libthorvg
games/lutris-freebsd
games/eternallands-dev
games/eternallands-data
databases/dbeaver-dev
devel/distcc-dev
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Build without poudriere: tigersharke/Ported_Software #
#_______________________________________________________#
games/el
games/el-data
games/minetest
games/minetestmapper
games/minetest_game
net/libmms
audio/easytag
x11-toolkits/irrlicht
x11-wm/fvwm3
graphics/feh
games/lutris
graphics/libthorvg
games/godot-dev
games/ryzomcore
games/eternallands-data
databases/dbeaver-dev
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# avoid bulk build of these silly things #
# These or others get added by bulk list creation #
#_______________________________________________________#
games/pink-pony
games/cowsay
games/neo-cowsay
games/xcowsay
games/coffeebreak
games/powdertoy
games/powder-toy
games/powdertoy-devel
games/powder-toy-devel
games/sex
games/weebsay
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# builds but doesn't work #
#_______________________________________________________#
games/excido
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# toggle these - often cause troubles or take FOREVER #
#_______________________________________________________#
#games/veloren-weekly
#games/veloren
#www/firefox
#lang/rust
lang/rust-nightly
#x11-fonts/iosevka
#lang/rust-bootstrap
#devel/efl
#x11-wm/enlightenment
#devel/rust-cbindgen
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# conflicts in port or its depends #
#_______________________________________________________#
java/jmf
devel/typetools
games/openarena
games/slade
games/golly
games/gnubik
games/openmw
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Try to force more current version of llvm #
# Discover what breaks and adjust accordingly. #
# first is "default" version, unversioned #
# #
# favoring llvm13 #
#_______________________________________________________#
#devel/llvm
#devel/llvm17@default
#
devel/llvm70
devel/llvm80
devel/llvm90
devel/llvm10
devel/llvm11
devel/llvm12
#
#devel/llvm13
devel/llvm14
devel/llvm15
devel/llvm16
#devel/llvm17
#devel/llvm-devel
#devel/ccache
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# This built with python39 not 38 as makefile expects #
# #
# Need to make a Ported_Software build for it #
#_______________________________________________________#
#www/bluefish
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Should be no need for these at all due to git #
#_______________________________________________________#
devel/subversion
devel/p5-subversion
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these fail due to ruby default #
#_______________________________________________________#
#accessibility/rubygem-atk
#archivers/rubygem-rubyzip
#devel/git@tiny
#devel/rubygem-cairo-gobject
#devel/rubygem-gettext
#devel/rubygem-gio2
#devel/rubygem-glib2
#devel/rubygem-gobject-introspection
#devel/rubygem-highline
#devel/rubygem-json_pure
#devel/rubygem-locale
#devel/rubygem-manpages
#devel/rubygem-native-package-installer
#devel/rubygem-optimist
#devel/rubygem-paint
#devel/rubygem-pkg-config
#devel/rubygem-rake
#devel/rubygem-thor
#devel/ruby-sdl
#editors/neovim
#games/freecell-solver
#games/jaggedalliance2
#games/magicmaze
#games/ninix-aya
#games/rubygem-fortune_gem
#games/rubygem-lolcat
#games/rubygem-vimgolf
#graphics/rubygem-cairo
#graphics/rubygem-gdk_pixbuf2
#graphics/rubygem-opengl
#math/rubygem-narray
#multimedia/rubygem-gstreamer
#textproc/rubygem-asciidoctor
#textproc/rubygem-charlock_holmes
#textproc/rubygem-text
#x11-toolkits/rubygem-gdk3
#x11-toolkits/rubygem-gtk3
#x11-toolkits/rubygem-pango
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Openoffice #
#_______________________________________________________#
editors/openoffice-4
editors/openoffice-devel
java/bootstrap-openjdk6
math/suitesparse
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# According to vigra comment: #
# Using py-NumPY implies Fortran and GCC 4.7+ as hard #
# dependencies and require all ports, depending on #
# vigra, to set USE_GCC=yes #
# #
# So lets avoid py-numpy #
#_______________________________________________________#
#math/py-numpy
graphics/vigra
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Dependent upon py-numpy via math/suitesparse #
#_______________________________________________________#
games/freeorion
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# unexplained dependency on openjdk7 which fails build #
#_______________________________________________________#
java/openjdk7
java/bootstrap-openjdk6
#
#math/cgal
#math/suitesparse
#math/eigen3
devel/apr1
#databases/db5
textproc/redland
www/serf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# mesa-libs conflicts with libglvnd? #
#_______________________________________________________#
#graphics/libglvnd
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# complicates the issue? #
#_______________________________________________________#
#graphics/linux-c7-libglvnd
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# avoid colord #
#_______________________________________________________#
graphics/colord
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# dbus dependent -- GNOME - not a necessary dependency #
#_______________________________________________________#
#devel/dconf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Until dependencies fixed in official Makefile #
# Use home/tigersharke/Ported_Software instead #
#_______________________________________________________#
sysutils/dunst
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# lets avoid dbus -- it sucks but allowing for now #
#_______________________________________________________#
#devel/dbus
#devel/dbus-glib
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# dbus dependent so no need for them - subset likely #
#_______________________________________________________#
#accessibility/at-spi2-atk
# accessibility/at-spi2-core
#net/avahi-app
#net/avahi-libdns
#sysutils/bsdisks
#x11/compton-conf
#sysutils/consolekit2
#devel/dconf
#x11-toolkits/kf5-attica
#devel/kf5-kauth
#devel/kf5-kbookmarks
#x11-toolkits/kf5-kcompletion
#devel/kf5-kconfig
#x11-toolkits/kf5-kconfigwidgets
#devel/kf5-kcrash
#devel/kf5-kdbusaddons
#x11/kf5-kded
#devel/kf5-kdoctools
#x11/kf5-kglobalaccel
#x11-toolkits/kf5-kguiaddons
#devel/kf5-ki18n
#x11-themes/kf5-kiconthemes
#x11-toolkits/kf5-kitemviews
#x11-toolkits/kf5-kjobwidgets
#devel/kf5-kservice
#x11-toolkits/kf5-ktextwidgets
#x11/kf5-kwayland
#x11-toolkits/kf5-kwidgetsaddons
#x11/kf5-kwindowsystem
#x11-toolkits/kf5-kxmlgui
#textproc/kf5-sonnet
#security/libgnome-keyring
#x11/lumina-coreutils
#sysutils/polkit
#sysutils/polkit-qt
#sysutils/polkit-qt-1
#devel/py39-dbus
#devel/py39-qt5-dbussupport
# devel/qt5-dbus
# x11-toolkits/qt5-declarative
#graphics/qt5-graphicaleffects
# x11-toolkits/qt5-gui
#graphics/qt5-imageformats
#multimedia/qt5-multimedia
#graphics/qt5-opengl
# print/qt5-printsupport
#accessibility/qt5-speech
# graphics/qt5-svg
# x11-toolkits/qt5-uiplugin
# devel/qt5-uitools
#graphics/qt5-wayland
# x11-toolkits/qt5-widgets
#x11/qt5-x11extras
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Since qt5-core has no config, and requires dbus as #
# well as accessibility/at-spi2-core #
#_______________________________________________________#
#devel/qt5-core
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Dependent upon math/suitesparse #
#_______________________________________________________#
#devel/boost-python-libs
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# kerberos or heimdal or gssapi stuff not needed #
#_______________________________________________________#
net-mgmt/nagstamon
net/rubygem-omniauth-kerberos
security/cyrus-sasl2-gssapi
#security/heimdal
security/krb5-appl
security/krb5-devel
security/p5-Authen-Krb5
security/p5-Authen-Krb5-Simple
security/p5-Authen-Simple-Kerberos
security/p5-GSSAPI
security/p5-Heimdal-Kadm5
security/pam_krb5
security/py-flask-kerberos
security/py-gssapi
security/py-kerberos
security/py-pywinrm
security/py-requests-kerberos
security/rubygem-gssapi
www/gitlab-ce
www/mod_auth_gssapi
www/mod_auth_kerb2
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Unmaintained and dead upstream, #
# does not build with -fno-common (llvm 11) #
#_______________________________________________________#
#games/bomberinstinct
#games/bygfoot
#games/cavezofphear
games/cosmo
games/cre
games/drm
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# avoid this as luajit-openresty is preferred #
# -- conflicts with luajit #
#_______________________________________________________#
lang/luajit
lang/luajit-devel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Build outside of ports until luajit-openresty default #
#_______________________________________________________#
games/catesc
games/freeminer-default
games/freeminer
games/instead
games/mari0
games/minerbold
games/minetest_game
games/minetest
games/naev
games/powder-toy
games/solarus-quest-editor
games/solarus
games/voadi
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Avoid libressl of any variety on desktop, use openSSL #
# libressl is fine on simpler systems like firewall but #
# is NOT properly supported by software in general. #
#_______________________________________________________#
security/libressl
security/libressl-devel
security/libressl*
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# conflicts with libressl-devel #
# but maybe avoid anyhow if possible #
#_______________________________________________________#
#security/gnutls
#security/nettle
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these things require gnupg -- no option visible #
#_______________________________________________________#
#devel/kf5-kcmutils
#devel/kf5-kdeclarative
#devel/kf5-kio
#devel/kf5-knewstuff
#devel/kf5-knotifyconfig
#devel/kf5-kparts
#devel/libgdata
#games/kanagram
#games/khangman
mail/gmime30
misc/libkeduvocdocument
#multimedia/totem-pl-parser
net/gnome-online-accounts
security/gcr
#security/gpgme
#security/gpgme-cpp
#security/gpgme-qt5
#sysutils/kf5-kwallet
#x11/kf5-kactivities
#x11/kf5-kinit
x11/kf5-plasma-framework
#x11-toolkits/kf5-kirigami2
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# nettle dependents #
#_______________________________________________________#
#devel/librest
#devel/libsoup
#devel/qca
#mail/gmime30
#multimedia/totem-pl-parser
#net/geoclue
#net/glib-networking
#net-im/gloox
#net/uhttpmock
#security/gnupg
#security/gnutls
#security/gpgme
#security/gpgme-cpp
#security/gpgme-qt5
#security/libgsasl
#sysutils/password-store
#sysutils/qtpass
#sysutils/tracker
#x11-toolkits/gnome-pty-helper
#x11-toolkits/vte
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# these things require nettle -- no option visible #
#_______________________________________________________#
audio/audacity
audio/lollypop
#devel/appstream-glib
#devel/glade
#devel/libgdata
#devel/librest
#devel/libsoup
#games/0ad
#games/atomix
#games/diaspora
#games/four-in-a-row
#games/freedink
#games/freedink-dfarc
#games/gnome-2048
#games/gnome-chess
#games/gnome-nibbles
#games/gnome-robots
#games/gnome-sudoku
#games/golly
#games/hitori
#games/iagno
#games/megaglest
#games/pioneers
#games/quadrapassel
#games/trenchbroom
#games/wxlauncher
#graphics/gimp
#graphics/gimp-app
#graphics/gimp-data-extras
#mail/claws-mail
#mail/claws-mail-gdata
#mail/claws-mail-libravatar
#mail/claws-mail-litehtml_viewer
#mail/claws-mail-mailmbox
#mail/claws-mail-newmail
#mail/claws-mail-notification
#mail/claws-mail-rssyl
##multimedia/totem-pl-parser
#net/glib-networking
#net/gnome-online-accounts
#net-im/gloox
#net/uhttpmock
#print/gimp-gutenprint
#security/gnutls
#www/gtkhtml4
#www/webkit2-gtk3
#x11-fonts/cantarell-fonts
x11/gnome-desktop
#x11-toolkits/libhandy
#x11-toolkits/wxgtk30
#x11-toolkits/wxgtk31
#x11/yelp
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# git -- avoid other flavors #
#_______________________________________________________#
devel/git@default
devel/git@gui
devel/git@lite
devel/git@svn
devel/git-default
devel/git-gui
devel/git-lite
devel/git-svn
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# avoid -- also dbus dependents #
#_______________________________________________________#
accessibility/at-spi2-atk
#accessibility/at-spi2-core
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# accessibility/at-spi2-atk dependents without config #
#_______________________________________________________#
devel/electron11
editors/vscode
www/chromium
x11/cinnamon
x11/gnome-shell
x11-toolkits/gtkada3
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# db5 issue #
#_______________________________________________________#
audio/jack
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# obslete and would need makefile changes to fix build #
#_______________________________________________________#
graphics/osg34
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# osg34 dependent cannot build #
#_______________________________________________________#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Rebuild only with updated kernel/world #
# and maybe keep pkg locked in between times. #
#_______________________________________________________#
emulators/virtualbox-ose
emulators/virtualbox-ose-kmod
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# talloc and tevent not needed -- ldap/samba focus #
#_______________________________________________________#
devel/talloc
devel/tevent
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openblas conflicts with netlib/cblas preferred #
#_______________________________________________________#
math/openblas
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# openblas dependent cannot build #
#_______________________________________________________#
biology/bolt-lmm
biology/gcta
biology/gemma
biology/plink
cad/gmsh
graphics/opencv
math/adept
math/ambit
math/armadillo
math/blaze
math/blazeiterative
math/casadi
math/ceres-solver
math/cminpack
math/coinutils
math/dbcsr
math/deal.ii
math/dune-common
math/dune-fem
math/dune-geometry
math/dune-grid
math/dune-pdelab
math/dune-polygongrid
math/dune-uggrid
math/dune-vtk
#math/eigen3
math/elemental
math/elpa
math/faiss
math/fflas-ffpack
math/flint2
math/freefem++
math/g2o
math/hmat-oss
math/iml
math/jags
math/lapack++
math/linbox
math/moab
math/octave
math/octave-forge-ltfat
math/openturns
math/osi
math/primme
#math/py-numpy
math/py-scs
math/qposases
math/sage
math/scalapack
math/scs
math/suitesparse
math/sundials
misc/mxnet
misc/openmvg
misc/visp
science/bagel
science/berkeleygw
science/chemps2
science/chrono
science/code_saturne
science/dalton
science/elk
science/elmerfem
science/erkale
science/gamess-us
science/iboview
science/lammps
science/latte
science/libcint
science/mpb
science/multiwfn
science/opensim-core
science/py-gpaw
science/py-phono3py
science/py-scipy
science/qiskit-aer
science/qmcpack
science/simbody
science/xtb
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Avoid all nvidia -- hidden deps #
#_______________________________________________________#
graphics/nvidia-texture-tools
net-mgmt/nvidia_gpu_prometheus_exporter
x11/linux-nvidia-libs*
#x11/linux-nvidia-libs-304
#x11/linux-nvidia-libs-340
#x11/linux-nvidia-libs-390
x11/nvidia-driver*
#x11/nvidia-driver-304
#x11/nvidia-driveR-340
#X11/nvidia-driver-390
x11/nvidia*
#x11/nvidia-settings
#x11/nvidia-xconfig
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Avoid all nvidia -- hidden deps #
#_______________________________________________________#
x11-drivers/xf86-video-scfb
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fails when fontforge fails #
#_______________________________________________________#
#x11-fonts/oxygen-fonts
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# deprecated version of python 2.7 #
#_______________________________________________________#
lang/python27
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# python27 dependent cannot build #
#_______________________________________________________#
devel/py-backports.functools_lru_cache
graphics/gif2png
devel/godot2
lang/cython@py27
devel/py-enum34
devel/py-future@py27
devel/py-game_sdl2@py27
net/py-ipaddress
devel/py-setuptools@py27
x11-toolkits/py-tkinter@py27
devel/scons@py27
net/py-ipaddress
#
devel/electron13
devel/py-setuptools44
dns/py-dnspython1
games/renpy
lang/python2
mail/mailman
mail/mailman-exim4
mail/mailman-postfix
sysutils/uefi-edk2-bhyve-csm
www/moinmoin
www/qt5-webengine
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# license confirmation needed #
#_______________________________________________________#
games/taipan
games/tyrian-data
games/linux-unigine-valley
games/primateplunge
games/linux-unigine-heaven
games/minecraft-server
games/rawgl
games/steelstorm
games/mtaserver
games/goonies
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# cdrom or mount of cdrom needed #
#_______________________________________________________#
games/HeroesOfMightAndMagic
games/jaggedalliance2
games/kodi-addon-game.libretro.genplus
games/kodi-addon-game.libretro.pcsx-rearmed
games/kodi-addon-game.libretro.picodrive
games/linux-quake4
games/linux-ssamtse
games/linux-ssamtfe
games/linux-unrealgold
games/linux-ut
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# i386 only or fails on amd64 #
#_______________________________________________________#
#devel/bennugd-core
games/q3cellshading
games/quake3
games/lmpc
games/doom
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# run depends #
#_______________________________________________________#
emulators/i386-wine-devel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# stupid dependencies #
#_______________________________________________________#
games/valyriatear
games/eboard
games/foobillard
games/xconq
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# stupid nvidia textures dependency #
#_______________________________________________________#
games/xray_re-tools
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# fetch - config issue (missing file via option) #
#_______________________________________________________#
games/quake2-extras
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# stage - broken due to missing file #
#_______________________________________________________#
#games/odamex
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# depends upon broken love #
#_______________________________________________________#
#games/mari0
#games/gunfudeadlands
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# broken due to sdl12 & opengl includes in source #
#_______________________________________________________#
devel/love07
devel/love08
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# investigation needed #
#_______________________________________________________#
#devel/godot2
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# dependencies already blacklisted #
#_______________________________________________________#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# metaport fails due to blacklisted component #
#_______________________________________________________#
#games/gnome-games
</pre></div>
<p>Lots of text, many comments. I have changed my mind about building and installing various things, used the standard ports tree for most and chose custom ones for others. Eventually if I take the time, I might better understand what some of the other poudriere build methods mean, and possibly could gain a bit more flexibility with how I bulk build via my lists.</p>
<p>There is no other need except to create and properly place the blacklist file, it is found without an added commandline option, but for me, I would issue
<span class="command">poudriere bulk -j 14amd64 -f `p-keg-deblack installed-pkgs-gross`</span> because I discovered that poudriere would cull them as part of its initial process. I believe that there is no need to send a list of files which may include blacklisted items, so I pre-remove them from the initial list. This alleviates a little of the extra, but poudriere will still use the blacklist file if there still remain hidden among dependencies things I do not desire built.</p>
<p>The p-keg-deblack script is described in a prior blog post, <a href="https://daemondesktop.blogspot.com/2021/03/poudriere-blacklist-filter.html">poudriere blacklist filter</a> but I had since revised it as below:</p>
<div><pre>
#!/bin/sh
rm ~/$1-deblack 2>/dev/null
rm /var/tmp/cleaned_blacklist 2>/dev/null
rm /var/tmp/list 2>/dev/null
rm /var/tmp/sorted_list 2>/dev/null
cp $1 /var/tmp/list
cat /var/tmp/list | sort -d -u > /var/tmp/sorted_list && rm $1 && cp /var/tmp/sorted_list $1
grep -v \# ~/Symbolic_Links/14amd64-blacklist | sort -d -u > /var/tmp/cleaned_blacklist
diff -B -w $1 /var/tmp/cleaned_blacklist | grep \< |sed -e 's/^<\ //g' -e 's/---//g' -e '1d' > ~/$1-deblack
echo $1-deblack
</pre></div>
<p>I'll repeat myself as I said previously, Essential caveat: Use this script at your own risk, I make no promises.</p>
<p>Whether you simply use the blacklist mechanism within poudriere or pre-filter your file list with my script, either way there will be fewer ports built into packages in your repo. There is no need for the whole circus including troupe of clowns to be handled by your system, if your purpose is a local repo for your own use and install. I make larger bulk lists which may include all of the games or all of the fonts, and neither might all be installed, so I use the blacklist to avoid some I wouldn't use. Those two bulk lists would be made directly from what is present in the ports tree while other things I install are based on what I do have installed already on my system. Build your needed ports into installed packages through the use of poudriere, its a good tool for the average user when its limited to what you need rather than everything it might ordinarily act upon without a blacklist.</p>
Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-88662068324988461692024-03-10T20:33:00.013-05:002024-03-22T15:42:18.197-05:00Portclippy minetest finesse<p>I recently discovered another option that I left out of the exposed config for my unofficial minetest-dev port. It is not much of a task to add another option but in the process of doing it I re-read some porter's handbook documentation (https://docs.freebsd.org/en/books/porters-handbook/testing/). I was wondering how to test for correctness and whether all my dependencies were included. I haven't had issues with building from my Makefile, although it warns that I may be including too many dependencies, things that it might not link to anyway. These are only warnings, they could remain as is, though why not fix them, and I noticed mention of portclippy.</p>
<p>I've used portlint frequently and its direction has helped me correct flaws, including the most annoying "wrong linetype" issue when I copy-paste something and it converts from tabs to spaces. This tool, portclippy is much more visual and makes the needed adjustments much more obvious. Below is the output I had when I ran it on the minetest-dev Makefile. The manpage describes "The output of portclippy is inspired by unified diff(1) output. Here RUN_DEPENDS is in the wrong position (marked with -) and should be moved to before USES (marked with +)." which means there are a lot of line moves to do.</p>
<div><pre class="portclippy_output">
<span class="original">/usr/home/tigersharke/Ported_Software/games/minetest-dev # portclippy Makefile</span>
<span class="portclippy_comment"># PORTNAME block</span>
PORTNAME
DISTVERSION
CATEGORIES
PKGNAMESUFFIX
DISTNAME
DIST_SUBDIR
<span class="portclippy_comment"># Maintainer block</span>
MAINTAINER
COMMENT
WWW
<span class="portclippy_comment"># License block</span>
LICENSE
<span class="portclippy_comment"># Dependencies</span>
LIB_DEPENDS
<span class="portclippy_comment"># USES block</span>
USES
<span class="portclippy_wrong">-CONFLICTS</span>
USE_GITHUB
GH_ACCOUNT
GH_PROJECT
GH_TAGNAME
+USE_SDL
<span class="portclippy_comment"># USES=cmake related variables</span>
CMAKE_ARGS
<span class="portclippy_wrong">-USE_SDL</span>
<span class="portclippy_comment"># Conflicts</span>
+CONFLICTS
<span class="portclippy_comment"># WRKSRC block</span>
WRKSRC
<span class="portclippy_comment"># Packaging list block</span>
PORTDATA
PORTDOCS
<span class="portclippy_comment"># Options definitions</span>
OPTIONS_DEFAULT
OPTIONS_GROUP
<span class="portclippy_wrong">-OPTIONS_SINGLE</span>
<span class="portclippy_wrong">-OPTIONS_MULTI</span>
<span class="portclippy_wrong">-MISC_DESC</span>
+OPTIONS_GROUP_BUILD
+OPTIONS_GROUP_DATABASE
OPTIONS_GROUP_MISC
<span class="portclippy_wrong">-NEEDS_DESC</span>
OPTIONS_GROUP_NEEDS
<span class="portclippy_wrong">-SYSTEM_DESC</span>
OPTIONS_GROUP_SYSTEM
<span class="portclippy_wrong">-SOFTWARE_DESC</span>
+OPTIONS_MULTI
OPTIONS_MULTI_SOFTWARE
+OPTIONS_SINGLE
+OPTIONS_SINGLE_GRAPHICS
+OPTIONS_SUB
<span class="portclippy_comment"># Options descriptions</span>
+BUILD_DESC
+CLIENT_DESC
+CURL_DESC
+DATABASE_DESC
+DEVTEST_DESC
+DOCS_DESC
+EXAMPLES_DESC
+FREETYPE_DESC
+GLVND_DESC
+GRAPHICS_DESC
+LEGACY_DESC
+LEVELDB_DESC
+LTO_DESC
+MISC_DESC
+NCURSES_DESC
+NEEDS_DESC
+NLS_DESC
+PGSQL_DESC
+PROFILING_DESC
+PROMETHEUS_DESC
+REDIS_DESC
+SERVER_DESC
+SOFTWARE_DESC
+SOUND_DESC
+SPATIAL_DESC
+SYSTEM_DESC
+SYSTEM_FONTS_DESC
SYSTEM_GMP_DESC
<span class="portclippy_wrong">-SYSTEM_GMP_CMAKE_BOOL</span>
<span class="portclippy_wrong">-SYSTEM_GMP_CMAKE_ON</span>
<span class="portclippy_wrong">-SYSTEM_GMP_LIB_DEPENDS</span>
SYSTEM_JSONCPP_DESC
<span class="portclippy_wrong">-SYSTEM_JSONCPP_CMAKE_BOOL</span>
<span class="portclippy_wrong">-SYSTEM_JSONCPP_CMAKE_ON</span>
<span class="portclippy_wrong">-SYSTEM_JSONCPP_LIB_DEPENDS</span>
SYSTEM_LUAJIT_DESC
<span class="portclippy_wrong">-SYSTEM_LUAJIT_USES</span>
<span class="portclippy_wrong">-SYSTEM_FONTS_DESC</span>
<span class="portclippy_wrong">-SYSTEM_FONTS_RUN_DEPENDS</span>
<span class="portclippy_wrong">-BUILD_DESC</span>
<span class="portclippy_wrong">-OPTIONS_GROUP_BUILD</span>
<span class="portclippy_wrong">-EXAMPLES_DESC</span>
<span class="portclippy_wrong">-EXAMPLES_CMAKE_BOOL</span>
<span class="portclippy_wrong">-DEVTEST_DESC</span>
<span class="portclippy_wrong">-DEVTEST_CMAKE_BOOL</span>
+TOUCH_DESC
UNITTESTS_DESC
<span class="portclippy_comment"># Options helpers</span>
<span class="portclippy_wrong">-UNITTESTS_CMAKE_BOOL</span>
<span class="portclippy_wrong">-OPTIONS_SINGLE_GRAPHICS</span>
<span class="portclippy_wrong">-GRAPHICS_DESC</span>
<span class="portclippy_wrong">-GLVND_DESC</span>
<span class="portclippy_wrong">-GLVND_CMAKE_BOOL</span>
<span class="portclippy_wrong">-GLVND_CMAKE_ON</span>
<span class="portclippy_wrong">-GLVND_USE</span>
<span class="portclippy_wrong">-GLVND_LIB_DEPENDS</span>
<span class="portclippy_wrong">-LEGACY_DESC</span>
<span class="portclippy_wrong">-LEGACY_CMAKE_BOOL</span>
<span class="portclippy_wrong">-LEGACY_CMAKE_ON</span>
<span class="portclippy_wrong">-LEGACY_USE</span>
<span class="portclippy_wrong">-DATABASE_DESC</span>
<span class="portclippy_wrong">-OPTIONS_GROUP_DATABASE</span>
<span class="portclippy_wrong">-OPTIONS_SUB</span>
<span class="portclippy_wrong">-CLIENT_DESC</span>
<span class="portclippy_wrong">-CLIENT_CMAKE_BOOL_ON</span>
CLIENT_LIB_DEPENDS
CLIENT_USES
CLIENT_USE
<span class="portclippy_wrong">-SERVER_DESC</span>
<span class="portclippy_wrong">-SERVER_CMAKE_BOOL</span>
<span class="portclippy_wrong">-CURL_DESC</span>
<span class="portclippy_wrong">-CURL_CMAKE_BOOL</span>
CURL_LIB_DEPENDS
<span class="portclippy_wrong">-SOUND_DESC</span>
<span class="portclippy_wrong">-SOUND_CMAKE_BOOL</span>
<span class="portclippy_wrong">-DOCS_DESC</span>
+CURL_CMAKE_BOOL
+DEVTEST_CMAKE_BOOL
DOCS_CMAKE_BOOL
<span class="portclippy_wrong">-FREETYPE_DESC</span>
<span class="portclippy_wrong">-FREETYPE_CMAKE_BOOL</span>
+EXAMPLES_CMAKE_BOOL
FREETYPE_LIB_DEPENDS
<span class="portclippy_wrong">-NCURSES_DESC</span>
<span class="portclippy_wrong">-NCURSES_CMAKE_BOOL</span>
<span class="portclippy_wrong">-NCURSES_USES</span>
<span class="portclippy_wrong">-LEVELDB_DESC</span>
<span class="portclippy_wrong">-LEVELDB_CMAKE_BOOL</span>
+FREETYPE_CMAKE_BOOL
+GLVND_LIB_DEPENDS
+GLVND_USE
+GLVND_CMAKE_BOOL
+GLVND_CMAKE_ON
+LEGACY_USE
+LEGACY_CMAKE_BOOL
+LEGACY_CMAKE_ON
LEVELDB_LIB_DEPENDS
<span class="portclippy_wrong">-PGSQL_DESC</span>
+LEVELDB_CMAKE_BOOL
+LTO_CMAKE_BOOL
+NCURSES_USES
+NCURSES_CMAKE_BOOL
+NLS_USES
+NLS_CMAKE_BOOL
+NLS_LDFLAGS
PGSQL_USES
PGSQL_CMAKE_BOOL
<span class="portclippy_wrong">-REDIS_DESC</span>
<span class="portclippy_wrong">-REDIS_CMAKE_BOOL</span>
+PROFILING_CMAKE_BOOL
+PROMETHEUS_CMAKE_BOOL
REDIS_LIB_DEPENDS
<span class="portclippy_wrong">-SPATIAL_DESC</span>
+REDIS_CMAKE_BOOL
+SERVER_CMAKE_BOOL
+SOUND_CMAKE_BOOL
SPATIAL_LIB_DEPENDS
SPATIAL_CMAKE_BOOL
<span class="portclippy_wrong">-NLS_DESC</span>
<span class="portclippy_wrong">-NLS_CMAKE_BOOL</span>
<span class="portclippy_wrong">-NLS_USES</span>
<span class="portclippy_wrong">-NLS_LDFLAGS</span>
<span class="portclippy_wrong">-TOUCH_DESC</span>
+SYSTEM_FONTS_RUN_DEPENDS
+SYSTEM_GMP_LIB_DEPENDS
+SYSTEM_GMP_CMAKE_BOOL
+SYSTEM_GMP_CMAKE_ON
+SYSTEM_JSONCPP_LIB_DEPENDS
+SYSTEM_JSONCPP_CMAKE_BOOL
+SYSTEM_JSONCPP_CMAKE_ON
+SYSTEM_LUAJIT_USES
TOUCH_CMAKE_BOOL
+UNITTESTS_CMAKE_BOOL
<span class="portclippy_wrong">-PROMETHEUS_DESC</span>
<span class="portclippy_wrong">-PROMETHEUS_CMAKE_BOOL</span>
<span class="portclippy_wrong">-PROFILING_DESC</span>
<span class="portclippy_wrong">-PROFILING_CMAKE_BOOL</span>
<span class="portclippy_wrong">-LTO_DESC</span>
<span class="portclippy_wrong">-LTO_CMAKE_BOOL</span>
<span class="portclippy_comment"># Unknown variables</span>
<span class="portclippy_comment"># WARNING:</span>
<span class="portclippy_comment"># The following variables were not recognized.</span>
<span class="portclippy_comment"># They could just be typos or Portclippy needs to be made aware of them.</span>
<span class="portclippy_comment"># Please double check them.</span>
<span class="portclippy_comment">#</span>
<span class="portclippy_comment"># Prefix them with an _ or wrap in '.ifnmake portclippy' to tell</span>
<span class="portclippy_comment"># Portclippy to ignore them.</span>
<span class="portclippy_comment">#</span>
<span class="portclippy_comment"># If in doubt please report this on portfmt's bug tracker:</span>
<span class="portclippy_comment"># https://codeberg.org/tobik/portfmt/issues</span>
+CLIENT_CMAKE_BOOL_ON
<span class="original">/usr/home/tigersharke/Ported_Software/games/minetest-dev #</span>
</pre></div>
<p>So it looks like I will need to scroll down to the first group of lines with the "-" prefix, and move them where the matching lines with the "+" prefix are in the file. After quite a bit of cut and paste using vi, I have re-run portclippy for the results below.</p>
<div><pre class="portclippy_output">
<span class="original">/usr/home/tigersharke/Ported_Software/games/minetest-dev # portclippy Makefile</span>
<span class="portclippy_comment"># PORTNAME block</span>
PORTNAME
DISTVERSION
CATEGORIES
PKGNAMESUFFIX
DISTNAME
DIST_SUBDIR
<span class="portclippy_comment"># Maintainer block</span>
MAINTAINER
COMMENT
WWW
# License block
LICENSE
<span class="portclippy_comment"># Dependencies</span>
LIB_DEPENDS
# USES block
USES
USE_GITHUB
GH_ACCOUNT
GH_PROJECT
GH_TAGNAME
USE_SDL
<span class="portclippy_comment"># USES=cmake related variables</span>
CMAKE_ARGS
<span class="portclippy_comment"># Conflicts</span>
CONFLICTS
<span class="portclippy_comment"># WRKSRC block</span>
WRKSRC
<span class="portclippy_comment"># Packaging list block</span>
PORTDATA
PORTDOCS
<span class="portclippy_comment"># Options definitions</span>
OPTIONS_DEFAULT
OPTIONS_GROUP
OPTIONS_GROUP_BUILD
OPTIONS_GROUP_DATABASE
OPTIONS_GROUP_MISC
OPTIONS_GROUP_NEEDS
OPTIONS_GROUP_SYSTEM
OPTIONS_MULTI
OPTIONS_MULTI_SOFTWARE
+OPTIONS_SINGLE
+OPTIONS_SINGLE_GRAPHICS
+OPTIONS_SUB
<span class="portclippy_comment"># Options descriptions</span>
BUILD_DESC
CLIENT_DESC
CURL_DESC
DATABASE_DESC
DEVTEST_DESC
DOCS_DESC
EXAMPLES_DESC
FREETYPE_DESC
GLVND_DESC
GRAPHICS_DESC
LEGACY_DESC
LEVELDB_DESC
LTO_DESC
MISC_DESC
NCURSES_DESC
NEEDS_DESC
NLS_DESC
PGSQL_DESC
PROFILING_DESC
PROMETHEUS_DESC
REDIS_DESC
SERVER_DESC
SOFTWARE_DESC
SOUND_DESC
SPATIAL_DESC
SYSTEM_DESC
SYSTEM_FONTS_DESC
SYSTEM_GMP_DESC
SYSTEM_JSONCPP_DESC
SYSTEM_LUAJIT_DESC
TOUCH_DESC
UNITTESTS_DESC
<span class="portclippy_comment"># Options helpers</span>
CLIENT_LIB_DEPENDS
CLIENT_USES
CLIENT_USE
CLIENT_CMAKE_ON
CURL_LIB_DEPENDS
CURL_CMAKE_BOOL
DEVTEST_CMAKE_BOOL
DOCS_CMAKE_BOOL
EXAMPLES_CMAKE_BOOL
FREETYPE_LIB_DEPENDS
FREETYPE_CMAKE_BOOL
GLVND_LIB_DEPENDS
GLVND_USE
GLVND_CMAKE_BOOL
GLVND_CMAKE_ON
LEGACY_USE
LEGACY_CMAKE_BOOL
LEGACY_CMAKE_ON
LEVELDB_LIB_DEPENDS
LEVELDB_CMAKE_BOOL
LTO_CMAKE_BOOL
NCURSES_USES
NCURSES_CMAKE_BOOL
NLS_USES
NLS_CMAKE_BOOL
NLS_LDFLAGS
PGSQL_USES
PGSQL_CMAKE_BOOL
PROFILING_CMAKE_ON
PROMETHEUS_CMAKE_BOOL
REDIS_LIB_DEPENDS
REDIS_CMAKE_BOOL
SERVER_CMAKE_BOOL
SOUND_CMAKE_BOOL
SPATIAL_LIB_DEPENDS
SPATIAL_CMAKE_BOOL
SYSTEM_FONTS_RUN_DEPENDS
SYSTEM_GMP_LIB_DEPENDS
SYSTEM_GMP_CMAKE_BOOL
SYSTEM_GMP_CMAKE_ON
SYSTEM_JSONCPP_LIB_DEPENDS
SYSTEM_JSONCPP_CMAKE_BOOL
SYSTEM_JSONCPP_CMAKE_ON
SYSTEM_LUAJIT_USES
TOUCH_CMAKE_BOOL
UNITTESTS_CMAKE_BOOL
<span class="portclippy_wrong">-OPTIONS_SINGLE</span>
<span class="portclippy_wrong">-OPTIONS_SINGLE_GRAPHICS</span>
<span class="portclippy_wrong">-OPTIONS_SUB</span>
<span class="original">/usr/home/tigersharke/Ported_Software/games/minetest-dev #</span>
</pre></div>
<p>I have small personal objection to how the options are ordered, since I like to group them together with all parts for any config option. This way I am more sure not to miss something and for me its easier to read. Above is the portclippy output after I complied with all but three lines of its instruction, the comments are generated by the tool, any comments actually in the Makefile are ignored. I added similar comments as this is my first time doing this and it may help me with other ports I attempt. If I complied 100% with what portclippy wanted changed, it would not provide any output, no feedback needed.</p>
<p>This is a nice tool, it very visually helps get the Makefile organized for official ports, so it will help those new to the process perfect their skills with this part of the job. I am not sure whether I would revert the options order to what I prefer. I could pre-add incompletely filled lines (leave out the assigned values part) of any new option for all of the different sections even if some remain unused (or might not be filled) as a way to avoid missing any.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-11124758398135355382024-03-04T15:42:00.004-06:002024-03-11T15:05:26.707-05:00Could it be an Arch conversion?<p>I have frequently looked to Arch Linux and their AUR (Arch Linux User Repository) for inspiration on how to port various things to FreeBSD. I recently looked a little deeper due to revisiting an attempt to port Defold game engine. One of the things I happened to look at is their version of a makefile, the PKGBUILD file.</p>
<p>An example framework for how a PKGBASE file is constructed that I found after more looking around.</p>
<div><pre>
# This is an example PKGBUILD file. Use this as a start to creating your own,
# and remove these comments. For more information, see 'man PKGBUILD'.
# NOTE: Please fill out the license field for your package! If it is unknown,
# then please put 'unknown'.
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc=""
arch=()
url=""
license=('GPL')
groups=()
depends=()
makedepends=()
checkdepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
changelog=
source=("$pkgname-$pkgver.tar.gz"
"$pkgname-$pkgver.patch")
noextract=()
sha256sums=()
validpgpkeys=()
prepare() {
cd "$pkgname-$pkgver"
patch -p1 -i "$srcdir/$pkgname-$pkgver.patch"
}
build() {
cd "$pkgname-$pkgver"
./configure --prefix=/usr
make
}
check() {
cd "$pkgname-$pkgver"
make -k check
}
package() {
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}
</pre></div>
<p>The one specific PKGBASE file I saw initially which I had believed was for Defold but I am guessing now it is for one of its dependencies instead.</p>
<div><pre>
# Maintainer: Jens Staal <staal1978@gmail.com>
pkgname=sbase-hg
pkgver=20110624
pkgrel=1
pkgdesc="A suckless variant of the *nix core utilities"
arch=('i686' 'x86_64')
license=('MIT')
url="http://hg.suckless.org/sbase/"
makedepends=('mercurial')
build() {
cd $srcdir
# Update the repo, else clone a new one
if [ -d sbase ]; then
cd sbase
hg pull -u
cd $srcdir
else
hg clone http://hg.suckless.org/sbase
fi
rm -rf $srcdir/build # start fresh
cp -ar $srcdir/sbase $srcdir/build
}
package() {
cd $srcdir/build/
make DESTDIR=$pkgdir PREFIX=/opt install
mkdir -p $pkgdir/usr/share/licenses/$pkgname/
install -m644 $srcdir/build/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
}
</pre></div>
<p>So my thought, foreshadowed by the title, is might it be possible to use their efforts to bootstrap FreeBSD ports? And surely if we can do this, the reverse can be true as well. Considering most of our ports arrive via Linux, it is less likely that our ports tree is examined by Arch folks trying to get something to work but it could happen. Both projects can certainly benefit from being able to translate between the two build/pkg systems easily. I or others could complete this translation task but it may take some time. If I manage some level of success I can write about it in another blog post, but I still would like to get Defold game engine ported regardless.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-86676653114513455132024-02-26T15:30:00.001-06:002024-03-11T15:19:26.893-05:00So many things to remember<p>I have been using FreeBSD for quite a long time but even with as often as some tasks occur, I still do not quickly remember where a config file belongs or which one I should edit. I have kept a printout of my blog post about updating kernel and world so that I have a reference to the steps I use from time to time, usually about every 10-30 days. I know that I could look in manpages or try the --help option for any executable but the solution I have chosen to do might be quicker or simpler in some way.</p>
<p>What I did is create a directory ~/Symbolic_links in my root directory, within this directory I have placed things like the following:</p>
<div><pre>
# ls -l
total 8
lrwxr-xr-x 1 root wheel 44 Sep 19 14:29 14amd64-blacklist -> /usr/local/etc/poudriere.d/14amd64-blacklist
lrwxr-xr-x 1 root wheel 44 Sep 19 14:28 14amd64-make.conf -> /usr/local/etc/poudriere.d/14amd64-make.conf
lrwxr-xr-x 1 root wheel 31 Feb 7 2022 app-defaults -> /usr/local/lib/X11/app-defaults
lrwxr-xr-x 1 root wheel 47 Sep 19 14:22 cache_14amd64 -> /usr/local/poudriere/data/cache/14amd64-default
lrwxr-xr-x 1 root wheel 35 Oct 19 2020 p-keg_ports -> /usr/local/poudriere/ports/default/
lrwxr-xr-x 1 root wheel 66 Sep 19 14:20 p-keg-logs_bulk_14amd64_latest-per-pkg -> /usr/local/poudriere/data/logs/bulk/14amd64-default/latest-per-pkg
lrwxr-xr-x 1 root wheel 35 Feb 26 2022 p-keg-logs_bulk_parent -> /usr/local/poudriere/data/logs/bulk
lrwxr-xr-x 1 root wheel 62 Sep 19 13:46 p-keg-ports_packages_all -> /usr/local/poudriere/data/packages/14amd64-default/.latest/All
lrwxr-xr-x 1 root wheel 24 Feb 13 2021 pkg_repo_conf_dir -> /usr/local/etc/pkg/repos
lrwxr-xr-x 1 root wheel 23 Feb 26 13:12 pkg.conf -> /usr/local/etc/pkg.conf
lrwxr-xr-x 1 root wheel 29 Nov 10 2020 poudriere.conf -> /usr/local/etc/poudriere.conf
lrwxr-xr-x 1 root wheel 26 Dec 18 2020 thePoudriereDir -> /usr/local/etc/poudriere.d
lrwxr-xr-x 1 root wheel 30 Jan 24 2022 xorg_configs -> /usr/local/etc/X11/xorg.conf.d
lrwxr-xr-x 1 root wheel 36 Sep 11 16:41 xorg-drivers-installed -> /usr/local/lib/xorg/modules/drivers/
lrwxr-xr-x 1 root wheel 31 Aug 28 17:34 Xterm_and_other_X_defaults_here -> /usr/local/lib/X11/app-defaults
lrwxr-xr-x 1 root wheel 37 Aug 28 17:33 xterm_app_defaults -> /usr/local/lib/X11/app-defaults/XTerm
</pre></div>
<p>Later, when I am wondering what I need to adjust or where that config file is that needs the adjustment, I can first look at these symbolic links and get to editing the file.</p>
<p>Another thing I've done which I am sure needs a bit of a cleanup and probably a revision, probably move the information to a different file, I've also thought about making the random notes one extensive alias to display it. This is my .cshrc-personal file with all sorts of notes on various things I've run across in passing which come in handy or could someday.</p>
<div><pre>
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ROOT USER .cshrc-personal
#______________________________________________
# sony exfat: mount.exfat-fuse /dev/da8s1 /mnt/usbstick
# If sound fails for firefox but works for other things, check if sndio is installed and remove that.
# Firefox from pkg also requires pango compiled with libthai option, pango pkg does not have this.
# mesa-dri should solve libGL error: failed to load driver: radeonsi
# rather oddly poudriere refused to update via the very brief incantation so instead the much more verbose and slower method seems to have worked:
# poudriere jail -m -v stable/14 -a amd64 -j 14amd64 -b -m src=/usr/src
# This may have been after /usr/src was already cleaned. Uncertain if the error from update via
# poudriere -u -j 14amd64
# was caused by a cleaned /usr/src or some other issue, also included a new symbolic link to /etc/src.conf in thepoudrieredir.
# Now there is the src-env.conf, src.conf, and make.conf used in there.
alias rekernconf 'ln -s /root/kernconf/ICHIGO /usr/src/sys/amd64/conf/ICHIGO ; ln -s /root/kernconf/RACK /usr/src/sys/amd64/conf/RACK'
alias kernconf cp /root/kernconf/ICHIGO /usr/src/sys/amd64/conf/ICHIGO
alias remakeconf cp /etc/make.conf ~/Symbolic_Links/thePoudriereDir/13amd64-make.conf
alias sorta sort -d -u
alias portlint 'echo;echo;\portlint'
alias plist 'echo "make makeplist > pkg-plist"'
alias fixnet repairnet
alias fixtime ntpdate -b 0.freebsd.pool.ntp.org
alias ezjail ezjail-admin
alias cmake-opts "cmake -L | awk '{if(f)print} /-- Cache values/{f=1}'"
alias autotools-opts './autogen.sh && ./configure --help=recursive'
alias myworldip lynx -dump checkip.dyndns.org
alias nice /usr/bin/nice
alias redoGUI make-de-re-install-each GUI-fix-list
alias redogui make-de-re-install-each GUI-fix-list
alias eighty 'echo "1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^"'
alias seventy 'echo "123456789^123456789^123456789^123456789^123456789^123456789^123456789^"'
alias zfs-df 'zfs list -o space'
alias pkeg-distclean 'poudriere distclean -a'
alias rust-crates 'echo "From the port directory: make cargo-crates > Makefile.crates"'
alias port_deps_help 'echo "dependencies for port: `make build-depends-list && make run-depends-list`"; echo "dependencies still needed to install for a port: `make missing`"'
unalias h
unalias j
unalias la
unalias lf
unalias ll
# A righteous umask
umask 22
set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/scripts $HOME/bin)
setenv EDITOR vi
#setenv PAGER less
setenv PAGER more
setenv BLOCKSIZE K
if ($?prompt) then
# An interactive shell -- set some stuff up
set prompt = "%N@%m:%~ %# "
set promptchars = "%#"
set filec
set history = 1000
set savehist = (1000 merge)
set autolist = ambiguous
# Use history to aid expansion
set autoexpand
set autorehash
set mail = (/var/mail/$USER)
if ( $?tcsh ) then
bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward
endif
endif
alias today date "+%m/%d/%Y"
# -a When it receives a packet make audible beep - internal tower speaker
# -A When it misses a packet make audible beep - internal tower speaker
# And change the interval to every 63 secs
alias ping ping -i 63 -A
alias recert make -C /usr/ports/security/ca_root_nss reinstall clean
alias installmedia 'echo "dd if=FreeBSD-10.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync status=progress"'
setenv autologout 30
setenv LSCOLORS Exfxcxdxbxegedabagacad
setenv CLICOLOR true
setenv LANGUAGE en_US.UTF-8
setenv LANG en_US.UTF-8
setenv LC_ALL en_US.UTF-8
setenv LC_CTYPE POSIX
setenv QT_QPA_PLATFORM xcb
# default is blank, qt5ct utility must have
# setenv QT_QPA_PLATFORMTHEME qt5ct
setenv QT_QPA_PLATFORMTHEME qt5ct
#setenv QT_QPA_PLATFORMTHEME default
# Additions to fix qt5 scale issue in FVWM
# Boolean 0/1
setenv QT_AUTO_SCREEN_SCALE_FACTOR 1
# Numeric
#setenv QT_SCREEN_SCALE_FACTORS .35
# With radeon driver this seems right
#setenv QT_SCREEN_SCALE_FACTORS 1.1
# PCDM dpi is screwy & wrong! Use 96dpi only
#best below
#setenv QT_SCREEN_SCALE_FACTORS .5
#setenv QT_SCREEN_SCALE_FACTORS .495
# dependencies for port: `make build-depends-list && make run-depends-list`
#
# dependencies still needed to install for a port: `make missing`
# pkg prime-origins | sort -d -u | more
#
# pkg query -x '%o %n %v %R' 'mesa-|drm.*kmod|gpu-firmware*' | sort
# fc-list :scalable=true:spacing=mono: family > xterm_fonts_choices
# After an edit to the file, combine it with what is in use already:
# xrdb -merge ~/.Xresources
#
# Use the file and override whatever is already used:
# xrdb ~/.Xresources
#
# man build:
# MAKEOBJDIRPREFIX Defines the prefix for directory
# KERNCONFDIR Overrides the directory in which KERNCONF and any files included by KERNCONF should be found.
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# $FreeBSD: stable/12/bin/csh/dot.cshrc 338374 2018-08-29 16:59:19Z brd $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#
# make -V LIB_DEPENDS
#
# Whois for IP, including AS number:
# whois -h whois.cymru.com " -v 165.231.253.20"
#
# If needing to install something and everything balks, use this on make install line
#FORCE_PKG_REGISTER
#
# What is your graphics hardware?
# pciconf -lv | grep -B4 -A1 VGA
#
# If the system is running with a custom kernel, use nextboot(8) to set the
# kernel for the next boot to the updated /boot/GENERIC:
#
# nextboot -k GENERIC
#
# The machine should now be restarted with the updated kernel:
#
# shutdown -r now
#
## possibly helpful pkg output for script
#pkg query %n:%v:%o
#
## this might be causing a window manager to act as "default"
#/usr/local/etc/X11/xsm/system.xsm
#
# xorg individual config files are in /usr/local/etc/X11/xorg.conf.d/
#
# /var/log/dmesg.boot contains the boot messages. /var/log/messages contains the current errors.
#
###
# AMD (Phenom & Athlon for certain) cannot have this sysctl set non-zero:
# vm.pmap.pti=0
# If set, boot to loader prompt, set vm.pmap.pti=0 then boot.
###
#
# cert for ssl stuff in browser.
# security/ca_root_nss
#
# Someone forgot to configure the certificate chain in the webserver.
# review the webserver config and make sure that the certificate chain configuration is valid?
# In particular, one should be able to test this with
# openssl s_client -connect forums.freenas.org:443
# and not get the "unable to verify the first certificate" error.
#
# ps auxdww piped to less can help quite a bit in that regard
# it gives you a snapshot of the full process table at any given point in time
#
# Where is the pkg repo config files stored?
# /etc/pkg/FreeBSD.conf
# /usr/local/etc/pkg/repos/00_synth.conf
#
# # pkg origin pkg
# ports-mgmt/pkg
#
# make build-depends-list should show you the dependencies
# make all-depends-list will recurse through all dependencies
#
# What kernel compile options built
# sysctl kern.conftxt
#
# Show what device an irq is bound to
# vmstat -i
#
# dd if=FreeBSD-10.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync
###
#fat32 thumbdrive usbstick
#If you need to create a FAT32 formatted USB thumb drive, find out its devicename
#running dmesg(8) after inserting it. Then create an MBR schema, a single slice and
#format it:
# gpart create -s MBR ${devicename}
# gpart add -t fat32 ${devicename}
# newfs_msdos -F 32 -L thumbdrive ${devicename}s1
###
# phone sd card
#gpart show
#=> 63 249737153 da8 MBR (119G)
# 63 249737153 1 fat32 (119G)
# mount -t msdos -o ro /dev/da8s1 /mnt
# umount /dev/da8s1
# Troubles with efreet of enlightenment were solved by removing a file "0"
# ~/.ecore/efreetd/0
#
# For lots of buildworld and related info, targets, knobs
# man 7 build
#
# FYI qt5ct settings for added style is here /usr/local/share/qt5ct/qss
# /usr/local/etc/slim.conf edit to modify how it functions or theme
#
# # pkg remove -f pkg
# 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:
# pkg-1.10.5_5
#
# Number of packages to be removed: 1
#
# The operation will free 13 MiB.
#
# Proceed with deinstalling packages? [y/N]: y
# [1/1] Deinstalling pkg-1.10.5_5...
# You may need to manually remove /usr/local/etc/pkg.conf if it is no longer needed.
# [1/1] Deleting files for pkg-1.10.5_5: 100%
#
#
# build world or kernel, settings here: src-env.conf
#
#alias svn svnlite
#alias fixnet /etc/rc.d/netif restart lagg0
#
#alias pkg pkg -N
#
### adjust this file for kernel/world build
# /etc/src-env.conf
#
### Initial /usr/src checkout:
# svn co https://svn0.us-east.freebsd.org/base/release/12.0.0 /usr/src
#
### If branch leaps such as Release to Stable, add 'ignore' switch
# svn --ignore-ancestry switch ^/stable/12 /usr/src
#
### switch source branches easily! (was on stable-11)
# svn switch ^/stable/12 /usr/src
#
### when it times out without finishing add
# svn cleanup ;
#
#Audio capture desktop and firefox
# need virtual_oss from ports then:
# virtual_oss -Q 0 -C 2 -c 2 -r 48000 -b 16 -s 1024 -P /dev/dsp6 -R /dev/null -w vdsp.wav -l dsp
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# `procstat -k PID` shows the stack of all kernel threads associated with that process.
# That, with a tyro's grasp of kernels, makes it possible to work out where hangs etc.
# are coming from. Resource locks abound down there, and sometimes they break.
#
#`git clean -xdf` (removes all files not under version control)
#
# When pkg is seemingly stuck try to find out which command it is...
# ps auxwww | grep pkg
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# From /usr/local/share/doc/ccache/ccache-howto-freebsd.txt
# For csh/tcsh Add the following to /etc/csh.cshrc:
#
# setenv PATH /usr/local/libexec/ccache:$PATH
# setenv CCACHE_PATH /usr/bin:/usr/local/bin
#
# Ccache's default cache size is 1GB and this is larger than the default size of
# the root partition (/) on FreeBSD. To over come this you may specify a new
# cache location on a different partition with the following examples.
# For csh/tcsh Add the following to /etc/csh.cshrc:
# setenv CCACHE_DIR "/usr/.ccache"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# from https://forums.freebsd.org/threads/howto-freebsd-with-ccache.174/
# set ccache variables
#setenv PATH /usr/local/libexec/ccache:$PATH
#setenv CCACHE_PATH /usr/bin:/usr/local/bin
#setenv CCACHE_DIR /var/cache/ccache
#setenv CCACHE_LOGFILE /var/log/ccache.log
#
# set ccache temp size to 512MB (default 1GB)
#if ( -x /usr/local/bin/ccache ) then
# /usr/local/bin/ccache -M 512M > /dev/null
#endif
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Tigersharke .cshrc
# $FreeBSD: stable/11/share/skel/dot.cshrc 278616 2015-02-12 05:35:00Z cperciva $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#
# Spiffy progress for dd, add to commandline: status=progress
#
#########
# record 2 hours of Zenith -- must press record button in player that appears!
# vlc -vvv http://148.163.81.10:8006/stream --stop-time 7200 vlc://quit
#########
#
#########
# record without interaction, auto-quits as well, just need to use `at` to schedule it.
# cvlc -vvv http://stream.dbmedia.se/gk70tal96 --prefetch-buffer-size=0 --sout file/mp4:testfile.mp4 --stop-time 120 vlc://quit
#########
#
# Replace audio without recompressing. Use audacity to modify the audio first.
# ffmpeg.exe -i input_video.mp4 -i replacement_audio.m4a -vcodec copy -acodec copy -map 0:0 -map 1:0 output.mp4
#
# Fix aspect ratio: ffmpeg -i [INPUT] -aspect 720:540 -c copy [OUTPUT]
#
# location of desktop files: /usr/local/share/applications
#
#alias openoffice exec [ ! -e `ls -t /usr/local/bin | grep -m 1 openoffice`]||echo "Not installed"
#alias openoffice exec `ls -t /usr/local | grep -m 1 openoffice`
#
#alias today date "+%m/%d/%Y"
#
# When it receives a packet make audible beep - internal tower speaker
# And change the interval to every 10 secs
#alias ping ping -i 10 -a
#alias recert make -C /usr/ports/security/ca_root_nss reinstall clean
#
# read(2) of directories may not be desirable by default, as this will provoke
# EISDIR errors from each directory encountered.
# alias grep grep -d skip
#
#alias neovim nvim
#alias neovim-qt nvim-qt
#alias amphetadesk AmphetaDesk
#alias freedroidrpg freedroidRPG
#alias xstart xinit ~/.xinitrc -- -dpi 75 -nolisten tcp
#
# These are normally set through /etc/login.conf. You may override them here
# if wanted.
# set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)
# setenv BLOCKSIZE K
# A righteous umask
# umask 22
#
# when pkg is seemingly stuck try to find out which command it is...
# ps auxwww | grep pkg
#
# find all damned ports options!
# find * -maxdepth 2 -name Makefile -exec grep -Hn OPTIONS_DEFINE {} \; >> /root/options-list.txt
#
# Set default sound device in vlc: use any of /dev/dsp3.vp0 or similar,
# do `ls /dev | grep dsp` while vlc is running to see which audio devices exist, they only exist while in use.
# my fiberoptic is any of the dsp3, either dsp4.vp0 or dsp3.vp1
#
# # pkg set -o multimedia/vlc3:multimedia/vlc
#Change origin from multimedia/vlc3 to multimedia/vlc for vlc3-3.0.5,4? [y/N]: y
#
# Over quota? below will give you a sorted list of your directory sizes.
# du -sh * | sort -h
#
# I find brace expansion useful for renaming files.
# This cmd expands to "mv Picture.jpg Picture-of-my-cat.jpg"
# mv Picture{,-of-my-cat}.jpg
#
# /usr/ports/www/linux-flashplayer
# /usr/ports/www/nspluginwrapper/pkg-message
#
# When was the machine rebooted, shutdown, crashed?
# use the command: last
#
#setenv autologout 30
#
#setenv LSCOLORS Exfxcxdxbxegedabagacad
#setenv CLICOLOR true
#
#setenv LANGUAGE en_US.UTF-8
#setenv LANG en_US.UTF-8
#setenv LC_ALL en_US.UTF-8
#setenv LC_CTYPE POSIX
#
#setenv QT_QPA_PLATFORM xcb
################################################
## default is blank, qt5ct utility must have ##
## setenv QT_QPA_PLATFORMTHEME qt5ct ##
setenv QT_QPA_PLATFORMTHEME qt5ct
#setenv QT_QPA_PLATFORMTHEME default
################################################
## Additions to fix qt5 scale issue in FVWM ##
## Boolean 0/1 ##
#setenv QT_AUTO_SCREEN_SCALE_FACTOR 1
## Numeric ##
#setenv QT_SCREEN_SCALE_FACTORS .35
# With radeon driver this seems right
#setenv QT_SCREEN_SCALE_FACTORS 1.1
# PCDM dpi is screwy & wrong! Use 96dpi only
#best below
#setenv QT_SCREEN_SCALE_FACTORS .5
#setenv QT_SCREEN_SCALE_FACTORS .495
################################################
#export LANGUAGE=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export QT_QPA_PLATFORMTHEME=qt5ct
#setenv LANGUAGE en_US.UTF-8
#setenv LANG en_US.UTF-8
#setenv LC_ALL en_US.UTF-8
#setenv QT_QPA_PLATFORMTHEME qt5ct
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# just in case
# from https://forums.freebsd.org/threads/howto-freebsd-with-ccache.174/
# set ccache variables
#setenv PATH /usr/local/libexec/ccache:$PATH
#setenv CCACHE_PATH /usr/bin:/usr/local/bin
#setenv CCACHE_DIR /usr/.ccache
#setenv CCACHE_LOGFILE /var/log/ccache.log
#
## set ccache temp size to 512MB (default 1GB)
#if ( -x /usr/local/bin/ccache ) then
# /usr/local/bin/ccache -M 512M > /dev/null
#endif
#
#
# If you experience issues when running OpenGL applications it is possible
# to force the use of DRI2 by setting the LIBGL_DRI3_DISABLE environment
# variable to 1 before starting any OpenGL application. The easiest way to
# do this is by adding it to either your shell startup files or .xinitrc.
#setenv LIBGL_DRI3_DISABLE 1
#
#set path = ($path /media/sbin /media/bin /media/usr/sbin /media/usr/bin /media/usr/local/sbin /media/usr/local/bin /media$HOME/bin)
#
# Determine what requires llvm (3 lines output after)
# pkg info -rx llvm
#llvm10-10.0.1_5:
# mesa-dri-20.2.3_1
#llvm11-11.0.1:
#
# /usr/ports/Mk for porting, and /usr/share/mk for software building.
#
#find what cmake options are available (from work/portbuild directory) from https://stackoverflow.com/questions/16851084/how-to-list-all-cmake-build-options-and-their-default-values
# cmake -LA | awk '{if(f)print} /-- Cache values/{f=1}'
</pre></div>
<p>I still have general organizing to do, but for now I have the whole mess loaded, at the bottom of my .cshrc file I added</p>
<div><pre>
source /root/.cshrc-local
source /root/.cshrc-personal
</pre></div>
<p>Lastly, although you may have seen them in passing via that .cshrc-personal file root has, I will show you the various aliases I have for my root and user accounts. This is one more way to keep track of things and make the information more quickly to hand.</p>
<div><pre>
# alias
amphetadesk AmphetaDesk
autotools-opts ./autogen.sh && ./configure --help=recursive
cmake-opts cmake -L | awk '{if(f)print} /-- Cache values/{f=1}'
eighty echo "1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^"
ezjail ezjail-admin
fixnet repairnet
fixtime (ntpdate -b 0.freebsd.pool.ntp.org)
installmedia echo "dd if=FreeBSD-10.2-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync status=progress"
kernconf (cp /root/kernconf/ICHIGO /usr/src/sys/amd64/conf/ICHIGO)
less (less --mouse)
myworldip (lynx -dump checkip.dyndns.org)
neovim nvim
neovim-qt nvim-qt
nice /usr/bin/nice
ping (ping -i 63 -A)
pkeg-distclean poudriere distclean -a
plist echo "make makeplist > pkg-plist"
port_deps_help echo "dependencies for port: `make build-depends-list && make run-depends-list`"; echo "dependencies still needed to install for a port: `make missing`"
portlint echo;echo;\portlint
recert (make -C /usr/ports/security/ca_root_nss reinstall clean)
redoGUI (make-de-re-install-each GUI-fix-list)
redogui (make-de-re-install-each GUI-fix-list)
rekernconf ln -s /root/kernconf/ICHIGO /usr/src/sys/amd64/conf/ICHIGO ; ln -s /root/kernconf/RACK /usr/src/sys/amd64/conf/RACK
remakeconf (cp /etc/make.conf /root/Symbolic_Links/thePoudriereDir/13amd64-make.conf)
rust-crates echo "From the port directory: make cargo-crates > Makefile.crates"
seventy echo "123456789^123456789^123456789^123456789^123456789^123456789^123456789^"
sorta (sort -d -u)
today (date +%m/%d/%Y)
xstart (xinit /root/.xinitrc -- -dpi 75 -nolisten tcp)
zfs-df zfs list -o space
# exit
% alias
amphetadesk AmphetaDesk
eighty (echo 1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^1234567^)
freedroidrpg freedroidRPG
ircII irc
ircii irc
less (less --mouse)
ls (ls -a)
neovim nvim
neovim-qt nvim-qt
today (date +%m/%d/%Y)
veloren veloren-voxygen
virtoss virtual_oss -Q 0 -C 2 -c 2 -r 48000 -b 16 -s 1024 -P /dev/dsp6 -R /dev/null -w vdsp.wav -l dsp
xstart (xinit ~/.xinitrc -- -dpi 75 -nolisten tcp
</pre></div>
<p>While there may be a ton of things to remember on a FreeBSD system, there are numerous ways to make it easier to find the information and to do it in such a way as to have fewer extra places to look through to find it. Symbolic links can become stale, but are easily replaced and the link itself can be more descriptive than the object of its link. Aliases can cause custom output in the form of echoed text, or be named to assist with recall of its purpose, or sometimes a common name and its executable are different.</p>
<p>What ever method you use, along with the usual methods of searching through a manpage or forum post, or asking on IRC or any other social media platform (or even feedback to your favorite podcast like BSDNow or 2.5admins), you can be sure to succeed with any task that has you stuck. The above is how I have made the struggle lighter for myself.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-89468252757892877582024-02-07T14:25:00.000-06:002024-03-11T15:07:39.786-05:00Zpool-upgrade loader.efi fail<p>I recently bought a Sony Walkman android device, which I hoped would permit me to use an app to control my Deco S4 wifi devices. The wifi hardware was added in hopes of improving local wifi from a single Xfinity device and in a more secure way by connecting via my OPNsense box. Once I solved the wifi device app issue, I still had the Sony Walkman for audio.</p>
<p>Perhaps foolishly, I wanted to use larger better quality flac files, and knowing I still had quite a large number of CDs to run through ripperX, I tried to change my vdev to better compression. What seemed to me as being better compression algorithms were unavailable to me because my zfs needed an update. I had done as many as two updates in the past, one which switched me to 'feature flags' and each time was warned about compatibility but never had an issue.</p>
<p>Without any further investigation, assuming that it would be just as easy a process as in the past, so I upgraded zfs and then changed the compression of the vdev for my music files. Everything ran fine, no issues. Later, I was playing minetest and after some time in the midst of what I was attempting on the minetest server, my display and mouse, and pc froze up. There has been an issue with something somewhere which has caused me a panic and reboot, so all I had once more was the inconvenient interruption. This time it didn't reboot itself, just seemed to remain frozen, so I rebooted.</p>
<p>This is when I discovered that something was wrong. It started the boot but before it got very far I was greeted with errors including "ZFS: unsupported feature: com.klarasystems:vdev_zaps_v2" and mention that it couldn't find any bootable drives. Luckily there was a specific term which I could search online for more information: <b>klarasystems:vdev_zaps_v2</b>.</p>
<p>One search result was FreeBSD forum post <a href="https://forums.freebsd.org/threads/14-0-release-zfs-features-gotcha.91085/">14-0-release-zfs-features-gotcha.91085</a> but I also looked at the 14.0 release notes, and <span class="path">/usr/src/UPDATING</span>:</p>
<div><pre>
<b>20160708</b>:
The stable/11 branch has been created from head@r302406.
After branch N is created, entries older than the N-2 branch point are removed
from this file. After stable/14 is branched and current becomes FreeBSD 15,
entries older than stable/12 branch point will be removed from current's
UPDATING file.
COMMON ITEMS:
General Notes
-------------
Sometimes, obscure build problems are the result of environment
poisoning. This can happen because the make utility reads its
environment when searching for values for global variables. To run
your build attempts in an "environmental clean room", prefix all make
commands with 'env -i '. See the env(1) manual page for more details.
Occasionally a build failure will occur with "make -j" due to a race
condition. If this happens try building again without -j, and please
report a bug if it happens consistently.
When upgrading from one major version to another it is generally best to
upgrade to the latest code in the currently installed branch first, then
do an upgrade to the new branch. This is the best-tested upgrade path,
and has the highest probability of being successful. Please try this
approach if you encounter problems with a major version upgrade. Since
the stable 4.x branch point, one has generally been able to upgrade from
anywhere in the most recent stable branch to head / current (or even the
last couple of stable branches). See the top of this file when there's
an exception.
The update process will emit an error on an attempt to perform a build
or install from a FreeBSD version below the earliest supported version.
When updating from an older version the update should be performed one
major release at a time, including running `make delete-old` at each
step.
When upgrading a live system, having a root shell around before
installing anything can help undo problems. Not having a root shell
around can lead to problems if pam has changed too much from your
starting point to allow continued authentication after the upgrade.
This file should be read as a log of events. When a later event changes
information of a prior event, the prior event should not be deleted.
Instead, a pointer to the entry with the new information should be
placed in the old entry. Readers of this file should also sanity check
older entries before relying on them blindly. Authors of new entries
should write them with this in mind.
ZFS notes
---------
When upgrading the boot ZFS pool to a new version (via zpool upgrade),
always follow these three steps:
1) recompile and reinstall the ZFS boot loader and boot block
(this is part of "make buildworld" and "make installworld")
2) update the ZFS boot block on your boot drive (only required when
doing a zpool upgrade):
When booting on x86 via BIOS, use the following to update the ZFS boot
block on the freebsd-boot partition of a GPT partitioned drive ada0:
gpart bootcode -p /boot/gptzfsboot -i $N ada0
The value $N will typically be 1. For EFI booting, see EFI notes.
3) zpool upgrade the root pool. New bootblocks will work with old
pools, but not vice versa, so they need to be updated before any
zpool upgrade.
Non-boot pools do not need these updates.
<span class="highlight">EFI notes</span>
<span class="highlight">---------</span>
<span class="highlight">There are two locations the boot loader can be installed into. The</span>
<span class="highlight">current location (and the default) is \efi\freebsd\loader.efi and using</span>
<span class="highlight">efibootmgr(8) to configure it. The old location, that must be used on</span>
<span class="highlight">deficient systems that don't honor efibootmgr(8) protocols, is the</span>
<span class="highlight">fallback location of \EFI\BOOT\BOOTxxx.EFI. Generally, you will copy</span>
<span class="highlight">/boot/loader.efi to this location, but on systems installed a long time</span>
<span class="highlight">ago the ESP may be too small and /boot/boot1.efi may be needed unless</span>
<span class="highlight">the ESP has been expanded in the meantime.</span>
<span class="highlight">Recent systems will have the ESP mounted on /boot/efi, but older ones</span>
<span class="highlight">may not have it mounted at all, or mounted in a different</span>
<span class="highlight">location. Older arm SD images with MBR used /boot/msdos as the</span>
<span class="highlight">mountpoint. The ESP is a MSDOS filesystem.</span>
<span class="highlight">The EFI boot loader rarely needs to be updated. For ZFS booting,</span>
<span class="highlight">however, you must update loader.efi before you do 'zpool upgrade' the</span>
<span class="highlight">root zpool, otherwise the old loader.efi may reject the upgraded zpool</span>
<span class="highlight">since it does not automatically understand some new features.</span>
<span class="highlight">See loader.efi(8) and uefi(8) for more details.</span>
</pre></div>
<p>and then to the <a href="https://man.freebsd.org/loader.efi">manpage for loader.efi</a>, specifically:</p>
<div><pre>
EXAMPLES
Updating loader.efi on the ESP
The following examples shows how to install a new loader.efi on the
ESP.
First, find the partition of type "efi":
# gpart list | grep -Ew '(Name|efi)'
1. Name: nvd0p1
type: efi
2. Name: nvd0p2
3. Name: nvd0p3
4. Name: nvd0p4
1. Name: nvd0
The name of the ESP on this system is nvd0p1.
Second, let's mount the ESP, copy loader.efi to the special location
reserved for FreeBSD EFI loaders, and unmount once finished:
# mount_msdosfs /dev/nvd0p1 /boot/efi
# cp /boot/loader.efi /boot/efi/efi/freebsd/loader.efi
# umount /boot/efi
SEE ALSO
loader(8), uefi(8)
</pre></div>
<p>Since I had experienced similar issues with my box which meant I had to adjust whatwas on the hard drive, I knew that I would need bootable media so that I could reach the hard drive. This is what became a more significant and time-consuming problem, at least partly due to my own stubborn foolishness. I had a number of micro sd cards and a usb reader. Out of three which had the potential to function as I needed, only one had an old NomadBSD installed upon it. My mistake was that I insisted upon upgrading it from 12.x to 14.0 which ran into storage constraints and then breaking it from its normal startup process and eventually unable to boot at all.</p>
<p>Later I noticed an old Kingston Digital DataTraveler SE9 64GB USB 2.0 which I discovered has FreeNAS installed. I could boot it and get to shell which allowed me to get the img file. It was good enough for some attempts to create a bootable micro sd card but it eventually would fail too quickly during an ftp transfer or dd write, so that I had to find another option. I was pretty sure that I had some cdroms or dvds which have some kind of FreeBSD, so once I found my cache, I decided to use a PC-BSD 8.2rc2 dvd.</p>
<p>This is when I was finally tired of the whole process and possibly more rested or something, so I actually, after a chunk of two days of attempts, finally made progress. I booted the PC-BSD disc and after some tries for the GUI, I realized I only truly needed a shell. From the shell, I was able to mount my target micro sd card which I used to store the downloaded (via <span class="command">ftp -a download.freebsd.org</span>) img file. I could also format an SSD which I bought more than 5 years ago in a group of four for adding zfs cache devices to my box (obviously still not accomplished). I shifted the img file to the SSD so I could dd it to the micro sd card. Once I had the FreeBSD 14.0 installer on the micro sd card, I booted it and began the process of the repair.</p>
<p>My initial plan was to first test the process by an update of the loader.efi on the micro sd card but got stymied. I followed the steps above (in the loader.efi manpage example). I discovered that the appropriate partition was ada2p1, which I mounted to /boot/efi and then found that there was no <span class="path">/boot/efi/efi/freebsd</span> path. What I had was <span class="path">/boot/efi/EFI/BOOT/BOOTxxx.EFI</span> which I left alone. Instead I created the needed freebsd directory in /boot/efi/EFI. Once the path was setup, I could copy the loader.efi into the correct location.</p>
<p>This was my very first ever experience with this sort of repair or upgrade, so I was not sure of success until my reboot. At some point during or shortly after this repair, I decided to properly install FreeBSD 14.0 onto the SSD as a failsafe against future similar problems, I kept the micro sd card as the FreeBSD 14.0 installer. I used the SSD using the presently unavailable cables2go version of <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-JhP2vAo0hp25P8rKWOWJy9g6BYAyMeQVtueg0IcdCQvelooli-s43ihIyZhaSWjMayrIQQca0_X3veRCUjvhH4hOyaawXiY6Mjfjlbn4GRbGaDfYy3HtNgUb-KaS3VVeMbzoVycnaMfcpLAyqVcM9jWCbLohd5qR2Q9qdwyIar1pXeiPQNMBM6fFyiQ/s1600/sata-ide-adapter.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="242" data-original-width="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-JhP2vAo0hp25P8rKWOWJy9g6BYAyMeQVtueg0IcdCQvelooli-s43ihIyZhaSWjMayrIQQca0_X3veRCUjvhH4hOyaawXiY6Mjfjlbn4GRbGaDfYy3HtNgUb-KaS3VVeMbzoVycnaMfcpLAyqVcM9jWCbLohd5qR2Q9qdwyIar1pXeiPQNMBM6fFyiQ/s1600/sata-ide-adapter.png" width="208" height="242"/></a><a href="https://www.amazon.com/Generic-Adapter-Converter-Optical-External/dp/B07JJX357Y">Generic-Adapter-Converter-Optical-External</a>. Aside from all of the above, I was able to connect to my local network with my Sony Walkman to look for answers and help. If I can keep my Walkman able to use for such emergencies, this may be an easier method than keeping an entire network and FreeBSD installed on a box functioning, all I will likely need is wifi and access. I have no plan to ever modify the Walkman away from its functional install.</p>
<p>Definite relief after I was able to properly boot up my box and use it on my last of a series of three days off from work. I hope that you update your loader.efi BEFORE you upgrade zfs so that you can avoid the excitement of doing the repair above.</p>
Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-34235777814560950752023-09-05T22:40:00.003-05:002024-03-11T15:08:59.571-05:0014-stable leads to a winding path<p>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.</p>
<p>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,<a href="https://daemondesktop.blogspot.com/2020/09/kernel-and-world-rebuild.html">Kernel and world rebuild</a>.  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.</p>
<p>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.</p>
<p>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.</p>
<div><pre>
misc/pciids
graphics/libdrm
graphics/linux-c7-libdrm
graphics/libglvnd
graphics/libGLU
graphics/gpu-firmware<strike>-amd</strike>-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
</pre></div>
<p>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.</p>
<p>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.
</p>
<p>This is my /usr/local/etc/pkg/repos/FreeBSD.conf with the former text all commented out with # characters, the working portion below.</p>
<div><pre>
# $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",
}
</pre></div>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<div><pre>
x11/libXxf86dga
x11/libXxf86vm
x11-drivers/xf86-input-libinput
x11/xf86dga
x11/xmodmap
</pre></div>
<p>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 <span class="command">xmodmap -pke > ~/.Xmodmap</span> I told xmodmap to copy the file to my home directory.  <a href="https://vermaden.wordpress.com/2018/06/22/freebsd-desktop-part-9-key-components-keyboard-mouse-shortcuts/" >Vermaden's blog post on FreeBSD desktop (part 9)</a> was also useful to help me remember xev and its function, and some other things.</p>
<div><pre>
keycode 111 = 0xFF52
keycode 116 = 0xFF99
keycode 114 = 0xFF98
keycode 113 = 0xFF96
keycode 119 = BackSpace
</pre></div>
<p>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.</p>
<div><pre>
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
</pre></div>
<p>They always say what does not kill you makes you stronger, well, in the software/computer world it might be more like <em>perseverence along with a little knowledge will always lead to a victory against those inanimate objects</em>.  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.</p>
<p>Writing about our difficulties, successes, and failures, will help others who find the content.  You too could start a FreeBSD blog.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-63670766910226601512023-09-03T23:35:00.002-05:002024-03-11T15:11:20.329-05:00Revised minetest-dev: fonts!<p>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.</p>
<p>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.</p>
</p>
<p>minetest-dev:</p>
<div><pre>
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 <bsd.port.options.mk>
.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 <bsd.port.mk>
</pre></div>
<p>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.</p>
<p>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.</p>
<p>Repo urls:</p>
<ul>
<li><a href="https://github.com/tigersharke/minetest-dev.git">minetest-dev.git</a></li>
<li><a href="https://github.com/tigersharke/irrlicht-minetest.git">irrlicht-minetest.git</a></li>
</ul>
<p>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 <a href="https://docs.freebsd.org/en/books/porters-handbook/book/">porter's handbook</a>, my own blog posts relate my experiences.</p> Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-24345721792684606112023-05-24T22:30:00.007-05:002024-03-11T15:11:52.370-05:00The trouble with alsa<p>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 <span class="path">/usr/ports/games/veloren-weekly</span>. 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.</p>
<p>Instead of alsa-plugins getting installed, it stops with an error from pkg-static:
</p>
<div><pre>
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 #
</pre></div>
<p>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 <span class="code">make makeplist > pkg-plist</span> 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: <span class="code">/you/have/to/check/what/makeplist/gives/you</span></p>
<div><pre class="diff">
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
</pre></div>
</p>
<p>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.
</p>
<p>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-pliat 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.</p>
<p>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.</p>
<h2>Addendum</h2>
<p>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.</p>
<p>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.</p>
<div><pre class="diff">
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
</pre></div>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-69657657916712629612022-10-30T15:48:00.003-05:002024-03-25T15:35:02.154-05:00LibreSSL hermit cousin<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 <span class="command">pkg check -Ba</span> to hopefully correct or alert me of issues.</p>
<p>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.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-21849945524979048562022-09-28T22:55:00.000-05:002022-09-28T22:55:28.864-05:00Into a wall about face<p>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.
</p>
<p>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 <span class="origin">security/libressl</span>. 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, <span class="origin">security/py-cryptography</span> also could not build, and from there <span class="origin">lang/rust</span> 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.
</p>
<p>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 <span class="command">gitup</span>. 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.
</p>
<div><pre>
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",
],
}
}
</pre></div>
<p>
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.
</p><div><pre>
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
}
</pre></div>
<p>My local poudriere repo configuration file I do not need to change at all, although it has a disable section as well.</p>
<div><pre>
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
#}
</pre></div>
<p>With this changed, I can do pkg install gitup, and having revised my script, I can tell gitup to revise my <span class="path">/usr/ports</span> 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.</p>
<p>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 <span class="path">/usr/ports/UPDATING</span> 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.</p>
Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-11917022750858297672022-08-28T15:54:00.002-05:002024-03-22T16:28:52.210-05:00Never far from FreeBSD<p>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.</p>
<p>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.</p>
<p>This brings us to my other new project, which, if you've looked at the <a href="https://gab.com/groups/7182">FreeBSD group on Gab</a>, you'd know is <a href="https://github.com/tigersharke/dbeaver-dev">my attempt to port dbeaver to FreeBSD</a>. 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 <a href=https://wiki.freebsd.org/WantedPorts">wanted ports wiki page</a>.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 <a href="https://github.com/tigersharke/everywheres_nc">everywheres_nc</a> 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.</p>
<p>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.</p>
<p>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.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-66207694933237700192022-03-03T03:31:00.001-06:002024-03-11T15:18:42.200-05:00Repo update routine<p>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.</p>
<p>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, <span>https://github.com/minetest/minetest/commits/master</span></p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQQqVzDNwZTbdN12T3egeMNxASeZUS2r9J9RPCMUO1ikpgytJja_2AFGmCtvtTVOZd3hu8IIrUOLTALrhPLRvCdA-10mVdRezW1ft3-s-mglvaVYlhdSc0CLVzOqETNoC6IKMnW2AuOiqlmsPOvFfn58g9Z0X_KoXvgmeU7NKHUmkB0Gnv_oK_7hO4" style="display: block; padding: 1em 0px; text-align: center;"><img alt="View of github.com/minetest/minetest/commits/master" border="0" data-original-height="595" data-original-width="1297" height="294" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQQqVzDNwZTbdN12T3egeMNxASeZUS2r9J9RPCMUO1ikpgytJja_2AFGmCtvtTVOZd3hu8IIrUOLTALrhPLRvCdA-10mVdRezW1ft3-s-mglvaVYlhdSc0CLVzOqETNoC6IKMnW2AuOiqlmsPOvFfn58g9Z0X_KoXvgmeU7NKHUmkB0Gnv_oK_7hO4=w640-h294" width="640" /></a></div>
As you can see, the <quote>Commits on Mar 2, 2022</quote> shown above is the most recent commit right at this moment, and below, the line in the Makefile, indicates Feb 26, 2022.
<div><pre>root@ichigo:/home/tigersharke/Ported_Software/games/minetest-dev # head Makefile
PORTNAME= minetest
<span class="highlight">DISTVERSION= g20220226</span>
CATEGORIES= games
PKGNAMESUFFIX= -dev
DISTNAME= ${PORTNAME}-${GH_TAGNAME}
DIST_SUBDIR= ${PORTNAME}${PKGNAMESUFFIX}
MAINTAINER= nope@nothere
COMMENT= Near-infinite-world block sandbox game
</pre></div>
<p>
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, <span class="command">make distclean ; rm distinfo</span> 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.</p>
<div><pre>
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
</pre></div>
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.
<div><pre>
PORTNAME= minetest
<span class="highlight">DISTVERSION= g20220226</span>
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
<span class="highlight">GH_TAGNAME= 04bd253390cc6c67a555e4837e7e48d524fdf014</span>
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}
</pre></div>
The above becomes revised below, changes highlighted:
<div><pre>
PORTNAME= minetest
DISTVERSION= <span class="highlight">g20220302</span>
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= <span class="highlight">f2d1295fe646105f1b98b0c204f47f781336e211</span>
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}
</pre></div>
<p>You may wonder how I obtained the GH_TAGNAME information. On the commits page, there is a link that I copy (image below).</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh-unB-hamZH2wnOs4JsT-j09GOUYbkEZAnj12rWeaBpi5E96JLgDz1CtPB0pCYeVcKymG7lhVdDIUooVXQwQs3NG9fx52VBQJzhOsH1MhscDIAOK9hn-9FMQ7HEgJv3jkWul3VwC2pNnnOtYuHibtOB2B-8jqM21mxTxDcIxYnmS2nZL7_11UwBdnY=s1297" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="145" data-original-width="1297" src="https://blogger.googleusercontent.com/img/a/AVvXsEh-unB-hamZH2wnOs4JsT-j09GOUYbkEZAnj12rWeaBpi5E96JLgDz1CtPB0pCYeVcKymG7lhVdDIUooVXQwQs3NG9fx52VBQJzhOsH1MhscDIAOK9hn-9FMQ7HEgJv3jkWul3VwC2pNnnOtYuHibtOB2B-8jqM21mxTxDcIxYnmS2nZL7_11UwBdnY=s600"/></a></div>
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. <span>https://github.com/minetest/minetest/commit/f2d1295fe646105f1b98b0c204f47f781336e211</span> becomes what is used in the Makefile edit previously shown above.
<p>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 <span class="command">make makesum</span> and again warnings I can ignore but this time they are better explained, and besides I am not an official ports committer.</p>
<div><pre>
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 #
</pre></div>
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.
<div><pre>
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
</pre></div>
<p>And the end portion is below, plenty more was prior to the gear_icon.png line but this last part gives an idea.</p>
<div><pre>
-- 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 #
</pre></div>
<p>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: <span class="command">make makeplist > pkg-plist</span> 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.</p>
<div><pre>
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 #
</pre></div>
<p>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 <span class="command">make clean</span> and update my repo.</p>
<p>I can check the status of my local repo here and then add the changed files after.</p>
<div><pre>
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 <file>..." to update what will be committed)
(use "git restore <file>..." 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 #
</pre></div>
<p>Two more steps before this is finished, I need to make a commit message and then push the updates. The command <span class="command">git commit</span> 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 <span class="command">git push</span> to send the update to github.</p>
<div><pre>
# 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
#
<span class="highlight">Update to Mar 2nd upstream commit.</span>
~
</pre></div>
<div><pre>
/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 #
</pre></div>
<p>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 <a href="https://docs.freebsd.org/en/books/porters-handbook/">FreeBSD Porter's Handbook</a>, a guide for porters, maintainers, and tinkerers like me.</p>
Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-91079752602021177732022-02-26T16:18:00.001-06:002024-03-11T15:17:40.916-05:00Port breaks kernel breaks port<p>So many of us chug happpily along without completely realizing or recognizing how some of the present FreeBSD build mechanisms have become a bit more complex. Those who never have any need of graphics and remain in a text mode commandline interface for the duration of their use of FreeBSD would not know that there is indeed at least one situation, now, which ties a port and the kernel together. When everything is working perfectly, this would likely never come up, but a relatively small problem inflated itself to cause my kernel build to fail.</p>
<p>During this troubleshooting quest, first I tried the obvious things, re-rebuild world just to be sure it was ok, then rebuild a GENERIC kernel instead of my custom kernconf and that after having re-enabled some possibly related things in that kernconf to no avail. After beating my figurative head against the wall for quite a while, I went to twitter to see if @FreeBSDHelp had any ideas.</p>
<p>The details and comments on that discussion thread didn't solve my issue as I could not comprehend how our kernel build was now in any way tied to the build of a port, though the comment that was made may not have explicitly indicated this. So my next thought was, if I could get a different, earlier version of the <span class="path">/usr/src</span> from git in some way, then rebuild kernel from before the error seemed to appear in <span class="path">/usr/src</span>. I didn't know this was not the path to take to solve this, but I still wasted far too much time trying to go backward with git to an earlier commit. I am definitely not a particularly big fan of git, and this exertion didn't help me love it any more.</p>
<p>The reason, besides that it had been in excess of 10 days since the last time I rebuilt my kernel and world, was to get virtualbox working which needed bits from the kernel build which I didn't have, and those need to be the same version as the running OS. This meant my long journey to rebuild my kernel and world (multiple times each) so that I could use Virtualbox to try the game Veloren which due to whatever is different than expected (FVWM3 and Radeon graphics probably, or similar) does build and install but does NOT run. I am sure that if I could startup Virtualbox, put tinycore Linux in there, and install Veloren for Linux, I would probably succeed where I was prevented otherwise. I could not install another OS in Virtualbox because I could not boot the iso, and this due to the virtualbox kernel object not having been loaded. I couldn't load the needed kernel object since it needed to be built, and now you know why I got stuck down this rabbit hole.</p>
<p>It has been some time since setting that whole "Play Veloren in Virtualbox via tinycore Linux" idea on a back burner or in a box on a shelf somewhere. One of my incomplete projects is to get my port attempt of Reshade rebuilt, which I was attempting and it ran into some conflicts with python items. The various python things it needed were installed as version 310 while I already had version 39 of those same ports. The only way forward was to remove each of the python 3.9 ports to let the reshade build then install what it needed as version 3.10. Among all of the things that were removed as a consequence of this, was vlc and firefox, both I use daily. So I gave poudriere a gross list of everything I had installed on my system, let it build, and then discovered a number of things that failed. The <span class="origin">graphics/drm-fbsd13-kmod</span> port was among the fairly long list of things that didn't get built, and it was in the smallish group of "lynchpin" ports, meaning that others failed (were skipped) because it failed.</p>
<p>And so, I thought thats not a problem, I'll go investigate what happened with <span class="origin">graphics/drm-fbsd13-kmod</span> to make it fail. I remembered that <span class="command">poudriere</span> keeps logs of all (or most everything) it does, and I just had to find it. Since I often end up trying to remember where any certain important thing is and its path, I have been keeping a directory of symbolic links with sometimes more descriptive names. The appropriate one was,</p>
<div><pre>
root@ichigo:~ # ls -l Symbolic_Links/p-keg-logs_bulk_13amd64_latest-per-pkg
lrwxr-xr-x 1 root wheel 66 May 5 2021 Symbolic_Links/p-keg-logs_bulk_13amd64_latest-per-pkg -> /usr/local/poudriere/data/logs/bulk/13amd64-default/latest-per-pkg
</pre></div>
<p>and from there I could do</p>
<div><pre>
root@ichigo:~ # tail -n 15 Symbolic_Links/p-keg-logs_bulk_13amd64_latest-per-pkg/drm-fbsd13-kmod-5.4.144.g20220223.log
===> Checking for items in STAGEDIR missing from pkg-plist
Error: Orphaned: %%KMODSRC%%/linuxkpi/dummy/include/linux/random.h
Error: Orphaned: %%KMODSRC%%/linuxkpi/dummy/include/linux/suspend.h
===> Checking for items in pkg-plist which are not in STAGEDIR
===> Error: Plist issues found.
*** Error code 1
Stop.
make: stopped in /usr/ports/graphics/drm-fbsd13-kmod
=>> Error: check-plist failures detected
=>> Cleaning up wrkdir
===> Cleaning for drm-fbsd13-kmod-5.4.144.g20220223
build of graphics/drm-fbsd13-kmod | drm-fbsd13-kmod-5.4.144.g20220223 ended at Sat Feb 26 00:30:21 CST 2022
build time: 00:04:43
!!! build failure encountered !!!
</pre></div>
<p>Firstly, the build failure is due to my choice to be a bit more stringent on builds, to test for various things, so it is possible that this might not appear to most users, although it truly should be visible to all the port maintainers and various FreeBSD developers. It tells me, as did the small highlighted concise reason in the failed build list output from after I ran poudriere, that it is an issue with the pkg-plist. This I correctly believed was a simple issue, and easy to fix since this process is something I have repeated many times with my own repos for FreeBSD Port Tree Leaf items such as for <a href="https://github.com/tigersharke/minetest-dev">Minetest-dev</a> which I wrote about in <a href="https://daemondesktop.blogspot.com/2021/04/getting-minetest-dev-built.html">another blog post</a>.</p>
<p>What I needed to do was go to <span class="path">/usr/ports/graphics/drm-fbsd13-kmod</span> and rename the pkg-plist to pkg-plist-old, and then do a fresh build of it. Once the build completes, I create a fresh pkg-plist by <span class="code">make makeplist > pkg-plist</span> in order to do a comparison between this new fresh list and the old original list. This is accomplished by diff -y pkg-plist pkg-plist-old | more to step through the output, looking for something that is present or absent in the newly generated pkg-plist as compared to the old one. Since a pkg-plist that is in the ports tree may have %%text%% type tags which are often not generated by the make makeplist script, I usually modify the pkg-plist-old to match the one freshly generated. Once the edits are made, I rename the pkg-plist-old to pkg-plist and then rebuild once more to prove no errors related to the file remain.</p>
<p>Now that <span class="origin">graphics/drm-fbsd13-kmod</span> successfully builds and installs, I thought from the back of my mind, that I would try to update kernel and world, due to that vague mention of these two things being related. World builds as expected, so I go on to the kernel, and then it fails. It complains that kconfig.mk was missing. I remember that that was one of the things that I had removed from the <span class="origin">graphics/drm-fbsd13-kmod</span> pkg-plist for a reason I am already uncertain about now-- and this is being written within hours of having done it. I go back to that port tree directory and either the pkg-plist-old was still present or I went through the steps to generate fresh and make the needed edits to fix it. Whatever actually happened seems to have fallen out of my mind but the result was "Hey! graphics/drm-fbsd13-kmod needs to be built in order for the kernel to build, gee that is weird."</p>
<p>I have been writing about all of this within a relatively short period after succeeding to build kernel and world when it had been broken some week(s) ago. My new kernel has not yet been installed and I have to build the virtualbox thing(s) that are dependent upon the source. It is nice now to have this mess cleared up and better understood. I'll be adding this nit to the lists of build issues for kernel or world, and add emphasis on the relationship between this port and the kernel which likely many of us had not known. The kernel failure meant the virtualbox port for a kernel object couldn't be built, but the kmod graphics port is what broke the kernel.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-81728010152866317362021-06-23T00:10:00.001-05:002024-03-11T15:16:22.815-05:00To history no more mergemaster<p>Just what I love to hear, and you should already guess that is sarcasm, that yet another tool is being retired. Our old faithful <span class="code">mergemaster</span> is being replaced by <span class="code">etcupdate</span> which I will now have to
become a bit more familiar with using. The former tool is mentioned in my Kernel and world update post and page here, so I will revise those as well. Also, once more, I run across this news accidentally
and rather fortuitously, though my next Kernel and world update is on the horizon. I only suggest it is good to know about this now primarily because the retirement is imminent, arguably not particularly
sudden as the <a href="https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252417" title="PR 252417">PR for it</a> is from January this year. Even so, that PR is intended to track the change, so a more
precise end of usefulness is not perfectly known (to me). There is also discussion about this change in <a href="https://forums.freebsd.org/threads/heads-up-deprecation-of-mergemaster.79641/">a post on the FreeBSD forums</a> which
manages not to get heated but does echo a little displeasure at the relative silence until now regarding the change.</p>
<p>According to pieces of the forum posts and the PR, it appears that my decision to update my <span class="file">/usr/src</span> in order to check for a more current <span class="file">/usr/src/UPDATING</span> file, has caused me to lose the easier ways to switch to etcupdate. I think I can
certainly double my builds so that after the first one it will be in sync as it must be for the switch, or I could struggle to cause git to backrack the <span class="file">/usr/src</span> directory to the prior version or whatever version (which I do not know) I used for
my system as it is presently built. It may be that there is another method which is less easy but a halfway between those yet only involves etcupdate.</p>
<p>I am now reading that the etcupdate method will usually mean one extra, it seems, manually initiated step each time, since I know that nearly every Kernel and World build and install process for me has differences between what it wants to
do or include in various config files compared to what I have already. I am not sure yet, not until I have been through the process at least once, or better, twice, quite what to expect. I am going to assume at least one extra step compared
to what I have been doing though for these past many years.</p>
<p>Here is the part of the etcupdate(8) manpage which tells me that I doubled my work:</p>
<div>
<pre>
Bootstrapping
The etcupdate utility may need to be bootstrapped before it can be used.
The diff command will fail with an error about a missing reference tree
if bootstrapping is needed.
<span class="highlight">Bootstrapping etcupdate requires a source tree that matches the currently</span>
<span class="highlight">installed world. The easiest way to ensure this is to bootstrap</span>
<span class="highlight">etcupdate before updating the source tree to start the next world upgrade</span>
<span class="highlight">cycle.</span> First, generate a reference tree:
etcupdate extract
Second, use the diff command to compare the reference tree to your
current files in /etc. Undesired differences should be removed using an
editor, patch(1), or by copying files from the reference tree (located at
/var/db/etcupdate/current by default)
If the tree at /usr/src is already newer than the currently installed
world, a new tree matching the currently installed world can be checked
out to a temporary location. The reference tree for etcupdate can then
be generated via:
etcupdate extract -s /path/to/tree
The diff command can be used as above to remove undesired differences.
Afterwards, the changes in the tree at /usr/src can be merged via a
regular merge.
</pre>
</div>
<p>The second part suggests extracting a reference tree but I am not going to fall down into that pit. Instead I will take my medicine, update and install kernel and world to the version of /usr/src I have now, then bootstrap as described above.
After all that, I can do another update when <span class="file">/usr/src</span> is revised with the next git pull (yeah, I don't worry about using <span class="code">gitup</span> for this, but one could).</p>
<p>Somewhat distressingly the <span class="code">etcupdate extract</span> does not itself provide any output or clue that it is doing the job, so shortly after noticing this, I ran <span class="code">htop</span> in another xterm to see The process was fairly quick so it shouldn't be too much concern but
I would guess that futher steps will certainly show whether it did its job to setup for bootstrap or not The second part, mentioned above is not as clear as I think it should be, not only to say "use the diff command" which I will have to check the
manpage to see if it is a sub-command of <span class="code">etcupdate</span>, but that the manpage ought to also show "etcupdate diff" if this is the case.</p>
<div><pre>
etcupdate diff [-d workdir] [-D destdir] [-I patterns] [-L logfile]
</pre></div>
<div>
<pre>
Diff Mode
The diff mode compares the versions of files in the destination directory
to the “current” tree and generates a unified format diff of the changes.
This can be used to determine which files have been locally modified and
how. Note that etcupdate does not manage files that are not maintained
in the source tree such as /etc/fstab and /etc/rc.conf.
</pre>
</div>
So it is as I suspected and would have known if I had read through the whole manpage five or six times, a function of <span class="code">etcupdate</span> but the problem is that without the example, there is no mention of where the default locations are for the extract and
what to use for workdir and destdir. Maybe this information is also "buried" in the manpage in a seperate place, and it turns out that suggesting it was buried is a bit too harsh, BUT, an example which uses the defaults would be much more helpful
than "use the diff command" since this bootstrapping must be done right the first time. These options provide a way to set alternate locations so maybe an example using those defaults would be excessive, but should still show the command as otherwise the mention is a little vague.
<div>
<pre>
-D destdir Specify an alternate destination directory as the
target of a merge. This is analogous to the DESTDIR
variable used with ‘make installworld’. The default
destination directory is an empty string which results
in merges updating /etc on the local machine.
-d workdir Specify an alternate directory to use as the work
directory. The work directory is used to store the
“current” and “previous” trees as well as unresolved
conflicts. The default work directory is
<destdir>/var/db/etcupdate.
</pre>
</div>
<p>I am going to try simply <span class="code">etcupdate diff</span> and see what it does, maybe it will give feedback on any additional information it might need before it begins. It just runs and goes through most of the usual files that
mergemaster would, to see what has changed from 'stock' according to the output below.</p>
<div>
<pre>
root@ichigo:/usr/src # etcupdate extract
root@ichigo:/usr/src # etcupdate diff
Index: /.cshrc
===================================================================
--- /.cshrc (stock)
+++ /.cshrc (local)
@@ -44,3 +44,4 @@
endif
endif
+source /root/.cshrc-personal
Index: /root/.cshrc
===================================================================
--- /root/.cshrc (stock)
+++ /root/.cshrc (local)
@@ -44,3 +44,4 @@
endif
endif
+source /root/.cshrc-personal
Index: /root/.login
===================================================================
--- /root/.login (stock)
+++ /root/.login (local)
@@ -7,6 +7,15 @@
# Query terminal size; useful for serial lines.
if ( -x /usr/bin/resizewin ) /usr/bin/resizewin -z
+# -z Do nothing unless the current kernel terminal size is zero.
+# This is useful when run from a user's profile (shell startup) scripts:
+# querying the window size is required for serial lines, but not when
+# logging in over the network, as protocols like TELNET or SSH already
+# handle the terminal size by themselves.
+setenv MANWIDTH 240
+setenv MANCOLOR yes
+#setenv LC_CTYPE POSIX
# Uncomment to display a random cookie on each login.
# if ( -x /usr/bin/fortune ) /usr/bin/fortune -s
+ if ( -x /usr/bin/fortune ) /usr/bin/fortune -s
Index: /etc/master.passwd
===================================================================
--- /etc/master.passwd (stock)
+++ /etc/master.passwd (local)
@@ -1,6 +1,6 @@
# $FreeBSD$
#
-root::0:0::0:0:Charlie &:/root:/bin/csh
+root:<the hashed password>:0:0::0:0:Charlie &:/root:/bin/csh
toor:*:0:0::0:0:Bourne-again Superuser:/root:
daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
@@ -27,3 +27,35 @@
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
tests:*:977:977::0:0:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
+tigersharke:<another hashed password>:1001:1001::0:0:tigersharke:/usr/home/tigersharke:/bin/tcsh
+eviltwin::1002:1002::0:0:My Evil Twin:/usr/home/eviltwin:/bin/tcsh
+messagebus:*:556:556::0:0:D-BUS Daemon User:/nonexistent:/usr/sbin/nologin
+polkitd:*:565565::0:0:Polkit Daemon User:/var/empty:/usr/sbin/nologin
+saned:*:194:194::0:0:SANE Scanner Daemon:/nonexistent:/bin/sh
+squid:*:100:0::0:0:squid caching-proxy pseudo user:/var/squid:/usr/sbin/nologin
+vboxusers:*0:920::0:0:Virtualbox user:/nonexistent:/usr/sbin/nologin
+_ntp:*:2::0:0:NTP Daemon:/var/empty:/usr/sbin/nologin
+cups:*:193:19::0:0:Cups Owner:/nonexistent:/usr/sbin/nologin
+tests:*:977:6534::0:0:Unprivileged user for tests:/nonexistent:/usr/sbin/nologin
+git_daemo64:964::0:0:git daemon:/nonexistent:/usr/sbin/nologin
+polkit:*:5662::0:0:PolicyKit User:/nonexistent:/usr/sbin/nologin
+_tss:*:601::daemon:0:0:TrouSerS user:/var/empty:/usr/sbin/nologin
+avahi:*:558:8::0:0:Avahi Daemon User:/nonexistent:/usr/sbin/nologin
+cyrus:*:60:60:0:0:the cyrus mail server:/nonexistent:/usr/sbin/nologin
+colord:*:970:970::0:0:colord color management daemon:/nonexistent:/usr/sbin/nologin
+clamav:*:1006::0:0:Clamav Antivirus:/nonexistent:/usr/sbin/nologin
+spamd:*:58:58:0:0:SpamAssassin user:/var/spool/spamd:/usr/sbin/nologin
+minetest:*:976:976::0:0:& server:/nonexistent:/usr/sbin/nologin
+_sndio:*:702:702::0:0:sndio privsep:/var/empty:/usr/sbin/nologin
+slurm:*:8::0:0:SLURM Daemon:/nonexistent:/usr/sbin/nologin
+pulse:*:563:563::0:0:PulseAudio System User:/nonexistent:/usr/sbin/nologin
+sddm:*:219:219::0:0:SDDM Display Manager user:/var/lib/sddm:/usr/sbin/nologin
+mysql:*:88:88::0:0:MySQL Daemon:/var/db/mysql:/usr/sbin/nologin
+webcamd:*:145:145::0:0:Webcamd user:/var/empty:/usr/sbin/nologin
+fahclient:*:246:246::0:0:Folding@home User:/nonexistent:/usr/sbin/nologin
+qbittorrent:*:850:850::0:0:qBittorrent Daemon User:/var/db/qbittorrent/conf:/usr/sbin/nologin
+mud:*:97:97::0:0:MUD Owner:/nonexistent:/bin/sh
+bnetd:*:700:700::0:0:Bnetd user:/nonexistent:/usr/sbin/nologin
+wolfpack:*:138:138::0:0:Wolfpack Empire Server:/usr/local/share/wolfpack:/usr/sbin/nologin
+mcserver:*:199:199::0:0:Minecraft Server:/nonexistent:/bin/sh
Removed: /etc/regdomain.xml
Index: /etc/hosts
===================================================================
--- /etc/hosts (stock)
+++ /etc/hosts (local)
@@ -10,8 +10,8 @@
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
-::1 localhost localhost.my.domain
-127.0.0.1 localhost localhost.my.domain
+::1 localhost ichigo.underworld
+127.0.0.1 localhost ichigo.underworld
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
@@ -29,3 +29,8 @@
# numbers but instead get one from your network provider (if any) or
# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#
+#209.94.190.55 distcache.FreeBSD.org
+#38.109.202.29 www.ixsystems.com
Index: /etc/loin.conf
===================================================================
--- /etc/loconf (stock)
+++ /etc/loconf (local)
@@ -51,6 +5@@
:charset=\
:lang=C.UTF-8:
+
#
lle of common class names - forward them all to 'default'
# (login wou normally do this anyway, but having a class name
@@ -86,6 +87,11 @@
:ignorenol\
:memorylocked=unlimited:\
:tc=defau
+:charset=UT:\
+:lang=en_US.UTF-8:\
+:setenv=LC_LATE=C:
+:setenv=PATHOCALE=/usr/local/lib/X11/locale:\
+:path_locale=/usr/local/lib/X11/locale:\
#
# Russians Accounts. Setup proper environment variables.
Index: /etc/nt.conf
=================================================================
--- /etc/ntnf (stock)
+++ /etc/nf (local)
@@ -37,7 @@
# the nex, and replace CC with the country's abbreviation.
# Make sure that the hostname resolves to a proper IP address!
#
-# pool 0.ol.ntp.org iburst
+pool 0.U.ntp.org iburst
+pool 0.freebs.pool.ntp.org iburst
+pool 0.netpool.ntp.org iburst
+pool 0.ope.pool.ntp.org iburst
+pool 0.ope.pool.ntp.org iburst
#
# Tonfi a specific server, such as an organization-wide local
Index: /etc/gup
===============================================================
--- /etc/gro(stock)
+++ /etc/group (local)
@@ -1,12 +1,12@@
# $FreeBS #
-whe:*:
+wheel:*:0:root,tigersharke
daemon:*:1: kmem:*:2:
sys:*:3:
*:4:
-operatoroot
-mail:*:6:
+operator:oot,tigersharke
+mail:*:6:clamav
bin:*:7:
news:*:8 man:*:9:
@7,9 +17,12 @@
smmsp:*:2
mailnull:*:
guest:*:31:
-video:*:44:
+audio:*:43:ersharke,minetest
+video:*:44:tigersharke,sddm,root
bind:*:5
+spamd:*:58
unbound:*:5
+cyrus:*:60:
proxy:*:62:
authpf:*:63
_pflogd:*:64
@@ -29,9 +32,4 @@
network:*
audit:*:77:
www:*:80:
+mysql:*:8ud:*:97:
+squid:*:100:
+clamav:*:106:
ntpd:*:123:
+wolfpack:*:138:
+webcamd:*:145:
_ypldap:*:160:
+cups:*:193:
+saned:*:194:
+mcserver:*:199:
+sddm:*:219:
+_ntp:*:233:
+fahclient:*:246:
+slurm:*:468:
+messagebus:*:556:
+pulse-rt:*:557:
+avahi:*:558:
+polkit:*:562:
+pulse:*:563:
+pulse-access:*:564:
+polkitd:*:565:
+_tss:*:601:
+bnetd:*:700:
+_sndio:*:702:
hast:*:845:
+qbittorrent:*:850:
+vboxusers:*:920:tigersharke
+git_daemon:*:964:
+colord:*:970:
+minetest:*:976:
tests:*:977:
+tharald:*:1003:
+plugdev:*:1011:tigersharke,root
+tigersharke:*:1012:tigersharke
nogroup:*:65533:
nobody:*:65534:
Index: /etc/devfs.conf
===================================================================
--- /etc/devfs.conf (stock)
+++ /etc/devfs.conf (local)
@@ -41,3 +4 @@
# Allow ms of group operator to cat things to the speaker
#own speaker root:operator
#perm speak 0660
+
+# ad A21 2020
+link acd0 cdrom
+link acd0 dvd
+perm acd 0660
+perm cd0 0660
+perm pass 0660
+perm pass 0660
+perm pass 0660
+perm pass 0660
+perm xpt0 0666
root@ichigo:/r/src #
</pre>
</div>
<p>The diff above looks fine to me, although there is one explanatory line in one file I would prefer to keep. Something with the copy-paste or other manipulation of the xterm to get a complete copy-paste has caused some text damage, but
you can get the idea of how the diff result looks anyway. The manpage paragraph below should provide any sort of example on how one would make an adjustment with patch as suggested, I cannot guess
how this wouldbe done, so for bootstrapping I will lose the ntp.conf line "# pool 0.CC.pool.ntp.org iburst" which makes the rest of the comment above it a bit less clear. Much of the differences between the files which etcupdate scrutinized
were not long go cleaned up a bit, to organize and group my changes together and make the default and my revised version match more closely. Perhaps it has now been enough time that the /usr/src directory can be updated and I can rebuild
(world takes 1.5 hours, kernel in 45 minutes I think) and reinstall and try etcupdate after. I decided to look at <span class="file">/etc/ntp.conf</span> to see what it was like, the line I wanted was gone, so I restored it, then looked at some other settings in the
file and made some minor revisions. I am guessing it should come up in the next etcupdate after the rebuilds and reinstalls, and might expect me to resolve, but I won't know until I do so.</p>
<p>In the place of <span class="code">mergemaster -p</span> I used <span class="code">etcupdate -p</span> which I was reasonably sure about. After that, I used <span class="code">etcupdate -n</span> and tried <span class="code">etcupdate status</span> but both gave no output, all I could
do is bite the bullet and try just <span class="code">etcupdate</span>. None of it gave any output this time around, so perhaps in a future update to my world and kernel there will be a bit more noise from etcupdate. So for now, I will stick to the same procedure for
that next time, to go ahead with the prepare step and then after installing world, the dry run and finally run of etcupdate. Until experience proves differently and I must make adjustments this seems reasonable and safe. This command/tool has
been around a while already and except for some tweaks to the manpage, it seems to be a good tool to replace mergemaster. I look forward to using it in the future, especially the next time or two, to see if it prompts me for anything or
provides more output.</p>
<p>How many of you read the title as I humorously intended? "To history no more" meaning the record of commands, 'history' and also "no more mergemaster" as most obvious it is being retired, there is also the other blatant meaning, just that
mergemaster would be relegated to history. I wasn't sure what title to use until that struck me as perfect.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-13859842618185312562021-05-10T22:38:00.017-05:002024-03-11T15:13:20.341-05:00New FVWM! Transition, initial steps<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi75QmIYMLKw750xvQoU0y7fdJyVQ8bzAT7OSimEI4g2LDtARC7ZClxZhgLI11JCfNNXcugd1WevqSFqJpx-vxy8UMG_hzSPxb70SJBbtZ3reXpDCvEjwvnx3kztiUfb_v5n-RD602Im8g/s700/1024px-Fvwm-logo.svg.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="246" data-original-width="700" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi75QmIYMLKw750xvQoU0y7fdJyVQ8bzAT7OSimEI4g2LDtARC7ZClxZhgLI11JCfNNXcugd1WevqSFqJpx-vxy8UMG_hzSPxb70SJBbtZ3reXpDCvEjwvnx3kztiUfb_v5n-RD602Im8g/s320/1024px-Fvwm-logo.svg.png"/></a></div>
<p>I have been using FVWM as my primary desktop for most of the last nearly twenty years if it has been around that long. Within the last few years I have customized more and more of the various menus and other effects
of my desktop. I haven't configured anything too crazy, it doesn't look or act like windows, or any other desktop. Mostly I made adjustments to how various common programs look, how their window is styled, and setup
a number of conveniences in the menus or simple .fvwmrc embedded scripts.</p>
<p>A short time ago, I just saw FVWM3 scroll across my ports tree update output, and so I had to peek at freshports to see what it was about. From there, I went to the FVWM3 webpage to peruse its change logs and readme
files and other prliminary documentaion on the site. One specific thing made me smile, the inclusion of a FreeBSD originated file somewhere in the mix. The list of changes and bug fixes is quite impressive. I have not
had significant difficulties with FVWM except for struggling somewhat to include any bit of shortcut automation in the .fvwmrc file, or when any certain game needs vsync but I have no idea how to set that up or do what
is needed to satisfy that complaint from the game (Veloren).</p>
<p>I saw mention in the commit message for FVWM3 something about M4 being left behind in favor of Go, but aside from this seeming to be about modules, I couldn't find anything more specific or descriptive about it. The
old (current FVWM2) configuration file and methods will be temporarily grandfathered in, which is very nice for the transition period. I am mildly hesitant to switch as I have occasionally had drastic troubles with
graphics in general in the past. I can certainly maintain both builds in poudriere, and choose which one to keep installed. This will leave me a fallback if anything catastrophic happens and I somehow cannot use
FVWM3 at all, especially if it is something beyond my direct control. My other concern is how exactly the new .fvwmrc file will be organized, structured, and how I will setup anew much of what I have now. What I
would be very pleased to see would be a more automated, transparent, or FVWM method to reach the .desktop files or similar, and how I could have any built menu reflect the up to the moment installed applications. I
tend to update software on my system as something to do, with poudriere it is much less invasive or disruptive for the most part. There are still those rare times when something fails to build, then pkg does only
half the job, removing the old but being unable to replace it with the new. </p>
<p>Now we get ready to put poudriere on task to build this new FVWM3 along with the semi-standard X11 environment software for good measure and also just in case, to have a proper bulk build though quite small in comparison to my
usual. Instead, I decided to get an all-depends-list for FVWM3. </p>
<p><span class="code">make -C /usr/ports/x11-wm/fvwm3 all-depends-list > fvwm3-and-dependents</span></p>
<div>
<pre>
/usr/ports/ports-mgmt/pkg
/usr/ports/textproc/rubygem-asciidoctor
/usr/ports/lang/ruby30
/usr/ports/devel/libffi
/usr/ports/devel/ccache
/usr/ports/print/indexinfo
/usr/ports/misc/dejagnu
/usr/ports/devel/gmake
/usr/ports/lang/expect
/usr/ports/devel/autoconf
/usr/ports/devel/m4
/usr/ports/print/texinfo
/usr/ports/misc/help2man
/usr/ports/lang/perl5.32
/usr/ports/devel/p5-Locale-libintl
/usr/ports/converters/libiconv
/usr/ports/converters/p5-Text-Unidecode
/usr/ports/textproc/p5-Unicode-EastAsianWidth
/usr/ports/devel/ncurses
/usr/ports/devel/pkgconf
/usr/ports/devel/kyua
/usr/ports/devel/lutok
/usr/ports/lang/lua54
/usr/ports/devel/libedit
/usr/ports/databases/sqlite3
/usr/ports/lang/tcl86
/usr/ports/devel/autoconf-wrapper
/usr/ports/devel/automake
/usr/ports/security/libressl
/usr/ports/textproc/libyaml
/usr/ports/math/gmp
/usr/ports/devel/libunwind
/usr/ports/devel/ruby-gems
/usr/ports/lang/python39
/usr/ports/devel/readline
/usr/ports/x11/libICE
/usr/ports/x11/xorgproto
/usr/ports/devel/xorg-macros
/usr/ports/x11/xtrans
/usr/ports/x11/libX11
/usr/ports/x11/libxcb
/usr/ports/x11/xcb-proto
/usr/ports/textproc/libxml2
/usr/ports/devel/libpthread-stubs
/usr/ports/x11/libXau
/usr/ports/x11/libXdmcp
/usr/ports/x11/libXext
/usr/ports/x11/libXrandr
/usr/ports/x11/libXrender
/usr/ports/x11-toolkits/libXt
/usr/ports/x11/libSM
/usr/ports/x11/libXcursor
/usr/ports/x11/libXfixes
/usr/ports/x11-fonts/libXft
/usr/ports/print/freetype2
/usr/ports/archivers/brotli
/usr/ports/devel/libtool
/usr/ports/graphics/png
/usr/ports/x11-fonts/fontconfig
/usr/ports/devel/gperf
/usr/ports/devel/meson
/usr/ports/devel/py-setuptools
/usr/ports/devel/ninja
/usr/ports/devel/py-pytest-xdist
/usr/ports/devel/py-setuptools_scm
/usr/ports/textproc/py-toml
/usr/ports/devel/py-pytest
/usr/ports/devel/py-atomicwrites
/usr/ports/devel/py-attrs
/usr/ports/devel/py-coverage
/usr/ports/devel/py-hypothesis
/usr/ports/devel/py-sortedcontainers
/usr/ports/math/py-numpy
/usr/ports/lang/gcc10
/usr/ports/devel/binutils
/usr/ports/math/mpfr
/usr/ports/math/mpc
/usr/ports/lang/cython
/usr/ports/math/cblas
/usr/ports/math/suitesparse
/usr/ports/devel/cmake
/usr/ports/textproc/py-sphinx
/usr/ports/textproc/py-sphinxcontrib-applehelp
/usr/ports/textproc/py-sphinxcontrib-devhelp
/usr/ports/textproc/py-sphinxcontrib-jsmath
/usr/ports/textproc/py-sphinxcontrib-htmlhelp
/usr/ports/textproc/py-sphinxcontrib-serializinghtml
/usr/ports/textproc/py-sphinxcontrib-qthelp
/usr/ports/devel/py-Jinja2
/usr/ports/textproc/py-markupsafe
/usr/ports/devel/py-babel
/usr/ports/devel/py-pytz
/usr/ports/textproc/py-pygments
/usr/ports/textproc/py-docutils
/usr/ports/textproc/py-snowballstemmer
/usr/ports/textproc/py-pystemmer
/usr/ports/textproc/py-alabaster
/usr/ports/graphics/py-imagesize
/usr/ports/www/py-requests
/usr/ports/security/py-certifi
/usr/ports/textproc/py-chardet
/usr/ports/devel/py-pytest-runner
/usr/ports/dns/py-idna
/usr/ports/net/py-urllib3
/usr/ports/archivers/py-brotlipy
/usr/ports/devel/py-cffi
/usr/ports/devel/py-pycparser
/usr/ports/net/py-pysocks
/usr/ports/security/py-cryptography
/usr/ports/devel/py-six
/usr/ports/security/py-cryptography-vectors
/usr/ports/devel/py-iso8601
/usr/ports/devel/py-pretend
/usr/ports/security/py-openssl
/usr/ports/devel/py-flaky
/usr/ports/devel/py-nose
/usr/ports/devel/py-genty
/usr/ports/devel/py-mock
/usr/ports/security/ca_root_nss
/usr/ports/security/py-trustme
/usr/ports/devel/py-pytest-cov
/usr/ports/security/py-service_identity
/usr/ports/devel/py-pyasn1-modules
/usr/ports/devel/py-pyasn1
/usr/ports/devel/py-pytest-timeout
/usr/ports/misc/py-pexpect
/usr/ports/sysutils/py-ptyprocess
/usr/ports/devel/py-pytest-freezegun
/usr/ports/devel/py-freezegun
/usr/ports/devel/py-dateutil
/usr/ports/databases/py-sqlite3
/usr/ports/www/py-tornado
/usr/ports/devel/py-pytest-mock
/usr/ports/devel/py-packaging
/usr/ports/devel/py-pyparsing
/usr/ports/www/py-html5lib
/usr/ports/converters/py-webencodings
/usr/ports/devel/py-typed-ast
/usr/ports/ftp/curl
/usr/ports/www/libnghttp2
/usr/ports/archivers/zstd
/usr/ports/archivers/liblz4
/usr/ports/sysutils/coreutils
/usr/ports/textproc/expat2
/usr/ports/shells/bash
/usr/ports/devel/bison
/usr/ports/devel/jsoncpp
/usr/ports/devel/libuv
/usr/ports/security/rhash
/usr/ports/archivers/libarchive
/usr/ports/archivers/lzo2
/usr/ports/math/metis
/usr/ports/math/blas
/usr/ports/math/lapack
/usr/ports/devel/py-pympler
/usr/ports/devel/py-zope.interface
/usr/ports/devel/py-pluggy
/usr/ports/devel/py-py
/usr/ports/devel/py-wcwidth
/usr/ports/devel/py-more-itertools
/usr/ports/devel/py-pip
/usr/ports/textproc/py-furo
/usr/ports/www/py-beautifulsoup
/usr/ports/www/py-soupsieve
/usr/ports/devel/py-lxml
/usr/ports/textproc/libxslt
/usr/ports/security/libgcrypt
/usr/ports/security/libgpg-error
/usr/ports/textproc/py-sphinx-inline-tabs
/usr/ports/devel/py-csv23
/usr/ports/devel/py-invoke
/usr/ports/devel/py-pytest-rerunfailures
/usr/ports/devel/py-yaml
/usr/ports/devel/py-scripttest
/usr/ports/devel/py-tox
/usr/ports/sysutils/py-filelock
/usr/ports/devel/py-virtualenv
/usr/ports/textproc/py-sphinx_rtd_theme
/usr/ports/textproc/py-towncrier
/usr/ports/devel/py-click
/usr/ports/devel/py-incremental
/usr/ports/www/py-werkzeug
/usr/ports/devel/py-watchdog
/usr/ports/devel/py-pathtools
/usr/ports/devel/py-argh
/usr/ports/net/py-eventlet
/usr/ports/dns/py-dnspython
/usr/ports/devel/py-greenlet
/usr/ports/devel/py-wheel
/usr/ports/devel/mercurial
/usr/ports/devel/git
/usr/ports/devel/subversion
/usr/ports/security/gnupg
/usr/ports/security/libassuan
/usr/ports/security/libksba
/usr/ports/devel/npth
/usr/ports/security/pinentry
/usr/ports/security/pinentry-tty
/usr/ports/devel/apr1
/usr/ports/databases/gdbm
/usr/ports/databases/db5
/usr/ports/java/openjdk7
/usr/ports/archivers/zip
/usr/ports/archivers/unzip
/usr/ports/print/cups
/usr/ports/devel/xdg-utils
/usr/ports/textproc/minixmlto
/usr/ports/textproc/docbook-xsl
/usr/ports/textproc/xmlcatmgr
/usr/ports/textproc/docbook
/usr/ports/textproc/docbook-sgml
/usr/ports/textproc/iso8879
/usr/ports/textproc/docbook-xml
/usr/ports/textproc/xmlcharent
/usr/ports/textproc/sdocbook-xml
/usr/ports/textproc/html2text
/usr/ports/misc/hicolor-icon-theme
/usr/ports/x11/xprop
/usr/ports/x11/xset
/usr/ports/x11-toolkits/libXmu
/usr/ports/print/libpaper
/usr/ports/java/bootstrap-openjdk6
/usr/ports/java/java-zoneinfo
/usr/ports/audio/alsa-lib
/usr/ports/x11/libXi
/usr/ports/x11/libXtst
/usr/ports/java/javavmwrapper
/usr/ports/x11-fonts/dejavu
/usr/ports/x11-fonts/mkfontscale
/usr/ports/x11-fonts/libfontenc
/usr/ports/databases/mysql80-client
/usr/ports/devel/llvm11
/usr/ports/textproc/py-recommonmark
/usr/ports/textproc/py-CommonMark
/usr/ports/devel/py-future
/usr/ports/devel/swig
/usr/ports/devel/pcre
/usr/ports/devel/libevent
/usr/ports/devel/icu
/usr/ports/devel/protobuf
/usr/ports/devel/googletest
/usr/ports/textproc/groff
/usr/ports/print/psutils
/usr/ports/print/gsfonts
/usr/ports/textproc/uchardet
/usr/ports/textproc/utf8proc
/usr/ports/www/serf
/usr/ports/devel/scons
/usr/ports/sysutils/py-execnet
/usr/ports/devel/py-apipkg
/usr/ports/devel/py-pytest-forked
/usr/ports/devel/libbson
/usr/ports/converters/fribidi
/usr/ports/graphics/librsvg2-rust
/usr/ports/lang/rust
/usr/ports/lang/vala
/usr/ports/devel/gettext-runtime
/usr/ports/devel/glib20
/usr/ports/devel/gettext-tools
/usr/ports/devel/libtextstyle
/usr/ports/devel/gobject-introspection
/usr/ports/graphics/cairo
/usr/ports/x11/pixman
/usr/ports/graphics/mesa-libs
/usr/ports/graphics/wayland-protocols
/usr/ports/graphics/wayland
/usr/ports/devel/libepoll-shim
/usr/ports/textproc/py-mako
/usr/ports/www/py-beaker
/usr/ports/devel/llvm10
/usr/ports/x11/libXdamage
/usr/ports/x11/libxshmfence
/usr/ports/x11/libXxf86vm
/usr/ports/graphics/libdrm
/usr/ports/devel/libpciaccess
/usr/ports/misc/pciids
/usr/ports/print/harfbuzz
/usr/ports/textproc/gtk-doc
/usr/ports/textproc/itstool
/usr/ports/textproc/py-libxml2
/usr/ports/textproc/yelp-tools
/usr/ports/textproc/yelp-xsl
/usr/ports/graphics/graphite2
/usr/ports/print/py-fonttools3
/usr/ports/devel/py-fs2
/usr/ports/devel/py-appdirs
/usr/ports/graphics/gdk-pixbuf2
/usr/ports/misc/shared-mime-info
/usr/ports/graphics/jasper
/usr/ports/graphics/jpeg-turbo
/usr/ports/devel/nasm
/usr/ports/graphics/libGLU
/usr/ports/graphics/freeglut
/usr/ports/graphics/tiff
/usr/ports/graphics/jbigkit
/usr/ports/x11-toolkits/pango
/usr/ports/x11-fonts/xorg-fonts-truetype
/usr/ports/x11-fonts/font-bh-ttf
/usr/ports/x11-fonts/bdftopcf
/usr/ports/x11-fonts/font-misc-meltho
/usr/ports/x11-fonts/font-misc-ethiopic
/usr/ports/x11-fonts/encodings
/usr/ports/x11-fonts/font-util
</pre>
</div>
<p>In order to use that with poudriere, I will need to remove the /usr/ports/ portion which I can do fairly easily in vi. Once in vi, I type <span class="code">:%s/\/usr\/ports\///g</span> which very neatly
and efficiently removes the text, then I save the file by simply typing <span class="code">ZZ</span>. Ordinarily I would take the extra step to organize those port origins alphabetically and remove duplicates,
but poudriere will do this for me. One thing I need to be sure to do, is add <span class="origin">x11-wm/fvwm3</span> to this list or it will not get built with all of its indirect dependencies. This file as is should suffice for
my present needs, and I do not expect to ever need to edit it or doublecheck anything. Let's tell poudriere to get to work. </p>
<p><span class="code">portsup ; poudriere bulk -f `p-keg-deblack fvwm3-and-dependents` -j 13amd64</span></p>
<p>I can only hope that the list I made had included a number of things I would not need. The poudriere build finished surprisingly fast, considering I told it to process seventy port origins. The tail end of the output tells the majority of the story.
</p>
<div>
<pre>
[00:12:57] Creating pkg repository
Creating repository in /tmp/packages: 100%
Packing files for repository: 100%
[00:18:46] Committing packages to repository: /usr/local/poudriere/data/packages/13amd64-default/.real_1620639651 via .latest symlink
[00:18:46] Removing old packages
[00:18:46] Built ports: textproc/py-mako textproc/py-recommonmark devel/py-atomicwrites devel/py-wcwidth devel/py-incremental devel/py-py devel/py-greenlet devel/py-argh net/py-eventlet devel/py-pytest devel/py-appdirs devel/py-pyasn1 devel/py-apipkg textproc/py-towncrier devel/py-pathtools math/cblas textproc/py-sphinx_rtd_theme devel/py-sortedcontainers devel/py-pytest-forked devel/py-fs2 devel/py-pyasn1-modules sysutils/py-filelock sysutils/py-execnet textproc/py-sphinx-inline-tabs devel/py-coverage devel/py-freezegun textproc/py-furo devel/py-watchdog security/py-trustme devel/py-pytest-rerunfailures security/py-service_identity devel/py-pytest-runner devel/py-pytest-mock devel/py-virtualenv devel/py-scripttest devel/py-mock devel/py-genty devel/py-wheel devel/py-tox devel/py-pytest-xdist devel/py-invoke devel/py-pympler devel/py-zope.interface devel/py-typed-ast devel/py-pytest-timeout devel/git devel/py-csv23 devel/py-pretend www/py-werkzeug sysutils/coreutils devel/py-pytest-cov devel/libbson devel/mercurial devel/py-flaky devel/py-pytest-freezegun print/py-fonttools3 security/py-cryptography-vectors
[00:18:46] Skipped ports: databases/db5 devel/apr1 devel/py-hypothesis devel/subversion graphics/librsvg2-rust java/openjdk7 math/py-numpy www/serf
[00:18:46] Ignored ports: java/bootstrap-openjdk6 math/suitesparse security/gnupg lang/rust textproc/rubygem-asciidoctor
[13amd64-default] [2021-05-10_04h22m05s] [committing:] Queued: 70 Built: 57 Failed: 0 Skipped: 8 Ignored: 5 Tobuild: 0 Time: 00:18:43
[00:18:46] Logs: /usr/local/poudriere/data/logs/bulk/13amd64-default/2021-05-10_04h22m05s
[00:18:46] Cleaning up
13amd64-default: removed
13amd64-default-n: removed
[00:18:46] Unmounting file systems
</pre>
</div>
<p>All that is left for the moment is to suffer the consequences of switching from one to the next. I will have to deinstall FVWM2 in order to install FVWM3, and this should be handled fairly automatically by pkg when I tell it to install FVWM3, as it very obviously conflicts with FVWM2.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-63860027588281356182021-05-07T21:42:00.001-05:002024-03-11T15:14:16.867-05:00Interim patches<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5qFZoaP3Ea3PlLbqibdK-Crkq43GypDqA1d3dr1ES-gxq_hPDlJY8f-KfAXsshDOLeha6liD4Mhgon7WrVtio4cUrT15t6C5PA4AI0zy6044glCMsb_d23b33bcJX6Wlk-lreCkAlKk/s599/soapbox-crate.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="380" data-original-width="599" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5qFZoaP3Ea3PlLbqibdK-Crkq43GypDqA1d3dr1ES-gxq_hPDlJY8f-KfAXsshDOLeha6liD4Mhgon7WrVtio4cUrT15t6C5PA4AI0zy6044glCMsb_d23b33bcJX6Wlk-lreCkAlKk/s320/soapbox-crate.png"/></a></div>
<p>Patches should be interim fixes only. How can FreeBSD ever be a recognized full member of the UNIX world if it always hides in the shadows, repairing for itself the linuxisms or
other broken upstream code instead of communicating? Even without making our presence known, telling upstream of our difficulties due to our distinct methods and organization, we
can use the same mechanisms which upstream uses to adjust our build without need of patches. One example is cmake, it is possible to discover the options provided by upstream to
modify the build in various ways, to provide paths for dependencies, to enable or disable options. We force the issue by reminding upstream that we are a consumer and by them
providing flexibility which we can use to adapt their build without patches, or by their inclusion of our patches, if those developers listen and are open to such changes.
</p>
<p>Aside from my personal distaste for patches because of what I just mentioned, I also strongly favor our own options framework within the ports system to expose all or most build
options. I am okay with our public FreeBSD repo providing packages which are built using the most universally compatible defaults and among them the most used options as defaults.
However, we should not remove choice from our users. There may be reasons to build with bundled software even if it may not be the best choice generally. There are sometimes
incompatibilities between ports which if installed together conflict due to dependencies in unique ways. Choosing the less pleasant or potentially dangerous bundled software
dependency can be the work-around in that situation.
</p>
<p>FreeBSD should have within its ports system, as many of the non-bundled versions of any necessary dependencies as possible, but they and all the other ports should also be able
to be configured in ways that conflicts do not force the need of any bundled dependency. Maintaining ports may be a bit of effort and adding additional options exposure for their
users may increase the work involved, but it should not be the reason to avoid it. We cannot know for certain that any group of ports must conflict among themselves or their
dependencies if we limit build options. Beyond the flexibility which may be offered by exposing more options, this exploration and investigation may determine that build options
which upstream provides might not affect the actual build except to force dependency attachments. We need to take care that minimal builds can be configured, that dependencies
are known and our own dependency system handles them exclusively or in concert with those caused by any upstream build option.
</p>
<p>We have a rather
extensive make system for our ports which is reasonably documented. This collection of shortcuts in <span class="file">/usr/ports/Mk</span> helps streamline many things, formalizes standards in a sort of
macro form. When and where it is possible it should be a choice for ports users whether to suffer the bulk of a dependency collection or be able to limit them. Simply because KDE
or GNOME or any other desktop provides a rather tightly integrated group of desktop environment with applications does not necessarily mean that it all must be installed in bulk. If
it is possible to pick and choose constituent parts, such as kate exclusive of KDE or some other utility exclusive of GNOME, this should be made as a separate port or port flavor. For many
possibilities we already have much of the mechanisms to handle situations or desires like this but for simplicity or assumed default user choices we might not provide them. Any META port should
not simply be a way for dependencies to be tied together for a one-step port install, especially something like KDE or Lumina, but also should provide options which permit the selection among those
individual meta parts.  </p>
<p>We recently extricated base from GPL code, this is a success long in coming but it also truly should not have ever been a necessity, the inclusion not the removal. Why do we not
have more BSD licensed ports? Why do we wait for any various thing to be developed in or for Linux distros and then we adopt it as a port, not as upstream provider but as a
consumer depending upon the whims of developers which are not required to ever acknowledge us? We can do better. We are not devoid of creativity or skill or developers who could
accomplish the same things for FreeBSD or any other BSD as those coders do for the Linux consumers. What is our limitation? Yes, FreeBSD is slow to change and does not chase after
the most recent shiny, but can we develop a new shiny object? It does not need to be a part of base and must not be widely adopted in order to be useful. Perhaps we need a focus
on FreeBSD innovation, to point out and point at those new bits of code, those new applications we develop on FreeBSD as upstream, and not simply give up to hand it over to those
who would enjoy maintaining it and improving it as an awesome GPL licenced hit.
</p>
<p>Whether avoiding patches or creating new code, we in our BSD world need to make ourselves known. We must communicate. We must not simply be silent consumers feeding from the Linux
engine. We should be recognized, we should be present on operating system statistics distinct from Linux. We can assist in maintaining the FreeBSD specific parts of any application
that chooses to include us as a unique consumer. We will never be supported if we hide in the shadows, pretending to be Windows or Linux because any mechanisms fail us when we claim
our actual operating system designation. It always begins as feedback to the developers, or resellers, providers; or we can remain a subsidiary of Linux development as a sort of leech
on their continued successes. </p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-44611890668293427002021-04-05T02:39:00.014-05:002021-06-12T15:48:29.247-05:00Getting minetest-dev built<p>Here I go again. I had recently finished making a substantial revision to the minetest makefile and I wrote about it in a <a href="https://daemondesktop.blogspot.com/2020/09/minetest-better.html">blog post</a> which I
updated a short time ago. I decided to attempt to make the unreleased development version of minetest buildable on my system. The added wrinkle with this is that the minetest developers decided to fork irrlicht in
order to have it work better with minetest. So you may conclude that I now have two ports to successfully build.</p>
<p>Starting with my own rococo Makefile in a new port directory, games/minetest-dev, I worked at attempting to get the source and have the build succeed. It took a bit of time to manipulate the Makefile for this unique situation
which technically has no source tarball, though the master branch can be downloaded as a .zip file. I could have used the github shortcut option in my Makefile but at least initially the arrangement is unique and not quite as
described in the porter's handbook.</p>
<p>After a while, I finally was able to get the .zip file, unpack it and begin to build which stopped at the point that it discovered irrlicht on my system was not the forked version it needed. This meant that I needed to begin
my efforts on getting the irrlicht fork to build. Similarly to my build of minetest-dev, I began with the irrlicht port that already exists in the tree by copying it all to another directory, x11-toolkits/irrlicht-minetest.
It didn't take long to discover that it seemed as though this fork was built differently than the original irrlicht port which makes some sense as it is being modified by other developers and we all know different developers
often prefer different tools.</p>
<p>As I am nearly finished with the irrlichtMt port except for installation, I now need to generate a package list for it. This is one step I have not done often enough to remember it, like I can for
<span class="code">make makesum</span> so I have to look up what it is, a successful search confirms that it is <span class="code">make makeplist > pkg-plist</span> but of course I will need to look over the generated file
and edit out the top line. While I had believed I was nearly finished, in fact my Makefile still had some flaws. My solution was to simplify it by commenting out some lines until I finally happened upon the right combination
which permitted me a successful build. Once that was accomplished I could make the pkg-plist, edit it to remove the top line and call it done for now.</p>
<p>Back to the games/minetest-dev port to see if an install of irrlichtMt is found by it and then it will progress further in its build, hopefully to completion. It seemed to build fine but failed on install I believe due to
an old pkg-plist and the mechanism attempting to honor it. Another clean build without that file so I can re-create it should solve this small issue. It turns out that was not the issue, but my removal of the files directory
which is usually used for patches, but also had something named minetest.in that was needed though how it is identified as a requirement I do not know. I just copied the file from the minetest game port. The remaining error
messages seem to be caused by the lack of pkg-plist file but as the build was otherwaise successful, it was easily created. Of course, after all of this, I get the last inescapable complaint, that this version of minetest
conflicts with the minetest game already installed.</p>
<p>This was a rather pleasant experience even though there were moments when I was confused as to how to solve an issue with either port. I can count these as my first successful ported software with mostly proper Makefiles and
procedures, even if I had a bit of a head start with already existing Makefiles. The main things which cause them to be less than proper is that I do not use any version numbers for distfiles as both are very generic .zip files
direct from github. If I discover how to solve that, or in the near future when the minetest project has cut a release for either of them, that issue can be solved. Another minetest developer (of mods primarily) warned me
that this dev version is somewhat of a mess, but I just installed it and have tested by playing the same minetest server games online which I usually do, and it seemed fine. Maybe an earlier version was not as good but maybe
I happened to grab a zip file of a coherent version that works, at least on FreeBSD.</p>
<p>For those who are curious, the two initially sucessful Makefiles are found at the repo links while more accurate (more recent) and complete ones are below. I have realized that one way to maintain these port directories is to use a symbolic link into the ports tree for each of them if necessary while the actual content can
reside on another account home directory in its own directory appropriately named (Ported_Software) containing them and any future port I manage to accomplish. I chose to re-create the necessary subset of the ports tree,
meaning that I made both hierarchies <span class="path">Ported_Software/x11-toolkits/irrlicht-minetest</span> and <span class="path">Ported_Software/games/minetest-dev</span> which will be easier to handle than any other variation and will be very much less cluttered until I
make a very substantial number of ports.</p>
<p>minetest-dev:</p>
<div><pre>
PORTNAME= minetest
DISTVERSION= g20210612
CATEGORIES= games
PKGNAMESUFFIX= -dev
DISTNAME= master
DIST_SUBDIR= ${PORTNAME}${PKGNAMESUFFIX}
MAINTAINER= nope@nothere
COMMENT= Near-infinite-world block sandbox game
LICENSE= LGPL21+
LIB_DEPENDS= libIrrlichtMt.so:x11-toolkits/irrlicht-minetest
USES= cmake compiler:c11 iconv:wchar_t sqlite
CONFLICTS= minetest
USE_GITHUB= nodefault
GH_ACCOUNT= minetest
GH_PROJECT= minetest
GH_TAGNAME= dc165fe942bcc48d7dea0a7b722886937d9c6914
CMAKE_ARGS= -DBUILD_UNITTESTS="FALSE" \
-DCMAKE_BUILD_TYPE="MinSizeRel" \
-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
-DCUSTOM_MANDIR="${PREFIX}/man"
WRKSRC= ${WRKDIR}/minetest-${GH_TAGNAME}
LDFLAGS_i386= -Wl,-znotext
#PORTDATA= *
#PORTDOCS= *
OPTIONS_DEFINE= CURL DOCS EXAMPLES FREETYPE GLES LUAJIT NCURSES NLS SOUND SYSTEM_GMP \
SYSTEM_JSONCPP PROMETHEUS
OPTIONS_MULTI= COMP
OPTIONS_RADIO= GRAPHICS
OPTIONS_GROUP= DATABASE
COMP_DESC= Software components
OPTIONS_MULTI_COMP= CLIENT SERVER
OPTIONS_RADIO_GRAPHICS= GLVND LEGACY
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
GRAPHICS_DESC= Graphics support
GLVND_DESC= Use libOpenGL or libGLX
LEGACY_DESC= Use libGL - where GLVND may be broken on nvidia
GLES_DESC= Use libOpenGLES instead of libOpenGL
GLVND_CMAKE_ON= -DOPENGL_GL_PREFERENCE="GLVND"
LEGACY_CMAKE_ON= -DOPENGL_GL_PREFERENCE="LEGACY"
GLES_CMAKE_BOOL= ENABLE_GLES
DATABASE_DESC= Database support
OPTIONS_GROUP_DATABASE= LEVELDB REDIS SPATIAL
#OPTIONS_GROUP_DATABASE= LEVELDB PGSQL REDIS SPATIAL
OPTIONS_DEFAULT= CLIENT CURL DOCS FREETYPE GLVND LUAJIT NCURSES SOUND \
SYSTEM_GMP SYSTEM_JSONCPP
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 jpeg xorg
CLIENT_USE= GL=gl,glu \
XORG=ice,sm,x11,xext,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= Enable ncurses console
NCURSES_CMAKE_BOOL= ENABLE_CURSES
NCURSES_USES= ncurses
LUAJIT_DESC= LuaJIT support (lang/luajit-openresty)
LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit-openresty
PGSQL_USES= pgsql
PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL
#PGSQL_LIB_DEPENDS= libsqlite3.so:databases/sqlite3 # probable depend - check when this pgsql builds
LEVELDB_DESC= Enable LevelDB backend
LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB
LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb
REDIS_DESC= Enable Redis backend
REDIS_CMAKE_BOOL= ENABLE_REDIS
REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis
SPATIAL_DESC= Enable SpatialIndex AreaStore backend
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
PROMETHEUS_DESC= Build with Prometheus metrics exporter
PROMETHEUS_CMAKE_BOOL= ENABLE_PROMETHEUS
#PROMETHEUS_USES= gettext
.include <bsd.port.options.mk>
.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
USERS= minetest
GROUPS= minetest
.endif
# 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.
#post-patch:
# @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \
# ${WRKSRC}/cmake/Modules/*.cmake
.include <bsd.port.mk>
</pre></div>
<br>
<p>irrlichtMt:</p>
<div><pre>
PORTNAME= irrlichtMt
DISTVERSION= g20210524
CATEGORIES= x11-toolkits graphics
DISTNAME= master
DIST_SUBDIR= ${PORTNAME}
MAINTAINER= nope@nothere
COMMENT= High performance realtime 3D engine - minetest fork
LICENSE= ZLIB
LIB_DEPENDS= libpng.so:graphics/png
USES= alias cmake compiler:c11 dos2unix jpeg gl xorg
DOS2UNIX_GLOB= *.cpp *.h *.txt Makefile
USE_GITHUB= nodefault
GH_ACCOUNT= minetest
GH_PROJECT= irrlicht
GH_TAGNAME= 393793f28afa15641533f687f3a242e32a052fbc
CMAKE_ARGS= -DCMAKE_BUILD_TYPE="MinSizeRel" \
-DCUSTOM_MANDIR="${PREFIX}/man"
USE_GL= gl glu
USE_XORG= x11 xxf86vm
USE_LDCONFIG= yes
WRKSRC= ${WRKDIR}/irrlicht-${GH_TAGNAME}
#OPTIONS_DEFINE= EXAMPLES
#EXAMPLES_CMAKE_BOOL= BUILD_EXAMPLES
#Provided in directory below, right after make (prior to install), so need more mechanism to build and install them
#x11-toolkits/irrlicht-minetest/work/irrlicht-master/examples
.include <bsd.port.mk>
</pre></div>
<p>Playing with the built port a bit more, it seems there are some items in the configuration panels in minetest itself which may lead to a crash, but other than fiddling with any of those I do not see any major issues. The executable also seems to
be smaller than the former minetest even with the same options ticked, so either those options do nothing in the dev version or a bit of bloat was removed. One other thing, after I had to rebuild both due to moving these dev port
directories into my home, and a minor issue with gitup caused by branch names on github, I found that a few details were not as perfected. The <span class="code">CMAKE_SOURCE_PATH=${WRKDIR}/irrlicht-master</span> or <span class="code">WRKSRC=${WRKDIR}/irrlicht-master</span> lines
needed to be added after too much trial-and-error and documentation chasing. I also realized that there are conditional lines in any pkg-plist which relate to the options of the Makefile. Any lines which have %%OPTION%% prefix will only
be in effect when that OPTION is chosen in the configuration when it is built. I am fairly certain that aside from the glaring issue of grabbing a master.zip file direct from github, though using wget since it doesn't seem to work
automatically with the make process, and then revising the distinfo (make makesum) after, both which still need to be fixed if possible, this endeavor seems to finally actually complete. Since my philosophy to expose things to the user,
which allows them to make their own choices even if bad, and my methods are different than the maintainer, I will keep this Makefile as my own private project. It may not ever be adopted as is, officially, although anyone might still
be able to use it since I am making it available here.</p>
<p>Since all but the automated fetch of distribution source functions pretty well, this is the part I need to iron out. This is much more of a challenge than it should be. As usual, documentation gives some vaguely specific examples which
of course are not near enough to what I seem to need. That means there is likely room for improvement in the porter's handbook. The portlint and portfmt tools are helpful to make a reasonably coherent and consistent Makefile. I use them
at the very least because I have not edited thousands nor constructed my own script for doing so, and do not usually know the exact order of items in the Makefile. Since both ports need to be obtained similarly, once I solved it for one port
I could adapt the same changes to the other one. As I have finally completed the entire porting of minetest-dev and irrlicht-minetest (irrlichtMt) and created some github repos for them, if you so choose you can try them out as well.</p>
<p>I am not a port maintainer and although I may have based my Makefiles upon prior works, these are different, unique, and likely never to be official 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 I can do no more than suggest caveat emptor for both and all. I will attempt to keep both updated nearly as frequently as I discover new commits.</p>
Repo urls:
<ul>
<li><a href="https://github.com/tigersharke/minetest-dev.git">minetest-dev.git</a></li>
<li><a href="https://github.com/tigersharke/irrlicht-minetest.git">irrlicht-minetest.git</a></li>
</ul>
<p>Anyone who tried the minetest-dev Makefile immediately after it was initially provided by my repo may have had a fetch issue. This, oddly, was caused by the subdirectory for the distinfo file not being named minetest-dev. This has now been corrected,
and updated to the April 5th commit (see the distversion which means github 2021 April 5th), the pkg-plist also adjusted since some tests are now eliminated by upstream it seems. Please note that until I can figure out some way for those distinfo version strings
to be synchronized between minetest-dev and irrlicht-minetest, that if minetest-dev is updated, then you should update irrlichtMt also.</p>
<p>I have just corrected another oversight. If you had built both ports there should have been no adverse effect, the devel version of minetest would seek and find libIrrlichtMt,
but the minetest-dev Makefile had the former libIrrlicht as a dependency and so would not automatically cause it to be built. The repo has been updated to fix this, the included Makefile has been updated for this blog post.
Future updates to the repo will not be updated here unless to correct any fundamental flaw as has been done previously. If you wish to view the most current Makefile, please visit the appropriate repo.</p> Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-5715537977203040682021-03-31T04:12:00.005-05:002021-06-21T21:51:49.698-05:00Minetest better<table align="center" cellpadding="0" cellspacing="0" class=
"tr-caption-container" style=
"margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a href="https://www.minetest.net/"
style="margin-left: auto; margin-right: auto;" target=
"_blank"><img alt="minetest game example screenshot" border="0"
data-original-height="540" data-original-width="960" height="225"
src=
"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC-aXJLtF2fq5BAde3aGP79SHY2DQVMV252M5M0rr9GxKtm-Sl16kjiZGzDcExNJDpwnZpRHtwzZFEujsWhypdn0dIS8MhW5FTAnZs-qY4kchZ8lgFTcMx6mWA9-G8M4AGtcRSQMkjShw/w400-h225/1-thumb.jpg"
title="Minetest site gallery image" width="400"></a>
</td>
</tr>
<tr align="right">
<td class="tr-caption"><span style="font-size: xx-small;">Minetest
gallery pic</span><br>
</td>
</tr>
</tbody>
</table>
<p>This post has been revisited a couple times but I feel it is in its final form as I chose to continue with the development version instead of worrying about something I cannot control.</p>
<h3>October 2020</h3>
<p>There is a game in our ports collection which I spent far too
many hours playing due to being temporarily out of work (but not
jobless) beyond my control beginning mid March 2020. It gave me
something to do, to fill the empty, and I played it from a
<i>vanilla ports install</i>. When I say "vanilla ports
install" what I mean is that I did not modify anything about it
except for the configuration exposed by the person who ported it to
FreeBSD. This 'vanilla install' became customized when I saw
that a newer version was available to the wider gamer community but
had not yet been updated for FreeBSD.</p>
<p>I did my best to get it to work but discovered that some of the
patches automatically applied did not need to be used, they failed
to be applied to the newer version. This was just the
beginning of my tinkering to get minetest to function as well as
possible. I am sure that using a bundled, abbreviated,
adequately functional component would be less efficient than to use
the full version which may be available from ports. I
discovered this by investigating the various exposed options I
could tick to know what they were about, and seeing others
described by the Linux devs which were not.</p>
<p>The overview of the change, the left is how it appeared on October 3, 2020
at <a href="http://svnweb.freebsd.org">svnweb.freebsd.org</a> and
the right is how the Makefile was on my box then, the changes emphasized with highlighting.</p>
<div><pre class="diff">
# Created by: Dmitry Marakasov <amdmi3@FreeBSD.org> # Created by: Dmitry Marakasov <amdmi3@FreeBSD.org>
# $FreeBSD$ # $FreeBSD$
PORTNAME= minetest PORTNAME= minetest
PORTVERSION= 5.3.0 PORTVERSION= 5.3.0
CATEGORIES= games CATEGORIES= games
MAINTAINER= amdmi3@FreeB MAINTAINER= amdmi3@FreeBSD.org
COMMENT= Near-infinite-world block sandbox game COMMENT= Near-infinite-world block sandbox game
LICENSE= LGPL21+ LICENSE= LGPL21+
LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt
LIB_DEPENDS= libsqlite3.so:databases/sqlite3 \ LIB_DEPENDS= libsqlite3.so:databases/sqlite3 \
libgmp.so:math/gmp | libgmp.so:math/gmp <span class="highlight">\</span>
> <span class="highlight">libjsoncpp.so:devel/jsoncpp</span>
USE_GITHUB= yes USE_GITHUB= yes
GH_ACCOUNT= minetest GH_ACCOUNT= minetest
USES= cmake compiler:c11 iconv:wchar_t USES= cmake compiler:c11 iconv:wchar_t
CMAKE_ARGS= -DCUSTOM_MANDIR="${PREFIX}/man" \ CMAKE_ARGS= -DCUSTOM_MANDIR="${PREFIX}/man" \
-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" | -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" <span class="highlight">\</span>
> <span class="highlight">-DENABLE_SYSTEM_JSONCPP=ON \</span>
> <span class="highlight">-DJSON_INCLUDE_DIR=/usr/local/include/json \</span>
> <span class="highlight">-DCMAKE_BUILD_TYPE=MinSizeRel \</span>
> <span class="highlight">-DOPENGL_GL_PREFERENCE=LEGACY \</span>
> <span class="highlight">-DENABLE_SYSTEM_GMP=ON</span>
LDFLAGS_i386= -Wl,-znotext LDFLAGS_i386= -Wl,-znotext
PORTDATA= * PORTDATA= *
PORTDOCS= * PORTDOCS= *
OPTIONS_DEFINE= CURL SOUND FREETYPE NCURSES LUAJIT \ OPTIONS_DEFINE= CURL SOUND FREETYPE NCURSES LUAJIT \
DOCS EXAMPLES NLS DOCS EXAMPLES NLS
OPTIONS_MULTI= COMP OPTIONS_MULTI= COMP
OPTIONS_GROUP= DATABASE OPTIONS_GROUP= DATABASE
COMP_DESC= Software components COMP_DESC= Software components
OPTIONS_MULTI_COMP= CLIENT SERVER OPTIONS_MULTI_COMP= CLIENT SERVER
DATABASE_DESC= Database support DATABASE_DESC= Database support
OPTIONS_GROUP_DATABASE= PGSQL LEVELDB REDIS SPATIAL OPTIONS_GROUP_DATABASE= PGSQL LEVELDB REDIS SPATIAL
OPTIONS_DEFAULT= CLIENT SERVER \ OPTIONS_DEFAULT= CLIENT SERVER \
CURL SOUND FREETYPE NCURSES LUAJIT CURL SOUND FREETYPE NCURSES LUAJIT
OPTIONS_EXCLUDE_powerpc64= LUAJIT OPTIONS_EXCLUDE_powerpc64= LUAJIT
OPTIONS_SUB= yes OPTIONS_SUB= yes
CLIENT_DESC= Build client CLIENT_DESC= Build client
CLIENT_CMAKE_BOOL= BUILD_CLIENT CLIENT_CMAKE_BOOL= BUILD_CLIENT
CLIENT_LIB_DEPENDS= libpng.so:graphics/png \ CLIENT_LIB_DEPENDS= libpng.so:graphics/png \
libIrrlicht.so:x11-toolkits/irrlicht libIrrlicht.so:x11-toolkits/irrlicht
CLIENT_USES= gl jpeg xorg CLIENT_USES= gl jpeg xorg
CLIENT_USE= GL=gl XORG=x11,xext,xxf86vm CLIENT_USE= GL=gl XORG=x11,xext,xxf86vm
SERVER_DESC= Build server SERVER_DESC= Build server
SERVER_CMAKE_BOOL= BUILD_SERVER SERVER_CMAKE_BOOL= BUILD_SERVER
CURL_DESC= Enable cURL support for fetching media CURL_DESC= Enable cURL support for fetching media
CURL_CMAKE_BOOL= ENABLE_CURL CURL_CMAKE_BOOL= ENABLE_CURL
CURL_LIB_DEPENDS= libcurl.so:ftp/curl CURL_LIB_DEPENDS= libcurl.so:ftp/curl
SOUND_DESC= Enable sound SOUND_DESC= Enable sound
SOUND_CMAKE_BOOL= ENABLE_SOUND SOUND_CMAKE_BOOL= ENABLE_SOUND
FREETYPE_DESC= Support for TrueType fonts with unicode FREETYPE_DESC= Support for TrueType fonts with unicode
FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
NCURSES_DESC= Enable ncurses console NCURSES_DESC= Enable ncurses console
NCURSES_CMAKE_BOOL= ENABLE_CURSES NCURSES_CMAKE_BOOL= ENABLE_CURSES
NCURSES_USES= ncurses NCURSES_USES= ncurses
LUAJIT_DESC= LuaJIT support LUAJIT_DESC= LuaJIT support
LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit
PGSQL_USES= pgsql PGSQL_USES= pgsql
PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL
LEVELDB_DESC= Enable LevelDB backend LEVELDB_DESC= Enable LevelDB backend
LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB
LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB
REDIS_DESC= Enable Redis backend REDIS_DESC= Enable Redis backend
REDIS_CMAKE_BOOL= ENABLE_REDIS REDIS_CMAKE_BOOL= ENABLE_REDIS
REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis
SPATIAL_DESC= Enable SpatialIndex AreaStore backend SPATIAL_DESC= Enable SpatialIndex AreaStore backend
SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex
SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL
NLS_CMAKE_BOOL= ENABLE_GETTEXT NLS_CMAKE_BOOL= ENABLE_GETTEXT
NLS_USES= gettext NLS_USES= gettext
NLS_LDFLAGS= -L${LOCALBASE}/lib NLS_LDFLAGS= -L${LOCALBASE}/lib
.include <bsd.port.options.mk> .include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND} .if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND}
USES+= openal USES+= openal
LIB_DEPENDS+= libvorbis.so:audio/libvorbis \ LIB_DEPENDS+= libvorbis.so:audio/libvorbis \
libogg.so:audio/libogg libogg.so:audio/libogg
.endif .endif
.if ${PORT_OPTIONS:MSERVER} .if ${PORT_OPTIONS:MSERVER}
USE_RC_SUBR= ${PORTNAME} USE_RC_SUBR= ${PORTNAME}
USERS= ${PORTNAME} USERS= ${PORTNAME}
GROUPS= ${PORTNAME} GROUPS= ${PORTNAME}
.endif .endif
# hacky way to not bring irrlicht and X11 depends for server only # hacky way to not bring irrlicht and X11 depends for server only
.if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER} .if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER}
BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch
IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include
CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}" CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}"
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend
.endif .endif
post-extract: post-extract:
# make sure no bundled gmp is used # make sure no bundled gmp is used
@${RM} -rf ${WRKSRC}/lib/gmp @${RM} -rf ${WRKSRC}/lib/gmp
# bundled jsoncpp is OK, see comment in cmake/Modules/FindJson.cmake # bundled jsoncpp is OK, see comment in cmake/Modules/FindJson.cmake
# (not sure if it affects FreeBSD, but too lazy to investigate) # (not sure if it affects FreeBSD, but too lazy to investigate)
# bundled lua is OK, there's no option to use system one # bundled lua is OK, there's no option to use system one
post-patch: post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \
${WRKSRC}/cmake/Modules/*.cmake ${WRKSRC}/cmake/Modules/*.cmake
.include <bsd.port.mk> .include <bsd.port.mk>
</pre></div>
<p>In addition to the above adjustments to the Makefile, there may
be a patch file which must be removed or hidden in order for my
modified build to succeed. The file is <span class=
"file">/usr/ports/games/files/patch-src_CMakeLists.txt</span></p>
<p>As you can see, my
preference is for those things installed within the system as
opposed to those which may be bundled as part of the tarball. As
yet I have not absolutely verified or conclusively tested whether
the changes I made actually result in a speedier or more efficient
minetest executable. Take the above as you wish, choose to use it
as described but I suggest caution if you further adjust the
modifications. Specifically, the LIB_DEPENDS should in most cases
have a matching CMAKE_ARGS equivalent.</p>
<p>I believe the
<span class="code">iconv:wchar_t</span> which I removed relates to
languages which would need wide characters, and this allows for
conversions which may be necessary for that situation. I will
not be needing wide characters for my singleplayer or client
gameplay, so that is safe for me to excise. I do not know
exactly how the <span class="code">cmake
compiler:c++11-lang</span></span> definition changes the way it is
built but it is the one that works for me and my other
adjustments. The other CMAKE_ARGS item, <span class="code">-DCMAKE_BUILD_TYPE=MinSizeRel</span> is there
because I believe it is an improvement, it builds with it but I do
not know exactly what its function or change is.</p>
<p>I would like to make a proper comparison between the vanilla
install and my modification but this needs a bit more research and
possibly additional software tools for testing.</p>
<p>Had I used <span class="executable">portlint</span> in the minetest directory at any time
during my modification, I would have discovered a mistake in the
original Makefile. A report from <span class="executable">portlint</span> indicates
that the USES= line should appear before any USE_ lines which in
this specific example is USE_GITHUB=yes so if <span class="executable">poudriere</span> is
used with portlint=yes, it may deny building. Change this in
the <span class="file">Makefile</span> unless it gets
fixed by the port maintainer first, but then make note that my
<span class="file">Makefile</span> had the flaw and so
do not restore that flaw by copying it from above.</p>
<h3>Update - March 2021</h3>
<p>The port maintainer has since adopted some changes with recent updates to minetest by upstream causing this port to be reexamined. I have also decided to look over my changes and how they relate to the current Makefile
and try to make any possible improvements for myself which would enhance performance. I am also going to submit a few bug reports for this port so that my changes can be affected officially. The primary one being
that the patch I remove is not necessary because it canbe accomplished properly by cmake arguements. I may have missed some things or made slightly incorrect adjustments my first time through, even though the changes
may have been appropriate and correct aside from syntax. So lets see how the current modified Makefile looks as the comparison below illustrates today, March 30, 2021.
</p>
<P>First the hard-coded default method which is similar to my previous modification from back in October.</p>
<div><pre class="diff">
# Created by: Dmitry Marakasov <amdmi3@FreeBSD.org> # Created by: Dmitry Marakasov <amdmi3@FreeBSD.org>
# $FreeBSD$ # $FreeBSD$
PORTNAME= minetest PORTNAME= minetest
PORTVERSION= 5.4.0 PORTVERSION= 5.4.0
PORTREVISION= 1 PORTREVISION= 1
CATEGORIES= games CATEGORIES= games
MAINTAINER= amdmi3@FreeBSD.org MAINTAINER= amdmi3@FreeBSD.org
COMMENT= Near-infinite-world block sandbox game COMMENT= Near-infinite-world block sandbox game
LICENSE= LGPL21+ LICENSE= LGPL21+
LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt
LIB_DEPENDS= libsqlite3.so:databases/sqlite3 \ | LIB_DEPENDS= libgmp.so:math/gmp \
libgmp.so:math/gmp \ | libjsoncpp.so:devel/jsoncpp \
libjsoncpp.so:devel/jsoncpp | libsqlite3.so:databases/sqlite3
USE_GITHUB= yes <
GH_ACCOUNT= minetest <
<
USES= cmake compiler:c11 iconv:wchar_t USES= cmake compiler:c11 iconv:wchar_t
CMAKE_ARGS= -DCUSTOM_MANDIR="${PREFIX}/man" \ | CMAKE_ARGS= <span class="highlight">-DBUILD_UNITTESTS="FALSE" \</span>
> <span class="highlight">-DCMAKE_BUILD_TYPE="MinSizeRel" \</span>
-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \ -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
-DENABLE_SYSTEM_JSONCPP=ON | -DCUSTOM_MANDIR="${PREFIX}/man" \
> <span class="highlight">-DENABLE_SYSTEM_GMP="ON" \</span>
> -DENABLE_SYSTEM_JSONCPP="ON" \
> <span class="highlight">-DJSON_INCLUDE_DIR="${PREFIX}/include/jsoncpp" \</span>
> <span class="highlight">-DOPENGL_GL_PREFERENCE="GLVND" \</span>
> <span class="highlight">-DREQUIRE_LUAJIT="ON"</span>
> # -DVERSION_EXTRA="_${PORTREVISION}"
> # OpenGL_GL_PREFERENCE Allowed values are 'GLVND' and 'LEGACY'
> # See CMake Policy CMP0072 for reference. GLVND is broken on some nvidia setups, so use LEGACY instead.
> USE_GITHUB= yes
> GH_ACCOUNT= minetest
>
LDFLAGS_i386= -Wl,-znotext LDFLAGS_i386= -Wl,-znotext
PORTDATA= * PORTDATA= *
PORTDOCS= * PORTDOCS= *
OPTIONS_DEFINE= CURL SOUND FREETYPE NCURSES LUAJIT \ | OPTIONS_DEFINE= CURL DOCS EXAMPLES FREETYPE LUAJIT NCURSES NLS SOUND
DOCS EXAMPLES NLS <
OPTIONS_MULTI= COMP OPTIONS_MULTI= COMP
OPTIONS_GROUP= DATABASE OPTIONS_GROUP= DATABASE
COMP_DESC= Software components COMP_DESC= Software components
OPTIONS_MULTI_COMP= CLIENT SERVER OPTIONS_MULTI_COMP= CLIENT SERVER
DATABASE_DESC= Database support DATABASE_DESC= Database support
OPTIONS_GROUP_DATABASE= PGSQL LEVELDB REDIS SPATIAL | OPTIONS_GROUP_DATABASE= LEVELDB PGSQL REDIS SPATIAL
OPTIONS_DEFAULT= CLIENT SERVER \ | OPTIONS_DEFAULT= CLIENT CURL FREETYPE LUAJIT NCURSES SERVER SOUND
CURL SOUND FREETYPE NCURSES LUAJIT <
OPTIONS_SUB= yes OPTIONS_SUB= yes
CLIENT_DESC= Build client CLIENT_DESC= Build client
CLIENT_CMAKE_BOOL= BUILD_CLIENT CLIENT_CMAKE_BOOL= BUILD_CLIENT
CLIENT_LIB_DEPENDS= libpng.so:graphics/png \ | CLIENT_LIB_DEPENDS= libIrrlicht.so:x11-toolkits/irrlicht \
libIrrlicht.so:x11-toolkits/irrlicht | libpng.so:graphics/png
CLIENT_USES= gl jpeg xorg CLIENT_USES= gl jpeg xorg
CLIENT_USE= GL=gl XORG=x11,xext,xxf86vm | CLIENT_USE= GL=gl \
> XORG=x11,xext,xxf86vm
SERVER_DESC= Build server SERVER_DESC= Build server
SERVER_CMAKE_BOOL= BUILD_SERVER SERVER_CMAKE_BOOL= BUILD_SERVER
CURL_DESC= Enable cURL support for fetching media CURL_DESC= Enable cURL support for fetching media
CURL_CMAKE_BOOL= ENABLE_CURL CURL_CMAKE_BOOL= ENABLE_CURL
CURL_LIB_DEPENDS= libcurl.so:ftp/curl CURL_LIB_DEPENDS= libcurl.so:ftp/curl
SOUND_DESC= Enable sound SOUND_DESC= Enable sound
SOUND_CMAKE_BOOL= ENABLE_SOUND SOUND_CMAKE_BOOL= ENABLE_SOUND
FREETYPE_DESC= Support for TrueType fonts with unicode FREETYPE_DESC= Support for TrueType fonts with unicode
FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
NCURSES_DESC= Enable ncurses console NCURSES_DESC= Enable ncurses console
NCURSES_CMAKE_BOOL= ENABLE_CURSES NCURSES_CMAKE_BOOL= ENABLE_CURSES
NCURSES_USES= ncurses NCURSES_USES= ncurses
LUAJIT_DESC= LuaJIT support LUAJIT_DESC= LuaJIT support
LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit-openresty LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit-openresty
PGSQL_USES= pgsql PGSQL_USES= pgsql
PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL
LEVELDB_DESC= Enable LevelDB backend LEVELDB_DESC= Enable LevelDB backend
LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB
LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb
REDIS_DESC= Enable Redis backend REDIS_DESC= Enable Redis backend
REDIS_CMAKE_BOOL= ENABLE_REDIS REDIS_CMAKE_BOOL= ENABLE_REDIS
REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis
SPATIAL_DESC= Enable SpatialIndex AreaStore backend SPATIAL_DESC= Enable SpatialIndex AreaStore backend
SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex
SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL
NLS_CMAKE_BOOL= ENABLE_GETTEXT | NLS_CMAKE_BOOL= ENABLE_GETTEXT
NLS_USES= gettext | NLS_USES= gettext
NLS_LDFLAGS= -L${LOCALBASE}/lib | NLS_LDFLAGS= -L${LOCALBASE}/lib
.include <bsd.port.options.mk> .include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND} .if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND}
USES+= openal USES+= openal
LIB_DEPENDS+= libvorbis.so:audio/libvorbis \ | LIB_DEPENDS+= libogg.so:audio/libogg \
libogg.so:audio/libogg | libvorbis.so:audio/libvorbis
.endif .endif
.if ${PORT_OPTIONS:MSERVER} .if ${PORT_OPTIONS:MSERVER}
USE_RC_SUBR= ${PORTNAME} USE_RC_SUBR= ${PORTNAME}
USERS= ${PORTNAME} USERS= ${PORTNAME}
GROUPS= ${PORTNAME} GROUPS= ${PORTNAME}
.endif .endif
# hacky way to not bring irrlicht and X11 depends for server only # hacky way to not bring irrlicht and X11 depends for server only
.if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER} .if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER}
BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch | BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch
IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include
CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}" | CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}"
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend | EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend
.endif .endif
post-extract: post-extract:
# make sure no bundled gmp is used # make sure no bundled gmp is used
@${RM} -rf ${WRKSRC}/lib/gmp ${WRKSRC}/lib/jsoncpp @${RM} -rf ${WRKSRC}/lib/gmp ${WRKSRC}/lib/jsoncpp
# bundled lua is OK, there's no option to use system one # bundled lua is OK, there's no option to use system one
post-patch: post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \
${WRKSRC}/cmake/Modules/*.cmake ${WRKSRC}/cmake/Modules/*.cmake
.include <bsd.port.mk> .include <bsd.port.mk>
</pre></div>
<p>Sometime after deciding that the above was perfected, I realized that if I am to eventually submit a bug report to the maintainer for improvement, that I might attempt a more <i>rococo</i> version which will have all the
option configs that interest me exposed to the light of day rather than hiding in the shadows of a developer's documentation. This much more complex version will take a bit of effort to perfect and I still may flub
something. My makefile (below) permits the user to choose bundled gmp or jsoncpp rather than deciding that either is not desirable.</p>
<div><pre class="diff">
# Created by: Dmitry Marakasov <amdmi3@FreeBSD.org> # Created by: Dmitry Marakasov <amdmi3@FreeBSD.org>
# $FreeBSD$ # $FreeBSD$
PORTNAME= minetest PORTNAME= minetest
PORTVERSION= 5.4.0 PORTVERSION= 5.4.0
PORTREVISION= 1 PORTREVISION= 1
CATEGORIES= games CATEGORIES= games
MAINTAINER= amdmi3@FreeBSD.org MAINTAINER= amdmi3@FreeBSD.org
COMMENT= Near-infinite-world block sandbox game COMMENT= Near-infinite-world block sandbox game
LICENSE= LGPL21+ LICENSE= LGPL21+
LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt
LIB_DEPENDS= libsqlite3.so:databases/sqlite3 \ | LIB_DEPENDS= libsqlite3.so:databases/sqlite3
libgmp.so:math/gmp \ <
libjsoncpp.so:devel/jsoncpp <
USE_GITHUB= yes <
GH_ACCOUNT= minetest <
<
USES= cmake compiler:c11 iconv:wchar_t USES= cmake compiler:c11 iconv:wchar_t
CMAKE_ARGS= -DCUSTOM_MANDIR="${PREFIX}/man" \ | CMAKE_ARGS= -DBUILD_UNITTESTS="FALSE" \
> <span class="highlight">-DCMAKE_BUILD_TYPE="MinSizeRel" \</span>
-DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \ -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \
-DENABLE_SYSTEM_JSONCPP=ON | -DCUSTOM_MANDIR="${PREFIX}/man"
> # -DVERSION_EXTRA="_${PORTREVISION}" # Except that there is an automatic added dash seperator.
> # OpenGL_GL_PREFERENCE Allowed values are 'GLVND' and 'LEGACY'
> # See CMake Policy CMP0072 for reference: cmake --help-policy CMP0072. GLVND is broken on some nvidia setups, so use LEGACY instead.
> USE_GITHUB= yes
> GH_ACCOUNT= minetest
>
LDFLAGS_i386= -Wl,-znotext LDFLAGS_i386= -Wl,-znotext
PORTDATA= * PORTDATA= *
PORTDOCS= * PORTDOCS= *
OPTIONS_DEFINE= CURL SOUND FREETYPE NCURSES LUAJIT \ | OPTIONS_DEFINE= CURL DOCS EXAMPLES FREETYPE LUAJIT NCURSES NLS SOUND <span class="highlight">SYSTEM_GMP</span> \
DOCS EXAMPLES NLS | <span class="highlight">SYSTEM_JSONCPP</span>
OPTIONS_MULTI= COMP OPTIONS_MULTI= COMP
> <span class="highlight">OPTIONS_RADIO= GRAPHICS</span>
OPTIONS_GROUP= DATABASE OPTIONS_GROUP= DATABASE
COMP_DESC= Software components COMP_DESC= Software components
OPTIONS_MULTI_COMP= CLIENT SERVER OPTIONS_MULTI_COMP= CLIENT SERVER
> <span class="highlight">OPTIONS_RADIO_GRAPHICS= GLVND LEGACY</span>
>
> <span class="highlight">SYSTEM_GMP_DESC= Use gmp from ports (ENABLE_SYSTEM_GMP)</span>
> <span class="highlight">SYSTEM_GMP_CMAKE_BOOL= ENABLE_SYSTEM_GMP</span>
> <span class="highlight">SYSTEM_GMP_CMAKE_ON= -DGMP_INCLUDE_DIR="${PREFIX}/include"</span>
> <span class="highlight">SYSTEM_GMP_LIB_DEPENDS= libgmp.so:math/gmp</span>
>
> <span class="highlight">SYSTEM_JSONCPP_DESC= Use jsoncpp from ports (ENABLE_SYSTEM_JSONCPP)</span>
> <span class="highlight">SYSTEM_JSONCPP_CMAKE_BOOL= ENABLE_SYSTEM_JSONCPP</span>
> <span class="highlight">SYSTEM_JSONCPP_CMAKE_ON= -DJSON_INCLUDE_DIR="${PREFIX}/include/jsoncpp"</span>
> <span class="highlight">SYSTEM_JSONCPP_LIB_DEPENDS= libjsoncpp.so:devel/jsoncpp</span>
>
> <span class="highlight">GRAPHICS_DESC= Graphics support</span>
> <span class="highlight">GLVND_DESC= Use libOpenGL or libGLX</span>
> <span class="highlight">LEGACY_DESC= Use libGL - where GLVND may be broken on nvidia</span>
>
> <span class="highlight">GLVND_CMAKE_ON= -DOPENGL_GL_PREFERENCE="GLVND"</span>
> <span class="highlight">LEGACY_CMAKE_ON= -DOPENGL_GL_PREFERENCE="LEGACY"</span>
>
DATABASE_DESC= Database support DATABASE_DESC= Database support
OPTIONS_GROUP_DATABASE= PGSQL LEVELDB REDIS SPATIAL | OPTIONS_GROUP_DATABASE= LEVELDB PGSQL REDIS SPATIAL
OPTIONS_DEFAULT= CLIENT SERVER \ | OPTIONS_DEFAULT= CLIENT CURL FREETYPE GLVND LUAJIT NCURSES SERVER SOUND \
CURL SOUND FREETYPE NCURSES LUAJIT | SYSTEM_GMP SYSTEM_JSONCPP
OPTIONS_SUB= yes OPTIONS_SUB= yes
CLIENT_DESC= Build client CLIENT_DESC= Build client
CLIENT_CMAKE_BOOL= BUILD_CLIENT CLIENT_CMAKE_BOOL= BUILD_CLIENT
CLIENT_LIB_DEPENDS= libpng.so:graphics/png \ | CLIENT_LIB_DEPENDS= libIrrlicht.so:x11-toolkits/irrlicht \
libIrrlicht.so:x11-toolkits/irrlicht | libpng.so:graphics/png
CLIENT_USES= gl jpeg xorg CLIENT_USES= gl jpeg xorg
CLIENT_USE= GL=gl XORG=x11,xext,xxf86vm | CLIENT_USE= GL=gl \
> XORG=x11,xext,xxf86vm
SERVER_DESC= Build server SERVER_DESC= Build server
SERVER_CMAKE_BOOL= BUILD_SERVER SERVER_CMAKE_BOOL= BUILD_SERVER
CURL_DESC= Enable cURL support for fetching media CURL_DESC= Enable cURL support for fetching media
CURL_CMAKE_BOOL= ENABLE_CURL CURL_CMAKE_BOOL= ENABLE_CURL
CURL_LIB_DEPENDS= libcurl.so:ftp/curl CURL_LIB_DEPENDS= libcurl.so:ftp/curl
SOUND_DESC= Enable sound SOUND_DESC= Enable sound
SOUND_CMAKE_BOOL= ENABLE_SOUND SOUND_CMAKE_BOOL= ENABLE_SOUND
FREETYPE_DESC= Support for TrueType fonts with unicode FREETYPE_DESC= Support for TrueType fonts with unicode
FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE FREETYPE_CMAKE_BOOL= ENABLE_FREETYPE
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
NCURSES_DESC= Enable ncurses console NCURSES_DESC= Enable ncurses console
NCURSES_CMAKE_BOOL= ENABLE_CURSES NCURSES_CMAKE_BOOL= ENABLE_CURSES
NCURSES_USES= ncurses NCURSES_USES= ncurses
LUAJIT_DESC= LuaJIT support LUAJIT_DESC= LuaJIT support
LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit-openresty LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit-openresty
PGSQL_USES= pgsql PGSQL_USES= pgsql
PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL
LEVELDB_DESC= Enable LevelDB backend LEVELDB_DESC= Enable LevelDB backend
LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB
LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb
REDIS_DESC= Enable Redis backend REDIS_DESC= Enable Redis backend
REDIS_CMAKE_BOOL= ENABLE_REDIS REDIS_CMAKE_BOOL= ENABLE_REDIS
REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis
SPATIAL_DESC= Enable SpatialIndex AreaStore backend SPATIAL_DESC= Enable SpatialIndex AreaStore backend
SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex
SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL
NLS_CMAKE_BOOL= ENABLE_GETTEXT | NLS_CMAKE_BOOL= ENABLE_GETTEXT
NLS_USES= gettext | NLS_USES= gettext
NLS_LDFLAGS= -L${LOCALBASE}/lib | NLS_LDFLAGS= -L${LOCALBASE}/lib
.include <bsd.port.options.mk> .include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND} .if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND}
USES+= openal USES+= openal
LIB_DEPENDS+= libvorbis.so:audio/libvorbis \ | LIB_DEPENDS+= libogg.so:audio/libogg \
libogg.so:audio/libogg | libvorbis.so:audio/libvorbis
.endif .endif
.if ${PORT_OPTIONS:MSERVER} .if ${PORT_OPTIONS:MSERVER}
USE_RC_SUBR= ${PORTNAME} USE_RC_SUBR= ${PORTNAME}
USERS= ${PORTNAME} USERS= ${PORTNAME}
GROUPS= ${PORTNAME} GROUPS= ${PORTNAME}
.endif .endif
# hacky way to not bring irrlicht and X11 depends for server only # hacky way to not bring irrlicht and X11 depends for server only
.if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER} .if ! ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSERVER}
BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch | BUILD_DEPENDS+= ${NONEXISTENT}:x11-toolkits/irrlicht:patch
IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include IRRLICHT_INCLUDE_DIR= `${MAKE} -C ${PORTSDIR}/x11-toolkits/irrlicht -V WRKSRC`/include
CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}" | CMAKE_ARGS+= -DIRRLICHT_INCLUDE_DIR:STRING="${IRRLICHT_INCLUDE_DIR}"
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend | EXTRA_PATCHES+= ${FILESDIR}/extra-patch-irrlichtdepend
.endif .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.
post-extract: | #post-extract:
# make sure no bundled gmp is used <span class="highlight">#</span> make sure no bundled gmp is used
@${RM} -rf ${WRKSRC}/lib/gmp ${WRKSRC}/lib/jsoncpp | <span class="highlight">#</span> @${RM} -rf ${WRKSRC}/lib/gmp ${WRKSRC}/lib/jsoncpp
# bundled lua is OK, there's no option to use system one # bundled lua is OK, there's no option to use system one</span>
post-patch: post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \
${WRKSRC}/cmake/Modules/*.cmake ${WRKSRC}/cmake/Modules/*.cmake
.include <bsd.port.mk> .include <bsd.port.mk>
</pre></div>
<p>As before and with any of my modifications above, in addition to the above adjustments to the Makefile, there may
be a patch file which must be removed or hidden in order for my
modified build to succeed. The file is <span class=
"file">/usr/ports/games/files/patch-src_CMakeLists.txt</span></p>
<p>The final result comparison of the ncurses configuration menu for default (as it is in ports now) on the left and my new rococo version on the right.</p>
<table width="98%">
<tbody>
<tr>
<td style="width: 48.5%;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXdILb78vdzgOvmS01mTO_JYZlIBSXUhXgWn4sBSb0KPpJy82dnLNVQMMwfloU4tkk2U_nWQ7E_XsE_JfiXS9tzlPdIxgXWdxVrVcw2qyfQ0Y_pLE2FfMqTEVGdgJpG7iAYxuj0nyIfnQ/s730/2021-03-31_01-52-default-minetest-config.png"
style="display: block; padding: 1em 0;"><img alt="" border="0" width="320" data-original-height="405" data-original-width="730"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXdILb78vdzgOvmS01mTO_JYZlIBSXUhXgWn4sBSb0KPpJy82dnLNVQMMwfloU4tkk2U_nWQ7E_XsE_JfiXS9tzlPdIxgXWdxVrVcw2qyfQ0Y_pLE2FfMqTEVGdgJpG7iAYxuj0nyIfnQ/s320/2021-03-31_01-52-default-minetest-config.png"/></a>
</td>
<td style="width: 1%;"> </td>
<td style="width: 48.5%;"><a
href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjODE4tKWgsqIx6y5lISM5Twjcm10-kEGT_LQv6cyognDoiIee1P1SRvPbEnJ_espawmQCcCHEzf70aVyw9L37UhJ68BO2UUxViM-Vh8X6zSyde9eqFZiSuxvRFYcf2-tOSjpMdzExkYRM/s734/2021-03-31_01-51-rococo-minetest-config.png"
style="display: block; padding: 1em 0;"><img alt="" border="0" width="320" data-original-height="495" data-original-width="734"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjODE4tKWgsqIx6y5lISM5Twjcm10-kEGT_LQv6cyognDoiIee1P1SRvPbEnJ_espawmQCcCHEzf70aVyw9L37UhJ68BO2UUxViM-Vh8X6zSyde9eqFZiSuxvRFYcf2-tOSjpMdzExkYRM/s320/2021-03-31_01-51-rococo-minetest-config.png"/></a>
</td>
</tr>
</tbody>
</table>
<p>It should be noted that while these modifications are not yet made official (and I cannot say for certain if they will be since my philosophy/understanding may be different than the maintainer) this port is also not set to be
built locally by poudriere. Poudriere handles updates to the ports tree in a manner which any local changes would become an extra hassle as it wishes to maintain an exact duplicate, and so instead I will be adding
games/minetest to the blacklist, keeping it out of the poudriere repo. I will build it "manually" from ports and use <a href="https://daemondesktop.blogspot.com/2021/03/tool-without-fanfare.html">gitup</a> to keep a seperate
<span class="file">/usr/ports</span> tree updated without repairing (wiping out) my changes or at least not
complaining when it does so. This seems to be the most reasonable method to have local modified Makefiles for any relatively small subset of ports. I thought I might periodically revisit this port for any improvements
I can make to its Makefile which meant this blog post could become rather long over time and be re-published but have since decided against this. <a href="https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254674" target="_blank">Bug report for games/minetest to propose my revised Makefile.</a></p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-42966415268972704902021-03-28T22:24:00.003-05:002021-03-29T14:42:01.351-05:00umix for TV volume control<p>I use a separate miccus bluetooth transmitter connected by a headphone cable and RCA adapter so that I can listen to my television or pc. Presently I have adapted a bit of magic
that modified my original setup which had two outputs reaching the transmitter but that had a side-effect (60-cycle?) hum and was a mild hassle in general.</p>
<p>Instead of connecting the output of the headphone jack of my 4k PiP-capable monitor to the transmitter, I attach it to the mic port on my PC. The line out port of my motherboard remains
attached to the transmitter by way of an RCA adapter as it had originally. The final piece of the puzzle is a very cool utility called umix which is a simple non-graphical audio mixer.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglF_fN8uu3LttZLMeX_ZbeJw0r1-5IoF0McrdgKZ8L_1N02pCWPoVTSQsBQRwOztgMEl30wpZtaO9ApEk4iyTKC1CGGk0qRI2zWpteFn9iG3jpYzoVFksZC7oYrCb6P0THIXLL4s7K3XM/s713/umix_window.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="455" data-original-width="713" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglF_fN8uu3LttZLMeX_ZbeJw0r1-5IoF0McrdgKZ8L_1N02pCWPoVTSQsBQRwOztgMEl30wpZtaO9ApEk4iyTKC1CGGk0qRI2zWpteFn9iG3jpYzoVFksZC7oYrCb6P0THIXLL4s7K3XM/s320/umix_window.png"/></a></div>
The manual page gives the necessary information on how to use this application, including what I used as the mute toggle key (x).
<div><pre>
UMIX(1) Sound Utilities UMIX(1)
NAME
umix - adjust soundcard mixers
SYNOPSIS
umix [channel volume|left:right][R|P][+|-] device] [-r driver] [-f
configpath] [-ghilqsv]
DESCRIPTION
umix is a program for adjusting soundcard mixers. With it you can
adjust your soundcard volumes, balances and recording sources. It can
be used flexibly from the command-line, or from an interactive user
interface.
You can save your soundcard volumes to a file, and load them
afterwards, for example when when booting the machine.
Channel names are used to specify the volume you want to adjust. You
can check what channels are supported with the -q option. Channel names
can also be shortened if they have enough distinctive letters to
identify the channel, eg. 'volume' can be shortened to 'vol'. If
channel name is specified as all , all available channels are set to
the specified value.
For each channel specified, volume is the volume you want to set, with
both left and right specified as the same, or in left:right format.
You can also specify optional + or - after the volume for increasing or
decreasing the volume for channel, with amount volume. The optional
R or P at the end of the channel argument sets the channel as a current
recording source or normal play, respectively. You can use both upper-
and lowercase letters.
You can slide volumes smoothly in steps from one point to another. The
format is following: startvol,endvol,steps,delay. Here startvol is the
volume you want to slide the volume from, and endvol is the volume you
want to increase or decrease in steps to. Optional parameter steps
specifies the number of steps between the two volumes, and delay the
delay between two steps. Default values for steps is 20, and 20ms for
delay. The optional + or - have no effect when sliding volumes.
The delay can be between 0 and 5 seconds, specified in milliseconds.
Maximum value for steps is the difference between the starting and
destination volume, so that the minimum raise or decrease in one step
is always 1.
All volume settings are parsed the same, so you can use sliding in your
config file too, you just have to edit the config manually. For
example the line
pcm 0,100,25,50
in your config file would slide the volume of 'pcm' from 0 to 100 in 25
steps and with a 50 ms delay when loading settings.
Umix needs read and write permissions to the mixer device. I suggest
that you create a group for this and change permissions so that group
has write and read access to the devices, then add necessary users to
that group.
OPTIONS
-q, --query
Query and print all active channel volumes and stats from all
available devices. Interactive UI is not started.
-l, --load
Load previously saved settings from configpath. If configpath
is specified as '-', settings are loaded from standard input.
Clears the -i option.
-s, --save
Save current mixer settings to configpath. If configpath is
specified as '-', settings are printed to standard output.
Clears the -i option.
-f configpath, --file=configpath
Specify the file used to read and save settings. Defaults to
/etc/umixrc. Sets the -i option.
-d device, --device=device
Specify the device used. Defaults to /dev/mixer. Sets the -i
option.
-r driver, --driver=driver
Specify the driver used. Defaults to OSS. Sets the -i option.
-i, --interactive
Start interactive user interface after processing non-
interactive command-line options.
-g, --globals
Print current global options. This is useful for finding out
what is the default device etc.
-h, --help
Display help and exit.
-v, --version
Display version information and exit.
EXAMPLES
umix -q
Prints all volumes of active channels and their stats. The
output should be self-explanatory.
umix volume 100 bass 88 treble 80 pcm 94
Sets the volume to 100, bass to 88, treble to 80 and PCM to 94.
umix vol 100:80 syn 90:30
Here channel names are shortened and stereo settings are used.
Sets volume`s left to 100, right to 80 and synth`s left to 90
and right to 30.
umix bass 20- pcm 20:10+ ogain 40:45-
Here volumes are incremented or decremented from their original
values. Decreases bass by 20, increases PCM`s left by 20 and
right by 10 and the last one decreases output gain`s left by 40
and right by 45.
umix mic R synth 20P line 10p-
This sets the mic as a recording source, synth as normal play
with volume 20 and line as normal play with volume decreased by
10.
umix pcm 0,60,30,25 vol 100,70 synth 50:50,25:50
Here sliding is demonstrated. The first slides pcm from 0 to 60
with 30 steps and a 25 ms delay, then slides vol from 100 to 70
with default steps and delay and the last one slides synth from
50:50 to 25:50.
umix -f /some/path/umixrc -l
Here the config path is specified as /some/path/umixrc and
settings are loaded from that file.
umix -d /dev/mixer2 -f /somepath/umsettings
The device that is used for mixing is specified as /dev/mixer2,
config path is set as /somepath/umsettings and the interactive
user interface is automatically started, because. -f and -d set
the -i option.
NCURSES USER INTERFACE
The (n)curses based user interface. Designed to be used from a console
or x-terminal.
USAGE
On the left side is the channel menu, which consists of channel names,
stats and volumes. On the right side is the balance menu. The
currently chosen channel is indicated with highlighting its name and
drawing arrows around the chosen menu. You can move around with
default vi/emacs/arrow keys.
Moving up and down selects the current channel, moving left and right
adjusts the volume or balance, depending on which menu you are in. Tab
toggles between volume and balance menus.
If the channel does not support stereo mixing (it`s left and right
values cannot differ), then a '|' at center of the balance is drawn.
KEY BINDINGS
j / ^n / arrow down
Move down.
k / ^p / arrow up
Move up.
h / ^b / arrow left
Decrease volume / balance left.
l / ^f / arrow right
Increase volume / balance right.
] / . Increase volume by fifth of maximum amount.
[ / , Decrease volume by fifth of maximum amount.
Tab Toggle between volume and balance menus.
Space Toggle play / record source.
L Load settings.
S Save settings.
f Specify the config path. This presents a dialog in the lower
border. If no string is given, the path remains unchanged.
e Enter channel volume manually for the current channel. Same
rules apply as with command-line channel settings, so you can
set balances and recording sources too.
n Cycles through available mixer devices. You can see the
currently active mixer and the total number of initialized
mixers in the top border.
m Mutes all those channels that are not already mute. If pressed
again, returns volumes back to the state before muting.
x Excludes the current channel. Same as m but only with the
current channel.
H Displays the help.
q Exit the program.
^l Refresh the screen.
CONFIG FILE
The config consists of global options and mixer settings. Global
options come after the keyword [global]. Global options are read
before loading any mixer settings or parsing command-line options.
Global options are the defaults to use if no command-line options are
given.
Mixer settings come after the keyword [mixers]. The mixer device that
settings are loaded for is specified with the keyword mixer. The
string after mixer= is the path of the mixer device. Then comes the
settings for that mixer. These are parsed like command-line options.
Comments and all other characters are ignored.
FILES
/etc/umixrc
The default configuration file.
$HOME/.umixrc
Used as the config file if exists.
BUGS
When used with terminals that have columns below 35, the output is not
optimal with the ncurses UI.
If the number of channels is greater than number of lines on screen,
you cannot adjust channels that exceed the number of lines in the
ncurses UI (rare, but to be fixed soon)
AUTHOR
Sakari Lehtonen <sakari@ionstream.fi>
08 Jun 2002 UMIX(1)
</pre></div>
<p>Now if I switch sources entirely on my monitor, or use the picture-in-picture function to watch a TV show (or hockey game) in the smaller window, I can hear both the TV and my PC if I so choose,
as long as I set the audio source of my monitor properly such as to tell it to use the source port for the small picture as audio source. This also allows me a much easier method to silence
(or adjust the volume) of the television program while in a commercial break by use of the mixer application instead of needing to toggle it on the monitor itself which I might move slightly out of
reach. Additionally, I can easily mute all of my application sound when I choose to only view a TV program.</p>Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0tag:blogger.com,1999:blog-2629655576640868185.post-46908386144208998822021-03-28T20:59:00.007-05:002021-04-03T04:38:43.285-05:00Tool without fanfare<p>Due to our fairly recent VCS change and impending portsnap retirement, it is somewhat surprising that gitup was released to seemingly very little or no fanfare. It might be used to solve the issue of
svn being replaced by git for obtaining source, and both portsnap and svn for maintaining one's local ports tree. It also is apparently even smaller or less dependency encumbered than git@tiny which should
be a rather large positive for the average consumer as well as being quite simple to configure and use.</p>
<p>Firstly, the configuration file provided with the port when installed might need to be updated or modified to suit your needs.</p>
<div><pre>
# $FreeBSD$
#
# Default configuration options for gitup.conf.
# github.com/freebsd/freebsd-ports
#
# ${repo} can be replaced by doc, ports and src. (*)
#
# https://git.freebsd.org/${repo}.git
# ssh://anongit@git.freebsd.org/${repo}.git
# (*) In subversion, base is used for FreeBSD src repository (src).
{
"defaults" : {
"host" : "github.com",
"port" : "443",
"verbosity" : "1",
"work_directory" : "/var/db/gitup",
},
"ports" : {
"repository" : "/freebsd/freebsd-ports.git",
"branch" : <span class="highlight">"main"</span>,
"target" : "/usr/ports",
"ignores" : [
"distfiles",
"packages",
],
},
"quarterly" : {
"host" : "git.freebsd.org",
"repository" : "/freebsd/freebsd-ports.git",
"branch" : "quarterly",
"target" : "/usr/ports",
"ignores" : [
"distfiles",
"packages",
],
},
"release" : {
"repository" : "/src.git",
"branch" : "releng/12.2",
"target" : "/usr/src",
"ignores" : [
"sys/arm64/conf",
"sys/i386/conf",
"sys/pc98/conf",
"sys/powerpc/conf",
"sys/riscv/conf",
"sys/sparc64/conf",
],
},
"stable" : {
"repository" : "/src.git",
"branch" : "stable/13",
"target" : "/usr/src",
"ignores" : [
"sys/arm64/conf",
"sys/i386/conf",
"sys/pc98/conf",
"sys/powerpc/conf",
"sys/riscv/conf",
"sys/sparc64/conf",
],
},
}
</pre></div>
<p>This is because, as we can see above, the defined aliases are no longer appropriate. The present pending release is 13.0, and current is now 14, while stable is also 13.x, so this should be an easy adjustment.</p>
<p>There does not seem to be an option to simply show what the configured sections are but if one tries to initiate gitup with a bit of nonsense, the message will tell you and so now we can see how the above configuration works.</p>
<div><pre>
gitup blargh
gitup:
Cannot find a matching section in the command line arguments. These are the configured sections:
* ports
* quarterly
* release
* stable
* current
: Invalid argument
</pre></div>
<p>The short manpage gives further insight and tells of how it can be used to repair a repo and other things.</p>
<div><pre>
NAME
gitup – A minimalist, dependency-free program to clone/pull Git
repositories.
SYNOPSIS
gitup section [-ckrV] [-C configuration file] [-h commit checksum]
[-t tag] [-u pack file] [-v verbosity] [-w commit checksum]
DESCRIPTION
gitup is a minimalist, dependency-free program used to clone or
synchronize a local copy of a Git repository. It is not intended to be a
full-featured replacement for the devel/git port, but rather, is intended
to provide a convenient way for users to update FreeBSD source files
without having to install devel/git (and all of its related dependencies)
and without the substantial disk overhead that normally accompany local
Git repositories.
gitup currently only supports anonymous, encrypted transfers via the
"Smart HTTP" protocol.
OPTIONS
Configuration options are stored in /usr/local/etc/gitup.conf and are
grouped into commonly used sections (additional custom sections can be
added to this file). The following command line options can be used to
override the default and/or section values:
-C The location of the configuration file to use.
-c Force gitup to clone the repository.
-h The "have" commit checksum of the repository to use. Only
needed when importing a pack file generated by the official
Git client.
-k Save a copy of the pack data.
-r Repair the local repository, replacing any files that are
missing or have been modified.
-t Fetch the commit referenced by the specified tag.
-u Skip the download of the pack data and use the specified file
instead.
-v How verbose the output should be (0 = no output, 1 = show
only names of the updated files, 2 = also show commands sent
to the server and additional debugging information).
-V Display the version number and exit.
-w The "want" commit checksum of the repository to retrieve.
FILES
/usr/local/etc/gitup.conf Default location of the gitup configuration
file.
/var/db/gitup Default location where gitup stores its lists
of known files. The files stored here are
used during subsequent runs to reconstruct the
local repository state and confirm that the
local tree is intact.
CAVEATS
Because gitup neither uses nor updates the .git directory, it is not a
drop-in replacement for the official Git client. gitup should only be
used on repositories originally cloned with the official Git client if
there is no intention to ever use the official Git client on that local
repository again.
To keep its footprint as small as possible, gitup does not retain pack
files downloaded from the repository (unless explicitly instructed to do
so) and does not use a saved pack file (unless explicitly instructed to
do so). gitup relies on the known remote files lists stored in
/var/db/gitup and the current state of the local repository to
reconstruct data that would normally be stored in the pack file.
Discrepancies in the local repository will be flagged as errors and gitup
will attempt to any restore any missing or modified files from the
server, returning the local repository to a clean state.
Extra care should be given when specifying a commit to pull as gitup only
performs shallow clones and does not have access to a repository's full
commit history. If a commit is passed in via the -w command line
argument and that commit exists on a different branch, the Git server
will neither object nor inform gitup of the branch change and will send a
pack file that will convert the local repository. If the change of
branches is intentional, the relevant section in
/usr/local/etc/gitup.conf will need to be manually updated.
EXAMPLES
Using the configuration options for commonly used repositories/branches
stored in /usr/local/etc/gitup.conf, to clone/pull a copy of the most
recent revision of stable/12:
gitup stable
To retrieve a copy of freebsd-ports at commit
0123456789abcdef0123456789abcdef01234567:
gitup ports -w 0123456789abcdef0123456789abcdef01234567
SEE ALSO
gitup.conf(5)
AUTHORS
John Mehr <jmehr@umn.edu> is the author of gitup and this man page.
</pre></div>
<p>What I like most about this tool is that by default it avoids repairs to the ports tree where I may have made modifications to Makefiles or hidden patch files or any other similar adjustments. This way I can keep a slightly modified local ports tree
which I can use to build individual ports (such as minetest) which I then explicitly blacklist for the poudriere repo pkg builds. This requires that any pkg built and part of the poudriere repo is removed or a pkg upgrade will still see it.</p>
<p>The initial run, regardless of whether the repair option is used or a clean fresh ports tree is constructed by it, offers no feedback from this tool that it is doing anything and the processes or file transfers involved take quite a bit of time.
I did enable maximum verbosity but that did not help, I would strongly recommend to the author that a spinning cursor or some other indication that the tool is doing something be added so that we know that our configuration is correct and we know everything
is okay. I am fine with things taking time to function (in this case about 14 minutes), to produce results, but silence is a killer as it makes me wonder and may cause me to end a process which is less than a second away from finally doing
something visible. The level of verbosity does not affect the 14 minutes of silence, only the output that follows it. If this is used as part of an unattended script, I would recommend watching for results once outside of the script to be certain it
acts as it should before hiding everything, or you may never know if anything is wrong such as an error in the configuration file.</p>
<p>FYI:</p>
<p>When the branch gets changed, which it has twice recently, first it shifted to <em>main,</em> and now its back to <em>master</em> once more, you may end up with an error should you have verbosity enabled for that repo. If you use poudriere,
the message may appear similar to below, simply change it to what you might find is used at github/freebsd.</p>
<div><pre>
# Host: github.com
# Port: 443
# Repository: /freebsd/freebsd-ports.git
# Target: /usr/ports
# Have: 4010f7bbc03638d71781ce091bf40a0907fa12fe
# Want: 4010f7bbc03638d71781ce091bf40a0907fa12fe
# Branch: <span class="highlight">main</span>
[00:00:00] Updating portstree "default" with git...fatal: couldn't find remote ref refs/heads/master
</pre></div>
<p>The solution for poudriere seems to be a bit overkill, but it is as follows below.</p>
<p>Delete the "default" ports tree:</p>
<span class="code">poudriere ports -d</span>
<p>Re-create the "default" ports tree using branch=main by method=git.</span>
<span class="code">poudriere ports -c -B main -m git</span>
Tigersharkehttp://www.blogger.com/profile/13450248191010547490noreply@blogger.com0