Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Feb 2020 23:43:38 -0500
From:      Dan McGrath <danmcgrath.ca@gmail.com>
To:        "@lbutlr" <kremels@kreme.com>
Cc:        FreeBSD <freebsd-ports@freebsd.org>
Subject:   Re: Starting with poudriere
Message-ID:  <CAK82gMF1O1EgBSW_hH_F-oPFOqx7iL-09ydi-myFUfhgyRYCFw@mail.gmail.com>
In-Reply-To: <4D118F32-E38F-4860-BBE8-4D9F259BF653@kreme.com>
References:  <3743CEAE-BCC9-479E-8367-F3DA0E30496E@kreme.com> <4D118F32-E38F-4860-BBE8-4D9F259BF653@kreme.com>

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

On Sat, Feb 15, 2020 at 11:03 PM @lbutlr <kremels@kreme.com> wrote:

> Let=E2=80=99s say I want to build and install a single port via poudrier.=
 For the
> same of argument some port that has configuration options I want to chang=
e.
>

Probably not ideal since you generally want to disable the FreeBSD
repository, and use only your poudriere repo, instead. You would need to
build everything you intend to install in the jail, however. While I
believe that you can enable multiple repositories (FreeBSD's, and your own
poudriere one), I am not sure about repo priorities, or how you would deal
with conflicts with build options that pull in common ports. It is
something I have been meaning to look into, sorry! Perhaps someone else
here can give some advice?


> I have the ports tree setup, have my jail setup, and I want to build it.
>

You would run "poudriere bulk", then sit back sipping coffee while it
churns through all of the packages.


> And then I want to deploy it to the target machine once it=E2=80=99s buil=
t.
>

I personally make a web server on the jail to serve up the path to the
packages that poudriere built, generally available under:

/usr/local/poudriere/data/packages



> Or I want to deploy to to the local machine.
>

I suppose you could "bind mount" (see: man nullfs) the path into the jail,
or just specify the file path as a URI to the poudriere.conf pkg config.


> Let=E2=80=99s say, for fun, it=E2=80=99s something like ImageMafick that =
has a lot that
> goes with it.
>

Poudriere takes care of the dependencies. For example, if the _only_ thing
that you want in your jail is ImageMagick, as if you literally boot
strapped a blank jail, then ran "pkg install ImageMagick", then you would
only need to built that, and pkg, in poudriere. Your build set file would
probably look like this:

ports-mgmt/pkg
graphics/ImageMagick7-nox11


I would have to actually double check if pkg is even needed since I believe
it may be implicitly depended on, in which case it would already be built,
but I appear to have it specified in all of my sets anyway.


> Am I writing a config file for this every port I want to build?


You would create a file for all the leaf ports for the repository that you
want to create for your machines to use. I generally will do something like
install portmaster in a jail, then install all of the stuff I want, then
use something like "portmaster -L" (requires /usr/ports to be available) to
identify the root and leaf ports. Then I will place all of those files into
the file I pass (via -f) to poudriere to build. Poudriere will take care of
all the dependencies, and will leave you with a repo that has exactly
everything you need to install.

Anyway, hope this maybe helps a bit? Since flavours have came out, I have
been slowly trying to avoid using custom repos, and try migrate things to
stock upstream packages. While it is fun to tinker with, the amount of time
I have wasted over the years doing buildworld and building ports by hand
has made me start to look at more practical approaches, such as pkg's and
freebsd-update. Unless you have trust issues with upstream binaries, or
require unusual build options, I think it may not be worth using poudriere,
and perhaps better to convince upstream to add flavours? Just a thought!


Cheers,

Dan McGrath



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAK82gMF1O1EgBSW_hH_F-oPFOqx7iL-09ydi-myFUfhgyRYCFw>