Eric S. Raymond - az autotools-nak meg kell halnia

Címkék

ESR szerint az autotools-nak meg kell halnia, ezért félretett minden futó projektjét és jelenleg arra koncentrál hogy egy saját, autotools helyettesítő eszközt hozzon létre, valamint egy HOWTO-t, ami leírja, hogy az autotools-tól függő projektek hogyan tudnak relatíve könnyen váltani az új eszközére.

Hozzászólások

Érdekes, hogy olyan veterán is, mint ESR, Twitter-t használ kb. elsődleges hírkommunikációs csatornaként. A blogja 2021-ben véget ért.

trey @ gépház

https://hup.hu/comment/3044619#comment-3044619

Onnan, hogy "Ha pedig hozzáadott érték (pl. moderált kommentszekció stb.) sincs hozzá, akkor annak hosszabb távon értelme se nagyon van"

A HUP-nak van. A Twitter-nek vannak olyan problémái, hogy alkalmatlan a kommentszekciója. Terjedelemben, formázási - forráskódok stb. - lehetőségekben stb. Ezért van a HUP-nak valamicske értelme mellette.

trey @ gépház

jovan, engem nem kell gyozkodni: szantsuk-szantsuk!

:))

 

(szerk: nem er a szulokommentet szerkeszteni, megha van jogod hozza se:)

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Csak megmagyaráztam, hogy a HUP-nak _még_ miért van némi értelme a közösségi média platformok mellett. Ha azoknak is lenne értelmes, szervezhető, adminisztrálható és jól követhető komment/fórum szekciója, már rég át lehetett volna állni. Egy csomó gondot megoldott volna.

trey @ gépház

Én azon a napon éreztem először, hogy az autotools-nak meg kell halnia, amikor először használtam mint user :-)

Stallman legnagyobb hibája (javítsatok ki, ha tévedek, lehet hogy más követte el ezt a hibát) az volt, hogy nem írta elő a GPL licensz mellé, hogy fordítási leírást is kell adni hozzá. Ugye a szabad szoftveres licenszek nem írják elő a build megosztását, mindenki úgy buildel ahogy akar meg ahogy tud. Nincsenek normális standardok, káosz van.

nem írta elő a GPL licensz mellé, hogy fordítási leírást is kell adni hozzá. Ugye a szabad szoftveres licenszek nem írják elő a build megosztását, mindenki úgy buildel ahogy akar meg ahogy tud

Beszélsz már itt megint össze-vissza mindenféle hülyeségeket. Hogyne írná elő.

GPL Section 1. Source Code (kiemelés tőlem):

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities.

Segítek, build script megosztása is kötelező a forrással együtt. Söt, mi több, külön ki is emeli a GPL, hogy kifejezetten csak az hagyható el, ami a forrásból automatikusan generálható:

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

Ergó, minden, ami a fordításhoz kell és nem generálható, az bizony beleértendő az "all the source code needed to generate"-be.

en mar 24 eve is ezt mondtam, az mplayernek/ffmpegnek azert volt sajat configure scriptje, nem autotoolsos. mondjuk volt is szivas vele rendesen, de akkoriban az autotoolsal is...

Megtudod, amikor az első AC_LOCAL_LOFASZ macro not defined (vagy defined twice, stb.) hibát kell debuggolnod. :) Vagy amikor a configure script nemcsak lassú, de le is áll valami bash szintaktikai hibával. Vagy amikor ott van a library a rendszereden, amit keres, de valamiért mindig not found-ot kapsz. Egy borzalmas Rube-Goldberg gépezet az egész.

Régóta vágyok én, az androidok mezonkincsére már!

meson.build-ben megkeresni a hibát, amikor vmi környezeti változó nincs definiálva, pont ugyanakkora szopás.

Azért nem értem a kifakadást, mert ha áttérünk bármi másra (CMake, Meson) akkor pont ugyanazt a pkgconfig architektúrát fogjuk használni, mint a configure script. 

+1. A `cmake` is tud erdekes dolgokat produkalni. Futtatnam, kiirja hogy hianyzik neki a libx-dev. Oke, felteszem, fut tovabb. Hianyzik neki a liby-dev. Oke, felteszem, fut tovabb. Hianyzik neki a libz-dev. Oke, felteszem, nem fut tovabb, random teljes osszeomlas. Es akkor par ora szopas utan rajovok hogy neha nem art torolni a "CMakeCache.txt"-t. Ugyhogy par ilyen elmeny utan megszoktam hogy a `cmake` futtatasa elott biztos-ami-biztos torlom ezeket a jarulekos file-okat. Azaz, hat, mondjuk ugy hogy nem sokkal lettunk elorebb egy klasszik ./configure-hoz kepest :/ 

Ezzel nyilvan nem azt mondom hogy a ./configure az jo, de a tobbi sem jobb. Vagyis, mashogy szar. Hat, ez van. 

Alap lenne, hogy deklaratív legyen, hogy mitől függ a rendszerünk és ne akadjon el az első hiányzónál, hanem írja ki az összeset egyszerre. Ez a halálom, hogy egyesével adogatja, telepítek, aztán újra próbálgathatom jó hosszú ideig tartó visszacsatolási körökkel.

Bizonyos mértékig igaz, amit mondasz, mert az egész autotools, libtool, pkgconfig miegymás valójában egy csodát akar tenni.

Van kismillió disztribúció (linux és más unix vagy unix-származék), mindegyik máshová teszi a libeket, máshová a header-öket stb. Persze van néhány konvencionális hely (egy rendszeren belül is egynél több), amit a nagy többség betart, kivéve a nagyon ezós disztrókat. A libek között nincs szigorú kompatibilitás (megintcsak konveniók vannak a számozásra, amiket néha lazán tartanak be). Vannak aztán a sokféle C, C++ fordítók, linkerek, a különféle paraméterezéseikkel, ami még azonos családon belül verziók között sem feltétlen teljesen kompatibilis. Az autotools nem kevesebbre vállalkozik, hogy mindezen különbségek ellenére valami "varázslattal" megoldja, hogy a fordítás az adott rendszerre működjön.

Ez a varázslat nem mindig fog sikerülni, és ennek az oka sokszor nem maga az autotools (vagy legalábbis nem közvetlenül).

Mi történik valójában a háttérben? Az egyes felrakott libek hozzák magukkal a saját m4 makróikat. (Amik szintén nem alkotnak egy szigorúan jól definiált, előre-hátra kompatibilis interfész contract-ot, inkább csak szokások alapján szerveződik). És ezekből a millió forrásból származó makrókból próbál valahogy scripteket, meg makefile-okat generálni. Elég egy-két elcseszett csomag, ami beleront az m4 definíciókba és már törik egy másik csomag buildje.

Valójában az autotools az egyik szőnyeg alól egy másik alá söpri be problémát. És ezzel nyilván az alternatívák sem tudnak sokkal többet kezdeni.

Akkor mi a baj vele? Az, hogy iszonyúan bonyolultra lett csinálva, túl sok közbenső generálási lépéssel. Hogy a leg-archaikusabb sh interpreterre generálja a scripteket (mert valami ortodox unix platformon alapból csak az lesz fenn), ami emiatt workaround-ok tömkelegét tartalmazza. Az, hogy nem igazán tudod levalidálni, hogy jó-e amit csinálsz benne, csak a saját rendszereden látod, hogy megy-e a fordítás. Nem látod, hogy egy másik rendszeren egy másik lib fordítását nem törted-e el valami makróval (adott disztrók source csomagjaiban meglepően sokszor találni build-patcheket). Az hogyha hiba van, nem tudod könnyen visszavezetni, hogy honnan jött az input a hibásan generálódó részhez. Egy C, C++ fejlesztő egyszerűen nem ezzel akar mélységében foglalkozni, megcsinálja legjobb tudása szerint éppen működőre, aztán simán lehet, hogy a disztró készítőknek utána kell patchelniük.

Ennél azért lehetne ma már jóval többet és jobbat csinálni, ami interface contract-okat sokkal jobban tudja validálni. Deklaratívabb, gráf-jellegű adatbázisban tudja követni a függőségeket, valamilyen modell-ellenőrzéssel az összes lehetséges kombinációt (amikor a configure-ban opcionális függőségek vannak) végig tudja pörgetni, hogy kiderüljön, hogy van-e problémás eset. Akár nem saját rendszerednek megfelelő adatbázissal is le tudhatná ellenőrizni, hogy az ottani felállásnál előreláthatólag lesz-e baj belőle.

Nyilván bilibe lóg az ember keze, mert 100000 autotools-os projektet nem lehet csak úgy átállítani másra.

Régóta vágyok én, az androidok mezonkincsére már!

Úgy veszem észre, az aktívan fejlesztett projektek szép lassan maguktól is kezdenek átállni többnyire CMake-re, vagy Meson-ra. Ld. wayland, weston.

akkor meglesz a 15. buildtools! :D

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

CMake+Ninja = nincs több kínja :D

de persze, csak nyugodtan csináljon egy n+1-edik eszközt

#idióta

[Falu.Me]==>[-][][X]
Szerkesztve: 2024. 04. 06., szo – 00:59

Szóval lesz még egy szutykunk a többi Ninja, CMake, meson és egyéb "legyen nekünk is sajátunk" égisz alatt született újrafeltalált kerekek mellé, meg lesz rengeteg felesleges pluszmunkája az autotools-t használó kismillió projektnek átállni az újrafeltalált kerékre, ami már nyilvánvalóan és megkérdőjelezhetetlenül modernebb™ és biztonságosabb™ lesz.

Az autotools-nak meg™ kell™ halnia™, de a bloated xz, meg a sok divatmaintainer, aki kiszervezve a CPU-bloatot adoptálta, meg aki a backdoor-t belerakta, nyugodtan éljenek csak tovább.

A Ninját egyébként ismered? Csak mert te nem szereted a bloatot, és szerintem pont a te ízlésednek megfelelő. Valami párszáz kilobájt a futtatható állomány és semmi feleslegeset nem csinál, villámgyors. Láttam olyat, hogy Visual Studio buildhez képest a full buildet több mint felezte, az inkrementálist pedig össze sem hasonlítható mértékben percekről 1 másorperc alá lenyomta.

Mi ez ha nem a bloat antitézise? Hogyhogy nem szereted?