Michael Felt wrote:

> Or, not having looked at it yet - should I be focusing on a replacement
> for rpmbuild (assuming it is a script)?

rpmbuild is a full-on application, which has some pretty involved
features for building a package. What this means is that armed with just
a spec file, you can build an RPM (or an SRPM, which is the source code,
spec file and patches rolled together into a bundle for easy rebuild).

A lot of the packaging systems for other platforms are a lot more basic.
They assume you've done the legwork doing the actual build, the
packaging system kicks in at the last step and turns your
tree-of-binaries into a package, not much more sophisticated than humble
tar.

I think as an example, you should rather be looking at the scripts that
do the Solaris packaging.

In the Solaris case, the build/pkg/buildpkg.sh script does the actual
build (you'll recognise the ./configure;make;make install in there), and
once the binaries are built and staged in a temp directory, the various
package making commands unique to Solaris are kicked off (pkgproto,
pkgtrans) that combine the binaries and the pkginfo template into the
package itself.

The key most interesting bits from your perspective are probably:

- You want to stage the binaries at some temp location, like
/var/tmp/foo.12345/, which in turn becomes the "root" of the install.

You achieve this by adding the DESTDIR variable to make install. This
causes the whole install procedure to pretend you're installing in /usr
(for example), but instead it places the binaries into
/var/tmp/foo.12345/usr/. When you package the files, httpd's paths are
all set up correctly for the final system, you won't find
/var/tmp/foo.12345 lurking in any files.

- You'll probably need a template file of some kind. In the rpm case the
template file is the spec file. In the Solaris case, the template file
is called "pkginfo", and this file is populated by filling in the
template called "pkginfo.in".

Unlike the RPM spec file, which must be correctly built and populated
before httpd is tarred up and released as a tarball for rpmbuild to work
properly (and which is why the spec template is filled in by the
buildconf script), the pkginfo.in file is processed at build time by
autoconf as an ordinary part of the httpd ./configure;make;make install
process. Once ./configure;make;make install is done, the pkginfo file
has been processed and is ready to be used by the Solaris packaging
commands.

I would imagine your packaging would probably follow a similar pattern.

Regards,
Graham
--

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to