public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: Jeff Cranmer <jeff@lotussevencars.com>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] Re: Plasma-runtime compilation problems
Date: Sat, 20 Aug 2011 15:21:41 -0400	[thread overview]
Message-ID: <1313868101.8651.1.camel@laptop.limeyworld> (raw)
In-Reply-To: <4E43289D.2080904@gmail.com>

[-- 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
}

  reply	other threads:[~2011-08-20 19:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=1313868101.8651.1.camel@laptop.limeyworld \
    --to=jeff@lotussevencars.com \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

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

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