cmake reloaded (AIX5.3, cmake-3.18.1)

Namostan kicsit neheztelek rá, megmondom őszintén, én készítek neki finom ropogós mkdtemp-et, ő meg hálából... nem, természetesen nem fordul így sem.

Igazából nem tudnám megmondani, hogy miért kell UDP a cmake-nek, de bizonyára van rá észszerű magyarázat.

/usr/local/src/cmake-3.18.1/Utilities/cmlibuv/src/unix/udp.c: In function 'uv__udp_set_source_membership4':
/usr/local/src/cmake-3.18.1/Utilities/cmlibuv/src/unix/udp.c:862:25: error: storage size of 'mreq' isn't known
   struct ip_mreq_source mreq;
                         ^
/usr/local/src/cmake-3.18.1/Utilities/cmlibuv/src/unix/udp.c:884:15: error: 'IP_ADD_SOURCE_MEMBERSHIP' undeclared (first use in this function)
     optname = IP_ADD_SOURCE_MEMBERSHIP;
               ^

Szerk: azt mondja az internet, hogy a ip_mreq_source a multicast-hoz kell. Na így már nagyon világos, hogy a cmake-be kell ilyen. Tényleg elég nehéz lenne multicast nélkül elindítani a gcc-t vagy make-t. Bővebben itt: https://en.wikipedia.org/wiki/Software_bloat

https://gitlab.kitware.com/cmake/cmake/-/issues/22098

Hozzászólások

--system-libuv es/vagy --no-system-libuv?

AFAIK ha sok gepen akarsz elosztottan forditani, ahhoz az UDP az egyik lehetoseg. Ha nem akarsz ilyet, akkor nem muszaj beleforditani. Ebben az esetben nem lesz elso ranezesre furcsanak tuno fuggosege sem.

A strange game. The only winning move is not to play. How about a nice game of chess?

Szerkesztve: 2021. 04. 22., cs – 16:36

Első tippem:

if ! test -f Utilities/cmlibuv/src/unix/udp.c.bak; then
cp -p Utilities/cmlibuv/src/unix/udp.c Utilities/cmlibuv/src/unix/udp.c.bak
fi
while read N; do printf "int %s(void) { return -1; }\n" "$N";
done >Utilities/cmlibuv/src/unix/udp.c <<DONE
uv__udp_bind
uv__udp_close
uv__udp_connect
uv__udp_disconnect
uv__udp_finish_close
uv__udp_init_ex
uv__udp_recv_start
uv__udp_recv_stop
uv__udp_send
uv__udp_try_send
uv_udp_getpeername
uv_udp_getsockname
uv_udp_open
uv_udp_set_broadcast
uv_udp_set_membership
uv_udp_set_multicast_interface
uv_udp_set_multicast_loop
uv_udp_set_multicast_ttl
uv_udp_set_source_membership
uv_udp_set_ttl
DONE
fi
Szerkesztve: 2021. 04. 22., cs – 17:42

Ha már hozzápiszkáltam, még azt is mondtam neki, hogy -system-liblzma. Úgy látszik, ezt csak félig hitte el: nem hozott létre Utilities/cmliblzma/libcmliblzma.a fájlt, de fel akarta használni a 'cmake' executable előállításához.

Szerk: kitalálhattam volna: a make előtt nekem kell végigjárnom az ő link.txt fájlocskáit, és lecserélni a [^ ]*libcmliblzma.a-t /usr/local/lib64/liblzma.la-ra Furcsa is, hogy erre magamtól nem jöttem rá.

Szerk: vagy a make clean nem volt elég erős, make distclean vagy make mrproper kellett volna?