Issue #16574 has been updated by Stephen Ryan.

We are running Gentoo with the most common version of puppet being 2.7.18, eix 
at 0.25.5. It runs fine for 99% of packages. My comments above were for running 
eix from the commandline.

Eix on Gentoo did change its database version a few months back which caused a 
load of our hosts to report package failures like the above until eix-sync was 
run. Given Marc is running Funtoo, not stock Gentoo, it probably relates to 
this.

    *eix-0.23.6 (16 Jan 2012)
    16 Jan 2012; Jeremy Olexa <[email protected]> +eix-0.23.6.ebuild:
    Version bump, small bug fixes including Gentoo bug 397589 and new cache
    method (mainly for Funtoo Linux usage)
----------------------------------------
Bug #16574: Gentoo's eix program seems to have changed it's syntax which breaks 
puppet
https://projects.puppetlabs.com/issues/16574#change-76196

Author: Marc Richter
Status: Needs More Information
Priority: Normal
Assignee: Marc Richter
Category: Gentoo
Target version: 
Affected Puppet version: 
Keywords: eix, version, LASTVERSION, installedversions, bestversion
Branch: 


Hi everyone!

When I understand how puppet works package-resources in Gentoo correctly, it 
uses the program "eix" on Gentoo hosts to determine package states and 
versions. That way, the manifest:

<pre>package { 'media-gfx/exif':
  ensure => installed,
}</pre>

is executed on the node like this:

    /usr/bin/eix --nocolor --pure-packages --stable --format <category> <name> 
[<installedversions:LASTVERSION>] [<bestversion:LASTVERSION>] <homepage> 
<description> --exact --category-name media-gfx/exif

Refering to eix manpage, the syntax you are using with 
"[<installedversions:LASTVERSION>]" and "[<bestversion:LASTVERSION>]" isn't 
valid:

<pre>
FORMATSTRING
       A  formatstring can contain conditional blocks, package properties, 
colors and normal strings.  If a formatstring expands to the empty string for a 
package, also the trailing newline is not printed.  Thus you can put the whole 
formatstring
       into a conditional block to output only packages matching the 
conditional.  An example of this wrapping is given below.

....

   Package properties
       Names that refer to specific properties of the package that is currently 
printed. If used to print a property, the name must be enclosed in square 
brackets (i.e. "<name>").

       name, category, homepage, licenses
              The name, category, homepage and licenses for the current package.

       availableversions:VARIABLE, availableversions:VARIABLE:VARSLOTS
              For each version, print the content of the 
configuration/environment variable with name VARIABLE, interpreting it as a 
format string.  If the second form is used and at least one slot of the package 
is nontrivial, then  VARSLOTS  is
              used instead of VARIABLE, and the versions are sorted according 
to slots.

              To avoid a misunderstanding: It is not possible to enter the 
required format directly after the colon.  Instead, the required format must be 
stored in a new variable, and VARIABLE and VARSLOTS are only the names of these 
variables.

              Useful  examples  for  VARIABLE  are  NAMEVERSION,  
EQNAMEVERSION, EQNAMEVERSION, ANAMESLOT, ANAMEASLOT, NAMESLOT, NAMEASLOT or 
DATESORT.  Here, ANAMESLOT and ANAMEASLOT are meant to be used in the second 
form, i.e. in availablever‐
              sions:ANAMESLOT:ANAMESLOT or 
availableversions:ANAMEASLOT:ANAMEASLOT (Mnemonic: ASLOT prints the slot 
always).  Moreover, NAMESLOT, NAMEASLOT and DATESORT makes sense only for 
installed versions.  See eix --dump to see the variables
              in detail.

       markedversions:VARIABLE, markedversions:VARIABLE:VARSLOTS
              This is analogous to availableversions with the difference that 
only marked versions are printed.

       bestversion:VARIABLE, bestversion*:VARIABLE, bestslotversions:VARIABLE, 
bestslotversions*:VARIABLE, bestslotupgradeversions:VARIABLE, 
bestslotupgradeversions*:VARIABLE
              This  is  analogous  to  availableversions with the difference 
that only the best version resp. the best versions of each slot are printed.  
For the variants with * also unstable versions are accepted.  For the variants 
with upgrade
              only those versions are selected which probably will appear after 
the upgrade.

       installedversions:VARIABLE
              This is analogous to availableversions with the difference that 
only installed versions are printed.

....

</pre>

That seems to be the reason why the result for "installedversions" and 
"bestversion" is empty:

    vagrant-funtoo64 / # /usr/bin/eix --nocolor --pure-packages --stable 
--format '<category> <name> [<installedversions:LASTVERSION>] 
[<bestversion:LASTVERSION>] <homepage> <description>' --exact --category-name 
media-gfx/exif
    media-gfx exif [] [] http://libexif.sourceforge.net/ Small CLI util to show 
EXIF infos hidden in JPEG files
    vagrant-funtoo64 / #


If you call eix like this, the result seems to be more like what you expected:

    vagrant-funtoo64 / # /usr/bin/eix --nocolor --pure-packages --stable 
--format '<category> <name> [<installedversions:IVERSIONS_COMPACT>] 
[<bestversion:AVERSIONS_COMPACT>] <homepage> <description>' --exact 
--category-name media-gfx/exif
    media-gfx exif [0.6.21] [0.6.21] http://libexif.sourceforge.net/ Small CLI 
util to show EXIF infos hidden in JPEG files
    vagrant-funtoo64 / #

These are the true versions as you can see with the folowing non-formated eix - 
call:

<pre>
vagrant-funtoo64 / # eix media-gfx/exif
[I] media-gfx/exif
     Available versions:  0.6.21 {{nls}}
     Installed versions:  0.6.21(10:46:25 AM 09/06/2012)(nls)
     Homepage:            http://libexif.sourceforge.net/
     Description:         Small CLI util to show EXIF infos hidden in JPEG files

[I] media-gfx/exiftags
     Available versions:  1.01
     Installed versions:  1.01(10:44:56 AM 09/06/2012)
     Homepage:            http://johnst.org/sw/exiftags/
     Description:         Extracts JPEG EXIF headers from digital camera photos

Found 2 matches.
vagrant-funtoo64 / #
</pre>




-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to