On Fri, Oct 9, 2009 at 1:21 AM, Graham Leggett <minf...@sharp.fm> wrote:
> 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 > -- > > ran the build/binbuild.sh script again - after building and installing the expat2.01 package. It all seemed to build well - getthe the right .guess file has worked wonders. However, AIX is still not really a favorite of the configure or libtool world. I suppose every system has it way of inserting a default search order for libraries. For a distribution I would want a more neutral one than the configure/libtool process is building - also because it is not working. I know that I could use CFLAGS='-blibpath:/some/path:/another/path' to create a default path that would work - but I am hoping someone might have some ideas about what could be done to make integrated to the process, rather than force fed. Current Status: ============== mich...@x054:[/data/prj/httpd-2.2.14]bindist/bin/httpd -? exec(): 0509-036 Cannot load program bindist/bin/httpd because of the following errors: rtld: 0712-001 Symbol XML_StopParser was referenced from module /data/prj/httpd-2.2.14/bindist/lib/libaprutil-1.so(), but a runtime definition of the symbol was not found. mich...@x054:[/data/prj/httpd-2.2.14]dump -H bindist/bin/httpd -? bindist/bin/httpd: ***Loader Section*** Loader Header Information VERSION# #SYMtableENT #RELOCent LENidSTR 0x00000001 0x000002fa 0x00000957 0x000000ae #IMPfilID OFFidSTR LENstrTBL OFFstrTBL 0x00000006 0x0000b7a4 0x000039eb 0x0000b852 ***Import File Strings*** INDEX PATH BASE MEMBER 0 /data/prj/httpd-2.2.14/bindist/lib:/usr/local/apache2/lib:/usr/vac/lib:/usr/lib:/lib 1 libaprutil-1.so 2 libapr-1.so 3 libpthread.a shr_xpg5.o 4 libc.a shr.o 5 librtl.a shr.o dump: -?: dump: 0654-106 Cannot open the specified file. mich...@x054:[/data/prj/httpd-2.2.14]