Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Oct 2024 22:40:09 +0200
From:      Daniel Engberg <daniel.engberg.lists@pyret.net>
To:        Kevin Bowling <kevin.bowling@kev009.com>
Cc:        Alexey Dokuchaev <danfe@freebsd.org>, Daniel Engberg <diizzy@freebsd.org>, ports-committers@freebsd.org, dev-commits-ports-all@freebsd.org, dev-commits-ports-main@freebsd.org
Subject:   Re: git: 0bdf5887f0d2 - main - graphics/tiff: Update to 4.7.0 and switch to CMake
Message-ID:  <0367156086892980fb78cc6aacdba56f@mail.infomaniak.com>
In-Reply-To: <CAK7dMtAr4Le6JA_VPGXb-aLUiBkTRLP3BpYJC=O40Sc1Sjn-5Q@mail.gmail.com>
References:  <202410091943.499JhXKg087859@gitrepo.freebsd.org> <CAK7dMtBHq5kbQU4DXW%2B7xOLHYo%2BVRa%2B0h=ra0b-_xW3gvGsXWg@mail.gmail.com> <Zwf459b9bCrpegd1@FreeBSD.org> <CAK7dMtAr4Le6JA_VPGXb-aLUiBkTRLP3BpYJC=O40Sc1Sjn-5Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--_=_swift_1728592809_5c59fd7fe1b8e62545428c4f5df0c06d_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 2024-10-10T21:43:21.000+02:00, Kevin Bowling
<kevin.bowling@kev009.com=
> wrote:

>=C2=A0On=C2=A0Thu,=C2=A0Oct=C2=A010,=C2=A02024=C2=A0at=C2=
=A08:55=E2=80=AFAM=C2=A0Alexey=C2=A0Dokuchaev=C2=A0<danfe@freebsd.org>=
=C2=A0wrote:
>>=C2=A0=C2=A0On=C2=A0Wed,=C2=A0Oct=C2=A009,=C2=A02024=C2=
=A0at=C2=A002:28:01PM=C2=A0-0700,=C2=A0Kevin=C2=A0Bowling=C2=A0wrote:
>>=
=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0On=C2=A0Wed,=C2=A0Oct=C2=A09,=C2=A02024=
=C2=A0at=C2=A012:43???PM=C2=A0Daniel=C2=A0Engberg
>>>=C2=A0=C2=A0=C2=
=A0<diizzy@freebsd.org>=C2=A0wrote:
>>>=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=
=C2=A0=C2=A0=C2=A0The=C2=A0branch=C2=A0main=C2=A0has=C2=A0been=C2=A0updated=
=C2=A0by=C2=A0diizzy:
>>>>=C2=A0=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0URL:
>>>>=C2=A0=C2=A0=C2=A0=C2=A0https://cgit.FreeBSD.o=
rg/ports/commit/?id=3D0bdf5887f0d2cc9f14ea0cc10ed9e371028dd620
>>>>=C2=
=A0=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0commit=C2=A00bdf5=
887f0d2cc9f14ea0cc10ed9e371028dd620
>>>>=C2=A0=C2=A0=C2=A0=C2=A0
>>>>=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Author:=C2=A0Daniel=C2=A0Engberg=C2=A0<diizzy=
@FreeBSD.org>
>>>>=C2=A0=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0AuthorDate:=C2=A02024-10-09=C2=A019:12:09=C2=A0+0000
>>>>=C2=
=A0=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Commit:=C2=A0Dani=
el=C2=A0Engberg=C2=A0<diizzy@FreeBSD.org>
>>>>=C2=A0=C2=A0=C2=A0=C2=A0
=
>>>>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0CommitDate:=C2=A02024-10-09=C2=A019:43:25=
=C2=A0+0000
>>>>=C2=A0=C2=A0=C2=A0=C2=A0
>>>>=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0graphics/tiff:=C2=A0Update=C2=A0to=C2=A04.7.0=C2=A0and=C2=A0switch=
=C2=A0to=C2=A0CMake
>>>=C2=A0=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0=C2=
=A0I=C2=A0believe=C2=A0this=C2=A0might=C2=A0have=C2=A0come=C2=A0up=C2=A0in=
=C2=A0the=C2=A0past=C2=A0but=C2=A0I=C2=A0do=C2=A0not
>>>=C2=A0=C2=A0=
=C2=A0remember
>>>=C2=A0=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0=C2=A0any=
=C2=A0conclusion.
>>>=C2=A0=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0=C2=A0Upon=
=C2=A0a=C2=A0quick=C2=A0look=C2=A0at=C2=A0Debian=C2=A0and=C2=A0Fedora=C2=
=A0(thus=C2=A0accounting=C2=A0for=C2=A0the
>>>=C2=A0=C2=A0=C2=A0
>>>=
=C2=A0=C2=A0=C2=A0=C2=A0majority=C2=A0of=C2=A0all=C2=A0*nix=C2=A0builds/usa=
ge)=C2=A0I=C2=A0do=C2=A0not=C2=A0see=C2=A0either=C2=A0using
>>>=C2=A0=
=C2=A0=C2=A0CMake:
>>>=C2=A0=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0=C2=A0*=
=C2=A0https://sources.debian.org/src/tiff/4.6.0-2/debian/rules/#L16
>>>=
=C2=A0=C2=A0=C2=A0
>>>=C2=A0=C2=A0=C2=A0=C2=A0*
>>>=C2=A0=C2=A0=C2=
=A0https://src.fedoraproject.org/rpms/libtiff/blob/rawhide/f/libtiff.spec#_=
68
>>=C2=A0=C2=A0
>>=C2=A0=C2=A0=C2=A0+1=C2=A0to=C2=A0reverting=C2=
=A0back=C2=A0to=C2=A0GNU=C2=A0autotools=C2=A0which=C2=A0entail=C2=A0far=
=C2=A0less
>>=C2=A0=C2=A0dependencies.
>>=C2=A0=C2=A0
>>=C2=A0=C2=
=A0=C2=A0I've=C2=A0lost=C2=A0count=C2=A0already=C2=A0when=C2=A0I=C2=A0have=
=C2=A0to=C2=A0revert=C2=A0Daniel's=C2=A0CMake
>>=C2=A0=C2=A0switches=
=C2=A0in
>>=C2=A0=C2=A0
>>=C2=A0=C2=A0=C2=A0various=C2=A0ports=C2=A0to=
=C2=A0unbreak=C2=A0them=C2=A0in=C2=A0my=C2=A0environments.=C2=A0It=C2=A0was=
=C2=A0common
>>=C2=A0=C2=A0to=C2=A0half-
>>=C2=A0=C2=A0
>>=C2=A0=
=C2=A0=C2=A0jokingly=C2=A0wish=C2=A0autotools=C2=A0to=C2=A0die,=C2=A0but=
=C2=A0they=C2=A0remain=C2=A0stable,=C2=A0working,
>>=C2=A0=C2=A0and=C2=
=A0not
>>=C2=A0=C2=A0
>>=C2=A0=C2=A0=C2=A0asking=C2=A0too=C2=A0much,=
=C2=A0thus=C2=A0being=C2=A0clear=C2=A0winner=C2=A0among=C2=A0other=C2=A0bui=
ld
>>=C2=A0=C2=A0options.
>=C2=A0
>=C2=A0From=C2=A0a=C2=A0maintainer/=
developer's=C2=A0view,=C2=A0Autoconf=C2=A0is=C2=A0an=C2=A0arcane=C2=A0mix=
=C2=A0of
>=C2=A0
>=C2=A0shell,=C2=A0M4=C2=A0so=C2=A0the=C2=A0hate=C2=
=A0is=C2=A0understandable.=C2=A0From=C2=A0a=C2=A0packager's=C2=A0view=C2=
=A0it
>=C2=A0is
>=C2=A0
>=C2=A0nearly=C2=A0ideal=C2=A0for=C2=A0histor=
ical=C2=A0interial=C2=A0reasons=C2=A0and=C2=A0one=C2=A0key=C2=A0point:=
=C2=A0the
>=C2=A0
>=C2=A0thing=C2=A0that=C2=A0Autoconf=C2=A0gets=C2=
=A0right=C2=A0is=C2=A0being=C2=A0centered=C2=A0around=C2=A0feature=C2=A0tes=
t
>=C2=A0
>=C2=A0macros=C2=A0and=C2=A0most=C2=A0alternative=C2=A0build=
=C2=A0systems=C2=A0miss=C2=A0that=C2=A0point=C2=A0and=C2=A0center
>=C2=
=A0
>=C2=A0around=C2=A0preconceived=C2=A0notions=C2=A0of=C2=A0what=C2=
=A0a=C2=A0platform=C2=A0is=C2=A0or=C2=A0has.=C2=A0Ted=C2=A0Tso
>=C2=A0(of=

>=C2=A0
>=C2=A0ext2=C2=A0fame)=C2=A0wrote=C2=A0a=C2=A0nice=C2=A0piece=
=C2=A0about=C2=A0this=C2=A0on=C2=A0TUHS=C2=A0recently.=C2=A0This,=C2=A0for=

>=C2=A0
>=C2=A0instance,=C2=A0makes=C2=A0it=C2=A0easy=C2=A0to=C2=A0tas=
te=C2=A0APIs=C2=A0and=C2=A0accommodate=C2=A0i.e.=C2=A0MFCs=C2=A0back
>=
=C2=A0
>=C2=A0to=C2=A0arbitrary=C2=A0FreeBSD=C2=A0versions=C2=A0without=
=C2=A0a=C2=A0fragile=C2=A0maintenance=C2=A0of
>=C2=A0
>=C2=A0checking=
=C2=A0specific=C2=A0__FreeBSD_version=C2=A0or=C2=A0whatever=C2=A0the=C2=
=A0case=C2=A0may=C2=A0be.=C2=A0It
>=C2=A0
>=C2=A0also=C2=A0lends=C2=
=A0to=C2=A0putting=C2=A0arbitrary=C2=A0portability=C2=A0in=C2=A0the=C2=
=A0source=C2=A0code
>=C2=A0instead
>=C2=A0
>=C2=A0of=C2=A0the=C2=
=A0build=C2=A0system.
>=C2=A0
>>=C2=A0=C2=A0In=C2=A0other=C2=A0words,=
=C2=A0don't=C2=A0pull=C2=A0CMake=C2=A0when=C2=A0you=C2=A0can=C2=A0pull=
=C2=A0nothing
>>=C2=A0=C2=A0(/bin/sh=C2=A0and
>>=C2=A0=C2=A0
>>=C2=
=A0=C2=A0=C2=A0friends=C2=A0are=C2=A0part=C2=A0of=C2=A0the=C2=A0base=C2=
=A0system).
>=C2=A0
>=C2=A0I=C2=A0think=C2=A0one=C2=A0of=C2=A0the=C2=
=A0previous=C2=A0justifications=C2=A0for=C2=A0this=C2=A0toil=C2=A0was=C2=
=A0speed
>=C2=A0
>=C2=A0which=C2=A0seems=C2=A0dubious=C2=A0because=
=C2=A0now=C2=A0a=C2=A0very=C2=A0light=C2=A0library=C2=A0like=C2=A0libtiff=

>=C2=A0will
>=C2=A0
>=C2=A0have=C2=A0to=C2=A0wait=C2=A0around=C2=
=A0for=C2=A0a=C2=A0high=C2=A0cardinality=C2=A0C++=C2=A0project=C2=A0to=
=C2=A0build.
>=C2=A0
>=C2=A0All=C2=A0of=C2=A0this=C2=A0doesn't=C2=A0rea=
lly=C2=A0matter=C2=A0if=C2=A0CMake=C2=A0is=C2=A0the=C2=A0clear=C2=A0choice=
=C2=A0of
>=C2=A0
>=C2=A0upstream.=C2=A0But=C2=A0that=C2=A0is=C2=A0not=
=C2=A0the=C2=A0case=C2=A0here.
>=C2=A0
>>=C2=A0=C2=A0./danfe

 One =
major issue both in our tree and upstream is that very few wants
to hack =
on autotools scripts and merge/upstream changes (leading to
bitrot and/or=
 ports getting outdated because no one wants to unravel
previous work and=
 so on). We have countless examples of that in tree
already and it keeps =
eating away precious developer time.=20

Even autotools upstream are havi=
ng issues finding people maintaining
it etc, see
https://lists.gnu.org/=
archive/html/autoconf/2021-01/msg00049.html .

Speed is another factor =
that's not in Autotools favour especially if
you also need to use USES=3D=
 autoreconf, it's slow. We spend a lot of
time processing configure scrip=
ts and it's also showing it's age when
it comes to compiling in parallell=
. There are some projects trying to
improve on this such as slibtool but =
it's not 100% compatible and no
one is to my knowledge actively looking a=
t it for potential adoption.
Switching from Autotools to lets say CMake o=
r Meson almost always
gives a noticable speed boost and that also include=
s unit testing. It
may not be a major difference for a single port but it=
 adds up
quickly. It's not the top reason but it's a nice addition.

=
For this specific port there is also quite a bit more unit tests
connecte=
d to CMake build which helps us do regression testing but if
someone(tm) =
is willing ot get Autotools up to the same level by all
means go ahead an=
d upstream it.

At least 3 deps already requires on CMake and that incl=
ude libdeflate
so there's nothing "new" in that regard.

With all tha=
t being said, I'll try to get around to submit current
patch(es) upstream=
ed next week or so but they needs a bit of
adjustment before doing so.
=

Best regards,

Daniel


--_=_swift_1728592809_5c59fd7fe1b8e62545428c4f5df0c06d_=_
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, =
sans-serif; font-size: 14px">On 2024-10-10T21:43:21.000+02:00, Kevin Bowlin=
g &lt;kevin.bowling@kev009.com&gt; wrote:<br></div><div ><div><br></div></d=
iv><div style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-seri=
f; font-size: 14px"><br></div><div class=3D"ik_mail_quote answerContentMess=
age"><blockquote class=3D"ws-ng-quote"><pre style=3D"white-space: normal;">=
<div>On Thu, Oct 10, 2024 at 8:55=E2=80=AFAM Alexey Dokuchaev &lt;<a href=
=3D"mailto:danfe@freebsd.org" class=3D"defaultMailLink">danfe@freebsd.org</=
a>&gt; wrote:<br></div><blockquote class=3D"ws-ng-quote"><div> <br></div><d=
iv> On Wed, Oct 09, 2024 at 02:28:01PM -0700, Kevin Bowling wrote:<br></div=
><blockquote class=3D"ws-ng-quote"><div>   On Wed, Oct 9, 2024 at 12:43???P=
M Daniel Engberg &lt;<a href=3D"mailto:diizzy@freebsd.org" class=3D"default=
MailLink">diizzy@freebsd.org</a>&gt; wrote:<br></div><blockquote class=3D"w=
s-ng-quote"><div>   <br></div><div>   The branch main has been updated by d=
iizzy:<br></div><div>  <br></div><div>   URL: <a href=3D"https://cgit.FreeB=
SD.org/ports/commit/?id=3D0bdf5887f0d2cc9f14ea0cc10ed9e371028dd620" class=
=3D"defaultMailLink" rel=3D"noopener noreferrer" data-ik=3D"ik-secure" targ=
et=3D"_blank">https://cgit.FreeBSD.org/ports/commit/?id=3D0bdf5887f0d2cc9f1=
4ea0cc10ed9e371028dd620</a><br></div><div>  <br></div><div>   commit 0bdf58=
87f0d2cc9f14ea0cc10ed9e371028dd620<br></div><div>   Author:     Daniel Engb=
erg &lt;<a href=3D"mailto:diizzy@FreeBSD.org" class=3D"defaultMailLink">dii=
zzy@FreeBSD.org</a>&gt;<br></div><div>   AuthorDate: 2024-10-09 19:12:09 +0=
000<br></div><div>   Commit:     Daniel Engberg &lt;<a href=3D"mailto:diizz=
y@FreeBSD.org" class=3D"defaultMailLink">diizzy@FreeBSD.org</a>&gt;<br></di=
v><div>   CommitDate: 2024-10-09 19:43:25 +0000<br></div><div>  <br></div><=
div>       graphics/tiff: Update to 4.7.0 and switch to CMake<br></div></bl=
ockquote><div>  <br></div><div>  I believe this might have come up in the p=
ast but I do not remember<br></div><div>  any conclusion.<br></div><div> <b=
r></div><div>  Upon a quick look at Debian and Fedora (thus accounting for =
the<br></div><div>  majority of all *nix builds/usage) I do not see either =
using CMake:<br></div><div>  * <a href=3D"https://sources.debian.org/src/ti=
ff/4.6.0-2/debian/rules/#L16" class=3D"defaultMailLink" rel=3D"noopener nor=
eferrer" data-ik=3D"ik-secure" target=3D"_blank">https://sources.debian.org=
/src/tiff/4.6.0-2/debian/rules/#L16</a><br></div><div>  * <a href=3D"https:=
//src.fedoraproject.org/rpms/libtiff/blob/rawhide/f/libtiff.spec#_68" class=
=3D"defaultMailLink" rel=3D"noopener noreferrer" data-ik=3D"ik-secure" targ=
et=3D"_blank">https://src.fedoraproject.org/rpms/libtiff/blob/rawhide/f/lib=
tiff.spec#_68</a><br></div></blockquote><div> <br></div><div> +1 to reverti=
ng back to GNU autotools which entail far less dependencies.<br></div><div>=
 I've lost count already when I have to revert Daniel's CMake switches in<b=
r></div><div> various ports to unbreak them in my environments.  It was com=
mon to half-<br></div><div> jokingly wish autotools to die, but they remain=
 stable, working, and not<br></div><div> asking too much, thus being clear =
winner among other build options.<br></div></blockquote><div> <br></div><di=
v>From a maintainer/developer's view, Autoconf is an arcane mix of<br></div=
><div>shell, M4 so the hate is understandable.  From a packager's view it i=
s<br></div><div>nearly ideal for historical interial reasons and one key po=
int:  the<br></div><div>thing that Autoconf gets right is being centered ar=
ound feature test<br></div><div>macros and most alternative build systems m=
iss that point and center<br></div><div>around preconceived notions of what=
 a platform is or has.  Ted Tso (of<br></div><div>ext2 fame) wrote a nice p=
iece about this on TUHS recently.  This, for<br></div><div>instance, makes =
it easy to taste APIs and accommodate i.e. MFCs back<br></div><div>to arbit=
rary FreeBSD versions without a fragile maintenance of<br></div><div>checki=
ng specific __FreeBSD_version or whatever the case may be.  It<br></div><di=
v>also lends to putting arbitrary portability in the source code instead<br=
></div><div>of the build system.<br></div><div><br></div><blockquote class=
=3D"ws-ng-quote"><div>  In other words, don't pull CMake when you can pull =
nothing (/bin/sh and<br></div><div> friends are part of the base system).<b=
r></div></blockquote><div> <br></div><div>I think one of the previous justi=
fications for this toil was speed<br></div><div>which seems dubious because=
 now a very light library like libtiff will<br></div><div>have to wait arou=
nd for a high cardinality C++ project to build.<br></div><div><br></div><di=
v>All of this doesn't really matter if CMake is the clear choice of<br></di=
v><div>upstream.  But that is not the case here.<br></div><div><br></div><b=
lockquote class=3D"ws-ng-quote">  ./danfe<br></blockquote></pre></blockquot=
e></div><div style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans=
-serif; font-size: 14px"><br></div><div style=3D"font-family: 'Helvetica Ne=
ue', Helvetica, Arial, sans-serif; font-size: 14px"> One major issue both i=
n our tree and upstream is that very few wants to hack on autotools scripts=
 and merge/upstream changes (leading to bitrot and/or ports getting outdate=
d because no one wants to unravel previous work and so on). We have countle=
ss examples of that in tree already and it keeps eating away precious devel=
oper time. <br></div><div style=3D"font-family: 'Helvetica Neue', Helvetica=
, Arial, sans-serif; font-size: 14px"><br></div><div style=3D"font-family: =
'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px">Even autot=
ools upstream are having issues finding people maintaining it etc, see <a d=
ata-ik=3D"ik-secure" rel=3D"noopener noreferrer" href=3D"https://lists.gnu.=
org/archive/html/autoconf/2021-01/msg00049.html" target=3D"_blank">https://=
lists.gnu.org/archive/html/autoconf/2021-01/msg00049.html</a> .<br></div><d=
iv style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; fo=
nt-size: 14px"><br></div><div style=3D"font-family: 'Helvetica Neue', Helve=
tica, Arial, sans-serif; font-size: 14px">Speed is another factor that's no=
t in Autotools favour especially if you also need to use USES=3D autoreconf=
, it's slow. We spend a lot of time processing configure scripts and it's a=
lso showing it's age when it comes to compiling in parallell. There are som=
e projects trying to improve on this such as slibtool but it's not 100% com=
patible and no one is to my knowledge actively looking at it for potential =
adoption. Switching from Autotools to lets say CMake or Meson almost always=
 gives a noticable speed boost and that also includes unit testing. It may =
not be a major difference for a single port but it adds up quickly. It's no=
t the top reason but it's a nice addition.<br></div><div style=3D"font-fami=
ly: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px"><br></=
div><div style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-ser=
if; font-size: 14px">For this specific port there is also quite a bit more =
unit tests connected to CMake build which helps us do regression testing bu=
t if someone(tm) is willing ot get Autotools up to the same level by all me=
ans go ahead and upstream it.<br></div><div style=3D"font-family: 'Helvetic=
a Neue', Helvetica, Arial, sans-serif; font-size: 14px"><br></div><div styl=
e=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size=
: 14px">At least 3 deps already requires on CMake and that include libdefla=
te so there's nothing "new" in that regard.<br></div><div style=3D"font-fam=
ily: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px"><br><=
/div><div style=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-se=
rif; font-size: 14px">With all that being said, I'll try to get around to s=
ubmit current patch(es) upstreamed next week or so but they needs a bit of =
adjustment before doing so.<br></div><div style=3D"font-family: 'Helvetica =
Neue', Helvetica, Arial, sans-serif; font-size: 14px"><br></div><div style=
=3D"font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:=
 14px">Best regards,<br></div><div style=3D"font-family: 'Helvetica Neue', =
Helvetica, Arial, sans-serif; font-size: 14px">Daniel<br></div></body></htm=
l>


--_=_swift_1728592809_5c59fd7fe1b8e62545428c4f5df0c06d_=_--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0367156086892980fb78cc6aacdba56f>