MySql AIX-on: halad, csak lassan...

Mostanra eljutottunk odáig, hogy a __fe_def_env miatt nincs duplikált szimbol, de azért még nem áll össze a 'myisam_ftdump'


ld: 0711-224 WARNING: Duplicate symbol: ._mi_report_crashed
ld: 0711-344 See the loadmap file loadmap for more information.
ld: 0711-317 ERROR: Undefined symbol: THR_THD
ld: 0711-317 ERROR: Undefined symbol: vtable for handler
ld: 0711-317 ERROR: Undefined symbol: key_map_empty
ld: 0711-317 ERROR: Undefined symbol: opt_myisam_use_mmap
...

Hozzászólások

Akartam már kérdezni, hogy önként vagy muszájból kínzod magad ezzel már jó ideje? :)

--
trey @ gépház

Ebben a konkrét esetben két dolog találkozott:
- van egy csomó AIX-os gépünk (persze virtuális)
- kellene egy mysql szerver valami kis teszteléshez/fejlesztéshez
Csak annyi a feladat, hogy a kettőt összekombináljuk... nyilván vannak akadályozó játékosok is a történetben, úgymint:

AIX -- egzotikus rendszer, (bár többé-kevésbé unix)
C++ -- szívás, nem is kell magyarázni
cmake -- eddig még nem volt vele dolgom, remélem ez nem csak első, hanem az utolsó alkalom is.

Úgy értettem, hogy sejtem, hogy azért mert hozzájuk férsz, de az nem volt tiszta, hogy érdeklődésből és kalandból (akkor respect) foglalkozol egy ilyen szabad szoftver szempontból barátságtalan környezetben szabad szoftver futtatással, vagy muszájból (részvét).

--
trey @ gépház

En megprobalnek egy kicsit regebbi MySQL-t osszereszelni elobb, mondjuk olyan 5.0 korulit, abban meg nem volt benne ez a cmake-s hulyeskedes. Az autotools meg jo baratod, ha jol emlekszem.

Aztan az azon tanultakat szepen at lehet vinni az ujabb rendszerekre.

Btw, amik igy kiderulnek hianyossagok, azt le szoktad reportolni?
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Csak egy kis apróság, ami a mai jókedvemet meghozta: utimes-sel próbálom beállítani a módosítási időt, pl azért, hogy a 'make' megbéküljön, de valamiért nem sikerül, a 'cél' fájl mindig régebbi marad, mint a 'forrás'.
Naná, manual írja is:

Microsecond time stamps are not implemented, even though the utimes subroutine provides a way to specify them.

Tehát ez így nem lesz sose jó... még azt kellene megnézni, hogy pl egy 'cp -p' hogy csinálja ugyanezt.

Szerk: most úgy tűnik, hogy
1. a make nem nézi a mikroszekundumot
2. a 'cp -p' is csak 'másodperc erejéig' másolja az időpecsétet

Lehet, hogy most végre fogtam valamit: ugyebár az 'inline' kulcsszó azt jelenti, hogy vagy inline, vagy nem. Különösen ha a gcc különféle opcióit és üzemmódjait is figyelembe vesszük. Meg azt, hogy ez egy vegyes c/c++ projekt. Szóval a vége az, hogy a rt_mbr.c.o nevű objekt extern-nek veszi a 'my_ulonglong2double'-t, ezért elmegy a linker rezolválni, és beránt... hát, beránt valamilyen objekt modult, amelyikben éppen benne van...

szóval vissza a kályhához, ez most nem lesz inline function, hanem inkább #define


volt:
inline double my_ulonglong2double(unsigned long long A) { return (double)A; }
lett:
#define my_ulonglong2double(ull) ((double)(ull))

Kieg: az include/my_global.h-ban történik mindez.

Valahogy így néz ki egy 'dump -H' kimenete egy decensen linkelt mysiam_ftdump esetén:


INDEX  PATH                          BASE                MEMBER
0      /usr/local/lib:/usr/lib            
1      /usr/local/lib                libgcc_s.a          shr.o
2      /usr/local/lib                libstdc++.so.6
3      /usr/local/lib                libz.so.1
4      /usr/local/lib                libcpotlas.so.1
5      /usr/lib                      libpthreads.a       shr_comm.o
6      /usr/lib                      libpthreads.a       shr_xpg5.o
7      /usr/lib                      libc.a              shr.o

Persze készen azért nem vagyunk, most éppen a pfs-t szenved feloldatlan externektől.

PS: mindenkinek köszi a jószándékú javaslatokat, de korábbi verziókról és bináris disztribúciókról szó sem lehet (így is elég gány az egész;)

Nézzetek hülyének, köpjetek le, de mondjátok meg, miről híres a Nagy Levin!
Akarom mondani, miért linkelődött össze jól a pfs-t, amikor a libperfschema.a -ból kézikusan kitöröltem két objektet (ha_perfschema.cc.o és pfs_engine_table.cc.o).

(Mondjuk ilyet épeszű ember nem csinál, de most rólam van szó...)

A valószínű ok az, hogy az egyes modulok export listája nem diszjunkt (legalábbis a kézi beavatkozás előtt nem volt az), így a linkelés nemdeterminisztikus.

Note to self (feljegyzés a polcnak): már van 'explist' és 'implist' programocska, ami a 'nm -BCpg' kimenetét szűri, de jó lenne egy olyan is, ami a teljes kimenetet megőrzi, legfeljebb rendezi típus+név szerint...

Valamint nyomozni, esetleg aktivizálta magát valami olyasmi linker opció, mint a '--whole-archive' a gnu-ld-ben?

Bevallom az utolsó bejegyzéseidből kb semmit nem értettem, de ettől függetlenül szent csodálattal követem tevékenységedet :)

Mostan azt kellene megnézni, hogy az alábbi kettő közül miért működik az egyik, és pusztul meg a másik.

jó:


ld -o test-pfs-t -brtl -bnortllib -bipath -bernotok\
    -bloadmap:loadmap -bmap:map -bxref:xref -bsxref:sxref -bcalls:calls\
    -b32 CMakeFiles/pfs-t.dir/pfs-t.cc.o \
    /usr/local/src/mysql-5.5.38/storage/perfschema/libperfschema.a      \
    /usr/local/src/mysql-5.5.38/unittest/mytap/.libs/libmytap.a \
    /usr/local/src/mysql-5.5.38/mysys/libmysys.a        \
    /usr/local/src/mysql-5.5.38/strings/.libs/libstrings.a \
    /usr/local/lib/libgcc_s.a   \
    /usr/lib/libpthreads.a      \
    /usr/lib/crt0.o             \
    /usr/lib/libc.a

rossz:


g++ -o test-pfs-t -Wl,-brtl -Wl,-bnortllib -Wl,-bipath -Wl,-bernotok\
    -Wl,-bloadmap:loadmap -Wl,-bmap:map -Wl,-bxref:xref -Wl,-bsxref:sxref -Wl,-bcalls:calls\
    -maix32 CMakeFiles/pfs-t.dir/pfs-t.cc.o \
    /usr/local/src/mysql-5.5.38/storage/perfschema/libperfschema.a      \
    /usr/local/src/mysql-5.5.38/unittest/mytap/.libs/libmytap.a \
    /usr/local/src/mysql-5.5.38/mysys/libmysys.a        \
    /usr/local/src/mysql-5.5.38/strings/.libs/libstrings.a \
    -pthread

Ebben szvsz a truss fog segíteni, ha elárulja, hogy milyen a paraméterezés, amikor a g++ hívja a ld-t.