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

Re: How to handle software which needs huge modification when packaging for Debian



2012/1/16 Björn Esser <bjoern.esser@googlemail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Hi there!
>
> How shall software be handled, when it needs
>
>    - huge modifactions

Modify original sources in Debian.

>    - scripts to be replaced by 'debianized' ones
>    - to be extended by custom scripts or progs


> when packaging it for debian?
>
> Shall the custom / replaced stuff be placed inside
> debian/source/include-binaries?

Yes, you should replace inside sources, and call it ~dfsg.

----------------------------------------
Let's analyze VirtualBox sources a bit -- a *HUGE* Open-Source
project, that was Debianized. (only a bit smaller than
Linux-kernel/GCC/LibreOffice)

Debian 6:
Upstream 3.2.10_OSE = 58 MB
Debianized 3.2.10_OSE = 28 MB (DFSG version)

This is a *huge* reduction cut by more than one-half of the original.

So... what was removed ?
A. Windows compatibility  -- both binaries and source code were removed.
* sources seems to have some Microsoft headers, which is necessary to
build it on Windows at all.
B. Build tools:
Original VBox is cross-platform, so they include a lot of
useless-for-Debian and duplicate stuff, such as common libraries:
1. binaries for WIndows to build there: as86, bcc, glib, libxidl, zlib, iconv
*Debian doesn't need it.
2. Linux libraries (in source form): libpng, libxml, libxslt, zlib <--
they were included in original source code

Original:
root@xrig:/tmp/virtualbox-ose/VirtualBox-3.2.10_OSE# ls src/libs/
boost-1.37.0  liblzf-3.4    libxml2-2.6.30  Makefile.kmk  zlib-1.2.1
kStuff        libpng-1.2.8  libxslt-1.1.22  xpcom18a4

Debianized:
root@xrig:/tmp/virtualbox-ose/virtualbox-ose-3.2.10-dfsg# ls src/libs/
boost-1.37.0  kStuff  liblzf-3.4  Makefile.kmk  xpcom18a4

*Debian's kmk was patched to use Debian's libs instead.
3. extra source code: (VBoxAdditions)
for Windows: was removed.
for irrelevant Linux versions was also removed.
For example original have files which are only relevant for XFree86 systems.

Original:
root@xrig:/tmp/virtualbox-ose/VirtualBox-3.2.10_OSE# ls
src/VBox/Additions/x11/x11include/
1.3                 fixesproto-4.0         libXcomposite-0.4.0
xf86driproto-2.1.0
1.4                 fontsproto-2.1.0       libXdamage-1.1
xorg-server-1.3.0.0
1.5                 glproto-1.4.10         libXfixes-4.0.3
xorg-server-1.5.3
1.6                 inputproto-1.4.4       mesa-7.2
xorg-server-1.6.0
4.3                 inputproto-1.9.99.902  Mesa-7.5
xorg-server-1.6.0-local
7.0                 libdrm-2.0.1           pixman-0.16.0
xorg-server-1.6.99-20090831
7.1                 libdrm-2.4.13          randrproto-1.3.0
xorg-server-1.8.0
compositeproto-0.4  libpciaccess-0.10.8    renderproto-0.11
xorg-server-1.9.0
damageproto-1.1.0   libx11-1.1.5-other     xextproto-7.1.1      xproto-7.0.18

Debianized:
root@xrig:/tmp/virtualbox-ose/virtualbox-ose-3.2.10-dfsg# ls
src/VBox/Additions/x11/x11include/
1.4  mesa-7.2

In short, you see:
1. binaries must be dropped
2. support for old libraries can be dropped (at your choice, XFree86 case)
3. support for duplicate libraries, that are included in Debian

NOTE:
* You cannot force upstream to drop support for Windows, or binary
tools that help them build their tree on Windows. (although you can
ask them to separate some Windows build binaries into a separate
package)
* You cannot force upstream to drop support for old Linux systems,
including those that use XFree86.
* No need to fork in most cases. It can be done without forking, but
it's difficult task.

I suggest you to download virtualbox-ose-3.2.10-dfsg source from
Debian 6, compare it to upstream, and learn from this extreme case of
Debianization.

Upstream sources:
http://download.virtualbox.org/virtualbox/3.2.10/VirtualBox-3.2.10-OSE.tar.bz2

Makefiles were patched heavily.

Basically if you remove stuff from upstream, then you do it in
original file, like:
"virtualbox-ose_3.2.10-dfsg.orig.tar.gz"
But if you add or modify stuff, you do it via patch, like:
"virtualbox-ose_3.2.10-dfsg-1.diff.gz"

I hope this example was helpful.

Best wishes,
-- 
-Alexey Eromenko "Technologov"


Reply to: