Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Sep 2021 10:56:31 +0200
From:      Emmanuel Vadot <manu@bidouilliste.com>
To:        David Chisnall <theraven@FreeBSD.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: FreeBSD base pkg (packaging) and critical ports build alongside
Message-ID:  <20210929105631.f9cba69265edcab0a05b25d6@bidouilliste.com>
In-Reply-To: <74afb0a9-be7f-c797-bd15-a96022188d9a@FreeBSD.org>
References:  <20210929102805.1ac3a59d@freyja> <74afb0a9-be7f-c797-bd15-a96022188d9a@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 29 Sep 2021 09:42:46 +0100
David Chisnall <theraven@FreeBSD.org> wrote:

> Hi,
> 
> I think your best option would be to do the opposite of what you 
> suggest.  Poudriere can build pkgbase sets from a source tree and 
> populate a jail from them.  

 No it doesn't populate the jail from the pkgbase sets, the jail will
still be populated using make installworld and friends.
 I still need to add the possibility to create a jail (and update it)
just from a pkgbase but haven't got time yet for this.

> The flow that I'd suggest is:
> 
>   - Poudriere jail to build a jail from an existing source tree.
>   - If there are kernel changes, install the packages on the package 
> builder and reboot.
>   - Poudriere bulk in the new jail to build the new package set.
> 
> Note: You can *normally* skip the second step (drm ports, for example, 
> will be built against the new kernel sources in the jail, though they 
> might not be loadable on the host) but there's no guarantee that you can 
> run a newer userland on an older kernel so things may break.
> 
> If you enable reproduceable builds in the src.conf that you use for 
> building the jail then you should be able to just diff the kernel binary 
> to see if anything has changed.
> 
> If you have bhyve or are running on a cloud platform then you can 
> replace the second step with a poudriere image invocation to build a VM 
> image containing poudriere and your newly-built base system and deploy 
> this to build the packages.  I'm planning on working on some tooling to 
> do this in Azure with GitHub Actions.
> 
> Note that poudriere uses packages installed on the host system to build 
> a jail.  If you have, for example, installed llvm12 then you can put a 
> line in your src-env.conf for the jail to tell it to use that as an 
> external toolchain and skip the toolchain-bootstrap phase of the build. 
>   This means that the base-build is fairly fast even on quite modest 
> hardware (it still builds clang, but at least it does it only once).
> 
> David
> 
> 
> On 29/09/2021 09:28, FreeBSD User wrote:
> > Hello,
> > 
> > I use FreeBSD-base packages built on self hosted systems to update 13-STABLE
> > and CURRENT hosts.  I run into the problem, that the packages of the FreeBSD
> > base, built via the FreeBSD framework and from most recent 13-STABLE sources,
> > are often oit of synchronisation with our poudriere packaging builders, that is
> > especially true for critical ports with kernel modules, like i915 drm,
> > virtualbox and so on. The problem is, obviously, barehanded: 13-STABLE sources
> > and probably the API changes more rapidly than those of the appropriate builder
> > hosts for poudriere and since it takes a bunch of days to build a whole
> > poudriere packages repository, there is often a gap between the revision of the
> > kernel and the port containing kernel modules.
> > 
> > So, the question is: how can I add ports to the building process of the FreeBSD
> > sources tree in the way they get build every time I build the FreeBSD-base
> > packages alongside the OS?
> > 
> > Thanks in advance,
> > 
> > oh
> > 
> 


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@FreeBSD.org>



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