automake
[Top][All Lists]
Advanced

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

Re: Pre-built binary package


From: Sam Varshavchik
Subject: Re: Pre-built binary package
Date: Thu, 20 Sep 2012 18:59:19 -0400

Too, Justin A. writes:

Hi Baurzhan,

On 9/20/12 10:52 AM, "Baurzhan Ismagulov" <address@hidden> wrote:

>On Thu, Sep 20, 2012 at 10:24:28AM -0700, Too, Justin A. wrote:
>> I would like to build and distribute a pre-built binary package for my
>> project
>
>For which OS / distribution?

For example: Linux (rhel5/6) and Ubuntu.

Both of these distributions have a native packaging format.

Although it might be possible to cobble together some blob that could be loaded into any generic Linux target of a given hardware platform, practically, this is a non-starter. The different versions of core system libraries, and the different installation locations for various system components, on Linux, make a distribution-agnostic installation package completely unpractical.

Linux is not a platform that easily accomodates installable binary blobs. Most software, on Linux, is made available in source form. On Red Hat- derived distributions, RHEL and Fedora, and Debian-derived distributions, like Ubuntu, you have a native packaging format – RPM on RHEL/Fedora, and APT on Debian-derived distros, that the source code gets compiled into, to produce an installable package for that target only.

A given software package typically gets compiled and built on each targeted Linux distribution, and packaged in its native format. On RHEL and Fedora, for example, an RPM file gets produced, which is then installable directly on an RHEL or a Fedora target. Ditto for Ubuntu. Each installable file format gets built differently; although, in general, once you have a working RPM build script for Fedora, adapting it so that it can also be built on other versions of Fedora, or on RHEL/CentOs, is a trivial matter. Probably the same thing applies to APT. But even a single RPM/APT build script would need to be built on every supported version of the distro. A built RPM package on CentOS 6 won't install on CentOS 5, due to different binary library dependencies, for example.

A distribution-specific packaging format is outside the scope of automake, although most software packages certainly use automake-derived Makefiles. Mine does, and I certainly know that it gets built just fine on Fedora, Debian, and most likely Ubuntu. But there's nothing in my automake that targets any specific Linux distro; rather, the source gets built on each platform, using the platform's native packaging tool, that produces an installable package for that platform.

If you want to build your software for each supported platform, you certainly can do that, and have a generic automake-based Makefile. But, the platform-specific packaging has very little involvement from automake.

I think you might've misinterpreted what automake does. automake helps with preparing a portable, platform-neutral makefile. But the end result of that makefile is not platform-neutral. It's something that runs on that platform only.

It should work wherever the user chooses to unpack the downloaded binary
distribution.  That is, it doesn't have to be dropped into "/usr/local",
for example.

Theoretically it's possible, but extremely unlikely.

Adobe, a large corporation, distributes the Linux version of their Flash player for a selected number of Linux distributions only, using each distribution's specific packaging format, that installs in a distribution- specific location. I see no reason why they wouldn't want their stuff installable on every Linux-based distro in existence; but they provide a separate RPM package for Fedora, and a separate apt package for Debian-based distros.

So if they can't do it, I find it very unlikely that you, or anyone else, will be able to figure out how to do it, either.

PS. Of course, your binary blob could only be executed by a processor from a single family. If you produce a binary blob compiled for x86-64, it will be of very little use on 32 bit Linux targets. And if you produce a binary blob compiled for x86-32, it will be of very little use on x86-64. It's been my impression that most x86-64 distros no longer load 32-bit compatibility libraries by default.

Attachment: pgpQSVz1xcjcL.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]