Re: SPEC file for pkgconfig
- From: Chipzz <chipzz ULYSSIS Org>
- To: Gregory Leblanc <gleblanc linuxweasel com>
- Cc: GNOME Packaging List <gnome-packaging-list gnome org>
- Subject: Re: SPEC file for pkgconfig
- Date: Sat, 19 Jan 2002 20:12:26 +0100 (CET)
On 18 Jan 2002, Gregory Leblanc wrote:
> From: Gregory Leblanc <gleblanc linuxweasel com>
> Subject: Re: SPEC file for pkgconfig
>
> On Fri, 2002-01-18 at 03:38, Sebastian Voecking wrote:
> > I'm back again!
> >
> > Here is my first spec file. pkgconfig isn't really a GNOME2 package but
> > it's often the first package to install when you try to build GNOME2.
> > And it had no spec file. So I used it for my first example. It works
> > pretty well on my system but I believe there are many points to improve.
> > It also should be a kind of template for more complicated specs. So
> > style if I forgot something (%post, %postun... are not forgotton but not
> > needes I believe).
>
> Woo, cool. I'll make some comments below!
> Greg
>
> > ----
> >
>
> > Name: pkgconfig
> > Summary: pkg-config
> > Version: 0.8.0
> > Release: 1
> > License: GPL
> > Group: Development/Tools
> > Source: %{name}-%{version}.tar.gz
> > BuildRoot: /var/tmp/%{name}-%{version}-root
> > Packager: Sebastian Voecking <voeck web de>
>
> Very nice and tidy, though I try to avoid tabs, because some programs
> (like my mailreader) screw them up. :-/
> As somebody mentioned, using %{_tmppath}/%{name}-%{version}-root is a
> better BuildRoot, as it's easier for people building packages to
> override.
>
> I don't usually set the Packager field in my spec files, I just make
> sure to put my name in the %ChangeLog. Instead, I define Packager,
> Vendor, and Distribution in my ~/.rpmmacros
>
>
> %packager GNOME Packaging Project <http://bugzilla.gnome.org/>
> %vendor GNOME Packaging Project
> %distribution Plain-GNOME
>
>
> >
> > %description
> > pkg-config is a script to make putting together all the build
> > flags when compiling/linking a lot easier.
>
> I might have stolen the description from the freedesktop.org/software/
> webpage.
>
> >
> > %prep
> > %setup
>
> If you add -q to the %setup macro, you don't have to watch the whole
> output of tar, which makes logs from builds much smaller, and easier to
> read.
>
> >
> > %build
> > ./configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} --mandir=%{_mandir} --infodir=%{_infodir}
>
> I much prefer this method to using %configure, as %configure almost
> always requires you to put "%define __libtoolize /bin/true" somewhere in
> your spec file to avoid having things break. If you're passing
> arguments to configure that don't have to do with file paths, such as
> --disable-gtk-doc for example, I place them first on the line. It's
> also nice to break things up onto multiple lines. Here's a snip from
> the gail.spec file I just wrote:
>
> ./configure --disable-gtk-doc --prefix=%{_prefix} \
> --bindir=%{_bindir} --mandir=%{_mandir} \
> --localstatedir=%{_localstatedir} --libdir=%{_libdir} \
> --datadir=%{_datadir} --includedir=%{_includedir} \
> --sysconfdir=%{_sysconfdir} --sbindir=%{_sbindir}
>
> I'm still undecided if it's "cleaner" looking to do the above, or to put
> just one argument on each line, like this:
>
> ./configure --disable-gtk-doc \
> --prefix=%{_prefix} \
> --bindir=%{_bindir} \
> --mandir=%{_mandir} \
> --localstatedir=%{_localstatedir} \
> --libdir=%{_libdir} \
> --datadir=%{_datadir} \
> --includedir=%{_includedir} \
> --sysconfdir=%{_sysconfdir} \
> --sbindir=%{_sbindir}
>
> Anybody have strong opinions either way?
Personally, I think it's overkill mentioning _all_ those dirs, especially
given the fact that if you specify prefix, most of them are allready
defined.
Also, it makes it a lot less readable, and "obfuscates" the parts that
really matter.
> > make
> >
> > %install
> > rm -rf $RPM_BUILD_ROOT
> > make prefix=$RPM_BUILD_ROOT%{_prefix} bindir=$RPM_BUILD_ROOT%{_bindir} sbindir=$RPM_BUILD_ROOT%{_sbindir} sysconfdir=$RPM_BUILD_ROOT%{_sysconfdir} datadir=$RPM_BUILD_ROOT%{_datadir} includedir=$RPM_BUILD_ROOT%{_includedir} libdir=$RPM_BUILD_ROOT%{_libdir} mandir=$RPM_BUILD_ROOT%{_mandir} infodir=$RPM_BUILD_ROOT%{_infodir} install
Same thoughts as above. You have these vars from the configure stage. Also,
you forgot two: localedir and gnulocaledir.
I just wonder why make it so complex? For alot of packages this will do just
fine:
make install DESTDIR=$RPM_BUILD_ROOT
And if that doesn't work (for example, doesn't install .po files):
make install DESTDIR=$RPM_BUILD_ROOT gnulocaledir=$RPM_BUILD_ROOT/%{_gnulocaledir}
(this is from memory, not sure. you may need to do s/gnu//)
> Cool, although according to some gurus on IRC, you should place things
> like prefix and/or DESTDIR -after- the target (install) on the command
> line. Things before the target are interpreted as shell variables,
> while things after the target are makefile variables. I've only found
> one place where doing things the "wrong" way has broken stuff, but it
> was tough to debug that one. Also, you might wrap that onto multiple
> lines, to make it easier to read. There's rarely enough room wrapping
> at 80 characters for more than 1 path per line.
>
> >
> > %clean
> > rm -rf $RPM_BUILD_ROOT
test $RPM_BUILD_ROOT != / && rm -rf $RPM_BUILD_ROOT
!!!!!!
> > %files
> > %defattr(-, root, root)
> >
> > %{_bindir}/*
> > %{_datadir}/aclocal/*
> > %{_mandir}/man1/*
>
> Hmm, no %ChangeLog... Put one in, and fill it out with pretty
> nitty-gritty details of everything you change. That way other packagers
> can figure out if you've found something that they missed, or see what
> they need to update. Although, for new spec files, my changelog looks
> like this:
>
> %changelog
> * Tue Jul 16 2002 Gregory Leblanc <gleblanc linuxweasel com>
> - created new spec file
>
> All in all, nice job!
> Greg
Greg, you forgot your usual rant about findlang ;;;;)
kind regards,
Chipzz AKA
Jan Van Buggenhout
PS: I'ld love to join in with the fun, but I have exams atm (till feb 1st)
PPS: I have moved to debian sid for one box.
PPPS: debian sid has some of the packages from gnome 2 (not the alpha
release thou, cfr http://mail.gnome.org/archives/desktop-devel-list/2002-January/msg00316.html )
PPPPS: Anyone know of a good packaging tutorial for debian? ;)
--
--------------------------------------------------------------------------
UNIX isn't dead - It just smells funny
Chipzz ULYSSIS Org
--------------------------------------------------------------------------
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]