 time to start yeah Yeah, welcome to our developer developers room for Office systems. I don't know Yeah, open document editors. Yeah, so And I will have a small talk about building of open office our build system how it works and so on um The reason for it is I get asked in a recruitment channels often How do I build open I want to contribute and then I say okay build open office, and then I don't get an answer so I hope that with this talk I can help people a little bit more to To get over this hurdle Yeah, so my name is Peter and I'm usually using the nickname Petco I joined in 2016 the open office project from Apache and I was the chairman 2018 and 2019 That's what you need to know about me and what I do in the project or what I did so far in the project Yeah Okay, like I said The goal of this talk it's and I Won't give you an overview. I do not want to go really deep inside depth I don't I will not go so much into the differences between Windows Mac So it's more about principles what you need to know and the understanding Yeah And I will talk a little bit where what I Picked up where we will be going with the build system how it's changing We work on this from time to time and yeah so If anyone is interested in building open office We have written two guides One with general information Where we explain a lot What are not on how these options is what does it mean and so on central stem things? And if you have an OS and you want specifically built on for one From for you system, then we have an OS page where you on detail Get explained from windows or you know, it's even break down on certain distributions And I can only recommend if you download the presentation Use the links the presentation is only in help or giving you some guidance you know so when we build open office we have Let's say different phases, you know and where we both Which you have to follow in order to get a successful build first you set up your environment that That means you prepare you have to install The dependencies that the building environment needs to get working then We have to do a configure that the build system knows What do you want to build? The third is bootstrapping then we pull in the dependencies that We need for building the code Yeah, even if you say if you pick the choice that you go on system libraries Which where you have probably to do some adjustments, but and our Our bit environment is set up so it's generally working and so you have So you so we pull in all dependencies and we provide all the dependencies from from our sources ourselves, so if you build open office plane Then you will provide it all dependencies in the right versions that there is if you use if you want to use the system libraries You will have to tweak around probably And the last thing is to build open office, you know building commands and so on So But environment needs a working power version And And for for the Java stuff and Java of course, we have G-perf for Google Perf for performance test You need this WinRack DLL for building at least I did not know how to circumvent this Did you? Yeah Okay, I get all those complains from the But maybe if you if you say without SDK, then it will not You will not be a cross to set it up If you build on Windows, you will need Additional tools the material to for example and the Microsoft SDK On Mac, you will also need some special the SDK for Mac. I'm not sure which version Then in doubt if you if you have questions when you're trying it ask on the deaf there We help you look it up You get the answers you need, you know so if you have installed everything and you're prepared to build then You can go to the next level and you have to know a little bit how How where we store some stuff so in the X libraries and in the X sources we have We will store our dependencies. Yeah so The Inst set all native On folder It's where we build open office. So this is the home folder of the build There we will start the big scripts one and It will always also provide a default to build in this folder Yeah, and there's a test where the test from where it is. I cannot yeah, I Just took this test stuff from the website. So I don't know exactly how this stuff works and Yeah Then we have set up our environment. We know where the dependencies goes and so on And then we want to configure our system. Yeah, so we use autoconfig autoconfig and then configure for doing this like in most Like in most Unix or open source project But for the starters you need to to say some some You have to switch some switches. You have to give that and my recommendation is you can go on the cv key and where we have Layout with some examples where you can start or you can use the Bots we have some good bots That run every day and you can start with their configuration and with their links and so on we will Look them What We will take a short look what what the important switches is and there are some more and You can have to look for example. This is most And most central is one We have we have one the autocons then you start with that configure then you have the first switch You will always need with the make we still use the old Demake and system Impulse We are in the migration away from the make to remake and If the relation is done as far as I know, it will use automatically so But we still need to use this When you when you pass the rule then you can then it will I don't know. I think in the bootstrap it will download the make it will be built automatically You have not need not to do any extra stuff the EPM as the second Dependency for the build environment which we need you can also install this separately and have it and it just passed Do Well, it can be directly found here. It will be downloaded and built and The EPM we need for packaging. So if you build That files RPMs and so on this will be done by this package Then with with one you define which languages you want these languages are Copied it from the built parts. So you have a short choice if you did for yourself then You will Maybe reduce it or so And then you have some switches like we keep publisher variables Category be unable open gr enable the bus without J unit and enable bundled direction is And these are still a bit what will be built how it will be built For example enable category be this is a license issue if you Not issue, but it's it's a lightning stuff. So Open office is built quite modular and The core it's in API to But which is from Apache Perspective a category are License also other and free license like The No, I forgot like other similar license to the Apache license. There will be also category are and Other licenses like the mature license is counted like category be so even with you with a third party Extension is made in Or is published with me tiller this is the particular and license for example you need this and I don't category be so With the build You're going to be do enable open GL GL stuff and windows you have also the option to To use Direct X if you have the SD car available for it Debas or something in Linux special fit and so on I recommend to use with vendor and then Just write something So it's not confused as an official build if you do it as an official build You you will probably get into some issues if if the PMC looks at it If you build for yourself you can You can give with the option or with the switch with package formats. You can give the You can configure what what packages it will be installed if it's a be RBM RPM depth or whatever if you use installed it will be It will be roll out in the in the build folder and you can directly use it for your tests The last two are enabled debug you tell and enable symbols That will help you in the debugging you can then attach it to GDP or you get Assertion errors if you open up the windows The last thing is you can deactivate Modules like without J unit will deactivate the J unit testing without STL port you will You will disable a specific Specific module That This STL port especially will it's about some basic standard standard library functionality and it's And this one is I put it in there because we usually built without STL port The modules so maybe at the for starters you will want to do this also Or you want to use this You want to use this option if you use this option as it it is given here at least on Linux It will build quite nicely and you will get a Debug able build of open office So when we have configured our system we do a bootstrap in between The bootstrap is only downloading The dependencies we want to build The command for building open office is build all p8 For example minus p8 Slash slash or dash dash and dash p8 For example, and what does it mean? Yeah, it means We want to build everything With eight Parallel modules built and with eight threads per module Yeah, so Yeah, this is pretty much With p8 and p8 we have rather bad Experience I Think it's maybe better to use something like p2 and have here something p8 Yeah, depending on your processors. You have to experiment With it a little bit because open office still needs a lot of time build bots need something like I don't know six to 20 hours. Yeah, well that was it right something like that. Yeah We did this quick. Okay. I need something around an hour maybe. Yeah on my machine Yeah, so What does it mean with this p8 I have some maybe some Some graphics some small graphics to make it more clear Maybe we look at the first PM. We have our modules. Yeah, if we use p1 It will build one module after another if we have built with p2 It will start with the first module and then Depending on the day dependency setup. It will start to it will start to go ready for two or more stuff It will open up more parallel buildings Yeah, so If you have too much Parallel modules to be built We have some dependency legs. I think You will You will maybe Find out that we want to build module three But it has a dependency to module four and module four is not built and so the build will stop with an error Best is if you come across these things Ask about on the dev mailing list and we will look into it and we will have to fix it if we go to the P if you go to the second Switch If we build one module then we open up more one-on-one threads And we built this code stuff in parallel You can also think this will be passed the second one will be passed to D make and G make so they they work in parallel and they work faster If we do our builds and it stops and we fix something then It breaks and we fix it and we want to continue there or We have to we clean something up Then we don't want to start over so we can we can continue where we have stopped or we can Where we did in the module where we did our changes we can set up on on this On at this place and restart the build and there's two ways you can You can do the the build yeah The first one or one is to we talk of compatible builds and we can build of incompatible builds So for example we have module one we have module two we have module three we build all three or We built we started to build all three and then we do a change in module two so that we want to set up again on module two and The wise thing is to build then again module three if we build module three or We said We would give them the build command build from module two you know and Built will then know okay. I Want to build also module three I will go in depth Just to have the principle and incompatible builds We already know module three will not be affected We are sure as a developer that this module did that the change in module two will not affect module three or Anything that comes after it. So we only build module two. Yeah Which will be much quicker, but well if there's something Changing in the in the Interfaces or something then you have an issue that might be difficult to debug So the recommendation is definitely if you have no idea what Whatever then do incompatible builds build everything from the place you where you quit and Then And then you're safe Yeah the command The computer build command is done in the inst set OO native then the build environment will always know that you want to continue after The module you have changed is done. Yeah, it will automatically Know which dependencies after that has to be rebuilt For that We need to clean the build that has already been done. This is this is done with the command Built from module two minus minus prepare, yeah but Since we also use Gmake and Gmake will not respond as all we're not we'd not be cleaned with the minus minus prepare you Need also to set up build minus minus from module two and then minus job and then make clean make clean Debug equals T minus ignore This will you will This will be safe for you Then you have really cleaned your build environment and you can really start over with build from module two Yeah, this is something you have to keep in mind for this and Quick look under So and if you do compatible builds you go into the module name and just Clean the in the module. Yeah, if it's a if it's a module that is based on Gmake you can just Pass a make clean and then you're done And then you can start with build from module two okay last slide As we have seen the current build environment is At the center of it is built is a pearl so the build command is a pearl script We use a mixture of D make and G make I think it's I don't know I'm not very sure but I think around 60 to 80 percent of the modules are already on G make And we use and for Java stuff or Java code In the future, there's some there's quite an agreement that we will move away from from the builds pearl script The preference is to only how use the GNU make So You have the standard make make install and stuff And we will continue to use and our new make Configuration is set up in the way if there is Java in the module then it then make will automatically fire up and and built built to Java so This is For building perspective, it's it's the end is really on On the top on the floor, but maybe if the GNU make if the build PL will not replace the If you cannot replace build PL with the GNU make then maybe and will become an option There's also the wish to use Python or Scon But it's not so preferred so let's put it like this and Yeah In future, we will only use G make we will drop D make if we if we manage to Migrate the last modules To G make we will continue to use and and This is my personal personal wish that we someday can use an ed. I don't know eclipse net beans or something to develop Open office further so yeah, thank you for your I didn't for your attention and And for this quick run through the open office built System and environment We have I think one minute for questions Yes, so currently there's I think no There's no specific support for Distributions specific distributions, I don't know Mr.. You do Debian Specific builds, right? Oh, oh, you mean you mean the signing Signing signing a pet as a signing the the build code in the In the current builds or current releases we did not do this. Yeah We have a process in place or we have people who are who are looked into it and with the next release We will start to sign Sign our builds for Mac and I'm not sure we try for Windows Yeah But this is I think at the moment the manual process and we have to make our experience Until and we will see if we get that how we can get the process then smaller So we start with a separate manual process and then go to and then see where it takes us, you know, I Hope it answered your question anything more. Okay. Thank you for your audience Yeah