I think we can shorten the discussion with this:
The Make build system is going to be deprecated with the next release and it is going to be dropped with the release after that. It's contradictory to announce its deprecation on the one hand while adding new features on the other.
We discussed the Make build system in many meetings now and we all agreed that we won't add any more features to it. That means its current feature state is frozen and it doesn't get any additional functionality, just bug fixes, refactorings or adjustments as far as they are really necessary.
With the next release Meson becomes our primary build system, which even comes with an uninstall command as Richard mentioned, and users should be discouraged from using the Make build system. At this point it will be just kept for backwards compatibility and to give people the time migrating over. Further effort on this topic seems unproductive.
On Thu, 2022-11-10 at 15:38 +0400, Joursoir wrote:
On Tue, 08 Nov 2022 10:33:50 +0000 Thomas Heijligen src@posteo.de wrote:
Do you know an other project providing a uninstall script? I know none.
Standard unix password manager (pass), MidnightCommander, Dovecot, claws and most of the GNU program. And these are just the programs that first came to my mind.
I looked into these projects. I couldn't find an uninstall target except for pass, which is implemented by themselves. The other projects use additional build tools (autoconf, automake, not sure what else), which generate a Makefile based on your given configuration. I assume this will auto-generate an uninstall target as well, which is not possible for us since we don't use these tools.
The install target is for copying all necessary files into the correct place in the filesystem hierarchy. After that the user, or a other program is responsible.
The uninstall target is for deleting all program's files from the correct place. Otherwise, a user will have to go through the Makefile, find out the values of variables that are used in install target and delete it by hand. A user will obviously not be grateful to us for this.
Until this point, I didn't even know about an uninstall target. I have never heard or seen that anyone uses that. An "user" (who is the user here?) shouldn't even need to run make install ;)
What's the "correct place"? What if users think `make uninstall` is somehow hooked up to their package manager and it does the necessary steps? What if people start using it and brick their system? Again, the Makefile is not meant for users and we don't ship a "package" manager with our build system.
It might be different if we auto-generate the build configuration, as for example the other projects do you mentioned, since that configuration is specific to your system and generated out of the parameters and configuration you provided. This way you also don't have to maintain paths and files at two different places which makes is much less error-prone.
Our Make build system highly depends on given variables for every Make call and we don't auto-generate a build configuration for the underlying system.
On Tue, 08 Nov 2022 10:47:32 +0000 Felix Singer felixsinger@posteo.net wrote:
However, an uninstall target doesn't make sense since there are way too many unknown variables and what not.
As far as we introduced install target, we take this responsibility and know the paths where all the necessary files are installed.
What responsibility are you talking about? We are not responsible for anyones system nor do we know anything about them. Our Make build system does not come with a managing functionality.
// Felix