A gcc is megkönnyíti; valamint GnuTLS legyőzi az AIX-ot

Az include-fixed részre gondolok, ahová a javított header-fájlokat teszi. Nyilván, hogy megoldjon egy kompatibilitási problémát. És okozzon egy másikat. Ilyen ez a popszakma.

Úgyhogy most egy ilyennel próbálkozom:

$ cat build.sh
...
if find /opt/freeware/lib/gcc/ -name assert.h 2>/dev/null | grep .; then
    echo 'A gcc-fele assert.h-t jo lenne torolni a francba'
    exit
fi
...

Hozzászólások

A *.specs nem segit ebben az esetben? Nem lehet hogy az maradt ki nalad? Legalabbis az ilyen "osszeomlanak az inkludok es/vagy a trivialis inkludokat sem talalja es/vagy hulyesegeket csinal" jellegu problemaknal mindig ez a *.specs volt a megoldas. Foleg beagyazott temaban, de nem kizart hogy egyeb kvazi-hasonlo (cross-compiling, egzotikusabb architekturak, stb) esetekben is.

Most úgy nézem, hogy a 'paraszt üti az F8'-at egy jó megoldás.

Ettől függetlenül az egyparaméteres 'static_assert' a C23-óta hivatalos, szóval a derék programozó bele...na a konnektorba, amikor teleszennyezte vele a kódot. https://github.com/coreutils/gnulib/blob/master/lib/parse-datetime.y

Szerk: persze van egy nagyon tudományos opció erre:

gcc ... -D'static_assert(...)=/* fax usse ki a fogukat */' ...

Stimmel, innen olvastam ki, hogy az egyparaméteres változat csak C23-tól szabvány, hogy egyes fordítók korábbi szabvánnyal is tudják (pl -std=c11), az jó dolog, de nem kötelez senkit semmire.

További érdekesség a gnutls fordításához:

...
./configure
sed_repl 's;#undef/**/assert;/* pocsoddel jatsszal, kerlek */;' config.h
...
Szerkesztve: 2024. 01. 17., sze – 15:34
/usr/bin/sed -i 's/\@anchor{.*//g' functions/*
/usr/bin/sed: illegal option -- i

Gondolom, platformok ezrein tesztelték, úgymint Ubuntu LatestAnimal/x86_64 és... ja, nem, nincs és, ez volt a teljes lista.

Jót fogtok derülni, ha elárulom, mit kell a sed fordításához javítani:

sed_repl 's;\(#undef/\*\*/assert\);/* #undef assert -- pocsoddel jatsszal, kerlek */;' config.h

Nem vagyok egy nagy assert guru es/vagy felhasznalno, de eleg sok projektben azt latom hogy egy sajat

#define my_project_assert(x) (...)

jellegu definiciot csinalnak a teljes projektjukre es akkor azt (es kizarolag azt) hasznaljak vegig. Es ha barmi miatt nem tetszik az assertalas akkor viszonylag konnyu kikapcsolni :] Akar a gyarit, akar sajat implementaciot - pl FreeRTOS portoknal en is kikapcsolom hogy kisebb legyen a kodmeret es/vagy nagyobb lehessen a "hasznos" kodmeret ami az RTOS felett van.

Szoval barhogyis, a f*&*@#@&^() helyett inkabb ilyen iranyba mennek el.

Nagy elmék, ha találkoznak: a sys/thread.h-ban is van egy thread_init, meg a dirmngr.c-ben is. Majd sorsolok, hogy melyik nyerjen.

Hát az LDAP hiányába Aix-no is belehal a fordítás...

Az OpenLDAP is ott van a szeren:

configure: WARNING: disabling threads, no cc_r on AIX

Valami bcg, vagy ggg, vagy gcc, az nem cseng ismerősen? Nem? Gondoltam.