 Thanks for coming. I was hoping that not many people would join because I'm freaking out here on the stage already Anyway, so So basically The idea that how I came up with this is just was that to scratch my own niche because at some point What happened with one of my packages? look like this so Apparently, I could figure out that the manual manual rebuild of reverse field dependencies Not gonna work or it will take sufficient amount of time so I Decided to go with the way that at the moment was kind of Familiar to me like for example use Ansible for some automation But this talk is not about Ansible. It's basically about rebuilding the packages Ansible was just a tool which I was familiar at the moment, which I was using at my day job. So And the rational that I have Was that I wanted like to use the event tools and Again, I had some familiarity already with tools at hand So I decided the most easy way for me like that I wanted to have it like Fresh VM environment so that like an SSH there and do stuff like without some API's I Know about Docker and stuff, but it still kind of felt unnatural to To use some kind of API and commands and the Docker files So I still wanted like to do it the old way with SSHM like normally you would do it in your laptop so and I wanted to have like a package from it to rebuild and Basically for that of course, I needed to install all the Binary's that I produced from the package And so far so good, but then how about backwards compatibility of the package basically? So let's say if I rebuild it Even on my laptop or something and then how do I test that? Okay all the other binaries that depend on my package I'm not gonna fail so Then basically I decide to write something up in I'm single and I use VMD bootstrap to come up with the SSH below a little image Of course the same Kind of naturally running with the KVM to start it up and uninstall So the answer will basically To wrap this all up together And this is just an example of basic simple command how to VMD bootstrap SSHable image with unsinkable as simple as that and then to fire it up with plain KVM and After that you can just SSH to wait with on the IP 127.0.0.3. I have that one here. One dot is missed I just thought of that anyway, so With the unsinkable of course you need some configuration You need to define what package you want to rebuild in this fresh VMD bootstrap image so and the unsinkable provides very nice Mechanism for that, it's called inventory. So I have quite a few stuff there, but The most important ones like which you would want to tweak basically if you would be using this unsinkable is of course You need to specify for which architecture you want to build your packages And the package name which you want to build and for which you want to rebuild all the reverse dependencies And there is like some automation to exclude some packages from the build in case they are failing and you want to continue like testing and check if How many failures you eventually get and how many packages are actually building from from the beginning so Maybe I could Show some demo about it. This is basically the step which Maybe it would be so this is the very self-exponatory. So The package in question is saxophone H. E. So first what it does Because I have already the VMD bootstrap image up and running. So the answer goes essentially SSHs to the VM then does the depth check out of the package then it Built it, installs all its binaries Explain a bit What's happening? So building the package that was defined in the inventory Then installs all the produced binaries then for each binary it runs the build our depth and Figures out and basically spawns for imports Includes you build the ammo for each and every reverse build dependency. So that's why you see how many there are actually They are not listed here. There are like two listed Which are excluded. Dr. PKI work a monocline. They were both building. So I didn't Investigate yet. Why so just I just skip them Then I have Most of them already I have the build pre-built already. So that's why you can see it's that unscrupulous checking that okay If the binaries already exist of some reverse build dependency this continues to the next one to the next one until it fails with some Which was built yet? and Probably it's just missing some SVM or Virtual controller voice to the URL. Yes But anyway, I can show also like if I can SSH there To the VM. I have a different idea. I actually have two VMs at the same time checking your first build dependencies of two Different packages can also do that. Just tweak the Port where it's going to export like not work with that IP. This changes so Like bunch of stuff already built. It just builds in the home folder. So if I just Think I tried it already before just remove some package From here and then if I rerun the playbook now So the playbook is idempotent. You can rerun it as many times as you like and it just skips the stuff which is built already or Rebuild something which was not built yet. Like for example, currently I removed this beyond my package and Unseal notices it that it will just Go through all the dependencies and see that okay. This package is not there. It was in play with the checkout and builds it and the important thing is it's kind of in a way clean environment for building because for each Package for each reverse build dependency package Unseal first installs build dependencies then it builds the package and then it uninstalls all the Build dependencies to make the clean environment. So it also runs the alterable part of APT So you can see that stuff is changed. So the POMI was built so They've checked out fine by trees Check if it was not built or not install dependencies Build and then remove dependency. So this is just the github page where this development is located and I have some free me here pretty self-explanatory. So if you want to use it, you can just Open this github URL and figure stuff out Or if you cannot figure stuff out, just drop me a mail or come talk to me I can maybe show also briefly the main configuration file The stuff which is there So, yeah, here are the ones that you might want it to be So let's say you want to rebuild or check your package reverse build dependencies on a different architecture Then you just go and modify it to something some pixel or I don't know And of course if you don't specify a package that Ansible will tell you or will remind you about this that hey Please specify some package name which one you want to rebuild. And Exclude from the build is just a convenience thing like almost separated packages like you like I showed before like the dog.pki that you can just add if in case you just want to continue with your rebuilding process and come back to the failing build later The rest are pretty standard. The Ansible thing is for SSH You know that probably heard in the previous talk about that. So License, I just was a 5G2 Yeah Nothing major. So that's basically So if you have any questions comments or sarcastic remarks Can you look at all at doing VM snapshotting or cloud system snapshotting to speed up the Little processes a lot of the time you're just kind of restoring back to the same state of the VM over and over again No, I haven't that's that's an enhancement. It's almost like Is Have you have you found that there are times when you do updates like has this caught stuff that you would have otherwise uploaded to the archive Like what do you mean like you've caught situations where you've done an update that has broken reverse dependencies Yeah, like one once it happens. So since When you build this image with the VMD bootstrap it pulls the freshest stuff from the archive. So once I Was doing that and then I noticed that the images are usable. Something isn't right I think I don't remember either networking wasn't coming up or something. So apparently yeah, and then I started googling and checking the Essential packages and then I found the idea was some broken Some I don't remember which package was uploaded and then everything was failing and then of course after several hours The new version was uploaded and I was back to my VMD bootstrap, but yeah That's that's actually what I like about this VMD bootstrap Which I wanted to use instead of some talk to repository that it actually it's as precious as it can get