* Re: [gentoo-user] Re: Plasma-runtime compilation problems
2011-08-11 0:55 ` Dale
@ 2011-08-20 19:21 ` Jeff Cranmer
2011-08-21 18:55 ` walt
0 siblings, 1 reply; 18+ messages in thread
From: Jeff Cranmer @ 2011-08-20 19:21 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 856 bytes --]
>
>
> I can see where one would think that but it is often not the case. I
> had a compile to fail a few months ago, I had to go waaaaay back to find
> the original failure. It was far enough back that I had to copy the
> whole thing to a editor and use the find feature to find it. I use
> Konsole for most of this but I bet it was 7 or 8 screens further back
> than where it ended up failing.
>
> I am on a 4 core rig so that may have a bit to do with it but I have ran
> into the same on my older rig that is single core. It is amazing how
> far back the original problem is sometimes.
>
> May want to consider looking further back or just posting as a
> attachment or something.
>
> Dale
>
> :-) :-)
>
Sorry for the long delay. Attached are the relevant system logs.
Perhaps this will shed some more light on the issue.
Jeff
[-- Attachment #2: plasma-runtime-4.6.5-build.log --]
[-- Type: text/x-log, Size: 27433 bytes --]
^[[32;01m * ^[[39;49;00mPackage: kde-base/plasma-runtime-4.6.5
^[[32;01m * ^[[39;49;00mRepository: gentoo
^[[32;01m * ^[[39;49;00mMaintainer: kde@gentoo.org
^[[32;01m * ^[[39;49;00mUSE: amd64 elibc_glibc kernel_linux multilib userland_GNU
^[[32;01m * ^[[39;49;00mFEATURES: sandbox
>>> Unpacking source...
^[[32;01m*^[[0m Unpacking parts of kdebase-runtime-4.6.5.tar.bz2 to /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work ...
tar extract command failed at least partially - continuing anyway
^[[A^[[111C ^[[34;01m[ ^[[32;01mok^[[34;01m ]^[[0m
>>> Source unpacked in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work
>>> Preparing source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
cmake --no-warn-unused-cli -C /var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_common_config.cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDE4_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_rules.cmake /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5
Not searching for unused variables given on the command line.
loading initial cache file /var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/gentoo_common_config.cmake
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.7.2 (using /usr/bin/qmake)
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so;/usr/lib64/libXft.so;/usr/lib64/libXau.so;/usr/lib64/libXdmcp.so;/usr/lib64/libXpm.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- Found Automoc4: /usr/bin/automoc4
-- Found Perl: /usr/bin/perl
-- Found Phonon: /usr/include
-- Performing Test _OFFT_IS_64BIT
-- Performing Test _OFFT_IS_64BIT - Success
-- Performing Test HAVE_FPIE_SUPPORT
-- Performing Test HAVE_FPIE_SUPPORT - Success
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL - Success
-- Performing Test __KDE_HAVE_GCC_VISIBILITY
-- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success
-- Found KDE 4.7 include dir: /usr/include
-- Found KDE 4.7 library dir: /usr/lib64
-- Found the KDE4 kconfig_compiler preprocessor: /usr/bin/kconfig_compiler
-- Found automoc4: /usr/bin/automoc4
-- Strigi API needs 'signed char'
-- Found Strigi: /usr/lib64/libstreams.so
-- Found SharedDesktopOntologies: /usr/share/ontology (found version "0.7.0", required is "0.5.0")
-- Found Soprano: /usr/include (found version "2.7.0", required is "2.5.63")
-- Found Nepomuk: /usr/lib64/libnepomuk.so
-- Could NOT find SLP (missing: SLP_LIBRARIES SLP_INCLUDE_DIR)
-- Found LibAttica: /usr/lib64/libattica.so (found version "0.2.0", required is "0.1.4")
-- Looking for include files HAVE_SYS_WAIT_H
-- Looking for include files HAVE_SYS_WAIT_H - found
-- Looking for include files HAVE_SYS_TIME_H
-- Looking for include files HAVE_SYS_TIME_H - found
-----------------------------------------------------------------------------
-- The following external packages were located on your system.
-- This installation will have the extra features provided by these packages.
-----------------------------------------------------------------------------
* Soprano - Support for the Nepomuk semantic desktop system
* Shared desktop ontologies - Desktop ontologies
* Nepomuk - Nepomuk Libraries
* Soprano Virtuoso Backend - Virtuoso storage backend for Soprano
* Soprano Raptor Parser - RDF parser plugin for Soprano
* Soprano Redland Backend - Redland storage backend for Soprano
* libattica - A library to access Open Collaboration Service providers
-----------------------------------------------------------------------------
-- The following OPTIONAL packages could NOT be located on your system.
-- Consider installing them to enable more features from this software.
-----------------------------------------------------------------------------
* OpenSLP <http://www.openslp.org/>
SLP (Service Location Protocol) implementation
Provides SLP support in the network:/ kioslave.
-----------------------------------------------------------------------------
-- <<< Gentoo configuration >>>
Build type Gentoo
Install path /usr
Compiler flags:
C -O2 -pipe -march=amdfam10 -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common
C++ -O2 -pipe -march=amdfam10 -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden
Linker flags:
Executable -Wl,--enable-new-dtags -Wl,-O1 -Wl,--as-needed
Module -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc -Wl,-O1 -Wl,--as-needed
Shared -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc -Wl,-O1 -Wl,--as-needed
-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build
>>> Source configured.
>>> Compiling source in /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
make -j7
[ 1%] ^[[35m^[[1mScanning dependencies of target plasma_containment_newspaper_automoc
^[[35m^[[1mScanning dependencies of target plasma-kpart_automoc
^[[0m[ 2%] ^[[0m^[[35m^[[1mScanning dependencies of target kcmremotewidgetshelper_automoc
^[[34m^[[1mGenerating linearlayout.moc
^[[0m^[[35m^[[1mScanning dependencies of target actions for org.kde.kcontrol.kcmremotewidgets
^[[0m[ 3%] ^[[0m^[[34m^[[1mGenerating declarativetabbar.moc
^[[0m^[[34m^[[1mGenerating framesvgitem_p.moc
^[[0m[ 3%] ^[[34m^[[1mGenerating org.kde.kcontrol.kcmremotewidgets.policy
^[[0m[ 3%] Built target actions for org.kde.kcontrol.kcmremotewidgets
[ 4%] ^[[34m^[[1mGenerating corebindingsplugin.moc
^[[0m^[[34m^[[1mGenerating moc_remotewidgetshelper_p.cpp
^[[0m^[[34m^[[1mGenerating plasmakpartcorona.moc
^[[0m^[[34m^[[1mGenerating appletmovespacer.moc
^[[0m[ 5%] ^[[34m^[[1mGenerating applettitlebar.moc
^[[0m[ 5%] [ 5%] [ 6%] Built target kcmremotewidgetshelper_automoc
^[[34m^[[1mGenerating graphicslayoutsbindingsplugin.moc
^[[0m^[[34m^[[1mGenerating graphicswidgetsbindingsplugin.moc
^[[0m[ 7%] ^[[34m^[[1mGenerating gridlayout.moc
^[[0m^[[34m^[[1mGenerating dataengineconsumer_p.moc
^[[0m[ 8%] ^[[35m^[[1mScanning dependencies of target graphicswidgetsbindingsplugin
^[[34m^[[1mGenerating theme_p.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasma_appletscript_declarative_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[35m^[[1mScanning dependencies of target graphicslayoutsbindingsplugin
^[[34m^[[1mGenerating appletscontainer.moc
^[[0m^[[34m^[[1mGenerating appletsview.moc
^[[0m^[[0m[ 8%] ^[[34m^[[1mGenerating appletoverlay.moc
^[[0m^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/graphicslayoutsbindingsplugin.o
^[[0m^[[34m^[[1mGenerating dragcountdown.moc
^[[0m^[[34m^[[1mGenerating newspaper.moc
^[[0m^[[0m[ 9%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicswidgets/CMakeFiles/graphicswidgetsbindingsplugin.dir/graphicswidgetsbindingsplugin.o
^[[0m^[[35m^[[1mScanning dependencies of target plasma_appletscript_simple_javascript_automoc
^[[0m^[[34m^[[1mGenerating engineaccess.moc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m[ 10%] ^[[34m^[[1mGenerating datamodel.moc
^[[0m^[[34m^[[1mGenerating animationgroup.moc
^[[0m^[[34m^[[1mGenerating plasmakpart.moc
^[[0m^[[34m^[[1mGenerating filedialogproxy.moc
^[[0m[ 10%] Built target plasma_containment_newspaper_automoc
[ 11%] ^[[34m^[[1mGenerating datasource_p.moc
^[[0m^[[34m^[[1mGenerating filedialogproxy.moc
^[[0m[ 12%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicswidgets/CMakeFiles/graphicswidgetsbindingsplugin.dir/declarativetabbar.o
^[[0m[ 13%] ^[[34m^[[1mGenerating layouttemplatepackagestructure.moc
^[[0m^[[34m^[[1mGenerating svgitem_p.moc
^[[0m[ 14%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/gridlayout.o
^[[0m^[[34m^[[1mGenerating widget.moc
^[[0m^[[35m^[[1mScanning dependencies of target corebindingsplugin
^[[34m^[[1mGenerating dataenginereceiver.moc
^[[0m^[[34m^[[1mGenerating dataenginereceiver.moc
^[[0m^[[34m^[[1mGenerating plasmakpartview.moc
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m[ 15%] ^[[32mBuilding CXX object plasma/declarativeimports/graphicslayouts/CMakeFiles/graphicslayoutsbindingsplugin.dir/linearlayout.o
^[[0m^[[34m^[[1mGenerating declarativeappletscript.moc
^[[0m^[[34m^[[1mGenerating themedsvg.moc
^[[0m^[[34m^[[1mGenerating scriptengine.moc
^[[0m[ 15%] Built target plasma-kpart_automoc
^[[35m^[[1mScanning dependencies of target plasma_dataenginescript_javascript_automoc
^[[0m^[[34m^[[1mGenerating appletinterface.moc
^[[0m^[[34m^[[1mGenerating javascriptdataengine.moc
^[[0m^[[34m^[[1mGenerating themedsvg.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasma_packagestructure_javascriptaddon_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[0m[ 16%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/corebindingsplugin.o
^[[0m^[[34m^[[1mGenerating moc_bytearrayprototype.cpp
^[[0m^[[34m^[[1mGenerating javascriptservice.moc
^[[0m^[[34m^[[1mGenerating appletinterface.moc
^[[0m^[[34m^[[1mGenerating moc_simplejavascriptapplet.cpp
^[[0m[ 16%] Built target plasma_packagestructure_javascriptaddon_automoc
[ 17%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/dataengineconsumer.o
^[[0m^[[34m^[[1mGenerating moc_bytearrayprototype.cpp
^[[0m^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[34m^[[1mGenerating moc_abstractjsappletscript.cpp
^[[0m^[[34m^[[1mGenerating moc_abstractjsappletscript.cpp
^[[0m^[[31m^[[1mLinking CXX shared library ../../../lib/libgraphicslayoutsbindingsplugin.so
^[[0m[ 17%] Built target plasma_dataenginescript_javascript_automoc
[ 18%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/theme.o
^[[0mIn file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/corebindingsplugin.cpp:22:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/corebindingsplugin.h:29: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/KDE/Plasma/../../plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
[ 18%] Built target plasma_appletscript_simple_javascript_automoc
[ 19%] [ 19%] Built target plasma_appletscript_declarative_automoc
^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/datamodel.o
^[[0m^[[35m^[[1mScanning dependencies of target plasma_runnerscript_javascript_automoc
^[[0m^[[34m^[[1mGenerating javascriptaddonpackagestructure.moc
^[[0m^[[31m^[[1mLinking CXX shared library ../../../lib/libgraphicswidgetsbindingsplugin.so
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/dataengineconsumer.cpp:107: warning: unused parameter 'location'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/declarativeimports/core/dataengineconsumer.cpp:107: warning: unused parameter 'name'
^[[34m^[[1mGenerating javascriptrunner.moc
^[[0m[ 19%] Built target graphicslayoutsbindingsplugin
[ 20%] ^[[32mBuilding CXX object plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/datasource.o
^[[0mmake[2]: *** [plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/corebindingsplugin.o] Error 1
make[2]: *** Waiting for unfinished jobs....
^[[34m^[[1mGenerating scriptenv.moc
^[[0m^[[35m^[[1mScanning dependencies of target plasmapkg_automoc
^[[0m[ 20%] Built target plasmapkg_automoc
^[[35m^[[1mScanning dependencies of target plasma_containment_newspaper
^[[35m^[[1mScanning dependencies of target plasma-kpart
[ 20%] Built target plasma_runnerscript_javascript_automoc
^[[35m^[[1mScanning dependencies of target kcmremotewidgetshelper
^[[35m^[[1mScanning dependencies of target plasma_appletscript_declarative
[ 20%] Built target graphicswidgetsbindingsplugin
^[[35m^[[1mScanning dependencies of target plasma_appletscript_simple_javascript
^[[0m[ 21%] ^[[32mBuilding CXX object plasma/remotewidgetshelper/CMakeFiles/kcmremotewidgetshelper.dir/kcmremotewidgetshelper_automoc.o
^[[0m[ 22%] ^[[32mBuilding CXX object plasma/remotewidgetshelper/CMakeFiles/kcmremotewidgetshelper.dir/remotewidgetshelper.o
^[[0m^[[31m^[[1mLinking CXX executable kcmremotewidgetshelper
^[[0m^[[0m[ 23%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasma-kpart_automoc.o
^[[0m^[[0m[ 24%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/layouttemplatepackagestructure.o
^[[0m[ 25%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/plasma_containment_newspaper_automoc.o
^[[0m[ 26%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/newspaper.o
^[[0m[ 27%] [ 27%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/rect.o
^[[0mBuilt target kcmremotewidgetshelper
[ 28%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletoverlay.o
^[[0mmake[1]: *** [plasma/declarativeimports/core/CMakeFiles/corebindingsplugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 28%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletmovespacer.o
^[[0m[ 28%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/scriptengine.o
^[[0m[ 29%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/scripting/widget.o
^[[0m[ 30%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/applettitlebar.o
^[[0m[ 31%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpartcorona.o
^[[0m^[[0m[ 32%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasma_appletscript_declarative_automoc.o
^[[0m^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/applettitlebar.cpp:48: warning: unused parameter 'widget'
[ 33%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasma_appletscript_simple_javascript_automoc.o
^[[0m[ 34%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/common/javascriptaddonpackagestructure.o
^[[0m[ 35%] [ 36%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletscontainer.o
^[[0m^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/appletsview.o
^[[0m[ 37%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/common/javascriptaddonpackagestructure.o
^[[0m[ 38%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/common/declarativescriptenv.o
^[[0m[ 39%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpartview.o
^[[0m[ 39%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/declarative/packageaccessmanager.o
^[[0m[ 40%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/common/jsscriptenv.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/appletsview.cpp:479: warning: unused parameter 'event'
[ 41%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/abstractjsappletscript.o
^[[0m[ 42%] ^[[32mBuilding CXX object plasma/kpart/CMakeFiles/plasma-kpart.dir/plasmakpart.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp:40: warning: unused parameter 'data'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp:40: warning: unused parameter 'maxSize'
[ 43%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/appletauthorization.o
^[[0m[ 44%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/jsappletinterface.o
^[[0m[ 45%] ^[[32mBuilding CXX object plasma/containments/newspaper/CMakeFiles/plasma_containment_newspaper.dir/dragcountdown.o
^[[0m[ 46%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/declarative/packageaccessmanagerfactory.o
^[[0m[ 47%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/abstractjsappletscript.o
^[[0m/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/dragcountdown.cpp:79: warning: unused parameter 'option'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/containments/newspaper/dragcountdown.cpp:79: warning: unused parameter 'widget'
^[[31m^[[1mLinking CXX shared module ../../../lib/plasma_containment_newspaper.so
^[[0m^[[31m^[[1mLinking CXX shared module ../../lib/plasma-kpart.so
^[[0m[ 47%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/simplejavascriptapplet.o
^[[0m[ 48%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/themedsvg.o
^[[0m[ 49%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/appletauthorization.o
^[[0m[ 50%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/appletinterface.o
^[[0m[ 50%] Built target plasma_containment_newspaper
[ 51%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/declarativeappletscript.o
^[[0m[ 52%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/simplebindings/animationgroup.o
^[[0m[ 52%] Built target plasma-kpart
[ 53%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/simplebindings/anchorlayout.o
^[[0m[ 54%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/engineaccess.o
^[[0mIn file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/plasmoid/simplejavascriptapplet.cpp:65:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
[ 55%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/plasmoid/themedsvg.o
^[[0mmake[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/plasmoid/simplejavascriptapplet.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 55%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/bytearrayclass.o
^[[0m[ 56%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/bytearrayprototype.o
^[[0mmake[1]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_simple_javascript.dir/all] Error 2
[ 57%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataengine.o
^[[0m[ 58%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataenginereceiver.o
^[[0m[ 59%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/filedialogproxy.o
^[[0m[ 60%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/i18n.o
^[[0m[ 61%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/icon.o
^[[0m[ 61%] ^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/qscriptbookkeeping.o
^[[0m[ 62%] In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.cpp:19:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
^[[32mBuilding CXX object plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/url.o
^[[0mmake[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataengine.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataenginereceiver.cpp:23:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
make[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/dataenginereceiver.o] Error 1
In file included from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/qscriptnonguibookkeeping.cpp:26,
from /var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/qscriptbookkeeping.cpp:144:
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:33: error: redefinition of 'struct QMetaTypeId<Plasma::Service*>'
/usr/include/plasma/service.h:321: error: previous definition of 'struct QMetaTypeId<Plasma::Service*>'
/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5/plasma/scriptengines/javascript/simplebindings/dataengine.h:34: error: redefinition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
/usr/include/KDE/Plasma/../../plasma/servicejob.h:136: error: previous definition of 'struct QMetaTypeId<Plasma::ServiceJob*>'
make[2]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/simplebindings/qscriptbookkeeping.o] Error 1
make[1]: *** [plasma/scriptengines/javascript/CMakeFiles/plasma_appletscript_declarative.dir/all] Error 2
make: *** [all] Error 2
^[[31;01m*^[[0m ERROR: kde-base/plasma-runtime-4.6.5 failed (compile phase):
^[[31;01m*^[[0m emake failed
^[[31;01m*^[[0m
^[[31;01m*^[[0m If you need support, post the output of 'emerge --info =kde-base/plasma-runtime-4.6.5',
^[[31;01m*^[[0m the complete build log and the output of 'emerge -pqv =kde-base/plasma-runtime-4.6.5'.
^[[31;01m*^[[0m The complete build log is located at '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/build.log'.
^[[31;01m*^[[0m The ebuild environment file is located at '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp/environment'.
^[[31;01m*^[[0m S: '/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5'
[-- Attachment #3: plasma-runtime-4.6.5-environment --]
[-- Type: text/plain, Size: 183673 bytes --]
declare -x ABI="amd64"
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare -- BASE_EXPF="src_unpack src_compile src_install src_prepare src_configure"
declare -x BUILD_TYPE="release"
declare -x CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita tables words"
declare -x CAMERAS="ptp2"
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CFLAGS="-O2 -pipe -march=amdfam10"
declare -x CFLAGS_default
declare -x CFLAGS_x86="-m32"
declare -x CHOST="x86_64-pc-linux-gnu"
declare -x CHOST_amd64="x86_64-pc-linux-gnu"
declare -x CHOST_default="x86_64-pc-linux-gnu"
declare -x CHOST_x86="i686-pc-linux-gnu"
declare -- CMAKE_BINARY="cmake"
declare -- CMAKE_BUILD_DIR="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5_build"
declare -- CMAKE_BUILD_TYPE="Gentoo"
declare -- CMAKE_EXPF="src_compile src_test src_install src_configure"
declare -- CMAKE_MIN_VERSION="2.8.1"
declare -- CMAKE_REMOVE_MODULES="yes"
declare -- CMAKE_REMOVE_MODULES_LIST="FindBLAS FindLAPACK"
declare -- CMAKE_REQUIRED="always"
declare -- CMAKE_USE_DIR="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5"
declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"
declare -x CPPFLAGS=" -DQT_NO_DEBUG -DNDEBUG"
declare -- CPPUNIT_REQUIRED="never"
declare -x CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CXXFLAGS="-O2 -pipe -march=amdfam10"
declare -- DECLARATIVE_REQUIRED="always"
declare -x DEFAULT_ABI="amd64"
declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare setup test unpack"
declare DEPEND=" >=sys-apps/sed-4 >=dev-util/cmake-2.8.1 userland_GNU? ( >=sys-apps/findutils-4.4.0 )
dev-util/automoc
dev-util/pkgconfig
!aqua? (
>=x11-libs/libXtst-1.1.0
x11-proto/xf86vidmodeproto
)
>=x11-libs/qt-declarative-4.7.0:4
dev-lang/perl
>=x11-libs/qt-core-4.7.0:4[qt3support,ssl]
>=x11-libs/qt-gui-4.7.0:4[accessibility,dbus]
>=x11-libs/qt-qt3support-4.7.0:4[accessibility,kde]
>=x11-libs/qt-script-4.7.0:4
>=x11-libs/qt-sql-4.7.0:4[qt3support]
>=x11-libs/qt-svg-4.7.0:4
>=x11-libs/qt-test-4.7.0:4
>=x11-libs/qt-webkit-4.7.0:4[kde]
!aqua? (
x11-libs/libXext
x11-libs/libXt
x11-libs/libXxf86vm
x11-libs/libXcomposite
)
>=kde-base/kdelibs-4.6.5:4[aqua=] >=media-libs/qimageblitz-0.0.4"
declare DESCRIPTION="Script engine and package tool for plasma"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x EAPI="4"
declare -- EKDEDIR="/usr"
declare -x ELIBC="glibc"
declare -- EPATCH_EXCLUDE=""
declare -- EPATCH_FORCE="no"
declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
declare -- EPATCH_OPTS="-g0 -E --no-backup-if-mismatch"
declare -- EPATCH_SINGLE_MSG=""
declare -- EPATCH_SOURCE="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/patch"
declare -- EPATCH_SUFFIX="patch.bz2"
declare -x EXEOPTIONS="-m0755"
declare -x FCFLAGS=""
declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
declare -x FFLAGS=""
declare -x GCC_SPECS=""
declare -- GCONFTOOL_BIN="/usr/bin/gconftool-2"
declare -x GDK_USE_XFT="1"
declare -- GLIB_COMPILE_SCHEMAS="/usr/bin/glib-compile-schemas"
declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx"
declare -x GRUB_PLATFORMS=""
declare -x GSETTINGS_BACKEND="gconf"
declare -- GTK_UPDATE_ICON_CACHE="/usr/bin/gtk-update-icon-cache"
declare HOMEPAGE="http://www.kde.org/"
declare -x INHERITED=" toolchain-funcs multilib portability eutils versionator kde4-functions fdo-mime gnome2-utils base virtualx flag-o-matic cmake-utils kde4-base kde4-meta"
declare -x INPUT_DEVICES="evdev synaptics"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare IUSE="debug aqua kdeenablefinal"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -- KDEBASE="kde-base"
declare -- KDEDIR="/usr"
declare -- KDEMETA_EXPF="pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_preinst pkg_postinst pkg_postrm"
declare -- KDE_HANDBOOK="never"
declare -- KDE_MINIMAL="4.6.5"
declare -- KDE_REQUIRED="always"
declare -- KDE_SCM="svn"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux"
declare -- KMCOMPILEONLY="
cmake/modules/"
declare -- KMEXTRACTONLY="
config-runtime.h.cmake"
declare -- KMMODULE="plasma"
declare -- KMNAME="kdebase-runtime"
declare -- KMTARPARAMS=" --bzip2"
declare -x LCD_DEVICES=""
declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
declare -x LDFLAGS_default
declare -x LDFLAGS_x86="-m elf_i386"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_amd64_fbsd="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc="lib32"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBDIR_s390="lib32"
declare -x LIBDIR_s390x="lib64"
declare -x LIBDIR_sparc32="lib32"
declare -x LIBDIR_sparc64="lib64"
declare -x LIBDIR_x86="lib32"
declare -x LIBDIR_x86_fbsd="lib32"
declare -x LIBOPTIONS="-m0644"
declare -x LICENSE="GPL-2"
declare -x LIRC_DEVICES="mceusb"
declare -x MAKEOPTS="-j7"
declare -x MULTILIB_ABIS="amd64 x86"
declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)"
declare -- MULTIMEDIA_REQUIRED="never"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x OPENGL_PROFILE="nvidia"
declare -- OPENGL_REQUIRED="never"
declare -x PATH="/usr/lib64/portage/bin/ebuild-helpers/4:/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5"
declare PDEPEND=" "
declare -x PHP_TARGETS=""
declare -x PKG_CONFIG_PATH="/usr/lib64/pkgconfig"
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png"
declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")'
declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/plasma-runtime-4.6.5/html")'
declare -- PREFIX="/usr"
declare -x PRELINK_PATH_MASK="/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so"
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND"
declare -x PROPERTIES=""
declare -x PROVIDE=""
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -- QTEST_COLORED="1"
declare -- QTHELP_REQUIRED="never"
declare -- QT_MINIMAL="4.7.0"
declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins/"
declare RDEPEND=" !<kde-base/plasma-workspace-4.5.60:4 !<kde-base/kdelibs-4.5.60:4 >=kde-base/oxygen-icons-4.6.5:4[aqua=]
>=x11-libs/qt-declarative-4.7.0:4
dev-lang/perl
>=x11-libs/qt-core-4.7.0:4[qt3support,ssl]
>=x11-libs/qt-gui-4.7.0:4[accessibility,dbus]
>=x11-libs/qt-qt3support-4.7.0:4[accessibility,kde]
>=x11-libs/qt-script-4.7.0:4
>=x11-libs/qt-sql-4.7.0:4[qt3support]
>=x11-libs/qt-svg-4.7.0:4
>=x11-libs/qt-test-4.7.0:4
>=x11-libs/qt-webkit-4.7.0:4[kde]
!aqua? (
x11-libs/libXext
x11-libs/libXt
x11-libs/libXxf86vm
x11-libs/libXcomposite
)
>=kde-base/kdelibs-4.6.5:4[aqua=] >=media-libs/qimageblitz-0.0.4"
declare REQUIRED_USE=" "
declare -x RESTRICT=""
declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
declare -x RUBY_TARGETS=""
declare -x S="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/work/plasma-runtime-4.6.5"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PID="5533"
declare -x SANDBOX_PREDICT="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/homedir:/dev/crypto:/var/cache/fontconfig"
declare -x SANDBOX_READ="/:/dev/stdin:/var/tmp"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/kde-base/plasma-runtime-4.6.5/homedir/.bash_history"
declare -- SCROLLKEEPER_DIR="/var/lib/scrollkeeper"
declare -- SCROLLKEEPER_UPDATE_BIN="/usr/bin/scrollkeeper-update"
declare -x SLOT="4"
declare SRC_URI="mirror://kde/stable/4.6.5/src/kdebase-runtime-4.6.5.tar.bz2"
declare -x STAGE1_USE="multilib nptl nptlonly unicode"
declare -x SYMLINK_LIB="yes"
declare -x USE="amd64 elibc_glibc kernel_linux multilib userland_GNU"
declare -x USERLAND="GNU"
declare -x VIDEO_CARDS=""
declare -- VIRTUALX_COMMAND="emake"
declare -- VIRTUALX_DEPEND="
!prefix? ( x11-base/xorg-server[xvfb] )
x11-apps/xhost
"
declare -- VIRTUALX_REQUIRED="manual"
declare -- WANT_CMAKE="always"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_CONFIG_HOME="/var/tmp/portage/kde-base/plasma-runtime-4.6.5/temp"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/usr/share/gdm"
declare -x XSESSION="KDE-4"
declare -x XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
declare -- _="PKG_INSTALL_MASK"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -a __ESHOPTS_SAVE__='()'
declare -- ___ECLASS_RECUR_MULTILIB="yes"
declare -- ___ECLASS_RECUR_TOOLCHAIN_FUNCS="yes"
declare -a mycmakeargs='([0]="-DKDE4_BUILD_TESTS=OFF" [1]="-DCMAKE_INSTALL_PREFIX=/usr" [2]="-DSYSCONF_INSTALL_DIR=/etc")'
declare -- qtwebkitusedeps="[kde]"
Xeconf ()
{
debug-print-function ${FUNCNAME} "$@";
VIRTUALX_COMMAND="econf" virtualmake "$@"
}
Xemake ()
{
debug-print-function ${FUNCNAME} "$@";
VIRTUALX_COMMAND="emake" virtualmake "$@"
}
Xmake ()
{
debug-print-function ${FUNCNAME} "$@";
ewarn "QA: you should not execute make directly";
ewarn "QA: rather execute Xemake -j1 if you have issues with parallel make";
VIRTUALX_COMMAND="emake -j1" virtualmake "$@"
}
__list_needed_subdirectories ()
{
local i j kmextra kmextra_expanded kmmodule_expanded kmcompileonly_expanded extractlist;
kmextra="${KMEXTRA}";
[[ ${1} != fatal ]] && kmextra+=" ${KMEXTRA_NONFATAL}";
for i in ${kmextra};
do
kmextra_expanded+=" ${i}";
j=$(dirname ${i});
while [[ ${j} != "." ]]; do
kmextra_expanded+=" ${j}/CMakeLists.txt";
j=$(dirname ${j});
done;
done;
if [[ -n ${KMMODULE} ]]; then
kmmodule_expanded="${KMMODULE}";
j=$(dirname ${KMMODULE});
while [[ ${j} != "." ]]; do
kmmodule_expanded+=" ${j}/CMakeLists.txt";
j=$(dirname ${j});
done;
fi;
for i in ${KMCOMPILEONLY};
do
kmcompileonly_expanded+=" ${i}";
j=$(dirname ${i});
while [[ ${j} != "." ]]; do
kmcompileonly_expanded+=" ${j}/CMakeLists.txt";
j=$(dirname ${j});
done;
done;
debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmextra_expanded: ${kmextra_expanded}";
debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmmodule_expanded: ${kmmodule_expanded}";
debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME} - kmcompileonly_expanded: ${kmcompileonly_expanded}";
for i in ${kmmodule_expanded} ${kmextra_expanded} ${kmcompileonly_expanded} ${KMEXTRACTONLY};
do
extractlist+=" ${topdir}${i}";
done;
echo ${extractlist}
}
__versionator__test_version_compare ()
{
eshopts_push -s extglob;
local lt=1 eq=2 gt=3 p q;
function __versionator__test_version_compare_t ()
{
version_compare "${1}" "${3}";
local r=$?;
[[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})"
};
echo "
0 $lt 1
1 $lt 2
2 $gt 1
2 $eq 2
0 $eq 0
10 $lt 20
68 $eq 068
068 $gt 67
068 $lt 69
1.0 $lt 2.0
2.0 $eq 2.0
2.0 $gt 1.0
1.0 $gt 0.0
0.0 $eq 0.0
0.0 $lt 1.0
0.1 $lt 0.2
0.2 $eq 0.2
0.3 $gt 0.2
1.2 $lt 2.1
2.1 $gt 1.2
1.2.3 $lt 1.2.4
1.2.4 $gt 1.2.3
1.2.0 $gt 1.2
1.2.1 $gt 1.2
1.2 $lt 1.2.1
1.2b $eq 1.2b
1.2b $lt 1.2c
1.2b $gt 1.2a
1.2b $gt 1.2
1.2 $lt 1.2a
1.3 $gt 1.2a
1.3 $lt 1.3a
1.0_alpha7 $lt 1.0_beta7
1.0_beta $lt 1.0_pre
1.0_pre5 $lt 1.0_rc2
1.0_rc2 $lt 1.0
1.0_p1 $gt 1.0
1.0_p1-r1 $gt 1.0_p1
1.0_alpha6-r1 $gt 1.0_alpha6
1.0_beta6-r1 $gt 1.0_alpha6-r2
1.0_pre1 $lt 1.0_p1
1.0p $gt 1.0_p1
1.0r $gt 1.0-r1
1.6.15 $gt 1.6.10-r2
1.6.10-r2 $lt 1.6.15
" | while read a b c; do
[[ -z "${a}${b}${c}" ]] && continue;
__versionator__test_version_compare_t "${a}" "${b}" "${c}";
done;
for q in "alpha beta pre rc=${lt};${gt}" "p=${gt};${lt}";
do
for p in ${q%%=*};
do
local c=${q##*=};
local alt=${c%%;*} agt=${c##*;};
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}";
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}1";
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}068";
__versionator__test_version_compare_t "2.0_${p}" $alt "2.0";
__versionator__test_version_compare_t "2.0_${p}1" $alt "2.0";
__versionator__test_version_compare_t "2.0_${p}068" $alt "2.0";
__versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}";
__versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1";
__versionator__test_version_compare_t "666_${p}3" $gt "666_${p}";
__versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8";
__versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7";
__versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6";
__versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9";
__versionator__test_version_compare_t "1_${p}7-r0" $eq "1_${p}7";
__versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r1";
__versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r01";
__versionator__test_version_compare_t "1_${p}7-r01" $eq "1_${p}7-r1";
__versionator__test_version_compare_t "1_${p}8-r1" $gt "1_${p}7-r100";
__versionator__test_version_compare_t "1_${p}_alpha" $lt "1_${p}_beta";
done;
done;
for p in "-r" "_p";
do
__versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2";
__versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1";
__versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2";
__versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3";
done;
__versionator__test_version_compare_t "6.0" $gt "5.0";
__versionator__test_version_compare_t "5.0" $gt "5";
__versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0";
__versionator__test_version_compare_t "1.0-r1" $gt "1.0";
__versionator__test_version_compare_t "999999999999999999999999999999" $gt "999999999999999999999999999998";
__versionator__test_version_compare_t "1.0.0" $gt "1.0";
__versionator__test_version_compare_t "1.0.0" $gt "1.0b";
__versionator__test_version_compare_t "1b" $gt "1";
__versionator__test_version_compare_t "1b_p1" $gt "1_p1";
__versionator__test_version_compare_t "1.1b" $gt "1.1";
__versionator__test_version_compare_t "12.2.5" $gt "12.2b";
__versionator__test_version_compare_t "4.0" $lt "5.0";
__versionator__test_version_compare_t "5" $lt "5.0";
__versionator__test_version_compare_t "1.0_pre2" $lt "1.0_p2";
__versionator__test_version_compare_t "1.0_alpha2" $lt "1.0_p2";
__versionator__test_version_compare_t "1.0_alpha1" $lt "1.0_beta1";
__versionator__test_version_compare_t "1.0_beta3" $lt "1.0_rc3";
__versionator__test_version_compare_t "1.001000000000000000001" $lt "1.001000000000000000002";
__versionator__test_version_compare_t "1.00100000000" $lt "1.0010000000000000001";
__versionator__test_version_compare_t "999999999999999999999999999998" $lt "999999999999999999999999999999";
__versionator__test_version_compare_t "1.01" $lt "1.1";
__versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1";
__versionator__test_version_compare_t "1.0" $lt "1.0-r1";
__versionator__test_version_compare_t "1.0" $lt "1.0.0";
__versionator__test_version_compare_t "1.0b" $lt "1.0.0";
__versionator__test_version_compare_t "1_p1" $lt "1b_p1";
__versionator__test_version_compare_t "1" $lt "1b";
__versionator__test_version_compare_t "1.1" $lt "1.1b";
__versionator__test_version_compare_t "12.2b" $lt "12.2.5";
__versionator__test_version_compare_t "4.0" $eq "4.0";
__versionator__test_version_compare_t "1.0" $eq "1.0";
__versionator__test_version_compare_t "1.0-r0" $eq "1.0";
__versionator__test_version_compare_t "1.0" $eq "1.0-r0";
__versionator__test_version_compare_t "1.0-r0" $eq "1.0-r0";
__versionator__test_version_compare_t "1.0-r1" $eq "1.0-r1";
__versionator__test_version_compare_t "1" $lt "2";
__versionator__test_version_compare_t "1.0_alpha" $lt "1.0_pre";
__versionator__test_version_compare_t "1.0_beta" $gt "1.0_alpha";
__versionator__test_version_compare_t "0" $lt "0.0";
__versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1";
__versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0";
__versionator__test_version_compare_t "1.0" $lt "1.0-r1";
__versionator__test_version_compare_t "1.0-r1" $gt "1.0";
__versionator__test_version_compare_t "1_p1" $lt "1b_p1";
__versionator__test_version_compare_t "1b" $gt "1";
__versionator__test_version_compare_t "1.1b" $gt "1.1";
__versionator__test_version_compare_t "12.2b" $gt "12.2";
__versionator__test_version_compare_t "1.0" $gt "1";
__versionator__test_version_compare_t "1" $lt "1.0";
__versionator__test_version_compare_t "1.0_alpha" $gt "1_alpha";
__versionator__test_version_compare_t "1.0_alpha" $gt "1";
__versionator__test_version_compare_t "1.0_alpha" $lt "1.0";
__versionator__test_version_compare_t "1.2.0.0_alpha7-r4" $gt "1.2_alpha7-r4";
__versionator__test_version_compare_t "0001" $eq "1";
__versionator__test_version_compare_t "01" $eq "001";
__versionator__test_version_compare_t "0001.1" $eq "1.1";
__versionator__test_version_compare_t "01.01" $eq "1.01";
__versionator__test_version_compare_t "1.010" $eq "1.01";
__versionator__test_version_compare_t "1.00" $eq "1.0";
__versionator__test_version_compare_t "1.0100" $eq "1.010";
__versionator__test_version_compare_t "1" $eq "1-r0";
__versionator__test_version_compare_t "1-r00" $eq "1-r0";
eshopts_pop
}
_calculate_live_repo ()
{
debug-print-function ${FUNCNAME} "$@";
SRC_URI="";
case ${KDE_SCM} in
svn)
local branch_prefix;
case ${PV} in
9999*)
branch_prefix="trunk/KDE"
;;
*)
branch_prefix="branches/KDE/$(get_kde_version)";
ESVN_PROJECT_SUFFIX="-${PV}"
;;
esac;
ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde};
if [[ -n ${KMNAME} ]]; then
ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}";
if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
KMMODULE="${PN}";
fi;
case ${KMNAME} in
kdebase-*)
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
;;
kdelibs-*)
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
;;
kdereview*)
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
;;
kdesupport)
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}";
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
;;
kde*)
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
;;
extragear* | playground*)
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}";
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
;;
koffice)
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
;;
*)
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
;;
esac;
else
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}";
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}";
fi;
[[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
;;
git)
local _kmname;
EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org};
if [[ -n ${EGIT_REPONAME} ]]; then
_kmname=${EGIT_REPONAME};
else
if [[ -n ${KMNAME} ]]; then
_kmname=${KMNAME};
else
_kmname=${PN};
fi;
fi;
case ${PV} in
9999*)
;;
*)
case ${_kmname} in
blinken | cantor | kalgebra | kalzium | kanagram | kbruch | kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs | kgeography | khangman | kig | kiten | klettres | kmplot | kstars | ktouch | kturtle | kwordquiz | libkdeedu | mobipocket | okular | parley | rocs | step)
EGIT_BRANCH="$(get_kde_version)"
;;
marble)
EGIT_BRANCH="kde-$(get_kde_version)"
;;
gwenview | kamera | kate | kcolorchooser | kde-baseapps | kde-runtime | kde-workspace | kgamma | kdegraphics-strigi-analyzer | kdegraphics-thumbnailers | kdelibs | kimono | kolourpaint | konsole | korundum | kross-interpreters | kruler | ksaneplugin | ksnapshot | libkdcraw | libkexiv2 | libkipi | libksane | perlqt | perlkde | pykde4 | qtruby | qyoto | smokegen | smokekde | smokeqt | svgpart)
EGIT_BRANCH="KDE/$(get_kde_version)"
;;
*)
ewarn "Unknown KMNAME ${_kmname}: Guessing branch name 'KDE/$(get_kde_version)'";
EGIT_BRANCH="KDE/$(get_kde_version)"
;;
esac
;;
esac;
EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}";
debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}";
debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
;;
esac
}
_calculate_src_uri ()
{
debug-print-function ${FUNCNAME} "$@";
local _kmname _kmname_pv;
[[ -n ${KDEBASE} ]] || return;
if [[ -n ${KMNAME} ]]; then
case ${KMNAME} in
kdebase-apps)
_kmname="kdebase"
;;
*)
_kmname="${KMNAME}"
;;
esac;
else
_kmname=${PN};
fi;
_kmname_pv="${_kmname}-${PV}";
case ${KDEBASE} in
kde-base)
case ${PV} in
4.[456].8[05] | 4.[456].9[023568])
SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2";
if ! version_is_at_least 4.6.80 ${PV}; then
[[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2";
fi
;;
*)
SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2";
if ! version_is_at_least 4.6.80 ${PV}; then
[[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2";
fi
;;
esac
;;
koffice)
case ${PV} in
2.[1234].[6-9]*)
SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2"
;;
*)
SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2"
;;
esac
;;
kdevelop)
SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
;;
esac
}
_cdrom_locate_file_on_cd ()
{
local mline="";
local showedmsg=0 showjolietmsg=0;
while [[ -z ${CDROM_ROOT} ]]; do
local i=0;
local -a cdset=(${*//:/ });
if [[ -n ${CDROM_SET} ]]; then
cdset=(${cdset[${CDROM_SET}]});
fi;
while [[ -n ${cdset[${i}]} ]]; do
local dir=$(dirname ${cdset[${i}]});
local file=$(basename ${cdset[${i}]});
local point= node= fs= foo=;
while read point node fs foo; do
[[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
point=${point//\040/ };
[[ ! -d ${point}/${dir} ]] && continue;
[[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
export CDROM_ROOT=${point};
export CDROM_SET=${i};
export CDROM_MATCH=${cdset[${i}]};
return;
done <<< "$(get_mounts)";
((++i));
done;
echo;
if [[ ${showedmsg} -eq 0 ]]; then
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
if [[ -z ${CDROM_NAME} ]]; then
einfo "Please insert+mount the cdrom for ${PN} now !";
else
einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
fi;
else
if [[ -z ${CDROM_NAME_1} ]]; then
einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
else
local var="CDROM_NAME_${CDROM_CURRENT_CD}";
einfo "Please insert+mount the ${!var} cdrom now !";
fi;
fi;
showedmsg=1;
fi;
einfo "Press return to scan for the cd again";
einfo "or hit CTRL+C to abort the emerge.";
echo;
if [[ ${showjolietmsg} -eq 0 ]]; then
showjolietmsg=1;
else
ewarn "If you are having trouble with the detection";
ewarn "of your CD, it is possible that you do not have";
ewarn "Joliet support enabled in your kernel. Please";
ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
ebeep 5;
fi;
read || die "something is screwed with your system";
done
}
_change_cmakelists_parent_dirs ()
{
debug-print-function ${FUNCNAME} "$@";
local _olddir _dir;
_dir="${S}"/${1};
until [[ ${_dir} == ${S} ]]; do
_olddir=$(basename "${_dir}");
_dir=$(dirname "${_dir}");
debug-print "${LINENO}: processing ${_dir} CMakeLists.txt searching for ${_olddir}";
if [[ -f ${_dir}/CMakeLists.txt ]]; then
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${_olddir}[[:space:]]*)/s/#DONOTCOMPILE //g" -i ${_dir}/CMakeLists.txt || die "${LINENO}: died in ${FUNCNAME} while processing ${_dir}";
fi;
done
}
_check_build_dir ()
{
: ${CMAKE_USE_DIR:=${S}};
if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
CMAKE_BUILD_DIR="${CMAKE_USE_DIR}";
else
: ${CMAKE_BUILD_DIR:=${WORKDIR}/${P}_build};
fi;
echo ">>> Working in BUILD_DIR: \"$CMAKE_BUILD_DIR\""
}
_enable_selected_linguas_dir ()
{
local lingua linguas sr_mess wp;
local dir=${1};
[[ -d ${dir} ]] || die "linguas dir \"${dir}\" does not exist";
comment_all_add_subdirectory "${dir}";
pushd "${dir}" > /dev/null;
sr_mess="sr@latn sr@latin sr@Latin";
for wp in ${sr_mess};
do
[[ -e ${wp}.po ]] && mv "${wp}.po" "sr@Latn.po";
if [[ -d ${wp} ]]; then
mv "${wp}" "sr@Latn";
sed -i -e "s:${wp}:sr@Latn:g" CMakeLists.txt;
fi;
done;
for lingua in ${KDE_LINGUAS};
do
if [[ -e ${lingua}.po ]]; then
mv "${lingua}.po" "${lingua}.po.old";
fi;
done;
for lingua in ${KDE_LINGUAS};
do
if use linguas_${lingua}; then
if [[ -d ${lingua} ]]; then
linguas="${linguas} ${lingua}";
sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" -i CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed.";
fi;
if [[ -e ${lingua}.po.old ]]; then
linguas="${linguas} ${lingua}";
mv "${lingua}.po.old" "${lingua}.po";
fi;
fi;
done;
[[ -n ${linguas} ]] && echo ">>> Enabling languages: ${linguas}";
popd > /dev/null
}
_execute_optionaly ()
{
local phase="$1";
shift;
if [[ ${WANT_CMAKE} = always ]]; then
enable_cmake-utils_${phase} "$@";
else
use ${WANT_CMAKE} && enable_cmake-utils_${phase} "$@";
fi
}
_filter-hardened ()
{
local f;
for f in "$@";
do
case "${f}" in
-fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
gcc-specs-pie || continue;
is-flagq -nopie || append-flags -nopie
;;
-fstack-protector)
gcc-specs-ssp || continue;
is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
;;
-fstack-protector-all)
gcc-specs-ssp-to-all || continue;
is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
;;
-fno-strict-overflow)
gcc-specs-nostrict || continue;
is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
;;
esac;
done
}
_filter-var ()
{
local f x VAR VAL;
declare -a new;
VAR=$1;
shift;
eval VAL=\${${VAR}};
for f in ${VAL};
do
for x in "$@";
do
[[ ${f} == ${x} ]] && continue 2;
done;
eval new\[\${\#new\[@]}]=\${f};
done;
eval export ${VAR}=\${new\[*]}
}
_gcc-install-dir ()
{
echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw ()
{
local cc=$(tc-getCC);
local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 }
$1=="*"directive":" { pspec=spec; spec=""; outside=0; next }
outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
{ spec=spec $0 }
END { print spec }';
return 0
}
_gcc-specs-exists ()
{
[[ -f $(_gcc-install-dir)/$1 ]]
}
_gcc_fullversion ()
{
local ver="$1";
shift;
set -- `$(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"`;
eval echo "$ver"
}
_is_flagq ()
{
local x;
for x in ${!1};
do
[[ ${x} == $2 ]] && return 0;
done;
return 1
}
_modify-cmakelists ()
{
debug-print-function ${FUNCNAME} "$@";
grep -qs "<<< Gentoo configuration >>>" CMakeLists.txt && return 0;
find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + || die "${LINENO}: failed to disable hardcoded settings";
cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<-_EOF_
MESSAGE(STATUS "<<< Gentoo configuration >>>
Build type \${CMAKE_BUILD_TYPE}
Install path \${CMAKE_INSTALL_PREFIX}
Compiler flags:
C \${CMAKE_C_FLAGS}
C++ \${CMAKE_CXX_FLAGS}
Linker flags:
Executable \${CMAKE_EXE_LINKER_FLAGS}
Module \${CMAKE_MODULE_LINKER_FLAGS}
Shared \${CMAKE_SHARED_LINKER_FLAGS}\n")
_EOF_
}
_use_me_now ()
{
debug-print-function ${FUNCNAME} "$@";
local uper capitalised x;
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
if [[ ! -z $3 ]]; then
echo "-D$1$3=$(use $2 && echo ON || echo OFF)";
else
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
for x in $2 $uper $capitalised;
do
echo "-D$1$x=$(use $2 && echo ON || echo OFF) ";
done;
fi
}
_use_me_now_inverted ()
{
debug-print-function ${FUNCNAME} "$@";
local uper capitalised x;
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
if [[ ! -z $3 ]]; then
echo "-D$1$3=$(use $2 && echo OFF || echo ON)";
else
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
for x in $2 $uper $capitalised;
do
echo "-D$1$x=$(use $2 && echo OFF || echo ON) ";
done;
fi
}
add_blocker ()
{
debug-print-function ${FUNCNAME} "$@";
[[ -z ${1} ]] && die "Missing parameter";
local pkg=kde-base/$1 atom old_ver="unset" use;
if [[ $pkg == *\[*\] ]]; then
use=${pkg/#*\[/[};
pkg=${pkg%\[*\]};
fi;
[[ "$3" == *:3.5 ]] && old_ver=${3%:3.5};
if [[ ${2} != 0 ]]; then
if [[ -z ${2} ]]; then
atom=${pkg};
else
if [[ ${2::1} == "<" ]]; then
atom="<${pkg}-${2:1}";
else
atom="<=${pkg}-${2}";
fi;
fi;
RDEPEND+=" !${atom}:4${use}";
fi;
if [[ ${old_ver} != "unset" ]]; then
if [[ -z ${old_ver} ]]; then
atom=${pkg};
else
if [[ ${old_ver::1} == "<" ]]; then
atom="<${pkg}-${old_ver:1}";
else
atom="<=${pkg}-${old_ver}";
fi;
fi;
RDEPEND+=" !${atom}:3.5${use}";
fi
}
add_kdebase_dep ()
{
debug-print-function ${FUNCNAME} "$@";
local ver;
if [[ -n ${3} ]]; then
ver=${3};
else
if [[ -n ${KDE_OVERRIDE_MINIMAL} ]]; then
ver=${KDE_OVERRIDE_MINIMAL};
else
if [[ ${KDEBASE} != kde-base ]]; then
ver=${KDE_MINIMAL};
else
if [[ ${PV} == *.9999 ]]; then
ver=$(get_kde_version);
else
ver=${PV};
fi;
fi;
fi;
fi;
[[ -z ${1} ]] && die "Missing parameter";
echo " >=kde-base/${1}-${ver}:4[aqua=${2:+,${2}}]"
}
append-cflags ()
{
[[ -z $* ]] && return 0;
export CFLAGS="${CFLAGS} $*";
return 0
}
append-cppflags ()
{
[[ -z $* ]] && return 0;
export CPPFLAGS="${CPPFLAGS} $*";
return 0
}
append-cxxflags ()
{
[[ -z $* ]] && return 0;
export CXXFLAGS="${CXXFLAGS} $*";
return 0
}
append-fflags ()
{
[[ -z $* ]] && return 0;
export FFLAGS="${FFLAGS} $*";
export FCFLAGS="${FCFLAGS} $*";
return 0
}
append-flags ()
{
[[ -z $* ]] && return 0;
append-cflags "$@";
append-cxxflags "$@";
append-fflags "$@";
return 0
}
append-ldflags ()
{
[[ -z $* ]] && return 0;
local flag;
for flag in "$@";
do
[[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
done;
export LDFLAGS="${LDFLAGS} $*";
return 0
}
append-lfs-flags ()
{
[[ -n $@ ]] && die "append-lfs-flags takes no arguments";
append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
append-libs ()
{
[[ -z $* ]] && return 0;
local flag;
for flag in "$@";
do
[[ ${flag} == -l* ]] && flag=${flag#-l};
export LIBS="${LIBS} -l${flag}";
done;
return 0
}
base_src_compile ()
{
debug-print-function $FUNCNAME "$@";
has src_configure ${BASE_EXPF} || base_src_configure;
base_src_make "$@"
}
base_src_configure ()
{
debug-print-function $FUNCNAME "$@";
[[ -x ${ECONF_SOURCE:-.}/configure ]] && econf "$@"
}
base_src_install ()
{
debug-print-function $FUNCNAME "$@";
emake DESTDIR="${D}" "$@" install || die "died running make install, $FUNCNAME";
base_src_install_docs
}
base_src_install_docs ()
{
debug-print-function $FUNCNAME "$@";
local x;
pushd "${S}" > /dev/null;
if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${DOCS[@]}";
do
debug-print "$FUNCNAME: docs: creating document from ${x}";
dodoc "${x}" || die "dodoc failed";
done;
fi;
if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${HTML_DOCS[@]}";
do
debug-print "$FUNCNAME: docs: creating html document from ${x}";
dohtml -r "${x}" || die "dohtml failed";
done;
fi;
popd > /dev/null
}
base_src_make ()
{
debug-print-function $FUNCNAME "$@";
if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
emake "$@" || die "died running emake, $FUNCNAME";
fi
}
base_src_prepare ()
{
debug-print-function $FUNCNAME "$@";
debug-print "$FUNCNAME: PATCHES=$PATCHES";
local patches_failed=0;
pushd "${S}" > /dev/null;
if [[ "$(declare -p PATCHES 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${PATCHES[@]}";
do
debug-print "$FUNCNAME: applying patch from ${x}";
if [[ -d "${x}" ]]; then
EPATCH_SUFFIX=${EPATCH_SUFFIX:=patch};
oldval=${EPATCH_SOURCE};
EPATCH_SOURCE=${x};
EPATCH_FORCE=yes;
epatch;
EPATCH_SOURCE=${oldval};
else
if [[ -f "${x}" ]]; then
epatch "${x}";
else
ewarn "QA: File or directory \"${x}\" does not exist.";
ewarn "QA: Check your PATCHES array or add missing file/directory.";
patches_failed=1;
fi;
fi;
done;
[[ ${patches_failed} -eq 1 ]] && die "Some patches failed. See above messages.";
else
for x in ${PATCHES};
do
debug-print "$FUNCNAME: patching from ${x}";
epatch "${x}";
done;
fi;
debug-print "$FUNCNAME: applying user patches";
epatch_user;
popd > /dev/null
}
base_src_unpack ()
{
debug-print-function $FUNCNAME "$@";
pushd "${WORKDIR}" > /dev/null;
[[ -n "${A}" ]] && unpack ${A};
has src_prepare ${BASE_EXPF} || base_src_prepare;
popd > /dev/null
}
buildsycoca ()
{
debug-print-function ${FUNCNAME} "$@";
for x in usr/share/{config,kde4};
do
DIRS=${EROOT}usr;
[[ -d "${EROOT}${x}" ]] || break;
if use userland_BSD; then
[[ $(stat -f %p "${EROOT}${x}") != 40755 ]];
local stat_rtn="$?";
else
[[ $(stat --format=%a "${EROOT}${x}") != 755 ]];
local stat_rtn=$?;
fi;
if [[ $stat_rtn != 1 ]]; then
ewarn "QA Notice:";
ewarn "Package ${PN} is breaking ${EROOT}${x} permissions.";
ewarn "Please report this issue to gentoo bugzilla.";
einfo "Permissions will get adjusted automatically now.";
find "${EROOT}${x}" -type d -print0 | xargs -0 chmod 755;
fi;
done
}
built_with_use ()
{
local hidden="no";
if [[ $1 == "--hidden" ]]; then
hidden="yes";
shift;
fi;
local missing_action="die";
if [[ $1 == "--missing" ]]; then
missing_action=$2;
shift;
shift;
case ${missing_action} in
true | false | die)
;;
*)
die "unknown action '${missing_action}'"
;;
esac;
fi;
local opt=$1;
[[ ${opt:0:1} = "-" ]] && shift || opt="-a";
local PKG=$(best_version $1);
[[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
shift;
local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE;
local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE;
if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "Unable to determine what USE flags $PKG was built with"
;;
esac;
fi;
if [[ ${hidden} == "no" ]]; then
local IUSE_BUILT=($(<"${IUSEFILE}"));
local expand;
for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
do
if [[ $1 == ${expand}_* ]]; then
expand="";
break;
fi;
done;
if [[ -n ${expand} ]]; then
if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "$PKG does not actually support the $1 USE flag!"
;;
esac;
fi;
fi;
fi;
local USE_BUILT=$(<${USEFILE});
while [[ $# -gt 0 ]]; do
if [[ ${opt} = "-o" ]]; then
has $1 ${USE_BUILT} && return 0;
else
has $1 ${USE_BUILT} || return 1;
fi;
shift;
done;
[[ ${opt} = "-a" ]]
}
cdrom_get_cds ()
{
local cdcnt=0;
local f=;
for f in "$@";
do
((++cdcnt));
export CDROM_CHECK_${cdcnt}="$f";
done;
export CDROM_TOTAL_CDS=${cdcnt};
export CDROM_CURRENT_CD=1;
if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then
local var=;
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CD_ROOT_${cdcnt}";
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
eerror "You must either use just the CD_ROOT";
eerror "or specify ALL the CD_ROOT_X variables.";
eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables.";
die "could not locate CD_ROOT_${cdcnt}";
fi;
done;
export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}};
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}";
export CDROM_SET=-1;
for f in ${CDROM_CHECK_1//:/ };
do
((++CDROM_SET));
[[ -e ${CDROM_ROOT}/${f} ]] && break;
done;
export CDROM_MATCH=${f};
return;
fi;
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}";
echo;
einfo "If you do not have the CD, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the variable CD_ROOT so that it points to the";
einfo "directory containing the files.";
echo;
einfo "For example:";
einfo "export CD_ROOT=/mnt/cdrom";
echo;
else
if [[ -n ${CDROM_NAME_SET} ]]; then
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}";
done;
fi;
einfo "This package will need access to ${CDROM_TOTAL_CDS} cds.";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CDROM_NAME_${cdcnt}";
[[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}";
done;
echo;
einfo "If you do not have the CDs, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the following variables so they point to the right place:";
einfon "";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
echo -n " CD_ROOT_${cdcnt}";
done;
echo;
einfo "Or, if you have all the files in the same place, or";
einfo "you only have one cdrom, you can export CD_ROOT";
einfo "and that place will be used as the same data source";
einfo "for all the CDs.";
echo;
einfo "For example:";
einfo "export CD_ROOT_1=/mnt/cdrom";
echo;
fi;
export CDROM_SET="";
export CDROM_CURRENT_CD=0;
cdrom_load_next_cd
}
cdrom_load_next_cd ()
{
local var;
((++CDROM_CURRENT_CD));
unset CDROM_ROOT;
var=CD_ROOT_${CDROM_CURRENT_CD};
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
var="CDROM_CHECK_${CDROM_CURRENT_CD}";
_cdrom_locate_file_on_cd ${!var};
else
export CDROM_ROOT=${!var};
fi;
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
}
check_license ()
{
local lic=$1;
if [ -z "${lic}" ]; then
lic="${PORTDIR}/licenses/${LICENSE}";
else
if [ -e "${PORTDIR}/licenses/${lic}" ]; then
lic="${PORTDIR}/licenses/${lic}";
else
if [ -e "${PWD}/${lic}" ]; then
lic="${PWD}/${lic}";
else
if [ -e "${lic}" ]; then
lic="${lic}";
fi;
fi;
fi;
fi;
local l="`basename ${lic}`";
local alic;
eshopts_push -o noglob;
for alic in ${ACCEPT_LICENSE};
do
if [[ ${alic} == ${l} ]]; then
eshopts_pop;
return 0;
fi;
done;
eshopts_pop;
[ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
local licmsg=$(emktemp);
cat > ${licmsg} <<-EOF
**********************************************************
The following license outlines the terms of use of this
package. You MUST accept this license for installation to
continue. When you are done viewing, hit 'q'. If you
CTRL+C out of this, the install will not run!
**********************************************************
EOF
cat ${lic} >> ${licmsg};
${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
einfon "Do you accept the terms of this license (${l})? [yes/no] ";
read alic;
case ${alic} in
yes | Yes | y | Y)
return 0
;;
*)
echo;
echo;
echo;
eerror "You MUST accept the license to continue! Exiting!";
die "Failed to accept license"
;;
esac
}
cmake-utils_src_compile ()
{
_execute_optionaly "src_compile" "$@"
}
cmake-utils_src_configure ()
{
_execute_optionaly "src_configure" "$@"
}
cmake-utils_src_install ()
{
_execute_optionaly "src_install" "$@"
}
cmake-utils_src_make ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" > /dev/null;
[[ -e Makefile ]] || die "Makefile not found. Error during configure stage.";
if [[ -n ${CMAKE_VERBOSE} ]]; then
emake VERBOSE=1 "$@" || die "Make failed!";
else
emake "$@" || die "Make failed!";
fi;
popd > /dev/null
}
cmake-utils_src_test ()
{
_execute_optionaly "src_test" "$@"
}
cmake-utils_use ()
{
_use_me_now "" "$@"
}
cmake-utils_use_build ()
{
_use_me_now BUILD_ "$@"
}
cmake-utils_use_disable ()
{
_use_me_now_inverted DISABLE_ "$@"
}
cmake-utils_use_enable ()
{
_use_me_now ENABLE_ "$@"
}
cmake-utils_use_has ()
{
_use_me_now HAVE_ "$@"
}
cmake-utils_use_no ()
{
_use_me_now_inverted NO_ "$@"
}
cmake-utils_use_use ()
{
_use_me_now USE_ "$@"
}
cmake-utils_use_want ()
{
_use_me_now WANT_ "$@"
}
cmake-utils_use_with ()
{
_use_me_now WITH_ "$@"
}
comment_all_add_subdirectory ()
{
find "$@" -name CMakeLists.txt -print0 | grep -vFzZ "./cmake" | xargs -0 sed -i -e '/^[[:space:]]*add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' || die "${LINENO}: Initial sed died"
}
delete_all_version_separators ()
{
replace_all_version_separators "" "${1}"
}
delete_version_separator ()
{
replace_version_separator "${1}" "" "${2}"
}
dlopen_lib ()
{
case "${CHOST}" in
*-linux-gnu* | *-linux-uclibc | *-interix*)
echo "-ldl"
;;
esac
}
doicon ()
{
( local i j ret;
insinto /usr/share/pixmaps;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.png;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
domenu ()
{
( local i j ret=0;
insinto /usr/share/applications;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.desktop;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
dyn_pretend ()
{
if [[ -e $PORTAGE_BUILDDIR/.pretended ]]; then
vecho ">>> It appears that '$PF' is already pretended; skipping.";
vecho ">>> Remove '$PORTAGE_BUILDDIR/.pretended' to force pretend.";
return 0;
fi;
ebuild_phase pre_pkg_pretend;
ebuild_phase pkg_pretend;
>> "$PORTAGE_BUILDDIR/.pretended" || die "Failed to create $PORTAGE_BUILDDIR/.pretended";
ebuild_phase post_pkg_pretend
}
ebeep ()
{
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
ecvs_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix ()
{
echo "$@" | xargs sed -i 's/\r$//'
}
egetent ()
{
case ${CHOST} in
*-darwin[678])
case "$2" in
*[!0-9]*)
nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2\$/) {print \$0;exit;} }"
;;
*)
nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
;;
esac
;;
*-darwin*)
local mytype=$1;
[[ "passwd" == $mytype ]] && mytype="Users";
[[ "group" == $mytype ]] && mytype="Groups";
case "$2" in
*[!0-9]*)
dscl . -read /$mytype/$2 2> /dev/null | grep RecordName
;;
*)
local mykey="UniqueID";
[[ $mytype == "Groups" ]] && mykey="PrimaryGroupID";
dscl . -search /$mytype $mykey $2 2> /dev/null
;;
esac
;;
*-freebsd* | *-dragonfly*)
local opts action="user";
[[ $1 == "passwd" ]] || action="group";
if [[ $2 == [[:digit:]]* ]]; then
[[ ${action} == "user" ]] && opts="-u" || opts="-g";
fi;
pw show ${action} ${opts} "$2" -q
;;
*-netbsd* | *-openbsd*)
grep "$2:\*:" /etc/$1
;;
*)
type -p nscd &>/dev/null && nscd -i "$1";
getent "$1" "$2"
;;
esac
}
egethome ()
{
ent=$(egetent passwd $1);
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f9
;;
*)
echo ${ent} | cut -d: -f6
;;
esac
}
egetshell ()
{
ent=$(egetent passwd "$1");
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f10
;;
*)
echo ${ent} cut -d: -f7
;;
esac
}
emktemp ()
{
local exe="touch";
[[ $1 == -d ]] && exe="mkdir" && shift;
local topdir=$1;
if [[ -z ${topdir} ]]; then
[[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
fi;
if ! type -P mktemp > /dev/null; then
local tmp=/;
while [[ -e ${tmp} ]]; do
tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
done;
${exe} "${tmp}" || ${exe} -p "${tmp}";
echo "${tmp}";
else
if [[ ${exe} == "touch" ]]; then
TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
else
TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
fi;
fi
}
enable_cmake-utils_src_compile ()
{
debug-print-function ${FUNCNAME} "$@";
has src_configure ${CMAKE_EXPF} || cmake-utils_src_configure;
cmake-utils_src_make "$@"
}
enable_cmake-utils_src_configure ()
{
debug-print-function ${FUNCNAME} "$@";
[[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] && {
local name;
for name in ${CMAKE_REMOVE_MODULES_LIST};
do
find "${S}" -name ${name}.cmake -exec rm -v {} +;
done
};
_check_build_dir;
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then
eerror "Unable to locate CMakeLists.txt under:";
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\"";
eerror "Consider not inheriting the cmake eclass.";
die "FATAL: Unable to find CMakeLists.txt";
fi;
_modify-cmakelists;
export XDG_CONFIG_HOME="${T}";
if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
if ! has debug ${IUSE//+} || ! use debug; then
append-cppflags -DNDEBUG;
fi;
fi;
local build_rules=${T}/gentoo_rules.cmake;
cat > "${build_rules}" <<-_EOF_
SET (CMAKE_C_COMPILER $(type -P $(tc-getCC)) CACHE FILEPATH "C compiler" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILER $(type -P $(tc-getCXX)) CACHE FILEPATH "C++ compiler" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
_EOF_
if use prefix; then
cat >> "${build_rules}";
fi <<-_EOF_
# in Prefix we need rpath and must ensure cmake gets our default linker path
# right ... except for Darwin hosts
IF (NOT APPLE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
CACHE STRING "" FORCE)
ELSE ()
SET(CMAKE_PREFIX_PATH "${EPREFIX}${PREFIX:-/usr}" CACHE STRING ""FORCE)
SET(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE)
SET(CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE CACHE BOOL "" FORCE)
SET(CMAKE_INSTALL_RPATH "${EPREFIX}${PREFIX:-/usr}/lib;${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)" CACHE STRING "" FORCE)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE)
SET(CMAKE_INSTALL_NAME_DIR "${EPREFIX}${PREFIX:-/usr}/lib" CACHE STRING "" FORCE)
ENDIF (NOT APPLE)
_EOF_
local common_config=${T}/gentoo_common_config.cmake;
local libdir=$(get_libdir);
cat > "${common_config}" <<-_EOF_
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries")
_EOF_
[[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}";
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
local mycmakeargs_local=(${mycmakeargs});
else
local mycmakeargs_local=("${mycmakeargs[@]}");
fi;
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
local cmakeargs=(--no-warn-unused-cli -C "${common_config}" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX:-/usr}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE="${build_rules}" "${MYCMAKEARGS}");
mkdir -p "${CMAKE_BUILD_DIR}";
pushd "${CMAKE_BUILD_DIR}" > /dev/null;
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}";
echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}";
"${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed";
popd > /dev/null
}
enable_cmake-utils_src_install ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" > /dev/null;
base_src_install "$@";
popd > /dev/null;
if [[ -n "${DOCS}" ]] && [[ "$(declare -p DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then
dodoc ${DOCS} || die "dodoc failed";
fi;
if [[ -n "${HTML_DOCS}" ]] && [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then
dohtml -r ${HTML_DOCS} || die "dohtml failed";
fi
}
enable_cmake-utils_src_test ()
{
debug-print-function ${FUNCNAME} "$@";
local ctestargs;
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" > /dev/null;
[[ -e CTestTestfile.cmake ]] || {
echo "No tests found. Skipping.";
return 0
};
[[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure";
ctest ${ctestargs} "$@" || die "Tests failed.";
popd > /dev/null
}
enable_selected_doc_linguas ()
{
debug-print-function ${FUNCNAME} "$@";
if ! $(env | grep -q "^LINGUAS="); then
return 0;
fi;
KDE_DOC_DIRS=${KDE_DOC_DIRS:='doc/%lingua'};
local linguas;
for pattern in ${KDE_DOC_DIRS};
do
local handbookdir=`dirname ${pattern}`;
local translationdir=`basename ${pattern}`;
[[ ${handbookdir} = '.' ]] && handbookdir=${translationdir} && translationdir=;
[[ -d ${handbookdir} ]] || die 'wrong doc dir specified';
if ! use handbook; then
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die 'failed to comment out all handbooks';
else
comment_all_add_subdirectory "${handbookdir}";
local lingua;
for lingua in en ${KDE_LINGUAS};
do
if [[ ${lingua} = en ]] || use linguas_${lingua}; then
if [[ -d ${handbookdir}/${translationdir//%lingua/${lingua}} ]]; then
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}";
fi;
fi;
done;
fi;
done;
[[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}"
}
enable_selected_linguas ()
{
debug-print-function ${FUNCNAME} "$@";
local x;
if ! $(env | grep -q "^LINGUAS="); then
return 0;
fi;
if [[ "$(declare -p KDE_LINGUAS_DIR 2>/dev/null 2>&1)" == "declare -a"* ]]; then
debug-print "$FUNCNAME: we have these subfolders defined: ${KDE_LINGUAS_DIR}";
for x in ${KDE_LINGUAS_DIR[@]};
do
_enable_selected_linguas_dir ${x};
done;
else
KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"};
_enable_selected_linguas_dir ${KDE_LINGUAS_DIR};
fi
}
enewgroup ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewgroup is only for use in pkg_* functions!"
;;
esac;
local egroup="$1";
shift;
if [ -z "${egroup}" ]; then
eerror "No group specified !";
die "Cannot call enewgroup without a group";
fi;
if [[ -n $(egetent group "${egroup}") ]]; then
return 0;
fi;
einfo "Adding group '${egroup}' to your system ...";
local opts=;
local egid="$1";
shift;
if [ ! -z "${egid}" ]; then
if [ "${egid}" -gt 0 ]; then
if [ -z "`egetent group ${egid}`" ]; then
if [[ "${CHOST}" == *-darwin* ]]; then
opts="${opts} ${egid}";
else
opts="${opts} -g ${egid}";
fi;
else
egid="next available; requested gid taken";
fi;
else
eerror "Groupid given but is not greater than 0 !";
die "${egid} is not a valid GID";
fi;
else
egid="next available";
fi;
einfo " - Groupid: ${egid}";
local eextra="$@";
opts="${opts} ${eextra}";
local oldsandbox="${SANDBOX_ON}";
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [ ! -z "${eextra}" ]; then
einfo "Extra options are not supported on Darwin/OS X yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: ${eextra}";
die "Required function missing";
fi;
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
dscl . create /groups/${egroup} gid ${egid};
dscl . create /groups/${egroup} passwd '*'
;;
*-freebsd* | *-dragonfly*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
;;
*-netbsd*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
groupadd -g ${egid} ${egroup} || die "enewgroup failed"
;;
*)
groupadd -r ${opts} ${egroup} || die "enewgroup failed"
;;
esac;
export SANDBOX_ON="${oldsandbox}"
}
enewuser ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewuser is only for use in pkg_* functions!"
;;
esac;
local euser=$1;
shift;
if [[ -z ${euser} ]]; then
eerror "No username specified !";
die "Cannot call enewuser without a username";
fi;
if [[ -n $(egetent passwd "${euser}") ]]; then
return 0;
fi;
einfo "Adding user '${euser}' to your system ...";
local opts=;
local euid=$1;
shift;
if [[ -n ${euid} && ${euid} != -1 ]]; then
if [[ ${euid} -gt 0 ]]; then
if [[ -n $(egetent passwd ${euid}) ]]; then
euid="next";
fi;
else
eerror "Userid given but is not greater than 0 !";
die "${euid} is not a valid UID";
fi;
else
euid="next";
fi;
if [[ ${euid} == "next" ]]; then
for ((euid = 101; euid <= 999; euid++))
do
[[ -z $(egetent passwd ${euid}) ]] && break;
done;
fi;
opts="${opts} -u ${euid}";
einfo " - Userid: ${euid}";
local eshell=$1;
shift;
if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
if [[ ! -e ${ROOT}${eshell} ]]; then
eerror "A shell was specified but it does not exist !";
die "${eshell} does not exist in ${ROOT}";
fi;
if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
eerror "Do not specify ${eshell} yourself, use -1";
die "Pass '-1' as the shell parameter";
fi;
else
for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
do
[[ -x ${ROOT}${shell} ]] && break;
done;
if [[ ${shell} == "/dev/null" ]]; then
eerror "Unable to identify the shell to use, proceeding with userland default.";
case ${USERLAND} in
GNU)
shell="/bin/false"
;;
BSD)
shell="/sbin/nologin"
;;
Darwin)
shell="/usr/sbin/nologin"
;;
*)
die "Unable to identify the default shell for userland ${USERLAND}"
;;
esac;
fi;
eshell=${shell};
fi;
einfo " - Shell: ${eshell}";
opts="${opts} -s ${eshell}";
local ehome=$1;
shift;
if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
ehome="/dev/null";
fi;
einfo " - Home: ${ehome}";
opts="${opts} -d ${ehome}";
local egroups=$1;
shift;
if [[ ! -z ${egroups} ]]; then
local oldifs=${IFS};
local defgroup="" exgroups="";
export IFS=",";
for g in ${egroups};
do
export IFS=${oldifs};
if [[ -z $(egetent group "${g}") ]]; then
eerror "You must add group ${g} to the system first";
die "${g} is not a valid GID";
fi;
if [[ -z ${defgroup} ]]; then
defgroup=${g};
else
exgroups="${exgroups},${g}";
fi;
export IFS=",";
done;
export IFS=${oldifs};
opts="${opts} -g ${defgroup}";
if [[ ! -z ${exgroups} ]]; then
opts="${opts} -G ${exgroups:1}";
fi;
else
egroups="(none)";
fi;
einfo " - Groups: ${egroups}";
local oldsandbox=${SANDBOX_ON};
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [[ -z $@ ]]; then
dscl . create /users/${euser} uid ${euid};
dscl . create /users/${euser} shell ${eshell};
dscl . create /users/${euser} home ${ehome};
dscl . create /users/${euser} realname "added by portage for ${PN}";
local oldifs=${IFS};
export IFS=",";
for g in ${egroups};
do
dscl . merge /groups/${g} users ${euser};
done;
export IFS=${oldifs};
else
einfo "Extra options are not supported on Darwin yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: $@";
die "Required function missing";
fi
;;
*-freebsd* | *-dragonfly*)
if [[ -z $@ ]]; then
pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
else
einfo " - Extra: $@";
pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
fi
;;
*-netbsd*)
if [[ -z $@ ]]; then
useradd ${opts} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd ${opts} ${euser} "$@" || die "enewuser failed";
fi
;;
*-openbsd*)
if [[ -z $@ ]]; then
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
fi
;;
*)
if [[ -z $@ ]]; then
useradd -r ${opts} -c "added by portage for ${PN}" ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd -r ${opts} "$@" ${euser} || die "enewuser failed";
fi
;;
esac;
if [[ ! -e ${ROOT}/${ehome} ]]; then
einfo " - Creating ${ehome} in ${ROOT}";
mkdir -p "${ROOT}/${ehome}";
chown ${euser} "${ROOT}/${ehome}";
chmod 755 "${ROOT}/${ehome}";
fi;
export SANDBOX_ON=${oldsandbox}
}
epatch ()
{
function _epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
};
unset P4CONFIG P4PORT P4USER;
if [[ $# -gt 1 ]]; then
local m;
for m in "$@";
do
epatch "${m}";
done;
return 0;
fi;
local SINGLE_PATCH="no";
[[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
if [[ -f $1 ]]; then
SINGLE_PATCH="yes";
set -- "$1";
local EPATCH_SUFFIX=$1;
else
if [[ -d $1 ]]; then
set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
else
if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
epatch "${EPATCH_SOURCE}/$1";
return $?;
else
[[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
echo;
eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:";
eerror;
eerror " ${EPATCH_SOURCE}";
eerror " ( ${EPATCH_SOURCE##*/} )";
echo;
die "Cannot find \$EPATCH_SOURCE!";
fi;
fi;
fi;
local PIPE_CMD;
case ${EPATCH_SUFFIX##*\.} in
xz)
PIPE_CMD="xz -dc"
;;
lzma)
PIPE_CMD="lzma -dc"
;;
bz2)
PIPE_CMD="bzip2 -dc"
;;
gz | Z | z)
PIPE_CMD="gzip -dc"
;;
ZIP | zip)
PIPE_CMD="unzip -p"
;;
*)
;;
esac;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
local x;
for x in "$@";
do
[[ ! -f ${x} ]] && continue;
local patchname=${x##*/};
local a=${patchname#*_};
a=${a%%_*};
if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
continue;
fi;
if [[ -n ${EPATCH_EXCLUDE} ]]; then
eshopts_push -o noglob;
local ex;
for ex in ${EPATCH_EXCLUDE};
do
if [[ ${patchname} == ${ex} ]]; then
eshopts_pop;
continue 2;
fi;
done;
eshopts_pop;
fi;
if [[ ${SINGLE_PATCH} == "yes" ]]; then
if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
einfo "${EPATCH_SINGLE_MSG}";
else
einfo "Applying ${patchname} ...";
fi;
else
einfo " ${patchname} ...";
fi;
local STDERR_TARGET="${T}/${patchname}.out";
if [[ -e ${STDERR_TARGET} ]]; then
STDERR_TARGET="${T}/${patchname}-$$.out";
fi;
printf "***** %s *****\n\n" "${patchname}" > "${STDERR_TARGET}";
local count=0;
local PATCH_TARGET;
if [[ -n ${PIPE_CMD} ]]; then
PATCH_TARGET="${T}/$$.patch";
echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
echo;
eerror "Could not extract patch!";
count=5;
break;
fi;
else
PATCH_TARGET=${x};
fi;
local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
if [[ -n ${abs_paths} ]]; then
count=1;
printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
fi;
local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}");
if [[ -n ${rel_paths} ]]; then
eqawarn "QA Notice: Your patch uses relative paths '../'.";
eqawarn " In the future this will cause a failure.";
eqawarn "${rel_paths}";
fi;
while [[ ${count} -lt 5 ]]; do
( _epatch_draw_line "***** ${patchname} *****";
echo;
echo "PATCH COMMAND: patch -p${count} ${EPATCH_OPTS} < '${PATCH_TARGET}'";
echo;
_epatch_draw_line "***** ${patchname} *****";
patch -p${count} ${EPATCH_OPTS} --dry-run -f < "${PATCH_TARGET}" 2>&1;
ret=$?;
echo;
echo "patch program exited with status ${ret}";
exit ${ret} ) >> "${STDERR_TARGET}";
if [ $? -eq 0 ]; then
( _epatch_draw_line "***** ${patchname} *****";
echo;
echo "ACTUALLY APPLYING ${patchname} ...";
echo;
_epatch_draw_line "***** ${patchname} *****";
patch -p${count} ${EPATCH_OPTS} < "${PATCH_TARGET}" 2>&1;
ret=$?;
echo;
echo "patch program exited with status ${ret}";
exit ${ret} ) >> "${STDERR_TARGET}";
if [ $? -ne 0 ]; then
echo;
eerror "A dry-run of patch command succeeded, but actually";
eerror "applying the patch failed!";
count=5;
fi;
break;
fi;
: $(( count++ ));
done;
if [[ -n ${PIPE_CMD} ]]; then
rm -f "${PATCH_TARGET}";
fi;
if [[ ${count} -ge 5 ]]; then
echo;
eerror "Failed Patch: ${patchname} !";
eerror " ( ${PATCH_TARGET} )";
eerror;
eerror "Include in your bugreport the contents of:";
eerror;
eerror " ${STDERR_TARGET}";
echo;
die "Failed Patch: ${patchname}!";
fi;
rm -f "${STDERR_TARGET}";
eend 0;
done;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
:
}
epatch_user ()
{
[[ $# -ne 0 ]] && die "epatch_user takes no options";
local applied="${T}/epatch_user.applied";
[[ -e ${applied} ]] && return 2;
local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}};
do
EPATCH_SOURCE=${base}/${CTARGET}/${check};
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check};
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check};
if [[ -d ${EPATCH_SOURCE} ]]; then
EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch;
echo "${EPATCH_SOURCE}" > "${applied}";
return 0;
fi;
done;
echo "none" > "${applied}";
return 1
}
epause ()
{
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
epunt_cxx ()
{
local dir=$1;
[[ -z ${dir} ]] && dir=${S};
ebegin "Removing useless C++ checks";
local f;
find "${dir}" -name configure | while read f; do
patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
done;
eend 0
}
eshopts_pop ()
{
[[ $# -ne 0 ]] && die "eshopts_pop takes no arguments";
local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 ));
[[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair";
local s=${__ESHOPTS_SAVE__[$i]};
unset __ESHOPTS_SAVE__[$i];
if [[ ${s} == "shopt -"* ]]; then
eval "${s}" || die "eshopts_pop: sanity: invalid shopt options: ${s}";
else
set +$- || die "eshopts_pop: sanity: invalid shell settings: $-";
set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}";
fi
}
eshopts_push ()
{
local i=${#__ESHOPTS_SAVE__[@]};
if [[ $1 == -[su] ]]; then
__ESHOPTS_SAVE__[$i]=$(shopt -p);
[[ $# -eq 0 ]] && return 0;
shopt "$@" || die "eshopts_push: bad options to shopt: $*";
else
__ESHOPTS_SAVE__[$i]=$-;
[[ $# -eq 0 ]] && return 0;
set "$@" || die "eshopts_push: bad options to set: $*";
fi
}
esvn_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
fdo-mime_desktop_database_update ()
{
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
if [ -x "${EPREFIX}/usr/bin/update-desktop-database" ]; then
einfo "Updating desktop mime database ...";
"${EPREFIX}/usr/bin/update-desktop-database" -q "${EROOT}usr/share/applications";
fi
}
fdo-mime_mime_database_update ()
{
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
if [ -x "${EPREFIX}/usr/bin/update-mime-database" ]; then
einfo "Updating shared mime info database ...";
"${EPREFIX}/usr/bin/update-mime-database" "${EROOT}usr/share/mime";
fi
}
filter-flags ()
{
_filter-hardened "$@";
_filter-var CFLAGS "$@";
_filter-var CPPFLAGS "$@";
_filter-var CXXFLAGS "$@";
_filter-var FFLAGS "$@";
_filter-var FCFLAGS "$@";
return 0
}
filter-ldflags ()
{
_filter-var LDFLAGS "$@";
return 0
}
filter-lfs-flags ()
{
[[ -n $@ ]] && die "filter-lfs-flags takes no arguments";
filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath ()
{
local orig_mfpmath new_math prune_math;
orig_mfpmath=$(get-flag -mfpmath);
new_math=$(get-flag mfpmath);
new_math=" ${new_math//,/ } ";
prune_math="";
for prune_math in "$@";
do
new_math=${new_math/ ${prune_math} / };
done;
new_math=$(echo ${new_math});
new_math=${new_math// /,};
if [[ -z ${new_math} ]]; then
filter-flags ${orig_mfpmath};
else
replace-flags ${orig_mfpmath} -mfpmath=${new_math};
fi;
return 0
}
find_unpackable_file ()
{
local src=$1;
if [[ -z ${src} ]]; then
src=${DISTDIR}/${A};
else
if [[ -e ${DISTDIR}/${src} ]]; then
src=${DISTDIR}/${src};
else
if [[ -e ${PWD}/${src} ]]; then
src=${PWD}/${src};
else
if [[ -e ${src} ]]; then
src=${src};
fi;
fi;
fi;
fi;
[[ ! -e ${src} ]] && return 1;
echo "${src}"
}
gcc-fullversion ()
{
_gcc_fullversion '$1.$2.$3' "$@"
}
gcc-major-version ()
{
_gcc_fullversion '$1' "$@"
}
gcc-micro-version ()
{
_gcc_fullversion '$3' "$@"
}
gcc-minor-version ()
{
_gcc_fullversion '$2' "$@"
}
gcc-specs-directive ()
{
local directive subdname subdirective;
directive="$(_gcc-specs-directive_raw $1)";
while [[ ${directive} == *%\(*\)* ]]; do
subdname=${directive/*%\(};
subdname=${subdname/\)*};
subdirective="$(_gcc-specs-directive_raw ${subdname})";
directive="${directive//\%(${subdname})/${subdirective}}";
done;
echo "${directive}";
return 0
}
gcc-specs-nostrict ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]])
}
gcc-specs-now ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ "${directive/\{!nonow:}" != "${directive}" ]])
}
gcc-specs-pie ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!nopie:}" != "${directive}" ]])
}
gcc-specs-relro ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ "${directive/\{!norelro:}" != "${directive}" ]])
}
gcc-specs-ssp ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]])
}
gcc-specs-ssp-to-all ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]])
}
gcc-version ()
{
_gcc_fullversion '$1.$2' "$@"
}
gen_usr_ldscript ()
{
local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
[[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
tc-is-static-only && return;
dodir /usr/${libdir};
if [[ $1 == "-a" ]]; then
auto=true;
shift;
dodir /${libdir};
fi;
output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
for lib in "$@";
do
local tlib;
if ${auto}; then
lib="lib${lib}${suffix}";
else
[[ -r ${ED}/${libdir}/${lib} ]] || continue;
fi;
case ${CTARGET:-${CHOST}} in
*-darwin*)
if ${auto}; then
tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
else
tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
fi;
[[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
tlib=${tlib##*/};
if ${auto}; then
mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
fi;
rm -f "${ED}"/${libdir}/${lib};
fi;
if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
chmod u+w "${ED}${libdir}/${tlib}";
local nowrite=yes;
fi;
install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
[[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
pushd "${ED}/usr/${libdir}" > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
popd > /dev/null
;;
*-aix* | *-irix* | *64*-hpux* | *-interix* | *-winnt*)
if ${auto}; then
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
tlib=$(readlink "${ED}"/${libdir}/${lib});
tlib=${tlib##*/};
if [[ -z ${tlib} ]]; then
tlib=${lib};
else
rm -f "${ED}"/${libdir}/${lib};
fi;
else
tlib=${lib};
fi;
pushd "${ED}/usr/${libdir}" > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
popd > /dev/null
;;
hppa*-hpux*)
if ${auto}; then
tlib=$(chatr "${ED}"/usr/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
[[ -z ${tlib} ]] && tlib=${lib};
tlib=${tlib##*/};
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib}* ]]; then
mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
fi;
[[ ${tlib} != ${lib} ]] && rm -f "${ED}"/${libdir}/${lib};
else
tlib=$(chatr "${ED}"/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
[[ -z ${tlib} ]] && tlib=${lib};
tlib=${tlib##*/};
fi;
pushd "${ED}"/usr/${libdir} > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
[[ ${tlib} != ${lib} ]] && ln -snf "../../${libdir}/${tlib}" "${tlib}";
popd > /dev/null
;;
*)
if ${auto}; then
tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
[[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib}* ]]; then
mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
fi;
rm -f "${ED}"/${libdir}/${lib};
else
tlib=${lib};
fi;
cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
/* GNU ld script
Since Gentoo has critical dynamic libraries in /lib, and the static versions
in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
run into linking problems. This "fake" dynamic lib is a linker script that
redirects the linker to the real lib. And yes, this works in the cross-
compiling scenario as the sysroot-ed linker will prepend the real path.
See bug http://bugs.gentoo.org/4411 for more info.
*/
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT
;;
esac
fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
done
}
get-flag ()
{
local f findflag="$1";
for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS};
do
if [ "${f/${findflag}}" != "${f}" ]; then
printf "%s\n" "${f/-${findflag}=}";
return 0;
fi;
done;
return 1
}
get_abi_ASFLAGS ()
{
get_abi_var ASFLAGS "$@"
}
get_abi_CFLAGS ()
{
get_abi_var CFLAGS "$@"
}
get_abi_CHOST ()
{
get_abi_var CHOST "$@"
}
get_abi_CTARGET ()
{
get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS ()
{
get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS ()
{
get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR ()
{
get_abi_var LIBDIR "$@"
}
get_abi_var ()
{
local flag=$1;
local abi;
if [ $# -gt 1 ]; then
abi=${2};
else
if [ -n "${ABI}" ]; then
abi=${ABI};
else
if [ -n "${DEFAULT_ABI}" ]; then
abi=${DEFAULT_ABI};
else
abi="default";
fi;
fi;
fi;
local var="${flag}_${abi}";
echo ${!var}
}
get_after_major_version ()
{
echo $(get_version_component_range 2- "${1:-${PV}}")
}
get_all_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != ${DEFAULT_ABI} ]]; then
order="${order:+${order} }${x}";
fi;
done;
order="${order:+${order} }${DEFAULT_ABI}";
echo ${order};
return 0
}
get_all_libdirs ()
{
local libdirs;
local abi;
local dir;
for abi in ${MULTILIB_ABIS};
do
libdirs+=" $(get_abi_LIBDIR ${abi})";
done;
[[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib";
echo "${libdirs}"
}
get_all_version_components ()
{
eshopts_push -s extglob;
local ver_str=${1:-${PV}} result;
result=();
if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
echo ${VERSIONATOR_CACHE_RESULT};
eshopts_pop;
return;
fi;
export VERSIONATOR_CACHE_VER_STR=${ver_str};
while [[ -n $ver_str ]]; do
case "${ver_str::1}" in
[[:digit:]])
result+=("${ver_str%%[^[:digit:]]*}");
ver_str=${ver_str##+([[:digit:]])}
;;
[-_.])
result+=("${ver_str::1}");
ver_str=${ver_str:1}
;;
[[:alpha:]])
local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])};
result+=("${ver_str::${#ver_str} - ${#not_match}}");
ver_str=${not_match}
;;
*)
result+=("${ver_str::1}");
ver_str=${ver_str:1}
;;
esac;
done;
export VERSIONATOR_CACHE_RESULT=${result[*]};
echo ${result[@]};
eshopts_pop
}
get_bmake ()
{
if [[ ${USERLAND} == *BSD ]]; then
echo make;
else
if [[ ${USERLAND} == "Darwin" ]]; then
echo bsdmake;
else
echo pmake;
fi;
fi
}
get_install_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
if [[ ${EMULTILIB_PKG} == "true" ]]; then
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != "${DEFAULT_ABI}" ]]; then
has ${x} ${ABI_DENY} || order="${order} ${x}";
fi;
done;
has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";
if [[ -n ${ABI_ALLOW} ]]; then
local ordera="";
for x in ${order};
do
if has ${x} ${ABI_ALLOW}; then
ordera="${ordera} ${x}";
fi;
done;
order=${ordera};
fi;
else
order=${DEFAULT_ABI};
fi;
if [[ -z ${order} ]]; then
die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
fi;
echo ${order};
return 0
}
get_kde_version ()
{
local ver=${1:-${PV}};
local major=$(get_major_version ${ver});
local minor=$(get_version_component_range 2 ${ver});
local micro=$(get_version_component_range 3 ${ver});
if [[ ${ver} == 9999 ]]; then
echo live;
else
(( micro < 50 )) && echo ${major}.${minor} || echo ${major}.$((minor + 1));
fi
}
get_last_version_component_index ()
{
echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
}
get_libdir ()
{
local CONF_LIBDIR;
if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
echo ${CONF_LIBDIR_OVERRIDE};
else
get_abi_LIBDIR;
fi
}
get_libdir_override ()
{
if has_multilib_profile; then
eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
CONF_LIBDIR="$1";
CONF_LIBDIR_OVERRIDE="$1";
LIBDIR_default="$1"
}
get_libname ()
{
local libname;
local ver=$1;
case ${CHOST} in
*-cygwin | mingw* | *-mingw*)
libname="dll"
;;
*-darwin*)
libname="dylib"
;;
*-mint*)
libname="irrelevant"
;;
hppa*-hpux*)
libname="sl"
;;
*)
libname="so"
;;
esac;
if [[ -z $* ]]; then
echo ".${libname}";
else
for ver in "$@";
do
case ${CHOST} in
*-darwin*)
echo ".${ver}.${libname}"
;;
*-mint*)
echo ".${libname}"
;;
*)
echo ".${libname}.${ver}"
;;
esac;
done;
fi
}
get_major_version ()
{
local c=($(get_all_version_components "${1:-${PV}}"));
echo ${c[0]}
}
get_modname ()
{
local modname;
local ver=$1;
case ${CHOST} in
*-darwin*)
modname="bundle"
;;
*)
modname="so"
;;
esac;
echo ".${modname}"
}
get_mounts ()
{
local point= node= fs= opts= foo=;
if [[ $(uname -s) == "Linux" ]]; then
while read node point fs opts foo; do
echo "${point} ${node} ${fs} ${opts}";
done < /proc/mounts;
return;
fi;
local IFS=' ';
LC_ALL=C mount -p | while read node point fs foo; do
opts=${fs#* };
fs=${fs%% *};
echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
done
}
get_multilibdir ()
{
if has_multilib_profile; then
eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
echo ${CONF_MULTILIBDIR:=lib32}
}
get_version_component_count ()
{
local a=($(get_version_components "${1:-${PV}}"));
echo ${#a[@]}
}
get_version_component_range ()
{
eshopts_push -s extglob;
local c v="${2:-${PV}}" range="${1}" range_start range_end;
local -i i=-1 j=0;
c=($(get_all_version_components "${v}"));
range_start=${range%-*};
range_start=${range_start:-1};
range_end=${range#*-};
range_end=${range_end:-${#c[@]}};
while ((j < range_start)); do
i+=1;
((i > ${#c[@]})) && eshopts_pop && return;
[[ -n "${c[i]//[-._]}" ]] && j+=1;
done;
while ((j <= range_end)); do
echo -n ${c[i]};
((i > ${#c[@]})) && eshopts_pop && return;
[[ -n "${c[i]//[-._]}" ]] && j+=1;
i+=1;
done;
eshopts_pop
}
get_version_components ()
{
local c=$(get_all_version_components "${1:-${PV}}");
echo ${c//[-._]/ }
}
gnome2_gconf_install ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
local updater="${EROOT}${GCONFTOOL_BIN}";
if [[ ! -x "${updater}" ]]; then
debug-print "${updater} is not executable";
return;
fi;
if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
debug-print "No GNOME 2 GConf schemas found";
return;
fi;
unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
einfo "Installing GNOME 2 GConf schemas";
local F;
for F in ${GNOME2_ECLASS_SCHEMAS};
do
if [[ -e "${EROOT}${F}" ]]; then
debug-print "Installing schema: ${F}";
"${updater}" --makefile-install-rule "${EROOT}${F}" > /dev/null;
fi;
done;
pids=$(pgrep -x gconfd-2);
if [[ $? == 0 ]]; then
ebegin "Reloading GConf schemas";
kill -HUP ${pids};
eend $?;
fi
}
gnome2_gconf_savelist ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
pushd "${ED}" &>/dev/null;
export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null);
popd &>/dev/null
}
gnome2_gconf_uninstall ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
local updater="${EROOT}${GCONFTOOL_BIN}";
if [[ ! -x "${updater}" ]]; then
debug-print "${updater} is not executable";
return;
fi;
if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
debug-print "No GNOME 2 GConf schemas found";
return;
fi;
unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
einfo "Uninstalling GNOME 2 GConf schemas";
local F;
for F in ${GNOME2_ECLASS_SCHEMAS};
do
if [[ -e "${EROOT}${F}" ]]; then
debug-print "Uninstalling gconf schema: ${F}";
"${updater}" --makefile-uninstall-rule "${EROOT}${F}" > /dev/null;
fi;
done;
pids=$(pgrep -x gconfd-2);
if [[ $? == 0 ]]; then
ebegin "Reloading GConf schemas";
kill -HUP ${pids};
eend $?;
fi
}
gnome2_icon_cache_update ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}";
if [[ ! -x "${updater}" ]]; then
debug-print "${updater} is not executable";
return;
fi;
if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
debug-print "No icon cache to update";
return;
fi;
ebegin "Updating icons cache";
local retval=0;
local fails=();
for dir in ${GNOME2_ECLASS_ICONS};
do
if [[ -f "${EROOT}${dir}/index.theme" ]]; then
local rv=0;
"${updater}" -qf "${EROOT}${dir}";
rv=$?;
if [[ ! $rv -eq 0 ]]; then
debug-print "Updating cache failed on ${EROOT}${dir}";
fails[$(( ${#fails[@]} + 1 ))]="${EROOT}${dir}";
retval=2;
fi;
fi;
done;
eend ${retval};
for f in "${fails[@]}";
do
eerror "Failed to update cache with icon $f";
done
}
gnome2_icon_savelist ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
pushd "${ED}" &>/dev/null;
export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null);
popd &>/dev/null
}
gnome2_omf_fix ()
{
local omf_makefiles filename;
omf_makefiles="$@";
if [[ -f ${S}/omf.make ]]; then
omf_makefiles="${omf_makefiles} ${S}/omf.make";
fi;
for filename in $(find ./ -name "Makefile.in" -o -name "Makefile.am" |sort);
do
omf_makefiles="${omf_makefiles} ${filename}";
done;
ebegin "Fixing OMF Makefiles";
local retval=0;
local fails=();
for omf in ${omf_makefiles};
do
local rv=0;
sed -i -e 's:scrollkeeper-update:true:' "${omf}";
retval=$?;
if [[ ! $rv -eq 0 ]]; then
debug-print "updating of ${omf} failed";
fails[$(( ${#fails[@]} + 1 ))]=$omf;
retval=2;
fi;
done;
eend $retval;
for f in "${fails[@]}";
do
eerror "Failed to update OMF Makefile $f";
done
}
gnome2_schemas_savelist ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
pushd "${ED}" &>/dev/null;
export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null);
popd &>/dev/null
}
gnome2_schemas_update ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}";
if [[ ! -x ${updater} ]]; then
debug-print "${updater} is not executable";
return;
fi;
if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
debug-print "No GSettings schemas to update";
return;
fi;
ebegin "Updating GSettings schemas";
${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null;
eend $?
}
gnome2_scrollkeeper_update ()
{
has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
if [[ -x "${EROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then
einfo "Updating scrollkeeper database ...";
"${EROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${EROOT}${SCROLLKEEPER_DIR}";
fi
}
has_hardened ()
{
die "$0: deprecated, please use gcc-specs-{relro,now}()!"
}
has_m32 ()
{
[ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0;
local temp=$(emktemp);
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_m64 ()
{
local temp="$(emktemp)";
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_multilib_profile ()
{
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_pic ()
{
die "$0: deprecated, please use gcc-specs-pie()!"
}
has_pie ()
{
die "$0: deprecated, please use gcc-specs-pie()!"
}
has_ssp ()
{
die "$0: deprecated, please use gcc-specs-ssp()!"
}
has_ssp_all ()
{
die "$0: deprecated, please use gcc-specs-ssp()!"
}
helpers_die ()
{
case "${EAPI:-0}" in
0 | 1 | 2 | 3)
echo -e "$@" 1>&2
;;
*)
die "$@"
;;
esac
}
install_library_dependencies ()
{
local depsfile="${T}/${PN}";
ebegin "Installing library dependencies as ${depsfile##*/}";
insinto /var/lib/kde;
doins "${depsfile}" || die "Failed to install library dependencies.";
eend $?
}
is-flag ()
{
is-flagq "$@" && echo true
}
is-flagq ()
{
[[ -n $2 ]] && die "Usage: is-flag <flag>";
_is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1
}
is-ldflag ()
{
is-ldflagq "$@" && echo true
}
is-ldflagq ()
{
[[ -n $2 ]] && die "Usage: is-ldflag <flag>";
_is_flagq LDFLAGS $1
}
is-login-disabled ()
{
shell=$(egetshell "$1");
case ${shell} in
/bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
return 0
;;
*)
return 1
;;
esac
}
is_final_abi ()
{
has_multilib_profile || return 0;
set -- $(get_install_abis);
local LAST_ABI=$#;
[[ ${!LAST_ABI} == ${ABI} ]]
}
kde4-base_pkg_postinst ()
{
debug-print-function ${FUNCNAME} "$@";
gnome2_icon_cache_update;
fdo-mime_desktop_database_update;
fdo-mime_mime_database_update;
buildsycoca;
if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
echo;
ewarn "WARNING! you have kdeenable final useflag enabled.";
ewarn "This useflag needs to be enabled on ALL kde using packages and";
ewarn "is known to cause issues.";
ewarn "You are using this setup at your own risk and the kde team does not";
ewarn "take responsibilities for dead kittens.";
echo;
fi;
if [[ ${BUILD_TYPE} = live ]]; then
echo;
einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}";
einfo "Use it at your own risk.";
einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!";
echo;
fi;
if [[ ${KDEBASE} != kde-base ]] && ! has_version 'kde-base/kdebase-runtime-meta' && ! has_version 'kde-base/kdebase-startkde'; then
if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
echo;
ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\"";
ewarn "nor \"kde-base/kdebase-startkde\". You need one of above.";
ewarn "With this setting you are unsupported by KDE team.";
ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID.";
fi;
fi;
fi
}
kde4-base_pkg_postrm ()
{
debug-print-function ${FUNCNAME} "$@";
gnome2_icon_cache_update;
fdo-mime_desktop_database_update;
fdo-mime_mime_database_update;
buildsycoca
}
kde4-base_pkg_preinst ()
{
debug-print-function ${FUNCNAME} "$@";
gnome2_icon_savelist
}
kde4-base_pkg_setup ()
{
debug-print-function ${FUNCNAME} "$@";
if has kdeprefix ${IUSE//+} && use kdeprefix; then
eerror "Sorry, kdeprefix support has been removed.";
eerror "Please remove kdeprefix from your USE variable.";
die "kdeprefix support has been removed";
fi;
if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && {
[[ ${KDE_REQUIRED} == always ]] || {
[[ ${KDE_REQUIRED} == optional ]] && use kde
}
} && has_version kde-base/kdelibs[kdeprefix]; then
eerror "Sorry, kdeprefix support has been removed.";
eerror "Please rebuild kdelibs without kdeprefix support.";
die "kdeprefix support has been removed";
fi;
unset KDEHOME;
if [[ ${MERGE_TYPE} != binary ]]; then
[[ $(gcc-major-version) -lt 4 ]] || ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837).";
fi;
KDEDIR=/usr;
: ${PREFIX:=/usr};
EKDEDIR=${EPREFIX}/usr;
QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/";
export XDG_CONFIG_HOME="${T}"
}
kde4-base_src_compile ()
{
debug-print-function ${FUNCNAME} "$@";
cmake-utils_src_compile "$@"
}
kde4-base_src_configure ()
{
debug-print-function ${FUNCNAME} "$@";
local cmakeargs=(-DKDE4_BUILD_TESTS=OFF);
if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
cmakeargs+=(-DKDE4_ENABLE_FINAL=ON);
fi;
if has debug ${IUSE//+} && use debug; then
CMAKE_BUILD_TYPE="Debugfull";
else
append-cppflags -DQT_NO_DEBUG;
fi;
[[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo);
tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}");
QTEST_COLORED=1;
unset KDEDIRS;
tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4);
tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/);
cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc);
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
mycmakeargs=(${mycmakeargs});
fi;
mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}");
cmake-utils_src_configure
}
kde4-base_src_install ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ -n ${KMSAVELIBS} ]]; then
install_library_dependencies;
fi;
local doc;
if ! has kde4-meta ${INHERITED}; then
for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
do
[[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}";
done;
for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
do
[[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})";
done;
fi;
cmake-utils_src_install;
[[ ${EAPI:-0} != 3 && -d ${ED}/${PREFIX}/share/doc/HTML ]] && docompress -x ${PREFIX}/share/doc/HTML
}
kde4-base_src_prepare ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ -n ${KDE_LINGUAS} ]]; then
enable_selected_linguas;
fi;
if ! has kde4-meta ${INHERITED} && has handbook ${IUSE//+}; then
if [[ ${KDEBASE} == kde-base ]]; then
if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
: ${KDE_DOC_DIRS:=doc};
local dir;
for dir in ${KDE_DOC_DIRS};
do
sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die "failed to comment out handbook";
done;
fi;
else
enable_selected_doc_linguas;
fi;
fi;
if [[ ${BUILD_TYPE} = live ]]; then
case ${KDE_SCM} in
svn)
subversion_src_prepare
;;
esac;
fi;
base_src_prepare;
if [[ -n ${KMSAVELIBS} ]]; then
save_library_dependencies;
fi;
if [[ -n ${KMLOADLIBS} ]]; then
load_library_dependencies;
fi;
find "${S}" -name CMakeLists.txt -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_TASKMANAGER_(LIBRARY|LIBS)\}/taskmanager/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KWORKSPACE_(LIBRARY|LIBS)\}/kworkspace/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_SOLIDCONTROLIFACES_(LIBRARY|LIBS)\}/solidcontrolifaces/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_SOLIDCONTROL_(LIBRARY|LIBS)\}/solidcontrol/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_PROCESSUI_(LIBRARY|LIBS)\}/processui/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_LSOFUI_(LIBRARY|LIBS)\}/lsofui/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_PLASMACLOCK_(LIBRARY|LIBS)\}/plasmaclock/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_NEPOMUKQUERYCLIENT_(LIBRARY|LIBS)\}/nepomukqueryclient/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_NEPOMUKQUERY_(LIBRARY|LIBS)\}/nepomukquery/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KSCREENSAVER_(LIBRARY|LIBS)\}/kscreensaver/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_WEATHERION_(LIBRARY|LIBS)\}/weather_ion/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KWINEFFECTS_(LIBRARY|LIBS)\}/kwineffects/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KDECORATIONS_(LIBRARY|LIBS)\}/kdecorations/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KSGRD_(LIBRARY|LIBS)\}/ksgrd/g' {} + -exec sed -i -r -e 's/\$\{KDE4WORKSPACE_KEPHAL_(LIBRARY|LIBS)\}/kephal/g' {} + || die 'failed to replace KDE4Workspace library targets';
if [[ -z ${KDEBASE} ]]; then
find "${S}" -name "*.docbook" -exec sed -i -r -e 's:-//KDE//DTD DocBook XML V4\.1(\..)?-Based Variant V1\.[01]//EN:-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN:g' {} + || die 'failed to fix DocBook variant version';
fi
}
kde4-base_src_test ()
{
debug-print-function ${FUNCNAME} "$@";
mycmakeargs+=(-DKDE4_BUILD_TESTS=ON);
cmake-utils_src_configure;
kde4-base_src_compile;
unset DBUS_SESSION_BUS_ADDRESS;
if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
if [[ ${VIRTUALX_COMMAND} != emake ]]; then
debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality.";
debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild.";
debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the";
debug-print " kde4-base.eclass docs for details... Applying workaround.";
cmake-utils_src_test;
else
VIRTUALX_COMMAND="cmake-utils_src_test" virtualmake;
fi;
else
cmake-utils_src_test;
fi
}
kde4-base_src_unpack ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${BUILD_TYPE} = live ]]; then
case ${KDE_SCM} in
svn)
migrate_store_dir;
subversion_src_unpack
;;
git)
git-2_src_unpack
;;
esac;
else
unpack ${A};
fi
}
kde4-meta_change_cmakelists ()
{
debug-print-function ${FUNCNAME} "$@";
pushd "${S}" > /dev/null;
comment_all_add_subdirectory ./;
if [[ -f CMakeLists.txt ]]; then
sed -e '/add_subdirectory[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' -e '/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*cmake[[:space:]]*)/s/^#DONOTCOMPILE //' -i CMakeLists.txt || die "${LINENO}: cmake sed died";
fi;
if [[ -z ${KMNOMODULE} ]]; then
find "${S}"/${KMMODULE} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: died in KMMODULE section";
_change_cmakelists_parent_dirs ${KMMODULE};
fi;
local i;
for i in ${KMEXTRACTONLY};
do
if [[ -d ${i} && -f ${i}/../CMakeLists.txt ]]; then
sed -e "/([[:space:]]*$(basename $i)[[:space:]]*)/s/^/#DONOTCOMPILE /" -i ${i}/../CMakeLists.txt || die "${LINENO}: sed died while working in the KMEXTRACTONLY section while processing ${i}";
fi;
done;
for i in ${KMCOMPILEONLY};
do
debug-print "${LINENO}: KMCOMPILEONLY, processing ${i}";
find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' -e '/install(.*)/{s/^/#DONOTINSTALL /;}' -e '/^install(/,/)/{s/^/#DONOTINSTALL /;}' -e '/kde4_install_icons(.*)/{s/^/#DONOTINSTALL /;}' || die "${LINENO}: sed died in the KMCOMPILEONLY section while processing ${i}";
_change_cmakelists_parent_dirs ${i};
done;
for i in ${KMEXTRA};
do
debug-print "${LINENO}: KMEXTRA section, processing ${i}";
find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}";
_change_cmakelists_parent_dirs ${i};
done;
for i in ${KMEXTRA_NONFATAL};
do
if [[ -d "${S}"/${i} ]]; then
find "${S}"/${i} -name CMakeLists.txt -print0 | xargs -0 sed -i -e 's/^#DONOTCOMPILE //g' || die "${LINENO}: sed died uncommenting add_subdirectory instructions in KMEXTRA section while processing ${i}";
_change_cmakelists_parent_dirs ${i};
fi;
done;
case ${KMNAME} in
kdebase-workspace | kde-workspace)
if [[ ${PN} != kdebase-startkde && -f CMakeLists.txt ]]; then
sed -e '/startkde/s/^/#DONOTINSTALL /' -i CMakeLists.txt || die "${LINENO}: sed died in the kdebase-startkde collision prevention section";
fi;
if [[ ${PN} != libkworkspace ]]; then
sed -e '/install(FILES ${CMAKE_CURRENT_BINARY_DIR}\/KDE4WorkspaceConfig.cmake/,/^[[:space:]]*FILE KDE4WorkspaceLibraryTargets.cmake )[[:space:]]*^/d' -i CMakeLists.txt || die "${LINENO}: sed died in kdebase-workspace strip config install and fix EXPORT section";
fi
;;
kdebase-runtime | kde-runtime)
if [[ ${PN} != kdebase-data && -f CMakeLists.txt ]]; then
sed -e '/^install(PROGRAMS[[:space:]]*[^[:space:]]*\/kde4[[:space:]]/s/^/#DONOTINSTALL /' -i CMakeLists.txt || die "Sed to exclude bin/kde4 failed";
fi
;;
kdenetwork)
sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' -i CMakeLists.txt || die "failed to disable hardcoded checks"
;;
kdepim)
sed -r -e '/find_package\(KdepimLibs/s/REQUIRED//' -e '/find_package\((KdepimLibs|Boost|QGpgme|Akonadi|ZLIB|Strigi|SharedDesktopOntologies|Soprano|Nepomuk)/{/macro_optional_/!s/find/macro_optional_&/}' -e '/macro_log_feature\((Boost|QGPGME|Akonadi|ZLIB|STRIGI|SHAREDDESKTOPONTOLOGIES|Soprano|Nepomuk)_FOUND/s/ TRUE / FALSE /' -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' -i CMakeLists.txt || die "failed to disable hardcoded checks";
if ( has kontact ${IUSE//+} && use kontact ) || [[ ${PN} = kontact ]]; then
sed -e '/if[[:space:]]*([[:space:]]*BUILD_.*)/s/^/#OVERRIDE /' -e '/if[[:space:]]*([[:space:]]*[[:alnum:]]*_FOUND[[:space:]]*)/s/^/#OVERRIDE /' -i kontact/plugins/CMakeLists.txt || die 'failed to override build logic';
fi;
if [[ $(get_kde_version) < 4.5 ]]; then
case ${PN} in
kalarm | kmailcvt | kontact | korganizer | korn)
sed -n -e '/qt4_generate_dbus_interface(.*org\.kde\.kmail\.\(kmail\|mailcomposer\)\.xml/p' -e '/add_custom_target(kmail_xml /,/)/p' -i kmail/CMakeLists.txt || die "uncommenting xml failed";
_change_cmakelists_parent_dirs kmail
;;
esac;
fi
;;
kdewebdev)
sed -e 's/find_package(KdepimLibs REQUIRED)/macro_optional_find_package(KdepimLibs)/' -e 's/find_package(LibXml2 REQUIRED)/macro_optional_find_package(LibXml2)/' -e 's/find_package(LibXslt REQUIRED)/macro_optional_find_package(LibXslt)/' -e 's/find_package(Boost REQUIRED)/macro_optional_find_package(Boost)/' -i CMakeLists.txt || die "failed to disable hardcoded checks"
;;
koffice)
if [[ ${PN} != koffice-data ]]; then
sed -e '/install(.*FindKOfficeLibs.cmake/,/)/ d' -i cmake/modules/CMakeLists.txt || die "${LINENO}: sed died in collision prevention section";
sed -e '/install(.\+config-openexr\.h.\+)/d' -i CMakeLists.txt || die "${LINENO}: sed died in collision prevention section";
fi
;;
esac;
popd > /dev/null
}
kde4-meta_create_extractlists ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ $(get_kde_version) < 4.5 ]] && has handbook ${IUSE//+} && use handbook && [[ -z ${KMNOMODULE} ]]; then
KMEXTRA_NONFATAL+="
doc/${KMMODULE##*/}";
fi;
if [[ -z ${KMNOMODULE} ]] && ( [[ ${KDE_HANDBOOK} == always ]] || ( [[ ${KDE_HANDBOOK} == optional ]] && use handbook ) ); then
KMEXTRA_NONFATAL+=" doc/${KMMODULE##*/}";
fi;
case ${KMNAME} in
kdebase | kdebase-apps | kde-baseapps)
KMEXTRACTONLY+="
config-apps.h.cmake
ConfigureChecks.cmake"
;;
kdebase-runtime | kde-runtime)
KMEXTRACTONLY+="
config-runtime.h.cmake"
;;
kdebase-workspace | kde-workspace)
KMEXTRACTONLY+="
config-unix.h.cmake
ConfigureChecks.cmake
config-workspace.h.cmake
config-X11.h.cmake
startkde.cmake
KDE4WorkspaceConfig.cmake.in"
;;
kdegames)
if [[ ${PN} != libkdegames ]]; then
KMEXTRACTONLY+="
libkdegames/";
KMLOADLIBS="${KMLOADLIBS} libkdegames";
fi
;;
kdepim)
if [[ ${PN} != libkdepim ]]; then
KMEXTRACTONLY+="
libkdepim/";
fi;
KMEXTRACTONLY+="
config-enterprise.h.cmake
kleopatra/ConfigureChecks.cmake";
if ! [[ $(get_kde_version) < 4.5 ]]; then
KMEXTRACTONLY+="
CTestCustom.cmake
kdepim-version.h.cmake";
else
KMEXTRACTONLY+="
kdepim-version.h";
fi;
if has kontact ${IUSE//+} && use kontact; then
KMEXTRA+="
kontact/plugins/${PLUGINNAME:-${PN}}/";
fi
;;
kdeutils)
KMEXTRACTONLY+="
kdeutils-version.h"
;;
koffice)
KMEXTRACTONLY+="
filters/config-filters.h.cmake
";
case ${PV} in
2.[12].*)
KMEXTRACTONLY+="
config-endian.h.cmake
config-openexr.h.cmake
config-opengl.h.cmake
config-prefix.h.cmake"
;;
esac
;;
esac;
if [[ ${KMNAME} != kdegraphics || ( ( $(get_kde_version) != 4.6 || ${PV} < 4.6.2 ) && $(get_kde_version) < 4.7 ) ]] && ! [[ ${KMNAME} == kdeedu && ( ${PV} == 4.6.4 || ${PV} == 4.6.5 ) ]]; then
case ${KMNAME} in
kdebase-runtime | kde-runtime | kdebase-workspace | kde-workspace | kdeedu | kdegames | kdegraphics)
case ${PN} in
libkdegames | libkdeedu | libkworkspace)
KMEXTRA+="
cmake/modules/"
;;
*)
KMCOMPILEONLY+="
cmake/modules/"
;;
esac
;;
esac;
fi;
debug-print "line ${LINENO} ${ECLASS} ${FUNCNAME}: KMEXTRACTONLY ${KMEXTRACTONLY}"
}
kde4-meta_pkg_postinst ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-base_pkg_postinst
}
kde4-meta_pkg_postrm ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-base_pkg_postrm
}
kde4-meta_pkg_preinst ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-base_pkg_preinst
}
kde4-meta_pkg_setup ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-base_pkg_setup
}
kde4-meta_src_compile ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-base_src_compile "$@"
}
kde4-meta_src_configure ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
mycmakeargs=(${mycmakeargs});
fi;
case ${KMNAME} in
kdewebdev)
mycmakeargs=(-DWITH_KdepimLibs=OFF -DWITH_LibXml2=OFF -DWITH_LibXslt=OFF -DWITH_Boost=OFF -DWITH_LibTidy=OFF "${mycmakeargs[@]}")
;;
esac;
kde4-base_src_configure
}
kde4-meta_src_extract ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${BUILD_TYPE} = live ]]; then
einfo "Exporting parts of working copy to ${S}";
kde4-meta_create_extractlists;
case ${KDE_SCM} in
svn)
local rsync_options subdir targetdir wc_path escm;
rsync_options="--group --links --owner --perms --quiet --exclude=.svn/ --exclude=.git/";
wc_path="${ESVN_WC_PATH}";
escm="{ESVN}";
rsync ${rsync_options} "${wc_path}"/* "${S}" || die "${escm}: can't export toplevel files to '${S}'.";
if [[ -d "${wc_path}/cmake" ]]; then
rsync --recursive ${rsync_options} "${wc_path}/cmake" "${S}" || die "${escm}: can't export cmake files to '${S}'.";
fi;
for subdir in $(__list_needed_subdirectories);
do
targetdir="";
if [[ $subdir = doc/* && ! -e "$wc_path/$subdir" ]]; then
continue;
fi;
[[ ${subdir%/} = */* ]] && targetdir=${subdir%/} && targetdir=${targetdir%/*} && mkdir -p "${S}/${targetdir}";
rsync --recursive ${rsync_options} "${wc_path}/${subdir%/}" "${S}/${targetdir}" || die "${escm}: can't export subdirectory '${subdir}' to '${S}/${targetdir}'.";
done
;;
esac;
else
local abort tarball tarfile f extractlist postfix;
KMTARPARAMS+=" --bzip2";
postfix="bz2";
case ${KMNAME} in
kdebase-apps)
tarball="kdebase-${PV}.tar.${postfix}"
;;
*)
tarball="${KMNAME}-${PV}.tar.${postfix}"
;;
esac;
tarfile="${DISTDIR}/${tarball}";
topdir="${tarball%.tar.*}/";
ebegin "Unpacking parts of ${tarball} to ${WORKDIR}";
kde4-meta_create_extractlists;
for f in cmake/ CMakeLists.txt ConfigureChecks.cmake config.h.cmake;
do
extractlist+=" ${topdir}${f}";
done;
extractlist+=" $(__list_needed_subdirectories)";
pushd "${WORKDIR}" > /dev/null;
[[ -n ${KDE4_STRICTER} ]] && echo 'tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist}';
if [[ -n ${I_KNOW_WHAT_I_AM_DOING} ]]; then
tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} || ewarn "tar extract command failed at least partially - continuing anyway";
else
tar -xpf "${tarfile}" ${KMTARPARAMS} ${extractlist} 2> /dev/null || echo "tar extract command failed at least partially - continuing anyway";
fi;
if [[ ${KMNAME} != ${PN} ]]; then
mv ${topdir} ${P} || die "Died while moving \"${topdir}\" to \"${P}\"";
fi;
popd > /dev/null;
eend $?;
if [[ -n ${KDE4_STRICTER} ]]; then
for f in $(__list_needed_subdirectories fatal);
do
if [[ ! -e ${S}/${f#*/} ]]; then
eerror "'${f#*/}' is missing";
abort=true;
fi;
done;
[[ -n ${abort} ]] && die "There were missing files.";
fi;
unset topdir;
fi
}
kde4-meta_src_install ()
{
debug-print-function $FUNCNAME "$@";
local doc;
for doc in "${S}/${KMMODULE}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING};
do
[[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}";
done;
kde4-base_src_install
}
kde4-meta_src_prepare ()
{
debug-print-function ${FUNCNAME} "$@";
kde4-meta_change_cmakelists;
kde4-base_src_prepare
}
kde4-meta_src_test ()
{
debug-print-function $FUNCNAME "$@";
if [[ -n $I_KNOW_WHAT_I_AM_DOING ]]; then
kde4-base_src_test;
else
einfo "Tests disabled";
fi
}
kde4-meta_src_unpack ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${BUILD_TYPE} = live ]]; then
case "${KDE_SCM}" in
svn)
migrate_store_dir;
S="${WORKDIR}/${P}";
mkdir -p "${S}";
ESVN_RESTRICT="export" subversion_src_unpack;
subversion_wc_info;
subversion_bootstrap
;;
git)
git-2_src_unpack
;;
esac;
fi;
kde4-meta_src_extract
}
load_library_dependencies ()
{
local pn i depsfile;
ebegin "Injecting library dependencies from '${KMLOADLIBS}'";
i=0;
for pn in ${KMLOADLIBS};
do
((i++));
depsfile="${EPREFIX}/var/lib/kde/${pn}";
[[ -r ${depsfile} ]] || depsfile="${EPREFIX}/var/lib/kde/${pn}:$(get_kde_version)";
[[ -r ${depsfile} ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}.";
sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || die "Failed to include library dependencies for ${pn}";
done;
eend $?
}
make_desktop_entry ()
{
[[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
local exec=${1};
local name=${2:-${PN}};
local icon=${3:-${PN}};
local type=${4};
local fields=${5};
if [[ -z ${type} ]]; then
local catmaj=${CATEGORY%%-*};
local catmin=${CATEGORY##*-};
case ${catmaj} in
app)
case ${catmin} in
accessibility)
type=Accessibility
;;
admin)
type=System
;;
antivirus)
type=System
;;
arch)
type=Archiving
;;
backup)
type=Archiving
;;
cdr)
type=DiscBurning
;;
dicts)
type=Dictionary
;;
doc)
type=Documentation
;;
editors)
type=TextEditor
;;
emacs)
type=TextEditor
;;
emulation)
type=Emulator
;;
laptop)
type=HardwareSettings
;;
office)
type=Office
;;
pda)
type=PDA
;;
vim)
type=TextEditor
;;
xemacs)
type=TextEditor
;;
esac
;;
dev)
type="Development"
;;
games)
case ${catmin} in
action | fps)
type=ActionGame
;;
arcade)
type=ArcadeGame
;;
board)
type=BoardGame
;;
emulation)
type=Emulator
;;
kids)
type=KidsGame
;;
puzzle)
type=LogicGame
;;
roguelike)
type=RolePlaying
;;
rpg)
type=RolePlaying
;;
simulation)
type=Simulation
;;
sports)
type=SportsGame
;;
strategy)
type=StrategyGame
;;
esac;
type="Game;${type}"
;;
gnome)
type="Gnome;GTK"
;;
kde)
type="KDE;Qt"
;;
mail)
type="Network;Email"
;;
media)
case ${catmin} in
gfx)
type=Graphics
;;
*)
case ${catmin} in
radio)
type=Tuner
;;
sound)
type=Audio
;;
tv)
type=TV
;;
video)
type=Video
;;
esac;
type="AudioVideo;${type}"
;;
esac
;;
net)
case ${catmin} in
dialup)
type=Dialup
;;
ftp)
type=FileTransfer
;;
im)
type=InstantMessaging
;;
irc)
type=IRCClient
;;
mail)
type=Email
;;
news)
type=News
;;
nntp)
type=News
;;
p2p)
type=FileTransfer
;;
voip)
type=Telephony
;;
esac;
type="Network;${type}"
;;
sci)
case ${catmin} in
astro*)
type=Astronomy
;;
bio*)
type=Biology
;;
calc*)
type=Calculator
;;
chem*)
type=Chemistry
;;
elec*)
type=Electronics
;;
geo*)
type=Geology
;;
math*)
type=Math
;;
physics)
type=Physics
;;
visual*)
type=DataVisualization
;;
esac;
type="Education;Science;${type}"
;;
sys)
type="System"
;;
www)
case ${catmin} in
client)
type=WebBrowser
;;
esac;
type="Network;${type}"
;;
*)
type=
;;
esac;
fi;
if [ "${SLOT}" == "0" ]; then
local desktop_name="${PN}";
else
local desktop_name="${PN}-${SLOT}";
fi;
local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
type=${type%;}${type:+;};
eshopts_push -s extglob;
if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
ewarn "As described in the Icon Theme Specification, icon file extensions are not";
ewarn "allowed in .desktop files if the value is not an absolute path.";
icon=${icon%.@(xpm|png|svg)};
fi;
eshopts_pop;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type}
EOF
if [[ ${fields:-=} != *=* ]]; then
ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}";
fields="Path=${fields}";
fi;
[[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}";
( insinto /usr/share/applications;
doins "${desktop}" ) || die "installing desktop file failed"
}
make_session_desktop ()
{
[[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
[[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
local title=$1;
local command=$2;
local desktop=${T}/${wm:-${PN}}.desktop;
shift 2;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF
( insinto /usr/share/xsessions;
doins "${desktop}" )
}
make_wrapper ()
{
local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
local tmpwrapper=$(emktemp);
cat > "${tmpwrapper}" <<EOF
#!/bin/sh
cd "${chdir:-.}"
if [ -n "${libdir}" ] ; then
if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
else
export LD_LIBRARY_PATH="${libdir}"
fi
fi
exec ${bin} "\$@"
EOF
chmod go+rx "${tmpwrapper}";
if [[ -n ${path} ]]; then
( exeinto "${path}";
newexe "${tmpwrapper}" "${wrapper}" ) || die;
else
newbin "${tmpwrapper}" "${wrapper}" || die;
fi
}
migrate_store_dir ()
{
if [[ ${KDE_SCM} != svn ]]; then
die "migrate_store_dir() only makes sense for subversion";
fi;
local cleandir="${ESVN_STORE_DIR}/KDE";
if [[ -d ${cleandir} ]]; then
ewarn "'${cleandir}' has been found. Moving contents to new location.";
addwrite "${ESVN_STORE_DIR}";
local module;
if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then
for module in `find . -maxdepth 1 -type d -name [a-z0-9]\*`;
do
module="${module#./}";
mkdir -p "${ESVN_STORE_DIR}/kdebase-${module}" && mv -f "${module}" "${ESVN_STORE_DIR}/kdebase-${module}" || die "Failed to move to '${ESVN_STORE_DIR}/kdebase-${module}'.";
done;
popd > /dev/null;
rm -fr "${cleandir}/kdebase" || die "Failed to remove ${cleandir}/kdebase. You need to remove it manually.";
fi;
local pkg;
for pkg in "${cleandir}"/*;
do
mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'";
done;
rmdir "${cleandir}" || die "Could not move obsolete KDE store dir. Please move '${cleandir}' contents to appropriate location (possibly ${ESVN_STORE_DIR}) and manually remove '${cleandir}' in order to continue.";
fi;
if ! has kde4-meta ${INHERITED}; then
case ${KMNAME} in
extragear* | playground*)
local scmlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}";
if [[ -d "${scmlocalpath}" ]]; then
local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`";
ewarn "'${scmlocalpath}' has been found.";
ewarn "Moving contents to new location: ${destdir}";
addwrite "${ESVN_STORE_DIR}";
mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${scmlocalpath}" "${destdir}" || die "Failed to move to '${scmlocalpath}'";
rmdir "`dirname "${scmlocalpath}"`" 2> /dev/null;
fi
;;
esac;
fi
}
multilib_env ()
{
local CTARGET=${1:-${CTARGET}};
case ${CTARGET} in
x86_64*)
export CFLAGS_x86=${CFLAGS_x86--m32};
export CHOST_x86=${CTARGET/x86_64/i686};
export CTARGET_x86=${CHOST_x86};
if [[ ${SYMLINK_LIB} == "yes" ]]; then
export LIBDIR_x86="lib32";
else
export LIBDIR_x86="lib";
fi;
export CFLAGS_amd64=${CFLAGS_amd64--m64};
export CHOST_amd64=${CTARGET};
export CTARGET_amd64=${CHOST_amd64};
export LIBDIR_amd64="lib64";
export CFLAGS_x32=${CFLAGS_x32--mx32};
export CHOST_x32=${CTARGET};
export CTARGET_x32=${CHOST_x32};
export LIBDIR_x32="libx32";
: ${MULTILIB_ABIS=amd64 x86};
: ${DEFAULT_ABI=amd64}
;;
mips64*)
export CFLAGS_o32=${CFLAGS_o32--mabi=32};
export CHOST_o32=${CTARGET/mips64/mips};
export CTARGET_o32=${CHOST_o32};
export LIBDIR_o32="lib";
export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
export CHOST_n32=${CTARGET};
export CTARGET_n32=${CHOST_n32};
export LIBDIR_n32="lib32";
export CFLAGS_n64=${CFLAGS_n64--mabi=64};
export CHOST_n64=${CTARGET};
export CTARGET_n64=${CHOST_n64};
export LIBDIR_n64="lib64";
: ${MULTILIB_ABIS=n64 n32 o32};
: ${DEFAULT_ABI=n32}
;;
powerpc64*)
export CFLAGS_ppc=${CFLAGS_ppc--m32};
export CHOST_ppc=${CTARGET/powerpc64/powerpc};
export CTARGET_ppc=${CHOST_ppc};
export LIBDIR_ppc="lib";
export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
export CHOST_ppc64=${CTARGET};
export CTARGET_ppc64=${CHOST_ppc64};
export LIBDIR_ppc64="lib64";
: ${MULTILIB_ABIS=ppc64 ppc};
: ${DEFAULT_ABI=ppc64}
;;
s390x*)
export CFLAGS_s390=${CFLAGS_s390--m31};
export CHOST_s390=${CTARGET/s390x/s390};
export CTARGET_s390=${CHOST_s390};
export LIBDIR_s390="lib";
export CFLAGS_s390x=${CFLAGS_s390x--m64};
export CHOST_s390x=${CTARGET};
export CTARGET_s390x=${CHOST_s390x};
export LIBDIR_s390x="lib64";
: ${MULTILIB_ABIS=s390x s390};
: ${DEFAULT_ABI=s390x}
;;
sparc*)
export CFLAGS_sparc32=${CFLAGS_sparc32};
export CHOST_sparc32=${CTARGET/sparc64/sparc};
export CTARGET_sparc32=${CHOST_sparc32};
export LIBDIR_sparc32="lib";
export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
export CHOST_sparc64=${CTARGET};
export CTARGET_sparc64=${CHOST_sparc64};
export LIBDIR_sparc64="lib64";
: ${MULTILIB_ABIS=sparc64 sparc32};
: ${DEFAULT_ABI=sparc64}
;;
*)
: ${MULTILIB_ABIS=default};
: ${DEFAULT_ABI=default}
;;
esac;
export MULTILIB_ABIS DEFAULT_ABI
}
multilib_toolchain_setup ()
{
local v vv;
export ABI=$1;
if [[ ${__DEFAULT_ABI_SAVED} == "true" ]]; then
for v in CHOST CBUILD AS CC CXX LD;
do
vv="__abi_saved_${v}";
export ${v}="${!vv}";
unset ${vv};
done;
unset __DEFAULT_ABI_SAVED;
fi;
if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
for v in CHOST CBUILD AS CC CXX LD;
do
export __abi_saved_${v}="${!v}";
done;
export __DEFAULT_ABI_SAVED="true";
export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
export AS="$(tc-getAS) $(get_abi_ASFLAGS)";
export CC="$(tc-getCC) $(get_abi_CFLAGS)";
export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
export CHOST=$(get_abi_CHOST $1);
export CBUILD=$(get_abi_CHOST $1);
fi
}
newicon ()
{
( insinto /usr/share/pixmaps;
newins "$@" )
}
newmenu ()
{
( insinto /usr/share/applications;
newins "$@" )
}
no-as-needed ()
{
case $($(tc-getLD) -v 2>&1 </dev/null) in
*GNU*)
echo "-Wl,--no-as-needed"
;;
esac
}
nonfatal ()
{
if has "${EAPI:-0}" 0 1 2 3 3_pre2; then
die "$FUNCNAME() not supported in this EAPI";
fi;
if [[ $# -lt 1 ]]; then
die "$FUNCNAME(): Missing argument";
fi;
PORTAGE_NONFATAL=1 "$@"
}
number_abis ()
{
set -- `get_install_abis`;
echo $#
}
path_exists ()
{
local opt=$1;
[[ ${opt} == -[ao] ]] && shift || opt="-a";
[[ $# -eq 0 ]] && return 1;
local p r=0;
for p in "$@";
do
[[ -e ${p} ]];
: $(( r += $? ));
done;
case ${opt} in
-a)
return $(( r != 0 ))
;;
-o)
return $(( r == $# ))
;;
esac
}
pkg_nofetch ()
{
_eapi0_pkg_nofetch "$@"
}
pkg_postinst ()
{
kde4-meta_pkg_postinst "$@"
}
pkg_postrm ()
{
kde4-meta_pkg_postrm "$@"
}
pkg_preinst ()
{
kde4-meta_pkg_preinst "$@"
}
pkg_setup ()
{
kde4-meta_pkg_setup "$@"
}
preserve_old_lib ()
{
if [[ ${EBUILD_PHASE} != "preinst" ]]; then
eerror "preserve_old_lib() must be called from pkg_preinst() only";
die "Invalid preserve_old_lib() usage";
fi;
[[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
has preserve-libs ${FEATURES} && return 0;
local lib dir;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
dir=${lib%/*};
dodir ${dir} || die "dodir ${dir} failed";
cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
touch "${D}"/${lib};
done
}
preserve_old_lib_notify ()
{
if [[ ${EBUILD_PHASE} != "postinst" ]]; then
eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
die "Invalid preserve_old_lib_notify() usage";
fi;
has preserve-libs ${FEATURES} && return 0;
local lib notice=0;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
if [[ ${notice} -eq 0 ]]; then
notice=1;
ewarn "Old versions of installed libraries were detected on your system.";
ewarn "In order to avoid breaking packages that depend on these old libs,";
ewarn "the libraries are not being removed. You need to run revdep-rebuild";
ewarn "in order to remove these old dependencies. If you do not have this";
ewarn "helper program, simply emerge the 'gentoolkit' package.";
ewarn;
fi;
[[ ${PN} == "mpfr" ]] && lib=${lib##*/};
ewarn " # revdep-rebuild --library '${lib}'";
done;
if [[ ${notice} -eq 1 ]]; then
ewarn;
ewarn "Once you've finished running revdep-rebuild, it should be safe to";
ewarn "delete the old libraries. Here is a copy & paste for the lazy:";
for lib in "$@";
do
ewarn " # rm '${lib}'";
done;
fi
}
raw-ldflags ()
{
local x input="$@";
[[ -z ${input} ]] && input=${LDFLAGS};
set --;
for x in ${input};
do
x=${x#-Wl,};
set -- "$@" ${x//,/ };
done;
echo "$@"
}
register_success_hook ()
{
local x;
for x in $*;
do
hasq $x $EBUILD_SUCCESS_HOOKS || export EBUILD_SUCCESS_HOOKS="$EBUILD_SUCCESS_HOOKS $x";
done
}
replace-cpu-flags ()
{
local newcpu="$#";
newcpu="${!newcpu}";
while [ $# -gt 1 ]; do
replace-flags "-march=${1}" "-march=${newcpu}";
replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
replace-flags "-mtune=${1}" "-mtune=${newcpu}";
shift;
done;
return 0
}
replace-flags ()
{
[[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#";
local f fset;
declare -a new_CFLAGS new_CXXFLAGS new_FFLAGS new_FCFLAGS;
for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS;
do
for f in ${!fset};
do
[[ ${f} == ${1} ]] && f=${2};
eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f};
done;
eval export ${fset}=\${new_${fset}\[*]};
done;
return 0
}
replace-sparc64-flags ()
{
local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
export CFLAGS CXXFLAGS
}
replace_all_version_separators ()
{
local c=($(get_all_version_components "${2:-${PV}}"));
c=${c[@]//[-._]/$1};
echo ${c// }
}
replace_version_separator ()
{
eshopts_push -s extglob;
local w c v="${3:-${PV}}";
declare -i i found=0;
w=${1:-1};
c=($(get_all_version_components ${v}));
if [[ ${w} != *[[:digit:]]* ]]; then
for ((i = 0; i < ${#c[@]}; i++))
do
if [[ ${c[i]} == ${w} ]]; then
c[i]=${2};
break;
fi;
done;
else
for ((i = 0; i < ${#c[@]}; i++))
do
if [[ -n "${c[i]//[^-._]}" ]]; then
found+=1;
if ((found == w)); then
c[i]=${2};
break;
fi;
fi;
done;
fi;
c=${c[*]};
echo ${c// };
eshopts_pop
}
save_library_dependencies ()
{
local depsfile="${T}/${PN}";
ebegin "Saving library dependencies in ${depsfile##*/}";
echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || die "Failed to save the library dependencies.";
eend $?
}
seq ()
{
local p=$(type -P seq);
if [[ -n ${p} ]]; then
"${p}" "$@";
return $?;
fi;
case $# in
1)
min=1 max=$1 step=1
;;
2)
min=$1 max=$2 step=1
;;
3)
min=$1 max=$3 step=$2
;;
*)
die "seq called with wrong number of arguments"
;;
esac;
p=$(type -P jot);
if [[ -n ${p} ]]; then
local reps;
if [[ ${step} != 0 ]]; then
reps=$(( (max - min) / step + 1 ));
else
reps=0;
fi;
jot $reps $min $max $step;
return $?;
fi;
while :; do
[[ $max < $min && $step > 0 ]] && break;
[[ $min < $max && $step < 0 ]] && break;
echo $min;
: $(( min += step ));
done;
return 0
}
setup-allowed-flags ()
{
if [[ -z ${ALLOWED_FLAGS} ]]; then
export ALLOWED_FLAGS="-pipe";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident -fpermissive";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w";
fi;
ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer";
ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -D* -U*";
ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fma4 -mno-movbe -mno-xop -mno-lwp";
ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm";
export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks";
return 0
}
src_compile ()
{
kde4-meta_src_compile "$@"
}
src_configure ()
{
kde4-meta_src_configure "$@"
}
src_install ()
{
kde4-meta_src_install "$@"
}
src_prepare ()
{
kde4-meta_src_prepare "$@"
}
src_test ()
{
kde4-meta_src_test "$@"
}
src_unpack ()
{
kde4-meta_src_unpack "$@"
}
strip-flags ()
{
local x y flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS;
setup-allowed-flags;
local NEW_CFLAGS="";
local NEW_CXXFLAGS="";
local NEW_FFLAGS="";
local NEW_FCFLAGS="";
if has "~$(tc-arch)" ${ACCEPT_KEYWORDS}; then
ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}";
fi;
set -f;
for x in ${CFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CFLAGS="${NEW_CFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${CXXFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${FFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_FFLAGS="${NEW_FFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${FCFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_FCFLAGS="${NEW_FCFLAGS} ${x}";
break;
fi;
done;
done;
if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
NEW_CFLAGS="${NEW_CFLAGS} -O2";
fi;
if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2";
fi;
if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then
NEW_FFLAGS="${NEW_FFLAGS} -O2";
fi;
if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then
NEW_FCFLAGS="${NEW_FCFLAGS} -O2";
fi;
set +f;
export CFLAGS="${NEW_CFLAGS}";
export CXXFLAGS="${NEW_CXXFLAGS}";
export FFLAGS="${NEW_FFLAGS}";
export FCFLAGS="${NEW_FCFLAGS}";
return 0
}
strip-linguas ()
{
local ls newls nols;
if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
local op=$1;
shift;
ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
shift;
local d f;
for d in "$@";
do
if [[ ${op} == "-u" ]]; then
newls=${ls};
else
newls="";
fi;
for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
do
if [[ ${op} == "-i" ]]; then
has ${f} ${ls} && newls="${newls} ${f}";
else
has ${f} ${ls} || newls="${newls} ${f}";
fi;
done;
ls=${newls};
done;
else
ls="$@";
fi;
nols="";
newls="";
for f in ${LINGUAS};
do
if has ${f} ${ls}; then
newls="${newls} ${f}";
else
nols="${nols} ${f}";
fi;
done;
[[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
export LINGUAS=${newls:1}
}
strip-unsupported-flags ()
{
export CFLAGS=$(test-flags-CC ${CFLAGS});
export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS});
export FFLAGS=$(test-flags-F77 ${FFLAGS});
export FCFLAGS=$(test-flags-FC ${FCFLAGS})
}
tc-arch ()
{
tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel ()
{
tc-ninja_magic_to_arch kern "$@"
}
tc-endian ()
{
local host=$1;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
host=${host%%-*};
case ${host} in
alpha*)
echo big
;;
arm*b*)
echo big
;;
arm*)
echo little
;;
cris*)
echo little
;;
hppa*)
echo big
;;
i?86*)
echo little
;;
ia64*)
echo little
;;
m68*)
echo big
;;
mips*l*)
echo little
;;
mips*)
echo big
;;
powerpc*)
echo big
;;
s390*)
echo big
;;
sh*b*)
echo big
;;
sh*)
echo little
;;
sparc*)
echo big
;;
x86_64*)
echo little
;;
*)
echo wtf
;;
esac
}
tc-export ()
{
local var;
for var in "$@";
do
[[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
eval tc-get${var} > /dev/null;
done
}
tc-getAR ()
{
tc-getPROG AR ar "$@"
}
tc-getAS ()
{
tc-getPROG AS as "$@"
}
tc-getBUILD_CC ()
{
local v;
for v in CC_FOR_BUILD BUILD_CC HOSTCC;
do
if [[ -n ${!v} ]]; then
export BUILD_CC=${!v};
echo "${!v}";
return 0;
fi;
done;
local search=;
if [[ -n ${CBUILD} ]]; then
search=$(type -p ${CBUILD}-gcc);
search=${search##*/};
fi;
search=${search:-gcc};
export BUILD_CC=${search};
echo "${search}"
}
tc-getCC ()
{
tc-getPROG CC gcc "$@"
}
tc-getCPP ()
{
tc-getPROG CPP cpp "$@"
}
tc-getCXX ()
{
tc-getPROG CXX g++ "$@"
}
tc-getDLLWRAP ()
{
tc-getPROG DLLWRAP dllwrap "$@"
}
tc-getF77 ()
{
tc-getPROG F77 gfortran "$@"
}
tc-getFC ()
{
tc-getPROG FC gfortran "$@"
}
tc-getGCJ ()
{
tc-getPROG GCJ gcj "$@"
}
tc-getLD ()
{
tc-getPROG LD ld "$@"
}
tc-getNM ()
{
tc-getPROG NM nm "$@"
}
tc-getOBJCOPY ()
{
tc-getPROG OBJCOPY objcopy "$@"
}
tc-getPKG_CONFIG ()
{
tc-getPROG PKG_CONFIG pkg-config "$@"
}
tc-getPROG ()
{
local var=$1;
local prog=$2;
if [[ -n ${!var} ]]; then
echo "${!var}";
return 0;
fi;
local search=;
[[ -n $3 ]] && search=$(type -p "$3-${prog}");
[[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
[[ -n ${search} ]] && prog=${search##*/};
export ${var}=${prog};
echo "${!var}"
}
tc-getRANLIB ()
{
tc-getPROG RANLIB ranlib "$@"
}
tc-getRC ()
{
tc-getPROG RC windres "$@"
}
tc-getSTRIP ()
{
tc-getPROG STRIP strip "$@"
}
tc-has-openmp ()
{
local base="${T}/test-tc-openmp";
cat > "${base}.c" <<-EOF
#include <omp.h>
int main() {
int nthreads, tid, ret = 0;
#pragma omp parallel private(nthreads, tid)
{
tid = omp_get_thread_num();
nthreads = omp_get_num_threads(); ret += tid + nthreads;
}
return ret;
}
EOF
$(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &>/dev/null;
local ret=$?;
rm -f "${base}"*;
return ${ret}
}
tc-has-tls ()
{
local base="${T}/test-tc-tls";
cat > "${base}.c" <<-EOF
int foo(int *i) {
static __thread int j = 0;
return *i ? j : *i;
}
EOF
local flags;
case $1 in
-s)
flags="-S"
;;
-c)
flags="-c"
;;
-l)
;;
-*)
die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
;;
esac;
: ${flags:=-fPIC -shared -Wl,-z,defs};
[[ $1 == -* ]] && shift;
$(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &>/dev/null;
local ret=$?;
rm -f "${base}"*;
return ${ret}
}
tc-is-cross-compiler ()
{
return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-hardfloat ()
{
[[ ${CTARGET//_/-} == *-hardfloat-* ]] && echo "yes" || echo "no"
}
tc-is-softfloat ()
{
case ${CTARGET} in
bfin* | h8300*)
echo "only"
;;
*)
[[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
;;
esac
}
tc-is-static-only ()
{
local host=${CTARGET:-${CHOST}};
return $([[ ${host} == *-mint* ]])
}
tc-ninja_magic_to_arch ()
{
function ninj ()
{
[[ ${type} == "kern" ]] && echo $1 || echo $2
};
local type=$1;
local host=$2;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
case ${host} in
alpha*)
echo alpha
;;
arm*)
echo arm
;;
avr*)
ninj avr32 avr
;;
bfin*)
ninj blackfin bfin
;;
cris*)
echo cris
;;
hppa*)
ninj parisc hppa
;;
i?86*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then
echo i386;
else
echo x86;
fi
;;
ia64*)
echo ia64
;;
m68*)
echo m68k
;;
mips*)
echo mips
;;
nios2*)
echo nios2
;;
nios*)
echo nios
;;
powerpc*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]]; then
echo powerpc;
else
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]]; then
if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
echo powerpc;
else
echo ppc;
fi;
else
if [[ ${host} == powerpc64* ]]; then
echo ppc64;
else
if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
ninj ppc64 ppc;
else
echo ppc;
fi;
fi;
fi;
fi
;;
s390*)
echo s390
;;
sh64*)
ninj sh64 sh
;;
sh*)
echo sh
;;
sparc64*)
ninj sparc64 sparc
;;
sparc*)
[[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
;;
vax*)
echo vax
;;
x86_64*freebsd*)
echo amd64
;;
x86_64*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
echo x86;
else
ninj x86_64 amd64;
fi
;;
*)
echo unknown
;;
esac
}
test-flag-CC ()
{
test-flag-PROG "CC" "$1"
}
test-flag-CXX ()
{
test-flag-PROG "CXX" "$1"
}
test-flag-F77 ()
{
test-flag-PROG "F77" "$1"
}
test-flag-FC ()
{
test-flag-PROG "FC" "$1"
}
test-flag-PROG ()
{
local comp=$1;
local flags="$2";
[[ -z ${comp} || -z ${flags} ]] && return 1;
local PROG=$(tc-get${comp});
${PROG} ${flags} -c -o /dev/null -xc /dev/null > /dev/null 2>&1
}
test-flags ()
{
test-flags-CC "$@"
}
test-flags-CC ()
{
test-flags-PROG "CC" "$@"
}
test-flags-CXX ()
{
test-flags-PROG "CXX" "$@"
}
test-flags-F77 ()
{
test-flags-PROG "F77" "$@"
}
test-flags-FC ()
{
test-flags-PROG "FC" "$@"
}
test-flags-PROG ()
{
local comp=$1;
local flags;
local x;
shift;
[[ -z ${comp} ]] && return 1;
x="";
for x in "$@";
do
test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}";
done;
echo "${flags}";
[[ -n ${flags} ]]
}
test_flag ()
{
die "$0: deprecated, please use test-flags()!"
}
test_version_info ()
{
if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
return 0;
else
return 1;
fi
}
treecopy ()
{
dest=${!#};
files_count=$#;
while (( $# > 1 )); do
dirstruct=$(dirname "$1");
mkdir -p "${dest}/${dirstruct}";
cp -pPR "$1" "${dest}/${dirstruct}";
shift;
done
}
unpack_makeself ()
{
local src_input=${1:-${A}};
local src=$(find_unpackable_file "${src_input}");
local skip=$2;
local exe=$3;
[[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
if [[ -z ${skip} ]]; then
local ver=$(grep -m1 -a '#.*Makeself' "${src}" | awk '{print $NF}');
local skip=0;
exe=tail;
case ${ver} in
1.5.* | 1.6.0-nv)
skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
;;
2.0 | 2.0.1)
skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-)
;;
2.1.1)
skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
(( skip++ ))
;;
2.1.2)
skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
(( skip++ ))
;;
2.1.3)
skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
(( skip++ ))
;;
2.1.4 | 2.1.5)
skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
skip=$(head -n ${skip} "${src}" | wc -c);
exe="dd"
;;
*)
eerror "I'm sorry, but I was unable to support the Makeself file.";
eerror "The version I detected was '${ver}'.";
eerror "Please file a bug about the file ${shrtsrc} at";
eerror "http://bugs.gentoo.org/ so that support can be added.";
die "makeself version '${ver}' not supported"
;;
esac;
debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
fi;
case ${exe} in
tail)
exe="tail -n +${skip} '${src}'"
;;
dd)
exe="dd ibs=${skip} skip=1 if='${src}'"
;;
*)
die "makeself cant handle exe '${exe}'"
;;
esac;
local filetype tmpfile=$(emktemp);
eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
filetype=$(file -b "${tmpfile}") || die;
case ${filetype} in
*tar\ archive*)
eval ${exe} | tar --no-same-owner -xf -
;;
bzip2*)
eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
;;
gzip*)
eval ${exe} | tar --no-same-owner -xzf -
;;
compress*)
eval ${exe} | gunzip | tar --no-same-owner -xf -
;;
*)
eerror "Unknown filetype \"${filetype}\" ?";
false
;;
esac;
assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv ()
{
local src=$(find_unpackable_file "$1");
local sizeoff_t=$2;
[[ -z ${src} ]] && die "Could not locate source for '$1'";
[[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
local metafile=$(emktemp);
tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
datafile=$(basename "${datafile}");
local tmpfile=$(emktemp);
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
local iscompressed=$(file -b "${tmpfile}");
if [[ ${iscompressed:0:8} == "compress" ]]; then
iscompressed=1;
mv ${tmpfile}{,.Z};
gunzip ${tmpfile};
else
iscompressed=0;
fi;
local istar=$(file -b "${tmpfile}");
if [[ ${istar:0:9} == "POSIX tar" ]]; then
istar=1;
else
istar=0;
fi;
if [ ${iscompressed} -eq 1 ]; then
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
fi;
else
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
fi;
fi;
true
}
validate_desktop_entries ()
{
if [[ -x /usr/bin/desktop-file-validate ]]; then
einfo "Checking desktop entry validity";
local directories="";
for d in /usr/share/applications $@;
do
[[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
done;
if [[ -n ${directories} ]]; then
for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null);
do
local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
[[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
done;
fi;
echo "";
else
einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
fi
}
version_compare ()
{
eshopts_push -s extglob;
local ver_a=${1} ver_b=${2} parts_a parts_b;
local cur_tok_a cur_tok_b num_part_a num_part_b;
local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
parts_a=($(get_all_version_components "${ver_a}" ));
parts_b=($(get_all_version_components "${ver_b}" ));
local -i inf_loop=0;
while true; do
inf_loop+=1;
((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
prev_idx_a=cur_idx_a;
prev_idx_b=cur_idx_b;
cur_tok_a=${parts_a[cur_idx_a]};
cur_tok_b=${parts_b[cur_idx_b]};
if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
cur_idx_a+=1;
[[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
else
cur_tok_a=;
fi;
if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
cur_idx_b+=1;
[[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
else
cur_tok_b=;
fi;
[[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
[[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
[[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
cur_tok_a=${cur_tok_a%%+(0)};
cur_tok_b=${cur_tok_b%%+(0)};
[[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
[[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
else
cur_tok_a=${cur_tok_a##+(0)};
cur_tok_b=${cur_tok_b##+(0)};
: ${cur_tok_a:=0};
: ${cur_tok_b:=0};
((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
fi;
done;
local letter_a=;
letter_a=${parts_a[cur_idx_a]};
if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
cur_idx_a+=1;
else
letter_a=@;
fi;
local letter_b=;
letter_b=${parts_b[cur_idx_b]};
if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
cur_idx_b+=1;
else
letter_b=@;
fi;
[[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
[[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
inf_loop=0;
while true; do
inf_loop+=1;
((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
[[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
[[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
cur_tok_a=${parts_a[cur_idx_a]};
cur_tok_b=${parts_b[cur_idx_b]};
num_part_a=0;
num_part_b=0;
if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
cur_idx_a+=1;
num_part_a=${cur_tok_a##+([a-z])};
num_part_a=${num_part_a##+(0)};
: ${num_part_a:=0};
cur_tok_a=${cur_tok_a%%+([0-9])};
else
cur_tok_a=;
fi;
if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
cur_idx_b+=1;
num_part_b=${cur_tok_b##+([a-z])};
num_part_b=${num_part_b##+(0)};
: ${num_part_b:=0};
cur_tok_b=${cur_tok_b%%+([0-9])};
else
cur_tok_b=;
fi;
if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
local suffix;
for suffix in alpha beta pre rc "" p;
do
[[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
[[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
done;
else
if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
break;
else
((num_part_a < num_part_b)) && eshopts_pop && return 1;
((num_part_a > num_part_b)) && eshopts_pop && return 3;
fi;
fi;
done;
[[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
[[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
fi;
num_part_a=${parts_a[cur_idx_a]#r};
num_part_a=${num_part_a##+(0)};
: ${num_part_a:=0};
num_part_b=${parts_b[cur_idx_b]#r};
num_part_b=${num_part_b##+(0)};
: ${num_part_b:=0};
((num_part_a < num_part_b)) && eshopts_pop && return 1;
((num_part_a > num_part_b)) && eshopts_pop && return 3;
eshopts_pop;
return 2
}
version_format_string ()
{
local fstr=$1;
shift;
set -- $(get_version_components "$@");
eval echo "${fstr}"
}
version_is_at_least ()
{
local want_s="$1" have_s="${2:-${PVR}}" r;
version_compare "${want_s}" "${have_s}";
r=$?;
case $r in
1 | 2)
return 0
;;
3)
return 1
;;
*)
die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
;;
esac
}
version_sort ()
{
eshopts_push -s extglob;
local items=;
local -i left=0;
items=("$@");
while ((left < ${#items[@]})); do
local -i lowest_idx=left;
local -i idx=lowest_idx+1;
while ((idx < ${#items[@]})); do
version_compare "${items[lowest_idx]}" "${items[idx]}";
[[ $? -eq 3 ]] && lowest_idx=idx;
idx+=1;
done;
local tmp=${items[lowest_idx]};
items[lowest_idx]=${items[left]};
items[left]=${tmp};
left+=1;
done;
echo ${items[@]};
eshopts_pop
}
virtualmake ()
{
debug-print-function ${FUNCNAME} "$@";
local i=0;
local retval=0;
local OLD_SANDBOX_ON="${SANDBOX_ON}";
local XVFB=$(type -p Xvfb);
local XHOST=$(type -p xhost);
local xvfbargs="-screen 0 800x600x24";
if [[ -n ${maketype} ]]; then
ewarn "QA: ebuild is exporting \$maketype=${maketype}";
ewarn "QA: Ebuild should be migrated to use VIRTUALX_COMMAND=${maketype} instead.";
ewarn "QA: Setting VIRTUALX_COMMAND to \$maketype conveniently for now.";
VIRTUALX_COMMAND=${maketype};
fi;
if [[ -n ${XVFB} && -n ${XHOST} ]] && ( [[ -z ${DISPLAY} ]] || ! ( ${XHOST} &>/dev/null ) ); then
debug-print "${FUNCNAME}: running Xvfb hack";
export XAUTHORITY=;
einfo "Scanning for an open DISPLAY to start Xvfb ...";
XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i});
debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}";
export SANDBOX_ON="0";
debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null & sleep 2;
local start=${XDISPLAY};
while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
if ((XDISPLAY - start > 15)); then
eerror "'${XVFB} :${XDISPLAY} ${xvfbargs}' returns:";
echo;
${XVFB} :${XDISPLAY} ${xvfbargs};
echo;
eerror "If possible, correct the above error and try your emerge again.";
die "Unable to start Xvfb";
fi;
((XDISPLAY++));
debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null & sleep 2;
done;
export SANDBOX_ON="${OLD_SANDBOX_ON}";
einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ...";
export DISPLAY=:${XDISPLAY};
debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\"";
${VIRTUALX_COMMAND} "$@";
retval=$?;
kill $(cat /tmp/.X${XDISPLAY}-lock);
else
debug-print "${FUNCNAME}: attaching to running X display";
debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\"";
${VIRTUALX_COMMAND} "$@";
retval=$?;
fi;
[[ ${retval} -ne 0 ]] && die "${FUNCNAME}: the ${VIRTUALX_COMMAND} failed.";
return 0
}
^ permalink raw reply [flat|nested] 18+ messages in thread