Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- declare -x ABI="amd64"
- declare -x ABI_X86="64"
- declare -x ALSA_CARDS="hda-intel"
- declare -x APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
- declare -x AR="x86_64-pc-linux-gnu-ar"
- declare -x ARCH="amd64"
- declare -x BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_4 python_targets_python2_7 multilib systemd udev"
- declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"
- declare -x CAMERAS="ptp2"
- declare -x CBUILD="x86_64-pc-linux-gnu"
- declare -x CC="x86_64-pc-linux-gnu-gcc"
- declare -x CFLAGS="-march=native -O3 -pipe"
- declare -x CFLAGS_amd64="-m64"
- declare -x CFLAGS_default
- declare -x CFLAGS_x32="-mx32"
- declare -x CFLAGS_x86="-m32"
- declare -- CHECKREQS_DISK_BUILD="5G"
- declare -- CHECKREQS_MEMORY="3G"
- declare -x CHOST="x86_64-pc-linux-gnu"
- declare -x CHOST_amd64="x86_64-pc-linux-gnu"
- declare -x CHOST_default="x86_64-pc-linux-gnu"
- declare -x CHOST_x32="x86_64-pc-linux-gnux32"
- declare -x CHOST_x86="i686-pc-linux-gnu"
- declare -- CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
- hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr
- sv sw ta te th tr uk vi zh-CN zh-TW"
- declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"
- declare -- COMMON_DEPEND="
- app-arch/bzip2:=
- cups? ( >=net-print/cups-1.3.11:= )
- >=dev-libs/elfutils-0.149
- dev-libs/expat:=
- dev-libs/glib:=
- dev-libs/icu:=
- >=dev-libs/jsoncpp-0.5.0-r1:=
- dev-libs/nspr:=
- >=dev-libs/nss-3.14.3:=
- >=dev-libs/re2-0.2016.05.01:=
- gnome? ( >=gnome-base/gconf-2.24.0:= )
- gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= )
- >=media-libs/alsa-lib-1.0.19:=
- media-libs/fontconfig:=
- media-libs/freetype:=
- media-libs/libexif:=
- media-libs/libjpeg-turbo:=
- media-libs/libpng:=
- media-libs/libvpx:=[svc]
- media-libs/speex:=
- pulseaudio? ( media-sound/pulseaudio:= )
- system-ffmpeg? ( >=media-video/ffmpeg-3:= )
- sys-apps/dbus:=
- sys-apps/pciutils:=
- >=sys-libs/libcap-2.22:=
- virtual/udev
- x11-libs/cairo:=
- x11-libs/gdk-pixbuf:=
- x11-libs/libdrm
- x11-libs/libX11:=
- x11-libs/libXcomposite:=
- x11-libs/libXcursor:=
- x11-libs/libXdamage:=
- x11-libs/libXext:=
- x11-libs/libXfixes:=
- >=x11-libs/libXi-1.6.0:=
- x11-libs/libXinerama:=
- x11-libs/libXrandr:=
- x11-libs/libXrender:=
- x11-libs/libXScrnSaver:=
- x11-libs/libXtst:=
- x11-libs/pango:=
- app-arch/snappy:=
- dev-libs/libxml2:=[icu]
- dev-libs/libxslt:=
- media-libs/flac:=
- >=media-libs/harfbuzz-1.3.1:=[icu(+)]
- >=media-libs/libwebp-0.4.0:=
- sys-libs/zlib:=[minizip]
- kerberos? ( virtual/krb5 )
- "
- declare -- CONFIG_CHECK="~PID_NS ~NET_NS ~SECCOMP_FILTER ~USER_NS ~ADVISE_SYSCALLS ~!COMPAT_VDSO"
- declare -x CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"
- declare -x CTARGET_default="x86_64-pc-linux-gnu"
- declare -x CXX="x86_64-pc-linux-gnu-g++"
- declare -x CXXFLAGS="-march=native -O3 -pipe -fno-delete-null-pointer-checks"
- declare -x DEFAULT_ABI="amd64"
- declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare pretend setup"
- declare DEPEND="
- app-arch/bzip2:=
- cups? ( >=net-print/cups-1.3.11:= )
- >=dev-libs/elfutils-0.149
- dev-libs/expat:=
- dev-libs/glib:=
- dev-libs/icu:=
- >=dev-libs/jsoncpp-0.5.0-r1:=
- dev-libs/nspr:=
- >=dev-libs/nss-3.14.3:=
- >=dev-libs/re2-0.2016.05.01:=
- gnome? ( >=gnome-base/gconf-2.24.0:= )
- gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= )
- >=media-libs/alsa-lib-1.0.19:=
- media-libs/fontconfig:=
- media-libs/freetype:=
- media-libs/libexif:=
- media-libs/libjpeg-turbo:=
- media-libs/libpng:=
- media-libs/libvpx:=[svc]
- media-libs/speex:=
- pulseaudio? ( media-sound/pulseaudio:= )
- system-ffmpeg? ( >=media-video/ffmpeg-3:= )
- sys-apps/dbus:=
- sys-apps/pciutils:=
- >=sys-libs/libcap-2.22:=
- virtual/udev
- x11-libs/cairo:=
- x11-libs/gdk-pixbuf:=
- x11-libs/libdrm
- x11-libs/libX11:=
- x11-libs/libXcomposite:=
- x11-libs/libXcursor:=
- x11-libs/libXdamage:=
- x11-libs/libXext:=
- x11-libs/libXfixes:=
- >=x11-libs/libXi-1.6.0:=
- x11-libs/libXinerama:=
- x11-libs/libXrandr:=
- x11-libs/libXrender:=
- x11-libs/libXScrnSaver:=
- x11-libs/libXtst:=
- x11-libs/pango:=
- app-arch/snappy:=
- dev-libs/libxml2:=[icu]
- dev-libs/libxslt:=
- media-libs/flac:=
- >=media-libs/harfbuzz-1.3.1:=[icu(+)]
- >=media-libs/libwebp-0.4.0:=
- sys-libs/zlib:=[minizip]
- kerberos? ( virtual/krb5 )
- >=app-arch/gzip-1.7
- !arm? (
- dev-lang/yasm
- )
- dev-lang/perl
- dev-perl/JSON
- >=dev-util/gperf-3.0.3
- dev-util/ninja
- sys-apps/hwids[usb(+)]
- >=sys-devel/bison-2.4.3
- sys-devel/flex
- virtual/pkgconfig
- dev-vcs/git
- x11-libs/gtk+:2
- x11-libs/gtk+:3
- || ( ( >=dev-lang/python-2.7.5-r2:2.7
- dev-python/beautifulsoup:python-2[python_targets_python2_7(-),python_single_target_python2_7(+)]
- >=dev-python/beautifulsoup-4.3.2:4[python_targets_python2_7(-),python_single_target_python2_7(+)]
- dev-python/html5lib[python_targets_python2_7(-),python_single_target_python2_7(+)]
- dev-python/jinja[python_targets_python2_7(-),python_single_target_python2_7(+)]
- dev-python/ply[python_targets_python2_7(-),python_single_target_python2_7(+)]
- dev-python/simplejson[python_targets_python2_7(-),python_single_target_python2_7(+)]
- ) )
- >=sys-apps/sed-4 test? (
- !prefix? ( x11-base/xorg-server[xvfb] )
- x11-apps/xhost
- )"
- declare DESCRIPTION="Open-source version of Google Chrome web browser"
- declare -- DESKTOP_DATABASE_DIR="/usr/share/applications"
- declare -- DESKTOP_DATABASE_UPDATE_BIN="/usr/bin/update-desktop-database"
- declare -x DESTTREE="/usr"
- declare -x DIROPTIONS="-m0755"
- declare -- DISABLE_AUTOFORMATTING="yes"
- declare -- DOC_CONTENTS="
- Some web pages may require additional fonts to display properly.
- Try installing some of the following packages if some characters
- are not displayed properly:
- - media-fonts/arphicfonts
- - media-fonts/bitstream-cyberbit
- - media-fonts/droid
- - media-fonts/ipamonafont
- - media-fonts/noto
- - media-fonts/ja-ipafonts
- - media-fonts/takao-fonts
- - media-fonts/wqy-microhei
- - media-fonts/wqy-zenhei
- Depending on your desktop environment, you may need
- to install additional packages to get icons on the Downloads page.
- For KDE, the required package is kde-frameworks/oxygen-icons.
- For other desktop environments, try one of the following:
- - x11-themes/gnome-icon-theme
- - x11-themes/tango-icon-theme
- "
- declare -x EAPI="6"
- declare -- EBUILD_DEATH_HOOKS=" chromium_pkg_die"
- declare -- EGYP_CHROMIUM_COMMAND="build/gyp_chromium"
- declare -- EGYP_CHROMIUM_DEPTH="."
- declare -x ELIBC="glibc"
- declare -- EPATCH_COMMON_OPTS="-g0 -E --no-backup-if-mismatch"
- declare -- EPATCH_EXCLUDE=""
- declare -- EPATCH_FORCE="no"
- declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
- declare -- EPATCH_OPTS=""
- declare -- EPATCH_SINGLE_MSG=""
- declare -- EPATCH_SOURCE="/var/tmp/portage/www-client/chromium-56.0.2924.21/work/patch"
- declare -- EPATCH_SUFFIX="patch.bz2"
- declare -x EPYTHON="python2.7"
- declare -- ERROR_ADVISE_SYSCALLS="CONFIG_ADVISE_SYSCALLS is required for the renderer (bug #552576)"
- declare -- ERROR_COMPAT_VDSO="CONFIG_COMPAT_VDSO causes segfaults (bug #556286)"
- declare -- ERROR_NET_NS="NET_NS is required for sandbox to work"
- declare -- ERROR_PID_NS="PID_NS is required for sandbox to work"
- declare -- ERROR_SECCOMP_FILTER="SECCOMP_FILTER is required for sandbox to work"
- declare -- ERROR_USER_NS="USER_NS is required for sandbox to work"
- declare -x EXEOPTIONS="-m0755"
- declare -x FCFLAGS="-O2 -pipe"
- declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
- declare -x FFLAGS="-O2 -pipe"
- declare -x GCC_SPECS=""
- declare -- GCONFTOOL_BIN="/usr/bin/gconftool-2"
- declare -- GLIB_COMPILE_SCHEMAS="/usr/bin/glib-compile-schemas"
- declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx"
- declare -x GRUB_PLATFORMS=""
- declare -x GSETTINGS_BACKEND="dconf"
- declare -- GTK_UPDATE_ICON_CACHE="/usr/bin/gtk-update-icon-cache"
- declare HDEPEND=""
- declare HOMEPAGE="http://chromium.org/"
- declare -x INHERITED=" multilib toolchain-funcs eutils check-reqs versionator linux-info chromium-2 xdg-utils gnome2-utils flag-o-matic multiprocessing pax-utils portability python-utils-r1 python-any-r1 readme.gentoo-r1 virtualx"
- declare -x INPUT_DEVICES="evdev synaptics"
- declare -x INSDESTTREE=""
- declare -x INSOPTIONS="-m0644"
- declare IUSE="cups gnome gnome-keyring gtk3 +hangouts kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +tcmalloc widevine custom-cflags +l10n_am +l10n_ar +l10n_bg +l10n_bn +l10n_ca +l10n_cs +l10n_da +l10n_de +l10n_el +l10n_en-GB +l10n_es +l10n_es-419 +l10n_et +l10n_fa +l10n_fi +l10n_fil +l10n_fr +l10n_gu +l10n_he +l10n_hi +l10n_hr +l10n_hu +l10n_id +l10n_it +l10n_ja +l10n_kn +l10n_ko +l10n_lt +l10n_lv +l10n_ml +l10n_mr +l10n_ms +l10n_nb +l10n_nl +l10n_pl +l10n_pt-BR +l10n_pt-PT +l10n_ro +l10n_ru +l10n_sk +l10n_sl +l10n_sr +l10n_sv +l10n_sw +l10n_ta +l10n_te +l10n_th +l10n_tr +l10n_uk +l10n_vi +l10n_zh-CN +l10n_zh-TW test"
- declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 cups custom-cflags elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc gnome gnome-keyring gtk3 hangouts hppa hppa-hpux ia64 ia64-hpux ia64-linux kerberos kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_Interix kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux l10n_am l10n_ar l10n_bg l10n_bn l10n_ca l10n_cs l10n_da l10n_de l10n_el l10n_en-GB l10n_es l10n_es-419 l10n_et l10n_fa l10n_fi l10n_fil l10n_fr l10n_gu l10n_he l10n_hi l10n_hr l10n_hu l10n_id l10n_it l10n_ja l10n_kn l10n_ko l10n_lt l10n_lv l10n_ml l10n_mr l10n_ms l10n_nb l10n_nl l10n_pl l10n_pt-BR l10n_pt-PT l10n_ro l10n_ru l10n_sk l10n_sl l10n_sr l10n_sv l10n_sw l10n_ta l10n_te l10n_th l10n_tr l10n_uk l10n_vi l10n_zh-CN l10n_zh-TW m68k m68k-mint mips neon nios2 pic ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest proprietary-codecs pulseaudio riscv s390 selinux sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris suid system-ffmpeg tcmalloc test userland_BSD userland_GNU widevine x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
- declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest"
- declare -x KERNEL="linux"
- declare -x KERNEL_ABI="amd64"
- declare -- KERNEL_DIR="/usr/src/linux"
- declare -- KERNEL_MAKEFILE="/usr/src/linux/Makefile"
- declare -x KEYWORDS="~amd64 ~arm ~arm64 ~x86"
- declare -- KV_DIR="/usr/src/linux"
- declare -- KV_EXTRA="-gentoo"
- declare -- KV_FULL="4.9.0-gentoo"
- declare -- KV_LOCAL=""
- declare -- KV_MAJOR="4"
- declare -- KV_MINOR="9"
- declare -- KV_OUT_DIR="/lib/modules/4.9.0-gentoo/build"
- declare -- KV_PATCH="0"
- declare -x L10N="ru"
- declare -x LANG="en_US.UTF-8"
- declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
- declare -x LC_COLLATE="C"
- declare -x LC_MESSAGES="C"
- declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
- declare -x LDFLAGS_amd64="-m elf_x86_64"
- declare -x LDFLAGS_default
- declare -x LDFLAGS_x32="-m elf32_x86_64"
- declare -x LDFLAGS_x86="-m elf_i386"
- declare -x LIBDIR_amd64="lib64"
- declare -x LIBDIR_amd64_fbsd="lib64"
- declare -x LIBDIR_arm="lib"
- declare -x LIBDIR_arm64="lib64"
- declare -x LIBDIR_default="lib"
- declare -x LIBDIR_n32="lib32"
- declare -x LIBDIR_n64="lib64"
- declare -x LIBDIR_o32="lib"
- declare -x LIBDIR_ppc="lib32"
- declare -x LIBDIR_ppc64="lib64"
- declare -x LIBDIR_s390="lib32"
- declare -x LIBDIR_s390x="lib64"
- declare -x LIBDIR_sparc32="lib32"
- declare -x LIBDIR_sparc64="lib64"
- declare -x LIBDIR_x32="libx32"
- declare -x LIBDIR_x86="lib32"
- declare -x LIBDIR_x86_fbsd="lib32"
- declare -x LIBOPTIONS="-m0644"
- declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer"
- declare -x LICENSE="BSD"
- declare -x LINGUAS="ru ru_RU en"
- declare -x LINUX_CONFIG_EXISTS_DONE=""
- declare -x MAIL="/var/mail/root"
- declare -x MAKEOPTS="-j4"
- declare -x MANPAGER="manpager"
- declare -- MIMEINFO_DATABASE_DIR="/usr/share/mime"
- declare -- MIMEINFO_DATABASE_UPDATE_BIN="/usr/bin/update-mime-database"
- declare -x MULTILIB_ABIS="amd64 x86"
- declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
- declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
- declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec)"
- declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
- declare -x NM="x86_64-pc-linux-gnu-nm"
- declare -x OFFICE_IMPLEMENTATION="libreoffice"
- declare -x OPENGL_PROFILE="xorg-x11"
- declare -a PATCHES=([0]="/usr/portage/www-client/chromium/files/chromium-system-ffmpeg-r4.patch" [1]="/usr/portage/www-client/chromium/files/chromium-system-jinja-r14.patch" [2]="/usr/portage/www-client/chromium/files/chromium-widevine-r1.patch")
- declare -x PATH="/var/tmp/portage/www-client/chromium-56.0.2924.21/temp/python2.7/bin:/usr/lib/portage/python2.7/ebuild-helpers/xattr:/usr/lib/portage/python2.7/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/5.4.0"
- declare -- PAX_MARKINGS="PT XT"
- declare PDEPEND=""
- declare -x PHP_TARGETS="php5-6"
- declare -x PKG_CONFIG_PATH="/var/tmp/portage/www-client/chromium-56.0.2924.21/temp/python2.7/pkgconfig"
- declare -a PORTAGE_DOCOMPRESS=([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")
- declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128"
- declare -a PORTAGE_DOCOMPRESS_SKIP=([0]="/usr/share/doc/chromium-56.0.2924.21/html")
- declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND"
- declare -x PROPERTIES=""
- declare -x PROVIDE=""
- declare -x PYTHON="/usr/bin/python2.7"
- declare -x PYTHONDONTWRITEBYTECODE="1"
- declare -a PYTHON_COMPAT=([0]="python2_7")
- declare -- PYTHON_DEPS="|| ( >=dev-lang/python-2.7.5-r2:2.7 )"
- declare -x PYTHON_SINGLE_TARGET="python2_7"
- declare -x PYTHON_TARGETS="python2_7 python3_4"
- declare -- QA_FLAGS_IGNORED=".*\\.nexe"
- declare -- QA_PRESTRIPPED=".*\\.nexe"
- declare RDEPEND="
- app-arch/bzip2:=
- cups? ( >=net-print/cups-1.3.11:= )
- >=dev-libs/elfutils-0.149
- dev-libs/expat:=
- dev-libs/glib:=
- dev-libs/icu:=
- >=dev-libs/jsoncpp-0.5.0-r1:=
- dev-libs/nspr:=
- >=dev-libs/nss-3.14.3:=
- >=dev-libs/re2-0.2016.05.01:=
- gnome? ( >=gnome-base/gconf-2.24.0:= )
- gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= )
- >=media-libs/alsa-lib-1.0.19:=
- media-libs/fontconfig:=
- media-libs/freetype:=
- media-libs/libexif:=
- media-libs/libjpeg-turbo:=
- media-libs/libpng:=
- media-libs/libvpx:=[svc]
- media-libs/speex:=
- pulseaudio? ( media-sound/pulseaudio:= )
- system-ffmpeg? ( >=media-video/ffmpeg-3:= )
- sys-apps/dbus:=
- sys-apps/pciutils:=
- >=sys-libs/libcap-2.22:=
- virtual/udev
- x11-libs/cairo:=
- x11-libs/gdk-pixbuf:=
- x11-libs/libdrm
- x11-libs/libX11:=
- x11-libs/libXcomposite:=
- x11-libs/libXcursor:=
- x11-libs/libXdamage:=
- x11-libs/libXext:=
- x11-libs/libXfixes:=
- >=x11-libs/libXi-1.6.0:=
- x11-libs/libXinerama:=
- x11-libs/libXrandr:=
- x11-libs/libXrender:=
- x11-libs/libXScrnSaver:=
- x11-libs/libXtst:=
- x11-libs/pango:=
- app-arch/snappy:=
- dev-libs/libxml2:=[icu]
- dev-libs/libxslt:=
- media-libs/flac:=
- >=media-libs/harfbuzz-1.3.1:=[icu(+)]
- >=media-libs/libwebp-0.4.0:=
- sys-libs/zlib:=[minizip]
- kerberos? ( virtual/krb5 )
- !=www-client/chromium-9999
- !<www-plugins/chrome-binary-plugins-37
- x11-misc/xdg-utils
- virtual/opengl
- virtual/ttf-fonts
- !gtk3? ( x11-libs/gtk+:2 )
- gtk3? ( x11-libs/gtk+:3 )
- selinux? ( sec-policy/selinux-chromium )
- tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 )
- widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] )
- "
- declare -- README_GENTOO_SUFFIX=""
- declare REPOSITORY
- declare REQUIRED_USE=""
- declare -x RESTRICT=""
- declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
- declare -x RUBY_TARGETS="ruby21"
- declare -x S="/var/tmp/portage/www-client/chromium-56.0.2924.21/work/chromium-56.0.2924.21"
- declare -x SANDBOX_DEBUG="0"
- declare -x SANDBOX_DENY=""
- declare -x SANDBOX_PREDICT="/var/tmp/portage/www-client/chromium-56.0.2924.21/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/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/www-client/chromium-56.0.2924.21/homedir/.bash_history"
- declare -- SCROLLKEEPER_DIR="/var/lib/scrollkeeper"
- declare -- SCROLLKEEPER_UPDATE_BIN="/usr/bin/scrollkeeper-update"
- declare -x SHELL="/bin/bash"
- declare -x SLOT="0"
- declare SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/chromium-56.0.2924.21.tar.xz"
- declare -x SUDO_COMMAND="/usr/bin/emerge -avb www-client/chromium"
- declare -x SUDO_GID="1000"
- declare -x SUDO_UID="1000"
- declare -x SUDO_USER="d-7"
- declare -x SYMLINK_LIB="yes"
- declare -x USE="abi_x86_64 amd64 custom-cflags elibc_glibc gnome gtk3 kernel_linux l10n_ru pic proprietary-codecs pulseaudio suid system-ffmpeg tcmalloc userland_GNU"
- declare -x USERLAND="GNU"
- declare -x USERNAME="root"
- declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"
- declare -x USE_EXPAND_UNPREFIXED="ARCH"
- declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
- declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
- declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX Interix linux NetBSD OpenBSD SunOS Winnt"
- declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
- declare -x VIDEO_CARDS="radeon radeonsi r600 amdgpu"
- declare -- VIRTUALX_COMMAND="emake"
- declare -- VIRTUALX_DEPEND="
- !prefix? ( x11-base/xorg-server[xvfb] )
- x11-apps/xhost
- "
- declare -- VIRTUALX_REQUIRED="test"
- declare -x XDG_CONFIG_DIRS="/etc/xdg"
- declare -x XDG_DATA_DIRS="/usr/local/share:/usr/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 -- _CHECK_REQS_ECLASS_="1"
- declare -a _ESTACK_eshopts_=()
- declare -- _EUTILS_ECLASS="1"
- declare -- _EUTILS_ECLASSDIR_LOCAL="/usr/portage/eclass"
- declare -x _E_DOCDESTTREE_=""
- declare -x _E_EXEDESTTREE_=""
- declare -- _FLAG_O_MATIC_ECLASS="1"
- declare -x _LINUX_CONFIG_EXISTS_DONE="1"
- declare -- _MULTILIB_ECLASS="1"
- declare -- _MULTIPROCESSING_ECLASS="1"
- declare -- _PAX_UTILS_ECLASS="1"
- declare -- _PORTABILITY_ECLASS="1"
- declare -a _PYTHON_ALL_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_4" [5]="python3_5")
- declare -- _PYTHON_ANY_R1="1"
- declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python2_7")
- declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python3_4" [4]="python3_5")
- declare -- _PYTHON_UTILS_R1="1"
- declare -- _README_GENTOO_ECLASS="1"
- declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
- declare -- _VERSIONATOR_ECLASS="1"
- declare -- _VIRTUAL_X="1"
- declare -- ffmpeg_branding="Chrome"
- declare -- ffmpeg_target_arch="x64"
- declare -- get_version_warning_done=""
- declare -- phase_func
- declare -- started_applying="1"
- declare -- target_arch="x64"
- PYTHON ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D"
- }
- Xeconf ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ ${EAPI} == [2345] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx econf ....'";
- VIRTUALX_COMMAND="econf" virtualmake "$@"
- }
- Xemake ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ ${EAPI} == [2345] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx emake ....'";
- VIRTUALX_COMMAND="emake" virtualmake "$@"
- }
- Xmake ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ ${EAPI} == [2345] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx emake -j1 ....'";
- eqawarn "you should not execute make directly";
- eqawarn "rather execute Xemake -j1 if you have issues with parallel make";
- VIRTUALX_COMMAND="emake -j1" virtualmake "$@"
- }
- __eapi6_src_install ()
- {
- if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
- emake DESTDIR="${D}" install;
- fi;
- einstalldocs
- }
- __eapi6_src_prepare ()
- {
- if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
- [[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}";
- else
- if [[ -n ${PATCHES} ]]; then
- eapply ${PATCHES};
- fi;
- fi;
- eapply_user
- }
- _chromium_set_l10n_IUSE ()
- {
- [[ ${EAPI:-0} == 0 ]] && die "EAPI=${EAPI} is not supported";
- local lang;
- for lang in ${CHROMIUM_LANGS};
- do
- IUSE+=" +l10n_${lang}";
- done
- }
- _clang_fullversion ()
- {
- local ver="$1";
- shift;
- set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__");
- eval echo "$ver"
- }
- _dead_portability_user_funcs ()
- {
- die "if you really need this, please file a bug for base-system@gentoo.org"
- }
- _eapply_patch ()
- {
- local f=${1};
- local prefix=${2};
- started_applying=1;
- ebegin "${prefix:-Applying }${f##*/}";
- ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";
- failed=${?};
- if ! eend "${failed}"; then
- __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
- fi
- }
- _eutils_eprefix_init ()
- {
- has "${EAPI:-0}" 0 1 2 && : ${ED:=${D}} ${EPREFIX:=} ${EROOT:=${ROOT}}
- }
- _filter-hardened ()
- {
- local f;
- for f in "$@";
- do
- case "${f}" in
- -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
- gcc-specs-pie || continue;
- if ! is-flagq -nopie && ! is-flagq -no-pie; then
- if test-flags -nopie > /dev/null; then
- append-flags -nopie;
- else
- append-flags -no-pie;
- fi;
- fi
- ;;
- -fstack-protector)
- gcc-specs-ssp || continue;
- is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
- ;;
- -fstack-protector-all)
- gcc-specs-ssp-to-all || continue;
- is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
- ;;
- -fno-strict-overflow)
- gcc-specs-nostrict || continue;
- is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
- ;;
- esac;
- done
- }
- _filter-var ()
- {
- local f x var=$1 new=();
- shift;
- for f in ${!var};
- do
- for x in "$@";
- do
- [[ ${f} == ${x} ]] && continue 2;
- done;
- new+=("${f}");
- done;
- eval export ${var}=\""${new[*]}"\"
- }
- _gcc-install-dir ()
- {
- echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')"
- }
- _gcc-specs-directive_raw ()
- {
- local cc=$(tc-getCC);
- local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
- ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 }
- $1=="*"directive":" { pspec=spec; spec=""; outside=0; next }
- outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
- spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
- { spec=spec $0 }
- END { print spec }';
- return 0
- }
- _gcc-specs-exists ()
- {
- [[ -f $(_gcc-install-dir)/$1 ]]
- }
- _gcc_fullversion ()
- {
- local ver="$1";
- shift;
- set -- $($(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__");
- eval echo "$ver"
- }
- _iconins ()
- {
- ( local funcname=$1;
- shift;
- local size dir;
- local context=apps;
- local theme=hicolor;
- while [[ $# -gt 0 ]]; do
- case $1 in
- -s | --size)
- if [[ ${2%%x*}x${2%%x*} == "$2" ]]; then
- size=${2%%x*};
- else
- size=${2};
- fi;
- case ${size} in
- 16 | 22 | 24 | 32 | 36 | 48 | 64 | 72 | 96 | 128 | 192 | 256 | 512)
- size=${size}x${size}
- ;;
- scalable)
- ;;
- *)
- eerror "${size} is an unsupported icon size!";
- exit 1
- ;;
- esac;
- shift 2
- ;;
- -t | --theme)
- theme=${2};
- shift 2
- ;;
- -c | --context)
- context=${2};
- shift 2
- ;;
- *)
- if [[ -z ${size} ]]; then
- insinto /usr/share/pixmaps;
- else
- insinto /usr/share/icons/${theme}/${size}/${context};
- fi;
- if [[ ${funcname} == doicon ]]; then
- if [[ -f $1 ]]; then
- doins "${1}";
- else
- if [[ -d $1 ]]; then
- shopt -s nullglob;
- doins "${1}"/*.{png,svg};
- shopt -u nullglob;
- else
- eerror "${1} is not a valid file/directory!";
- exit 1;
- fi;
- fi;
- else
- break;
- fi;
- shift 1
- ;;
- esac;
- done;
- if [[ ${funcname} == newicon ]]; then
- newins "$@";
- fi ) || die
- }
- _is_flagq ()
- {
- local x var;
- eval var=\""\${$1[*]}"\";
- for x in ${var};
- do
- [[ ${x} == $2 ]] && return 0;
- done;
- return 1
- }
- _multijob_fork ()
- {
- [[ $# -eq 1 ]] || die "incorrect number of arguments";
- local ret=0;
- [[ $1 == "post" ]] && : $(( ++mj_num_jobs ));
- if [[ ${mj_num_jobs} -ge ${mj_max_jobs} ]]; then
- multijob_finish_one;
- ret=$?;
- fi;
- [[ $1 == "pre" ]] && : $(( ++mj_num_jobs ));
- return ${ret}
- }
- _pax_list_files ()
- {
- local f cmd;
- cmd=$1;
- shift;
- for f in "$@";
- do
- ${cmd} " ${f}";
- done
- }
- _python_EPYTHON_supported ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local EPYTHON=${1};
- local i=${EPYTHON/./_};
- case "${i}" in
- python* | jython* | pypy*)
- ;;
- *)
- ewarn "Invalid EPYTHON: ${EPYTHON}";
- return 1
- ;;
- esac;
- if has "${i}" "${_PYTHON_SUPPORTED_IMPLS[@]}"; then
- if python_is_installed "${i}"; then
- if declare -f python_check_deps > /dev/null; then
- local PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)";
- python_check_deps;
- return ${?};
- fi;
- return 0;
- fi;
- else
- if ! has "${i}" "${_PYTHON_ALL_IMPLS[@]}"; then
- ewarn "Invalid EPYTHON: ${EPYTHON}";
- fi;
- fi;
- return 1
- }
- _python_check_dead_variables ()
- {
- local v;
- for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head";
- fi;
- done;
- for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS};
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS";
- fi;
- done;
- for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done;
- for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}";
- fi;
- done;
- if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST";
- fi;
- for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done
- }
- _python_check_locale_sanity ()
- {
- local -x LC_ALL=${1};
- local IFS=;
- local lc=({a..z});
- local uc=({A..Z});
- local input="${lc[*]}${uc[*]}";
- local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}");
- [[ ${output} == "${uc[*]}${lc[*]}" ]]
- }
- _python_impl_supported ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl).";
- local impl=${1};
- case "${impl}" in
- python2_7 | python3_[45] | jython2_7)
- return 0
- ;;
- pypy1_[89] | pypy2_0 | python2_[56] | python3_[123])
- return 1
- ;;
- pypy | pypy3)
- if [[ ${EAPI:-0} == [01234] ]]; then
- die "PyPy is supported in EAPI 5 and newer only.";
- fi
- ;;
- *)
- die "Invalid implementation in PYTHON_COMPAT: ${impl}"
- ;;
- esac
- }
- _python_ln_rel ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local target=${1};
- local symname=${2};
- local tgpath=${target%/*}/;
- local sympath=${symname%/*}/;
- local rel_target=;
- while [[ -n ${sympath} ]]; do
- local tgseg= symseg=;
- while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do
- tgseg=${tgpath%%/*};
- tgpath=${tgpath#${tgseg}/};
- done;
- while [[ ! -n ${symseg} && -n ${sympath} ]]; do
- symseg=${sympath%%/*};
- sympath=${sympath#${symseg}/};
- done;
- if [[ ${tgseg} != ${symseg} ]]; then
- rel_target=../${rel_target}${tgseg:+${tgseg}/};
- fi;
- done;
- rel_target+=${tgpath}${target##*/};
- debug-print "${FUNCNAME}: ${symname} -> ${target}";
- debug-print "${FUNCNAME}: rel_target = ${rel_target}";
- ln -fs "${rel_target}" "${symname}"
- }
- _python_set_impls ()
- {
- local i;
- if ! declare -p PYTHON_COMPAT &> /dev/null; then
- die 'PYTHON_COMPAT not declared.';
- fi;
- if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then
- die 'PYTHON_COMPAT must be an array.';
- fi;
- for i in "${PYTHON_COMPAT[@]}";
- do
- _python_impl_supported "${i}";
- done;
- _PYTHON_SUPPORTED_IMPLS=();
- _PYTHON_UNSUPPORTED_IMPLS=();
- for i in "${_PYTHON_ALL_IMPLS[@]}";
- do
- if has "${i}" "${PYTHON_COMPAT[@]}"; then
- _PYTHON_SUPPORTED_IMPLS+=("${i}");
- else
- _PYTHON_UNSUPPORTED_IMPLS+=("${i}");
- fi;
- done;
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 0 ]]; then
- die "No supported implementation in PYTHON_COMPAT.";
- fi;
- readonly _PYTHON_SUPPORTED_IMPLS _PYTHON_UNSUPPORTED_IMPLS
- }
- _tc-getPROG ()
- {
- local tuple=$1;
- local v var vars=$2;
- local prog=($3);
- var=${vars%% *};
- for v in ${vars};
- do
- if [[ -n ${!v} ]]; then
- export ${var}="${!v}";
- echo "${!v}";
- return 0;
- fi;
- done;
- local search=;
- [[ -n $4 ]] && search=$(type -p $4-${prog[0]});
- [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p ${!tuple}-${prog[0]});
- [[ -n ${search} ]] && prog[0]=${search##*/};
- export ${var}="${prog[*]}";
- echo "${!var}"
- }
- all-flag-vars ()
- {
- echo {C,CPP,CXX,CCAS,F,FC,LD}FLAGS
- }
- append-cflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CFLAGS+=" $*";
- return 0
- }
- append-cppflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CPPFLAGS+=" $*";
- return 0
- }
- append-cxxflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CXXFLAGS+=" $*";
- return 0
- }
- append-fflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export FFLAGS+=" $*";
- export FCFLAGS+=" $*";
- return 0
- }
- append-flags ()
- {
- [[ $# -eq 0 ]] && return 0;
- case " $* " in
- *' '-[DIU]*)
- eqawarn 'please use append-cppflags for preprocessor flags'
- ;;
- *' '-L* | *' '-Wl,*)
- eqawarn 'please use append-ldflags for linker flags'
- ;;
- esac;
- append-cflags "$@";
- append-cxxflags "$@";
- append-fflags "$@";
- return 0
- }
- append-ldflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- local flag;
- for flag in "$@";
- do
- [[ ${flag} == -l* ]] && eqawarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
- done;
- export LDFLAGS="${LDFLAGS} $*";
- return 0
- }
- append-lfs-flags ()
- {
- [[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments";
- append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
- }
- append-libs ()
- {
- [[ $# -eq 0 ]] && return 0;
- local flag;
- for flag in "$@";
- do
- if [[ -z "${flag// }" ]]; then
- eqawarn "Appending an empty argument to LIBS is invalid! Skipping.";
- continue;
- fi;
- case $flag in
- -[lL]*)
- export LIBS="${LIBS} ${flag}"
- ;;
- -*)
- eqawarn "Appending non-library to LIBS (${flag}); Other linker flags should be passed via LDFLAGS";
- export LIBS="${LIBS} ${flag}"
- ;;
- *)
- export LIBS="${LIBS} -l${flag}"
- ;;
- esac;
- done;
- return 0
- }
- bashpid ()
- {
- sh -c 'echo ${PPID}'
- }
- built_with_use ()
- {
- _eutils_eprefix_init;
- local hidden="no";
- if [[ $1 == "--hidden" ]]; then
- hidden="yes";
- shift;
- fi;
- local missing_action="die";
- if [[ $1 == "--missing" ]]; then
- missing_action=$2;
- shift;
- shift;
- case ${missing_action} in
- true | false | die)
- ;;
- *)
- die "unknown action '${missing_action}'"
- ;;
- esac;
- fi;
- local opt=$1;
- [[ ${opt:0:1} = "-" ]] && shift || opt="-a";
- local PKG=$(best_version $1);
- [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
- shift;
- local USEFILE=${EROOT}/var/db/pkg/${PKG}/USE;
- local IUSEFILE=${EROOT}/var/db/pkg/${PKG}/IUSE;
- if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
- case ${missing_action} in
- true)
- return 0
- ;;
- false)
- return 1
- ;;
- die)
- die "Unable to determine what USE flags $PKG was built with"
- ;;
- esac;
- fi;
- if [[ ${hidden} == "no" ]]; then
- local IUSE_BUILT=($(<"${IUSEFILE}"));
- local expand;
- for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
- do
- if [[ $1 == ${expand}_* ]]; then
- expand="";
- break;
- fi;
- done;
- if [[ -n ${expand} ]]; then
- if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
- case ${missing_action} in
- true)
- return 0
- ;;
- false)
- return 1
- ;;
- die)
- die "$PKG does not actually support the $1 USE flag!"
- ;;
- esac;
- fi;
- fi;
- fi;
- local USE_BUILT=$(<${USEFILE});
- while [[ $# -gt 0 ]]; do
- if [[ ${opt} = "-o" ]]; then
- has $1 ${USE_BUILT} && return 0;
- else
- has $1 ${USE_BUILT} || return 1;
- fi;
- shift;
- done;
- [[ ${opt} = "-a" ]]
- }
- check-reqs_disk ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [path] [size]";
- local path=${1};
- local size=${2};
- local space_kbi;
- check-reqs_start_phase ${size} "disk space at \"${path}\"";
- space_kbi=$(df -Pk "${1}" 2>/dev/null | awk 'FNR == 2 {print $4}');
- if [[ $? == 0 && -n ${space_kbi} ]]; then
- if [[ ${space_kbi} -lt $(check-reqs_get_kibibytes ${size}) ]]; then
- eend 1;
- check-reqs_unsatisfied ${size} "disk space at \"${path}\"";
- else
- eend 0;
- fi;
- else
- eend 1;
- ewarn "Couldn't determine disk space, skipping...";
- fi
- }
- check-reqs_get_kibibytes ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
- local unit=${1:(-1)};
- local size=${1%[GMT]};
- case ${unit} in
- G)
- echo $((1024 * 1024 * size))
- ;;
- M)
- echo $((1024 * size))
- ;;
- T)
- echo $((1024 * 1024 * 1024 * size))
- ;;
- [0-9])
- echo $((1024 * size))
- ;;
- *)
- die "${FUNCNAME}: Unknown unit: ${unit}"
- ;;
- esac
- }
- check-reqs_get_number ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
- local unit=${1:(-1)};
- local size=${1%[GMT]};
- local msg=eerror;
- [[ ${EAPI:-0} == [012345] ]] && msg=eqawarn;
- if [[ ${size} == ${1} ]]; then
- ${msg} "Package does not specify unit for the size check";
- ${msg} "File bug against the package. It should specify the unit.";
- fi;
- echo ${size}
- }
- check-reqs_get_unit ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
- local unit=${1:(-1)};
- case ${unit} in
- G)
- echo "GiB"
- ;;
- [M0-9])
- echo "MiB"
- ;;
- T)
- echo "TiB"
- ;;
- *)
- die "${FUNCNAME}: Unknown unit: ${unit}"
- ;;
- esac
- }
- check-reqs_memory ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
- local size=${1};
- local actual_memory;
- check-reqs_start_phase ${size} "RAM";
- if [[ -r /proc/meminfo ]]; then
- actual_memory=$(awk '/MemTotal/ { print $2 }' /proc/meminfo);
- else
- actual_memory=$(sysctl hw.physmem 2>/dev/null );
- [[ "$?" == "0" ]] && actual_memory=$(echo $actual_memory | sed -e 's/^[^:=]*[:=]//' );
- fi;
- if [[ -n ${actual_memory} ]]; then
- if [[ ${actual_memory} -lt $(check-reqs_get_kibibytes ${size}) ]]; then
- eend 1;
- check-reqs_unsatisfied ${size} "RAM";
- else
- eend 0;
- fi;
- else
- eend 1;
- ewarn "Couldn't determine amount of memory, skipping...";
- fi
- }
- check-reqs_output ()
- {
- debug-print-function ${FUNCNAME} "$@";
- local msg="ewarn";
- [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror";
- if [[ -n ${CHECKREQS_FAILED} ]]; then
- ${msg};
- ${msg} "Space constraints set in the ebuild were not met!";
- ${msg} "The build will most probably fail, you should enhance the space";
- ${msg} "as per failed tests.";
- ${msg};
- [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "Build requirements not met!";
- fi
- }
- check-reqs_pkg_pretend ()
- {
- debug-print-function ${FUNCNAME} "$@";
- check-reqs_pkg_setup "$@"
- }
- check-reqs_pkg_setup ()
- {
- debug-print-function ${FUNCNAME} "$@";
- check-reqs_prepare;
- check-reqs_run;
- check-reqs_output
- }
- check-reqs_prepare ()
- {
- debug-print-function ${FUNCNAME} "$@";
- if [[ -z ${CHECKREQS_MEMORY} && -z ${CHECKREQS_DISK_BUILD} && -z ${CHECKREQS_DISK_USR} && -z ${CHECKREQS_DISK_VAR} ]]; then
- eerror "Set some check-reqs eclass variables if you want to use it.";
- eerror "If you are user and see this message file a bug against the package.";
- die "${FUNCNAME}: check-reqs eclass called but not actualy used!";
- fi
- }
- check-reqs_run ()
- {
- debug-print-function ${FUNCNAME} "$@";
- unset CHECKREQS_FAILED;
- [[ ${EAPI:-0} == [0123] ]] && local MERGE_TYPE="";
- if [[ ${MERGE_TYPE} != binary ]]; then
- [[ -n ${CHECKREQS_MEMORY} ]] && check-reqs_memory ${CHECKREQS_MEMORY};
- [[ -n ${CHECKREQS_DISK_BUILD} ]] && check-reqs_disk "${T}" "${CHECKREQS_DISK_BUILD}";
- fi;
- if [[ ${MERGE_TYPE} != buildonly ]]; then
- [[ -n ${CHECKREQS_DISK_USR} ]] && check-reqs_disk "${EROOT}/usr" "${CHECKREQS_DISK_USR}";
- [[ -n ${CHECKREQS_DISK_VAR} ]] && check-reqs_disk "${EROOT}/var" "${CHECKREQS_DISK_VAR}";
- fi
- }
- check-reqs_start_phase ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]";
- local size=${1};
- local location=${2};
- local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})";
- ebegin "Checking for at least ${sizeunit} ${location}"
- }
- check-reqs_unsatisfied ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]";
- local msg="ewarn";
- local size=${1};
- local location=${2};
- local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})";
- [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror";
- ${msg} "There is NOT at least ${sizeunit} ${location}";
- CHECKREQS_FAILED="true"
- }
- 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
- config=${config#\~};
- config=${config#\!};
- local_error="ERROR_${config}";
- msg="${!local_error}";
- if [[ -z ${msg} ]]; 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_kernel_built ()
- {
- require_configured_kernel;
- get_version;
- local versionh_path;
- if kernel_is -ge 3 7; then
- versionh_path="include/generated/uapi/linux/version.h";
- else
- versionh_path="include/linux/version.h";
- fi;
- if [ ! -f "${KV_OUT_DIR}/${versionh_path}" ]; 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 ()
- {
- die "you no longer need this as portage supports ACCEPT_LICENSE itself"
- }
- 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_reqs ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ ${EAPI:-0} == [012345] ]] || die "${FUNCNAME} is banned in EAPI > 5";
- echo;
- eqawarn "Package calling old ${FUNCNAME} function.";
- eqawarn "Please file a bug against the package.";
- eqawarn "It should call check-reqs_pkg_pretend and check-reqs_pkg_setup";
- eqawarn "and possibly use EAPI=4 or later.";
- echo;
- check-reqs_pkg_setup "$@"
- }
- 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"
- }
- chromium_pkg_die ()
- {
- if [[ "${EBUILD_PHASE}" != "compile" ]]; then
- return;
- fi;
- eshopts_push -s extglob;
- if is-flagq '-g?(gdb)?([1-9])'; then
- ewarn;
- ewarn "You have enabled debug info (i.e. -g or -ggdb in your CFLAGS/CXXFLAGS).";
- ewarn "This produces very large build files causes the linker to consume large";
- ewarn "amounts of memory.";
- ewarn;
- ewarn "Please try removing -g{,gdb} before reporting a bug.";
- ewarn;
- fi;
- eshopts_pop;
- if has ccache ${FEATURES}; then
- ewarn;
- ewarn "You have enabled ccache. Please try disabling ccache";
- ewarn "before reporting a bug.";
- ewarn;
- fi;
- if use_if_iuse custom-cflags; then
- ewarn;
- ewarn "You have enabled the custom-cflags USE flag.";
- ewarn "Please disable it before reporting a bug.";
- ewarn;
- fi;
- einfo;
- einfo "$(grep MemTotal /proc/meminfo)";
- einfo "$(grep SwapTotal /proc/meminfo)";
- einfo
- }
- chromium_remove_language_paks ()
- {
- local lang pak;
- for lang in ${CHROMIUM_LANGS};
- do
- if [[ ! -e ${lang}.pak ]]; then
- if [[ ${lang} != sr-ME || ! -e me.pak ]]; then
- eqawarn "L10N warning: no .pak file for ${lang} (${lang}.pak not found)";
- fi;
- fi;
- done;
- rm -f fake-bidi.pak || die;
- for pak in *.pak;
- do
- lang=${pak%.pak};
- if [[ ${lang} == en-US ]]; then
- continue;
- fi;
- if [[ ${lang} == me ]]; then
- if ! has sr-ME ${CHROMIUM_LANGS}; then
- eqawarn "L10N warning: no sr-ME in LANGS";
- else
- if ! use l10n_sr-ME; then
- rm "${pak}" || die;
- fi;
- fi;
- continue;
- fi;
- if ! has ${lang} ${CHROMIUM_LANGS}; then
- eqawarn "L10N warning: no ${lang} in LANGS";
- continue;
- fi;
- if ! use l10n_${lang}; then
- rm "${pak}" || die;
- fi;
- done
- }
- chromium_suid_sandbox_check_kernel_config ()
- {
- has "${EAPI:-0}" 0 1 2 3 && die "EAPI=${EAPI} is not supported";
- if [[ "${MERGE_TYPE}" == "source" || "${MERGE_TYPE}" == "binary" ]]; then
- ERROR_PID_NS="PID_NS is required for sandbox to work";
- ERROR_NET_NS="NET_NS is required for sandbox to work";
- ERROR_USER_NS="USER_NS is required for sandbox to work";
- ERROR_SECCOMP_FILTER="SECCOMP_FILTER is required for sandbox to work";
- ERROR_ADVISE_SYSCALLS="CONFIG_ADVISE_SYSCALLS is required for the renderer (bug #552576)";
- ERROR_COMPAT_VDSO="CONFIG_COMPAT_VDSO causes segfaults (bug #556286)";
- CONFIG_CHECK="~PID_NS ~NET_NS ~SECCOMP_FILTER ~USER_NS ~ADVISE_SYSCALLS ~!COMPAT_VDSO";
- check_extra_config;
- fi
- }
- clang-fullversion ()
- {
- _clang_fullversion '$1.$2.$3' "$@"
- }
- clang-major-version ()
- {
- _clang_fullversion '$1' "$@"
- }
- clang-micro-version ()
- {
- _clang_fullversion '$3' "$@"
- }
- clang-minor-version ()
- {
- _clang_fullversion '$2' "$@"
- }
- clang-version ()
- {
- _clang_fullversion '$1.$2' "$@"
- }
- 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 ()
- {
- _iconins ${FUNCNAME} "$@"
- }
- domenu ()
- {
- ( local i j ret=0;
- insinto /usr/share/applications;
- for i in "$@";
- do
- if [[ -f ${i} ]]; then
- doins "${i}";
- ((ret+=$?));
- else
- if [[ -d ${i} ]]; then
- for j in "${i}"/*.desktop;
- do
- doins "${j}";
- ((ret+=$?));
- done;
- else
- ((++ret));
- fi;
- fi;
- done;
- exit ${ret} )
- }
- eapply ()
- {
- local failed patch_cmd=patch;
- local -x LC_COLLATE=POSIX;
- type -P gpatch > /dev/null && patch_cmd=gpatch;
- function _eapply_patch ()
- {
- local f=${1};
- local prefix=${2};
- started_applying=1;
- ebegin "${prefix:-Applying }${f##*/}";
- ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";
- failed=${?};
- if ! eend "${failed}"; then
- __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
- fi
- };
- local patch_options=() files=();
- local i found_doublehyphen;
- for ((i = 1; i <= ${#@}; ++i ))
- do
- if [[ ${@:i:1} == -- ]]; then
- patch_options=("${@:1:i-1}");
- files=("${@:i+1}");
- found_doublehyphen=1;
- break;
- fi;
- done;
- if [[ -z ${found_doublehyphen} ]]; then
- for ((i = 1; i <= ${#@}; ++i ))
- do
- if [[ ${@:i:1} != -* ]]; then
- patch_options=("${@:1:i-1}");
- files=("${@:i}");
- break;
- fi;
- done;
- for i in "${files[@]}";
- do
- if [[ ${i} == -* ]]; then
- die "eapply: all options must be passed before non-options";
- fi;
- done;
- fi;
- if [[ -z ${files[@]} ]]; then
- die "eapply: no files specified";
- fi;
- local f;
- for f in "${files[@]}";
- do
- if [[ -d ${f} ]]; then
- function _eapply_get_files ()
- {
- local LC_ALL=POSIX;
- local prev_shopt=$(shopt -p nullglob);
- shopt -s nullglob;
- local f;
- for f in "${1}"/*;
- do
- if [[ ${f} == *.diff || ${f} == *.patch ]]; then
- files+=("${f}");
- fi;
- done;
- ${prev_shopt}
- };
- local files=();
- _eapply_get_files "${f}";
- [[ -z ${files[@]} ]] && die "No *.{patch,diff} files in directory ${f}";
- einfo "Applying patches from ${f} ...";
- local f2;
- for f2 in "${files[@]}";
- do
- _eapply_patch "${f2}" ' ';
- [[ ${failed} -ne 0 ]] && return "${failed}";
- done;
- else
- _eapply_patch "${f}";
- [[ ${failed} -ne 0 ]] && return "${failed}";
- fi;
- done;
- return 0
- }
- eapply_user ()
- {
- [[ ${EBUILD_PHASE} == prepare ]] || die "eapply_user() called during invalid phase: ${EBUILD_PHASE}";
- local tagfile=${T}/.portage_user_patches_applied;
- [[ -f ${tagfile} ]] && return;
- >> "${tagfile}";
- local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
- local d applied;
- local prev_shopt=$(shopt -p nullglob);
- shopt -s nullglob;
- for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/*}};
- do
- if [[ -n $(echo "${d}"/*.diff) || -n $(echo "${d}"/*.patch) ]]; then
- eapply "${d}";
- applied=1;
- fi;
- done;
- ${prev_shopt};
- [[ -n ${applied} ]] && ewarn "User patches applied."
- }
- ebeep ()
- {
- ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
- }
- econf_build ()
- {
- local CBUILD=${CBUILD:-${CHOST}};
- tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"
- }
- ecvs_clean ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
- find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
- }
- edos2unix ()
- {
- [[ $# -eq 0 ]] && return 0;
- sed -i 's/\r$//' -- "$@" || die
- }
- egit_clean ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name '.git*' -prune -print0 | xargs -0 rm -rf
- }
- egyp_chromium ()
- {
- set -- "${EGYP_CHROMIUM_COMMAND}" --depth="${EGYP_CHROMIUM_DEPTH}" "$@";
- echo "$@";
- "$@"
- }
- einstalldocs ()
- {
- ( if ! declare -p DOCS &> /dev/null; then
- local d;
- for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;
- do
- [[ -f ${d} && -s ${d} ]] && docinto / && dodoc "${d}";
- done;
- else
- if [[ $(declare -p DOCS) == "declare -a"* ]]; then
- [[ -n ${DOCS[@]} ]] && docinto / && dodoc -r "${DOCS[@]}";
- else
- [[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS};
- fi;
- fi );
- ( if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]]; then
- [[ -n ${HTML_DOCS[@]} ]] && docinto html && dodoc -r "${HTML_DOCS[@]}";
- else
- [[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS};
- fi )
- }
- emktemp ()
- {
- local exe="touch";
- [[ $1 == -d ]] && exe="mkdir" && shift;
- local topdir=$1;
- if [[ -z ${topdir} ]]; then
- [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
- fi;
- if ! type -P mktemp > /dev/null; then
- local tmp=/;
- while [[ -e ${tmp} ]]; do
- tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
- done;
- ${exe} "${tmp}" || ${exe} -p "${tmp}";
- echo "${tmp}";
- else
- if [[ ${exe} == "touch" ]]; then
- TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
- else
- TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
- fi;
- fi
- }
- eninja ()
- {
- if [[ -z ${NINJAOPTS+set} ]]; then
- local jobs=$(makeopts_jobs);
- local loadavg=$(makeopts_loadavg);
- if [[ ${MAKEOPTS} == *-j* && ${jobs} != 999 ]]; then
- NINJAOPTS+=" -j ${jobs}";
- fi;
- if [[ ${MAKEOPTS} == *-l* && ${loadavg} != 999 ]]; then
- NINJAOPTS+=" -l ${loadavg}";
- fi;
- fi;
- set -- ninja -v ${NINJAOPTS} "$@";
- echo "$@";
- "$@"
- }
- epatch ()
- {
- function _epatch_draw_line ()
- {
- [[ -z $1 ]] && set "$(printf "%65s" '')";
- echo "${1//?/=}"
- };
- unset P4CONFIG P4PORT P4USER;
- local EPATCH_OPTS=(${EPATCH_OPTS[*]});
- while [[ $# -gt 0 ]]; do
- case $1 in
- -*)
- EPATCH_OPTS+=("$1")
- ;;
- *)
- break
- ;;
- esac;
- shift;
- done;
- if [[ $# -gt 1 ]]; then
- local m;
- for m in "$@";
- do
- epatch "${m}";
- done;
- return 0;
- fi;
- local SINGLE_PATCH="no";
- [[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
- if [[ -f $1 ]]; then
- SINGLE_PATCH="yes";
- set -- "$1";
- local EPATCH_SUFFIX=$1;
- else
- if [[ -d $1 ]]; then
- evar_push_set LC_COLLATE C;
- set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
- evar_pop;
- else
- if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
- epatch "${EPATCH_SOURCE}/$1";
- return $?;
- else
- [[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
- echo;
- eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:";
- eerror;
- eerror " ${EPATCH_SOURCE}";
- eerror " ( ${EPATCH_SOURCE##*/} )";
- echo;
- die "Cannot find \$EPATCH_SOURCE!";
- fi;
- fi;
- fi;
- EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[*]}";
- local PIPE_CMD;
- case ${EPATCH_SUFFIX##*\.} in
- xz)
- PIPE_CMD="xz -dc"
- ;;
- lzma)
- PIPE_CMD="lzma -dc"
- ;;
- bz2)
- PIPE_CMD="bzip2 -dc"
- ;;
- gz | Z | z)
- PIPE_CMD="gzip -dc"
- ;;
- ZIP | zip)
- PIPE_CMD="unzip -p"
- ;;
- *)
- ;;
- esac;
- [[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
- local x;
- for x in "$@";
- do
- [[ ! -f ${x} ]] && continue;
- local patchname=${x##*/};
- local a=${patchname#*_};
- a=${a%%_*};
- if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
- continue;
- fi;
- if [[ -n ${EPATCH_EXCLUDE}${EPATCH_USER_EXCLUDE} ]]; then
- eshopts_push -o noglob;
- local ex;
- for ex in ${EPATCH_EXCLUDE};
- do
- if [[ ${patchname} == ${ex} ]]; then
- einfo " Skipping ${patchname} due to EPATCH_EXCLUDE ...";
- eshopts_pop;
- continue 2;
- fi;
- done;
- for ex in ${EPATCH_USER_EXCLUDE};
- do
- if [[ ${patchname} == ${ex} ]]; then
- einfo " Skipping ${patchname} due to EPATCH_USER_EXCLUDE ...";
- eshopts_pop;
- continue 2;
- fi;
- done;
- eshopts_pop;
- fi;
- if [[ ${SINGLE_PATCH} == "yes" ]]; then
- if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
- einfo "${EPATCH_SINGLE_MSG}";
- else
- einfo "Applying ${patchname} ...";
- fi;
- else
- einfo " ${patchname} ...";
- fi;
- local patch="patch";
- eval $(alias patch 2>/dev/null | sed 's:^alias ::');
- local STDERR_TARGET="${T}/${patchname}.out";
- if [[ -e ${STDERR_TARGET} ]]; then
- STDERR_TARGET="${T}/${patchname}-$$.out";
- fi;
- printf "***** %s *****\nPWD: %s\nPATCH TOOL: %s -> %s\nVERSION INFO:\n%s\n\n" "${patchname}" "${PWD}" "${patch}" "$(type -P "${patch}")" "$(${patch} --version)" > "${STDERR_TARGET}";
- local count=0;
- local PATCH_TARGET;
- if [[ -n ${PIPE_CMD} ]]; then
- PATCH_TARGET="${T}/$$.patch";
- echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
- if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
- echo;
- eerror "Could not extract patch!";
- count=5;
- break;
- fi;
- else
- PATCH_TARGET=${x};
- fi;
- local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
- if [[ -n ${abs_paths} ]]; then
- count=1;
- printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
- fi;
- local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}");
- if [[ -n ${rel_paths} ]]; then
- echo;
- eerror "Rejected Patch: ${patchname} !";
- eerror " ( ${PATCH_TARGET} )";
- eerror;
- eerror "Your patch uses relative paths '../':";
- eerror "${rel_paths}";
- echo;
- die "you need to fix the relative paths in patch";
- fi;
- local patch_cmd;
- while [[ ${count} -lt 5 ]]; do
- patch_cmd="${patch} -p${count} ${EPATCH_OPTS}";
- ( _epatch_draw_line "***** ${patchname} *****";
- echo;
- echo "PATCH COMMAND: ${patch_cmd} --dry-run -f < '${PATCH_TARGET}'";
- echo;
- _epatch_draw_line "***** ${patchname} *****";
- ${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1;
- ret=$?;
- echo;
- echo "patch program exited with status ${ret}";
- exit ${ret} ) >> "${STDERR_TARGET}";
- if [ $? -eq 0 ]; then
- ( _epatch_draw_line "***** ${patchname} *****";
- echo;
- echo "ACTUALLY APPLYING ${patchname} ...";
- echo "PATCH COMMAND: ${patch_cmd} < '${PATCH_TARGET}'";
- echo;
- _epatch_draw_line "***** ${patchname} *****";
- ${patch_cmd} < "${PATCH_TARGET}" 2>&1;
- ret=$?;
- echo;
- echo "patch program exited with status ${ret}";
- exit ${ret} ) >> "${STDERR_TARGET}";
- if [ $? -ne 0 ]; then
- echo;
- eerror "A dry-run of patch command succeeded, but actually";
- eerror "applying the patch failed!";
- count=5;
- fi;
- break;
- fi;
- : $(( count++ ));
- done;
- (( EPATCH_N_APPLIED_PATCHES++ ));
- if [[ -n ${PIPE_CMD} ]]; then
- rm -f "${PATCH_TARGET}";
- fi;
- if [[ ${count} -ge 5 ]]; then
- echo;
- eerror "Failed Patch: ${patchname} !";
- eerror " ( ${PATCH_TARGET} )";
- eerror;
- eerror "Include in your bugreport the contents of:";
- eerror;
- eerror " ${STDERR_TARGET}";
- echo;
- die "Failed Patch: ${patchname}!";
- fi;
- rm -f "${STDERR_TARGET}";
- cat >> "${T}/epatch.log" <<-EOF
- PATCH: ${x}
- CMD: ${patch_cmd}
- PWD: ${PWD}
- EOF
- eend 0;
- done;
- [[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
- :
- }
- epause ()
- {
- ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
- }
- epunt_cxx ()
- {
- local dir=$1;
- [[ -z ${dir} ]] && dir=${S};
- ebegin "Removing useless C++ checks";
- local f p any_found;
- while IFS= read -r -d '' f; do
- for p in "$(eutils_elt_patch_dir)"/nocxx/*.patch;
- do
- if patch --no-backup-if-mismatch -p1 "${f}" "${p}" > /dev/null; then
- any_found=1;
- break;
- fi;
- done;
- done < <(find "${dir}" -name configure -print0);
- if [[ -z ${any_found} ]]; then
- eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt).";
- fi;
- eend 0
- }
- eshopts_pop ()
- {
- local s;
- estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
- if [[ ${s} == "shopt -"* ]]; then
- eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}";
- else
- set +$- || die "${FUNCNAME}: sanity: invalid shell settings: $-";
- set -${s} || die "${FUNCNAME}: sanity: unable to restore saved shell settings: ${s}";
- fi
- }
- eshopts_push ()
- {
- if [[ $1 == -[su] ]]; then
- estack_push eshopts "$(shopt -p)";
- [[ $# -eq 0 ]] && return 0;
- shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*";
- else
- estack_push eshopts $-;
- [[ $# -eq 0 ]] && return 0;
- set "$@" || die "${FUNCNAME}: bad options to set: $*";
- fi
- }
- estack_pop ()
- {
- [[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments";
- local _estack_name="_ESTACK_$1_";
- shift;
- local _estack_retvar=$1;
- shift;
- eval local _estack_i=\${#${_estack_name}\[@\]};
- [[ $(( --_estack_i )) -eq -1 ]] && return 1;
- if [[ -n ${_estack_retvar} ]]; then
- eval ${_estack_retvar}=\"\${${_estack_name}\[${_estack_i}\]}\";
- fi;
- eval unset \"${_estack_name}\[${_estack_i}\]\"
- }
- estack_push ()
- {
- [[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments";
- local stack_name="_ESTACK_$1_";
- shift;
- eval ${stack_name}+=\( \"\$@\" \)
- }
- esvn_clean ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
- }
- eumask_pop ()
- {
- [[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options";
- local s;
- estack_pop eumask s || die "${FUNCNAME}: unbalanced push";
- umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}"
- }
- eumask_push ()
- {
- estack_push eumask "$(umask)";
- umask "$@" || die "${FUNCNAME}: bad options to umask: $*"
- }
- eutils_elt_patch_dir ()
- {
- local d="${ECLASSDIR}/ELT-patches";
- if [[ ! -d ${d} ]]; then
- d="${_EUTILS_ECLASSDIR_LOCAL}/ELT-patches";
- fi;
- echo "${d}"
- }
- evar_pop ()
- {
- local cnt=${1:-bad};
- case $# in
- 0)
- cnt=1
- ;;
- 1)
- isdigit "${cnt}" || die "${FUNCNAME}: first arg must be a number: $*"
- ;;
- *)
- die "${FUNCNAME}: only accepts one arg: $*"
- ;;
- esac;
- local var val;
- while (( cnt-- )); do
- estack_pop evar val || die "${FUNCNAME}: unbalanced push";
- estack_pop evar var || die "${FUNCNAME}: unbalanced push";
- [[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}";
- done
- }
- evar_push ()
- {
- local var val;
- for var in "$@";
- do
- [[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94";
- estack_push evar "${var}" "${val}";
- done
- }
- evar_push_set ()
- {
- local var=$1;
- evar_push ${var};
- case $# in
- 1)
- unset ${var}
- ;;
- 2)
- printf -v "${var}" '%s' "$2"
- ;;
- *)
- die "${FUNCNAME}: incorrect # of args: $*"
- ;;
- esac
- }
- filter-flags ()
- {
- _filter-hardened "$@";
- local v;
- for v in $(all-flag-vars);
- do
- _filter-var ${v} "$@";
- done;
- return 0
- }
- filter-ldflags ()
- {
- _filter-var LDFLAGS "$@";
- return 0
- }
- filter-lfs-flags ()
- {
- [[ $# -ne 0 ]] && die "filter-lfs-flags takes no arguments";
- filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
- }
- filter-mfpmath ()
- {
- local orig_mfpmath new_math prune_math;
- orig_mfpmath=$(get-flag -mfpmath);
- new_math=$(get-flag mfpmath);
- new_math=${new_math/both/387,sse};
- new_math=" ${new_math//[,+]/ } ";
- prune_math="";
- for prune_math in "$@";
- do
- new_math=${new_math/ ${prune_math} / };
- done;
- new_math=$(echo ${new_math});
- new_math=${new_math// /,};
- if [[ -z ${new_math} ]]; then
- filter-flags ${orig_mfpmath};
- else
- replace-flags ${orig_mfpmath} -mfpmath=${new_math};
- fi;
- return 0
- }
- gcc-fullversion ()
- {
- _gcc_fullversion '$1.$2.$3' "$@"
- }
- gcc-major-version ()
- {
- _gcc_fullversion '$1' "$@"
- }
- gcc-micro-version ()
- {
- _gcc_fullversion '$3' "$@"
- }
- gcc-minor-version ()
- {
- _gcc_fullversion '$2' "$@"
- }
- gcc-specs-directive ()
- {
- local directive subdname subdirective;
- directive="$(_gcc-specs-directive_raw $1)";
- while [[ ${directive} == *%\(*\)* ]]; do
- subdname=${directive/*%\(};
- subdname=${subdname/\)*};
- subdirective="$(_gcc-specs-directive_raw ${subdname})";
- directive="${directive//\%(${subdname})/${subdirective}}";
- done;
- echo "${directive}";
- return 0
- }
- gcc-specs-nostrict ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]
- }
- gcc-specs-now ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!nonow:}" != "${directive}" ]]
- }
- gcc-specs-pie ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!nopie:}" != "${directive}" ]]
- }
- gcc-specs-relro ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!norelro:}" != "${directive}" ]]
- }
- gcc-specs-ssp ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]
- }
- gcc-specs-ssp-to-all ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]
- }
- gcc-specs-stack-check ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]]
- }
- gcc-version ()
- {
- _gcc_fullversion '$1.$2' "$@"
- }
- gen_usr_ldscript ()
- {
- local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
- [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
- tc-is-static-only && return;
- if [[ $(type -t multilib_is_native_abi) == "function" ]]; then
- multilib_is_native_abi || return 0;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- ;;
- *-android*)
- return 0
- ;;
- *linux* | *-freebsd* | *-openbsd* | *-netbsd*)
- use prefix && return 0
- ;;
- *)
- return 0
- ;;
- esac;
- dodir /usr/${libdir};
- if [[ $1 == "-a" ]]; then
- auto=true;
- shift;
- dodir /${libdir};
- fi;
- local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);
- if $(tc-getLD) --version | grep -q 'GNU gold'; then
- local d="${T}/bfd-linker";
- mkdir -p "${d}";
- ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;
- flags+=(-B"${d}");
- fi;
- output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
- [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
- for lib in "$@";
- do
- local tlib;
- if ${auto}; then
- lib="lib${lib}${suffix}";
- else
- [[ -r ${ED}/${libdir}/${lib} ]] || continue;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- if ${auto}; then
- tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- else
- tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
- fi;
- [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
- tlib=${tlib##*/};
- if ${auto}; then
- mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
- mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- fi;
- if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
- chmod u+w "${ED}${libdir}/${tlib}";
- local nowrite=yes;
- fi;
- install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
- [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
- pushd "${ED}/usr/${libdir}" > /dev/null;
- ln -snf "../../${libdir}/${tlib}" "${lib}";
- popd > /dev/null
- ;;
- *)
- if ${auto}; then
- tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
- mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib}* ]]; then
- mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- else
- tlib=${lib};
- fi;
- cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
- /* GNU ld script
- Since Gentoo has critical dynamic libraries in /lib, and the static versions
- in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
- run into linking problems. This "fake" dynamic lib is a linker script that
- redirects the linker to the real lib. And yes, this works in the cross-
- compiling scenario as the sysroot-ed linker will prepend the real path.
- See bug https://bugs.gentoo.org/4411 for more info.
- */
- ${output_format}
- GROUP ( ${EPREFIX}/${libdir}/${tlib} )
- END_LDSCRIPT
- ;;
- esac
- fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
- done
- }
- get-flag ()
- {
- local f var findflag="$1";
- for var in $(all-flag-vars);
- do
- for f in ${!var};
- do
- if [ "${f/${findflag}}" != "${f}" ]; then
- printf "%s\n" "${f/-${findflag}=}";
- return 0;
- fi;
- done;
- done;
- return 1
- }
- get_abi_CFLAGS ()
- {
- get_abi_var CFLAGS "$@"
- }
- get_abi_CHOST ()
- {
- get_abi_var CHOST "$@"
- }
- get_abi_CTARGET ()
- {
- get_abi_var CTARGET "$@"
- }
- get_abi_FAKE_TARGETS ()
- {
- get_abi_var FAKE_TARGETS "$@"
- }
- get_abi_LDFLAGS ()
- {
- get_abi_var LDFLAGS "$@"
- }
- get_abi_LIBDIR ()
- {
- get_abi_var LIBDIR "$@"
- }
- get_abi_var ()
- {
- local flag=$1;
- local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};
- local var="${flag}_${abi}";
- echo ${!var}
- }
- get_after_major_version ()
- {
- echo $(get_version_component_range 2- "${1:-${PV}}")
- }
- get_all_abis ()
- {
- local x order="" mvar dvar;
- mvar="MULTILIB_ABIS";
- dvar="DEFAULT_ABI";
- if [[ -n $1 ]]; then
- mvar="$1_${mvar}";
- dvar="$1_${dvar}";
- fi;
- if [[ -z ${!mvar} ]]; then
- echo "default";
- return 0;
- fi;
- for x in ${!mvar};
- do
- if [[ ${x} != ${!dvar} ]]; then
- order="${order:+${order} }${x}";
- fi;
- done;
- order="${order:+${order} }${!dvar}";
- echo ${order};
- return 0
- }
- get_all_libdirs ()
- {
- local libdirs abi;
- for abi in ${MULTILIB_ABIS};
- do
- libdirs+=" $(get_abi_LIBDIR ${abi})";
- done;
- [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib";
- echo "${libdirs}"
- }
- get_all_version_components ()
- {
- eshopts_push -s extglob;
- local ver_str=${1:-${PV}} result;
- result=();
- if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
- echo ${VERSIONATOR_CACHE_RESULT};
- eshopts_pop;
- return;
- fi;
- export VERSIONATOR_CACHE_VER_STR=${ver_str};
- while [[ -n $ver_str ]]; do
- case "${ver_str::1}" in
- [[:digit:]])
- result+=("${ver_str%%[^[:digit:]]*}");
- ver_str=${ver_str##+([[:digit:]])}
- ;;
- [-_.])
- result+=("${ver_str::1}");
- ver_str=${ver_str:1}
- ;;
- [[:alpha:]])
- local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])};
- result+=("${ver_str::${#ver_str} - ${#not_match}}");
- ver_str=${not_match}
- ;;
- *)
- result+=("${ver_str::1}");
- ver_str=${ver_str:1}
- ;;
- esac;
- done;
- export VERSIONATOR_CACHE_RESULT=${result[*]};
- echo ${result[@]};
- eshopts_pop
- }
- get_bmake ()
- {
- if [[ ${CBUILD:-${CHOST}} == *bsd* ]]; then
- echo make;
- else
- if [[ ${CBUILD:-${CHOST}} == *darwin* ]]; then
- echo bsdmake;
- else
- echo bmake;
- fi;
- fi
- }
- get_exeext ()
- {
- case ${CHOST} in
- *-cygwin* | mingw* | *-mingw*)
- echo ".exe"
- ;;
- esac
- }
- get_install_abis ()
- {
- local x order="";
- if [[ -z ${MULTILIB_ABIS} ]]; then
- echo "default";
- return 0;
- fi;
- if [[ ${EMULTILIB_PKG} == "true" ]]; then
- for x in ${MULTILIB_ABIS};
- do
- if [[ ${x} != "${DEFAULT_ABI}" ]]; then
- has ${x} ${ABI_DENY} || order="${order} ${x}";
- fi;
- done;
- has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";
- if [[ -n ${ABI_ALLOW} ]]; then
- local ordera="";
- for x in ${order};
- do
- if has ${x} ${ABI_ALLOW}; then
- ordera="${ordera} ${x}";
- fi;
- done;
- order=${ordera};
- fi;
- else
- order=${DEFAULT_ABI};
- fi;
- if [[ -z ${order} ]]; then
- die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
- fi;
- echo ${order};
- return 0
- }
- get_last_version_component_index ()
- {
- echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
- }
- get_libdir ()
- {
- local libdir_var="LIBDIR_${ABI}";
- local libdir="lib";
- [[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var};
- echo "${libdir}"
- }
- get_libname ()
- {
- local libname;
- local ver=$1;
- case ${CHOST} in
- *-cygwin*)
- libname="dll.a"
- ;;
- 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
- *-cygwin*)
- echo ".${ver}.${libname}"
- ;;
- *-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_nproc ()
- {
- local nproc;
- if type -P nproc &> /dev/null; then
- nproc=$(nproc);
- fi;
- if [[ -z ${nproc} ]] && type -P sysctl &> /dev/null; then
- nproc=$(sysctl -n hw.ncpu 2>/dev/null);
- fi;
- if [[ -z ${nproc} ]] && type -P python &> /dev/null; then
- nproc=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count());' 2>/dev/null);
- fi;
- if [[ -n ${nproc} ]]; then
- echo "${nproc}";
- else
- echo "${1:-1}";
- fi
- }
- 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
- local kv_full=${KV_FULL//[-+_]*};
- 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_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}";
- : ${KV_PATCH:=0};
- fi;
- fi;
- fi;
- return 0
- }
- get_version ()
- {
- local tmplocal;
- [ -n "${KV_FULL}" ] && return 0;
- unset KV_DIR;
- [ -z "${get_version_warning_done}" ] && qeinfo "Determining the location of the kernel source code";
- [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}";
- if [ -z "${KV_DIR}" ]; then
- if [ -z "${get_version_warning_done}" ]; then
- get_version_warning_done=1;
- qewarn "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 "${KBUILD_OUTPUT}" -a -L "${KERNEL_DIR}/source" ]; then
- KBUILD_OUTPUT=${KERNEL_DIR};
- KERNEL_DIR=$(readlink -f "${KERNEL_DIR}/source");
- KV_DIR=${KERNEL_DIR};
- 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;
- local OUTPUT_DIR=${KBUILD_OUTPUT};
- KERNEL_MAKEFILE="${KV_DIR}/Makefile";
- if [[ -z ${OUTPUT_DIR} ]]; then
- local mkfunc=$(get_makefile_extract_function "${KERNEL_MAKEFILE}");
- OUTPUT_DIR=$(${mkfunc} KBUILD_OUTPUT "${KERNEL_MAKEFILE}");
- fi;
- KV_MAJOR=$(getfilevar_noexec VERSION "${KERNEL_MAKEFILE}");
- KV_MINOR=$(getfilevar_noexec PATCHLEVEL "${KERNEL_MAKEFILE}");
- KV_PATCH=$(getfilevar_noexec SUBLEVEL "${KERNEL_MAKEFILE}");
- KV_EXTRA=$(getfilevar_noexec 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;
- if [[ -z ${OUTPUT_DIR} ]]; then
- for OUTPUT_DIR in "${SYSROOT}" "${ROOT}" "";
- do
- OUTPUT_DIR+="/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build";
- if [[ -e ${OUTPUT_DIR} ]]; then
- break;
- fi;
- done;
- fi;
- [ -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}" M="${S}";
- 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;
- [[ ${EAPI:-0} == [0123] ]] && function nonfatal ()
- {
- "$@"
- };
- case ${EBUILD_PHASE_FUNC} in
- pkg_info | pkg_nofetch | pkg_pretend)
- M="${T}"
- ;;
- esac;
- echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | nonfatal emake -C "${basedname}" M="${M}" ${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
- }
- gnome2_disable_deprecation_warning ()
- {
- local retval=0;
- local fails=();
- local makefile;
- ebegin "Disabling deprecation warnings";
- while read makefile; do
- if ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)" "${makefile}"; then
- continue;
- fi;
- LC_ALL=C sed -r -i -e 's:-D[A-Z_]+_DISABLE_DEPRECATED:$(/bin/true):g' -e 's:-DGSEAL_ENABLE(=[A-Za-z0-9_]*)?:$(/bin/true):g' -i "${makefile}";
- if [[ $? -ne 0 ]]; then
- fails+=("${makefile}");
- retval=2;
- fi;
- done < <(find "${S}" -name "Makefile.in" -o -name "Makefile.am" -o -name "Makefile.decl" | sort; [[ -f "${S}"/configure ]] && echo configure);
- eend ${retval};
- for makefile in "${fails[@]}";
- do
- ewarn "Failed to disable deprecation warnings in ${makefile}";
- done
- }
- gnome2_environment_reset ()
- {
- xdg_environment_reset;
- export G_HOME="${T}";
- export GST_REGISTRY="${T}/registry.xml";
- export GSETTINGS_BACKEND="memory";
- if has ${EAPI:-0} 6; then
- export GST_INSPECT="$(type -P true)";
- unset DISPLAY;
- fi
- }
- gnome2_gconf_install ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}${GCONFTOOL_BIN}";
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
- debug-print "No GNOME 2 GConf schemas found";
- return;
- fi;
- unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
- export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
- einfo "Installing GNOME 2 GConf schemas";
- local F;
- for F in ${GNOME2_ECLASS_SCHEMAS};
- do
- if [[ -e "${EROOT}${F}" ]]; then
- debug-print "Installing schema: ${F}";
- "${updater}" --makefile-install-rule "${EROOT}${F}" > /dev/null;
- fi;
- done;
- pids=$(pgrep -x gconfd-2);
- if [[ $? == 0 ]]; then
- ebegin "Reloading GConf schemas";
- kill -HUP ${pids};
- eend $?;
- fi
- }
- gnome2_gconf_savelist ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
- pushd "${ED}" > /dev/null || die;
- export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null);
- popd > /dev/null || die
- }
- gnome2_gconf_uninstall ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}${GCONFTOOL_BIN}";
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
- debug-print "No GNOME 2 GConf schemas found";
- return;
- fi;
- unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
- export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
- einfo "Uninstalling GNOME 2 GConf schemas";
- local F;
- for F in ${GNOME2_ECLASS_SCHEMAS};
- do
- if [[ -e "${EROOT}${F}" ]]; then
- debug-print "Uninstalling gconf schema: ${F}";
- "${updater}" --makefile-uninstall-rule "${EROOT}${F}" > /dev/null;
- fi;
- done;
- pids=$(pgrep -x gconfd-2);
- if [[ $? == 0 ]]; then
- ebegin "Reloading GConf schemas";
- kill -HUP ${pids};
- eend $?;
- fi
- }
- gnome2_gdk_pixbuf_savelist ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
- pushd "${ED}" > /dev/null || die;
- export GNOME2_ECLASS_GDK_PIXBUF_LOADERS=$(find usr/lib*/gdk-pixbuf-2.0 -type f 2>/dev/null);
- popd > /dev/null || die
- }
- gnome2_gdk_pixbuf_update ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}/usr/bin/${CHOST}-gdk-pixbuf-query-loaders";
- if [[ ! -x ${updater} ]]; then
- updater="${EROOT}/usr/bin/gdk-pixbuf-query-loaders";
- fi;
- if [[ ! -x ${updater} ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z ${GNOME2_ECLASS_GDK_PIXBUF_LOADERS} ]]; then
- debug-print "gdk-pixbuf loader cache does not need an update";
- return;
- fi;
- ebegin "Updating gdk-pixbuf loader cache";
- local tmp_file=$(emktemp);
- ${updater} > "${tmp_file}" && chmod 0644 "${tmp_file}" && cp -f "${tmp_file}" "${EROOT}usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" && rm "${tmp_file}";
- eend $?
- }
- gnome2_giomodule_cache_update ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}/usr/bin/${CHOST}-gio-querymodules";
- if [[ ! -x ${updater} ]]; then
- updater="${EROOT}/usr/bin/gio-querymodules";
- fi;
- if [[ ! -x ${updater} ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- ebegin "Updating GIO modules cache";
- ${updater} "${EROOT%/}"/usr/$(get_libdir)/gio/modules;
- eend $?
- }
- gnome2_icon_cache_update ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}";
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
- debug-print "No icon cache to update";
- return;
- fi;
- ebegin "Updating icons cache";
- local retval=0;
- local fails=();
- for dir in ${GNOME2_ECLASS_ICONS};
- do
- if [[ -f "${EROOT}${dir}/index.theme" ]]; then
- local rv=0;
- "${updater}" -qf "${EROOT}${dir}";
- rv=$?;
- if [[ ! $rv -eq 0 ]]; then
- debug-print "Updating cache failed on ${EROOT}${dir}";
- fails[$(( ${#fails[@]} + 1 ))]="${EROOT}${dir}";
- retval=2;
- fi;
- else
- if [[ $(ls "${EROOT}${dir}") = "icon-theme.cache" ]]; then
- rm "${EROOT}${dir}/icon-theme.cache";
- fi;
- fi;
- if [[ -z $(ls "${EROOT}${dir}") ]]; then
- rmdir "${EROOT}${dir}";
- fi;
- done;
- eend ${retval};
- for f in "${fails[@]}";
- do
- eerror "Failed to update cache with icon $f";
- done
- }
- gnome2_icon_savelist ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
- pushd "${ED}" > /dev/null || die;
- export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null);
- popd > /dev/null || die
- }
- gnome2_omf_fix ()
- {
- local omf_makefiles filename;
- omf_makefiles="$@";
- if [[ -f ${S}/omf.make ]]; then
- omf_makefiles="${omf_makefiles} ${S}/omf.make";
- fi;
- if [[ -f ${S}/gnome-doc-utils.make ]]; then
- omf_makefiles="${omf_makefiles} ${S}/gnome-doc-utils.make";
- fi;
- for filename in $(find "${S}" -name "Makefile.in" -o -name "Makefile.am" |sort);
- do
- omf_makefiles="${omf_makefiles} ${filename}";
- done;
- ebegin "Fixing OMF Makefiles";
- local retval=0;
- local fails=();
- for omf in ${omf_makefiles};
- do
- sed -i -e 's:scrollkeeper-update:true:' "${omf}";
- retval=$?;
- if [[ $retval -ne 0 ]]; then
- debug-print "updating of ${omf} failed";
- fails[$(( ${#fails[@]} + 1 ))]=$omf;
- retval=2;
- fi;
- done;
- eend $retval;
- for f in "${fails[@]}";
- do
- eerror "Failed to update OMF Makefile $f";
- done
- }
- gnome2_query_immodules_gtk2 ()
- {
- local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-2.0;
- [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-2.0;
- ebegin "Updating gtk2 input method module cache";
- GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-2.0/2.10.0/immodules.cache" "${updater}" --update-cache;
- eend $?
- }
- gnome2_query_immodules_gtk3 ()
- {
- local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-3.0;
- [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-3.0;
- ebegin "Updating gtk3 input method module cache";
- GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" "${updater}" --update-cache;
- eend $?
- }
- gnome2_schemas_savelist ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
- pushd "${ED}" > /dev/null || die;
- export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null);
- popd > /dev/null || die
- }
- gnome2_schemas_update ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}";
- if [[ ! -x ${updater} ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
- debug-print "No GSettings schemas to update";
- return;
- fi;
- ebegin "Updating GSettings schemas";
- ${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &> /dev/null;
- eend $?
- }
- gnome2_scrollkeeper_savelist ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
- pushd "${ED}" > /dev/null || die;
- export GNOME2_ECLASS_SCROLLS=$(find 'usr/share/omf' -type f -name "*.omf" 2> /dev/null);
- popd > /dev/null || die
- }
- gnome2_scrollkeeper_update ()
- {
- has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
- local updater="${EROOT}${SCROLLKEEPER_UPDATE_BIN}";
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- if [[ -z "${GNOME2_ECLASS_SCROLLS}" ]]; then
- debug-print "No scroll cache to update";
- return;
- fi;
- ebegin "Updating scrollkeeper database ...";
- "${updater}" -q -p "${EROOT}${SCROLLKEEPER_DIR}";
- eend $?
- }
- gyp_use ()
- {
- local gypflag="-D${2:-use_${1//-/_}}=";
- usex "$1" "${gypflag}" "${gypflag}" "${3-1}" "${4-0}"
- }
- has_m32 ()
- {
- die "${FUNCNAME}: don't use this anymore"
- }
- has_m64 ()
- {
- eqawarn "${FUNCNAME}: don't use this anymore";
- local temp="$(emktemp)";
- echo "int main() { return(0); }" > "${temp}".c;
- MY_CC=$(tc-getCC);
- ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
- local ret=$?;
- rm -f "${temp}".c;
- [[ ${ret} != 1 ]] && return 0;
- return 1
- }
- has_multilib_profile ()
- {
- [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
- }
- host-is-pax ()
- {
- grep -qs ^PaX: /proc/self/status
- }
- in_iuse ()
- {
- local use=${1};
- if [[ -z "${use}" ]]; then
- echo "!!! in_iuse() called without a parameter." 1>&2;
- echo "!!! in_iuse <USEFLAG>" 1>&2;
- die "in_iuse() called without a parameter";
- fi;
- local liuse=(${IUSE_EFFECTIVE});
- has "${use}" "${liuse[@]#[+-]}"
- }
- is-flag ()
- {
- is-flagq "$@" && echo true
- }
- is-flagq ()
- {
- [[ -n $2 ]] && die "Usage: is-flag <flag>";
- local var;
- for var in $(all-flag-vars);
- do
- _is_flagq ${var} "$1" && return 0;
- done;
- return 1
- }
- is-ldflag ()
- {
- is-ldflagq "$@" && echo true
- }
- is-ldflagq ()
- {
- [[ -n $2 ]] && die "Usage: is-ldflag <flag>";
- _is_flagq LDFLAGS $1
- }
- is-login-disabled ()
- {
- _dead_portability_user_funcs
- }
- is_final_abi ()
- {
- has_multilib_profile || return 0;
- set -- $(get_install_abis);
- local LAST_ABI=$#;
- [[ ${!LAST_ABI} == ${ABI} ]]
- }
- isdigit ()
- {
- local d;
- for d in "$@";
- do
- [[ ${d:-bad} == *[!0-9]* ]] && return 1;
- done;
- return 0
- }
- kernel_is ()
- {
- linux-info_get_any_version;
- local operator test value;
- case ${1#-} in
- lt)
- operator="-lt";
- shift
- ;;
- gt)
- operator="-gt";
- shift
- ;;
- le)
- operator="-le";
- shift
- ;;
- ge)
- operator="-ge";
- shift
- ;;
- eq)
- operator="-eq";
- shift
- ;;
- *)
- operator="-eq"
- ;;
- esac;
- [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters";
- : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ));
- : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ));
- [ ${test} ${operator} ${value} ]
- }
- 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_chkconfig_builtin ()
- {
- linux_config_qa_check linux_chkconfig_builtin;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]]
- }
- linux_chkconfig_module ()
- {
- linux_config_qa_check linux_chkconfig_module;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]]
- }
- linux_chkconfig_present ()
- {
- linux_config_qa_check linux_chkconfig_present;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]]
- }
- linux_chkconfig_string ()
- {
- linux_config_qa_check linux_chkconfig_string;
- getfilevar_noexec "CONFIG_$1" "$(linux_config_path)"
- }
- 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_path ()
- {
- if linux_config_src_exists; then
- echo "${KV_OUT_DIR}/.config";
- else
- if linux_config_bin_exists; then
- echo "/proc/config.gz";
- else
- return 1;
- fi;
- fi
- }
- 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;
- [[ -n ${KV_OUT_DIR} && -s ${KV_OUT_DIR}/.config ]]
- }
- list-paxables ()
- {
- file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
- }
- make_desktop_entry ()
- {
- [[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
- local exec=${1};
- local name=${2:-${PN}};
- local icon=${3:-${PN}};
- local type=${4};
- local fields=${5};
- if [[ -z ${type} ]]; then
- local catmaj=${CATEGORY%%-*};
- local catmin=${CATEGORY##*-};
- case ${catmaj} in
- app)
- case ${catmin} in
- accessibility)
- type="Utility;Accessibility"
- ;;
- admin)
- type=System
- ;;
- antivirus)
- type=System
- ;;
- arch)
- type="Utility;Archiving"
- ;;
- backup)
- type="Utility;Archiving"
- ;;
- cdr)
- type="AudioVideo;DiscBurning"
- ;;
- dicts)
- type="Office;Dictionary"
- ;;
- doc)
- type=Documentation
- ;;
- editors)
- type="Utility;TextEditor"
- ;;
- emacs)
- type="Development;TextEditor"
- ;;
- emulation)
- type="System;Emulator"
- ;;
- laptop)
- type="Settings;HardwareSettings"
- ;;
- office)
- type=Office
- ;;
- pda)
- type="Office;PDA"
- ;;
- vim)
- type="Development;TextEditor"
- ;;
- xemacs)
- type="Development;TextEditor"
- ;;
- esac
- ;;
- dev)
- type="Development"
- ;;
- games)
- case ${catmin} in
- action | fps)
- type=ActionGame
- ;;
- arcade)
- type=ArcadeGame
- ;;
- board)
- type=BoardGame
- ;;
- emulation)
- type=Emulator
- ;;
- kids)
- type=KidsGame
- ;;
- puzzle)
- type=LogicGame
- ;;
- roguelike)
- type=RolePlaying
- ;;
- rpg)
- type=RolePlaying
- ;;
- simulation)
- type=Simulation
- ;;
- sports)
- type=SportsGame
- ;;
- strategy)
- type=StrategyGame
- ;;
- esac;
- type="Game;${type}"
- ;;
- gnome)
- type="Gnome;GTK"
- ;;
- kde)
- type="KDE;Qt"
- ;;
- mail)
- type="Network;Email"
- ;;
- media)
- case ${catmin} in
- gfx)
- type=Graphics
- ;;
- *)
- case ${catmin} in
- radio)
- type=Tuner
- ;;
- sound)
- type=Audio
- ;;
- tv)
- type=TV
- ;;
- video)
- type=Video
- ;;
- esac;
- type="AudioVideo;${type}"
- ;;
- esac
- ;;
- net)
- case ${catmin} in
- dialup)
- type=Dialup
- ;;
- ftp)
- type=FileTransfer
- ;;
- im)
- type=InstantMessaging
- ;;
- irc)
- type=IRCClient
- ;;
- mail)
- type=Email
- ;;
- news)
- type=News
- ;;
- nntp)
- type=News
- ;;
- p2p)
- type=FileTransfer
- ;;
- voip)
- type=Telephony
- ;;
- esac;
- type="Network;${type}"
- ;;
- sci)
- case ${catmin} in
- astro*)
- type=Astronomy
- ;;
- bio*)
- type=Biology
- ;;
- calc*)
- type=Calculator
- ;;
- chem*)
- type=Chemistry
- ;;
- elec*)
- type=Electronics
- ;;
- geo*)
- type=Geology
- ;;
- math*)
- type=Math
- ;;
- physics)
- type=Physics
- ;;
- visual*)
- type=DataVisualization
- ;;
- esac;
- type="Education;Science;${type}"
- ;;
- sys)
- type="System"
- ;;
- www)
- case ${catmin} in
- client)
- type=WebBrowser
- ;;
- esac;
- type="Network;${type}"
- ;;
- *)
- type=
- ;;
- esac;
- fi;
- local slot=${SLOT%/*};
- if [[ ${slot} == "0" ]]; then
- local desktop_name="${PN}";
- else
- local desktop_name="${PN}-${slot}";
- fi;
- local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
- type=${type%;}${type:+;};
- eshopts_push -s extglob;
- if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
- ewarn "As described in the Icon Theme Specification, icon file extensions are not";
- ewarn "allowed in .desktop files if the value is not an absolute path.";
- icon=${icon%.@(xpm|png|svg)};
- fi;
- eshopts_pop;
- cat > "${desktop}" <<-EOF
- [Desktop Entry]
- Name=${name}
- Type=Application
- Comment=${DESCRIPTION}
- Exec=${exec}
- TryExec=${exec%% *}
- Icon=${icon}
- Categories=${type}
- EOF
- if [[ ${fields:-=} != *=* ]]; then
- ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}";
- fields="Path=${fields}";
- fi;
- [[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}";
- ( insinto /usr/share/applications;
- doins "${desktop}" ) || die "installing desktop file failed"
- }
- make_session_desktop ()
- {
- [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
- [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
- local title=$1;
- local command=$2;
- local desktop=${T}/${wm:-${PN}}.desktop;
- shift 2;
- cat > "${desktop}" <<-EOF
- [Desktop Entry]
- Name=${title}
- Comment=This session logs you into ${title}
- Exec=${command} $*
- TryExec=${command}
- Type=XSession
- EOF
- ( insinto /usr/share/xsessions;
- doins "${desktop}" )
- }
- make_wrapper ()
- {
- _eutils_eprefix_init;
- local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
- local tmpwrapper=$(emktemp);
- ( echo '#!/bin/sh';
- [[ -n ${chdir} ]] && printf 'cd "%s"\n' "${EPREFIX}${chdir}";
- if [[ -n ${libdir} ]]; then
- local var;
- if [[ ${CHOST} == *-darwin* ]]; then
- var=DYLD_LIBRARY_PATH;
- else
- var=LD_LIBRARY_PATH;
- fi;
- cat <<-EOF
- if [ "\${${var}+set}" = "set" ] ; then
- export ${var}="\${${var}}:${EPREFIX}${libdir}"
- else
- export ${var}="${EPREFIX}${libdir}"
- fi
- EOF
- fi
- printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}";
- chmod go+rx "${tmpwrapper}";
- if [[ -n ${path} ]]; then
- ( exeinto "${path}";
- newexe "${tmpwrapper}" "${wrapper}" ) || die;
- else
- newbin "${tmpwrapper}" "${wrapper}" || die;
- fi
- }
- makeopts_jobs ()
- {
- [[ $# -eq 0 ]] && set -- ${MAKEOPTS};
- local jobs=$(echo " $* " | sed -r -n -e 's:.*[[:space:]](-[a-z]*j|--jobs[=[:space:]])[[:space:]]*([0-9]+).*:\2:p' -e "s:.*[[:space:]](-[a-z]*j|--jobs)[[:space:]].*:${2:-999}:p");
- echo ${jobs:-1}
- }
- makeopts_loadavg ()
- {
- [[ $# -eq 0 ]] && set -- ${MAKEOPTS};
- local lavg=$(echo " $* " | sed -r -n -e 's:.*[[:space:]](-[a-z]*l|--(load-average|max-load)[=[:space:]])[[:space:]]*([0-9]+|[0-9]+\.[0-9]+).*:\3:p' -e "s:.*[[:space:]](-[a-z]*l|--(load-average|max-load))[[:space:]].*:${2:-999}:p");
- echo ${lavg:-${2:-999}}
- }
- multijob_child_init ()
- {
- local mode="pre";
- case $1 in
- --pre)
- mode="pre";
- shift
- ;;
- --post)
- mode="post";
- shift
- ;;
- esac;
- if [[ $# -eq 0 ]]; then
- trap 'echo ${BASHPID:-$(bashpid)} $? >&'${mj_write_fd} EXIT;
- trap 'exit 1' INT TERM;
- else
- local ret;
- [[ ${mode} == "pre" ]] && {
- multijob_pre_fork;
- ret=$?
- };
- ( multijob_child_init;
- "$@" ) & [[ ${mode} == "post" ]] && {
- multijob_post_fork;
- ret=$?
- };
- return ${ret};
- fi
- }
- multijob_finish ()
- {
- local ret=0;
- while [[ ${mj_num_jobs} -gt 0 ]]; do
- multijob_finish_one;
- : $(( ret |= $? ));
- done;
- wait;
- [[ $# -eq 0 ]] || die "${FUNCNAME} takes no arguments";
- EBUILD_DEATH_HOOKS=${EBUILD_DEATH_HOOKS/ wait / };
- return ${ret}
- }
- multijob_finish_one ()
- {
- [[ $# -eq 0 ]] || die "${FUNCNAME} takes no arguments";
- local pid ret;
- read -r -u ${mj_read_fd} pid ret || die;
- : $(( --mj_num_jobs ));
- return ${ret}
- }
- multijob_init ()
- {
- has wait ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" wait ";
- local pipe="${T}/multijob.pipe";
- mkfifo -m 600 "${pipe}";
- redirect_alloc_fd mj_write_fd "${pipe}";
- redirect_alloc_fd mj_read_fd "${pipe}";
- rm -f "${pipe}";
- mj_max_jobs=$(makeopts_jobs "$@");
- mj_num_jobs=0
- }
- multijob_post_fork ()
- {
- _multijob_fork post "$@"
- }
- multijob_pre_fork ()
- {
- _multijob_fork pre "$@"
- }
- multilib_env ()
- {
- local CTARGET=${1:-${CTARGET}};
- local cpu=${CTARGET%%*-};
- case ${cpu} in
- aarch64*)
- export CFLAGS_arm=${CFLAGS_arm-};
- case ${cpu} in
- aarch64*be)
- export CHOST_arm="armv8b-${CTARGET#*-}"
- ;;
- *)
- export CHOST_arm="armv8l-${CTARGET#*-}"
- ;;
- esac;
- CHOST_arm=${CHOST_arm/%-gnu/-gnueabi};
- export CTARGET_arm=${CHOST_arm};
- export LIBDIR_arm="lib";
- export CFLAGS_arm64=${CFLAGS_arm64-};
- export CHOST_arm64=${CTARGET};
- export CTARGET_arm64=${CHOST_arm64};
- export LIBDIR_arm64="lib64";
- : ${MULTILIB_ABIS=arm64};
- : ${DEFAULT_ABI=arm64}
- ;;
- x86_64*)
- export CFLAGS_x86=${CFLAGS_x86--m32};
- export CHOST_x86=${CTARGET/x86_64/i686};
- CHOST_x86=${CHOST_x86/%-gnux32/-gnu};
- export CTARGET_x86=${CHOST_x86};
- if [[ ${SYMLINK_LIB} == "yes" ]]; then
- export LIBDIR_x86="lib32";
- else
- export LIBDIR_x86="lib";
- fi;
- export CFLAGS_amd64=${CFLAGS_amd64--m64};
- export CHOST_amd64=${CTARGET/%-gnux32/-gnu};
- export CTARGET_amd64=${CHOST_amd64};
- export LIBDIR_amd64="lib64";
- export CFLAGS_x32=${CFLAGS_x32--mx32};
- export CHOST_x32=${CTARGET/%-gnu/-gnux32};
- export CTARGET_x32=${CHOST_x32};
- export LIBDIR_x32="libx32";
- case ${CTARGET} in
- *-gnux32)
- : ${MULTILIB_ABIS=x32 amd64 x86};
- : ${DEFAULT_ABI=x32}
- ;;
- *)
- : ${MULTILIB_ABIS=amd64 x86};
- : ${DEFAULT_ABI=amd64}
- ;;
- esac
- ;;
- mips64*)
- export CFLAGS_o32=${CFLAGS_o32--mabi=32};
- export CHOST_o32=${CTARGET/mips64/mips};
- export CTARGET_o32=${CHOST_o32};
- export LIBDIR_o32="lib";
- export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
- export CHOST_n32=${CTARGET};
- export CTARGET_n32=${CHOST_n32};
- export LIBDIR_n32="lib32";
- export CFLAGS_n64=${CFLAGS_n64--mabi=64};
- export CHOST_n64=${CTARGET};
- export CTARGET_n64=${CHOST_n64};
- export LIBDIR_n64="lib64";
- : ${MULTILIB_ABIS=n64 n32 o32};
- : ${DEFAULT_ABI=n32}
- ;;
- powerpc64*)
- export CFLAGS_ppc=${CFLAGS_ppc--m32};
- export CHOST_ppc=${CTARGET/powerpc64/powerpc};
- export CTARGET_ppc=${CHOST_ppc};
- export LIBDIR_ppc="lib";
- export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
- export CHOST_ppc64=${CTARGET};
- export CTARGET_ppc64=${CHOST_ppc64};
- export LIBDIR_ppc64="lib64";
- : ${MULTILIB_ABIS=ppc64 ppc};
- : ${DEFAULT_ABI=ppc64}
- ;;
- s390x*)
- export CFLAGS_s390=${CFLAGS_s390--m31};
- export CHOST_s390=${CTARGET/s390x/s390};
- export CTARGET_s390=${CHOST_s390};
- export LIBDIR_s390="lib";
- export CFLAGS_s390x=${CFLAGS_s390x--m64};
- export CHOST_s390x=${CTARGET};
- export CTARGET_s390x=${CHOST_s390x};
- export LIBDIR_s390x="lib64";
- : ${MULTILIB_ABIS=s390x s390};
- : ${DEFAULT_ABI=s390x}
- ;;
- sparc64*)
- export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
- export CHOST_sparc32=${CTARGET/sparc64/sparc};
- export CTARGET_sparc32=${CHOST_sparc32};
- export LIBDIR_sparc32="lib";
- export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
- export CHOST_sparc64=${CTARGET};
- export CTARGET_sparc64=${CHOST_sparc64};
- export LIBDIR_sparc64="lib64";
- : ${MULTILIB_ABIS=sparc64 sparc32};
- : ${DEFAULT_ABI=sparc64}
- ;;
- *)
- : ${MULTILIB_ABIS=default};
- : ${DEFAULT_ABI=default}
- ;;
- esac;
- export MULTILIB_ABIS DEFAULT_ABI
- }
- multilib_toolchain_setup ()
- {
- local v vv;
- export ABI=$1;
- if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v};
- unset ${vv};
- done;
- unset _DEFAULT_ABI_SAVED;
- fi;
- if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv};
- done;
- export _DEFAULT_ABI_SAVED="true";
- export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
- export CC="$(tc-getCC) $(get_abi_CFLAGS)";
- export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
- export F77="$(tc-getF77) $(get_abi_CFLAGS)";
- export FC="$(tc-getFC) $(get_abi_CFLAGS)";
- export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
- export CHOST=$(get_abi_CHOST $1);
- export CBUILD=$(get_abi_CHOST $1);
- export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;
- export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;
- fi
- }
- newicon ()
- {
- _iconins ${FUNCNAME} "$@"
- }
- newmenu ()
- {
- ( insinto /usr/share/applications;
- newins "$@" )
- }
- no-as-needed ()
- {
- case $($(tc-getLD) -v 2>&1 </dev/null) in
- *GNU*)
- echo "-Wl,--no-as-needed"
- ;;
- esac
- }
- number_abis ()
- {
- set -- `get_install_abis`;
- echo $#
- }
- optfeature ()
- {
- debug-print-function ${FUNCNAME} "$@";
- local i j msg;
- local desc=$1;
- local flag=0;
- shift;
- for i in "$@";
- do
- for j in ${i};
- do
- if has_version "${j}"; then
- flag=1;
- else
- flag=0;
- break;
- fi;
- done;
- if [[ ${flag} -eq 1 ]]; then
- break;
- fi;
- done;
- if [[ ${flag} -eq 0 ]]; then
- for i in "$@";
- do
- msg=" ";
- for j in ${i};
- do
- msg+=" ${j} and";
- done;
- msg="${msg:0: -4} for ${desc}";
- elog "${msg}";
- done;
- fi
- }
- 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
- }
- pax-mark ()
- {
- local f;
- local flags;
- local ret=0;
- flags="${1//[!zPpEeMmRrSs]}";
- [[ -n "${flags}" ]] || return 0;
- shift;
- local dodefault="";
- [[ -n "${flags//[!z]}" ]] && dodefault="yes";
- if has PT ${PAX_MARKINGS}; then
- for f in "$@";
- do
- if type -p paxctl > /dev/null; then
- einfo "PT_PAX marking -${flags} ${f} with paxctl";
- paxctl -q${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p paxctl-ng > /dev/null && paxctl-ng -L; then
- einfo "PT_PAX marking -${flags} ${f} with paxctl-ng";
- flags="${flags//z}";
- [[ ${dodefault} == "yes" ]] && paxctl-ng -L -z "${f}" > /dev/null 2>&1;
- [[ -n "${flags}" ]] || continue;
- paxctl-ng -L -${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p scanelf > /dev/null && [[ ${PAX_MARKINGS} != "none" ]]; then
- einfo "PT_PAX marking -${flags} ${f} with scanelf";
- scanelf -Xxz ${flags} "$f" > /dev/null 2>&1;
- else
- if [[ ${PAX_MARKINGS} != "none" ]]; then
- elog "Failed to set PT_PAX markings -${flags} ${f}.";
- ret=1;
- fi;
- fi;
- done;
- fi;
- if has XT ${PAX_MARKINGS}; then
- flags="${flags//z}";
- for f in "$@";
- do
- if type -p paxctl-ng > /dev/null && paxctl-ng -l; then
- einfo "XATTR_PAX marking -${flags} ${f} with paxctl-ng";
- [[ ${dodefault} == "yes" ]] && paxctl-ng -d "${f}" > /dev/null 2>&1;
- [[ -n "${flags}" ]] || continue;
- paxctl-ng -l -${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p setfattr > /dev/null; then
- [[ -n "${flags//[!Ee]}" ]] || flags+="e";
- einfo "XATTR_PAX marking -${flags} ${f} with setfattr";
- [[ ${dodefault} == "yes" ]] && setfattr -x "user.pax.flags" "${f}" > /dev/null 2>&1;
- setfattr -n "user.pax.flags" -v "${flags}" "${f}" > /dev/null 2>&1 && continue;
- fi;
- if [[ ${PAX_MARKINGS} != "none" ]]; then
- elog "Failed to set XATTR_PAX markings -${flags} ${f}.";
- ret=1;
- fi;
- done;
- fi;
- return ${ret}
- }
- pkg_nofetch ()
- {
- default
- }
- pkg_postinst ()
- {
- gnome2_icon_cache_update;
- xdg_desktop_database_update;
- readme.gentoo_print_elog
- }
- pkg_postrm ()
- {
- gnome2_icon_cache_update;
- xdg_desktop_database_update
- }
- pkg_preinst ()
- {
- gnome2_icon_savelist
- }
- pkg_pretend ()
- {
- pre_build_checks
- }
- pkg_setup ()
- {
- pre_build_checks;
- python-any-r1_pkg_setup;
- chromium_suid_sandbox_check_kernel_config
- }
- pre_build_checks ()
- {
- if [[ ${MERGE_TYPE} != binary ]]; then
- if tc-is-gcc && ! version_is_at_least 5 "$(gcc-major-version)"; then
- die "At least gcc 5 is required";
- fi;
- fi;
- CHECKREQS_MEMORY="3G";
- CHECKREQS_DISK_BUILD="5G";
- eshopts_push -s extglob;
- if is-flagq '-g?(gdb)?([1-9])'; then
- CHECKREQS_DISK_BUILD="25G";
- fi;
- eshopts_pop;
- check-reqs_pkg_setup
- }
- preserve_old_lib ()
- {
- _eutils_eprefix_init;
- 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 ${EROOT}/${lib} ]] || continue;
- dir=${lib%/*};
- dodir ${dir} || die "dodir ${dir} failed";
- cp "${EROOT}"/${lib} "${ED}"/${lib} || die "cp ${lib} failed";
- touch "${ED}"/${lib};
- done
- }
- preserve_old_lib_notify ()
- {
- if [[ ${EBUILD_PHASE} != "postinst" ]]; then
- eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
- die "Invalid preserve_old_lib_notify() usage";
- fi;
- has preserve-libs ${FEATURES} && return 0;
- _eutils_eprefix_init;
- local lib notice=0;
- for lib in "$@";
- do
- [[ -e ${EROOT}/${lib} ]] || continue;
- if [[ ${notice} -eq 0 ]]; then
- notice=1;
- ewarn "Old versions of installed libraries were detected on your system.";
- ewarn "In order to avoid breaking packages that depend on these old libs,";
- ewarn "the libraries are not being removed. You need to run revdep-rebuild";
- ewarn "in order to remove these old dependencies. If you do not have this";
- ewarn "helper program, simply emerge the 'gentoolkit' package.";
- ewarn;
- fi;
- ewarn " # revdep-rebuild --library '${lib}' && rm '${lib}'";
- done
- }
- prune_libtool_files ()
- {
- debug-print-function ${FUNCNAME} "$@";
- local removing_all removing_modules opt;
- _eutils_eprefix_init;
- for opt in "$@";
- do
- case "${opt}" in
- --all)
- removing_all=1;
- removing_modules=1
- ;;
- --modules)
- removing_modules=1
- ;;
- *)
- die "Invalid argument to ${FUNCNAME}(): ${opt}"
- ;;
- esac;
- done;
- local f;
- local queue=();
- while IFS= read -r -d '' f; do
- local archivefile=${f/%.la/.a};
- if ! sed -n -e '/^# Generated by .*libtool/q0;4q1' "${f}"; then
- continue;
- fi;
- [[ ${f} != ${archivefile} ]] || die 'regex sanity check failed';
- local reason= pkgconfig_scanned=;
- local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}");
- if [[ ${snotlink} == yes ]]; then
- if [[ -f ${archivefile} ]]; then
- einfo "Removing unnecessary ${archivefile#${D%/}} (static plugin)";
- queue+=("${archivefile}");
- fi;
- if [[ -n ${removing_modules} ]]; then
- reason='module';
- fi;
- else
- if [[ -n ${removing_all} ]]; then
- reason='requested';
- else
- if [[ ! -f ${archivefile} ]]; then
- reason='no static archive';
- else
- if [[ ! -n $(sed -nre "s/^(dependency_libs|inherited_linker_flags)='(.*)'$/\2/p" "${f}") ]]; then
- reason='no libs & flags';
- else
- if [[ ! -n ${pkgconfig_scanned} ]]; then
- local pc_libs=();
- if [[ ! -n ${removing_all} ]]; then
- local pc;
- local tf=${T}/prune-lt-files.pc;
- local pkgconf=$(tc-getPKG_CONFIG);
- while IFS= read -r -d '' pc; do
- local arg libs;
- if ${pkgconf} --exists "${pc}" &> /dev/null; then
- sed -e '/^Requires:/d' "${pc}" > "${tf}";
- libs=$(${pkgconf} --libs "${tf}");
- else
- libs=$(sed -ne 's/^Libs://p' "${pc}");
- fi;
- for arg in ${libs};
- do
- if [[ ${arg} == -l* ]]; then
- if [[ ${arg} == '*$*' ]]; then
- eqawarn "${FUNCNAME}: variable substitution likely failed in ${pc}";
- eqawarn "(arg: ${arg})";
- eqawarn "Most likely, you need to add virtual/pkgconfig to DEPEND.";
- fi;
- pc_libs+=(lib${arg#-l}.la);
- fi;
- done;
- done < <(find "${D}" -type f -name '*.pc' -print0);
- rm -f "${tf}";
- fi;
- pkgconfig_scanned=1;
- fi;
- has "${f##*/}" "${pc_libs[@]}" && reason='covered by .pc';
- fi;
- fi;
- fi;
- fi;
- if [[ -n ${reason} ]]; then
- einfo "Removing unnecessary ${f#${D%/}} (${reason})";
- queue+=("${f}");
- fi;
- done < <(find "${ED}" -xtype f -name '*.la' -print0);
- if [[ -n ${queue[@]} ]]; then
- rm -f "${queue[@]}";
- fi
- }
- python-any-r1_pkg_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${MERGE_TYPE} != binary ]] && python_setup
- }
- python_abi_depend ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_byte-compile_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_check_deps ()
- {
- has_version --host-root "dev-python/beautifulsoup:python-2[${PYTHON_USEDEP}]" && has_version --host-root ">=dev-python/beautifulsoup-4.3.2:4[${PYTHON_USEDEP}]" && has_version --host-root "dev-python/html5lib[${PYTHON_USEDEP}]" && has_version --host-root "dev-python/jinja[${PYTHON_USEDEP}]" && has_version --host-root "dev-python/ply[${PYTHON_USEDEP}]" && has_version --host-root "dev-python/simplejson[${PYTHON_USEDEP}]"
- }
- python_clean_byte-compiled_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_installation_image ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_py-compile_files ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_convert_shebangs ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs"
- }
- python_disable_pyc ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_doexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local f;
- for f in "$@";
- do
- python_newexe "${f}" "${f##*/}";
- done
- }
- python_doheader ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d PYTHON_INCLUDEDIR=${PYTHON_INCLUDEDIR};
- [[ -n ${PYTHON_INCLUDEDIR} ]] || python_export PYTHON_INCLUDEDIR;
- d=${PYTHON_INCLUDEDIR#${EPREFIX}};
- ( insinto "${d}";
- doins -r "${@}" || return ${?} )
- }
- python_domodule ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d;
- if [[ ${python_moduleroot} == /* ]]; then
- d=${python_moduleroot};
- else
- local PYTHON_SITEDIR=${PYTHON_SITEDIR};
- [[ -n ${PYTHON_SITEDIR} ]] || python_export PYTHON_SITEDIR;
- d=${PYTHON_SITEDIR#${EPREFIX}}/${python_moduleroot};
- fi;
- ( insinto "${d}";
- doins -r "${@}" || return ${?} );
- python_optimize "${ED}/${d}"
- }
- python_doscript ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local _PYTHON_REWRITE_SHEBANG=1;
- python_doexe "${@}"
- }
- python_enable_pyc ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_function ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_execute_function"
- }
- python_execute_nosetests ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_py.test ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_trial ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_export ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl var;
- case "${1}" in
- python* | jython*)
- impl=${1/_/.};
- shift
- ;;
- pypy | pypy3)
- impl=${1};
- shift
- ;;
- *)
- impl=${EPYTHON};
- if [[ -z ${impl} ]]; then
- die "python_export called without a python implementation and EPYTHON is unset";
- fi
- ;;
- esac;
- debug-print "${FUNCNAME}: implementation: ${impl}";
- for var in "$@";
- do
- case "${var}" in
- EPYTHON)
- export EPYTHON=${impl};
- debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"
- ;;
- PYTHON)
- export PYTHON=${EPREFIX}/usr/bin/${impl};
- debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"
- ;;
- PYTHON_SITEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die;
- export PYTHON_SITEDIR;
- debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
- ;;
- PYTHON_INCLUDEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die;
- export PYTHON_INCLUDEDIR;
- debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}";
- if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then
- die "${impl} does not install any header files!";
- fi
- ;;
- PYTHON_LIBPATH)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die;
- export PYTHON_LIBPATH;
- debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}";
- if [[ ! -n ${PYTHON_LIBPATH} ]]; then
- die "${impl} lacks a (usable) dynamic library";
- fi
- ;;
- PYTHON_CFLAGS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CFLAGS=${val};
- debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}"
- ;;
- PYTHON_LIBS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_LIBS=${val};
- debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}"
- ;;
- PYTHON_CONFIG)
- local flags val;
- case "${impl}" in
- python*)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die;
- val=${PYTHON}${flags}-config
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CONFIG=${val};
- debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}"
- ;;
- PYTHON_PKG_DEP)
- local d;
- case ${impl} in
- python2.7)
- PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7'
- ;;
- python3.3)
- PYTHON_PKG_DEP='>=dev-lang/python-3.3.2-r2:3.3'
- ;;
- python*)
- PYTHON_PKG_DEP="dev-lang/python:${impl#python}"
- ;;
- pypy)
- PYTHON_PKG_DEP='virtual/pypy:0='
- ;;
- pypy3)
- PYTHON_PKG_DEP='virtual/pypy3:0='
- ;;
- jython2.7)
- PYTHON_PKG_DEP='dev-java/jython:2.7'
- ;;
- *)
- die "Invalid implementation: ${impl}"
- ;;
- esac;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}];
- fi;
- export PYTHON_PKG_DEP;
- debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}"
- ;;
- PYTHON_SCRIPTDIR)
- local dir;
- export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl};
- debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}"
- ;;
- *)
- die "python_export: unknown variable ${var}"
- ;;
- esac;
- done
- }
- python_export_utf8_locale ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- type locale > /dev/null || return 0;
- if [[ $(locale charmap) != UTF-8 ]]; then
- local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)";
- for lang in ${locales};
- do
- if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then
- if _python_check_locale_sanity "${lang}"; then
- export LC_CTYPE=${lang};
- if [[ -n ${LC_ALL} ]]; then
- export LC_NUMERIC=${LC_ALL};
- export LC_TIME=${LC_ALL};
- export LC_COLLATE=${LC_ALL};
- export LC_MONETARY=${LC_ALL};
- export LC_MESSAGES=${LC_ALL};
- export LC_PAPER=${LC_ALL};
- export LC_NAME=${LC_ALL};
- export LC_ADDRESS=${LC_ALL};
- export LC_TELEPHONE=${LC_ALL};
- export LC_MEASUREMENT=${LC_ALL};
- export LC_IDENTIFICATION=${LC_ALL};
- export LC_ALL=;
- fi;
- return 0;
- fi;
- fi;
- done;
- ewarn "Could not find a UTF-8 locale. This may trigger build failures in";
- ewarn "some python packages. Please ensure that a UTF-8 locale is listed in";
- ewarn "/etc/locale.gen and run locale-gen.";
- return 1;
- fi;
- return 0
- }
- python_fix_shebang ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)";
- local force quiet;
- while [[ -n ${@} ]]; do
- case "${1}" in
- -f | --force)
- force=1;
- shift
- ;;
- -q | --quiet)
- quiet=1;
- shift
- ;;
- --)
- shift;
- break
- ;;
- *)
- break
- ;;
- esac;
- done;
- [[ -n ${1} ]] || die "${FUNCNAME}: no paths given";
- local path f;
- for path in "$@";
- do
- local any_correct any_fixed is_recursive;
- [[ -d ${path} ]] && is_recursive=1;
- while IFS= read -r -d '' f; do
- local shebang i;
- local error= from=;
- IFS= read -r shebang < "${f}";
- if [[ ${shebang} == '#!'* ]]; then
- local split_shebang=();
- read -r -a split_shebang <<< ${shebang} || die;
- for i in "${split_shebang[@]}";
- do
- case "${i}" in
- *"${EPYTHON}")
- debug-print "${FUNCNAME}: in file ${f#${D}}";
- debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}";
- any_correct=1;
- from=${EPYTHON};
- break
- ;;
- *python | *python[23])
- debug-print "${FUNCNAME}: in file ${f#${D}}";
- debug-print "${FUNCNAME}: rewriting shebang: ${shebang}";
- if [[ ${i} == *python2 ]]; then
- from=python2;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" && error=1;
- fi;
- else
- if [[ ${i} == *python3 ]]; then
- from=python3;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" || error=1;
- fi;
- else
- from=python;
- fi;
- fi;
- break
- ;;
- *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789])
- if [[ ! -n ${force} ]]; then
- error=1;
- else
- case "${i}" in
- *python[23].[0123456789])
- from="python[23].[0123456789]"
- ;;
- *pypy)
- from="pypy"
- ;;
- *pypy3)
- from="pypy3"
- ;;
- *jython[23].[0123456789])
- from="jython[23].[0123456789]"
- ;;
- *)
- die "${FUNCNAME}: internal error in 2nd pattern match"
- ;;
- esac;
- fi;
- break
- ;;
- esac;
- done;
- fi;
- if [[ ! -n ${error} && ! -n ${from} ]]; then
- [[ -n ${is_recursive} ]] && continue;
- error=1;
- fi;
- if [[ ! -n ${quiet} ]]; then
- einfo "Fixing shebang in ${f#${D}}.";
- fi;
- if [[ ! -n ${error} ]]; then
- if [[ ${shebang} == *${from}" "* ]]; then
- sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die;
- else
- sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die;
- fi;
- any_fixed=1;
- else
- eerror "The file has incompatible shebang:";
- eerror " file: ${f#${D}}";
- eerror " current shebang: ${shebang}";
- eerror " requested impl: ${EPYTHON}";
- die "${FUNCNAME}: conversion of incompatible shebang requested";
- fi;
- done < <(find -H "${path}" -type f -print0 || die);
- if [[ ! -n ${any_fixed} ]]; then
- local cmd=eerror;
- [[ ${EAPI:-0} == [012345] ]] && cmd=eqawarn;
- "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D}} did not match any fixable files.";
- if [[ -n ${any_correct} ]]; then
- "${cmd}" "All files have ${EPYTHON} shebang already.";
- else
- "${cmd}" "There are no Python files in specified directory.";
- fi;
- [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})";
- fi;
- done
- }
- python_gen_any_dep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local depstr=${1};
- [[ -n ${depstr} ]] || die "No dependency string provided";
- local PYTHON_PKG_DEP out=;
- for i in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- local PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)";
- python_export "${i}" PYTHON_PKG_DEP;
- local i_depstr=${depstr//\$\{PYTHON_USEDEP\}/${PYTHON_USEDEP}};
- out="( ${PYTHON_PKG_DEP%=} ${i_depstr} ) ${out}";
- done;
- echo "|| ( ${out})"
- }
- python_generate_cffi_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_generate_wrapper_scripts ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_CFLAGS ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_CFLAGS;
- echo "${PYTHON_CFLAGS}"
- }
- python_get_LIBS ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_LIBS;
- echo "${PYTHON_LIBS}"
- }
- python_get_PYTHON_CONFIG ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_CONFIG;
- echo "${PYTHON_CONFIG}"
- }
- python_get_extension_module_suffix ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementation ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementation_and_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementational_package ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_includedir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_INCLUDEDIR;
- echo "${PYTHON_INCLUDEDIR}"
- }
- python_get_libdir ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_library ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_library_path ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_LIBPATH;
- echo "${PYTHON_LIBPATH}"
- }
- python_get_scriptdir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_SCRIPTDIR;
- echo "${PYTHON_SCRIPTDIR}"
- }
- python_get_sitedir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_SITEDIR;
- echo "${PYTHON_SITEDIR}"
- }
- python_get_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_install_executables ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_is_installed ()
- {
- local impl=${1:-${EPYTHON}};
- [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON";
- local -x ROOT=/;
- case "${impl}" in
- pypy | pypy3)
- local append=;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- append=[${PYTHON_REQ_USE}];
- fi;
- has_version "dev-python/${impl}${append}" || has_version "dev-python/${impl}-bin${append}"
- ;;
- *)
- local PYTHON_PKG_DEP;
- python_export "${impl}" PYTHON_PKG_DEP;
- has_version "${PYTHON_PKG_DEP}"
- ;;
- esac
- }
- python_is_python3 ()
- {
- local impl=${1:-${EPYTHON}};
- [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON";
- [[ ${impl} == python3* || ${impl} == pypy3 ]]
- }
- python_merge_intermediate_installation_images ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_mod_cleanup ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_mod_optimize ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_moduleinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_moduleroot=${1}
- }
- python_need_rebuild ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_newexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>";
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local wrapd=${python_scriptroot:-/usr/bin};
- local f=${1};
- local newfn=${2};
- local PYTHON_SCRIPTDIR d;
- python_export PYTHON_SCRIPTDIR;
- d=${PYTHON_SCRIPTDIR#${EPREFIX}};
- ( dodir "${wrapd}";
- exeinto "${d}";
- newexe "${f}" "${newfn}" || return ${?} );
- _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 "${ED%/}/${wrapd}/${newfn}" || die;
- if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then
- python_fix_shebang -q "${ED%/}/${d}/${newfn}";
- fi
- }
- python_newscript ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local _PYTHON_REWRITE_SHEBANG=1;
- python_newexe "${@}"
- }
- python_optimize ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ ${EBUILD_PHASE} == pre* || ${EBUILD_PHASE} == post* ]]; then
- eerror "The new Python eclasses expect the compiled Python files to";
- eerror "be controlled by the Package Manager. For this reason,";
- eerror "the python_optimize function can be used only during src_* phases";
- eerror "(src_install most commonly) and not during pkg_* phases.";
- echo;
- die "python_optimize is not to be used in pre/post* phases";
- fi;
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- local PYTHON=${PYTHON};
- [[ -n ${PYTHON} ]] || python_export PYTHON;
- if [[ ${#} -eq 0 ]]; then
- local f;
- while IFS= read -r -d '' f; do
- if [[ ${f} == /* && -d ${D}${f} ]]; then
- set -- "${D}${f}" "${@}";
- fi;
- done < <("${PYTHON}" -c 'import sys; print("\0".join(sys.path))' || die);
- debug-print "${FUNCNAME}: using sys.path: ${*/%/;}";
- fi;
- local d;
- for d in "$@";
- do
- local instpath=${d#${D}};
- instpath=/${instpath##/};
- case "${EPYTHON}" in
- python2.7 | python3.[34])
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- python*)
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- *)
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- esac;
- done
- }
- python_pkg_setup ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
- }
- python_scriptinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_scriptroot=${1}
- }
- python_set_active_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
- }
- python_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then
- local impls=(${PYTHON_COMPAT_OVERRIDE});
- [[ ${#impls[@]} -eq 1 ]] || die "PYTHON_COMPAT_OVERRIDE must name exactly one implementation for python-any-r1";
- ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python";
- ewarn "implementation will be used:";
- ewarn;
- ewarn " ${PYTHON_COMPAT_OVERRIDE}";
- ewarn;
- ewarn "Dependencies won't be satisfied, and EPYTHON/eselect-python will be ignored.";
- python_export "${impls[0]}" EPYTHON PYTHON;
- python_wrapper_setup;
- return;
- fi;
- if [[ -n ${EPYTHON} ]]; then
- if _python_EPYTHON_supported "${EPYTHON}"; then
- python_export EPYTHON PYTHON;
- python_wrapper_setup;
- return;
- fi;
- fi;
- local variant i;
- for variant in '' '--python2' '--python3';
- do
- i=$(eselect python --show ${variant} 2>/dev/null);
- if [[ ! -n ${i} ]]; then
- break;
- else
- if _python_EPYTHON_supported "${i}"; then
- python_export "${i}" EPYTHON PYTHON;
- python_wrapper_setup;
- return;
- fi;
- fi;
- done;
- for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- ))
- do
- python_export "${_PYTHON_SUPPORTED_IMPLS[i]}" EPYTHON PYTHON;
- if _python_EPYTHON_supported "${EPYTHON}"; then
- python_wrapper_setup;
- return;
- fi;
- done;
- eerror "No Python implementation found for the build. This is usually";
- eerror "a bug in the ebuild. Please report it to bugs.gentoo.org";
- eerror "along with the build log.";
- echo;
- die "No supported Python implementation installed."
- }
- python_wrapper_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local workdir=${1:-${T}/${EPYTHON}};
- local impl=${2:-${EPYTHON}};
- [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified.";
- [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified.";
- if [[ ! -x ${workdir}/bin/python ]]; then
- _python_check_dead_variables;
- mkdir -p "${workdir}"/{bin,pkgconfig} || die;
- rm -f "${workdir}"/bin/python{,2,3}{,-config} || die;
- rm -f "${workdir}"/bin/2to3 || die;
- rm -f "${workdir}"/pkgconfig/python{,2,3}.pc || die;
- local EPYTHON PYTHON PYTHON_CONFIG;
- python_export "${impl}" EPYTHON PYTHON;
- local pyver pyother;
- if python_is_python3; then
- pyver=3;
- pyother=2;
- else
- pyver=2;
- pyother=3;
- fi;
- cat > "${workdir}/bin/python" <<-_EOF_ ||
- #!/bin/sh
- exec "${PYTHON}" "\${@}"
- _EOF_
- die
- cp "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
- chmod +x "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
- local nonsupp=("python${pyother}" "python${pyother}-config");
- if [[ ${EPYTHON} == python* ]]; then
- python_export "${impl}" PYTHON_CONFIG;
- cat > "${workdir}/bin/python-config" <<-_EOF_ ||
- #!/bin/sh
- exec "${PYTHON_CONFIG}" "\${@}"
- _EOF_
- die
- cp "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
- chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
- ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die;
- ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python.pc || die;
- ln -s python.pc "${workdir}"/pkgconfig/python${pyver}.pc || die;
- else
- nonsupp+=(2to3 python-config "python${pyver}-config");
- fi;
- local x;
- for x in "${nonsupp[@]}";
- do
- cat > "${workdir}"/bin/${x} <<-_EOF_ ||
- #!/bin/sh
- echo "${x} is not supported by ${EPYTHON}" >&2
- exit 127
- _EOF_
- die
- chmod +x "${workdir}"/bin/${x} || die;
- done;
- if [[ ${PATH##:*} != ${workdir}/bin ]]; then
- PATH=${workdir}/bin${PATH:+:${PATH}};
- fi;
- if [[ ${PKG_CONFIG_PATH##:*} != ${workdir}/pkgconfig ]]; then
- PKG_CONFIG_PATH=${workdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}};
- fi;
- export PATH PKG_CONFIG_PATH;
- fi
- }
- 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
- case ${x} in
- -Wl,*)
- x=${x#-Wl,};
- set -- "$@" ${x//,/ }
- ;;
- *)
- ;;
- esac;
- done;
- echo "$@"
- }
- readme.gentoo_create_doc ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ -n "${DOC_CONTENTS}" ]]; then
- if [[ -n "${DISABLE_AUTOFORMATTING}" ]]; then
- echo "${DOC_CONTENTS}" > "${T}"/README.gentoo || die;
- else
- local saved_flags=$-;
- set -f;
- echo -e ${DOC_CONTENTS} | fold -s -w 70 | sed 's/[[:space:]]*$//' > "${T}"/README.gentoo;
- assert;
- set +f -${saved_flags};
- fi;
- else
- if [[ -f "${FILESDIR}/README.gentoo-${SLOT%/*}" ]]; then
- cp "${FILESDIR}/README.gentoo-${SLOT%/*}" "${T}"/README.gentoo || die;
- else
- if [[ -f "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" ]]; then
- cp "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" "${T}"/README.gentoo || die;
- else
- die "You are not specifying README.gentoo contents!";
- fi;
- fi;
- fi;
- dodoc "${T}"/README.gentoo;
- README_GENTOO_DOC_VALUE=$(< "${T}/README.gentoo")
- }
- readme.gentoo_print_elog ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ -z "${README_GENTOO_DOC_VALUE}" ]]; then
- die "readme.gentoo_print_elog invoked without matching readme.gentoo_create_doc call!";
- else
- if ! [[ -n "${REPLACING_VERSIONS}" ]] || [[ -n "${FORCE_PRINT_ELOG}" ]]; then
- echo -e "${README_GENTOO_DOC_VALUE}" | while read -r ELINE; do
- elog "${ELINE}";
- done;
- elog "";
- elog "(Note: Above message is only printed the first time package is";
- elog "installed. Please look at ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*";
- elog "for future reference)";
- fi;
- fi
- }
- redirect_alloc_fd ()
- {
- local var=$1 file=$2 redir=${3:-"<>"};
- if [[ ! -L /dev/fd && ${CBUILD} == *linux* ]]; then
- eerror "You're missing a /dev/fd symlink to /proc/self/fd.";
- eerror "Please fix the symlink and check your boot scripts (udev/etc...).";
- die "/dev/fd is broken";
- fi;
- if [[ $(( (BASH_VERSINFO[0] << 8) + BASH_VERSINFO[1] )) -ge $(( (4 << 8) + 1 )) ]]; then
- eval "exec {${var}}${redir}'${file}'";
- else
- local fd=10;
- while :; do
- if [[ ! -e /dev/fd/${fd} ]] && [[ ! -L /dev/fd/${fd} ]]; then
- eval "exec ${fd}${redir}'${file}'" && break;
- fi;
- [[ ${fd} -gt 1024 ]] && die 'could not locate a free temp fd !?';
- : $(( ++fd ));
- done;
- : $(( ${var} = fd ));
- 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 ]] && die "Usage: replace-flags <old flag> <new flag>";
- local f var new;
- for var in $(all-flag-vars);
- do
- new=();
- for f in ${!var};
- do
- [[ ${f} == ${1} ]] && f=${2};
- new+=("${f}");
- done;
- eval export ${var}=\""${new[*]}"\";
- done;
- return 0
- }
- replace-sparc64-flags ()
- {
- local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
- if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
- for x in ${SPARC64_CPUS};
- do
- CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
- done;
- else
- for x in ${SPARC64_CPUS};
- do
- CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
- done;
- fi;
- if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
- for x in ${SPARC64_CPUS};
- do
- CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
- done;
- else
- for x in ${SPARC64_CPUS};
- do
- CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
- done;
- fi;
- export CFLAGS CXXFLAGS
- }
- replace_all_version_separators ()
- {
- local c=($(get_all_version_components "${2:-${PV}}"));
- c=${c[@]//[-._]/$1};
- echo ${c// }
- }
- replace_version_separator ()
- {
- eshopts_push -s extglob;
- local w c v="${3:-${PV}}";
- declare -i i found=0;
- w=${1:-1};
- c=($(get_all_version_components ${v}));
- if [[ ${w} != *[[:digit:]]* ]]; then
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ ${c[i]} == ${w} ]]; then
- c[i]=${2};
- break;
- fi;
- done;
- else
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ -n "${c[i]//[^-._]}" ]]; then
- found+=1;
- if ((found == w)); then
- c[i]=${2};
- break;
- fi;
- fi;
- done;
- fi;
- c=${c[*]};
- echo ${c// };
- eshopts_pop
- }
- 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
- }
- seq ()
- {
- local p=$(type -P seq);
- if [[ -n ${p} ]]; then
- "${p}" "$@" || die;
- return $?;
- fi;
- local min max step;
- 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 || die;
- 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)
- }
- setup-allowed-flags ()
- {
- ALLOWED_FLAGS=(-pipe -O '-O[12sg]' -mcpu -march -mtune '-fstack-protector*' '-fsanitize*' -fbounds-check -fbounds-checking -fno-strict-overflow -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+ -fno-ident -fpermissive -frecord-gcc-switches '-fdiagnostics*' '-fplugin*' '-W*' -w '-[DUILR]*' '-Wl,*');
- ALLOWED_FLAGS+=('-fno-stack-protector*' '-fabi-version=*' -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer '-fno-builtin*');
- ALLOWED_FLAGS+=(-mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi -mfix-r10000 -mno-fix-r10000 -mthumb -marm -mno-fma4 -mno-movbe -mno-xop -mno-lwp -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt -mno-fxsr -mno-hle -mno-rtm -mno-xsave -mno-xsaveopt -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha)
- }
- src_compile ()
- {
- local ninja_targets="chrome chromedriver";
- if use suid; then
- ninja_targets+=" chrome_sandbox";
- fi;
- eninja -C out/Release mksnapshot || die;
- pax-mark m out/Release/mksnapshot;
- eninja -C out/Release ${ninja_targets} || die;
- pax-mark m out/Release/chrome
- }
- src_configure ()
- {
- local myconf_gn="";
- myconf_gn+=" is_debug=false";
- myconf_gn+=" enable_nacl=false";
- local gn_system_libraries="
- flac
- harfbuzz-ng
- icu
- libjpeg
- libpng
- libvpx
- libwebp
- libxml
- libxslt
- re2
- snappy
- yasm
- zlib";
- if use system-ffmpeg; then
- gn_system_libraries+=" ffmpeg";
- fi;
- build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries} || die;
- myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)";
- myconf_gn+=" enable_widevine=$(usex widevine true false)";
- myconf_gn+=" use_cups=$(usex cups true false)";
- myconf_gn+=" use_gconf=$(usex gnome true false)";
- myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)";
- myconf_gn+=" use_gtk3=$(usex gtk3 true false)";
- myconf_gn+=" use_kerberos=$(usex kerberos true false)";
- myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)";
- myconf_gn+=" fieldtrial_testing_like_official_build=true";
- if tc-is-clang; then
- myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false";
- else
- myconf_gn+=" is_clang=false";
- fi;
- myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false";
- ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)";
- myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)";
- myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"";
- local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc";
- local google_default_client_id="329227923882.apps.googleusercontent.com";
- local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu";
- myconf_gn+=" google_api_key=\"${google_api_key}\"";
- myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"";
- myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"";
- local myarch="$(tc-arch)";
- if [[ $myarch = amd64 ]]; then
- target_arch=x64;
- ffmpeg_target_arch=x64;
- else
- if [[ $myarch = x86 ]]; then
- target_arch=ia32;
- ffmpeg_target_arch=ia32;
- else
- if [[ $myarch = arm64 ]]; then
- target_arch=arm64;
- ffmpeg_target_arch=arm64;
- else
- if [[ $myarch = arm ]]; then
- target_arch=arm;
- ffmpeg_target_arch=$(usex neon arm-neon arm);
- else
- die "Failed to determine target arch, got '$myarch'.";
- fi;
- fi;
- fi;
- fi;
- myconf_gn+=" treat_warnings_as_errors=false";
- myconf_gn+=" fatal_linker_warnings=false";
- if ! use custom-cflags; then
- replace-flags "-Os" "-O2";
- strip-flags;
- if use x86; then
- filter-flags "-g*";
- fi;
- if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then
- filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2;
- fi;
- fi;
- tc-export AR CC CXX NM;
- append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks);
- myconf_gn+=" custom_toolchain=\"${FILESDIR}/toolchain:default\"";
- if tc-is-cross-compiler; then
- export AR_host=$(tc-getBUILD_AR);
- export CC_host=$(tc-getBUILD_CC);
- export CXX_host=$(tc-getBUILD_CXX);
- export NM_host=$(tc-getBUILD_NM);
- fi;
- export TMPDIR="${WORKDIR}/temp";
- mkdir -p -m 755 "${TMPDIR}" || die;
- if ! use system-ffmpeg; then
- local build_ffmpeg_args="";
- if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then
- build_ffmpeg_args+=" --disable-asm";
- fi;
- einfo "Configuring bundled ffmpeg...";
- pushd third_party/ffmpeg > /dev/null || die;
- chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die;
- chromium/scripts/copy_config.sh || die;
- chromium/scripts/generate_gn.py || die;
- popd > /dev/null || die;
- fi;
- third_party/libaddressinput/chromium/tools/update-strings.py || die;
- touch chrome/test/data/webui/i18n_process_css_test.html || die;
- einfo "Configuring Chromium...";
- tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "${myconf_gn} use_allocator=\"none\"" || die;
- myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")";
- out/Release/gn gen --args="${myconf_gn}" out/Release || die
- }
- src_install ()
- {
- local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser${CHROMIUM_SUFFIX}";
- exeinto "${CHROMIUM_HOME}";
- doexe out/Release/chrome || die;
- if use suid; then
- newexe out/Release/chrome_sandbox chrome-sandbox || die;
- fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox";
- fi;
- doexe out/Release/chromedriver || die;
- use widevine && doexe out/Release/libwidevinecdmadapter.so;
- local sedargs=(-e "s:/usr/lib/:/usr/$(get_libdir)/:g");
- if [[ -n ${CHROMIUM_SUFFIX} ]]; then
- sedargs+=(-e "s:chromium-browser:chromium-browser${CHROMIUM_SUFFIX}:g" -e "s:chromium.desktop:chromium${CHROMIUM_SUFFIX}.desktop:g" -e "s:plugins:plugins --user-data-dir=\${HOME}/.config/chromium${CHROMIUM_SUFFIX}:");
- fi;
- sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die;
- doexe chromium-launcher.sh;
- dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser${CHROMIUM_SUFFIX} || die;
- dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium${CHROMIUM_SUFFIX} || die;
- dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver${CHROMIUM_SUFFIX} || die;
- dodir /etc/chromium || die;
- insinto /etc/chromium;
- newins "${FILESDIR}/chromium.default" "default" || die;
- pushd out/Release/locales > /dev/null || die;
- chromium_remove_language_paks;
- popd;
- insinto "${CHROMIUM_HOME}";
- doins out/Release/*.bin || die;
- doins out/Release/*.pak || die;
- doins -r out/Release/locales || die;
- doins -r out/Release/resources || die;
- newman out/Release/chrome.1 chromium${CHROMIUM_SUFFIX}.1 || die;
- newman out/Release/chrome.1 chromium-browser${CHROMIUM_SUFFIX}.1 || die;
- local branding size;
- for size in 16 22 24 32 48 64 128 256;
- do
- case ${size} in
- 16 | 32)
- branding="chrome/app/theme/default_100_percent/chromium"
- ;;
- *)
- branding="chrome/app/theme/chromium"
- ;;
- esac;
- newicon -s ${size} "${branding}/product_logo_${size}.png" chromium-browser${CHROMIUM_SUFFIX}.png;
- done;
- local mime_types="text/html;text/xml;application/xhtml+xml;";
- mime_types+="x-scheme-handler/http;x-scheme-handler/https;";
- mime_types+="x-scheme-handler/ftp;";
- mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;";
- make_desktop_entry chromium-browser${CHROMIUM_SUFFIX} "Chromium${CHROMIUM_SUFFIX}" chromium-browser${CHROMIUM_SUFFIX} "Network;WebBrowser" "MimeType=${mime_types}\nStartupWMClass=chromium-browser";
- sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die;
- if use gnome; then
- dodir /usr/share/gnome-control-center/default-apps || die;
- insinto /usr/share/gnome-control-center/default-apps;
- newins "${FILESDIR}"/chromium-browser.xml chromium-browser${CHROMIUM_SUFFIX}.xml || die;
- if [[ "${CHROMIUM_SUFFIX}" != "" ]]; then
- sed "s:chromium-browser:chromium-browser${CHROMIUM_SUFFIX}:g" -i "${ED}"/usr/share/gnome-control-center/default-apps/chromium-browser${CHROMIUM_SUFFIX}.xml;
- fi;
- fi;
- readme.gentoo_create_doc
- }
- src_prepare ()
- {
- default;
- local keeplibs=(base/third_party/dmg_fp base/third_party/dynamic_annotations base/third_party/icu base/third_party/nspr base/third_party/superfasthash base/third_party/symbolize base/third_party/valgrind base/third_party/xdg_mime base/third_party/xdg_user_dirs breakpad/src/third_party/curl chrome/third_party/mozilla_security_manager courgette/third_party net/third_party/mozilla_security_manager net/third_party/nss third_party/WebKit third_party/analytics third_party/angle third_party/angle/src/common/third_party/numerics third_party/angle/src/third_party/compiler third_party/angle/src/third_party/libXNVCtrl third_party/angle/src/third_party/murmurhash third_party/angle/src/third_party/trace_event third_party/boringssl third_party/brotli third_party/cacheinvalidation third_party/catapult third_party/catapult/third_party/polymer third_party/catapult/third_party/py_vulcanize third_party/catapult/third_party/py_vulcanize/third_party/rcssmin third_party/catapult/third_party/py_vulcanize/third_party/rjsmin third_party/catapult/tracing/third_party/d3 third_party/catapult/tracing/third_party/gl-matrix third_party/catapult/tracing/third_party/jszip third_party/catapult/tracing/third_party/mannwhitneyu third_party/ced third_party/cld_2 third_party/cld_3 third_party/cros_system_api third_party/devscripts third_party/dom_distiller_js third_party/fips181 third_party/flatbuffers third_party/flot third_party/google_input_tools third_party/google_input_tools/third_party/closure_library third_party/google_input_tools/third_party/closure_library/third_party/closure third_party/hunspell third_party/iccjpeg third_party/inspector_protocol third_party/jstemplate third_party/khronos third_party/leveldatabase third_party/libXNVCtrl third_party/libaddressinput third_party/libjingle third_party/libphonenumber third_party/libsecret third_party/libsrtp third_party/libudev third_party/libusb third_party/libwebm third_party/libxml/chromium third_party/libyuv third_party/lss third_party/lzma_sdk third_party/mesa third_party/modp_b64 third_party/mt19937ar third_party/openh264 third_party/openmax_dl third_party/opus third_party/ots third_party/pdfium third_party/pdfium/third_party/agg23 third_party/pdfium/third_party/base third_party/pdfium/third_party/bigint third_party/pdfium/third_party/freetype third_party/pdfium/third_party/lcms2-2.6 third_party/pdfium/third_party/libjpeg third_party/pdfium/third_party/libopenjpeg20 third_party/pdfium/third_party/libpng16 third_party/pdfium/third_party/libtiff third_party/pdfium/third_party/zlib_v128 third_party/polymer third_party/protobuf third_party/protobuf/third_party/six third_party/qcms third_party/sfntly third_party/skia third_party/smhasher third_party/sqlite third_party/tcmalloc third_party/usrsctp third_party/web-animations-js third_party/webdriver third_party/webrtc third_party/widevine third_party/woff2 third_party/x86inc third_party/zlib/google url/third_party/mozilla v8/src/third_party/valgrind v8/third_party/inspector_protocol base/third_party/libevent third_party/adobe third_party/speech-dispatcher third_party/usb_ids third_party/xdg-utils third_party/yasm/run_yasm.py);
- if ! use system-ffmpeg; then
- keeplibs+=(third_party/ffmpeg);
- fi;
- build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
- }
- src_test ()
- {
- default
- }
- src_unpack ()
- {
- default
- }
- strip-flags ()
- {
- local x y var;
- local ALLOWED_FLAGS;
- setup-allowed-flags;
- set -f;
- for var in $(all-flag-vars);
- do
- local new=();
- for x in ${!var};
- do
- local flag=${x%%=*};
- for y in "${ALLOWED_FLAGS[@]}";
- do
- if [[ -z ${flag%%${y}} ]]; then
- new+=("${x}");
- break;
- fi;
- done;
- done;
- if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then
- new+=(-O2);
- fi;
- if [[ ${!var} != "${new[*]}" ]]; then
- einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'";
- fi;
- eval export ${var}=\""${new[*]}"\";
- done;
- set +f;
- return 0
- }
- strip-linguas ()
- {
- local ls newls nols;
- if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
- local op=$1;
- shift;
- ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
- shift;
- local d f;
- for d in "$@";
- do
- if [[ ${op} == "-u" ]]; then
- newls=${ls};
- else
- newls="";
- fi;
- for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
- do
- if [[ ${op} == "-i" ]]; then
- has ${f} ${ls} && newls="${newls} ${f}";
- else
- has ${f} ${ls} || newls="${newls} ${f}";
- fi;
- done;
- ls=${newls};
- done;
- else
- ls="$@";
- fi;
- nols="";
- newls="";
- for f in ${LINGUAS};
- do
- if has ${f} ${ls}; then
- newls="${newls} ${f}";
- else
- nols="${nols} ${f}";
- fi;
- done;
- [[ -n ${nols} ]] && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
- export LINGUAS=${newls:1}
- }
- strip-unsupported-flags ()
- {
- export CFLAGS=$(test-flags-CC ${CFLAGS});
- export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS});
- export FFLAGS=$(test-flags-F77 ${FFLAGS});
- export FCFLAGS=$(test-flags-FC ${FCFLAGS})
- }
- tc-arch ()
- {
- tc-ninja_magic_to_arch portage "$@"
- }
- tc-arch-kernel ()
- {
- tc-ninja_magic_to_arch kern "$@"
- }
- tc-check-openmp ()
- {
- if ! tc-has-openmp; then
- eerror "Your current compiler does not support OpenMP!";
- if tc-is-gcc; then
- eerror "Enable OpenMP support by building sys-devel/gcc with USE=\"openmp\".";
- else
- if tc-is-clang; then
- eerror "OpenMP support in sys-devel/clang is provided by sys-libs/libomp.";
- fi;
- fi;
- die "Active compiler does not have required support for OpenMP";
- fi
- }
- tc-endian ()
- {
- local host=$1;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- host=${host%%-*};
- case ${host} in
- aarch64*be)
- echo big
- ;;
- aarch64)
- echo little
- ;;
- alpha*)
- echo big
- ;;
- arm*b*)
- echo big
- ;;
- arm*)
- echo little
- ;;
- cris*)
- echo little
- ;;
- hppa*)
- echo big
- ;;
- i?86*)
- echo little
- ;;
- ia64*)
- echo little
- ;;
- m68*)
- echo big
- ;;
- mips*l*)
- echo little
- ;;
- mips*)
- echo big
- ;;
- powerpc*le)
- echo little
- ;;
- powerpc*)
- echo big
- ;;
- s390*)
- echo big
- ;;
- sh*b*)
- echo big
- ;;
- sh*)
- echo little
- ;;
- sparc*)
- echo big
- ;;
- x86_64*)
- echo little
- ;;
- *)
- echo wtf
- ;;
- esac
- }
- tc-env_build ()
- {
- tc-export_build_env;
- CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"
- }
- tc-export ()
- {
- local var;
- for var in "$@";
- do
- [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
- eval tc-get${var} > /dev/null;
- done
- }
- tc-export_build_env ()
- {
- tc-export "$@";
- : ${BUILD_CFLAGS:=-O1 -pipe};
- : ${BUILD_CXXFLAGS:=-O1 -pipe};
- : ${BUILD_CPPFLAGS:= };
- : ${BUILD_LDFLAGS:= };
- export BUILD_{C,CXX,CPP,LD}FLAGS;
- local v;
- for v in BUILD_{C,CXX,CPP,LD}FLAGS;
- do
- export ${v#BUILD_}_FOR_BUILD="${!v}";
- done
- }
- tc-get-compiler-type ()
- {
- local code='
- #if defined(__PATHSCALE__)
- HAVE_PATHCC
- #elif defined(__clang__)
- HAVE_CLANG
- #elif defined(__GNUC__)
- HAVE_GCC
- #endif
- ';
- local res=$($(tc-getCPP "$@") -E -P - <<<"${code}");
- case ${res} in
- *HAVE_PATHCC*)
- echo pathcc
- ;;
- *HAVE_CLANG*)
- echo clang
- ;;
- *HAVE_GCC*)
- echo gcc
- ;;
- *)
- echo unknown
- ;;
- esac
- }
- tc-getAR ()
- {
- tc-getPROG AR ar "$@"
- }
- tc-getAS ()
- {
- tc-getPROG AS as "$@"
- }
- tc-getBUILD_AR ()
- {
- tc-getBUILD_PROG AR ar "$@"
- }
- tc-getBUILD_AS ()
- {
- tc-getBUILD_PROG AS as "$@"
- }
- tc-getBUILD_CC ()
- {
- tc-getBUILD_PROG CC gcc "$@"
- }
- tc-getBUILD_CPP ()
- {
- tc-getBUILD_PROG CPP "$(tc-getBUILD_CC) -E" "$@"
- }
- tc-getBUILD_CXX ()
- {
- tc-getBUILD_PROG CXX g++ "$@"
- }
- tc-getBUILD_LD ()
- {
- tc-getBUILD_PROG LD ld "$@"
- }
- tc-getBUILD_NM ()
- {
- tc-getBUILD_PROG NM nm "$@"
- }
- tc-getBUILD_OBJCOPY ()
- {
- tc-getBUILD_PROG OBJCOPY objcopy "$@"
- }
- tc-getBUILD_PKG_CONFIG ()
- {
- tc-getBUILD_PROG PKG_CONFIG pkg-config "$@"
- }
- tc-getBUILD_PROG ()
- {
- _tc-getPROG CBUILD "BUILD_$1 $1_FOR_BUILD HOST$1" "${@:2}"
- }
- tc-getBUILD_RANLIB ()
- {
- tc-getBUILD_PROG RANLIB ranlib "$@"
- }
- tc-getBUILD_STRIP ()
- {
- tc-getBUILD_PROG STRIP strip "$@"
- }
- tc-getCC ()
- {
- tc-getPROG CC gcc "$@"
- }
- tc-getCPP ()
- {
- tc-getPROG CPP "${CC:-gcc} -E" "$@"
- }
- tc-getCXX ()
- {
- tc-getPROG CXX g++ "$@"
- }
- tc-getDLLWRAP ()
- {
- tc-getPROG DLLWRAP dllwrap "$@"
- }
- tc-getF77 ()
- {
- tc-getPROG F77 gfortran "$@"
- }
- tc-getFC ()
- {
- tc-getPROG FC gfortran "$@"
- }
- tc-getGCJ ()
- {
- tc-getPROG GCJ gcj "$@"
- }
- tc-getGO ()
- {
- tc-getPROG GO gccgo "$@"
- }
- tc-getLD ()
- {
- tc-getPROG LD ld "$@"
- }
- tc-getNM ()
- {
- tc-getPROG NM nm "$@"
- }
- tc-getOBJCOPY ()
- {
- tc-getPROG OBJCOPY objcopy "$@"
- }
- tc-getOBJDUMP ()
- {
- tc-getPROG OBJDUMP objdump "$@"
- }
- tc-getPKG_CONFIG ()
- {
- tc-getPROG PKG_CONFIG pkg-config "$@"
- }
- tc-getPROG ()
- {
- _tc-getPROG CHOST "$@"
- }
- tc-getRANLIB ()
- {
- tc-getPROG RANLIB ranlib "$@"
- }
- tc-getRC ()
- {
- tc-getPROG RC windres "$@"
- }
- tc-getSTRIP ()
- {
- tc-getPROG STRIP strip "$@"
- }
- tc-has-openmp ()
- {
- local base="${T}/test-tc-openmp";
- cat > "${base}.c" <<-EOF
- #include <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-clang ()
- {
- [[ $(tc-get-compiler-type) == clang ]]
- }
- tc-is-cross-compiler ()
- {
- [[ ${CBUILD:-${CHOST}} != ${CHOST} ]]
- }
- tc-is-gcc ()
- {
- [[ $(tc-get-compiler-type) == gcc ]]
- }
- tc-is-softfloat ()
- {
- local CTARGET=${CTARGET:-${CHOST}};
- case ${CTARGET} in
- bfin* | h8300*)
- echo "only"
- ;;
- *)
- if [[ ${CTARGET//_/-} == *-softfloat-* ]]; then
- echo "yes";
- else
- if [[ ${CTARGET//_/-} == *-softfp-* ]]; then
- echo "softfp";
- else
- echo "no";
- fi;
- fi
- ;;
- esac
- }
- tc-is-static-only ()
- {
- local host=${CTARGET:-${CHOST}};
- [[ ${host} == *-mint* ]]
- }
- tc-ld-disable-gold ()
- {
- if ! tc-ld-is-gold "$@"; then
- return;
- fi;
- ewarn "Forcing usage of the BFD linker instead of GOLD";
- local ld=$(tc-getLD "$@");
- local bfd_ld="${ld%% *}.bfd";
- local path_ld=$(which "${bfd_ld}" 2>/dev/null);
- [[ -e ${path_ld} ]] && export LD=${bfd_ld};
- local major=$(gcc-major-version "$@");
- local minor=$(gcc-minor-version "$@");
- if [[ ${major} -lt 4 ]] || [[ ${major} -eq 4 && ${minor} -lt 8 ]]; then
- if [[ -e ${path_ld} ]]; then
- local d="${T}/bfd-linker";
- mkdir -p "${d}";
- ln -sf "${path_ld}" "${d}"/ld;
- export LDFLAGS="${LDFLAGS} -B${d}";
- else
- die "unable to locate a BFD linker to bypass gold";
- fi;
- else
- export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";
- fi
- }
- tc-ld-is-gold ()
- {
- local out;
- out=$($(tc-getLD "$@") --version 2>&1);
- if [[ ${out} == *"GNU gold"* ]]; then
- return 0;
- fi;
- local base="${T}/test-tc-gold";
- cat > "${base}.c" <<-EOF
- int main() { return 0; }
- EOF
- out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
- rm -f "${base}"*;
- if [[ ${out} == *"GNU gold"* ]]; then
- return 0;
- fi;
- return 1
- }
- tc-ninja_magic_to_arch ()
- {
- function ninj ()
- {
- [[ ${type} == "kern" ]] && echo $1 || echo $2
- };
- local type=$1;
- local host=$2;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- case ${host} in
- aarch64*)
- echo arm64
- ;;
- alpha*)
- echo alpha
- ;;
- arm*)
- echo arm
- ;;
- avr*)
- ninj avr32 avr
- ;;
- bfin*)
- ninj blackfin bfin
- ;;
- c6x*)
- echo c6x
- ;;
- cris*)
- echo cris
- ;;
- frv*)
- echo frv
- ;;
- hexagon*)
- echo hexagon
- ;;
- hppa*)
- ninj parisc hppa
- ;;
- i?86*)
- if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then
- echo i386;
- else
- echo x86;
- fi
- ;;
- ia64*)
- echo ia64
- ;;
- m68*)
- echo m68k
- ;;
- metag*)
- echo metag
- ;;
- microblaze*)
- echo microblaze
- ;;
- mips*)
- echo mips
- ;;
- nios2*)
- echo nios2
- ;;
- nios*)
- echo nios
- ;;
- or1k | or32*)
- echo openrisc
- ;;
- powerpc*)
- if [[ ${type} == "kern" ]]; then
- echo powerpc;
- else
- if [[ ${host} == powerpc64* ]]; then
- echo ppc64;
- else
- echo ppc;
- fi;
- fi
- ;;
- riscv*)
- echo riscv
- ;;
- s390*)
- echo s390
- ;;
- score*)
- echo score
- ;;
- sh64*)
- ninj sh64 sh
- ;;
- sh*)
- echo sh
- ;;
- sparc64*)
- ninj sparc64 sparc
- ;;
- sparc*)
- [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
- ;;
- tile*)
- echo tile
- ;;
- vax*)
- echo vax
- ;;
- x86_64*freebsd*)
- echo amd64
- ;;
- x86_64*)
- if [[ ${type} == "kern" ]]; then
- echo x86;
- else
- echo amd64;
- fi
- ;;
- xtensa*)
- echo xtensa
- ;;
- *)
- echo unknown
- ;;
- esac
- }
- tc-stack-grows-down ()
- {
- case ${ARCH} in
- hppa | metag)
- return 1
- ;;
- esac;
- return 0
- }
- test-flag-CC ()
- {
- test-flag-PROG "CC" c "$1"
- }
- test-flag-CXX ()
- {
- test-flag-PROG "CXX" c++ "$1"
- }
- test-flag-F77 ()
- {
- test-flag-PROG "F77" f77 "$1"
- }
- test-flag-FC ()
- {
- test-flag-PROG "FC" f95 "$1"
- }
- test-flag-PROG ()
- {
- local comp=$1;
- local lang=$2;
- local flag=$3;
- [[ -z ${comp} || -z ${flag} ]] && return 1;
- local cmdline=($(tc-get${comp}) -Werror -c -o /dev/null);
- if "${cmdline[@]}" -x${lang} - < /dev/null > /dev/null 2>&1; then
- "${cmdline[@]}" "${flag}" -x${lang} - < /dev/null > /dev/null 2>&1;
- else
- "${cmdline[@]}" "${flag}" -c -o /dev/null /dev/null > /dev/null 2>&1;
- fi
- }
- test-flags ()
- {
- test-flags-CC "$@"
- }
- test-flags-CC ()
- {
- test-flags-PROG "CC" "$@"
- }
- test-flags-CXX ()
- {
- test-flags-PROG "CXX" "$@"
- }
- test-flags-F77 ()
- {
- test-flags-PROG "F77" "$@"
- }
- test-flags-FC ()
- {
- test-flags-PROG "FC" "$@"
- }
- test-flags-PROG ()
- {
- local comp=$1;
- local flags=();
- local x;
- shift;
- [[ -z ${comp} ]] && return 1;
- for x in "$@";
- do
- test-flag-${comp} "${x}" && flags+=("${x}");
- done;
- echo "${flags[*]}";
- [[ ${#flags[@]} -gt 0 ]]
- }
- test_version_info ()
- {
- if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
- return 0;
- else
- return 1;
- fi
- }
- treecopy ()
- {
- local dest=${!#};
- local files_count=$#;
- while (( $# > 1 )); do
- local dirstruct=$(dirname "$1");
- mkdir -p "${dest}/${dirstruct}" || die;
- cp -pPR "$1" "${dest}/${dirstruct}" || die;
- shift;
- done
- }
- use_if_iuse ()
- {
- in_iuse $1 || return 1;
- use $1
- }
- validate_desktop_entries ()
- {
- _eutils_eprefix_init;
- if [[ -x "${EPREFIX}"/usr/bin/desktop-file-validate ]]; then
- einfo "Checking desktop entry validity";
- local directories="";
- for d in /usr/share/applications $@;
- do
- [[ -d ${ED}${d} ]] && directories="${directories} ${ED}${d}";
- done;
- if [[ -n ${directories} ]]; then
- for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null);
- do
- local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
- [[ -n $temp ]] && elog ${temp/--/${FILE/${ED}/}:};
- done;
- fi;
- echo "";
- else
- einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
- fi
- }
- version_compare ()
- {
- eshopts_push -s extglob;
- local ver_a=${1} ver_b=${2} parts_a parts_b;
- local cur_tok_a cur_tok_b num_part_a num_part_b;
- local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
- parts_a=($(get_all_version_components "${ver_a}" ));
- parts_b=($(get_all_version_components "${ver_b}" ));
- local -i inf_loop=0;
- while true; do
- inf_loop+=1;
- ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
- prev_idx_a=cur_idx_a;
- prev_idx_b=cur_idx_b;
- cur_tok_a=${parts_a[cur_idx_a]};
- cur_tok_b=${parts_b[cur_idx_b]};
- if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
- cur_idx_a+=1;
- [[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
- else
- cur_tok_a=;
- fi;
- if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
- cur_idx_b+=1;
- [[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
- else
- cur_tok_b=;
- fi;
- [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
- [[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
- [[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
- if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
- cur_tok_a=${cur_tok_a%%+(0)};
- cur_tok_b=${cur_tok_b%%+(0)};
- [[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
- [[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
- else
- cur_tok_a=${cur_tok_a##+(0)};
- cur_tok_b=${cur_tok_b##+(0)};
- : ${cur_tok_a:=0};
- : ${cur_tok_b:=0};
- ((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
- ((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
- fi;
- done;
- local letter_a=;
- letter_a=${parts_a[cur_idx_a]};
- if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
- cur_idx_a+=1;
- else
- letter_a=@;
- fi;
- local letter_b=;
- letter_b=${parts_b[cur_idx_b]};
- if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
- cur_idx_b+=1;
- else
- letter_b=@;
- fi;
- [[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
- [[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
- inf_loop=0;
- while true; do
- inf_loop+=1;
- ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
- [[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
- [[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
- cur_tok_a=${parts_a[cur_idx_a]};
- cur_tok_b=${parts_b[cur_idx_b]};
- num_part_a=0;
- num_part_b=0;
- if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
- cur_idx_a+=1;
- num_part_a=${cur_tok_a##+([a-z])};
- num_part_a=${num_part_a##+(0)};
- : ${num_part_a:=0};
- cur_tok_a=${cur_tok_a%%+([0-9])};
- else
- cur_tok_a=;
- fi;
- if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
- cur_idx_b+=1;
- num_part_b=${cur_tok_b##+([a-z])};
- num_part_b=${num_part_b##+(0)};
- : ${num_part_b:=0};
- cur_tok_b=${cur_tok_b%%+([0-9])};
- else
- cur_tok_b=;
- fi;
- if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
- local suffix;
- for suffix in alpha beta pre rc "" p;
- do
- [[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
- [[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
- done;
- else
- if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
- break;
- else
- ((num_part_a < num_part_b)) && eshopts_pop && return 1;
- ((num_part_a > num_part_b)) && eshopts_pop && return 3;
- fi;
- fi;
- done;
- [[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
- [[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
- if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
- die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
- fi;
- num_part_a=${parts_a[cur_idx_a]#r};
- num_part_a=${num_part_a##+(0)};
- : ${num_part_a:=0};
- num_part_b=${parts_b[cur_idx_b]#r};
- num_part_b=${num_part_b##+(0)};
- : ${num_part_b:=0};
- ((num_part_a < num_part_b)) && eshopts_pop && return 1;
- ((num_part_a > num_part_b)) && eshopts_pop && return 3;
- eshopts_pop;
- return 2
- }
- version_format_string ()
- {
- local fstr=$1;
- shift;
- set -- $(get_version_components "$@");
- eval echo "${fstr}"
- }
- version_is_at_least ()
- {
- local want_s="$1" have_s="${2:-${PVR}}" r;
- version_compare "${want_s}" "${have_s}";
- r=$?;
- case $r in
- 1 | 2)
- return 0
- ;;
- 3)
- return 1
- ;;
- *)
- die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
- ;;
- esac
- }
- version_sort ()
- {
- eshopts_push -s extglob;
- local items=;
- local -i left=0;
- items=("$@");
- while ((left < ${#items[@]})); do
- local -i lowest_idx=left;
- local -i idx=lowest_idx+1;
- while ((idx < ${#items[@]})); do
- version_compare "${items[lowest_idx]}" "${items[idx]}";
- [[ $? -eq 3 ]] && lowest_idx=idx;
- idx+=1;
- done;
- local tmp=${items[lowest_idx]};
- items[lowest_idx]=${items[left]};
- items[left]=${tmp};
- left+=1;
- done;
- echo ${items[@]};
- eshopts_pop
- }
- virtualmake ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ ${EAPI} == [2345] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use virtx";
- if [[ -n ${maketype} ]]; then
- [[ ${EAPI} == [2345] ]] || die "maketype is banned in EAPI > 5";
- eqawarn "ebuild is exporting \$maketype=${maketype}";
- eqawarn "Ebuild should be migrated to use 'virtx command' instead.";
- VIRTUALX_COMMAND=${maketype};
- fi;
- virtx "${VIRTUALX_COMMAND}" "${@}"
- }
- virtx ()
- {
- debug-print-function ${FUNCNAME} "$@";
- [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument";
- local i=0;
- local retval=0;
- local OLD_SANDBOX_ON="${SANDBOX_ON}";
- local XVFB XHOST XDISPLAY;
- local xvfbargs="-screen 0 1280x1024x24 +extension RANDR";
- XVFB=$(type -p Xvfb) || die;
- XHOST=$(type -p xhost) || die;
- debug-print "${FUNCNAME}: running Xvfb hack";
- export XAUTHORITY=;
- einfo "Scanning for an open DISPLAY to start Xvfb ...";
- XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i});
- debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}";
- export SANDBOX_ON="0";
- debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
- ${XVFB} :${XDISPLAY} ${xvfbargs} &> /dev/null & sleep 2;
- local start=${XDISPLAY};
- while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
- if ((XDISPLAY - start > 15)); then
- eerror "'${XVFB} :${XDISPLAY} ${xvfbargs}' returns:";
- echo;
- ${XVFB} :${XDISPLAY} ${xvfbargs};
- echo;
- eerror "If possible, correct the above error and try your emerge again.";
- die "Unable to start Xvfb";
- fi;
- ((XDISPLAY++));
- debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
- ${XVFB} :${XDISPLAY} ${xvfbargs} &> /dev/null & sleep 2;
- done;
- export SANDBOX_ON="${OLD_SANDBOX_ON}";
- einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ...";
- export DISPLAY=:${XDISPLAY};
- debug-print "${FUNCNAME}: $@";
- if has "${EAPI}" 2 3; then
- "$@";
- retval=$?;
- else
- nonfatal "$@";
- retval=$?;
- fi;
- kill $(cat /tmp/.X${XDISPLAY}-lock);
- [[ ${retval} -ne 0 ]] && die "Failed to run '$@'";
- return 0
- }
- xdg_desktop_database_update ()
- {
- local updater="${EROOT}${DESKTOP_DATABASE_UPDATE_BIN}";
- if [[ ${EBUILD_PHASE} != post* ]]; then
- die "xdg_desktop_database_update must be used in pkg_post* phases.";
- fi;
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- ebegin "Updating .desktop files database";
- "${updater}" -q "${EROOT}${DESKTOP_DATABASE_DIR}";
- eend $?
- }
- xdg_environment_reset ()
- {
- export XDG_DATA_HOME="${HOME}/.local/share";
- export XDG_CONFIG_HOME="${HOME}/.config";
- export XDG_CACHE_HOME="${HOME}/.cache";
- export XDG_RUNTIME_DIR="${T}/run";
- mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" "${XDG_RUNTIME_DIR}" || die;
- chmod 0700 "${XDG_RUNTIME_DIR}" || die;
- unset DBUS_SESSION_BUS_ADDRESS
- }
- xdg_mimeinfo_database_update ()
- {
- local updater="${EROOT}${MIMEINFO_DATABASE_UPDATE_BIN}";
- if [[ ${EBUILD_PHASE} != post* ]]; then
- die "xdg_mimeinfo_database_update must be used in pkg_post* phases.";
- fi;
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- ebegin "Updating shared mime info database";
- "${updater}" "${EROOT}${MIMEINFO_DATABASE_DIR}";
- eend $?
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement