[chef] Re: [RFC] CHEF-50 - Portage use flags & keywords


Chronological Thread 
  • From: Adam Jacob < >
  • To:
  • Subject: [chef] Re: [RFC] CHEF-50 - Portage use flags & keywords
  • Date: Mon, 8 Feb 2010 12:56:12 -0800

On Mon, Feb 8, 2010 at 4:24 AM, Kenneth Kalmer 
< >
 wrote:
> Currently Chef::Resource::Package doesn't give us the ability to pass
> arbitrary attributes that can be used by Chef::Provider::Package::Portage to
> manipulate the USE & KEYWORDS environment variables.
> I can think of three possible routes to follow here, outlined below:
> The first is to expand Chef::Resource::Package to accept a hash of
> environment variables that can be passed to the underlying package
> providers. This is generic enough, and could be used by other providers as
> well:
>     package "net-dns/pdns" do
>       action :install
>       environment "USE" => "mysql"
>     end
> The above can then be interpreted by the Portage provider and executed as
> "USE=mysql emerge net-dns/pdns"
> The second could be to implement two new providers specifically for Gentoo,
> one for manipulating use flags and the other for manipulating keywords (both
> through the corresponding /etc/portage/package.{use|keywords} files
>     use "net-dns/pdns" do
>       flags "mysql"
>     end
>     keywords "dev-db/couchdb" do
>       accept "~x86"
>     end
> The last, and least desirable option would be to expand
> Chef::Resource::Package to accept 'use' and 'keywords' as attributes, but
> that blows it open to expansion from every child provider.

I would prefer not to have the generic terms "use" and "keywords" be
tied to this.  It seems like this is indeed package-level options,
that just happen to set some things in the filesystem for you prior to
packaging.

My gut says the thing to do is to have a re-usable generic for hints
of this kind to the underlying package providers.  One of the prime
reasons people choose one system over another are exactly this kind of
implementation detail - you pick Gentoo partly because you love the
use and keywords systems.  Something like:

package "dev-db/couchdb" do
  hints :keywords => { :accept => "~x86" }
end

Might work, and the underlying package provider can choose to do with
it as it will.

Another option would be to make these attributes available only
through the specific resource for the provider:

portage_package "dev-db/couchdb" do
  keywords :accept => "~x86"
  use :flags => "mysql"
end

You could build the nicer version (with the keywords and use
attributes) as sugar on top of the generic hints attribute.

Thoughts?

Adam

-- 
Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: 




Archive powered by MHonArc 2.6.16.

§