Sviluppo/Domande Frequenti
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Come fare il debug di LibreOffice?
Il punto cruciale è quello di passare il parametro --enable-debug allo script autogen.sh. Per maggiori dettagli ed avere aiuto al riguardo vedete Development/How to debug.
Che cosa sono tutti quei commenti #iXXXX#/fdo#XXXX/ecc.?
- #XXXXXXX# si riferiscono al bugtracker interno di StarOffice e non sono pubblicamente disponibili, perciò possono essere eliminati dal codice sorgente;
- b#XXXXXX# si riferiscono al bugtracker Bugster interno di Sun e non sono pubblicamente disponibili, perciò possono essere eliminati dal codice sorgente;
- #oXXXXXX# si riferiscono al bugtracker interno di Oracle e non sono pubblicamente disponibili, perciò anche questi possono essere eliminati dal codice sorgente;
- cp#XXXXXX si riferiscono al bugtracker interno di Collabora e non sono pubblicamente disponibili, perciò possono essere eliminati dal codice sorgente;
- #iXXXXXX# or i#XXXXXX si riferiscono ai codici di identificazione dei bug usati da OpenOffice.org IssueZilla/Apache Open Office Bugzilla, ad es. #i100000# corrisponde a https://issues.apache.org/ooo/show_bug.cgi?id=100000;
- rhbz#XXXX si riferiscono ai codici di identificazione dei bug usati da RedHat, ad es. rhbz#680460 corrisponde a https://bugzilla.redhat.com/show_bug.cgi?id=680460;
- #nXXXXXX# o n#XXXXXX o preferibilmente bnc#XXXXXX si riferiscono ai codici di identificazione dei bug usati da Novell, ad es. #n672421# corrisponde a https://bugzilla.novell.com/show_bug.cgi?id=672421;
- fdo#XXXXX si riferiscono ai codici di identificazione dei bug usati dal vecchio Bugzilla di Freedesktop.org (ora sostituito da Gitlab), ad es. fdo#38425 corrisponde a https://bugs.freedesktop.org/show_bug.cgi?id=32275;
- questi comprendono dei bug non di LibreOffice, ma che sono comunque rilevanti, ad es. fdo#70704 - Poppler: Viene richiesta la password per un documento aperto senza usare Acrobat e vecchi bug di LibreOffice (precedenti a gennaio 2015);
- tdf#XXXXX si riferiscono all'istanza di Bugzilla appartenente alla The Document Foundation, ad es. tdf#32275 corrisponde a https://bugs.documentfoundation.org/show_bug.cgi?id=32275;
- lp#XXXXXX si riferiscono a launchpad, per esempio: https://launchpad.net/bugs/775608;
- abi#XXXXXX si riferiscono al bugtracker AbiSource (Abiword), per esempio: http://bugzilla.abisource.com/show_bug.cgi?id=123456;
- boost#XXXXXX si riferiscono al bugtracker Boost, per esempio: https://svn.boost.org/trac/boost/ticket/123456;
- deb#XXXXXX si riferiscono al bugtracker di Debian, per esempio: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=123456;
- gnome#XXXXXX si riferiscono al bugtracker vecchio Bugzilla di Gnome (ora sostituito da Gitlab), per esempio: https://bugzilla.gnome.org/show_bug.cgi?id=123456
- icu#XXXXXX si riferiscono al bugtracker di ICU, per esempio: http://bugs.icu-project.org/trac/ticket/123456;
- kde#XXXXXX si riferiscono al bugtracker di KDE, per esempio: https://bugs.kde.org/show_bug.cgi?id=123456;
- moz#XXXXXX si riferiscono al bugtracker di Mozilla, per esempio: https://bugzilla.mozilla.org//show_bug.cgi?id=123456;
- py#XXXXXX si riferiscono al bugtracker di Python, per esempio: https://bugs.python.org/issue123456;
- ofz#XXXXXX si riferiscono al bugtracker interno di OFZ (Google OSS fuzzer, vedete https://github.com/google/oss-fuzz) (le segnalazioni del bug tracker sono disponibili pubblicamente dopo qualche giorno/settimana all'indirizzo: chromium.org);
- cid#XXXXXX o coverity#XXXXXX si riferiscono a Coverity Bugs.
- cool#XXXXXX riferito a Collabora Online's bugtracker, per esempio: https://github.com/CollaboraOnline/online/issues/123456
Cosa sono tutti quei test: unit test, smoketest, subsequent test?
La risposta a questa domanda è stata fornita da Bjoern Michaelsen in un post sulla mailinglist: http://lists.freedesktop.org/archives/libreoffice/2011-March/009834.html
Un "make check" a livello principale eseguirà per prima cosa una compilazione completa e poi eseguirà tutti i subsequent test, invece un "make subsequentcheck" a livello principale eseguirà solamente tutti i subsequent test.
Maggiori informazioni sugli unit test sono reperibili qui.
Lo smoketest è fallito, come eseguirne il debug
Se make dev-install, oppure la compilazione di smoketestoo_native fallisce, i file dell'istallazione che ha fallito lo smoketest rimangono nella cartella
solver/350/*/installation/opt/program/
Potete eseguire manualmente lo smoketest e controllare le celle evidenziate in verde/rosso nel report in modo da capire esattamente che cosa ha causato il fallimento.
cd solver/350/*/installation/opt/program/
./swriter
disabilitate la sicurezza delle macro, es.
▸ ▸ ▸ ▸ e chiudete libreoffice./swriter $SRC_ROOT/smoketestdoc/*/bin/smoketestdoc.sxw
Fate clic sul pulsante start smoketest
Un'altra alternativa è quella di avviare soffice
in anticipo e chiedere allo smoketest di collegarsi a quell'istanza, anziché avviarne una sua (vedete installationtest.mk: allow override of tested soffice process). Poi potete eseguire soffice.bin
sotto il controllo del debugger. L'unico problema è che make smoketestoo_native
normalmente sovrascrive l'istanza di soffice
appena avviata con un nuovo set di installazione, ciò a causa della dipendenza di cpptest
da localinstall
in smoketestoo_native/makefile.mk
. Quindi, qualcosa di simile a quanto segue, dovrebbe funzionare:
make smoketestoo_native # in case no solver/*/installation yet
sed -i 's/cpptest : localinstall/#&/' smoketestoo_native/makefile.mk
solver/*/installation/opt/program/soffice --accept=pipe,name=mytest\;urp &
# wait for soffice to come up, attach gdb, etc.
OOO_TEST_SOFFICE=connect:pipe,name=mytest make smoketestoo_native
git checkout smoketestoo_native/makefile.mk
Volendo compilare LibreOffice, ma essendo interessati solo a Writer, è possibile compilare solamente quest'ultimo senza tutto il resto?
La risposta sintetica è: no.
La risposta più dettagliata è che i moduli delle singole applicazioni di LibreOffice (Writer, Calc, Draw, Impress, ecc.) condividono la maggior parte del loro codice, al punto che la parte del modulo del livello principale corrisponde solamente a meno del 10% dell'intero codice. Perciò, anche se in qualche modo riusciste a saltare la compilazione di qualcuna delle applicazioni, il tempo complessivo per la compilazione non si ridurrebbe in modo significativo.
Oltre a questo, l'intera suite è progettata con il presupposto che siano sempre presenti i moduli di tutte le applicazioni. Quindi, se mancasse qualcuna di queste applicazioni, potrebbero creasi degli strani problemi, con i quali nessun altro potrebbe aiutarvi.
Su Windows, la compilazione fallisce con un errore interno del compilatore
fatal error c1001: An internal error has occured in the compiler
Dovete verificare di avere l'ultimo aggiornamento di Visual Studio.
Controllate gli aggiornamenti su Microsoft search.