Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 04 Apr 2014 10:25:50 -0500
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        Volodymyr Kostyrko <c.kworr@gmail.com>
Cc:        FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: working with port options from commandline
Message-ID:  <cb1490b870b47595e94dcad1f1877023@shatow.net>
In-Reply-To: <533EC11A.3030600@b1t.name>
References:  <533D293D.1050902@b1t.name> <533E91E9.3080305@FreeBSD.org> <533EC11A.3030600@b1t.name>

next in thread | previous in thread | raw e-mail | index | archive | help
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



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