declare -x ABI="amd64" declare -x ABI_X86="64" declare -x ADA_INCLUDE_PATH="/usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.2/adainclude" declare -x ADA_OBJECTS_PATH="/usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.2/adalib" declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" declare -x ANT_HOME="/usr/share/ant" declare -x APACHE2_MODULES="authn_core authz_core socache_shmcb unixd 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 BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_4 python_targets_python2_7 multilib" declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" declare -x CAMERAS="ptp2" declare -x CBUILD="x86_64-pc-linux-gnu" declare -- CDEPEND=" >=kde-apps/libkcddb-4.4:4[aqua=] media-libs/libsamplerate dvd? ( media-libs/libdvdread ) ffmpeg? ( libav? ( media-video/libav:= ) !libav? ( media-video/ffmpeg:0= ) ) flac? ( >=media-libs/flac-1.2[cxx] ) mp3? ( media-sound/lame ) mad? ( media-libs/libmad ) musepack? ( >=media-sound/musepack-tools-444 ) sndfile? ( media-libs/libsndfile ) taglib? ( >=media-libs/taglib-1.5 ) vorbis? ( media-libs/libvorbis ) " declare -x CFLAGS="-march=native -O2 -pipe -ggdb" declare -x CFLAGS_amd64="-m64" declare -x CFLAGS_default declare -x CFLAGS_x32="-mx32" declare -x CFLAGS_x86="-m32" declare -x CG_COMPILER_EXE="/opt/bin/cgc" declare -x CG_INC_PATH="/opt/nvidia-cg-toolkit/include" declare -x CG_LIB_PATH="/opt/nvidia-cg-toolkit/lib32:/opt/nvidia-cg-toolkit/lib64" 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_x32="x86_64-pc-linux-gnux32" declare -x CHOST_x86="i686-pc-linux-gnu" declare -- CMAKE_BINARY="cmake" declare -- CMAKE_BUILD_TYPE="Gentoo" declare -- CMAKE_EXPF="src_prepare src_configure src_compile src_test src_install" declare -- CMAKE_MAKEFILE_GENERATOR="emake" declare -- CMAKE_MIN_VERSION="2.8.12" declare -- CMAKE_REMOVE_MODULES="yes" declare -- CMAKE_REMOVE_MODULES_LIST="FindBLAS FindLAPACK" declare -- CMAKE_REQUIRED="always" declare -- CMAKE_VERBOSE="ON" declare -- CMAKE_WARN_UNUSED_CLI="no" declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" declare -- CPPUNIT_REQUIRED="never" declare -x CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" declare -x CTARGET_default="x86_64-pc-linux-gnu" declare -x CXXFLAGS="-march=native -O2 -pipe -ggdb" declare -- DECLARATIVE_REQUIRED="never" declare -x DEFAULT_ABI="amd64" declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare setup test unpack" declare DEPEND=" >=kde-apps/libkcddb-4.4:4[aqua=] media-libs/libsamplerate dvd? ( media-libs/libdvdread ) ffmpeg? ( libav? ( media-video/libav:= ) !libav? ( media-video/ffmpeg:0= ) ) flac? ( >=media-libs/flac-1.2[cxx] ) mp3? ( media-sound/lame ) mad? ( media-libs/libmad ) musepack? ( >=media-sound/musepack-tools-444 ) sndfile? ( media-libs/libsndfile ) taglib? ( >=media-libs/taglib-1.5 ) vorbis? ( media-libs/libvorbis ) sys-devel/gettext >=sys-apps/sed-4 sys-devel/make >=dev-util/cmake-2.8.12 userland_GNU? ( >=sys-apps/findutils-4.4.0 ) dev-util/automoc virtual/pkgconfig !aqua? ( >=x11-libs/libXtst-1.1.0 x11-proto/xf86vidmodeproto ) handbook? ( app-text/docbook-xml-dtd:4.2 app-text/docbook-xsl-stylesheets ) >=dev-qt/qtmultimedia-4.8.5:4 dev-lang/perl >=dev-qt/qt3support-4.8.5:4[accessibility] >=dev-qt/qtcore-4.8.5:4[qt3support,ssl] >=dev-qt/qtdbus-4.8.5:4 >=dev-qt/designer-4.8.5:4 >=dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)] >=dev-qt/qtscript-4.8.5:4 >=dev-qt/qtsql-4.8.5:4[qt3support] >=dev-qt/qtsvg-4.8.5:4 >=dev-qt/qttest-4.8.5:4 >=dev-qt/qtwebkit-4.8.5:4 >=kde-base/kdelibs-4.4:4[aqua=]" declare DESCRIPTION="The CD/DVD Kreator for KDE" declare -x DESTTREE="/usr" declare -x DIROPTIONS="-m0755" declare -a DOCS='([0]="FAQ" [1]="PERMISSIONS" [2]="README" [3]="ChangeLog")' declare -x EAPI="5" declare -- EKDEDIR="/usr" declare -x ELIBC="glibc" declare -- EPATCH_COMMON_OPTS="-g0 -E --no-backup-if-mismatch" declare -- EPATCH_EXCLUDE="" declare -- EPATCH_FORCE="no" declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..." declare -- EPATCH_OPTS="" declare -- EPATCH_SINGLE_MSG="" declare -- EPATCH_SOURCE="/var/tmp/portage/app-cdr/k3b-2.0.3-r2/work/patch" declare -- EPATCH_SUFFIX="patch.bz2" declare -x ES_BASHCOMP_DIRS="/usr/share/bash-completion/completions" declare -x EXEOPTIONS="-m0755" declare -x FCFLAGS="-O2 -pipe" 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} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" declare -x FFLAGS="-O2 -pipe" declare -x GCC_SPECS="" declare -- GCONFTOOL_BIN="/usr/bin/gconftool-2" 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 ublox ubx" declare -x GRUB_PLATFORMS="" declare -x GSETTINGS_BACKEND="dconf" declare -- GTK_UPDATE_ICON_CACHE="/usr/bin/gtk-update-icon-cache" declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8" declare HDEPEND="" declare HOMEPAGE="http://www.k3b.org/" declare -x INHERITED=" multilib toolchain-funcs eutils versionator kde4-functions fdo-mime flag-o-matic gnome2-utils virtualx cmake-utils kde4-base" declare -x INPUT_DEVICE="mouse keyboard" declare -x INPUT_DEVICES="keyboard mouse evdev" declare -x INSDESTTREE="" declare -x INSOPTIONS="-m0644" declare IUSE="debug dvd emovix encode ffmpeg flac libav mad mp3 musepack sndfile sox taglib vcd vorbis linguas_ast linguas_be linguas_bg linguas_bs linguas_ca linguas_ca@valencia linguas_cs linguas_csb linguas_da linguas_de linguas_el linguas_en_GB linguas_eo linguas_es linguas_et linguas_eu linguas_fi linguas_fr linguas_ga linguas_gl linguas_he linguas_hi linguas_hne linguas_hr linguas_hu linguas_is linguas_it linguas_ja linguas_kk linguas_km linguas_ko linguas_ku linguas_lt linguas_lv linguas_mai linguas_mr linguas_ms linguas_nb linguas_nds linguas_nl linguas_nn linguas_oc linguas_pa linguas_pl linguas_pt linguas_pt_BR linguas_ro linguas_ru linguas_se linguas_sk linguas_sl linguas_sr linguas_sr@ijekavian linguas_sr@ijekavianlatin linguas_sr@latin linguas_sv linguas_th linguas_tr linguas_ug linguas_uk linguas_zh_CN linguas_zh_TW +handbook aqua" declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-fbsd amd64-linux aqua arm arm-linux arm64 debug dvd elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_musl elibc_uclibc emovix encode ffmpeg flac handbook hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux libav linguas_ast linguas_be linguas_bg linguas_bs linguas_ca linguas_ca@valencia linguas_cs linguas_csb linguas_da linguas_de linguas_el linguas_en_GB linguas_eo linguas_es linguas_et linguas_eu linguas_fi linguas_fr linguas_ga linguas_gl linguas_he linguas_hi linguas_hne linguas_hr linguas_hu linguas_is linguas_it linguas_ja linguas_kk linguas_km linguas_ko linguas_ku linguas_lt linguas_lv linguas_mai linguas_mr linguas_ms linguas_nb linguas_nds linguas_nl linguas_nn linguas_oc linguas_pa linguas_pl linguas_pt linguas_pt_BR linguas_ro linguas_ru linguas_se linguas_sk linguas_sl linguas_sr linguas_sr@ijekavian linguas_sr@ijekavianlatin linguas_sr@latin linguas_sv linguas_th linguas_tr linguas_ug linguas_uk linguas_zh_CN linguas_zh_TW m68k m68k-mint mad mips mp3 musepack nios2 ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest s390 sh sndfile sox sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris taglib userland_BSD userland_GNU vcd vorbis x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest" 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 -- KDEDIR="/usr" declare -x KDE_BUILD_TYPE="release" declare -- KDE_DOC_DIRS="doc/%lingua" declare -- KDE_HANDBOOK="optional" declare -- KDE_LINGUAS="ast be bg bs ca ca@valencia cs csb da de el en_GB eo es et eu fi fr ga gl he hi hne hr hu is it ja kk km ko ku lt lv mai mr ms nb nds nl nn oc pa pl pt pt_BR ro ru se sk sl sr sr@ijekavian sr@ijekavianlatin sr@latin sv th tr ug uk zh_CN zh_TW" declare -- KDE_LINGUAS_DIR="po" declare -- KDE_MINIMAL="4.4" declare -- KDE_REQUIRED="always" declare -- KDE_SCM="git" declare -- KDE_SELINUX_MODULE="none" declare -x KERNEL="linux" declare -x KERNEL_ABI="amd64" declare -x KEYWORDS="amd64 ~ppc x86" declare -x LANG="de_DE.utf8" declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" declare -x LC_COLLATE="C" declare -x LC_MESSAGES="C" declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed" declare -x LDFLAGS_amd64="-m elf_x86_64" declare -x LDFLAGS_default declare -x LDFLAGS_x32="-m elf32_x86_64" declare -x LDFLAGS_x86="-m elf_i386" declare -x LIBDIR_amd64="lib64" declare -x LIBDIR_amd64_fbsd="lib64" declare -x LIBDIR_arm="lib" declare -x LIBDIR_arm64="lib64" declare -x LIBDIR_default="lib" declare -x LIBDIR_n32="lib32" declare -x LIBDIR_n64="lib64" declare -x LIBDIR_o32="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_x32="libx32" declare -x LIBDIR_x86="lib32" declare -x LIBDIR_x86_fbsd="lib32" declare -x LIBOPTIONS="-m0644" declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" declare -x LICENSE="GPL-2 FDL-1.2" declare -x LINGUAS="de" declare -x MAKEOPTS="-j9" 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|systemd|clang|python-exec)" declare -- MULTIMEDIA_REQUIRED="always" declare -x MULTIOSDIRS="../lib64:../lib32" declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" declare -x OFFICE_IMPLEMENTATION="libreoffice" declare -x OPENCL_PROFILE="nvidia" declare -x OPENGL_PROFILE="nvidia" declare -- OPENGL_REQUIRED="never" declare -a PATCHES='([0]="/usr/portage/app-cdr/k3b/files/k3b-2.0.3-libav-11.patch")' declare -x PATH="/usr/lib/portage/python2.7/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.8.4:/usr/x86_64-pc-linux-gnu/gnat-gcc-bin/4.2:/usr/libexec/gnat-gcc/x86_64-pc-linux-gnu/4.2:/opt/nvidia-cg-toolkit/bin" declare PDEPEND="" declare -x PHP_TARGETS="php5-5" declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")' declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128" declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/k3b-2.0.3-r2/html")' declare -x PORTAGE_NICENESS="20" 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 IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND" declare -x PROPERTIES="" declare -x PROVIDE="" declare -x PYTHONDONTWRITEBYTECODE="1" declare -x PYTHON_SINGLE_TARGET="python3_4" declare -x PYTHON_TARGETS="python2_7 python3_3 python3_4" declare -- QTHELP_REQUIRED="never" declare -x QT_GRAPHICSSYSTEM="raster" declare -- QT_MINIMAL="4.8.5" declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins/" declare RDEPEND=" >=kde-apps/libkcddb-4.4:4[aqua=] media-libs/libsamplerate dvd? ( media-libs/libdvdread ) ffmpeg? ( libav? ( media-video/libav:= ) !libav? ( media-video/ffmpeg:0= ) ) flac? ( >=media-libs/flac-1.2[cxx] ) mp3? ( media-sound/lame ) mad? ( media-libs/libmad ) musepack? ( >=media-sound/musepack-tools-444 ) sndfile? ( media-libs/libsndfile ) taglib? ( >=media-libs/taglib-1.5 ) vorbis? ( media-libs/libvorbis ) >=kde-base/kdelibs-4.4:4[aqua=,udev,udisks(+)] app-cdr/cdrdao media-sound/cdparanoia virtual/cdrtools dvd? ( >=app-cdr/dvd+rw-tools-7 encode? ( media-video/transcode[dvd] ) ) emovix? ( media-video/emovix ) sox? ( media-sound/sox ) vcd? ( media-video/vcdimager ) kde-apps/oxygen-icons linguas_ast? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ast(+)] ) linguas_be? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_be(+)] ) linguas_bg? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_bg(+)] ) linguas_bs? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_bs(+)] ) linguas_ca? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ca(+)] ) linguas_ca@valencia? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ca@valencia(+)] ) linguas_cs? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_cs(+)] ) linguas_csb? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_csb(+)] ) linguas_da? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_da(+)] ) linguas_de? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_de(+)] ) linguas_el? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_el(+)] ) linguas_en_GB? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_en_GB(+)] ) linguas_eo? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_eo(+)] ) linguas_es? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_es(+)] ) linguas_et? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_et(+)] ) linguas_eu? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_eu(+)] ) linguas_fi? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_fi(+)] ) linguas_fr? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_fr(+)] ) linguas_ga? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ga(+)] ) linguas_gl? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_gl(+)] ) linguas_he? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_he(+)] ) linguas_hi? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_hi(+)] ) linguas_hne? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_hne(+)] ) linguas_hr? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_hr(+)] ) linguas_hu? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_hu(+)] ) linguas_is? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_is(+)] ) linguas_it? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_it(+)] ) linguas_ja? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ja(+)] ) linguas_kk? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_kk(+)] ) linguas_km? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_km(+)] ) linguas_ko? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ko(+)] ) linguas_ku? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ku(+)] ) linguas_lt? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_lt(+)] ) linguas_lv? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_lv(+)] ) linguas_mai? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_mai(+)] ) linguas_mr? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_mr(+)] ) linguas_ms? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ms(+)] ) linguas_nb? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_nb(+)] ) linguas_nds? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_nds(+)] ) linguas_nl? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_nl(+)] ) linguas_nn? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_nn(+)] ) linguas_oc? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_oc(+)] ) linguas_pa? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_pa(+)] ) linguas_pl? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_pl(+)] ) linguas_pt? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_pt(+)] ) linguas_pt_BR? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_pt_BR(+)] ) linguas_ro? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ro(+)] ) linguas_ru? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ru(+)] ) linguas_se? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_se(+)] ) linguas_sk? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sk(+)] ) linguas_sl? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sl(+)] ) linguas_sr? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sr(+)] ) linguas_sr@ijekavian? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sr@ijekavian(+)] ) linguas_sr@ijekavianlatin? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sr@ijekavianlatin(+)] ) linguas_sr@latin? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sr@latin(+)] ) linguas_sv? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_sv(+)] ) linguas_th? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_th(+)] ) linguas_tr? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_tr(+)] ) linguas_ug? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_ug(+)] ) linguas_uk? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_uk(+)] ) linguas_zh_CN? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_zh_CN(+)] ) linguas_zh_TW? ( >=kde-apps/kde4-l10n-4.4:4[aqua=,linguas_zh_TW(+)] ) handbook? ( >=kde-base/kdelibs-4.4:4[aqua=,handbook] ) >=dev-qt/qtmultimedia-4.8.5:4 dev-lang/perl >=dev-qt/qt3support-4.8.5:4[accessibility] >=dev-qt/qtcore-4.8.5:4[qt3support,ssl] >=dev-qt/qtdbus-4.8.5:4 >=dev-qt/designer-4.8.5:4 >=dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)] >=dev-qt/qtscript-4.8.5:4 >=dev-qt/qtsql-4.8.5:4[qt3support] >=dev-qt/qtsvg-4.8.5:4 >=dev-qt/qttest-4.8.5:4 >=dev-qt/qtwebkit-4.8.5:4 >=kde-base/kdelibs-4.4:4[aqua=]" declare REPOSITORY declare REQUIRED_USE=" mp3? ( encode ) sox? ( encode ) " 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} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" declare -x RUBY_TARGETS="ruby19 ruby20" declare -x R_HOME="/usr/lib64/R" declare -x S="/var/tmp/portage/app-cdr/k3b-2.0.3-r2/work/k3b-2.0.3" declare -x SANDBOX_DEBUG="0" declare -x SANDBOX_DENY="" declare -x SANDBOX_PID="19780" declare -x SANDBOX_PREDICT="/var/tmp/portage/app-cdr/k3b-2.0.3-r2/homedir:/dev/crypto:/proc/self/coredump_filter:/var/cache/fontconfig" declare -x SANDBOX_READ="/:/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/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/app-cdr/k3b-2.0.3-r2/homedir/.bash_history" declare -- SCROLLKEEPER_DIR="/var/lib/scrollkeeper" declare -- SCROLLKEEPER_UPDATE_BIN="/usr/bin/scrollkeeper-update" declare -x SHELL="/bin/bash" declare -x SLOT="4" declare SRC_URI="mirror://kde/stable/k3b/k3b-2.0.3a.tar.xz" declare -x SYMLINK_LIB="yes" declare -x TEXINPUTS="/usr/lib64/ocaml/ocamldoc:" declare -x USE="abi_x86_64 amd64 dvd elibc_glibc encode ffmpeg flac handbook kernel_linux linguas_de mad mp3 userland_GNU vcd vorbis" declare -x USERLAND="GNU" declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND" declare -x USE_EXPAND_UNPREFIXED="ARCH" declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" declare -x USE_EXPAND_VALUES_ELIBC="AIX Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mintlib musl NetBSD OpenBSD SunOS uclibc Winnt" declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt" declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU" declare -x VIDEO_CARDS="nvidia" 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 -- WEBKIT_REQUIRED="always" declare -x XDG_CONFIG_DIRS="/etc/xdg" declare -x XDG_CONFIG_HOME="/var/tmp/portage/app-cdr/k3b-2.0.3-r2/temp" declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share" 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 -- _CMAKE_UTILS_ECLASS="1" declare -- _EUTILS_ECLASS="1" declare -x _E_DOCDESTTREE_="" declare -x _E_EXEDESTTREE_="" declare -- _FLAG_O_MATIC_ECLASS="1" declare -- _KDE4_BASE_ECLASS="1" declare -- _KDE4_FUNCTIONS_ECLASS="1" declare -- _MULTILIB_ECLASS="1" declare -- _TOOLCHAIN_FUNCS_ECLASS="1" declare -- _VERSIONATOR_ECLASS="1" declare -- pattern="doc/%lingua" declare -- phase_func 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 "$@" } __bashpid () { sh -c 'echo ${PPID}' } __eapi6_src_install () { if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then emake DESTDIR="${D}" install; fi; einstalldocs } __eapi6_src_prepare () { if [[ $(declare -p PATCHES) == "declare -a"* ]]; then eapply "${PATCHES[@]}"; else if [[ -n ${PATCHES} ]]; then eapply ${PATCHES}; fi; fi; eapply_user } __start_distcc () { if has distcc $FEATURES && has distcc-pump $FEATURES; then if [[ -z $INCLUDE_SERVER_PORT ]] || [[ ! -w $INCLUDE_SERVER_PORT ]]; then eval $(pump --startup | grep -v PATH); trap "pump --shutdown >/dev/null" EXIT; fi; fi } _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)"; if [[ ${PV} == ??.??.49.9999 && ${CATEGORY} = kde-apps ]]; then branch_prefix="branches/Applications/$(get_kde_version)"; fi; 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}" ;; *) 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 ]] && 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; [[ ${PV} != 4.9999* && ${PV} != 9999 && ${KDEBASE} == kde-base ]] && EGIT_BRANCH="KDE/$(get_kde_version)"; [[ ${PV} == ??.??.49.9999 && ${KDEBASE} == kde-base ]] && EGIT_BRANCH="Applications/$(get_kde_version)"; 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 _kmname="${KMNAME}"; else _kmname=${PN}; fi; _kmname_pv="${_kmname}-${PV}"; case ${KDEBASE} in kde-base) case ${PV} in 4.4.11.1) SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2" ;; 4.4.20*) SRC_URI="http://dev.gentoo.org/~dilfridge/distfiles/${_kmname_pv}.tar.xz" ;; 4.?.[6-9]? | 4.??.[6-9]?) SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.xz" ;; 4.11.14) SRC_URI="mirror://kde/stable/4.14.3/src/${_kmname_pv}.tar.xz" ;; 4.11.19) SRC_URI="mirror://kde/stable/applications/15.04.1/src/${_kmname_pv}.tar.xz" ;; 4.11.21) SRC_URI="mirror://kde/stable/applications/15.04.3/src/${_kmname_pv}.tar.xz" ;; 4.11.22) SRC_URI="mirror://kde/stable/applications/15.08.0/src/${_kmname_pv}.tar.xz" ;; 4.14.3) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.xz" ;; 4.14.8) SRC_URI="mirror://kde/stable/applications/15.04.1/src/${_kmname_pv}.tar.xz" ;; 4.14.10) SRC_URI="mirror://kde/stable/applications/15.04.3/src/${_kmname_pv}.tar.xz" ;; 4.14.11) SRC_URI="mirror://kde/stable/applications/15.08.0/src/${_kmname_pv}.tar.xz" ;; ??.?.[6-9]? | ??.??.[4-9]?) SRC_URI="mirror://kde/unstable/applications/${PV}/src/${_kmname}-${PV}.tar.xz" ;; *) SRC_URI="mirror://kde/stable/applications/${PV}/src/${_kmname}-${PV}.tar.xz" ;; esac ;; kdevelop | kdevelop-php* | kdevplatform) case ${KDEVELOP_VERSION} in 4.[123].[6-9]*) SRC_URI="mirror://kde/unstable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.xz" ;; *) SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.xz" ;; esac ;; esac } _check_build_dir () { : ${CMAKE_USE_DIR:=${S}}; if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then BUILD_DIR="${CMAKE_USE_DIR}"; else if [[ ! -n ${BUILD_DIR} && -n ${CMAKE_BUILD_DIR} ]]; then eqawarn "The CMAKE_BUILD_DIR variable has been renamed to BUILD_DIR."; eqawarn "Please migrate the ebuild to use the new one."; _RESPECT_CMAKE_BUILD_DIR=1; fi; if [[ -n ${_RESPECT_CMAKE_BUILD_DIR} ]]; then BUILD_DIR=${CMAKE_BUILD_DIR:-${WORKDIR}/${P}_build}; else : ${BUILD_DIR:=${WORKDIR}/${P}_build}; fi; fi; CMAKE_BUILD_DIR=${BUILD_DIR}; mkdir -p "${BUILD_DIR}"; echo ">>> Working in BUILD_DIR: \"$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 } _epatch_draw_line () { [[ -z $1 ]] && set "$(printf "%65s" '')"; echo "${1//?/=}" } _eutils_eprefix_init () { has "${EAPI:-0}" 0 1 2 && : ${ED:=${D}} ${EPREFIX:=} ${EROOT:=${ROOT}} } _execute_optionally () { 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=$1 new=(); shift; for f in ${!var}; do for x in "$@"; do [[ ${f} == ${x} ]] && continue 2; done; 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" } _generator_to_use () { local generator_name; case ${CMAKE_MAKEFILE_GENERATOR} in ninja) generator_name="Ninja" ;; emake) generator_name="Unix Makefiles" ;; *) eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}"; die "Value ${CMAKE_MAKEFILE_GENERATOR} is not supported" ;; esac; echo ${generator_name} } _iconins () { ( local funcname=$1; shift; local size dir; local context=apps; local theme=hicolor; while [[ $# -gt 0 ]]; do case $1 in -s | --size) if [[ ${2%%x*}x${2%%x*} == "$2" ]]; then size=${2%%x*}; else size=${2}; fi; case ${size} in 16 | 22 | 24 | 32 | 36 | 48 | 64 | 72 | 96 | 128 | 192 | 256 | 512) size=${size}x${size} ;; scalable) ;; *) eerror "${size} is an unsupported icon size!"; exit 1 ;; esac; shift 2 ;; -t | --theme) theme=${2}; shift 2 ;; -c | --context) context=${2}; shift 2 ;; *) if [[ -z ${size} ]]; then insinto /usr/share/pixmaps; else insinto /usr/share/icons/${theme}/${size}/${context}; fi; if [[ ${funcname} == doicon ]]; then if [[ -f $1 ]]; then doins "${1}"; else if [[ -d $1 ]]; then shopt -s nullglob; doins "${1}"/*.{png,svg}; shopt -u nullglob; else eerror "${1} is not a valid file/directory!"; exit 1; fi; fi; else break; fi; shift 1 ;; esac; done; if [[ ${funcname} == newicon ]]; then newins "$@"; fi ) || die } _is_flagq () { local x var; eval var=\""\${$1[*]}"\"; for x in ${var}; do [[ ${x} == $2 ]] && return 0; done; return 1 } _modify-cmakelists () { debug-print-function ${FUNCNAME} "$@"; grep -qs "<<< Gentoo configuration >>>" "${CMAKE_USE_DIR}"/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_ } _ninjaopts_from_makeopts () { if [[ ${NINJAOPTS+set} == set ]]; then return 0; fi; local ninjaopts=(); set -- ${MAKEOPTS}; while (( $# )); do case $1 in -j | -l | -k) ninjaopts+=($1 $2); shift 2 ;; -j* | -l* | -k*) ninjaopts+=($1); shift 1 ;; *) shift ;; esac; done; export NINJAOPTS="${ninjaopts[*]}" } _tc-getPROG () { local tuple=$1; local v var vars=$2; local prog=$3; var=${vars%% *}; for v in ${vars}; do if [[ -n ${!v} ]]; then export ${var}="${!v}"; echo "${!v}"; return 0; fi; done; local search=; [[ -n $4 ]] && search=$(type -p "$4-${prog}"); [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p "${!tuple}-${prog}"); [[ -n ${search} ]] && prog=${search##*/}; export ${var}=${prog}; echo "${!var}" } _use_me_now () { debug-print-function ${FUNCNAME} "$@"; local uper capitalised x; [[ -z $2 ]] && die "cmake-utils_use-$1 []"; 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 []"; 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_kdeapps_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 [[ ${CATEGORY} == kde-apps || ${PV} == *9999 ]]; then ver=4.14.3; else ver=${PV}; fi; fi; fi; fi; [[ -z ${1} ]] && die "Missing parameter"; echo " >=kde-apps/${1}-${ver}:4[aqua=${2:+,${2}}]" } 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 [[ ${CATEGORY} == kde-apps || ${PV} == 9999 ]]; then ver=4.14.3; else if [[ ${PV} == *.9999 ]]; then ver=$(get_kde_version); else ver=${PV}; fi; fi; fi; fi; fi; [[ -z ${1} ]] && die "Missing parameter"; echo " >=kde-base/${1}-${ver}:4[aqua=${2:+,${2}}]" } all-flag-vars () { echo {C,CPP,CXX,CCAS,F,FC,LD}FLAGS } append-cflags () { [[ $# -eq 0 ]] && return 0; export CFLAGS+=" $*"; return 0 } append-cppflags () { [[ $# -eq 0 ]] && return 0; export CPPFLAGS+=" $*"; return 0 } append-cxxflags () { [[ $# -eq 0 ]] && return 0; export CXXFLAGS+=" $*"; return 0 } append-fflags () { [[ $# -eq 0 ]] && return 0; export FFLAGS+=" $*"; export FCFLAGS+=" $*"; return 0 } append-flags () { [[ $# -eq 0 ]] && return 0; case " $* " in *' '-[DIU]*) eqawarn 'please use append-cppflags for preprocessor flags' ;; *' '-L* | *' '-Wl,*) eqawarn 'please use append-ldflags for linker flags' ;; esac; append-cflags "$@"; append-cxxflags "$@"; append-fflags "$@"; return 0 } append-ldflags () { [[ $# -eq 0 ]] && return 0; local flag; for flag in "$@"; do [[ ${flag} == -l* ]] && eqawarn "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 () { [[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments"; append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE } append-libs () { [[ $# -eq 0 ]] && return 0; local flag; for flag in "$@"; do if [[ -z "${flag// }" ]]; then eqawarn "Appending an empty argument to LIBS is invalid! Skipping."; continue; fi; case $flag in -[lL]*) export LIBS="${LIBS} ${flag}" ;; -*) eqawarn "Appending non-library to LIBS (${flag}); Other linker flags should be passed via LDFLAGS"; export LIBS="${LIBS} ${flag}" ;; *) export LIBS="${LIBS} -l${flag}" ;; esac; done; return 0 } 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 () { _eutils_eprefix_init; 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=${EROOT}/var/db/pkg/${PKG}/USE; local IUSEFILE=${EROOT}/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" ]] } check_license () { die "you no longer need this as portage supports ACCEPT_LICENSE itself" } cmake-utils_src_compile () { _execute_optionally "src_compile" "$@" } cmake-utils_src_configure () { _execute_optionally "src_configure" "$@" } cmake-utils_src_install () { _execute_optionally "src_install" "$@" } cmake-utils_src_make () { debug-print-function ${FUNCNAME} "$@"; _check_build_dir; pushd "${BUILD_DIR}" > /dev/null; ${CMAKE_MAKEFILE_GENERATOR}_src_make "$@"; popd > /dev/null } cmake-utils_src_prepare () { _execute_optionally "src_prepare" "$@" } cmake-utils_src_test () { _execute_optionally "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_find_package () { _use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE_ "$@" } 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_ "$@" } cmake-utils_useno () { _use_me_now_inverted "" "$@" } comment_add_subdirectory () { if [[ -z ${1} ]]; then die "comment_add_subdirectory must be passed the directory name to comment"; fi; if [[ -e "CMakeLists.txt" ]]; then sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${1//\//\\/}[[:space:]]*)/s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die "failed to comment add_subdirectory(${1})"; fi } 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}" } doicon () { _iconins ${FUNCNAME} "$@" } 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} ) } ebeep () { ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org" } econf_build () { local CBUILD=${CBUILD:-${CHOST}}; tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@" } 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 () { [[ $# -eq 0 ]] && return 0; sed -i 's/\r$//' -- "$@" || die } einstalldocs () { debug-print-function ${FUNCNAME} "${@}"; local dodoc_opts=-r; has ${EAPI} 0 1 2 3 && dodoc_opts=; if ! declare -p DOCS &> /dev/null; then local d; for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG; do if [[ -s ${d} ]]; then dodoc "${d}" || die; fi; done; else if [[ $(declare -p DOCS) == "declare -a"* ]]; then if [[ -n ${DOCS[@]} ]]; then dodoc ${dodoc_opts} "${DOCS[@]}" || die; fi; else if [[ -n ${DOCS} ]]; then dodoc ${dodoc_opts} ${DOCS} || die; fi; fi; fi; if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]]; then if [[ -n ${HTML_DOCS[@]} ]]; then dohtml -r "${HTML_DOCS[@]}" || die; fi; else if [[ -n ${HTML_DOCS} ]]; then dohtml -r ${HTML_DOCS} || die; fi; fi; return 0 } emake_src_make () { debug-print-function ${FUNCNAME} "$@"; [[ -e Makefile ]] || die "Makefile not found. Error during configure stage."; if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then emake VERBOSE=1 "$@" || die; else emake "$@" || die; fi } 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} "$@"; 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 local CPPFLAGS=${CPPFLAGS}; append-cppflags -DNDEBUG; fi; fi; local build_rules=${BUILD_DIR}/gentoo_rules.cmake; cat > "${build_rules}" <<-_EOF_ SET (CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE) SET (CMAKE_ASM_COMPILE_OBJECT " ${CFLAGS} -o -c " CACHE STRING "ASM compile command" FORCE) SET (CMAKE_C_COMPILE_OBJECT " ${CPPFLAGS} -o -c " CACHE STRING "C compile command" FORCE) SET (CMAKE_CXX_COMPILE_OBJECT " ${CPPFLAGS} -o -c " CACHE STRING "C++ compile command" FORCE) SET (CMAKE_Fortran_COMPILE_OBJECT " ${FCFLAGS} -o -c " CACHE STRING "Fortran compile command" FORCE) SET (CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE) SET (PKG_CONFIG_EXECUTABLE $(type -P $(tc-getPKG_CONFIG)) CACHE FILEPATH "pkg-config executable" FORCE) _EOF_ local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake; cat > ${toolchain_file} <<-_EOF_ SET (CMAKE_C_COMPILER $(tc-getCC)) SET (CMAKE_CXX_COMPILER $(tc-getCXX)) SET (CMAKE_Fortran_COMPILER $(tc-getFC)) _EOF_ if tc-is-cross-compiler; then local sysname; case "${KERNEL:-linux}" in Cygwin) sysname="CYGWIN_NT-5.1" ;; HPUX) sysname="HP-UX" ;; linux) sysname="Linux" ;; Winnt) sysname="Windows" ;; *) sysname="${KERNEL}" ;; esac; cat >> "${toolchain_file}" <<-_EOF_ SET (CMAKE_SYSTEM_NAME "${sysname}") _EOF_ if [ "${SYSROOT:-/}" != "/" ]; then cat >> "${toolchain_file}" <<-_EOF_ set(CMAKE_FIND_ROOT_PATH "${SYSROOT}") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) _EOF_ fi; fi has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=; if [[ -n ${EPREFIX} ]]; then cat >> "${build_rules}" <<-_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}" 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 "") SET(CMAKE_INSTALL_RPATH "${EPREFIX}${PREFIX}/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}/lib" CACHE STRING "" FORCE) ENDIF (NOT APPLE) _EOF_ fi local common_config=${BUILD_DIR}/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; if [[ ${CMAKE_WARN_UNUSED_CLI} == no ]]; then local warn_unused_cli="--no-warn-unused-cli"; else local warn_unused_cli=""; fi; local cmakeargs=(${warn_unused_cli} -C "${common_config}" -G "$(_generator_to_use)" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE="${build_rules}" -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}" "${MYCMAKEARGS}"); if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]]; then cmakeargs+=(-C "${CMAKE_EXTRA_CACHE_FILE}"); fi; pushd "${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 "${BUILD_DIR}" > /dev/null; DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" || die "died running ${CMAKE_MAKEFILE_GENERATOR} install"; popd > /dev/null; pushd "${S}" > /dev/null; einstalldocs; popd > /dev/null } enable_cmake-utils_src_prepare () { debug-print-function ${FUNCNAME} "$@"; pushd "${S}" > /dev/null; debug-print "$FUNCNAME: PATCHES=$PATCHES"; [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"; debug-print "$FUNCNAME: applying user patches"; epatch_user; popd > /dev/null } enable_cmake-utils_src_test () { debug-print-function ${FUNCNAME} "$@"; _check_build_dir; pushd "${BUILD_DIR}" > /dev/null; [[ -e CTestTestfile.cmake ]] || { echo "No tests found. Skipping."; return 0 }; [[ -n ${TEST_VERBOSE} ]] && myctestargs+=(--extra-verbose --output-on-failure); if ctest "${myctestargs[@]}" "$@"; then einfo "Tests succeeded."; popd > /dev/null; return 0; else if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]]; then eerror "Tests failed. Test log ${BUILD_DIR}/Testing/Temporary/LastTest.log follows:"; eerror "--START TEST LOG--------------------------------------------------------------"; cat "${BUILD_DIR}/Testing/Temporary/LastTest.log"; eerror "--END TEST LOG----------------------------------------------------------------"; die "Tests failed."; else die "Tests failed. When you file a bug, please attach the following file: \n\t${BUILD_DIR}/Testing/Temporary/LastTest.log"; fi; popd > /dev/null; return 1; fi } enable_selected_doc_linguas () { debug-print-function ${FUNCNAME} "$@"; 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 if ! $(env | grep -q "^LINGUAS="); then return 0; fi; comment_all_add_subdirectory "${handbookdir}"; if [[ -d "${handbookdir}/en_US" && ! -d "${handbookdir}/en" ]]; then mv "${handbookdir}/en_US" "${handbookdir}/en" || die; sed -e "s/en_US/en/" -i "${handbookdir}/CMakeLists.txt"; fi; 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 } epatch () { function _epatch_draw_line () { [[ -z $1 ]] && set "$(printf "%65s" '')"; echo "${1//?/=}" }; unset P4CONFIG P4PORT P4USER; local EPATCH_OPTS=(${EPATCH_OPTS[*]}); while [[ $# -gt 0 ]]; do case $1 in -*) EPATCH_OPTS+=("$1") ;; *) break ;; esac; shift; done; 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 evar_push_set LC_COLLATE C; set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"}; evar_pop; 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; EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[*]}"; 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}${EPATCH_USER_EXCLUDE} ]]; then eshopts_push -o noglob; local ex; for ex in ${EPATCH_EXCLUDE}; do if [[ ${patchname} == ${ex} ]]; then einfo " Skipping ${patchname} due to EPATCH_EXCLUDE ..."; eshopts_pop; continue 2; fi; done; for ex in ${EPATCH_USER_EXCLUDE}; do if [[ ${patchname} == ${ex} ]]; then einfo " Skipping ${patchname} due to EPATCH_USER_EXCLUDE ..."; 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 patch="patch"; eval $(alias patch 2>/dev/null | sed 's:^alias ::'); local STDERR_TARGET="${T}/${patchname}.out"; if [[ -e ${STDERR_TARGET} ]]; then STDERR_TARGET="${T}/${patchname}-$$.out"; fi; printf "***** %s *****\nPWD: %s\nPATCH TOOL: %s -> %s\nVERSION INFO:\n%s\n\n" "${patchname}" "${PWD}" "${patch}" "$(type -P "${patch}")" "$(${patch} --version)" > "${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 echo; eerror "Rejected Patch: ${patchname} !"; eerror " ( ${PATCH_TARGET} )"; eerror; eerror "Your patch uses relative paths '../':"; eerror "${rel_paths}"; echo; die "you need to fix the relative paths in patch"; fi; local patch_cmd; while [[ ${count} -lt 5 ]]; do patch_cmd="${patch} -p${count} ${EPATCH_OPTS}"; ( _epatch_draw_line "***** ${patchname} *****"; echo; echo "PATCH COMMAND: ${patch_cmd} < '${PATCH_TARGET}'"; echo; _epatch_draw_line "***** ${patchname} *****"; ${patch_cmd} --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_cmd} < "${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}"; cat >> "${T}/epatch.log" <<-EOF PATCH: ${x} CMD: ${patch_cmd} PWD: ${PWD} EOF 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.log"; [[ -e ${applied} ]] && return 2; local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches; for check in ${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT}}; 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}"; has epatch_user_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" epatch_user_death_notice"; return 0; fi; done; echo "none" > "${applied}"; return 1 } epatch_user_death_notice () { ewarn "!!! User patches were applied to this build!" } 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 p any_found; while IFS= read -r -d '' f; do for p in "${PORTDIR}"/eclass/ELT-patches/nocxx/*.patch; do if patch --no-backup-if-mismatch -p1 "${f}" "${p}" > /dev/null; then any_found=1; break; fi; done; done < <(find "${dir}" -name configure -print0); if [[ -z ${any_found} ]]; then eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt)."; fi; eend 0 } eshopts_pop () { local s; estack_pop eshopts s || die "${FUNCNAME}: unbalanced push"; if [[ ${s} == "shopt -"* ]]; then eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"; else set +$- || die "${FUNCNAME}: sanity: invalid shell settings: $-"; set -${s} || die "${FUNCNAME}: sanity: unable to restore saved shell settings: ${s}"; fi } eshopts_push () { if [[ $1 == -[su] ]]; then estack_push eshopts "$(shopt -p)"; [[ $# -eq 0 ]] && return 0; shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*"; else estack_push eshopts $-; [[ $# -eq 0 ]] && return 0; set "$@" || die "${FUNCNAME}: bad options to set: $*"; fi } estack_pop () { [[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments"; local _estack_name="_ESTACK_$1_"; shift; local _estack_retvar=$1; shift; eval local _estack_i=\${#${_estack_name}\[@\]}; [[ $(( --_estack_i )) -eq -1 ]] && return 1; if [[ -n ${_estack_retvar} ]]; then eval ${_estack_retvar}=\"\${${_estack_name}\[${_estack_i}\]}\"; fi; eval unset ${_estack_name}\[${_estack_i}\] } estack_push () { [[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments"; local stack_name="_ESTACK_$1_"; shift; eval ${stack_name}+=\( \"\$@\" \) } esvn_clean () { [[ -z $* ]] && set -- .; find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf } eumask_pop () { [[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options"; local s; estack_pop eumask s || die "${FUNCNAME}: unbalanced push"; umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}" } eumask_push () { estack_push eumask "$(umask)"; umask "$@" || die "${FUNCNAME}: bad options to umask: $*" } evar_pop () { local cnt=${1:-bad}; case $# in 0) cnt=1 ;; 1) isdigit "${cnt}" || die "${FUNCNAME}: first arg must be a number: $*" ;; *) die "${FUNCNAME}: only accepts one arg: $*" ;; esac; local var val; while (( cnt-- )); do estack_pop evar val || die "${FUNCNAME}: unbalanced push"; estack_pop evar var || die "${FUNCNAME}: unbalanced push"; [[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}"; done } evar_push () { local var val; for var in "$@"; do [[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94"; estack_push evar "${var}" "${val}"; done } evar_push_set () { local var=$1; evar_push ${var}; case $# in 1) unset ${var} ;; 2) printf -v "${var}" '%s' "$2" ;; *) die "${FUNCNAME}: incorrect # of args: $*" ;; esac } 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 "$@"; local v; for v in $(all-flag-vars); do _filter-var ${v} "$@"; done; return 0 } filter-ldflags () { _filter-var LDFLAGS "$@"; return 0 } filter-lfs-flags () { [[ $# -ne 0 ]] && 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/both/387,sse}; 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 } 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); [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]] } gcc-specs-now () { local directive; directive=$(gcc-specs-directive link_command); [[ "${directive/\{!nonow:}" != "${directive}" ]] } gcc-specs-pie () { local directive; directive=$(gcc-specs-directive cc1); [[ "${directive/\{!nopie:}" != "${directive}" ]] } gcc-specs-relro () { local directive; directive=$(gcc-specs-directive link_command); [[ "${directive/\{!norelro:}" != "${directive}" ]] } gcc-specs-ssp () { local directive; directive=$(gcc-specs-directive cc1); [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]] } gcc-specs-ssp-to-all () { local directive; directive=$(gcc-specs-directive cc1); [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]] } gcc-specs-stack-check () { local directive; directive=$(gcc-specs-directive cc1); [[ "${directive/\{!fno-stack-check:}" != "${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; case ${CTARGET:-${CHOST}} in *-darwin*) ;; *linux* | *-freebsd* | *-openbsd* | *-netbsd*) use prefix && return 0 ;; *) return 0 ;; esac; dodir /usr/${libdir}; if [[ $1 == "-a" ]]; then auto=true; shift; dodir /${libdir}; fi; local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose); if $(tc-getLD) --version | grep -q 'GNU gold'; then local d="${T}/bfd-linker"; mkdir -p "${d}"; ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld; flags+=(-B"${d}"); fi; output_format=$($(tc-getCC) "${flags[@]}" 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 ;; *) 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 var findflag="$1"; for var in $(all-flag-vars); do for f in ${!var}; do if [ "${f/${findflag}}" != "${f}" ]; then printf "%s\n" "${f/-${findflag}=}"; return 0; fi; done; done; return 1 } 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=${2:-${ABI:-${DEFAULT_ABI:-default}}}; local var="${flag}_${abi}"; echo ${!var} } get_after_major_version () { echo $(get_version_component_range 2- "${1:-${PV}}") } get_all_abis () { local x order="" mvar dvar; mvar="MULTILIB_ABIS"; dvar="DEFAULT_ABI"; if [[ -n $1 ]]; then mvar="$1_${mvar}"; dvar="$1_${dvar}"; fi; if [[ -z ${!mvar} ]]; then echo "default"; return 0; fi; for x in ${!mvar}; do if [[ ${x} != ${!dvar} ]]; then order="${order:+${order} }${x}"; fi; done; order="${order:+${order} }${!dvar}"; echo ${order}; return 0 } get_all_libdirs () { local libdirs abi; 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_install_abis () { local x 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_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_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_disable_deprecation_warning () { local retval=0; local fails=(); local makefile; ebegin "Disabling deprecation warnings"; while read makefile; do if ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)" "${makefile}"; then continue; fi; LC_ALL=C sed -r -i -e 's:-D[A-Z_]+_DISABLE_DEPRECATED:$(NULL):g' -e 's:-DGSEAL_ENABLE+[A-Z_]:$(NULL):g' -i "${makefile}"; if [[ $? -ne 0 ]]; then fails+=("${makefile}"); retval=2; fi; done < <(find "${S}" -name "Makefile.in" -o -name "Makefile.am" -o -name "Makefile.decl" | sort; echo configure); eend ${retval}; for makefile in "${fails[@]}"; do ewarn "Failed to disable deprecation warnings in ${makefile}"; done } gnome2_environment_reset () { export G_HOME="${T}"; export GST_REGISTRY="${T}/registry.xml"; export XDG_DATA_HOME="${T}/.local/share"; export XDG_CONFIG_HOME="${T}/.config"; export XDG_CACHE_HOME="${T}/.cache"; export XDG_RUNTIME_DIR="${T}/run"; mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" "${XDG_RUNTIME_DIR}"; chmod 0700 "${XDG_RUNTIME_DIR}" } 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_gdk_pixbuf_savelist () { has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"; pushd "${ED}" > /dev/null; export GNOME2_ECLASS_GDK_PIXBUF_LOADERS=$(find usr/lib*/gdk-pixbuf-2.0 -type f 2>/dev/null); popd > /dev/null } gnome2_gdk_pixbuf_update () { has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"; local updater="${EROOT}/usr/bin/${CHOST}-gdk-pixbuf-query-loaders"; if [[ ! -x ${updater} ]]; then updater="${EROOT}/usr/bin/gdk-pixbuf-query-loaders"; fi; if [[ ! -x ${updater} ]]; then debug-print "${updater} is not executable"; return; fi; if [[ -z ${GNOME2_ECLASS_GDK_PIXBUF_LOADERS} ]]; then debug-print "gdk-pixbuf loader cache does not need an update"; return; fi; ebegin "Updating gdk-pixbuf loader cache"; local tmp_file=$(mktemp -t tmp.XXXXXXXXXX_gdkpixbuf); ${updater} > "${tmp_file}" && chmod 0644 "${tmp_file}" && cp -f "${tmp_file}" "${EROOT}usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" && rm "${tmp_file}"; eend $? } 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; else if [[ $(ls "${EROOT}${dir}") = "icon-theme.cache" ]]; then rm "${EROOT}${dir}/icon-theme.cache"; fi; fi; if [[ -z $(ls "${EROOT}${dir}") ]]; then rmdir "${EROOT}${dir}"; 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; if [[ -f ${S}/gnome-doc-utils.make ]]; then omf_makefiles="${omf_makefiles} ${S}/gnome-doc-utils.make"; fi; for filename in $(find "${S}" -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 sed -i -e 's:scrollkeeper-update:true:' "${omf}"; retval=$?; if [[ $retval -ne 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_query_immodules_gtk2 () { local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-2.0; [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-2.0; ebegin "Updating gtk2 input method module cache"; GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-2.0/2.10.0/immodules.cache" "${updater}" --update-cache; eend $? } gnome2_query_immodules_gtk3 () { local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-3.0; [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-3.0; ebegin "Updating gtk3 input method module cache"; GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" "${updater}" --update-cache; eend $? } 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_savelist () { has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"; pushd "${ED}" &> /dev/null; export GNOME2_ECLASS_SCROLLS=$(find 'usr/share/omf' -type f -name "*.omf" 2> /dev/null); popd &> /dev/null } gnome2_scrollkeeper_update () { has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"; local updater="${EROOT}${SCROLLKEEPER_UPDATE_BIN}"; if [[ ! -x "${updater}" ]]; then debug-print "${updater} is not executable"; return; fi; if [[ -z "${GNOME2_ECLASS_SCROLLS}" ]]; then debug-print "No scroll cache to update"; return; fi; ebegin "Updating scrollkeeper database ..."; "${updater}" -q -p "${EROOT}${SCROLLKEEPER_DIR}"; eend $? } has_m32 () { die "${FUNCNAME}: don't use this anymore" } has_m64 () { eqawarn "${FUNCNAME}: don't use this anymore"; 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/ /}" ] } in_iuse () { debug-print-function ${FUNCNAME} "${@}"; [[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()"; local flag=${1}; local liuse=(${IUSE}); has "${flag}" "${liuse[@]#[+-]}" } 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 "; local var; for var in $(all-flag-vars); do _is_flagq ${var} "$1" && return 0; done; return 1 } is-ldflag () { is-ldflagq "$@" && echo true } is-ldflagq () { [[ -n $2 ]] && die "Usage: is-ldflag "; _is_flagq LDFLAGS $1 } is_final_abi () { has_multilib_profile || return 0; set -- $(get_install_abis); local LAST_ABI=$#; [[ ${!LAST_ABI} == ${ABI} ]] } isdigit () { local d; for d in "$@"; do [[ ${d:-bad} == *[!0-9]* ]] && return 1; done; return 0 } 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 [[ ${KDE_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-apps/kdebase-runtime-meta'; then if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then echo; ewarn "WARNING! Your system configuration does not contain \"kde-apps/kdebase-runtime-meta\"."; 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; if [[ ${KDE_BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then subversion_pkg_preinst; fi } kde4-base_pkg_setup () { debug-print-function ${FUNCNAME} "$@"; if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ]; then eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."; eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."; fi; unset KDEHOME; if [[ ${MERGE_TYPE} != binary ]]; then [[ $(gcc-major-version) -lt 4 ]] || ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 6 ]] ) && die "Sorry, but gcc-4.6 and earlier wont work for some KDE packages."; 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 use_if_iuse debug; then CMAKE_KDE_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 if [[ -n ${mycmakeargs} ]]; then eqawarn "mycmakeargs should always be declared as an array, not a string"; fi; 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; [[ -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} && in_iuse handbook; 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 [[ ${KDE_BUILD_TYPE} = live ]]; then case ${KDE_SCM} in svn) subversion_src_prepare ;; esac; fi; cmake-utils_src_prepare; if [[ -n ${KMSAVELIBS} ]]; then save_library_dependencies; fi; if [[ -n ${KMLOADLIBS} ]]; then load_library_dependencies; fi; 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} "$@"; local kded4_pid; function _test_runner () { if [[ -n "${VIRTUALDBUS_TEST}" ]]; then export $(dbus-launch); kded4 2>&1 > /dev/null & kded4_pid=$!; fi; cmake-utils_src_test }; unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID; mycmakeargs+=(-DKDE4_BUILD_TESTS=ON); cmake-utils_src_configure; kde4-base_src_compile; 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."; _test_runner; else VIRTUALX_COMMAND="_test_runner" virtualmake; fi; else _test_runner; fi; if [ -n "${kded4_pid}" ]; then kill ${kded4_pid}; fi; if [ -n "${DBUS_SESSION_BUS_PID}" ]; then kill ${DBUS_SESSION_BUS_PID}; fi } kde4-base_src_unpack () { debug-print-function ${FUNCNAME} "$@"; if [[ ${KDE_BUILD_TYPE} = live ]]; then case ${KDE_SCM} in svn) subversion_src_unpack ;; git) git-r3_src_unpack ;; esac; else unpack ${A}; fi } 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="Utility;Accessibility" ;; admin) type=System ;; antivirus) type=System ;; arch) type="Utility;Archiving" ;; backup) type="Utility;Archiving" ;; cdr) type="AudioVideo;DiscBurning" ;; dicts) type="Office;Dictionary" ;; doc) type=Documentation ;; editors) type="Utility;TextEditor" ;; emacs) type="Development;TextEditor" ;; emulation) type="System;Emulator" ;; laptop) type="Settings;HardwareSettings" ;; office) type=Office ;; pda) type="Office;PDA" ;; vim) type="Development;TextEditor" ;; xemacs) type="Development;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; local slot=${SLOT%/*}; 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 () { _eutils_eprefix_init; local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5; local tmpwrapper=$(emktemp); ( echo '#!/bin/sh'; [[ -n ${chdir} ]] && printf 'cd "%s"\n' "${EPREFIX}${chdir}"; if [[ -n ${libdir} ]]; then local var; if [[ ${CHOST} == *-darwin* ]]; then var=DYLD_LIBRARY_PATH; else var=LD_LIBRARY_PATH; fi; cat <<-EOF if [ "\${${var}+set}" = "set" ] ; then export ${var}="\${${var}}:${EPREFIX}${libdir}" else export ${var}="${EPREFIX}${libdir}" fi EOF fi printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}"; chmod go+rx "${tmpwrapper}"; if [[ -n ${path} ]]; then ( exeinto "${path}"; newexe "${tmpwrapper}" "${wrapper}" ) || die; else newbin "${tmpwrapper}" "${wrapper}" || die; fi } multilib_env () { local CTARGET=${1:-${CTARGET}}; local cpu=${CTARGET%%*-}; case ${cpu} in aarch64*) export CFLAGS_arm=${CFLAGS_arm-}; case ${cpu} in aarch64*be) export CHOST_arm="armv8b-${CTARGET#*-}" ;; *) export CHOST_arm="armv8l-${CTARGET#*-}" ;; esac; CHOST_arm=${CHOST_arm/%-gnu/-gnueabi}; export CTARGET_arm=${CHOST_arm}; export LIBDIR_arm="lib"; export CFLAGS_arm64=${CFLAGS_arm64-}; export CHOST_arm64=${CTARGET}; export CTARGET_arm64=${CHOST_arm64}; export LIBDIR_arm64="lib64"; : ${MULTILIB_ABIS=arm64}; : ${DEFAULT_ABI=arm64} ;; x86_64*) export CFLAGS_x86=${CFLAGS_x86--m32}; export CHOST_x86=${CTARGET/x86_64/i686}; CHOST_x86=${CHOST_x86/%-gnux32/-gnu}; 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/%-gnux32/-gnu}; export CTARGET_amd64=${CHOST_amd64}; export LIBDIR_amd64="lib64"; export CFLAGS_x32=${CFLAGS_x32--mx32}; export CHOST_x32=${CTARGET/%-gnu/-gnux32}; export CTARGET_x32=${CHOST_x32}; export LIBDIR_x32="libx32"; case ${CTARGET} in *-gnux32) : ${MULTILIB_ABIS=x32 amd64 x86}; : ${DEFAULT_ABI=x32} ;; *) : ${MULTILIB_ABIS=amd64 x86}; : ${DEFAULT_ABI=amd64} ;; esac ;; 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} ;; sparc64*) export CFLAGS_sparc32=${CFLAGS_sparc32--m32}; 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 F77 FC LD PKG_CONFIG_{LIBDIR,PATH}; do vv="_abi_saved_${v}"; [[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v}; unset ${vv}; done; unset _DEFAULT_ABI_SAVED; fi; if [[ ${ABI} != ${DEFAULT_ABI} ]]; then for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH}; do vv="_abi_saved_${v}"; [[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv}; done; export _DEFAULT_ABI_SAVED="true"; export CHOST=$(get_abi_CHOST ${DEFAULT_ABI}); export CC="$(tc-getCC) $(get_abi_CFLAGS)"; export CXX="$(tc-getCXX) $(get_abi_CFLAGS)"; export F77="$(tc-getF77) $(get_abi_CFLAGS)"; export FC="$(tc-getFC) $(get_abi_CFLAGS)"; export LD="$(tc-getLD) $(get_abi_LDFLAGS)"; export CHOST=$(get_abi_CHOST $1); export CBUILD=$(get_abi_CHOST $1); export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig; export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig; fi } newicon () { _iconins ${FUNCNAME} "$@" } newmenu () { ( insinto /usr/share/applications; newins "$@" ) } ninja_src_make () { debug-print-function ${FUNCNAME} "$@"; [[ -e build.ninja ]] || die "build.ninja not found. Error during configure stage."; _ninjaopts_from_makeopts; if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then set -- ninja ${NINJAOPTS} -v "$@"; else set -- ninja ${NINJAOPTS} "$@"; fi; echo "$@"; "$@" || die } no-as-needed () { case $($(tc-getLD) -v 2>&1 [more libraries to preserve]"; has preserve-libs ${FEATURES} && return 0; local lib dir; for lib in "$@"; do [[ -e ${EROOT}/${lib} ]] || continue; dir=${lib%/*}; dodir ${dir} || die "dodir ${dir} failed"; cp "${EROOT}"/${lib} "${ED}"/${lib} || die "cp ${lib} failed"; touch "${ED}"/${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; _eutils_eprefix_init; local lib notice=0; for lib in "$@"; do [[ -e ${EROOT}/${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; ewarn " # revdep-rebuild --library '${lib}' && rm '${lib}'"; done } prune_libtool_files () { debug-print-function ${FUNCNAME} "$@"; local removing_all removing_modules opt; _eutils_eprefix_init; for opt in "$@"; do case "${opt}" in --all) removing_all=1; removing_modules=1 ;; --modules) removing_modules=1 ;; *) die "Invalid argument to ${FUNCNAME}(): ${opt}" ;; esac; done; local f; local queue=(); while IFS= read -r -d '' f; do local archivefile=${f/%.la/.a}; if ! sed -n -e '/^# Generated by .*libtool/q0;4q1' "${f}"; then continue; fi; [[ ${f} != ${archivefile} ]] || die 'regex sanity check failed'; local reason= pkgconfig_scanned=; local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}"); if [[ ${snotlink} == yes ]]; then if [[ -f ${archivefile} ]]; then einfo "Removing unnecessary ${archivefile#${D%/}} (static plugin)"; queue+=("${archivefile}"); fi; if [[ -n ${removing_modules} ]]; then reason='module'; fi; else if [[ -n ${removing_all} ]]; then reason='requested'; else if [[ ! -f ${archivefile} ]]; then reason='no static archive'; else if [[ ! -n $(sed -nre "s/^(dependency_libs|inherited_linker_flags)='(.*)'$/\2/p" "${f}") ]]; then reason='no libs & flags'; else if [[ ! -n ${pkgconfig_scanned} ]]; then local pc_libs=(); if [[ ! -n ${removing_all} ]]; then local pc; local tf=${T}/prune-lt-files.pc; local pkgconf=$(tc-getPKG_CONFIG); while IFS= read -r -d '' pc; do local arg libs; if ${pkgconf} --exists "${pc}" &> /dev/null; then sed -e '/^Requires:/d' "${pc}" > "${tf}"; libs=$(${pkgconf} --libs "${tf}"); else libs=$(sed -ne 's/^Libs://p' "${pc}"); fi; for arg in ${libs}; do if [[ ${arg} == -l* ]]; then if [[ ${arg} == '*$*' ]]; then eqawarn "${FUNCNAME}: variable substitution likely failed in ${pc}"; eqawarn "(arg: ${arg})"; eqawarn "Most likely, you need to add virtual/pkgconfig to DEPEND."; fi; pc_libs+=(lib${arg#-l}.la); fi; done; done < <(find "${D}" -type f -name '*.pc' -print0); rm -f "${tf}"; fi; pkgconfig_scanned=1; fi; has "${f##*/}" "${pc_libs[@]}" && reason='covered by .pc'; fi; fi; fi; fi; if [[ -n ${reason} ]]; then einfo "Removing unnecessary ${f#${D%/}} (${reason})"; queue+=("${f}"); fi; done < <(find "${ED}" -xtype f -name '*.la' -print0); if [[ -n ${queue[@]} ]]; then rm -f "${queue[@]}"; fi } raw-ldflags () { local x input="$@"; [[ -z ${input} ]] && input=${LDFLAGS}; set --; for x in ${input}; do case ${x} in -Wl,*) x=${x#-Wl,}; set -- "$@" ${x//,/ } ;; *) ;; esac; done; echo "$@" } 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 ]] && die "Usage: replace-flags "; local f var new; for var in $(all-flag-vars); do new=(); for f in ${!var}; do [[ ${f} == ${1} ]] && f=${2}; new+=("${f}"); done; eval export ${var}=\""${new[*]}"\"; 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 $? } setup-allowed-flags () { ALLOWED_FLAGS="-pipe"; ALLOWED_FLAGS+=" -O -O1 -O2 -Os -Og -mcpu -march -mtune"; ALLOWED_FLAGS+=" -fstack-protector* -fsanitize=*"; ALLOWED_FLAGS+=" -fbounds-check -fbounds-checking -fno-strict-overflow"; ALLOWED_FLAGS+=" -fno-PIE -fno-pie -nopie -fno-unit-at-a-time"; ALLOWED_FLAGS+=" -g -g[0-9] -ggdb -ggdb[0-9] -gdwarf-* gstabs -gstabs+"; ALLOWED_FLAGS+=" -fno-ident -fpermissive -frecord-gcc-switches"; ALLOWED_FLAGS+=" -fdiagnostics*"; ALLOWED_FLAGS+=" -W* -w"; ALLOWED_FLAGS+=" -fno-stack-protector* -fabi-version=* -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer -fno-builtin*"; 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 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -mfloat-abi -mfix-r10000 -mno-fix-r10000 -D* -U*"; ALLOWED_FLAGS+=" -mno-fma4 -mno-movbe -mno-xop -mno-lwp"; ALLOWED_FLAGS+=" -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm"; ALLOWED_FLAGS+=" -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt"; ALLOWED_FLAGS+=" -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt"; ALLOWED_FLAGS+=" -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha"; ALLOWED_FLAGS+=" -I* -L* -R* -Wl,*"; export ALLOWED_FLAGS; return 0 } src_compile () { kde4-base_src_compile "$@" } src_configure () { mycmakeargs=(-DK3B_BUILD_API_DOCS=OFF -DK3B_BUILD_K3BSETUP=OFF -DK3B_BUILD_WAVE_DECODER_PLUGIN=ON -DK3B_ENABLE_HAL_SUPPORT=OFF -DK3B_ENABLE_MUSICBRAINZ=OFF $(cmake-utils_use debug K3B_DEBUG) $(cmake-utils_use dvd K3B_ENABLE_DVD_RIPPING) $(cmake-utils_use encode K3B_BUILD_EXTERNAL_ENCODER_PLUGIN) $(cmake-utils_use ffmpeg K3B_BUILD_FFMPEG_DECODER_PLUGIN) $(cmake-utils_use flac K3B_BUILD_FLAC_DECODER_PLUGIN) $(cmake-utils_use mp3 K3B_BUILD_LAME_ENCODER_PLUGIN) $(cmake-utils_use mad K3B_BUILD_MAD_DECODER_PLUGIN) $(cmake-utils_use musepack K3B_BUILD_MUSE_DECODER_PLUGIN) $(cmake-utils_use sndfile K3B_BUILD_SNDFILE_DECODER_PLUGIN) $(cmake-utils_use sox K3B_BUILD_SOX_ENCODER_PLUGIN) $(cmake-utils_use taglib K3B_ENABLE_TAGLIB) $(cmake-utils_use vorbis K3B_BUILD_OGGVORBIS_DECODER_PLUGIN) $(cmake-utils_use vorbis K3B_BUILD_OGGVORBIS_ENCODER_PLUGIN)); kde4-base_src_configure } src_install () { kde4-base_src_install "$@" } src_prepare () { kde4-base_src_prepare "$@" } src_test () { kde4-base_src_test "$@" } src_unpack () { kde4-base_src_unpack "$@" } strip-flags () { local x y var; setup-allowed-flags; set -f; for var in $(all-flag-vars); do local new=(); for x in ${!var}; do local flag=${x%%=*}; for y in ${ALLOWED_FLAGS}; do if [[ -z ${flag%%${y}} ]]; then new+=("${x}"); break; fi; done; done; if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then new+=(-O2); fi; if [[ ${!var} != "${new[*]}" ]]; then einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'"; fi; eval export ${var}=\""${new[*]}"\"; done; set +f; 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} ]] && einfo "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 aarch64*be) echo big ;; aarch64) echo little ;; 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*le) echo little ;; powerpc*) echo big ;; s390*) echo big ;; sh*b*) echo big ;; sh*) echo little ;; sparc*) echo big ;; x86_64*) echo little ;; *) echo wtf ;; esac } tc-env_build () { tc-export_build_env; CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@" } 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-export_build_env () { tc-export "$@"; : ${BUILD_CFLAGS:=-O1 -pipe}; : ${BUILD_CXXFLAGS:=-O1 -pipe}; : ${BUILD_CPPFLAGS:= }; : ${BUILD_LDFLAGS:= }; export BUILD_{C,CXX,CPP,LD}FLAGS; local v; for v in BUILD_{C,CXX,CPP,LD}FLAGS; do export ${v#BUILD_}_FOR_BUILD="${!v}"; done } tc-getAR () { tc-getPROG AR ar "$@" } tc-getAS () { tc-getPROG AS as "$@" } tc-getBUILD_AR () { tc-getBUILD_PROG AR ar "$@" } tc-getBUILD_AS () { tc-getBUILD_PROG AS as "$@" } tc-getBUILD_CC () { tc-getBUILD_PROG CC gcc "$@" } tc-getBUILD_CPP () { tc-getBUILD_PROG CPP cpp "$@" } tc-getBUILD_CXX () { tc-getBUILD_PROG CXX g++ "$@" } tc-getBUILD_LD () { tc-getBUILD_PROG LD ld "$@" } tc-getBUILD_NM () { tc-getBUILD_PROG NM nm "$@" } tc-getBUILD_OBJCOPY () { tc-getBUILD_PROG OBJCOPY objcopy "$@" } tc-getBUILD_PKG_CONFIG () { tc-getBUILD_PROG PKG_CONFIG pkg-config "$@" } tc-getBUILD_PROG () { _tc-getPROG CBUILD "BUILD_$1 $1_FOR_BUILD HOST$1" "${@:2}" } tc-getBUILD_RANLIB () { tc-getBUILD_PROG RANLIB ranlib "$@" } tc-getBUILD_STRIP () { tc-getBUILD_PROG STRIP strip "$@" } 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-getGO () { tc-getPROG GO gccgo "$@" } tc-getLD () { tc-getPROG LD ld "$@" } tc-getNM () { tc-getPROG NM nm "$@" } tc-getOBJCOPY () { tc-getPROG OBJCOPY objcopy "$@" } tc-getOBJDUMP () { tc-getPROG OBJDUMP objdump "$@" } tc-getPKG_CONFIG () { tc-getPROG PKG_CONFIG pkg-config "$@" } tc-getPROG () { _tc-getPROG CHOST "$@" } 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 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 () { [[ ${CBUILD:-${CHOST}} != ${CHOST} ]] } tc-is-softfloat () { local CTARGET=${CTARGET:-${CHOST}}; case ${CTARGET} in bfin* | h8300*) echo "only" ;; *) if [[ ${CTARGET//_/-} == *-softfloat-* ]]; then echo "yes"; else if [[ ${CTARGET//_/-} == *-softfp-* ]]; then echo "softfp"; else echo "no"; fi; fi ;; esac } tc-is-static-only () { local host=${CTARGET:-${CHOST}}; [[ ${host} == *-mint* ]] } tc-ld-disable-gold () { if ! tc-ld-is-gold "$@"; then return; fi; ewarn "Forcing usage of the BFD linker instead of GOLD"; local ld=$(tc-getLD "$@"); local bfd_ld="${ld%% *}.bfd"; local path_ld=$(which "${bfd_ld}" 2>/dev/null); [[ -e ${path_ld} ]] && export LD=${bfd_ld}; local major=$(gcc-major-version "$@"); local minor=$(gcc-minor-version "$@"); if [[ ${major} -lt 4 ]] || [[ ${major} -eq 4 && ${minor} -lt 8 ]]; then if [[ -e ${path_ld} ]]; then local d="${T}/bfd-linker"; mkdir -p "${d}"; ln -sf "${path_ld}" "${d}"/ld; export LDFLAGS="${LDFLAGS} -B${d}"; else die "unable to locate a BFD linker to bypass gold"; fi; else export LDFLAGS="${LDFLAGS} -fuse-ld=bfd"; fi } tc-ld-is-gold () { local out; out=$($(tc-getLD "$@") --version 2>&1); if [[ ${out} == *"GNU gold"* ]]; then return 0; fi; local base="${T}/test-tc-gold"; cat > "${base}.c" <<-EOF int main() { return 0; } EOF out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1); rm -f "${base}"*; if [[ ${out} == *"GNU gold"* ]]; then return 0; fi; return 1 } tc-ninja_magic_to_arch () { function ninj () { [[ ${type} == "kern" ]] && echo $1 || echo $2 }; local type=$1; local host=$2; [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; local KV=${KV:-${KV_FULL}}; [[ ${type} == "kern" ]] && [[ -z ${KV} ]] && ewarn "QA: Kernel version could not be determined, please inherit kernel-2 or linux-info"; case ${host} in aarch64*) echo arm64 ;; alpha*) echo alpha ;; arm*) echo arm ;; avr*) ninj avr32 avr ;; bfin*) ninj blackfin bfin ;; c6x*) echo c6x ;; cris*) echo cris ;; frv*) echo frv ;; hexagon*) echo hexagon ;; 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 ;; metag*) echo metag ;; microblaze*) echo microblaze ;; mips*) echo mips ;; nios2*) echo nios2 ;; nios*) echo nios ;; or32*) echo openrisc ;; 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 ;; riscv*) echo riscv ;; s390*) echo s390 ;; score*) echo score ;; sh64*) ninj sh64 sh ;; sh*) echo sh ;; sparc64*) ninj sparc64 sparc ;; sparc*) [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc ;; tile*) echo tile ;; 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 ;; xtensa*) echo xtensa ;; *) echo unknown ;; esac } test-flag-CC () { test-flag-PROG "CC" c "$1" } test-flag-CXX () { test-flag-PROG "CXX" c++ "$1" } test-flag-F77 () { test-flag-PROG "F77" f77 "$1" } test-flag-FC () { test-flag-PROG "FC" f95 "$1" } test-flag-PROG () { local comp=$1; local lang=$2; local flag=$3; [[ -z ${comp} || -z ${flag} ]] && return 1; local cmdline=($(tc-get${comp}) -Werror -c -o /dev/null); if "${cmdline[@]}" -x${lang} - < /dev/null > /dev/null 2>&1; then "${cmdline[@]}" "${flag}" -x${lang} - < /dev/null > /dev/null 2>&1; else "${cmdline[@]}" "${flag}" -c -o /dev/null /dev/null > /dev/null 2>&1; fi } 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; for x in "$@"; do test-flag-${comp} "${x}" && flags+=("${x}"); done; echo "${flags[*]}"; [[ ${#flags[@]} -gt 0 ]] } test_version_info () { if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then return 0; else return 1; fi } use_if_iuse () { in_iuse $1 || return 1; use $1 } validate_desktop_entries () { _eutils_eprefix_init; if [[ -x "${EPREFIX}"/usr/bin/desktop-file-validate ]]; then einfo "Checking desktop entry validity"; local directories=""; for d in /usr/share/applications $@; do [[ -d ${ED}${d} ]] && directories="${directories} ${ED}${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/${ED}/}:}; 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 1280x1024x24"; 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} \"$@\""; if has "${EAPI}" 2 3; then ${VIRTUALX_COMMAND} "$@"; retval=$?; else nonfatal ${VIRTUALX_COMMAND} "$@"; retval=$?; fi; 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 }