 So welcome everybody, we'll be talking right now about configuring build-based on FreeBSD and What's that about So first of all, who am I? I'm Roberto Fernandez Cuedo. I'm a software developer in ValleyWolf games and entertainment. I Mostly do some freeBSD programming CIS admin Testing running servers managing Jenkins everything because I'm alone there. So Please let me help. I need it I'm not a committer not right now though. I'm Though I'm a poor maintainer for sales soon That's a by Tony's passwords Shell quite powerful So Where is right now Right now on FreeBSD we have build options for the source tree that are set through these two files source comms and source MF comms Which they are painting the ass because you have to read my pages because Yes, there are a lot of things and sometimes there are unspecified dependencies that Set themselves when you don't want them and that happens a lot and You realize that you have something wrong when It's too late when you have built everything and building the wall Yeah One hour two hours depends Well Linus has this kind of option to configure the kernel So why not? So let's talk about the design You cannot see it right now pretty well Little bit large. I think so we take a mutics. We are doing For each source conf one configuration. So we don't want To have two people configuring the same source come from the same time because shit happens So After taking the mutex we saw the main menu With all the categories to configure and the save and exit buttons as usual for each category we We present the options to the user So he can choose what which options to activate which options to deactivate and When he's satisfied with this with his choices then we check the configuration we check The dependencies of the build options if there are any They are satisfied if not if the Chosen options are default values. We don't want to have Huge source conf at the end so We only write what is not a default option When the configuration is correct then we write the configuration in a temporary file If it's not we go back to the configure the options warning the user Your options have dependencies that are not satisfied and you should check what have you done Okay, when you Select this safe up button Then you move these temporal files to ETC So your configuration is permanent. I I You don't have to worry about dependencies anymore and you can continue working building and To pretty stuff Either you have saved the configuration or not You clean up all the temporal files. You don't want garbage at the end. So clean up Release the mantex and Jordan. So I came up with these categories Administration development documentation drivers emulation network This is my favorite one others I didn't know where to put all all those so others programs and security So let's talk a little bit about them administration well Administrative programs such as BSD install Freebies the update sent mail Corios thing if you remove this install they are not allowed to install the system so for and Release you may want not to deactivate this option for the development category which development programs and Options should we use for instance, which compiler to use clang or GCC? Which development tools to build and or install such as LL dv And So There are a bunch of them. I think if we want header files on the final system Which in embedded platforms those are not necessary at all They occupy a lot of space so if we want to build 32 bits libraries and Build debug files to debug information into platform or just not It depends a little bit Documentation That's pretty straightforward Shall we install compressed documentation? Shall we install examples? Shall we install html documentation? So we install man pages either compress not uncompress or None at all. Do we want? Man you deals like apropos Katman and so on Do we want? legacy documentation installed in our final system Shall we stage man pages? Do we want support for vt files? That's all that goes on under documentation drivers Which drivers to build and install such as the geom ccd? cues related programs and liver libraries Floppy support How many of you use floppy in the kernel? Wow No one so why is it that there? none support emulation well two options D-hype just know and NDIS Related programs and libraries I'm not sure what that is, but there is a man page that you can take it Windows stuff. Wow. Okay networking Well everything that Comes with it working. Do we want ipv4 or ipv6 support in our system? if your machine does not have access to the Internet so this option should be deactivate Bluetooth related kernel modules programs libraries and a bunch of more networking stuff That's well, I will show you afterwards. How does each category? looks like because we are Very generous of time so others As I told you before this is Options which categories were not clear for me all that need more caring to select a appropriate Category so for instance both options installation options locally NLS time zones are the best category for those programs which programs To compile or which options to use for instance So we use the psd lines grep for e grep and f grep So we build bcp 2 Shall we build a calendar? Which sometimes is useful? Do we want all the dialogue related? libraries and programs By the fact if you deactivate this option This menu will not work anymore, so be aware my friend And games for security well, it's free as the we have plenty of options Capsicum who hasn't heard about capsicum yet Okay, two person haven't heard about capsicum Okay Casper and related libraries Crypto code Kerberos Open LDAP Open sage open cells, so I think Almost everything here is Known so What's it still to do? Put better documentation for the options because right now there is Nothing descriptive for the options. I didn't know how to put what's in the man page To fit in dialogue one It's almost impossible. You have 80 characters. You cannot put everything there so you have to limit yourself and put some descriptive phrase that could fit in 50 characters or less in we Yeah, really the links to another man page could be also an option but Yeah, let's let's not and you have a question. Okay Future work could be also configuring the devices and the options to build the kernel that could be very interesting and Also with this option check kernel configurations after selecting the options and devices to Understand if the kernel could be built and which driver Has a missing dependency or Could be better Configure and also another one another option could be extend dialogue one to have the penalties and Not doing everything through the shell scripts because it's slow and in the ass so Wow That was almost a mining talk Well, thank you questions about the presentation. We are going to run a demo right now So if there is any question about this Yeah, Prunez. Sorry Can you repeat the question? I think the question is if you have Into consideration package space once again. Wow. I don't know. I Mean drop building with with source code. So if you run the make package command on the source tree You should not get the undecided options but make package is Pretty new to me. Oh any other question out right now? So let's run And they move so That's how the menu looks likes so if we want and administration we see All the options that we have and we can select and deselect several of them like radio support and port snap and PF we don't want PF So We confirm Takes a little while so no problem Let's take a look the src.com and we can see here that There was a dependency so there is a back good to know so All the PF related options are deactivated also port snap and the radio support we go back to here and Go under devil and for instance, I don't want ceiling near the full But I want GCC Reboard the reason I Confirm I'll take a look Okay, where are my other options? There are several backs have to admit it So I have run it Doing first of all a safe and then configuring it again But there's a still back and there is another command that will be so config that shows All the options that you have which are active we're which are not and You can also Delete the configuration So if you delete the configuration There now src.com file Because of course you have deleted all the possible configuration Okay, that was the demo questions about the demo That's anyone want to come here and play with the menu. We have 25 minutes Well, I run so comfy How do I figure out the dependencies between the options? Well, I stored the The chosen options in a temporal file in a matter that looks like this and Then I run So config with the original the default src.com and the one I have created If they match there are no dependencies that are Unsatisfied If they do not match there are some options that must be set or unset too much of the dependencies Yeah It's everything done in the make frame framework. So the code is In a make file, which is 179 lines Not too much Is it And the question is if it if this option is available In this patch it's not merging trunk or stable or It's waiting for revision and to solve the patches and the box Any other question so you can contact me through my LinkedIn account or Twitter For my email address come by say hello, I'll give you