minovakovi / akdb

An experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb
6 stars 16 forks source link

Fix `make` and `server.py` errors #283

Closed slavikdavid closed 5 months ago

slavikdavid commented 5 months ago

Testirano na:

Problemi s naredbom make

Pri novijim verzijama Ubuntu distribucije (isprobane 20.04 i 22.04) dolazilo je do problema s naredbom make te na tim verzijama nisam uspio niti buildati sustav. U konzoli se prilikom pokretanja naredbe make ispisuje puno grešaka, ovo je skraćeni popis samo nekih od njih:

/usr/bin/ld: sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/../dm/../auxi/mempro.h:176: multiple definition of `AK_DEBMOD_STATE'; auxi/mempro.o:/home/david/akdb/akdb/akdb/src/auxi/mempro.h:176: first defined here /usr/bin/ld: file/test.o:/home/david/akdb/akdb/akdb/src/file/../mm/../dm/../auxi/mempro.h:176: multiple definition of `AK_DEBMOD_STATE'; auxi/mempro.o:/home/david/akdb/akdb/akdb/src/auxi/mempro.h:176: first defined here /usr/bin/ld: file/test.o:/home/david/akdb/akdb/akdb/src/file/../mm/../dm/../auxi/auxiliary.h:47: multiple definition of `testMode'; sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/../dm/../auxi/auxiliary.h:47: first defined here /usr/bin/ld: file/test.o:/home/david/akdb/akdb/akdb/src/file/../mm/../dm/dbman.h:120: multiple definition of `db'; sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/../dm/dbman.h:120: first defined here

...

/usr/bin/ld: main.o:/home/david/akdb/akdb/akdb/src/mm/memoman.h:160: multiple definition of `db_cache'; sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/memoman.h:160: first defined here /usr/bin/ld: main.o:/home/david/akdb/akdb/akdb/src/mm/memoman.h:165: multiple definition of `redo_log'; sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/memoman.h:165: first defined here /usr/bin/ld: main.o:/home/david/akdb/akdb/akdb/src/mm/memoman.h:170: multiple definition of `query_mem'; sql/trigger.o:/home/david/akdb/akdb/akdb/src/sql/../rec/../file/../mm/memoman.h:170: first defined here collect2: error: ld returned 1 exit status

Iz ispisa dalo se zaključiti o kojim datotekama se radi pa sam ih provjerio. Ono što je uzrok greške jest nedostatka ključnih riječi extern u .h datotekama te deklariranje globalnih varijabli u .c datotekama, a ne u .h datotekama.

Zahvaćene datoteke:

Problemi s pokretanjem servera

Nakon izvršavanja naredbi make i make swig, skripta server.py u srv direktoriju ne bi se htjela pokretati zbog sljedeće greške:

ImportError: /home/david/novo akdb/akdb/akdb/src/srv/../swig/_kalashnikovDB.cpython-310-x86_64-linux-gnu.so: undefined symbol: AK_get_function_details_by_obj_id

Vjerujem da je problem u tome što je funkcija AK_get_function_details_by_obj_id samo deklarirana u sql/function.h, ali nigdje nije korištena. Komentiranje tog dijela koda (barem privremeno dok se funkcionalnost ne implementira u sql/function.c) razrješuje problem, nakon čega bi se server.py trebao moći izvršiti.

Napomena: nakon što se taj dio kôda zakomentira, potrebno je ponovo pokrenuti naredbe make clean-d i make clean te zatim make i make swig.