[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[multiarch] Proposal for *-dev packages


You all have seen the other thread about multiarch? This one is a
different part of the puzzle.

The proposal is to make all *-dev packages "Architecture: all". This
should be a strong should or must directive and a must for
built-essential for sarge+1.

Why should *-dev be "Architecture: all"?

When installing packages of multiple archs some packages will contain
the same files, which is a problem of cause. Also when compiling
packages the -dev packages for each lib has to be installed. Now we
have *-dev packages that are "Architecture: all" and others that are
"Architecture: <arch>".

The later are a problem for multiarch systems. To compile 32 bit
programms the 32bit flavour must be installed and to compile 64bit
programms the 64bit flavour. Overlaps in the files make it complicated
to install both. Both having the same name would be a problem in dpkg,
both having different names would mean changing basically every source
package in Debian.

It would be best if all *-dev packages could be "Architecture:
all". That way there would be only one package that works for

Lets look at why some *-dev packages are not "Architecture: all". If I
forgot some reasons (as I certainly have) feel free to add it,
esspecially if you add a solution to avoid it too.

Why are some *-dev packages "Architecture: <arch>"?

1. static libraries

Most sources and people don't need the static libraries. The static
libraries could be split into -static packages and sources that do
need them can depend specifically on them.

2. different header files per architecture

The differences in the headers can be merged by using preprocessor

Only package that has this problem at a larger scale is glibc +
linux-kernel-header. Those two would best be an exception to the
rule. They are messy enough as it is.

3. support binaries in the -dev package

I'm thinking about gtk-config, sdl-config, kde-config, ...
Are all of those scripts or are there some compiled programs in hte

I suggest splitting any binary programms (if there are any) out into a
-helper package and have the -dev depend on them.

4. debug libraries

Debug libraries can go into -dbg like so many do.

Having "Architecture: all" *-dev packages would simplify the work for
multiarch support greatly so I hope noone comes up with a stronger
reason against it as the ones above.

Let the flames burn brightly,

Reply to: