Re: CMake on Unix

Nathan Hartman <[email protected]> Fri, 15 May 2026 20:07:54 -0400
Newsgroups gmane.comp.apache.apr.devel
Message-ID <CAJT2EHoc5p6ZotpF7j_wimgNL0bwsaZtRZ5zXunjK1LwYFgYtQ@mail.gmail.com>
--000000000000b4411f0651e41ff5
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, May 15, 2026 at 3:29=E2=80=AFPM Daniel Sahlberg <daniel.l.sahlberg@=
gmail.com>
wrote:

> fre 15 maj 2026 kl. 21:18 skrev Timofei Zhakov <[email protected]>:
>
>> On Thu, May 14, 2026 at 12:49=E2=80=AFPM Noel Butler <noel.butler@ausics=
.net>
>> wrote:
>> >
>> > On 14/05/2026 14:54, Branko =C4=8Cibej 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 f=
rom
>> memory -
>> >
>> > ./configure --prefix=3D/usr --localstatedir=3D/usr/mysql/data
>> --datadir=3D/var/lib/mysql
>> >
>> >
>> > done...
>> >
>> >
>> > BUT cmake to do same thing requires this crap (supplied my mariadb tea=
m
>> member to mimic our build requirements)
>> >
>> >
>> > cmake -DCMAKE_C_FLAGS=3D"-O2 -fPIC" -DCMAKE_CXX_FLAGS=3D"-O2 -fPIC"
>> -DFEATURE_SET=3D"community" -DCMAKE_INSTALL_PREFIX=3D/usr -D
>> > INSTALL_LIBDIR=3D"lib64" -DINSTALL_SBINDIR=3Dlibexec
>> -DINSTALL_INCLUDEDIR=3Dinclude/mysql -DINSTALL_MYSQLSHAREDIR=3Dshare/mys=
ql
>> > -DINSTALL_SQLBENCHDIR=3D"" -DINSTALL_MYSQLTESTDIR=3Dmysql-test
>> -DINSTALL_MANDIR=3Dman -DINSTALL_PLUGINDIR=3D"lib64/mysql/plugin"
>> >  -DINSTALL_SCRIPTDIR=3Dbin -DINSTALL_SUPPORTFILESDIR=3Dshare/mysql
>> -DINSTALL_MYSQLDATADIR=3D"/var/lib/mysql" -DMYSQL_DATADIR=3D"
>> > /var/lib/mysql" -DMYSQL_UNIX_ADDR=3D"/var/run/mysql/mysql.sock"
>> -DWITH_EXTRA_CHARSETS=3Dcomplex -DWITH_INNOBASE_STORAGE_ENGI
>> > NE=3D1 -DENABLED_LOCAL_INFILE=3DON -DWITH_LIBARCHIVE=3DON -DWITH_READL=
INE=3DON
>> -DWITH_JEMALLOC=3Dsystem -DWITH_ZLIB=3Dsystem -DWITH_
>> > EXTERNAL_ZLIB=3DON -DWITH_SSL=3Dsystem -DCONC_WITH_SSL=3DON
>> -DUSE_ARIA_FOR_TMP_TABLES=3DON -DAWS_SDK_EXTERNAL_PROJECT=3DOFF
>> >
>> > Then  running    make...
>> >
>> > THEN to upgrade each version you have to screw around with garbage lik=
e
>> >
>> > 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 pluc=
k
>> out of a tarball
>> >
>> > all because there is no make uninstall....
>> >
>> >
>> >
>> > And clamav as mentioned earlier, before it was just
>> >
>> > ./configure --prefix=3D
>> >
>> >
>> > 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=3D/usr/local -D
>> CMAKE_INSTALL_LIBDIR=3Dlib64 -D APP_CONFIG_DIRECTORY=3D/etc/clamav -D
>> DATABASE_DIRECTORY=3D/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 exc=
use.
>> >
>> > 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 garbag=
e.
>> >
>> >
>> >
>> >
>> >
>> > 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 clama=
v
>> (that I could remove if need be), why the cisco folk want to go all
>> windowsy with clamav, christ knows.
>>
>>
>> I would like to kindly remind you that in projects under the Apache
>> Software Foundation we *must* follow the Code of Conduct.
>>
>> Please refer to:
>>
>> [[[
>> 2. Be empathetic, welcoming, friendly, and patient. We work together to
>> resolve conflicts, assume good intentions, and do our best to act in an
>> empathetic fashion. We may all experience some frustration from time to
>> time, but we do not allow frustration to result in a personal attack. A
>> community where people feel uncomfortable or threatened is not a product=
ive
>> one. We should be respectful when dealing with other community members a=
s
>> well as with people outside our community.
>> ]]]
>>
>> and
>>
>> [[[
>> 5. Be careful in the words that we choose. Whether we are participating
>> as professionals or volunteers, we value professionalism in all
>> interactions, and take responsibility for our own speech. Be kind to
>> others. Do not insult or put down other participants. Harassment and oth=
er
>> exclusionary behaviour are not acceptable. This includes, but is not
>> limited to:
>> ]]]
>>
>> That can be found here: <
>> https://apache.org/foundation/policies/conduct.html>.
>>
>> I'm sorry but calling a suggested feature "fucked up like cmake" because
>> you "don't want to fight with this shit" is higly unproffesional, not ki=
nd
>> at all, and you have zero technical arguments to back your point with.
>>
>> "I reckon the same morons who are involved in systemd are involved in
>> cmake" is really not the most polite way when you speak about opensource
>> devs - volunteers that develop software that runs more than 50% atleast
>> (but probably even more) of all web infrastructure with what I believe a
>> little or none founding. Even if a piece of software is not the best we
>> could've seen, don't blame the people.
>>
>> I encourage you to be more respectful to people and new ideas. If you
>> don't like a thought that was brought up on the list, form your
>> constructive argument and we'll have a better conversation than just
>> calling everyone stupid.
>>
>> --
>> Timofei Zhakov
>>
>
> I would like to say that I stand behind Timofei I all the above.
>


+1

I'm a little late to the party but I also agree with Timofei and offer my
full support. Let's keep discussions professional.

I hear Noel's issues and frustrations with CMake, but it's also clear to me
that Timofei was not suggesting to eliminate the autotools build, only to
allow CMake as an option on *nix as well, for those who want to use it. I
see nothing wrong with that, especially since APR already has the CMake
build for Windows. If you prefer to use the autotools build, by all means.


CMake may have its quirks and Brane has made a case that it doesn=E2=80=99t=
 provide
> sensible defaults for many platforms, but I also think you can create
> difficult build systems or easy build systems with any tool.
>
> Is it more difficult to create an easy to use build systems with autotool=
s
> than CMake? I have no idea. But we have one individual who is keen on
> updating the existing CMake build system to also work on Unix. Lets see h=
ow
> it goes and if we can make it feature compatible and as easy as autotools
> for the end user.
>
> Kind regards
> Daniel
>


+1. It takes nothing away from the autotools build and only gives more
options to APR's users.

Cheers,
Nathan

--000000000000b4411f0651e41ff5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div>On Fri, May 15, 2026 at 3:29=E2=80=AFPM Daniel Sahlberg &lt;<a href=3D=
"mailto:[email protected]">[email protected]</a>&gt; wr=
ote:<br></div><div><div class=3D"gmail_quote"><blockquote class=3D"gmail_qu=
ote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-st=
yle:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir=3D"=
auto">fre 15 maj 2026 kl. 21:18 skrev Timofei Zhakov &lt;<a href=3D"mailto:=
[email protected]" target=3D"_blank">[email protected]</a>&gt;:<br></div><d=
iv dir=3D"auto"><div class=3D"gmail_quote"></div></div><div dir=3D"auto"><d=
iv class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-lef=
t:1ex;border-left-color:rgb(204,204,204)"><div dir=3D"ltr">On Thu, May 14, =
2026 at 12:49=E2=80=AFPM Noel Butler &lt;<a href=3D"mailto:noel.butler@ausi=
cs.net" target=3D"_blank">[email protected]</a>&gt; wrote:<br>&gt;<br>=
&gt; On 14/05/2026 14:54, Branko =C4=8Cibej wrote:<br>&gt;<br>&gt; Its conv=
oluted. Its messy.<br>&gt;<br>&gt; Lets take sql as a horrid example (but i=
ts similar with the only other =C2=A0forced cmake requirement that we use b=
eing clamav), what used to configured and built with autotools could be don=
e as such, clear simple EASY for even the most junior and senior administra=
tor alike to config from memory -<br>&gt;<br>&gt; ./configure --prefix=3D/u=
sr --localstatedir=3D/usr/mysql/data --datadir=3D/var/lib/mysql<br>&gt;<br>=
&gt;<br>&gt; done...<br>&gt;<br>&gt;<br>&gt; BUT cmake to do same thing req=
uires this crap (supplied my mariadb team member to mimic our build require=
ments)<br>&gt;<br>&gt;<br>&gt; cmake -DCMAKE_C_FLAGS=3D&quot;-O2 -fPIC&quot=
; -DCMAKE_CXX_FLAGS=3D&quot;-O2 -fPIC&quot; -DFEATURE_SET=3D&quot;community=
&quot; -DCMAKE_INSTALL_PREFIX=3D/usr -D<br>&gt; INSTALL_LIBDIR=3D&quot;lib6=
4&quot; -DINSTALL_SBINDIR=3Dlibexec -DINSTALL_INCLUDEDIR=3Dinclude/mysql -D=
INSTALL_MYSQLSHAREDIR=3Dshare/mysql<br>&gt; -DINSTALL_SQLBENCHDIR=3D&quot;&=
quot; -DINSTALL_MYSQLTESTDIR=3Dmysql-test -DINSTALL_MANDIR=3Dman -DINSTALL_=
PLUGINDIR=3D&quot;lib64/mysql/plugin&quot;<br>&gt; =C2=A0-DINSTALL_SCRIPTDI=
R=3Dbin -DINSTALL_SUPPORTFILESDIR=3Dshare/mysql -DINSTALL_MYSQLDATADIR=3D&q=
uot;/var/lib/mysql&quot; -DMYSQL_DATADIR=3D&quot;<br>&gt; /var/lib/mysql&qu=
ot; -DMYSQL_UNIX_ADDR=3D&quot;/var/run/mysql/mysql.sock&quot; -DWITH_EXTRA_=
CHARSETS=3Dcomplex -DWITH_INNOBASE_STORAGE_ENGI<br>&gt; NE=3D1 -DENABLED_LO=
CAL_INFILE=3DON -DWITH_LIBARCHIVE=3DON -DWITH_READLINE=3DON -DWITH_JEMALLOC=
=3Dsystem -DWITH_ZLIB=3Dsystem -DWITH_<br>&gt; EXTERNAL_ZLIB=3DON -DWITH_SS=
L=3Dsystem -DCONC_WITH_SSL=3DON -DUSE_ARIA_FOR_TMP_TABLES=3DON -DAWS_SDK_EX=
TERNAL_PROJECT=3DOFF<br>&gt;<br>&gt; Then =C2=A0running =C2=A0 =C2=A0make..=
.<br>&gt;<br>&gt; THEN to upgrade each version you have to screw around wit=
h garbage like<br>&gt;<br>&gt; rm $(&lt;/root/install_manifest-MARIADB.txt)=
<br>&gt; make install<br>&gt; cp install_manifest.txt /root/install_manifes=
t-MARIADB.txt<br>&gt;<br>&gt; (Sure you don&#39;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 =C2=A0t=
hat file is not created until the program is built and installed, its not s=
omething you can pluck out of a tarball<br>&gt;<br>&gt; all because there i=
s no make uninstall....<br>&gt;<br>&gt;<br>&gt;<br>&gt; And clamav as menti=
oned earlier, before it was just<br>&gt;<br>&gt; ./configure --prefix=3D<br=
>&gt;<br>&gt;<br>&gt; NOW it too requires all the manual rm BS as maria/mys=
ql above, but at least its CMAKE line is much shorter..<br>&gt;<br>&gt;<br>=
&gt; cmake .. -D CMAKE_INSTALL_PREFIX=3D/usr/local -D CMAKE_INSTALL_LIBDIR=
=3Dlib64 -D APP_CONFIG_DIRECTORY=3D/etc/clamav -D DATABASE_DIRECTORY=3D/var=
/lib/clamav<br>&gt;<br>&gt;<br>&gt; you try remembering all that crap when =
you need to off the top of your head, and using a cheatsheet (like we obvio=
usly are doing) is not an excuse.<br>&gt;<br>&gt; I reckon the same morons =
who are involved in systemd are involved in cmake, =C2=A012 lines to do wit=
h what cron does in 1<br>&gt;<br>&gt;<br>&gt; /that completes this years ra=
nt<br>&gt;<br>&gt;<br>&gt;<br>&gt; You just described two horribly broken C=
Make build systems. In the two cases you mentioned, the fault lies with the=
 authors, not with CMake. :)<br>&gt;<br>&gt;<br>&gt;<br>&gt; yes, its a pro=
ble with cmake (see my end) and if the mariadb team can&#39;t get it right =
as you claim, then its more of a reason to avoid the garbage.<br>&gt;<br>&g=
t;<br>&gt;<br>&gt;<br>&gt;<br>&gt; Well, except in the sense that CMake has=
 zero, nil, zilch, none whatsoever sane defaults on ANY platform.<br>&gt;<b=
r>&gt; I&#39;m &quot;happy&quot; to say that it&#39;s extremely easy to wri=
te autotools builds that are just as broken as the CMake examples you just =
described.<br>&gt;<br>&gt; -- Brane<br>&gt;<br>&gt;<br>&gt; I doubt its =C2=
=A0&quot;just as easy&quot; to make it royally fscked up like cmake have, =
=C2=A0since most options are pretty well known, tried and tested, most code=
 can be built with ./configure &amp;&amp; make &amp;&amp; make install, you=
 can&#39;t do that with that horrid cmake sewer.<br>&gt;<br>&gt; You&#39;ll=
 never change my mind on that having fought with the shit, now I avoid it, =
except mariadb (that can&#39;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.<br><br><br>I would like to kindly remind you that in =
projects under the Apache Software Foundation we *must* follow the Code of =
Conduct.<br><br>Please refer to:<br><br>[[[<br>2. Be empathetic, welcoming,=
 friendly, and patient. We work together to resolve conflicts, assume good =
intentions, and do our best to act in an empathetic fashion. We may all exp=
erience some frustration from time to time, but we do not allow frustration=
 to result in a personal attack. A community where people feel uncomfortabl=
e or threatened is not a productive one. We should be respectful when deali=
ng with other community members as well as with people outside our communit=
y.<br>]]]<br><br>and<br><br>[[[<br>5. Be careful in the words that we choos=
e. Whether we are participating as professionals or volunteers, we value pr=
ofessionalism in all interactions, and take responsibility for our own spee=
ch. Be kind to others. Do not insult or put down other participants. Harass=
ment and other exclusionary behaviour are not acceptable. This includes, bu=
t is not limited to:<br><div>]]]</div><div><br></div><div>That can be found=
 here: &lt;<span></span><a href=3D"https://apache.org/foundation/policies/c=
onduct.html" target=3D"_blank">https://apache.org/foundation/policies/condu=
ct.html</a>&gt;.</div><br>I&#39;m sorry but calling a suggested feature &qu=
ot;fucked up like cmake&quot; because you &quot;don&#39;t want to fight wit=
h this shit&quot; is higly unproffesional, not kind at all, and you have ze=
ro technical arguments to back your point with.<br><br><div>&quot;I reckon =
the same morons who are involved in systemd are involved in cmake<span>&quo=
t; is really not the most polite way when you speak about opensource devs -=
 volunteers that develop software that runs more than 50% atleast (but prob=
ably even more) of all web infrastructure with what I believe a little or n=
one founding. Even if a piece of software is not the best we could&#39;ve s=
een, don&#39;t blame the people.</span></div><div><br></div><div><span>I en=
courage you to be more respectful to people and new ideas. If you don&#39;t=
 like a thought that was=C2=A0</span><span>brought up on the list</span><sp=
an>, form your constructive argument and we&#39;ll have a better conversati=
on than just calling everyone stupid.</span></div><br>--<br>Timofei Zhakov<=
/div></blockquote><div dir=3D"auto"><br></div></div></div><div dir=3D"auto"=
><div class=3D"gmail_quote"><div dir=3D"auto">I would like to say that I st=
and behind Timofei I all the above.</div></div></div></blockquote><div dir=
=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto">+1</div><=
div dir=3D"auto"><br></div><div dir=3D"auto">I&#39;m a little late to the p=
arty but I also agree with Timofei and offer my full support. Let&#39;s kee=
p discussions professional.</div><div dir=3D"auto"><br></div><div dir=3D"au=
to">I hear Noel&#39;s issues and frustrations with CMake, but it&#39;s also=
 clear to me that Timofei was not suggesting to eliminate the autotools bui=
ld, only to allow CMake as an option on *nix as well, for those who want to=
 use it. I see nothing wrong with that, especially since APR already has th=
e CMake build for Windows. If you prefer to use the autotools build, by all=
 means.</div><div dir=3D"auto"><br></div><div dir=3D"auto"><br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-w=
idth:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204=
,204,204)"><div dir=3D"auto"><div class=3D"gmail_quote"><div dir=3D"auto"><=
/div><div dir=3D"auto">CMake may have its quirks and Brane has made a case =
that it doesn=E2=80=99t provide sensible defaults for many platforms, but I=
 also think you can create difficult build systems or easy build systems wi=
th any tool.<br></div><div dir=3D"auto"><br></div><div dir=3D"auto">Is it m=
ore difficult to create an easy to use build systems with autotools than CM=
ake? I have no idea. But we have one individual who is keen on updating the=
 existing CMake build system to also work on Unix. Lets see how it goes and=
 if we can make it feature compatible and as easy as autotools for the end =
user.</div><div dir=3D"auto"><br></div><div dir=3D"auto">Kind regards</div>=
</div></div><div dir=3D"auto"><div class=3D"gmail_quote"><div dir=3D"auto">=
Daniel</div></div></div></blockquote><div dir=3D"auto"><br></div><div dir=
=3D"auto"><br></div><div dir=3D"auto">+1. It takes nothing away from the au=
totools build and only gives more options to APR&#39;s users.</div><div dir=
=3D"auto"><br></div><div dir=3D"auto">Cheers,</div><div dir=3D"auto">Nathan=
</div><div dir=3D"auto"><br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;=
padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir=3D"auto"><div=
 class=3D"gmail_quote"><div dir=3D"auto"></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-s=
tyle:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir=3D=
"ltr"></div>
</blockquote></div></div>
</blockquote></div></div>

--000000000000b4411f0651e41ff5--