* [gentoo-amd64] Failures on updating KDE to 4.4.1 - unable to update kmail
@ 2010-03-08 10:12 Paul Stear
2010-03-08 10:12 ` Paul Stear
2010-03-08 16:54 ` [gentoo-amd64] " Duncan
0 siblings, 2 replies; 10+ messages in thread
From: Paul Stear @ 2010-03-08 10:12 UTC (permalink / raw
To: gentoo-amd64
[-- Attachment #1: Type: text/plain, Size: 5950 bytes --]
SORRY FORGOT TO ADD THE ATTACHMENTS.
Hi,
I have been trying for days to get my kde system working again properly.
kmail hasn't been updated yet because kdepim-runtime-4.4.1 fails with the
following error:-
-----------------------------------------------------------------------------
-- The following REQUIRED packages could NOT be located on your system.
-- You must install these packages before continuing.
-----------------------------------------------------------------------------
* Nepomuk <http://www.kde.org>
The Nepomuk libraries
Nepomuk extends the search and tagging functionalities in KMail and
Akonadi
-----------------------------------------------------------------------------
CMake Error at /usr/share/apps/cmake/modules/MacroLogFeature.cmake:141
(MESSAGE):
Exiting: Missing Requirements
Call Stack (most recent call first):
CMakeLists.txt:128 (macro_display_feature_log)
I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems that
kdepim can not find it.
I attach the complete build log and the output of 'emerge -pqv
=kde-base/kdepim-runtime-4.4.1
and The ebuild environment file is located at
'/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/temp/environment
The following is emerge info:
~/ > emerge --info =kde-base/kdepim-runtime-4.4.1
Portage 2.1.8.1 (default/linux/amd64/10.0/desktop, gcc-4.3.4,
glibc-2.11-r1, 2.6.32-gentoo-r1 x86_64)
=================================================================
System Settings
=================================================================
System uname:
Linux-2.6.32-gentoo-r1-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_4600+-with-gentoo-2.0.1
Timestamp of tree: Mon, 08 Mar 2010 07:00:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 4.1_p2
dev-java/java-config: 2.1.10
dev-lang/python: 2.6.4-r1, 3.1.1-r1
dev-util/ccache: 2.4-r8
dev-util/cmake: 2.8.0-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc: 0.6.0-r1
sys-apps/sandbox: 2.2
sys-devel/autoconf: 2.13, 2.65
sys-devel/automake: 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils: 2.20.1
sys-devel/gcc: 4.3.4, 4.4.3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool: 2.2.6b
virtual/os-headers: 2.6.33
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe
-fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/
/etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/java-config/vms/
/etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo
/etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d
/etc/texmf/web2c"
CXXFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe
-fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps y"
FEATURES="assume-digests ccache distlocks fixpackages metadata-transfer
news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs
unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org
http://www.ibiblio.org/pub/Linux/distributions/gentoo
http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/
ftp://mirror.qubenet.net/mirror/gentoo/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo
http://pandemonium.tiscali.de/pub/gentoo/"
LANG="en_GB.UTF-8"
LDFLAGS="-Wl,--as-needed,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
LINGUAS="en_GB"
MAKEOPTS="-j5 -s"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times
--compress --force --whole-file --delete --stats --timeout=180
--exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext X a52 aac acl acpi alsa amd64 avi bash-completion
berkdb bluetooth branding bzip2 cairo cdparanoia cdr clamav cli consolekit
cracklib crypt cups cxx dbus divx divx4linux dri dts dv dvb dvd dvdr
dvdread eds embedded emboss encode evo examples fam ffmpeg flac fortran
gdbm gif gphoto2 gpm gstreamer hal iconv imagemagick ipv6 jack java java6
javascript jpeg kde kerberos lame ldap libnotify lm_sensors logrotate mad
mikmod mjpeg mmx mng modules mp3 mp4 mpeg mplayer mudflap multilib mysql
ncurses nls nptl nptlonly nsplugin nvidia ogg opengl openmp pam pascal
pcre pdf perl png ppds pppd python qt3support qt4 quicktime readline
reflection ruby samba scanner sdl session spell spl sql sqlite sse sse2
ssl startup-notification svg sysfs tcpd theora thunar tiff tk truetype
unicode usb v4l vorbis webkit x264 xcomposite xine xinerama xml xml2 xorg
xulrunner xv xvid zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm
alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug
ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route
share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias
authn_anon authn_dbm authn_default authn_file authz_dbm authz_default
authz_groupfile authz_host authz_owner authz_user autoindex cache 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" ELIBC="glibc" INPUT_DEVICES="evdev wacom" KERNEL="linux"
LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb
ncurses text" LINGUAS="en_GB" RUBY_TARGETS="ruby18" USERLAND="GNU"
VIDEO_CARDS="nvidia"
Unset: CPPFLAGS, CTARGET, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS,
PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Any ideas? I just don't know what to try next.
regards
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
[-- Attachment #2: kde-base:kdepim-runtime-4.4.1:20100308-095959.log --]
[-- Type: application/octet-stream, Size: 7179 bytes --]
[-- Attachment #3: environment --]
[-- Type: application/octet-stream, Size: 145058 bytes --]
declare -x ABI="amd64"
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare -- BASE_EXPF="src_unpack src_compile src_install src_prepare src_configure"
declare -x BUILD_TYPE="release"
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CDEFINE_amd64="__x86_64__"
declare -x CDEFINE_default="__unix__"
declare -x CDEFINE_x86="__i386__"
declare -x CFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe -fomit-frame-pointer"
declare -x CFLAGS_default=""
declare -x CFLAGS_x86="-m32"
declare -x CHOST="x86_64-pc-linux-gnu"
declare -x CHOST_amd64="x86_64-pc-linux-gnu"
declare -x CHOST_default="x86_64-pc-linux-gnu"
declare -x CHOST_x86="i686-pc-linux-gnu"
declare -- CMAKE_BUILD_TYPE="Gentoo"
declare -- CMAKE_EXPF="src_compile src_test src_install src_configure"
declare -- CMAKE_REQUIRED="always"
declare -x COLORFGBG="15;0"
declare -- CPPUNIT_REQUIRED="never"
declare -x CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe -fomit-frame-pointer"
declare -x DEFAULT_ABI="amd64"
declare -- DEFINED_PHASES=" compile configure install postinst postrm prepare setup test unpack"
declare -- DEPEND="
app-misc/strigi
>=app-office/akonadi-server-1.2.1
dev-libs/boost
dev-libs/libxml2:2
dev-libs/libxslt
!kdeprefix? ( >=kde-base/kdelibs-4.4.1[aqua=,-kdeprefix,semantic-desktop] )
kdeprefix? ( >=kde-base/kdelibs-4.4.1:4.4[aqua=,kdeprefix,semantic-desktop] )
!kdeprefix? ( >=kde-base/kdepimlibs-4.4.1[aqua=,-kdeprefix,akonadi] )
kdeprefix? ( >=kde-base/kdepimlibs-4.4.1:4.4[aqua=,kdeprefix,akonadi] )
!kdeprefix? ( >=kde-base/libkdepim-4.4.1[aqua=,-kdeprefix] )
kdeprefix? ( >=kde-base/libkdepim-4.4.1:4.4[aqua=,kdeprefix] )
x11-misc/shared-mime-info
>=dev-util/cmake-2.6.2-r1 userland_GNU? ( >=sys-apps/findutils-4.4.0 )
dev-util/pkgconfig
!aqua? (
|| ( >=x11-libs/libXtst-1.1.0 <x11-proto/xextproto-7.1.0 )
x11-proto/xf86vidmodeproto
)
dev-lang/perl
>=x11-libs/qt-core-4.6.0:4[qt3support,ssl]
>=x11-libs/qt-gui-4.6.0:4[accessibility,dbus]
>=x11-libs/qt-qt3support-4.6.0:4[accessibility,kde]
>=x11-libs/qt-script-4.6.0:4
>=x11-libs/qt-sql-4.6.0:4[qt3support]
>=x11-libs/qt-svg-4.6.0:4
>=x11-libs/qt-test-4.6.0:4
!aqua? (
x11-libs/libXext
x11-libs/libXt
x11-libs/libXxf86vm
)
!kdeprefix? ( >=kde-base/kdelibs-4.4.1[aqua=,-kdeprefix] )
kdeprefix? ( >=kde-base/kdelibs-4.4.1:4.4[aqua=,kdeprefix] )"
declare -- DESCRIPTION="KDE PIM runtime plugin collection"
declare -x DESKTOP_SESSION="default"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x DM_CONTROL="/var/run/xdmctl"
declare -x EAPI="3"
declare -- EKDEDIR="/usr"
declare -x ELIBC="glibc"
declare -- EPATCH_EXCLUDE=""
declare -- EPATCH_FORCE="no"
declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
declare -- EPATCH_OPTS="-g0 -E --no-backup-if-mismatch"
declare -- EPATCH_SINGLE_MSG=""
declare -- EPATCH_SOURCE="/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/work/patch"
declare -- EPATCH_SUFFIX="patch.bz2"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="assume-digests ccache distlocks fixpackages metadata-transfer news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.1.10/html"
declare -x GDK_USE_XFT="1"
declare -x GS_LIB="/home/paul/.fonts"
declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/paul/.gtkrc-2.0::/home/paul/.kde4/share/config/gtkrc-2.0"
declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/paul/.gtkrc::/home/paul/.kde4/share/config/gtkrc"
declare -x HISTCONTROL="ignoredups"
declare -x HISTFILESIZE="1000"
declare -x HISTSIZE="1000"
declare -- HOMEPAGE="http://www.kde.org/"
declare -x INHERITED="toolchain-funcs kde4-base portability flag-o-matic versionator multilib kde4-functions base cmake-utils eutils"
declare -x INPUT_DEVICES="evdev wacom"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -- IUSE="debug kdeprefix aqua kdeenablefinal"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVACC_HOME="/usr/share/javacc/"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -- KDEBASE="kde-base"
declare -- KDEDIR="/usr"
declare -x KDEDIRS="/usr"
declare -x KDESU_USER="paul"
declare -a KDE_LIVE_SLOTS='([0]="live")'
declare -- KDE_MINIMAL="4.4"
declare -- KDE_MINIMAL_VALID="1"
declare -x KDE_MULTIHEAD="false"
declare -- KDE_REQUIRED="always"
declare -x KDE_SESSION_UID="1000"
declare -x KDE_SESSION_VERSION="4"
declare -a KDE_SLOTS='([0]="4.1" [1]="4.2" [2]="4.3" [3]="4.4" [4]="4.5")'
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
declare -x KONSOLE_DBUS_SERVICE=":1.0"
declare -x KONSOLE_DBUS_SESSION="/Sessions/1"
declare -x KV="2.6.32-gentoo-r1"
declare -x LADSPA_PATH="/usr/lib64/ladspa"
declare -x LANG="en_GB.UTF-8"
declare -x LANGUAGE=""
declare -x LCD_DEVICES=""
declare -x LDFLAGS="-Wl,--as-needed,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
declare -x LDFLAGS_default=""
declare -x LDFLAGS_x86="-m elf_i386"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_amd64_fbsd="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc="lib32"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBDIR_sparc32="lib32"
declare -x LIBDIR_sparc64="lib64"
declare -x LIBDIR_x86="lib32"
declare -x LIBDIR_x86_fbsd="lib32"
declare -x LIBOPTIONS="-m0644"
declare -x LICENSE="GPL-2"
declare -x LINGUAS="en_GB"
declare -x MAKEOPTS="-j5 -s"
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)"
declare -- MULTIMEDIA_REQUIRED="never"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x OPENGL_PROFILE="xorg-x11"
declare -- OPENGL_REQUIRED="never"
declare -x PATH="/usr/lib/ccache/bin:/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.4"
declare -- PDEPEND=" "
declare -x PKG_CONFIG_PATH="/usr/lib64/pkgconfig"
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png"
declare -- PREFIX="/usr"
declare -x PRELINK_PATH_MASK="/usr/lib64/klibc"
declare -x PROFILEHOME=""
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND"
declare -x PROPERTIES=""
declare -x PROVIDE=""
declare -x PYTHONDOCS="/usr/share/doc/python-docs-2.6.2-r1/html/library"
declare -x PYTHONDOCS_2_6="/usr/share/doc/python-docs-2.6.2-r1/html/library"
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -- QT_MINIMAL="4.6.0"
declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins/"
declare -x RDEPEND="
app-misc/strigi
>=app-office/akonadi-server-1.2.1
dev-libs/boost
dev-libs/libxml2:2
dev-libs/libxslt
!kdeprefix? ( >=kde-base/kdelibs-4.4.1[aqua=,-kdeprefix,semantic-desktop] )
kdeprefix? ( >=kde-base/kdelibs-4.4.1:4.4[aqua=,kdeprefix,semantic-desktop] )
!kdeprefix? ( >=kde-base/kdepimlibs-4.4.1[aqua=,-kdeprefix,akonadi] )
kdeprefix? ( >=kde-base/kdepimlibs-4.4.1:4.4[aqua=,kdeprefix,akonadi] )
!kdeprefix? ( >=kde-base/libkdepim-4.4.1[aqua=,-kdeprefix] )
kdeprefix? ( >=kde-base/libkdepim-4.4.1:4.4[aqua=,kdeprefix] )
x11-misc/shared-mime-info
!kdeprefix? ( >=kde-base/kdepim-icons-4.4.1[aqua=,-kdeprefix] )
kdeprefix? ( >=kde-base/kdepim-icons-4.4.1:4.4[aqua=,kdeprefix] )
!kdeprefix? ( !kde-base/akonadi:4.1[-kdeprefix] )
!kdeprefix? ( !kde-base/akonadi:4.2[-kdeprefix] )
!kdeprefix? ( !kde-base/akonadi:4.3[-kdeprefix] )
!<kde-base/akonadi-4.3.90:4.4 !kdeprefix? ( !kde-base/kdepim-runtime:4.1[-kdeprefix] )
!kdeprefix? ( !kde-base/kdepim-runtime:4.2[-kdeprefix] )
!kdeprefix? ( !kde-base/kdepim-runtime:4.3[-kdeprefix] )
!kdeprefix? ( !kde-base/kdepim-runtime:4.5[-kdeprefix] )
!kdeprefix? ( !kde-base/kdepim-runtime:live[-kdeprefix] )
dev-lang/perl
>=x11-libs/qt-core-4.6.0:4[qt3support,ssl]
>=x11-libs/qt-gui-4.6.0:4[accessibility,dbus]
>=x11-libs/qt-qt3support-4.6.0:4[accessibility,kde]
>=x11-libs/qt-script-4.6.0:4
>=x11-libs/qt-sql-4.6.0:4[qt3support]
>=x11-libs/qt-svg-4.6.0:4
>=x11-libs/qt-test-4.6.0:4
!aqua? (
x11-libs/libXext
x11-libs/libXt
x11-libs/libXxf86vm
)
!kdeprefix? ( >=kde-base/kdelibs-4.4.1[aqua=,-kdeprefix] )
kdeprefix? ( >=kde-base/kdelibs-4.4.1:4.4[aqua=,kdeprefix] )"
declare -x RESTRICT=""
declare -x RUBYOPT="-rauto_gem"
declare -x RUBY_TARGETS=""
declare -x R_HOME="/usr/lib64/R"
declare -x S="/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/work/kdepim-runtime-4.4.1"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PID="6819"
declare -x SANDBOX_PREDICT="/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/homedir:/dev/crypto:/var/cache/fontconfig"
declare -x SANDBOX_READ="/:/dev/stdin:/var/tmp:/var/tmp/ccache"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/homedir/.bash_history"
declare -x SANE_CONFIG_DIR="/etc/sane.d"
declare -x SLOT="4.4"
declare -- SRC_URI="mirror://kde/stable/4.4.1/src/kdepim-runtime-4.4.1.tar.bz2"
declare -x STAGE1_USE="multilib nptl nptlonly unicode"
declare -x STRIGI_PLUGIN_PATH="/usr/lib64/strigi:"
declare -x SYMLINK_LIB="yes"
declare -x USB_DEVFS_PATH="/dev/bus/usb"
declare -x USE="amd64 elibc_glibc kernel_linux multilib userland_GNU"
declare -x USERLAND="GNU"
declare -x VIDEO_CARDS=""
declare -- WANT_CMAKE="always"
declare -- WEBKIT_REQUIRED="never"
declare -x WINDOWID="54525989"
declare -x WINDOWPATH="7"
declare -x XCURSOR_THEME="Oxygen_Black"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_CONFIG_HOME="/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/temp"
declare -x XDG_DATA_DIRS="/usr/share:/usr/local/share:/usr/share"
declare -x XDG_SESSION_COOKIE="14c6119df954357e78fc020045b776d5-1268032892.316736-440498668"
declare -x XDM_MANAGED="method=classic"
declare -- _="PKG_INSTALL_MASK"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -- ___ECLASS_RECUR_MULTILIB="yes"
declare -- ___ECLASS_RECUR_TOOLCHAIN_FUNCS="yes"
declare -- conf="kdepim-runtime-4.4.1-r0"
declare -- filter_opts=""
declare -- str="base_src_prepare: entering function"
__versionator__test_version_compare ()
{
__versionator_shopt_toggle on;
local lt=1 eq=2 gt=3 p q;
function __versionator__test_version_compare_t ()
{
version_compare "${1}" "${3}";
local r=$?;
[[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})"
};
echo "
0 $lt 1
1 $lt 2
2 $gt 1
2 $eq 2
0 $eq 0
10 $lt 20
68 $eq 068
068 $gt 67
068 $lt 69
1.0 $lt 2.0
2.0 $eq 2.0
2.0 $gt 1.0
1.0 $gt 0.0
0.0 $eq 0.0
0.0 $lt 1.0
0.1 $lt 0.2
0.2 $eq 0.2
0.3 $gt 0.2
1.2 $lt 2.1
2.1 $gt 1.2
1.2.3 $lt 1.2.4
1.2.4 $gt 1.2.3
1.2.0 $eq 1.2
1.2.1 $gt 1.2
1.2 $lt 1.2.1
1.2b $eq 1.2b
1.2b $lt 1.2c
1.2b $gt 1.2a
1.2b $gt 1.2
1.2 $lt 1.2a
1.3 $gt 1.2a
1.3 $lt 1.3a
1.0_alpha7 $lt 1.0_beta7
1.0_beta $lt 1.0_pre
1.0_pre5 $lt 1.0_rc2
1.0_rc2 $lt 1.0
1.0_p1 $gt 1.0
1.0_p1-r1 $gt 1.0_p1
1.0_alpha6-r1 $gt 1.0_alpha6
1.0_beta6-r1 $gt 1.0_alpha6-r2
1.0_pre1 $lt 1.0-p1
1.0p $gt 1.0_p1
1.0r $gt 1.0-r1
1.6.15 $gt 1.6.10-r2
1.6.10-r2 $lt 1.6.15
" | while read a b c; do
[[ -z "${a}${b}${c}" ]] && continue;
__versionator__test_version_compare_t "${a}" "${b}" "${c}";
done;
for q in "alpha beta pre rc=${lt};${gt}" "p r=${gt};${lt}";
do
for p in ${q%%=*};
do
local c=${q##*=};
local alt=${c%%;*} agt=${c##*;};
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}";
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}1";
__versionator__test_version_compare_t "1.0" $agt "1.0_${p}068";
__versionator__test_version_compare_t "2.0_${p}" $alt "2.0";
__versionator__test_version_compare_t "2.0_${p}1" $alt "2.0";
__versionator__test_version_compare_t "2.0_${p}068" $alt "2.0";
__versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}";
__versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1";
__versionator__test_version_compare_t "666_${p}3" $gt "666_${p}";
__versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8";
__versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7";
__versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6";
__versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9";
done;
done;
for p in "-r" "_p";
do
__versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2";
__versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1";
__versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2";
__versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3";
done;
__versionator_shopt_toggle off
}
__versionator_shopt_toggle ()
{
VERSIONATOR_RECURSION=${VERSIONATOR_RECURSION:-0};
case "$1" in
"on")
if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then
VERSIONATOR_OLD_EXTGLOB=$(shopt -p extglob);
shopt -s extglob;
fi;
VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION + 1 ))
;;
"off")
VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION - 1 ));
if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then
eval $VERSIONATOR_OLD_EXTGLOB;
fi
;;
esac;
return 0
}
_cdrom_locate_file_on_cd ()
{
local mline="";
local showedmsg=0 showjolietmsg=0;
while [[ -z ${CDROM_ROOT} ]]; do
local i=0;
local -a cdset=(${*//:/ });
if [[ -n ${CDROM_SET} ]]; then
cdset=(${cdset[${CDROM_SET}]});
fi;
while [[ -n ${cdset[${i}]} ]]; do
local dir=$(dirname ${cdset[${i}]});
local file=$(basename ${cdset[${i}]});
local point= node= fs= foo=;
while read point node fs foo; do
[[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
point=${point//\040/ };
[[ ! -d ${point}/${dir} ]] && continue;
[[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
export CDROM_ROOT=${point};
export CDROM_SET=${i};
export CDROM_MATCH=${cdset[${i}]};
return;
done <<< "$(get_mounts)";
((++i));
done;
echo;
if [[ ${showedmsg} -eq 0 ]]; then
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
if [[ -z ${CDROM_NAME} ]]; then
einfo "Please insert+mount the cdrom for ${PN} now !";
else
einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
fi;
else
if [[ -z ${CDROM_NAME_1} ]]; then
einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
else
local var="CDROM_NAME_${CDROM_CURRENT_CD}";
einfo "Please insert+mount the ${!var} cdrom now !";
fi;
fi;
showedmsg=1;
fi;
einfo "Press return to scan for the cd again";
einfo "or hit CTRL+C to abort the emerge.";
echo;
if [[ ${showjolietmsg} -eq 0 ]]; then
showjolietmsg=1;
else
ewarn "If you are having trouble with the detection";
ewarn "of your CD, it is possible that you do not have";
ewarn "Joliet support enabled in your kernel. Please";
ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
ebeep 5;
fi;
read || die "something is screwed with your system";
done
}
_check_build_dir ()
{
: ${CMAKE_USE_DIR:=${S}};
if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
CMAKE_BUILD_DIR="${CMAKE_USE_DIR}";
else
if [[ ${CMAKE_USE_DIR} = ${WORKDIR} ]]; then
CMAKE_BUILD_DIR="${CMAKE_USE_DIR}/build";
else
[[ ${1} = init || -d ${CMAKE_USE_DIR}_build ]] && SUF="_build" || SUF="";
CMAKE_BUILD_DIR="${CMAKE_USE_DIR}${SUF}";
fi;
fi;
echo ">>> Working in BUILD_DIR: \"$CMAKE_BUILD_DIR\""
}
_do_blocker ()
{
debug-print-function ${FUNCNAME} "$@";
[[ -z ${1} ]] && die "Missing parameter";
local pkg=kde-base/$1;
shift;
local param slot def="unset" var atom;
for slot in 3.5 ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]};
do
local block_${slot//./_}="unset";
done;
for param in "$@";
do
if [[ ${param/:} == ${param} ]]; then
def=${param};
else
slot=${param#*:};
local block_${slot//./_}=${param%:*};
fi;
done;
for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]};
do
var=block_${slot//./_};
[[ ${!var} == "unset" ]] && var=def;
if [[ ${!var} == "unset" ]] || [[ -z ${!var} ]] || _greater_max_in_slot ${!var#<} ${slot}; then
atom=${pkg};
else
if [[ ${!var} == "0" ]] || _less_min_in_slot ${!var#<} ${slot}; then
continue;
else
if [[ ${!var:0:1} == "<" ]]; then
atom="<${pkg}-${!var:1}";
else
atom="<=${pkg}-${!var}";
fi;
fi;
fi;
if [[ ${SLOT} == ${slot} ]]; then
echo " !${atom}:${slot}";
else
echo " !kdeprefix? ( !${atom}:${slot}[-kdeprefix] )";
fi;
done;
if [[ ${block_3_5} != "unset" && ${block_3_5} != "0" ]]; then
if [[ -z ${block_3_5} ]]; then
atom=${pkg};
else
if [[ ${block_3_5:0:1} == "<" ]]; then
atom="<${pkg}-${block_3_5:1}";
else
atom="<=${pkg}-${block_3_5}";
fi;
fi;
echo " !${atom}:3.5";
fi
}
_execute_optionaly ()
{
local phase="$1";
shift;
if [[ ${WANT_CMAKE} = always ]]; then
enable_cmake-utils_${phase} "$@";
else
use ${WANT_CMAKE} && enable_cmake-utils_${phase} "$@";
fi
}
_filter-hardened ()
{
local f;
for f in "$@";
do
case "${f}" in
-fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
gcc-specs-pie || continue;
is-flagq -nopie || append-flags -nopie
;;
-fstack-protector)
gcc-specs-ssp || continue;
is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
;;
-fstack-protector-all)
gcc-specs-ssp-to-all || continue;
is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
;;
-fno-strict-overflow)
gcc-specs-nostrict || continue;
is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
;;
esac;
done
}
_filter-var ()
{
local f x VAR VAL;
declare -a new;
VAR=$1;
shift;
eval VAL=\${${VAR}};
for f in ${VAL};
do
for x in "$@";
do
[[ ${f} == ${x} ]] && continue 2;
done;
eval new\[\${\#new\[@]}]=\${f};
done;
eval export ${VAR}=\${new\[*]}
}
_gcc-install-dir ()
{
echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw ()
{
local cc=$(tc-getCC);
local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 }
$1=="*"directive":" { pspec=spec; spec=""; outside=0; next }
outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
{ spec=spec $0 }
END { print spec }';
return 0
}
_gcc-specs-exists ()
{
[[ -f $(_gcc-install-dir)/$1 ]]
}
_greater_max_in_slot ()
{
local ver=$1;
local slot=$2;
[[ $slot == live ]] && return 1;
local test=${slot}.50;
version_compare $1 ${test};
(( $? != 1 ))
}
_is_flagq ()
{
local x;
for x in ${!1};
do
[[ ${x} == $2 ]] && return 0;
done;
return 1
}
_less_min_in_slot ()
{
local ver=$1;
local slot=$2;
local test=9999_pre;
[[ $slot != live ]] && test=${slot%.*}.$((${slot#*.} - 1)).50;
version_compare $1 ${test};
(( $? != 3 ))
}
_modify-cmakelists ()
{
debug-print-function ${FUNCNAME} "$@";
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_INSTALL_PREFIX.*)/{s/^/#IGNORE /g}' {} + || die "${LINENO}: failed to disable hardcoded settings";
cat >> CMakeLists.txt <<-_EOF_
MESSAGE(STATUS "<<< Gentoo configuration >>>
Build type: \${CMAKE_BUILD_TYPE}
Install path: \${CMAKE_INSTALL_PREFIX}\n")
_EOF_
}
_unpack_tar ()
{
if [ "${y}" == "tar" ]; then
$1 -dc "$srcdir$x" | tar xof -;
assert "$myfail";
else
$1 -dc "${srcdir}${x}" > ${x%.*} || die "$myfail";
fi
}
_use_me_now ()
{
debug-print-function ${FUNCNAME} "$@";
local uper capitalised x;
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
if [[ ! -z $3 ]]; then
echo "-D$1$3=$(use $2 && echo ON || echo OFF)";
else
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
for x in $2 $uper $capitalised;
do
echo "-D$1$x=$(use $2 && echo ON || echo OFF) ";
done;
fi
}
_use_me_now_inverted ()
{
debug-print-function ${FUNCNAME} "$@";
local uper capitalised x;
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
if [[ ! -z $3 ]]; then
echo "-D$1$3=$(use $2 && echo OFF || echo ON)";
else
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
for x in $2 $uper $capitalised;
do
echo "-D$1$x=$(use $2 && echo OFF || echo ON) ";
done;
fi
}
add_blocker ()
{
debug-print-function ${FUNCNAME} "$@";
RDEPEND+=" $(_do_blocker "$@")"
}
add_kdebase_dep ()
{
debug-print-function ${FUNCNAME} "$@";
[[ -z ${1} ]] && die "Missing parameter";
local use=${2:+,${2}};
echo " !kdeprefix? ( >=kde-base/${1}-${PV}[aqua=,-kdeprefix${use}] )";
echo " kdeprefix? ( >=kde-base/${1}-${PV}:${SLOT}[aqua=,kdeprefix${use}] )"
}
append-cflags ()
{
[[ -z $* ]] && return 0;
export CFLAGS="${CFLAGS} $*";
return 0
}
append-cppflags ()
{
[[ -z $* ]] && return 0;
export CPPFLAGS="${CPPFLAGS} $*";
return 0
}
append-cxxflags ()
{
[[ -z $* ]] && return 0;
export CXXFLAGS="${CXXFLAGS} $*";
return 0
}
append-fflags ()
{
[[ -z $* ]] && return 0;
export FFLAGS="${FFLAGS} $*";
export FCFLAGS="${FCFLAGS} $*";
return 0
}
append-flags ()
{
[[ -z $* ]] && return 0;
append-cflags "$@";
append-cxxflags "$@";
append-fflags "$@";
return 0
}
append-ldflags ()
{
[[ -z $* ]] && return 0;
local flag;
for flag in "$@";
do
[[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
done;
export LDFLAGS="${LDFLAGS} $*";
return 0
}
append-lfs-flags ()
{
[[ -n $@ ]] && die "append-lfs-flags takes no arguments";
append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
base_src_compile ()
{
debug-print-function $FUNCNAME "$@";
has src_configure ${BASE_EXPF} || base_src_configure;
base_src_make $@
}
base_src_configure ()
{
debug-print-function $FUNCNAME "$@";
[[ -x ${ECONF_SOURCE:-.}/configure ]] && econf
}
base_src_install ()
{
debug-print-function $FUNCNAME "$@";
emake DESTDIR="${D}" $@ install || die "died running make install, $FUNCNAME:make";
base_src_install_docs
}
base_src_install_docs ()
{
debug-print-function $FUNCNAME "$@";
local x;
pushd "${S}" > /dev/null;
if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${DOCS[@]}";
do
debug-print "$FUNCNAME: docs: creating document from ${x}";
dodoc "${x}" || die "dodoc failed";
done;
fi;
if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${HTML_DOCS[@]}";
do
debug-print "$FUNCNAME: docs: creating html document from ${x}";
dohtml -r "${x}" || die "dohtml failed";
done;
fi;
popd > /dev/null
}
base_src_make ()
{
debug-print-function $FUNCNAME "$@";
if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
emake $@ || die "died running emake, $FUNCNAME:make";
fi
}
base_src_prepare ()
{
debug-print-function $FUNCNAME "$@";
debug-print "$FUNCNAME: PATCHES=$PATCHES";
local patches_failed=0;
pushd "${S}" > /dev/null;
if [[ "$(declare -p PATCHES 2>/dev/null 2>&1)" == "declare -a"* ]]; then
for x in "${PATCHES[@]}";
do
debug-print "$FUNCNAME: applying patch from ${x}";
if [[ -d "${x}" ]]; then
EPATCH_SUFFIX=${EPATCH_SUFFIX:=patch};
oldval=${EPATCH_SOURCE};
EPATCH_SOURCE=${x};
epatch;
EPATCH_SOURCE=${oldval};
else
if [[ -f "${x}" ]]; then
epatch "${x}";
else
ewarn "QA: File or directory \"${x}\" does not exist.";
ewarn "QA: Check your PATCHES array or add missing file/directory.";
patches_failed=1;
fi;
fi;
done;
[[ ${patches_failed} -eq 1 ]] && die "Some patches failed. See above messages.";
else
for x in ${PATCHES};
do
debug-print "$FUNCNAME: patching from ${x}";
epatch "${x}";
done;
fi;
debug-print "$FUNCNAME: applying user patches";
epatch_user;
popd > /dev/null
}
base_src_unpack ()
{
debug-print-function $FUNCNAME "$@";
pushd "${WORKDIR}" > /dev/null;
[[ -n "${A}" ]] && unpack ${A};
has src_prepare ${BASE_EXPF} || base_src_prepare;
popd > /dev/null
}
bashrc_has ()
{
[[ " ${*:2} " == *" $1 "* ]]
}
block_other_slots ()
{
debug-print-function ${FUNCNAME} "$@";
_do_blocker ${PN} 0:${SLOT}
}
buildsycoca ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${EAPI} == 2 ]] && ! use prefix; then
EROOT=${ROOT};
fi;
local KDE3DIR="${EROOT}usr/kde/3.5";
if [[ -z ${EROOT%%/} && -x "${KDE3DIR}"/bin/kbuildsycoca ]]; then
touch "${KDE3DIR}"/share/services/ksycoca;
chmod 644 "${KDE3DIR}"/share/services/ksycoca;
ebegin "Running kbuildsycoca to build global database";
XDG_DATA_DIRS="${EROOT}usr/local/share:${KDE3DIR}/share:${EROOT}usr/share" DISPLAY="" "${KDE3DIR}"/bin/kbuildsycoca --global --noincremental &>/dev/null;
eend $?;
fi;
for x in share/{config,kde4};
do
[[ ${KDEDIR} == /usr ]] && DIRS=${EROOT}usr || DIRS="${EROOT}usr ${EROOT}${KDEDIR}";
for y in ${DIRS};
do
[[ -d "${y}/${x}" ]] || break;
if [[ $(stat --format=%a "${y}/${x}") != 755 ]]; then
ewarn "QA Notice:";
ewarn "Package ${PN} is breaking ${y}/${x} permissions.";
ewarn "Please report this issue to gentoo bugzilla.";
einfo "Permissions will get adjusted automatically now.";
find "${y}/${x}" -type d -print0 | xargs -0 chmod 755;
fi;
done;
done
}
built_with_use ()
{
local hidden="no";
if [[ $1 == "--hidden" ]]; then
hidden="yes";
shift;
fi;
local missing_action="die";
if [[ $1 == "--missing" ]]; then
missing_action=$2;
shift;
shift;
case ${missing_action} in
true | false | die)
;;
*)
die "unknown action '${missing_action}'"
;;
esac;
fi;
local opt=$1;
[[ ${opt:0:1} = "-" ]] && shift || opt="-a";
local PKG=$(best_version $1);
[[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
shift;
local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE;
local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE;
if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "Unable to determine what USE flags $PKG was built with"
;;
esac;
fi;
if [[ ${hidden} == "no" ]]; then
local IUSE_BUILT=($(<"${IUSEFILE}"));
local expand;
for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
do
if [[ $1 == ${expand}_* ]]; then
expand="";
break;
fi;
done;
if [[ -n ${expand} ]]; then
if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "$PKG does not actually support the $1 USE flag!"
;;
esac;
fi;
fi;
fi;
local USE_BUILT=$(<${USEFILE});
while [[ $# -gt 0 ]]; do
if [[ ${opt} = "-o" ]]; then
has $1 ${USE_BUILT} && return 0;
else
has $1 ${USE_BUILT} || return 1;
fi;
shift;
done;
[[ ${opt} = "-a" ]]
}
cdrom_get_cds ()
{
local cdcnt=0;
local f=;
for f in "$@";
do
((++cdcnt));
export CDROM_CHECK_${cdcnt}="$f";
done;
export CDROM_TOTAL_CDS=${cdcnt};
export CDROM_CURRENT_CD=1;
if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then
local var=;
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CD_ROOT_${cdcnt}";
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
eerror "You must either use just the CD_ROOT";
eerror "or specify ALL the CD_ROOT_X variables.";
eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables.";
die "could not locate CD_ROOT_${cdcnt}";
fi;
done;
export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}};
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}";
export CDROM_SET=-1;
for f in ${CDROM_CHECK_1//:/ };
do
((++CDROM_SET));
[[ -e ${CD_ROOT}/${f} ]] && break;
done;
export CDROM_MATCH=${f};
return;
fi;
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}";
echo;
einfo "If you do not have the CD, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the variable CD_ROOT so that it points to the";
einfo "directory containing the files.";
echo;
einfo "For example:";
einfo "export CD_ROOT=/mnt/cdrom";
echo;
else
if [[ -n ${CDROM_NAME_SET} ]]; then
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}";
done;
fi;
einfo "This package will need access to ${CDROM_TOTAL_CDS} cds.";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CDROM_NAME_${cdcnt}";
[[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}";
done;
echo;
einfo "If you do not have the CDs, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the following variables so they point to the right place:";
einfon "";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
echo -n " CD_ROOT_${cdcnt}";
done;
echo;
einfo "Or, if you have all the files in the same place, or";
einfo "you only have one cdrom, you can export CD_ROOT";
einfo "and that place will be used as the same data source";
einfo "for all the CDs.";
echo;
einfo "For example:";
einfo "export CD_ROOT_1=/mnt/cdrom";
echo;
fi;
export CDROM_SET="";
export CDROM_CURRENT_CD=0;
cdrom_load_next_cd
}
cdrom_load_next_cd ()
{
local var;
((++CDROM_CURRENT_CD));
unset CDROM_ROOT;
var=CD_ROOT_${CDROM_CURRENT_CD};
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
var="CDROM_CHECK_${CDROM_CURRENT_CD}";
_cdrom_locate_file_on_cd ${!var};
else
export CDROM_ROOT=${!var};
fi;
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
}
check_license ()
{
local lic=$1;
if [ -z "${lic}" ]; then
lic="${PORTDIR}/licenses/${LICENSE}";
else
if [ -e "${PORTDIR}/licenses/${lic}" ]; then
lic="${PORTDIR}/licenses/${lic}";
else
if [ -e "${PWD}/${lic}" ]; then
lic="${PWD}/${lic}";
else
if [ -e "${lic}" ]; then
lic="${lic}";
fi;
fi;
fi;
fi;
local l="`basename ${lic}`";
local alic;
eshopts_push -o noglob;
for alic in ${ACCEPT_LICENSE};
do
if [[ ${alic} == ${l} ]]; then
eshopts_pop;
return 0;
fi;
done;
eshopts_pop;
[ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
local licmsg=$(emktemp);
cat > ${licmsg} <<-EOF
**********************************************************
The following license outlines the terms of use of this
package. You MUST accept this license for installation to
continue. When you are done viewing, hit 'q'. If you
CTRL+C out of this, the install will not run!
**********************************************************
EOF
cat ${lic} >> ${licmsg};
${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
einfon "Do you accept the terms of this license (${l})? [yes/no] ";
read alic;
case ${alic} in
yes | Yes | y | Y)
return 0
;;
*)
echo;
echo;
echo;
eerror "You MUST accept the license to continue! Exiting!";
die "Failed to accept license"
;;
esac
}
cmake-utils_src_compile ()
{
_execute_optionaly "src_compile" "$@"
}
cmake-utils_src_configure ()
{
_execute_optionaly "src_configure" "$@"
}
cmake-utils_src_install ()
{
_execute_optionaly "src_install" "$@"
}
cmake-utils_src_make ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" &>/dev/null;
[[ -e Makefile ]] || die "Makefile not found. Error during configure stage.";
if [[ -n ${CMAKE_VERBOSE} ]]; then
emake VERBOSE=1 "$@" || die "Make failed!";
else
emake "$@" || die "Make failed!";
fi;
popd &>/dev/null
}
cmake-utils_src_test ()
{
_execute_optionaly "src_test" "$@"
}
cmake-utils_use ()
{
_use_me_now "" "$@"
}
cmake-utils_use_build ()
{
_use_me_now BUILD_ "$@"
}
cmake-utils_use_disable ()
{
_use_me_now_inverted DISABLE_ "$@"
}
cmake-utils_use_enable ()
{
_use_me_now ENABLE_ "$@"
}
cmake-utils_use_has ()
{
_use_me_now HAVE_ "$@"
}
cmake-utils_use_no ()
{
_use_me_now_inverted NO_ "$@"
}
cmake-utils_use_want ()
{
_use_me_now WANT_ "$@"
}
cmake-utils_use_with ()
{
_use_me_now WITH_ "$@"
}
comment_all_add_subdirectory ()
{
find "$@" -name CMakeLists.txt -print0 | grep -vFzZ "./cmake" | xargs -0 sed -i -e '/^[[:space:]]*add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*macro_optional_add_subdirectory/s/^/#DONOTCOMPILE /' -e '/^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' || die "${LINENO}: Initial sed died"
}
create_ml_includes ()
{
local dest=$1;
shift;
local basedirs=$(create_ml_includes-listdirs "$@");
create_ml_includes-makedestdirs ${dest} ${basedirs};
local file;
for file in $(create_ml_includes-allfiles ${basedirs});
do
( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */";
local dir;
for dir in ${basedirs};
do
if [[ -f ${D}/${dir}/${file} ]]; then
echo "";
local sym=$(create_ml_includes-sym_for_dir ${dir} "$@");
if [[ ${sym/=} != "${sym}" ]]; then
echo "#if ${sym}";
else
if [[ ${sym::1} == "!" ]]; then
echo "#ifndef ${sym:1}";
else
echo "#ifdef ${sym}";
fi;
fi;
echo "# include <$(create_ml_includes-absolute ${dir}/${file})>";
echo "#endif /* ${sym} */";
fi;
done ) > "${D}/${dest}/${file}";
done
}
create_ml_includes-absolute ()
{
local dst="$(create_ml_includes-tidy_path $1)";
dst=(${dst//\// });
local i;
for ((i=0; i<${#dst[*]}; i++))
do
[ "${dst[i]}" == "include" ] && break;
done;
local strip_upto=$i;
for ((i=strip_upto+1; i<${#dst[*]}-1; i++))
do
echo -n ${dst[i]}/;
done;
echo -n ${dst[i]}
}
create_ml_includes-allfiles ()
{
[[ -z ${ED} ]] && local ED=${D};
local basedir file;
for basedir in "$@";
do
for file in $(find "${ED}"/${basedir} -type f);
do
echo ${file/${ED}\/${basedir}\//};
done;
done | sort | uniq
}
create_ml_includes-listdirs ()
{
local dirs;
local data;
for data in "$@";
do
dirs="${dirs} ${data/*:/}";
done;
echo ${dirs:1}
}
create_ml_includes-makedestdirs ()
{
local dest=$1;
shift;
local basedirs=$@;
[[ -z ${ED} ]] && local ED=${D};
dodir ${dest};
local basedir;
for basedir in ${basedirs};
do
local dir;
for dir in $(find "${ED}"/${basedir} -type d);
do
dodir ${dest}/${dir/${ED}\/${basedir}/};
done;
done
}
create_ml_includes-sym_for_dir ()
{
local dir=$1;
shift;
local data;
for data in "$@";
do
if [[ ${data} == *:${dir} ]]; then
echo ${data/:*/};
return 0;
fi;
done;
echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@";
exit 1
}
create_ml_includes-tidy_path ()
{
local removed=$1;
if [ -n "${removed}" ]; then
while [ "${removed}" != "${removed/\/\//\/}" ]; do
removed=${removed/\/\//\/};
done;
while [ "${removed}" != "${removed//\/.\//\/}" ]; do
removed=${removed//\/.\//\/};
done;
[ "${removed##*/}" = "." ] && removed=${removed%/*};
while [ "${removed}" != "${removed//\/..\/}" ]; do
local p1="${removed%%\/..\/*}";
local p2="${removed#*\/..\/}";
removed="${p1%\/*}/${p2}";
done;
[ "${removed##*/}" = ".." ] && removed=${removed%/*/*};
[ "${removed##*/}" = "" ] && removed=${removed%/*};
echo ${removed};
fi
}
delete_all_version_separators ()
{
__versionator_shopt_toggle on;
replace_all_version_separators "" "${1}";
__versionator_shopt_toggle off
}
delete_version_separator ()
{
__versionator_shopt_toggle on;
replace_version_separator "${1}" "" "${2}";
__versionator_shopt_toggle off
}
dlopen_lib ()
{
case "${CHOST}" in
*-linux-gnu* | *-linux-uclibc | *-interix*)
echo "-ldl"
;;
esac
}
doicon ()
{
( local i j ret;
insinto /usr/share/pixmaps;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.png;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
domenu ()
{
( local i j ret=0;
insinto /usr/share/applications;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.desktop;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
dyn_pretend ()
{
ebuild_phase_with_hooks pkg_pretend
}
ebeep ()
{
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
ecvs_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix ()
{
echo "$@" | xargs sed -i 's/\r$//'
}
egetent ()
{
case ${CHOST} in
*-darwin[678])
case "$2" in
*[!0-9]*)
nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
;;
*)
nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
;;
esac
;;
*-darwin*)
local mytype=$1;
[[ "passwd" == $mytype ]] && mytype="Users";
[[ "group" == $mytype ]] && mytype="Groups";
case "$2" in
*[!0-9]*)
dscl . -read /$mytype/$2 2> /dev/null | grep RecordName
;;
*)
local mykey="UniqueID";
[[ $mytype == "Groups" ]] && mykey="PrimaryGroupID";
dscl . -search /$mytype $mykey $2 2> /dev/null
;;
esac
;;
*-freebsd* | *-dragonfly*)
local opts action="user";
[[ $1 == "passwd" ]] || action="group";
if [[ $2 == [[:digit:]]* ]]; then
[[ ${action} == "user" ]] && opts="-u" || opts="-g";
fi;
pw show ${action} ${opts} "$2" -q
;;
*-netbsd* | *-openbsd*)
grep "$2:\*:" /etc/$1
;;
*)
type -p nscd &>/dev/null && nscd -i "$1";
getent "$1" "$2"
;;
esac
}
egethome ()
{
ent=$(egetent passwd $1);
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f9
;;
*)
echo ${ent} | cut -d: -f6
;;
esac
}
egetshell ()
{
ent=$(egetent passwd "$1");
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f10
;;
*)
echo ${ent} cut -d: -f7
;;
esac
}
emktemp ()
{
local exe="touch";
[[ $1 == -d ]] && exe="mkdir" && shift;
local topdir=$1;
if [[ -z ${topdir} ]]; then
[[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
fi;
if ! type -P mktemp > /dev/null; then
local tmp=/;
while [[ -e ${tmp} ]]; do
tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
done;
${exe} "${tmp}" || ${exe} -p "${tmp}";
echo "${tmp}";
else
if [[ ${exe} == "touch" ]]; then
TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
else
TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
fi;
fi
}
enable_cmake-utils_src_compile ()
{
debug-print-function ${FUNCNAME} "$@";
has src_configure ${CMAKE_EXPF} || cmake-utils_src_configure;
cmake-utils_src_make "$@"
}
enable_cmake-utils_src_configure ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir init;
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then
eerror "I was unable to locate CMakeLists.txt under:";
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\"";
eerror "You should consider not inheriting the cmake eclass.";
die "FATAL: Unable to find CMakeLists.txt";
fi;
_modify-cmakelists;
export XDG_CONFIG_HOME="${T}";
if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
if ! has debug ${IUSE//+} || ! use debug; then
append-cppflags -DNDEBUG;
fi;
fi;
local build_rules=${T}/gentoo_rules.cmake;
cat > "${build_rules}" <<-_EOF_
SET (CMAKE_C_COMPILER $(type -P $(tc-getCC)) CACHE FILEPATH "C compiler" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILER $(type -P $(tc-getCXX)) CACHE FILEPATH "C++ compiler" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
_EOF_
if use prefix; then
cat >> "${build_rules}";
fi <<-_EOF_
# in Prefix we need rpath and must ensure cmake gets our default linker path
# right ... except for Darwin hosts
IF (NOT APPLE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
CACHE STRING "" FORCE)
ENDIF (NOT APPLE)
_EOF_
local common_config=${T}/gentoo_common_config.cmake;
local libdir=$(get_libdir);
cat > "${common_config}" <<-_EOF_
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
_EOF_
[[ -n ${NOCOLOR} ]] || echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}";
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
local mycmakeargs_local=(${mycmakeargs});
else
local mycmakeargs_local=("${mycmakeargs[@]}");
fi;
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
local cmakeargs=(-C "${common_config}" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX:-/usr}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE="${build_rules}" "${MYCMAKEARGS}");
mkdir -p "${CMAKE_BUILD_DIR}";
pushd "${CMAKE_BUILD_DIR}" > /dev/null;
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}";
echo cmake "${cmakeargs[@]}" "${CMAKE_USE_DIR}";
cmake "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed";
popd > /dev/null
}
enable_cmake-utils_src_install ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" &>/dev/null;
emake install DESTDIR="${D}" || die "Make install failed";
popd &>/dev/null;
[[ -n "${DOCS}" ]] && {
dodoc ${DOCS} || die "dodoc failed"
};
[[ -n "${HTML_DOCS}" ]] && {
dohtml -r ${HTML_DOCS} || die "dohtml failed"
}
}
enable_cmake-utils_src_test ()
{
debug-print-function ${FUNCNAME} "$@";
_check_build_dir;
pushd "${CMAKE_BUILD_DIR}" &>/dev/null;
if emake -j1 check -n &>/dev/null; then
einfo ">>> Test phase [check]: ${CATEGORY}/${PF}";
if ! emake -j1 check; then
die "Make check failed. See above for details.";
fi;
else
if emake -j1 test -n &>/dev/null; then
einfo ">>> Test phase [test]: ${CATEGORY}/${PF}";
if ! emake -j1 test; then
die "Make test failed. See above for details.";
fi;
else
einfo ">>> Test phase [none]: ${CATEGORY}/${PF}";
fi;
fi;
popd &>/dev/null
}
enable_selected_doc_linguas ()
{
debug-print-function ${FUNCNAME} "$@";
if ! $(env | grep -q "^LINGUAS="); then
return 0;
fi;
KDE_DOC_DIRS=${KDE_DOC_DIRS:='doc/%lingua'};
local linguas;
for pattern in ${KDE_DOC_DIRS};
do
local handbookdir=`dirname ${pattern}`;
local translationdir=`basename ${pattern}`;
[[ "${handbookdir}" = '.' ]] && handbookdir=${translationdir} && translationdir=;
[[ -d "${handbookdir}" ]] || die 'wrong doc dir specified';
if ! use handbook; then
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${handbookdir}[[:space:]]*)/s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die 'failed to comment out all handbooks';
else
comment_all_add_subdirectory "${handbookdir}";
local lingua;
for lingua in en ${KDE_LINGUAS};
do
if [[ ${lingua} = 'en' ]] || use linguas_${lingua}; then
if [[ -d "${handbookdir}/${translationdir//%lingua/${lingua}}" ]]; then
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -e "/ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${translationdir//%lingua/${lingua}}/s/^#DONOTCOMPILE //" -i "${handbookdir}"/CMakeLists.txt && ! has ${lingua} ${linguas} && linguas="${linguas} ${lingua}";
fi;
fi;
done;
fi;
done;
[[ -n "${linguas}" ]] && einfo "Enabling handbook translations:${linguas}"
}
enable_selected_linguas ()
{
debug-print-function ${FUNCNAME} "$@";
local lingua linguas sr_mess wp;
if ! $(env | grep -q "^LINGUAS="); then
return 0;
fi;
KDE_LINGUAS_DIR=${KDE_LINGUAS_DIR:="po"};
[[ -d "${KDE_LINGUAS_DIR}" ]] || die "wrong linguas dir specified";
comment_all_add_subdirectory "${KDE_LINGUAS_DIR}";
pushd "${KDE_LINGUAS_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@Latin: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}" ]] && einfo "Enabling languages: ${linguas}";
popd > /dev/null
}
enewgroup ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewgroup is only for use in pkg_* functions!"
;;
esac;
local egroup="$1";
shift;
if [ -z "${egroup}" ]; then
eerror "No group specified !";
die "Cannot call enewgroup without a group";
fi;
if [[ -n $(egetent group "${egroup}") ]]; then
return 0;
fi;
einfo "Adding group '${egroup}' to your system ...";
local opts=;
local egid="$1";
shift;
if [ ! -z "${egid}" ]; then
if [ "${egid}" -gt 0 ]; then
if [ -z "`egetent group ${egid}`" ]; then
if [[ "${CHOST}" == *-darwin* ]]; then
opts="${opts} ${egid}";
else
opts="${opts} -g ${egid}";
fi;
else
egid="next available; requested gid taken";
fi;
else
eerror "Groupid given but is not greater than 0 !";
die "${egid} is not a valid GID";
fi;
else
egid="next available";
fi;
einfo " - Groupid: ${egid}";
local eextra="$@";
opts="${opts} ${eextra}";
local oldsandbox="${SANDBOX_ON}";
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [ ! -z "${eextra}" ]; then
einfo "Extra options are not supported on Darwin/OS X yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: ${eextra}";
die "Required function missing";
fi;
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
dscl . create /groups/${egroup} gid ${egid};
dscl . create /groups/${egroup} passwd '*'
;;
*-freebsd* | *-dragonfly*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
;;
*-netbsd*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
groupadd -g ${egid} ${egroup} || die "enewgroup failed"
;;
*)
groupadd ${opts} ${egroup} || die "enewgroup failed"
;;
esac;
export SANDBOX_ON="${oldsandbox}"
}
enewuser ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewuser is only for use in pkg_* functions!"
;;
esac;
local euser=$1;
shift;
if [[ -z ${euser} ]]; then
eerror "No username specified !";
die "Cannot call enewuser without a username";
fi;
if [[ -n $(egetent passwd "${euser}") ]]; then
return 0;
fi;
einfo "Adding user '${euser}' to your system ...";
local opts=;
local euid=$1;
shift;
if [[ -n ${euid} && ${euid} != -1 ]]; then
if [[ ${euid} -gt 0 ]]; then
if [[ -n $(egetent passwd ${euid}) ]]; then
euid="next";
fi;
else
eerror "Userid given but is not greater than 0 !";
die "${euid} is not a valid UID";
fi;
else
euid="next";
fi;
if [[ ${euid} == "next" ]]; then
for ((euid = 101; euid <= 999; euid++))
do
[[ -z $(egetent passwd ${euid}) ]] && break;
done;
fi;
opts="${opts} -u ${euid}";
einfo " - Userid: ${euid}";
local eshell=$1;
shift;
if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
if [[ ! -e ${ROOT}${eshell} ]]; then
eerror "A shell was specified but it does not exist !";
die "${eshell} does not exist in ${ROOT}";
fi;
if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
eerror "Do not specify ${eshell} yourself, use -1";
die "Pass '-1' as the shell parameter";
fi;
else
for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
do
[[ -x ${ROOT}${shell} ]] && break;
done;
if [[ ${shell} == "/dev/null" ]]; then
eerror "Unable to identify the shell to use, proceeding with userland default.";
case ${USERLAND} in
GNU)
shell="/bin/false"
;;
BSD)
shell="/sbin/nologin"
;;
Darwin)
shell="/usr/sbin/nologin"
;;
*)
die "Unable to identify the default shell for userland ${USERLAND}"
;;
esac;
fi;
eshell=${shell};
fi;
einfo " - Shell: ${eshell}";
opts="${opts} -s ${eshell}";
local ehome=$1;
shift;
if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
ehome="/dev/null";
fi;
einfo " - Home: ${ehome}";
opts="${opts} -d ${ehome}";
local egroups=$1;
shift;
if [[ ! -z ${egroups} ]]; then
local oldifs=${IFS};
local defgroup="" exgroups="";
export IFS=",";
for g in ${egroups};
do
export IFS=${oldifs};
if [[ -z $(egetent group "${g}") ]]; then
eerror "You must add group ${g} to the system first";
die "${g} is not a valid GID";
fi;
if [[ -z ${defgroup} ]]; then
defgroup=${g};
else
exgroups="${exgroups},${g}";
fi;
export IFS=",";
done;
export IFS=${oldifs};
opts="${opts} -g ${defgroup}";
if [[ ! -z ${exgroups} ]]; then
opts="${opts} -G ${exgroups:1}";
fi;
else
egroups="(none)";
fi;
einfo " - Groups: ${egroups}";
local oldsandbox=${SANDBOX_ON};
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [[ -z $@ ]]; then
dscl . create /users/${euser} uid ${euid};
dscl . create /users/${euser} shell ${eshell};
dscl . create /users/${euser} home ${ehome};
dscl . create /users/${euser} realname "added by portage for ${PN}";
local oldifs=${IFS};
export IFS=",";
for g in ${egroups};
do
dscl . merge /groups/${g} users ${euser};
done;
export IFS=${oldifs};
else
einfo "Extra options are not supported on Darwin yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: $@";
die "Required function missing";
fi
;;
*-freebsd* | *-dragonfly*)
if [[ -z $@ ]]; then
pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
else
einfo " - Extra: $@";
pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
fi
;;
*-netbsd*)
if [[ -z $@ ]]; then
useradd ${opts} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd ${opts} ${euser} "$@" || die "enewuser failed";
fi
;;
*-openbsd*)
if [[ -z $@ ]]; then
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
fi
;;
*)
if [[ -z $@ ]]; then
useradd ${opts} -c "added by portage for ${PN}" ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd ${opts} "$@" ${euser} || die "enewuser failed";
fi
;;
esac;
if [[ ! -e ${ROOT}/${ehome} ]]; then
einfo " - Creating ${ehome} in ${ROOT}";
mkdir -p "${ROOT}/${ehome}";
chown ${euser} "${ROOT}/${ehome}";
chmod 755 "${ROOT}/${ehome}";
fi;
export SANDBOX_ON=${oldsandbox}
}
epatch ()
{
function _epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
};
unset P4CONFIG P4PORT P4USER;
if [[ $# -gt 1 ]]; then
local m;
for m in "$@";
do
epatch "${m}";
done;
return 0;
fi;
local SINGLE_PATCH="no";
[[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
if [[ -f $1 ]]; then
SINGLE_PATCH="yes";
set -- "$1";
local EPATCH_SUFFIX=$1;
else
if [[ -d $1 ]]; then
set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
else
[[ $# -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;
local PIPE_CMD;
case ${EPATCH_SUFFIX##*\.} in
xz)
PIPE_CMD="xz -dc"
;;
lzma)
PIPE_CMD="lzma -dc"
;;
bz2)
PIPE_CMD="bzip2 -dc"
;;
gz | Z | z)
PIPE_CMD="gzip -dc"
;;
ZIP | zip)
PIPE_CMD="unzip -p"
;;
*)
;;
esac;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
local x;
for x in "$@";
do
[[ ! -f ${x} ]] && continue;
local patchname=${x##*/};
local a=${patchname#*_};
a=${a%%_*};
if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
continue;
fi;
if [[ -n ${EPATCH_EXCLUDE} ]]; then
eshopts_push -o noglob;
local ex;
for ex in ${EPATCH_EXCLUDE};
do
if [[ ${patchname} == ${ex} ]]; then
eshopts_pop;
continue 2;
fi;
done;
eshopts_pop;
fi;
if [[ ${SINGLE_PATCH} == "yes" ]]; then
if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
einfo "${EPATCH_SINGLE_MSG}";
else
einfo "Applying ${patchname} ...";
fi;
else
einfo " ${patchname} ...";
fi;
local STDERR_TARGET="${T}/${patchname}.out";
if [[ -e ${STDERR_TARGET} ]]; then
STDERR_TARGET="${T}/${patchname}-$$.out";
fi;
printf "***** %s *****\n\n" "${patchname}" > "${STDERR_TARGET}";
local count=0;
local PATCH_TARGET;
if [[ -n ${PIPE_CMD} ]]; then
PATCH_TARGET="${T}/$$.patch";
echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
echo;
eerror "Could not extract patch!";
count=5;
break;
fi;
else
PATCH_TARGET=${x};
fi;
local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
if [[ -n ${abs_paths} ]]; then
count=1;
printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
fi;
while [[ ${count} -lt 5 ]]; do
( _epatch_draw_line "***** ${patchname} *****";
echo;
echo "PATCH COMMAND: patch -p${count} ${EPATCH_OPTS} < '${PATCH_TARGET}'";
echo;
_epatch_draw_line "***** ${patchname} *****" ) >> "${STDERR_TARGET}";
if ( patch -p${count} ${EPATCH_OPTS} --dry-run -f < "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
( _epatch_draw_line "***** ${patchname} *****";
echo;
echo "ACTUALLY APPLYING ${patchname} ...";
echo;
_epatch_draw_line "***** ${patchname} *****";
patch -p${count} ${EPATCH_OPTS} < "${PATCH_TARGET}" 2>&1 ) >> "${STDERR_TARGET}";
if [ $? -ne 0 ]; then
echo;
eerror "A dry-run of patch command succeeded, but actually";
eerror "applying the patch failed!";
count=5;
fi;
break;
fi;
: $(( count++ ));
done;
if [[ -n ${PIPE_CMD} ]]; then
rm -f "${PATCH_TARGET}";
fi;
if [[ ${count} -ge 5 ]]; then
echo;
eerror "Failed Patch: ${patchname} !";
eerror " ( ${PATCH_TARGET} )";
eerror;
eerror "Include in your bugreport the contents of:";
eerror;
eerror " ${STDERR_TARGET}";
echo;
die "Failed Patch: ${patchname}!";
fi;
rm -f "${STDERR_TARGET}";
eend 0;
done;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
:
}
epatch_user ()
{
[[ $# -ne 0 ]] && die "epatch_user takes no options";
local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}};
do
EPATCH_SOURCE=${base}/${CTARGET}/${check};
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check};
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check};
if [[ -d ${EPATCH_SOURCE} ]]; then
EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch;
break;
fi;
done
}
epause ()
{
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
}
epunt_cxx ()
{
local dir=$1;
[[ -z ${dir} ]] && dir=${S};
ebegin "Removing useless C++ checks";
local f;
find "${dir}" -name configure | while read f; do
patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
done;
eend 0
}
eshopts_pop ()
{
[[ $# -ne 0 ]] && die "eshopts_pop takes no arguments";
local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 ));
[[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair";
local s=${__ESHOPTS_SAVE__[$i]};
unset __ESHOPTS_SAVE__[$i];
if [[ ${s} == "shopt -"* ]]; then
eval "${s}" || die "eshopts_pop: sanity: invalid shopt options: ${s}";
else
set +$- || die "eshopts_pop: sanity: invalid shell settings: $-";
set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}";
fi
}
eshopts_push ()
{
local i=${#__ESHOPTS_SAVE__[@]};
if [[ $1 == -[su] ]]; then
__ESHOPTS_SAVE__[$i]=$(shopt -p);
[[ $# -eq 0 ]] && return 0;
shopt "$@" || die "eshopts_push: bad options to shopt: $*";
else
__ESHOPTS_SAVE__[$i]=$-;
[[ $# -eq 0 ]] && return 0;
set "$@" || die "eshopts_push: bad options to set: $*";
fi
}
esvn_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
filter-flags ()
{
_filter-hardened "$@";
_filter-var CFLAGS "$@";
_filter-var CPPFLAGS "$@";
_filter-var CXXFLAGS "$@";
_filter-var FFLAGS "$@";
_filter-var FCFLAGS "$@";
return 0
}
filter-ldflags ()
{
_filter-var LDFLAGS "$@";
return 0
}
filter-lfs-flags ()
{
[[ -n $@ ]] && die "filter-lfs-flags takes no arguments";
filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath ()
{
local orig_mfpmath new_math prune_math;
orig_mfpmath=$(get-flag -mfpmath);
new_math=$(get-flag mfpmath);
new_math=" ${new_math//,/ } ";
prune_math="";
for prune_math in "$@";
do
new_math=${new_math/ ${prune_math} / };
done;
new_math=$(echo ${new_math});
new_math=${new_math// /,};
if [[ -z ${new_math} ]]; then
filter-flags ${orig_mfpmath};
else
replace-flags ${orig_mfpmath} -mfpmath=${new_math};
fi;
return 0
}
filter_invalid_flags ()
{
local flag broken_flags;
eval broken_flags=($(get_broken_flags $(getPROG CC gcc) c ${CFLAGS}));
for flag in "${broken_flags[@]}";
do
ewarn "Filtering out invalid CFLAG \"${flag}\"";
CFLAGS="$(remove_flag "${flag}" ${CFLAGS})";
done;
eval broken_flags=($(get_broken_flags $(getPROG CXX g++) c++ ${CXXFLAGS}));
for flag in "${broken_flags[@]}";
do
ewarn "Filtering out invalid CXXFLAG \"${flag}\"";
CXXFLAGS="$(remove_flag "${flag}" ${CXXFLAGS})";
done
}
find_unpackable_file ()
{
local src=$1;
if [[ -z ${src} ]]; then
src=${DISTDIR}/${A};
else
if [[ -e ${DISTDIR}/${src} ]]; then
src=${DISTDIR}/${src};
else
if [[ -e ${PWD}/${src} ]]; then
src=${PWD}/${src};
else
if [[ -e ${src} ]]; then
src=${src};
fi;
fi;
fi;
fi;
[[ ! -e ${src} ]] && return 1;
echo "${src}"
}
gcc-fullversion ()
{
$(tc-getCC "$@") -dumpversion
}
gcc-major-version ()
{
gcc-version "$@" | cut -f1 -d.
}
gcc-micro-version ()
{
gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d-
}
gcc-minor-version ()
{
gcc-version "$@" | cut -f2 -d.
}
gcc-specs-directive ()
{
local directive subdname subdirective;
directive="$(_gcc-specs-directive_raw $1)";
while [[ ${directive} == *%\(*\)* ]]; do
subdname=${directive/*%\(};
subdname=${subdname/\)*};
subdirective="$(_gcc-specs-directive_raw ${subdname})";
directive="${directive//\%(${subdname})/${subdirective}}";
done;
echo "${directive}";
return 0
}
gcc-specs-nostrict ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]])
}
gcc-specs-now ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ "${directive/\{!nonow:}" != "${directive}" ]])
}
gcc-specs-pie ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!nopie:}" != "${directive}" ]])
}
gcc-specs-relro ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ "${directive/\{!norelro:}" != "${directive}" ]])
}
gcc-specs-ssp ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]])
}
gcc-specs-ssp-to-all ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]])
}
gcc-version ()
{
gcc-fullversion "$@" | cut -f1,2 -d.
}
gen_usr_ldscript ()
{
local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
[[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
tc-is-static-only && return;
dodir /usr/${libdir};
if [[ $1 == "-a" ]]; then
auto=true;
shift;
dodir /${libdir};
fi;
output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
for lib in "$@";
do
local tlib;
if ${auto}; then
lib="lib${lib}${suffix}";
else
[[ -r ${ED}/${libdir}/${lib} ]] || continue;
fi;
case ${CTARGET:-${CHOST}} in
*-darwin*)
if ${auto}; then
tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
else
tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
fi;
[[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
tlib=${tlib##*/};
if ${auto}; then
mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
fi;
rm -f "${ED}"/${libdir}/${lib};
fi;
if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
chmod u+w "${ED}${libdir}/${tlib}";
local nowrite=yes;
fi;
install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
[[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
pushd "${ED}/usr/${libdir}" > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
popd > /dev/null
;;
*-aix* | *-irix* | *64*-hpux* | *-interix* | *-winnt*)
if ${auto}; then
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
tlib=$(readlink "${ED}"/${libdir}/${lib});
tlib=${tlib##*/};
if [[ -z ${tlib} ]]; then
tlib=${lib};
else
rm -f "${ED}"/${libdir}/${lib};
fi;
else
tlib=${lib};
fi;
pushd "${ED}/usr/${libdir}" > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
popd > /dev/null
;;
hppa*-hpux*)
if ${auto}; then
tlib=$(chatr "${ED}"/usr/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
[[ -z ${tlib} ]] && tlib=${lib};
tlib=${tlib##*/};
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib}* ]]; then
mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
fi;
[[ ${tlib} != ${lib} ]] && rm -f "${ED}"/${libdir}/${lib};
else
tlib=$(chatr "${ED}"/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}');
[[ -z ${tlib} ]] && tlib=${lib};
tlib=${tlib##*/};
fi;
pushd "${ED}"/usr/${libdir} > /dev/null;
ln -snf "../../${libdir}/${tlib}" "${lib}";
[[ ${tlib} != ${lib} ]] && ln -snf "../../${libdir}/${tlib}" "${tlib}";
popd > /dev/null
;;
*)
if ${auto}; then
tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
[[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
if [[ ${tlib} != ${lib}* ]]; then
mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
fi;
rm -f "${ED}"/${libdir}/${lib};
else
tlib=${lib};
fi;
cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
/* GNU ld script
Since Gentoo has critical dynamic libraries in /lib, and the static versions
in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
run into linking problems. This "fake" dynamic lib is a linker script that
redirects the linker to the real lib. And yes, this works in the cross-
compiling scenario as the sysroot-ed linker will prepend the real path.
See bug http://bugs.gentoo.org/4411 for more info.
*/
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT
;;
esac
fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
done
}
get-flag ()
{
local f findflag="$1";
for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS};
do
if [ "${f/${findflag}}" != "${f}" ]; then
printf "%s\n" "${f/-${findflag}=}";
return 0;
fi;
done;
return 1
}
getPROG ()
{
local var=$1 prog=$2;
if [[ -n ${!var} ]]; then
echo "${!var}";
return 0;
fi;
local search=;
[[ -n $3 ]] && search=$(type -p "$3-${prog}");
[[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
[[ -n ${search} ]] && prog=${search##*/};
export ${var}=${prog};
echo "${!var}"
}
get_abi_ASFLAGS ()
{
get_abi_var ASFLAGS "$@"
}
get_abi_CDEFINE ()
{
get_abi_var CDEFINE "$@"
}
get_abi_CFLAGS ()
{
get_abi_var CFLAGS "$@"
}
get_abi_CHOST ()
{
get_abi_var CHOST "$@"
}
get_abi_CTARGET ()
{
get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS ()
{
get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS ()
{
get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR ()
{
get_abi_var LIBDIR "$@"
}
get_abi_var ()
{
local flag=$1;
local abi;
if [ $# -gt 1 ]; then
abi=${2};
else
if [ -n "${ABI}" ]; then
abi=${ABI};
else
if [ -n "${DEFAULT_ABI}" ]; then
abi=${DEFAULT_ABI};
else
abi="default";
fi;
fi;
fi;
local var="${flag}_${abi}";
echo ${!var}
}
get_after_major_version ()
{
__versionator_shopt_toggle on;
echo $(get_version_component_range 2- "${1:-${PV}}" );
__versionator_shopt_toggle off
}
get_all_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != ${DEFAULT_ABI} ]]; then
order="${order:+${order} }${x}";
fi;
done;
order="${order:+${order} }${DEFAULT_ABI}";
echo ${order};
return 0
}
get_all_libdirs ()
{
local libdirs="lib";
local abi;
local dir;
for abi in ${MULTILIB_ABIS};
do
[ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})";
done;
echo "${libdirs}"
}
get_all_version_components ()
{
__versionator_shopt_toggle on;
local ver_str=${1:-${PV}} result result_idx=0;
result=();
if [[ "${VERSIONATOR_CACHE_VER_STR}" == "${ver_str}" ]]; then
echo ${VERSIONATOR_CACHE_RESULT};
__versionator_shopt_toggle off;
return;
fi;
export VERSIONATOR_CACHE_VER_STR="${ver_str}";
while [[ -n "$ver_str" ]]; do
case "${ver_str:0:1}" in
[[:digit:]])
result[$result_idx]="${ver_str%%[^[:digit:]]*}";
ver_str="${ver_str##+([[:digit:]])}";
result_idx=$(($result_idx + 1))
;;
[-_.])
result[$result_idx]="${ver_str:0:1}";
ver_str="${ver_str:1}";
result_idx=$(($result_idx + 1))
;;
[[:alpha:]])
local not_match="${ver_str##+([[:alpha:]])*([[:digit:]])}";
result[$result_idx]=${ver_str:0:$((${#ver_str} - ${#not_match}))};
ver_str="${not_match}";
result_idx=$(($result_idx + 1))
;;
*)
result[$result_idx]="${ver_str:0:1}";
ver_str="${ver_str:1}";
result_idx=$(($result_idx + 1))
;;
esac;
done;
export VERSIONATOR_CACHE_RESULT="${result[@]}";
echo ${result[@]};
__versionator_shopt_toggle off
}
get_bmake ()
{
if [[ ${USERLAND} == *BSD ]]; then
echo make;
else
if [[ ${USERLAND} == "Darwin" ]]; then
echo bsdmake;
else
echo pmake;
fi;
fi
}
get_broken_flags ()
{
local myprog="${1}" lang="${2}";
shift 2;
echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognized .*option" | egrep -o -- '('\''|\"|`)-.*' | sed -r 's/('\''|`|")//g; s/^/"/; s/$/"/';
echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognised debug output" | egrep -o -- '('\''|\"|`).*' | sed -r 's/('\''|`|")//g; s/^/"-g/; s/$/"/'
}
get_build_type ()
{
if [[ ${SLOT} = live || ${PV} = *9999* ]]; then
BUILD_TYPE="live";
else
BUILD_TYPE="release";
fi;
export BUILD_TYPE
}
get_install_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
if [[ ${EMULTILIB_PKG} == "true" ]]; then
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != "${DEFAULT_ABI}" ]]; then
hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}";
fi;
done;
hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}";
if [[ -n ${ABI_ALLOW} ]]; then
local ordera="";
for x in ${order};
do
if hasq ${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_last_version_component_index ()
{
__versionator_shopt_toggle on;
echo $(( $(get_version_component_count "${1:-${PV}}" ) - 1 ));
__versionator_shopt_toggle off
}
get_libdir ()
{
local CONF_LIBDIR;
if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
echo ${CONF_LIBDIR_OVERRIDE};
else
get_abi_LIBDIR;
fi
}
get_libdir_override ()
{
if has_multilib_profile; then
eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
CONF_LIBDIR="$1";
CONF_LIBDIR_OVERRIDE="$1";
LIBDIR_default="$1"
}
get_libname ()
{
local libname;
local ver=$1;
case ${CHOST} in
*-cygwin | mingw* | *-mingw*)
libname="dll"
;;
*-darwin*)
libname="dylib"
;;
*-aix*)
libname="a"
;;
*-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}"
;;
*-aix*)
echo ".${libname}"
;;
*-mint*)
echo ".${libname}"
;;
*)
echo ".${libname}.${ver}"
;;
esac;
done;
fi
}
get_major_version ()
{
__versionator_shopt_toggle on;
local c;
c=($(get_all_version_components "${1:-${PV}}" ));
echo ${c[0]};
__versionator_shopt_toggle off
}
get_ml_incdir ()
{
local dir=/usr/include;
if [[ $# -gt 0 ]]; then
incdir=$1;
shift;
fi;
if [[ -z "${MULTILIB_ABIS}" ]]; then
echo ${incdir};
return 0;
fi;
local abi=${ABI-${DEFAULT_ABI}};
if [[ $# -gt 0 ]]; then
abi=$1;
shift;
fi;
if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then
echo ${dir}/gentoo-multilib/${abi};
else
echo ${dir};
fi
}
get_modname ()
{
local modname;
local ver=$1;
case ${CHOST} in
*-darwin*)
modname="bundle"
;;
*)
modname="so"
;;
esac;
echo ".${modname}"
}
get_mounts ()
{
local point= node= fs= opts= foo=;
if [[ $(uname -s) == "Linux" ]]; then
while read node point fs opts foo; do
echo "${point} ${node} ${fs} ${opts}";
done < /proc/mounts;
return;
fi;
local IFS=' ';
LC_ALL=C mount -p | while read node point fs foo; do
opts=${fs#* };
fs=${fs%% *};
echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
done
}
get_multilibdir ()
{
if has_multilib_profile; then
eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
echo ${CONF_MULTILIBDIR:=lib32}
}
get_version_component_count ()
{
__versionator_shopt_toggle on;
local a;
a=($(get_version_components "${1:-${PV}}" ));
echo ${#a[@]};
__versionator_shopt_toggle off
}
get_version_component_range ()
{
__versionator_shopt_toggle on;
local c v="${2:-${PV}}" range="${1}" range_start range_end 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=$(($i + 1));
[[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return;
[[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1));
done;
while (( j <= ${range_end} )); do
echo -n ${c[$i]};
[[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return;
[[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1));
i=$(($i + 1));
done;
__versionator_shopt_toggle off
}
get_version_components ()
{
__versionator_shopt_toggle on;
local c="$(get_all_version_components "${1:-${PV}}")";
c=(${c[@]//[-._]/ });
echo ${c[@]};
__versionator_shopt_toggle off
}
has_hardened ()
{
ewarn "has_hardened: deprecated, please use gcc-specs-{relro,now}()!" 1>&2;
test_version_info Hardened && return 0;
[[ -f ${GCC_SPECS} && ${GCC_SPECS} != ${GCC_SPECS/hardened/} ]]
}
has_m32 ()
{
[ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0;
local temp=$(emktemp);
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_m64 ()
{
local temp="$(emktemp)";
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_multilib_profile ()
{
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_pic ()
{
ewarn "has_pic: deprecated, please use gcc-specs-pie()!" 1>&2;
[[ ${CFLAGS/-fPIC} != ${CFLAGS} || ${CFLAGS/-fpic} != ${CFLAGS} ]] || gcc-specs-pie
}
has_pie ()
{
ewarn "has_pie: deprecated, please use gcc-specs-pie()!" 1>&2;
[[ ${CFLAGS/-fPIE} != ${CFLAGS} || ${CFLAGS/-fpie} != ${CFLAGS} ]] || gcc-specs-pie
}
has_ssp ()
{
ewarn "has_ssp: deprecated, please use gcc-specs-ssp()!" 1>&2;
[[ ${CFLAGS/-fstack-protector} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP__) ]] || gcc-specs-ssp
}
has_ssp_all ()
{
ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" 1>&2;
[[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || gcc-specs-ssp-to-all
}
install_library_dependencies ()
{
local depsfile="${T}/${PN}:${SLOT}";
ebegin "Installing library dependencies as ${depsfile##*/}";
insinto /var/lib/kde;
doins "${depsfile}" || die "Failed to install library dependencies.";
eend $?
}
is-flag ()
{
is-flagq "$@" && echo true
}
is-flagq ()
{
[[ -n $2 ]] && die "Usage: is-flag <flag>";
_is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1
}
is-ldflag ()
{
is-ldflagq "$@" && echo true
}
is-ldflagq ()
{
[[ -n $2 ]] && die "Usage: is-ldflag <flag>";
_is_flagq LDFLAGS $1
}
is-login-disabled ()
{
shell=$(egetshell "$1");
case ${shell} in
/bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
return 0
;;
*)
return 1
;;
esac
}
is_final_abi ()
{
has_multilib_profile || return 0;
local ALL_ABIS=$(get_install_abis);
local LAST_ABI=${ALL_ABIS/* /};
[[ ${LAST_ABI} == ${ABI} ]]
}
kde4-base_pkg_postinst ()
{
debug-print-function ${FUNCNAME} "$@";
buildsycoca;
if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; 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;
else
if [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
echo;
ewarn "WARNING! You have the kdeprefix useflag enabled.";
ewarn "This setting is strongly discouraged and might lead to potential trouble";
ewarn "with KDE update strategies.";
ewarn "You are using this setup at your own risk and the kde team does not";
ewarn "take responsibilities for dead kittens.";
echo;
fi;
fi;
if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! has_version 'kde-base/kdebase-runtime-meta' && ! has_version 'kde-base/kdebase-startkde'; then
if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
echo;
ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\"";
ewarn "nor \"kde-base/kdebase-startkde\". You need one of above.";
ewarn "With this setting you are unsupported by KDE team.";
ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID.";
fi;
fi
}
kde4-base_pkg_postrm ()
{
debug-print-function ${FUNCNAME} "$@";
buildsycoca
}
kde4-base_pkg_setup ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${EAPI} == 2 ]] && ! use prefix; then
EPREFIX=;
EROOT=${ROOT};
fi;
[[ ${EROOT} = */ ]] || EROOT+="/";
[[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL}).";
unset KDEHOME;
if [[ ${KDEBASE} = kde-base ]]; then
if use kdeprefix; then
KDEDIR=/usr/kde/${_kdedir};
else
KDEDIR=/usr;
fi;
: ${PREFIX:=${KDEDIR}};
else
KDEDIR=;
local kde_minimal_met;
for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]};
do
[[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1;
if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
KDEDIR=/usr/kde/${slot};
else
KDEDIR=/usr;
fi;
break;
fi;
done;
unset slot;
if [[ ${KDE_REQUIRED} = always ]] || {
[[ ${KDE_REQUIRED} = optional ]] && use kde
}; then
[[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!";
else
[[ -z ${KDEDIR} ]] && KDEDIR=/usr;
fi;
: ${PREFIX:=/usr};
fi;
EKDEDIR=${EPREFIX}${KDEDIR};
export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}";
QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/";
export XDG_CONFIG_HOME="${T}";
unset _kdedir
}
kde4-base_src_compile ()
{
debug-print-function ${FUNCNAME} "$@";
cmake-utils_src_compile "$@"
}
kde4-base_src_configure ()
{
debug-print-function ${FUNCNAME} "$@";
local cmakeargs=(-DKDE4_BUILD_TESTS=OFF);
if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
cmakeargs+=(-DKDE4_ENABLE_FINAL=ON);
fi;
if has debug ${IUSE//+} && use debug; then
CMAKE_BUILD_TYPE="Debugfull";
else
append-cppflags -DQT_NO_DEBUG;
fi;
[[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo);
cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}");
QTEST_COLORED=1;
unset KDEDIRS;
if [[ ${KDEDIR} != /usr ]]; then
PATH="${EKDEDIR}/bin:${PATH}";
LDPATH="${EKDEDIR}/$(get_libdir)${LDPATH+:}${LDPATH}";
cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF);
cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}");
fi;
if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc);
fi;
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
mycmakeargs=(${mycmakeargs});
fi;
mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}");
cmake-utils_src_configure
}
kde4-base_src_install ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${EAPI} == 2 ]] && ! use prefix; then
ED=${D};
fi;
if [[ -n ${KMSAVELIBS} ]]; then
install_library_dependencies;
fi;
kde4-base_src_make_doc;
cmake-utils_src_install
}
kde4-base_src_make_doc ()
{
debug-print-function ${FUNCNAME} "$@";
local doc;
for doc in AUTHORS ChangeLog* README* NEWS TODO;
do
[[ -s ${doc} ]] && dodoc ${doc};
done;
if [[ -z ${KMNAME} ]]; then
for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*};
do
if [[ -s ${doc} ]]; then
local doc_complete=${doc};
doc="${doc#*/}";
newdoc "$doc_complete" "${doc%/*}.${doc##*/}";
fi;
done;
fi
}
kde4-base_src_prepare ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ -n ${KDE_LINGUAS} ]]; then
enable_selected_linguas;
fi;
if ! has kde4-meta ${INHERITED}; then
has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas;
fi;
[[ ${BUILD_TYPE} = live ]] && subversion_src_prepare;
base_src_prepare;
epatch_user;
if [[ -n ${KMSAVELIBS} ]]; then
save_library_dependencies;
fi;
if [[ -n ${KMLOADLIBS} ]]; then
load_library_dependencies;
fi
}
kde4-base_src_test ()
{
debug-print-function ${FUNCNAME} "$@";
mycmakeargs+=(-DKDE4_BUILD_TESTS=ON);
cmake-utils_src_configure;
kde4-base_src_compile;
cmake-utils_src_test
}
kde4-base_src_unpack ()
{
debug-print-function ${FUNCNAME} "$@";
if [[ ${BUILD_TYPE} = live ]]; then
migrate_store_dir;
subversion_src_unpack;
else
if [[ ${EAPI} == 2 ]]; then
local file;
for file in ${A};
do
case ${file} in
*.tar.xz)
echo ">>> Unpacking ${file} to ${PWD}";
xz -dc "${DISTDIR}"/${file} | tar xof -;
assert "failed unpacking ${file}"
;;
*)
unpack ${file}
;;
esac;
done;
else
unpack ${A};
fi;
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}:${SLOT}";
[[ -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 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1;
local exec=${1};
local name=${2:-${PN}};
local icon=${3:-${PN}};
local type=${4};
local path=${5};
if [[ -z ${type} ]]; then
local catmaj=${CATEGORY%%-*};
local catmin=${CATEGORY##*-};
case ${catmaj} in
app)
case ${catmin} in
accessibility)
type=Accessibility
;;
admin)
type=System
;;
antivirus)
type=System
;;
arch)
type=Archiving
;;
backup)
type=Archiving
;;
cdr)
type=DiscBurning
;;
dicts)
type=Dictionary
;;
doc)
type=Documentation
;;
editors)
type=TextEditor
;;
emacs)
type=TextEditor
;;
emulation)
type=Emulator
;;
laptop)
type=HardwareSettings
;;
office)
type=Office
;;
pda)
type=PDA
;;
vim)
type=TextEditor
;;
xemacs)
type=TextEditor
;;
esac
;;
dev)
type="Development"
;;
games)
case ${catmin} in
action | fps)
type=ActionGame
;;
arcade)
type=ArcadeGame
;;
board)
type=BoardGame
;;
emulation)
type=Emulator
;;
kids)
type=KidsGame
;;
puzzle)
type=LogicGame
;;
roguelike)
type=RolePlaying
;;
rpg)
type=RolePlaying
;;
simulation)
type=Simulation
;;
sports)
type=SportsGame
;;
strategy)
type=StrategyGame
;;
esac;
type="Game;${type}"
;;
gnome)
type="Gnome;GTK"
;;
kde)
type="KDE;Qt"
;;
mail)
type="Network;Email"
;;
media)
case ${catmin} in
gfx)
type=Graphics
;;
*)
case ${catmin} in
radio)
type=Tuner
;;
sound)
type=Audio
;;
tv)
type=TV
;;
video)
type=Video
;;
esac;
type="AudioVideo;${type}"
;;
esac
;;
net)
case ${catmin} in
dialup)
type=Dialup
;;
ftp)
type=FileTransfer
;;
im)
type=InstantMessaging
;;
irc)
type=IRCClient
;;
mail)
type=Email
;;
news)
type=News
;;
nntp)
type=News
;;
p2p)
type=FileTransfer
;;
voip)
type=Telephony
;;
esac;
type="Network;${type}"
;;
sci)
case ${catmin} in
astro*)
type=Astronomy
;;
bio*)
type=Biology
;;
calc*)
type=Calculator
;;
chem*)
type=Chemistry
;;
elec*)
type=Electronics
;;
geo*)
type=Geology
;;
math*)
type=Math
;;
physics)
type=Physics
;;
visual*)
type=DataVisualization
;;
esac;
type="Education;Science;${type}"
;;
sys)
type="System"
;;
www)
case ${catmin} in
client)
type=WebBrowser
;;
esac;
type="Network;${type}"
;;
*)
type=
;;
esac;
fi;
if [ "${SLOT}" == "0" ]; then
local desktop_name="${PN}";
else
local desktop_name="${PN}-${SLOT}";
fi;
local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
type=${type%;}${type:+;};
eshopts_push -s extglob;
if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
ewarn "As described in the Icon Theme Specification, icon file extensions are not";
ewarn "allowed in .desktop files if the value is not an absolute path.";
icon=${icon%.@(xpm|png|svg)};
fi;
eshopts_pop;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type}
EOF
[[ -n ${path} ]] && echo "Path=${path}" >> "${desktop}";
( insinto /usr/share/applications;
doins "${desktop}" ) || die "installing desktop file failed"
}
make_session_desktop ()
{
[[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
[[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
local title=$1;
local command=$2;
local desktop=${T}/${wm:-${PN}}.desktop;
shift 2;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF
( insinto /usr/share/xsessions;
doins "${desktop}" )
}
make_wrapper ()
{
local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
local tmpwrapper=$(emktemp);
cat > "${tmpwrapper}" <<EOF
#!/bin/sh
cd "${chdir:-.}"
if [ -n "${libdir}" ] ; then
if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
else
export LD_LIBRARY_PATH="${libdir}"
fi
fi
exec ${bin} "\$@"
EOF
chmod go+rx "${tmpwrapper}";
if [[ -n ${path} ]]; then
( exeinto "${path}";
newexe "${tmpwrapper}" "${wrapper}" ) || die;
else
newbin "${tmpwrapper}" "${wrapper}" || die;
fi
}
migrate_store_dir ()
{
local cleandir="${ESVN_STORE_DIR}/KDE";
if [[ -d "${cleandir}" ]]; then
ewarn "'${cleandir}' has been found. Moving contents to new location.";
addwrite "${ESVN_STORE_DIR}";
local module;
if pushd "${cleandir}"/kdebase/kdebase > /dev/null; then
for module in `find . -maxdepth 1 -type d -name [a-z0-9]\*`;
do
module="${module#./}";
mkdir -p "${ESVN_STORE_DIR}/kdebase-${module}" && mv -f "${module}" "${ESVN_STORE_DIR}/kdebase-${module}" || die "Failed to move to '${ESVN_STORE_DIR}/kdebase-${module}'.";
done;
popd > /dev/null;
rm -fr "${cleandir}/kdebase" || die "Failed to remove ${cleandir}/kdebase. You need to remove it manually.";
fi;
local pkg;
for pkg in "${cleandir}"/*;
do
mv -f "${pkg}" "${ESVN_STORE_DIR}"/ || eerror "Failed to move '${pkg}'";
done;
rmdir "${cleandir}" || die "Could not move obsolete KDE store dir. Please move '${cleandir}' contents to appropriate location (possibly ${ESVN_STORE_DIR}) and manually remove '${cleandir}' in order to continue.";
fi;
if ! hasq kde4-meta ${INHERITED}; then
case ${KMNAME} in
extragear* | playground*)
local svnlocalpath="${ESVN_STORE_DIR}"/"${KMNAME}"/"${PN}";
if [[ -d "${svnlocalpath}" ]]; then
local destdir="${ESVN_STORE_DIR}"/"${ESVN_PROJECT}"/"`basename "${ESVN_REPO_URI}"`";
ewarn "'${svnlocalpath}' has been found.";
ewarn "Moving contents to new location: ${destdir}";
addwrite "${ESVN_STORE_DIR}";
mkdir -p "${ESVN_STORE_DIR}"/"${ESVN_PROJECT}" && mv -f "${svnlocalpath}" "${destdir}" || die "Failed to move to '${svnlocalpath}'";
rmdir "`dirname "${svnlocalpath}"`" 2> /dev/null;
fi
;;
esac;
fi
}
multilib_env ()
{
local CTARGET=${1:-${CTARGET}};
case ${CTARGET} in
x86_64*)
export CFLAGS_x86=${CFLAGS_x86--m32};
export CHOST_x86=${CTARGET/x86_64/i686};
export CTARGET_x86=${CHOST_x86};
export CDEFINE_x86="__i386__";
export LIBDIR_x86="lib";
export CFLAGS_amd64=${CFLAGS_amd64--m64};
export CHOST_amd64=${CTARGET};
export CTARGET_amd64=${CHOST_amd64};
export CDEFINE_amd64="__x86_64__";
export LIBDIR_amd64="lib64";
export MULTILIB_ABIS="amd64 x86";
export DEFAULT_ABI="amd64"
;;
mips64*)
export CFLAGS_o32=${CFLAGS_o32--mabi=32};
export CHOST_o32=${CTARGET/mips64/mips};
export CTARGET_o32=${CHOST_o32};
export CDEFINE_o32="_MIPS_SIM == _ABIO32";
export LIBDIR_o32="lib";
export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
export CHOST_n32=${CTARGET};
export CTARGET_n32=${CHOST_n32};
export CDEFINE_n32="_MIPS_SIM == _ABIN32";
export LIBDIR_n32="lib32";
export CFLAGS_n64=${CFLAGS_n64--mabi=64};
export CHOST_n64=${CTARGET};
export CTARGET_n64=${CHOST_n64};
export CDEFINE_n64="_MIPS_SIM == _ABI64";
export LIBDIR_n64="lib64";
export MULTILIB_ABIS="n64 n32 o32";
export DEFAULT_ABI="n32"
;;
powerpc64*)
export CFLAGS_ppc=${CFLAGS_ppc--m32};
export CHOST_ppc=${CTARGET/powerpc64/powerpc};
export CTARGET_ppc=${CHOST_ppc};
export CDEFINE_ppc="!__powerpc64__";
export LIBDIR_ppc="lib";
export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
export CHOST_ppc64=${CTARGET};
export CTARGET_ppc64=${CHOST_ppc64};
export CDEFINE_ppc64="__powerpc64__";
export LIBDIR_ppc64="lib64";
export MULTILIB_ABIS="ppc64 ppc";
export DEFAULT_ABI="ppc64"
;;
s390x*)
export CFLAGS_s390=${CFLAGS_s390--m31};
export CHOST_s390=${CTARGET/s390x/s390};
export CTARGET_s390=${CHOST_s390};
export CDEFINE_s390="!__s390x__";
export LIBDIR_s390="lib";
export CFLAGS_s390x=${CFLAGS_s390x--m64};
export CHOST_s390x=${CTARGET};
export CTARGET_s390x=${CHOST_s390x};
export CDEFINE_s390x="__s390x__";
export LIBDIR_s390x="lib64";
export MULTILIB_ABIS="s390x s390";
export DEFAULT_ABI="s390x"
;;
sparc*)
export CFLAGS_sparc32=${CFLAGS_sparc32};
export CHOST_sparc32=${CTARGET/sparc64/sparc};
export CTARGET_sparc32=${CHOST_sparc32};
export CDEFINE_sparc32="!__arch64__";
export LIBDIR_sparc32="lib";
export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
export CHOST_sparc64=${CTARGET};
export CTARGET_sparc64=${CHOST_sparc64};
export CDEFINE_sparc64="__arch64__";
export LIBDIR_sparc64="lib64";
export MULTILIB_ABIS="${MULTILIB_ABIS-sparc64 sparc32}";
export DEFAULT_ABI="${DEFAULT_ABI-sparc64}"
;;
*)
export MULTILIB_ABIS="default";
export DEFAULT_ABI="default"
;;
esac
}
multilib_toolchain_setup ()
{
local v vv;
export ABI=$1;
if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
if [[ ${DEFAULT_ABI_SAVED} != "true" ]]; then
for v in CHOST CBUILD AS CC CXX LD;
do
export __abi_saved_${v}="${!v}";
done;
export DEFAULT_ABI_SAVED="true";
fi;
export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
export AS="$(tc-getAS) $(get_abi_ASFLAGS)";
export CC="$(tc-getCC) $(get_abi_CFLAGS)";
export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
export CHOST=$(get_abi_CHOST $1);
export CBUILD=$(get_abi_CHOST $1);
else
if [[ ${DEFAULT_ABI_SAVED} == "true" ]]; then
for v in CHOST CBUILD AS CC CXX LD;
do
vv="__abi_saved_${v}";
export ${v}=${!vv};
done;
fi;
fi
}
newicon ()
{
( insinto /usr/share/pixmaps;
newins "$@" )
}
newmenu ()
{
( insinto /usr/share/applications;
newins "$@" )
}
no-as-needed ()
{
case $($(tc-getLD) -v 2>&1 </dev/null) in
*GNU*)
echo "-Wl,--no-as-needed"
;;
esac
}
nonfatal ()
{
if has "${EAPI:-0}" 0 1 2 3 3_pre2; then
die "$FUNCNAME() not supported in this EAPI";
fi;
if [[ $# -lt 1 ]]; then
die "$FUNCNAME(): Missing argument";
fi;
PORTAGE_NONFATAL=1 "$@"
}
number_abis ()
{
get_install_abis | wc -w
}
pkg_nofetch ()
{
_eapi0_pkg_nofetch "$@"
}
pkg_postinst ()
{
kde4-base_pkg_postinst "$@"
}
pkg_postrm ()
{
kde4-base_pkg_postrm "$@"
}
pkg_setup ()
{
kde4-base_pkg_setup "$@"
}
prep_ml_includes ()
{
if [[ $(number_abis) -gt 1 ]]; then
local dir;
local dirs;
local base;
if [[ $# -eq 0 ]]; then
dirs=/usr/include;
else
dirs="$@";
fi;
for dir in ${dirs};
do
base=${T}/gentoo-multilib/${dir}/gentoo-multilib;
mkdir -p "${base}";
[[ -d ${base}/${ABI} ]] && rm -rf "${base}/${ABI}";
mv "${D}/${dir}" "${base}/${ABI}";
done;
if is_final_abi; then
base=${T}/gentoo-multilib;
pushd "${base}";
find . | tar -c -T - -f - | tar -x --no-same-owner -f - -C "${D}";
popd;
set --;
for dir in ${dirs};
do
set -- "$@" "${dir}";
local abi;
for abi in $(get_install_abis);
do
set -- "$@" "$(get_abi_CDEFINE ${abi}):${dir}/gentoo-multilib/${abi}";
done;
create_ml_includes "$@";
done;
fi;
fi
}
preserve_old_lib ()
{
if [[ ${EBUILD_PHASE} != "preinst" ]]; then
eerror "preserve_old_lib() must be called from pkg_preinst() only";
die "Invalid preserve_old_lib() usage";
fi;
[[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
has preserve-libs ${FEATURES} && return 0;
local lib dir;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
dir=${lib%/*};
dodir ${dir} || die "dodir ${dir} failed";
cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
touch "${D}"/${lib};
done
}
preserve_old_lib_notify ()
{
if [[ ${EBUILD_PHASE} != "postinst" ]]; then
eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
die "Invalid preserve_old_lib_notify() usage";
fi;
has preserve-libs ${FEATURES} && return 0;
local lib notice=0;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
if [[ ${notice} -eq 0 ]]; then
notice=1;
ewarn "Old versions of installed libraries were detected on your system.";
ewarn "In order to avoid breaking packages that depend on these old libs,";
ewarn "the libraries are not being removed. You need to run revdep-rebuild";
ewarn "in order to remove these old dependencies. If you do not have this";
ewarn "helper program, simply emerge the 'gentoolkit' package.";
ewarn;
fi;
ewarn " # revdep-rebuild --library ${lib##*/}";
done;
if [[ ${notice} -eq 1 ]]; then
ewarn;
ewarn "Once you've finished running revdep-rebuild, it should be safe to";
ewarn "delete the old libraries. Here is a copy & paste for the lazy:";
for lib in "$@";
do
ewarn " # rm '${lib}'";
done;
fi
}
raw-ldflags ()
{
local x input="$@";
[[ -z ${input} ]] && input=${LDFLAGS};
set --;
for x in ${input};
do
x=${x#-Wl,};
set -- "$@" ${x//,/ };
done;
echo "$@"
}
register_success_hook ()
{
local x;
for x in $*;
do
hasq $x $EBUILD_SUCCESS_HOOKS || export EBUILD_SUCCESS_HOOKS="$EBUILD_SUCCESS_HOOKS $x";
done
}
remove_flag ()
{
local remove="${1}";
shift;
while [[ -n "${1}" ]]; do
[[ "${1}" != "${remove}" ]] && echo -n "${1} ";
shift;
done
}
replace-cpu-flags ()
{
local newcpu="$#";
newcpu="${!newcpu}";
while [ $# -gt 1 ]; do
replace-flags "-march=${1}" "-march=${newcpu}";
replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
replace-flags "-mtune=${1}" "-mtune=${newcpu}";
shift;
done;
return 0
}
replace-flags ()
{
[[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#";
local f fset;
declare -a new_CFLAGS new_CXXFLAGS new_FFLAGS new_FCFLAGS;
for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS;
do
for f in ${!fset};
do
[[ ${f} == ${1} ]] && f=${2};
eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f};
done;
eval export ${fset}=\${new_${fset}\[*]};
done;
return 0
}
replace-sparc64-flags ()
{
local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
export CFLAGS CXXFLAGS
}
replace_all_version_separators ()
{
__versionator_shopt_toggle on;
local c;
c=($(get_all_version_components "${2:-${PV}}" ));
c="${c[@]//[-._]/$1}";
echo ${c// };
__versionator_shopt_toggle off
}
replace_version_separator ()
{
__versionator_shopt_toggle on;
local w i c found=0 v="${3:-${PV}}";
w=${1:-1};
c=($(get_all_version_components ${v} ));
if [[ "${w//[[:digit:]]/}" == "${w}" ]]; then
for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 ))
do
if [[ "${c[${i}]}" == "${w}" ]]; then
c[${i}]="${2}";
break;
fi;
done;
else
for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 ))
do
if [[ -n "${c[${i}]//[^-._]}" ]]; then
found=$(($found + 1));
if [[ "$found" == "${w}" ]]; then
c[${i}]="${2}";
break;
fi;
fi;
done;
fi;
c=${c[@]};
echo ${c// };
__versionator_shopt_toggle off
}
save_library_dependencies ()
{
local depsfile="${T}/${PN}:${SLOT}";
ebegin "Saving library dependencies in ${depsfile##*/}";
echo "EXPORT_LIBRARY_DEPENDENCIES(\"${depsfile}\")" >> "${S}/CMakeLists.txt" || die "Failed to save the library dependencies.";
eend $?
}
seq ()
{
local p=$(type -P seq);
case $# in
1)
min=1 max=$1 step=1
;;
2)
min=$1 max=$2 step=1
;;
3)
min=$1 max=$3 step=$2
;;
*)
die "seq called with wrong number of arguments"
;;
esac;
if [[ -z ${p} ]]; then
local reps;
if [[ ${step} != 0 ]]; then
reps=$(( ($max-$min) / $step +1 ));
else
reps=0;
fi;
jot $reps $min $max $step;
else
"${p}" $min $step $max;
fi
}
setup-allowed-flags ()
{
if [[ -z ${ALLOWED_FLAGS} ]]; then
export ALLOWED_FLAGS="-pipe";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w";
fi;
ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer";
ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -D* -U*";
export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks";
return 0
}
slot_is_at_least ()
{
[[ "${2}" > "${1}" || "${2}" = "${1}" ]]
}
src_compile ()
{
kde4-base_src_compile "$@"
}
src_configure ()
{
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 flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS;
setup-allowed-flags;
local NEW_CFLAGS="";
local NEW_CXXFLAGS="";
local NEW_FFLAGS="";
local NEW_FCFLAGS="";
if has "~$(tc-arch)" ${ACCEPT_KEYWORDS}; then
ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}";
fi;
set -f;
for x in ${CFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CFLAGS="${NEW_CFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${CXXFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${FFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_FFLAGS="${NEW_FFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${FCFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_FCFLAGS="${NEW_FCFLAGS} ${x}";
break;
fi;
done;
done;
if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
NEW_CFLAGS="${NEW_CFLAGS} -O2";
fi;
if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2";
fi;
if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then
NEW_FFLAGS="${NEW_FFLAGS} -O2";
fi;
if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then
NEW_FCFLAGS="${NEW_FCFLAGS} -O2";
fi;
set +f;
export CFLAGS="${NEW_CFLAGS}";
export CXXFLAGS="${NEW_CXXFLAGS}";
export FFLAGS="${NEW_FFLAGS}";
export FCFLAGS="${NEW_FCFLAGS}";
return 0
}
strip-linguas ()
{
local ls newls nols;
if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
local op=$1;
shift;
ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
shift;
local d f;
for d in "$@";
do
if [[ ${op} == "-u" ]]; then
newls=${ls};
else
newls="";
fi;
for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
do
if [[ ${op} == "-i" ]]; then
hasq ${f} ${ls} && newls="${newls} ${f}";
else
hasq ${f} ${ls} || newls="${newls} ${f}";
fi;
done;
ls=${newls};
done;
else
ls="$@";
fi;
nols="";
newls="";
for f in ${LINGUAS};
do
if hasq ${f} ${ls}; then
newls="${newls} ${f}";
else
nols="${nols} ${f}";
fi;
done;
[[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
export LINGUAS=${newls:1}
}
strip-unsupported-flags ()
{
export CFLAGS=$(test-flags-CC ${CFLAGS});
export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS});
export FFLAGS=$(test-flags-F77 ${FFLAGS});
export FCFLAGS=$(test-flags-FC ${FCFLAGS})
}
tc-arch ()
{
tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel ()
{
tc-ninja_magic_to_arch kern "$@"
}
tc-endian ()
{
local host=$1;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
host=${host%%-*};
case ${host} in
alpha*)
echo big
;;
arm*b*)
echo big
;;
arm*)
echo little
;;
cris*)
echo little
;;
hppa*)
echo big
;;
i?86*)
echo little
;;
ia64*)
echo little
;;
m68*)
echo big
;;
mips*l*)
echo little
;;
mips*)
echo big
;;
powerpc*)
echo big
;;
s390*)
echo big
;;
sh*b*)
echo big
;;
sh*)
echo little
;;
sparc*)
echo big
;;
x86_64*)
echo little
;;
*)
echo wtf
;;
esac
}
tc-export ()
{
local var;
for var in "$@";
do
[[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
eval tc-get${var} > /dev/null;
done
}
tc-getAR ()
{
tc-getPROG AR ar "$@"
}
tc-getAS ()
{
tc-getPROG AS as "$@"
}
tc-getBUILD_CC ()
{
local v;
for v in CC_FOR_BUILD BUILD_CC HOSTCC;
do
if [[ -n ${!v} ]]; then
export BUILD_CC=${!v};
echo "${!v}";
return 0;
fi;
done;
local search=;
if [[ -n ${CBUILD} ]]; then
search=$(type -p ${CBUILD}-gcc);
search=${search##*/};
fi;
search=${search:-gcc};
export BUILD_CC=${search};
echo "${search}"
}
tc-getCC ()
{
tc-getPROG CC gcc "$@"
}
tc-getCPP ()
{
tc-getPROG CPP cpp "$@"
}
tc-getCXX ()
{
tc-getPROG CXX g++ "$@"
}
tc-getF77 ()
{
tc-getPROG F77 f77 "$@"
}
tc-getFC ()
{
tc-getPROG FC gfortran "$@"
}
tc-getGCJ ()
{
tc-getPROG GCJ gcj "$@"
}
tc-getLD ()
{
tc-getPROG LD ld "$@"
}
tc-getNM ()
{
tc-getPROG NM nm "$@"
}
tc-getOBJCOPY ()
{
tc-getPROG OBJCOPY objcopy "$@"
}
tc-getPKG_CONFIG ()
{
tc-getPROG PKG_CONFIG pkg-config "$@"
}
tc-getPROG ()
{
local var=$1;
local prog=$2;
if [[ -n ${!var} ]]; then
echo "${!var}";
return 0;
fi;
local search=;
[[ -n $3 ]] && search=$(type -p "$3-${prog}");
[[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
[[ -n ${search} ]] && prog=${search##*/};
export ${var}=${prog};
echo "${!var}"
}
tc-getRANLIB ()
{
tc-getPROG RANLIB ranlib "$@"
}
tc-getSTRIP ()
{
tc-getPROG STRIP strip "$@"
}
tc-has-tls ()
{
local base="${T}/test-tc-tls";
cat > "${base}.c" <<-EOF
int foo(int *i) {
static __thread int j = 0;
return *i ? j : *i;
}
EOF
local flags;
case $1 in
-s)
flags="-S"
;;
-c)
flags="-c"
;;
-l)
;;
-*)
die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
;;
esac;
: ${flags:=-fPIC -shared -Wl,-z,defs};
[[ $1 == -* ]] && shift;
$(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &>/dev/null;
local ret=$?;
rm -f "${base}"*;
return ${ret}
}
tc-is-cross-compiler ()
{
return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-softfloat ()
{
case ${CTARGET} in
bfin* | h8300*)
echo "only"
;;
*)
[[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
;;
esac
}
tc-is-static-only ()
{
local host=${CTARGET:-${CHOST}};
return $([[ ${host} == *-mint* ]])
}
tc-ninja_magic_to_arch ()
{
function ninj ()
{
[[ ${type} == "kern" ]] && echo $1 || echo $2
};
local type=$1;
local host=$2;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
case ${host} in
alpha*)
echo alpha
;;
arm*)
echo arm
;;
avr*)
ninj avr32 avr
;;
bfin*)
ninj blackfin bfin
;;
cris*)
echo cris
;;
hppa*)
ninj parisc hppa
;;
i?86*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then
echo i386;
else
echo x86;
fi
;;
ia64*)
echo ia64
;;
m68*)
echo m68k
;;
mips*)
echo mips
;;
nios2*)
echo nios2
;;
nios*)
echo nios
;;
powerpc*)
if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then
echo powerpc;
else
if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then
if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
echo powerpc;
else
echo ppc;
fi;
else
if [[ ${host} == powerpc64* ]]; then
echo ppc64;
else
if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
ninj ppc64 ppc;
else
echo ppc;
fi;
fi;
fi;
fi
;;
s390*)
echo s390
;;
sh64*)
ninj sh64 sh
;;
sh*)
echo sh
;;
sparc64*)
ninj sparc64 sparc
;;
sparc*)
[[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
;;
vax*)
echo vax
;;
x86_64*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
echo x86;
else
ninj x86_64 amd64;
fi
;;
*)
echo unknown
;;
esac
}
test-flag-CC ()
{
test-flag-PROG "CC" "$1"
}
test-flag-CXX ()
{
test-flag-PROG "CXX" "$1"
}
test-flag-F77 ()
{
test-flag-PROG "F77" "$1"
}
test-flag-FC ()
{
test-flag-PROG "FC" "$1"
}
test-flag-PROG ()
{
local comp=$1;
local flags="$2";
[[ -z ${comp} || -z ${flags} ]] && return 1;
local PROG=$(tc-get${comp});
${PROG} ${flags} -S -o /dev/null -xc /dev/null > /dev/null 2>&1
}
test-flags ()
{
test-flags-CC "$@"
}
test-flags-CC ()
{
test-flags-PROG "CC" "$@"
}
test-flags-CXX ()
{
test-flags-PROG "CXX" "$@"
}
test-flags-F77 ()
{
test-flags-PROG "F77" "$@"
}
test-flags-FC ()
{
test-flags-PROG "FC" "$@"
}
test-flags-PROG ()
{
local comp=$1;
local flags;
local x;
shift;
[[ -z ${comp} ]] && return 1;
x="";
for x in "$@";
do
test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}";
done;
echo "${flags}";
[[ -n ${flags} ]]
}
test_flag ()
{
ewarn "test_flag: deprecated, please use test-flags()!" 1>&2;
test-flags-CC "$@"
}
test_version_info ()
{
if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
return 0;
else
return 1;
fi
}
treecopy ()
{
dest=${!#};
files_count=$#;
while (( $# > 1 )); do
dirstruct=$(dirname "$1");
mkdir -p "${dest}/${dirstruct}";
cp -pPR "$1" "${dest}/${dirstruct}";
shift;
done
}
unpack_makeself ()
{
local src_input=${1:-${A}};
local src=$(find_unpackable_file "${src_input}");
local skip=$2;
local exe=$3;
[[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
if [[ -z ${skip} ]]; then
local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}');
local skip=0;
exe=tail;
case ${ver} in
1.5.* | 1.6.0-nv)
skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
;;
2.0 | 2.0.1)
skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-)
;;
2.1.1)
skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
let skip="skip + 1"
;;
2.1.2)
skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
let skip="skip + 1"
;;
2.1.3)
skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
let skip="skip + 1"
;;
2.1.4 | 2.1.5)
skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
skip=$(head -n ${skip} "${src}" | wc -c);
exe="dd"
;;
*)
eerror "I'm sorry, but I was unable to support the Makeself file.";
eerror "The version I detected was '${ver}'.";
eerror "Please file a bug about the file ${shrtsrc} at";
eerror "http://bugs.gentoo.org/ so that support can be added.";
die "makeself version '${ver}' not supported"
;;
esac;
debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
fi;
case ${exe} in
tail)
exe="tail -n +${skip} '${src}'"
;;
dd)
exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'"
;;
*)
die "makeself cant handle exe '${exe}'"
;;
esac;
local tmpfile=$(emktemp);
eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
local filetype=$(file -b "${tmpfile}");
case ${filetype} in
*tar\ archive*)
eval ${exe} | tar --no-same-owner -xf -
;;
bzip2*)
eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
;;
gzip*)
eval ${exe} | tar --no-same-owner -xzf -
;;
compress*)
eval ${exe} | gunzip | tar --no-same-owner -xf -
;;
*)
eerror "Unknown filetype \"${filetype}\" ?";
false
;;
esac;
assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv ()
{
local src=$(find_unpackable_file "$1");
local sizeoff_t=$2;
[[ -z ${src} ]] && die "Could not locate source for '$1'";
[[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
local metafile=$(emktemp);
tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
datafile=$(basename "${datafile}");
local tmpfile=$(emktemp);
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
local iscompressed=$(file -b "${tmpfile}");
if [[ ${iscompressed:0:8} == "compress" ]]; then
iscompressed=1;
mv ${tmpfile}{,.Z};
gunzip ${tmpfile};
else
iscompressed=0;
fi;
local istar=$(file -b "${tmpfile}");
if [[ ${istar:0:9} == "POSIX tar" ]]; then
istar=1;
else
istar=0;
fi;
if [ ${iscompressed} -eq 1 ]; then
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
fi;
else
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
fi;
fi;
true
}
validate_desktop_entries ()
{
if [[ -x /usr/bin/desktop-file-validate ]]; then
einfo "Checking desktop entry validity";
local directories="";
for d in /usr/share/applications $@;
do
[[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
done;
if [[ -n ${directories} ]]; then
for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null);
do
local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
[[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
done;
fi;
echo "";
else
einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
fi
}
version_compare ()
{
__versionator_shopt_toggle on;
local ver_a=${1} ver_b=${2} parts_a parts_b cur_idx_a=0 cur_idx_b=0;
parts_a=($(get_all_version_components "${ver_a}" ));
parts_b=($(get_all_version_components "${ver_b}" ));
local inf_loop=0;
while true; do
inf_loop=$(( ${inf_loop} + 1 ));
[[ ${inf_loop} -gt 20 ]] && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
local cur_tok_a=${parts_a[${cur_idx_a}]};
local cur_tok_b=${parts_b[${cur_idx_b}]};
if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
cur_idx_a=$(( ${cur_idx_a} + 1 ));
[[ ${parts_a[${cur_idx_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=$(( ${cur_idx_b} + 1 ));
[[ ${parts_b[${cur_idx_b}]} == "." ]] && cur_idx_b=$(( ${cur_idx_b} + 1 ));
else
cur_tok_b="";
fi;
[[ -z ${cur_tok_a} ]] && [[ -z ${cur_tok_b} ]] && break;
cur_tok_a=${cur_tok_a##+(0)};
cur_tok_b=${cur_tok_b##+(0)};
[[ -z ${cur_tok_a} ]] && cur_tok_a=0;
[[ -z ${cur_tok_b} ]] && cur_tok_b=0;
[[ ${cur_tok_a} -lt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 1;
[[ ${cur_tok_a} -gt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 3;
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=$(( ${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=$(( ${cur_idx_b} + 1 ));
else
letter_b="@";
fi;
[[ ${letter_a} < ${letter_b} ]] && __versionator_shopt_toggle off && return 1;
[[ ${letter_a} > ${letter_b} ]] && __versionator_shopt_toggle off && return 3;
local suffix rule part r_lt r_gt;
for rule in "alpha=1" "beta=1" "pre=1" "rc=1" "p=3" "r=3";
do
suffix=${rule%%=*};
r_lt=${rule##*=};
[[ ${r_lt} -eq 1 ]] && r_gt=3 || r_gt=1;
local suffix_a=;
for part in ${parts_a[@]};
do
[[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_a=${part#${suffix}}0;
done;
local suffix_b=;
for part in ${parts_b[@]};
do
[[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_b=${part#${suffix}}0;
done;
[[ -z ${suffix_a} ]] && [[ -z ${suffix_b} ]] && continue;
[[ -z ${suffix_a} ]] && __versionator_shopt_toggle off && return ${r_gt};
[[ -z ${suffix_b} ]] && __versionator_shopt_toggle off && return ${r_lt};
suffix_a=${suffix_a##+(0)};
suffix_a=${suffix_a:-0};
suffix_b=${suffix_b##+(0)};
suffix_b=${suffix_b:-0};
[[ ${suffix_a} -lt ${suffix_b} ]] && __versionator_shopt_toggle off && return 1;
[[ ${suffix_a} -gt ${suffix_b} ]] && __versionator_shopt_toggle off && return 3;
done;
__versionator_shopt_toggle off;
return 2
}
version_is_at_least ()
{
__versionator_shopt_toggle on;
local want_s="$1" have_s="${2:-${PVR}}" r;
version_compare "${want_s}" "${have_s}";
r=$?;
case $r in
1 | 2)
__versionator_shopt_toggle off;
return 0
;;
3)
__versionator_shopt_toggle off;
return 1
;;
*)
__versionator_shopt_toggle off;
die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
;;
esac;
__versionator_shopt_toggle off
}
version_sort ()
{
__versionator_shopt_toggle on;
local items= left=0;
items=($@);
while [[ ${left} -lt ${#items[@]} ]]; do
local lowest_idx=${left};
local idx=$(( ${lowest_idx} + 1 ));
while [[ ${idx} -lt ${#items[@]} ]]; do
version_compare "${items[${lowest_idx}]}" "${items[${idx}]}";
[[ $? -eq 3 ]] && lowest_idx=${idx};
idx=$(( ${idx} + 1 ));
done;
local tmp=${items[${lowest_idx}]};
items[${lowest_idx}]=${items[${left}]};
items[${left}]=${tmp};
left=$(( ${left} + 1 ));
done;
echo ${items[@]};
__versionator_shopt_toggle off
}
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-amd64] Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-08 10:12 [gentoo-amd64] Failures on updating KDE to 4.4.1 - unable to update kmail Paul Stear
@ 2010-03-08 10:12 ` Paul Stear
2010-03-08 16:54 ` [gentoo-amd64] " Duncan
1 sibling, 0 replies; 10+ messages in thread
From: Paul Stear @ 2010-03-08 10:12 UTC (permalink / raw
To: gentoo-amd64
Hi,
I have been trying for days to get my kde system working again properly.
kmail hasn't been updated yet because kdepim-runtime-4.4.1 fails with the
following error:-
-----------------------------------------------------------------------------
-- The following REQUIRED packages could NOT be located on your system.
-- You must install these packages before continuing.
-----------------------------------------------------------------------------
* Nepomuk <http://www.kde.org>
The Nepomuk libraries
Nepomuk extends the search and tagging functionalities in KMail and
Akonadi
-----------------------------------------------------------------------------
CMake Error at /usr/share/apps/cmake/modules/MacroLogFeature.cmake:141
(MESSAGE):
Exiting: Missing Requirements
Call Stack (most recent call first):
CMakeLists.txt:128 (macro_display_feature_log)
I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems that
kdepim can not find it.
I attach the complete build log and the output of 'emerge -pqv
=kde-base/kdepim-runtime-4.4.1
and The ebuild environment file is located at
'/var/tmp/portage/kde-base/kdepim-runtime-4.4.1/temp/environment
The following is emerge info:
~/ > emerge --info =kde-base/kdepim-runtime-4.4.1
Portage 2.1.8.1 (default/linux/amd64/10.0/desktop, gcc-4.3.4,
glibc-2.11-r1, 2.6.32-gentoo-r1 x86_64)
=================================================================
System Settings
=================================================================
System uname:
Linux-2.6.32-gentoo-r1-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_4600+-with-gentoo-2.0.1
Timestamp of tree: Mon, 08 Mar 2010 07:00:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 4.1_p2
dev-java/java-config: 2.1.10
dev-lang/python: 2.6.4-r1, 3.1.1-r1
dev-util/ccache: 2.4-r8
dev-util/cmake: 2.8.0-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc: 0.6.0-r1
sys-apps/sandbox: 2.2
sys-devel/autoconf: 2.13, 2.65
sys-devel/automake: 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils: 2.20.1
sys-devel/gcc: 4.3.4, 4.4.3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool: 2.2.6b
virtual/os-headers: 2.6.33
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe
-fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/
/etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/java-config/vms/
/etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo
/etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d
/etc/texmf/web2c"
CXXFLAGS="-Os -march=k8 -mno-tls-direct-seg-refs -mmmx -msse3 -pipe
-fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps y"
FEATURES="assume-digests ccache distlocks fixpackages metadata-transfer
news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs
unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org
http://www.ibiblio.org/pub/Linux/distributions/gentoo
http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/
ftp://mirror.qubenet.net/mirror/gentoo/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo
http://pandemonium.tiscali.de/pub/gentoo/"
LANG="en_GB.UTF-8"
LDFLAGS="-Wl,--as-needed,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
LINGUAS="en_GB"
MAKEOPTS="-j5 -s"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times
--compress --force --whole-file --delete --stats --timeout=180
--exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext X a52 aac acl acpi alsa amd64 avi bash-completion
berkdb bluetooth branding bzip2 cairo cdparanoia cdr clamav cli consolekit
cracklib crypt cups cxx dbus divx divx4linux dri dts dv dvb dvd dvdr
dvdread eds embedded emboss encode evo examples fam ffmpeg flac fortran
gdbm gif gphoto2 gpm gstreamer hal iconv imagemagick ipv6 jack java java6
javascript jpeg kde kerberos lame ldap libnotify lm_sensors logrotate mad
mikmod mjpeg mmx mng modules mp3 mp4 mpeg mplayer mudflap multilib mysql
ncurses nls nptl nptlonly nsplugin nvidia ogg opengl openmp pam pascal
pcre pdf perl png ppds pppd python qt3support qt4 quicktime readline
reflection ruby samba scanner sdl session spell spl sql sqlite sse sse2
ssl startup-notification svg sysfs tcpd theora thunar tiff tk truetype
unicode usb v4l vorbis webkit x264 xcomposite xine xinerama xml xml2 xorg
xulrunner xv xvid zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm
alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug
ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route
share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias
authn_anon authn_dbm authn_default authn_file authz_dbm authz_default
authz_groupfile authz_host authz_owner authz_user autoindex cache 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" ELIBC="glibc" INPUT_DEVICES="evdev wacom" KERNEL="linux"
LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb
ncurses text" LINGUAS="en_GB" RUBY_TARGETS="ruby18" USERLAND="GNU"
VIDEO_CARDS="nvidia"
Unset: CPPFLAGS, CTARGET, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS,
PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Any ideas? I just don't know what to try next.
regards
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-08 10:12 [gentoo-amd64] Failures on updating KDE to 4.4.1 - unable to update kmail Paul Stear
2010-03-08 10:12 ` Paul Stear
@ 2010-03-08 16:54 ` Duncan
2010-03-09 11:14 ` Paul Stear
2010-03-10 6:03 ` Duncan
1 sibling, 2 replies; 10+ messages in thread
From: Duncan @ 2010-03-08 16:54 UTC (permalink / raw
To: gentoo-amd64
Paul Stear posted on Mon, 08 Mar 2010 11:12:51 +0100 as excerpted:
> I have been trying for days to get my kde system working again properly.
> kmail hasn't been updated yet because kdepim-runtime-4.4.1 fails with
> the following error:-
[ can't find Nepomuk ]
> I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems
> that kdepim can not find it.
FWIW, I've not upgraded for a couple weeks now, as I've been doing other
things. So I've not yet done the 4.4.1 upgrade myself yet. If someone
else hasn't helped you fix the issue by the time I do, I'll see what
happens when I try, and answer again then.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-08 16:54 ` [gentoo-amd64] " Duncan
@ 2010-03-09 11:14 ` Paul Stear
2010-03-09 23:08 ` Duncan
2010-03-10 6:03 ` Duncan
1 sibling, 1 reply; 10+ messages in thread
From: Paul Stear @ 2010-03-09 11:14 UTC (permalink / raw
To: gentoo-amd64
On Mon, 08 Mar 2010 17:54:01 +0100, Duncan <1i5t5.duncan@cox.net> wrote:
> Paul Stear posted on Mon, 08 Mar 2010 11:12:51 +0100 as excerpted:
>
>> I have been trying for days to get my kde system working again properly.
>> kmail hasn't been updated yet because kdepim-runtime-4.4.1 fails with
>> the following error:-
>
> [ can't find Nepomuk ]
>
>> I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems
>> that kdepim can not find it.
>
> FWIW, I've not upgraded for a couple weeks now, as I've been doing other
> things. So I've not yet done the 4.4.1 upgrade myself yet. If someone
> else hasn't helped you fix the issue by the time I do, I'll see what
> happens when I try, and answer again then.
>
Thanks Duncan, I hope you do not have problems but can still help me.
Just a few other observations:
1, I removed all of kdepim from my system, removed from world etc but if I
tried to upgrade kmail it draged in kdepin-runtime. I just can't see why
kmail should be dependent on kdepim-runtime.
2, Tied in with this might be the problems I had with amarok not working
when mysql was updated. I have masked the mysql update and reverted to
dev-db/mysql-5.0.90-r2, virtual/mysql-5.0, dev-perl/DBD-mysql-4.01.3,
dev-java/jdbc-mysql-5.1.11
I might be leading you up the garden path with this.
I look forward to hearing how your upgrade went,
regards
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-09 11:14 ` Paul Stear
@ 2010-03-09 23:08 ` Duncan
0 siblings, 0 replies; 10+ messages in thread
From: Duncan @ 2010-03-09 23:08 UTC (permalink / raw
To: gentoo-amd64
Paul Stear posted on Tue, 09 Mar 2010 12:14:10 +0100 as excerpted:
> Thanks Duncan, I hope you do not have problems but can still help me.
FWIW, I'm upgrading in the background right now. I'm doing it twice,
~amd64 on my main machine, and ~x86 on the image (on my main machine, but)
for my netbook, some 270+ packages on each, including the non-kde ones (I
don't run a full kde or it'd be more).
FWIW, there were some issues with mysql reported, tho they /should/ be
fixed with the latest versions of everything. That would affect akonadi/
kaddressbook/kmail, which I run, and amarok, which I dumped due to
developers more interested in more features I didn't want (after removing
several I used) than in the fact that they were breaking it for the amd64
segment of their userbase, back when they switched to mysql-embedded.
IMO, you'll be better off choosing a simpler music player, unless of
course you actually /use/ all that database functionality, scoring,
wikipedia artist lookup, etc, and value it above having a player that
actually /works/ for playing /music/. After a bit of research, I went
with mpd and a few chosen front-ends, in part so I could have
uninterrupted play when I wasn't running X and when I was, but there's all
sorts of players for all sorts of styles. And unless your style exactly
matches the amarok one, it's very likely simply way too many complex
dependencies to be worth running it. But if amarok's your style, by all
means, continue to use it! It's just not mine and even when I was running
it back in kde3, I found it rather bloated for my tastes. But the switch
to mysql-embedded was the last straw for me, so I switched, and am very
glad I did. =:^)
More on the rest when I'm done with the upgrade...
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-08 16:54 ` [gentoo-amd64] " Duncan
2010-03-09 11:14 ` Paul Stear
@ 2010-03-10 6:03 ` Duncan
2010-03-10 7:05 ` Paul Stear
1 sibling, 1 reply; 10+ messages in thread
From: Duncan @ 2010-03-10 6:03 UTC (permalink / raw
To: gentoo-amd64
Duncan posted on Mon, 08 Mar 2010 16:54:01 +0000 as excerpted:
> Paul Stear posted on Mon, 08 Mar 2010 11:12:51 +0100 as excerpted:
>
>> I have been trying for days to get my kde system working again
>> properly. kmail hasn't been updated yet because kdepim-runtime-4.4.1
>> fails with the following error:-
>
> [ can't find Nepomuk ]
>
>> I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems
>> that kdepim can not find it.
> I've not yet done the 4.4.1 upgrade myself yet.
Just restarted kde after a successful upgrade, so it worked here. =:^)
And the mysql upgrade must have gone fine as well; the kaddressbook
database came thru it just fine, AFAICT.
So you know it /should/ work, but why it's not, for you...
I'll try to investigate that a bit more later. Just posting a quick
"working here" report ATM.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-10 6:03 ` Duncan
@ 2010-03-10 7:05 ` Paul Stear
2010-03-10 21:34 ` Duncan
0 siblings, 1 reply; 10+ messages in thread
From: Paul Stear @ 2010-03-10 7:05 UTC (permalink / raw
To: gentoo-amd64
On Wed, 10 Mar 2010 07:03:38 +0100, Duncan <1i5t5.duncan@cox.net> wrote:
> Duncan posted on Mon, 08 Mar 2010 16:54:01 +0000 as excerpted:
>
>> Paul Stear posted on Mon, 08 Mar 2010 11:12:51 +0100 as excerpted:
>>
>>> I have been trying for days to get my kde system working again
>>> properly. kmail hasn't been updated yet because kdepim-runtime-4.4.1
>>> fails with the following error:-
>>
>> [ can't find Nepomuk ]
>>
>>> I have installed and re-installed kdebase/nepomuk-4.4.1 but it seems
>>> that kdepim can not find it.
>
>> I've not yet done the 4.4.1 upgrade myself yet.
>
> Just restarted kde after a successful upgrade, so it worked here. =:^)
>
> And the mysql upgrade must have gone fine as well; the kaddressbook
> database came thru it just fine, AFAICT.
>
> So you know it /should/ work, but why it's not, for you...
>
> I'll try to investigate that a bit more later. Just posting a quick
> "working here" report ATM.
>
Thanks for the info Duncan,
I have just un-installed amarok and am starting to upgrade world including
mysql etc.
When I get the system working correctly I will then look for a replacement
to amarok.
Will let you know what happens.
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-10 7:05 ` Paul Stear
@ 2010-03-10 21:34 ` Duncan
2010-03-11 14:48 ` Paul Stear
0 siblings, 1 reply; 10+ messages in thread
From: Duncan @ 2010-03-10 21:34 UTC (permalink / raw
To: gentoo-amd64
Paul Stear posted on Wed, 10 Mar 2010 08:05:32 +0100 as excerpted:
> I have just un-installed amarok and am starting to upgrade world
> including mysql etc.
One additional thing I should mention. For me it's routine so sometimes I
forget that it may not be that way for everyone.
The scriptlets I normally use to upgrade all use -NuD, so an update is
always a FULL update, all the way thru the dependencies (deep), and
updating any packages with changed USE flags as well. Personally, I don't
have much use for half-way updates, as I believe they'll cause me more
pain than the time they'll save.
Similarly, I always finish with a scriptlet that runs lafilefixer
--justfixit, and then revdep-rebuild $* -- -a1. (Actually, it's slightly
more complicated than that, as I source a config file that sets a parallel
jobs environmental variable, and add that variable to the revdep-rebuild
command line as well, so it takes advantage of portage's parallel emerge
features where it can.) Of course, Between lafilefixer and the fact that
I run as-needed in my LDFLAGS, my revdep-rebuild load is far lower than it
would be otherwise, which helps. =:^)
Then another scriptlet runs emerge --ask --depclean, and if it cleaned
anything major, I run the rebuild scriptlet again just to double-check
that the removals didn't leave any hanging needed rebuilds.
Of course, another scriptlet takes care of the etc-updates.
So when I'm done, not only are all dependencies deep updated along with
all packages with new USE flags, but I've ensured all stale linkages are
fixed and removed all the old no longer depended packages as well,
rerunning the stale linkages check after the cruft removal.
I also take care to read all the elogged messages (or at least skim them,
as most are repeats I'm familiar with by now) and do all the config
updates.
I'm unsure how many problems such a thoroughly proactive update regime
saves me, but I'm sure it's non-zero. If you're not regularly running
revdep-rebuild after updates, try it, with --ask or --pretend first, as
you may have quite a few rebuilds built up the first time you run it. The
--newuse and --deep emerge flags are mostly me being extra cautious (plus
I just like being updated thru and thru), as in theory they shouldn't be
needed. But it shouldn't need stated that theory doesn't always match
reality. And if you're not running emerge --depclean routinely, do be
extremely careful the first few times you run it, absolutely run it with
--pretend the first time, and go thru its list looking for stuff you want
to keep and add it to your world file (emerge --select --noreplace),
before running --depclean for real. Removing that cruft does help because
sometimes packages get mixed up and link to the old versions, if they're
still around. Plus, there's potential security vulns to think about,
since they're no longer in the dependency tree portage checks for updates.
Using such a program, you should proactively avoid many problems, and then
you'll be the one shrugging your shoulders and saying "it works for me."
=:^) Of course it won't fix them all, but the ones that are left are much
more likely to have real bugs associated with them, not the fuzzy bugs
associated with a system not kept in peak running order.
(Also keep in mind that perl-cleaner and python-updater are the parallel
to revdep-rebuild in their respective language domains. But unless you're
doing python/perl development or scripting on your own, it's unlikely
you'll need them as often as revdep-rebuild, as the number of apps using
them isn't as high, and the usage isn't as "system-core", as C/C++.)
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-10 21:34 ` Duncan
@ 2010-03-11 14:48 ` Paul Stear
2010-03-12 11:37 ` Paul Stear
0 siblings, 1 reply; 10+ messages in thread
From: Paul Stear @ 2010-03-11 14:48 UTC (permalink / raw
To: gentoo-amd64
Hi again,
Well my system seems to be working now all accept nepomuk which is
installed but the following programs can't find it !!!!
[ebuild R ] kde-base/kde-meta-4.4.1 USE="nls semantic-desktop*
-accessibility (-aqua) (-kdeprefix)" 0 kB
[ebuild N ] kde-base/kdepim-meta-4.4.1 USE="semantic-desktop (-aqua)
(-kdeprefix)" 0 kB
[ebuild N ] kde-base/kaddressbook-4.4.1 USE="handbook kontact
(-aqua) -debug (-kdeenablefinal) (-kdeprefix)" 0 kB
[ebuild N ] kde-base/akonadi-4.4.1 USE="(-aqua) -debug
(-kdeenablefinal) (-kdeprefix)" 0 kB
[ebuild N ] kde-base/kmail-4.4.1 USE="handbook kontact (-aqua)
-ayatana -debug (-kdeenablefinal) (-kdeprefix)" 0 kB
[nomerge ] kde-base/kde-meta-4.4.1 USE="nls semantic-desktop*
-accessibility (-aqua) (-kdeprefix)"
[nomerge ] kde-base/kdegraphics-meta-4.4.1 USE="(-aqua)
(-kdeprefix)"
[ebuild R ] kde-base/gwenview-4.4.1-r1 USE="handbook
semantic-desktop* (-aqua) -debug (-kdeenablefinal) (-kdeprefix) -kipi" 0 kB
[nomerge ] kde-base/kdepim-meta-4.4.1 USE="semantic-desktop (-aqua)
(-kdeprefix)"
[ebuild N ] kde-base/kdepim-runtime-4.4.1 USE="(-aqua) -debug
(-kdeenablefinal) (-kdeprefix)" 0 kB
I wonder if I have a link missing
What starts nepomuk ?
A few weeks ago on this list was a mail about switching on
indexing/semantic-desktop. I did this and all worked well until my update
to kde 4.4.1.
I thought I would check to see if semantic-desktop was turned on but for
the life of me I can't find that option anywhere.
Any thoughts?
This is driving me crazy, I'm sure the solution will be something simple.
Any help appreciated
regards
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [gentoo-amd64] Re: Failures on updating KDE to 4.4.1 - unable to update kmail
2010-03-11 14:48 ` Paul Stear
@ 2010-03-12 11:37 ` Paul Stear
0 siblings, 0 replies; 10+ messages in thread
From: Paul Stear @ 2010-03-12 11:37 UTC (permalink / raw
To: gentoo-amd64
My problems are now resolved, after changing gcc and doing various updates
I finally emerged kdelibs again and then kdepim and kmail installed with
no problems.
Thanks to all who helped,
regards
Paul
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-03-12 12:03 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-08 10:12 [gentoo-amd64] Failures on updating KDE to 4.4.1 - unable to update kmail Paul Stear
2010-03-08 10:12 ` Paul Stear
2010-03-08 16:54 ` [gentoo-amd64] " Duncan
2010-03-09 11:14 ` Paul Stear
2010-03-09 23:08 ` Duncan
2010-03-10 6:03 ` Duncan
2010-03-10 7:05 ` Paul Stear
2010-03-10 21:34 ` Duncan
2010-03-11 14:48 ` Paul Stear
2010-03-12 11:37 ` Paul Stear
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox