working with port options from commandline

Bryan Drewery bdrewery at FreeBSD.org
Fri Apr 4 15:25:54 UTC 2014


On 2014-04-04 09:26, Volodymyr Kostyrko wrote:
> 04.04.2014 14:05, Bryan Drewery написав(ла):
>> On 4/3/2014 4:26 AM, Volodymyr Kostyrko wrote:
>>> Hi all.
>>> 
>>> I'm all about automation. I'd like to automate most tasks so I can
>>> schedule them or write a script with which everything would be done
>>> automatically.
>>> 
>>> I have some difficulties with current port options framework:
>>> 
>>> 1. Is there a good way to set/unset any option from command line 
>>> without
>>> firing up dialog? Something like 'make -C port/dir -DSET=OPT1,OPT2
>>> -DUNSET=OPT3 updateconfig'.
>> 
>> This should work:
>>    make ... OPTIONS_SET="OPT OPT OPT" OPTIONS_UNSET="OPT OPT OPT" 
>> BATCH=1
> 
> I know but my target is to manage different machines with different
> options remotely. I'm currently experimenting with sysutils/py-salt
> and I found it already has required functionality in ports.config - I
> can remotely update ports configuration without building them. The
> given line actually doesn't change port configuration, it just makes
> port behave differently in the current run.
> 
> Why I didn't like this is because it works only on current port but
> not on the ports required by this one. Imagine you have a number of
> _differently_ configured machines and you want to manage updates
> remotely. Poudriere doesn't help as packages actually may very from
> system to system,

Poudriere handles that situation fine.

You setup sets for each configuration you want. Your options can either 
be in the /var/db/ports format or in a make.conf with 
OPTIONS_SET/OPTIONS_UNSET/uniquename_OPTIONS...

   poudriere bulk -j JAIL -z SET

This will use:

   /usr/local/etc/poudriere.d/SET-make.conf
   /usr/local/etc/poudriere.d/make.conf
   /usr/local/etc/poudriere.d/SET-options

So with 1 jail you can build package sets for each target machine.

You can use poudriere options to configure these in the /var/db/ports 
format which automatically creates the SET-options dir:

   poudriere options -z SET

Poudriere will rebuild packages when the selected options change or new 
defaults are added.

> what I need is number of command line tools to
> inspect what should be build, inspect what options should be changed,
> update options from central datastore and rebuild ports - without
> using a GUI.
> 
>>> 2. Is there a good way to query for option updates? You know when you
>>> are building a port the option dialog will still be shown if there 
>>> are
>>> new options not present in current config. Can I get those options
>>> somehow like 'make -C port/dir changedconfig'?
>> 
>> The current handling uses:
>>    make -V NEWOPTIONS
> 
> Exactly what I needed.
> 
>> You can also use 'make pretty-print-config' for a parseable output.
> 
> Nice thing, I'll remember this one.

-- 
Regards,
Bryan Drewery


More information about the freebsd-ports mailing list