rendered paste bodyALSA_CARDS='ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci'
ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol'
ANT_HOME=/usr/share/ant-core
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'
ARCH=x86
CBUILD=i686-pc-linux-gnu
CDEFINE_default=__unix__
CFLAGS='-O2 -march=i686 -pipe'
CFLAGS_default=
CHOST=i686-pc-linux-gnu
CHOST_default=i686-pc-linux-gnu
CLASSPATH=.
CTARGET_default=i686-pc-linux-gnu
CVS_RSH=ssh
CXXFLAGS='-O2 -march=i686 -pipe'
DEFAULT_ABI=default
DEPEND=$'|| ( >=app-i18n/scim-1.4.4 >=app-i18n/scim-cvs-1.4.4 )\n\tdev-util/pkgconfig =kde-base/kdelibs-3.5* || ( =x11-libs/qt-3.3* =x11-libs/qt-3.2* ) '
DESCRIPTION='Smart Common Input Method (SCIM) optimized for KDE'
DESTTREE=/usr
DIROPTIONS=-m0755
EAPI=
ELIBC=glibc
EPATCH_EXCLUDE=
EPATCH_FORCE=no
EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...'
EPATCH_OPTS='-g0 -E --no-backup-if-mismatch'
EPATCH_SINGLE_MSG=
EPATCH_SOURCE=/var/tmp/portage/app-i18n/skim-1.4.5/work/patch
EPATCH_SUFFIX=patch.bz2
EXEOPTIONS=-m0755
FEATURES='ccache collision-protect distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch'
GCC_SPECS=
GDK_USE_XFT=1
HOMEPAGE=http://www.scim-im.org/
IFSBACKUP=$' \t\n'
INHERITED='toolchain-funcs qt3 portability versionator multilib kde-functions eutils'
INPUT_DEVICES='keyboard mouse evdev'
INSDESTTREE=
INSOPTIONS=-m0644
IUSE=
KDEDIR=/usr/kde/3.5
KDEDIRS=/usr:/usr/local:/usr/kde/3.5
KDEMAJORVER=3
KDEMINORVER=2
KDEREVISION=0
KDEVER=3.2
KDE_DERIVATION_MAP=$'\nkde-base/kdeaccessibility kde-base/kbstateapplet\nkde-base/kdeaccessibility kde-base/kdeaccessibility-iconthemes\nkde-base/kdeaccessibility kde-base/kmag\nkde-base/kdeaccessibility kde-base/kmousetool\nkde-base/kdeaccessibility kde-base/kmouth\nkde-base/kdeaccessibility kde-base/kttsd\nkde-base/kdeaccessibility kde-base/ksayit\nkde-base/kdeaddons kde-base/atlantikdesigner\nkde-base/kdeaddons kde-base/kaddressbook-plugins\nkde-base/kdeaddons kde-base/kate-plugins\nkde-base/kdeaddons kde-base/kdeaddons-docs-konq-plugins\nkde-base/kdeaddons kde-base/kdeaddons-kfile-plugins\nkde-base/kdeaddons kde-base/kicker-applets\nkde-base/kdeaddons kde-base/knewsticker-scripts\nkde-base/kdeaddons kde-base/konq-plugins\nkde-base/kdeaddons kde-base/konqueror-akregator\nkde-base/kdeaddons kde-base/ksig\nkde-base/kdeaddons kde-base/noatun-plugins\nkde-base/kdeaddons kde-base/renamedlg-audio\nkde-base/kdeaddons kde-base/renamedlg-images\nkde-base/kdeadmin kde-base/kcron\nkde-base/kdeadmin kde-base/kdat\nkde-base/kdeadmin kde-base/kdeadmin-kfile-plugins\nkde-base/kdeadmin kde-base/knetworkconf\nkde-base/kdeadmin kde-base/kpackage\nkde-base/kdeadmin kde-base/ksysv\nkde-base/kdeadmin kde-base/kuser\nkde-base/kdeadmin kde-base/lilo-config\nkde-base/kdeadmin kde-base/secpolicy\nkde-base/kdeartwork kde-base/kdeartwork-emoticons\nkde-base/kdeartwork kde-base/kdeartwork-icewm-themes\nkde-base/kdeartwork kde-base/kdeartwork-iconthemes\nkde-base/kdeartwork kde-base/kdeartwork-kscreensaver\nkde-base/kdeartwork kde-base/kdeartwork-kwin-styles\nkde-base/kdeartwork kde-base/kdeartwork-kworldclock\nkde-base/kdeartwork kde-base/kdeartwork-kworldwatch\nkde-base/kdeartwork kde-base/kdeartwork-sounds\nkde-base/kdeartwork kde-base/kdeartwork-styles\nkde-base/kdeartwork kde-base/kdeartwork-wallpapers\nkde-base/kdebase kde-base/drkonqi\nkde-base/kdebase kde-base/kappfinder\nkde-base/kdebase kde-base/kate\nkde-base/kdebase kde-base/kcheckpass\nkde-base/kdebase kde-base/kcminit\nkde-base/kdebase kde-base/kcontrol\nkde-base/kdebase kde-base/kdcop\nkde-base/kdebase kde-base/kdebase-data\nkde-base/kdebase kde-base/kdebase-kioslaves\nkde-base/kdebase kde-base/kdebase-startkde\nkde-base/kdebase kde-base/kdebugdialog\nkde-base/kdebase kde-base/kdepasswd\nkde-base/kdebase kde-base/kdeprint\nkde-base/kdebase kde-base/kdesktop\nkde-base/kdebase kde-base/kdesu\nkde-base/kdebase kde-base/kdialog\nkde-base/kdebase kde-base/kdm\nkde-base/kdebase kde-base/kfind\nkde-base/kdebase kde-base/khelpcenter\nkde-base/kdebase kde-base/khotkeys\nkde-base/kdebase kde-base/kicker\nkde-base/kdebase kde-base/klipper\nkde-base/kdebase kde-base/kmenuedit\nkde-base/kdebase kde-base/knetattach\nkde-base/kdebase kde-base/konqueror\nkde-base/kdebase kde-base/konsole\nkde-base/kdebase kde-base/kpager\nkde-base/kdebase kde-base/kpersonalizer\nkde-base/kdebase kde-base/kreadconfig\nkde-base/kdebase kde-base/kscreensaver\nkde-base/kdebase kde-base/ksmserver\nkde-base/kdebase kde-base/ksplashml\nkde-base/kdebase kde-base/kstart\nkde-base/kdebase kde-base/ksysguard\nkde-base/kdebase kde-base/ksystraycmd\nkde-base/kdebase kde-base/ktip\nkde-base/kdebase kde-base/kwin\nkde-base/kdebase kde-base/kxkb\nkde-base/kdebase kde-base/libkonq\nkde-base/kdebase kde-base/nsplugins\nkde-base/kdebindings kde-base/dcopc\nkde-base/kdebindings kde-base/dcopjava\nkde-base/kdebindings kde-base/dcopperl\nkde-base/kdebindings kde-base/dcoppython\nkde-base/kdebindings kde-base/kalyptus\nkde-base/kdebindings kde-base/kdejava\nkde-base/kdebindings kde-base/kjsembed\nkde-base/kdebindings kde-base/korundum\nkde-base/kdebindings kde-base/pykde\nkde-base/kdebindings kde-base/qtjava\nkde-base/kdebindings kde-base/qtruby\nkde-base/kdebindings kde-base/qtsharp\nkde-base/kdebindings kde-base/smoke\nkde-base/kdebindings kde-base/xparts\nkde-base/kdeedu kde-base/blinken\nkde-base/kdeedu kde-base/kalzium\nkde-base/kdeedu kde-base/kanagram\nkde-base/kdeedu kde-base/kbruch\nkde-base/kdeedu kde-base/kdeedu-applnk\nkde-base/kdeedu kde-base/keduca\nkde-base/kdeedu kde-base/kgeography\nkde-base/kdeedu kde-base/khangman\nkde-base/kdeedu kde-base/kig\nkde-base/kdeedu kde-base/kiten\nkde-base/kdeedu kde-base/klatin\nkde-base/kdeedu kde-base/klettres\nkde-base/kdeedu kde-base/kmathtool\nkde-base/kdeedu kde-base/kmessedwords\nkde-base/kdeedu kde-base/kmplot\nkde-base/kdeedu kde-base/kpercentage\nkde-base/kdeedu kde-base/kstars\nkde-base/kdeedu kde-base/ktouch\nkde-base/kdeedu kde-base/kturtle\nkde-base/kdeedu kde-base/kverbos\nkde-base/kdeedu kde-base/kvoctrain\nkde-base/kdeedu kde-base/kwordquiz\nkde-base/kdeedu kde-base/libkdeedu\nkde-base/kdegames kde-base/atlantik\nkde-base/kdegames kde-base/kasteroids\nkde-base/kdegames kde-base/katomic\nkde-base/kdegames kde-base/kbackgammon\nkde-base/kdegames kde-base/kbattleship\nkde-base/kdegames kde-base/kblackbox\nkde-base/kdegames kde-base/kbounce\nkde-base/kdegames kde-base/kenolaba\nkde-base/kdegames kde-base/kfouleggs\nkde-base/kdegames kde-base/kgoldrunner\nkde-base/kdegames kde-base/kjumpingcube\nkde-base/kdegames kde-base/klickety\nkde-base/kdegames kde-base/klines\nkde-base/kdegames kde-base/kmahjongg\nkde-base/kdegames kde-base/kmines\nkde-base/kdegames kde-base/knetwalk\nkde-base/kdegames kde-base/kolf\nkde-base/kdegames kde-base/konquest\nkde-base/kdegames kde-base/kpat\nkde-base/kdegames kde-base/kpoker\nkde-base/kdegames kde-base/kreversi\nkde-base/kdegames kde-base/ksame\nkde-base/kdegames kde-base/kshisen\nkde-base/kdegames kde-base/ksirtet\nkde-base/kdegames kde-base/ksmiletris\nkde-base/kdegames kde-base/ksnake\nkde-base/kdegames kde-base/ksokoban\nkde-base/kdegames kde-base/kspaceduel\nkde-base/kdegames kde-base/ktron\nkde-base/kdegames kde-base/ktuberling\nkde-base/kdegames kde-base/kwin4\nkde-base/kdegames kde-base/libkdegames\nkde-base/kdegames kde-base/libksirtet\nkde-base/kdegames kde-base/lskat\nkde-base/kdegraphics kde-base/kamera\nkde-base/kdegraphics kde-base/kcoloredit\nkde-base/kdegraphics kde-base/kdegraphics-kfile-plugins\nkde-base/kdegraphics kde-base/kdvi\nkde-base/kdegraphics kde-base/kfax\nkde-base/kdegraphics kde-base/kgamma\nkde-base/kdegraphics kde-base/kghostview\nkde-base/kdegraphics kde-base/kiconedit\nkde-base/kdegraphics kde-base/kmrml\nkde-base/kdegraphics kde-base/kolourpaint\nkde-base/kdegraphics kde-base/kooka\nkde-base/kdegraphics kde-base/kpdf\nkde-base/kdegraphics kde-base/kpovmodeler\nkde-base/kdegraphics kde-base/kruler\nkde-base/kdegraphics kde-base/ksnapshot\nkde-base/kdegraphics kde-base/ksvg\nkde-base/kdegraphics kde-base/kuickshow\nkde-base/kdegraphics kde-base/kview\nkde-base/kdegraphics kde-base/kviewshell\nkde-base/kdegraphics kde-base/libkscan\nkde-base/kdemultimedia kde-base/akode\nkde-base/kdemultimedia kde-base/artsplugin-akode\nkde-base/kdemultimedia kde-base/artsplugin-audiofile\nkde-base/kdemultimedia kde-base/artsplugin-mpeglib\nkde-base/kdemultimedia kde-base/artsplugin-mpg123\nkde-base/kdemultimedia kde-base/artsplugin-xine\nkde-base/kdemultimedia kde-base/juk\nkde-base/kdemultimedia kde-base/kaboodle\nkde-base/kdemultimedia kde-base/kaudiocreator\nkde-base/kdemultimedia kde-base/kdemultimedia-arts\nkde-base/kdemultimedia kde-base/kdemultimedia-kappfinder-data\nkde-base/kdemultimedia kde-base/kdemultimedia-kfile-plugins\nkde-base/kdemultimedia kde-base/kdemultimedia-kioslaves\nkde-base/kdemultimedia kde-base/kmid\nkde-base/kdemultimedia kde-base/kmix\nkde-base/kdemultimedia kde-base/krec\nkde-base/kdemultimedia kde-base/kscd\nkde-base/kdemultimedia kde-base/libkcddb\nkde-base/kdemultimedia kde-base/mpeglib\nkde-base/kdemultimedia kde-base/noatun\nkde-base/kdenetwork kde-base/dcoprss\nkde-base/kdenetwork kde-base/kdenetwork-filesharing\nkde-base/kdenetwork kde-base/kdenetwork-kfile-plugins\nkde-base/kdenetwork kde-base/kdict\nkde-base/kdenetwork kde-base/kdnssd\nkde-base/kdenetwork kde-base/kget\nkde-base/kdenetwork kde-base/knewsticker\nkde-base/kdenetwork kde-base/kopete\nkde-base/kdenetwork kde-base/kpf\nkde-base/kdenetwork kde-base/kppp\nkde-base/kdenetwork kde-base/krdc\nkde-base/kdenetwork kde-base/krfb\nkde-base/kdenetwork kde-base/ksirc\nkde-base/kdenetwork kde-base/ktalkd\nkde-base/kdenetwork kde-base/kwifimanager\nkde-base/kdenetwork kde-base/librss\nkde-base/kdenetwork kde-base/lisa\nkde-base/kdepim kde-base/akregator\nkde-base/kdepim kde-base/certmanager\nkde-base/kdepim kde-base/kaddressbook\nkde-base/kdepim kde-base/kalarm\nkde-base/kdepim kde-base/kandy\nkde-base/kdepim kde-base/karm\nkde-base/kdepim kde-base/kdepim-kioslaves\nkde-base/kdepim kde-base/kdepim-kresources\nkde-base/kdepim kde-base/kdepim-wizards\nkde-base/kdepim kde-base/kitchensync\nkde-base/kdepim kde-base/kmail\nkde-base/kdepim kde-base/kmailcvt\nkde-base/kdepim kde-base/knode\nkde-base/kdepim kde-base/knotes\nkde-base/kdepim kde-base/kode\nkde-base/kdepim kde-base/konsolekalendar\nkde-base/kdepim kde-base/kontact\nkde-base/kdepim kde-base/kontact-specialdates\nkde-base/kdepim kde-base/korganizer\nkde-base/kdepim kde-base/korn\nkde-base/kdepim kde-base/kpilot\nkde-base/kdepim kde-base/ksync\nkde-base/kdepim kde-base/ktnef\nkde-base/kdepim kde-base/libkcal\nkde-base/kdepim kde-base/libkdenetwork\nkde-base/kdepim kde-base/libkdepim\nkde-base/kdepim kde-base/libkholidays\nkde-base/kdepim kde-base/libkmime\nkde-base/kdepim kde-base/libkpgp\nkde-base/kdepim kde-base/libkpimexchange\nkde-base/kdepim kde-base/libkpimidentities\nkde-base/kdepim kde-base/libksieve\nkde-base/kdepim kde-base/mimelib\nkde-base/kdepim kde-base/networkstatus\nkde-base/kdesdk kde-base/cervisia\nkde-base/kdesdk kde-base/kapptemplate\nkde-base/kdesdk kde-base/kbabel\nkde-base/kdesdk kde-base/kbugbuster\nkde-base/kdesdk kde-base/kcachegrind\nkde-base/kdesdk kde-base/kdesdk-kfile-plugins\nkde-base/kdesdk kde-base/kdesdk-kioslaves\nkde-base/kdesdk kde-base/kdesdk-misc\nkde-base/kdesdk kde-base/kdesdk-scripts\nkde-base/kdesdk kde-base/kmtrace\nkde-base/kdesdk kde-base/kompare\nkde-base/kdesdk kde-base/kspy\nkde-base/kdesdk kde-base/kuiviewer\nkde-base/kdesdk kde-base/umbrello\nkde-base/kdetoys kde-base/amor\nkde-base/kdetoys kde-base/eyesapplet\nkde-base/kdetoys kde-base/fifteenapplet\nkde-base/kdetoys kde-base/kmoon\nkde-base/kdetoys kde-base/kodo\nkde-base/kdetoys kde-base/kteatime\nkde-base/kdetoys kde-base/ktux\nkde-base/kdetoys kde-base/kweather\nkde-base/kdetoys kde-base/kworldclock\nkde-base/kdetoys kde-base/kworldwatch\nkde-base/kdeutils kde-base/ark\nkde-base/kdeutils kde-base/kcalc\nkde-base/kdeutils kde-base/kcharselect\nkde-base/kdeutils kde-base/kdelirc\nkde-base/kdeutils kde-base/kdf\nkde-base/kdeutils kde-base/kedit\nkde-base/kdeutils kde-base/kfloppy\nkde-base/kdeutils kde-base/kgpg\nkde-base/kdeutils kde-base/khexedit\nkde-base/kdeutils kde-base/kjots\nkde-base/kdeutils kde-base/klaptopdaemon\nkde-base/kdeutils kde-base/kmilo\nkde-base/kdeutils kde-base/kregexpeditor\nkde-base/kdeutils kde-base/ksim\nkde-base/kdeutils kde-base/ktimer\nkde-base/kdeutils kde-base/kwalletmanager\nkde-base/kdeutils kde-base/superkaramba\nkde-base/kdewebdev kde-base/kfilereplace\nkde-base/kdewebdev kde-base/kimagemapeditor\nkde-base/kdewebdev kde-base/klinkstatus\nkde-base/kdewebdev kde-base/kommander\nkde-base/kdewebdev kde-base/kxsldbg\nkde-base/kdewebdev kde-base/quanta\napp-office/koffice app-office/karbon\napp-office/koffice app-office/kchart\napp-office/koffice app-office/kexi\napp-office/koffice app-office/kformula\napp-office/koffice app-office/kivio\napp-office/koffice app-office/koffice-data\napp-office/koffice app-office/koffice-libs\napp-office/koffice app-office/koffice-meta\napp-office/koffice app-office/koshell\napp-office/koffice app-office/kplato\napp-office/koffice app-office/kpresenter\napp-office/koffice app-office/krita\napp-office/koffice app-office/kspread\napp-office/koffice app-office/kugar\napp-office/koffice app-office/kword\n'
KERNEL=linux
KERNEL_ABI=default
KEYWORDS='alpha amd64 hppa ppc ppc64 sparc x86 ~x86-fbsd'
KV=2.6.23-gentoo-r8
LANG=en_US.UTF-8
LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text'
LDFLAGS_default=
LIBDIR_default=lib
LIBOPTIONS=-m0644
LICENSE=GPL-2
MAKEOPTS=-j2
MULTILIB_ABIS=default
OPENGL_PROFILE=nvidia
PDEPEND=' '
PKG_CONFIG_PATH=/usr/qt/3/lib/pkgconfig
PREFIX=/usr
PRELINK_PATH_MASK=/usr/lib/gstreamer-0.10
PROVIDE=
PYTHONPATH=/usr/lib/portage/pym
QMAKESPEC=linux-g++
QT=qt
QT3MAJORVERSIONS='3.3 3.2 3.1 3.0'
QT3VERSIONS='3.3.8-r4 3.3.8-r3 3.3.8-r2 3.3.8-r1 3.3.8 3.3.6-r5 3.3.6-r4 3.3.6-r3 3.3.6-r2 3.3.6-r1 3.3.6 3.3.5-r1 3.3.5 3.3.4-r9 3.3.4-r8 3.3.4-r7 3.3.4-r6 3.3.4-r5 3.3.4-r4 3.3.4-r3 3.3.4-r2 3.3.4-r1 3.3.4 3.3.3-r3 3.3.3-r2 3.3.3-r1 3.3.3 3.3.2 3.3.1-r2 3.3.1-r1 3.3.1 3.3.0-r1 3.3.0 3.2.3-r1 3.2.3 3.2.2-r1 3.2.2 3.2.1-r2 3.2.1-r1 3.2.1 3.2.0 3.1.2-r4 3.1.2-r3 3.1.2-r2 3.1.2-r1 3.1.2 3.1.1-r2 3.1.1-r1 3.1.1 3.1.0-r3 3.1.0-r2 3.1.0-r1 3.1.0'
QTDIR=/usr/qt/3
QTPKG=x11-libs/qt-
QTVER=3.2
RDEPEND='|| ( >=app-i18n/scim-1.4.4 >=app-i18n/scim-cvs-1.4.4 ) =kde-base/kdelibs-3.5* || ( =x11-libs/qt-3.3* =x11-libs/qt-3.2* ) '
RESTRICT=
S=/var/tmp/portage/app-i18n/skim-1.4.5/work/skim-1.4.5
SANDBOX_DENY=/etc/ld.so.preload
SANDBOX_PREDICT=:/dev/console:/dev/random:/proc/self/maps:/usr/lib/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/usr/qt/3/etc/settings:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.:
SANDBOX_READ=:/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache:
SANDBOX_WRITE=:/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/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/qt/3/etc/settings:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.bash_history:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.gconfd/lock:
SLOT=0
SRC_URI=$'mirror://sourceforge/scim/skim-1.4.5.tar.bz2\n\thttp://freedesktop.org/~cougar/skim/downloads/skim-1.4.5.tar.bz2'
SUDO_COMMAND='/usr/bin/emerge skim'
SUDO_GID=1000
SUDO_UID=1000
SUDO_USER=faraaz
USE='elibc_glibc kernel_linux userland_GNU x86'
USERLAND=GNU
USERNAME=root
VIDEO_CARDS='fbdev glint i810 mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo'
XDG_DATA_DIRS=/usr/share:/usr/kde/3.5/share:/usr/local/share
_=_RC_GET_KV_CACHE
_E_DOCDESTTREE_=
_E_EXEDESTTREE_=
___ECLASS_RECUR_MULTILIB=yes
___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes
_pipestatus='0 0'
conf=skim-1.4.5-r0
selected_version=3.2
str='need-qt: entering function'
x_DEPEND='|| ( >=app-i18n/scim-1.4.4 >=app-i18n/scim-cvs-1.4.4 ) =kde-base/kdelibs-3.5*'
__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
}
_epatch_assert ()
{
local _pipestatus=${PIPESTATUS[*]};
[[ ${_pipestatus// /} -eq 0 ]]
}
_epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
}
_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 ]]
}
buildsycoca ()
{
[[ $EBUILD_PHASE != postinst ]] && [[ $EBUILD_PHASE != postrm ]] && die "buildsycoca() has to be calles in pkg_postinst() and pkg_postrm().";
if [[ -x ${KDEDIR}/bin/kbuildsycoca ]] && [[ -z ${ROOT} || ${ROOT} == "/" ]]; then
mkdir -p /usr/share/services;
chown root:0 /usr/share/services;
chmod 0755 /usr/share/services;
ebegin "Running kbuildsycoca to build global database";
XDG_DATA_DIRS="/usr/share:${KDEDIR}/share:/usr/local/share";
"${KDEDIR}"/bin/kbuildsycoca --global --noincremental >&/dev/null;
eend $?;
fi
}
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;
[ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
local l="`basename ${lic}`";
local shopts=$-;
local alic;
set -o noglob;
for alic in ${ACCEPT_LICENSE};
do
if [[ ${alic} == ${l} ]]; then
set +o noglob;
set -${shopts};
return 0;
fi;
done;
set +o noglob;
set -$shopts;
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
}
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 ()
{
local basedir file;
for basedir in "$@";
do
for file in $(find "${D}"/${basedir} -type f);
do
echo ${file/${D}\/${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=$@;
dodir ${dest};
local basedir;
for basedir in ${basedirs};
do
local dir;
for dir in $(find ${D}/${basedir} -type d);
do
dodir ${dest}/${dir/${D}\/${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
}
deprange ()
{
local list="$(deprange-list $@)";
if [[ ${list%% *} == "${list}" ]]; then
echo "${list}";
else
echo "|| ( ${list} )";
fi
}
deprange-dual ()
{
local MIN=$1 MAX=$2 NEWDEP="";
shift;
shift;
for PACKAGE in $@;
do
PARENT=$(get-parent-package $PACKAGE);
NEWDEP="$NEWDEP || ( $(deprange-list $MIN $MAX $PACKAGE)";
if [[ "$PARENT" != "$(get-parent-package $CATEGORY/$PN)" ]]; then
NEWDEP="$NEWDEP $(deprange-list $MIN $MAX $PARENT)";
fi;
NEWDEP="$NEWDEP )";
done;
echo -n $NEWDEP
}
deprange-iterate-numbers ()
{
local package=$1 lower=$2 upper=$3 i newdep="";
for ((i=$upper ; $i >= $lower ; i-- ))
do
newdep="$newdep ${package}${i}";
done;
echo -n $newdep
}
deprange-iterate-suffixes ()
{
local NAME=$1 MINSUFFIX=$2 MAXSUFFIX=$3;
if [[ "$MINSUFFIX" != "${MINSUFFIX/-}" ]]; then
local MINREV=${MINSUFFIX##*-};
fi;
MINSUFFIX=${MINSUFFIX%-*};
local MINalpha MINbeta MINpre MINrc;
if [[ "$MINSUFFIX" != "${MINSUFFIX/alpha}" ]]; then
MINalpha="${MINSUFFIX##alpha}";
else
if [[ "$MINSUFFIX" != "${MINSUFFIX/beta}" ]]; then
MINbeta="${MINSUFFIX##beta}";
else
if [[ "$MINSUFFIX" != "${MINSUFFIX/pre}" ]]; then
MINpre="${MINSUFFIX##pre}";
else
if [[ "$MINSUFFIX" != "${MINSUFFIX/rc}" ]]; then
MINrc="${MINSUFFIX##rc}";
else
die "deprange(): version suffix $MINSUFFIX (probably _pN) not supported";
fi;
fi;
fi;
fi;
local MAXalpha MAXbeta MAXpre MAXrc;
if [[ "$MAXSUFFIX" != "${MAXSUFFIX/alpha}" ]]; then
MAXalpha="${MAXSUFFIX##alpha}";
else
if [[ "$MAXSUFFIX" != "${MAXSUFFIX/beta}" ]]; then
MAXbeta="${MAXSUFFIX##beta}";
else
if [[ "$MAXSUFFIX" != "${MAXSUFFIX/pre}" ]]; then
MAXpre="${MAXSUFFIX##pre}";
else
if [[ "$MAXSUFFIX" != "${MAXSUFFIX/rc}" ]]; then
MAXrc="${MAXSUFFIX##rc}";
else
die "deprange(): version suffix $MAXSUFFIX (probably _pN) not supported";
fi;
fi;
fi;
fi;
local started="" NEWDEP="" var;
for suffix in rc pre beta alpha;
do
local upper="" lower="";
if [[ -n "$started" ]]; then
upper=10;
else
var=MAX$suffix;
if [[ -n "${!var}" ]]; then
upper=${!var};
started=yes;
fi;
fi;
if [[ -n "$upper" ]]; then
var=MIN$suffix;
if [[ -n "${!var}" ]]; then
lower=${!var};
if [[ -n "$MINREV" ]]; then
let lower++;
fi;
else
lower=1;
fi;
NEWDEP="$NEWDEP
$(deprange-iterate-numbers ${NAME}_${suffix} $lower $upper)";
if [[ -n "${!var}" ]]; then
break;
fi;
fi;
done;
echo -n $NEWDEP
}
deprange-list ()
{
local MINVER=$1;
shift;
local MAXVER=$1;
shift;
if [[ "$MINVER" == "3.5_beta1" ]]; then
MINVER="3.5.0_beta1";
FINALOPTIONVER="3.5_beta1";
fi;
if [[ "$MAXVER" == "3.5_beta1" ]]; then
MAXVER="3.5.0_beta1";
fi;
local BASEVER=${MINVER%.*};
if [[ "${MAXVER%.*}" != "$BASEVER" ]]; then
die "deprange(): unsupported parameters $MINVER $MAXVER - BASEVER must be identical";
fi;
local MINSUFFIX MAXSUFFIX;
if [[ "$MINVER" != "${MINVER/_}" ]]; then
MINSUFFIX=${MINVER##*_};
SUFFIXLESSMINVER=${MINVER%_*};
else
SUFFIXLESSMINVER=$MINVER;
fi;
if [[ "$MAXVER" != "${MAXVER/_}" ]]; then
MAXSUFFIX=${MAXVER##*_};
SUFFIXLESSMAXVER=${MAXVER%_*};
else
SUFFIXLESSMAXVER=$MAXVER;
fi;
if [[ "$MINVER" != "${MINVER/-}" ]]; then
local MINREV=${MINVER##*-};
fi;
local MINMINOR=${SUFFIXLESSMINVER##*.};
local MAXMINOR=${SUFFIXLESSMAXVER##*.};
while [[ -n "$1" ]]; do
local PACKAGE=$1;
shift;
local NEWDEP="";
if [[ "$MINVER" == "$MAXVER" ]]; then
NEWDEP="~$PACKAGE-$MINVER";
else
if [[ "$MINMINOR" == "$MAXMINOR" ]]; then
NEWDEP="$(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MINMINOR" $MINSUFFIX $MAXSUFFIX)";
if [[ -n "$MINREV" ]]; then
NEWDEP="$NEWDEP
$(deprange-iterate-numbers "=$PACKAGE-$BASEVER.${MINMINOR}_$MINSUFFIX-r" $MINREV 50)";
fi;
else
if [[ -n "$MAXSUFFIX" ]]; then
NEWDEP="$(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MAXMINOR" alpha1 $MAXSUFFIX)";
fi;
STARTMINOR="${MINMINOR}";
if [[ -n "$MINREV" ]] && [[ -z "$MINSUFFIX" ]]; then
let STARTMINOR++;
fi;
NEWDEP="$NEWDEP
$(deprange-iterate-numbers "~${PACKAGE}-${BASEVER}." $STARTMINOR $MAXMINOR)";
if [[ -n "$MINSUFFIX" ]]; then
NEWDEP="$NEWDEP
$(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MINMINOR" $MINSUFFIX rc10)";
fi;
if [[ -n "$MINREV" ]]; then
local BASE;
if [[ -n "$MINSUFFIX" ]]; then
BASE="=$PACKAGE-$BASEVER.${MINMINOR}_${MINSUFFIX%-r*}-r";
else
BASE="=$PACKAGE-$BASEVER.${MINMINOR%-r*}-r";
fi;
NEWDEP="$NEWDEP
$(deprange-iterate-numbers $BASE ${MINREV#r} 50)";
fi;
fi;
fi;
if [[ -n "$FINALOPTIONVER" ]]; then
NEWDEP="$NEWDEP ~$PACKAGE-$FINALOPTIONVER";
fi;
echo -n $NEWDEP;
done
}
dlopen_lib ()
{
if [[ ${ELIBC} != *BSD ]]; then
echo "-ldl";
fi
}
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} )
}
ebeep ()
{
local n;
if [[ -z ${EBEEP_IGNORE} ]]; then
for ((n=1 ; n <= ${1:-5} ; n++))
do
echo -ne "\a";
sleep 0.1 >&/dev/null;
sleep 0,1 >&/dev/null;
echo -ne "\a";
sleep 1;
done;
fi
}
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*)
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
;;
*-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
}
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} ${euser} -c "added by portage for ${PN}" || 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//?/=}"
};
function _epatch_assert ()
{
local _pipestatus=${PIPESTATUS[*]};
[[ ${_pipestatus// /} -eq 0 ]]
};
local PIPE_CMD="";
local STDERR_TARGET="${T}/$$.out";
local PATCH_TARGET="${T}/$$.patch";
local PATCH_SUFFIX="";
local SINGLE_PATCH="no";
local x="";
unset P4CONFIG P4PORT P4USER;
if [ "$#" -gt 1 ]; then
local m="";
for m in "$@";
do
epatch "${m}";
done;
return 0;
fi;
if [ -n "$1" -a -f "$1" ]; then
SINGLE_PATCH="yes";
local EPATCH_SOURCE="$1";
local EPATCH_SUFFIX="${1##*\.}";
else
if [ -n "$1" -a -d "$1" ]; then
if [ "${EPATCH_FORCE}" = "yes" ] && [ -z "${EPATCH_SUFFIX}" ]; then
local EPATCH_SOURCE="$1/*";
else
local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}";
fi;
else
if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]]; then
if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]; then
EPATCH_SOURCE="$1";
fi;
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;
local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}";
fi;
fi;
case ${EPATCH_SUFFIX##*\.} in
bz2)
PIPE_CMD="bzip2 -dc";
PATCH_SUFFIX="bz2"
;;
gz | Z | z)
PIPE_CMD="gzip -dc";
PATCH_SUFFIX="gz"
;;
ZIP | zip)
PIPE_CMD="unzip -p";
PATCH_SUFFIX="zip"
;;
*)
PIPE_CMD="cat";
PATCH_SUFFIX="patch"
;;
esac;
if [ "${SINGLE_PATCH}" = "no" ]; then
einfo "${EPATCH_MULTI_MSG}";
fi;
for x in ${EPATCH_SOURCE};
do
if [ -f ${x} ] && ( [ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || [ "${EPATCH_FORCE}" = "yes" ] ); then
local count=0;
local popts="${EPATCH_OPTS}";
local patchname=${x##*/};
if [ -n "${EPATCH_EXCLUDE}" ]; then
if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]; then
continue;
fi;
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;
echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
while [ "${count}" -lt 5 ]; do
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
if [ "${PATCH_SUFFIX}" != "patch" ]; then
echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
else
PATCH_TARGET="${x}";
fi;
echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
if [ "${PATCH_SUFFIX}" != "patch" ]; then
if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
echo;
eerror "Could not extract patch!";
count=5;
break;
fi;
fi;
if ( cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f;
_epatch_assert ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
_epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1;
_epatch_assert;
if [ "$?" -ne 0 ]; then
cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo;
eerror "A dry-run of patch command succeeded, but actually";
eerror "applying the patch failed!";
count=5;
fi;
rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
break;
fi;
count=$((count + 1));
done;
if [ "${PATCH_SUFFIX}" != "patch" ]; then
rm -f ${PATCH_TARGET};
fi;
if [ "${count}" -eq 5 ]; then
echo;
eerror "Failed Patch: ${patchname} !";
eerror " ( ${PATCH_TARGET} )";
eerror;
eerror "Include in your bugreport the contents of:";
eerror;
eerror " ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}";
echo;
die "Failed Patch: ${patchname}!";
fi;
rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
eend 0;
fi;
done;
if [ "${SINGLE_PATCH}" = "no" ]; then
einfo "Done with patching";
fi
}
epause ()
{
[[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
}
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
}
eqmake3 ()
{
local LOGFILE="${T}/qmake-$$.out";
local projprofile="${1}";
[[ -z ${projprofile} ]] && projprofile="${PN}.pro";
shift 1;
ebegin "Processing qmake ${projprofile}";
if [[ ! -f ${projprofile} ]]; then
echo;
eerror "Project .pro file \"${projprofile}\" does not exists";
eerror "qmake cannot handle non-existing .pro files";
echo;
eerror "This shouldn't happen - please send a bug report to bugs.gentoo.org";
echo;
die "Project file not found in ${PN} sources";
fi;
echo >> ${LOGFILE};
echo "****** qmake ${projprofile} ******" >> ${LOGFILE};
echo >> ${LOGFILE};
local configoptplus="CONFIG += no_fixpath";
local configoptminus="CONFIG -=";
if has debug ${IUSE} && use debug; then
configoptplus="${configoptplus} debug";
configoptminus="${configoptminus} release";
else
configoptplus="${configoptplus} release";
configoptminus="${configoptminus} debug";
fi;
${QTDIR}/bin/qmake ${projprofile} QTDIR=${QTDIR} QMAKE=${QTDIR}/bin/qmake QMAKE_CC=$(tc-getCC) QMAKE_CXX=$(tc-getCXX) QMAKE_LINK=$(tc-getCXX) QMAKE_CFLAGS_RELEASE="${CFLAGS}" QMAKE_CFLAGS_DEBUG="${CFLAGS}" QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS}" QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS}" QMAKE_LFLAGS_RELEASE="${LDFLAGS}" QMAKE_LFLAGS_DEBUG="${LDFLAGS}" "${configoptminus}" "${configoptplus}" QMAKE_RPATH= ${@} >> ${LOGFILE} 2>&1;
local result=$?;
eend ${result};
if [[ ${result} -ne 0 ]]; then
echo;
eerror "Running qmake on \"${projprofile}\" has failed";
echo;
eerror "This shouldn't happen - please send a bug report to bugs.gentoo.org";
echo;
die "qmake failed on ${projprofile}";
fi;
return ${result}
}
esvn_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
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-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="";
dodir /usr/${libdir};
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
if [[ ${USERLAND} == "Darwin" ]]; then
ewarn "Not creating fake dynamic library for $lib on Darwin;";
ewarn "making a symlink instead.";
dosym "/${libdir}/${lib}" "/usr/${libdir}/${lib}";
else
cat > "${D}/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.
See bug http://bugs.gentoo.org/4411 for more info.
*/
${output_format}
GROUP ( /${libdir}/${lib} )
END_LDSCRIPT
fi
fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
done
}
get-child-packages ()
{
local parent child;
while read parent child; do
[[ ${parent} == $1 ]] && echo -n "${child} ";
done <<EOF
$KDE_DERIVATION_MAP
EOF
}
get-parent-package ()
{
local parent child;
while read parent child; do
if [[ ${child} == $1 ]]; then
echo ${parent};
return 0;
fi;
done <<EOF
$KDE_DERIVATION_MAP
EOF
die "Package $1 not found in KDE_DERIVATION_MAP, please report bug"
}
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_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
mingw* | *-mingw*)
libname="dll"
;;
*-darwin*)
libname="dylib"
;;
*)
libname="so"
;;
esac;
if [[ -z $* ]]; then
echo ".${libname}";
else
for ver in "$@";
do
case ${CHOST} in
*-darwin*)
echo ".${ver}.${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_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_multilib_profile ()
{
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
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-parent-package ()
{
local parent child;
while read parent child; do
[[ "${parent}" == "$1" ]] && return 0;
done <<EOF
$KDE_DERIVATION_MAP
EOF
return 1
}
is_final_abi ()
{
has_multilib_profile || return 0;
local ALL_ABIS=$(get_install_abis);
local LAST_ABI=${ALL_ABIS/* /};
[[ ${LAST_ABI} == ${ABI} ]]
}
kde_remove_flag ()
{
debug-print-function $FUNCNAME "$@";
cd "${S}"/${1} || die "cd to '${S}/${1}' failed.";
[[ -n "$2" ]] || die "missing argument to kde_remove_flag";
cp Makefile Makefile.orig;
sed -e "/CFLAGS/ s/${2}//g
/CXXFLAGS/ s/${2}//g" Makefile.orig > Makefile;
cd "${OLDPWD}"
}
kde_sandbox_patch ()
{
debug-print-function $FUNCNAME "$@";
while [[ -n "$1" ]]; do
cd $1;
for x in Makefile.am Makefile.in Makefile;
do
if [[ -f "$x" ]]; then
echo Running sed on $x;
cp $x ${x}.orig;
sed -e 's: $(bindir): $(DESTDIR)/$(bindir):g' -e 's: $(kde_datadir): $(DESTDIR)/$(kde_datadir):g' -e 's: $(TIMID_DIR): $(DESTDIR)/$(TIMID_DIR):g' ${x}.orig > ${x};
rm ${x}.orig;
fi;
done;
shift;
done
}
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
;;
*)
type=
;;
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
;;
*)
type=
;;
esac;
type="Game;${type}"
;;
gnome)
type="Gnome;GTK"
;;
kde)
type="KDE;Qt"
;;
mail)
type="Network;Email"
;;
media)
case ${catmin} in
gfx)
type=Graphics
;;
radio)
type=Tuner
;;
sound)
type=Audio
;;
tv)
type=TV
;;
video)
type=Video
;;
*)
type=
;;
esac;
type="AudioVideo;${type}"
;;
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
;;
*)
type=
;;
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
;;
*)
type=
;;
esac;
type="Science;${type}"
;;
sys)
type="System"
;;
www)
case ${catmin} in
client)
type=WebBrowser
;;
*)
type=
;;
esac;
type="Network"
;;
*)
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";
cat > "${desktop}" <<-EOF
[Desktop Entry]
Version=1.0
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}" )
}
make_session_desktop ()
{
[[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1;
[[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1;
local title=$1;
local command=$2;
local desktop=${T}/${wm}.desktop;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command}
TryExec=${command}
Type=Application
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
}
min-kde-ver ()
{
debug-print-function $FUNCNAME "$@";
case $1 in
2*)
selected_version="2.2.2"
;;
3.0*)
selected_version="3.0"
;;
3.1*)
selected_version="3.1"
;;
3.2*)
selected_version="3.2"
;;
3.3*)
selected_version="3.3"
;;
3.4*)
selected_version="3.4"
;;
3.5*)
selected_version="3.5"
;;
3*)
selected_version="3.0"
;;
5)
selected_version="5"
;;
*)
echo "!!! error: $FUNCNAME() called with invalid parameter: \"$1\", please report bug" && exit 1
;;
esac
}
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"
;;
sparc64*)
export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
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="sparc64 sparc32";
export DEFAULT_ABI="sparc64"
;;
*)
export MULTILIB_ABIS="default";
export DEFAULT_ABI="default"
;;
esac
}
multilib_toolchain_setup ()
{
export ABI=$1;
if has_version app-admin/eselect-compiler; then
export LD="ld $(get_abi_LDFLAGS $1)";
export AS="as $(get_abi_ASFLAGS $1)";
export CHOST=$(get_abi_CHOST $1);
export CBUILD=$(get_abi_CHOST $1);
else
tc-export CC;
fi
}
need-kde ()
{
debug-print-function $FUNCNAME "$@";
KDEVER="$1";
set-kdedir ${KDEVER};
if [[ -n "${RDEPEND}" ]]; then
x_DEPEND="${RDEPEND}";
else
x_DEPEND="${DEPEND}";
fi;
if [[ -n "${KDEBASE}" ]]; then
if [[ -n "${KM_DEPRANGE}" ]]; then
DEPEND="${DEPEND} $(deprange ${KM_DEPRANGE} kde-base/kdelibs)";
RDEPEND="${x_DEPEND} $(deprange ${KM_DEPRANGE} kde-base/kdelibs)";
else
DEPEND="${DEPEND} ~kde-base/kdelibs-$PV";
RDEPEND="${x_DEPEND} ~kde-base/kdelibs-${PV}";
fi;
else
min-kde-ver ${KDEVER};
DEPEND="${DEPEND} =kde-base/kdelibs-3.5*";
RDEPEND="${x_DEPEND} =kde-base/kdelibs-3.5*";
fi;
qtver-from-kdever ${KDEVER};
need-qt ${selected_version};
if [[ -n "${KDEBASE}" ]]; then
SLOT="$KDEMAJORVER.$KDEMINORVER";
else
SLOT="0";
fi
}
need-qt ()
{
debug-print-function $FUNCNAME "${@}";
QTVER="$1";
QT=qt;
if [[ "${RDEPEND-unset}" != "unset" ]]; then
x_DEPEND="${RDEPEND}";
else
x_DEPEND="${DEPEND}";
fi;
case ${QTVER} in
2*)
DEPEND="${DEPEND} =x11-libs/${QT}-2.3*";
RDEPEND="${x_DEPEND} =x11-libs/${QT}-2.3*"
;;
3*)
case ${EAPI:-0} in
0)
DEPEND="${DEPEND} $(qt_min_version ${QTVER})";
RDEPEND="${x_DEPEND} $(qt_min_version ${QTVER})"
;;
*)
DEPEND="${DEPEND} >=x11-libs/qt-${QTVER}:3";
RDEPEND="${RDEPEND} >=x11-libs/qt-${QTVER}:3"
;;
esac
;;
*)
echo "!!! error: $FUNCNAME() called with invalid parameter: \"$QTVER\", please report bug" && exit 1
;;
esac
}
newicon ()
{
( insinto /usr/share/pixmaps;
newins "$@" )
}
newmenu ()
{
( insinto /usr/share/applications;
newins "$@" )
}
number_abis ()
{
get_install_abis | wc -w
}
pkg_nofetch ()
{
[ -z "${SRC_URI}" ] && return;
echo "!!! The following are listed in SRC_URI for ${PN}:";
local x;
for x in $(echo ${SRC_URI});
do
echo "!!! ${x}";
done
}
pkg_postinst ()
{
elog;
elog "If you want to use Chinese interface, edit your startup script";
elog "such as .xinitrc to incorporate";
elog;
elog ' export XMODIFIERS=@im=SCIM';
elog ' export QT_IM_MODULE=scim';
elog ' export GTK_IM_MODULE=scim';
elog ' export LANG="zh_CN.GBK"';
elog ' startkde';
elog;
elog "or if you prefer English interface,";
elog;
elog ' export XMODIFIERS=@im=SCIM';
elog ' export QT_IM_MODULE=scim';
elog ' export GTK_IM_MODULE=scim';
elog ' export LC_CTYPE="zh_CN.GBK"';
elog ' startkde';
elog;
elog "and start skim and SCIM by";
elog;
elog " % skim -d";
elog
}
postprocess_desktop_entries ()
{
[[ $EBUILD_PHASE != preinst ]] && [[ $EBUILD_PHASE != install ]] && die "postprocess_desktop_entries() has to be called in src_install() or pkg_preinst().";
if [[ -d ${D}${PREFIX}/share/applnk ]]; then
local desktop_entries="$(find "${D}${PREFIX}/share/applnk" -mindepth 2 -maxdepth 2 -name '*\.desktop' -not -path '*.hidden*' 2>/dev/null)";
local uninstall_file="[Desktop Entry]
Encoding=UTF-8
Hidden=true";
if [[ -n ${desktop_entries} ]]; then
for entry in ${desktop_entries};
do
echo "${uninstall_file}" | diff -qs ${entry} - >&/dev/null;
if [[ $? != 0 ]]; then
if [[ ! -f ${D}${PREFIX}/share/applications/kde/$(basename ${entry}) ]]; then
dodir "${PREFIX}"/share/applications/kde;
mv ${entry} "${D}${PREFIX}"/share/applications/kde;
else
ewarn "QA: $(basename ${entry}) already exists in ${PREFIX}/share/applications/kde.";
fi;
fi;
done;
fi;
fi;
validate_desktop_entries "${PREFIX}"/share/applications
}
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
}
qt_min_version ()
{
local list=$(qt_min_version_list "$@");
if [[ ${list%% *} == "${list}" ]]; then
echo "${list}";
else
echo "|| ( ${list} )";
fi
}
qt_min_version_list ()
{
local MINVER="$1";
local VERSIONS="";
case "${MINVER}" in
3 | 3.0 | 3.0.0)
VERSIONS="=${QTPKG}3*"
;;
3.1 | 3.1.0 | 3.2 | 3.2.0 | 3.3 | 3.3.0)
for x in ${QT3MAJORVERSIONS};
do
if $(version_is_at_least "${MINVER}" "${x}"); then
VERSIONS="${VERSIONS} =${QTPKG}${x}*";
fi;
done
;;
3*)
for x in ${QT3VERSIONS};
do
if $(version_is_at_least "${MINVER}" "${x}"); then
VERSIONS="${VERSIONS} =${QTPKG}${x}";
fi;
done
;;
*)
VERSIONS="=${QTPKG}3*"
;;
esac;
echo ${VERSIONS}
}
qtver-from-kdever ()
{
debug-print-function $FUNCNAME "$@";
local ver;
case $1 in
2*)
ver=2.3.1
;;
3.1*)
ver=3.1
;;
3.2*)
ver=3.2
;;
3.3*)
ver=3.3
;;
3.4*)
ver=3.3
;;
3.5*)
ver=3.3
;;
3*)
ver=3.0.5
;;
5)
ver=3.3
;;
*)
echo "!!! error: $FUNCNAME called with invalid parameter: \"$1\", please report bug" && exit 1
;;
esac;
selected_version="$ver"
}
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
}
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
}
set-kdedir ()
{
debug-print-function $FUNCNAME "$@";
IFSBACKUP="$IFS";
IFS=".-_";
for x in $1;
do
if [[ -z "$KDEMAJORVER" ]]; then
KDEMAJORVER=$x;
else
if [[ -z "$KDEMINORVER" ]]; then
KDEMINORVER=$x;
else
if [[ -z "$KDEREVISION" ]]; then
KDEREVISION=$x;
fi;
fi;
fi;
done;
[[ -z "$KDEMINORVER" ]] && KDEMINORVER="0";
[[ -z "$KDEREVISION" ]] && KDEREVISION="0";
IFS="$IFSBACKUP";
debug-print "$FUNCNAME: version breakup: KDEMAJORVER=$KDEMAJORVER KDEMINORVER=$KDEMINORVER KDEREVISION=$KDEREVISION";
if [[ -n "$KDEPREFIX" ]]; then
export PREFIX="$KDEPREFIX";
else
if [[ "$KDEMAJORVER" == "2" ]]; then
export PREFIX="/usr/kde/2";
else
if [[ -z "$KDEBASE" ]]; then
export PREFIX="/usr";
else
case $KDEMAJORVER.$KDEMINORVER in
3.0)
export PREFIX="/usr/kde/3"
;;
3.1)
export PREFIX="/usr/kde/3.1"
;;
3.2)
export PREFIX="/usr/kde/3.2"
;;
3.3)
export PREFIX="/usr/kde/3.3"
;;
3.4)
export PREFIX="/usr/kde/3.4"
;;
3.5)
export PREFIX="/usr/kde/3.5"
;;
5.0)
export PREFIX="/usr/kde/cvs"
;;
*)
die "failed to set PREFIX"
;;
esac;
fi;
fi;
fi;
if [[ -n "$KDELIBSDIR" ]]; then
export KDEDIR="$KDELIBSDIR";
else
if [[ "$KDEMAJORVER" == "2" ]]; then
export KDEDIR="/usr/kde/2";
else
if [[ -z "$KDEBASE" ]]; then
for x in /usr/kde/{cvs,3.5,3.4,3.3,3.2,3.1,3.0,3} "${PREFIX}" "${KDE3LIBSDIR}" "${KDELIBSDIR}" "${KDE3DIR}" "${KDEDIR}" /usr/kde/*;
do
if [[ -f "${x}/include/kwin.h" ]]; then
debug-print found;
export KDEDIR="$x";
break;
fi;
done;
else
case $KDEMAJORVER.$KDEMINORVER in
3.0)
export KDEDIR="/usr/kde/3"
;;
3.1)
export KDEDIR="/usr/kde/3.1"
;;
3.2)
export KDEDIR="/usr/kde/3.2"
;;
3.3)
export KDEDIR="/usr/kde/3.3"
;;
3.4)
export KDEDIR="/usr/kde/3.4"
;;
3.5)
export KDEDIR="/usr/kde/3.5"
;;
5.0)
export KDEDIR="/usr/kde/cvs"
;;
*)
die "failed to set KDEDIR"
;;
esac;
fi;
fi;
fi;
debug-print "$FUNCNAME: Will use the kdelibs installed in $KDEDIR, and install into $PREFIX."
}
set-qtdir ()
{
:
}
src_compile ()
{
local sconsopts=$(echo "${MAKEOPTS}" | sed -e "s/.*\(-j[0-9]\+\).*/\1/");
[[ ${MAKEOPTS/-s/} != ${MAKEOPTS} ]] && sconsopts="${sconsopts} -s";
tc-export CC CXX;
CFLAGS="${CXXFLAGS}" ./configure prefix=/usr libdir=/usr/$(get_libdir) || die;
CFLAGS="${CXXFLAGS}" ./scons ${sconsopts} || die
}
src_install ()
{
DESTDIR=${D} ./scons prefix=/usr install || die;
mv ${D}/usr/share/doc/HTML ${D}/usr/share/doc/${PF}/html;
dodir /usr/share/applications/kde;
mv ${D}/usr/share/applnk/Utilities/skim.desktop ${D}/usr/share/applications/kde;
dodoc ChangeLog AUTHORS NEWS README TODO
}
src_test ()
{
if emake -j1 check -n >&/dev/null; then
vecho ">>> Test phase [check]: ${CATEGORY}/${PF}";
if ! emake -j1 check; then
hasq test $FEATURES && die "Make check failed. See above for details.";
hasq test $FEATURES || eerror "Make check failed. See above for details.";
fi;
else
if emake -j1 test -n >&/dev/null; then
vecho ">>> Test phase [test]: ${CATEGORY}/${PF}";
if ! emake -j1 test; then
hasq test $FEATURES && die "Make test failed. See above for details.";
hasq test $FEATURES || eerror "Make test failed. See above for details.";
fi;
else
vecho ">>> Test phase [none]: ${CATEGORY}/${PF}";
fi;
fi
}
src_unpack ()
{
unpack ${A};
cd "${S}";
epatch "${FILESDIR}/${P}-asneeded.patch"
}
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}
}
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
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-getF90 ()
{
tc-getPROG F90 gfortran "$@"
}
tc-getFORTRAN ()
{
tc-getPROG FORTRAN gfortran "$@"
}
tc-getGCJ ()
{
tc-getPROG GCJ gcj "$@"
}
tc-getLD ()
{
tc-getPROG LD ld "$@"
}
tc-getNM ()
{
tc-getPROG NM nm "$@"
}
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-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-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) ]]; 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
}
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;
_pipestatus="${PIPESTATUS[*]}";
[[ "${_pipestatus// /}" -eq 0 ]] || die "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
}
declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant-core"
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="x86"
declare -x CBUILD="i686-pc-linux-gnu"
declare -x CDEFINE_default="__unix__"
declare -x CFLAGS="-O2 -march=i686 -pipe"
declare -x CFLAGS_default=""
declare -x CHOST="i686-pc-linux-gnu"
declare -x CHOST_default="i686-pc-linux-gnu"
declare -x CLASSPATH="."
declare -x CTARGET_default="i686-pc-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-O2 -march=i686 -pipe"
declare -x DEFAULT_ABI="default"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x ELIBC="glibc"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="ccache collision-protect distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch"
declare -x GCC_SPECS=""
declare -x GDK_USE_XFT="1"
declare -x INHERITED="toolchain-funcs qt3 portability versionator multilib kde-functions eutils"
declare -x INPUT_DEVICES="keyboard mouse evdev"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -x IUSE=""
declare -x KDEDIR="/usr/kde/3.5"
declare -x KDEDIRS="/usr:/usr/local:/usr/kde/3.5"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="default"
declare -x KV="2.6.23-gentoo-r8"
declare -x LANG="en_US.UTF-8"
declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
declare -x LDFLAGS_default=""
declare -x LIBDIR_default="lib"
declare -x LIBOPTIONS="-m0644"
declare -x MAKEOPTS="-j2"
declare -x MULTILIB_ABIS="default"
declare -x OPENGL_PROFILE="nvidia"
declare -x PKG_CONFIG_PATH="/usr/qt/3/lib/pkgconfig"
declare -x PREFIX="/usr"
declare -x PRELINK_PATH_MASK="/usr/lib/gstreamer-0.10"
declare -x PYTHONPATH="/usr/lib/portage/pym"
declare -x QMAKESPEC="linux-g++"
declare -x QTDIR="/usr/qt/3"
declare -x RESTRICT=""
declare -x S="/var/tmp/portage/app-i18n/skim-1.4.5/work/skim-1.4.5"
declare -x SANDBOX_DENY="/etc/ld.so.preload"
declare -x SANDBOX_PREDICT=":/dev/console:/dev/random:/proc/self/maps:/usr/lib/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/usr/qt/3/etc/settings:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.:"
declare -x SANDBOX_READ=":/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache:"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/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/qt/3/etc/settings:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.bash_history:/var/tmp/portage/app-i18n/skim-1.4.5/homedir/.gconfd/lock:"
declare -x SLOT="0"
declare -x SUDO_COMMAND="/usr/bin/emerge skim"
declare -x SUDO_GID="1000"
declare -x SUDO_UID="1000"
declare -x SUDO_USER="faraaz"
declare -x USE="elibc_glibc kernel_linux userland_GNU x86"
declare -x USERLAND="GNU"
declare -x USERNAME="root"
declare -x VIDEO_CARDS="fbdev glint i810 mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo"
declare -x XDG_DATA_DIRS="/usr/share:/usr/kde/3.5/share:/usr/local/share"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""