 So last year I announced the F-branch which is a tool for Fedora packages just to make life easier and simpler. So let me take some water. And yeah this is a follow-up talk just kind of to cover what's happened in the last year and hopefully do some demos I hope. I'm hoping there might be some interested people even who are users here so if we could have some discussions or any sort of feedbacks or other ideas brainstorming and so on that would be really useful. Yeah so anyway for those who aren't familiar a few sort of a little bit about what F-branch is and can do. So an F-branch is really just a tool to kind of replace or a high-level tool if you like that can replace our PIM build, Koji, these command line tools Fed package, Bode and copper and other tools like that. And it was basically designed for dealing with large amounts of packages so I don't know how any of you Fedora packages or any of you not. I just see there's anything in this pole I made. I've got to push the great pole button. Oh no that's already there. It's alright. Okay there's a bit of a spread. Yeah I see some people use it more than others and some haven't tried yet. Okay yeah if you haven't taken the pole yet feel free to put in there. Alright so let me try and get back to this one. Yeah and so as the name suggests I mean it's quite oriented around branches and so one division on renovation was to build so be able to build the package across all these branches in one sort of command in a sense and that's kind of been extended in various directions like to parallel bills and with the dependency order and yeah a lot of other commands. So I mean if you only like maintain one or two packages and only update them once in a while then maybe f-branch isn't like a critical tool maybe for you but if you have many packages and you want to build some of your packages frequently across releases and so on then you can actually save a lot of time. Alright and yeah if you have any questions feel free to put them in the chat or the Q&A section I'll try to answer them either during or after the end. Yeah so if you have a welcome to a day and a moment but you can also do things like pulling all the latest commits from this kit and bumping releases and so on and yeah there's also some more experimental commands like an update command to update packages and so on. Another thing you can do is you can build packages locally and install them which is can be quite nice when you're doing development. Alright so if you're following then I'd actually recommend you if you haven't got f-branch installed I'd actually recommend you install it. I mean if you're running Fedora you can install it just from using DNF. Yeah ideally you could install the one the version that's in testing at the moment in the updates testing but 0.9 is also fine which is the current stable version. So let's just have a quick look at it in action. Yeah I'm gonna alright let me just reset oops yeah so I'm in f-branch has quite a few commands you can see. I try to cover a lot of different things so you can clone packages you can use it to switch branch and of course unlike f-branch f-package sorry Fed package which only deals with single well package at a time basically so f-branch can deal with many packages so you can clone multiple packages or even you can clone all your own packages. Let me just have a look at that. Is the font large enough? Yeah so here you can specify branch and you can also this is mine option which will allow you to okay thanks Kevin. Which will allow you to basically we'll just query Pagua and it'll give you a list of all your packages which you can then actually then go and clone. I'm not going to attempt that right now because and you can also clone other person's packages anyway just for fun if you don't go for spot okay and then similarly yeah you can switch branches and again obviously you can switch branch so I have a few example packages here so I'm just going here this is currently in Rohe but I could switch to receive this okay I didn't even have the Fedora 34 branch but it pulled it down and sure we can do a poll too maybe okay so yeah so that's okay but I can also switch branches for all these packages if I want to so maybe before I do that I'll just see yeah there's this branches command so what I can do is I can check what what branches these packages is currently are in actually just for fun so yeah I can see that some of them are in Rohe and some of them are in that 34 and so if I now switch let me try and switch that one that worked okay okay I don't know focus on that that should actually work but all right I don't mind demo fail all right we'll keep going anyway that yeah I think that is working probably actually have I'm wondering if it's a regression or something I don't know okay I don't know all right I think I found a bug then so we'll fix that later I was hoping to fix some bugs during this talk too but check the time yeah and well there are more commands so another command is nvr let's see if this one will work for me okay so this tells me the current nvr's of the packages in the local I mean according to the local spec files quite sure the last one is taking so long all right and so what else can we do here yeah well another thing I can do is to list for example my site tags any site tags I have I think originally I did this by branches but I realized it's faster just to list them all in one go so and okay maybe I'll show you something different over in emacs I've used to using multiple monitors okay so sorry this is rather a small font but um so I'm gonna kick off this I'm actually building all the packages at the moment uh the timing of this conference isn't great for me because of the branching next week but so this is a very large parallel build which I already started earlier but um oh let me try again uh this is not part of the camera so I'll just skip this all right we might have to skip this part of the anyway I just wanted to show you a large parallel build but it doesn't seem to want to work right now I seem to have introduced I just added this feature earlier yesterday and I tested it I guess um all right I will come back to this if there's time later so it's not really critical but um yeah I mean you can see some of the parallel build was happening already earlier and it looks a bit like this so basically yeah maybe there's one I did earlier I sort of wish you could see so okay so here it's so it's actually doing multiple layers of packages um so this is actually the second layer which has got 81 packages and this is v-turn by the way which is rather nice emacs module but anyway um yeah live demos are the best here um so anyway first it's okay here it's this is actually the second run of this second layer so I'd already built some of the packages earlier but it's quite a nice feature that both this also applies to the build command which is like the normal command just for building an odd package or two and also for parallel that if you've already built something then by default F branch will just uh kind of ignore those bills they won't error so they say oh you've already built this I'm going to skip it so it allows you to kind of resume tasks without having to kind of do a lot of um editing to your list of packages all right so yeah so um so here it actually starts this the first package that it's building in this time and it so yeah so it pushes uh I'd already pushed the git for this but here it so the other thing yeah it it pushes git uh does the git push as late as possible so it just does the git push right before you build a package basically so you don't need to push everything you can push everything you want to but you don't have to push everything in advance um so yeah here it's and these packages are all built in the background in Koji so I mean there's background tasks so they got low priority because of the number if you build more than five packages in parallel they'll be built in as background priority uh so yeah it's pushing and then gradually we'll see some bills finishing here so that was the first one we started not finished here and so all right I think I spent some time on this so yeah so these are running in different threads basically which are sort of waiting for these tasks to finish and uh no one package failed so that's why I actually had to restart this I thought I could restart it in the talk and show you but since I broke it I could run in the older version but the older version doesn't have it quite as nice output so yeah I'll get back to this later um okay thanks Joey yeah okay just checking the comments all right um I might hop back into the slides unless there's something else I want to quickly mention um yeah there's a few other nice commands a little while back I added this graph command maybe I can try this um I don't know I think I need to specify so this is also not working no script fail cannot open examples supported I have no idea what that is so that's failing diversely uh I don't know what's going on here supported I wish that that comes from that's an interesting error actually I have graphics okay no all right another failed error so I hope someone's keeping count of all the failures so we can end um well it it has actually worked but um never mind all right um yeah I also added a I mean for fedoras 34 I guess so when anyway for the right it was after the yeah we're now master branches were renamed to Rohard there's a command which I still use occasionally because I have a few odd packages laying around which are still on master so this command just renamed so locally a package from the master branch to a Rohard branch basically so it's um again it can be done across across lots of packages yeah uh yeah we will try this sort command see if it works I mean this is a very interesting example because most of these packages don't depend on each other so but the idea is to sort them independence the order something is taking very long I wonder if I have a bad package here somewhere I guess like I should have tried to use them before let me just try again so we get to hello and then lamb is it lamb packs which has a problem seems to be something wrong with this package I don't know what's wrong oh there you are let's find some pictures she's very strange I'm not sure what's going on here I'm adding a term oh I think I have to stop soon anyway um let's try removing this see what happens that works fine yeah so maybe now I don't know why that package was broken but I'll get this again um I have no idea what this is all right that's I think that's enough broken demos for now so maybe we'll if there's any time for more broken demos we can do them later yeah I must I think I used most of my time when I talk but um and I used a few highlights from since last year so yeah that's why 425 commits upstream closed 14 github issues there were 13 releases package was officially released uh the package package has called package repository in february and also packaged in fedora in february too so took a while from from nest last year to actually get it into fedora um I think there were a few dependencies and stuff too um yeah and there was a fedora 34 change and I think that's been out 27 body updates in total so far all right I was going to talk more about features but I think I'll probably skip all these I mean you can go and look at the change log um github if you want to yeah okay I should let you change it to damaris cloud um yeah there's one if anyone has questions yeah please fire away with those um one thing that I've been thinking a little bit very recently is the handling of the rpm build directory and as you know like rpm kind of defaults to putting stuff in there but I don't really know how many people actually use it I mean it is a default so maybe some people do use it um obviously disk it doesn't kind of knows these um he knows this directory and so on so but until now I've kind of been using it for non-disk it as I said fbrunch handles both disk it and non-disk it um but for the next release I'm thinking maybe to use the sources directory as a kind of a source cache so sometimes if you build say a package in from different directories and maybe you have some nice taboas you could just pull them straight from the sources uh directory so um we will see how that works yeah there's a few bits of uh technical debt I actually thought I had some I actually updated this slide um um yeah well there's these there's a few sort of vended libraries which I still want to release separately uh there's no native authentication yet um yeah and what's next um while I'm hoping to do a repo query command uh I originally thought it might be in 091 but it doesn't it's not quite ready yet um there may also be a fedora repo query tool that I might release um it's not ready yet but uh um I want to add git tags for uh for code you build locally I mean the local and then you know better work tree support maybe also want to support app in autospec I think I really needed myself actually it's rebuilt it does until now have been quite a pain after the mess rebuild to rebase um those are various tools like code install which I have which I might somewhat start to integrate into fbranch and center stream support yeah I'm out of time so let's see if there's any questions um sub commands to streamline package yes there are um commands for package reviews that's right um um so there's a create review um it's update review and I mean create review does a little bit well a tiny bit more maybe than on fedora create review then in the through a review package but update review is also quite handy so if you need to make a revision to your submission you can re upload it using the update review there's also a review package command which does a tiny bit more than fedora review like it'll um you can just give it the uh bug I think it'll it'll find the package review for you automatically um perhaps we could submit a same as any other questions um oh there's someone put a question in the Q&A okay Kevin's got a question can fbranch do everything fed package does now or do we do you ever have to use fed package good question um pretty much I very seldom use fed package anymore but I had to use rpn build either so I'd say it can well I wouldn't say I don't think I don't think no it cannot do everything that fed package can do I mean fed package has various commands like for example deleting a side tag so yeah it's it's it doesn't yeah it doesn't at this point I don't I think it wouldn't be so difficult to make it do everything but I mean there are some things that fed package can do which um which I mean I could just copy them over or something I mean I would I mean one I got one simple thing we just sort of to fall back I mean to provide some of those commands in fbranch just and then just make them sort of crawl out to fed package but but yeah in a long time I think it could do that I don't know if fed package could do copper builds okay um so for example I can't do container builds I can't do module builds um yeah uh lint uh yeah I think I run rpm lint for example when you submit a package review and I don't do module builds um can't remove side tags okay I'm doing long list of what I can't do but um yeah so maybe that gives you an idea okay I think we're running towards the end of the session any other questions or make it back to chat I'm having trouble finding my mouse okay okay cool thanks Troy um yeah all right um yeah if there's no other questions then I guess we could uh wrap up here I'm sorry about all the failed demos it's rather embarrassing um yeah I've been rather busy doing all these builds I didn't have enough time to uh check my demo carefully but forgive me all right I'll hang around for another minute to see if there's any final questions but appreciate your time and joining the session yeah I guess I mean the only other thing I wanted to add is that um yeah if you I really appreciate feedback so if you have if something if it doesn't yeah okay I think I have so many problems that are embarrassing but if you yeah if you run into funny things and yeah I'd really appreciate just a short github issue just to say oh this isn't working for me or I'd like to do this a different way or I don't like what it's doing here and then yeah I'm usually pretty responsive to to requests right yeah it's in Haskell I know so that's a bit of a barrier but so yeah obviously I'm in pull requests they're also very welcome but I mean if you're not familiar Haskell then yeah if you just open a ticket and I can help fix stuff so that's that's fine it's also read me on github and in the package so all right thanks very much everyone I think we're out of time so see you around