On 14/05/2026 14:54, Branko Čibej wrote:
Its convoluted. Its messy.
Lets take sql as a horrid example (but its similar with the only other
forced cmake requirement that we use being clamav), what used to
configured and built with autotools could be done as such, clear
simple EASY for even the most junior and senior administrator alike to
config from memory -
./configure --prefix=/usr --localstatedir=/usr/mysql/data
--datadir=/var/lib/mysql
done...
BUT cmake to do same thing requires this crap (supplied my mariadb
team member to mimic our build requirements)
cmake -DCMAKE_C_FLAGS="-O2 -fPIC" -DCMAKE_CXX_FLAGS="-O2 -fPIC"
-DFEATURE_SET="community" -DCMAKE_INSTALL_PREFIX=/usr -D
INSTALL_LIBDIR="lib64" -DINSTALL_SBINDIR=libexec
-DINSTALL_INCLUDEDIR=include/mysql -DINSTALL_MYSQLSHAREDIR=share/mysql
-DINSTALL_SQLBENCHDIR="" -DINSTALL_MYSQLTESTDIR=mysql-test
-DINSTALL_MANDIR=man -DINSTALL_PLUGINDIR="lib64/mysql/plugin"
-DINSTALL_SCRIPTDIR=bin -DINSTALL_SUPPORTFILESDIR=share/mysql
-DINSTALL_MYSQLDATADIR="/var/lib/mysql" -DMYSQL_DATADIR="
/var/lib/mysql" -DMYSQL_UNIX_ADDR="/var/run/mysql/mysql.sock"
-DWITH_EXTRA_CHARSETS=complex -DWITH_INNOBASE_STORAGE_ENGI
NE=1 -DENABLED_LOCAL_INFILE=ON -DWITH_LIBARCHIVE=ON -DWITH_READLINE=ON
-DWITH_JEMALLOC=system -DWITH_ZLIB=system -DWITH_
EXTERNAL_ZLIB=ON -DWITH_SSL=system -DCONC_WITH_SSL=ON
-DUSE_ARIA_FOR_TMP_TABLES=ON -DAWS_SDK_EXTERNAL_PROJECT=OFF
Then running make...
THEN to upgrade each version you have to screw around with garbage
like
rm $(</root/install_manifest-MARIADB.txt)
make install
cp install_manifest.txt /root/install_manifest-MARIADB.txt
(Sure you don't need to cp and use /root/install_manifest but if
someone clears out the source code you will be left with pieces of
older versions, so you copy it, and lets not forget that file is not
created until the program is built and installed, its not something
you can pluck out of a tarball
all because there is no make uninstall....
And clamav as mentioned earlier, before it was just
./configure --prefix=
NOW it too requires all the manual rm BS as maria/mysql above, but at
least its CMAKE line is much shorter..
cmake .. -D CMAKE_INSTALL_PREFIX=/usr/local -D
CMAKE_INSTALL_LIBDIR=lib64 -D APP_CONFIG_DIRECTORY=/etc/clamav -D
DATABASE_DIRECTORY=/var/lib/clamav
you try remembering all that crap when you need to off the top of your
head, and using a cheatsheet (like we obviously are doing) is not an
excuse.
I reckon the same morons who are involved in systemd are involved in
cmake, 12 lines to do with what cron does in 1
/that completes this years rant
You just described two horribly broken CMake build systems. In the two
cases you mentioned, the fault lies with the authors, not with CMake.
:)
yes, its a proble with cmake (see my end) and if the mariadb team can't
get it right as you claim, then its more of a reason to avoid the
garbage.
Well, except in the sense that CMake has zero, nil, zilch, none
whatsoever sane defaults on ANY platform.
I'm "happy" to say that it's extremely easy to write autotools builds
that are just as broken as the CMake examples you just described.
-- Brane
I doubt its "just as easy" to make it royally fscked up like cmake
have, since most options are pretty well known, tried and tested, most
code can be built with ./configure && make && make install, you can't do
that with that horrid cmake sewer.
You'll never change my mind on that having fought with the shit, now I
avoid it, except mariadb (that can't be helped - at this time) and
clamav (that I could remove if need be), why the cisco folk want to go
all windowsy with clamav, christ knows.
--
_Regards,_
_Noel Butler_