Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 281347 Details for
Bug 376815
app-misc/lirc-0.9.0 fail to build against kernel-2.6.39
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
ebuild environment
environment (text/plain), 186.92 KB, created by
Marco Clocchiatti
on 2011-07-28 20:19:00 UTC
(
hide
)
Description:
ebuild environment
Filename:
MIME Type:
Creator:
Marco Clocchiatti
Created:
2011-07-28 20:19:00 UTC
Size:
186.92 KB
patch
obsolete
>declare -x ABI="amd64" >declare -x ALSA_CARDS="" >declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" >declare -x ANT_HOME="/usr/share/ant" >declare -x APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd 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 dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" >declare -x ARCH="amd64" >declare -x ASFLAGS_x86="--32" >declare -- AT_M4DIR="" >declare -- AUTOTOOLS_AUTO_DEPEND="yes" >declare -- AUTOTOOLS_DEPEND="|| ( =sys-devel/automake-1.11* ) >=sys-devel/autoconf-2.61 >=sys-devel/libtool-2.2.6b" >declare -- BACKING="none" >declare -- BASE="//usr/share/bashrcng" >declare -- BLOCK_SIZE="4096" >declare -- BUILD_TARGETS="all" >declare -x CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita tables words" >declare -x CAMERAS="ptp2" >declare -x CBUILD="x86_64-pc-linux-gnu" >declare -x CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer" >declare -x CFLAGS_default >declare -x CFLAGS_x86="-m32" >declare -x CG_COMPILER_EXE="/usr/bin/cgc" >declare -x CHOST="x86_64-pc-linux-gnu" >declare -x CHOST_amd64="x86_64-pc-linux-gnu" >declare -x CHOST_default="x86_64-pc-linux-gnu" >declare -x CHOST_x86="i686-pc-linux-gnu" >declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" >declare -x CPPFLAGS="" >declare -x CROSSCOMPILE_OPTS="" >declare -x CTARGET_default="x86_64-pc-linux-gnu" >declare -x CVSROOT="/CVSROOT" >declare -x CXXFLAGS="-march=native -O2 -pipe -fomit-frame-pointer" >declare -x DCCC_PATH="/usr/lib64/distcc/bin" >declare -x DEFAULT_ABI="amd64" >declare -x DEFINED_PHASES=" compile install postinst postrm preinst setup unpack" >declare DEPEND=" > X? ( > x11-libs/libX11 > x11-libs/libSM > x11-libs/libICE > ) > lirc_devices_alsa_usb? ( media-libs/alsa-lib ) > lirc_devices_audio? ( >media-libs/portaudio-18 ) > lirc_devices_irman? ( media-libs/libirman ) lirc_devices_all? ( dev-libs/libusb ) lirc_devices_atilibusb? ( dev-libs/libusb ) lirc_devices_awlibusb? ( dev-libs/libusb ) lirc_devices_sasem? ( dev-libs/libusb ) lirc_devices_igorplugusb? ( dev-libs/libusb ) lirc_devices_imon? ( dev-libs/libusb ) lirc_devices_imon_lcd? ( dev-libs/libusb ) lirc_devices_imon_pad? ( dev-libs/libusb ) lirc_devices_imon_rsc? ( dev-libs/libusb ) lirc_devices_streamzap? ( dev-libs/libusb ) lirc_devices_xboxusb? ( dev-libs/libusb ) lirc_devices_irlink? ( dev-libs/libusb ) lirc_devices_commandir? ( dev-libs/libusb ) > virtual/linux-sources > lirc_devices_ftdi? ( dev-embedded/libftdi ) > lirc_devices_all? ( dev-embedded/libftdi ) kernel_linux? ( sys-apps/module-init-tools ) > sys-apps/sed > kernel_linux? ( virtual/linux-sources ) || ( =sys-devel/automake-1.11* ) >=sys-devel/autoconf-2.61 >=sys-devel/libtool-2.2.6b" >declare DESCRIPTION="decode and send infra-red signals of many commonly used remote controls" >declare -x DESTTREE="/usr" >declare -x DIROPTIONS="-m0755" >declare -x EAPI="0" >declare -- ECONF_PARAMS=" --localstatedir=/var > --with-syslog=LOG_DAEMON > --enable-sandboxed > --with-kerneldir=/usr/src/linux > --with-moduledir=/lib/modules/2.6.39-gentoo-r3-p5q/misc > --disable-debug > --with-x > --with-driver=all" >declare -x ELIBC="glibc" >declare -x ELT_APPLIED_PATCHES=" 1.2.0 1.5.6 2.2.6" >declare -- ELT_PATCH_DIR="/var/gentoo-var/portage/eclass/ELT-patches" >declare -- EPATCH_EXCLUDE="" >declare -- EPATCH_FORCE="no" >declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..." >declare -- EPATCH_OPTS="-g0 -E --no-backup-if-mismatch" >declare -- EPATCH_SINGLE_MSG="" >declare -- EPATCH_SOURCE="/var/tmp/portage/app-misc/lirc-0.9.0/work/patch" >declare -- EPATCH_SUFFIX="patch.bz2" >declare -x EXEOPTIONS="-m0755" >declare -x FCFLAGS="" >declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" >declare -x FFLAGS="" >declare -- FILE_LOG="/var/tmp/portage/app-misc/lirc-0.9.0/temp/bashrcng.log" >declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.1.9-r1/html" >declare -x GCC_SPECS="" >declare -x GDK_USE_XFT="1" >declare -x GENTOO32="/mnt/chroot/root32" >declare -x GENTOO64="/mnt/chroot/root64" >declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" >declare -x GSETTINGS_BACKEND="gconf" >declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8" >declare -x HG="/usr/bin/hg" >declare HOMEPAGE="http://www.lirc.org/" >declare -x INHERITED=" toolchain-funcs multilib portability eutils versionator linux-info linux-mod flag-o-matic libtool autotools" >declare -x INPUT_DEVICES="keyboard mouse evdev void" >declare -x INSDESTTREE="" >declare -x INSOPTIONS="-m0644" >declare IUSE="debug doc X hardware-carrier transmitter lirc_devices_all lirc_devices_userspace lirc_devices_accent lirc_devices_act200l lirc_devices_act220l lirc_devices_adaptec lirc_devices_alsa_usb lirc_devices_animax lirc_devices_asusdh lirc_devices_atilibusb lirc_devices_atiusb lirc_devices_audio lirc_devices_audio_alsa lirc_devices_avermedia lirc_devices_avermedia_vdomate lirc_devices_avermedia98 lirc_devices_awlibusb lirc_devices_bestbuy lirc_devices_bestbuy2 lirc_devices_breakoutbox lirc_devices_bte lirc_devices_bw6130 lirc_devices_caraca lirc_devices_chronos lirc_devices_commandir lirc_devices_cph06x lirc_devices_creative lirc_devices_creative_infracd lirc_devices_devinput lirc_devices_digimatrix lirc_devices_dsp lirc_devices_dvico lirc_devices_ea65 lirc_devices_ene0100 lirc_devices_exaudio lirc_devices_flyvideo lirc_devices_ftdi lirc_devices_gvbctv5pci lirc_devices_hauppauge lirc_devices_hauppauge_dvb lirc_devices_hercules_smarttv_stereo lirc_devices_i2cuser lirc_devices_igorplugusb lirc_devices_iguanaIR lirc_devices_imon lirc_devices_imon_24g lirc_devices_imon_knob lirc_devices_imon_lcd lirc_devices_imon_pad lirc_devices_imon_rsc lirc_devices_irdeo lirc_devices_irdeo_remote lirc_devices_irlink lirc_devices_irman lirc_devices_irreal lirc_devices_it87 lirc_devices_ite8709 lirc_devices_knc_one lirc_devices_kworld lirc_devices_leadtek_0007 lirc_devices_leadtek_0010 lirc_devices_leadtek_pvr2000 lirc_devices_livedrive_midi lirc_devices_livedrive_seq lirc_devices_logitech lirc_devices_macmini lirc_devices_mediafocusI lirc_devices_mouseremote lirc_devices_mouseremote_ps2 lirc_devices_mp3anywhere lirc_devices_mplay lirc_devices_nslu2 lirc_devices_packard_bell lirc_devices_parallel lirc_devices_pcmak lirc_devices_pcmak_usb lirc_devices_pctv lirc_devices_pixelview_bt878 lirc_devices_pixelview_pak lirc_devices_pixelview_pro lirc_devices_provideo lirc_devices_realmagic lirc_devices_remotemaster lirc_devices_sa1100 lirc_devices_samsung lirc_devices_sasem lirc_devices_sb0540 lirc_devices_serial lirc_devices_silitek lirc_devices_sir lirc_devices_slinke lirc_devices_streamzap lirc_devices_tekram lirc_devices_tekram_bt829 lirc_devices_tira lirc_devices_ttusbir lirc_devices_tuxbox lirc_devices_tvbox lirc_devices_udp lirc_devices_uirt2 lirc_devices_uirt2_raw lirc_devices_usb_uirt_raw lirc_devices_usbx lirc_devices_wpc8769l lirc_devices_serial_igor_cesko lirc_devices_remote_wonder_plus lirc_devices_xboxusb lirc_devices_usbirboy lirc_devices_inputlirc kernel_linux" >declare -- IUSE_LIRC_DEVICES=" > all userspace accent act200l act220l > adaptec alsa_usb animax asusdh atilibusb > atiusb audio audio_alsa avermedia avermedia_vdomate > avermedia98 awlibusb bestbuy bestbuy2 breakoutbox > bte bw6130 caraca chronos commandir > cph06x creative creative_infracd > devinput digimatrix dsp dvico ea65 ene0100 > exaudio flyvideo ftdi gvbctv5pci hauppauge > hauppauge_dvb hercules_smarttv_stereo i2cuser > igorplugusb iguanaIR imon imon_24g imon_knob > imon_lcd imon_pad imon_rsc irdeo irdeo_remote > irlink irman irreal it87 ite8709 > knc_one kworld leadtek_0007 leadtek_0010 > leadtek_pvr2000 livedrive_midi > livedrive_seq logitech macmini > mediafocusI mouseremote > mouseremote_ps2 mp3anywhere mplay nslu2 > packard_bell parallel pcmak pcmak_usb > pctv pixelview_bt878 pixelview_pak > pixelview_pro provideo realmagic > remotemaster sa1100 samsung sasem sb0540 serial > silitek sir slinke streamzap tekram > tekram_bt829 tira ttusbir tuxbox tvbox udp uirt2 > uirt2_raw usb_uirt_raw usbx wpc8769l > serial_igor_cesko > remote_wonder_plus xboxusb usbirboy inputlirc" >declare -- IUSE_LIRC_DEVICES_DIRECT=" > all userspace accent act200l act220l > adaptec alsa_usb animax asusdh atilibusb > atiusb audio audio_alsa avermedia avermedia_vdomate > avermedia98 awlibusb bestbuy bestbuy2 breakoutbox > bte bw6130 caraca chronos commandir > cph06x creative creative_infracd > devinput digimatrix dsp dvico ea65 ene0100 > exaudio flyvideo ftdi gvbctv5pci hauppauge > hauppauge_dvb hercules_smarttv_stereo i2cuser > igorplugusb iguanaIR imon imon_24g imon_knob > imon_lcd imon_pad imon_rsc irdeo irdeo_remote > irlink irman irreal it87 ite8709 > knc_one kworld leadtek_0007 leadtek_0010 > leadtek_pvr2000 livedrive_midi > livedrive_seq logitech macmini > mediafocusI mouseremote > mouseremote_ps2 mp3anywhere mplay nslu2 > packard_bell parallel pcmak pcmak_usb > pctv pixelview_bt878 pixelview_pak > pixelview_pro provideo realmagic > remotemaster sa1100 samsung sasem sb0540 serial > silitek sir slinke streamzap tekram > tekram_bt829 tira ttusbir tuxbox tvbox udp uirt2 > uirt2_raw usb_uirt_raw usbx wpc8769l" >declare -- IUSE_LIRC_DEVICES_SPECIAL=" > serial_igor_cesko > remote_wonder_plus xboxusb usbirboy inputlirc" >declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac" >declare -x JAVACC_HOME="/usr/share/javacc/" >declare -x JAVA_HOME="/etc/java-config-2/current-system-vm" >declare -x JDK_HOME="/etc/java-config-2/current-system-vm" >declare -x KDEDIRS="/etc/kde/:/usr/local:/usr" >declare -x KERNEL="linux" >declare -x KERNEL_ABI="amd64" >declare -- KERNEL_DIR="/usr/src/linux" >declare -- KERNEL_MAKEFILE="/usr/src/linux/Makefile" >declare -x KEYWORDS="~amd64 ~ppc ~x86" >declare -x KV="2.6.39-gentoo-r3-p5q" >declare -- KV_DIR="/usr/src/linux" >declare -- KV_EXTRA="-gentoo-r3" >declare -- KV_FULL="2.6.39-gentoo-r3-p5q" >declare -- KV_LOCAL="-p5q" >declare -- KV_MAJOR="2" >declare -- KV_MINOR="6" >declare -- KV_OBJ="ko" >declare -- KV_OUT_DIR="/usr/src/linux" >declare -- KV_PATCH="39" >declare -x LADSPA_PATH="/usr/lib64/ladspa" >declare -x LANGUAGE="it" >declare -x LCD_DEVICES="" >declare -x LC_ALL="it_IT.UTF-8" >declare -x LC_LANG="it_IT.UTF-8" >declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu" >declare -x LDFLAGS_default >declare -x LDFLAGS_x86="-m elf_i386" >declare -x LIBDIR_amd64="lib64" >declare -x LIBDIR_amd64_fbsd="lib64" >declare -x LIBDIR_default="lib" >declare -x LIBDIR_ppc="lib32" >declare -x LIBDIR_ppc64="lib64" >declare -x LIBDIR_s390="lib32" >declare -x LIBDIR_s390x="lib64" >declare -x LIBDIR_sparc32="lib32" >declare -x LIBDIR_sparc64="lib64" >declare -x LIBDIR_x86="lib32" >declare -x LIBDIR_x86_fbsd="lib32" >declare -x LIBOPTIONS="-m0644" >declare -- LIBUSB_USED_BY_DEV=" > all atilibusb awlibusb sasem igorplugusb imon imon_lcd imon_pad > imon_rsc streamzap xboxusb irlink commandir" >declare -x LICENSE="GPL-2" >declare -x LINGUAS="it en_GB" >declare -x LIRC_DEVICES="all" >declare -- LIRC_DRIVER_DEVICE="/dev/lirc0" >declare -x MAKEOPTS="-j9 -s -j1" >declare -x MANPAGER="/usr/bin/vimmanpager" >declare -- MEMFILE="//etc/portage/package.nomem" >declare -- MODULE_NAMES="lirc(misc:/var/tmp/portage/app-misc/lirc-0.9.0/work/lirc-0.9.0)" >declare -x MULTILIB_ABIS="amd64 x86" >declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" >declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" >declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)" >declare -- MY_OPTS=" --with-driver=all" >declare -- MY_P="lirc-0.9.0" >declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" >declare -x OPENGL_PROFILE="nvidia" >declare -- OUTPUT_DIR="/lib/modules/2.6.39-gentoo-r3/build" >declare -x PATH="/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/opt/vmware/bin:/opt/vmware/sbin:/usr/local/sbin:/usr/local/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5" >declare PDEPEND=" " >declare -x PHP_TARGETS="" >declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png" >declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")' >declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/lirc-0.9.0/html")' >declare -x PRELINK_PATH_MASK="/usr/lib64/klibc:/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so" >declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND" >declare -x PROPERTIES="" >declare -x PROVIDE="" >declare -x PYTHONDONTWRITEBYTECODE="1" >declare -x QEMU_SOFTMMU_TARGETS="i386 x86_64" >declare -x QEMU_USER_TARGETS="i386 x86_64" >declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins" >declare -x RAIDDEV="/dev/mapper/raid5-" >declare -x RDEPEND=" > X? ( > x11-libs/libX11 > x11-libs/libSM > x11-libs/libICE > ) > lirc_devices_alsa_usb? ( media-libs/alsa-lib ) > lirc_devices_audio? ( >media-libs/portaudio-18 ) > lirc_devices_irman? ( media-libs/libirman ) > lirc_devices_usbirboy? ( app-misc/usbirboy ) > lirc_devices_inputlirc? ( app-misc/inputlircd ) > lirc_devices_iguanaIR? ( app-misc/iguanaIR ) kernel_linux? ( sys-apps/module-init-tools ) " >declare REQUIRED_USE=" " >declare -x RESTRICT="" >declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" >declare -x RUBYOPT="-rauto_gem" >declare -x RUBY_TARGETS="" >declare -x R_HOME="/usr/lib64/R" >declare -x S="/var/tmp/portage/app-misc/lirc-0.9.0/work/lirc-0.9.0" >declare -x SANDBOX_DEBUG="0" >declare -x SANDBOX_DENY="" >declare -x SANDBOX_PID="20053" >declare -x SANDBOX_PREDICT="/var/tmp/portage/app-misc/lirc-0.9.0/homedir:/dev/crypto:/var/cache/fontconfig" >declare -x SANDBOX_READ="/:/var/tmp" >declare -x SANDBOX_VERBOSE="1" >declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/app-misc/lirc-0.9.0/homedir/.bash_history" >declare -x SANE_CONFIG_DIR="/etc/sane.d" >declare -- SHM_TYPE="tmpfs" >declare -x SLOT="0" >declare SRC_URI="mirror://sourceforge/lirc/lirc-0.9.0.tar.bz2" >declare -x STAGE1_USE="multilib nptl nptlonly unicode" >declare -x SYMLINK_LIB="yes" >declare -x USB_DEVFS_PATH="/dev/bus/usb" >declare -x USE="X amd64 elibc_glibc kernel_linux lirc_devices_all multilib userland_GNU" >declare -x USERLAND="GNU" >declare -x VBOX_APP_HOME="/opt/VirtualBox" >declare -- VERBOSITY="normal" >declare -- VERSION="bashrc-1.1.4" >declare -x VIDEO_CARDS="" >declare -x VTKHOME="/usr" >declare -x VTK_DATA_ROOT="/usr/share/vtk/data" >declare -x VTK_DIR="/usr/lib64/vtk-5.6" >declare -x WANT_AUTOCONF="2.5" >declare -x WANT_AUTOMAKE="1.11" >declare -x WINDOW_MANAGER="ikwin" >declare -x XDG_CONFIG_DIRS="/etc/xdg" >declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/etc/kde/share:/usr/share/gdm" >declare -x XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" >declare -- _="PKG_INSTALL_MASK" >declare -x _E_DOCDESTTREE_="" >declare -x _E_EXEDESTTREE_="" >declare -- _LATEST_AUTOMAKE="1.11" >declare -x _LINUX_CONFIG_EXISTS_DONE="1" >declare -- ___ECLASS_RECUR_MULTILIB="yes" >declare -- ___ECLASS_RECUR_TOOLCHAIN_FUNCS="yes" >declare -x acpi_enforce_resources="lax" >declare -- dev="inputlirc" >declare -- get_version_warning_done="" >declare -- lafilefix="off" >declare -- lirc_device_count="1" >declare -- patching="off" >declare -a plugin='([0]="upx")' >declare -x real_root="/dev/md7" >declare -x root="/dev/ram0" >declare -x rootdelay="5" >declare -- shmfs="on" >declare -- upx="off" >declare -x vga="0x31B" >declare -x video="vesa:ywrap,mtrr" >ELT_libtool_version () >{ > ( unset VERSION; > eval $(grep -e '^[[:space:]]*VERSION=' "$1"); > echo "${VERSION:-0}" ) >} >ELT_try_and_apply_patch () >{ > local ret=0; > local file=$1; > local patch=$2; > echo -e "\nTrying $(basename "$(dirname "${patch}")")-${patch##*/}.patch on ${file}" >> "${T}/elibtool.log" 2>&1; > if patch -p0 --dry-run "${file}" "${patch}" >> "${T}/elibtool.log" 2>&1; then > einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."; > patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >> "${T}/elibtool.log" 2>&1; > ret=$?; > export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"; > else > ret=1; > fi; > return "${ret}" >} >ELT_walk_patches () >{ > local patch; > local ret=1; > local file=$1; > local patch_set=$2; > local patch_dir="${ELT_PATCH_DIR}/${patch_set}"; > local rem_int_dep=$3; > [[ -z ${patch_set} ]] && return 1; > [[ ! -d ${patch_dir} ]] && return 1; > pushd "${ELT_PATCH_DIR}" > /dev/null; > for patch in $(find "${patch_set}" -maxdepth 1 -type f | LC_ALL=C sort -r); > do > if [[ -n ${rem_int_dep} ]]; then > local tmp="${T}/$$.rem_int_deps.patch"; > sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" "${patch}" > "${tmp}"; > patch=${tmp}; > fi; > if ELT_try_and_apply_patch "${file}" "${patch}"; then > ret=0; > break; > fi; > done; > popd > /dev/null; > return ${ret} >} >VER_major () >{ > [[ -z $1 ]] && return 1; > local VER=$@; > echo "${VER%%[^[:digit:]]*}" >} >VER_micro () >{ > [[ -z $1 ]] && return 1; > local VER=$@; > VER=${VER#*.*.}; > echo "${VER%%[^[:digit:]]*}" >} >VER_minor () >{ > [[ -z $1 ]] && return 1; > local VER=$@; > VER=${VER#*.}; > echo "${VER%%[^[:digit:]]*}" >} >VER_to_int () >{ > [[ -z $1 ]] && return 1; > local VER_MAJOR=$(VER_major "$1"); > local VER_MINOR=$(VER_minor "$1"); > local VER_MICRO=$(VER_micro "$1"); > local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO )); > if [[ ${VER_int} -ge 65536 ]]; then > echo "${VER_int}"; > return 0; > fi; > echo 1; > return 1 >} >__versionator__test_version_compare () >{ > eshopts_push -s extglob; > local lt=1 eq=2 gt=3 p q; > function __versionator__test_version_compare_t () > { > version_compare "${1}" "${3}"; > local r=$?; > [[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})" > }; > echo " > 0 $lt 1 > 1 $lt 2 > 2 $gt 1 > 2 $eq 2 > 0 $eq 0 > 10 $lt 20 > 68 $eq 068 > 068 $gt 67 > 068 $lt 69 > > 1.0 $lt 2.0 > 2.0 $eq 2.0 > 2.0 $gt 1.0 > > 1.0 $gt 0.0 > 0.0 $eq 0.0 > 0.0 $lt 1.0 > > 0.1 $lt 0.2 > 0.2 $eq 0.2 > 0.3 $gt 0.2 > > 1.2 $lt 2.1 > 2.1 $gt 1.2 > > 1.2.3 $lt 1.2.4 > 1.2.4 $gt 1.2.3 > > 1.2.0 $gt 1.2 > 1.2.1 $gt 1.2 > 1.2 $lt 1.2.1 > > 1.2b $eq 1.2b > 1.2b $lt 1.2c > 1.2b $gt 1.2a > 1.2b $gt 1.2 > 1.2 $lt 1.2a > > 1.3 $gt 1.2a > 1.3 $lt 1.3a > > 1.0_alpha7 $lt 1.0_beta7 > 1.0_beta $lt 1.0_pre > 1.0_pre5 $lt 1.0_rc2 > 1.0_rc2 $lt 1.0 > > 1.0_p1 $gt 1.0 > 1.0_p1-r1 $gt 1.0_p1 > > 1.0_alpha6-r1 $gt 1.0_alpha6 > 1.0_beta6-r1 $gt 1.0_alpha6-r2 > > 1.0_pre1 $lt 1.0_p1 > > 1.0p $gt 1.0_p1 > 1.0r $gt 1.0-r1 > 1.6.15 $gt 1.6.10-r2 > 1.6.10-r2 $lt 1.6.15 > > " | while read a b c; do > [[ -z "${a}${b}${c}" ]] && continue; > __versionator__test_version_compare_t "${a}" "${b}" "${c}"; > done; > for q in "alpha beta pre rc=${lt};${gt}" "p=${gt};${lt}"; > do > for p in ${q%%=*}; > do > local c=${q##*=}; > local alt=${c%%;*} agt=${c##*;}; > __versionator__test_version_compare_t "1.0" $agt "1.0_${p}"; > __versionator__test_version_compare_t "1.0" $agt "1.0_${p}1"; > __versionator__test_version_compare_t "1.0" $agt "1.0_${p}068"; > __versionator__test_version_compare_t "2.0_${p}" $alt "2.0"; > __versionator__test_version_compare_t "2.0_${p}1" $alt "2.0"; > __versionator__test_version_compare_t "2.0_${p}068" $alt "2.0"; > __versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}"; > __versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1"; > __versionator__test_version_compare_t "666_${p}3" $gt "666_${p}"; > __versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8"; > __versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7"; > __versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6"; > __versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9"; > __versionator__test_version_compare_t "1_${p}7-r0" $eq "1_${p}7"; > __versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r1"; > __versionator__test_version_compare_t "1_${p}7-r0" $lt "1_${p}7-r01"; > __versionator__test_version_compare_t "1_${p}7-r01" $eq "1_${p}7-r1"; > __versionator__test_version_compare_t "1_${p}8-r1" $gt "1_${p}7-r100"; > __versionator__test_version_compare_t "1_${p}_alpha" $lt "1_${p}_beta"; > done; > done; > for p in "-r" "_p"; > do > __versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2"; > __versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1"; > __versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2"; > __versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3"; > done; > __versionator__test_version_compare_t "6.0" $gt "5.0"; > __versionator__test_version_compare_t "5.0" $gt "5"; > __versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0"; > __versionator__test_version_compare_t "1.0-r1" $gt "1.0"; > __versionator__test_version_compare_t "999999999999999999999999999999" $gt "999999999999999999999999999998"; > __versionator__test_version_compare_t "1.0.0" $gt "1.0"; > __versionator__test_version_compare_t "1.0.0" $gt "1.0b"; > __versionator__test_version_compare_t "1b" $gt "1"; > __versionator__test_version_compare_t "1b_p1" $gt "1_p1"; > __versionator__test_version_compare_t "1.1b" $gt "1.1"; > __versionator__test_version_compare_t "12.2.5" $gt "12.2b"; > __versionator__test_version_compare_t "4.0" $lt "5.0"; > __versionator__test_version_compare_t "5" $lt "5.0"; > __versionator__test_version_compare_t "1.0_pre2" $lt "1.0_p2"; > __versionator__test_version_compare_t "1.0_alpha2" $lt "1.0_p2"; > __versionator__test_version_compare_t "1.0_alpha1" $lt "1.0_beta1"; > __versionator__test_version_compare_t "1.0_beta3" $lt "1.0_rc3"; > __versionator__test_version_compare_t "1.001000000000000000001" $lt "1.001000000000000000002"; > __versionator__test_version_compare_t "1.00100000000" $lt "1.0010000000000000001"; > __versionator__test_version_compare_t "999999999999999999999999999998" $lt "999999999999999999999999999999"; > __versionator__test_version_compare_t "1.01" $lt "1.1"; > __versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1"; > __versionator__test_version_compare_t "1.0" $lt "1.0-r1"; > __versionator__test_version_compare_t "1.0" $lt "1.0.0"; > __versionator__test_version_compare_t "1.0b" $lt "1.0.0"; > __versionator__test_version_compare_t "1_p1" $lt "1b_p1"; > __versionator__test_version_compare_t "1" $lt "1b"; > __versionator__test_version_compare_t "1.1" $lt "1.1b"; > __versionator__test_version_compare_t "12.2b" $lt "12.2.5"; > __versionator__test_version_compare_t "4.0" $eq "4.0"; > __versionator__test_version_compare_t "1.0" $eq "1.0"; > __versionator__test_version_compare_t "1.0-r0" $eq "1.0"; > __versionator__test_version_compare_t "1.0" $eq "1.0-r0"; > __versionator__test_version_compare_t "1.0-r0" $eq "1.0-r0"; > __versionator__test_version_compare_t "1.0-r1" $eq "1.0-r1"; > __versionator__test_version_compare_t "1" $lt "2"; > __versionator__test_version_compare_t "1.0_alpha" $lt "1.0_pre"; > __versionator__test_version_compare_t "1.0_beta" $gt "1.0_alpha"; > __versionator__test_version_compare_t "0" $lt "0.0"; > __versionator__test_version_compare_t "1.0-r0" $lt "1.0-r1"; > __versionator__test_version_compare_t "1.0-r1" $gt "1.0-r0"; > __versionator__test_version_compare_t "1.0" $lt "1.0-r1"; > __versionator__test_version_compare_t "1.0-r1" $gt "1.0"; > __versionator__test_version_compare_t "1_p1" $lt "1b_p1"; > __versionator__test_version_compare_t "1b" $gt "1"; > __versionator__test_version_compare_t "1.1b" $gt "1.1"; > __versionator__test_version_compare_t "12.2b" $gt "12.2"; > __versionator__test_version_compare_t "1.0" $gt "1"; > __versionator__test_version_compare_t "1" $lt "1.0"; > __versionator__test_version_compare_t "1.0_alpha" $gt "1_alpha"; > __versionator__test_version_compare_t "1.0_alpha" $gt "1"; > __versionator__test_version_compare_t "1.0_alpha" $lt "1.0"; > __versionator__test_version_compare_t "1.2.0.0_alpha7-r4" $gt "1.2_alpha7-r4"; > __versionator__test_version_compare_t "0001" $eq "1"; > __versionator__test_version_compare_t "01" $eq "001"; > __versionator__test_version_compare_t "0001.1" $eq "1.1"; > __versionator__test_version_compare_t "01.01" $eq "1.01"; > __versionator__test_version_compare_t "1.010" $eq "1.01"; > __versionator__test_version_compare_t "1.00" $eq "1.0"; > __versionator__test_version_compare_t "1.0100" $eq "1.010"; > __versionator__test_version_compare_t "1" $eq "1-r0"; > __versionator__test_version_compare_t "1-r00" $eq "1-r0"; > eshopts_pop >} >_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 >} >_elibtoolize () >{ > local opts g=; > [[ -n $(autotools_check_macro AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT) ]] || return 0; > [[ -f GNUmakefile.am || -f Makefile.am ]] && opts="--automake"; > [[ ${CHOST} == *-darwin* ]] && g=g; > autotools_run_tool ${LIBTOOLIZE:-${g}libtoolize} "$@" ${opts}; > eaclocal >} >_epatch_draw_line () >{ > [[ -z $1 ]] && set "$(printf "%65s" '')"; > echo "${1//?/=}" >} >_filter-hardened () >{ > local f; > for f in "$@"; > do > case "${f}" in > -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) > gcc-specs-pie || continue; > is-flagq -nopie || append-flags -nopie > ;; > -fstack-protector) > gcc-specs-ssp || continue; > is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector) > ;; > -fstack-protector-all) > gcc-specs-ssp-to-all || continue; > is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all) > ;; > -fno-strict-overflow) > gcc-specs-nostrict || continue; > is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow) > ;; > esac; > done >} >_filter-var () >{ > local f x VAR VAL; > declare -a new; > VAR=$1; > shift; > eval VAL=\${${VAR}}; > for f in ${VAL}; > do > for x in "$@"; > do > [[ ${f} == ${x} ]] && continue 2; > done; > eval new\[\${\#new\[@]}]=\${f}; > done; > eval export ${VAR}=\${new\[*]} >} >_gcc-install-dir () >{ > echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" >} >_gcc-specs-directive_raw () >{ > local cc=$(tc-getCC); > local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); > ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } >$1=="*"directive":" { pspec=spec; spec=""; outside=0; next } > outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } > spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } > { spec=spec $0 } >END { print spec }'; > return 0 >} >_gcc-specs-exists () >{ > [[ -f $(_gcc-install-dir)/$1 ]] >} >_gcc_fullversion () >{ > local ver="$1"; > shift; > set -- `$(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"`; > eval echo "$ver" >} >_is_flagq () >{ > local x; > for x in ${!1}; > do > [[ ${x} == $2 ]] && return 0; > done; > return 1 >} >_unpack_tar () >{ > if [ "${y}" == "tar" ]; then > $1 -c -- "$srcdir$x" | tar xof -; > assert_sigpipe_ok "$myfail"; > else > $1 -c -- "${srcdir}${x}" > ${x%.*} || die "$myfail"; > fi >} >add_device () >{ > : ${lirc_device_count:=0}; > ((lirc_device_count++)); > if [[ ${lirc_device_count} -eq 2 ]]; then > ewarn; > ewarn "When selecting multiple devices for lirc to be supported,"; > ewarn "it can not be guaranteed that the drivers play nice together."; > ewarn; > ewarn "If this is not intended, then abort emerge now with Ctrl-C,"; > ewarn "Set LIRC_DEVICES and restart emerge."; > ewarn; > epause; > fi; > local dev="${1}"; > local desc="device ${dev}"; > if [[ -n "${2}" ]]; then > desc="${2}"; > fi; > elog "Compiling support for ${desc}"; > MY_OPTS="${MY_OPTS} --with-driver=${dev}" >} >append-cflags () >{ > [[ -z $* ]] && return 0; > export CFLAGS="${CFLAGS} $*"; > return 0 >} >append-cppflags () >{ > [[ -z $* ]] && return 0; > export CPPFLAGS="${CPPFLAGS} $*"; > return 0 >} >append-cxxflags () >{ > [[ -z $* ]] && return 0; > export CXXFLAGS="${CXXFLAGS} $*"; > return 0 >} >append-fflags () >{ > [[ -z $* ]] && return 0; > export FFLAGS="${FFLAGS} $*"; > export FCFLAGS="${FCFLAGS} $*"; > return 0 >} >append-flags () >{ > [[ -z $* ]] && return 0; > append-cflags "$@"; > append-cxxflags "$@"; > append-fflags "$@"; > return 0 >} >append-ldflags () >{ > [[ -z $* ]] && return 0; > local flag; > for flag in "$@"; > do > [[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS"; > done; > export LDFLAGS="${LDFLAGS} $*"; > return 0 >} >append-lfs-flags () >{ > [[ -n $@ ]] && die "append-lfs-flags takes no arguments"; > append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE >} >append-libs () >{ > [[ -z $* ]] && return 0; > local flag; > for flag in "$@"; > do > [[ ${flag} == -l* ]] && flag=${flag#-l}; > export LIBS="${LIBS} -l${flag}"; > done; > return 0 >} >autotools_check_macro () >{ > [[ -f configure.ac || -f configure.in ]] || return 0; > local macro; > for macro in "$@"; > do > WANT_AUTOCONF="2.5" autoconf $(autotools_m4dir_include) --trace="${macro}" 2> /dev/null; > done; > return 0 >} >autotools_env_setup () >{ > if [[ ${WANT_AUTOMAKE} == "latest" ]]; then > local pv; > for pv in ${_LATEST_AUTOMAKE}; > do > ROOT=/ has_version "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="$pv"; > done; > [[ ${WANT_AUTOMAKE} == "latest" ]] && die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE}"; > fi; > [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 >} >autotools_get_auxdir () >{ > local auxdir_scan_out; > auxdir_scan_out=$(autotools_check_macro "AC_CONFIG_AUX_DIR"); > [[ -n ${auxdir_scan_out} ]] || return 0; > echo ${auxdir_scan_out} | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) { > if (match($0, /AC_CONFIG_AUX_DIR:(.*)$/, res)) > print res[1] > }' | uniq; > return 0 >} >autotools_get_subdirs () >{ > local subdirs_scan_out; > subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS"); > [[ -n ${subdirs_scan_out} ]] || return 0; > echo "${subdirs_scan_out}" | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) { > if (match($0, /AC_CONFIG_SUBDIRS:(.*)$/, res)) > print res[1] > }' | uniq; > return 0 >} >autotools_m4dir_include () >{ > [[ -n ${AT_M4DIR} ]] || return; > local include_opts=; > for x in ${AT_M4DIR}; > do > case "${x}" in > "-I") > > ;; > *) > [[ ! -d ${x} ]] && ewarn "autotools.eclass: '${x}' does not exist"; > include_opts="${include_opts} -I ${x}" > ;; > esac; > done; > echo $include_opts >} >autotools_run_tool () >{ > if [[ ${EBUILD_PHASE} != "unpack" && ${EBUILD_PHASE} != "prepare" ]]; then > ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase"; > fi; > autotools_env_setup; > local STDERR_TARGET="${T}/$1.out"; > if [[ -e ${STDERR_TARGET} ]]; then > STDERR_TARGET="${T}/$1-$$.out"; > fi; > printf "***** $1 *****\n***** PWD: ${PWD}\n***** $*\n\n" > "${STDERR_TARGET}"; > ebegin "Running $@"; > "$@" >> "${STDERR_TARGET}" 2>&1; > eend $?; > if [[ $? != 0 && ${NO_FAIL} != 1 ]]; then > echo; > eerror "Failed Running $1 !"; > eerror; > eerror "Include in your bugreport the contents of:"; > eerror; > eerror " ${STDERR_TARGET}"; > echo; > die "Failed Running $1 !"; > fi >} >bashrcng_shmfs_clean () >{ > [[ ! -n $( check_if_mounted ${CATEGORY}/${PF} ) ]] && return; > if ( isfeature keeptemp || isfeature keepwork ); then > local FEATURE="$( isfeature keeptemp && echo -n ' keeptemp' )$( isfeature keepwork && echo -n ' keepwork' )"; > echo; > elog "clean phase disabled as required by FEATURE(S) [${GOOD}${FEATURE}${NORMAL} ]"; > elog "NOTE: when you need to delete all the temporary files generated by emerge"; > elog "that are mounted in RAM, use the command: ${WARN}eselect bashrcng-shmfs clean${NORMAL}"; > echo; > return; > fi; > einfo "Wiping ${PORTAGE_TMPDIR}/portage"; > einfo; > einfo " Unmounting memory device(s):"; > check_if_mounted ${CATEGORY}/${PF} | while read MOUNT_POINT; do > ebegin " [ ${GOOD}${SHM_TYPE}${NORMAL} ] on ${WARN}${PORTAGE_BUILDDIR}${NORMAL}"; > unmount_shmfs ${CATEGORY}/${PF}; > eend $?; > done; > restore_overcommit_policy ${CATEGORY}/${PF}; > clean_builddir ${CATEGORY}/${PF} CONTENT; > restore_memory_caches; > einfo; > einfo "now ${PORTAGE_TMPDIR}/portage it's spick and span!"; > echo >} >bashrcng_shmfs_setup () >{ > if parseconffile $MEMFILE; then > einfo "shmfs plugin disabled for ${P} as required by [ ${GOOD}$(basename ${MEMFILE})${NORMAL} ]"; > return; > fi; > if [[ ${TMPFS_FOR_EBUILD} == "no" && ${PORTAGE_CALLER} == "ebuild" ]]; then > einfo "shmfs plugin disabled as required by [ TMPFS_FOR_EBUILD='no' ]"; > return; > fi; > local PHYSICAL_MEMORY=($( get_physical_memory )); > local BACKING_SIZE=($( get_backing_size )); > local VIRTUAL_MEMORY=($(( $PHYSICAL_MEMORY + $BACKING_SIZE ))); > local VM_OVERCOMMIT_RATIO=($( get_overcommit_ratio )); > local VM_ALLOCABLE=($(( (( $PHYSICAL_MEMORY * $VM_OVERCOMMIT_RATIO ) / 100) + $BACKING_SIZE ))); > if [[ ${VIRTUAL_MEMORY} -le "0" ]]; then > echo; > ewarn "shmfs plugin disabled [ no valid shared memory size: '${VIRTUAL_MEMORY}' ]"; > echo; > return; > fi; > echo; > einfo "Activating shmfs plugin:"; > einfo " ${HILITE}SHM TYPE :${NORMAL} ${GOOD}${SHM_TYPE}${NORMAL} on ${WARN}${PORTAGE_BUILDDIR}${NORMAL}"; > if [[ "normal" == ${VERBOSITY} ]]; then > einfo " ${HILITE}Virtual Memory${NORMAL} : $(print_spaces $VIRTUAL_MEMORY 5)${GOOD}${VIRTUAL_MEMORY} MB${NORMAL} [ ${GOOD}$(blocks_count)${NORMAL} blocks of size ${GOOD}${BLOCK_SIZE} KB${NORMAL} ]"; > einfo " ${HILITE}Physical Memory${NORMAL} : $(print_spaces $PHYSICAL_MEMORY 5)${GOOD}${PHYSICAL_MEMORY} MB${NORMAL}"; > einfo " ${HILITE}Backing size${NORMAL} : $(print_spaces $BACKING_SIZE 5)${GOOD}${BACKING_SIZE} MB${NORMAL} [ ${GOOD}${BACKING}${NORMAL} ]"; > einfo " ${HILITE}MAX VM allocable${NORMAL}: $(print_spaces $VM_ALLOCABLE 5)${BAD}${VM_ALLOCABLE} MB${NORMAL} [ ${VM_OVERCOMMIT_RATIO}% of ${VIRTUAL_MEMORY} MB ]"; > fi; > ebegin " ${HILITE}Dropping clean caches${NORMAL}"; > flush_memory_caches; > eend $?; > overcommit_policy ${CATEGORY}/${PF}; > if [[ -n $( check_if_mounted ${CATEGORY}/${PF} ) ]]; then > if ( isfeature keeptemp || isfeature keepwork || isfeature noclean ); then > einfo " ${HILITE}Shared Memory Filesystem just mounted, skipping${NORMAL}"; > return; > else > eerror "Detected a previously mounted Shared Memory Filesystem!"; > eerror "There are not reasons to have a mounted memory device at this point."; > echo; > elog "For safety purpose the shmfs plugin is disabled and the emerge process stopped."; > elog "To solve the problem run the command: ${WARN}eselect bashrcng-shmfs clean${NORMAL},"; > elog "then resume the emerge process: ${WARN}emerge --resume${NORMAL}."; > exit 2; > fi; > fi; > ebegin " ${HILITE}Mounting the Shared Memory Filesystem${NORMAL}"; > savebackup; > mount_shmfs ${PORTAGE_BUILDDIR} ${VIRTUAL_MEMORY} ${BLOCK_SIZE}; > restorebackup; > eend $? >} >blocks_count () >{ > echo $(( ($VIRTUAL_MEMORY * 1024) / $BLOCK_SIZE )) >} >built_with_use () >{ > local hidden="no"; > if [[ $1 == "--hidden" ]]; then > hidden="yes"; > shift; > fi; > local missing_action="die"; > if [[ $1 == "--missing" ]]; then > missing_action=$2; > shift; > shift; > case ${missing_action} in > true | false | die) > > ;; > *) > die "unknown action '${missing_action}'" > ;; > esac; > fi; > local opt=$1; > [[ ${opt:0:1} = "-" ]] && shift || opt="-a"; > local PKG=$(best_version $1); > [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package"; > shift; > local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE; > local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE; > if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then > case ${missing_action} in > true) > return 0 > ;; > false) > return 1 > ;; > die) > die "Unable to determine what USE flags $PKG was built with" > ;; > esac; > fi; > if [[ ${hidden} == "no" ]]; then > local IUSE_BUILT=($(<"${IUSEFILE}")); > local expand; > for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]'); > do > if [[ $1 == ${expand}_* ]]; then > expand=""; > break; > fi; > done; > if [[ -n ${expand} ]]; then > if ! has $1 ${IUSE_BUILT[@]#[-+]}; then > case ${missing_action} in > true) > return 0 > ;; > false) > return 1 > ;; > die) > die "$PKG does not actually support the $1 USE flag!" > ;; > esac; > fi; > fi; > fi; > local USE_BUILT=$(<${USEFILE}); > while [[ $# -gt 0 ]]; do > if [[ ${opt} = "-o" ]]; then > has $1 ${USE_BUILT} && return 0; > else > has $1 ${USE_BUILT} || return 1; > fi; > shift; > done; > [[ ${opt} = "-a" ]] >} >cdrom_get_cds () >{ > local cdcnt=0; > local f=; > for f in "$@"; > do > ((++cdcnt)); > export CDROM_CHECK_${cdcnt}="$f"; > done; > export CDROM_TOTAL_CDS=${cdcnt}; > export CDROM_CURRENT_CD=1; > if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then > local var=; > cdcnt=0; > while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do > ((++cdcnt)); > var="CD_ROOT_${cdcnt}"; > [[ -z ${!var} ]] && var="CD_ROOT"; > if [[ -z ${!var} ]]; then > eerror "You must either use just the CD_ROOT"; > eerror "or specify ALL the CD_ROOT_X variables."; > eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."; > die "could not locate CD_ROOT_${cdcnt}"; > fi; > done; > export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}}; > einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"; > export CDROM_SET=-1; > for f in ${CDROM_CHECK_1//:/ }; > do > ((++CDROM_SET)); > [[ -e ${CDROM_ROOT}/${f} ]] && break; > done; > export CDROM_MATCH=${f}; > return; > fi; > if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then > einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}"; > echo; > einfo "If you do not have the CD, but have the data files"; > einfo "mounted somewhere on your filesystem, just export"; > einfo "the variable CD_ROOT so that it points to the"; > einfo "directory containing the files."; > echo; > einfo "For example:"; > einfo "export CD_ROOT=/mnt/cdrom"; > echo; > else > if [[ -n ${CDROM_NAME_SET} ]]; then > cdcnt=0; > while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do > ((++cdcnt)); > export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}"; > done; > fi; > einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."; > cdcnt=0; > while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do > ((++cdcnt)); > var="CDROM_NAME_${cdcnt}"; > [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"; > done; > echo; > einfo "If you do not have the CDs, but have the data files"; > einfo "mounted somewhere on your filesystem, just export"; > einfo "the following variables so they point to the right place:"; > einfon ""; > cdcnt=0; > while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do > ((++cdcnt)); > echo -n " CD_ROOT_${cdcnt}"; > done; > echo; > einfo "Or, if you have all the files in the same place, or"; > einfo "you only have one cdrom, you can export CD_ROOT"; > einfo "and that place will be used as the same data source"; > einfo "for all the CDs."; > echo; > einfo "For example:"; > einfo "export CD_ROOT_1=/mnt/cdrom"; > echo; > fi; > export CDROM_SET=""; > export CDROM_CURRENT_CD=0; > cdrom_load_next_cd >} >cdrom_load_next_cd () >{ > local var; > ((++CDROM_CURRENT_CD)); > unset CDROM_ROOT; > var=CD_ROOT_${CDROM_CURRENT_CD}; > [[ -z ${!var} ]] && var="CD_ROOT"; > if [[ -z ${!var} ]]; then > var="CDROM_CHECK_${CDROM_CURRENT_CD}"; > _cdrom_locate_file_on_cd ${!var}; > else > export CDROM_ROOT=${!var}; > fi; > einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" >} >check_extra_config () >{ > local config negate die error reworkmodulenames; > local soft_errors_count=0 hard_errors_count=0 config_required=0; > local old_LINUX_CONFIG_EXISTS_DONE="${_LINUX_CONFIG_EXISTS_DONE}"; > linux-info_get_any_version; > for config in ${CONFIG_CHECK}; > do > if [[ "${config:0:1}" != "~" ]]; then > config_required=1; > break; > fi; > done; > if [[ ${config_required} == 0 ]]; then > if ! linux_config_exists; then > ewarn "Unable to check for the following kernel config options due"; > ewarn "to absence of any configured kernel sources or compiled"; > ewarn "config:"; > for config in ${CONFIG_CHECK}; > do > local_error="ERROR_${config#\~}"; > msg="${!local_error}"; > if [[ "x${msg}" == "x" ]]; then > local_error="WARNING_${config#\~}"; > msg="${!local_error}"; > fi; > ewarn " - ${config#\~}${msg:+ - }${msg}"; > done; > ewarn "You're on your own to make sure they are set if needed."; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"; > return 0; > fi; > else > require_configured_kernel; > fi; > einfo "Checking for suitable kernel configuration options..."; > for config in ${CONFIG_CHECK}; > do > die=1; > error=0; > negate=0; > reworkmodulenames=0; > if [[ ${config:0:1} == "~" ]]; then > die=0; > config=${config:1}; > else > if [[ ${config:0:1} == "@" ]]; then > die=0; > reworkmodulenames=1; > config=${config:1}; > fi; > fi; > if [[ ${config:0:1} == "!" ]]; then > negate=1; > config=${config:1}; > fi; > if [[ ${negate} == 1 ]]; then > linux_chkconfig_present ${config} && error=2; > else > if [[ ${reworkmodulenames} == 1 ]]; then > local temp_config="${config//*:}" i n; > config="${config//:*}"; > if linux_chkconfig_present ${config}; then > for i in ${MODULE_NAMES}; > do > n="${i//${temp_config}}"; > [[ -z ${n//\(*} ]] && MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}"; > done; > error=2; > fi; > else > linux_chkconfig_present ${config} || error=1; > fi; > fi; > if [[ ${error} > 0 ]]; then > local report_func="eerror" local_error; > local_error="ERROR_${config}"; > local_error="${!local_error}"; > if [[ -z "${local_error}" ]]; then > local_error="${config}_ERROR"; > local_error="${!local_error}"; > fi; > if [[ ${die} == 0 && -z "${local_error}" ]]; then > local_error="WARNING_${config}"; > local_error="${!local_error}"; > if [[ -n "${local_error}" ]]; then > report_func="ewarn"; > fi; > fi; > if [[ -z "${local_error}" ]]; then > [[ ${error} == 1 ]] && local_error="is not set when it should be." || local_error="should not be set. But it is."; > local_error="CONFIG_${config}:\t ${local_error}"; > fi; > if [[ ${die} == 0 ]]; then > ${report_func} " ${local_error}"; > soft_errors_count=$[soft_errors_count + 1]; > else > ${report_func} " ${local_error}"; > hard_errors_count=$[hard_errors_count + 1]; > fi; > fi; > done; > if [[ ${hard_errors_count} > 0 ]]; then > eerror "Please check to make sure these options are set correctly."; > eerror "Failure to do so may cause unexpected problems."; > eerror "Once you have satisfied these options, please try merging"; > eerror "this package again."; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"; > die "Incorrect kernel configuration options"; > else > if [[ ${soft_errors_count} > 0 ]]; then > ewarn "Please check to make sure these options are set correctly."; > ewarn "Failure to do so may cause unexpected problems."; > else > eend 0; > fi; > fi; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}" >} >check_if_mounted () >{ > local MOUNT_POINT; > LC_ALL=C mount | egrep "^bashrcng on ${PORTAGE_TMPDIR}/portage/${1}(.*) type tmpfs" | cut -f 3 -d ' ' | while read MOUNT_POINT; do > echo ${MOUNT_POINT}; > done >} >check_kernel_built () >{ > require_configured_kernel; > get_version; > if [ ! -f "${KV_OUT_DIR}/include/linux/version.h" ]; then > eerror "These sources have not yet been prepared."; > eerror "We cannot build against an unprepared tree."; > eerror "To resolve this, please type the following:"; > eerror; > eerror "# cd ${KV_DIR}"; > eerror "# make oldconfig"; > eerror "# make modules_prepare"; > eerror; > eerror "Then please try merging this module again."; > die "Kernel sources need compiling first"; > fi >} >check_license () >{ > local lic=$1; > if [ -z "${lic}" ]; then > lic="${PORTDIR}/licenses/${LICENSE}"; > else > if [ -e "${PORTDIR}/licenses/${lic}" ]; then > lic="${PORTDIR}/licenses/${lic}"; > else > if [ -e "${PWD}/${lic}" ]; then > lic="${PWD}/${lic}"; > else > if [ -e "${lic}" ]; then > lic="${lic}"; > fi; > fi; > fi; > fi; > local l="`basename ${lic}`"; > local alic; > eshopts_push -o noglob; > for alic in ${ACCEPT_LICENSE}; > do > if [[ ${alic} == ${l} ]]; then > eshopts_pop; > return 0; > fi; > done; > eshopts_pop; > [ ! -f "${lic}" ] && die "Could not find requested license ${lic}"; > local licmsg=$(emktemp); > cat > ${licmsg} <<-EOF >********************************************************** >The following license outlines the terms of use of this >package. You MUST accept this license for installation to >continue. When you are done viewing, hit 'q'. If you >CTRL+C out of this, the install will not run! >********************************************************** > >EOF > > cat ${lic} >> ${licmsg}; > ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}"; > einfon "Do you accept the terms of this license (${l})? [yes/no] "; > read alic; > case ${alic} in > yes | Yes | y | Y) > return 0 > ;; > *) > echo; > echo; > echo; > eerror "You MUST accept the license to continue! Exiting!"; > die "Failed to accept license" > ;; > esac >} >check_modules_supported () >{ > require_configured_kernel; > get_version; > if ! linux_chkconfig_builtin "MODULES"; then > eerror "These sources do not support loading external modules."; > eerror "to be able to use this module please enable \"Loadable modules support\""; > eerror "in your kernel, recompile and then try merging this module again."; > die "No support for external modules in ${KV_FULL} config"; > fi >} >check_vermagic () >{ > debug-print-function ${FUNCNAME} $*; > local curr_gcc_ver=$(gcc -dumpversion); > local tmpfile old_chost old_gcc_ver result=0; > tmpfile=`find "${KV_DIR}/" -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`; > tmpfile=${tmpfile//*usr/lib}; > tmpfile=${tmpfile//\/include*}; > old_chost=${tmpfile//*gcc\/}; > old_chost=${old_chost//\/*}; > old_gcc_ver=${tmpfile//*\/}; > if [[ -z ${old_gcc_ver} || -z ${old_chost} ]]; then > ewarn ""; > ewarn "Unable to detect what version of GCC was used to compile"; > ewarn "the kernel. Build will continue, but you may experience problems."; > else > if [[ ${curr_gcc_ver} != ${old_gcc_ver} ]]; then > ewarn ""; > ewarn "The version of GCC you are using (${curr_gcc_ver}) does"; > ewarn "not match the version of GCC used to compile the"; > ewarn "kernel (${old_gcc_ver})."; > result=1; > else > if [[ ${CHOST} != ${old_chost} ]]; then > ewarn ""; > ewarn "The current CHOST (${CHOST}) does not match the chost"; > ewarn "used when compiling the kernel (${old_chost})."; > result=1; > fi; > fi; > fi; > if [[ ${result} -gt 0 ]]; then > ewarn ""; > ewarn "Build will not continue, because you will experience problems."; > ewarn "To fix this either change the version of GCC you wish to use"; > ewarn "to match the kernel, or recompile the kernel first."; > die "GCC Version Mismatch."; > fi >} >check_zlibinflate () >{ > require_configured_kernel; > get_version; > local INFLATE; > local DEFLATE; > einfo "Determining the usability of ZLIB_INFLATE support in your kernel"; > ebegin "checking ZLIB_INFLATE"; > linux_chkconfig_builtin CONFIG_ZLIB_INFLATE; > eend $?; > [ "$?" != 0 ] && die; > ebegin "checking ZLIB_DEFLATE"; > linux_chkconfig_builtin CONFIG_ZLIB_DEFLATE; > eend $?; > [ "$?" != 0 ] && die; > local LINENO_START; > local LINENO_END; > local SYMBOLS; > local x; > LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)"; > LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if \[' | tail -n 1 | cut -d : -f 1)"; > (( LINENO_AMOUNT = $LINENO_END - $LINENO_START )); > (( LINENO_END = $LINENO_END - 1 )); > SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.*\(CONFIG_[^\" ]*\).*/\1/g;')"; > for x in $SYMBOLS; > do > if [ "${!x}" = "y" ]; then > einfo "${x} ensures zlib is linked into your kernel - excellent"; > return 0; > fi; > done; > eerror; > eerror "This kernel module requires ZLIB library support."; > eerror "You have enabled zlib support in your kernel, but haven't enabled"; > eerror "enabled any option that will ensure that zlib is linked into your"; > eerror "kernel."; > eerror; > eerror "Please ensure that you enable at least one of these options:"; > eerror; > for x in $SYMBOLS; > do > eerror " * $x"; > done; > eerror; > eerror "Please remember to recompile and install your kernel, and reboot"; > eerror "into your new kernel before attempting to load this kernel module."; > die "Kernel doesn't include zlib support" >} >clean_builddir () >{ > [[ -z ${PORTAGE_TMPDIR} || -z ${1} || ${1} == "/" || ${1} == "/*" || ${1} == "*" ]] && return; > [[ -z "$(find "${PORTAGE_TMPDIR}/portage/${1}" -mindepth 1 -maxdepth 1)" ]] && return; > case ${2} in > ALL) > rm -rf ${PORTAGE_TMPDIR}/portage/${1}; > [[ -z "$(find "${PORTAGE_TMPDIR}/portage/$( dirname ${1} )" -mindepth 1 -maxdepth 1)" ]] && rm -rf ${PORTAGE_TMPDIR}/portage/$( dirname ${1} ) > ;; > CONTENT) > rm -rf ${PORTAGE_TMPDIR}/portage/${1}/*; > rm -rf ${PORTAGE_TMPDIR}/portage/${1}/.bashrcng > ;; > esac >} >convert_to_m () >{ > debug-print-function ${FUNCNAME} $*; > if use_m; then > [ ! -f "${1}" ] && die "convert_to_m() requires a filename as an argument"; > ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIRS="; > sed -i 's:SUBDIRS=:M=:g' "${1}"; > eend $?; > fi >} >darwintoolize () >{ > die "Use elibtoolize" >} >delete_all_version_separators () >{ > replace_all_version_separators "" "${1}" >} >delete_version_separator () >{ > replace_version_separator "${1}" "" "${2}" >} >dlopen_lib () >{ > case "${CHOST}" in > *-linux-gnu* | *-linux-uclibc | *-interix*) > echo "-ldl" > ;; > esac >} >doicon () >{ > ( local i j ret; > insinto /usr/share/pixmaps; > for i in "$@"; > do > if [[ -f ${i} ]]; then > doins "${i}"; > ((ret+=$?)); > else > if [[ -d ${i} ]]; then > for j in "${i}"/*.png; > do > doins "${j}"; > ((ret+=$?)); > done; > else > ((++ret)); > fi; > fi; > done; > exit ${ret} ) >} >domenu () >{ > ( local i j ret=0; > insinto /usr/share/applications; > for i in "$@"; > do > if [[ -f ${i} ]]; then > doins "${i}"; > ((ret+=$?)); > else > if [[ -d ${i} ]]; then > for j in "${i}"/*.desktop; > do > doins "${j}"; > ((ret+=$?)); > done; > else > ((++ret)); > fi; > fi; > done; > exit ${ret} ) >} >dyn_pretend () >{ > if [[ -e $PORTAGE_BUILDDIR/.pretended ]]; then > vecho ">>> It appears that '$PF' is already pretended; skipping."; > vecho ">>> Remove '$PORTAGE_BUILDDIR/.pretended' to force pretend."; > return 0; > fi; > ebuild_phase pre_pkg_pretend; > ebuild_phase pkg_pretend; > >> "$PORTAGE_BUILDDIR/.pretended" || die "Failed to create $PORTAGE_BUILDDIR/.pretended"; > ebuild_phase post_pkg_pretend >} >eaclocal () >{ > local aclocal_opts; > local amflags_file; > for amflags_file in GNUmakefile.am Makefile.am GNUmakefile.in Makefile.in; > do > [[ -e ${amflags_file} ]] || continue; > autotools_env_setup; > aclocal_opts=$(sed -n '/^ACLOCAL_AMFLAGS[[:space:]]*=/s:[^=]*=::p' ${amflags_file}); > eval aclocal_opts=\"${aclocal_opts}\"; > break; > done; > [[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && autotools_run_tool aclocal $(autotools_m4dir_include) "$@" ${aclocal_opts} >} >eautoconf () >{ > if [[ ! -f configure.ac && ! -f configure.in ]]; then > echo; > eerror "No configure.{ac,in} present in '${PWD}'!"; > echo; > die "No configure.{ac,in} present!"; > fi; > autotools_run_tool autoconf $(autotools_m4dir_include) "$@" >} >eautoheader () >{ > [[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0; > NO_FAIL=1 autotools_run_tool autoheader $(autotools_m4dir_include) "$@" >} >eautomake () >{ > local extra_opts; > local makefile_name; > for makefile_name in {GNUmakefile,{M,m}akefile}.{am,in} ""; > do > [[ -f ${makefile_name} ]] && break; > done; > [[ -z ${makefile_name} ]] && return 0; > if [[ ${makefile_name} == *.in ]]; then > if ! grep -qs AM_INIT_AUTOMAKE configure.??; then > return 0; > fi; > else > if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name%.am}.in ]]; then > local used_automake; > local installed_automake; > installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | sed -e 's:.*(GNU automake) ::'); > used_automake=$(head -n 1 < ${makefile_name%.am}.in | sed -e 's:.*by automake \(.*\) from .*:\1:'); > if [[ ${installed_automake} != ${used_automake} ]]; then > einfo "Automake used for the package (${used_automake}) differs from"; > einfo "the installed version (${installed_automake})."; > eautoreconf; > return 0; > fi; > fi; > fi; > [[ -f INSTALL && -f AUTHORS && -f ChangeLog && -f NEWS ]] || extra_opts="${extra_opts} --foreign"; > autotools_run_tool automake --add-missing --copy ${extra_opts} "$@" >} >eautopoint () >{ > autotools_run_tool autopoint "$@" >} >eautoreconf () >{ > local x auxdir g; > if [[ -z ${AT_NO_RECURSIVE} ]]; then > for x in $(autotools_get_subdirs); > do > if [[ -d ${x} ]]; then > pushd "${x}" > /dev/null; > AT_NOELIBTOOLIZE="yes" eautoreconf; > popd > /dev/null; > fi; > done; > fi; > auxdir=$(autotools_get_auxdir); > einfo "Running eautoreconf in '${PWD}' ..."; > [[ -n ${auxdir} ]] && mkdir -p ${auxdir}; > eaclocal; > [[ ${CHOST} == *-darwin* ]] && g=g; > if ${LIBTOOLIZE:-${g}libtoolize} -n --install &>/dev/null; then > _elibtoolize --copy --force --install; > else > _elibtoolize --copy --force; > fi; > eautoconf; > eautoheader; > FROM_EAUTORECONF="yes" eautomake ${AM_OPTS}; > [[ ${AT_NOELIBTOOLIZE} == "yes" ]] && return 0; > S=${PWD} elibtoolize; > return 0 >} >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[678]) > case "$2" in > *[!0-9]*) > nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2\$/) {print \$0;exit;} }" > ;; > *) > nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" > ;; > esac > ;; > *-darwin*) > local mytype=$1; > [[ "passwd" == $mytype ]] && mytype="Users"; > [[ "group" == $mytype ]] && mytype="Groups"; > case "$2" in > *[!0-9]*) > dscl . -read /$mytype/$2 2> /dev/null | grep RecordName > ;; > *) > local mykey="UniqueID"; > [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID"; > dscl . -search /$mytype $mykey $2 2> /dev/null > ;; > esac > ;; > *-freebsd* | *-dragonfly*) > local opts action="user"; > [[ $1 == "passwd" ]] || action="group"; > if [[ $2 == [[:digit:]]* ]]; then > [[ ${action} == "user" ]] && opts="-u" || opts="-g"; > fi; > pw show ${action} ${opts} "$2" -q > ;; > *-netbsd* | *-openbsd*) > grep "$2:\*:" /etc/$1 > ;; > *) > type -p nscd &>/dev/null && nscd -i "$1"; > getent "$1" "$2" > ;; > esac >} >egethome () >{ > ent=$(egetent passwd $1); > case ${CHOST} in > *-darwin* | *-freebsd* | *-dragonfly*) > echo ${ent} | cut -d: -f9 > ;; > *) > echo ${ent} | cut -d: -f6 > ;; > esac >} >egetshell () >{ > ent=$(egetent passwd "$1"); > case ${CHOST} in > *-darwin* | *-freebsd* | *-dragonfly*) > echo ${ent} | cut -d: -f10 > ;; > *) > echo ${ent} cut -d: -f7 > ;; > esac >} >elibtoolize () >{ > local x; > local do_portage="no"; > local do_reversedeps="no"; > local do_only_patches="no"; > local do_uclibc="yes"; > local deptoremove=; > local do_shallow="no"; > local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed"; > for x in "$@"; > do > case ${x} in > --portage) > do_portage="yes" > ;; > --reverse-deps) > do_reversedeps="yes"; > elt_patches+=" fix-relink" > ;; > --patch-only) > do_only_patches="yes" > ;; > --remove-internal-dep=*) > deptoremove=${x#--remove-internal-dep=}; > [[ -n ${deptoremove} ]] && elt_patches+=" rem-int-dep" > ;; > --shallow) > do_shallow="yes" > ;; > --no-uclibc) > do_uclibc="no" > ;; > *) > eerror "Invalid elibtoolize option: ${x}"; > die "elibtoolize called with ${x} ??" > ;; > esac; > done; > [[ ${do_uclibc} == "yes" ]] && elt_patches+=" uclibc-conf uclibc-ltconf"; > case ${CHOST} in > *-aix*) > elt_patches+=" hardcode aixrtl aix-noundef" > ;; > *-darwin*) > elt_patches+=" darwin-ltconf darwin-ltmain darwin-conf" > ;; > *-freebsd*) > elt_patches+=" fbsd-conf fbsd-ltconf" > ;; > *-hpux*) > elt_patches+=" hpux-conf deplibs hc-flag-ld hardcode hardcode-relink relink-prog no-lc" > ;; > *-irix*) > elt_patches+=" irix-ltmain" > ;; > *-mint*) > elt_patches+=" mint-conf" > ;; > esac; > if $(tc-getLD) --version 2>&1 | grep -qs 'GNU gold'; then > elt_patches+=" gold-conf"; > fi; > set --; > if [[ ${do_shallow} == "yes" ]]; then > [[ -f ${S}/ltmain.sh ]] && set -- "${S}"; > else > set -- $(find "${S}" -name ltmain.sh -printf '%h '); > fi; > local d p; > for d in "$@"; > do > export ELT_APPLIED_PATCHES=; > [[ -f ${d}/.elibtoolized ]] && continue; > einfo "Running elibtoolize in: ${d#${WORKDIR}/}/"; > for p in ${elt_patches}; > do > local ret=0; > case ${p} in > portage) > if ! grep -qs 'We do not want portage' "${d}/ltmain.sh"; then > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$?; > fi > ;; > rem-int-dep) > ELT_walk_patches "${d}/ltmain.sh" "${p}" "${deptoremove}"; > ret=$? > ;; > fix-relink) > if grep -qs 'inst_prefix_dir' "${d}/ltmain.sh"; then > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$?; > fi > ;; > max_cmd_len) > if grep -qs 'max_cmd_len' "${d}/ltmain.sh"; then > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$?; > fi > ;; > as-needed) > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$? > ;; > uclibc-conf) > if grep -qs 'Transform linux' "${d}/configure"; then > ELT_walk_patches "${d}/configure" "${p}"; > ret=$?; > else > if [[ ! -e ${d}/configure ]] && grep -qs 'Transform linux' "${d}/../configure"; then > ELT_walk_patches "${d}/../configure" "${p}"; > ret=$?; > fi; > fi > ;; > uclibc-ltconf) > if [[ -s ${d}/ltconfig ]]; then > ELT_walk_patches "${d}/ltconfig" "${p}"; > ret=$?; > fi > ;; > fbsd-conf) > if grep -qs 'version_type=freebsd-' "${d}/configure"; then > ELT_walk_patches "${d}/configure" "${p}"; > ret=$?; > else > if [[ ! -e ${d}/configure ]] && grep -qs 'version_type=freebsd-' "${d}/../configure"; then > ELT_walk_patches "${d}/../configure" "${p}"; > ret=$?; > fi; > fi > ;; > fbsd-ltconf) > if [[ -s ${d}/ltconfig ]]; then > ELT_walk_patches "${d}/ltconfig" "${p}"; > ret=$?; > fi > ;; > darwin-conf) > if grep -qs '&& echo \.so ||' "${d}/configure"; then > ELT_walk_patches "${d}/configure" "${p}"; > ret=$?; > else > if [[ ! -e ${d}/configure ]] && grep -qs '&& echo \.so ||' "${d}/../configure"; then > ELT_walk_patches "${d}/../configure" "${p}"; > ret=$?; > fi; > fi > ;; > darwin-ltconf) > if [[ -s ${d}/ltconfig ]]; then > ELT_walk_patches "${d}/ltconfig" "${p}"; > ret=$?; > fi > ;; > darwin-ltmain) > if [[ -e ${d}/ltmain.sh ]] && ! grep -qs 'verstring="-compatibility_version' "${d}/ltmain.sh"; then > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$?; > fi > ;; > aixrtl | hpux-conf) > ret=1; > local subret=0; > while [[ $subret -eq 0 ]]; do > subret=1; > if [[ -e ${d}/configure ]]; then > ELT_walk_patches "${d}/configure" "${p}"; > subret=$?; > else > if [[ ! -e ${d}/configure && -e ${d}/../configure ]]; then > ELT_walk_patches "${d}/../configure" "${p}"; > subret=$?; > fi; > fi; > if [[ $subret -eq 0 ]]; then > ret=0; > fi; > done > ;; > mint-conf | gold-conf) > ret=1; > local subret=1; > if [[ -e ${d}/configure ]]; then > ELT_walk_patches "${d}/configure" "${p}"; > subret=$?; > else > if [[ -e ${d}/../configure ]]; then > ELT_walk_patches "${d}/../configure" "${p}"; > subret=$?; > else > if [[ -e ${d}/../../configure ]]; then > ELT_walk_patches "${d}/../../configure" "${p}"; > subret=$?; > fi; > fi; > fi; > if [[ $subret -eq 0 ]]; then > ret=0; > fi > ;; > install-sh) > ELT_walk_patches "${d}/install-sh" "${p}"; > ret=$? > ;; > cross) > if tc-is-cross-compiler; then > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$?; > fi > ;; > *) > ELT_walk_patches "${d}/ltmain.sh" "${p}"; > ret=$? > ;; > esac; > if [[ ${ret} -ne 0 ]]; then > case ${p} in > relink) > local version=$(ELT_libtool_version "${d}/ltmain.sh"); > if ! grep -qs 'inst_prefix_dir' "${d}/ltmain.sh" && [[ $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]]; then > ewarn " Could not apply relink.patch!"; > fi > ;; > portage) > if [[ ${do_portage} == "yes" ]]; then > if ! grep -qs 'We do not want portage' "${d}/ltmain.sh"; then > echo; > eerror "Portage patch requested, but failed to apply!"; > eerror "Please file a bug report to add a proper patch."; > die "Portage patch requested, but failed to apply!"; > fi; > else > if grep -qs 'We do not want portage' "${d}/ltmain.sh"; then > :; > else > local version=$(ELT_libtool_version "${d}"/ltmain.sh); > echo; > eerror "Portage patch failed to apply (ltmain.sh version ${version})!"; > eerror "Please file a bug report to add a proper patch."; > die "Portage patch failed to apply!"; > fi; > ELT_APPLIED_PATCHES="portage"; > fi > ;; > uclibc-*) > [[ ${CHOST} == *-uclibc ]] && ewarn " uClibc patch set '${p}' failed to apply!" > ;; > fbsd-*) > if [[ ${CHOST} == *-freebsd* ]]; then > if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' "${d}/configure" "${d}/../configure" 2>/dev/null) ]]; then > eerror " FreeBSD patch set '${p}' failed to apply!"; > die "FreeBSD patch set '${p}' failed to apply!"; > fi; > fi > ;; > darwin-*) > [[ ${CHOST} == *"-darwin"* ]] && ewarn " Darwin patch set '${p}' failed to apply!" > ;; > esac; > fi; > done; > if [[ -z ${ELT_APPLIED_PATCHES} ]]; then > if [[ ${do_portage} == "no" && ${do_reversedeps} == "no" && ${do_only_patches} == "no" && ${deptoremove} == "" ]]; then > ewarn "Cannot apply any patches, please file a bug about this"; > die; > fi; > fi; > rm -f "${d}/libtool"; > > "${d}/.elibtoolized"; > done >} >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 -r ${opts} ${egroup} || die "enewgroup failed" > ;; > esac; > export SANDBOX_ON="${oldsandbox}" >} >enewuser () >{ > case ${EBUILD_PHASE} in > unpack | compile | test | install) > eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function."; > eerror "Package fails at QA and at life. Please file a bug."; > die "Bad package! enewuser is only for use in pkg_* functions!" > ;; > esac; > local euser=$1; > shift; > if [[ -z ${euser} ]]; then > eerror "No username specified !"; > die "Cannot call enewuser without a username"; > fi; > if [[ -n $(egetent passwd "${euser}") ]]; then > return 0; > fi; > einfo "Adding user '${euser}' to your system ..."; > local opts=; > local euid=$1; > shift; > if [[ -n ${euid} && ${euid} != -1 ]]; then > if [[ ${euid} -gt 0 ]]; then > if [[ -n $(egetent passwd ${euid}) ]]; then > euid="next"; > fi; > else > eerror "Userid given but is not greater than 0 !"; > die "${euid} is not a valid UID"; > fi; > else > euid="next"; > fi; > if [[ ${euid} == "next" ]]; then > for ((euid = 101; euid <= 999; euid++)) > do > [[ -z $(egetent passwd ${euid}) ]] && break; > done; > fi; > opts="${opts} -u ${euid}"; > einfo " - Userid: ${euid}"; > local eshell=$1; > shift; > if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then > if [[ ! -e ${ROOT}${eshell} ]]; then > eerror "A shell was specified but it does not exist !"; > die "${eshell} does not exist in ${ROOT}"; > fi; > if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then > eerror "Do not specify ${eshell} yourself, use -1"; > die "Pass '-1' as the shell parameter"; > fi; > else > for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null; > do > [[ -x ${ROOT}${shell} ]] && break; > done; > if [[ ${shell} == "/dev/null" ]]; then > eerror "Unable to identify the shell to use, proceeding with userland default."; > case ${USERLAND} in > GNU) > shell="/bin/false" > ;; > BSD) > shell="/sbin/nologin" > ;; > Darwin) > shell="/usr/sbin/nologin" > ;; > *) > die "Unable to identify the default shell for userland ${USERLAND}" > ;; > esac; > fi; > eshell=${shell}; > fi; > einfo " - Shell: ${eshell}"; > opts="${opts} -s ${eshell}"; > local ehome=$1; > shift; > if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then > ehome="/dev/null"; > fi; > einfo " - Home: ${ehome}"; > opts="${opts} -d ${ehome}"; > local egroups=$1; > shift; > if [[ ! -z ${egroups} ]]; then > local oldifs=${IFS}; > local defgroup="" exgroups=""; > export IFS=","; > for g in ${egroups}; > do > export IFS=${oldifs}; > if [[ -z $(egetent group "${g}") ]]; then > eerror "You must add group ${g} to the system first"; > die "${g} is not a valid GID"; > fi; > if [[ -z ${defgroup} ]]; then > defgroup=${g}; > else > exgroups="${exgroups},${g}"; > fi; > export IFS=","; > done; > export IFS=${oldifs}; > opts="${opts} -g ${defgroup}"; > if [[ ! -z ${exgroups} ]]; then > opts="${opts} -G ${exgroups:1}"; > fi; > else > egroups="(none)"; > fi; > einfo " - Groups: ${egroups}"; > local oldsandbox=${SANDBOX_ON}; > export SANDBOX_ON="0"; > case ${CHOST} in > *-darwin*) > if [[ -z $@ ]]; then > dscl . create /users/${euser} uid ${euid}; > dscl . create /users/${euser} shell ${eshell}; > dscl . create /users/${euser} home ${ehome}; > dscl . create /users/${euser} realname "added by portage for ${PN}"; > local oldifs=${IFS}; > export IFS=","; > for g in ${egroups}; > do > dscl . merge /groups/${g} users ${euser}; > done; > export IFS=${oldifs}; > else > einfo "Extra options are not supported on Darwin yet"; > einfo "Please report the ebuild along with the info below"; > einfo "eextra: $@"; > die "Required function missing"; > fi > ;; > *-freebsd* | *-dragonfly*) > if [[ -z $@ ]]; then > pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed"; > else > einfo " - Extra: $@"; > pw useradd ${euser} ${opts} "$@" || die "enewuser failed"; > fi > ;; > *-netbsd*) > if [[ -z $@ ]]; then > useradd ${opts} ${euser} || die "enewuser failed"; > else > einfo " - Extra: $@"; > useradd ${opts} ${euser} "$@" || die "enewuser failed"; > fi > ;; > *-openbsd*) > if [[ -z $@ ]]; then > useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed"; > else > einfo " - Extra: $@"; > useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed"; > fi > ;; > *) > if [[ -z $@ ]]; then > useradd -r ${opts} -c "added by portage for ${PN}" ${euser} || die "enewuser failed"; > else > einfo " - Extra: $@"; > useradd -r ${opts} "$@" ${euser} || die "enewuser failed"; > fi > ;; > esac; > if [[ ! -e ${ROOT}/${ehome} ]]; then > einfo " - Creating ${ehome} in ${ROOT}"; > mkdir -p "${ROOT}/${ehome}"; > chown ${euser} "${ROOT}/${ehome}"; > chmod 755 "${ROOT}/${ehome}"; > fi; > export SANDBOX_ON=${oldsandbox} >} >epatch () >{ > function _epatch_draw_line () > { > [[ -z $1 ]] && set "$(printf "%65s" '')"; > echo "${1//?/=}" > }; > unset P4CONFIG P4PORT P4USER; > if [[ $# -gt 1 ]]; then > local m; > for m in "$@"; > do > epatch "${m}"; > done; > return 0; > fi; > local SINGLE_PATCH="no"; > [[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}"; > if [[ -f $1 ]]; then > SINGLE_PATCH="yes"; > set -- "$1"; > local EPATCH_SUFFIX=$1; > else > if [[ -d $1 ]]; then > set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"}; > else > if [[ -f ${EPATCH_SOURCE}/$1 ]]; then > epatch "${EPATCH_SOURCE}/$1"; > return $?; > else > [[ $# -ne 0 ]] && EPATCH_SOURCE=$1; > echo; > eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:"; > eerror; > eerror " ${EPATCH_SOURCE}"; > eerror " ( ${EPATCH_SOURCE##*/} )"; > echo; > die "Cannot find \$EPATCH_SOURCE!"; > fi; > fi; > fi; > local PIPE_CMD; > case ${EPATCH_SUFFIX##*\.} in > xz) > PIPE_CMD="xz -dc" > ;; > lzma) > PIPE_CMD="lzma -dc" > ;; > bz2) > PIPE_CMD="bzip2 -dc" > ;; > gz | Z | z) > PIPE_CMD="gzip -dc" > ;; > ZIP | zip) > PIPE_CMD="unzip -p" > ;; > *) > > ;; > esac; > [[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}"; > local x; > for x in "$@"; > do > [[ ! -f ${x} ]] && continue; > local patchname=${x##*/}; > local a=${patchname#*_}; > a=${a%%_*}; > if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then > continue; > fi; > if [[ -n ${EPATCH_EXCLUDE} ]]; then > eshopts_push -o noglob; > local ex; > for ex in ${EPATCH_EXCLUDE}; > do > if [[ ${patchname} == ${ex} ]]; then > eshopts_pop; > continue 2; > fi; > done; > eshopts_pop; > fi; > if [[ ${SINGLE_PATCH} == "yes" ]]; then > if [[ -n ${EPATCH_SINGLE_MSG} ]]; then > einfo "${EPATCH_SINGLE_MSG}"; > else > einfo "Applying ${patchname} ..."; > fi; > else > einfo " ${patchname} ..."; > fi; > local STDERR_TARGET="${T}/${patchname}.out"; > if [[ -e ${STDERR_TARGET} ]]; then > STDERR_TARGET="${T}/${patchname}-$$.out"; > fi; > printf "***** %s *****\n\n" "${patchname}" > "${STDERR_TARGET}"; > local count=0; > local PATCH_TARGET; > if [[ -n ${PIPE_CMD} ]]; then > PATCH_TARGET="${T}/$$.patch"; > echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}"; > if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then > echo; > eerror "Could not extract patch!"; > count=5; > break; > fi; > else > PATCH_TARGET=${x}; > fi; > local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }'); > if [[ -n ${abs_paths} ]]; then > count=1; > printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}"; > fi; > local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}"); > if [[ -n ${rel_paths} ]]; then > eqawarn "QA Notice: Your patch uses relative paths '../'."; > eqawarn " In the future this will cause a failure."; > eqawarn "${rel_paths}"; > fi; > while [[ ${count} -lt 5 ]]; do > ( _epatch_draw_line "***** ${patchname} *****"; > echo; > echo "PATCH COMMAND: patch -p${count} ${EPATCH_OPTS} < '${PATCH_TARGET}'"; > echo; > _epatch_draw_line "***** ${patchname} *****" ) >> "${STDERR_TARGET}"; > if ( patch -p${count} ${EPATCH_OPTS} --dry-run -f < "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then > ( _epatch_draw_line "***** ${patchname} *****"; > echo; > echo "ACTUALLY APPLYING ${patchname} ..."; > echo; > _epatch_draw_line "***** ${patchname} *****"; > patch -p${count} ${EPATCH_OPTS} < "${PATCH_TARGET}" 2>&1 ) >> "${STDERR_TARGET}"; > if [ $? -ne 0 ]; then > echo; > eerror "A dry-run of patch command succeeded, but actually"; > eerror "applying the patch failed!"; > count=5; > fi; > break; > fi; > : $(( count++ )); > done; > if [[ -n ${PIPE_CMD} ]]; then > rm -f "${PATCH_TARGET}"; > fi; > if [[ ${count} -ge 5 ]]; then > echo; > eerror "Failed Patch: ${patchname} !"; > eerror " ( ${PATCH_TARGET} )"; > eerror; > eerror "Include in your bugreport the contents of:"; > eerror; > eerror " ${STDERR_TARGET}"; > echo; > die "Failed Patch: ${patchname}!"; > fi; > rm -f "${STDERR_TARGET}"; > eend 0; > done; > [[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching"; > : >} >epatch_user () >{ > [[ $# -ne 0 ]] && die "epatch_user takes no options"; > local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches; > for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}}; > do > EPATCH_SOURCE=${base}/${CTARGET}/${check}; > [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check}; > [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check}; > if [[ -d ${EPATCH_SOURCE} ]]; then > EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch; > return 0; > fi; > done; > return 1 >} >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 >} >eshopts_pop () >{ > [[ $# -ne 0 ]] && die "eshopts_pop takes no arguments"; > local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 )); > [[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair"; > local s=${__ESHOPTS_SAVE__[$i]}; > unset __ESHOPTS_SAVE__[$i]; > if [[ ${s} == "shopt -"* ]]; then > eval "${s}" || die "eshopts_pop: sanity: invalid shopt options: ${s}"; > else > set +$- || die "eshopts_pop: sanity: invalid shell settings: $-"; > set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}"; > fi >} >eshopts_push () >{ > local i=${#__ESHOPTS_SAVE__[@]}; > if [[ $1 == -[su] ]]; then > __ESHOPTS_SAVE__[$i]=$(shopt -p); > [[ $# -eq 0 ]] && return 0; > shopt "$@" || die "eshopts_push: bad options to shopt: $*"; > else > __ESHOPTS_SAVE__[$i]=$-; > [[ $# -eq 0 ]] && return 0; > set "$@" || die "eshopts_push: bad options to set: $*"; > fi >} >esvn_clean () >{ > [[ -z $* ]] && set -- .; > find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf >} >filter-flags () >{ > _filter-hardened "$@"; > _filter-var CFLAGS "$@"; > _filter-var CPPFLAGS "$@"; > _filter-var CXXFLAGS "$@"; > _filter-var FFLAGS "$@"; > _filter-var FCFLAGS "$@"; > return 0 >} >filter-ldflags () >{ > _filter-var LDFLAGS "$@"; > return 0 >} >filter-lfs-flags () >{ > [[ -n $@ ]] && die "filter-lfs-flags takes no arguments"; > filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE >} >filter-mfpmath () >{ > local orig_mfpmath new_math prune_math; > orig_mfpmath=$(get-flag -mfpmath); > new_math=$(get-flag mfpmath); > new_math=" ${new_math//,/ } "; > prune_math=""; > for prune_math in "$@"; > do > new_math=${new_math/ ${prune_math} / }; > done; > new_math=$(echo ${new_math}); > new_math=${new_math// /,}; > if [[ -z ${new_math} ]]; then > filter-flags ${orig_mfpmath}; > else > replace-flags ${orig_mfpmath} -mfpmath=${new_math}; > fi; > return 0 >} >find_module_params () >{ > debug-print-function ${FUNCNAME} $*; > local matched_offset=0 matched_opts=0 test="${@}" temp_var result; > local i=0 y=0 z=0; > for ((i=0; i<=${#test}; i++)) > do > case ${test:${i}:1} in > \() > matched_offset[0]=${i} > ;; > \:) > matched_opts=$((${matched_opts} + 1)); > matched_offset[${matched_opts}]="${i}" > ;; > \)) > matched_opts=$((${matched_opts} + 1)); > matched_offset[${matched_opts}]="${i}" > ;; > esac; > done; > for ((i=0; i<=${matched_opts}; i++)) > do > case ${i} in > 0) > tempvar=${test:0:${matched_offset[0]}} > ;; > *) > y=$((${matched_offset[$((${i} - 1))]} + 1)); > z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]})); > z=$((${z} - 1)); > tempvar=${test:${y}:${z}} > ;; > esac; > case ${i} in > 0) > result="${result} modulename:${tempvar}" > ;; > 1) > result="${result} libdir:${tempvar}" > ;; > 2) > result="${result} srcdir:${tempvar}" > ;; > 3) > result="${result} objdir:${tempvar}" > ;; > esac; > done; > echo ${result} >} >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}" >} >flush_memory_caches () >{ > [[ ! -r /proc/sys/vm/drop_caches ]] && return; > sync; > sysctl -q -w vm.drop_caches=3; > sysctl -q -w vm.drop_caches=0 >} >gcc-fullversion () >{ > _gcc_fullversion '$1.$2.$3' "$@" >} >gcc-major-version () >{ > _gcc_fullversion '$1' "$@" >} >gcc-micro-version () >{ > _gcc_fullversion '$3' "$@" >} >gcc-minor-version () >{ > _gcc_fullversion '$2' "$@" >} >gcc-specs-directive () >{ > local directive subdname subdirective; > directive="$(_gcc-specs-directive_raw $1)"; > while [[ ${directive} == *%\(*\)* ]]; do > subdname=${directive/*%\(}; > subdname=${subdname/\)*}; > subdirective="$(_gcc-specs-directive_raw ${subdname})"; > directive="${directive//\%(${subdname})/${subdirective}}"; > done; > echo "${directive}"; > return 0 >} >gcc-specs-nostrict () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]) >} >gcc-specs-now () >{ > local directive; > directive=$(gcc-specs-directive link_command); > return $([[ "${directive/\{!nonow:}" != "${directive}" ]]) >} >gcc-specs-pie () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!nopie:}" != "${directive}" ]]) >} >gcc-specs-relro () >{ > local directive; > directive=$(gcc-specs-directive link_command); > return $([[ "${directive/\{!norelro:}" != "${directive}" ]]) >} >gcc-specs-ssp () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]) >} >gcc-specs-ssp-to-all () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]) >} >gcc-version () >{ > _gcc_fullversion '$1.$2' "$@" >} >gen_usr_ldscript () >{ > local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname); > [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/; > tc-is-static-only && return; > dodir /usr/${libdir}; > if [[ $1 == "-a" ]]; then > auto=true; > shift; > dodir /${libdir}; > fi; > output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p'); > [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"; > for lib in "$@"; > do > local tlib; > if ${auto}; then > lib="lib${lib}${suffix}"; > else > [[ -r ${ED}/${libdir}/${lib} ]] || continue; > fi; > case ${CTARGET:-${CHOST}} in > *-darwin*) > if ${auto}; then > tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); > else > tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib}); > fi; > [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}"; > tlib=${tlib##*/}; > if ${auto}; then > mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die; > if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then > mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die; > fi; > rm -f "${ED}"/${libdir}/${lib}; > fi; > if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then > chmod u+w "${ED}${libdir}/${tlib}"; > local nowrite=yes; > fi; > install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed"; > [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}"; > pushd "${ED}/usr/${libdir}" > /dev/null; > ln -snf "../../${libdir}/${tlib}" "${lib}"; > popd > /dev/null > ;; > *-aix* | *-irix* | *64*-hpux* | *-interix* | *-winnt*) > if ${auto}; then > mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; > tlib=$(readlink "${ED}"/${libdir}/${lib}); > tlib=${tlib##*/}; > if [[ -z ${tlib} ]]; then > tlib=${lib}; > else > rm -f "${ED}"/${libdir}/${lib}; > fi; > else > tlib=${lib}; > fi; > pushd "${ED}/usr/${libdir}" > /dev/null; > ln -snf "../../${libdir}/${tlib}" "${lib}"; > popd > /dev/null > ;; > hppa*-hpux*) > if ${auto}; then > tlib=$(chatr "${ED}"/usr/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}'); > [[ -z ${tlib} ]] && tlib=${lib}; > tlib=${tlib##*/}; > mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; > if [[ ${tlib} != ${lib}* ]]; then > mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die; > fi; > [[ ${tlib} != ${lib} ]] && rm -f "${ED}"/${libdir}/${lib}; > else > tlib=$(chatr "${ED}"/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}'); > [[ -z ${tlib} ]] && tlib=${lib}; > tlib=${tlib##*/}; > fi; > pushd "${ED}"/usr/${libdir} > /dev/null; > ln -snf "../../${libdir}/${tlib}" "${lib}"; > [[ ${tlib} != ${lib} ]] && ln -snf "../../${libdir}/${tlib}" "${tlib}"; > popd > /dev/null > ;; > *) > if ${auto}; then > tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); > [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"; > mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; > if [[ ${tlib} != ${lib}* ]]; then > mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die; > fi; > rm -f "${ED}"/${libdir}/${lib}; > else > tlib=${lib}; > fi; > cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT >/* GNU ld script > Since Gentoo has critical dynamic libraries in /lib, and the static versions > in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we > run into linking problems. This "fake" dynamic lib is a linker script that > redirects the linker to the real lib. And yes, this works in the cross- > compiling scenario as the sysroot-ed linker will prepend the real path. > > See bug http://bugs.gentoo.org/4411 for more info. > */ >${output_format} >GROUP ( ${EPREFIX}/${libdir}/${tlib} ) >END_LDSCRIPT > > ;; > esac > fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}"; > done >} >generate_modulesd () >{ > debug-print-function ${FUNCNAME} $*; > local currm_path currm currm_t t myIFS myVAR; > local module_docs module_enabled module_aliases module_additions module_examples module_modinfo module_opts; > for currm_path in ${@}; > do > currm=${currm_path//*\/}; > currm=$(echo ${currm} | tr '[:lower:]' '[:upper:]'); > currm_t=${currm}; > while [[ -z ${currm_t//*-*} ]]; do > currm_t=${currm_t/-/_}; > done; > module_docs="$(eval echo \${MODULESD_${currm_t}_DOCS})"; > module_enabled="$(eval echo \${MODULESD_${currm_t}_ENABLED})"; > module_aliases="$(eval echo \${#MODULESD_${currm_t}_ALIASES[*]})"; > module_additions="$(eval echo \${#MODULESD_${currm_t}_ADDITIONS[*]})"; > module_examples="$(eval echo \${#MODULESD_${currm_t}_EXAMPLES[*]})"; > [[ ${module_aliases} -eq 0 ]] && unset module_aliases; > [[ ${module_additions} -eq 0 ]] && unset module_additions; > [[ ${module_examples} -eq 0 ]] && unset module_examples; > [[ ${module_enabled} == no ]] && return 0; > for t in ${!module_*}; > do > [[ -z ${!t} ]] && unset ${t}; > done; > [[ -z ${!module_*} ]] && return 0; > module_modinfo="$(modinfo -p ${currm_path}.${KV_OBJ})"; > module_config="${T}/modulesd-${currm}"; > ebegin "Preparing file for modules.d"; > echo "# modules.d configuration file for ${currm}" >> "${module_config}"; > [[ -n ${module_docs} ]] && echo "# For more information please read:" >> "${module_config}"; > for t in ${module_docs}; > do > echo "# ${t//*\/}" >> "${module_config}"; > done; > echo >> "${module_config}"; > if [[ ${module_aliases} -gt 0 ]]; then > echo "# Internal Aliases - Do not edit" >> "${module_config}"; > echo "# ------------------------------" >> "${module_config}"; > for ((t=0; t<${module_aliases}; t++)) > do > echo "alias $(eval echo \${MODULESD_${currm}_ALIASES[$t]})" >> "${module_config}"; > done; > echo '' >> "${module_config}"; > fi; > if [[ -n ${module_modinfo} ]]; then > echo >> "${module_config}"; > echo "# Configurable module parameters" >> "${module_config}"; > echo "# ------------------------------" >> "${module_config}"; > myIFS="${IFS}"; > IFS="$(echo -en "\n\b")"; > for t in ${module_modinfo}; > do > myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")"; > if [[ -n ${myVAR} ]]; then > module_opts="${module_opts} ${t%%:*}:${myVAR}"; > fi; > echo -e "# ${t%%:*}:\t${t#*:}" >> "${module_config}"; > done; > IFS="${myIFS}"; > echo '' >> "${module_config}"; > fi; > if [[ $(eval echo \${MODULESD_${currm}_ALIASES[0]}) == guess ]]; then > if [[ -n ${module_opts} ]]; then > echo "# For Example..." >> "${module_config}"; > echo "# --------------" >> "${module_config}"; > for t in ${module_opts}; > do > echo "# options ${currm} ${t//:*}=${t//*:}" >> "${module_config}"; > done; > echo '' >> "${module_config}"; > fi; > else > if [[ ${module_examples} -gt 0 ]]; then > echo "# For Example..." >> "${module_config}"; > echo "# --------------" >> "${module_config}"; > for ((t=0; t<${module_examples}; t++)) > do > echo "options $(eval echo \${MODULESD_${currm}_EXAMPLES[$t]})" >> "${module_config}"; > done; > echo '' >> "${module_config}"; > fi; > fi; > if [[ ${module_additions} -gt 0 ]]; then > for ((t=0; t<${module_additions}; t++)) > do > echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" >> "${module_config}"; > done; > echo '' >> "${module_config}"; > fi; > if kernel_is ge 2 6; then > insinto /etc/modprobe.d; > else > insinto /etc/modules.d; > fi; > newins "${module_config}" "${currm_path//*\/}.conf"; > [[ -n ${module_docs} ]] && dodoc ${module_docs}; > done; > eend 0; > return 0 >} >get-KERNEL_CC () >{ > debug-print-function ${FUNCNAME} $*; > if [[ -n ${KERNEL_CC} ]]; then > echo "${KERNEL_CC}"; > return; > fi; > local kernel_cc; > if [ -n "${KERNEL_ABI}" ]; then > kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))"; > else > kernel_cc=$(tc-getCC); > fi; > echo "${kernel_cc}" >} >get-flag () >{ > local f findflag="$1"; > for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS}; > do > if [ "${f/${findflag}}" != "${f}" ]; then > printf "%s\n" "${f/-${findflag}=}"; > return 0; > fi; > done; > return 1 >} >get_abi_ASFLAGS () >{ > get_abi_var ASFLAGS "$@" >} >get_abi_CFLAGS () >{ > get_abi_var CFLAGS "$@" >} >get_abi_CHOST () >{ > get_abi_var CHOST "$@" >} >get_abi_CTARGET () >{ > get_abi_var CTARGET "$@" >} >get_abi_FAKE_TARGETS () >{ > get_abi_var FAKE_TARGETS "$@" >} >get_abi_LDFLAGS () >{ > get_abi_var LDFLAGS "$@" >} >get_abi_LIBDIR () >{ > get_abi_var LIBDIR "$@" >} >get_abi_var () >{ > local flag=$1; > local abi; > if [ $# -gt 1 ]; then > abi=${2}; > else > if [ -n "${ABI}" ]; then > abi=${ABI}; > else > if [ -n "${DEFAULT_ABI}" ]; then > abi=${DEFAULT_ABI}; > else > abi="default"; > fi; > fi; > fi; > local var="${flag}_${abi}"; > echo ${!var} >} >get_after_major_version () >{ > echo $(get_version_component_range 2- "${1:-${PV}}") >} >get_all_abis () >{ > local order=""; > if [[ -z ${MULTILIB_ABIS} ]]; then > echo "default"; > return 0; > fi; > for x in ${MULTILIB_ABIS}; > do > if [[ ${x} != ${DEFAULT_ABI} ]]; then > order="${order:+${order} }${x}"; > fi; > done; > order="${order:+${order} }${DEFAULT_ABI}"; > echo ${order}; > return 0 >} >get_all_libdirs () >{ > local libdirs; > local abi; > local dir; > for abi in ${MULTILIB_ABIS}; > do > libdirs+=" $(get_abi_LIBDIR ${abi})"; > done; > [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib"; > echo "${libdirs}" >} >get_all_version_components () >{ > eshopts_push -s extglob; > local ver_str=${1:-${PV}} result; > result=(); > if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then > echo ${VERSIONATOR_CACHE_RESULT}; > eshopts_pop; > return; > fi; > export VERSIONATOR_CACHE_VER_STR=${ver_str}; > while [[ -n $ver_str ]]; do > case "${ver_str::1}" in > [[:digit:]]) > result+=("${ver_str%%[^[:digit:]]*}"); > ver_str=${ver_str##+([[:digit:]])} > ;; > [-_.]) > result+=("${ver_str::1}"); > ver_str=${ver_str:1} > ;; > [[:alpha:]]) > local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])}; > result+=("${ver_str::${#ver_str} - ${#not_match}}"); > ver_str=${not_match} > ;; > *) > result+=("${ver_str::1}"); > ver_str=${ver_str:1} > ;; > esac; > done; > export VERSIONATOR_CACHE_RESULT=${result[*]}; > echo ${result[@]}; > eshopts_pop >} >get_backing_size () >{ > case $BACKING in > swap) > echo $( free -m | awk '/^Swap: /{print $2}' ) > ;; > none | *) > echo 0 > ;; > esac >} >get_bmake () >{ > if [[ ${USERLAND} == *BSD ]]; then > echo make; > else > if [[ ${USERLAND} == "Darwin" ]]; then > echo bsdmake; > else > echo pmake; > fi; > fi >} >get_install_abis () >{ > local order=""; > if [[ -z ${MULTILIB_ABIS} ]]; then > echo "default"; > return 0; > fi; > if [[ ${EMULTILIB_PKG} == "true" ]]; then > for x in ${MULTILIB_ABIS}; > do > if [[ ${x} != "${DEFAULT_ABI}" ]]; then > has ${x} ${ABI_DENY} || order="${order} ${x}"; > fi; > done; > has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}"; > if [[ -n ${ABI_ALLOW} ]]; then > local ordera=""; > for x in ${order}; > do > if has ${x} ${ABI_ALLOW}; then > ordera="${ordera} ${x}"; > fi; > done; > order=${ordera}; > fi; > else > order=${DEFAULT_ABI}; > fi; > if [[ -z ${order} ]]; then > die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package."; > fi; > echo ${order}; > return 0 >} >get_last_version_component_index () >{ > echo $(($(get_version_component_count "${1:-${PV}}" ) - 1)) >} >get_libdir () >{ > local CONF_LIBDIR; > if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then > echo ${CONF_LIBDIR_OVERRIDE}; > else > get_abi_LIBDIR; > fi >} >get_libdir_override () >{ > if has_multilib_profile; then > eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"; > exit 1; > fi; > CONF_LIBDIR="$1"; > CONF_LIBDIR_OVERRIDE="$1"; > LIBDIR_default="$1" >} >get_libname () >{ > local libname; > local ver=$1; > case ${CHOST} in > *-cygwin | mingw* | *-mingw*) > libname="dll" > ;; > *-darwin*) > libname="dylib" > ;; > *-mint*) > libname="irrelevant" > ;; > hppa*-hpux*) > libname="sl" > ;; > *) > libname="so" > ;; > esac; > if [[ -z $* ]]; then > echo ".${libname}"; > else > for ver in "$@"; > do > case ${CHOST} in > *-darwin*) > echo ".${ver}.${libname}" > ;; > *-mint*) > echo ".${libname}" > ;; > *) > echo ".${libname}.${ver}" > ;; > esac; > done; > fi >} >get_localversion () >{ > local lv_list i x; > for i in $(ls ${1}/localversion* 2>/dev/null); > do > [[ -n ${i//*~*} ]] && lv_list="${lv_list} ${i}"; > done; > for i in ${lv_list}; > do > x="${x}$(<${i})"; > done; > x=${x/ /}; > echo ${x} >} >get_major_version () >{ > local c=($(get_all_version_components "${1:-${PV}}")); > echo ${c[0]} >} >get_makefile_extract_function () >{ > local a='' b='' mkfunc='getfilevar'; > a="$(getfilevar VERSION ${KERNEL_MAKEFILE})"; > b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})"; > [[ "${a}" != "${b}" ]] && mkfunc='getfilevar_noexec'; > echo "${mkfunc}" >} >get_modname () >{ > local modname; > local ver=$1; > case ${CHOST} in > *-darwin*) > modname="bundle" > ;; > *) > modname="so" > ;; > esac; > echo ".${modname}" >} >get_mounts () >{ > local point= node= fs= opts= foo=; > if [[ $(uname -s) == "Linux" ]]; then > while read node point fs opts foo; do > echo "${point} ${node} ${fs} ${opts}"; > done < /proc/mounts; > return; > fi; > local IFS=' '; > LC_ALL=C mount -p | while read node point fs foo; do > opts=${fs#* }; > fs=${fs%% *}; > echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}"; > done >} >get_multilibdir () >{ > if has_multilib_profile; then > eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"; > exit 1; > fi; > echo ${CONF_MULTILIBDIR:=lib32} >} >get_overcommit_ratio () >{ > echo $( sysctl -n vm.overcommit_ratio ) >} >get_physical_memory () >{ > echo $( free -m | awk '/^Mem: /{print $2}' ) >} >get_running_version () >{ > KV_FULL=$(uname -r); > if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile && -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then > KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source); > KBUILD_OUTPUT=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build); > unset KV_FULL; > get_version; > return $?; > else > if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then > KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source); > unset KV_FULL; > get_version; > return $?; > else > if [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then > KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build); > unset KV_FULL; > get_version; > return $?; > else > KV_MAJOR=$(get_version_component_range 1 ${KV_FULL}); > KV_MINOR=$(get_version_component_range 2 ${KV_FULL}); > KV_PATCH=$(get_version_component_range 3 ${KV_FULL}); > KV_PATCH=${KV_PATCH//-*}; > KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}}"; > fi; > fi; > fi; > return 0 >} >get_version () >{ > local kbuild_output mkfunc tmplocal; > [ -n "${KV_FULL}" ] && return 0; > unset KV_DIR; > [ -z "${get_version_warning_done}" ] && qeinfo "Determining the location of the kernel source code"; > [ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})"; > [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}"; > if [ -z "${KV_DIR}" ]; then > if [ -z "${get_version_warning_done}" ]; then > get_version_warning_done=1; > qeerror "Unable to find kernel sources at ${KERNEL_DIR}"; > if [ "${KERNEL_DIR}" == "/usr/src/linux" ]; then > qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, "; > qeinfo "(or the kernel you wish to build against)."; > qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location"; > else > qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against."; > fi; > fi; > return 1; > fi; > if [ -z "${get_version_warning_done}" ]; then > qeinfo "Found kernel source directory:"; > qeinfo " ${KV_DIR}"; > fi; > if [ ! -s "${KV_DIR}/Makefile" ]; then > if [ -z "${get_version_warning_done}" ]; then > get_version_warning_done=1; > qeerror "Could not find a Makefile in the kernel source directory."; > qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources"; > fi; > return 1; > fi; > OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}"; > KERNEL_MAKEFILE="${KV_DIR}/Makefile"; > mkfunc="$(get_makefile_extract_function "${KERNEL_MAKEFILE}")"; > kbuild_output="$(${mkfunc} KBUILD_OUTPUT ${KERNEL_MAKEFILE})"; > OUTPUT_DIR="${OUTPUT_DIR:-${kbuild_output}}"; > KV_MAJOR="$(${mkfunc} VERSION ${KERNEL_MAKEFILE})"; > KV_MINOR="$(${mkfunc} PATCHLEVEL ${KERNEL_MAKEFILE})"; > KV_PATCH="$(${mkfunc} SUBLEVEL ${KERNEL_MAKEFILE})"; > KV_EXTRA="$(${mkfunc} EXTRAVERSION ${KERNEL_MAKEFILE})"; > if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ]; then > if [ -z "${get_version_warning_done}" ]; then > get_version_warning_done=1; > qeerror "Could not detect kernel version."; > qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources."; > fi; > return 1; > fi; > OUTPUT_DIR="${OUTPUT_DIR:-/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build}"; > [ -h "${OUTPUT_DIR}" ] && KV_OUT_DIR="$(readlink -f ${OUTPUT_DIR})"; > [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}"; > if [ -n "${KV_OUT_DIR}" ]; then > qeinfo "Found kernel object directory:"; > qeinfo " ${KV_OUT_DIR}"; > fi; > KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}"; > if [ -s "${KV_OUT_DIR}"/include/config/kernel.release ]; then > KV_LOCAL=$(<"${KV_OUT_DIR}"/include/config/kernel.release); > else > if [ -s "${KV_OUT_DIR}"/.kernelrelease ]; then > KV_LOCAL=$(<"${KV_OUT_DIR}"/.kernelrelease); > else > KV_LOCAL=; > fi; > fi; > tmplocal=${KV_LOCAL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}}; > if [ "$KV_LOCAL" = "$tmplocal" ]; then > KV_LOCAL=; > else > KV_LOCAL=$tmplocal; > fi; > KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"; > qeinfo "Found sources for kernel version:"; > qeinfo " ${KV_FULL}"; > return 0 >} >get_version_component_count () >{ > local a=($(get_version_components "${1:-${PV}}")); > echo ${#a[@]} >} >get_version_component_range () >{ > eshopts_push -s extglob; > local c v="${2:-${PV}}" range="${1}" range_start range_end; > local -i i=-1 j=0; > c=($(get_all_version_components "${v}")); > range_start=${range%-*}; > range_start=${range_start:-1}; > range_end=${range#*-}; > range_end=${range_end:-${#c[@]}}; > while ((j < range_start)); do > i+=1; > ((i > ${#c[@]})) && eshopts_pop && return; > [[ -n "${c[i]//[-._]}" ]] && j+=1; > done; > while ((j <= range_end)); do > echo -n ${c[i]}; > ((i > ${#c[@]})) && eshopts_pop && return; > [[ -n "${c[i]//[-._]}" ]] && j+=1; > i+=1; > done; > eshopts_pop >} >get_version_components () >{ > local c=$(get_all_version_components "${1:-${PV}}"); > echo ${c//[-._]/ } >} >getfilevar () >{ > local ERROR basefname basedname myARCH="${ARCH}"; > ERROR=0; > [ -z "${1}" ] && ERROR=1; > [ ! -f "${2}" ] && ERROR=1; > if [ "${ERROR}" = 1 ]; then > echo -e "\n"; > eerror "getfilevar requires 2 variables, with the second a valid file."; > eerror " getfilevar <VARIABLE> <CONFIGFILE>"; > else > basefname="$(basename ${2})"; > basedname="$(dirname ${2})"; > unset ARCH; > echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | make -C "${basedname}" M="${S}" ${BUILD_FIXES} -s -f - 2> /dev/null; > ARCH=${myARCH}; > fi >} >getfilevar_noexec () >{ > local ERROR basefname basedname mycat myARCH="${ARCH}"; > ERROR=0; > mycat='cat'; > [ -z "${1}" ] && ERROR=1; > [ ! -f "${2}" ] && ERROR=1; > [ "${2%.gz}" != "${2}" ] && mycat='zcat'; > if [ "${ERROR}" = 1 ]; then > echo -e "\n"; > eerror "getfilevar_noexec requires 2 variables, with the second a valid file."; > eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>"; > else > ${mycat} "${2}" | sed -n -e "/^[[:space:]]*${1}[[:space:]]*:\\?=[[:space:]]*\(.*\)\$/{ > s,^[^=]*[[:space:]]*=[[:space:]]*,,g ; > s,[[:space:]]*\$,,g ; > p > }"; > fi >} >has_hardened () >{ > die "$0: deprecated, please use gcc-specs-{relro,now}()!" >} >has_m32 () >{ > [ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0; > local temp=$(emktemp); > echo "int main() { return(0); }" > "${temp}".c; > MY_CC=$(tc-getCC); > ${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; > local ret=$?; > rm -f "${temp}".c; > [[ ${ret} != 1 ]] && return 0; > return 1 >} >has_m64 () >{ > local temp="$(emktemp)"; > echo "int main() { return(0); }" > "${temp}".c; > MY_CC=$(tc-getCC); > ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; > local ret=$?; > rm -f "${temp}".c; > [[ ${ret} != 1 ]] && return 0; > return 1 >} >has_multilib_profile () >{ > [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] >} >has_pic () >{ > die "$0: deprecated, please use gcc-specs-pie()!" >} >has_pie () >{ > die "$0: deprecated, please use gcc-specs-pie()!" >} >has_ssp () >{ > die "$0: deprecated, please use gcc-specs-ssp()!" >} >has_ssp_all () >{ > die "$0: deprecated, please use gcc-specs-ssp()!" >} >helpers_die () >{ > case "${EAPI:-0}" in > 0 | 1 | 2 | 3) > echo -e "$@" 1>&2 > ;; > *) > die "$@" > ;; > esac >} >is-flag () >{ > is-flagq "$@" && echo true >} >is-flagq () >{ > [[ -n $2 ]] && die "Usage: is-flag <flag>"; > _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1 >} >is-ldflag () >{ > is-ldflagq "$@" && echo true >} >is-ldflagq () >{ > [[ -n $2 ]] && die "Usage: is-ldflag <flag>"; > _is_flagq LDFLAGS $1 >} >is-login-disabled () >{ > shell=$(egetshell "$1"); > case ${shell} in > /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin) > return 0 > ;; > *) > return 1 > ;; > esac >} >is_final_abi () >{ > has_multilib_profile || return 0; > set -- $(get_install_abis); > local LAST_ABI=$#; > [[ ${!LAST_ABI} == ${ABI} ]] >} >isfeature () >{ > local retval=1; > for feature in ${FEATURES}; > do > if [[ "$feature" == "$1" ]]; then > retval=0; > return $retval; > else > if [[ "$feature" == "-${1}" ]]; then > retval=1; > return $retval; > fi; > fi; > done; > return $retval >} >kernel_is () >{ > linux-info_get_any_version; > local operator testagainst value x=0 y=0 z=0; > case ${1} in > -lt | lt) > operator="-lt"; > shift > ;; > -gt | gt) > operator="-gt"; > shift > ;; > -le | le) > operator="-le"; > shift > ;; > -ge | ge) > operator="-ge"; > shift > ;; > -eq | eq) > operator="-eq"; > shift > ;; > *) > operator="-eq" > ;; > esac; > for x in ${@}; > do > for ((y=0; y<$((3 - ${#x})); y++)) > do > value="${value}0"; > done; > value="${value}${x}"; > z=$((${z} + 1)); > case ${z} in > 1) > for ((y=0; y<$((3 - ${#KV_MAJOR})); y++)) > do > testagainst="${testagainst}0"; > done; > testagainst="${testagainst}${KV_MAJOR}" > ;; > 2) > for ((y=0; y<$((3 - ${#KV_MINOR})); y++)) > do > testagainst="${testagainst}0"; > done; > testagainst="${testagainst}${KV_MINOR}" > ;; > 3) > for ((y=0; y<$((3 - ${#KV_PATCH})); y++)) > do > testagainst="${testagainst}0"; > done; > testagainst="${testagainst}${KV_PATCH}" > ;; > *) > die "Error in kernel-2_kernel_is(): Too many parameters." > ;; > esac; > done; > [ "${testagainst}" ${operator} "${value}" ] && return 0 || return 1 >} >linux-info_get_any_version () >{ > get_version; > if [[ $? -ne 0 ]]; then > ewarn "Unable to calculate Linux Kernel version for build, attempting to use running version"; > get_running_version; > fi >} >linux-info_pkg_setup () >{ > linux-info_get_any_version; > if kernel_is 2 4; then > if [ "$( gcc-major-version )" -eq "4" ]; then > echo; > ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with"; > ewarn "linux-2.4 (or modules building against a linux-2.4 kernel)!"; > echo; > ewarn "Either switch to another gcc-version (via gcc-config) or use a"; > ewarn "newer kernel that supports gcc-4."; > echo; > ewarn "Also be aware that bugreports about gcc-4 not working"; > ewarn "with linux-2.4 based ebuilds will be closed as INVALID!"; > echo; > epause 10; > fi; > fi; > [ -n "${CONFIG_CHECK}" ] && check_extra_config >} >linux-mod_pkg_postinst () >{ > debug-print-function ${FUNCNAME} $*; > ${UPDATE_DEPMOD} && update_depmod; > ${UPDATE_MODULES} && update_modules; > ${UPDATE_MODULEDB} && update_moduledb >} >linux-mod_pkg_postrm () >{ > debug-print-function ${FUNCNAME} $*; > remove_moduledb >} >linux-mod_pkg_preinst () >{ > debug-print-function ${FUNCNAME} $*; > [ -d "${D}lib/modules" ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false; > [ -d "${D}etc/modules.d" ] && UPDATE_MODULES=true || UPDATE_MODULES=false; > [ -d "${D}lib/modules" ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false >} >linux-mod_pkg_setup () >{ > debug-print-function ${FUNCNAME} $*; > local is_bin="${MERGE_TYPE}"; > if has ${EAPI} 0 1 2 3; then > is_bin=${EMERGE_FROM}; > fi; > if [[ ${is_bin} == binary ]]; then > linux-mod_pkg_setup_binary; > return; > fi; > linux-info_pkg_setup; > require_configured_kernel; > check_kernel_built; > strip_modulenames; > [[ -n ${MODULE_NAMES} ]] && check_modules_supported; > set_kvobj >} >linux-mod_pkg_setup_binary () >{ > debug-print-function ${FUNCNAME} $*; > local new_CONFIG_CHECK; > for config in $CONFIG_CHECK; > do > optional='~'; > [[ ${config:0:1} == "~" ]] && optional=''; > new_CONFIG_CHECK="${new_CONFIG_CHECK} ${optional}${config}"; > done; > export CONFIG_CHECK="${new_CONFIG_CHECK}"; > linux-info_pkg_setup >} >linux-mod_src_compile () >{ > debug-print-function ${FUNCNAME} $*; > local modulename libdir srcdir objdir i n myABI="${ABI}"; > set_arch_to_kernel; > ABI="${KERNEL_ABI}"; > BUILD_TARGETS=${BUILD_TARGETS:-clean module}; > strip_modulenames; > cd "${S}"; > touch Module.symvers; > for i in ${MODULE_NAMES}; > do > unset libdir srcdir objdir; > for n in $(find_module_params ${i}); > do > eval ${n/:*}=${n/*:/}; > done; > libdir=${libdir:-misc}; > srcdir=${srcdir:-${S}}; > objdir=${objdir:-${srcdir}}; > if [ ! -f "${srcdir}/.built" ]; then > cd "${srcdir}"; > ln -s "${S}"/Module.symvers Module.symvers; > einfo "Preparing ${modulename} module"; > if [[ -n ${ECONF_PARAMS} ]]; then > econf ${ECONF_PARAMS} || die "Unable to run econf ${ECONF_PARAMS}"; > fi; > eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" CROSS_COMPILE=${CHOST}- LDFLAGS=\"$(get_abi_LDFLAGS)\" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} " || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}"; > cd "${OLDPWD}"; > touch "${srcdir}"/.built; > fi; > done; > set_arch_to_portage; > ABI="${myABI}" >} >linux-mod_src_install () >{ > debug-print-function ${FUNCNAME} $*; > local modulename libdir srcdir objdir i n; > strip_modulenames; > for i in ${MODULE_NAMES}; > do > unset libdir srcdir objdir; > for n in $(find_module_params ${i}); > do > eval ${n/:*}=${n/*:/}; > done; > libdir=${libdir:-misc}; > srcdir=${srcdir:-${S}}; > objdir=${objdir:-${srcdir}}; > einfo "Installing ${modulename} module"; > cd "${objdir}" || die "${objdir} does not exist"; > insinto /lib/modules/${KV_FULL}/${libdir}; > doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"; > cd "${OLDPWD}"; > generate_modulesd "${objdir}/${modulename}"; > done >} >linux_chkconfig_builtin () >{ > linux_config_qa_check linux_chkconfig_builtin; > local RESULT; > local config; > config="${KV_OUT_DIR}/.config"; > [ ! -f "${config}" ] && config="/proc/config.gz"; > RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"; > [ "${RESULT}" = "y" ] && return 0 || return 1 >} >linux_chkconfig_module () >{ > linux_config_qa_check linux_chkconfig_module; > local RESULT; > local config; > config="${KV_OUT_DIR}/.config"; > [ ! -f "${config}" ] && config="/proc/config.gz"; > RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"; > [ "${RESULT}" = "m" ] && return 0 || return 1 >} >linux_chkconfig_present () >{ > linux_config_qa_check linux_chkconfig_present; > local RESULT; > local config; > config="${KV_OUT_DIR}/.config"; > [ ! -f "${config}" ] && config="/proc/config.gz"; > RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"; > [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1 >} >linux_chkconfig_string () >{ > linux_config_qa_check linux_chkconfig_string; > local config; > config="${KV_OUT_DIR}/.config"; > [ ! -f "${config}" ] && config="/proc/config.gz"; > getfilevar_noexec "CONFIG_${1}" "${config}" >} >linux_config_bin_exists () >{ > export _LINUX_CONFIG_EXISTS_DONE=1; > [ -s "/proc/config.gz" ] >} >linux_config_exists () >{ > linux_config_src_exists || linux_config_bin_exists >} >linux_config_qa_check () >{ > local f="$1"; > if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then > ewarn "QA: You called $f before any linux_config_exists!"; > ewarn "QA: The return value of $f will NOT guaranteed later!"; > fi >} >linux_config_src_exists () >{ > export _LINUX_CONFIG_EXISTS_DONE=1; > [ -s "${KV_OUT_DIR}/.config" ] >} >make_desktop_entry () >{ > [[ -z $1 ]] && die "make_desktop_entry: You must specify the executable"; > local exec=${1}; > local name=${2:-${PN}}; > local icon=${3:-${PN}}; > local type=${4}; > local fields=${5}; > if [[ -z ${type} ]]; then > local catmaj=${CATEGORY%%-*}; > local catmin=${CATEGORY##*-}; > case ${catmaj} in > app) > case ${catmin} in > accessibility) > type=Accessibility > ;; > admin) > type=System > ;; > antivirus) > type=System > ;; > arch) > type=Archiving > ;; > backup) > type=Archiving > ;; > cdr) > type=DiscBurning > ;; > dicts) > type=Dictionary > ;; > doc) > type=Documentation > ;; > editors) > type=TextEditor > ;; > emacs) > type=TextEditor > ;; > emulation) > type=Emulator > ;; > laptop) > type=HardwareSettings > ;; > office) > type=Office > ;; > pda) > type=PDA > ;; > vim) > type=TextEditor > ;; > xemacs) > type=TextEditor > ;; > esac > ;; > dev) > type="Development" > ;; > games) > case ${catmin} in > action | fps) > type=ActionGame > ;; > arcade) > type=ArcadeGame > ;; > board) > type=BoardGame > ;; > emulation) > type=Emulator > ;; > kids) > type=KidsGame > ;; > puzzle) > type=LogicGame > ;; > roguelike) > type=RolePlaying > ;; > rpg) > type=RolePlaying > ;; > simulation) > type=Simulation > ;; > sports) > type=SportsGame > ;; > strategy) > type=StrategyGame > ;; > esac; > type="Game;${type}" > ;; > gnome) > type="Gnome;GTK" > ;; > kde) > type="KDE;Qt" > ;; > mail) > type="Network;Email" > ;; > media) > case ${catmin} in > gfx) > type=Graphics > ;; > *) > case ${catmin} in > radio) > type=Tuner > ;; > sound) > type=Audio > ;; > tv) > type=TV > ;; > video) > type=Video > ;; > esac; > type="AudioVideo;${type}" > ;; > esac > ;; > net) > case ${catmin} in > dialup) > type=Dialup > ;; > ftp) > type=FileTransfer > ;; > im) > type=InstantMessaging > ;; > irc) > type=IRCClient > ;; > mail) > type=Email > ;; > news) > type=News > ;; > nntp) > type=News > ;; > p2p) > type=FileTransfer > ;; > voip) > type=Telephony > ;; > esac; > type="Network;${type}" > ;; > sci) > case ${catmin} in > astro*) > type=Astronomy > ;; > bio*) > type=Biology > ;; > calc*) > type=Calculator > ;; > chem*) > type=Chemistry > ;; > elec*) > type=Electronics > ;; > geo*) > type=Geology > ;; > math*) > type=Math > ;; > physics) > type=Physics > ;; > visual*) > type=DataVisualization > ;; > esac; > type="Education;Science;${type}" > ;; > sys) > type="System" > ;; > www) > case ${catmin} in > client) > type=WebBrowser > ;; > esac; > type="Network;${type}" > ;; > *) > type= > ;; > esac; > fi; > if [ "${SLOT}" == "0" ]; then > local desktop_name="${PN}"; > else > local desktop_name="${PN}-${SLOT}"; > fi; > local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop"; > type=${type%;}${type:+;}; > eshopts_push -s extglob; > if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then > ewarn "As described in the Icon Theme Specification, icon file extensions are not"; > ewarn "allowed in .desktop files if the value is not an absolute path."; > icon=${icon%.@(xpm|png|svg)}; > fi; > eshopts_pop; > cat > "${desktop}" <<-EOF >[Desktop Entry] >Name=${name} >Type=Application >Comment=${DESCRIPTION} >Exec=${exec} >TryExec=${exec%% *} >Icon=${icon} >Categories=${type} >EOF > > if [[ ${fields:-=} != *=* ]]; then > ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}"; > fields="Path=${fields}"; > fi; > [[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}"; > ( insinto /usr/share/applications; > doins "${desktop}" ) || die "installing desktop file failed" >} >make_session_desktop () >{ > [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1; > [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1; > local title=$1; > local command=$2; > local desktop=${T}/${wm:-${PN}}.desktop; > shift 2; > cat > "${desktop}" <<-EOF >[Desktop Entry] >Name=${title} >Comment=This session logs you into ${title} >Exec=${command} $* >TryExec=${command} >Type=XSession >EOF > > ( insinto /usr/share/xsessions; > doins "${desktop}" ) >} >make_wrapper () >{ > local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5; > local tmpwrapper=$(emktemp); > cat > "${tmpwrapper}" <<EOF >#!/bin/sh >cd "${chdir:-.}" >if [ -n "${libdir}" ] ; then > if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then > export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" > else > export LD_LIBRARY_PATH="${libdir}" > fi >fi >exec ${bin} "\$@" >EOF > > chmod go+rx "${tmpwrapper}"; > if [[ -n ${path} ]]; then > ( exeinto "${path}"; > newexe "${tmpwrapper}" "${wrapper}" ) || die; > else > newbin "${tmpwrapper}" "${wrapper}" || die; > fi >} >mount_shmfs () >{ > mount -o size=${2}M,mode=770,gid=portage,noatime -t tmpfs bashrcng $1 >} >move_old_moduledb () >{ > debug-print-function ${FUNCNAME} $*; > local OLDDIR="${ROOT}"/usr/share/module-rebuild/; > local NEWDIR="${ROOT}"/var/lib/module-rebuild/; > if [[ -f "${OLDDIR}"/moduledb ]]; then > [[ ! -d "${NEWDIR}" ]] && mkdir -p "${NEWDIR}"; > [[ ! -f "${NEWDIR}"/moduledb ]] && mv "${OLDDIR}"/moduledb "${NEWDIR}"/moduledb; > rm -f "${OLDDIR}"/*; > rmdir "${OLDDIR}"; > fi >} >multilib_env () >{ > local CTARGET=${1:-${CTARGET}}; > case ${CTARGET} in > x86_64*) > export CFLAGS_x86=${CFLAGS_x86--m32}; > export CHOST_x86=${CTARGET/x86_64/i686}; > export CTARGET_x86=${CHOST_x86}; > if [[ ${SYMLINK_LIB} == "yes" ]]; then > export LIBDIR_x86="lib32"; > else > export LIBDIR_x86="lib"; > fi; > export CFLAGS_amd64=${CFLAGS_amd64--m64}; > export CHOST_amd64=${CTARGET}; > export CTARGET_amd64=${CHOST_amd64}; > export LIBDIR_amd64="lib64"; > export CFLAGS_x32=${CFLAGS_x32--mx32}; > export CHOST_x32=${CTARGET}; > export CTARGET_x32=${CHOST_x32}; > export LIBDIR_x32="libx32"; > : ${MULTILIB_ABIS=amd64 x86}; > : ${DEFAULT_ABI=amd64} > ;; > mips64*) > export CFLAGS_o32=${CFLAGS_o32--mabi=32}; > export CHOST_o32=${CTARGET/mips64/mips}; > export CTARGET_o32=${CHOST_o32}; > export LIBDIR_o32="lib"; > export CFLAGS_n32=${CFLAGS_n32--mabi=n32}; > export CHOST_n32=${CTARGET}; > export CTARGET_n32=${CHOST_n32}; > export LIBDIR_n32="lib32"; > export CFLAGS_n64=${CFLAGS_n64--mabi=64}; > export CHOST_n64=${CTARGET}; > export CTARGET_n64=${CHOST_n64}; > export LIBDIR_n64="lib64"; > : ${MULTILIB_ABIS=n64 n32 o32}; > : ${DEFAULT_ABI=n32} > ;; > powerpc64*) > export CFLAGS_ppc=${CFLAGS_ppc--m32}; > export CHOST_ppc=${CTARGET/powerpc64/powerpc}; > export CTARGET_ppc=${CHOST_ppc}; > export LIBDIR_ppc="lib"; > export CFLAGS_ppc64=${CFLAGS_ppc64--m64}; > export CHOST_ppc64=${CTARGET}; > export CTARGET_ppc64=${CHOST_ppc64}; > export LIBDIR_ppc64="lib64"; > : ${MULTILIB_ABIS=ppc64 ppc}; > : ${DEFAULT_ABI=ppc64} > ;; > s390x*) > export CFLAGS_s390=${CFLAGS_s390--m31}; > export CHOST_s390=${CTARGET/s390x/s390}; > export CTARGET_s390=${CHOST_s390}; > export LIBDIR_s390="lib"; > export CFLAGS_s390x=${CFLAGS_s390x--m64}; > export CHOST_s390x=${CTARGET}; > export CTARGET_s390x=${CHOST_s390x}; > export LIBDIR_s390x="lib64"; > : ${MULTILIB_ABIS=s390x s390}; > : ${DEFAULT_ABI=s390x} > ;; > sparc*) > export CFLAGS_sparc32=${CFLAGS_sparc32}; > export CHOST_sparc32=${CTARGET/sparc64/sparc}; > export CTARGET_sparc32=${CHOST_sparc32}; > export LIBDIR_sparc32="lib"; > export CFLAGS_sparc64=${CFLAGS_sparc64--m64}; > export CHOST_sparc64=${CTARGET}; > export CTARGET_sparc64=${CHOST_sparc64}; > export LIBDIR_sparc64="lib64"; > : ${MULTILIB_ABIS=sparc64 sparc32}; > : ${DEFAULT_ABI=sparc64} > ;; > *) > : ${MULTILIB_ABIS=default}; > : ${DEFAULT_ABI=default} > ;; > esac; > export MULTILIB_ABIS DEFAULT_ABI >} >multilib_toolchain_setup () >{ > local v vv; > export ABI=$1; > if [[ ${__DEFAULT_ABI_SAVED} == "true" ]]; then > for v in CHOST CBUILD AS CC CXX LD; > do > vv="__abi_saved_${v}"; > export ${v}="${!vv}"; > unset ${vv}; > done; > unset __DEFAULT_ABI_SAVED; > fi; > if [[ ${ABI} != ${DEFAULT_ABI} ]]; then > for v in CHOST CBUILD AS CC CXX LD; > do > export __abi_saved_${v}="${!v}"; > done; > export __DEFAULT_ABI_SAVED="true"; > export CHOST=$(get_abi_CHOST ${DEFAULT_ABI}); > export AS="$(tc-getAS) $(get_abi_ASFLAGS)"; > export CC="$(tc-getCC) $(get_abi_CFLAGS)"; > export CXX="$(tc-getCXX) $(get_abi_CFLAGS)"; > export LD="$(tc-getLD) $(get_abi_LDFLAGS)"; > export CHOST=$(get_abi_CHOST $1); > export CBUILD=$(get_abi_CHOST $1); > fi >} >newicon () >{ > ( insinto /usr/share/pixmaps; > newins "$@" ) >} >newmenu () >{ > ( insinto /usr/share/applications; > newins "$@" ) >} >no-as-needed () >{ > case $($(tc-getLD) -v 2>&1 </dev/null) in > *GNU*) > echo "-Wl,--no-as-needed" > ;; > esac >} >nonfatal () >{ > if has "${EAPI:-0}" 0 1 2 3 3_pre2; then > die "$FUNCNAME() not supported in this EAPI"; > fi; > if [[ $# -lt 1 ]]; then > die "$FUNCNAME(): Missing argument"; > fi; > PORTAGE_NONFATAL=1 "$@" >} >number_abis () >{ > set -- `get_install_abis`; > echo $# >} >overcommit_policy () >{ > local VM_OVERCOMMIT_MEMORY=$( sysctl -n vm.overcommit_memory ); > case ${VM_OVERCOMMIT_MEMORY} in > 0 | 1) > ebegin " ${HILITE}Tweaking Memory Allocator Policy${NORMAL}"; > sysctl -q -w vm.overcommit_memory=2; > if [[ -n ${1} ]]; then > mkdir -p ${PORTAGE_TMPDIR}/portage/${1}/.bashrcng; > echo ${VM_OVERCOMMIT_MEMORY} > ${PORTAGE_TMPDIR}/portage/${1}/.bashrcng/overcommit_memory; > fi; > eend $? > ;; > esac; > unset VM_OVERCOMMIT_MEMORY >} >parseconffile () >{ > [[ -z "$1" ]] && return 1; > [[ ! -r "$1" ]] && return 1; > configval=; > local catval=; > local nameval=; > local verval=; > local validatom=1; > while read atom value; do > case $atom in > ${CATEGORY}/\*) > [[ -n "$catval" ]] && ewarn "$atom redefined; using latest"; > catval=$value; > validatom=0 > ;; > ${CATEGORY}/${PN}) > [[ -n "$nameval" ]] && ewarn "$atom redefined; using latest"; > nameval=$value; > validatom=0 > ;; > =${CATEGORY}/${PF}) > [[ -n "$verval" ]] && ewarn "$atom redefined; using latest"; > verval=$value; > validatom=0 > ;; > \>${CATEGORY}/${PN}\* | \<${CATEGORY}/${PN}\* | \>=${CATEGORY}/${PN}\* | \<=${CATEGORY}/${PN}\* | =${CATEGORY}/\*) > ewarn "Sorry, atom $atom not supported: please fix the sintax." > ;; > \#*) > > ;; > esac; > done < "$1"; > if [ -n "$verval" ]; then > configval=$verval; > else > if [ -n "$nameval" ]; then > configval=$nameval; > else > if [ -n "$catval" ]; then > configval=$catval; > else > configval=; > fi; > fi; > fi; > return $validatom >} >path_exists () >{ > local opt=$1; > [[ ${opt} == -[ao] ]] && shift || opt="-a"; > [[ $# -eq 0 ]] && return 1; > local p r=0; > for p in "$@"; > do > [[ -e ${p} ]]; > : $(( r += $? )); > done; > case ${opt} in > -a) > return $(( r != 0 )) > ;; > -o) > return $(( r == $# )) > ;; > esac >} >pkg_nofetch () >{ > _eapi0_pkg_nofetch "$@" >} >pkg_postinst () >{ > linux-mod_pkg_postinst; > if [[ -e "${T}"/lircd.conf ]]; then > cp "${T}"/lircd.conf "${ROOT}"/etc/lirc/lircd.conf; > if [[ "$MOVE_OLD_LIRCD_CONF" = "1" ]]; then > elog "Moved /etc/lircd.conf to /etc/lirc/lircd.conf"; > rm -f "${ROOT}"/etc/lircd.conf; > fi; > fi; > ewarn; > ewarn "The lirc_gpio driver will not work with Kernels 2.6.22+"; > ewarn "You need to switch over to /dev/input/event? if you need gpio"; > ewarn "This device can than then be used via lirc's dev/input driver."; > ewarn; > ewarn "The new default location for lircd.conf is inside of"; > ewarn "/etc/lirc/ directory" >} >pkg_postrm () >{ > linux-mod_pkg_postrm "$@" >} >pkg_preinst () >{ > linux-mod_pkg_preinst; > local dir="${ROOT}/etc/modprobe.d"; > if [[ -a "${dir}"/lirc && ! -a "${dir}"/lirc.conf ]]; then > elog "Renaming ${dir}/lirc to lirc.conf"; > mv -f "${dir}/lirc" "${dir}/lirc.conf"; > fi; > if [[ -f "${ROOT}"/etc/lirc/lircd.conf ]]; then > cp "${ROOT}"/etc/lirc/lircd.conf "${T}"/lircd.conf; > else > if [[ -f "${ROOT}"/etc/lircd.conf ]]; then > cp "${ROOT}"/etc/lircd.conf "${T}"/lircd.conf; > MOVE_OLD_LIRCD_CONF=1; > else > if [[ -f "${D}"/etc/lirc/lircd.conf ]]; then > cp "${D}"/etc/lirc/lircd.conf "${T}"/lircd.conf; > fi; > fi; > fi; > if [[ -e "${D}"/etc/lirc/lircd.conf ]]; then > rm -f "${D}"/etc/lirc/lircd.conf; > fi >} >pkg_setup () >{ > if use lirc_devices_mceusb2 || use lirc_devices_mceusb; then > ewarn "The mceusb2 and mceusb drivers have been merged into the mainline kernel"; > ewarn "Please only use the latter now and the userspace driver"; > fi; > ewarn "If your LIRC device requires modules, you'll need MODULE_UNLOAD"; > ewarn "support in your kernel."; > linux-mod_pkg_setup; > MY_OPTS=""; > LIRC_DRIVER_DEVICE="/dev/lirc0"; > if use lirc_devices_all; then > add_device all "a lot of devices"; > else > local dev; > for dev in ${IUSE_LIRC_DEVICES_DIRECT}; > do > if use lirc_devices_${dev}; then > add_device ${dev}; > fi; > done; > if use lirc_devices_remote_wonder_plus; then > add_device atiusb "device Remote Wonder Plus (atiusb-based)"; > fi; > if use lirc_devices_serial_igor_cesko; then > add_device serial "serial with Igor Cesko design"; > MY_OPTS="${MY_OPTS} --with-igor"; > fi; > if use lirc_devices_imon_pad; then > ewarn "The imon_pad driver has incorporated the previous pad2keys patch"; > ewarn "and removed the pad2keys_active option for the lirc_imon module"; > ewarn "because it is always active."; > ewarn "If you have an older imon VFD device, you may need to add the module"; > ewarn "option display_type=1 to override autodetection and force VFD mode."; > fi; > if use lirc_devices_xboxusb; then > add_device atiusb "device xboxusb"; > fi; > if use lirc_devices_usbirboy; then > add_device userspace "device usbirboy"; > LIRC_DRIVER_DEVICE="/dev/usbirboy"; > fi; > if [[ "${MY_OPTS}" == "" ]]; then > if [[ "${PROFILE_ARCH}" == "xbox" ]]; then > add_device atiusb "device xboxusb"; > else > elog; > elog "Compiling only the lirc-applications, but no drivers."; > elog "Enable drivers with LIRC_DEVICES if you need them."; > MY_OPTS="--with-driver=none"; > fi; > fi; > fi; > use hardware-carrier && MY_OPTS="${MY_OPTS} --without-soft-carrier"; > use transmitter && MY_OPTS="${MY_OPTS} --with-transmitter"; > if [[ -n "${LIRC_OPTS}" ]]; then > ewarn; > ewarn "LIRC_OPTS is deprecated from lirc-0.8.0-r1 on."; > ewarn; > ewarn "Please use LIRC_DEVICES from now on."; > ewarn "e.g. LIRC_DEVICES=\"serial sir\""; > ewarn; > ewarn "Flags are now set per use-flags."; > ewarn "e.g. transmitter, hardware-carrier"; > local opt; > local unsupported_opts=""; > for opt in ${LIRC_OPTS}; > do > case ${opt} in > --with-port=* | --with-irq=* | --with-timer=* | --with-tty=*) > MY_OPTS="${MY_OPTS} ${opt}" > ;; > *) > unsupported_opts="${unsupported_opts} ${opt}" > ;; > esac; > done; > if [[ -n ${unsupported_opts} ]]; then > ewarn "These options are no longer allowed to be set"; > ewarn "with LIRC_OPTS: ${unsupported_opts}"; > die "LIRC_OPTS is no longer recommended."; > fi; > fi; > MODULE_NAMES="lirc(misc:${S})"; > BUILD_TARGETS="all"; > ECONF_PARAMS=" --localstatedir=/var > --with-syslog=LOG_DAEMON > --enable-sandboxed > --with-kerneldir=${KV_DIR} > --with-moduledir=/lib/modules/${KV_FULL}/misc > $(use_enable debug) > $(use_with X x) > ${MY_OPTS}"; > einfo; > einfo "lirc-configure-opts: ${MY_OPTS}"; > elog "Setting default lirc-device to ${LIRC_DRIVER_DEVICE}"; > filter-flags -Wl,-O1; > MAKEOPTS="${MAKEOPTS} -j1" >} >preserve_old_lib () >{ > if [[ ${EBUILD_PHASE} != "preinst" ]]; then > eerror "preserve_old_lib() must be called from pkg_preinst() only"; > die "Invalid preserve_old_lib() usage"; > fi; > [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"; > has preserve-libs ${FEATURES} && return 0; > local lib dir; > for lib in "$@"; > do > [[ -e ${ROOT}/${lib} ]] || continue; > dir=${lib%/*}; > dodir ${dir} || die "dodir ${dir} failed"; > cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed"; > touch "${D}"/${lib}; > done >} >preserve_old_lib_notify () >{ > if [[ ${EBUILD_PHASE} != "postinst" ]]; then > eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"; > die "Invalid preserve_old_lib_notify() usage"; > fi; > has preserve-libs ${FEATURES} && return 0; > local lib notice=0; > for lib in "$@"; > do > [[ -e ${ROOT}/${lib} ]] || continue; > if [[ ${notice} -eq 0 ]]; then > notice=1; > ewarn "Old versions of installed libraries were detected on your system."; > ewarn "In order to avoid breaking packages that depend on these old libs,"; > ewarn "the libraries are not being removed. You need to run revdep-rebuild"; > ewarn "in order to remove these old dependencies. If you do not have this"; > ewarn "helper program, simply emerge the 'gentoolkit' package."; > ewarn; > fi; > [[ ${PN} == "mpfr" ]] && lib=${lib##*/}; > ewarn " # revdep-rebuild --library '${lib}'"; > done; > if [[ ${notice} -eq 1 ]]; then > ewarn; > ewarn "Once you've finished running revdep-rebuild, it should be safe to"; > ewarn "delete the old libraries. Here is a copy & paste for the lazy:"; > for lib in "$@"; > do > ewarn " # rm '${lib}'"; > done; > fi >} >print_spaces () >{ > echo '['$(( $2 - $(echo ${1} | awk '{print length($1)}') ))'C' >} >qeerror () >{ > qout eerror "${@}" >} >qeinfo () >{ > qout einfo "${@}" >} >qewarn () >{ > qout ewarn "${@}" >} >qout () >{ > local outputmsg type; > type=${1}; > shift; > outputmsg="${@}"; > case "${EBUILD_PHASE}" in > depend) > unset outputmsg > ;; > clean) > unset outputmsg > ;; > preinst) > unset outputmsg > ;; > esac; > [ -n "${outputmsg}" ] && ${type} "${outputmsg}" >} >raw-ldflags () >{ > local x input="$@"; > [[ -z ${input} ]] && input=${LDFLAGS}; > set --; > for x in ${input}; > do > x=${x#-Wl,}; > set -- "$@" ${x//,/ }; > done; > echo "$@" >} >register_success_hook () >{ > local x; > for x in $*; > do > has $x $EBUILD_SUCCESS_HOOKS || export EBUILD_SUCCESS_HOOKS="$EBUILD_SUCCESS_HOOKS $x"; > done >} >remove_moduledb () >{ > debug-print-function ${FUNCNAME} $*; > local MODULEDB_DIR="${ROOT}"/var/lib/module-rebuild/; > move_old_moduledb; > if grep -qs ${CATEGORY}/${PN}-${PVR} "${MODULEDB_DIR}"/moduledb; then > einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."; > sed -i -e "/.*${CATEGORY}\/${PN}-${PVR}.*/d" "${MODULEDB_DIR}"/moduledb; > fi >} >replace-cpu-flags () >{ > local newcpu="$#"; > newcpu="${!newcpu}"; > while [ $# -gt 1 ]; do > replace-flags "-march=${1}" "-march=${newcpu}"; > replace-flags "-mcpu=${1}" "-mcpu=${newcpu}"; > replace-flags "-mtune=${1}" "-mtune=${newcpu}"; > shift; > done; > return 0 >} >replace-flags () >{ > [[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#"; > local f fset; > declare -a new_CFLAGS new_CXXFLAGS new_FFLAGS new_FCFLAGS; > for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS; > do > for f in ${!fset}; > do > [[ ${f} == ${1} ]] && f=${2}; > eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f}; > done; > eval export ${fset}=\${new_${fset}\[*]}; > done; > return 0 >} >replace-sparc64-flags () >{ > local SPARC64_CPUS="ultrasparc3 ultrasparc v9"; > if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then > for x in ${SPARC64_CPUS}; > do > CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}"; > done; > else > for x in ${SPARC64_CPUS}; > do > CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; > done; > fi; > if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then > for x in ${SPARC64_CPUS}; > do > CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}"; > done; > else > for x in ${SPARC64_CPUS}; > do > CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; > done; > fi; > export CFLAGS CXXFLAGS >} >replace_all_version_separators () >{ > local c=($(get_all_version_components "${2:-${PV}}")); > c=${c[@]//[-._]/$1}; > echo ${c// } >} >replace_version_separator () >{ > eshopts_push -s extglob; > local w c v="${3:-${PV}}"; > declare -i i found=0; > w=${1:-1}; > c=($(get_all_version_components ${v})); > if [[ ${w} != *[[:digit:]]* ]]; then > for ((i = 0; i < ${#c[@]}; i++)) > do > if [[ ${c[i]} == ${w} ]]; then > c[i]=${2}; > break; > fi; > done; > else > for ((i = 0; i < ${#c[@]}; i++)) > do > if [[ -n "${c[i]//[^-._]}" ]]; then > found+=1; > if ((found == w)); then > c[i]=${2}; > break; > fi; > fi; > done; > fi; > c=${c[*]}; > echo ${c// }; > eshopts_pop >} >require_configured_kernel () >{ > if ! linux_config_src_exists; then > qeerror "Could not find a usable .config in the kernel source directory."; > qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources."; > qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that"; > qeerror "it points to the necessary object directory so that it might find .config."; > die "Kernel not configured; no .config found in ${KV_OUT_DIR}"; > fi >} >restore_memory_caches () >{ > case $(sysctl -n vm.drop_caches) in > 3 | 2) > ebegin " Restoring memory caches"; > sysctl -q -w vm.drop_caches=0; > eend $? > ;; > esac >} >restore_overcommit_policy () >{ > [[ ! -s ${PORTAGE_TMPDIR}/portage/${1}/.bashrcng/overcommit_memory ]] && return; > local VM_OVERCOMMIT_MEMORY=$( cat ${PORTAGE_TMPDIR}/portage/${1}/.bashrcng/overcommit_memory ); > case ${VM_OVERCOMMIT_MEMORY} in > 0 | 1 | 2) > ebegin " Restoring memory allocator policy"; > sysctl -q -w vm.overcommit_memory=${VM_OVERCOMMIT_MEMORY}; > eend $? > ;; > esac; > unset VM_OVERCOMMIT_MEMORY >} >restorebackup () >{ > tar -xp -C ${PORTAGE_BUILDDIR} -f /tmp/bashrcng-bkp-${PN}.tar; > rm -f /tmp/bashrcng-bkp-${PN}.tar >} >savebackup () >{ > tar -cp -C ${PORTAGE_BUILDDIR} -f /tmp/bashrcng-bkp-${PN}.tar ${1:-.} >} >seq () >{ > local p=$(type -P seq); > if [[ -n ${p} ]]; then > "${p}" "$@"; > return $?; > fi; > case $# in > 1) > min=1 max=$1 step=1 > ;; > 2) > min=$1 max=$2 step=1 > ;; > 3) > min=$1 max=$3 step=$2 > ;; > *) > die "seq called with wrong number of arguments" > ;; > esac; > p=$(type -P jot); > if [[ -n ${p} ]]; then > local reps; > if [[ ${step} != 0 ]]; then > reps=$(( (max - min) / step + 1 )); > else > reps=0; > fi; > jot $reps $min $max $step; > return $?; > fi; > while :; do > [[ $max < $min && $step > 0 ]] && break; > [[ $min < $max && $step < 0 ]] && break; > echo $min; > : $(( min += step )); > done; > return 0 >} >set_arch_to_kernel () >{ > export ARCH=$(tc-arch-kernel) >} >set_arch_to_portage () >{ > export ARCH=$(tc-arch) >} >set_kvobj () >{ > debug-print-function ${FUNCNAME} $*; > if kernel_is ge 2 6; then > KV_OBJ="ko"; > else > KV_OBJ="o"; > fi >} >setup-allowed-flags () >{ > if [[ -z ${ALLOWED_FLAGS} ]]; then > export ALLOWED_FLAGS="-pipe"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident -fpermissive"; > export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w"; > fi; > ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer"; > ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -D* -U*"; > ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fma4 -mno-movbe -mno-xop -mno-lwp"; > ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm"; > export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"; > return 0 >} >source_file () >{ > source ${1/\/\///} 2> /dev/null || { > if [[ -n ${2} && ${2} == "required" ]]; then > eerror "[bashrcng ${VERSION/bashrc-}$] Could not source the required file: ${2} !"; > exit 1; > fi > } >} >src_compile () >{ > linux-mod_src_compile "$@" >} >src_install () >{ > emake DESTDIR="${D}" install || die "emake install failed"; > newinitd "${FILESDIR}"/lircd-0.8.6 lircd; > newinitd "${FILESDIR}"/lircmd lircmd; > newconfd "${FILESDIR}"/lircd.conf.2 lircd; > insinto /etc/modprobe.d/; > newins "${FILESDIR}"/modprobed.lirc lirc.conf; > newinitd "${FILESDIR}"/irexec-initd-0.8.6-r2 irexec; > newconfd "${FILESDIR}"/irexec-confd irexec; > if use doc; then > dohtml doc/html/*.html; > insinto /usr/share/doc/${PF}/images; > doins doc/images/*; > fi; > insinto /usr/share/lirc/remotes; > doins -r remotes/*; > keepdir /var/run/lirc /etc/lirc; > if [[ -e "${D}"/etc/lirc/lircd.conf ]]; then > newdoc "${D}"/etc/lirc/lircd.conf lircd.conf.example; > fi >} >src_test () >{ > _eapi0_src_test "$@" >} >src_unpack () >{ > unpack ${A}; > cd "${S}"; > edos2unix contrib/lirc.rules; > use lirc_devices_audio || epatch "${FILESDIR}"/lirc-0.8.4-portaudio_check.patch; > use lirc_devices_remote_wonder_plus && epatch "${FILESDIR}"/lirc-0.8.3_pre1-remotewonderplus.patch; > if linux_chkconfig_present SMP; then > sed -i -e "s:lirc_parallel\.o::" drivers/lirc_parallel/Makefile.am; > fi; > if kernel_is ge 2 6 22; then > ewarn "Disabling lirc_gpio driver as it does no longer work Kernel 2.6.22+"; > sed -i -e "s:lirc_gpio\.o::" drivers/lirc_gpio/Makefile.am; > fi; > sed -i -e 's:CFLAGS="-O2:CFLAGS=""\n#CFLAGS="-O2:' configure.ac; > local f; > for f in configure.ac acconfig.h; > do > [[ -f "$f" ]] && sed -i -e '/#define LIRC_DRIVER_DEVICE/d' "$f"; > done; > echo "#define LIRC_DRIVER_DEVICE \"${LIRC_DRIVER_DEVICE}\"" >> acconfig.h; > eautoreconf >} >strip-flags () >{ > local x y flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS; > setup-allowed-flags; > local NEW_CFLAGS=""; > local NEW_CXXFLAGS=""; > local NEW_FFLAGS=""; > local NEW_FCFLAGS=""; > if has "~$(tc-arch)" ${ACCEPT_KEYWORDS}; then > ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}"; > fi; > set -f; > for x in ${CFLAGS}; > do > for y in ${ALLOWED_FLAGS}; > do > flag=${x%%=*}; > if [ "${flag%%${y}}" = "" ]; then > NEW_CFLAGS="${NEW_CFLAGS} ${x}"; > break; > fi; > done; > done; > for x in ${CXXFLAGS}; > do > for y in ${ALLOWED_FLAGS}; > do > flag=${x%%=*}; > if [ "${flag%%${y}}" = "" ]; then > NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}"; > break; > fi; > done; > done; > for x in ${FFLAGS}; > do > for y in ${ALLOWED_FLAGS}; > do > flag=${x%%=*}; > if [ "${flag%%${y}}" = "" ]; then > NEW_FFLAGS="${NEW_FFLAGS} ${x}"; > break; > fi; > done; > done; > for x in ${FCFLAGS}; > do > for y in ${ALLOWED_FLAGS}; > do > flag=${x%%=*}; > if [ "${flag%%${y}}" = "" ]; then > NEW_FCFLAGS="${NEW_FCFLAGS} ${x}"; > break; > fi; > done; > done; > if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then > NEW_CFLAGS="${NEW_CFLAGS} -O2"; > fi; > if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then > NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2"; > fi; > if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then > NEW_FFLAGS="${NEW_FFLAGS} -O2"; > fi; > if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then > NEW_FCFLAGS="${NEW_FCFLAGS} -O2"; > fi; > set +f; > export CFLAGS="${NEW_CFLAGS}"; > export CXXFLAGS="${NEW_CXXFLAGS}"; > export FFLAGS="${NEW_FFLAGS}"; > export FCFLAGS="${NEW_FCFLAGS}"; > return 0 >} >strip-linguas () >{ > local ls newls nols; > if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then > local op=$1; > shift; > ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); > shift; > local d f; > for d in "$@"; > do > if [[ ${op} == "-u" ]]; then > newls=${ls}; > else > newls=""; > fi; > for f in $(find "$d" -name '*.po' -exec basename {} .po ';'); > do > if [[ ${op} == "-i" ]]; then > has ${f} ${ls} && newls="${newls} ${f}"; > else > has ${f} ${ls} || newls="${newls} ${f}"; > fi; > done; > ls=${newls}; > done; > else > ls="$@"; > fi; > nols=""; > newls=""; > for f in ${LINGUAS}; > do > if has ${f} ${ls}; then > newls="${newls} ${f}"; > else > nols="${nols} ${f}"; > fi; > done; > [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols}; > export LINGUAS=${newls:1} >} >strip-unsupported-flags () >{ > export CFLAGS=$(test-flags-CC ${CFLAGS}); > export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS}); > export FFLAGS=$(test-flags-F77 ${FFLAGS}); > export FCFLAGS=$(test-flags-FC ${FCFLAGS}) >} >strip_modulenames () >{ > debug-print-function ${FUNCNAME} $*; > local i; > for i in ${MODULE_IGNORE}; > do > MODULE_NAMES=${MODULE_NAMES//${i}(*}; > done >} >tc-arch () >{ > tc-ninja_magic_to_arch portage "$@" >} >tc-arch-kernel () >{ > tc-ninja_magic_to_arch kern "$@" >} >tc-endian () >{ > local host=$1; > [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; > host=${host%%-*}; > case ${host} in > alpha*) > echo big > ;; > arm*b*) > echo big > ;; > arm*) > echo little > ;; > cris*) > echo little > ;; > hppa*) > echo big > ;; > i?86*) > echo little > ;; > ia64*) > echo little > ;; > m68*) > echo big > ;; > mips*l*) > echo little > ;; > mips*) > echo big > ;; > powerpc*) > echo big > ;; > s390*) > echo big > ;; > sh*b*) > echo big > ;; > sh*) > echo little > ;; > sparc*) > echo big > ;; > x86_64*) > echo little > ;; > *) > echo wtf > ;; > esac >} >tc-export () >{ > local var; > for var in "$@"; > do > [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'"; > eval tc-get${var} > /dev/null; > done >} >tc-getAR () >{ > tc-getPROG AR ar "$@" >} >tc-getAS () >{ > tc-getPROG AS as "$@" >} >tc-getBUILD_CC () >{ > local v; > for v in CC_FOR_BUILD BUILD_CC HOSTCC; > do > if [[ -n ${!v} ]]; then > export BUILD_CC=${!v}; > echo "${!v}"; > return 0; > fi; > done; > local search=; > if [[ -n ${CBUILD} ]]; then > search=$(type -p ${CBUILD}-gcc); > search=${search##*/}; > fi; > search=${search:-gcc}; > export BUILD_CC=${search}; > echo "${search}" >} >tc-getCC () >{ > tc-getPROG CC gcc "$@" >} >tc-getCPP () >{ > tc-getPROG CPP cpp "$@" >} >tc-getCXX () >{ > tc-getPROG CXX g++ "$@" >} >tc-getDLLWRAP () >{ > tc-getPROG DLLWRAP dllwrap "$@" >} >tc-getF77 () >{ > tc-getPROG F77 gfortran "$@" >} >tc-getFC () >{ > tc-getPROG FC gfortran "$@" >} >tc-getGCJ () >{ > tc-getPROG GCJ gcj "$@" >} >tc-getLD () >{ > tc-getPROG LD ld "$@" >} >tc-getNM () >{ > tc-getPROG NM nm "$@" >} >tc-getOBJCOPY () >{ > tc-getPROG OBJCOPY objcopy "$@" >} >tc-getPKG_CONFIG () >{ > tc-getPROG PKG_CONFIG pkg-config "$@" >} >tc-getPROG () >{ > local var=$1; > local prog=$2; > if [[ -n ${!var} ]]; then > echo "${!var}"; > return 0; > fi; > local search=; > [[ -n $3 ]] && search=$(type -p "$3-${prog}"); > [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}"); > [[ -n ${search} ]] && prog=${search##*/}; > export ${var}=${prog}; > echo "${!var}" >} >tc-getRANLIB () >{ > tc-getPROG RANLIB ranlib "$@" >} >tc-getRC () >{ > tc-getPROG RC windres "$@" >} >tc-getSTRIP () >{ > tc-getPROG STRIP strip "$@" >} >tc-has-openmp () >{ > local base="${T}/test-tc-openmp"; > cat > "${base}.c" <<-EOF >#include <omp.h> >int main() { >int nthreads, tid, ret = 0; >#pragma omp parallel private(nthreads, tid) >{ >tid = omp_get_thread_num(); >nthreads = omp_get_num_threads(); ret += tid + nthreads; >} >return ret; >} >EOF > > $(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &>/dev/null; > local ret=$?; > rm -f "${base}"*; > return ${ret} >} >tc-has-tls () >{ > local base="${T}/test-tc-tls"; > cat > "${base}.c" <<-EOF >int foo(int *i) { >static __thread int j = 0; >return *i ? j : *i; >} >EOF > > local flags; > case $1 in > -s) > flags="-S" > ;; > -c) > flags="-c" > ;; > -l) > > ;; > -*) > die "Usage: tc-has-tls [-c|-l] [toolchain prefix]" > ;; > esac; > : ${flags:=-fPIC -shared -Wl,-z,defs}; > [[ $1 == -* ]] && shift; > $(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &>/dev/null; > local ret=$?; > rm -f "${base}"*; > return ${ret} >} >tc-is-cross-compiler () >{ > return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]]) >} >tc-is-hardfloat () >{ > [[ ${CTARGET//_/-} == *-hardfloat-* ]] && echo "yes" || echo "no" >} >tc-is-softfloat () >{ > case ${CTARGET} in > bfin* | h8300*) > echo "only" > ;; > *) > [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no" > ;; > esac >} >tc-is-static-only () >{ > local host=${CTARGET:-${CHOST}}; > return $([[ ${host} == *-mint* ]]) >} >tc-ninja_magic_to_arch () >{ > function ninj () > { > [[ ${type} == "kern" ]] && echo $1 || echo $2 > }; > local type=$1; > local host=$2; > [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; > case ${host} in > alpha*) > echo alpha > ;; > arm*) > echo arm > ;; > avr*) > ninj avr32 avr > ;; > bfin*) > ninj blackfin bfin > ;; > cris*) > echo cris > ;; > hppa*) > ninj parisc hppa > ;; > i?86*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then > echo i386; > else > echo x86; > fi > ;; > ia64*) > echo ia64 > ;; > m68*) > echo m68k > ;; > mips*) > echo mips > ;; > nios2*) > echo nios2 > ;; > nios*) > echo nios > ;; > powerpc*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]]; then > echo powerpc; > else > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]]; then > if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then > echo powerpc; > else > echo ppc; > fi; > else > if [[ ${host} == powerpc64* ]]; then > echo ppc64; > else > if [[ ${PROFILE_ARCH} == "ppc64" ]]; then > ninj ppc64 ppc; > else > echo ppc; > fi; > fi; > fi; > fi > ;; > s390*) > echo s390 > ;; > sh64*) > ninj sh64 sh > ;; > sh*) > echo sh > ;; > sparc64*) > ninj sparc64 sparc > ;; > sparc*) > [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc > ;; > vax*) > echo vax > ;; > x86_64*freebsd*) > echo amd64 > ;; > x86_64*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then > echo x86; > else > ninj x86_64 amd64; > fi > ;; > *) > echo unknown > ;; > esac >} >test-flag-CC () >{ > test-flag-PROG "CC" "$1" >} >test-flag-CXX () >{ > test-flag-PROG "CXX" "$1" >} >test-flag-F77 () >{ > test-flag-PROG "F77" "$1" >} >test-flag-FC () >{ > test-flag-PROG "FC" "$1" >} >test-flag-PROG () >{ > local comp=$1; > local flags="$2"; > [[ -z ${comp} || -z ${flags} ]] && return 1; > local PROG=$(tc-get${comp}); > ${PROG} ${flags} -c -o /dev/null -xc /dev/null > /dev/null 2>&1 >} >test-flags () >{ > test-flags-CC "$@" >} >test-flags-CC () >{ > test-flags-PROG "CC" "$@" >} >test-flags-CXX () >{ > test-flags-PROG "CXX" "$@" >} >test-flags-F77 () >{ > test-flags-PROG "F77" "$@" >} >test-flags-FC () >{ > test-flags-PROG "FC" "$@" >} >test-flags-PROG () >{ > local comp=$1; > local flags; > local x; > shift; > [[ -z ${comp} ]] && return 1; > x=""; > for x in "$@"; > do > test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}"; > done; > echo "${flags}"; > [[ -n ${flags} ]] >} >test_flag () >{ > die "$0: deprecated, please use test-flags()!" >} >test_version_info () >{ > if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then > return 0; > else > return 1; > fi >} >treecopy () >{ > dest=${!#}; > files_count=$#; > while (( $# > 1 )); do > dirstruct=$(dirname "$1"); > mkdir -p "${dest}/${dirstruct}"; > cp -pPR "$1" "${dest}/${dirstruct}"; > shift; > done >} >uclibctoolize () >{ > die "Use elibtoolize" >} >unmount_shmfs () >{ > umount ${PORTAGE_TMPDIR}/portage/${1} >} >unpack_makeself () >{ > local src_input=${1:-${A}}; > local src=$(find_unpackable_file "${src_input}"); > local skip=$2; > local exe=$3; > [[ -z ${src} ]] && die "Could not locate source for '${src_input}'"; > local shrtsrc=$(basename "${src}"); > echo ">>> Unpacking ${shrtsrc} to ${PWD}"; > if [[ -z ${skip} ]]; then > local ver=$(grep -m1 -a '#.*Makeself' "${src}" | awk '{print $NF}'); > local skip=0; > exe=tail; > case ${ver} in > 1.5.* | 1.6.0-nv) > skip=$(grep -a ^skip= "${src}" | cut -d= -f2) > ;; > 2.0 | 2.0.1) > skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-) > ;; > 2.1.1) > skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-); > (( skip++ )) > ;; > 2.1.2) > skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1); > (( skip++ )) > ;; > 2.1.3) > skip=`grep -a ^offset= "${src}" | awk '{print $3}'`; > (( skip++ )) > ;; > 2.1.4 | 2.1.5) > skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1); > skip=$(head -n ${skip} "${src}" | wc -c); > exe="dd" > ;; > *) > eerror "I'm sorry, but I was unable to support the Makeself file."; > eerror "The version I detected was '${ver}'."; > eerror "Please file a bug about the file ${shrtsrc} at"; > eerror "http://bugs.gentoo.org/ so that support can be added."; > die "makeself version '${ver}' not supported" > ;; > esac; > debug-print "Detected Makeself version ${ver} ... using ${skip} as offset"; > fi; > case ${exe} in > tail) > exe="tail -n +${skip} '${src}'" > ;; > dd) > exe="dd ibs=${skip} skip=1 if='${src}'" > ;; > *) > die "makeself cant handle exe '${exe}'" > ;; > esac; > local filetype tmpfile=$(emktemp); > eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}"; > filetype=$(file -b "${tmpfile}") || die; > case ${filetype} in > *tar\ archive*) > eval ${exe} | tar --no-same-owner -xf - > ;; > bzip2*) > eval ${exe} | bzip2 -dc | tar --no-same-owner -xf - > ;; > gzip*) > eval ${exe} | tar --no-same-owner -xzf - > ;; > compress*) > eval ${exe} | gunzip | tar --no-same-owner -xf - > ;; > *) > eerror "Unknown filetype \"${filetype}\" ?"; > false > ;; > esac; > assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" >} >unpack_pdv () >{ > local src=$(find_unpackable_file "$1"); > local sizeoff_t=$2; > [[ -z ${src} ]] && die "Could not locate source for '$1'"; > [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :("; > local shrtsrc=$(basename "${src}"); > echo ">>> Unpacking ${shrtsrc} to ${PWD}"; > local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\"); > local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\"); > local metafile=$(emktemp); > tail -c +$((${metaskip}+1)) "${src}" > "${metafile}"; > local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1); > datafile=$(basename "${datafile}"); > local tmpfile=$(emktemp); > tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile}; > local iscompressed=$(file -b "${tmpfile}"); > if [[ ${iscompressed:0:8} == "compress" ]]; then > iscompressed=1; > mv ${tmpfile}{,.Z}; > gunzip ${tmpfile}; > else > iscompressed=0; > fi; > local istar=$(file -b "${tmpfile}"); > if [[ ${istar:0:9} == "POSIX tar" ]]; then > istar=1; > else > istar=0; > fi; > if [ ${iscompressed} -eq 1 ]; then > if [ ${istar} -eq 1 ]; then > tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -; > else > tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile}; > fi; > else > if [ ${istar} -eq 1 ]; then > tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -; > else > tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile}; > fi; > fi; > true >} >update_depmod () >{ > debug-print-function ${FUNCNAME} $*; > get_version; > ebegin "Updating module dependencies for ${KV_FULL}"; > if [ -r "${KV_OUT_DIR}"/System.map ]; then > depmod -ae -F "${KV_OUT_DIR}"/System.map -b "${ROOT}" -r ${KV_FULL}; > eend $?; > else > ewarn; > ewarn "${KV_OUT_DIR}/System.map not found."; > ewarn "You must manually update the kernel module dependencies using depmod."; > eend 1; > ewarn; > fi >} >update_moduledb () >{ > debug-print-function ${FUNCNAME} $*; > local MODULEDB_DIR="${ROOT}"/var/lib/module-rebuild/; > move_old_moduledb; > if [[ ! -f "${MODULEDB_DIR}"/moduledb ]]; then > [[ ! -d "${MODULEDB_DIR}" ]] && mkdir -p "${MODULEDB_DIR}"; > touch "${MODULEDB_DIR}"/moduledb; > fi; > if ! grep -qs ${CATEGORY}/${PN}-${PVR} "${MODULEDB_DIR}"/moduledb; then > einfo "Adding module to moduledb."; > echo "a:1:${CATEGORY}/${PN}-${PVR}" >> "${MODULEDB_DIR}"/moduledb; > fi >} >update_modules () >{ > debug-print-function ${FUNCNAME} $*; > if [ -x /sbin/update-modules ] && grep -v -e "^#" -e "^$" "${D}"/etc/modules.d/* > /dev/null 2>&1; then > ebegin "Updating modules.conf"; > /sbin/update-modules; > eend $?; > else > if [ -x /sbin/update-modules ] && grep -v -e "^#" -e "^$" "${D}"/etc/modules.d/* > /dev/null 2>&1; then > ebegin "Updating modules.conf"; > /sbin/update-modules; > eend $?; > fi; > fi >} >use_m () >{ > debug-print-function ${FUNCNAME} $*; > get_version; > [ ${KV_MAJOR} -eq 3 ] && return 0; > [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && return 0 || return 1 >} >validate_desktop_entries () >{ > if [[ -x /usr/bin/desktop-file-validate ]]; then > einfo "Checking desktop entry validity"; > local directories=""; > for d in /usr/share/applications $@; > do > [[ -d ${D}${d} ]] && directories="${directories} ${D}${d}"; > done; > if [[ -n ${directories} ]]; then > for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null); > do > local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" ); > [[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:}; > done; > fi; > echo ""; > else > einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo."; > fi >} >version_compare () >{ > eshopts_push -s extglob; > local ver_a=${1} ver_b=${2} parts_a parts_b; > local cur_tok_a cur_tok_b num_part_a num_part_b; > local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b; > parts_a=($(get_all_version_components "${ver_a}" )); > parts_b=($(get_all_version_components "${ver_b}" )); > local -i inf_loop=0; > while true; do > inf_loop+=1; > ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]"; > prev_idx_a=cur_idx_a; > prev_idx_b=cur_idx_b; > cur_tok_a=${parts_a[cur_idx_a]}; > cur_tok_b=${parts_b[cur_idx_b]}; > if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then > cur_idx_a+=1; > [[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1; > else > cur_tok_a=; > fi; > if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then > cur_idx_b+=1; > [[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1; > else > cur_tok_b=; > fi; > [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break; > [[ -z ${cur_tok_a} ]] && eshopts_pop && return 1; > [[ -z ${cur_tok_b} ]] && eshopts_pop && return 3; > if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then > cur_tok_a=${cur_tok_a%%+(0)}; > cur_tok_b=${cur_tok_b%%+(0)}; > [[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1; > [[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3; > else > cur_tok_a=${cur_tok_a##+(0)}; > cur_tok_b=${cur_tok_b##+(0)}; > : ${cur_tok_a:=0}; > : ${cur_tok_b:=0}; > ((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1; > ((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3; > fi; > done; > local letter_a=; > letter_a=${parts_a[cur_idx_a]}; > if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then > cur_idx_a+=1; > else > letter_a=@; > fi; > local letter_b=; > letter_b=${parts_b[cur_idx_b]}; > if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then > cur_idx_b+=1; > else > letter_b=@; > fi; > [[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1; > [[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3; > inf_loop=0; > while true; do > inf_loop+=1; > ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]"; > [[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++)); > [[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++)); > cur_tok_a=${parts_a[cur_idx_a]}; > cur_tok_b=${parts_b[cur_idx_b]}; > num_part_a=0; > num_part_b=0; > if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then > cur_idx_a+=1; > num_part_a=${cur_tok_a##+([a-z])}; > num_part_a=${num_part_a##+(0)}; > : ${num_part_a:=0}; > cur_tok_a=${cur_tok_a%%+([0-9])}; > else > cur_tok_a=; > fi; > if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then > cur_idx_b+=1; > num_part_b=${cur_tok_b##+([a-z])}; > num_part_b=${num_part_b##+(0)}; > : ${num_part_b:=0}; > cur_tok_b=${cur_tok_b%%+([0-9])}; > else > cur_tok_b=; > fi; > if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then > local suffix; > for suffix in alpha beta pre rc "" p; > do > [[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1; > [[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3; > done; > else > if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then > break; > else > ((num_part_a < num_part_b)) && eshopts_pop && return 1; > ((num_part_a > num_part_b)) && eshopts_pop && return 3; > fi; > fi; > done; > [[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++)); > [[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++)); > if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then > die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]"; > fi; > num_part_a=${parts_a[cur_idx_a]#r}; > num_part_a=${num_part_a##+(0)}; > : ${num_part_a:=0}; > num_part_b=${parts_b[cur_idx_b]#r}; > num_part_b=${num_part_b##+(0)}; > : ${num_part_b:=0}; > ((num_part_a < num_part_b)) && eshopts_pop && return 1; > ((num_part_a > num_part_b)) && eshopts_pop && return 3; > eshopts_pop; > return 2 >} >version_format_string () >{ > local fstr=$1; > shift; > set -- $(get_version_components "$@"); > eval echo "${fstr}" >} >version_is_at_least () >{ > local want_s="$1" have_s="${2:-${PVR}}" r; > version_compare "${want_s}" "${have_s}"; > r=$?; > case $r in > 1 | 2) > return 0 > ;; > 3) > return 1 > ;; > *) > die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]" > ;; > esac >} >version_sort () >{ > eshopts_push -s extglob; > local items=; > local -i left=0; > items=("$@"); > while ((left < ${#items[@]})); do > local -i lowest_idx=left; > local -i idx=lowest_idx+1; > while ((idx < ${#items[@]})); do > version_compare "${items[lowest_idx]}" "${items[idx]}"; > [[ $? -eq 3 ]] && lowest_idx=idx; > idx+=1; > done; > local tmp=${items[lowest_idx]}; > items[lowest_idx]=${items[left]}; > items[left]=${tmp}; > left+=1; > done; > echo ${items[@]}; > eshopts_pop >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 376815
:
281343
|
281345
| 281347 |
281349