Jumbled dependencies

Mark Millard marklmi at yahoo.com
Fri Jun 19 04:48:31 UTC 2020


Thomas Mueller mueller6722 at twc.com wrote on
Fri Jun 19 01:31:47 UTC 2020 :

> > > I do package builds on one machine on my (small) network, using
> > > portmaster [...]
> [...]
> > > And how do I bandage up the foot I shot myself in?
> 
> > I understand it might be unpopular, but the preferred way to get
> > to stable updates in the ports tree is using poudriere to
> > build the ports and the pkg repo.
> 
> > pi at opsec.eu            +49 171 3101372                    Now what ?
> 
> What is the current status of synth?  I see little or no updating activity, and no update to gcc6.aux while gcc is updated to 10.1.

https://github.com/jrmarino/synth/ seems to have
been touched the last 2 mostly recent times on:

A) 2020-Feb-24 (v2.09)
B) 2019-Jan-30 (v2.08)

So it appears that it is in a fairly stable state for whatever
contexts use it. I've not checked what eversion of ada is in
use wherever synth is in use. (I've not researched where either.
It did not run on the full range of architectures I wanted
back when I experimented with it.)

> Does poudriere install build dependencies by default or when requested? 

The question is really where and when build-dependencies are
built, installed, and removed for poudriere.

Poudriere normally has uses own work area instead of touching the
system/environment that it is invoked from. In this area each port
is built into a package via the steps (quick summary for the point
at hand):

A) install build-dependencies to a local/internal context
   (such dependencies were built earlier if needed).
B) build the package in that context and file away the package
   for later use (including in building more ports).
C) clean out that local/internal context.

So, at build time, during a poudriere bulk operation for a port, the
build dependencies needed are available for the port build to use.

Yes, this does mean that across building many ports in a poudriere
bulk build, various build-dependencies are repeatedly installed
(once per port that depends on the it), instead of being installed
just once and re-used for each port that happens to have the
dependency.

It also means that, during a port build, the only ports installed
locally/internally are the ports that are explicit build dependencies,
no extras (part of being a clean build environment for the port).

After poudriere is done, pkg update; package install can later be
used to install into the system/environment any or all of the ports
that were built into packages, including those there were built just
because they were dependecies of something else that was directly
requested. (Worded for local builds locally installed to the
same machine.)

> I looked through the FreeBSD Handbook and Porters' Handbook online, and couldn't find the answer.
> 
> With synth, I had a difficult time getting everything that was built to install, some packages like bison are needed in building other software.
> 
> How is poudriere in that regard?
> 
> Gentoo Linux with portage has "--with-bdeps=y" which installs build dependencies when desired.
> 
> I found that poudriere uses dialog4ports; I much prefer to save options in a file such as Gentoo Linux does with make.conf and (NetBSD) pkgsrc does with mk.conf .

The files with the information are text and are stored in the file system
and can be created and edited manually.

For example:

# find /usr/local/etc/poudriere.d/ -name options -type f -print
/usr/local/etc/poudriere.d/options/lang_gcc8/options
/usr/local/etc/poudriere.d/options/ports-mgmt_poudriere-devel/options
/usr/local/etc/poudriere.d/options/lang_gcc9/options
/usr/local/etc/poudriere.d/options/devel_llvm80/options
/usr/local/etc/poudriere.d/options/devel_llvm90/options
/usr/local/etc/poudriere.d/options/devel_llvm10/options
/usr/local/etc/poudriere.d/options/lang_gcc10/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/lang_gcc8/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/ports-mgmt_poudriere-devel/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/lang_gcc9/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/devel_llvm80/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/devel_llvm90/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/devel_llvm10/options
/usr/local/etc/poudriere.d/FBSDFSSDjail-options/lang_gcc10/options

The area is separate from FreeBSD's /var/db/ports/*_*/options files.

> I once got a royal mess of circular/jumbled dependencies with dialog4ports; cleaning was a major nuisance, nothing simple like editing /etc/mk.conf or /etc/make.conf .
> 
> I never used pkgsrc with any OS other than NetBSD but have thought about it for FreeBSD and possibly Linux.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ports mailing list