public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Brian Harring <ferringb@gentoo.org>
To: gentoo-portage-dev@lists.gentoo.org
Subject: Re: [gentoo-portage-dev] Additional information to output: emerge -pv
Date: Thu, 25 Aug 2005 17:24:56 -0500	[thread overview]
Message-ID: <20050825222455.GO1701@nightcrawler> (raw)
In-Reply-To: <430E0AC8.7050200@wmich.edu>

[-- Attachment #1: Type: text/plain, Size: 2881 bytes --]

On Thu, Aug 25, 2005 at 06:15:36PM +0000, Dustin Spicuzza wrote:
> 
> >
> >Actually, I'd find it useful personally.
> >People add *weird* use flags sometimes.
> > 
> >
> LoL... yes, thats true.
> 
> A suggestion possibly to keep in mind is what if all functionality 
> related to USE flags were somehow implemented in a seperate class/set of 
> functions... or maybe that's already being done. But I mean, the job of 
> determining which flags apply to what package and managing all that and 
> how it works... I noticed that (at least in stable) a lot of it is in 
> portage.config, but maybe it could be a seperate class that 
> portage.config uses.. and other things (like deps, etc). Then stuff like 
> outputting USE flags, or adding additional ways to determine which USE 
> flags to actually use for each package, would all be in one location, 
> lending itself to code reuse...
> 
> Of course, this is just from my looking at portage stable for a week or 
> so... maybe its already being done. :)
It's being done :)
Essentially, you have this
config
domain
|--repo(s)
|  |--cache(s)
|  |--sync
|--vdb(s)
|--profile(s)

Domain is generated from configuration, as are all of the other 
objects; the config class just holds config data, and instantiates 
objects, shuffling them around dependant on an external file that 
states the rules for the config (in the process, stating how to 
instantiate the objs).

Config build data is domain data; your normal ebuild repository is an 
'unconfigured' repository, iow, you can toggle stuff on it to change 
the metadata of packages it returns.
The domain during instantiation notes that it has an unconfigured repo 
in it's list, inspects the repo instance for what is needed to 
configure it (and the func to call), calls the func with the 
configurables supplied, and uses the returned repo instead of the 
unconfigured repo.

Via this, the config data (USE, build, etc) is pushed down into the 
repo.  The configured repo wraps the unconfigured repo's returned 
packages with it's own wrapper that binds the config data into it, and 
hands that back.

Probably not a great description, but the short version is it works 
pretty well, and is pretty well encapsulated.

What I'd *like* to see is the use.{local.,}desc information bound into 
the repository, and have it supplied from the repository object; doing 
so keeps that data in the repo backend, not screwing up any 
abstractions that are carefully defined to allow for remote 
replacements.

Haven't proposed it to -dev yet, but I'd like to see package.* and 
use.* moved out of profiles/ , and into it's own base directory in the 
ebuild repository.
Reasoning is that profile objs are seperate from repo objs; the fs 
layout should reflect that to some degree.  It's cleaner anyways, imo. 
:)
~harring

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2005-08-25 22:27 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-25 17:44 Re: [gentoo-portage-dev] Additional information to output: emerge -pv Dustin Spicuzza
2005-08-25 21:57 ` Brian Harring
2005-08-25 18:15   ` Dustin Spicuzza
2005-08-25 22:24     ` Brian Harring [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-08-25 17:54 Dustin Spicuzza
2005-08-25 18:22 ` Thomas de Grenier de Latour
2005-08-25  2:15 Dustin Spicuzza
2005-08-25  9:58 ` Simon Stelling
2005-08-25  9:59 ` Paul de Vrieze
2005-08-25 14:15 ` Sandy McArthur
2005-08-25 16:14   ` Brian Harring
2005-08-25 16:28     ` Brian Harring
2005-08-25 20:42 ` Alec Warner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050825222455.GO1701@nightcrawler \
    --to=ferringb@gentoo.org \
    --cc=gentoo-portage-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox