The latest 3.2.19 in rawhide/Fedora 10 parses out the tags data
recently discussed on the rpm-metadata list, and createrepo can add it
in. So I'm planning on re-solving a couple of problems, and adding a
plugin to do some new stuff. Please feel free to
discuss/reply/object/etc. :).

 ---- recap ----

 We added three things to the repomd.xml for each repo.:

1. content tags: set of string tags on the packages in the repo.

2. distro tags: set of string tags on a distro. (uses cpe¹)

3. release string: a single string which is the "release" for the repo.
(defaults to time_t for the createrepo run).

...an example of which is (just paste this into the top of a repomd.xml
file and run repoMDObject.py on it):

<release>Foo bar 9.1.666</release>
<tags>
  <content>foo</content>
  <content>bar</content>
  <distro cpeid="cpe://o:fedora_project:fedora:9">foo</content>
  <distro cpeid="cpe://o:fedora_project:fedora:9">bar</content>
</tags>

...and we also have:

4. "timestamp" of the repomd.xml, as used by MM/metalink etc. (yum
repolist -v shows this) it's the old timestamp on any of the metadata in
the repomd.xml.


 ---- out with the old ----

p1. Current yumdownloder --source, and debuginfo-install enable repos.
by doing """Find any repos ending in "-source" than start with something
that is enabled.""". We also do a similar ad hoc thing in sqlitesack, so
that we can turn source repos. off without doing much work.

 This has always been kind of hacky, and only allows one
source/debuginfo repo. for each "parent" repo. ... it is also more
important to fix sooner because PackageKit refuses to implement the
above logic, due to non-portability to make etc.


s1. The obvious way to fix this, is to have two pieces of information:

        i. is this a source/debuginfo/etc. repo.
        
        ii. this repo. should be enabled when repo. X is enabled (and
        you want to autoenable source/debuginfo/etc.)
        
#i seems like an obvious candidate for a content tag, and a
yb.repos.findWithTag('source') API.

#ii is less obvious, we can use the "release string". ie. foo-source and
foo-debuginfo repos. would manually be given the same release string as
the "foo" repo. (which could just be "Fedora 9 x86_64").
 We could introduce another tag, say a "parent" tag which points to the
release or repoid explicitly.

 The other option would be to use distro tags in #i and say something
like: if the repo. has a distro tag of source, and a matching distro tag
of "main" is enabled ... autoenable this repo
 API being something like: 
 for (repo, distro) in yb.repos.findWithDistroTag('source'):
   if yb.repos.findWithDistroTag('main', distro=distro, enabled=True):
...of course that might do weird things due to cpe matching.

p2. Kinda related, atm. in Fedora we have updates-testing and
rawhide ... it'd be nice to be able to say "enable testing" or "enable
development".

s2. Just adding content/distro tags and looking enabling based on that
seems sane and easy.


 --- in with the new ----

 For the new stuff, I think most use cases will be similar to the above
in that people will want to turn repos. on/off based on some combination
of the tags ... and I know we want at least something like "only use
repos. with release = FOO".
 Anyway think of any other use cases? (anyone thinking about
yum-tag-priorities gets a free stabbing from Seth :).



¹ See http://cpe.mitre.org/ and /etc/system-release-cpe

-- 
James Antill <[EMAIL PROTECTED]>
Fedora
_______________________________________________
Yum-devel mailing list
Yum-devel@lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to