Poudriere Options

I have arrived at the point where I have poudiere bulk working as expected so now to slim my packages I made a make.conf

I was not sure if creating a make.conf was all that was needed so I started messing with poudriere options. It shows each settings change of my make.conf correctly.
But it is a lengthy process.
Do I need to run this step? Is creating make.conf settings file enough? Do I need the -c step? How can I accept all the default settings?

poudriere options -j mbm-mfs -c -p default -f gps-pkglist

/usr/local/etc/poudriere.d/make.conf
Code:
OPTIONS_UNSET+= X11 DOCS NLS EXAMPLES INFO TEST TESTS DTRACE DEBUG MANPAGES MAN3 ZFS DEMOS WAYLAND DBUS RDOC HELP IPV6 LTO CUPS
 
Two scripts i use :
cat poudriere_nice
Code:
nice -n 31 idprio 31 ./poudriere_run
pkg update -f
pkg upgrade

cat poudriere_run
Code:
export DISABLE_LICENSES=yes
export BATCH=yes
export myjail=pjail2
export myport=default2
export mybranch=2025Q4
export mypackagelist=./packagelist.txt
rm -vfR /usr/ports/distfiles/*
poudriere pkgclean -A        -j $myjail 
poudriere logclean -a
poudriere jail   -k          -j $myjail
mount | grep poudriere | awk '{print $3}' | xargs -I {} umount -f {}
sleep 10
poudriere jail   -d          -j $myjail
sleep 10
poudriere jail   -c          -j $myjail -v 15.0-RELEASE
sleep 10
poudriere ports  -d                     -p $myport
sleep 10
poudriere ports  -c                     -p $myport -m git+https -B $mybranch
sleep 10
poudriere ports  -u                     -p $myport -m git+https -B $mybranch
sleep 10
#poudriere options           -j $myjail -p $myport -f $mypackagelist
poudriere bulk -b quarterly  -j $myjail -p $myport -f $mypackagelist
Remove the line with "-d" if you don't want to delete the jail & ports tree.
 
Poudriere takes the options from make.conf.
For some ports you want to manually make a options file in /var/db/ports by running poudriere options explicitly on those limited ports.
 
But it is a lengthy process.
Do I need to run this step?
No.
Is creating make.conf settings file enough?
Yes.
Do I need the -c step?
No, poudriere will detect the changed options and rebuild whatever is necessary. In most cases any way. I've rarely had to rebuild everything from scratch.
How can I accept all the default settings?
Don't set any options in make.conf and simply don't run poudriere-options(8) (and remove any of the *-options directories you may have created before). If there's no options set it will simply use whatever the port itself has set as defaults. It's like building from ports with BATCH set and never done a make config (or make config-recursive), or removed them with make rmconfig/ make rmconfig-recursive, it will just use the defaults.


Code:
   Custom build options
     Before building a package, poudriere can mount a directory containing
     option files if available.  poudriere will check for any of these
     directories in this order:

           /usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-options
           /usr/local/etc/poudriere.d/<jailname>-<setname>-options
           /usr/local/etc/poudriere.d/<jailname>-<tree>-options
           /usr/local/etc/poudriere.d/<tree>-<setname>-options
           /usr/local/etc/poudriere.d/<setname>-options
           /usr/local/etc/poudriere.d/<tree>-options
           /usr/local/etc/poudriere.d/<jailname>-options
           /usr/local/etc/poudriere.d/options
 
I personally prefer setting options on specific ports instead of using "global" options. I do set everything in a make.conf (or combinations thereof). Options set with poudriere-options(8) can overrule what was set in make.conf, which can lead to quite a bit of confusion, so I avoid mixing them and set everything I need with a make.conf file.

For example:
Code:
security_sudo_SET= INSULTS
This turns on the INSULTS option, but only on the security/sudo port.

Code:
   Create optional make.conf
     You can also specify a global make.conf which will be used for all the
     jails.  Any of the following are allowed and will all be used in the
     order shown:

           /usr/local/etc/poudriere.d/make.conf
           /usr/local/etc/poudriere.d/<setname>-make.conf
           /usr/local/etc/poudriere.d/<tree>-make.conf
           /usr/local/etc/poudriere.d/<jailname>-make.conf
           /usr/local/etc/poudriere.d/<tree>-<setname>-make.conf
           /usr/local/etc/poudriere.d/<jailname>-<tree>-make.conf
           /usr/local/etc/poudriere.d/<jailname>-<setname>-make.conf
           /usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-make.conf
           /usr/local/etc/poudriere.d/hooks/plugins/<plugin>/make.conf
 
as you arrive at a stable consistent system. An i wrong SirDice ?
Not wrong but as forum admin the standard spiel would be: Don't mess with defaults.

But I have a 2GB envelope for MFS I am trying not to fill it all up. I need some system RAM leftover...

So I started with the examples in I found in documentation. These can't hurt if missing on any system. They are purely optional.
DOCS EXAMPLES MANPAGES

Then I expanded to things just for experimentation. These are just a reference to things I do not need. My end build will not contain them all.
I might go the way SirDice mentions and use a per-jail make.conf.
security_sudo_SET= INSULTS
I really want to try and slim LLVM so I might use this in conjunction with my mass UNSET.
Can I do per port UNSET with this too?

Thanks both of you. I had an inkling I was doing it wrong.
 
cat make.conf | grep -i unset
Code:
OPTIONS_UNSET+=GSSAPI
OPTIONS_UNSET+=GSSAPI_BASE
OPTIONS_UNSET+=GSSAPI_HEIMDAL
OPTIONS_UNSET+=GSSAPI_MIT
OPTIONS_UNSET+=ALSA
OPTIONS_UNSET+=DEBUG
OPTIONS_UNSET+=GOLD
OPTIONS_UNSET+=KERBEROS
OPTIONS_UNSET+=KERB_GSSAPI
OPTIONS_UNSET+=LDAPS
OPTIONS_UNSET+=LETTER
OPTIONS_UNSET+=LTO
OPTIONS_UNSET+=NFS
OPTIONS_UNSET+=NTLM
OPTIONS_UNSET+=SMB
 
That still hits every port/jail though.

I need to try like this:
security_sudo_UNSET=INSULTS

Or in my case:
devel_llvm_UNSET=CLANG

Maybe I need the symbol:
devel_llvm_UNSET+=CLANG
 
My target platform is MinnowBoardMax. It is a Pi like board with amd64. We have a GPIO driver for it.
I am building MemoryFileSystem image for it to run from due to limited storage options.
The platform only has 2GB system RAM that is tight for MFS so I have FreeBSD slimmed to 800MB and want 400MB max packages size.

astro/gpsd and astro/gpxloggerd are my two target programs.

I seem to be having troubles with gpxloggerd dragging in Xorg.

gpsd has two flavors. @default and @nox11
So I compile it with @nox11 for compactness.

gpxloggerd has no flavors. When I add it to my pkglist it brings in all of Xorg. Its like it doesn't understand my gpsd@nox11.

gps-pkglist
Code:
astro/gpsd@nox11
astro/gpxloggerd

How can I get gpxloggerd to run without x11. Am I doing something wrong?
 
My target platform is MinnowBoardMax. It is a Pi like board with amd64. We have a GPIO driver for it.
I am building MemoryFileSystem image for it to run from due to limited storage options.
The platform only has 2GB system RAM that is tight for MFS so I have FreeBSD slimmed to 800MB and want 400MB max packages size.

astro/gpsd and astro/gpxloggerd are my two target programs.

I seem to be having troubles with gpxloggerd dragging in Xorg.

gpsd has two flavors. @default and @nox11
So I compile it with @nox11 for compactness.

gpxloggerd has no flavors. When I add it to my pkglist it brings in all of Xorg. Its like it doesn't understand my gpsd@nox11.

gps-pkglist
Code:
astro/gpsd@nox11
astro/gpxloggerd

How can I get gpxloggerd to run without x11. Am I doing something wrong?
Can you try this?
Diff:
diff --git a/astro/gpxloggerd/Makefile b/astro/gpxloggerd/Makefile
index 8b9eb47937..615722cf5d 100644
--- a/astro/gpxloggerd/Makefile
+++ b/astro/gpxloggerd/Makefile
@@ -8,7 +8,7 @@ GH_ACCOUNT=     glebius
 MAINTAINER=    glebius@FreeBSD.org
 COMMENT=       Daemon that connects to the GPSD daemon and logs GPS traces

-LIB_DEPENDS=   libgps.so:astro/gpsd
+LIB_DEPENDS=   libgps.so:astro/gpsd@nox11

 USE_RC_SUBR=   ${PORTNAME}
 PLIST_FILES=   sbin/${PORTNAME} \

It seems to perform right for me:
Code:
Ports to build: astro/gpsd@nox11 astro/gpxloggerd comms/py-pyserial devel/scons
 
Well that worked well but I hate hacking on ports.

I want to put together a proper patch for Gleb. He was nice enough to respond to me about this problem earlier when i was clueless..

So to fix this FLAVORS have to be added correct? To support the upstream FLAVORS a dependent port needs them too correct?

I want a gps logger that is WITHOUT_X11... No offense.

The real bull in the china shop.
Should X11 be the @default FLAVOR version for GPSD....
Just because it has a GUI program should it drag the whole X11 in... I think it should be optional.
 
I wiped out all my jails Poudriere Options with -r remove. I looked inside ../poudriere.d/ and a few new directories that remained.
default-options
mbm-options
mbm-mfs-options

So these I presume were all created with the Poudriere Option -c command when ran in the jails.
It was a great experiment. I hope to never use again.
 
I have an image created with base slimmed down and gpsd & gpxloggerd weighing in at 775M

I thought it had a bloaty feeling:

Code:
@mbm-mfs:/usr/local/lib #  du -sh * | sort -h | tail -n10
208K    libmpdec.so.4.0.1
220K    libintl.so.8.4.5
316K    libmpdec.a
372K    libreadline.so.8.3
448K    libintl.a
768K    libreadline.a
3.6M    libpkg.so.4
5.9M    libpython3.11.so.1.0
6.4M    libpkg.a
216M    python3.11
Python takes 216M out of 775M.
 
This is very small medium. That might be why its different size. microSD card boot and MFSROOT:

Code:
@mbm-mfs:/usr/local/lib # df -h
Filesystem          Size    Used   Avail Capacity  Mounted on
/dev/ufs/mbm-mfs    760M    683M     17M    98%    /
 
Back
Top