public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user] Plasma-runtime compilation problems
@ 2011-08-10  3:34 Jeff Cranmer
  2011-08-10 21:40 ` [gentoo-user] " walt
  0 siblings, 1 reply; 18+ messages in thread
From: Jeff Cranmer @ 2011-08-10  3:34 UTC (permalink / raw
  To: gentoo-user

Hi all,

I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a problem.

Plasma-runtime-4.6.3 is failing.  The error appears to be 
redefinition of 'struct QMetaTypeID<Plasma::Service*>'

Has anyone encountered this problem, and is there an easy fix?

Thanks

Jeff





^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-10  3:34 [gentoo-user] Plasma-runtime compilation problems Jeff Cranmer
@ 2011-08-10 21:40 ` walt
  2011-08-10 22:04   ` Michael Schreckenbauer
  0 siblings, 1 reply; 18+ messages in thread
From: walt @ 2011-08-10 21:40 UTC (permalink / raw
  To: gentoo-user

On 08/09/2011 08:34 PM, Jeff Cranmer wrote:
> Hi all,
> 
> I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a problem.
> 
> Plasma-runtime-4.6.3 is failing.  The error appears to be 
> redefinition of 'struct QMetaTypeID<Plasma::Service*>'

I don't use kde so I can't be specific, but usually a redefinition is
just a warning -- unless the package is compiled with the -Wall flag or
equivalent.

Do you see lots of other redefinition warnings before the build stops?
If so, you may be overlooking the real error message which may appear
dozens of lines earlier

Often I find the real error message embedded in a long list of harmless
warnings, especially if I'm compiling with -j2 or higher.  ("Waiting for
unfinished jobs" is a good clue that the error occurred much earlier in
the build.)





^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-10 21:40 ` [gentoo-user] " walt
@ 2011-08-10 22:04   ` Michael Schreckenbauer
  2011-08-10 23:16     ` walt
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Schreckenbauer @ 2011-08-10 22:04 UTC (permalink / raw
  To: gentoo-user

Hi,

Am Mittwoch, 10. August 2011, 14:40:31 schrieb walt:
> On 08/09/2011 08:34 PM, Jeff Cranmer wrote:
> > Hi all,
> > 
> > I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a problem.
> > 
> > Plasma-runtime-4.6.3 is failing.  The error appears to be
> > redefinition of 'struct QMetaTypeID<Plasma::Service*>'
> 
> I don't use kde so I can't be specific, but usually a redefinition is
> just a warning -- unless the package is compiled with the -Wall flag or
> equivalent.

No, this is plain wrong. Redefinition of a struct is an error in C and C++

~$cat foo.c
struct foo {
        int i;
};

struct foo {
        char* v;
};

~$gcc foo.c -o foo
foo.c:5:8: error: redefinition of 'struct foo'
foo.c:1:8: note: originally defined here

-Wall enables some more warnings and has nothing to do with errors at all.
-Werror is the switch that turns warnings into errors.

Regards,
Michael




^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-10 22:04   ` Michael Schreckenbauer
@ 2011-08-10 23:16     ` walt
  2011-08-11  0:14       ` Jeff Cranmer
  2011-08-11  8:31       ` Michael Schreckenbauer
  0 siblings, 2 replies; 18+ messages in thread
From: walt @ 2011-08-10 23:16 UTC (permalink / raw
  To: gentoo-user

On 08/10/2011 03:04 PM, Michael Schreckenbauer wrote:
> Hi,
> 
> Am Mittwoch, 10. August 2011, 14:40:31 schrieb walt:
>> On 08/09/2011 08:34 PM, Jeff Cranmer wrote:
>>> Hi all,
>>>
>>> I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a problem.
>>>
>>> Plasma-runtime-4.6.3 is failing.  The error appears to be
>>> redefinition of 'struct QMetaTypeID<Plasma::Service*>'
>>
>> I don't use kde so I can't be specific, but usually a redefinition is
>> just a warning -- unless the package is compiled with the -Wall flag or
>> equivalent.

(Of course I meant -Werror, sorry.)

> No, this is plain wrong. Redefinition of a struct is an error in C and C++
> 
> ~$cat foo.c
> struct foo {
>         int i;
> };
> 
> struct foo {
>         char* v;
> };
> 
> ~$gcc foo.c -o foo
> foo.c:5:8: error: redefinition of 'struct foo'
> foo.c:1:8: note: originally defined here

Hm.  I know I've seen compiler redefinition messages thousands of times
over the years.  Is it really possible that all of those thousands were
errors instead of warnings?  If that's true then I've wasted a lot more
time tracking them down than I care to think about :)




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-10 23:16     ` walt
@ 2011-08-11  0:14       ` Jeff Cranmer
  2011-08-11  0:55         ` Dale
  2011-08-11  8:31       ` Michael Schreckenbauer
  1 sibling, 1 reply; 18+ messages in thread
From: Jeff Cranmer @ 2011-08-11  0:14 UTC (permalink / raw
  To: gentoo-user

On Wed, 2011-08-10 at 16:16 -0700, walt wrote:
> On 08/10/2011 03:04 PM, Michael Schreckenbauer wrote:
> > Hi,
> > 
> > Am Mittwoch, 10. August 2011, 14:40:31 schrieb walt:
> >> On 08/09/2011 08:34 PM, Jeff Cranmer wrote:
> >>> Hi all,
> >>>
> >>> I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a problem.
> >>>
> >>> Plasma-runtime-4.6.3 is failing.  The error appears to be
> >>> redefinition of 'struct QMetaTypeID<Plasma::Service*>'
> >>
> >> I don't use kde so I can't be specific, but usually a redefinition is
> >> just a warning -- unless the package is compiled with the -Wall flag or
> >> equivalent.
> 
> (Of course I meant -Werror, sorry.)
> 
> > No, this is plain wrong. Redefinition of a struct is an error in C and C++
> > 
> > ~$cat foo.c
> > struct foo {
> >         int i;
> > };
> > 
> > struct foo {
> >         char* v;
> > };
> > 
> > ~$gcc foo.c -o foo
> > foo.c:5:8: error: redefinition of 'struct foo'
> > foo.c:1:8: note: originally defined here
> 
> Hm.  I know I've seen compiler redefinition messages thousands of times
> over the years.  Is it really possible that all of those thousands were
> errors instead of warnings?  If that's true then I've wasted a lot more
> time tracking them down than I care to think about :)
> 
> 
I've seen lots of compiler warnings in the past.  This one, however, was
flagged as an 'Error', not as a warning.  It was the last message before
the compile failed, so I think it's reasonable to assume that therein
lies the problem?

I have emerged all system files, as well as a lot of the world files
that are currently out of date.  This particular compilation failure
happened late in an emerge -NDuav kdebase-meta, as the first part of the
upgrade from kde4.4 to kde4.6

Running revdep-rebuild following the emerge didn't help.  I still have
some world files that are out of date, but all of those are allegedly
not deep dependencies of kdebase-eta.  Last time I tried to do a full
emerge -NDuav world, however, I was then unable to operate my HDPVR
unit, as it suffered a lot of usb failures.  I had to recover my system
from an earlier clonezila backup, so now I'm trying to sneak up on the
problem by doing as little as possible each emerge, then checking
everything works and running another OS clone before continuing.

Unfortunately, kde is now broken, so I'm operating my mythtv interface
via gnome while I attempt to recover kde.  It's probable that the fault
lies in one of the other packages within world that are still to be
upgraded, but it would be nice to get some clues as to which one is the
culprit, so I can continue to inch up on whatever is breaking my HDPVR
based mythtv.

Jeff





^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-11  0:14       ` Jeff Cranmer
@ 2011-08-11  0:55         ` Dale
  2011-08-20 19:21           ` Jeff Cranmer
  0 siblings, 1 reply; 18+ messages in thread
From: Dale @ 2011-08-11  0:55 UTC (permalink / raw
  To: gentoo-user

Jeff Cranmer wrote:
>
> I've seen lots of compiler warnings in the past.  This one, however, was
> flagged as an 'Error', not as a warning.  It was the last message before
> the compile failed, so I think it's reasonable to assume that therein
> lies the problem?
> <<  SNIP>>
> Jeff
>
>    

I can see where one would think that but it is often not the case.  I 
had a compile to fail a few months ago, I had to go waaaaay back to find 
the original failure.  It was far enough back that I had to copy the 
whole thing to a editor and use the find feature to find it.  I use 
Konsole for most of this but I bet it was 7 or 8 screens further back 
than where it ended up failing.

I am on a 4 core rig so that may have a bit to do with it but I have ran 
into the same on my older rig that is single core.  It is amazing how 
far back the original problem is sometimes.

May want to consider looking further back or just posting as a 
attachment or something.

Dale

:-)  :-)



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-10 23:16     ` walt
  2011-08-11  0:14       ` Jeff Cranmer
@ 2011-08-11  8:31       ` Michael Schreckenbauer
  2011-08-12 19:22         ` walt
  1 sibling, 1 reply; 18+ messages in thread
From: Michael Schreckenbauer @ 2011-08-11  8:31 UTC (permalink / raw
  To: gentoo-user

Hi Walt,

Am Mittwoch, 10. August 2011, 16:16:50 schrieb walt:
> On 08/10/2011 03:04 PM, Michael Schreckenbauer wrote:
> > Hi,
> > 
> > Am Mittwoch, 10. August 2011, 14:40:31 schrieb walt:
> >> On 08/09/2011 08:34 PM, Jeff Cranmer wrote:
> >>> Hi all,
> >>> 
> >>> I'm trying to upgrade kde from 4.4 to 4.6, and I've run into a
> >>> problem.
> >>> 
> >>> Plasma-runtime-4.6.3 is failing.  The error appears to be
> >>> redefinition of 'struct QMetaTypeID<Plasma::Service*>'
> >> 
> >> I don't use kde so I can't be specific, but usually a redefinition is
> >> just a warning -- unless the package is compiled with the -Wall flag
> >> or
> >> equivalent.
> 
> (Of course I meant -Werror, sorry.)

no prob.
 
> > No, this is plain wrong. Redefinition of a struct is an error in C and
> > C++
> > 
> > ~$cat foo.c
> > struct foo {
> > 
> >         int i;
> > 
> > };
> > 
> > struct foo {
> > 
> >         char* v;
> > 
> > };
> > 
> > ~$gcc foo.c -o foo
> > foo.c:5:8: error: redefinition of 'struct foo'
> > foo.c:1:8: note: originally defined here
> 
> Hm.  I know I've seen compiler redefinition messages thousands of times
> over the years.  Is it really possible that all of those thousands were
> errors instead of warnings?  If that's true then I've wasted a lot more
> time tracking them down than I care to think about :)

struct redefinition is always an error.
Maybe what you saw as a warning was some kind of macro redefined.

~ $ cat bar.c
#define BAR 0
#define BAR 1

int main()
{
}

~$gcc bar.c -o bar
bar.c:2:0: warning: "BAR" redefined
bar.c:1:0: note: this is the location of the previous definition

Note the different wording in the message.

Regards,
Michael




^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-11  8:31       ` Michael Schreckenbauer
@ 2011-08-12 19:22         ` walt
  0 siblings, 0 replies; 18+ messages in thread
From: walt @ 2011-08-12 19:22 UTC (permalink / raw
  To: gentoo-user

On 08/11/2011 01:31 AM, Michael Schreckenbauer wrote:
> Hi Walt,

>> Hm.  I know I've seen compiler redefinition messages thousands of times
>> over the years.

> Maybe what you saw as a warning was some kind of macro redefined.
> 
> ~ $ cat bar.c
> #define BAR 0
> #define BAR 1
> 
> int main()
> {
> }
> 
> ~$gcc bar.c -o bar
> bar.c:2:0: warning: "BAR" redefined
> bar.c:1:0: note: this is the location of the previous definition

Yes!  I spent an hour writing variations on the theme, trying to
reproduce that warning, and failed.  Thanks for clearing that up :)





^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-11  0:55         ` Dale
@ 2011-08-20 19:21           ` Jeff Cranmer
  2011-08-21 18:55             ` walt
  0 siblings, 1 reply; 18+ messages in thread
From: Jeff Cranmer @ 2011-08-20 19:21 UTC (permalink / raw
  To: gentoo-user

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

>     
> 
> I can see where one would think that but it is often not the case.  I 
> had a compile to fail a few months ago, I had to go waaaaay back to find 
> the original failure.  It was far enough back that I had to copy the 
> whole thing to a editor and use the find feature to find it.  I use 
> Konsole for most of this but I bet it was 7 or 8 screens further back 
> than where it ended up failing.
> 
> I am on a 4 core rig so that may have a bit to do with it but I have ran 
> into the same on my older rig that is single core.  It is amazing how 
> far back the original problem is sometimes.
> 
> May want to consider looking further back or just posting as a 
> attachment or something.
> 
> Dale
> 
> :-)  :-)
> 
Sorry for the long delay.  Attached are the relevant system logs.
Perhaps this will shed some more light on the issue.

Jeff


[-- Attachment #2: plasma-runtime-4.6.5-build.log --]
[-- Type: text/x-log, Size: 27433 bytes --]

^[[32;01m * ^[[39;49;00mPackage:    kde-base/plasma-runtime-4.6.5
^[[32;01m * ^[[39;49;00mRepository: gentoo
^[[32;01m * ^[[39;49;00mMaintainer: kde@gentoo.org
^[[32;01m * ^[[39;49;00mUSE:        amd64 elibc_glibc kernel_linux multilib userland_GNU
^[[32;01m * ^[[39;49;00mFEATURES:   sandbox
>>> Unpacking source...
 ^[[32;01m*^[[0m Unpacking parts of kdebase-runtime-4.6.5.tar.bz2 to /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work ...
tar extract command failed at least partially - continuing anyway
^[[A^[[111C ^[[34;01m[ ^[[32;01mok^[[34;01m ]^[[0m
>>> Source unpacked in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work
>>> Preparing source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
cmake --no-warn-unused-cli -C /var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_common_config.cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDE4_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_rules.cmake  /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5
Not searching for unused variables given on the command line.
loading initial cache file /var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_common_config.cmake
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.7.2 (using /usr/bin/qmake)
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE 
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- Found Automoc4: /usr/bin/automoc4 
-- Found Perl: /usr/bin/perl 
-- Found Phonon: /usr/include 
-- Performing Test _OFFT_IS_64BIT
-- Performing Test _OFFT_IS_64BIT - Success
-- Performing Test HAVE_FPIE_SUPPORT
-- Performing Test HAVE_FPIE_SUPPORT - Success
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL - Success
-- Performing Test __KDE_HAVE_GCC_VISIBILITY
-- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success
-- Found KDE 4.7 include dir: /usr/include
-- Found KDE 4.7 library dir: /usr/lib64
-- Found the KDE4 kconfig_compiler preprocessor: /usr/bin/kconfig_compiler
-- Found automoc4: /usr/bin/automoc4
-- Strigi API needs 'signed char'
-- Found Strigi: /usr/lib64/libstreams.so 
-- Found SharedDesktopOntologies: /usr/share/ontology  (found version "0.7.0", required is "0.5.0")
-- Found Soprano: /usr/include  (found version "2.7.0", required is "2.5.63")
-- Found Nepomuk: /usr/lib64/libnepomuk.so 
-- Could NOT find SLP  (missing:  SLP_LIBRARIES SLP_INCLUDE_DIR) 
-- Found LibAttica: /usr/lib64/libattica.so  (found version "0.2.0", required is "0.1.4")
-- Looking for include files HAVE_SYS_WAIT_H
-- Looking for include files HAVE_SYS_WAIT_H - found
-- Looking for include files HAVE_SYS_TIME_H
-- Looking for include files HAVE_SYS_TIME_H - found

-----------------------------------------------------------------------------
-- The following external packages were located on your system.
-- This installation will have the extra features provided by these packages.
-----------------------------------------------------------------------------
   * Soprano - Support for the Nepomuk semantic desktop system
   * Shared desktop ontologies - Desktop ontologies
   * Nepomuk - Nepomuk Libraries
   * Soprano Virtuoso Backend - Virtuoso storage backend for Soprano
   * Soprano Raptor Parser - RDF parser plugin for Soprano
   * Soprano Redland Backend - Redland storage backend for Soprano
   * libattica - A library to access Open Collaboration Service providers

-----------------------------------------------------------------------------
-- The following OPTIONAL packages could NOT be located on your system.
-- Consider installing them to enable more features from this software.
-----------------------------------------------------------------------------
   * OpenSLP  <http://www.openslp.org/>
     SLP (Service Location Protocol) implementation
     Provides SLP support in the network:/ kioslave.

-----------------------------------------------------------------------------

-- <<< Gentoo configuration >>>
Build type      Gentoo
Install path    /usr
Compiler flags:
C               -O2 -pipe -march=amdfam10  -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common
C++             -O2 -pipe -march=amdfam10  -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden
Linker flags:
Executable      -Wl,--enable-new-dtags -Wl,-O1 -Wl,--as-needed
Module          -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc -Wl,-O1 -Wl,--as-needed
Shared          -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc -Wl,-O1 -Wl,--as-needed

-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build
>>> Source configured.
>>> Compiling source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
make -j7 
[  1%] ^[[35m^[[1mScanning dependencies of target plasma_containment_newspaper_automoc
^[[35m^[[1mScanning dependencies of target plasma-kpart_automoc
^[[0m[  2%] ^[[0m^[[35m^[[1mScanning dependencies of target kcmremotewidgetshelper_automoc
^[[34m^[[1mGenerating linearlayout.moc
^[[0m^[[35m^[[1mScanning dependencies of target actions for org.kde.kcontrol.kcmremotewidgets
^[[0m[  3%] ^[[0m^[[34m^[[1mGenerating declarativetabbar.moc
^[[0m^[[34m^[[1mGenerating framesvgitem_p.moc
^[[0m[  3%] ^[[34m^[[1mGenerating org.kde.kcontrol.kcmremotewidgets.policy
^[[0m[  3%] Built target actions for org.kde.kcontrol.kcmremotewidgets
[  4%] ^[[34m^[[1mGenerating corebindingsplugin.moc
^[[0m^[[34m^[[1mGenerating moc_remotewidgetshelper_p.cpp
^[[0m^[[34m^[[1mGenerating plasmakpartcorona.moc
^[[0m^[[34m^[[1mGenerating appletmovespacer.moc
^[[0m[  5%] ^[[34m^[[1mGenerating applettitlebar.moc
^[[0m[  5%] [  5%] [  6%] Built target kcmremotewidgetshelper_automoc
^[[34m^[[1mGenerating graphicslayoutsbindingsplugin.moc
^[[0m^[[34m^[[1mGenerating graphicswidgetsbindingsplugin.moc
^[[0m[  7%] ^[[34m^[[1mGenerating gridlayout.moc
^[[0m^[[34m^[[1mGenerating dataengineconsumer_p.moc
^[[0m[  8%] ^[[35m^[[1mScanning dependencies of target graphicswidgetsbindingsplugin
^[[34m^[[1mGenerating theme_p.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasma_appletscript_declarative_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[35m^[[1mScanning dependencies of target graphicslayoutsbindingsplugin
^[[34m^[[1mGenerating appletscontainer.moc
^[[0m^[[34m^[[1mGenerating appletsview.moc
^[[0m^[[0m[  8%] ^[[34m^[[1mGenerating appletoverlay.moc
^[[0m^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/graphicslayoutsbindingsplugin.o
^[[0m^[[34m^[[1mGenerating dragcountdown.moc
^[[0m^[[34m^[[1mGenerating newspaper.moc
^[[0m^[[0m[  9%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicswidgets/CMakeFiles/graphicswidgetsbindingsplugin.dir/graphicswidgetsbindingsplugin.o
^[[0m^[[35m^[[1mScanning dependencies of target plasma_appletscript_simple_javascript_automoc
^[[0m^[[34m^[[1mGenerating engineaccess.moc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m[ 10%] ^[[34m^[[1mGenerating datamodel.moc
^[[0m^[[34m^[[1mGenerating animationgroup.moc
^[[0m^[[34m^[[1mGenerating plasmakpart.moc
^[[0m^[[34m^[[1mGenerating filedialogproxy.moc
^[[0m[ 10%] Built target plasma_containment_newspaper_automoc
[ 11%] ^[[34m^[[1mGenerating datasource_p.moc
^[[0m^[[34m^[[1mGenerating filedialogproxy.moc
^[[0m[ 12%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicswidgets/CMakeFiles/graphicswidgetsbindingsplugin.dir/declarativetabbar.o
^[[0m[ 13%] ^[[34m^[[1mGenerating layouttemplatepackagestructure.moc
^[[0m^[[34m^[[1mGenerating svgitem_p.moc
^[[0m[ 14%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/gridlayout.o
^[[0m^[[34m^[[1mGenerating widget.moc
^[[0m^[[35m^[[1mScanning dependencies of target corebindingsplugin
^[[34m^[[1mGenerating dataenginereceiver.moc
^[[0m^[[34m^[[1mGenerating dataenginereceiver.moc
^[[0m^[[34m^[[1mGenerating plasmakpartview.moc
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m[ 15%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/linearlayout.o
^[[0m^[[34m^[[1mGenerating declarativeappletscript.moc
^[[0m^[[34m^[[1mGenerating themedsvg.moc
^[[0m^[[34m^[[1mGenerating scriptengine.moc
^[[0m[ 15%] Built target plasma-kpart_automoc
^[[35m^[[1mScanning dependencies of target plasma_dataenginescript_javascript_automoc
^[[0m^[[34m^[[1mGenerating appletinterface.moc
^[[0m^[[34m^[[1mGenerating javascriptdataengine.moc
^[[0m^[[34m^[[1mGenerating themedsvg.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasma_packagestructure_javascriptaddon_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[0m[ 16%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/corebindingsplugin.o
^[[0m^[[34m^[[1mGenerating moc_bytearrayprototype.cpp
^[[0m^[[34m^[[1mGenerating javascriptservice.moc
^[[0m^[[34m^[[1mGenerating appletinterface.moc
^[[0m^[[34m^[[1mGenerating moc_simplejavascriptapplet.cpp
^[[0m[ 16%] Built target plasma_packagestructure_javascriptaddon_automoc
[ 17%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/dataengineconsumer.o
^[[0m^[[34m^[[1mGenerating moc_bytearrayprototype.cpp
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[34m^[[1mGenerating moc_abstractjsappletscript.cpp
^[[0m^[[34m^[[1mGenerating moc_abstractjsappletscript.cpp
^[[0m^[[31m^[[1mLinking CXX shared library ../../../lib/libgraphicslayoutsbindingsplugin.so
^[[0m[ 17%] Built target plasma_dataenginescript_javascript_automoc
[ 18%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/theme.o
^[[0mIn file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/corebindingsplugin.cpp:22:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/corebindingsplugin.h:29: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/KDE/Plasma/../../plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
[ 18%] Built target plasma_appletscript_simple_javascript_automoc
[ 19%] [ 19%] Built target plasma_appletscript_declarative_automoc
^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/datamodel.o
^[[0m^[[35m^[[1mScanning dependencies of target plasma_runnerscript_javascript_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[31m^[[1mLinking CXX shared library ../../../lib/libgraphicswidgetsbindingsplugin.so
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/dataengineconsumer.cpp:107: warning: unused parameter 'location'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/dataengineconsumer.cpp:107: warning: unused parameter 'name'
^[[34m^[[1mGenerating javascriptrunner.moc
^[[0m[ 19%] Built target graphicslayoutsbindingsplugin
[ 20%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/datasource.o
^[[0mmake[2]: *** [plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/corebindingsplugin.o] Error 1
make[2]: *** Waiting for unfinished jobs....
^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasmapkg_automoc
^[[0m[ 20%] Built target plasmapkg_automoc
^[[35m^[[1mScanning dependencies of target plasma_containment_newspaper
^[[35m^[[1mScanning dependencies of target plasma-kpart
[ 20%] Built target plasma_runnerscript_javascript_automoc
^[[35m^[[1mScanning dependencies of target kcmremotewidgetshelper
^[[35m^[[1mScanning dependencies of target plasma_appletscript_declarative
[ 20%] Built target graphicswidgetsbindingsplugin
^[[35m^[[1mScanning dependencies of target plasma_appletscript_simple_javascript
^[[0m[ 21%] ^[[32mBuilding CXX object plasma/remotewidgetshelper/CMakeFiles/kcmremotewidgetshelper.dir/kcmremotewidgetshelper_automoc.o
^[[0m[ 22%] ^[[32mBuilding CXX object plasma/remotewidgetshelper/CMakeFiles/kcmremotewidgetshelper.dir/remotewidgetshelper.o
^[[0m^[[31m^[[1mLinking CXX executable kcmremotewidgetshelper
^[[0m^[[0m[ 23%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasma-kpart_automoc.o
^[[0m^[[0m[ 24%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/layouttemplatepackagestructure.o
^[[0m[ 25%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/plasma_containment_newspaper_automoc.o
^[[0m[ 26%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/newspaper.o
^[[0m[ 27%] [ 27%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/rect.o
^[[0mBuilt target kcmremotewidgetshelper
[ 28%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletoverlay.o
^[[0mmake[1]: *** [plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 28%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletmovespacer.o
^[[0m[ 28%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/scriptengine.o
^[[0m[ 29%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/widget.o
^[[0m[ 30%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/applettitlebar.o
^[[0m[ 31%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpartcorona.o
^[[0m^[[0m[ 32%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasma_appletscript_declarative_automoc.o
^[[0m^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/applettitlebar.cpp:48: warning: unused parameter 'widget'
[ 33%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasma_appletscript_simple_javascript_automoc.o
^[[0m[ 34%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/common/javascriptaddonpackagestructure.o
^[[0m[ 35%] [ 36%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletscontainer.o
^[[0m^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletsview.o
^[[0m[ 37%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/common/javascriptaddonpackagestructure.o
^[[0m[ 38%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/common/declarativescriptenv.o
^[[0m[ 39%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpartview.o
^[[0m[ 39%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/declarative/packageaccessmanager.o
^[[0m[ 40%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/common/jsscriptenv.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/appletsview.cpp:479: warning: unused parameter 'event'
[ 41%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/abstractjsappletscript.o
^[[0m[ 42%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpart.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp:40: warning: unused parameter 'data'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp:40: warning: unused parameter 'maxSize'
[ 43%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/appletauthorization.o
^[[0m[ 44%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/jsappletinterface.o
^[[0m[ 45%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/dragcountdown.o
^[[0m[ 46%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/declarative/packageaccessmanagerfactory.o
^[[0m[ 47%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/abstractjsappletscript.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/dragcountdown.cpp:79: warning: unused parameter 'option'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/dragcountdown.cpp:79: warning: unused parameter 'widget'
^[[31m^[[1mLinking CXX shared module ../../../lib/plasma_containment_newspaper.so
^[[0m^[[31m^[[1mLinking CXX shared module ../../lib/plasma-kpart.so
^[[0m[ 47%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/simplejavascriptapplet.o
^[[0m[ 48%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/themedsvg.o
^[[0m[ 49%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/appletauthorization.o
^[[0m[ 50%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/appletinterface.o
^[[0m[ 50%] Built target plasma_containment_newspaper
[ 51%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/declarativeappletscript.o
^[[0m[ 52%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/simplebindings/animationgroup.o
^[[0m[ 52%] Built target plasma-kpart
[ 53%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/simplebindings/anchorlayout.o
^[[0m[ 54%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/engineaccess.o
^[[0mIn file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp:65:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
[ 55%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/themedsvg.o
^[[0mmake[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/simplejavascriptapplet.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 55%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/bytearrayclass.o
^[[0m[ 56%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/bytearrayprototype.o
^[[0mmake[1]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/all] Error 2
[ 57%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataengine.o
^[[0m[ 58%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataenginereceiver.o
^[[0m[ 59%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/filedialogproxy.o
^[[0m[ 60%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/i18n.o
^[[0m[ 61%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/icon.o
^[[0m[ 61%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/qscriptbookkeeping.o
^[[0m[ 62%] In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.cpp:19:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/url.o
^[[0mmake[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataengine.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataenginereceiver.cpp:23:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
make[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataenginereceiver.o] Error 1
In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/qscriptnonguibookkeeping.cpp:26,
                 from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp:144:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
make[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/qscriptbookkeeping.o] Error 1
make[1]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/all] Error 2
make: *** [all] Error 2
 ^[[31;01m*^[[0m ERROR: kde-base/plasma-runtime-4.6.5 failed (compile phase):
 ^[[31;01m*^[[0m   emake failed
 ^[[31;01m*^[[0m 
 ^[[31;01m*^[[0m If you need support, post the output of 'emerge --info =kde-base/plasma-runtime-4.6.5',
 ^[[31;01m*^[[0m the complete build log and the output of 'emerge -pqv =kde-base/plasma-runtime-4.6.5'.
 ^[[31;01m*^[[0m The complete build log is located at '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/build.log'.
 ^[[31;01m*^[[0m The ebuild environment file is located at '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/environment'.
 ^[[31;01m*^[[0m S: '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5'

[-- Attachment #3: plasma-runtime-4.6.5-environment --]
[-- Type: text/plain, Size: 183673 bytes --]

declare -x ABI="amd64"
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare -- BASE_EXPF="src_unpack src_compile src_install src_prepare src_configure"
declare -x BUILD_TYPE="release"
declare -x CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita tables words"
declare -x CAMERAS="ptp2"
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CFLAGS="-O2 -pipe -march=amdfam10"
declare -x CFLAGS_default
declare -x CFLAGS_x86="-m32"
declare -x CHOST="x86_64-pc-linux-gnu"
declare -x CHOST_amd64="x86_64-pc-linux-gnu"
declare -x CHOST_default="x86_64-pc-linux-gnu"
declare -x CHOST_x86="i686-pc-linux-gnu"
declare -- CMAKE_BINARY="cmake"
declare -- CMAKE_BUILD_DIR="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
declare -- CMAKE_BUILD_TYPE="Gentoo"
declare -- CMAKE_EXPF="src_compile src_test src_install src_configure"
declare -- CMAKE_MIN_VERSION="2.8.1"
declare -- CMAKE_REMOVE_MODULES="yes"
declare -- CMAKE_REMOVE_MODULES_LIST="FindBLAS FindLAPACK"
declare -- CMAKE_REQUIRED="always"
declare -- CMAKE_USE_DIR="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5"
declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"
declare -x CPPFLAGS=" -DQT_NO_DEBUG -DNDEBUG"
declare -- CPPUNIT_REQUIRED="never"
declare -x CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CXXFLAGS="-O2 -pipe -march=amdfam10"
declare -- DECLARATIVE_REQUIRED="always"
declare -x DEFAULT_ABI="amd64"
declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare setup test unpack"
declare DEPEND="  >=sys-apps/sed-4 >=dev-util/cmake-2.8.1 userland_GNU? ( >=sys-apps/findutils-4.4.0 )  
	dev-util/automoc
	dev-util/pkgconfig
	!aqua? (
		>=x11-libs/libXtst-1.1.0
		x11-proto/xf86vidmodeproto
	)
  
	>=x11-libs/qt-declarative-4.7.0:4
 
	dev-lang/perl
	>=x11-libs/qt-core-4.7.0:4[qt3support,ssl]
	>=x11-libs/qt-gui-4.7.0:4[accessibility,dbus]
	>=x11-libs/qt-qt3support-4.7.0:4[accessibility,kde]
	>=x11-libs/qt-script-4.7.0:4
	>=x11-libs/qt-sql-4.7.0:4[qt3support]
	>=x11-libs/qt-svg-4.7.0:4
	>=x11-libs/qt-test-4.7.0:4
	>=x11-libs/qt-webkit-4.7.0:4[kde]
	!aqua? (
		x11-libs/libXext
		x11-libs/libXt
		x11-libs/libXxf86vm
		x11-libs/libXcomposite
	)
  >=kde-base/kdelibs-4.6.5:4[aqua=]   >=media-libs/qimageblitz-0.0.4"
declare DESCRIPTION="Script engine and package tool for plasma"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x EAPI="4"
declare -- EKDEDIR="/usr"
declare -x ELIBC="glibc"
declare -- EPATCH_EXCLUDE=""
declare -- EPATCH_FORCE="no"
declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
declare -- EPATCH_OPTS="-g0 -E --no-backup-if-mismatch"
declare -- EPATCH_SINGLE_MSG=""
declare -- EPATCH_SOURCE="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/patch"
declare -- EPATCH_SUFFIX="patch.bz2"
declare -x EXEOPTIONS="-m0755"
declare -x FCFLAGS=""
declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
declare -x FFLAGS=""
declare -x GCC_SPECS=""
declare -- GCONFTOOL_BIN="/usr/bin/gconftool-2"
declare -x GDK_USE_XFT="1"
declare -- GLIB_COMPILE_SCHEMAS="/usr/bin/glib-compile-schemas"
declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx"
declare -x GRUB_PLATFORMS=""
declare -x GSETTINGS_BACKEND="gconf"
declare -- GTK_UPDATE_ICON_CACHE="/usr/bin/gtk-update-icon-cache"
declare HOMEPAGE="http://www.kde.org/"
declare -x INHERITED=" toolchain-funcs multilib portability eutils versionator kde4-functions fdo-mime gnome2-utils base virtualx flag-o-matic cmake-utils kde4-base kde4-meta"
declare -x INPUT_DEVICES="evdev synaptics"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare IUSE="debug   aqua kdeenablefinal"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -- KDEBASE="kde-base"
declare -- KDEDIR="/usr"
declare -- KDEMETA_EXPF="pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm"
declare -- KDE_HANDBOOK="never"
declare -- KDE_MINIMAL="4.6.5"
declare -- KDE_REQUIRED="always"
declare -- KDE_SCM="svn"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux"
declare -- KMCOMPILEONLY="
							cmake/modules/"
declare -- KMEXTRACTONLY="
				config-runtime.h.cmake"
declare -- KMMODULE="plasma"
declare -- KMNAME="kdebase-runtime"
declare -- KMTARPARAMS=" --bzip2"
declare -x LCD_DEVICES=""
declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
declare -x LDFLAGS_default
declare -x LDFLAGS_x86="-m elf_i386"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_amd64_fbsd="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc="lib32"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBDIR_s390="lib32"
declare -x LIBDIR_s390x="lib64"
declare -x LIBDIR_sparc32="lib32"
declare -x LIBDIR_sparc64="lib64"
declare -x LIBDIR_x86="lib32"
declare -x LIBDIR_x86_fbsd="lib32"
declare -x LIBOPTIONS="-m0644"
declare -x LICENSE="GPL-2"
declare -x LIRC_DEVICES="mceusb"
declare -x MAKEOPTS="-j7"
declare -x MULTILIB_ABIS="amd64 x86"
declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)"
declare -- MULTIMEDIA_REQUIRED="never"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x OPENGL_PROFILE="nvidia"
declare -- OPENGL_REQUIRED="never"
declare -x PATH="/usr/lib64/portage/bin/ebuild-helpers/4:/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5"
declare PDEPEND=" "
declare -x PHP_TARGETS=""
declare -x PKG_CONFIG_PATH="/usr/lib64/pkgconfig"
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png"
declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")'
declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/plasma-runtime-4.6.5/html")'
declare -- PREFIX="/usr"
declare -x PRELINK_PATH_MASK="/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so"
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND"
declare -x PROPERTIES=""
declare -x PROVIDE=""
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -- QTEST_COLORED="1"
declare -- QTHELP_REQUIRED="never"
declare -- QT_MINIMAL="4.7.0"
declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins/"
declare RDEPEND=" !<kde-base/plasma-workspace-4.5.60:4 !<kde-base/kdelibs-4.5.60:4     >=kde-base/oxygen-icons-4.6.5:4[aqua=]  
	>=x11-libs/qt-declarative-4.7.0:4
 
	dev-lang/perl
	>=x11-libs/qt-core-4.7.0:4[qt3support,ssl]
	>=x11-libs/qt-gui-4.7.0:4[accessibility,dbus]
	>=x11-libs/qt-qt3support-4.7.0:4[accessibility,kde]
	>=x11-libs/qt-script-4.7.0:4
	>=x11-libs/qt-sql-4.7.0:4[qt3support]
	>=x11-libs/qt-svg-4.7.0:4
	>=x11-libs/qt-test-4.7.0:4
	>=x11-libs/qt-webkit-4.7.0:4[kde]
	!aqua? (
		x11-libs/libXext
		x11-libs/libXt
		x11-libs/libXxf86vm
		x11-libs/libXcomposite
	)
  >=kde-base/kdelibs-4.6.5:4[aqua=]   >=media-libs/qimageblitz-0.0.4"
declare REQUIRED_USE=" "
declare -x RESTRICT=""
declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
declare -x RUBY_TARGETS=""
declare -x S="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PID="5533"
declare -x SANDBOX_PREDICT="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/homedir:/dev/crypto:/var/cache/fontconfig"
declare -x SANDBOX_READ="/:/dev/stdin:/var/tmp"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/kde-base/plasma-runtime-4.6.5/homedir/.bash_history"
declare -- SCROLLKEEPER_DIR="/var/lib/scrollkeeper"
declare -- SCROLLKEEPER_UPDATE_BIN="/usr/bin/scrollkeeper-update"
declare -x SLOT="4"
declare SRC_URI="mirror://kde/stable/4.6.5/src/kdebase-runtime-4.6.5.tar.bz2"
declare -x STAGE1_USE="multilib nptl nptlonly unicode"
declare -x SYMLINK_LIB="yes"
declare -x USE="amd64 elibc_glibc kernel_linux multilib userland_GNU"
declare -x USERLAND="GNU"
declare -x VIDEO_CARDS=""
declare -- VIRTUALX_COMMAND="emake"
declare -- VIRTUALX_DEPEND="
	!prefix? ( x11-base/xorg-server[xvfb] )
	x11-apps/xhost
"
declare -- VIRTUALX_REQUIRED="manual"
declare -- WANT_CMAKE="always"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_CONFIG_HOME="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/usr/share/gdm"
declare -x XSESSION="KDE-4"
declare -x XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
declare -- _="PKG_INSTALL_MASK"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -a __ESHOPTS_SAVE__='()'
declare -- ___ECLASS_RECUR_MULTILIB="yes"
declare -- ___ECLASS_RECUR_TOOLCHAIN_FUNCS="yes"
declare -a mycmakeargs='([0]="-DKDE4_BUILD_TESTS=OFF" [1]="-DCMAKE_INSTALL_PREFIX=/usr" [2]="-DSYSCONF_INSTALL_DIR=/etc")'
declare -- qtwebkitusedeps="[kde]"
Xeconf () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    VIRTUALX_COMMAND="econf" virtualmake "$@"
}
Xemake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    VIRTUALX_COMMAND="emake" virtualmake "$@"
}
Xmake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    ewarn "QA: you should not execute make directly";
    ewarn "QA: rather execute Xemake -j1 if you have issues with parallel make";
    VIRTUALX_COMMAND="emake -j1" virtualmake "$@"
}
__list_needed_subdirectories () 
{ 
    local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist;
    kmextra="${KMEXTRA}";
    [[ ${1} != fatal ]] && kmextra+=" ${KMEXTRA_NONFATAL}";
    for i in ${kmextra};
    do
        kmextra_expanded+=" ${i}";
        j=$(dirname ${i});
        while [[ ${j} != "." ]]; do
            kmextra_expanded+=" ${j}/CMakeLists.txt";
            j=$(dirname ${j});
        done;
    done;
    if [[ -n ${KMMODULE} ]]; then
        kmmodule_expanded="${KMMODULE}";
        j=$(dirname ${KMMODULE});
        while [[ ${j} != "." ]]; do
            kmmodule_expanded+=" ${j}/CMakeLists.txt";
            j=$(dirname ${j});
        done;
    fi;
    for i in ${KMCOMPILEONLY};
    do
        kmcompileonly_expanded+=" ${i}";
        j=$(dirname ${i});
        while [[ ${j} != "." ]]; do
            kmcompileonly_expanded+=" ${j}/CMakeLists.txt";
            j=$(dirname ${j});
        done;
    done;
    debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmextra_expanded: ${kmextra_expanded}";
    debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmmodule_expanded:  ${kmmodule_expanded}";
    debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmcompileonly_expanded: ${kmcompileonly_expanded}";
    for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} ${KMEXTRACTONLY};
    do
        extractlist+=" ${topdir}${i}";
    done;
    echo ${extractlist}
}
__versionator__test_version_compare () 
{ 
    eshopts_push -s extglob;
    local lt=1 eq=2 gt=3 p q;
    function __versionator__test_version_compare_t () 
    { 
        version_compare "${1}" "${3}";
        local r=$?;
        [[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})"
    };
    echo "
		0             $lt 1
		1             $lt 2
		2             $gt 1
		2             $eq 2
		0             $eq 0
		10            $lt 20
		68            $eq 068
		068           $gt 67
		068           $lt 69

		1.0           $lt 2.0
		2.0           $eq 2.0
		2.0           $gt 1.0

		1.0           $gt 0.0
		0.0           $eq 0.0
		0.0           $lt 1.0

		0.1           $lt 0.2
		0.2           $eq 0.2
		0.3           $gt 0.2

		1.2           $lt 2.1
		2.1           $gt 1.2

		1.2.3         $lt 1.2.4
		1.2.4         $gt 1.2.3

		1.2.0         $gt 1.2
		1.2.1         $gt 1.2
		1.2           $lt 1.2.1

		1.2b          $eq 1.2b
		1.2b          $lt 1.2c
		1.2b          $gt 1.2a
		1.2b          $gt 1.2
		1.2           $lt 1.2a

		1.3           $gt 1.2a
		1.3           $lt 1.3a

		1.0_alpha7    $lt 1.0_beta7
		1.0_beta      $lt 1.0_pre
		1.0_pre5      $lt 1.0_rc2
		1.0_rc2       $lt 1.0

		1.0_p1        $gt 1.0
		1.0_p1-r1     $gt 1.0_p1

		1.0_alpha6-r1 $gt 1.0_alpha6
		1.0_beta6-r1  $gt 1.0_alpha6-r2

		1.0_pre1      $lt 1.0_p1

		1.0p          $gt 1.0_p1
		1.0r          $gt 1.0-r1
		1.6.15        $gt 1.6.10-r2
		1.6.10-r2     $lt 1.6.15

	" | while read a b c; do
        [[ -z "${a}${b}${c}" ]] && continue;
        __versionator__test_version_compare_t "${a}" "${b}" "${c}";
    done;
    for q in "alpha beta pre rc=${lt};${gt}" "p=${gt};${lt}";
    do
        for p in ${q%%=*};
        do
            local c=${q##*=};
            local alt=${c%%;*} agt=${c##*;};
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}";
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}1";
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}068";
            __versionator__test_version_compare_t "2.0_${p}" $alt "2.0";
            __versionator__test_version_compare_t "2.0_${p}1" $alt "2.0";
            __versionator__test_version_compare_t "2.0_${p}068" $alt "2.0";
            __versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}";
            __versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1";
            __versionator__test_version_compare_t "666_${p}3" $gt "666_${p}";
            __versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8";
            __versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7";
            __versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6";
            __versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9";
            __versionator__test_version_compare_t "1_${p}7-r0" $eq "1_${p}7";
            __versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r1";
            __versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r01";
            __versionator__test_version_compare_t "1_${p}7-r01" $eq "1_${p}7-r1";
            __versionator__test_version_compare_t "1_${p}8-r1" $gt "1_${p}7-r100";
            __versionator__test_version_compare_t "1_${p}_alpha" $lt "1_${p}_beta";
        done;
    done;
    for p in "-r" "_p";
    do
        __versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2";
        __versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1";
        __versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2";
        __versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3";
    done;
    __versionator__test_version_compare_t "6.0" $gt "5.0";
    __versionator__test_version_compare_t "5.0" $gt "5";
    __versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0";
    __versionator__test_version_compare_t "1.0-r1" $gt "1.0";
    __versionator__test_version_compare_t "999999999999999999999999999999" $gt "999999999999999999999999999998";
    __versionator__test_version_compare_t "1.0.0" $gt "1.0";
    __versionator__test_version_compare_t "1.0.0" $gt "1.0b";
    __versionator__test_version_compare_t "1b" $gt "1";
    __versionator__test_version_compare_t "1b_p1" $gt "1_p1";
    __versionator__test_version_compare_t "1.1b" $gt "1.1";
    __versionator__test_version_compare_t "12.2.5" $gt "12.2b";
    __versionator__test_version_compare_t "4.0" $lt "5.0";
    __versionator__test_version_compare_t "5" $lt "5.0";
    __versionator__test_version_compare_t "1.0_pre2" $lt "1.0_p2";
    __versionator__test_version_compare_t "1.0_alpha2" $lt "1.0_p2";
    __versionator__test_version_compare_t "1.0_alpha1" $lt "1.0_beta1";
    __versionator__test_version_compare_t "1.0_beta3" $lt "1.0_rc3";
    __versionator__test_version_compare_t "1.001000000000000000001" $lt "1.001000000000000000002";
    __versionator__test_version_compare_t "1.00100000000" $lt "1.0010000000000000001";
    __versionator__test_version_compare_t "999999999999999999999999999998" $lt "999999999999999999999999999999";
    __versionator__test_version_compare_t "1.01" $lt "1.1";
    __versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1";
    __versionator__test_version_compare_t "1.0" $lt "1.0-r1";
    __versionator__test_version_compare_t "1.0" $lt "1.0.0";
    __versionator__test_version_compare_t "1.0b" $lt "1.0.0";
    __versionator__test_version_compare_t "1_p1" $lt "1b_p1";
    __versionator__test_version_compare_t "1" $lt "1b";
    __versionator__test_version_compare_t "1.1" $lt "1.1b";
    __versionator__test_version_compare_t "12.2b" $lt "12.2.5";
    __versionator__test_version_compare_t "4.0" $eq "4.0";
    __versionator__test_version_compare_t "1.0" $eq "1.0";
    __versionator__test_version_compare_t "1.0-r0" $eq "1.0";
    __versionator__test_version_compare_t "1.0" $eq "1.0-r0";
    __versionator__test_version_compare_t "1.0-r0" $eq "1.0-r0";
    __versionator__test_version_compare_t "1.0-r1" $eq "1.0-r1";
    __versionator__test_version_compare_t "1" $lt "2";
    __versionator__test_version_compare_t "1.0_alpha" $lt "1.0_pre";
    __versionator__test_version_compare_t "1.0_beta" $gt "1.0_alpha";
    __versionator__test_version_compare_t "0" $lt "0.0";
    __versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1";
    __versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0";
    __versionator__test_version_compare_t "1.0" $lt "1.0-r1";
    __versionator__test_version_compare_t "1.0-r1" $gt "1.0";
    __versionator__test_version_compare_t "1_p1" $lt "1b_p1";
    __versionator__test_version_compare_t "1b" $gt "1";
    __versionator__test_version_compare_t "1.1b" $gt "1.1";
    __versionator__test_version_compare_t "12.2b" $gt "12.2";
    __versionator__test_version_compare_t "1.0" $gt "1";
    __versionator__test_version_compare_t "1" $lt "1.0";
    __versionator__test_version_compare_t "1.0_alpha" $gt "1_alpha";
    __versionator__test_version_compare_t "1.0_alpha" $gt "1";
    __versionator__test_version_compare_t "1.0_alpha" $lt "1.0";
    __versionator__test_version_compare_t "1.2.0.0_alpha7-r4" $gt "1.2_alpha7-r4";
    __versionator__test_version_compare_t "0001" $eq "1";
    __versionator__test_version_compare_t "01" $eq "001";
    __versionator__test_version_compare_t "0001.1" $eq "1.1";
    __versionator__test_version_compare_t "01.01" $eq "1.01";
    __versionator__test_version_compare_t "1.010" $eq "1.01";
    __versionator__test_version_compare_t "1.00" $eq "1.0";
    __versionator__test_version_compare_t "1.0100" $eq "1.010";
    __versionator__test_version_compare_t "1" $eq "1-r0";
    __versionator__test_version_compare_t "1-r00" $eq "1-r0";
    eshopts_pop
}
_calculate_live_repo () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    SRC_URI="";
    case ${KDE_SCM} in 
        svn)
            local branch_prefix;
            case ${PV} in 
                9999*)
                    branch_prefix="trunk/KDE"
                ;;
                *)
                    branch_prefix="branches/KDE/$(get_kde_version)";
                    ESVN_PROJECT_SUFFIX="-${PV}"
                ;;
            esac;
            ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde};
            if [[ -n ${KMNAME} ]]; then
                ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}";
                if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
                    KMMODULE="${PN}";
                fi;
                case ${KMNAME} in 
                    kdebase-*)
                        ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
                    ;;
                    kdelibs-*)
                        ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
                    ;;
                    kdereview*)
                        ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
                    ;;
                    kdesupport)
                        ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}";
                        ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
                    ;;
                    kde*)
                        ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
                    ;;
                    extragear* | playground*)
                        ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}";
                        ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
                    ;;
                    koffice)
                        ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
                    ;;
                    *)
                        ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
                    ;;
                esac;
            else
                ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}";
                ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}";
            fi;
            [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
        ;;
        git)
            local _kmname;
            EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org};
            if [[ -n ${EGIT_REPONAME} ]]; then
                _kmname=${EGIT_REPONAME};
            else
                if [[ -n ${KMNAME} ]]; then
                    _kmname=${KMNAME};
                else
                    _kmname=${PN};
                fi;
            fi;
            case ${PV} in 
                9999*)

                ;;
                *)
                    case ${_kmname} in 
                        blinken | cantor | kalgebra | kalzium | kanagram | kbruch | kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs | kgeography | khangman | kig | kiten | klettres | kmplot | kstars | ktouch | kturtle | kwordquiz | libkdeedu | mobipocket | okular | parley | rocs | step)
                            EGIT_BRANCH="$(get_kde_version)"
                        ;;
                        marble)
                            EGIT_BRANCH="kde-$(get_kde_version)"
                        ;;
                        gwenview | kamera | kate | kcolorchooser | kde-baseapps | kde-runtime | kde-workspace | kgamma | kdegraphics-strigi-analyzer | kdegraphics-thumbnailers | kdelibs | kimono | kolourpaint | konsole | korundum | kross-interpreters | kruler | ksaneplugin | ksnapshot | libkdcraw | libkexiv2 | libkipi | libksane | perlqt | perlkde | pykde4 | qtruby | qyoto | smokegen | smokekde | smokeqt | svgpart)
                            EGIT_BRANCH="KDE/$(get_kde_version)"
                        ;;
                        *)
                            ewarn "Unknown KMNAME ${_kmname}: Guessing branch name 'KDE/$(get_kde_version)'";
                            EGIT_BRANCH="KDE/$(get_kde_version)"
                        ;;
                    esac
                ;;
            esac;
            EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}";
            debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}";
            debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
        ;;
    esac
}
_calculate_src_uri () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local _kmname _kmname_pv;
    [[ -n ${KDEBASE} ]] || return;
    if [[ -n ${KMNAME} ]]; then
        case ${KMNAME} in 
            kdebase-apps)
                _kmname="kdebase"
            ;;
            *)
                _kmname="${KMNAME}"
            ;;
        esac;
    else
        _kmname=${PN};
    fi;
    _kmname_pv="${_kmname}-${PV}";
    case ${KDEBASE} in 
        kde-base)
            case ${PV} in 
                4.[456].8[05] | 4.[456].9[023568])
                    SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2";
                    if ! version_is_at_least 4.6.80 ${PV}; then
                        [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2";
                    fi
                ;;
                *)
                    SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2";
                    if ! version_is_at_least 4.6.80 ${PV}; then
                        [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2";
                    fi
                ;;
            esac
        ;;
        koffice)
            case ${PV} in 
                2.[1234].[6-9]*)
                    SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2"
                ;;
                *)
                    SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2"
                ;;
            esac
        ;;
        kdevelop)
            SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
        ;;
    esac
}
_cdrom_locate_file_on_cd () 
{ 
    local mline="";
    local showedmsg=0 showjolietmsg=0;
    while [[ -z ${CDROM_ROOT} ]]; do
        local i=0;
        local -a cdset=(${*//:/ });
        if [[ -n ${CDROM_SET} ]]; then
            cdset=(${cdset[${CDROM_SET}]});
        fi;
        while [[ -n ${cdset[${i}]} ]]; do
            local dir=$(dirname ${cdset[${i}]});
            local file=$(basename ${cdset[${i}]});
            local point= node= fs= foo=;
            while read point node fs foo; do
                [[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
                point=${point//\040/ };
                [[ ! -d ${point}/${dir} ]] && continue;
                [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
                export CDROM_ROOT=${point};
                export CDROM_SET=${i};
                export CDROM_MATCH=${cdset[${i}]};
                return;
            done <<< "$(get_mounts)";
            ((++i));
        done;
        echo;
        if [[ ${showedmsg} -eq 0 ]]; then
            if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
                if [[ -z ${CDROM_NAME} ]]; then
                    einfo "Please insert+mount the cdrom for ${PN} now !";
                else
                    einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
                fi;
            else
                if [[ -z ${CDROM_NAME_1} ]]; then
                    einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
                else
                    local var="CDROM_NAME_${CDROM_CURRENT_CD}";
                    einfo "Please insert+mount the ${!var} cdrom now !";
                fi;
            fi;
            showedmsg=1;
        fi;
        einfo "Press return to scan for the cd again";
        einfo "or hit CTRL+C to abort the emerge.";
        echo;
        if [[ ${showjolietmsg} -eq 0 ]]; then
            showjolietmsg=1;
        else
            ewarn "If you are having trouble with the detection";
            ewarn "of your CD, it is possible that you do not have";
            ewarn "Joliet support enabled in your kernel.  Please";
            ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
            ebeep 5;
        fi;
        read || die "something is screwed with your system";
    done
}
_change_cmakelists_parent_dirs () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local _olddir _dir;
    _dir="${S}"/${1};
    until [[ ${_dir} == ${S} ]]; do
        _olddir=$(basename "${_dir}");
        _dir=$(dirname "${_dir}");
        debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}";
        if [[ -f ${_dir}/CMakeLists.txt ]]; then
            sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" -i ${_dir}/CMakeLists.txt || die "${LINENO}: died in ${FUNCNAME} while processing ${_dir}";
        fi;
    done
}
_check_build_dir () 
{ 
    : ${CMAKE_USE_DIR:=${S}};
    if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
        CMAKE_BUILD_DIR="${CMAKE_USE_DIR}";
    else
        : ${CMAKE_BUILD_DIR:=${WORKDIR}/${P}_build};
    fi;
    echo ">>> Working in BUILD_DIR: \"$CMAKE_BUILD_DIR\""
}
_enable_selected_linguas_dir () 
{ 
    local lingua linguas sr_mess wp;
    local dir=${1};
    [[ -d ${dir} ]] || die "linguas dir \"${dir}\" does not exist";
    comment_all_add_subdirectory "${dir}";
    pushd "${dir}" > /dev/null;
    sr_mess="sr@latn sr@latin sr@Latin";
    for wp in ${sr_mess};
    do
        [[ -e ${wp}.po ]] && mv "${wp}.po" "sr@Latn.po";
        if [[ -d ${wp} ]]; then
            mv "${wp}" "sr@Latn";
            sed -i -e "s:${wp}:sr@Latn:g" CMakeLists.txt;
        fi;
    done;
    for lingua in ${KDE_LINGUAS};
    do
        if [[ -e ${lingua}.po ]]; then
            mv "${lingua}.po" "${lingua}.po.old";
        fi;
    done;
    for lingua in ${KDE_LINGUAS};
    do
        if use linguas_${lingua}; then
            if [[ -d ${lingua} ]]; then
                linguas="${linguas} ${lingua}";
                sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed.";
            fi;
            if [[ -e ${lingua}.po.old ]]; then
                linguas="${linguas} ${lingua}";
                mv "${lingua}.po.old" "${lingua}.po";
            fi;
        fi;
    done;
    [[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}";
    popd > /dev/null
}
_execute_optionaly () 
{ 
    local phase="$1";
    shift;
    if [[ ${WANT_CMAKE} = always ]]; then
        enable_cmake-utils_${phase} "$@";
    else
        use ${WANT_CMAKE} && enable_cmake-utils_${phase} "$@";
    fi
}
_filter-hardened () 
{ 
    local f;
    for f in "$@";
    do
        case "${f}" in 
            -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
                gcc-specs-pie || continue;
                is-flagq -nopie || append-flags -nopie
            ;;
            -fstack-protector)
                gcc-specs-ssp || continue;
                is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
            ;;
            -fstack-protector-all)
                gcc-specs-ssp-to-all || continue;
                is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
            ;;
            -fno-strict-overflow)
                gcc-specs-nostrict || continue;
                is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
            ;;
        esac;
    done
}
_filter-var () 
{ 
    local f x VAR VAL;
    declare -a new;
    VAR=$1;
    shift;
    eval VAL=\${${VAR}};
    for f in ${VAL};
    do
        for x in "$@";
        do
            [[ ${f} == ${x} ]] && continue 2;
        done;
        eval new\[\${\#new\[@]}]=\${f};
    done;
    eval export ${VAR}=\${new\[*]}
}
_gcc-install-dir () 
{ 
    echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null |		awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw () 
{ 
    local cc=$(tc-getCC);
    local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
    ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN	{ pspec=""; spec=""; outside=1 }
$1=="*"directive":"  { pspec=spec; spec=""; outside=0; next }
	outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
	spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
	{ spec=spec $0 }
END	{ print spec }';
    return 0
}
_gcc-specs-exists () 
{ 
    [[ -f $(_gcc-install-dir)/$1 ]]
}
_gcc_fullversion () 
{ 
    local ver="$1";
    shift;
    set -- `$(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"`;
    eval echo "$ver"
}
_is_flagq () 
{ 
    local x;
    for x in ${!1};
    do
        [[ ${x} == $2 ]] && return 0;
    done;
    return 1
}
_modify-cmakelists () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    grep -qs "<<< Gentoo configuration >>>" CMakeLists.txt && return 0;
    find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + || die "${LINENO}: failed to disable hardcoded settings";
    cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt  <<-_EOF_

MESSAGE(STATUS "<<< Gentoo configuration >>>
Build type      \${CMAKE_BUILD_TYPE}
Install path    \${CMAKE_INSTALL_PREFIX}
Compiler flags:
C               \${CMAKE_C_FLAGS}
C++             \${CMAKE_CXX_FLAGS}
Linker flags:
Executable      \${CMAKE_EXE_LINKER_FLAGS}
Module          \${CMAKE_MODULE_LINKER_FLAGS}
Shared          \${CMAKE_SHARED_LINKER_FLAGS}\n")
_EOF_

}
_use_me_now () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local uper capitalised x;
    [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
    if [[ ! -z $3 ]]; then
        echo "-D$1$3=$(use $2 && echo ON || echo OFF)";
    else
        uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
        capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
        for x in $2 $uper $capitalised;
        do
            echo "-D$1$x=$(use $2 && echo ON || echo OFF) ";
        done;
    fi
}
_use_me_now_inverted () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local uper capitalised x;
    [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
    if [[ ! -z $3 ]]; then
        echo "-D$1$3=$(use $2 && echo OFF || echo ON)";
    else
        uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
        capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
        for x in $2 $uper $capitalised;
        do
            echo "-D$1$x=$(use $2 && echo OFF || echo ON) ";
        done;
    fi
}
add_blocker () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${1} ]] && die "Missing parameter";
    local pkg=kde-base/$1 atom old_ver="unset" use;
    if [[ $pkg == *\[*\] ]]; then
        use=${pkg/#*\[/[};
        pkg=${pkg%\[*\]};
    fi;
    [[ "$3" == *:3.5 ]] && old_ver=${3%:3.5};
    if [[ ${2} != 0 ]]; then
        if [[ -z ${2} ]]; then
            atom=${pkg};
        else
            if [[ ${2::1} == "<" ]]; then
                atom="<${pkg}-${2:1}";
            else
                atom="<=${pkg}-${2}";
            fi;
        fi;
        RDEPEND+=" !${atom}:4${use}";
    fi;
    if [[ ${old_ver} != "unset" ]]; then
        if [[ -z ${old_ver} ]]; then
            atom=${pkg};
        else
            if [[ ${old_ver::1} == "<" ]]; then
                atom="<${pkg}-${old_ver:1}";
            else
                atom="<=${pkg}-${old_ver}";
            fi;
        fi;
        RDEPEND+=" !${atom}:3.5${use}";
    fi
}
add_kdebase_dep () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local ver;
    if [[ -n ${3} ]]; then
        ver=${3};
    else
        if [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then
            ver=${KDE_OVERRIDE_MINIMAL};
        else
            if [[ ${KDEBASE} != kde-base ]]; then
                ver=${KDE_MINIMAL};
            else
                if [[ ${PV} == *.9999 ]]; then
                    ver=$(get_kde_version);
                else
                    ver=${PV};
                fi;
            fi;
        fi;
    fi;
    [[ -z ${1} ]] && die "Missing parameter";
    echo " >=kde-base/${1}-${ver}:4[aqua=${2:+,${2}}]"
}
append-cflags () 
{ 
    [[ -z $* ]] && return 0;
    export CFLAGS="${CFLAGS} $*";
    return 0
}
append-cppflags () 
{ 
    [[ -z $* ]] && return 0;
    export CPPFLAGS="${CPPFLAGS} $*";
    return 0
}
append-cxxflags () 
{ 
    [[ -z $* ]] && return 0;
    export CXXFLAGS="${CXXFLAGS} $*";
    return 0
}
append-fflags () 
{ 
    [[ -z $* ]] && return 0;
    export FFLAGS="${FFLAGS} $*";
    export FCFLAGS="${FCFLAGS} $*";
    return 0
}
append-flags () 
{ 
    [[ -z $* ]] && return 0;
    append-cflags "$@";
    append-cxxflags "$@";
    append-fflags "$@";
    return 0
}
append-ldflags () 
{ 
    [[ -z $* ]] && return 0;
    local flag;
    for flag in "$@";
    do
        [[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
    done;
    export LDFLAGS="${LDFLAGS} $*";
    return 0
}
append-lfs-flags () 
{ 
    [[ -n $@ ]] && die "append-lfs-flags takes no arguments";
    append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
append-libs () 
{ 
    [[ -z $* ]] && return 0;
    local flag;
    for flag in "$@";
    do
        [[ ${flag} == -l* ]] && flag=${flag#-l};
        export LIBS="${LIBS} -l${flag}";
    done;
    return 0
}
base_src_compile () 
{ 
    debug-print-function $FUNCNAME "$@";
    has src_configure ${BASE_EXPF} || base_src_configure;
    base_src_make "$@"
}
base_src_configure () 
{ 
    debug-print-function $FUNCNAME "$@";
    [[ -x ${ECONF_SOURCE:-.}/configure ]] && econf "$@"
}
base_src_install () 
{ 
    debug-print-function $FUNCNAME "$@";
    emake DESTDIR="${D}" "$@" install || die "died running make install, $FUNCNAME";
    base_src_install_docs
}
base_src_install_docs () 
{ 
    debug-print-function $FUNCNAME "$@";
    local x;
    pushd "${S}" > /dev/null;
    if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
        for x in "${DOCS[@]}";
        do
            debug-print "$FUNCNAME: docs: creating document from ${x}";
            dodoc "${x}" || die "dodoc failed";
        done;
    fi;
    if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
        for x in "${HTML_DOCS[@]}";
        do
            debug-print "$FUNCNAME: docs: creating html document from ${x}";
            dohtml -r "${x}" || die "dohtml failed";
        done;
    fi;
    popd > /dev/null
}
base_src_make () 
{ 
    debug-print-function $FUNCNAME "$@";
    if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
        emake "$@" || die "died running emake, $FUNCNAME";
    fi
}
base_src_prepare () 
{ 
    debug-print-function $FUNCNAME "$@";
    debug-print "$FUNCNAME: PATCHES=$PATCHES";
    local patches_failed=0;
    pushd "${S}" > /dev/null;
    if [[ "$(declare -p PATCHES 2>/dev/null 2>&1)" == "declare -a"* ]]; then
        for x in "${PATCHES[@]}";
        do
            debug-print "$FUNCNAME: applying patch from ${x}";
            if [[ -d "${x}" ]]; then
                EPATCH_SUFFIX=${EPATCH_SUFFIX:=patch};
                oldval=${EPATCH_SOURCE};
                EPATCH_SOURCE=${x};
                EPATCH_FORCE=yes;
                epatch;
                EPATCH_SOURCE=${oldval};
            else
                if [[ -f "${x}" ]]; then
                    epatch "${x}";
                else
                    ewarn "QA: File or directory \"${x}\" does not exist.";
                    ewarn "QA: Check your PATCHES array or add missing file/directory.";
                    patches_failed=1;
                fi;
            fi;
        done;
        [[ ${patches_failed} -eq 1 ]] && die "Some patches failed. See above messages.";
    else
        for x in ${PATCHES};
        do
            debug-print "$FUNCNAME: patching from ${x}";
            epatch "${x}";
        done;
    fi;
    debug-print "$FUNCNAME: applying user patches";
    epatch_user;
    popd > /dev/null
}
base_src_unpack () 
{ 
    debug-print-function $FUNCNAME "$@";
    pushd "${WORKDIR}" > /dev/null;
    [[ -n "${A}" ]] && unpack ${A};
    has src_prepare ${BASE_EXPF} || base_src_prepare;
    popd > /dev/null
}
buildsycoca () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    for x in usr/share/{config,kde4};
    do
        DIRS=${EROOT}usr;
        [[ -d "${EROOT}${x}" ]] || break;
        if use userland_BSD; then
            [[ $(stat -f %p "${EROOT}${x}") != 40755 ]];
            local stat_rtn="$?";
        else
            [[ $(stat --format=%a "${EROOT}${x}") != 755 ]];
            local stat_rtn=$?;
        fi;
        if [[ $stat_rtn != 1 ]]; then
            ewarn "QA Notice:";
            ewarn "Package ${PN} is breaking ${EROOT}${x} permissions.";
            ewarn "Please report this issue to gentoo bugzilla.";
            einfo "Permissions will get adjusted automatically now.";
            find "${EROOT}${x}" -type d -print0 | xargs -0 chmod 755;
        fi;
    done
}
built_with_use () 
{ 
    local hidden="no";
    if [[ $1 == "--hidden" ]]; then
        hidden="yes";
        shift;
    fi;
    local missing_action="die";
    if [[ $1 == "--missing" ]]; then
        missing_action=$2;
        shift;
        shift;
        case ${missing_action} in 
            true | false | die)

            ;;
            *)
                die "unknown action '${missing_action}'"
            ;;
        esac;
    fi;
    local opt=$1;
    [[ ${opt:0:1} = "-" ]] && shift || opt="-a";
    local PKG=$(best_version $1);
    [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
    shift;
    local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE;
    local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE;
    if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
        case ${missing_action} in 
            true)
                return 0
            ;;
            false)
                return 1
            ;;
            die)
                die "Unable to determine what USE flags $PKG was built with"
            ;;
        esac;
    fi;
    if [[ ${hidden} == "no" ]]; then
        local IUSE_BUILT=($(<"${IUSEFILE}"));
        local expand;
        for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
        do
            if [[ $1 == ${expand}_* ]]; then
                expand="";
                break;
            fi;
        done;
        if [[ -n ${expand} ]]; then
            if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
                case ${missing_action} in 
                    true)
                        return 0
                    ;;
                    false)
                        return 1
                    ;;
                    die)
                        die "$PKG does not actually support the $1 USE flag!"
                    ;;
                esac;
            fi;
        fi;
    fi;
    local USE_BUILT=$(<${USEFILE});
    while [[ $# -gt 0 ]]; do
        if [[ ${opt} = "-o" ]]; then
            has $1 ${USE_BUILT} && return 0;
        else
            has $1 ${USE_BUILT} || return 1;
        fi;
        shift;
    done;
    [[ ${opt} = "-a" ]]
}
cdrom_get_cds () 
{ 
    local cdcnt=0;
    local f=;
    for f in "$@";
    do
        ((++cdcnt));
        export CDROM_CHECK_${cdcnt}="$f";
    done;
    export CDROM_TOTAL_CDS=${cdcnt};
    export CDROM_CURRENT_CD=1;
    if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then
        local var=;
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            var="CD_ROOT_${cdcnt}";
            [[ -z ${!var} ]] && var="CD_ROOT";
            if [[ -z ${!var} ]]; then
                eerror "You must either use just the CD_ROOT";
                eerror "or specify ALL the CD_ROOT_X variables.";
                eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables.";
                die "could not locate CD_ROOT_${cdcnt}";
            fi;
        done;
        export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}};
        einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}";
        export CDROM_SET=-1;
        for f in ${CDROM_CHECK_1//:/ };
        do
            ((++CDROM_SET));
            [[ -e ${CDROM_ROOT}/${f} ]] && break;
        done;
        export CDROM_MATCH=${f};
        return;
    fi;
    if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
        einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}";
        echo;
        einfo "If you do not have the CD, but have the data files";
        einfo "mounted somewhere on your filesystem, just export";
        einfo "the variable CD_ROOT so that it points to the";
        einfo "directory containing the files.";
        echo;
        einfo "For example:";
        einfo "export CD_ROOT=/mnt/cdrom";
        echo;
    else
        if [[ -n ${CDROM_NAME_SET} ]]; then
            cdcnt=0;
            while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
                ((++cdcnt));
                export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}";
            done;
        fi;
        einfo "This package will need access to ${CDROM_TOTAL_CDS} cds.";
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            var="CDROM_NAME_${cdcnt}";
            [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}";
        done;
        echo;
        einfo "If you do not have the CDs, but have the data files";
        einfo "mounted somewhere on your filesystem, just export";
        einfo "the following variables so they point to the right place:";
        einfon "";
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            echo -n " CD_ROOT_${cdcnt}";
        done;
        echo;
        einfo "Or, if you have all the files in the same place, or";
        einfo "you only have one cdrom, you can export CD_ROOT";
        einfo "and that place will be used as the same data source";
        einfo "for all the CDs.";
        echo;
        einfo "For example:";
        einfo "export CD_ROOT_1=/mnt/cdrom";
        echo;
    fi;
    export CDROM_SET="";
    export CDROM_CURRENT_CD=0;
    cdrom_load_next_cd
}
cdrom_load_next_cd () 
{ 
    local var;
    ((++CDROM_CURRENT_CD));
    unset CDROM_ROOT;
    var=CD_ROOT_${CDROM_CURRENT_CD};
    [[ -z ${!var} ]] && var="CD_ROOT";
    if [[ -z ${!var} ]]; then
        var="CDROM_CHECK_${CDROM_CURRENT_CD}";
        _cdrom_locate_file_on_cd ${!var};
    else
        export CDROM_ROOT=${!var};
    fi;
    einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
}
check_license () 
{ 
    local lic=$1;
    if [ -z "${lic}" ]; then
        lic="${PORTDIR}/licenses/${LICENSE}";
    else
        if [ -e "${PORTDIR}/licenses/${lic}" ]; then
            lic="${PORTDIR}/licenses/${lic}";
        else
            if [ -e "${PWD}/${lic}" ]; then
                lic="${PWD}/${lic}";
            else
                if [ -e "${lic}" ]; then
                    lic="${lic}";
                fi;
            fi;
        fi;
    fi;
    local l="`basename ${lic}`";
    local alic;
    eshopts_push -o noglob;
    for alic in ${ACCEPT_LICENSE};
    do
        if [[ ${alic} == ${l} ]]; then
            eshopts_pop;
            return 0;
        fi;
    done;
    eshopts_pop;
    [ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
    local licmsg=$(emktemp);
    cat > ${licmsg}  <<-EOF
**********************************************************
The following license outlines the terms of use of this
package.  You MUST accept this license for installation to
continue.  When you are done viewing, hit 'q'.	If you
CTRL+C out of this, the install will not run!
**********************************************************

EOF

    cat ${lic} >> ${licmsg};
    ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
    einfon "Do you accept the terms of this license (${l})? [yes/no] ";
    read alic;
    case ${alic} in 
        yes | Yes | y | Y)
            return 0
        ;;
        *)
            echo;
            echo;
            echo;
            eerror "You MUST accept the license to continue!  Exiting!";
            die "Failed to accept license"
        ;;
    esac
}
cmake-utils_src_compile () 
{ 
    _execute_optionaly "src_compile" "$@"
}
cmake-utils_src_configure () 
{ 
    _execute_optionaly "src_configure" "$@"
}
cmake-utils_src_install () 
{ 
    _execute_optionaly "src_install" "$@"
}
cmake-utils_src_make () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    _check_build_dir;
    pushd "${CMAKE_BUILD_DIR}" > /dev/null;
    [[ -e Makefile ]] || die "Makefile not found. Error during configure stage.";
    if [[ -n ${CMAKE_VERBOSE} ]]; then
        emake VERBOSE=1 "$@" || die "Make failed!";
    else
        emake "$@" || die "Make failed!";
    fi;
    popd > /dev/null
}
cmake-utils_src_test () 
{ 
    _execute_optionaly "src_test" "$@"
}
cmake-utils_use () 
{ 
    _use_me_now "" "$@"
}
cmake-utils_use_build () 
{ 
    _use_me_now BUILD_ "$@"
}
cmake-utils_use_disable () 
{ 
    _use_me_now_inverted DISABLE_ "$@"
}
cmake-utils_use_enable () 
{ 
    _use_me_now ENABLE_ "$@"
}
cmake-utils_use_has () 
{ 
    _use_me_now HAVE_ "$@"
}
cmake-utils_use_no () 
{ 
    _use_me_now_inverted NO_ "$@"
}
cmake-utils_use_use () 
{ 
    _use_me_now USE_ "$@"
}
cmake-utils_use_want () 
{ 
    _use_me_now WANT_ "$@"
}
cmake-utils_use_with () 
{ 
    _use_me_now WITH_ "$@"
}
comment_all_add_subdirectory () 
{ 
    find "$@" -name CMakeLists.txt -print0 | grep -vFzZ "./cmake" | xargs -0 sed -i -e '/^[[:space:]]*add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' || die "${LINENO}: Initial sed died"
}
delete_all_version_separators () 
{ 
    replace_all_version_separators "" "${1}"
}
delete_version_separator () 
{ 
    replace_version_separator "${1}" "" "${2}"
}
dlopen_lib () 
{ 
    case "${CHOST}" in 
        *-linux-gnu* | *-linux-uclibc | *-interix*)
            echo "-ldl"
        ;;
    esac
}
doicon () 
{ 
    ( local i j ret;
    insinto /usr/share/pixmaps;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.png;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
domenu () 
{ 
    ( local i j ret=0;
    insinto /usr/share/applications;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.desktop;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
dyn_pretend () 
{ 
    if [[ -e $PORTAGE_BUILDDIR/.pretended ]]; then
        vecho ">>> It appears that '$PF' is already pretended; skipping.";
        vecho ">>> Remove '$PORTAGE_BUILDDIR/.pretended' to force pretend.";
        return 0;
    fi;
    ebuild_phase pre_pkg_pretend;
    ebuild_phase pkg_pretend;
     >> "$PORTAGE_BUILDDIR/.pretended" || die "Failed to create $PORTAGE_BUILDDIR/.pretended";
    ebuild_phase post_pkg_pretend
}
ebeep () 
{ 
    ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
ecvs_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
    find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix () 
{ 
    echo "$@" | xargs sed -i 's/\r$//'
}
egetent () 
{ 
    case ${CHOST} in 
        *-darwin[678])
            case "$2" in 
                *[!0-9]*)
                    nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2\$/) {print \$0;exit;} }"
                ;;
                *)
                    nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
                ;;
            esac
        ;;
        *-darwin*)
            local mytype=$1;
            [[ "passwd" == $mytype ]] && mytype="Users";
            [[ "group" == $mytype ]] && mytype="Groups";
            case "$2" in 
                *[!0-9]*)
                    dscl . -read /$mytype/$2 2> /dev/null | grep RecordName
                ;;
                *)
                    local mykey="UniqueID";
                    [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID";
                    dscl . -search /$mytype $mykey $2 2> /dev/null
                ;;
            esac
        ;;
        *-freebsd* | *-dragonfly*)
            local opts action="user";
            [[ $1 == "passwd" ]] || action="group";
            if [[ $2 == [[:digit:]]* ]]; then
                [[ ${action} == "user" ]] && opts="-u" || opts="-g";
            fi;
            pw show ${action} ${opts} "$2" -q
        ;;
        *-netbsd* | *-openbsd*)
            grep "$2:\*:" /etc/$1
        ;;
        *)
            type -p nscd &>/dev/null && nscd -i "$1";
            getent "$1" "$2"
        ;;
    esac
}
egethome () 
{ 
    ent=$(egetent passwd $1);
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f9
        ;;
        *)
            echo ${ent} | cut -d: -f6
        ;;
    esac
}
egetshell () 
{ 
    ent=$(egetent passwd "$1");
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f10
        ;;
        *)
            echo ${ent} cut -d: -f7
        ;;
    esac
}
emktemp () 
{ 
    local exe="touch";
    [[ $1 == -d ]] && exe="mkdir" && shift;
    local topdir=$1;
    if [[ -z ${topdir} ]]; then
        [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
    fi;
    if ! type -P mktemp > /dev/null; then
        local tmp=/;
        while [[ -e ${tmp} ]]; do
            tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
        done;
        ${exe} "${tmp}" || ${exe} -p "${tmp}";
        echo "${tmp}";
    else
        if [[ ${exe} == "touch" ]]; then
            TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
        else
            TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
        fi;
    fi
}
enable_cmake-utils_src_compile () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    has src_configure ${CMAKE_EXPF} || cmake-utils_src_configure;
    cmake-utils_src_make "$@"
}
enable_cmake-utils_src_configure () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] && { 
        local name;
        for name in ${CMAKE_REMOVE_MODULES_LIST};
        do
            find "${S}" -name ${name}.cmake -exec rm -v {} +;
        done
    };
    _check_build_dir;
    if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then
        eerror "Unable to locate CMakeLists.txt under:";
        eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\"";
        eerror "Consider not inheriting the cmake eclass.";
        die "FATAL: Unable to find CMakeLists.txt";
    fi;
    _modify-cmakelists;
    export XDG_CONFIG_HOME="${T}";
    if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
        if ! has debug ${IUSE//+} || ! use debug; then
            append-cppflags -DNDEBUG;
        fi;
    fi;
    local build_rules=${T}/gentoo_rules.cmake;
    cat > "${build_rules}"  <<-_EOF_
SET (CMAKE_C_COMPILER $(type -P $(tc-getCC)) CACHE FILEPATH "C compiler" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILER $(type -P $(tc-getCXX)) CACHE FILEPATH "C++ compiler" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
_EOF_

    if use prefix; then
        cat >> "${build_rules}";
    fi  <<-_EOF_
# in Prefix we need rpath and must ensure cmake gets our default linker path
# right ... except for Darwin hosts
IF (NOT APPLE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
CACHE STRING "" FORCE)

ELSE ()

SET(CMAKE_PREFIX_PATH "${EPREFIX}${PREFIX:-/usr}" CACHE STRING ""FORCE)
SET(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE)
SET(CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE CACHE BOOL "" FORCE) 
SET(CMAKE_INSTALL_RPATH "${EPREFIX}${PREFIX:-/usr}/lib;${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)" CACHE STRING "" FORCE)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE)
SET(CMAKE_INSTALL_NAME_DIR "${EPREFIX}${PREFIX:-/usr}/lib" CACHE STRING "" FORCE)

ENDIF (NOT APPLE)
_EOF_

    local common_config=${T}/gentoo_common_config.cmake;
    local libdir=$(get_libdir);
    cat > "${common_config}"  <<-_EOF_
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries")
_EOF_

    [[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}";
    if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
        local mycmakeargs_local=(${mycmakeargs});
    else
        local mycmakeargs_local=("${mycmakeargs[@]}");
    fi;
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
    local cmakeargs=(--no-warn-unused-cli -C "${common_config}" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX:-/usr}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE="${build_rules}" "${MYCMAKEARGS}");
    mkdir -p "${CMAKE_BUILD_DIR}";
    pushd "${CMAKE_BUILD_DIR}" > /dev/null;
    debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}";
    echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}";
    "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed";
    popd > /dev/null
}
enable_cmake-utils_src_install () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    _check_build_dir;
    pushd "${CMAKE_BUILD_DIR}" > /dev/null;
    base_src_install "$@";
    popd > /dev/null;
    if [[ -n "${DOCS}" ]] && [[ "$(declare -p DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then
        dodoc ${DOCS} || die "dodoc failed";
    fi;
    if [[ -n "${HTML_DOCS}" ]] && [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then
        dohtml -r ${HTML_DOCS} || die "dohtml failed";
    fi
}
enable_cmake-utils_src_test () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local ctestargs;
    _check_build_dir;
    pushd "${CMAKE_BUILD_DIR}" > /dev/null;
    [[ -e CTestTestfile.cmake ]] || { 
        echo "No tests found. Skipping.";
        return 0
    };
    [[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure";
    ctest ${ctestargs} "$@" || die "Tests failed.";
    popd > /dev/null
}
enable_selected_doc_linguas () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if ! $(env | grep -q "^LINGUAS="); then
        return 0;
    fi;
    KDE_DOC_DIRS=${KDE_DOC_DIRS:='doc/%lingua'};
    local linguas;
    for pattern in ${KDE_DOC_DIRS};
    do
        local handbookdir=`dirname ${pattern}`;
        local translationdir=`basename ${pattern}`;
        [[ ${handbookdir} = '.' ]] && handbookdir=${translationdir} && translationdir=;
        [[ -d ${handbookdir} ]] || die 'wrong doc dir specified';
        if ! use handbook; then
            sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die 'failed to comment out all handbooks';
        else
            comment_all_add_subdirectory "${handbookdir}";
            local lingua;
            for lingua in en ${KDE_LINGUAS};
            do
                if [[ ${lingua} = en ]] || use linguas_${lingua}; then
                    if [[ -d ${handbookdir}/${translationdir//%lingua/${lingua}} ]]; then
                        sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}";
                    fi;
                fi;
            done;
        fi;
    done;
    [[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}"
}
enable_selected_linguas () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local x;
    if ! $(env | grep -q "^LINGUAS="); then
        return 0;
    fi;
    if [[ "$(declare -p KDE_LINGUAS_DIR 2>/dev/null 2>&1)" == "declare -a"* ]]; then
        debug-print "$FUNCNAME: we have these subfolders defined: ${KDE_LINGUAS_DIR}";
        for x in ${KDE_LINGUAS_DIR[@]};
        do
            _enable_selected_linguas_dir ${x};
        done;
    else
        KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"};
        _enable_selected_linguas_dir ${KDE_LINGUAS_DIR};
    fi
}
enewgroup () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewgroup is only for use in pkg_* functions!"
        ;;
    esac;
    local egroup="$1";
    shift;
    if [ -z "${egroup}" ]; then
        eerror "No group specified !";
        die "Cannot call enewgroup without a group";
    fi;
    if [[ -n $(egetent group "${egroup}") ]]; then
        return 0;
    fi;
    einfo "Adding group '${egroup}' to your system ...";
    local opts=;
    local egid="$1";
    shift;
    if [ ! -z "${egid}" ]; then
        if [ "${egid}" -gt 0 ]; then
            if [ -z "`egetent group ${egid}`" ]; then
                if [[ "${CHOST}" == *-darwin* ]]; then
                    opts="${opts} ${egid}";
                else
                    opts="${opts} -g ${egid}";
                fi;
            else
                egid="next available; requested gid taken";
            fi;
        else
            eerror "Groupid given but is not greater than 0 !";
            die "${egid} is not a valid GID";
        fi;
    else
        egid="next available";
    fi;
    einfo " - Groupid: ${egid}";
    local eextra="$@";
    opts="${opts} ${eextra}";
    local oldsandbox="${SANDBOX_ON}";
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [ ! -z "${eextra}" ]; then
                einfo "Extra options are not supported on Darwin/OS X yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: ${eextra}";
                die "Required function missing";
            fi;
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            dscl . create /groups/${egroup} gid ${egid};
            dscl . create /groups/${egroup} passwd '*'
        ;;
        *-freebsd* | *-dragonfly*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
        ;;
        *-netbsd*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            groupadd -g ${egid} ${egroup} || die "enewgroup failed"
        ;;
        *)
            groupadd -r ${opts} ${egroup} || die "enewgroup failed"
        ;;
    esac;
    export SANDBOX_ON="${oldsandbox}"
}
enewuser () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewuser is only for use in pkg_* functions!"
        ;;
    esac;
    local euser=$1;
    shift;
    if [[ -z ${euser} ]]; then
        eerror "No username specified !";
        die "Cannot call enewuser without a username";
    fi;
    if [[ -n $(egetent passwd "${euser}") ]]; then
        return 0;
    fi;
    einfo "Adding user '${euser}' to your system ...";
    local opts=;
    local euid=$1;
    shift;
    if [[ -n ${euid} && ${euid} != -1 ]]; then
        if [[ ${euid} -gt 0 ]]; then
            if [[ -n $(egetent passwd ${euid}) ]]; then
                euid="next";
            fi;
        else
            eerror "Userid given but is not greater than 0 !";
            die "${euid} is not a valid UID";
        fi;
    else
        euid="next";
    fi;
    if [[ ${euid} == "next" ]]; then
        for ((euid = 101; euid <= 999; euid++))
        do
            [[ -z $(egetent passwd ${euid}) ]] && break;
        done;
    fi;
    opts="${opts} -u ${euid}";
    einfo " - Userid: ${euid}";
    local eshell=$1;
    shift;
    if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
        if [[ ! -e ${ROOT}${eshell} ]]; then
            eerror "A shell was specified but it does not exist !";
            die "${eshell} does not exist in ${ROOT}";
        fi;
        if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
            eerror "Do not specify ${eshell} yourself, use -1";
            die "Pass '-1' as the shell parameter";
        fi;
    else
        for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
        do
            [[ -x ${ROOT}${shell} ]] && break;
        done;
        if [[ ${shell} == "/dev/null" ]]; then
            eerror "Unable to identify the shell to use, proceeding with userland default.";
            case ${USERLAND} in 
                GNU)
                    shell="/bin/false"
                ;;
                BSD)
                    shell="/sbin/nologin"
                ;;
                Darwin)
                    shell="/usr/sbin/nologin"
                ;;
                *)
                    die "Unable to identify the default shell for userland ${USERLAND}"
                ;;
            esac;
        fi;
        eshell=${shell};
    fi;
    einfo " - Shell: ${eshell}";
    opts="${opts} -s ${eshell}";
    local ehome=$1;
    shift;
    if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
        ehome="/dev/null";
    fi;
    einfo " - Home: ${ehome}";
    opts="${opts} -d ${ehome}";
    local egroups=$1;
    shift;
    if [[ ! -z ${egroups} ]]; then
        local oldifs=${IFS};
        local defgroup="" exgroups="";
        export IFS=",";
        for g in ${egroups};
        do
            export IFS=${oldifs};
            if [[ -z $(egetent group "${g}") ]]; then
                eerror "You must add group ${g} to the system first";
                die "${g} is not a valid GID";
            fi;
            if [[ -z ${defgroup} ]]; then
                defgroup=${g};
            else
                exgroups="${exgroups},${g}";
            fi;
            export IFS=",";
        done;
        export IFS=${oldifs};
        opts="${opts} -g ${defgroup}";
        if [[ ! -z ${exgroups} ]]; then
            opts="${opts} -G ${exgroups:1}";
        fi;
    else
        egroups="(none)";
    fi;
    einfo " - Groups: ${egroups}";
    local oldsandbox=${SANDBOX_ON};
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [[ -z $@ ]]; then
                dscl . create /users/${euser} uid ${euid};
                dscl . create /users/${euser} shell ${eshell};
                dscl . create /users/${euser} home ${ehome};
                dscl . create /users/${euser} realname "added by portage for ${PN}";
                local oldifs=${IFS};
                export IFS=",";
                for g in ${egroups};
                do
                    dscl . merge /groups/${g} users ${euser};
                done;
                export IFS=${oldifs};
            else
                einfo "Extra options are not supported on Darwin yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: $@";
                die "Required function missing";
            fi
        ;;
        *-freebsd* | *-dragonfly*)
            if [[ -z $@ ]]; then
                pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
            else
                einfo " - Extra: $@";
                pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
            fi
        ;;
        *-netbsd*)
            if [[ -z $@ ]]; then
                useradd ${opts} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd ${opts} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *-openbsd*)
            if [[ -z $@ ]]; then
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *)
            if [[ -z $@ ]]; then
                useradd -r ${opts} -c "added by portage for ${PN}" ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd -r ${opts} "$@" ${euser} || die "enewuser failed";
            fi
        ;;
    esac;
    if [[ ! -e ${ROOT}/${ehome} ]]; then
        einfo " - Creating ${ehome} in ${ROOT}";
        mkdir -p "${ROOT}/${ehome}";
        chown ${euser} "${ROOT}/${ehome}";
        chmod 755 "${ROOT}/${ehome}";
    fi;
    export SANDBOX_ON=${oldsandbox}
}
epatch () 
{ 
    function _epatch_draw_line () 
    { 
        [[ -z $1 ]] && set "$(printf "%65s" '')";
        echo "${1//?/=}"
    };
    unset P4CONFIG P4PORT P4USER;
    if [[ $# -gt 1 ]]; then
        local m;
        for m in "$@";
        do
            epatch "${m}";
        done;
        return 0;
    fi;
    local SINGLE_PATCH="no";
    [[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
    if [[ -f $1 ]]; then
        SINGLE_PATCH="yes";
        set -- "$1";
        local EPATCH_SUFFIX=$1;
    else
        if [[ -d $1 ]]; then
            set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
        else
            if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
                epatch "${EPATCH_SOURCE}/$1";
                return $?;
            else
                [[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
                echo;
                eerror "Cannot find \$EPATCH_SOURCE!  Value for \$EPATCH_SOURCE is:";
                eerror;
                eerror "  ${EPATCH_SOURCE}";
                eerror "  ( ${EPATCH_SOURCE##*/} )";
                echo;
                die "Cannot find \$EPATCH_SOURCE!";
            fi;
        fi;
    fi;
    local PIPE_CMD;
    case ${EPATCH_SUFFIX##*\.} in 
        xz)
            PIPE_CMD="xz -dc"
        ;;
        lzma)
            PIPE_CMD="lzma -dc"
        ;;
        bz2)
            PIPE_CMD="bzip2 -dc"
        ;;
        gz | Z | z)
            PIPE_CMD="gzip -dc"
        ;;
        ZIP | zip)
            PIPE_CMD="unzip -p"
        ;;
        *)

        ;;
    esac;
    [[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
    local x;
    for x in "$@";
    do
        [[ ! -f ${x} ]] && continue;
        local patchname=${x##*/};
        local a=${patchname#*_};
        a=${a%%_*};
        if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
            continue;
        fi;
        if [[ -n ${EPATCH_EXCLUDE} ]]; then
            eshopts_push -o noglob;
            local ex;
            for ex in ${EPATCH_EXCLUDE};
            do
                if [[ ${patchname} == ${ex} ]]; then
                    eshopts_pop;
                    continue 2;
                fi;
            done;
            eshopts_pop;
        fi;
        if [[ ${SINGLE_PATCH} == "yes" ]]; then
            if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
                einfo "${EPATCH_SINGLE_MSG}";
            else
                einfo "Applying ${patchname} ...";
            fi;
        else
            einfo "  ${patchname} ...";
        fi;
        local STDERR_TARGET="${T}/${patchname}.out";
        if [[ -e ${STDERR_TARGET} ]]; then
            STDERR_TARGET="${T}/${patchname}-$$.out";
        fi;
        printf "***** %s *****\n\n" "${patchname}" > "${STDERR_TARGET}";
        local count=0;
        local PATCH_TARGET;
        if [[ -n ${PIPE_CMD} ]]; then
            PATCH_TARGET="${T}/$$.patch";
            echo "PIPE_COMMAND:  ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
            if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
                echo;
                eerror "Could not extract patch!";
                count=5;
                break;
            fi;
        else
            PATCH_TARGET=${x};
        fi;
        local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
        if [[ -n ${abs_paths} ]]; then
            count=1;
            printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
        fi;
        local rel_paths=$(egrep -n '^[-+]{3} [^	]*[.][.]/' "${PATCH_TARGET}");
        if [[ -n ${rel_paths} ]]; then
            eqawarn "QA Notice: Your patch uses relative paths '../'.";
            eqawarn " In the future this will cause a failure.";
            eqawarn "${rel_paths}";
        fi;
        while [[ ${count} -lt 5 ]]; do
            ( _epatch_draw_line "***** ${patchname} *****";
            echo;
            echo "PATCH COMMAND:  patch -p${count} ${EPATCH_OPTS} < '${PATCH_TARGET}'";
            echo;
            _epatch_draw_line "***** ${patchname} *****";
            patch -p${count} ${EPATCH_OPTS} --dry-run -f < "${PATCH_TARGET}" 2>&1;
            ret=$?;
            echo;
            echo "patch program exited with status ${ret}";
            exit ${ret} ) >> "${STDERR_TARGET}";
            if [ $? -eq 0 ]; then
                ( _epatch_draw_line "***** ${patchname} *****";
                echo;
                echo "ACTUALLY APPLYING ${patchname} ...";
                echo;
                _epatch_draw_line "***** ${patchname} *****";
                patch -p${count} ${EPATCH_OPTS} < "${PATCH_TARGET}" 2>&1;
                ret=$?;
                echo;
                echo "patch program exited with status ${ret}";
                exit ${ret} ) >> "${STDERR_TARGET}";
                if [ $? -ne 0 ]; then
                    echo;
                    eerror "A dry-run of patch command succeeded, but actually";
                    eerror "applying the patch failed!";
                    count=5;
                fi;
                break;
            fi;
            : $(( count++ ));
        done;
        if [[ -n ${PIPE_CMD} ]]; then
            rm -f "${PATCH_TARGET}";
        fi;
        if [[ ${count} -ge 5 ]]; then
            echo;
            eerror "Failed Patch: ${patchname} !";
            eerror " ( ${PATCH_TARGET} )";
            eerror;
            eerror "Include in your bugreport the contents of:";
            eerror;
            eerror "  ${STDERR_TARGET}";
            echo;
            die "Failed Patch: ${patchname}!";
        fi;
        rm -f "${STDERR_TARGET}";
        eend 0;
    done;
    [[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
    :
}
epatch_user () 
{ 
    [[ $# -ne 0 ]] && die "epatch_user takes no options";
    local applied="${T}/epatch_user.applied";
    [[ -e ${applied} ]] && return 2;
    local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
    for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}};
    do
        EPATCH_SOURCE=${base}/${CTARGET}/${check};
        [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check};
        [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check};
        if [[ -d ${EPATCH_SOURCE} ]]; then
            EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch;
            echo "${EPATCH_SOURCE}" > "${applied}";
            return 0;
        fi;
    done;
    echo "none" > "${applied}";
    return 1
}
epause () 
{ 
    ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
epunt_cxx () 
{ 
    local dir=$1;
    [[ -z ${dir} ]] && dir=${S};
    ebegin "Removing useless C++ checks";
    local f;
    find "${dir}" -name configure | while read f; do
        patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
    done;
    eend 0
}
eshopts_pop () 
{ 
    [[ $# -ne 0 ]] && die "eshopts_pop takes no arguments";
    local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 ));
    [[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair";
    local s=${__ESHOPTS_SAVE__[$i]};
    unset __ESHOPTS_SAVE__[$i];
    if [[ ${s} == "shopt -"* ]]; then
        eval "${s}" || die "eshopts_pop: sanity: invalid shopt options: ${s}";
    else
        set +$- || die "eshopts_pop: sanity: invalid shell settings: $-";
        set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}";
    fi
}
eshopts_push () 
{ 
    local i=${#__ESHOPTS_SAVE__[@]};
    if [[ $1 == -[su] ]]; then
        __ESHOPTS_SAVE__[$i]=$(shopt -p);
        [[ $# -eq 0 ]] && return 0;
        shopt "$@" || die "eshopts_push: bad options to shopt: $*";
    else
        __ESHOPTS_SAVE__[$i]=$-;
        [[ $# -eq 0 ]] && return 0;
        set "$@" || die "eshopts_push: bad options to set: $*";
    fi
}
esvn_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
fdo-mime_desktop_database_update () 
{ 
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
    if [ -x "${EPREFIX}/usr/bin/update-desktop-database" ]; then
        einfo "Updating desktop mime database ...";
        "${EPREFIX}/usr/bin/update-desktop-database" -q "${EROOT}usr/share/applications";
    fi
}
fdo-mime_mime_database_update () 
{ 
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
    if [ -x "${EPREFIX}/usr/bin/update-mime-database" ]; then
        einfo "Updating shared mime info database ...";
        "${EPREFIX}/usr/bin/update-mime-database" "${EROOT}usr/share/mime";
    fi
}
filter-flags () 
{ 
    _filter-hardened "$@";
    _filter-var CFLAGS "$@";
    _filter-var CPPFLAGS "$@";
    _filter-var CXXFLAGS "$@";
    _filter-var FFLAGS "$@";
    _filter-var FCFLAGS "$@";
    return 0
}
filter-ldflags () 
{ 
    _filter-var LDFLAGS "$@";
    return 0
}
filter-lfs-flags () 
{ 
    [[ -n $@ ]] && die "filter-lfs-flags takes no arguments";
    filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath () 
{ 
    local orig_mfpmath new_math prune_math;
    orig_mfpmath=$(get-flag -mfpmath);
    new_math=$(get-flag mfpmath);
    new_math=" ${new_math//,/ } ";
    prune_math="";
    for prune_math in "$@";
    do
        new_math=${new_math/ ${prune_math} / };
    done;
    new_math=$(echo ${new_math});
    new_math=${new_math// /,};
    if [[ -z ${new_math} ]]; then
        filter-flags ${orig_mfpmath};
    else
        replace-flags ${orig_mfpmath} -mfpmath=${new_math};
    fi;
    return 0
}
find_unpackable_file () 
{ 
    local src=$1;
    if [[ -z ${src} ]]; then
        src=${DISTDIR}/${A};
    else
        if [[ -e ${DISTDIR}/${src} ]]; then
            src=${DISTDIR}/${src};
        else
            if [[ -e ${PWD}/${src} ]]; then
                src=${PWD}/${src};
            else
                if [[ -e ${src} ]]; then
                    src=${src};
                fi;
            fi;
        fi;
    fi;
    [[ ! -e ${src} ]] && return 1;
    echo "${src}"
}
gcc-fullversion () 
{ 
    _gcc_fullversion '$1.$2.$3' "$@"
}
gcc-major-version () 
{ 
    _gcc_fullversion '$1' "$@"
}
gcc-micro-version () 
{ 
    _gcc_fullversion '$3' "$@"
}
gcc-minor-version () 
{ 
    _gcc_fullversion '$2' "$@"
}
gcc-specs-directive () 
{ 
    local directive subdname subdirective;
    directive="$(_gcc-specs-directive_raw $1)";
    while [[ ${directive} == *%\(*\)* ]]; do
        subdname=${directive/*%\(};
        subdname=${subdname/\)*};
        subdirective="$(_gcc-specs-directive_raw ${subdname})";
        directive="${directive//\%(${subdname})/${subdirective}}";
    done;
    echo "${directive}";
    return 0
}
gcc-specs-nostrict () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]])
}
gcc-specs-now () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ "${directive/\{!nonow:}" != "${directive}" ]])
}
gcc-specs-pie () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!nopie:}" != "${directive}" ]])
}
gcc-specs-relro () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ "${directive/\{!norelro:}" != "${directive}" ]])
}
gcc-specs-ssp () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]])
}
gcc-specs-ssp-to-all () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]])
}
gcc-version () 
{ 
    _gcc_fullversion '$1.$2' "$@"
}
gen_usr_ldscript () 
{ 
    local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
    [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
    tc-is-static-only && return;
    dodir /usr/${libdir};
    if [[ $1 == "-a" ]]; then
        auto=true;
        shift;
        dodir /${libdir};
    fi;
    output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
    [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
    for lib in "$@";
    do
        local tlib;
        if ${auto}; then
            lib="lib${lib}${suffix}";
        else
            [[ -r ${ED}/${libdir}/${lib} ]] || continue;
        fi;
        case ${CTARGET:-${CHOST}} in 
            *-darwin*)
                if ${auto}; then
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                else
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
                fi;
                [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
                tlib=${tlib##*/};
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                fi;
                if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
                    chmod u+w "${ED}${libdir}/${tlib}";
                    local nowrite=yes;
                fi;
                install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
                [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *-aix* | *-irix* | *64*-hpux* | *-interix* | *-winnt*)
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    tlib=$(readlink "${ED}"/${libdir}/${lib});
                    tlib=${tlib##*/};
                    if [[ -z ${tlib} ]]; then
                        tlib=${lib};
                    else
                        rm -f "${ED}"/${libdir}/${lib};
                    fi;
                else
                    tlib=${lib};
                fi;
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            hppa*-hpux*)
                if ${auto}; then
                    tlib=$(chatr "${ED}"/usr/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
                    [[ -z ${tlib} ]] && tlib=${lib};
                    tlib=${tlib##*/};
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib}* ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                    fi;
                    [[ ${tlib} != ${lib} ]] && rm -f "${ED}"/${libdir}/${lib};
                else
                    tlib=$(chatr "${ED}"/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
                    [[ -z ${tlib} ]] && tlib=${lib};
                    tlib=${tlib##*/};
                fi;
                pushd "${ED}"/usr/${libdir} > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                [[ ${tlib} != ${lib} ]] && ln -snf "../../${libdir}/${tlib}" "${tlib}";
                popd > /dev/null
            ;;
            *)
                if ${auto}; then
                    tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                    [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib}* ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                else
                    tlib=${lib};
                fi;
                cat > "${ED}/usr/${libdir}/${lib}"  <<-END_LDSCRIPT
/* GNU ld script
   Since Gentoo has critical dynamic libraries in /lib, and the static versions
   in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
   run into linking problems.  This "fake" dynamic lib is a linker script that
   redirects the linker to the real lib.  And yes, this works in the cross-
   compiling scenario as the sysroot-ed linker will prepend the real path.

   See bug http://bugs.gentoo.org/4411 for more info.
 */
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT

            ;;
        esac
        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
    done
}
get-flag () 
{ 
    local f findflag="$1";
    for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS};
    do
        if [ "${f/${findflag}}" != "${f}" ]; then
            printf "%s\n" "${f/-${findflag}=}";
            return 0;
        fi;
    done;
    return 1
}
get_abi_ASFLAGS () 
{ 
    get_abi_var ASFLAGS "$@"
}
get_abi_CFLAGS () 
{ 
    get_abi_var CFLAGS "$@"
}
get_abi_CHOST () 
{ 
    get_abi_var CHOST "$@"
}
get_abi_CTARGET () 
{ 
    get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS () 
{ 
    get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS () 
{ 
    get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR () 
{ 
    get_abi_var LIBDIR "$@"
}
get_abi_var () 
{ 
    local flag=$1;
    local abi;
    if [ $# -gt 1 ]; then
        abi=${2};
    else
        if [ -n "${ABI}" ]; then
            abi=${ABI};
        else
            if [ -n "${DEFAULT_ABI}" ]; then
                abi=${DEFAULT_ABI};
            else
                abi="default";
            fi;
        fi;
    fi;
    local var="${flag}_${abi}";
    echo ${!var}
}
get_after_major_version () 
{ 
    echo $(get_version_component_range 2- "${1:-${PV}}")
}
get_all_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    for x in ${MULTILIB_ABIS};
    do
        if [[ ${x} != ${DEFAULT_ABI} ]]; then
            order="${order:+${order} }${x}";
        fi;
    done;
    order="${order:+${order} }${DEFAULT_ABI}";
    echo ${order};
    return 0
}
get_all_libdirs () 
{ 
    local libdirs;
    local abi;
    local dir;
    for abi in ${MULTILIB_ABIS};
    do
        libdirs+=" $(get_abi_LIBDIR ${abi})";
    done;
    [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib";
    echo "${libdirs}"
}
get_all_version_components () 
{ 
    eshopts_push -s extglob;
    local ver_str=${1:-${PV}} result;
    result=();
    if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
        echo ${VERSIONATOR_CACHE_RESULT};
        eshopts_pop;
        return;
    fi;
    export VERSIONATOR_CACHE_VER_STR=${ver_str};
    while [[ -n $ver_str ]]; do
        case "${ver_str::1}" in 
            [[:digit:]])
                result+=("${ver_str%%[^[:digit:]]*}");
                ver_str=${ver_str##+([[:digit:]])}
            ;;
            [-_.])
                result+=("${ver_str::1}");
                ver_str=${ver_str:1}
            ;;
            [[:alpha:]])
                local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])};
                result+=("${ver_str::${#ver_str} - ${#not_match}}");
                ver_str=${not_match}
            ;;
            *)
                result+=("${ver_str::1}");
                ver_str=${ver_str:1}
            ;;
        esac;
    done;
    export VERSIONATOR_CACHE_RESULT=${result[*]};
    echo ${result[@]};
    eshopts_pop
}
get_bmake () 
{ 
    if [[ ${USERLAND} == *BSD ]]; then
        echo make;
    else
        if [[ ${USERLAND} == "Darwin" ]]; then
            echo bsdmake;
        else
            echo pmake;
        fi;
    fi
}
get_install_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    if [[ ${EMULTILIB_PKG} == "true" ]]; then
        for x in ${MULTILIB_ABIS};
        do
            if [[ ${x} != "${DEFAULT_ABI}" ]]; then
                has ${x} ${ABI_DENY} || order="${order} ${x}";
            fi;
        done;
        has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";
        if [[ -n ${ABI_ALLOW} ]]; then
            local ordera="";
            for x in ${order};
            do
                if has ${x} ${ABI_ALLOW}; then
                    ordera="${ordera} ${x}";
                fi;
            done;
            order=${ordera};
        fi;
    else
        order=${DEFAULT_ABI};
    fi;
    if [[ -z ${order} ]]; then
        die "The ABI list is empty.  Are you using a proper multilib profile?  Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
    fi;
    echo ${order};
    return 0
}
get_kde_version () 
{ 
    local ver=${1:-${PV}};
    local major=$(get_major_version ${ver});
    local minor=$(get_version_component_range 2 ${ver});
    local micro=$(get_version_component_range 3 ${ver});
    if [[ ${ver} == 9999 ]]; then
        echo live;
    else
        (( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1));
    fi
}
get_last_version_component_index () 
{ 
    echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
}
get_libdir () 
{ 
    local CONF_LIBDIR;
    if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
        echo ${CONF_LIBDIR_OVERRIDE};
    else
        get_abi_LIBDIR;
    fi
}
get_libdir_override () 
{ 
    if has_multilib_profile; then
        eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    CONF_LIBDIR="$1";
    CONF_LIBDIR_OVERRIDE="$1";
    LIBDIR_default="$1"
}
get_libname () 
{ 
    local libname;
    local ver=$1;
    case ${CHOST} in 
        *-cygwin | mingw* | *-mingw*)
            libname="dll"
        ;;
        *-darwin*)
            libname="dylib"
        ;;
        *-mint*)
            libname="irrelevant"
        ;;
        hppa*-hpux*)
            libname="sl"
        ;;
        *)
            libname="so"
        ;;
    esac;
    if [[ -z $* ]]; then
        echo ".${libname}";
    else
        for ver in "$@";
        do
            case ${CHOST} in 
                *-darwin*)
                    echo ".${ver}.${libname}"
                ;;
                *-mint*)
                    echo ".${libname}"
                ;;
                *)
                    echo ".${libname}.${ver}"
                ;;
            esac;
        done;
    fi
}
get_major_version () 
{ 
    local c=($(get_all_version_components "${1:-${PV}}"));
    echo ${c[0]}
}
get_modname () 
{ 
    local modname;
    local ver=$1;
    case ${CHOST} in 
        *-darwin*)
            modname="bundle"
        ;;
        *)
            modname="so"
        ;;
    esac;
    echo ".${modname}"
}
get_mounts () 
{ 
    local point= node= fs= opts= foo=;
    if [[ $(uname -s) == "Linux" ]]; then
        while read node point fs opts foo; do
            echo "${point} ${node} ${fs} ${opts}";
        done < /proc/mounts;
        return;
    fi;
    local IFS='	';
    LC_ALL=C mount -p | while read node point fs foo; do
        opts=${fs#* };
        fs=${fs%% *};
        echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
    done
}
get_multilibdir () 
{ 
    if has_multilib_profile; then
        eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    echo ${CONF_MULTILIBDIR:=lib32}
}
get_version_component_count () 
{ 
    local a=($(get_version_components "${1:-${PV}}"));
    echo ${#a[@]}
}
get_version_component_range () 
{ 
    eshopts_push -s extglob;
    local c v="${2:-${PV}}" range="${1}" range_start range_end;
    local -i i=-1 j=0;
    c=($(get_all_version_components "${v}"));
    range_start=${range%-*};
    range_start=${range_start:-1};
    range_end=${range#*-};
    range_end=${range_end:-${#c[@]}};
    while ((j < range_start)); do
        i+=1;
        ((i > ${#c[@]})) && eshopts_pop && return;
        [[ -n "${c[i]//[-._]}" ]] && j+=1;
    done;
    while ((j <= range_end)); do
        echo -n ${c[i]};
        ((i > ${#c[@]})) && eshopts_pop && return;
        [[ -n "${c[i]//[-._]}" ]] && j+=1;
        i+=1;
    done;
    eshopts_pop
}
get_version_components () 
{ 
    local c=$(get_all_version_components "${1:-${PV}}");
    echo ${c//[-._]/ }
}
gnome2_gconf_install () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GCONFTOOL_BIN}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
        debug-print "No GNOME 2 GConf schemas found";
        return;
    fi;
    unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
    export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
    einfo "Installing GNOME 2 GConf schemas";
    local F;
    for F in ${GNOME2_ECLASS_SCHEMAS};
    do
        if [[ -e "${EROOT}${F}" ]]; then
            debug-print "Installing schema: ${F}";
            "${updater}" --makefile-install-rule "${EROOT}${F}" > /dev/null;
        fi;
    done;
    pids=$(pgrep -x gconfd-2);
    if [[ $? == 0 ]]; then
        ebegin "Reloading GConf schemas";
        kill -HUP ${pids};
        eend $?;
    fi
}
gnome2_gconf_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" &>/dev/null;
    export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null);
    popd &>/dev/null
}
gnome2_gconf_uninstall () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GCONFTOOL_BIN}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
        debug-print "No GNOME 2 GConf schemas found";
        return;
    fi;
    unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
    export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
    einfo "Uninstalling GNOME 2 GConf schemas";
    local F;
    for F in ${GNOME2_ECLASS_SCHEMAS};
    do
        if [[ -e "${EROOT}${F}" ]]; then
            debug-print "Uninstalling gconf schema: ${F}";
            "${updater}" --makefile-uninstall-rule "${EROOT}${F}" > /dev/null;
        fi;
    done;
    pids=$(pgrep -x gconfd-2);
    if [[ $? == 0 ]]; then
        ebegin "Reloading GConf schemas";
        kill -HUP ${pids};
        eend $?;
    fi
}
gnome2_icon_cache_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
        debug-print "No icon cache to update";
        return;
    fi;
    ebegin "Updating icons cache";
    local retval=0;
    local fails=();
    for dir in ${GNOME2_ECLASS_ICONS};
    do
        if [[ -f "${EROOT}${dir}/index.theme" ]]; then
            local rv=0;
            "${updater}" -qf "${EROOT}${dir}";
            rv=$?;
            if [[ ! $rv -eq 0 ]]; then
                debug-print "Updating cache failed on ${EROOT}${dir}";
                fails[$(( ${#fails[@]} + 1 ))]="${EROOT}${dir}";
                retval=2;
            fi;
        fi;
    done;
    eend ${retval};
    for f in "${fails[@]}";
    do
        eerror "Failed to update cache with icon $f";
    done
}
gnome2_icon_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" &>/dev/null;
    export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null);
    popd &>/dev/null
}
gnome2_omf_fix () 
{ 
    local omf_makefiles filename;
    omf_makefiles="$@";
    if [[ -f ${S}/omf.make ]]; then
        omf_makefiles="${omf_makefiles} ${S}/omf.make";
    fi;
    for filename in $(find ./ -name "Makefile.in" -o -name "Makefile.am" |sort);
    do
        omf_makefiles="${omf_makefiles} ${filename}";
    done;
    ebegin "Fixing OMF Makefiles";
    local retval=0;
    local fails=();
    for omf in ${omf_makefiles};
    do
        local rv=0;
        sed -i -e 's:scrollkeeper-update:true:' "${omf}";
        retval=$?;
        if [[ ! $rv -eq 0 ]]; then
            debug-print "updating of ${omf} failed";
            fails[$(( ${#fails[@]} + 1 ))]=$omf;
            retval=2;
        fi;
    done;
    eend $retval;
    for f in "${fails[@]}";
    do
        eerror "Failed to update OMF Makefile $f";
    done
}
gnome2_schemas_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" &>/dev/null;
    export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null);
    popd &>/dev/null
}
gnome2_schemas_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}";
    if [[ ! -x ${updater} ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
        debug-print "No GSettings schemas to update";
        return;
    fi;
    ebegin "Updating GSettings schemas";
    ${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null;
    eend $?
}
gnome2_scrollkeeper_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    if [[ -x "${EROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then
        einfo "Updating scrollkeeper database ...";
        "${EROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${EROOT}${SCROLLKEEPER_DIR}";
    fi
}
has_hardened () 
{ 
    die "$0: deprecated, please use gcc-specs-{relro,now}()!"
}
has_m32 () 
{ 
    [ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0;
    local temp=$(emktemp);
    echo "int main() { return(0); }" > "${temp}".c;
    MY_CC=$(tc-getCC);
    ${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
    local ret=$?;
    rm -f "${temp}".c;
    [[ ${ret} != 1 ]] && return 0;
    return 1
}
has_m64 () 
{ 
    local temp="$(emktemp)";
    echo "int main() { return(0); }" > "${temp}".c;
    MY_CC=$(tc-getCC);
    ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
    local ret=$?;
    rm -f "${temp}".c;
    [[ ${ret} != 1 ]] && return 0;
    return 1
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_pic () 
{ 
    die "$0: deprecated, please use gcc-specs-pie()!"
}
has_pie () 
{ 
    die "$0: deprecated, please use gcc-specs-pie()!"
}
has_ssp () 
{ 
    die "$0: deprecated, please use gcc-specs-ssp()!"
}
has_ssp_all () 
{ 
    die "$0: deprecated, please use gcc-specs-ssp()!"
}
helpers_die () 
{ 
    case "${EAPI:-0}" in 
        0 | 1 | 2 | 3)
            echo -e "$@" 1>&2
        ;;
        *)
            die "$@"
        ;;
    esac
}
install_library_dependencies () 
{ 
    local depsfile="${T}/${PN}";
    ebegin "Installing library dependencies as ${depsfile##*/}";
    insinto /var/lib/kde;
    doins "${depsfile}" || die "Failed to install library dependencies.";
    eend $?
}
is-flag () 
{ 
    is-flagq "$@" && echo true
}
is-flagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-flag <flag>";
    _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1
}
is-ldflag () 
{ 
    is-ldflagq "$@" && echo true
}
is-ldflagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-ldflag <flag>";
    _is_flagq LDFLAGS $1
}
is-login-disabled () 
{ 
    shell=$(egetshell "$1");
    case ${shell} in 
        /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
            return 0
        ;;
        *)
            return 1
        ;;
    esac
}
is_final_abi () 
{ 
    has_multilib_profile || return 0;
    set -- $(get_install_abis);
    local LAST_ABI=$#;
    [[ ${!LAST_ABI} == ${ABI} ]]
}
kde4-base_pkg_postinst () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    gnome2_icon_cache_update;
    fdo-mime_desktop_database_update;
    fdo-mime_mime_database_update;
    buildsycoca;
    if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
        if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
            echo;
            ewarn "WARNING! you have kdeenable final useflag enabled.";
            ewarn "This useflag needs to be enabled on ALL kde using packages and";
            ewarn "is known to cause issues.";
            ewarn "You are using this setup at your own risk and the kde team does not";
            ewarn "take responsibilities for dead kittens.";
            echo;
        fi;
        if [[ ${BUILD_TYPE} = live ]]; then
            echo;
            einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}";
            einfo "Use it at your own risk.";
            einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!";
            echo;
        fi;
        if [[ ${KDEBASE} != kde-base ]] && ! has_version 'kde-base/kdebase-runtime-meta' && ! has_version 'kde-base/kdebase-startkde'; then
            if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
                echo;
                ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\"";
                ewarn "nor \"kde-base/kdebase-startkde\". You need one of above.";
                ewarn "With this setting you are unsupported by KDE team.";
                ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID.";
            fi;
        fi;
    fi
}
kde4-base_pkg_postrm () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    gnome2_icon_cache_update;
    fdo-mime_desktop_database_update;
    fdo-mime_mime_database_update;
    buildsycoca
}
kde4-base_pkg_preinst () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    gnome2_icon_savelist
}
kde4-base_pkg_setup () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if has kdeprefix ${IUSE//+} && use kdeprefix; then
        eerror "Sorry, kdeprefix support has been removed.";
        eerror "Please remove kdeprefix from your USE variable.";
        die "kdeprefix support has been removed";
    fi;
    if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && { 
        [[ ${KDE_REQUIRED} == always ]] || { 
            [[ ${KDE_REQUIRED} == optional ]] && use kde
        }
    } && has_version kde-base/kdelibs[kdeprefix]; then
        eerror "Sorry, kdeprefix support has been removed.";
        eerror "Please rebuild kdelibs without kdeprefix support.";
        die "kdeprefix support has been removed";
    fi;
    unset KDEHOME;
    if [[ ${MERGE_TYPE} != binary ]]; then
        [[ $(gcc-major-version) -lt 4 ]] || ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837).";
    fi;
    KDEDIR=/usr;
    : ${PREFIX:=/usr};
    EKDEDIR=${EPREFIX}/usr;
    QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/";
    export XDG_CONFIG_HOME="${T}"
}
kde4-base_src_compile () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    cmake-utils_src_compile "$@"
}
kde4-base_src_configure () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local cmakeargs=(-DKDE4_BUILD_TESTS=OFF);
    if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
        cmakeargs+=(-DKDE4_ENABLE_FINAL=ON);
    fi;
    if has debug ${IUSE//+} && use debug; then
        CMAKE_BUILD_TYPE="Debugfull";
    else
        append-cppflags -DQT_NO_DEBUG;
    fi;
    [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo);
    tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}");
    QTEST_COLORED=1;
    unset KDEDIRS;
    tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4);
    tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/);
    cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc);
    if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
        mycmakeargs=(${mycmakeargs});
    fi;
    mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}");
    cmake-utils_src_configure
}
kde4-base_src_install () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ -n ${KMSAVELIBS} ]]; then
        install_library_dependencies;
    fi;
    local doc;
    if ! has kde4-meta ${INHERITED}; then
        for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
        do
            [[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}";
        done;
        for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
        do
            [[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})";
        done;
    fi;
    cmake-utils_src_install;
    [[ ${EAPI:-0} != 3 && -d ${ED}/${PREFIX}/share/doc/HTML ]] && docompress -x ${PREFIX}/share/doc/HTML
}
kde4-base_src_prepare () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ -n ${KDE_LINGUAS} ]]; then
        enable_selected_linguas;
    fi;
    if ! has kde4-meta ${INHERITED} && has handbook ${IUSE//+}; then
        if [[ ${KDEBASE} == kde-base ]]; then
            if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
                : ${KDE_DOC_DIRS:=doc};
                local dir;
                for dir in ${KDE_DOC_DIRS};
                do
                    sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die "failed to comment out handbook";
                done;
            fi;
        else
            enable_selected_doc_linguas;
        fi;
    fi;
    if [[ ${BUILD_TYPE} = live ]]; then
        case ${KDE_SCM} in 
            svn)
                subversion_src_prepare
            ;;
        esac;
    fi;
    base_src_prepare;
    if [[ -n ${KMSAVELIBS} ]]; then
        save_library_dependencies;
    fi;
    if [[ -n ${KMLOADLIBS} ]]; then
        load_library_dependencies;
    fi;
    find "${S}" -name CMakeLists.txt -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_TASKMANAGER_(LIBRARY|LIBS)\}/taskmanager/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KWORKSPACE_(LIBRARY|LIBS)\}/kworkspace/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_SOLIDCONTROLIFACES_(LIBRARY|LIBS)\}/solidcontrolifaces/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_SOLIDCONTROL_(LIBRARY|LIBS)\}/solidcontrol/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_PROCESSUI_(LIBRARY|LIBS)\}/processui/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_LSOFUI_(LIBRARY|LIBS)\}/lsofui/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_PLASMACLOCK_(LIBRARY|LIBS)\}/plasmaclock/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_NEPOMUKQUERYCLIENT_(LIBRARY|LIBS)\}/nepomukqueryclient/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_NEPOMUKQUERY_(LIBRARY|LIBS)\}/nepomukquery/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KSCREENSAVER_(LIBRARY|LIBS)\}/kscreensaver/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_WEATHERION_(LIBRARY|LIBS)\}/weather_ion/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KWINEFFECTS_(LIBRARY|LIBS)\}/kwineffects/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KDECORATIONS_(LIBRARY|LIBS)\}/kdecorations/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KSGRD_(LIBRARY|LIBS)\}/ksgrd/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KEPHAL_(LIBRARY|LIBS)\}/kephal/g' {} + || die 'failed to replace KDE4Workspace library targets';
    if [[ -z ${KDEBASE} ]]; then
        find "${S}" -name "*.docbook" -exec sed -i -r -e 's:-//KDE//DTD DocBook XML V4\.1(\..)?-Based Variant V1\.[01]//EN:-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN:g' {} + || die 'failed to fix DocBook variant version';
    fi
}
kde4-base_src_test () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    mycmakeargs+=(-DKDE4_BUILD_TESTS=ON);
    cmake-utils_src_configure;
    kde4-base_src_compile;
    unset DBUS_SESSION_BUS_ADDRESS;
    if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
        if [[ ${VIRTUALX_COMMAND} != emake ]]; then
            debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality.";
            debug-print "           You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild.";
            debug-print "           Setting VIRTUALX_REQUIRED is completely sufficient. See the";
            debug-print "           kde4-base.eclass docs for details... Applying workaround.";
            cmake-utils_src_test;
        else
            VIRTUALX_COMMAND="cmake-utils_src_test" virtualmake;
        fi;
    else
        cmake-utils_src_test;
    fi
}
kde4-base_src_unpack () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ ${BUILD_TYPE} = live ]]; then
        case ${KDE_SCM} in 
            svn)
                migrate_store_dir;
                subversion_src_unpack
            ;;
            git)
                git-2_src_unpack
            ;;
        esac;
    else
        unpack ${A};
    fi
}
kde4-meta_change_cmakelists () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    pushd "${S}" > /dev/null;
    comment_all_add_subdirectory ./;
    if [[ -f CMakeLists.txt ]]; then
        sed -e '/add_subdirectory[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' -e '/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' -i CMakeLists.txt || die "${LINENO}: cmake sed died";
    fi;
    if [[ -z ${KMNOMODULE} ]]; then
        find "${S}"/${KMMODULE} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: died in KMMODULE section";
        _change_cmakelists_parent_dirs ${KMMODULE};
    fi;
    local i;
    for i in ${KMEXTRACTONLY};
    do
        if [[ -d ${i} && -f ${i}/../CMakeLists.txt ]]; then
            sed -e "/([[:space:]]*$(basename $i)[[:space:]]*)/s/^/#DONOTCOMPILE /" -i ${i}/../CMakeLists.txt || die "${LINENO}: sed died while working in the KMEXTRACTONLY section while processing ${i}";
        fi;
    done;
    for i in ${KMCOMPILEONLY};
    do
        debug-print "${LINENO}: KMCOMPILEONLY, processing ${i}";
        find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' -e '/install(.*)/{s/^/#DONOTINSTALL /;}' -e '/^install(/,/)/{s/^/#DONOTINSTALL /;}' -e '/kde4_install_icons(.*)/{s/^/#DONOTINSTALL /;}' || die "${LINENO}: sed died in the KMCOMPILEONLY section while processing ${i}";
        _change_cmakelists_parent_dirs ${i};
    done;
    for i in ${KMEXTRA};
    do
        debug-print "${LINENO}: KMEXTRA section, processing ${i}";
        find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}";
        _change_cmakelists_parent_dirs ${i};
    done;
    for i in ${KMEXTRA_NONFATAL};
    do
        if [[ -d "${S}"/${i} ]]; then
            find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}";
            _change_cmakelists_parent_dirs ${i};
        fi;
    done;
    case ${KMNAME} in 
        kdebase-workspace | kde-workspace)
            if [[ ${PN} != kdebase-startkde && -f CMakeLists.txt ]]; then
                sed -e '/startkde/s/^/#DONOTINSTALL /' -i CMakeLists.txt || die "${LINENO}: sed died in the kdebase-startkde collision prevention section";
            fi;
            if [[ ${PN} != libkworkspace ]]; then
                sed -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' -i CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip config install and fix EXPORT section";
            fi
        ;;
        kdebase-runtime | kde-runtime)
            if [[ ${PN} != kdebase-data && -f CMakeLists.txt ]]; then
                sed -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' -i CMakeLists.txt || die "Sed to exclude bin/kde4 failed";
            fi
        ;;
        kdenetwork)
            sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' -i CMakeLists.txt || die "failed to disable hardcoded checks"
        ;;
        kdepim)
            sed -r -e '/find_package\(KdepimLibs/s/REQUIRED//' -e '/find_package\((KdepimLibs|Boost|QGpgme|Akonadi|ZLIB|Strigi|SharedDesktopOntologies|Soprano|Nepomuk)/{/macro_optional_/!s/find/macro_optional_&/}' -e '/macro_log_feature\((Boost|QGPGME|Akonadi|ZLIB|STRIGI|SHAREDDESKTOPONTOLOGIES|Soprano|Nepomuk)_FOUND/s/ TRUE / FALSE /' -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' -i CMakeLists.txt || die "failed to disable hardcoded checks";
            if ( has kontact ${IUSE//+} && use kontact ) || [[ ${PN} = kontact ]]; then
                sed -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' -i kontact/plugins/CMakeLists.txt || die 'failed to override build logic';
            fi;
            if [[ $(get_kde_version) < 4.5 ]]; then
                case ${PN} in 
                    kalarm | kmailcvt | kontact | korganizer | korn)
                        sed -n -e '/qt4_generate_dbus_interface(.*org\.kde\.kmail\.\(kmail\|mailcomposer\)\.xml/p' -e '/add_custom_target(kmail_xml /,/)/p' -i kmail/CMakeLists.txt || die "uncommenting xml failed";
                        _change_cmakelists_parent_dirs kmail
                    ;;
                esac;
            fi
        ;;
        kdewebdev)
            sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' -e 's/find_package(LibXml2 REQUIRED)/macro_optional_find_package(LibXml2)/' -e 's/find_package(LibXslt REQUIRED)/macro_optional_find_package(LibXslt)/' -e 's/find_package(Boost REQUIRED)/macro_optional_find_package(Boost)/' -i CMakeLists.txt || die "failed to disable hardcoded checks"
        ;;
        koffice)
            if [[ ${PN} != koffice-data ]]; then
                sed -e '/install(.*FindKOfficeLibs.cmake/,/)/ d' -i cmake/modules/CMakeLists.txt || die "${LINENO}: sed died in collision prevention section";
                sed -e '/install(.\+config-openexr\.h.\+)/d' -i CMakeLists.txt || die "${LINENO}: sed died in collision prevention section";
            fi
        ;;
    esac;
    popd > /dev/null
}
kde4-meta_create_extractlists () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ $(get_kde_version) < 4.5 ]] && has handbook ${IUSE//+} && use handbook && [[ -z ${KMNOMODULE} ]]; then
        KMEXTRA_NONFATAL+="
			doc/${KMMODULE##*/}";
    fi;
    if [[ -z ${KMNOMODULE} ]] && ( [[ ${KDE_HANDBOOK} == always ]] || ( [[ ${KDE_HANDBOOK} == optional ]] && use handbook ) ); then
        KMEXTRA_NONFATAL+=" doc/${KMMODULE##*/}";
    fi;
    case ${KMNAME} in 
        kdebase | kdebase-apps | kde-baseapps)
            KMEXTRACTONLY+="
				config-apps.h.cmake
				ConfigureChecks.cmake"
        ;;
        kdebase-runtime | kde-runtime)
            KMEXTRACTONLY+="
				config-runtime.h.cmake"
        ;;
        kdebase-workspace | kde-workspace)
            KMEXTRACTONLY+="
				config-unix.h.cmake
				ConfigureChecks.cmake
				config-workspace.h.cmake
				config-X11.h.cmake
				startkde.cmake
				KDE4WorkspaceConfig.cmake.in"
        ;;
        kdegames)
            if [[ ${PN} != libkdegames ]]; then
                KMEXTRACTONLY+="
					libkdegames/";
                KMLOADLIBS="${KMLOADLIBS} libkdegames";
            fi
        ;;
        kdepim)
            if [[ ${PN} != libkdepim ]]; then
                KMEXTRACTONLY+="
					libkdepim/";
            fi;
            KMEXTRACTONLY+="
				config-enterprise.h.cmake
				kleopatra/ConfigureChecks.cmake";
            if ! [[ $(get_kde_version) < 4.5 ]]; then
                KMEXTRACTONLY+="
					CTestCustom.cmake
					kdepim-version.h.cmake";
            else
                KMEXTRACTONLY+="
					kdepim-version.h";
            fi;
            if has kontact ${IUSE//+} && use kontact; then
                KMEXTRA+="
					kontact/plugins/${PLUGINNAME:-${PN}}/";
            fi
        ;;
        kdeutils)
            KMEXTRACTONLY+="
				kdeutils-version.h"
        ;;
        koffice)
            KMEXTRACTONLY+="
				filters/config-filters.h.cmake
			";
            case ${PV} in 
                2.[12].*)
                    KMEXTRACTONLY+="
						config-endian.h.cmake
						config-openexr.h.cmake
						config-opengl.h.cmake
						config-prefix.h.cmake"
                ;;
            esac
        ;;
    esac;
    if [[ ${KMNAME} != kdegraphics || ( ( $(get_kde_version) != 4.6 || ${PV} < 4.6.2 ) && $(get_kde_version) < 4.7 ) ]] && ! [[ ${KMNAME} == kdeedu && ( ${PV} == 4.6.4 || ${PV} == 4.6.5 ) ]]; then
        case ${KMNAME} in 
            kdebase-runtime | kde-runtime | kdebase-workspace | kde-workspace | kdeedu | kdegames | kdegraphics)
                case ${PN} in 
                    libkdegames | libkdeedu | libkworkspace)
                        KMEXTRA+="
							cmake/modules/"
                    ;;
                    *)
                        KMCOMPILEONLY+="
							cmake/modules/"
                    ;;
                esac
            ;;
        esac;
    fi;
    debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
}
kde4-meta_pkg_postinst () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-base_pkg_postinst
}
kde4-meta_pkg_postrm () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-base_pkg_postrm
}
kde4-meta_pkg_preinst () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-base_pkg_preinst
}
kde4-meta_pkg_setup () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-base_pkg_setup
}
kde4-meta_src_compile () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-base_src_compile "$@"
}
kde4-meta_src_configure () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
        mycmakeargs=(${mycmakeargs});
    fi;
    case ${KMNAME} in 
        kdewebdev)
            mycmakeargs=(-DWITH_KdepimLibs=OFF -DWITH_LibXml2=OFF -DWITH_LibXslt=OFF -DWITH_Boost=OFF -DWITH_LibTidy=OFF "${mycmakeargs[@]}")
        ;;
    esac;
    kde4-base_src_configure
}
kde4-meta_src_extract () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ ${BUILD_TYPE} = live ]]; then
        einfo "Exporting parts of working copy to ${S}";
        kde4-meta_create_extractlists;
        case ${KDE_SCM} in 
            svn)
                local rsync_options subdir targetdir wc_path escm;
                rsync_options="--group --links --owner --perms --quiet --exclude=.svn/ --exclude=.git/";
                wc_path="${ESVN_WC_PATH}";
                escm="{ESVN}";
                rsync ${rsync_options} "${wc_path}"/* "${S}" || die "${escm}: can't export toplevel files to '${S}'.";
                if [[ -d "${wc_path}/cmake" ]]; then
                    rsync --recursive ${rsync_options} "${wc_path}/cmake" "${S}" || die "${escm}: can't export cmake files to '${S}'.";
                fi;
                for subdir in $(__list_needed_subdirectories);
                do
                    targetdir="";
                    if [[ $subdir = doc/* && ! -e "$wc_path/$subdir" ]]; then
                        continue;
                    fi;
                    [[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}";
                    rsync --recursive ${rsync_options} "${wc_path}/${subdir%/}" "${S}/${targetdir}" || die "${escm}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'.";
                done
            ;;
        esac;
    else
        local abort tarball tarfile f extractlist postfix;
        KMTARPARAMS+=" --bzip2";
        postfix="bz2";
        case ${KMNAME} in 
            kdebase-apps)
                tarball="kdebase-${PV}.tar.${postfix}"
            ;;
            *)
                tarball="${KMNAME}-${PV}.tar.${postfix}"
            ;;
        esac;
        tarfile="${DISTDIR}/${tarball}";
        topdir="${tarball%.tar.*}/";
        ebegin "Unpacking parts of ${tarball} to ${WORKDIR}";
        kde4-meta_create_extractlists;
        for f in cmake/ CMakeLists.txt ConfigureChecks.cmake config.h.cmake;
        do
            extractlist+=" ${topdir}${f}";
        done;
        extractlist+=" $(__list_needed_subdirectories)";
        pushd "${WORKDIR}" > /dev/null;
        [[ -n ${KDE4_STRICTER} ]] && echo 'tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist}';
        if [[ -n ${I_KNOW_WHAT_I_AM_DOING} ]]; then
            tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} || ewarn "tar extract command failed at least partially - continuing anyway";
        else
            tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} 2> /dev/null || echo "tar extract command failed at least partially - continuing anyway";
        fi;
        if [[ ${KMNAME} != ${PN} ]]; then
            mv ${topdir} ${P} || die "Died while moving \"${topdir}\" to \"${P}\"";
        fi;
        popd > /dev/null;
        eend $?;
        if [[ -n ${KDE4_STRICTER} ]]; then
            for f in $(__list_needed_subdirectories fatal);
            do
                if [[ ! -e ${S}/${f#*/} ]]; then
                    eerror "'${f#*/}' is missing";
                    abort=true;
                fi;
            done;
            [[ -n ${abort} ]] && die "There were missing files.";
        fi;
        unset topdir;
    fi
}
kde4-meta_src_install () 
{ 
    debug-print-function $FUNCNAME "$@";
    local doc;
    for doc in "${S}/${KMMODULE}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
    do
        [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}";
    done;
    kde4-base_src_install
}
kde4-meta_src_prepare () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    kde4-meta_change_cmakelists;
    kde4-base_src_prepare
}
kde4-meta_src_test () 
{ 
    debug-print-function $FUNCNAME "$@";
    if [[ -n $I_KNOW_WHAT_I_AM_DOING ]]; then
        kde4-base_src_test;
    else
        einfo "Tests disabled";
    fi
}
kde4-meta_src_unpack () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ ${BUILD_TYPE} = live ]]; then
        case "${KDE_SCM}" in 
            svn)
                migrate_store_dir;
                S="${WORKDIR}/${P}";
                mkdir -p "${S}";
                ESVN_RESTRICT="export" subversion_src_unpack;
                subversion_wc_info;
                subversion_bootstrap
            ;;
            git)
                git-2_src_unpack
            ;;
        esac;
    fi;
    kde4-meta_src_extract
}
load_library_dependencies () 
{ 
    local pn i depsfile;
    ebegin "Injecting library dependencies from '${KMLOADLIBS}'";
    i=0;
    for pn in ${KMLOADLIBS};
    do
        ((i++));
        depsfile="${EPREFIX}/var/lib/kde/${pn}";
        [[ -r ${depsfile} ]] || depsfile="${EPREFIX}/var/lib/kde/${pn}:$(get_kde_version)";
        [[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}.";
        sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || die "Failed to include library dependencies for ${pn}";
    done;
    eend $?
}
make_desktop_entry () 
{ 
    [[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
    local exec=${1};
    local name=${2:-${PN}};
    local icon=${3:-${PN}};
    local type=${4};
    local fields=${5};
    if [[ -z ${type} ]]; then
        local catmaj=${CATEGORY%%-*};
        local catmin=${CATEGORY##*-};
        case ${catmaj} in 
            app)
                case ${catmin} in 
                    accessibility)
                        type=Accessibility
                    ;;
                    admin)
                        type=System
                    ;;
                    antivirus)
                        type=System
                    ;;
                    arch)
                        type=Archiving
                    ;;
                    backup)
                        type=Archiving
                    ;;
                    cdr)
                        type=DiscBurning
                    ;;
                    dicts)
                        type=Dictionary
                    ;;
                    doc)
                        type=Documentation
                    ;;
                    editors)
                        type=TextEditor
                    ;;
                    emacs)
                        type=TextEditor
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    laptop)
                        type=HardwareSettings
                    ;;
                    office)
                        type=Office
                    ;;
                    pda)
                        type=PDA
                    ;;
                    vim)
                        type=TextEditor
                    ;;
                    xemacs)
                        type=TextEditor
                    ;;
                esac
            ;;
            dev)
                type="Development"
            ;;
            games)
                case ${catmin} in 
                    action | fps)
                        type=ActionGame
                    ;;
                    arcade)
                        type=ArcadeGame
                    ;;
                    board)
                        type=BoardGame
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    kids)
                        type=KidsGame
                    ;;
                    puzzle)
                        type=LogicGame
                    ;;
                    roguelike)
                        type=RolePlaying
                    ;;
                    rpg)
                        type=RolePlaying
                    ;;
                    simulation)
                        type=Simulation
                    ;;
                    sports)
                        type=SportsGame
                    ;;
                    strategy)
                        type=StrategyGame
                    ;;
                esac;
                type="Game;${type}"
            ;;
            gnome)
                type="Gnome;GTK"
            ;;
            kde)
                type="KDE;Qt"
            ;;
            mail)
                type="Network;Email"
            ;;
            media)
                case ${catmin} in 
                    gfx)
                        type=Graphics
                    ;;
                    *)
                        case ${catmin} in 
                            radio)
                                type=Tuner
                            ;;
                            sound)
                                type=Audio
                            ;;
                            tv)
                                type=TV
                            ;;
                            video)
                                type=Video
                            ;;
                        esac;
                        type="AudioVideo;${type}"
                    ;;
                esac
            ;;
            net)
                case ${catmin} in 
                    dialup)
                        type=Dialup
                    ;;
                    ftp)
                        type=FileTransfer
                    ;;
                    im)
                        type=InstantMessaging
                    ;;
                    irc)
                        type=IRCClient
                    ;;
                    mail)
                        type=Email
                    ;;
                    news)
                        type=News
                    ;;
                    nntp)
                        type=News
                    ;;
                    p2p)
                        type=FileTransfer
                    ;;
                    voip)
                        type=Telephony
                    ;;
                esac;
                type="Network;${type}"
            ;;
            sci)
                case ${catmin} in 
                    astro*)
                        type=Astronomy
                    ;;
                    bio*)
                        type=Biology
                    ;;
                    calc*)
                        type=Calculator
                    ;;
                    chem*)
                        type=Chemistry
                    ;;
                    elec*)
                        type=Electronics
                    ;;
                    geo*)
                        type=Geology
                    ;;
                    math*)
                        type=Math
                    ;;
                    physics)
                        type=Physics
                    ;;
                    visual*)
                        type=DataVisualization
                    ;;
                esac;
                type="Education;Science;${type}"
            ;;
            sys)
                type="System"
            ;;
            www)
                case ${catmin} in 
                    client)
                        type=WebBrowser
                    ;;
                esac;
                type="Network;${type}"
            ;;
            *)
                type=
            ;;
        esac;
    fi;
    if [ "${SLOT}" == "0" ]; then
        local desktop_name="${PN}";
    else
        local desktop_name="${PN}-${SLOT}";
    fi;
    local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
    type=${type%;}${type:+;};
    eshopts_push -s extglob;
    if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
        ewarn "As described in the Icon Theme Specification, icon file extensions are not";
        ewarn "allowed in .desktop files if the value is not an absolute path.";
        icon=${icon%.@(xpm|png|svg)};
    fi;
    eshopts_pop;
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type}
EOF

    if [[ ${fields:-=} != *=* ]]; then
        ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}";
        fields="Path=${fields}";
    fi;
    [[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}";
    ( insinto /usr/share/applications;
    doins "${desktop}" ) || die "installing desktop file failed"
}
make_session_desktop () 
{ 
    [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
    [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
    local title=$1;
    local command=$2;
    local desktop=${T}/${wm:-${PN}}.desktop;
    shift 2;
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF

    ( insinto /usr/share/xsessions;
    doins "${desktop}" )
}
make_wrapper () 
{ 
    local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
    local tmpwrapper=$(emktemp);
    cat > "${tmpwrapper}"  <<EOF
#!/bin/sh
cd "${chdir:-.}"
if [ -n "${libdir}" ] ; then
	if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
		export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
	else
		export LD_LIBRARY_PATH="${libdir}"
	fi
fi
exec ${bin} "\$@"
EOF

    chmod go+rx "${tmpwrapper}";
    if [[ -n ${path} ]]; then
        ( exeinto "${path}";
        newexe "${tmpwrapper}" "${wrapper}" ) || die;
    else
        newbin "${tmpwrapper}" "${wrapper}" || die;
    fi
}
migrate_store_dir () 
{ 
    if [[ ${KDE_SCM} != svn ]]; then
        die "migrate_store_dir() only makes sense for subversion";
    fi;
    local cleandir="${ESVN_STORE_DIR}/KDE";
    if [[ -d ${cleandir} ]]; then
        ewarn "'${cleandir}' has been found. Moving contents to new location.";
        addwrite "${ESVN_STORE_DIR}";
        local module;
        if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then
            for module in `find . -maxdepth 1 -type d -name [a-z0-9]\*`;
            do
                module="${module#./}";
                mkdir -p "${ESVN_STORE_DIR}/kdebase-${module}" && mv -f "${module}" "${ESVN_STORE_DIR}/kdebase-${module}" || die "Failed to move to '${ESVN_STORE_DIR}/kdebase-${module}'.";
            done;
            popd > /dev/null;
            rm -fr "${cleandir}/kdebase" || die "Failed to remove ${cleandir}/kdebase. You need to remove it manually.";
        fi;
        local pkg;
        for pkg in "${cleandir}"/*;
        do
            mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'";
        done;
        rmdir "${cleandir}" || die "Could not move obsolete KDE store dir.  Please move '${cleandir}' contents to appropriate location (possibly ${ESVN_STORE_DIR}) and manually remove '${cleandir}' in order to continue.";
    fi;
    if ! has kde4-meta ${INHERITED}; then
        case ${KMNAME} in 
            extragear* | playground*)
                local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}";
                if [[ -d "${scmlocalpath}" ]]; then
                    local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`";
                    ewarn "'${scmlocalpath}' has been found.";
                    ewarn "Moving contents to new location: ${destdir}";
                    addwrite "${ESVN_STORE_DIR}";
                    mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${scmlocalpath}" "${destdir}" || die "Failed to move to '${scmlocalpath}'";
                    rmdir "`dirname "${scmlocalpath}"`" 2> /dev/null;
                fi
            ;;
        esac;
    fi
}
multilib_env () 
{ 
    local CTARGET=${1:-${CTARGET}};
    case ${CTARGET} in 
        x86_64*)
            export CFLAGS_x86=${CFLAGS_x86--m32};
            export CHOST_x86=${CTARGET/x86_64/i686};
            export CTARGET_x86=${CHOST_x86};
            if [[ ${SYMLINK_LIB} == "yes" ]]; then
                export LIBDIR_x86="lib32";
            else
                export LIBDIR_x86="lib";
            fi;
            export CFLAGS_amd64=${CFLAGS_amd64--m64};
            export CHOST_amd64=${CTARGET};
            export CTARGET_amd64=${CHOST_amd64};
            export LIBDIR_amd64="lib64";
            export CFLAGS_x32=${CFLAGS_x32--mx32};
            export CHOST_x32=${CTARGET};
            export CTARGET_x32=${CHOST_x32};
            export LIBDIR_x32="libx32";
            : ${MULTILIB_ABIS=amd64 x86};
            : ${DEFAULT_ABI=amd64}
        ;;
        mips64*)
            export CFLAGS_o32=${CFLAGS_o32--mabi=32};
            export CHOST_o32=${CTARGET/mips64/mips};
            export CTARGET_o32=${CHOST_o32};
            export LIBDIR_o32="lib";
            export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
            export CHOST_n32=${CTARGET};
            export CTARGET_n32=${CHOST_n32};
            export LIBDIR_n32="lib32";
            export CFLAGS_n64=${CFLAGS_n64--mabi=64};
            export CHOST_n64=${CTARGET};
            export CTARGET_n64=${CHOST_n64};
            export LIBDIR_n64="lib64";
            : ${MULTILIB_ABIS=n64 n32 o32};
            : ${DEFAULT_ABI=n32}
        ;;
        powerpc64*)
            export CFLAGS_ppc=${CFLAGS_ppc--m32};
            export CHOST_ppc=${CTARGET/powerpc64/powerpc};
            export CTARGET_ppc=${CHOST_ppc};
            export LIBDIR_ppc="lib";
            export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
            export CHOST_ppc64=${CTARGET};
            export CTARGET_ppc64=${CHOST_ppc64};
            export LIBDIR_ppc64="lib64";
            : ${MULTILIB_ABIS=ppc64 ppc};
            : ${DEFAULT_ABI=ppc64}
        ;;
        s390x*)
            export CFLAGS_s390=${CFLAGS_s390--m31};
            export CHOST_s390=${CTARGET/s390x/s390};
            export CTARGET_s390=${CHOST_s390};
            export LIBDIR_s390="lib";
            export CFLAGS_s390x=${CFLAGS_s390x--m64};
            export CHOST_s390x=${CTARGET};
            export CTARGET_s390x=${CHOST_s390x};
            export LIBDIR_s390x="lib64";
            : ${MULTILIB_ABIS=s390x s390};
            : ${DEFAULT_ABI=s390x}
        ;;
        sparc*)
            export CFLAGS_sparc32=${CFLAGS_sparc32};
            export CHOST_sparc32=${CTARGET/sparc64/sparc};
            export CTARGET_sparc32=${CHOST_sparc32};
            export LIBDIR_sparc32="lib";
            export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
            export CHOST_sparc64=${CTARGET};
            export CTARGET_sparc64=${CHOST_sparc64};
            export LIBDIR_sparc64="lib64";
            : ${MULTILIB_ABIS=sparc64 sparc32};
            : ${DEFAULT_ABI=sparc64}
        ;;
        *)
            : ${MULTILIB_ABIS=default};
            : ${DEFAULT_ABI=default}
        ;;
    esac;
    export MULTILIB_ABIS DEFAULT_ABI
}
multilib_toolchain_setup () 
{ 
    local v vv;
    export ABI=$1;
    if [[ ${__DEFAULT_ABI_SAVED} == "true" ]]; then
        for v in CHOST CBUILD AS CC CXX LD;
        do
            vv="__abi_saved_${v}";
            export ${v}="${!vv}";
            unset ${vv};
        done;
        unset __DEFAULT_ABI_SAVED;
    fi;
    if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
        for v in CHOST CBUILD AS CC CXX LD;
        do
            export __abi_saved_${v}="${!v}";
        done;
        export __DEFAULT_ABI_SAVED="true";
        export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
        export AS="$(tc-getAS) $(get_abi_ASFLAGS)";
        export CC="$(tc-getCC) $(get_abi_CFLAGS)";
        export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
        export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
        export CHOST=$(get_abi_CHOST $1);
        export CBUILD=$(get_abi_CHOST $1);
    fi
}
newicon () 
{ 
    ( insinto /usr/share/pixmaps;
    newins "$@" )
}
newmenu () 
{ 
    ( insinto /usr/share/applications;
    newins "$@" )
}
no-as-needed () 
{ 
    case $($(tc-getLD) -v 2>&1 </dev/null) in 
        *GNU*)
            echo "-Wl,--no-as-needed"
        ;;
    esac
}
nonfatal () 
{ 
    if has "${EAPI:-0}" 0 1 2 3 3_pre2; then
        die "$FUNCNAME() not supported in this EAPI";
    fi;
    if [[ $# -lt 1 ]]; then
        die "$FUNCNAME(): Missing argument";
    fi;
    PORTAGE_NONFATAL=1 "$@"
}
number_abis () 
{ 
    set -- `get_install_abis`;
    echo $#
}
path_exists () 
{ 
    local opt=$1;
    [[ ${opt} == -[ao] ]] && shift || opt="-a";
    [[ $# -eq 0 ]] && return 1;
    local p r=0;
    for p in "$@";
    do
        [[ -e ${p} ]];
        : $(( r += $? ));
    done;
    case ${opt} in 
        -a)
            return $(( r != 0 ))
        ;;
        -o)
            return $(( r == $# ))
        ;;
    esac
}
pkg_nofetch () 
{ 
    _eapi0_pkg_nofetch "$@"
}
pkg_postinst () 
{ 
    kde4-meta_pkg_postinst "$@"
}
pkg_postrm () 
{ 
    kde4-meta_pkg_postrm "$@"
}
pkg_preinst () 
{ 
    kde4-meta_pkg_preinst "$@"
}
pkg_setup () 
{ 
    kde4-meta_pkg_setup "$@"
}
preserve_old_lib () 
{ 
    if [[ ${EBUILD_PHASE} != "preinst" ]]; then
        eerror "preserve_old_lib() must be called from pkg_preinst() only";
        die "Invalid preserve_old_lib() usage";
    fi;
    [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
    has preserve-libs ${FEATURES} && return 0;
    local lib dir;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        dir=${lib%/*};
        dodir ${dir} || die "dodir ${dir} failed";
        cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
        touch "${D}"/${lib};
    done
}
preserve_old_lib_notify () 
{ 
    if [[ ${EBUILD_PHASE} != "postinst" ]]; then
        eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
        die "Invalid preserve_old_lib_notify() usage";
    fi;
    has preserve-libs ${FEATURES} && return 0;
    local lib notice=0;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        if [[ ${notice} -eq 0 ]]; then
            notice=1;
            ewarn "Old versions of installed libraries were detected on your system.";
            ewarn "In order to avoid breaking packages that depend on these old libs,";
            ewarn "the libraries are not being removed.  You need to run revdep-rebuild";
            ewarn "in order to remove these old dependencies.  If you do not have this";
            ewarn "helper program, simply emerge the 'gentoolkit' package.";
            ewarn;
        fi;
        [[ ${PN} == "mpfr" ]] && lib=${lib##*/};
        ewarn "  # revdep-rebuild --library '${lib}'";
    done;
    if [[ ${notice} -eq 1 ]]; then
        ewarn;
        ewarn "Once you've finished running revdep-rebuild, it should be safe to";
        ewarn "delete the old libraries.  Here is a copy & paste for the lazy:";
        for lib in "$@";
        do
            ewarn "  # rm '${lib}'";
        done;
    fi
}
raw-ldflags () 
{ 
    local x input="$@";
    [[ -z ${input} ]] && input=${LDFLAGS};
    set --;
    for x in ${input};
    do
        x=${x#-Wl,};
        set -- "$@" ${x//,/ };
    done;
    echo "$@"
}
register_success_hook () 
{ 
    local x;
    for x in $*;
    do
        hasq $x $EBUILD_SUCCESS_HOOKS || export EBUILD_SUCCESS_HOOKS="$EBUILD_SUCCESS_HOOKS $x";
    done
}
replace-cpu-flags () 
{ 
    local newcpu="$#";
    newcpu="${!newcpu}";
    while [ $# -gt 1 ]; do
        replace-flags "-march=${1}" "-march=${newcpu}";
        replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
        replace-flags "-mtune=${1}" "-mtune=${newcpu}";
        shift;
    done;
    return 0
}
replace-flags () 
{ 
    [[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#";
    local f fset;
    declare -a new_CFLAGS new_CXXFLAGS new_FFLAGS new_FCFLAGS;
    for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS;
    do
        for f in ${!fset};
        do
            [[ ${f} == ${1} ]] && f=${2};
            eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f};
        done;
        eval export ${fset}=\${new_${fset}\[*]};
    done;
    return 0
}
replace-sparc64-flags () 
{ 
    local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
    if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    export CFLAGS CXXFLAGS
}
replace_all_version_separators () 
{ 
    local c=($(get_all_version_components "${2:-${PV}}"));
    c=${c[@]//[-._]/$1};
    echo ${c// }
}
replace_version_separator () 
{ 
    eshopts_push -s extglob;
    local w c v="${3:-${PV}}";
    declare -i i found=0;
    w=${1:-1};
    c=($(get_all_version_components ${v}));
    if [[ ${w} != *[[:digit:]]* ]]; then
        for ((i = 0; i < ${#c[@]}; i++))
        do
            if [[ ${c[i]} == ${w} ]]; then
                c[i]=${2};
                break;
            fi;
        done;
    else
        for ((i = 0; i < ${#c[@]}; i++))
        do
            if [[ -n "${c[i]//[^-._]}" ]]; then
                found+=1;
                if ((found == w)); then
                    c[i]=${2};
                    break;
                fi;
            fi;
        done;
    fi;
    c=${c[*]};
    echo ${c// };
    eshopts_pop
}
save_library_dependencies () 
{ 
    local depsfile="${T}/${PN}";
    ebegin "Saving library dependencies in ${depsfile##*/}";
    echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || die "Failed to save the library dependencies.";
    eend $?
}
seq () 
{ 
    local p=$(type -P seq);
    if [[ -n ${p} ]]; then
        "${p}" "$@";
        return $?;
    fi;
    case $# in 
        1)
            min=1 max=$1 step=1
        ;;
        2)
            min=$1 max=$2 step=1
        ;;
        3)
            min=$1 max=$3 step=$2
        ;;
        *)
            die "seq called with wrong number of arguments"
        ;;
    esac;
    p=$(type -P jot);
    if [[ -n ${p} ]]; then
        local reps;
        if [[ ${step} != 0 ]]; then
            reps=$(( (max - min) / step + 1 ));
        else
            reps=0;
        fi;
        jot $reps $min $max $step;
        return $?;
    fi;
    while :; do
        [[ $max < $min && $step > 0 ]] && break;
        [[ $min < $max && $step < 0 ]] && break;
        echo $min;
        : $(( min += step ));
    done;
    return 0
}
setup-allowed-flags () 
{ 
    if [[ -z ${ALLOWED_FLAGS} ]]; then
        export ALLOWED_FLAGS="-pipe";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident -fpermissive";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w";
    fi;
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all 		-fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer";
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs 		-mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 		-mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow 		-mno-popcnt -mno-abm 		-mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt 		-msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu 		-mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe 		-mtls-direct-seg-refs -mno-tls-direct-seg-refs 		-mflat -mno-flat -mno-faster-structs -mfaster-structs 		-m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC 		-mlive-g0 -mcmodel -mstack-bias -mno-stack-bias 		-msecure-plt -m*-toc -D* -U*";
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fma4 -mno-movbe -mno-xop -mno-lwp";
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fsgsbase -mno-rdrnd -mno-f16c 		-mno-bmi -mno-tbm";
    export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks";
    return 0
}
src_compile () 
{ 
    kde4-meta_src_compile "$@"
}
src_configure () 
{ 
    kde4-meta_src_configure "$@"
}
src_install () 
{ 
    kde4-meta_src_install "$@"
}
src_prepare () 
{ 
    kde4-meta_src_prepare "$@"
}
src_test () 
{ 
    kde4-meta_src_test "$@"
}
src_unpack () 
{ 
    kde4-meta_src_unpack "$@"
}
strip-flags () 
{ 
    local x y flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS;
    setup-allowed-flags;
    local NEW_CFLAGS="";
    local NEW_CXXFLAGS="";
    local NEW_FFLAGS="";
    local NEW_FCFLAGS="";
    if has "~$(tc-arch)" ${ACCEPT_KEYWORDS}; then
        ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}";
    fi;
    set -f;
    for x in ${CFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_CFLAGS="${NEW_CFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    for x in ${CXXFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    for x in ${FFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_FFLAGS="${NEW_FFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    for x in ${FCFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_FCFLAGS="${NEW_FCFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
        NEW_CFLAGS="${NEW_CFLAGS} -O2";
    fi;
    if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
        NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2";
    fi;
    if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then
        NEW_FFLAGS="${NEW_FFLAGS} -O2";
    fi;
    if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then
        NEW_FCFLAGS="${NEW_FCFLAGS} -O2";
    fi;
    set +f;
    export CFLAGS="${NEW_CFLAGS}";
    export CXXFLAGS="${NEW_CXXFLAGS}";
    export FFLAGS="${NEW_FFLAGS}";
    export FCFLAGS="${NEW_FCFLAGS}";
    return 0
}
strip-linguas () 
{ 
    local ls newls nols;
    if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
        local op=$1;
        shift;
        ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
        shift;
        local d f;
        for d in "$@";
        do
            if [[ ${op} == "-u" ]]; then
                newls=${ls};
            else
                newls="";
            fi;
            for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
            do
                if [[ ${op} == "-i" ]]; then
                    has ${f} ${ls} && newls="${newls} ${f}";
                else
                    has ${f} ${ls} || newls="${newls} ${f}";
                fi;
            done;
            ls=${newls};
        done;
    else
        ls="$@";
    fi;
    nols="";
    newls="";
    for f in ${LINGUAS};
    do
        if has ${f} ${ls}; then
            newls="${newls} ${f}";
        else
            nols="${nols} ${f}";
        fi;
    done;
    [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
    export LINGUAS=${newls:1}
}
strip-unsupported-flags () 
{ 
    export CFLAGS=$(test-flags-CC ${CFLAGS});
    export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS});
    export FFLAGS=$(test-flags-F77 ${FFLAGS});
    export FCFLAGS=$(test-flags-FC ${FCFLAGS})
}
tc-arch () 
{ 
    tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel () 
{ 
    tc-ninja_magic_to_arch kern "$@"
}
tc-endian () 
{ 
    local host=$1;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    host=${host%%-*};
    case ${host} in 
        alpha*)
            echo big
        ;;
        arm*b*)
            echo big
        ;;
        arm*)
            echo little
        ;;
        cris*)
            echo little
        ;;
        hppa*)
            echo big
        ;;
        i?86*)
            echo little
        ;;
        ia64*)
            echo little
        ;;
        m68*)
            echo big
        ;;
        mips*l*)
            echo little
        ;;
        mips*)
            echo big
        ;;
        powerpc*)
            echo big
        ;;
        s390*)
            echo big
        ;;
        sh*b*)
            echo big
        ;;
        sh*)
            echo little
        ;;
        sparc*)
            echo big
        ;;
        x86_64*)
            echo little
        ;;
        *)
            echo wtf
        ;;
    esac
}
tc-export () 
{ 
    local var;
    for var in "$@";
    do
        [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
        eval tc-get${var} > /dev/null;
    done
}
tc-getAR () 
{ 
    tc-getPROG AR ar "$@"
}
tc-getAS () 
{ 
    tc-getPROG AS as "$@"
}
tc-getBUILD_CC () 
{ 
    local v;
    for v in CC_FOR_BUILD BUILD_CC HOSTCC;
    do
        if [[ -n ${!v} ]]; then
            export BUILD_CC=${!v};
            echo "${!v}";
            return 0;
        fi;
    done;
    local search=;
    if [[ -n ${CBUILD} ]]; then
        search=$(type -p ${CBUILD}-gcc);
        search=${search##*/};
    fi;
    search=${search:-gcc};
    export BUILD_CC=${search};
    echo "${search}"
}
tc-getCC () 
{ 
    tc-getPROG CC gcc "$@"
}
tc-getCPP () 
{ 
    tc-getPROG CPP cpp "$@"
}
tc-getCXX () 
{ 
    tc-getPROG CXX g++ "$@"
}
tc-getDLLWRAP () 
{ 
    tc-getPROG DLLWRAP dllwrap "$@"
}
tc-getF77 () 
{ 
    tc-getPROG F77 gfortran "$@"
}
tc-getFC () 
{ 
    tc-getPROG FC gfortran "$@"
}
tc-getGCJ () 
{ 
    tc-getPROG GCJ gcj "$@"
}
tc-getLD () 
{ 
    tc-getPROG LD ld "$@"
}
tc-getNM () 
{ 
    tc-getPROG NM nm "$@"
}
tc-getOBJCOPY () 
{ 
    tc-getPROG OBJCOPY objcopy "$@"
}
tc-getPKG_CONFIG () 
{ 
    tc-getPROG PKG_CONFIG pkg-config "$@"
}
tc-getPROG () 
{ 
    local var=$1;
    local prog=$2;
    if [[ -n ${!var} ]]; then
        echo "${!var}";
        return 0;
    fi;
    local search=;
    [[ -n $3 ]] && search=$(type -p "$3-${prog}");
    [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
    [[ -n ${search} ]] && prog=${search##*/};
    export ${var}=${prog};
    echo "${!var}"
}
tc-getRANLIB () 
{ 
    tc-getPROG RANLIB ranlib "$@"
}
tc-getRC () 
{ 
    tc-getPROG RC windres "$@"
}
tc-getSTRIP () 
{ 
    tc-getPROG STRIP strip "$@"
}
tc-has-openmp () 
{ 
    local base="${T}/test-tc-openmp";
    cat > "${base}.c"  <<-EOF
#include <omp.h>
int main() {
int nthreads, tid, ret = 0;
#pragma omp parallel private(nthreads, tid)
{
tid = omp_get_thread_num();
nthreads = omp_get_num_threads(); ret += tid + nthreads;
}
return ret;
}
EOF

    $(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &>/dev/null;
    local ret=$?;
    rm -f "${base}"*;
    return ${ret}
}
tc-has-tls () 
{ 
    local base="${T}/test-tc-tls";
    cat > "${base}.c"  <<-EOF
int foo(int *i) {
static __thread int j = 0;
return *i ? j : *i;
}
EOF

    local flags;
    case $1 in 
        -s)
            flags="-S"
        ;;
        -c)
            flags="-c"
        ;;
        -l)

        ;;
        -*)
            die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
        ;;
    esac;
    : ${flags:=-fPIC -shared -Wl,-z,defs};
    [[ $1 == -* ]] && shift;
    $(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &>/dev/null;
    local ret=$?;
    rm -f "${base}"*;
    return ${ret}
}
tc-is-cross-compiler () 
{ 
    return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-hardfloat () 
{ 
    [[ ${CTARGET//_/-} == *-hardfloat-* ]] && echo "yes" || echo "no"
}
tc-is-softfloat () 
{ 
    case ${CTARGET} in 
        bfin* | h8300*)
            echo "only"
        ;;
        *)
            [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
        ;;
    esac
}
tc-is-static-only () 
{ 
    local host=${CTARGET:-${CHOST}};
    return $([[ ${host} == *-mint* ]])
}
tc-ninja_magic_to_arch () 
{ 
    function ninj () 
    { 
        [[ ${type} == "kern" ]] && echo $1 || echo $2
    };
    local type=$1;
    local host=$2;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    case ${host} in 
        alpha*)
            echo alpha
        ;;
        arm*)
            echo arm
        ;;
        avr*)
            ninj avr32 avr
        ;;
        bfin*)
            ninj blackfin bfin
        ;;
        cris*)
            echo cris
        ;;
        hppa*)
            ninj parisc hppa
        ;;
        i?86*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then
                echo i386;
            else
                echo x86;
            fi
        ;;
        ia64*)
            echo ia64
        ;;
        m68*)
            echo m68k
        ;;
        mips*)
            echo mips
        ;;
        nios2*)
            echo nios2
        ;;
        nios*)
            echo nios
        ;;
        powerpc*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]]; then
                echo powerpc;
            else
                if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]]; then
                    if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                        echo powerpc;
                    else
                        echo ppc;
                    fi;
                else
                    if [[ ${host} == powerpc64* ]]; then
                        echo ppc64;
                    else
                        if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                            ninj ppc64 ppc;
                        else
                            echo ppc;
                        fi;
                    fi;
                fi;
            fi
        ;;
        s390*)
            echo s390
        ;;
        sh64*)
            ninj sh64 sh
        ;;
        sh*)
            echo sh
        ;;
        sparc64*)
            ninj sparc64 sparc
        ;;
        sparc*)
            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
        ;;
        vax*)
            echo vax
        ;;
        x86_64*freebsd*)
            echo amd64
        ;;
        x86_64*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
                echo x86;
            else
                ninj x86_64 amd64;
            fi
        ;;
        *)
            echo unknown
        ;;
    esac
}
test-flag-CC () 
{ 
    test-flag-PROG "CC" "$1"
}
test-flag-CXX () 
{ 
    test-flag-PROG "CXX" "$1"
}
test-flag-F77 () 
{ 
    test-flag-PROG "F77" "$1"
}
test-flag-FC () 
{ 
    test-flag-PROG "FC" "$1"
}
test-flag-PROG () 
{ 
    local comp=$1;
    local flags="$2";
    [[ -z ${comp} || -z ${flags} ]] && return 1;
    local PROG=$(tc-get${comp});
    ${PROG} ${flags} -c -o /dev/null -xc /dev/null > /dev/null 2>&1
}
test-flags () 
{ 
    test-flags-CC "$@"
}
test-flags-CC () 
{ 
    test-flags-PROG "CC" "$@"
}
test-flags-CXX () 
{ 
    test-flags-PROG "CXX" "$@"
}
test-flags-F77 () 
{ 
    test-flags-PROG "F77" "$@"
}
test-flags-FC () 
{ 
    test-flags-PROG "FC" "$@"
}
test-flags-PROG () 
{ 
    local comp=$1;
    local flags;
    local x;
    shift;
    [[ -z ${comp} ]] && return 1;
    x="";
    for x in "$@";
    do
        test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}";
    done;
    echo "${flags}";
    [[ -n ${flags} ]]
}
test_flag () 
{ 
    die "$0: deprecated, please use test-flags()!"
}
test_version_info () 
{ 
    if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
        return 0;
    else
        return 1;
    fi
}
treecopy () 
{ 
    dest=${!#};
    files_count=$#;
    while (( $# > 1 )); do
        dirstruct=$(dirname "$1");
        mkdir -p "${dest}/${dirstruct}";
        cp -pPR "$1" "${dest}/${dirstruct}";
        shift;
    done
}
unpack_makeself () 
{ 
    local src_input=${1:-${A}};
    local src=$(find_unpackable_file "${src_input}");
    local skip=$2;
    local exe=$3;
    [[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    if [[ -z ${skip} ]]; then
        local ver=$(grep -m1 -a '#.*Makeself' "${src}" | awk '{print $NF}');
        local skip=0;
        exe=tail;
        case ${ver} in 
            1.5.* | 1.6.0-nv)
                skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
            ;;
            2.0 | 2.0.1)
                skip=$(grep -a ^'	'tail "${src}" | awk '{print $2}' | cut -b2-)
            ;;
            2.1.1)
                skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
                (( skip++ ))
            ;;
            2.1.2)
                skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
                (( skip++ ))
            ;;
            2.1.3)
                skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
                (( skip++ ))
            ;;
            2.1.4 | 2.1.5)
                skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
                skip=$(head -n ${skip} "${src}" | wc -c);
                exe="dd"
            ;;
            *)
                eerror "I'm sorry, but I was unable to support the Makeself file.";
                eerror "The version I detected was '${ver}'.";
                eerror "Please file a bug about the file ${shrtsrc} at";
                eerror "http://bugs.gentoo.org/ so that support can be added.";
                die "makeself version '${ver}' not supported"
            ;;
        esac;
        debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
    fi;
    case ${exe} in 
        tail)
            exe="tail -n +${skip} '${src}'"
        ;;
        dd)
            exe="dd ibs=${skip} skip=1 if='${src}'"
        ;;
        *)
            die "makeself cant handle exe '${exe}'"
        ;;
    esac;
    local filetype tmpfile=$(emktemp);
    eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
    filetype=$(file -b "${tmpfile}") || die;
    case ${filetype} in 
        *tar\ archive*)
            eval ${exe} | tar --no-same-owner -xf -
        ;;
        bzip2*)
            eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
        ;;
        gzip*)
            eval ${exe} | tar --no-same-owner -xzf -
        ;;
        compress*)
            eval ${exe} | gunzip | tar --no-same-owner -xf -
        ;;
        *)
            eerror "Unknown filetype \"${filetype}\" ?";
            false
        ;;
    esac;
    assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv () 
{ 
    local src=$(find_unpackable_file "$1");
    local sizeoff_t=$2;
    [[ -z ${src} ]] && die "Could not locate source for '$1'";
    [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
    local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
    local metafile=$(emktemp);
    tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
    local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
    datafile=$(basename "${datafile}");
    local tmpfile=$(emktemp);
    tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
    local iscompressed=$(file -b "${tmpfile}");
    if [[ ${iscompressed:0:8} == "compress" ]]; then
        iscompressed=1;
        mv ${tmpfile}{,.Z};
        gunzip ${tmpfile};
    else
        iscompressed=0;
    fi;
    local istar=$(file -b "${tmpfile}");
    if [[ ${istar:0:9} == "POSIX tar" ]]; then
        istar=1;
    else
        istar=0;
    fi;
    if [ ${iscompressed} -eq 1 ]; then
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
        fi;
    else
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
        fi;
    fi;
    true
}
validate_desktop_entries () 
{ 
    if [[ -x /usr/bin/desktop-file-validate ]]; then
        einfo "Checking desktop entry validity";
        local directories="";
        for d in /usr/share/applications $@;
        do
            [[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
        done;
        if [[ -n ${directories} ]]; then
            for FILE in $(find ${directories} -name "*\.desktop" 							-not -path '*.hidden*' | sort -u 2>/dev/null);
            do
                local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | 								sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
                [[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
            done;
        fi;
        echo "";
    else
        einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
    fi
}
version_compare () 
{ 
    eshopts_push -s extglob;
    local ver_a=${1} ver_b=${2} parts_a parts_b;
    local cur_tok_a cur_tok_b num_part_a num_part_b;
    local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
    parts_a=($(get_all_version_components "${ver_a}" ));
    parts_b=($(get_all_version_components "${ver_b}" ));
    local -i inf_loop=0;
    while true; do
        inf_loop+=1;
        ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
        prev_idx_a=cur_idx_a;
        prev_idx_b=cur_idx_b;
        cur_tok_a=${parts_a[cur_idx_a]};
        cur_tok_b=${parts_b[cur_idx_b]};
        if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
            cur_idx_a+=1;
            [[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
        else
            cur_tok_a=;
        fi;
        if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
            cur_idx_b+=1;
            [[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
        else
            cur_tok_b=;
        fi;
        [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
        [[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
        [[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
        if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
            cur_tok_a=${cur_tok_a%%+(0)};
            cur_tok_b=${cur_tok_b%%+(0)};
            [[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
            [[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
        else
            cur_tok_a=${cur_tok_a##+(0)};
            cur_tok_b=${cur_tok_b##+(0)};
            : ${cur_tok_a:=0};
            : ${cur_tok_b:=0};
            ((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
            ((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
        fi;
    done;
    local letter_a=;
    letter_a=${parts_a[cur_idx_a]};
    if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
        cur_idx_a+=1;
    else
        letter_a=@;
    fi;
    local letter_b=;
    letter_b=${parts_b[cur_idx_b]};
    if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
        cur_idx_b+=1;
    else
        letter_b=@;
    fi;
    [[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
    [[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
    inf_loop=0;
    while true; do
        inf_loop+=1;
        ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
        [[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
        [[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
        cur_tok_a=${parts_a[cur_idx_a]};
        cur_tok_b=${parts_b[cur_idx_b]};
        num_part_a=0;
        num_part_b=0;
        if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
            cur_idx_a+=1;
            num_part_a=${cur_tok_a##+([a-z])};
            num_part_a=${num_part_a##+(0)};
            : ${num_part_a:=0};
            cur_tok_a=${cur_tok_a%%+([0-9])};
        else
            cur_tok_a=;
        fi;
        if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
            cur_idx_b+=1;
            num_part_b=${cur_tok_b##+([a-z])};
            num_part_b=${num_part_b##+(0)};
            : ${num_part_b:=0};
            cur_tok_b=${cur_tok_b%%+([0-9])};
        else
            cur_tok_b=;
        fi;
        if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
            local suffix;
            for suffix in alpha beta pre rc "" p;
            do
                [[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
                [[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
            done;
        else
            if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
                break;
            else
                ((num_part_a < num_part_b)) && eshopts_pop && return 1;
                ((num_part_a > num_part_b)) && eshopts_pop && return 3;
            fi;
        fi;
    done;
    [[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
    [[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
    if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
        die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
    fi;
    num_part_a=${parts_a[cur_idx_a]#r};
    num_part_a=${num_part_a##+(0)};
    : ${num_part_a:=0};
    num_part_b=${parts_b[cur_idx_b]#r};
    num_part_b=${num_part_b##+(0)};
    : ${num_part_b:=0};
    ((num_part_a < num_part_b)) && eshopts_pop && return 1;
    ((num_part_a > num_part_b)) && eshopts_pop && return 3;
    eshopts_pop;
    return 2
}
version_format_string () 
{ 
    local fstr=$1;
    shift;
    set -- $(get_version_components "$@");
    eval echo "${fstr}"
}
version_is_at_least () 
{ 
    local want_s="$1" have_s="${2:-${PVR}}" r;
    version_compare "${want_s}" "${have_s}";
    r=$?;
    case $r in 
        1 | 2)
            return 0
        ;;
        3)
            return 1
        ;;
        *)
            die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
        ;;
    esac
}
version_sort () 
{ 
    eshopts_push -s extglob;
    local items=;
    local -i left=0;
    items=("$@");
    while ((left < ${#items[@]})); do
        local -i lowest_idx=left;
        local -i idx=lowest_idx+1;
        while ((idx < ${#items[@]})); do
            version_compare "${items[lowest_idx]}" "${items[idx]}";
            [[ $? -eq 3 ]] && lowest_idx=idx;
            idx+=1;
        done;
        local tmp=${items[lowest_idx]};
        items[lowest_idx]=${items[left]};
        items[left]=${tmp};
        left+=1;
    done;
    echo ${items[@]};
    eshopts_pop
}
virtualmake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local i=0;
    local retval=0;
    local OLD_SANDBOX_ON="${SANDBOX_ON}";
    local XVFB=$(type -p Xvfb);
    local XHOST=$(type -p xhost);
    local xvfbargs="-screen 0 800x600x24";
    if [[ -n ${maketype} ]]; then
        ewarn "QA: ebuild is exporting \$maketype=${maketype}";
        ewarn "QA: Ebuild should be migrated to use VIRTUALX_COMMAND=${maketype} instead.";
        ewarn "QA: Setting VIRTUALX_COMMAND to \$maketype conveniently for now.";
        VIRTUALX_COMMAND=${maketype};
    fi;
    if [[ -n ${XVFB} && -n ${XHOST} ]] && ( [[ -z ${DISPLAY} ]] || ! ( ${XHOST} &>/dev/null ) ); then
        debug-print "${FUNCNAME}: running Xvfb hack";
        export XAUTHORITY=;
        einfo "Scanning for an open DISPLAY to start Xvfb ...";
        XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i});
        debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}";
        export SANDBOX_ON="0";
        debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
        ${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null & sleep 2;
        local start=${XDISPLAY};
        while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
            if ((XDISPLAY - start > 15)); then
                eerror "'${XVFB} :${XDISPLAY} ${xvfbargs}' returns:";
                echo;
                ${XVFB} :${XDISPLAY} ${xvfbargs};
                echo;
                eerror "If possible, correct the above error and try your emerge again.";
                die "Unable to start Xvfb";
            fi;
            ((XDISPLAY++));
            debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
            ${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null & sleep 2;
        done;
        export SANDBOX_ON="${OLD_SANDBOX_ON}";
        einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ...";
        export DISPLAY=:${XDISPLAY};
        debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\"";
        ${VIRTUALX_COMMAND} "$@";
        retval=$?;
        kill $(cat /tmp/.X${XDISPLAY}-lock);
    else
        debug-print "${FUNCNAME}: attaching to running X display";
        debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\"";
        ${VIRTUALX_COMMAND} "$@";
        retval=$?;
    fi;
    [[ ${retval} -ne 0 ]] && die "${FUNCNAME}: the ${VIRTUALX_COMMAND} failed.";
    return 0
}

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-20 19:21           ` Jeff Cranmer
@ 2011-08-21 18:55             ` walt
  2011-08-24  0:28               ` Jeff Cranmer
  0 siblings, 1 reply; 18+ messages in thread
From: walt @ 2011-08-21 18:55 UTC (permalink / raw
  To: gentoo-user

On 08/20/2011 12:21 PM, Jeff Cranmer wrote:
> /usr/include/KDE/Plasma/../../plasma/service.h:321: error:
 previous definition of 'struct QMetaTypeId<Plasma::Service*>'

Hm, well purely a wild guess, but perhaps /usr/include/plasma/service.h
is left over from an earlier plasma package and the compiler really
shouldn't be using it.  What package does that file belong to?




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-21 18:55             ` walt
@ 2011-08-24  0:28               ` Jeff Cranmer
  2011-08-24  8:05                 ` Yohan Pereira
  0 siblings, 1 reply; 18+ messages in thread
From: Jeff Cranmer @ 2011-08-24  0:28 UTC (permalink / raw
  To: gentoo-user

On Sun, 2011-08-21 at 11:55 -0700, walt wrote:
> On 08/20/2011 12:21 PM, Jeff Cranmer wrote:
> > /usr/include/KDE/Plasma/../../plasma/service.h:321: error:
>  previous definition of 'struct QMetaTypeId<Plasma::Service*>'
> 
> Hm, well purely a wild guess, but perhaps /usr/include/plasma/service.h
> is left over from an earlier plasma package and the compiler really
> shouldn't be using it.  What package does that file belong to?
> 
> 
I don't know.
Pardon my ignorance, but how do I find out?

Thanks

Jeff





^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24  0:28               ` Jeff Cranmer
@ 2011-08-24  8:05                 ` Yohan Pereira
  2011-08-24 21:12                   ` walt
  0 siblings, 1 reply; 18+ messages in thread
From: Yohan Pereira @ 2011-08-24  8:05 UTC (permalink / raw
  To: gentoo-user

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

On Tuesday 23 Aug 2011 20:28:14 Jeff Cranmer wrote:
> Pardon my ignorance, but how do I find out?

run this 
equery belongs /usr/include/plasma/service.h

if you dont have the equery program install it by emerging
app-portage/gentoolkit


-- 

- Yohan Pereira

"A man can do as he will, but not will as he will" - Schopenhauer

[-- Attachment #2: Type: text/html, Size: 2860 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24  8:05                 ` Yohan Pereira
@ 2011-08-24 21:12                   ` walt
  2011-08-24 21:26                     ` Michael Schreckenbauer
                                       ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: walt @ 2011-08-24 21:12 UTC (permalink / raw
  To: gentoo-user

On 08/24/2011 01:05 AM, Yohan Pereira wrote:
> On Tuesday 23 Aug 2011 20:28:14 Jeff Cranmer wrote:
> 
>> Pardon my ignorance, but how do I find out?
 
> run this
> 
> equery belongs /usr/include/plasma/service.h
> 
> if you dont have the equery program install it by emerging
> 
> app-portage/gentoolkit

Seems there is always an alternate way of answering any portage question.
I know "qfile service.h" will do the same thing (emerge portage-utils).

I'll bet there are still more ways that I don't know about yet.  Anyone
have a different trick to do the same thing?





^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24 21:12                   ` walt
@ 2011-08-24 21:26                     ` Michael Schreckenbauer
  2011-08-24 21:27                     ` Alex Schuster
  2011-08-24 21:44                     ` Meik Frischke
  2 siblings, 0 replies; 18+ messages in thread
From: Michael Schreckenbauer @ 2011-08-24 21:26 UTC (permalink / raw
  To: gentoo-user

Am Mittwoch, 24. August 2011, 14:12:53 schrieb walt:
> On 08/24/2011 01:05 AM, Yohan Pereira wrote:
> > On Tuesday 23 Aug 2011 20:28:14 Jeff Cranmer wrote:
> >> Pardon my ignorance, but how do I find out?
> > 
> > run this
> > 
> > equery belongs /usr/include/plasma/service.h
> > 
> > if you dont have the equery program install it by emerging
> > 
> > app-portage/gentoolkit
> 
> Seems there is always an alternate way of answering any portage question.
> I know "qfile service.h" will do the same thing (emerge portage-utils).
> 
> I'll bet there are still more ways that I don't know about yet.  Anyone
> have a different trick to do the same thing?

Hmm, this one...

~ $ find /var/db/pkg -name "CONTENTS" -exec grep -H 
"/usr/include/plasma/service.h" {} \;

/var/db/pkg/kde-base/kdelibs-4.7.0-r1/CONTENTS:obj 
/usr/include/plasma/service.h e9ddea9052c900f1f87c57025a0f36f0 1308840546

Michael




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24 21:12                   ` walt
  2011-08-24 21:26                     ` Michael Schreckenbauer
@ 2011-08-24 21:27                     ` Alex Schuster
  2011-08-24 21:43                       ` Michael Schreckenbauer
  2011-08-24 21:44                     ` Meik Frischke
  2 siblings, 1 reply; 18+ messages in thread
From: Alex Schuster @ 2011-08-24 21:27 UTC (permalink / raw
  To: gentoo-user

walt writes:

> On 08/24/2011 01:05 AM, Yohan Pereira wrote:

> > equery belongs /usr/include/plasma/service.h
> > 
> > if you dont have the equery program install it by emerging
> > 
> > app-portage/gentoolkit
> 
> Seems there is always an alternate way of answering any portage question.
> I know "qfile service.h" will do the same thing (emerge portage-utils).
> 
> I'll bet there are still more ways that I don't know about yet.  Anyone
> have a different trick to do the same thing?

wonko@weird ~ $ grep -r /usr/include/plasma/service.h /var/db/pkg/
/var/db/pkg/kde-base/kdelibs-4.7.0-r1/CONTENTS:obj 
/usr/include/plasma/service.h e9ddea9052c900f1f87c57025a0f36f0 1308840546

Emulating qfile as a shell function for nicer output:

wonko@weird ~ $ myqfile()
> {
> 	grep -r "$1" /var/db/pkg | sed 's#/CONTENTS:.*##g'
> }
wonko@weird ~ $ myqfile /usr/include/plasma/service.h
/var/db/pkg/kde-base/kdelibs-4.7.0-r1

	Wonko



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24 21:27                     ` Alex Schuster
@ 2011-08-24 21:43                       ` Michael Schreckenbauer
  2011-08-24 21:55                         ` Michael Schreckenbauer
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Schreckenbauer @ 2011-08-24 21:43 UTC (permalink / raw
  To: gentoo-user

Am Mittwoch, 24. August 2011, 23:27:46 schrieb Alex Schuster:
> walt writes:
> > On 08/24/2011 01:05 AM, Yohan Pereira wrote:
> > > equery belongs /usr/include/plasma/service.h
> > > 
> > > if you dont have the equery program install it by emerging
> > > 
> > > app-portage/gentoolkit
> > 
> > Seems there is always an alternate way of answering any portage
> > question.
> > I know "qfile service.h" will do the same thing (emerge portage-utils).
> > 
> > I'll bet there are still more ways that I don't know about yet.  Anyone
> > have a different trick to do the same thing?
> 
> wonko@weird ~ $ grep -r /usr/include/plasma/service.h /var/db/pkg/
> /var/db/pkg/kde-base/kdelibs-4.7.0-r1/CONTENTS:obj
> /usr/include/plasma/service.h e9ddea9052c900f1f87c57025a0f36f0 1308840546
> 
> Emulating qfile as a shell function for nicer output:
> 
> wonko@weird ~ $ myqfile()
> 
> > {
> > 
> > 	grep -r "$1" /var/db/pkg | sed 's#/CONTENTS:.*##g'
> > 
> > }
> 
> wonko@weird ~ $ myqfile /usr/include/plasma/service.h
> /var/db/pkg/kde-base/kdelibs-4.7.0-r1

I would use find and grep -H instead of grep -r

On my system your version greps in
~ $ find /var/db/pkg | wc -l
33791

files, while only

~ $find /var/db/pkg -name "CONTENTS" | wc -l
1182

are relevant for the problem at hand ;)

> 	Wonko

Regards,
Michael




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24 21:12                   ` walt
  2011-08-24 21:26                     ` Michael Schreckenbauer
  2011-08-24 21:27                     ` Alex Schuster
@ 2011-08-24 21:44                     ` Meik Frischke
  2 siblings, 0 replies; 18+ messages in thread
From: Meik Frischke @ 2011-08-24 21:44 UTC (permalink / raw
  To: gentoo-user

On 08/24/2011, 14:12:53 walt wrote:
> On 08/24/2011 01:05 AM, Yohan Pereira wrote:
> > On Tuesday 23 Aug 2011 20:28:14 Jeff Cranmer wrote:
> >> Pardon my ignorance, but how do I find out?
> > 
> > run this
> > 
> > equery belongs /usr/include/plasma/service.h
> > 
> > if you dont have the equery program install it by emerging
> > 
> > app-portage/gentoolkit
> 
> Seems there is always an alternate way of answering any portage question.
> I know "qfile service.h" will do the same thing (emerge portage-utils).
> 
> I'll bet there are still more ways that I don't know about yet.  Anyone
> have a different trick to do the same thing?

Well, you could always do it the hard way :

grep -R /usr/include/plasma/service.h /var/db/pkg/*/*/CONTENTS



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user] Re: Plasma-runtime compilation problems
  2011-08-24 21:43                       ` Michael Schreckenbauer
@ 2011-08-24 21:55                         ` Michael Schreckenbauer
  0 siblings, 0 replies; 18+ messages in thread
From: Michael Schreckenbauer @ 2011-08-24 21:55 UTC (permalink / raw
  To: gentoo-user

Am Mittwoch, 24. August 2011, 23:43:09 schrieb Michael Schreckenbauer:
> Am Mittwoch, 24. August 2011, 23:27:46 schrieb Alex Schuster:
> > wonko@weird ~ $ grep -r /usr/include/plasma/service.h /var/db/pkg/
> > /var/db/pkg/kde-base/kdelibs-4.7.0-r1/CONTENTS:obj
> > /usr/include/plasma/service.h e9ddea9052c900f1f87c57025a0f36f0
> > 1308840546
> > 
> > Emulating qfile as a shell function for nicer output:
> > 
> > wonko@weird ~ $ myqfile()
> > 
> > > {
> > > 
> > > 	grep -r "$1" /var/db/pkg | sed 's#/CONTENTS:.*##g'
> > > 
> > > }
> > 
> > wonko@weird ~ $ myqfile /usr/include/plasma/service.h
> > /var/db/pkg/kde-base/kdelibs-4.7.0-r1
> 
> I would use find and grep -H instead of grep -r
> 
> On my system your version greps in
> ~ $ find /var/db/pkg | wc -l
> 33791

Silly me...
Your version greps in
~ $ find /var/db/pkg -type f| wc -l
32527
files.

Michael




^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2011-08-24 21:57 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-10  3:34 [gentoo-user] Plasma-runtime compilation problems Jeff Cranmer
2011-08-10 21:40 ` [gentoo-user] " walt
2011-08-10 22:04   ` Michael Schreckenbauer
2011-08-10 23:16     ` walt
2011-08-11  0:14       ` Jeff Cranmer
2011-08-11  0:55         ` Dale
2011-08-20 19:21           ` Jeff Cranmer
2011-08-21 18:55             ` walt
2011-08-24  0:28               ` Jeff Cranmer
2011-08-24  8:05                 ` Yohan Pereira
2011-08-24 21:12                   ` walt
2011-08-24 21:26                     ` Michael Schreckenbauer
2011-08-24 21:27                     ` Alex Schuster
2011-08-24 21:43                       ` Michael Schreckenbauer
2011-08-24 21:55                         ` Michael Schreckenbauer
2011-08-24 21:44                     ` Meik Frischke
2011-08-11  8:31       ` Michael Schreckenbauer
2011-08-12 19:22         ` walt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox