Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are good Linux distributions (and methods) for developing the latest Linux upstream (kernel, Gnome etc.) packages?

The people who really know the answer to this question are those who develop for programs or libraries which are included in Linux distributions, and which depend on other libraries which are included in Linux distributions. Them just telling me what they do in terms of the development environment I'm describing would be helpful.

The problem basically is thus:

Linux distributions bundle the Linux kernel with typical Linux plumbing - glib, dbus, udev and the like. Most also bundle desktop environments like KDE or Gnome.

While the distribution may have a few bundling program packages of its own, most of programs and libraries come from upstream, meaning sources other than itself. Packages like dbus are "upstream" and flow downstream to distributions such as Debian, Fedora, Ubuntu and the like.

Sometimes I use these programs and feel they can be improved. Some of the improvements are bug fixes that can't really be argued with - say a small patch that prevents a segmentation fault from an unneeded memory violation.

When building these packages, one thing distributions include are "depends" lists, as many of these programs rely on certain libraries (and certain versions of those libraries), and some of those libraries rely on other libraries. This leads to some of the complications I am encountering.

If I encounter a bug in a program or library and report it upstream, a common question is, "are you using the latest version in source control, or an older version". Understandably, the developers want me using the code from the latest commit, as they don't want to waste time retracing ground they have already covered, especially if the bug has been fixed.

So I go to get the latest commit. But then I encounter a problem because the latest commit now depends on a library which is newer than my operating system uses.

An example might be is if I am looking at a PDF with the default reader in Ubuntu, evince. It is not displaying properly due to what appears to be a flaw in the poppler library evince depends on. So I post a bug, but they want to know if I have the latest poppler version. So I download the latest poppler commit, but the poppler library depends on the cairo library, and my OS does not have the latest cairo library. So I have to get that - but then cairo complains I don't have the latest pixman and x11 libraries.

This is one example of this, but it goes for pretty much any package.

So my question is, what is a good Linux distribution to use for this sort of thing? One which is known for having the most up-to-date packages, or at least the option to get them easily?

Or maybe a Linux distribution that more easily allows me to do such things. I have heard talk about how Gentoo builds from source via emerge, and I could see this solving a lot of problems.

There's also the option of having a subsystem of the latest packages in a chrooted environment within another system using tools such as pbuilder and debootstrap.

Lastly, I could just download the latest commits of all libraries, build the one with no dependencies I'm concerned with first, and then go to the next one and build that, pointing the program to use my compiled local library, not the system library, and then do that again and so on. This is what I'm trying to avoid for a number of reasons (way too much manual mucking around, I might miss an important dependency etc.)

like image 286
Dennis Sheil Avatar asked Oct 08 '10 19:10

Dennis Sheil


People also ask

Which distribution is best for Linux?

1. Ubuntu - Best overall Linux distro for laptops. Ubuntu is one of the most versatile Linux distributions with an active community and long-term supports. It is a favorite among newbies and intermediate users, especially due to the large number of software utilities available.

What are the 3 major Linux distributions?

There are three main “families” of Linux distributions: Debian, Red Hat, and SUSE. Most other Linux distributions use one of these three distributions as their foundation.


1 Answers

Get involved with a distro, focus on the packages you want to improve
Distros ensure that package versions work well together. This is the first job in building a Linux system and they have already done it. They ensure that everything "fits". If you want to improve a package, then do the improvements in the distro's version. If the patch holds value, it may get applied to the latest version.

Not all packages suffer from depenancy issues, so you can build those from the repo and contribute that way. Primarily, the distro is the environment, with upstream packages often getting contributions from distro developers.

There isn't much point building an entire distribution just to develop for the Gnome core really. Just improve say, Gentoo's Gnome build and try to get applicable patches upstream.

Focus on where you can input value, and not spend 1/4 of your life waiting for builds and working out why package X won't compile against library Y when you only want to work on Z anyway!

I work with Fedora Rawhide when doing any dev-stuff, it isn't as bleeding edge as some, but offers good stability and changeability IMVHO

Or there is always:

Linux From Scratch, if you like pain.

like image 160
Aiden Bell Avatar answered Nov 14 '22 22:11

Aiden Bell