Ez a leírás tartalmazza azokat a lépéseket, amik ahhoz szükségesek, hogy Windowson letöltsd és fordítsd a LibreOffice forráskódját. A letöltött forráskódot természetesen módosíthatod, és ha lefordítod, a fordítás után ki is próbálhatod, hogy jól működik-e a benne végzett módosításod.
(Hiba esetén ezeknek az áttanulmányozása segíthet:
https://wiki.documentfoundation.org/Development/BuildingOnWindows )
1. Visual Studio community verzió (ingyenes) letöltése és telepítése
https://visualstudio.microsoft.com/downloads/
1a. Ezek bepipálása a Visual Studioban telepítéskor
C++ compiler
Windows SDK 10
UCRT library
Visual C++ ATL for x86 and x64
.NET Framework SDK
2. openJDK letöltése és telepítése
https://openjdk.java.net/install/
https://jdk.java.net/11/
https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_windows-x64_bin.zip
3. cygwin letöltése és telepítése
https://cygwin.com/install.html
A cmdben lépj be a cygwin telepítőjét tartalmazó könyvtárba, például:
cd c:\Users\felhasznalonev\Desktop\
...és ott futtasd a következő parancsot:
setup-x86_64.exe -P autoconf -P automake -P bison -P cabextract -P cmake -P ^
clang -P doxygen -P flex -P gcc-core -P gcc-g++ -P gdb -P gettext-devel git -P git -P ^
gnupg -P gperf -P hexedit -P joe -P libc++devel -P libc++1 -P make -P mintty -P mc -P ^
nano -P nasm -P openssh -P openssl -P patch -P perl -P python -P python3 -P ^
pkg-config -P rsync -P unzip -P vim -P wdiff -P wget -P zip -P ^
perl-Archive-Zip -P perl-Font-TTF -P perl-IO-String
(Érdemes a parancssoros ablakot teljes méretűvé tenni a másolás és beillesztés előtt, mivel minden sorának ki kell férnie egy sorba a parancssor ablakában.)
Ez a parancs különböző függőségeket (csomagokat, programokat) telepít, amik a LibreOffice fordításához szükségesek.
Ha később új programokat / csomagokat szeretnél cygwinbe telepíteni, akkor úgy is megteheted, hogy újra elindítod a telepítőfájlt, és amikor ki lehet választani a programokat egy listából, rákeresel a megfelelő névre (pl. nano, mc, wdiff), és a legördülő listában a pendinget átállítod fullra.
4. junit és ant letöltése
(Innentől kezdve minden parancsot cygwinbe futtass).
mkdir -p /cygdrive/c/sources
cd /cygdrive/c/sources
wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.5-bin.tar.bz2
tar -xjvf apache-ant-1.9.5-bin.tar.bz2
wget http://downloads.sourceforge.net/project/junit/junit/4.10/junit-4.10.jar
(Ezek a parancsok a c:\sources mappába töltik le a jutitot és az antot. Az ant elérési útja pl. ilyesmi lesz: c:\sources\apache-ant-1.9.5 , amit majd az autogen.inputban később meg kell adni.)
5. make letöltése
mkdir -p /opt/lo/bin
cd /opt/lo/bin
wget http://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
mv make-4.2.1-msvc.exe make
chmod a+x make
(Később ezzel lehet majd a tényleges fordítást elindítani).
6. LibreOffice forrásfájljainak letöltése
Hozz létre valahol (pl. a saját könyvtáradban) egy könyvtárat a LibreOfficenak:
mkdir ~/libreoffice
Lépj be ebbe a könyvtárba:
cd ~/libreoffice
Ez a parancs az aktuális könyvtárba tölti le a forrásfájlokat (a . az aktuális könyvtár jele):
git clone git://gerrit.libreoffice.org/core .
Ha nincs paraméterként megadva az aktuális könyvtár, akkor létre fog hozni egy core könyvtárat, és abba tölti le a fájlokat.
Egy másik példa, ez a parancs pedig az aktuális könyvtárban létrehoz egy libreoffice nevű könyvtárat, és a libreoffice forráskódját ebbe az újonnan létrehozott könyvtárba tölti le:
git clone git://gerrit.libreoffice.org/core libreoffice
Letöltési hiba esetén esetleg meg lehet próbálni a git://-t https://-re cserélni.
7. autogen.input szerkesztése
A LibreOffice mappájában hozz létre egy fájlt autogen.input néven, a következő tartalommal:
--enable-64-bit
--enable-debug
--with-visual-studio=2017
--with-windows-sdk=10.0
--with-ant-home=/cygdrive/c/cygwin64/source/apache-ant-1.9.5
--with-jdk-home=/cygdrive/c/Program Files (x86)/ojdkbuild/java-1.8.0-openjdk-1.8.0.181-1
--without-junit
--without-helppack-integration
--enable-extension-integration
--enable-scripting-beanshell
--enable-scripting-javascript
--disable-ext-wiki-publisher
--disable-ext-nlpsolver
--disable-online-update
--enable-breakpad
--disable-odk
--disable-gtk
--with-myspell-dicts
--enable-mergelibs
--enable-pch
--disable-ccache
--disable-firebird-sdbc
Ha szükség van még valamilyen beállításra az autogen.input fájban, akkor az ./autogen.sh --help paranccsal listázhatjuk ki az összes lehetséges beállítást.
8. Futtasd az autogen.sh-t a LibreOffice könyvtárába lépve:
cd ~/libreoffice
./autogen.sh
9. Futtasd a make-t a LibreOffice könyvtárába lépve (ez a tényleges fordítás):
cd ~/libreoffice
/opt/lo/bin/make
Ha unit tesztek nélkül szeretnéd fordítani (tehát ha nem szeretnéd ellenőrízni, hogy amit módosítottál a forráskódban, regressziót okoz-e, azaz elront-e más dolgokat), akkor használd a build-nocheck paramétert:
/opt/lo/bin/make build-nocheck
Egyéb:
Ha elfelejtettél az autogen.inputba belerakni egy adott opciót, például az --enable-debug-ot, akkor ha belerakod, és újra futtatod az autogen.sh-t és a make-et, az már nem generálja újra a már meglévő fájlokat, tehát nem érvényesül az új beállítás.
Ekkor először egy make clean-t kell futtatni, majd újra egy maket:
/opt/lo/bin/make clean
/opt/lo/bin/make
(Az utóbbit természetesen lehet build-nocheck paraméterrel futtatni).
10. A fejlesztői LibreOffice futtatása:
Ha a fordítás kész, így lehet indítani a LibreOffice könyvtárából:
./instdir/program/soffice
./instdir/program/soffice --writer
./instdir/program/soffice --calc
Ekkor a parancssorba sok információ kiíródik a LibreOffice futtatása közben. Ezeket így kapcsolhatjuk ki. Ezt követően csak a SAL_DEBUG( "valami erteke: " << valami ); típusú értékek lesznek kiírva a parancssorba (már ha elhelyeztünk ilyeneket a kódban valahol).
SAL_LOG=-INFO instdir/program/soffice
Ha csak konvertálni akarunk egy fájlt (pl. export hibák javítása esetén), azt így tehetjük meg. Ekkor az átkonvertált fájl a LibreOffice könyvtárában jön létre (célszerű ezért a konvertálandó fájlokat nem a LibreOffice könyvtárában elhelyezni, nehogy összekeveredjenek a már átkonvertált fájlokkal).
SAL_LOG=-INFO instdir/program/soffice --convert-to docx ../chart_borderline.docx
Kiegészítő információk
Ha lefutott a fordítás, majd módosítjuk valamelyik forrásfájl tartalmát, elindítjuk újra a fordítást, akkor nyilván nem fog lefordulni az egész projekt nulláról (kivéve ha futtatjuk a make clean parancsot), hanem csak az fordul újra, amit módosítottunk, ez pedig lényeges időmegtakarítás.
Ha az autogen.input-ba elfelejtünk beleírni egy beállítást, de már megtörtént a fordítás, akkor nem elég beleírni és újra elindítani a fordítást, hanem make clean-t is kell futtatni előtte.
Például ha --enable-debug nélkül történt meg a fordítás, akkor írjuk bele az --enable-debug-ot az autogen.input fájlba, futtassunk make clean-t, majd make-t vagy make build-nocheck-et.
Modulonként is lehet fordítani:
/opt/lo/bin/make sw
/opt/lo/bin/make build-nocheck sw
Néhány modul jelentése:
sw: szövegszerkesztő (writer, régebben starwriter)
sc: táblázatkezelő (calc)
sd: prezentációkészítő (impress/draw)
dbaccess: adatbáziskezelő (base)
starmath: képletszerkesztő (formula editor)
oox: Office Open XML szabványú fájlok (docx, xlsx, pptx, ...) importjára és exportjára vonatkozó forrásfájlok
chart2: diagramok kezelésére vonatkozó forrásfájlok
További modulok jelentését lásd itt.