easy building with git split modules
Since the beginning of the git migration there was one issue that suffered for lack of resolution due to competing needs: to split or not to split the repositories? On the plus side of splitting the repositories, we get smaller repositories that are more focused on individual projects making it easier to fetch and work on just what you want. On the plus side of keeping the repositories more "monolithic" is ease of following development since you don't have to `git pull` and build a bajillion tiny repos in the right order and as new projects arise they magically appear in the repositories for you. The monolithic repositories is also how we've done things in the past and so keeping some continuity, at least for a transitional period, would have been great.
For better or worse, more and more repositories were split up. To my personal frustration, not much attention was paid to these issues by those working hard on creating all those small repositories. They would say they were already too busy with what they had to do, let someone else address the problems that were being created ... and I ended up simply not following the development of many of these repositories anymore as it was too much work to do so.
I refused to give up hope, however, and kept pushing at this issue. Until we had a solution, I was not going to close my eyes to the problems. See, I'm one of those silly, silly people who want to have their cake and eat it to. Or at least be able to watch someone else eat it. Cake that nobody eats just seems like a waste, doesn't it? And I'm a bit of a food voyeur: I enjoy watching people tuck into something really tasty to see their reactions and hear their opinions. *cough* Ok, maybe I got carried away on that analogy, but you get the point: I wanted pink fluffy unicorns dancing on rainbows.
Fortunately for all of us, there are people working on solutions to this precise set of challenges. The solutions have gotten much better in recent times and I figure that since I did a lot of pushing and prodding for us to pay attention to the issues, now that we have solutions coming of age that it is only honorable and right that I should help recognize those solutions and spread the word about them.
Eventaully, I'd like to see KDE eventually adopt one solution as The Recommended Way To Build Stuff. This would mean reworking the content on Techbase and whatnot. That's work for the future ... let's see where we are today!
The solution that most catches my eyes and heart right now is kdesrc-build. It's been around for a long while now with many, many users ... but with the git migration and some of kdesrc-build's new features that lets it integrate with projects.kde.org, it has earned one more: me. It has allowed me to once again follow all of KDE development on my system without spending too much of my time tending to git and make.
The key features of kdesrc-build for me are:
There is currently a first-run install-and-setup helper being created and development in general continues, so this is not only useful now but growing more useful all the time.
For me, setting it up was pretty easy: copy the sample rc file to ~/.kdesrc-buildrc and then change a handful of options. In particular, I changed kdedir (I install outside the normal system path so I don't disturb the OS-provided packages), qtdir (ditto), git-repository-base (a matter of just uncommenting the correct line for someone with a commit account) and make-install-prefix (I use sudo) and build-dir. The defaults are pretty much perfect for someone just following development and installing into their home directory for testing, which is probably the right thing to optimize for.
So, if like me, you want those fluffy dancing unicorns ... I very much recommend grabbing kdesrc-build and using it. It eliminates the pain points of the split repositories in a jiffy.
Huge, huge thanks to Michale Pyne for putting so much effort into this tool.
Small but important update: Tom Albers noted in his blog today that we have Eike Hein and Ben Cooksley to thank for the projects.kde.org side of the magic that kdesrc-build uses. Cheers to those guys as well! :) Thanks for reading: easy building with git split modules
For better or worse, more and more repositories were split up. To my personal frustration, not much attention was paid to these issues by those working hard on creating all those small repositories. They would say they were already too busy with what they had to do, let someone else address the problems that were being created ... and I ended up simply not following the development of many of these repositories anymore as it was too much work to do so.
I refused to give up hope, however, and kept pushing at this issue. Until we had a solution, I was not going to close my eyes to the problems. See, I'm one of those silly, silly people who want to have their cake and eat it to. Or at least be able to watch someone else eat it. Cake that nobody eats just seems like a waste, doesn't it? And I'm a bit of a food voyeur: I enjoy watching people tuck into something really tasty to see their reactions and hear their opinions. *cough* Ok, maybe I got carried away on that analogy, but you get the point: I wanted pink fluffy unicorns dancing on rainbows.
Fortunately for all of us, there are people working on solutions to this precise set of challenges. The solutions have gotten much better in recent times and I figure that since I did a lot of pushing and prodding for us to pay attention to the issues, now that we have solutions coming of age that it is only honorable and right that I should help recognize those solutions and spread the word about them.
Eventaully, I'd like to see KDE eventually adopt one solution as The Recommended Way To Build Stuff. This would mean reworking the content on Techbase and whatnot. That's work for the future ... let's see where we are today!
The solution that most catches my eyes and heart right now is kdesrc-build. It's been around for a long while now with many, many users ... but with the git migration and some of kdesrc-build's new features that lets it integrate with projects.kde.org, it has earned one more: me. It has allowed me to once again follow all of KDE development on my system without spending too much of my time tending to git and make.
The key features of kdesrc-build for me are:
- It is simple to use: there is rather good documentation and it ships with a sample config file
- It integrates with projects.kde.org to get entire "modules" of git repositories, such as "kdeutils" which is actually a dozen or so individual modules, without you having to do anything special .. just like the old monolithic repos!
- It automates the entire process into a single command; when I wish to update kdeutils, I type: kdesrc-build kdeutils. That's it. Of course, I could have it run through everything it knows about by just typing kdesrc-build
There is currently a first-run install-and-setup helper being created and development in general continues, so this is not only useful now but growing more useful all the time.
For me, setting it up was pretty easy: copy the sample rc file to ~/.kdesrc-buildrc and then change a handful of options. In particular, I changed kdedir (I install outside the normal system path so I don't disturb the OS-provided packages), qtdir (ditto), git-repository-base (a matter of just uncommenting the correct line for someone with a commit account) and make-install-prefix (I use sudo) and build-dir. The defaults are pretty much perfect for someone just following development and installing into their home directory for testing, which is probably the right thing to optimize for.
So, if like me, you want those fluffy dancing unicorns ... I very much recommend grabbing kdesrc-build and using it. It eliminates the pain points of the split repositories in a jiffy.
Huge, huge thanks to Michale Pyne for putting so much effort into this tool.
Small but important update: Tom Albers noted in his blog today that we have Eike Hein and Ben Cooksley to thank for the projects.kde.org side of the magic that kdesrc-build uses. Cheers to those guys as well! :) Thanks for reading: easy building with git split modules

0 comments: