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 <kevin.bowling@kev009.com> 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 <<a href= =3D"mailto:danfe@freebsd.org" class=3D"defaultMailLink">danfe@freebsd.org</= a>> 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 <<a href=3D"mailto:diizzy@freebsd.org" class=3D"default= MailLink">diizzy@freebsd.org</a>> 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 <<a href=3D"mailto:diizzy@FreeBSD.org" class=3D"defaultMailLink">dii= zzy@FreeBSD.org</a>><br></div><div> AuthorDate: 2024-10-09 19:12:09 +0= 000<br></div><div> Commit: Daniel Engberg <<a href=3D"mailto:diizz= y@FreeBSD.org" class=3D"defaultMailLink">diizzy@FreeBSD.org</a>><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>