Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Jan 2015 09:39:12 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Stefan Ehmann <shoesoft@gmx.net>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: poudriere: reduce the number of rebuilt packages?
Message-ID:  <20150113083911.GG17273@ivaldir.etoilebsd.net>
In-Reply-To: <54A67B1A.5060007@gmx.net>
References:  <54A67B1A.5060007@gmx.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--ulDeV4rPMk/y39in
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 02, 2015 at 12:03:54PM +0100, Stefan Ehmann wrote:
> I've recently switched from portmaster to poudriere/'pkg upgrade' to=20
> manage my port updates. Basically it works fine, but incremental builds=
=20
> don't quite work as I expected.
>=20
> poudriere rebuilds all packages if any dependency has changed. If there=
=20
> are only some ports with new versions, possibly hundreds of packages are=
=20
> rebuilt. So far it looks like I'll end up rebuilding packages like=20
> libreoffice/KDE/chromium several times a week. The rebuilt packages=20
> won't even be installed by 'pkg upgrade' because their version number=20
> has not changed.
>=20
> That's a huge waste of resources. With portmaster only ports with=20
> increased version numbers are rebuilt.
>=20
> Can I use poudriere to rebuild only packages where the version number=20
> changed?
>=20
The problem here in consistency while in theory we can cherry-pick what we
really want to rebuild based on libraries provided/required in binary packa=
ges
poudriere has to deal with the ports tree and compatibility.

The ports tree was a heavy user of pkg_add which became pkg add, this tool =
was
relying on the version of dependencies as registered in the package creatio=
n:
- A-v1 was depending on B-v2
if B-v2 is bumped to B-v3 then A-v1 dependency chain is broken in regard
pkg_add.

Just for that we have no choices but rebuilding everything that depends on B

This can now be "easily" fixed because pkg_install is gone and we do not ha=
ve to
rely on compatiblity with it anymore, the problem is people willing to work=
 on
that (flexible dependencies and smart dependencies) have been mostly killed=
 by
the nightmare this compatibility has introduced into pkg.

Lots of scripts still rely on the pkg_add behaviour and until all of them a=
re
killed I'm afraid we won't be able to prevent those massive rebuilds.

That is if you are doing the things correctly.

Now there is an alternative.

Introduce a new repository format for file:// kind of url (like Zypper) whi=
ch
will not need all the metadata and be blazing fast to produce. Use pkg inst=
all
instead of pkg add in ports and then we can reduce the massive rebuilds to =
only
rebuild things that really requires a library and only a library being
removed/upgraded.

Any volunteers?

regards,
Bapt

--ulDeV4rPMk/y39in
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEABECAAYFAlS02a0ACgkQ8kTtMUmk6EyU5QCfR9JlnMtjZe/kOOVhUh/2SPWL
/tsAn1QmvtBmwHwEHfguO11/KG7g+hTF
=Hjbk
-----END PGP SIGNATURE-----

--ulDeV4rPMk/y39in--



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