Building Minetest using redo

20 views
Skip to first unread message

Nils Dagsson Moskopp

unread,
Jul 30, 2022, 5:08:34 PM7/30/22
to redo...@googlegroups.com
Hi,

recently I made some dofiles to build Minetest using redo. Minetest is
currently built using cmake & make. Unfortunately, it suffers from two
bugs that interact with eachk other in an annoying way:

1. cmake does not track all dependencies
2. make rebuilds stuff unnecessarily when timestamps change

The interplay between these bugs means that incremental builds do not
work reliably, yet developers think this is not a serious problem, as
the second bug masks the first bug most of the time. It also requires
users to rebuild everything all the time to get a known-good result …
which makes it cumbersome to use “git bisect” on any slower computer.

I have also been asked several times by devs to completely rebuild to
exclude any chances that maybe a build issue is the reason for a bug.
My problem is that full builds take really long on any old Thinkpad …
which can run Minetest just fine – just with somewhat worse graphics.

I opened an issue with a writeup. The issue got closed by a developer
who closes issues whenever he can not imagine a feasible solution. Do
not try to educate this person and do not highlight them in the issue
tracker when you write something re: build systems (yes, even cmake).

<https://github.com/minetest/minetest/issues/11749>

I made a PR to build Minetest with redo … While I do not expect it to
get accepted due to several Minetest developers insisting this is not
a problem, I would like to have advice on how I can make it smaller /
cleaner / faster, or, in general, improve it in any way. I have tried
using precompiled headers (this is a C++ project after all), but when
I did, full rebuilds became faster and incremental rebuilds got slow,
as any change to a header file triggered a lot of rebuilds due to the
PCH including all headers. Could precompiling only the system headers
represent a better tradeoff?

<https://github.com/minetest/minetest/pull/12592>

Currently, this works with my redo implementation (redo-sh) and with
both apenwarr-do and apenwarr-redo, but since apenwarr-redo uses the
timestamp information, like make, it is largely useless for me here.

Greetings,
Nils
signature.asc
Reply all
Reply to author
Forward
0 new messages