Po drátě 5: Řešení úlohy č. 10

Zadáním úlohy byl tarball s configure skriptem a podadresáři s programy "Hello World!" s použitím samotného C, samotného C++ a knihoven Gtk, Gtkmm, Qt4 a KDE4, které ovšem všechny měly tento text změněný na "Tady nic neni". To samé o sobě tvrdilo i README, CMake skript, Makefile.am a licence GPL. Zbýval už jen skript configure, který po spuštění mezi hláškami brzy vypsal i "Tady nekde neco je".

Donutit tento configure skript, aby úspěšně doběhl, ale vůbec nebylo jednoduché, protože prováděl celou řadu divných akcí a kontrol, jako dvacetisekundovou modlitbu k Velkému Tuxovi, zkoušení možnosti objednání zmrzliny pro organizační tým nebo požadování hlavičkových souborů pro HAL verze větší než 0.5.13 a později pro HAL verze menší než 0.5.13. Přesto bylo možné donutit skript doběhnout úspěšně až do konce a vypsat hlášku "checking for password ... veda", a to pomocí různých přepínačů, parametrů nebo nainstalování těchto závislostí, bez nutnosti jakýchkoliv úprav configure skriptu.

Mnoho čekání šlo zkrátit a kontrol a závislostí splnit spuštěním skriptu jako:

HAL2_CFLAGS=1 HAL2_LIBS=1 NOPORN=1 TMPFIRSTFILE=`ls -1 /tmp | head -1` 
bash ./configure --with-shorter-tux-prayer --enable-hard-work --with-personal-icecream --enable-c --without-alsa

Zajímavosti

Stejně jako u úlohy č. 8 i zde šlo využít GPL a napsat si o kompletní zdrojový kód, configure byl generovaný ze snáze (no, relativně vzato :) ) čitelnějšího configure.ac, který ale nebyl přiložen. Tuto možnost ale nikdo z hráčů nevyužil. Vzhledem k tomu, že configure.ac měl být původně součástí a je tedy psán hodně nečitelně, by to ale zase nebyla až tak výrazná pomoc. Fakt, že bychom zdrojové kódy posílali na disketě poštou, by zřejmě také trochu zdržoval :).

Jednou ze změn v KDE4.0 byl přechod z autotools (tj. configure) na CMake. Autor úlohy tehdy nebyl příliš nadšen, protože autotools docela dobře znal, CMake ne, a ačkoliv výhody CMake na Windows a Mac OS byly zřejmé, na Linux to tak nevypadalo. Nostalgie na začátku psaní úlohy byla celkem rychle vystřídána zděšením a autor konečně plně prozřel a pochopil moudrost volby CMake.

Autorem úlohy je Luboš Luňák.

Re: Po drátě 5: Řešení úlohy č. 10 Bilbo (8. 12. 2010 - 13:02) Sbalit(1)
> Skript configure kontroloval, jestli v současném adresáři je soubor configure, který je spustitelný, pokud ano, tak selhal. Možností bylo skript přejmenovat, atribut spustitelnosti odstranit a skript spouštět přes bash, nebo použít jiný builddir.

Přejmenovat to nešlo:
configure3: error: cannot find sources (configure) in . or ..

Co ale naopak fungovalo bylo zakomentování té kontroly