Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Feb 2010 12:39:26 -0500
From:      Greg Larkin <glarkin@FreeBSD.org>
To:        xorquewasp@googlemail.com
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: package building failure irritation
Message-ID:  <4B88074E.7050007@FreeBSD.org>
In-Reply-To: <20100226163227.GA15162@logik.internal.network>
References:  <20100226163227.GA15162@logik.internal.network>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

xorquewasp@googlemail.com wrote:
> 'Lo.
> 
> I've come up against an infuriating problem with ports. I don't even
> know what causes it, let alone how to solve it.
> 
> Essentially, to stop already-installed software from polluting port
> builds, I build ports in a jail. I put a list of ports in a file and
> use a trivial shell script to build them one after the other with:
> 
> cd $port
> make clean
> make deinstall
> make package-recursive
> 
> The jail is set up with:
> 
> /etc/make.conf:
> WRKDIRPREFIX= /work
> DISTDIR=      /distfiles
> PACKAGES=     /pkg
> PORTSDIR=     /ports
> 
> With /ports, /distfiles and /pkg being mounted from outside the
> jail using nullfs (just because those directories exist on a ZFS
> array outside of the jail for performance reasons).
> 
> Before building a set of packages, the jail is wiped clean with
> 'pkg_delete -a'.
> 
> The problem is that it seems most ports just outright fail to
> produce packages. I log each build and often the last lines of
> the log files read something like:
> 
> xchm:
[...]
> 
> Note that in most cases, the compilation *will* produce a package but will
> fail to produce packages for dependencies, resulting in pkg_add spewing
> errors upon install:
> 
> pkg_add: could not find package liblqr-1-0.4.1 !
> pkg_add: could not find package enchant-1.4.2 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: autoload of dependency '/pkg/All/glibmm-2.22.1,1.tbz' failed!
> pkg_add: could not find package libxml++-2.26.1 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: autoload of dependency '/pkg/All/glibmm-2.22.1,1.tbz' failed!
> pkg_add: could not find package libxml++-2.26.1 !
> pkg_add: autoload of dependency '/pkg/All/cairomm-1.8.4.tbz' failed!
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: autoload of dependency '/pkg/All/glibmm-2.22.1,1.tbz' failed!
> pkg_add: could not find package libxml++-2.26.1 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: could not find package libsigc++-2.2.4.2 !
> pkg_add: autoload of dependency '/pkg/All/glibmm-2.22.1,1.tbz' failed!
> 
> And so on and so on.
> 
> What's the problem here? It surely shouldn't be this hard to use 'make package'.
> 
> The system is a vanilla install of FreeBSD 8.0 AMD64 with an up-to-date
> ports tree as of yesterday.
> 
> xw

Hi xw,

"make package-recursive" calls "make package-noinstall" for all of the
dependent ports.  I'm assuming that means that the dependent packages
all have to be installed first, so I would change your script like so:

cd $port
make clean
make deinstall
make depends		# just to be safe
make install
make package-recursive

On the other hand, this is similar to what Tinderbox
(http://tinderbox.marcuscom.com/README.html), so perhaps that would be a
solution for you, too?

Hope that helps,
Greg
- --
Greg Larkin

http://www.FreeBSD.org/           - The Power To Serve
http://www.sourcehosting.net/     - Ready. Set. Code.
http://twitter.com/sourcehosting/ - Follow me, follow you
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFLiAdO0sRouByUApARAhK0AKCjyH0T/n6lxt7w3fqaQM0dlh1CZQCgitmN
9R3WnYFpesYLW0mlZkVVzy0=
=BCbS
-----END PGP SIGNATURE-----




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B88074E.7050007>