mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-18 21:11:08 +02:00
bump(eclass): sync with upstream
This commit is contained in:
parent
f93a303e17
commit
dd9b5f72c5
@ -1,6 +1,273 @@
|
||||
# ChangeLog for eclass directory
|
||||
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1678 2015/06/22 14:18:19 pesa Exp $
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1750 2015/08/08 09:32:50 mgorny Exp $
|
||||
|
||||
08 Aug 2015; Michał Górny <mgorny@gentoo.org> git-r3.eclass:
|
||||
Add some boldness to output. Update/fix pkg_needrebuild() for
|
||||
smart-live-rebuild.
|
||||
|
||||
07 Aug 2015; Davide Pesavento <pesa@gentoo.org> qt5-build.eclass:
|
||||
Fix bugs #549140 and #552942.
|
||||
|
||||
07 Aug 2015; Davide Pesavento <pesa@gentoo.org> qt5-build.eclass:
|
||||
Allow passing arguments to qmake from ebuilds via the myqmakeargs array.
|
||||
|
||||
06 Aug 2015; Sergei Trofimovich <slyfox@gentoo.org> ghc-package.eclass,
|
||||
haskell-cabal.eclass:
|
||||
Add new helpers: 'ghc-pm-version' to get ghc version as seen by package
|
||||
manager and 'ghc-is-dynamic' to workaround ghc-api bug
|
||||
https://ghc.haskell.org/trac/ghc/ticket/10301 in ebuild.
|
||||
|
||||
05 Aug 2015; William Hubbs <williamh@gentoo.org> golang-vcs-snapshot.eclass:
|
||||
add || die and fix indentation
|
||||
|
||||
05 Aug 2015; William Hubbs <williamh@gentoo.org> +golang-vcs-snapshot.eclass:
|
||||
Add eclass for vcs snapshots of software written in Go.
|
||||
|
||||
03 Aug 2015; Michael Sterrett <mr_bones_@gentoo.org> python-utils-r1.eclass:
|
||||
Add quotes to support reading from files with spaces in the filename.
|
||||
|
||||
03 Aug 2015; Michael Palimaka <kensington@gentoo.org> kde5.eclass:
|
||||
Do not compress handbooks.
|
||||
|
||||
02 Aug 2015; James Le Cuirot <chewi@gentoo.org> java-utils-2.eclass:
|
||||
Allow java-pkg_get-javac to be called alone. Fixes bug #172594. Thanks to
|
||||
sping for the patch. Also simplify die logic around java-pkg_javac-args. die
|
||||
handling has improved since this was written.
|
||||
|
||||
31 Jul 2015; Patrice Clement <monsieurp@gentoo.org> java-utils-2.eclass:
|
||||
Document JAVA_RM_FILES variable. Also, fix documentation and correct typos in
|
||||
java-pkg_rm_files.
|
||||
|
||||
30 Jul 2015; James Le Cuirot <chewi@gentoo.org> java-utils-2.eclass:
|
||||
Fix JAVA_RM_FILES by simplifying java-utils-2_src_prepare on the basis that
|
||||
we won't be committing EAPI 0|1 ebuilds any more.
|
||||
|
||||
30 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-multilib.eclass:
|
||||
Revert bad mycmakeargs changes and introduce 3 eclass variables to have extra
|
||||
defines in the ebuild
|
||||
|
||||
30 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-multilib.eclass:
|
||||
Reset variables between ABIs
|
||||
|
||||
30 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-multilib.eclass:
|
||||
Add blocker below virtual/mysql-5.6-r4 for new split ebuilds
|
||||
|
||||
29 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-multilib.eclass:
|
||||
Fix pkg_config function error with non-existant USE flags
|
||||
|
||||
28 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-multilib.eclass:
|
||||
Fix configuring non-native abi which leads to build failure wrt bug 556162
|
||||
|
||||
28 Jul 2015; Brian Evans <grknight@gentoo.org> mysql-cmake.eclass,
|
||||
mysql-multilib.eclass:
|
||||
Add support for the split client/server options to the mysql eclasses
|
||||
|
||||
27 Jul 2015; William Hubbs <williamh@gentoo.org> +golang-base.eclass,
|
||||
golang-build.eclass, golang-vcs.eclass:
|
||||
Add golang-base.eclass for the basic golang functions and set up the
|
||||
other go eclasses to use it.
|
||||
|
||||
|
||||
27 Jul 2015; Michał Górny <mgorny@gentoo.org> python-utils-r1.eclass:
|
||||
python_wrapper_setup(): make banned helpers exit with 127.
|
||||
|
||||
27 Jul 2015; Michał Górny <mgorny@gentoo.org> python-utils-r1.eclass:
|
||||
Ban calling pythonN and pythonN-config when the other version of Python is
|
||||
selected (i.e. ban python2 when python3 is used).
|
||||
|
||||
27 Jul 2015; Michał Górny <mgorny@gentoo.org> python-utils-r1.eclass:
|
||||
python_wrapper_setup(): wrap pythonN-config as well as suggested by PEP and
|
||||
required by some applications, bug #555594.
|
||||
|
||||
27 Jul 2015; Michał Górny <mgorny@gentoo.org> python-utils-r1.eclass:
|
||||
python_wrapper_setup(): replace symlinks with shell wrappers to avoid
|
||||
triggering Python 3.4+ magical prefix support.
|
||||
|
||||
27 Jul 2015; Mike Gilbert <floppym@gentoo.org> python-r1.eclass:
|
||||
Drop the USE_PYTHON warning.
|
||||
|
||||
25 Jul 2015; Michał Górny <mgorny@gentoo.org> python-utils-r1.eclass:
|
||||
Add missing ||die to "rm -f" calls, i.e. in case we do not have permission to
|
||||
remove the files.
|
||||
|
||||
23 Jul 2015; William Hubbs <williamh@gentoo.org> golang-build.eclass:
|
||||
Add functions to retrieve Go library paths and install Go packages.
|
||||
|
||||
22 Jul 2015; Michael Palimaka <kensington@gentoo.org> kde4-meta.eclass:
|
||||
Fix oldpim unpack by Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
|
||||
wrt bug #555566.
|
||||
|
||||
22 Jul 2015; Patrice Clement <monsieurp@gentoo.org> java-utils-2.eclass:
|
||||
Introduce java-pkg_rm_files as a helper function along with JAVA_RM_FILES
|
||||
array to readily get rid of useless files.
|
||||
|
||||
20 Jul 2015; Sergei Trofimovich <slyfox@gentoo.org> haskell-cabal.eclass:
|
||||
Workaround upstream cabal tests hangup bug #537500 by Michael Orlitzky; use
|
||||
ghc's haddock for doc generation.
|
||||
|
||||
19 Jul 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Change kernel upgrade http link and remove reference to deblob in elog
|
||||
message. See bug #553484
|
||||
|
||||
19 Jul 2015; Johannes Huber <johu@gentoo.org> kde4-base.eclass:
|
||||
Cleanup SRC_URIs.
|
||||
|
||||
18 Jul 2015; Mike Gilbert <floppym@gentoo.org> distutils-r1.eclass:
|
||||
Add entire python directory to SANDBOX_PREDICT, bug 554252.
|
||||
|
||||
17 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org>
|
||||
mozconfig-v6.38.eclass, mozconfig-v6.39.eclass:
|
||||
Updated gstreamer dependencies to current stable and dropped gst-plugins-mad
|
||||
since gst-plugins-libav now officially provides mp3 decoding
|
||||
|
||||
17 Jul 2015; Brian Evans <grknight@gentoo.org> depend.php.eclass:
|
||||
Remove deprecated functions from depend.php.eclass as announced 30 days ago
|
||||
|
||||
17 Jul 2015; Brian Evans <grknight@gentoo.org> -php-common-r1.eclass,
|
||||
-php-ext-base-r1.eclass, -php-ezc.eclass:
|
||||
Drop old, unused eclasses wrt bug 551910
|
||||
|
||||
17 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org>
|
||||
mozconfig-v6.38.eclass, mozconfig-v6.39.eclass:
|
||||
Added gst-plugins-mad:1.0 dependency for USE=gstreamer to ensure mp3
|
||||
streaming support
|
||||
|
||||
16 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org> mozlinguas.eclass:
|
||||
minor update within mozlinguas.eclass
|
||||
|
||||
16 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org> mozlinguas.eclass:
|
||||
Fixed the mozlinguas.eclass upgrade, recommitting.
|
||||
|
||||
16 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org>
|
||||
mozconfig-v6.38.eclass, mozconfig-v6.39.eclass, mozcoreconf-v3.eclass,
|
||||
mozextension.eclass, mozlinguas.eclass:
|
||||
Update mozilla support eclasses
|
||||
|
||||
16 Jul 2015; Michał Górny <mgorny@gentoo.org> distutils-r1.eclass:
|
||||
Forbid also installing "examples" package, bug #555038.
|
||||
|
||||
16 Jul 2015; Lars Wendler <polynomial-c@gentoo.org> apache-2.eclass:
|
||||
Added slot dependency for openssl. Raised minimum required EAPI version to 5.
|
||||
|
||||
15 Jul 2015; Andreas K. Huettel <dilfridge@gentoo.org> kde4-meta.eclass:
|
||||
Fix unpacking of noakonadi branch
|
||||
|
||||
14 Jul 2015; Anthony G. Basile <blueness@gentoo.org> bitcoincore.eclass:
|
||||
Update for bitcoind 0.11.0.
|
||||
|
||||
13 Jul 2015; Davide Pesavento <pesa@gentoo.org> qt5-build.eclass:
|
||||
Initial support for Qt 5.5
|
||||
|
||||
09 Jul 2015; Michał Górny <mgorny@gentoo.org> git-r3.eclass:
|
||||
Do not attempt to use submodules for which the checkout path does not exist
|
||||
(has been removed), bug #551100.
|
||||
|
||||
09 Jul 2015; Michał Górny <mgorny@gentoo.org> gnome2.eclass:
|
||||
Remove meaningless nonfatal from elibtoolize call, bug #551154.
|
||||
|
||||
09 Jul 2015; Hans de Graaff <graaff@gentoo.org> ruby-single.eclass:
|
||||
Update documentation.
|
||||
|
||||
08 Jul 2015; Bernard Cafarelli <voyageur@gentoo.org> webapp.eclass:
|
||||
Fix elog in webapp_serverowned and ebeep in newer EAPIs
|
||||
|
||||
07 Jul 2015; Ian Stakenvicius (_AxS_) <axs@gentoo.org>
|
||||
-mozconfig-v4.31.eclass, -mozconfig-v5.33.eclass, +mozconfig-v6.38.eclass,
|
||||
+mozconfig-v6.39.eclass:
|
||||
removed old mozconfig eclasses, added new
|
||||
|
||||
06 Jul 2015; William Hubbs <williamh@gentoo.org> golang-build.eclass:
|
||||
Add back the subslot operator in the dependency on Go. We need this so that
|
||||
we have the Go version the package was built with recorded.
|
||||
|
||||
06 Jul 2015; Michael Palimaka <kensington@gentoo.org> kde5.eclass:
|
||||
Add missing USE dependency default wrt bug #554056.
|
||||
|
||||
05 Jul 2015; Hans de Graaff <graaff@gentoo.org> ruby-fakegem.eclass:
|
||||
Document that some variables must be set before inheriting the eclass.
|
||||
|
||||
04 Jul 2015; Mike Gilbert <floppym@gentoo.org> distutils-r1.eclass,
|
||||
python-any-r1.eclass, python-r1.eclass, python-single-r1.eclass,
|
||||
python-utils-r1.eclass:
|
||||
Replace links to python-r1 dev guide with links to the wiki.
|
||||
|
||||
04 Jul 2015; Manuel Rüger <mrueg@gentoo.org> python-r1.eclass:
|
||||
Update URI.
|
||||
|
||||
03 Jul 2015; William Hubbs <williamh@gentoo.org> golang-build.eclass:
|
||||
drop the slot dependency; it was pointed out to me that they do not trigger
|
||||
rebuilds in DEPEND
|
||||
|
||||
01 Jul 2015; Manuel Rüger <mrueg@gentoo.org> kde4-base.eclass:
|
||||
Sync with overlay. Add SRC_URIs for newer KDE SC, KDE Workspace releases and
|
||||
KDEPIM 4.4 no-akonadi branches.
|
||||
|
||||
29 Jun 2015; Manuel Rüger <mrueg@gentoo.org> ruby-ng.eclass:
|
||||
Quote RUBY_S and sub_S as the directory could contain spaces.
|
||||
|
||||
29 Jun 2015; Davide Pesavento <pesa@gentoo.org> qmake-utils.eclass:
|
||||
Introduce qt{4,5}_get_plugindir(). Rephrase some eclass doc.
|
||||
|
||||
28 Jun 2015; James Le Cuirot <chewi@gentoo.org> java-utils-2.eclass:
|
||||
The -source flag was added in 1.3 or 1.4 (not sure) and we have special code
|
||||
to handle this but no one in their right mind would build with 1.2 or 1.3
|
||||
now. Removing this code allows the ecj-gcj ebuild to call java-pkg_javac-args
|
||||
without a proper VM present.
|
||||
|
||||
28 Jun 2015; Johannes Huber <johu@gentoo.org> kde5.eclass:
|
||||
Loop optimization as suggested by Michal Górny <mgorny@gentoo.org> on -dev
|
||||
ml.
|
||||
|
||||
27 Jun 2015; Johannes Huber <johu@gentoo.org> kde5-functions.eclass,
|
||||
kde5.eclass:
|
||||
Sync kde5*eclass with kde overlay. Handle more whitespace variations by
|
||||
Michael Palimaka <kensington@gentoo.org>. Fixes translation handling by
|
||||
Michael Palimaka <kensington@gentoo.org> and Andreas Sturmlechner
|
||||
<andreas.sturmlechner@gmail.com>, bug #552664. Raises deps on KDE Frameworks
|
||||
and KDE Plasma Manuel Rüger <mrueg@gentoo.org>.
|
||||
|
||||
27 Jun 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Fix conditional bug for UNIPATCH_DROP
|
||||
|
||||
27 Jun 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Fix for kdbus. Thanks to Arfrever.
|
||||
|
||||
27 Jun 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Add the kdbus use flag and eclass variable to the kernel-2.eclass for
|
||||
optional kdbus inclusion.
|
||||
|
||||
27 Jun 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Reverting kdbus changes in eclass. Caused invalid iuse for other ebuilds.
|
||||
|
||||
26 Jun 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass:
|
||||
Add the option to include the kdbus patchset into gentoo-sources. Default is
|
||||
not to include it.
|
||||
|
||||
26 Jun 2015; Michał Górny <mgorny@gentoo.org> multilib-build.eclass:
|
||||
Remove emul-linux-x86 hack, since emul-linux-x86 is no more.
|
||||
|
||||
24 Jun 2015; William Hubbs <williamh@gentoo.org> golang-build.eclass:
|
||||
typo fix, use double brackets
|
||||
|
||||
24 Jun 2015; William Hubbs <williamh@gentoo.org> +golang-build.eclass:
|
||||
Add an eclass for building Go software
|
||||
|
||||
24 Jun 2015; <grknight@gentoo.org> depend.php.eclass:
|
||||
depend.php.eclass is deprecated and is set to be removed 30 days after bug
|
||||
552836 is resolved
|
||||
|
||||
24 Jun 2015; <grknight@gentoo.org> php-lib-r1.eclass:
|
||||
Remove depend.php and dodoc-php in favor of just dodoc
|
||||
|
||||
24 Jun 2015; Justin Lecher <jlec@gentoo.org> waf-utils.eclass:
|
||||
Drop base.eclass usage
|
||||
|
||||
23 Jun 2015; William Hubbs <williamh@gentoo.org> golang-vcs.eclass:
|
||||
The GOPATH environment variable is now passed directly to the
|
||||
commands that need it.
|
||||
The correct directory of source files is copied to the correct
|
||||
location under ${S}.
|
||||
|
||||
22 Jun 2015; Davide Pesavento <pesa@gentoo.org> qmake-utils.eclass:
|
||||
Introduce qt{4,5}_get_libdir().
|
38
sdk_container/src/third_party/portage-stable/eclass/ELT-patches/as-needed/2.4.3
vendored
Normal file
38
sdk_container/src/third_party/portage-stable/eclass/ELT-patches/as-needed/2.4.3
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
--- ltmain.sh
|
||||
+++ ltmain.sh
|
||||
@@ -7225,10 +7225,15 @@
|
||||
IFS=$save_ifs
|
||||
func_stripname ' ' '' "$arg"
|
||||
arg=$func_stripname_result
|
||||
;;
|
||||
|
||||
+ -Wl,--as-needed|-Wl,--no-as-needed)
|
||||
+ deplibs="$deplibs $arg"
|
||||
+ continue
|
||||
+ ;;
|
||||
+
|
||||
-Wl,*)
|
||||
func_stripname '-Wl,' '' "$arg"
|
||||
args=$func_stripname_result
|
||||
arg=
|
||||
save_ifs=$IFS; IFS=,
|
||||
@@ -7609,10 +7614,19 @@
|
||||
|
||||
for deplib in $libs; do
|
||||
lib=
|
||||
found=false
|
||||
case $deplib in
|
||||
+ -Wl,--as-needed|-Wl,--no-as-needed)
|
||||
+ if test "$linkmode,$pass" = "prog,link"; then
|
||||
+ compile_deplibs="$deplib $compile_deplibs"
|
||||
+ finalize_deplibs="$deplib $finalize_deplibs"
|
||||
+ else
|
||||
+ deplibs="$deplib $deplibs"
|
||||
+ fi
|
||||
+ continue
|
||||
+ ;;
|
||||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|
||||
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
|
||||
if test prog,link = "$linkmode,$pass"; then
|
||||
compile_deplibs="$deplib $compile_deplibs"
|
||||
finalize_deplibs="$deplib $finalize_deplibs"
|
@ -17,7 +17,13 @@ inherit autotools eutils flag-o-matic multilib ssl-cert user toolchain-funcs ver
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4)
|
||||
die "This eclass requires >=EAPI-5"
|
||||
die "This eclass is banned for EAPI<5"
|
||||
;;
|
||||
5)
|
||||
:;
|
||||
;;
|
||||
6)
|
||||
die "This eclass is not yet ready for EAPI-6"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/autotools.eclass,v 1.176 2015/06/03 04:06:08 vapier Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: autotools.eclass
|
||||
# @MAINTAINER:
|
||||
@ -56,7 +56,7 @@ inherit libtool
|
||||
# Do NOT change this variable in your ebuilds!
|
||||
# If you want to force a newer minor version, you can specify the correct
|
||||
# WANT value by using a colon: <PV>:<WANT_AUTOMAKE>
|
||||
_LATEST_AUTOMAKE=( 1.14.1:1.14 1.15:1.15 )
|
||||
_LATEST_AUTOMAKE=( 1.15:1.15 )
|
||||
|
||||
_automake_atom="sys-devel/automake"
|
||||
_autoconf_atom="sys-devel/autoconf"
|
||||
@ -198,7 +198,7 @@ eautoreconf() {
|
||||
intltool false "autotools_run_tool intltoolize --automake --copy --force"
|
||||
gtkdoc false "autotools_run_tool --at-missing gtkdocize --copy"
|
||||
gnomedoc false "autotools_run_tool --at-missing gnome-doc-prepare --copy --force"
|
||||
libtool false "_elibtoolize --install --copy --force"
|
||||
libtool false "_elibtoolize --auto-ltdl --install --copy --force"
|
||||
)
|
||||
for (( i = 0; i < ${#tools[@]}; i += 3 )) ; do
|
||||
if _at_uses_${tools[i]} ; then
|
||||
@ -258,12 +258,13 @@ _at_uses_pkg() {
|
||||
}
|
||||
_at_uses_autoheader() { _at_uses_pkg A{C,M}_CONFIG_HEADER{S,}; }
|
||||
_at_uses_automake() { _at_uses_pkg AM_INIT_AUTOMAKE; }
|
||||
_at_uses_gettext() { _at_uses_pkg AM_GNU_GETTEXT_VERSION; }
|
||||
_at_uses_gettext() { _at_uses_pkg AM_GNU_GETTEXT_{,REQUIRE_}VERSION; }
|
||||
_at_uses_glibgettext() { _at_uses_pkg AM_GLIB_GNU_GETTEXT; }
|
||||
_at_uses_intltool() { _at_uses_pkg {AC,IT}_PROG_INTLTOOL; }
|
||||
_at_uses_gtkdoc() { _at_uses_pkg GTK_DOC_CHECK; }
|
||||
_at_uses_gnomedoc() { _at_uses_pkg GNOME_DOC_INIT; }
|
||||
_at_uses_libtool() { _at_uses_pkg A{C,M}_PROG_LIBTOOL LT_INIT; }
|
||||
_at_uses_libltdl() { _at_uses_pkg LT_CONFIG_LTDL_DIR; }
|
||||
|
||||
# @FUNCTION: eaclocal_amflags
|
||||
# @DESCRIPTION:
|
||||
@ -313,6 +314,11 @@ eaclocal() {
|
||||
_elibtoolize() {
|
||||
local LIBTOOLIZE=${LIBTOOLIZE:-$(type -P glibtoolize > /dev/null && echo glibtoolize || echo libtoolize)}
|
||||
|
||||
if [[ $1 == "--auto-ltdl" ]] ; then
|
||||
shift
|
||||
_at_uses_libltdl && set -- "$@" --ltdl
|
||||
fi
|
||||
|
||||
[[ -f GNUmakefile.am || -f Makefile.am ]] && set -- "$@" --automake
|
||||
|
||||
autotools_run_tool ${LIBTOOLIZE} "$@"
|
||||
@ -475,13 +481,14 @@ autotools_run_tool() {
|
||||
|
||||
autotools_env_setup
|
||||
|
||||
local STDERR_TARGET="${T}/$1.out"
|
||||
# Allow people to pass in full paths. #549268
|
||||
local STDERR_TARGET="${T}/${1##*/}.out"
|
||||
# most of the time, there will only be one run, but if there are
|
||||
# more, make sure we get unique log filenames
|
||||
if [[ -e ${STDERR_TARGET} ]] ; then
|
||||
local i=1
|
||||
while :; do
|
||||
STDERR_TARGET="${T}/$1-${i}.out"
|
||||
STDERR_TARGET="${T}/${1##*/}-${i}.out"
|
||||
[[ -e ${STDERR_TARGET} ]] || break
|
||||
: $(( i++ ))
|
||||
done
|
||||
@ -518,13 +525,13 @@ autotools_run_tool() {
|
||||
# Keep a list of all the macros we might use so that we only
|
||||
# have to run the trace code once. Order doesn't matter.
|
||||
ALL_AUTOTOOLS_MACROS=(
|
||||
A{C,M}_PROG_LIBTOOL LT_INIT
|
||||
A{C,M}_PROG_LIBTOOL LT_INIT LT_CONFIG_LTDL_DIR
|
||||
A{C,M}_CONFIG_HEADER{S,}
|
||||
AC_CONFIG_SUBDIRS
|
||||
AC_CONFIG_AUX_DIR AC_CONFIG_MACRO_DIR
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
AM_GNU_GETTEXT_VERSION
|
||||
AM_GNU_GETTEXT_{,REQUIRE_}VERSION
|
||||
{AC,IT}_PROG_INTLTOOL
|
||||
GTK_DOC_CHECK
|
||||
GNOME_DOC_INIT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/bitcoincore.eclass,v 1.4 2015/05/27 00:18:02 blueness Exp $
|
||||
# $Id$
|
||||
#
|
||||
# @ECLASS: bitcoincore.eclass
|
||||
# @MAINTAINER:
|
||||
@ -76,13 +76,30 @@ case "${PV}" in
|
||||
0.10*)
|
||||
BITCOINCORE_SERIES="0.10.x"
|
||||
LIBSECP256K1_DEPEND="=dev-libs/libsecp256k1-0.0.0_pre20141212"
|
||||
BITCOINCORE_RBF_DIFF="16f45600c8c372a738ffef544292864256382601...a23678edc70204599299459a206709a00e039db7"
|
||||
BITCOINCORE_RBF_PATCHFILE="${MyPN}-rbf-v0.10.2.patch"
|
||||
case "${PVR}" in
|
||||
0.10.2)
|
||||
BITCOINCORE_RBF_DIFF="16f45600c8c372a738ffef544292864256382601...a23678edc70204599299459a206709a00e039db7"
|
||||
BITCOINCORE_RBF_PATCHFILE="${MyPN}-rbf-v0.10.2.patch"
|
||||
;;
|
||||
*)
|
||||
BITCOINCORE_RBF_DIFF="16f45600c8c372a738ffef544292864256382601...4890416cde655559eba09d3fd6f79db7d0d6314a"
|
||||
BITCOINCORE_RBF_PATCHFILE="${MyPN}-rbf-v0.10.2-r1.patch"
|
||||
;;
|
||||
esac
|
||||
BITCOINCORE_XT_DIFF="047a89831760ff124740fe9f58411d57ee087078...d4084b62c42c38bfe302d712b98909ab26ecce2f"
|
||||
;;
|
||||
0.11*)
|
||||
BITCOINCORE_SERIES="0.11.x"
|
||||
LIBSECP256K1_DEPEND="=dev-libs/libsecp256k1-0.0.0_pre20150423"
|
||||
# RBF is bundled with ljr patchset since 0.11.1
|
||||
if [ "${PVR}" = "0.11.0" ]; then
|
||||
BITCOINCORE_RBF_DIFF="5f032c75eefb0fe8ff79ed9595da1112c05f5c4a...660b96d24916b8ef4e0677e5d6162e24e2db447e"
|
||||
BITCOINCORE_RBF_PATCHFILE="${MyPN}-rbf-v0.11.0rc3.patch"
|
||||
fi
|
||||
;;
|
||||
9999*)
|
||||
BITCOINCORE_SERIES="9999"
|
||||
LIBSECP256K1_DEPEND="=dev-libs/libsecp256k1-9999"
|
||||
LIBSECP256K1_DEPEND=">dev-libs/libsecp256k1-0.0.0_pre20150422"
|
||||
;;
|
||||
*)
|
||||
die "Unrecognised version"
|
||||
@ -100,7 +117,7 @@ if [ -z "$BITCOINCORE_COMMITHASH" ]; then
|
||||
EGIT_PROJECT='bitcoin'
|
||||
EGIT_REPO_URI="git://github.com/bitcoin/bitcoin.git https://github.com/bitcoin/bitcoin.git"
|
||||
else
|
||||
SRC_URI="https://github.com/${MyPN}/${MyPN}/archive/${BITCOINCORE_COMMITHASH}.tar.gz -> ${MyPN}-v${PV}.tgz"
|
||||
SRC_URI="https://github.com/${MyPN}/${MyPN}/archive/${BITCOINCORE_COMMITHASH}.tar.gz -> ${MyPN}-v${PV}${BITCOINCORE_SRC_SUFFIX}.tgz"
|
||||
if [ -z "${BITCOINCORE_NO_SYSLIBS}" ]; then
|
||||
SRC_URI="${SRC_URI} http://luke.dashjr.org/programs/${MyPN}/files/${MyPN}d/luke-jr/${BITCOINCORE_SERIES}/$(LJR_PV ljr)/${LJR_PATCHDIR}.txz -> ${LJR_PATCHDIR}.tar.xz"
|
||||
fi
|
||||
@ -108,7 +125,7 @@ else
|
||||
BITCOINXT_PATCHFILE="${MyPN}xt-v${PV}.patch"
|
||||
SRC_URI="${SRC_URI} xt? ( https://github.com/bitcoinxt/bitcoinxt/compare/${BITCOINCORE_XT_DIFF}.diff -> ${BITCOINXT_PATCHFILE} )"
|
||||
fi
|
||||
if in_bcc_policy rbf; then
|
||||
if in_bcc_policy rbf && [ -n "${BITCOINCORE_RBF_DIFF}" ]; then
|
||||
SRC_URI="${SRC_URI} bitcoin_policy_rbf? ( https://github.com/petertodd/bitcoin/compare/${BITCOINCORE_RBF_DIFF}.diff -> ${BITCOINCORE_RBF_PATCHFILE} )"
|
||||
fi
|
||||
S="${WORKDIR}/${MyPN}-${BITCOINCORE_COMMITHASH}"
|
||||
@ -177,6 +194,9 @@ bitcoincore_pkg_pretend() {
|
||||
einfo "Extra functionality improvements to Bitcoin Core are enabled."
|
||||
bitcoincore_policymsg_flag=true
|
||||
fi
|
||||
bitcoincore_policymsg cltv \
|
||||
"CLTV policy is enabled: Your node will recognise and assist OP_CHECKLOCKTIMEVERIFY (BIP65) transactions." \
|
||||
"CLTV policy is disabled: Your node will not recognise OP_CHECKLOCKTIMEVERIFY (BIP65) transactions."
|
||||
bitcoincore_policymsg cpfp \
|
||||
"CPFP policy is enabled: If you mine, you will give consideration to child transaction fees to pay for their parents." \
|
||||
"CPFP policy is disabled: If you mine, you will ignore transactions unless they have sufficient fee themselves, even if child transactions offer a fee to cover their cost."
|
||||
@ -187,18 +207,17 @@ bitcoincore_pkg_pretend() {
|
||||
"Replace By Fee policy is enabled: Your node will preferentially mine and relay transactions paying the highest fee, regardless of receive order." \
|
||||
"Replace By Fee policy is disabled: Your node will only accept the first transaction seen consuming a conflicting input, regardless of fee offered by later ones."
|
||||
bitcoincore_policymsg spamfilter \
|
||||
"Enhanced spam filter is enabled: A blacklist (seen as controversial by some) will be used by your node. This may impact your ability to use some services (see link for a list)." \
|
||||
"Enhanced spam filter is disabled: Your node will not be checking for notorious spammers, and may assist them."
|
||||
"Enhanced spam filter policy is enabled: Your node will identify notorious spam scripts and avoid assisting them. This may impact your ability to use some services (see link for a list)." \
|
||||
"Enhanced spam filter policy is disabled: Your node will not be checking for notorious spam scripts, and may assist them."
|
||||
$bitcoincore_policymsg_flag && einfo "For more information on any of the above, see ${LJR_PATCH_DESC}"
|
||||
}
|
||||
|
||||
bitcoincore_prepare() {
|
||||
local mypolicy
|
||||
if [ -n "${BITCOINCORE_NO_SYSLIBS}" ]; then
|
||||
true
|
||||
elif [ "${PV}" = "9999" ]; then
|
||||
epatch "${FILESDIR}/0.9.0-sys_leveldb.patch"
|
||||
# Temporarily use embedded secp256k1 while API is in flux
|
||||
#epatch "${FILESDIR}/${PV}-sys_libsecp256k1.patch"
|
||||
epatch "${FILESDIR}/${PV}-syslibs.patch"
|
||||
else
|
||||
epatch "$(LJR_PATCH syslibs)"
|
||||
fi
|
||||
@ -224,7 +243,11 @@ bitcoincore_prepare() {
|
||||
use bitcoin_policy_${mypolicy} || continue
|
||||
case "${mypolicy}" in
|
||||
rbf)
|
||||
epatch "${DISTDIR}/${BITCOINCORE_RBF_PATCHFILE}"
|
||||
if [ -n "${BITCOINCORE_RBF_PATCHFILE}" ]; then
|
||||
epatch "${DISTDIR}/${BITCOINCORE_RBF_PATCHFILE}"
|
||||
else
|
||||
epatch "$(LJR_PATCH ${mypolicy})"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
epatch "$(LJR_PATCH ${mypolicy})"
|
||||
@ -236,11 +259,7 @@ bitcoincore_prepare() {
|
||||
bitcoincore_autoreconf() {
|
||||
eautoreconf
|
||||
rm -r src/leveldb || die
|
||||
|
||||
# Temporarily using embedded secp256k1 for 9999 while API is in flux
|
||||
if [ "${PV}" != "9999" ]; then
|
||||
rm -r src/secp256k1 || die
|
||||
fi
|
||||
rm -r src/secp256k1 || die
|
||||
}
|
||||
|
||||
bitcoincore_src_prepare() {
|
||||
@ -265,7 +284,7 @@ bitcoincore_conf() {
|
||||
else
|
||||
my_econf="${my_econf} --disable-wallet"
|
||||
fi
|
||||
if [ -z "${BITCOINCORE_NO_SYSLIBS}" ] && [ "${PV}" != "9999" ]; then
|
||||
if [ -z "${BITCOINCORE_NO_SYSLIBS}" ]; then
|
||||
my_econf="${my_econf} --disable-util-cli --disable-util-tx"
|
||||
else
|
||||
my_econf="${my_econf} --without-utils"
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/check-reqs.eclass,v 1.15 2014/03/29 16:06:44 ulm Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: check-reqs.eclass
|
||||
# @MAINTAINER:
|
||||
@ -38,6 +38,8 @@
|
||||
# These checks should probably mostly work on non-Linux, and they should
|
||||
# probably degrade gracefully if they don't. Probably.
|
||||
|
||||
if [[ ! ${_CHECK_REQS_ECLASS_} ]]; then
|
||||
|
||||
inherit eutils
|
||||
|
||||
# @ECLASS-VARIABLE: CHECKREQS_MEMORY
|
||||
@ -63,21 +65,23 @@ inherit eutils
|
||||
EXPORT_FUNCTIONS pkg_setup
|
||||
case "${EAPI:-0}" in
|
||||
0|1|2|3) ;;
|
||||
4|5) EXPORT_FUNCTIONS pkg_pretend ;;
|
||||
4|5|6) EXPORT_FUNCTIONS pkg_pretend ;;
|
||||
*) die "EAPI=${EAPI} is not supported" ;;
|
||||
esac
|
||||
|
||||
# @FUNCTION: check_reqs
|
||||
# @DESCRIPTION:
|
||||
# Obsolete function executing all the checks and priting out results
|
||||
# Obsolete function executing all the checks and printing out results
|
||||
check_reqs() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ ${EAPI:-0} == [012345] ]] || die "${FUNCNAME} is banned in EAPI > 5"
|
||||
|
||||
echo
|
||||
ewarn "QA: Package calling old ${FUNCNAME} function."
|
||||
ewarn "QA: Please file a bug against the package."
|
||||
ewarn "QA: It should call check-reqs_pkg_pretend and check-reqs_pkg_setup"
|
||||
ewarn "QA: and possibly use EAPI=4 or later."
|
||||
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 "$@"
|
||||
@ -106,6 +110,7 @@ check-reqs_pkg_pretend() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_prepare
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that checks the variables that should be defined.
|
||||
check-reqs_prepare() {
|
||||
@ -122,6 +127,7 @@ check-reqs_prepare() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_run
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that runs the check based on variable settings.
|
||||
check-reqs_run() {
|
||||
@ -130,6 +136,8 @@ check-reqs_run() {
|
||||
# some people are *censored*
|
||||
unset CHECKREQS_FAILED
|
||||
|
||||
[[ ${EAPI:-0} == [0123] ]] && local MERGE_TYPE=""
|
||||
|
||||
# use != in test, because MERGE_TYPE only exists in EAPI 4 and later
|
||||
if [[ ${MERGE_TYPE} != binary ]]; then
|
||||
[[ -n ${CHECKREQS_MEMORY} ]] && \
|
||||
@ -155,11 +163,12 @@ check-reqs_run() {
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_get_mebibytes
|
||||
# @FUNCTION: check-reqs_get_kibibytes
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that returns number in mebibytes.
|
||||
# Returns 1024 for 1G or 1048576 for 1T.
|
||||
check-reqs_get_mebibytes() {
|
||||
# Internal function that returns number in KiB.
|
||||
# Returns 1024**2 for 1G or 1024**3 for 1T.
|
||||
check-reqs_get_kibibytes() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]"
|
||||
@ -168,9 +177,10 @@ check-reqs_get_mebibytes() {
|
||||
local size=${1%[GMT]}
|
||||
|
||||
case ${unit} in
|
||||
G) echo $((1024 * size)) ;;
|
||||
[M0-9]) echo ${size} ;;
|
||||
T) echo $((1024 * 1024 * size)) ;;
|
||||
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}"
|
||||
;;
|
||||
@ -178,6 +188,7 @@ check-reqs_get_mebibytes() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_get_number
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that returns the numerical value without the unit.
|
||||
# Returns "1" for "1G" or "150" for "150T".
|
||||
@ -188,19 +199,21 @@ check-reqs_get_number() {
|
||||
|
||||
local unit=${1:(-1)}
|
||||
local size=${1%[GMT]}
|
||||
local msg=eerror
|
||||
[[ ${EAPI:-0} == [012345] ]] && msg=eqawarn
|
||||
|
||||
# Check for unset units and warn about them.
|
||||
# Backcompat.
|
||||
if [[ ${size} == ${1} ]]; then
|
||||
ewarn "QA: Package does not specify unit for the size check"
|
||||
ewarn "QA: Assuming mebibytes."
|
||||
ewarn "QA: File bug against the package. It should specify the unit."
|
||||
${msg} "Package does not specify unit for the size check"
|
||||
${msg} "File bug against the package. It should specify the unit."
|
||||
fi
|
||||
|
||||
echo ${size}
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_get_unit
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that return the unit without the numerical value.
|
||||
# Returns "GiB" for "1G" or "TiB" for "150T".
|
||||
@ -222,6 +235,7 @@ check-reqs_get_unit() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_output
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that prints the warning and dies if required based on
|
||||
# the test results.
|
||||
@ -233,7 +247,7 @@ check-reqs_output() {
|
||||
[[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror"
|
||||
if [[ -n ${CHECKREQS_FAILED} ]]; then
|
||||
${msg}
|
||||
${msg} "Space constrains set in the ebuild were not met!"
|
||||
${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}
|
||||
@ -244,6 +258,7 @@ check-reqs_output() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_memory
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that checks size of RAM.
|
||||
check-reqs_memory() {
|
||||
@ -266,7 +281,7 @@ check-reqs_memory() {
|
||||
actual_memory=$(echo $actual_memory | sed -e 's/^[^:=]*[:=]//' )
|
||||
fi
|
||||
if [[ -n ${actual_memory} ]] ; then
|
||||
if [[ ${actual_memory} -lt $((1024 * $(check-reqs_get_mebibytes ${size}))) ]] ; then
|
||||
if [[ ${actual_memory} -lt $(check-reqs_get_kibibytes ${size}) ]] ; then
|
||||
eend 1
|
||||
check-reqs_unsatisfied \
|
||||
${size} \
|
||||
@ -281,6 +296,7 @@ check-reqs_memory() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_disk
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that checks space on the harddrive.
|
||||
check-reqs_disk() {
|
||||
@ -290,16 +306,16 @@ check-reqs_disk() {
|
||||
|
||||
local path=${1}
|
||||
local size=${2}
|
||||
local space_megs
|
||||
local space_kbi
|
||||
|
||||
check-reqs_start_phase \
|
||||
${size} \
|
||||
"disk space at \"${path}\""
|
||||
|
||||
space_megs=$(df -Pm "${1}" 2>/dev/null | awk 'FNR == 2 {print $4}')
|
||||
space_kbi=$(df -Pk "${1}" 2>/dev/null | awk 'FNR == 2 {print $4}')
|
||||
|
||||
if [[ $? == 0 && -n ${space_megs} ]] ; then
|
||||
if [[ ${space_megs} -lt $(check-reqs_get_mebibytes ${size}) ]] ; then
|
||||
if [[ $? == 0 && -n ${space_kbi} ]] ; then
|
||||
if [[ ${space_kbi} -lt $(check-reqs_get_kibibytes ${size}) ]] ; then
|
||||
eend 1
|
||||
check-reqs_unsatisfied \
|
||||
${size} \
|
||||
@ -314,6 +330,7 @@ check-reqs_disk() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_start_phase
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that inform about started check
|
||||
check-reqs_start_phase() {
|
||||
@ -329,6 +346,7 @@ check-reqs_start_phase() {
|
||||
}
|
||||
|
||||
# @FUNCTION: check-reqs_unsatisfied
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Internal function that inform about check result.
|
||||
# It has different output between pretend and setup phase,
|
||||
@ -353,3 +371,6 @@ check-reqs_unsatisfied() {
|
||||
# Internal, do not set yourself.
|
||||
CHECKREQS_FAILED="true"
|
||||
}
|
||||
|
||||
_CHECK_REQS_ECLASS_=1
|
||||
fi
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.114 2015/02/18 06:19:32 bircoph Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: cmake-utils.eclass
|
||||
# @MAINTAINER:
|
||||
@ -20,7 +20,6 @@
|
||||
if [[ -z ${_CMAKE_UTILS_ECLASS} ]]; then
|
||||
_CMAKE_UTILS_ECLASS=1
|
||||
|
||||
|
||||
# @ECLASS-VARIABLE: BUILD_DIR
|
||||
# @DESCRIPTION:
|
||||
# Build directory where all cmake processed files should be generated.
|
||||
@ -64,7 +63,6 @@ _CMAKE_UTILS_ECLASS=1
|
||||
# @DESCRIPTION:
|
||||
# Do we want to remove anything? yes or whatever else for no
|
||||
: ${CMAKE_REMOVE_MODULES:=yes}
|
||||
CMAKE_REMOVE_MODULES="${CMAKE_REMOVE_MODULES:-yes}"
|
||||
|
||||
# @ECLASS-VARIABLE: CMAKE_REMOVE_MODULES_LIST
|
||||
# @DESCRIPTION:
|
||||
@ -104,6 +102,8 @@ CMAKE_REMOVE_MODULES="${CMAKE_REMOVE_MODULES:-yes}"
|
||||
# This is useful when only part of application is using cmake build system.
|
||||
# Valid values are: always [default], optional (where the value is the useflag
|
||||
# used for optionality)
|
||||
#
|
||||
# This is banned in EAPI 6 and later.
|
||||
: ${WANT_CMAKE:=always}
|
||||
|
||||
# @ECLASS-VARIABLE: CMAKE_EXTRA_CACHE_FILE
|
||||
@ -112,24 +112,25 @@ CMAKE_REMOVE_MODULES="${CMAKE_REMOVE_MODULES:-yes}"
|
||||
# for econf and is needed to pass TRY_RUN results when cross-compiling.
|
||||
# Should be set by user in a per-package basis in /etc/portage/package.env.
|
||||
|
||||
case ${EAPI} in
|
||||
2|3|4|5|6) : ;;
|
||||
*) die "EAPI=${EAPI:-0} is not supported" ;;
|
||||
esac
|
||||
|
||||
inherit toolchain-funcs multilib flag-o-matic eutils versionator
|
||||
|
||||
EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
|
||||
|
||||
CMAKEDEPEND=""
|
||||
case ${WANT_CMAKE} in
|
||||
always)
|
||||
;;
|
||||
*)
|
||||
[[ ${EAPI} == [2345] ]] || die "WANT_CMAKE is banned in EAPI 6 and later"
|
||||
IUSE+=" ${WANT_CMAKE}"
|
||||
CMAKEDEPEND+="${WANT_CMAKE}? ( "
|
||||
;;
|
||||
esac
|
||||
inherit toolchain-funcs multilib flag-o-matic eutils
|
||||
|
||||
case ${EAPI} in
|
||||
2|3|4|5) : ;;
|
||||
*) die "EAPI=${EAPI:-0} is not supported" ;;
|
||||
esac
|
||||
|
||||
CMAKE_EXPF="src_prepare src_configure src_compile src_test src_install"
|
||||
EXPORT_FUNCTIONS ${CMAKE_EXPF}
|
||||
|
||||
case ${CMAKE_MAKEFILE_GENERATOR} in
|
||||
emake)
|
||||
@ -148,17 +149,20 @@ if [[ ${PN} != cmake ]]; then
|
||||
CMAKEDEPEND+=" >=dev-util/cmake-${CMAKE_MIN_VERSION}"
|
||||
fi
|
||||
|
||||
CMAKEDEPEND+=" userland_GNU? ( >=sys-apps/findutils-4.4.0 )"
|
||||
|
||||
[[ ${WANT_CMAKE} = always ]] || CMAKEDEPEND+=" )"
|
||||
|
||||
DEPEND="${CMAKEDEPEND}"
|
||||
unset CMAKEDEPEND
|
||||
|
||||
# Internal functions used by cmake-utils_use_*
|
||||
_use_me_now() {
|
||||
_cmake_use_me_now() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local arg=$2
|
||||
[[ ! -z $3 ]] && arg=$3
|
||||
|
||||
[[ ${EAPI} == [2345] ]] || die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1${arg}=\"\$(usex $2)\" instead"
|
||||
|
||||
local uper capitalised x
|
||||
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
|
||||
if [[ ! -z $3 ]]; then
|
||||
@ -173,9 +177,16 @@ _use_me_now() {
|
||||
done
|
||||
fi
|
||||
}
|
||||
_use_me_now_inverted() {
|
||||
_cmake_use_me_now_inverted() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local arg=$2
|
||||
[[ ! -z $3 ]] && arg=$3
|
||||
|
||||
if [[ ${EAPI} != [2345] && "${FUNCNAME[1]}" != cmake-utils_use_find_package ]] ; then
|
||||
die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1${arg}=\"\$(usex $2)\" instead"
|
||||
fi
|
||||
|
||||
local uper capitalised x
|
||||
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
|
||||
if [[ ! -z $3 ]]; then
|
||||
@ -192,7 +203,7 @@ _use_me_now_inverted() {
|
||||
}
|
||||
|
||||
# Determine using IN or OUT source build
|
||||
_check_build_dir() {
|
||||
_cmake_check_build_dir() {
|
||||
: ${CMAKE_USE_DIR:=${S}}
|
||||
if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
|
||||
# we build in source dir
|
||||
@ -219,16 +230,21 @@ _check_build_dir() {
|
||||
# Backwards compatibility for getting the value.
|
||||
CMAKE_BUILD_DIR=${BUILD_DIR}
|
||||
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
mkdir -p "${BUILD_DIR}" || die
|
||||
echo ">>> Working in BUILD_DIR: \"$BUILD_DIR\""
|
||||
}
|
||||
|
||||
# Determine which generator to use
|
||||
_generator_to_use() {
|
||||
_cmake_generator_to_use() {
|
||||
local generator_name
|
||||
|
||||
case ${CMAKE_MAKEFILE_GENERATOR} in
|
||||
ninja)
|
||||
# if ninja is enabled but not installed, the build could fail
|
||||
# this could happen if ninja is manually enabled (eg. make.conf) but not installed
|
||||
if ! has_version dev-util/ninja; then
|
||||
die "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed. Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR."
|
||||
fi
|
||||
generator_name="Ninja"
|
||||
;;
|
||||
emake)
|
||||
@ -243,21 +259,32 @@ _generator_to_use() {
|
||||
echo ${generator_name}
|
||||
}
|
||||
|
||||
# @FUNCTION: comment_add_subdirectory
|
||||
# @FUNCTION: cmake_comment_add_subdirectory
|
||||
# @USAGE: <subdirectory>
|
||||
# @DESCRIPTION:
|
||||
# Comment out an add_subdirectory call in CMakeLists.txt in the current directory
|
||||
comment_add_subdirectory() {
|
||||
cmake_comment_add_subdirectory() {
|
||||
if [[ -z ${1} ]]; then
|
||||
die "comment_add_subdirectory must be passed the directory name to comment"
|
||||
fi
|
||||
|
||||
if [[ -e "CMakeLists.txt" ]]; then
|
||||
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${1//\//\\/}[[:space:]]*)/s/^/#DONOTCOMPILE /" \
|
||||
sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${1//\//\\/}[[:space:]]*)/I s/^/#DONOTCOMPILE /" \
|
||||
-i CMakeLists.txt || die "failed to comment add_subdirectory(${1})"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: comment_add_subdirectory
|
||||
# @USAGE: <subdirectory>
|
||||
# @DESCRIPTION:
|
||||
# Comment out an add_subdirectory call in CMakeLists.txt in the current directory
|
||||
# Banned in EAPI 6 and later - use cmake_comment_add_subdirectory instead.
|
||||
comment_add_subdirectory() {
|
||||
[[ ${EAPI} == [2345] ]] || die "comment_add_subdirectory is banned in EAPI 6 and later - use cmake_comment_add_subdirectory instead"
|
||||
|
||||
cmake_comment_add_subdirectory "$@"
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_use_with
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
# @DESCRIPTION:
|
||||
@ -265,7 +292,7 @@ comment_add_subdirectory() {
|
||||
#
|
||||
# `cmake-utils_use_with foo FOO` echoes -DWITH_FOO=ON if foo is enabled
|
||||
# and -DWITH_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_with() { _use_me_now WITH_ "$@" ; }
|
||||
cmake-utils_use_with() { _cmake_use_me_now WITH_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_enable
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -274,17 +301,23 @@ cmake-utils_use_with() { _use_me_now WITH_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_enable foo FOO` echoes -DENABLE_FOO=ON if foo is enabled
|
||||
# and -DENABLE_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_enable() { _use_me_now ENABLE_ "$@" ; }
|
||||
cmake-utils_use_enable() { _cmake_use_me_now ENABLE_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_find_package
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
# @USAGE: <USE flag> <package name>
|
||||
# @DESCRIPTION:
|
||||
# Based on use_enable. See ebuild(5).
|
||||
#
|
||||
# `cmake-utils_use_find_package foo LibFoo` echoes -DCMAKE_DISABLE_FIND_PACKAGE_LibFoo=OFF
|
||||
# if foo is enabled and -DCMAKE_DISABLE_FIND_PACKAGE_LibFoo=ON if it is disabled.
|
||||
# This can be used to make find_package optional.
|
||||
cmake-utils_use_find_package() { _use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE_ "$@" ; }
|
||||
cmake-utils_use_find_package() {
|
||||
if [[ ${EAPI} != [2345] && "$#" != 2 ]] ; then
|
||||
die "Usage: cmake-utils_use_find_package <USE flag> <package name>"
|
||||
fi
|
||||
|
||||
_cmake_use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE_ "$@" ;
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_use_disable
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -293,7 +326,7 @@ cmake-utils_use_find_package() { _use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE
|
||||
#
|
||||
# `cmake-utils_use_enable foo FOO` echoes -DDISABLE_FOO=OFF if foo is enabled
|
||||
# and -DDISABLE_FOO=ON if it is disabled.
|
||||
cmake-utils_use_disable() { _use_me_now_inverted DISABLE_ "$@" ; }
|
||||
cmake-utils_use_disable() { _cmake_use_me_now_inverted DISABLE_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_no
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -302,7 +335,7 @@ cmake-utils_use_disable() { _use_me_now_inverted DISABLE_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_no foo FOO` echoes -DNO_FOO=OFF if foo is enabled
|
||||
# and -DNO_FOO=ON if it is disabled.
|
||||
cmake-utils_use_no() { _use_me_now_inverted NO_ "$@" ; }
|
||||
cmake-utils_use_no() { _cmake_use_me_now_inverted NO_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_want
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -311,7 +344,7 @@ cmake-utils_use_no() { _use_me_now_inverted NO_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_want foo FOO` echoes -DWANT_FOO=ON if foo is enabled
|
||||
# and -DWANT_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_want() { _use_me_now WANT_ "$@" ; }
|
||||
cmake-utils_use_want() { _cmake_use_me_now WANT_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_build
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -320,7 +353,7 @@ cmake-utils_use_want() { _use_me_now WANT_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_build foo FOO` echoes -DBUILD_FOO=ON if foo is enabled
|
||||
# and -DBUILD_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_build() { _use_me_now BUILD_ "$@" ; }
|
||||
cmake-utils_use_build() { _cmake_use_me_now BUILD_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_has
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -329,7 +362,7 @@ cmake-utils_use_build() { _use_me_now BUILD_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_has foo FOO` echoes -DHAVE_FOO=ON if foo is enabled
|
||||
# and -DHAVE_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_has() { _use_me_now HAVE_ "$@" ; }
|
||||
cmake-utils_use_has() { _cmake_use_me_now HAVE_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use_use
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -338,7 +371,7 @@ cmake-utils_use_has() { _use_me_now HAVE_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use_use foo FOO` echoes -DUSE_FOO=ON if foo is enabled
|
||||
# and -DUSE_FOO=OFF if it is disabled.
|
||||
cmake-utils_use_use() { _use_me_now USE_ "$@" ; }
|
||||
cmake-utils_use_use() { _cmake_use_me_now USE_ "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_use
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -347,7 +380,7 @@ cmake-utils_use_use() { _use_me_now USE_ "$@" ; }
|
||||
#
|
||||
# `cmake-utils_use foo FOO` echoes -DFOO=ON if foo is enabled
|
||||
# and -DFOO=OFF if it is disabled.
|
||||
cmake-utils_use() { _use_me_now "" "$@" ; }
|
||||
cmake-utils_use() { _cmake_use_me_now "" "$@" ; }
|
||||
|
||||
# @FUNCTION: cmake-utils_useno
|
||||
# @USAGE: <USE flag> [flag name]
|
||||
@ -356,11 +389,11 @@ cmake-utils_use() { _use_me_now "" "$@" ; }
|
||||
#
|
||||
# `cmake-utils_useno foo NOFOO` echoes -DNOFOO=OFF if foo is enabled
|
||||
# and -DNOFOO=ON if it is disabled.
|
||||
cmake-utils_useno() { _use_me_now_inverted "" "$@" ; }
|
||||
cmake-utils_useno() { _cmake_use_me_now_inverted "" "$@" ; }
|
||||
|
||||
# Internal function for modifying hardcoded definitions.
|
||||
# Removes dangerous definitions that override Gentoo settings.
|
||||
_modify-cmakelists() {
|
||||
_cmake_modify-cmakelists() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
# Only edit the files once
|
||||
@ -376,7 +409,7 @@ _modify-cmakelists() {
|
||||
|| die "${LINENO}: failed to disable hardcoded settings"
|
||||
|
||||
# NOTE Append some useful summary here
|
||||
cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<- _EOF_
|
||||
cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<- _EOF_ || die
|
||||
|
||||
MESSAGE(STATUS "<<< Gentoo configuration >>>
|
||||
Build type \${CMAKE_BUILD_TYPE}
|
||||
@ -391,18 +424,47 @@ _modify-cmakelists() {
|
||||
_EOF_
|
||||
}
|
||||
|
||||
# temporary function for moving cmake cleanups from from src_configure -> src_prepare.
|
||||
# bug #378850
|
||||
_cmake_cleanup_cmake() {
|
||||
: ${CMAKE_USE_DIR:=${S}}
|
||||
|
||||
if [[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] ; then
|
||||
local name
|
||||
for name in ${CMAKE_REMOVE_MODULES_LIST} ; do
|
||||
find "${S}" -name ${name}.cmake -exec rm -v {} + || die
|
||||
done
|
||||
fi
|
||||
|
||||
# check if CMakeLists.txt exist and if no then die
|
||||
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]] ; then
|
||||
eerror "Unable to locate CMakeLists.txt under:"
|
||||
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\""
|
||||
eerror "Consider not inheriting the cmake eclass."
|
||||
die "FATAL: Unable to find CMakeLists.txt"
|
||||
fi
|
||||
|
||||
# Remove dangerous things.
|
||||
_cmake_modify-cmakelists
|
||||
}
|
||||
|
||||
enable_cmake-utils_src_prepare() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
pushd "${S}" > /dev/null
|
||||
pushd "${S}" > /dev/null || die
|
||||
|
||||
debug-print "$FUNCNAME: PATCHES=$PATCHES"
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
|
||||
debug-print "$FUNCNAME: applying user patches"
|
||||
epatch_user
|
||||
if [[ ${EAPI} != [2345] ]]; then
|
||||
default_src_prepare
|
||||
_cmake_cleanup_cmake
|
||||
else
|
||||
debug-print "$FUNCNAME: PATCHES=$PATCHES"
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
|
||||
popd > /dev/null
|
||||
debug-print "$FUNCNAME: applying user patches"
|
||||
epatch_user
|
||||
fi
|
||||
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
# @VARIABLE: mycmakeargs
|
||||
@ -423,28 +485,12 @@ enable_cmake-utils_src_prepare() {
|
||||
enable_cmake-utils_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] && {
|
||||
local name
|
||||
for name in ${CMAKE_REMOVE_MODULES_LIST} ; do
|
||||
find "${S}" -name ${name}.cmake -exec rm -v {} +
|
||||
done
|
||||
}
|
||||
[[ ${EAPI} == [2345] ]] && _cmake_cleanup_cmake
|
||||
|
||||
_check_build_dir
|
||||
|
||||
# check if CMakeLists.txt exist and if no then die
|
||||
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]] ; then
|
||||
eerror "Unable to locate CMakeLists.txt under:"
|
||||
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\""
|
||||
eerror "Consider not inheriting the cmake eclass."
|
||||
die "FATAL: Unable to find CMakeLists.txt"
|
||||
fi
|
||||
|
||||
# Remove dangerous things.
|
||||
_modify-cmakelists
|
||||
_cmake_check_build_dir
|
||||
|
||||
# Fix xdg collision with sandbox
|
||||
export XDG_CONFIG_HOME="${T}"
|
||||
local -x XDG_CONFIG_HOME="${T}"
|
||||
|
||||
# @SEE CMAKE_BUILD_TYPE
|
||||
if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
|
||||
@ -457,18 +503,28 @@ enable_cmake-utils_src_configure() {
|
||||
|
||||
# Prepare Gentoo override rules (set valid compiler, append CPPFLAGS etc.)
|
||||
local build_rules=${BUILD_DIR}/gentoo_rules.cmake
|
||||
cat > "${build_rules}" <<- _EOF_
|
||||
# Since cmake-3.4.0_rc1 "<FLAGS>" no longer contains includes and thus
|
||||
# we need to add "<INCLUDES>"
|
||||
local includes=
|
||||
if [[ ${PN} == cmake ]] ; then
|
||||
if $(version_is_at_least 3.4.0 $(get_version_component_range 1-3 ${PV})) ; then
|
||||
includes="<INCLUDES>"
|
||||
fi
|
||||
elif ROOT=/ has_version \>=dev-util/cmake-3.4.0_rc1 ; then
|
||||
includes="<INCLUDES>"
|
||||
fi
|
||||
cat > "${build_rules}" <<- _EOF_ || die
|
||||
SET (CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE)
|
||||
SET (CMAKE_ASM_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "ASM compile command" FORCE)
|
||||
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
|
||||
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
|
||||
SET (CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE)
|
||||
SET (CMAKE_ASM_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${includes} ${CFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "ASM compile command" FORCE)
|
||||
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${includes} ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
|
||||
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${includes} ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
|
||||
SET (CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> ${includes} ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE)
|
||||
SET (CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE)
|
||||
SET (PKG_CONFIG_EXECUTABLE $(type -P $(tc-getPKG_CONFIG)) CACHE FILEPATH "pkg-config executable" FORCE)
|
||||
_EOF_
|
||||
|
||||
local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake
|
||||
cat > ${toolchain_file} <<- _EOF_
|
||||
cat > ${toolchain_file} <<- _EOF_ || die
|
||||
SET (CMAKE_C_COMPILER $(tc-getCC))
|
||||
SET (CMAKE_CXX_COMPILER $(tc-getCXX))
|
||||
SET (CMAKE_Fortran_COMPILER $(tc-getFC))
|
||||
@ -480,18 +536,23 @@ enable_cmake-utils_src_configure() {
|
||||
Cygwin) sysname="CYGWIN_NT-5.1" ;;
|
||||
HPUX) sysname="HP-UX" ;;
|
||||
linux) sysname="Linux" ;;
|
||||
Winnt) sysname="Windows" ;;
|
||||
Winnt)
|
||||
sysname="Windows"
|
||||
cat >> "${toolchain_file}" <<- _EOF_ || die
|
||||
SET (CMAKE_RC_COMPILER $(tc-getRC))
|
||||
_EOF_
|
||||
;;
|
||||
*) sysname="${KERNEL}" ;;
|
||||
esac
|
||||
|
||||
cat >> "${toolchain_file}" <<- _EOF_
|
||||
cat >> "${toolchain_file}" <<- _EOF_ || die
|
||||
SET (CMAKE_SYSTEM_NAME "${sysname}")
|
||||
_EOF_
|
||||
|
||||
if [ "${SYSROOT:-/}" != "/" ] ; then
|
||||
# When cross-compiling with a sysroot (e.g. with crossdev's emerge wrappers)
|
||||
# we need to tell cmake to use libs/headers from the sysroot but programs from / only.
|
||||
cat >> "${toolchain_file}" <<- _EOF_
|
||||
cat >> "${toolchain_file}" <<- _EOF_ || die
|
||||
set(CMAKE_FIND_ROOT_PATH "${SYSROOT}")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
@ -500,10 +561,10 @@ enable_cmake-utils_src_configure() {
|
||||
fi
|
||||
fi
|
||||
|
||||
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
|
||||
[[ ${EAPI} == 2 ]] && ! use prefix && local EPREFIX=
|
||||
|
||||
if [[ ${EPREFIX} ]]; then
|
||||
cat >> "${build_rules}" <<- _EOF_
|
||||
cat >> "${build_rules}" <<- _EOF_ || die
|
||||
# in Prefix we need rpath and must ensure cmake gets our default linker path
|
||||
# right ... except for Darwin hosts
|
||||
IF (NOT APPLE)
|
||||
@ -528,7 +589,7 @@ enable_cmake-utils_src_configure() {
|
||||
# Common configure parameters (invariants)
|
||||
local common_config=${BUILD_DIR}/gentoo_common_config.cmake
|
||||
local libdir=$(get_libdir)
|
||||
cat > "${common_config}" <<- _EOF_
|
||||
cat > "${common_config}" <<- _EOF_ || die
|
||||
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
|
||||
SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries")
|
||||
_EOF_
|
||||
@ -537,7 +598,15 @@ enable_cmake-utils_src_configure() {
|
||||
# Convert mycmakeargs to an array, for backwards compatibility
|
||||
# Make the array a local variable since <=portage-2.1.6.x does not
|
||||
# support global arrays (see bug #297255).
|
||||
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
|
||||
local mycmakeargstype=$(declare -p mycmakeargs 2>&-)
|
||||
if [[ "${mycmakeargstype}" != "declare -a mycmakeargs="* ]]; then
|
||||
if [[ -n "${mycmakeargstype}" ]] ; then
|
||||
if [[ ${EAPI} == [2345] ]]; then
|
||||
eqawarn "Declaring mycmakeargs as a variable is deprecated. Please use an array instead."
|
||||
else
|
||||
die "Declaring mycmakeargs as a variable is banned in EAPI=${EAPI}. Please use an array instead."
|
||||
fi
|
||||
fi
|
||||
local mycmakeargs_local=(${mycmakeargs})
|
||||
else
|
||||
local mycmakeargs_local=("${mycmakeargs[@]}")
|
||||
@ -555,7 +624,7 @@ enable_cmake-utils_src_configure() {
|
||||
local cmakeargs=(
|
||||
${warn_unused_cli}
|
||||
-C "${common_config}"
|
||||
-G "$(_generator_to_use)"
|
||||
-G "$(_cmake_generator_to_use)"
|
||||
-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}"
|
||||
"${mycmakeargs_local[@]}"
|
||||
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"
|
||||
@ -569,11 +638,11 @@ enable_cmake-utils_src_configure() {
|
||||
cmakeargs+=( -C "${CMAKE_EXTRA_CACHE_FILE}" )
|
||||
fi
|
||||
|
||||
pushd "${BUILD_DIR}" > /dev/null
|
||||
pushd "${BUILD_DIR}" > /dev/null || die
|
||||
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}"
|
||||
echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}"
|
||||
"${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed"
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
enable_cmake-utils_src_compile() {
|
||||
@ -604,11 +673,11 @@ _ninjaopts_from_makeopts() {
|
||||
export NINJAOPTS="${ninjaopts[*]}"
|
||||
}
|
||||
|
||||
# @FUNCTION: ninja_src_make
|
||||
# @FUNCTION: _cmake_ninja_src_make
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Build the package using ninja generator
|
||||
ninja_src_make() {
|
||||
_cmake_ninja_src_make() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ -e build.ninja ]] || die "build.ninja not found. Error during configure stage."
|
||||
@ -625,11 +694,11 @@ ninja_src_make() {
|
||||
"$@" || die
|
||||
}
|
||||
|
||||
# @FUNCTION: emake_src_make
|
||||
# @FUNCTION: _cmake_emake_src_make
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Build the package using make generator
|
||||
emake_src_make() {
|
||||
_cmake_emake_src_make() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ -e Makefile ]] || die "Makefile not found. Error during configure stage."
|
||||
@ -649,26 +718,26 @@ emake_src_make() {
|
||||
cmake-utils_src_make() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null
|
||||
_cmake_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null || die
|
||||
|
||||
${CMAKE_MAKEFILE_GENERATOR}_src_make "$@"
|
||||
_cmake_${CMAKE_MAKEFILE_GENERATOR}_src_make "$@"
|
||||
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
enable_cmake-utils_src_test() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null
|
||||
_cmake_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null || die
|
||||
[[ -e CTestTestfile.cmake ]] || { echo "No tests found. Skipping."; return 0 ; }
|
||||
|
||||
[[ -n ${TEST_VERBOSE} ]] && myctestargs+=( --extra-verbose --output-on-failure )
|
||||
|
||||
if ctest "${myctestargs[@]}" "$@" ; then
|
||||
einfo "Tests succeeded."
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
return 0
|
||||
else
|
||||
if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]] ; then
|
||||
@ -683,7 +752,7 @@ enable_cmake-utils_src_test() {
|
||||
fi
|
||||
|
||||
# die might not die due to nonfatal
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@ -691,21 +760,21 @@ enable_cmake-utils_src_test() {
|
||||
enable_cmake-utils_src_install() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null
|
||||
_cmake_check_build_dir
|
||||
pushd "${BUILD_DIR}" > /dev/null || die
|
||||
DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" || die "died running ${CMAKE_MAKEFILE_GENERATOR} install"
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
|
||||
pushd "${S}" > /dev/null
|
||||
pushd "${S}" > /dev/null || die
|
||||
einstalldocs
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_src_prepare
|
||||
# @DESCRIPTION:
|
||||
# Apply ebuild and user patches.
|
||||
cmake-utils_src_prepare() {
|
||||
_execute_optionally "src_prepare" "$@"
|
||||
_cmake_execute_optionally "src_prepare" "$@"
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_src_configure
|
||||
@ -713,7 +782,7 @@ cmake-utils_src_prepare() {
|
||||
# General function for configuring with cmake. Default behaviour is to start an
|
||||
# out-of-source build.
|
||||
cmake-utils_src_configure() {
|
||||
_execute_optionally "src_configure" "$@"
|
||||
_cmake_execute_optionally "src_configure" "$@"
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_src_compile
|
||||
@ -721,25 +790,25 @@ cmake-utils_src_configure() {
|
||||
# General function for compiling with cmake.
|
||||
# Automatically detects the build type. All arguments are passed to emake.
|
||||
cmake-utils_src_compile() {
|
||||
_execute_optionally "src_compile" "$@"
|
||||
_cmake_execute_optionally "src_compile" "$@"
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_src_test
|
||||
# @DESCRIPTION:
|
||||
# Function for testing the package. Automatically detects the build type.
|
||||
cmake-utils_src_test() {
|
||||
_execute_optionally "src_test" "$@"
|
||||
_cmake_execute_optionally "src_test" "$@"
|
||||
}
|
||||
|
||||
# @FUNCTION: cmake-utils_src_install
|
||||
# @DESCRIPTION:
|
||||
# Function for installing the package. Automatically detects the build type.
|
||||
cmake-utils_src_install() {
|
||||
_execute_optionally "src_install" "$@"
|
||||
_cmake_execute_optionally "src_install" "$@"
|
||||
}
|
||||
|
||||
# Optionally executes phases based on WANT_CMAKE variable/USE flag.
|
||||
_execute_optionally() {
|
||||
_cmake_execute_optionally() {
|
||||
local phase="$1" ; shift
|
||||
if [[ ${WANT_CMAKE} = always ]]; then
|
||||
enable_cmake-utils_${phase} "$@"
|
||||
|
@ -1,8 +1,8 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/distutils-r1.eclass,v 1.113 2015/02/20 17:57:22 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: distutils-r1
|
||||
# @ECLASS: distutils-r1.eclass
|
||||
# @MAINTAINER:
|
||||
# Python team <python@gentoo.org>
|
||||
# @AUTHOR:
|
||||
@ -40,14 +40,14 @@
|
||||
# as well. Thus, all the variables defined and documented there are
|
||||
# relevant to the packages using distutils-r1.
|
||||
#
|
||||
# For more information, please see the python-r1 Developer's Guide:
|
||||
# http://www.gentoo.org/proj/en/Python/python-r1/dev-guide.xml
|
||||
# For more information, please see the wiki:
|
||||
# https://wiki.gentoo.org/wiki/Project:Python/distutils-r1
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
0|1|2|3)
|
||||
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
|
||||
;;
|
||||
4|5)
|
||||
4|5|6)
|
||||
;;
|
||||
*)
|
||||
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
|
||||
@ -79,7 +79,8 @@ esac
|
||||
|
||||
if [[ ! ${_DISTUTILS_R1} ]]; then
|
||||
|
||||
inherit eutils toolchain-funcs
|
||||
[[ ${EAPI} == [45] ]] && inherit eutils
|
||||
inherit toolchain-funcs
|
||||
|
||||
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
|
||||
inherit multiprocessing python-r1
|
||||
@ -150,6 +151,8 @@ fi
|
||||
# @ECLASS-VARIABLE: EXAMPLES
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# OBSOLETE: this variable is deprecated and banned in EAPI 6
|
||||
#
|
||||
# An array containing examples installed into 'examples' doc
|
||||
# subdirectory. The files and directories listed there must exist
|
||||
# in the directory from which distutils-r1_python_install_all() is run
|
||||
@ -236,10 +239,13 @@ fi
|
||||
esetup.py() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
local die_args=()
|
||||
[[ ${EAPI} != [45] ]] && die_args+=( -n )
|
||||
|
||||
set -- "${PYTHON:-python}" setup.py "${mydistutilsargs[@]}" "${@}"
|
||||
|
||||
echo "${@}" >&2
|
||||
"${@}" || die
|
||||
"${@}" || die "${die_args[@]}" || return ${?}
|
||||
}
|
||||
|
||||
# @FUNCTION: distutils_install_for_testing
|
||||
@ -309,9 +315,12 @@ _distutils-r1_disable_ez_setup() {
|
||||
distutils-r1_python_prepare_all() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
|
||||
|
||||
epatch_user
|
||||
if [[ ${EAPI} != [45] ]]; then
|
||||
default
|
||||
else
|
||||
[[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
|
||||
epatch_user
|
||||
fi
|
||||
|
||||
# by default, use in-source build if python_prepare() is used
|
||||
if [[ ! ${DISTUTILS_IN_SOURCE_BUILD+1} ]]; then
|
||||
@ -337,7 +346,7 @@ distutils-r1_python_prepare_all() {
|
||||
distutils-r1_python_prepare() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
:
|
||||
[[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)"
|
||||
}
|
||||
|
||||
# @FUNCTION: distutils-r1_python_configure
|
||||
@ -346,7 +355,7 @@ distutils-r1_python_prepare() {
|
||||
distutils-r1_python_configure() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
:
|
||||
[[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)"
|
||||
}
|
||||
|
||||
# @FUNCTION: _distutils-r1_create_setup_cfg
|
||||
@ -410,7 +419,7 @@ _distutils-r1_create_setup_cfg() {
|
||||
_distutils-r1_copy_egg_info() {
|
||||
mkdir -p "${BUILD_DIR}" || die
|
||||
# stupid freebsd can't do 'cp -t ${BUILD_DIR} {} +'
|
||||
find -name '*.egg-info' -type d -exec cp -pr {} "${BUILD_DIR}"/ ';' || die
|
||||
find -name '*.egg-info' -type d -exec cp -R -p {} "${BUILD_DIR}"/ ';' || die
|
||||
}
|
||||
|
||||
# @FUNCTION: distutils-r1_python_compile
|
||||
@ -505,7 +514,7 @@ distutils-r1_python_install() {
|
||||
|
||||
# python likes to compile any module it sees, which triggers sandbox
|
||||
# failures if some packages haven't compiled their modules yet.
|
||||
addpredict "$(python_get_sitedir)"
|
||||
addpredict "${EPREFIX}/usr/$(get_libdir)/${EPYTHON}"
|
||||
addpredict /usr/lib/portage/pym
|
||||
addpredict /usr/local # bug 498232
|
||||
|
||||
@ -549,11 +558,17 @@ distutils-r1_python_install() {
|
||||
|
||||
esetup.py install --root="${root}" "${args[@]}"
|
||||
|
||||
if [[ -d ${root}$(python_get_sitedir)/tests ]]; then
|
||||
die "Package installs 'tests' package, file collisions likely."
|
||||
fi
|
||||
local forbidden_package_names=( examples test tests )
|
||||
local p
|
||||
for p in "${forbidden_package_names[@]}"; do
|
||||
if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then
|
||||
die "Package installs '${p}' package which is forbidden and likely a bug in the build system."
|
||||
fi
|
||||
done
|
||||
if [[ -d ${root}/usr/$(get_libdir)/pypy/share ]]; then
|
||||
eqawarn "Package installs 'share' in PyPy prefix, see bug #465546."
|
||||
local cmd=die
|
||||
[[ ${EAPI} == [45] ]] && cmd=eqawarn
|
||||
"${cmd}" "Package installs 'share' in PyPy prefix, see bug #465546."
|
||||
fi
|
||||
|
||||
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
|
||||
@ -571,6 +586,8 @@ distutils-r1_python_install_all() {
|
||||
einstalldocs
|
||||
|
||||
if declare -p EXAMPLES &>/dev/null; then
|
||||
[[ ${EAPI} != [45] ]] && die "EXAMPLES are banned in EAPI ${EAPI}"
|
||||
|
||||
local INSDESTTREE=/usr/share/doc/${PF}/examples
|
||||
doins -r "${EXAMPLES[@]}"
|
||||
docompress -x "${INSDESTTREE}"
|
||||
@ -603,6 +620,14 @@ distutils-r1_run_phase() {
|
||||
fi
|
||||
local -x PYTHONPATH="${BUILD_DIR}/lib:${PYTHONPATH}"
|
||||
|
||||
# Bug 559644
|
||||
# using PYTHONPATH when the ${BUILD_DIR}/lib is not created yet might lead to
|
||||
# problems in setup.py scripts that try to import modules/packages from that path
|
||||
# during the build process (Python at startup evaluates PYTHONPATH, if the dir is
|
||||
# not valid then associates a NullImporter object to ${BUILD_DIR}/lib storing it
|
||||
# in the sys.path_importer_cache)
|
||||
mkdir -p "${BUILD_DIR}/lib" || die
|
||||
|
||||
# We need separate home for each implementation, for .pydistutils.cfg.
|
||||
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
|
||||
local -x HOME=${HOME}/${EPYTHON}
|
||||
@ -653,6 +678,7 @@ _distutils-r1_run_common_phase() {
|
||||
done
|
||||
}
|
||||
python_foreach_impl _distutils_try_impl
|
||||
unset -f _distutils_try_impl
|
||||
|
||||
local PYTHON_COMPAT=( "${best_impl}" )
|
||||
fi
|
||||
@ -669,6 +695,8 @@ _distutils-r1_run_foreach_impl() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
if [[ ${DISTUTILS_NO_PARALLEL_BUILD} ]]; then
|
||||
[[ ${EAPI} == [45] ]] || die "DISTUTILS_NO_PARALLEL_BUILD is banned in EAPI ${EAPI}"
|
||||
|
||||
eqawarn "DISTUTILS_NO_PARALLEL_BUILD is no longer meaningful. Now all builds"
|
||||
eqawarn "are non-parallel. Please remove it from the ebuild."
|
||||
|
||||
@ -705,7 +733,10 @@ distutils-r1_src_prepare() {
|
||||
fi
|
||||
|
||||
if [[ ! ${_DISTUTILS_DEFAULT_CALLED} ]]; then
|
||||
eqawarn "QA warning: python_prepare_all() didn't call distutils-r1_python_prepare_all"
|
||||
local cmd=die
|
||||
[[ ${EAPI} == [45] ]] && cmd=eqawarn
|
||||
|
||||
"${cmd}" "QA: python_prepare_all() didn't call distutils-r1_python_prepare_all"
|
||||
fi
|
||||
|
||||
if declare -f python_prepare >/dev/null; then
|
||||
@ -776,7 +807,10 @@ distutils-r1_src_install() {
|
||||
fi
|
||||
|
||||
if [[ ! ${_DISTUTILS_DEFAULT_CALLED} ]]; then
|
||||
eqawarn "QA warning: python_install_all() didn't call distutils-r1_python_install_all"
|
||||
local cmd=die
|
||||
[[ ${EAPI} == [45] ]] && cmd=eqawarn
|
||||
|
||||
"${cmd}" "QA: python_install_all() didn't call distutils-r1_python_install_all"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/elisp.eclass,v 1.59 2015/05/24 21:46:16 ulm Exp $
|
||||
# $Id$
|
||||
#
|
||||
# @ECLASS: elisp.eclass
|
||||
# @MAINTAINER:
|
||||
# Gentoo GNU Emacs project <emacs@gentoo.org>
|
||||
# Gentoo GNU Emacs project <gnu-emacs@gentoo.org>
|
||||
# @AUTHOR:
|
||||
# Matthew Kennedy <mkennedy@gentoo.org>
|
||||
# Jeremy Maitin-Shepard <jbms@attbi.com>
|
||||
@ -65,13 +65,21 @@
|
||||
# DOCS="blah.txt ChangeLog" is automatically used to install the given
|
||||
# files by dodoc in src_install().
|
||||
|
||||
inherit elisp-common eutils
|
||||
inherit elisp-common
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
0|1) EXPORT_FUNCTIONS src_{unpack,compile,install} \
|
||||
pkg_{setup,postinst,postrm} ;;
|
||||
*) EXPORT_FUNCTIONS src_{unpack,prepare,configure,compile,install} \
|
||||
pkg_{setup,postinst,postrm} ;;
|
||||
case ${EAPI:-0} in
|
||||
0|1)
|
||||
inherit eutils
|
||||
EXPORT_FUNCTIONS src_{unpack,compile,install} \
|
||||
pkg_{setup,postinst,postrm} ;;
|
||||
2|3|4|5)
|
||||
inherit eutils
|
||||
EXPORT_FUNCTIONS src_{unpack,prepare,configure,compile,install} \
|
||||
pkg_{setup,postinst,postrm} ;;
|
||||
6)
|
||||
EXPORT_FUNCTIONS src_{unpack,prepare,configure,compile,install} \
|
||||
pkg_{setup,postinst,postrm} ;;
|
||||
*) die "${ECLASS}: EAPI ${EAPI} not supported" ;;
|
||||
esac
|
||||
|
||||
DEPEND=">=virtual/emacs-${NEED_EMACS:-23}"
|
||||
@ -105,7 +113,7 @@ elisp_src_unpack() {
|
||||
[[ -d ${S} ]] || S=${WORKDIR}
|
||||
fi
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
case ${EAPI:-0} in
|
||||
0|1) [[ -d ${S} ]] && cd "${S}"
|
||||
elisp_src_prepare ;;
|
||||
esac
|
||||
@ -117,21 +125,28 @@ elisp_src_unpack() {
|
||||
# for in the current working dir, WORKDIR, and FILESDIR.
|
||||
|
||||
elisp_src_prepare() {
|
||||
local patch
|
||||
local patch file
|
||||
for patch in ${ELISP_PATCHES}; do
|
||||
if [[ -f ${patch} ]]; then
|
||||
epatch "${patch}"
|
||||
file="${patch}"
|
||||
elif [[ -f ${WORKDIR}/${patch} ]]; then
|
||||
epatch "${WORKDIR}/${patch}"
|
||||
file="${WORKDIR}/${patch}"
|
||||
elif [[ -f ${FILESDIR}/${patch} ]]; then
|
||||
epatch "${FILESDIR}/${patch}"
|
||||
file="${FILESDIR}/${patch}"
|
||||
else
|
||||
die "Cannot find ${patch}"
|
||||
fi
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4|5) epatch "${file}" ;;
|
||||
6) eapply "${file}" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# apply any user patches
|
||||
epatch_user
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4|5) epatch_user ;;
|
||||
6) eapply_user ;;
|
||||
esac
|
||||
|
||||
if [[ -n ${ELISP_REMOVE} ]]; then
|
||||
rm ${ELISP_REMOVE} || die
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.444 2015/03/20 18:28:11 vapier Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: eutils.eclass
|
||||
# @MAINTAINER:
|
||||
@ -20,50 +20,6 @@ _EUTILS_ECLASS=1
|
||||
|
||||
inherit multilib toolchain-funcs
|
||||
|
||||
if has "${EAPI:-0}" 0 1 2; then
|
||||
|
||||
# @FUNCTION: epause
|
||||
# @USAGE: [seconds]
|
||||
# @DESCRIPTION:
|
||||
# Sleep for the specified number of seconds (default of 5 seconds). Useful when
|
||||
# printing a message the user should probably be reading and often used in
|
||||
# conjunction with the ebeep function. If the EPAUSE_IGNORE env var is set,
|
||||
# don't wait at all. Defined in EAPIs 0 1 and 2.
|
||||
epause() {
|
||||
[[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
|
||||
}
|
||||
|
||||
# @FUNCTION: ebeep
|
||||
# @USAGE: [number of beeps]
|
||||
# @DESCRIPTION:
|
||||
# Issue the specified number of beeps (default of 5 beeps). Useful when
|
||||
# printing a message the user should probably be reading and often used in
|
||||
# conjunction with the epause function. If the EBEEP_IGNORE env var is set,
|
||||
# don't beep at all. Defined in EAPIs 0 1 and 2.
|
||||
ebeep() {
|
||||
local n
|
||||
if [[ -z ${EBEEP_IGNORE} ]] ; then
|
||||
for ((n=1 ; n <= ${1:-5} ; n++)) ; do
|
||||
echo -ne "\a"
|
||||
sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
|
||||
echo -ne "\a"
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
ebeep() {
|
||||
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
|
||||
}
|
||||
|
||||
epause() {
|
||||
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org"
|
||||
}
|
||||
|
||||
fi
|
||||
|
||||
# @FUNCTION: eqawarn
|
||||
# @USAGE: [message]
|
||||
# @DESCRIPTION:
|
||||
@ -83,7 +39,7 @@ fi
|
||||
# Remove CVS directories recursiveley. Useful when a source tarball contains
|
||||
# internal CVS directories. Defaults to $PWD.
|
||||
ecvs_clean() {
|
||||
[[ -z $* ]] && set -- .
|
||||
[[ $# -eq 0 ]] && set -- .
|
||||
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf
|
||||
find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
|
||||
}
|
||||
@ -94,10 +50,20 @@ ecvs_clean() {
|
||||
# Remove .svn directories recursiveley. Useful when a source tarball contains
|
||||
# internal Subversion directories. Defaults to $PWD.
|
||||
esvn_clean() {
|
||||
[[ -z $* ]] && set -- .
|
||||
[[ $# -eq 0 ]] && set -- .
|
||||
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
|
||||
}
|
||||
|
||||
# @FUNCTION: egit_clean
|
||||
# @USAGE: [list of dirs]
|
||||
# @DESCRIPTION:
|
||||
# Remove .git* directories/files recursiveley. Useful when a source tarball
|
||||
# contains internal Git directories. Defaults to $PWD.
|
||||
egit_clean() {
|
||||
[[ $# -eq 0 ]] && set -- .
|
||||
find "$@" -type d -name '.git*' -prune -print0 | xargs -0 rm -rf
|
||||
}
|
||||
|
||||
# @FUNCTION: estack_push
|
||||
# @USAGE: <stack> [items to push]
|
||||
# @DESCRIPTION:
|
||||
@ -143,7 +109,7 @@ estack_pop() {
|
||||
if [[ -n ${_estack_retvar} ]] ; then
|
||||
eval ${_estack_retvar}=\"\${${_estack_name}\[${_estack_i}\]}\"
|
||||
fi
|
||||
eval unset ${_estack_name}\[${_estack_i}\]
|
||||
eval unset \"${_estack_name}\[${_estack_i}\]\"
|
||||
}
|
||||
|
||||
# @FUNCTION: evar_push
|
||||
@ -591,7 +557,7 @@ epatch() {
|
||||
(
|
||||
_epatch_draw_line "***** ${patchname} *****"
|
||||
echo
|
||||
echo "PATCH COMMAND: ${patch_cmd} < '${PATCH_TARGET}'"
|
||||
echo "PATCH COMMAND: ${patch_cmd} --dry-run -f < '${PATCH_TARGET}'"
|
||||
echo
|
||||
_epatch_draw_line "***** ${patchname} *****"
|
||||
${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1
|
||||
@ -606,6 +572,7 @@ epatch() {
|
||||
_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
|
||||
@ -662,69 +629,6 @@ epatch() {
|
||||
: # everything worked
|
||||
}
|
||||
|
||||
# @FUNCTION: epatch_user
|
||||
# @USAGE:
|
||||
# @DESCRIPTION:
|
||||
# Applies user-provided patches to the source tree. The patches are
|
||||
# taken from /etc/portage/patches/<CATEGORY>/<P-PR|P|PN>[:SLOT]/, where the first
|
||||
# of these three directories to exist will be the one to use, ignoring
|
||||
# any more general directories which might exist as well. They must end
|
||||
# in ".patch" to be applied.
|
||||
#
|
||||
# User patches are intended for quick testing of patches without ebuild
|
||||
# modifications, as well as for permanent customizations a user might
|
||||
# desire. Obviously, there can be no official support for arbitrarily
|
||||
# patched ebuilds. So whenever a build log in a bug report mentions that
|
||||
# user patches were applied, the user should be asked to reproduce the
|
||||
# problem without these.
|
||||
#
|
||||
# Not all ebuilds do call this function, so placing patches in the
|
||||
# stated directory might or might not work, depending on the package and
|
||||
# the eclasses it inherits and uses. It is safe to call the function
|
||||
# repeatedly, so it is always possible to add a call at the ebuild
|
||||
# level. The first call is the time when the patches will be
|
||||
# applied.
|
||||
#
|
||||
# Ideally, this function should be called after gentoo-specific patches
|
||||
# have been applied, so that their code can be modified as well, but
|
||||
# before calls to e.g. eautoreconf, as the user patches might affect
|
||||
# autotool input files as well.
|
||||
epatch_user() {
|
||||
[[ $# -ne 0 ]] && die "epatch_user takes no options"
|
||||
|
||||
# Allow multiple calls to this function; ignore all but the first
|
||||
local applied="${T}/epatch_user.log"
|
||||
[[ -e ${applied} ]] && return 2
|
||||
|
||||
# don't clobber any EPATCH vars that the parent might want
|
||||
local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches
|
||||
for check in ${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT}}; do
|
||||
EPATCH_SOURCE=${base}/${CTARGET}/${check}
|
||||
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check}
|
||||
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check}
|
||||
if [[ -d ${EPATCH_SOURCE} ]] ; then
|
||||
EPATCH_SOURCE=${EPATCH_SOURCE} \
|
||||
EPATCH_SUFFIX="patch" \
|
||||
EPATCH_FORCE="yes" \
|
||||
EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." \
|
||||
epatch
|
||||
echo "${EPATCH_SOURCE}" > "${applied}"
|
||||
has epatch_user_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" epatch_user_death_notice"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "none" > "${applied}"
|
||||
return 1
|
||||
}
|
||||
# @FUNCTION: epatch_user_death_notice
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Include an explicit notice in the die message itself that user patches were
|
||||
# applied to this build.
|
||||
epatch_user_death_notice() {
|
||||
ewarn "!!! User patches were applied to this build!"
|
||||
}
|
||||
|
||||
# @FUNCTION: emktemp
|
||||
# @USAGE: [temp dir]
|
||||
# @DESCRIPTION:
|
||||
@ -1396,20 +1300,34 @@ built_with_use() {
|
||||
[[ ${opt} = "-a" ]]
|
||||
}
|
||||
|
||||
# If an overlay has eclass overrides, but doesn't actually override the
|
||||
# libtool.eclass, we'll have ECLASSDIR pointing to the active overlay's
|
||||
# eclass/ dir, but libtool.eclass is still in the main Gentoo tree. So
|
||||
# add a check to locate the ELT-patches/ regardless of what's going on.
|
||||
# Note: Duplicated in libtool.eclass.
|
||||
_EUTILS_ECLASSDIR_LOCAL=${BASH_SOURCE[0]%/*}
|
||||
eutils_elt_patch_dir() {
|
||||
local d="${ECLASSDIR}/ELT-patches"
|
||||
if [[ ! -d ${d} ]] ; then
|
||||
d="${_EUTILS_ECLASSDIR_LOCAL}/ELT-patches"
|
||||
fi
|
||||
echo "${d}"
|
||||
}
|
||||
|
||||
# @FUNCTION: epunt_cxx
|
||||
# @USAGE: [dir to scan]
|
||||
# @DESCRIPTION:
|
||||
# Many configure scripts wrongly bail when a C++ compiler could not be
|
||||
# detected. If dir is not specified, then it defaults to ${S}.
|
||||
#
|
||||
# http://bugs.gentoo.org/73450
|
||||
# https://bugs.gentoo.org/73450
|
||||
epunt_cxx() {
|
||||
local dir=$1
|
||||
[[ -z ${dir} ]] && dir=${S}
|
||||
ebegin "Removing useless C++ checks"
|
||||
local f p any_found
|
||||
while IFS= read -r -d '' f; do
|
||||
for p in "${PORTDIR}"/eclass/ELT-patches/nocxx/*.patch ; do
|
||||
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
|
||||
@ -1498,23 +1416,6 @@ path_exists() {
|
||||
esac
|
||||
}
|
||||
|
||||
# @FUNCTION: in_iuse
|
||||
# @USAGE: <flag>
|
||||
# @DESCRIPTION:
|
||||
# Determines whether the given flag is in IUSE. Strips IUSE default prefixes
|
||||
# as necessary.
|
||||
#
|
||||
# Note that this function should not be used in the global scope.
|
||||
in_iuse() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
[[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()"
|
||||
|
||||
local flag=${1}
|
||||
local liuse=( ${IUSE} )
|
||||
|
||||
has "${flag}" "${liuse[@]#[+-]}"
|
||||
}
|
||||
|
||||
# @FUNCTION: use_if_iuse
|
||||
# @USAGE: <flag>
|
||||
# @DESCRIPTION:
|
||||
@ -1526,17 +1427,6 @@ use_if_iuse() {
|
||||
use $1
|
||||
}
|
||||
|
||||
# @FUNCTION: usex
|
||||
# @USAGE: <USE flag> [true output] [false output] [true suffix] [false suffix]
|
||||
# @DESCRIPTION:
|
||||
# Proxy to declare usex for package managers or EAPIs that do not provide it
|
||||
# and use the package manager implementation when available (i.e. EAPI >= 5).
|
||||
# If USE flag is set, echo [true output][true suffix] (defaults to "yes"),
|
||||
# otherwise echo [false output][false suffix] (defaults to "no").
|
||||
if has "${EAPI:-0}" 0 1 2 3 4; then
|
||||
usex() { use "$1" && echo "${2-yes}$4" || echo "${3-no}$5" ; } #382963
|
||||
fi
|
||||
|
||||
# @FUNCTION: prune_libtool_files
|
||||
# @USAGE: [--all|--modules]
|
||||
# @DESCRIPTION:
|
||||
@ -1683,6 +1573,192 @@ prune_libtool_files() {
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: optfeature
|
||||
# @USAGE: <short description> <package atom to match> [other atoms]
|
||||
# @DESCRIPTION:
|
||||
# Print out a message suggesting an optional package (or packages) which
|
||||
# provide the described functionality
|
||||
#
|
||||
# The following snippet would suggest app-misc/foo for optional foo support,
|
||||
# app-misc/bar or app-misc/baz[bar] for optional bar support
|
||||
# and either both app-misc/a and app-misc/b or app-misc/c for alphabet support.
|
||||
# @CODE
|
||||
# optfeature "foo support" app-misc/foo
|
||||
# optfeature "bar support" app-misc/bar app-misc/baz[bar]
|
||||
# optfeature "alphabet support" "app-misc/a app-misc/b" app-misc/c
|
||||
# @CODE
|
||||
optfeature() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
local i j msg
|
||||
local desc=$1
|
||||
local flag=0
|
||||
shift
|
||||
for i; 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; do
|
||||
msg=" "
|
||||
for j in ${i}; do
|
||||
msg+=" ${j} and"
|
||||
done
|
||||
msg="${msg:0: -4} for ${desc}"
|
||||
elog "${msg}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
fi
|
||||
|
||||
check_license() {
|
||||
die "you no longer need this as portage supports ACCEPT_LICENSE itself"
|
||||
}
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2)
|
||||
|
||||
# @FUNCTION: epause
|
||||
# @USAGE: [seconds]
|
||||
# @DESCRIPTION:
|
||||
# Sleep for the specified number of seconds (default of 5 seconds). Useful when
|
||||
# printing a message the user should probably be reading and often used in
|
||||
# conjunction with the ebeep function. If the EPAUSE_IGNORE env var is set,
|
||||
# don't wait at all. Defined in EAPIs 0 1 and 2.
|
||||
epause() {
|
||||
[[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
|
||||
}
|
||||
|
||||
# @FUNCTION: ebeep
|
||||
# @USAGE: [number of beeps]
|
||||
# @DESCRIPTION:
|
||||
# Issue the specified number of beeps (default of 5 beeps). Useful when
|
||||
# printing a message the user should probably be reading and often used in
|
||||
# conjunction with the epause function. If the EBEEP_IGNORE env var is set,
|
||||
# don't beep at all. Defined in EAPIs 0 1 and 2.
|
||||
ebeep() {
|
||||
local n
|
||||
if [[ -z ${EBEEP_IGNORE} ]] ; then
|
||||
for ((n=1 ; n <= ${1:-5} ; n++)) ; do
|
||||
echo -ne "\a"
|
||||
sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
|
||||
echo -ne "\a"
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
;;
|
||||
*)
|
||||
|
||||
ebeep() {
|
||||
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
|
||||
}
|
||||
|
||||
epause() {
|
||||
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
|
||||
}
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4)
|
||||
|
||||
# @FUNCTION: usex
|
||||
# @USAGE: <USE flag> [true output] [false output] [true suffix] [false suffix]
|
||||
# @DESCRIPTION:
|
||||
# Proxy to declare usex for package managers or EAPIs that do not provide it
|
||||
# and use the package manager implementation when available (i.e. EAPI >= 5).
|
||||
# If USE flag is set, echo [true output][true suffix] (defaults to "yes"),
|
||||
# otherwise echo [false output][false suffix] (defaults to "no").
|
||||
usex() { use "$1" && echo "${2-yes}$4" || echo "${3-no}$5" ; } #382963
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4|5)
|
||||
|
||||
# @VARIABLE: EPATCH_USER_SOURCE
|
||||
# @DESCRIPTION:
|
||||
# Location for user patches, see the epatch_user function.
|
||||
# Should be set by the user. Don't set this in ebuilds.
|
||||
: ${EPATCH_USER_SOURCE:=${PORTAGE_CONFIGROOT%/}/etc/portage/patches}
|
||||
|
||||
# @FUNCTION: epatch_user
|
||||
# @USAGE:
|
||||
# @DESCRIPTION:
|
||||
# Applies user-provided patches to the source tree. The patches are
|
||||
# taken from /etc/portage/patches/<CATEGORY>/<P-PR|P|PN>[:SLOT]/, where the first
|
||||
# of these three directories to exist will be the one to use, ignoring
|
||||
# any more general directories which might exist as well. They must end
|
||||
# in ".patch" to be applied.
|
||||
#
|
||||
# User patches are intended for quick testing of patches without ebuild
|
||||
# modifications, as well as for permanent customizations a user might
|
||||
# desire. Obviously, there can be no official support for arbitrarily
|
||||
# patched ebuilds. So whenever a build log in a bug report mentions that
|
||||
# user patches were applied, the user should be asked to reproduce the
|
||||
# problem without these.
|
||||
#
|
||||
# Not all ebuilds do call this function, so placing patches in the
|
||||
# stated directory might or might not work, depending on the package and
|
||||
# the eclasses it inherits and uses. It is safe to call the function
|
||||
# repeatedly, so it is always possible to add a call at the ebuild
|
||||
# level. The first call is the time when the patches will be
|
||||
# applied.
|
||||
#
|
||||
# Ideally, this function should be called after gentoo-specific patches
|
||||
# have been applied, so that their code can be modified as well, but
|
||||
# before calls to e.g. eautoreconf, as the user patches might affect
|
||||
# autotool input files as well.
|
||||
epatch_user() {
|
||||
[[ $# -ne 0 ]] && die "epatch_user takes no options"
|
||||
|
||||
# Allow multiple calls to this function; ignore all but the first
|
||||
local applied="${T}/epatch_user.log"
|
||||
[[ -e ${applied} ]] && return 2
|
||||
|
||||
# don't clobber any EPATCH vars that the parent might want
|
||||
local EPATCH_SOURCE check
|
||||
for check in ${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/*}}; do
|
||||
EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${CTARGET}/${check}
|
||||
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${CHOST}/${check}
|
||||
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${check}
|
||||
if [[ -d ${EPATCH_SOURCE} ]] ; then
|
||||
EPATCH_SOURCE=${EPATCH_SOURCE} \
|
||||
EPATCH_SUFFIX="patch" \
|
||||
EPATCH_FORCE="yes" \
|
||||
EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." \
|
||||
epatch
|
||||
echo "${EPATCH_SOURCE}" > "${applied}"
|
||||
has epatch_user_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" epatch_user_death_notice"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "none" > "${applied}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# @FUNCTION: epatch_user_death_notice
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Include an explicit notice in the die message itself that user patches were
|
||||
# applied to this build.
|
||||
epatch_user_death_notice() {
|
||||
ewarn "!!! User patches were applied to this build!"
|
||||
}
|
||||
|
||||
# @FUNCTION: einstalldocs
|
||||
# @DESCRIPTION:
|
||||
# Install documentation using DOCS and HTML_DOCS.
|
||||
@ -1744,51 +1820,22 @@ einstalldocs() {
|
||||
return 0
|
||||
}
|
||||
|
||||
check_license() { die "you no longer need this as portage supports ACCEPT_LICENSE itself"; }
|
||||
|
||||
# @FUNCTION: optfeature
|
||||
# @USAGE: <short description> <package atom to match> [other atoms]
|
||||
# @FUNCTION: in_iuse
|
||||
# @USAGE: <flag>
|
||||
# @DESCRIPTION:
|
||||
# Print out a message suggesting an optional package (or packages) which
|
||||
# provide the described functionality
|
||||
# Determines whether the given flag is in IUSE. Strips IUSE default prefixes
|
||||
# as necessary.
|
||||
#
|
||||
# The following snippet would suggest app-misc/foo for optional foo support,
|
||||
# app-misc/bar or app-misc/baz[bar] for optional bar support
|
||||
# and either both app-misc/a and app-misc/b or app-misc/c for alphabet support.
|
||||
# @CODE
|
||||
# optfeature "foo support" app-misc/foo
|
||||
# optfeature "bar support" app-misc/bar app-misc/baz[bar]
|
||||
# optfeature "alphabet support" "app-misc/a app-misc/b" app-misc/c
|
||||
# @CODE
|
||||
optfeature() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
local i j msg
|
||||
local desc=$1
|
||||
local flag=0
|
||||
shift
|
||||
for i; 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; do
|
||||
msg=" "
|
||||
for j in ${i}; do
|
||||
msg+=" ${j} and"
|
||||
done
|
||||
msg="${msg:0: -4} for ${desc}"
|
||||
elog "${msg}"
|
||||
done
|
||||
fi
|
||||
# Note that this function should not be used in the global scope.
|
||||
in_iuse() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
[[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()"
|
||||
|
||||
local flag=${1}
|
||||
local liuse=( ${IUSE} )
|
||||
|
||||
has "${flag}" "${liuse[@]#[+-]}"
|
||||
}
|
||||
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.206 2015/05/24 07:05:30 vapier Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: flag-o-matic.eclass
|
||||
# @MAINTAINER:
|
||||
@ -23,48 +23,50 @@ all-flag-vars() {
|
||||
# {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
|
||||
# Note: shell globs and character lists are allowed
|
||||
setup-allowed-flags() {
|
||||
ALLOWED_FLAGS="-pipe"
|
||||
ALLOWED_FLAGS+=" -O -O1 -O2 -Os -Og -mcpu -march -mtune"
|
||||
ALLOWED_FLAGS+=" -fstack-protector* -fsanitize=*"
|
||||
ALLOWED_FLAGS+=" -fbounds-check -fbounds-checking -fno-strict-overflow"
|
||||
ALLOWED_FLAGS+=" -fno-PIE -fno-pie -nopie -fno-unit-at-a-time"
|
||||
ALLOWED_FLAGS+=" -g -g[0-9] -ggdb -ggdb[0-9] -gdwarf-* gstabs -gstabs+"
|
||||
ALLOWED_FLAGS+=" -fno-ident -fpermissive -frecord-gcc-switches"
|
||||
ALLOWED_FLAGS+=" -fdiagnostics*"
|
||||
ALLOWED_FLAGS+=" -W* -w"
|
||||
ALLOWED_FLAGS=(
|
||||
-pipe -O '-O[12sg]' -mcpu -march -mtune
|
||||
'-fstack-protector*' '-fsanitize*'
|
||||
-fbounds-check -fbounds-checking -fno-strict-overflow
|
||||
-fno-PIE -fno-pie -nopie -fno-unit-at-a-time
|
||||
-g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+
|
||||
-fno-ident -fpermissive -frecord-gcc-switches
|
||||
'-fdiagnostics*'
|
||||
'-W*' -w
|
||||
|
||||
# CPPFLAGS and LDFLAGS
|
||||
'-[DUILR]*' '-Wl,*'
|
||||
)
|
||||
|
||||
# allow a bunch of flags that negate features / control ABI
|
||||
ALLOWED_FLAGS+=" -fno-stack-protector* -fabi-version=* \
|
||||
-fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow \
|
||||
-fno-omit-frame-pointer -fno-builtin*"
|
||||
ALLOWED_FLAGS+=" -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse \
|
||||
-mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 \
|
||||
-mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt \
|
||||
-mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \
|
||||
-msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \
|
||||
-mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe \
|
||||
-mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat \
|
||||
-mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi \
|
||||
-mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel \
|
||||
-mstack-bias -mno-stack-bias -msecure-plt -m*-toc -mfloat-abi \
|
||||
-mfix-r10000 -mno-fix-r10000 -D* -U*"
|
||||
ALLOWED_FLAGS+=(
|
||||
'-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
|
||||
|
||||
# 4.5
|
||||
ALLOWED_FLAGS+=" -mno-fma4 -mno-movbe -mno-xop -mno-lwp"
|
||||
# 4.6
|
||||
ALLOWED_FLAGS+=" -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm"
|
||||
# 4.7
|
||||
ALLOWED_FLAGS+=" -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt"
|
||||
# 4.8
|
||||
ALLOWED_FLAGS+=" -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt"
|
||||
# 4.9
|
||||
ALLOWED_FLAGS+=" -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha"
|
||||
|
||||
# CPPFLAGS and LDFLAGS
|
||||
ALLOWED_FLAGS+=" -I* -L* -R* -Wl,*"
|
||||
|
||||
export ALLOWED_FLAGS
|
||||
return 0
|
||||
# gcc 4.5
|
||||
-mno-fma4 -mno-movbe -mno-xop -mno-lwp
|
||||
# gcc 4.6
|
||||
-mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm
|
||||
# gcc 4.7
|
||||
-mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt
|
||||
# gcc 4.8
|
||||
-mno-fxsr -mno-hle -mno-rtm -mno-xsave -mno-xsaveopt
|
||||
# gcc 4.9
|
||||
-mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha
|
||||
)
|
||||
}
|
||||
|
||||
# inverted filters for hardened compiler. This is trying to unpick
|
||||
@ -375,6 +377,7 @@ filter-mfpmath() {
|
||||
strip-flags() {
|
||||
local x y var
|
||||
|
||||
local ALLOWED_FLAGS
|
||||
setup-allowed-flags
|
||||
|
||||
set -f # disable pathname expansion
|
||||
@ -384,7 +387,7 @@ strip-flags() {
|
||||
|
||||
for x in ${!var} ; do
|
||||
local flag=${x%%=*}
|
||||
for y in ${ALLOWED_FLAGS} ; do
|
||||
for y in "${ALLOWED_FLAGS[@]}" ; do
|
||||
if [[ -z ${flag%%${y}} ]] ; then
|
||||
new+=( "${x}" )
|
||||
break
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/git-2.eclass,v 1.35 2014/11/20 15:32:09 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: git-2.eclass
|
||||
# @MAINTAINER:
|
||||
@ -13,6 +13,10 @@
|
||||
#
|
||||
# This eclass is DEPRECATED. Please use git-r3 instead.
|
||||
|
||||
if [[ ${EAPI} == 6 ]]; then
|
||||
die "${ECLASS}.eclass is banned in EAPI ${EAPI}"
|
||||
fi
|
||||
|
||||
# This eclass support all EAPIs
|
||||
EXPORT_FUNCTIONS src_unpack
|
||||
|
||||
@ -180,7 +184,7 @@ git-2_submodules() {
|
||||
fi
|
||||
|
||||
debug-print "${FUNCNAME}: working in \"${1}\""
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
|
||||
debug-print "${FUNCNAME}: git submodule init"
|
||||
git submodule init || die
|
||||
@ -189,7 +193,7 @@ git-2_submodules() {
|
||||
debug-print "${FUNCNAME}: git submodule update"
|
||||
git submodule update || die
|
||||
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
}
|
||||
|
||||
@ -204,7 +208,7 @@ git-2_branch() {
|
||||
local branchname src
|
||||
|
||||
debug-print "${FUNCNAME}: working in \"${EGIT_SOURCEDIR}\""
|
||||
pushd "${EGIT_SOURCEDIR}" > /dev/null
|
||||
pushd "${EGIT_SOURCEDIR}" > /dev/null || die
|
||||
|
||||
local branchname=branch-${EGIT_BRANCH} src=origin/${EGIT_BRANCH}
|
||||
if [[ ${EGIT_COMMIT} != ${EGIT_BRANCH} ]]; then
|
||||
@ -215,7 +219,7 @@ git-2_branch() {
|
||||
git checkout -b ${branchname} ${src} \
|
||||
|| die "${FUNCNAME}: changing the branch failed"
|
||||
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
# @FUNCTION: git-2_gc
|
||||
@ -228,13 +232,13 @@ git-2_gc() {
|
||||
local args
|
||||
|
||||
if [[ ${EGIT_REPACK} || ${EGIT_PRUNE} ]]; then
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
ebegin "Garbage collecting the repository"
|
||||
[[ ${EGIT_PRUNE} ]] && args='--prune'
|
||||
debug-print "${FUNCNAME}: git gc ${args}"
|
||||
git gc ${args}
|
||||
eend $?
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
}
|
||||
|
||||
@ -306,12 +310,12 @@ git-2_move_source() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
debug-print "${FUNCNAME}: ${MOVE_COMMAND} \"${EGIT_DIR}\" \"${EGIT_SOURCEDIR}\""
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
mkdir -p "${EGIT_SOURCEDIR}" \
|
||||
|| die "${FUNCNAME}: failed to create ${EGIT_SOURCEDIR}"
|
||||
${MOVE_COMMAND} "${EGIT_SOURCEDIR}" \
|
||||
|| die "${FUNCNAME}: sync to \"${EGIT_SOURCEDIR}\" failed"
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
# @FUNCTION: git-2_initial_clone
|
||||
@ -388,22 +392,22 @@ git-2_fetch() {
|
||||
|
||||
if [[ ! -d ${EGIT_DIR} ]]; then
|
||||
git-2_initial_clone
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
cursha=$(git rev-parse ${UPSTREAM_BRANCH})
|
||||
echo "GIT NEW clone -->"
|
||||
echo " repository: ${EGIT_REPO_URI_SELECTED}"
|
||||
echo " at the commit: ${cursha}"
|
||||
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
elif [[ ${EVCS_OFFLINE} ]]; then
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
cursha=$(git rev-parse ${UPSTREAM_BRANCH})
|
||||
echo "GIT offline update -->"
|
||||
echo " repository: $(git config remote.origin.url)"
|
||||
echo " at the commit: ${cursha}"
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
else
|
||||
pushd "${EGIT_DIR}" > /dev/null
|
||||
pushd "${EGIT_DIR}" > /dev/null || die
|
||||
oldsha=$(git rev-parse ${UPSTREAM_BRANCH})
|
||||
git-2_update_repo
|
||||
cursha=$(git rev-parse ${UPSTREAM_BRANCH})
|
||||
@ -421,7 +425,7 @@ git-2_fetch() {
|
||||
|
||||
# print nice statistic of what was changed
|
||||
git --no-pager diff --stat ${oldsha}..${UPSTREAM_BRANCH}
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
# export the version the repository is at
|
||||
export EGIT_VERSION="${cursha}"
|
||||
@ -454,7 +458,7 @@ git-2_bootstrap() {
|
||||
# combination with --keep-going it would lead in not-updating
|
||||
# pakcages that are up-to-date.
|
||||
if [[ ${EGIT_BOOTSTRAP} ]]; then
|
||||
pushd "${EGIT_SOURCEDIR}" > /dev/null
|
||||
pushd "${EGIT_SOURCEDIR}" > /dev/null || die
|
||||
einfo "Starting bootstrap"
|
||||
|
||||
if [[ -f ${EGIT_BOOTSTRAP} ]]; then
|
||||
@ -478,7 +482,7 @@ git-2_bootstrap() {
|
||||
fi
|
||||
|
||||
einfo "Bootstrap finished"
|
||||
popd > /dev/null
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/git-r3.eclass,v 1.49 2015/06/22 08:39:36 mrueg Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: git-r3.eclass
|
||||
# @MAINTAINER:
|
||||
@ -11,7 +11,7 @@
|
||||
# git as remote repository.
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
0|1|2|3|4|5)
|
||||
0|1|2|3|4|5|6)
|
||||
;;
|
||||
*)
|
||||
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
|
||||
@ -185,19 +185,19 @@ _git-r3_env_setup() {
|
||||
;;
|
||||
single)
|
||||
if [[ ${EGIT_CLONE_TYPE} == shallow ]]; then
|
||||
einfo "git-r3: ebuild needs to be cloned in 'single' mode, adjusting"
|
||||
einfo "git-r3: ebuild needs to be cloned in '\e[1msingle\e[22m' mode, adjusting"
|
||||
EGIT_CLONE_TYPE=single
|
||||
fi
|
||||
;;
|
||||
single+tags)
|
||||
if [[ ${EGIT_CLONE_TYPE} == shallow || ${EGIT_CLONE_TYPE} == single ]]; then
|
||||
einfo "git-r3: ebuild needs to be cloned in 'single+tags' mode, adjusting"
|
||||
einfo "git-r3: ebuild needs to be cloned in '\e[1msingle+tags\e[22m' mode, adjusting"
|
||||
EGIT_CLONE_TYPE=single+tags
|
||||
fi
|
||||
;;
|
||||
mirror)
|
||||
if [[ ${EGIT_CLONE_TYPE} != mirror ]]; then
|
||||
einfo "git-r3: ebuild needs to be cloned in 'mirror' mode, adjusting"
|
||||
einfo "git-r3: ebuild needs to be cloned in '\e[1mmirror\e[22m' mode, adjusting"
|
||||
EGIT_CLONE_TYPE=mirror
|
||||
fi
|
||||
;;
|
||||
@ -314,7 +314,7 @@ _git-r3_set_gitdir() {
|
||||
if [[ ! -d ${EGIT3_STORE_DIR} ]]; then
|
||||
(
|
||||
addwrite /
|
||||
mkdir -p "${EGIT3_STORE_DIR}" || die
|
||||
mkdir -p "${EGIT3_STORE_DIR}"
|
||||
) || die "Unable to create ${EGIT3_STORE_DIR}"
|
||||
fi
|
||||
|
||||
@ -362,8 +362,13 @@ _git-r3_set_submodules() {
|
||||
submodule."${subname}".update)
|
||||
[[ ${upd} == none ]] && continue
|
||||
|
||||
# https://github.com/git/git/blob/master/refs.c#L39
|
||||
# for now, we just filter /. because of #572312
|
||||
local enc_subname=${subname//\/.//_}
|
||||
[[ ${enc_subname} == .* ]] && enc_subname=_${enc_subname#.}
|
||||
|
||||
submodules+=(
|
||||
"${subname}"
|
||||
"${enc_subname}"
|
||||
"$(echo "${data}" | git config -f /dev/fd/0 \
|
||||
submodule."${subname}".url || die)"
|
||||
"$(echo "${data}" | git config -f /dev/fd/0 \
|
||||
@ -532,7 +537,7 @@ git-r3_fetch() {
|
||||
umask "${EVCS_UMASK}" || die "Bad options to umask: ${EVCS_UMASK}"
|
||||
fi
|
||||
for r in "${repos[@]}"; do
|
||||
einfo "Fetching ${r} ..."
|
||||
einfo "Fetching \e[1m${r}\e[22m ..."
|
||||
|
||||
local fetch_command=( git fetch "${r}" )
|
||||
local clone_type=${EGIT_CLONE_TYPE}
|
||||
@ -553,11 +558,11 @@ git-r3_fetch() {
|
||||
# so automatically switch to single+tags mode.
|
||||
if [[ ${clone_type} == shallow ]]; then
|
||||
einfo " Google Code does not support shallow clones"
|
||||
einfo " using EGIT_CLONE_TYPE=single+tags"
|
||||
einfo " using \e[1mEGIT_CLONE_TYPE=single+tags\e[22m"
|
||||
clone_type=single+tags
|
||||
elif [[ ${clone_type} == single ]]; then
|
||||
einfo " git-r3: Google Code does not send tags properly in 'single' mode"
|
||||
einfo " using EGIT_CLONE_TYPE=single+tags"
|
||||
einfo " using \e[1mEGIT_CLONE_TYPE=single+tags\e[22m"
|
||||
clone_type=single+tags
|
||||
fi
|
||||
fi
|
||||
@ -581,11 +586,11 @@ git-r3_fetch() {
|
||||
if [[ ${remote_ref} == HEAD ]]; then
|
||||
# HEAD
|
||||
fetch_l=HEAD
|
||||
elif [[ ${remote_ref} == refs/heads/* ]]; then
|
||||
# regular branch
|
||||
elif [[ ${remote_ref} == refs/* ]]; then
|
||||
# regular branch, tag or some other explicit ref
|
||||
fetch_l=${remote_ref}
|
||||
else
|
||||
# tag or commit...
|
||||
# tag or commit id...
|
||||
# let ls-remote figure it out
|
||||
local tagref=$(git ls-remote "${r}" "refs/tags/${remote_ref}")
|
||||
|
||||
@ -594,8 +599,8 @@ git-r3_fetch() {
|
||||
# tag
|
||||
fetch_l=refs/tags/${remote_ref}
|
||||
else
|
||||
# commit
|
||||
# so we need to fetch the branch
|
||||
# commit id
|
||||
# so we need to fetch the whole branch
|
||||
if [[ ${branch} ]]; then
|
||||
fetch_l=${branch}
|
||||
else
|
||||
@ -697,7 +702,7 @@ git-r3_fetch() {
|
||||
[[ ${success} ]] || die "Unable to fetch from any of EGIT_REPO_URI"
|
||||
|
||||
# submodules can reference commits in any branch
|
||||
# always use the 'clone' mode to accomodate that, bug #503332
|
||||
# always use the 'mirror' mode to accomodate that, bug #503332
|
||||
local EGIT_CLONE_TYPE=mirror
|
||||
|
||||
# recursively fetch submodules
|
||||
@ -710,17 +715,24 @@ git-r3_fetch() {
|
||||
local subname=${submodules[0]}
|
||||
local url=${submodules[1]}
|
||||
local path=${submodules[2]}
|
||||
local commit=$(git rev-parse "${local_ref}:${path}")
|
||||
|
||||
if [[ ! ${commit} ]]; then
|
||||
die "Unable to get commit id for submodule ${subname}"
|
||||
# use only submodules for which path does exist
|
||||
# (this is in par with 'git submodule'), bug #551100
|
||||
# note: git cat-file does not work for submodules
|
||||
if [[ $(git ls-tree -d "${local_ref}" "${path}") ]]
|
||||
then
|
||||
local commit=$(git rev-parse "${local_ref}:${path}" || die)
|
||||
|
||||
if [[ ! ${commit} ]]; then
|
||||
die "Unable to get commit id for submodule ${subname}"
|
||||
fi
|
||||
|
||||
local subrepos
|
||||
_git-r3_set_subrepos "${url}" "${repos[@]}"
|
||||
|
||||
git-r3_fetch "${subrepos[*]}" "${commit}" "${local_id}/${subname}"
|
||||
fi
|
||||
|
||||
local subrepos
|
||||
_git-r3_set_subrepos "${url}" "${repos[@]}"
|
||||
|
||||
git-r3_fetch "${subrepos[*]}" "${commit}" "${local_id}/${subname}"
|
||||
|
||||
submodules=( "${submodules[@]:3}" ) # shift
|
||||
done
|
||||
fi
|
||||
@ -764,7 +776,7 @@ git-r3_checkout() {
|
||||
local -x GIT_DIR
|
||||
_git-r3_set_gitdir "${repos[0]}"
|
||||
|
||||
einfo "Checking out ${repos[0]} to ${out_dir} ..."
|
||||
einfo "Checking out \e[1m${repos[0]}\e[22m to \e[1m${out_dir}\e[22m ..."
|
||||
|
||||
if ! git cat-file -e refs/git-r3/"${local_id}"/__main__; then
|
||||
if [[ ${EVCS_OFFLINE} ]]; then
|
||||
@ -814,6 +826,7 @@ git-r3_checkout() {
|
||||
"${@}" || die "git checkout ${remote_ref:-${new_commit_id}} failed"
|
||||
}
|
||||
git-r3_sub_checkout
|
||||
unset -f git-r3_sub_checkout
|
||||
|
||||
local old_commit_id=$(
|
||||
git rev-parse --quiet --verify refs/git-r3/"${local_id}"/__old__
|
||||
@ -849,11 +862,16 @@ git-r3_checkout() {
|
||||
local subname=${submodules[0]}
|
||||
local url=${submodules[1]}
|
||||
local path=${submodules[2]}
|
||||
local subrepos
|
||||
_git-r3_set_subrepos "${url}" "${repos[@]}"
|
||||
|
||||
git-r3_checkout "${subrepos[*]}" "${out_dir}/${path}" \
|
||||
"${local_id}/${subname}"
|
||||
# use only submodules for which path does exist
|
||||
# (this is in par with 'git submodule'), bug #551100
|
||||
if [[ -d ${out_dir}/${path} ]]; then
|
||||
local subrepos
|
||||
_git-r3_set_subrepos "${url}" "${repos[@]}"
|
||||
|
||||
git-r3_checkout "${subrepos[*]}" "${out_dir}/${path}" \
|
||||
"${local_id}/${subname}"
|
||||
fi
|
||||
|
||||
submodules=( "${submodules[@]:3}" ) # shift
|
||||
done
|
||||
@ -904,12 +922,11 @@ git-r3_peek_remote_ref() {
|
||||
|
||||
local r success
|
||||
for r in "${repos[@]}"; do
|
||||
einfo "Peeking ${remote_ref} on ${r} ..." >&2
|
||||
einfo "Peeking \e[1m${remote_ref}\e[22m on \e[1m${r}\e[22m ..." >&2
|
||||
|
||||
local is_branch lookup_ref
|
||||
if [[ ${remote_ref} == refs/heads/* || ${remote_ref} == HEAD ]]
|
||||
local lookup_ref
|
||||
if [[ ${remote_ref} == refs/* || ${remote_ref} == HEAD ]]
|
||||
then
|
||||
is_branch=1
|
||||
lookup_ref=${remote_ref}
|
||||
else
|
||||
# ls-remote by commit is going to fail anyway,
|
||||
@ -954,16 +971,23 @@ git-r3_src_unpack() {
|
||||
}
|
||||
|
||||
# https://bugs.gentoo.org/show_bug.cgi?id=482666
|
||||
git-r3_pkg_outofdate() {
|
||||
git-r3_pkg_needrebuild() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local new_commit_id=$(git-r3_peek_remote_ref)
|
||||
ewarn "old: ${EGIT_VERSION}"
|
||||
ewarn "new: ${new_commit_id}"
|
||||
[[ ${new_commit_id} && ${old_commit_id} ]] || return 2
|
||||
[[ ${new_commit_id} && ${EGIT_VERSION} ]] || die "Lookup failed"
|
||||
|
||||
if [[ ${EGIT_VERSION} != ${new_commit_id} ]]; then
|
||||
einfo "Update from \e[1m${EGIT_VERSION}\e[22m to \e[1m${new_commit_id}\e[22m"
|
||||
else
|
||||
einfo "Local and remote at \e[1m${EGIT_VERSION}\e[22m"
|
||||
fi
|
||||
|
||||
[[ ${EGIT_VERSION} != ${new_commit_id} ]]
|
||||
}
|
||||
|
||||
# 'export' locally until this gets into EAPI
|
||||
pkg_needrebuild() { git-r3_pkg_needrebuild; }
|
||||
|
||||
_GIT_R3=1
|
||||
fi
|
||||
|
@ -91,6 +91,7 @@ gnome2_src_prepare() {
|
||||
gnome2_disable_deprecation_warning
|
||||
|
||||
# Run libtoolize
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=655517
|
||||
elibtoolize ${ELTCONF}
|
||||
}
|
||||
|
||||
|
78
sdk_container/src/third_party/portage-stable/eclass/golang-base.eclass
vendored
Normal file
78
sdk_container/src/third_party/portage-stable/eclass/golang-base.eclass
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: golang-build.eclass
|
||||
# @MAINTAINER:
|
||||
# William Hubbs <williamh@gentoo.org>
|
||||
# @BLURB: Eclass that provides base functions for Go packages.
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides base functions for software written in the Go
|
||||
# programming language; it also provides the build-time dependency on
|
||||
# dev-lang/go.
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
5|6)
|
||||
;;
|
||||
*)
|
||||
die "${ECLASS}: Unsupported eapi (EAPI=${EAPI})"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -z ${_GOLANG_BASE} ]]; then
|
||||
|
||||
_GOLANG_BASE=1
|
||||
|
||||
DEPEND=">=dev-lang/go-1.4.2:="
|
||||
STRIP_MASK="*.a"
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_PN
|
||||
# @REQUIRED
|
||||
# @DESCRIPTION:
|
||||
# This is the import path for the go package to build. Please emerge
|
||||
# dev-lang/go and read "go help importpath" for syntax.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# EGO_PN=github.com/user/package
|
||||
# @CODE
|
||||
|
||||
# @FUNCTION: ego_pn_check
|
||||
# @DESCRIPTION:
|
||||
# Make sure EGO_PN has a value.
|
||||
ego_pn_check() {
|
||||
[[ -z "${EGO_PN}" ]] &&
|
||||
die "${ECLASS}.eclass: EGO_PN is not set"
|
||||
return 0
|
||||
}
|
||||
|
||||
# @FUNCTION: get_golibdir
|
||||
# @DESCRIPTION:
|
||||
# Return the non-prefixed library directory where Go packages
|
||||
# should be installed
|
||||
get_golibdir() {
|
||||
echo /usr/lib/go-gentoo
|
||||
}
|
||||
|
||||
# @FUNCTION: get_golibdir_gopath
|
||||
# @DESCRIPTION:
|
||||
# Return the library directory where Go packages should be installed
|
||||
# This is the prefixed version which should be included in GOPATH
|
||||
get_golibdir_gopath() {
|
||||
echo "${EPREFIX}$(get_golibdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: golang_install_pkgs
|
||||
# @DESCRIPTION:
|
||||
# Install Go packages.
|
||||
# This function assumes that $cwd is a Go workspace.
|
||||
golang_install_pkgs() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
ego_pn_check
|
||||
insinto "$(get_golibdir)"
|
||||
insopts -m0644 -p # preserve timestamps for bug 551486
|
||||
doins -r pkg src
|
||||
}
|
||||
|
||||
fi
|
84
sdk_container/src/third_party/portage-stable/eclass/golang-build.eclass
vendored
Normal file
84
sdk_container/src/third_party/portage-stable/eclass/golang-build.eclass
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: golang-build.eclass
|
||||
# @MAINTAINER:
|
||||
# William Hubbs <williamh@gentoo.org>
|
||||
# @BLURB: Eclass for compiling go packages.
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides default src_compile, src_test and src_install
|
||||
# functions for software written in the Go programming language.
|
||||
|
||||
inherit golang-base
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
5|6)
|
||||
;;
|
||||
*)
|
||||
die "${ECLASS}: Unsupported eapi (EAPI=${EAPI})"
|
||||
;;
|
||||
esac
|
||||
|
||||
EXPORT_FUNCTIONS src_compile src_install src_test
|
||||
|
||||
if [[ -z ${_GOLANG_BUILD} ]]; then
|
||||
|
||||
_GOLANG_BUILD=1
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_BUILD_FLAGS
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# This allows you to pass build flags to the Go compiler. These flags
|
||||
# are common to the "go build" and "go install" commands used below.
|
||||
# Please emerge dev-lang/go and run "go help build" for the
|
||||
# documentation for these flags.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# EGO_BUILD_FLAGS="-ldflags \"-X main.version ${PV}\""
|
||||
# @CODE
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_PN
|
||||
# @REQUIRED
|
||||
# @DESCRIPTION:
|
||||
# This is the import path for the go package(s) to build. Please emerge
|
||||
# dev-lang/go and read "go help importpath" for syntax.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# EGO_PN=github.com/user/package
|
||||
# @CODE
|
||||
|
||||
golang-build_src_compile() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
ego_pn_check
|
||||
set -- env GOPATH="${WORKDIR}/${P}:$(get_golibdir_gopath)" \
|
||||
go build -v -work -x ${EGO_BUILD_FLAGS} "${EGO_PN}"
|
||||
echo "$@"
|
||||
"$@" || die
|
||||
}
|
||||
|
||||
golang-build_src_install() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
ego_pn_check
|
||||
set -- env GOPATH="${WORKDIR}/${P}:$(get_golibdir_gopath)" \
|
||||
go install -v -work -x ${EGO_BUILD_FLAGS} "${EGO_PN}"
|
||||
echo "$@"
|
||||
"$@" || die
|
||||
golang_install_pkgs
|
||||
}
|
||||
|
||||
golang-build_src_test() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
ego_pn_check
|
||||
set -- env GOPATH="${WORKDIR}/${P}:$(get_golibdir_gopath)" \
|
||||
go test -v -work -x "${EGO_PN}"
|
||||
echo "$@"
|
||||
"$@" || die
|
||||
}
|
||||
|
||||
fi
|
56
sdk_container/src/third_party/portage-stable/eclass/golang-vcs-snapshot.eclass
vendored
Normal file
56
sdk_container/src/third_party/portage-stable/eclass/golang-vcs-snapshot.eclass
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: golang-vcs-snapshot.eclass
|
||||
# @MAINTAINER:
|
||||
# William Hubbs <williamh@gentoo.org>
|
||||
# @BLURB: support eclass for unpacking VCS snapshot tarballs for
|
||||
# software written in the Go programming language
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides a convenience src_unpack() which unpacks the
|
||||
# first tarball mentioned in SRC_URI to its appropriate location in
|
||||
# ${WORKDIR}/${P}, treating ${WORKDIR}/${P} as a go workspace.
|
||||
#
|
||||
# The location where the tarball is extracted is defined as
|
||||
# ${WORKDIR}/${P}/src/${EGO_PN}.
|
||||
#
|
||||
# The typical use case is VCS snapshots coming from github, bitbucket
|
||||
# and similar services.
|
||||
#
|
||||
# Please note that this eclass currently handles only tarballs
|
||||
# (.tar.gz), but support for more formats may be added in the future.
|
||||
#
|
||||
# @EXAMPLE:
|
||||
#
|
||||
# @CODE
|
||||
# EGO_PN=github.com/user/package
|
||||
# inherit golang-vcs-snapshot
|
||||
#
|
||||
# SRC_URI="http://github.com/example/${PN}/tarball/v${PV} -> ${P}.tar.gz"
|
||||
# @CODE
|
||||
#
|
||||
# The above example will extract the tarball to
|
||||
# ${WORKDIR}/${P}/src/github.com/user/package
|
||||
|
||||
inherit golang-base
|
||||
|
||||
case ${EAPI:-0} in
|
||||
5|6) ;;
|
||||
*) die "${ECLASS} API in EAPI ${EAPI} not yet established."
|
||||
esac
|
||||
|
||||
EXPORT_FUNCTIONS src_unpack
|
||||
|
||||
# @FUNCTION: golang-vcs-snapshot_src_unpack
|
||||
# @DESCRIPTION:
|
||||
# Extract the first archive from ${A} to the appropriate location for GOPATH.
|
||||
golang-vcs-snapshot_src_unpack() {
|
||||
local x
|
||||
ego_pn_check
|
||||
set -- ${A}
|
||||
x="$1"
|
||||
mkdir -p "${WORKDIR}/${P}/src/${EGO_PN%/...}" || die
|
||||
tar -C "${WORKDIR}/${P}/src/${EGO_PN%/...}" -x --strip-components 1 \
|
||||
-f "${DISTDIR}/${x}" || die
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/golang-vcs.eclass,v 1.2 2015/06/18 15:19:04 williamh Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: golang-vcs.eclass
|
||||
# @MAINTAINER:
|
||||
@ -10,10 +10,10 @@
|
||||
# This eclass is written to ease the maintenance of live ebuilds
|
||||
# of software written in the Go programming language.
|
||||
|
||||
inherit eutils
|
||||
inherit eutils golang-base
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
5)
|
||||
5|6)
|
||||
;;
|
||||
*)
|
||||
die "${ECLASS}: Unsupported eapi (EAPI=${EAPI})"
|
||||
@ -26,8 +26,6 @@ if [[ -z ${_GOLANG_VCS} ]]; then
|
||||
|
||||
_GOLANG_VCS=1
|
||||
|
||||
DEPEND=">=dev-lang/go-1.4.2"
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_PN
|
||||
# @REQUIRED
|
||||
# @DESCRIPTION:
|
||||
@ -40,20 +38,6 @@ DEPEND=">=dev-lang/go-1.4.2"
|
||||
# EGO_PN="github.com/user1/package1 github.com/user2/package2"
|
||||
# @CODE
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_SRC
|
||||
# @DESCRIPTION:
|
||||
# This is the Go upstream repository which will be copied to
|
||||
# ${WORKDIR}/${P}.
|
||||
# If it isn't set, it defaults to the first word of ${EGO_PN}.
|
||||
# This should be set if you are retrieving a repository that includes
|
||||
# multiple packages, e.g. golang.org/x/tools.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# EGO_PN="github.com/user/repository/package"
|
||||
# EGO_SRC="github.com/user/repository"
|
||||
# @CODE
|
||||
|
||||
# @ECLASS-VARIABLE: EGO_STORE_DIR
|
||||
# @DESCRIPTION:
|
||||
# Storage directory for Go sources.
|
||||
@ -79,7 +63,7 @@ DEPEND=">=dev-lang/go-1.4.2"
|
||||
# @FUNCTION: _golang-vcs_env_setup
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Create EGO_STORE_DIR if necessary and set GOPATH.
|
||||
# Create EGO_STORE_DIR if necessary.
|
||||
_golang-vcs_env_setup() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
@ -96,15 +80,10 @@ _golang-vcs_env_setup() {
|
||||
fi
|
||||
|
||||
addwrite "${EGO_STORE_DIR}"
|
||||
export GOPATH="${EGO_STORE_DIR}"
|
||||
|
||||
[[ -n ${EVCS_UMASK} ]] && eumask_pop
|
||||
mkdir -p "${WORKDIR}/${P}/src" ||
|
||||
die "${ECLASS}: unable to create ${WORKDIR}/${P}"
|
||||
if [ -z "${EGO_SRC}" ]; then
|
||||
set -- ${EGO_PN}
|
||||
EGO_SRC="$1"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -115,35 +94,29 @@ _golang-vcs_env_setup() {
|
||||
_golang-vcs_fetch() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ -z ${EGO_PN} ]] &&
|
||||
die "${ECLASS}: EGO_PN is not set"
|
||||
ego_pn_check
|
||||
|
||||
if [[ -n ${EVCS_OFFLINE} ]]; then
|
||||
export GOPATH="${WORKDIR}/${P}:${GOPATH}"
|
||||
return 0
|
||||
if [[ -z ${EVCS_OFFLINE} ]]; then
|
||||
[[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
|
||||
|
||||
set -- env GOPATH="${EGO_STORE_DIR}" go get -d -t -u -v -x "${EGO_PN}"
|
||||
echo "$@"
|
||||
"$@" || die
|
||||
# The above dies if you pass repositories in EGO_PN instead of
|
||||
# packages, e.g. golang.org/x/tools instead of golang.org/x/tools/cmd/vet.
|
||||
# This is being discussed in the following upstream issue:
|
||||
# https://github.com/golang/go/issues/11090
|
||||
|
||||
[[ -n ${EVCS_UMASK} ]] && eumask_pop
|
||||
fi
|
||||
|
||||
[[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
|
||||
|
||||
set -- go get -d -t -u -v -x "${EGO_PN}"
|
||||
local go_srcpath="${WORKDIR}/${P}/src/${EGO_PN%/...}"
|
||||
set -- mkdir -p "${go_srcpath}"
|
||||
echo "$@"
|
||||
"$@" || die
|
||||
# The above dies if you pass repositories in EGO_PN instead of
|
||||
# packages, e.g. golang.org/x/tools instead of golang.org/x/tools/cmd/vet.
|
||||
# This is being discussed in the following upstream issue:
|
||||
# https://github.com/golang/go/issues/11090
|
||||
# I am hoping this will be fixed so "go get -d" is successful if
|
||||
# downloading the top level repository is successful.
|
||||
|
||||
[[ -n ${EVCS_UMASK} ]] && eumask_pop
|
||||
export GOPATH="${WORKDIR}/${P}:${EGO_STORE_DIR}"
|
||||
set -- mkdir -p "${WORKDIR}/${P}/src/${EGO_SRC}"
|
||||
"$@" || die "Unable to create ${go_srcpath}"
|
||||
set -- cp -r "${EGO_STORE_DIR}/src/${EGO_PN%/...}" \
|
||||
"${go_srcpath}/.."
|
||||
echo "$@"
|
||||
"$@" || die "Unable to create ${WORKDIR}/${P}/src/${EGO_SRC}"
|
||||
set -- cp -r "${EGO_STORE_DIR}/src/${EGO_SRC}/*" \
|
||||
"${WORKDIR}/${P}/src/${EGO_SRC}"
|
||||
echo "$@"
|
||||
$@ || die "Unable to copy sources to ${WORKDIR}/${P}"
|
||||
"$@" || die "Unable to copy sources to ${go_srcpath}"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.305 2015/05/30 16:09:05 mpagano Exp $
|
||||
# $Id$
|
||||
|
||||
# Description: kernel.eclass rewrite for a clean base regarding the 2.6
|
||||
# series of kernel with back-compatibility for 2.4
|
||||
#
|
||||
# Original author: John Mylchreest <johnm@gentoo.org>
|
||||
# Maintainer: kernel-misc@gentoo.org
|
||||
# Maintainer: kernel@gentoo.org
|
||||
#
|
||||
# Please direct your bugs to the current eclass maintainer :)
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
# K_EXTRAEWARN - same as K_EXTRAEINFO except using ewarn instead of einfo
|
||||
# K_SYMLINK - if this is set, then forcably create symlink anyway
|
||||
#
|
||||
# K_BASE_VER - for git-sources, declare the base version this patch is
|
||||
# K_BASE_VER - for git-sources, declare the base version this patch is
|
||||
# based off of.
|
||||
# K_DEFCONFIG - Allow specifying a different defconfig target.
|
||||
# If length zero, defaults to "defconfig".
|
||||
@ -57,7 +57,7 @@
|
||||
# code. If empty, will be set to "1" if deblobbing is
|
||||
# possible. Test ONLY for "1".
|
||||
# K_DEBLOB_TAG - This will be the version of deblob script. It's a upstream SVN tag
|
||||
# such asw -gnu or -gnu1.
|
||||
# such asw -gnu or -gnu1.
|
||||
# K_PREDEBLOBBED - This kernel was already deblobbed elsewhere.
|
||||
# If false, either optional deblobbing will be available
|
||||
# or the license will note the inclusion of freedist
|
||||
@ -65,6 +65,9 @@
|
||||
# K_LONGTERM - If set, the eclass will search for the kernel source
|
||||
# in the long term directories on the upstream servers
|
||||
# as the location has been changed by upstream
|
||||
# K_KDBUS_AVAILABLE - If set, the ebuild contains the option of installing the
|
||||
# kdbus patch. This patch is not installed without the 'kdbus'
|
||||
# and 'experimental' use flags.
|
||||
# H_SUPPORTEDARCH - this should be a space separated list of ARCH's which
|
||||
# can be supported by the headers ebuild
|
||||
|
||||
@ -99,7 +102,7 @@ if [[ ${CTARGET} == ${CHOST} && ${CATEGORY/cross-} != ${CATEGORY} ]]; then
|
||||
export CTARGET=${CATEGORY/cross-}
|
||||
fi
|
||||
|
||||
HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/ ${HOMEPAGE}"
|
||||
HOMEPAGE="https://www.kernel.org/ https://www.gentoo.org/ ${HOMEPAGE}"
|
||||
: ${LICENSE:="GPL-2"}
|
||||
|
||||
# This is the latest KV_PATCH of the deblob tool available from the
|
||||
@ -129,9 +132,20 @@ debug-print-kernel2-variables() {
|
||||
#Eclass functions only from here onwards ...
|
||||
#==============================================================
|
||||
handle_genpatches() {
|
||||
local tarball
|
||||
local tarball want_unipatch_list
|
||||
[[ -z ${K_WANT_GENPATCHES} || -z ${K_GENPATCHES_VER} ]] && return 1
|
||||
|
||||
if [[ -n ${1} ]]; then
|
||||
# set UNIPATCH_LIST_GENPATCHES only on explicit request
|
||||
# since that requires 'use' call which can be used only in phase
|
||||
# functions, while the function is also called in global scope
|
||||
if [[ ${1} == --set-unipatch-list ]]; then
|
||||
want_unipatch_list=1
|
||||
else
|
||||
die "Usage: ${FUNCNAME} [--set-unipatch-list]"
|
||||
fi
|
||||
fi
|
||||
|
||||
debug-print "Inside handle_genpatches"
|
||||
local OKV_ARRAY
|
||||
IFS="." read -r -a OKV_ARRAY <<<"${OKV}"
|
||||
@ -158,11 +172,11 @@ handle_genpatches() {
|
||||
use_cond_start="experimental? ( "
|
||||
use_cond_end=" )"
|
||||
|
||||
if use experimental ; then
|
||||
if [[ -n ${want_unipatch_list} ]] && use experimental ; then
|
||||
UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
|
||||
debug-print "genpatches tarball: $tarball"
|
||||
fi
|
||||
else
|
||||
elif [[ -n ${want_unipatch_list} ]]; then
|
||||
UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
|
||||
debug-print "genpatches tarball: $tarball"
|
||||
fi
|
||||
@ -393,7 +407,7 @@ detect_version() {
|
||||
|
||||
|
||||
fi
|
||||
|
||||
|
||||
debug-print-kernel2-variables
|
||||
|
||||
handle_genpatches
|
||||
@ -451,6 +465,10 @@ if [[ ${ETYPE} == sources ]]; then
|
||||
DESCRIPTION="Sources based on the Linux Kernel."
|
||||
IUSE="symlink build"
|
||||
|
||||
if [[ -n ${K_KDBUS_AVAILABLE} ]]; then
|
||||
IUSE="${IUSE} kdbus"
|
||||
fi
|
||||
|
||||
# Bug #266157, deblob for libre support
|
||||
if [[ -z ${K_PREDEBLOBBED} ]] ; then
|
||||
# Bug #359865, force a call to detect_version if needed
|
||||
@ -791,10 +809,13 @@ postinst_sources() {
|
||||
# if we have USE=symlink, then force K_SYMLINK=1
|
||||
use symlink && K_SYMLINK=1
|
||||
|
||||
# if we're using a deblobbed kernel, it's not supported
|
||||
[[ $K_DEBLOB_AVAILABLE == 1 ]] && \
|
||||
use deblob && \
|
||||
K_SECURITY_UNSUPPORTED=deblob
|
||||
# We do support security on a deblobbed kernel, bug #555878.
|
||||
# If some particular kernel version doesn't have security
|
||||
# supported because of USE=deblob or otherwise, one can still
|
||||
# set K_SECURITY_UNSUPPORTED on a per ebuild basis.
|
||||
#[[ $K_DEBLOB_AVAILABLE == 1 ]] && \
|
||||
# use deblob && \
|
||||
# K_SECURITY_UNSUPPORTED=deblob
|
||||
|
||||
# if we are to forcably symlink, delete it if it already exists first.
|
||||
if [[ ${K_SYMLINK} > 0 ]]; then
|
||||
@ -817,7 +838,7 @@ postinst_sources() {
|
||||
echo
|
||||
elog "If you are upgrading from a previous kernel, you may be interested"
|
||||
elog "in the following document:"
|
||||
elog " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml"
|
||||
elog " - General upgrade guide: https://wiki.gentoo.org/wiki/Kernel/Upgrade"
|
||||
echo
|
||||
|
||||
# if K_EXTRAEINFO is set then lets display it now
|
||||
@ -840,17 +861,14 @@ postinst_sources() {
|
||||
|
||||
# optionally display security unsupported message
|
||||
# Start with why
|
||||
if [[ ${K_SECURITY_UNSUPPORTED} = deblob ]]; then
|
||||
ewarn "Deblobbed kernels may not be up-to-date security-wise"
|
||||
ewarn "as they depend on external scripts."
|
||||
elif [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
|
||||
if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
|
||||
ewarn "${PN} is UNSUPPORTED by Gentoo Security."
|
||||
fi
|
||||
# And now the general message.
|
||||
if [[ -n ${K_SECURITY_UNSUPPORTED} ]]; then
|
||||
ewarn "This means that it is likely to be vulnerable to recent security issues."
|
||||
ewarn "For specific information on why this kernel is unsupported, please read:"
|
||||
ewarn "http://www.gentoo.org/proj/en/security/kernel.xml"
|
||||
ewarn "https://wiki.gentoo.org/wiki/Project:Kernel_Security"
|
||||
fi
|
||||
|
||||
# warn sparc users that they need to do cross-compiling with >= 2.6.25(bug #214765)
|
||||
@ -997,11 +1015,11 @@ unipatch() {
|
||||
done
|
||||
UNIPATCH_DROP+=" $(basename ${j})"
|
||||
done
|
||||
else
|
||||
else
|
||||
UNIPATCH_LIST_GENPATCHES+=" ${DISTDIR}/${tarball}"
|
||||
debug-print "genpatches tarball: $tarball"
|
||||
|
||||
# check gcc version < 4.9.X uses patch 5000 and = 4.9.X uses patch 5010
|
||||
# check gcc version < 4.9.X uses patch 5000 and = 4.9.X uses patch 5010
|
||||
if [[ $(gcc-major-version) -eq 4 ]] && [[ $(gcc-minor-version) -ne 9 ]]; then
|
||||
# drop 5000_enable-additional-cpu-optimizations-for-gcc-4.9.patch
|
||||
if [[ $UNIPATCH_DROP != *"5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch"* ]]; then
|
||||
@ -1013,7 +1031,14 @@ unipatch() {
|
||||
UNIPATCH_DROP+=" 5000_enable-additional-cpu-optimizations-for-gcc.patch"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# if kdbus use flag is not set, drop the kdbus patch
|
||||
if [[ $UNIPATCH_DROP != *"5015_kdbus*.patch"* ]]; then
|
||||
if ! has kdbus ${IUSE} || ! use kdbus; then
|
||||
UNIPATCH_DROP="${UNIPATCH_DROP} 5015_kdbus*.patch"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#populate KPATCH_DIRS so we know where to look to remove the excludes
|
||||
@ -1065,9 +1090,10 @@ unipatch() {
|
||||
# https://bugs.gentoo.org/show_bug.cgi?id=507656 #
|
||||
####################################################################
|
||||
if [[ ${PN} == "git-sources" ]] ; then
|
||||
if [[ ${KV_MAJOR}${KV_PATCH} -ge 315 && ${RELEASETYPE} == -rc ]] ; then
|
||||
if [[ ${KV_MAJOR} -gt 3 || ( ${KV_MAJOR} -eq 3 && ${KV_PATCH} -gt 15 ) &&
|
||||
${RELEASETYPE} == -rc ]] ; then
|
||||
ebegin "Applying ${i/*\//} (-p1)"
|
||||
if [ $(patch -p1 --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
|
||||
if [ $(patch -p1 --no-backup-if-mismatch -f < ${i} >> ${STDERR_T}) "$?" -le 2 ]; then
|
||||
eend 0
|
||||
rm ${STDERR_T}
|
||||
break
|
||||
@ -1217,6 +1243,8 @@ kernel-2_src_unpack() {
|
||||
universal_unpack
|
||||
debug-print "Doing unipatch"
|
||||
|
||||
# request UNIPATCH_LIST_GENPATCHES in phase since it calls 'use'
|
||||
handle_genpatches --set-unipatch-list
|
||||
[[ -n ${UNIPATCH_LIST} || -n ${UNIPATCH_LIST_DEFAULT} || -n ${UNIPATCH_LIST_GENPATCHES} ]] && \
|
||||
unipatch "${UNIPATCH_LIST_DEFAULT} ${UNIPATCH_LIST_GENPATCHES} ${UNIPATCH_LIST}"
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.112 2014/07/11 08:21:58 ulm Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: libtool.eclass
|
||||
# @MAINTAINER:
|
||||
@ -21,8 +21,9 @@ _LIBTOOL_ECLASS=1
|
||||
# libtool.eclass, we'll have ECLASSDIR pointing to the active overlay's
|
||||
# eclass/ dir, but libtool.eclass is still in the main Gentoo tree. So
|
||||
# add a check to locate the ELT-patches/ regardless of what's going on.
|
||||
# Note: Duplicated in eutils.eclass.
|
||||
_LIBTOOL_ECLASSDIR_LOCAL=${BASH_SOURCE[0]%/*}
|
||||
elt_patch_dir() {
|
||||
libtool_elt_patch_dir() {
|
||||
local d="${ECLASSDIR}/ELT-patches"
|
||||
if [[ ! -d ${d} ]] ; then
|
||||
d="${_LIBTOOL_ECLASSDIR_LOCAL}/ELT-patches"
|
||||
@ -92,7 +93,7 @@ ELT_walk_patches() {
|
||||
local ret=1
|
||||
local file=$1
|
||||
local patch_set=$2
|
||||
local patch_dir="$(elt_patch_dir)/${patch_set}"
|
||||
local patch_dir="$(libtool_elt_patch_dir)/${patch_set}"
|
||||
local rem_int_dep=$3
|
||||
|
||||
[[ -z ${patch_set} ]] && return 1
|
||||
@ -106,7 +107,7 @@ ELT_walk_patches() {
|
||||
sed_args+=( -e "s|@REM_INT_DEP@|${rem_int_dep}|g" )
|
||||
fi
|
||||
|
||||
pushd "$(elt_patch_dir)" >/dev/null || die
|
||||
pushd "$(libtool_elt_patch_dir)" >/dev/null || die
|
||||
|
||||
# Go through the patches in reverse order (newer version to older)
|
||||
for patch in $(find "${patch_set}" -maxdepth 1 -type f | LC_ALL=C sort -r) ; do
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/linux-info.eclass,v 1.107 2015/06/02 07:39:52 vapier Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: linux-info.eclass
|
||||
# @MAINTAINER:
|
||||
# kernel-misc@gentoo.org
|
||||
# kernel@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Original author: John Mylchreest <johnm@gentoo.org>
|
||||
# @BLURB: eclass used for accessing kernel related information
|
||||
@ -716,13 +716,15 @@ check_extra_config() {
|
||||
ewarn "to absence of any configured kernel sources or compiled"
|
||||
ewarn "config:"
|
||||
for config in ${CONFIG_CHECK}; do
|
||||
local_error="ERROR_${config#\~}"
|
||||
config=${config#\~}
|
||||
config=${config#\!}
|
||||
local_error="ERROR_${config}"
|
||||
msg="${!local_error}"
|
||||
if [[ "x${msg}" == "x" ]]; then
|
||||
local_error="WARNING_${config#\~}"
|
||||
if [[ -z ${msg} ]]; then
|
||||
local_error="WARNING_${config}"
|
||||
msg="${!local_error}"
|
||||
fi
|
||||
ewarn " - ${config#\~}${msg:+ - }${msg}"
|
||||
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}"
|
||||
|
@ -1,77 +1,129 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/mount-boot.eclass,v 1.18 2011/01/09 03:18:38 vapier Exp $
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: mount-boot.eclass
|
||||
# @MAINTAINER:
|
||||
# base-system@gentoo.org
|
||||
# @BLURB: functions for packages that install files into /boot
|
||||
# @DESCRIPTION:
|
||||
# This eclass is really only useful for bootloaders.
|
||||
#
|
||||
# If the live system has a separate /boot partition configured, then this
|
||||
# function tries to ensure that it's mounted in rw mode, exiting with an
|
||||
# error if it cant. It does nothing if /boot isn't a separate partition.
|
||||
#
|
||||
# MAINTAINER: base-system@gentoo.org
|
||||
# error if it can't. It does nothing if /boot isn't a separate partition.
|
||||
|
||||
EXPORT_FUNCTIONS pkg_preinst pkg_postinst pkg_prerm pkg_postrm
|
||||
EXPORT_FUNCTIONS pkg_pretend pkg_preinst pkg_postinst pkg_prerm pkg_postrm
|
||||
|
||||
mount-boot_mount_boot_partition() {
|
||||
if [[ -n ${DONT_MOUNT_BOOT} ]] ; then
|
||||
return
|
||||
else
|
||||
elog
|
||||
elog "To avoid automounting and auto(un)installing with /boot,"
|
||||
elog "just export the DONT_MOUNT_BOOT variable."
|
||||
elog
|
||||
# @FUNCTION: mount-boot_disabled
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Detect whether the current environment/build settings are such that we do not
|
||||
# want to mess with any mounts.
|
||||
mount-boot_is_disabled() {
|
||||
# Since this eclass only deals with /boot, skip things when ROOT is active.
|
||||
if [[ "${ROOT:-/}" != "/" ]] ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# If we're only building a package, then there's no need to check things.
|
||||
if [[ "${MERGE_TYPE}" == "buildonly" ]] ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# The user wants us to leave things be.
|
||||
if [[ -n ${DONT_MOUNT_BOOT} ]] ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# OK, we want to handle things ourselves.
|
||||
return 1
|
||||
}
|
||||
|
||||
# @FUNCTION: mount-boot_check_status
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Figure out what kind of work we need to do in order to have /boot be sane.
|
||||
# Return values are:
|
||||
# 0 - Do nothing at all!
|
||||
# 1 - It's mounted, but is currently ro, so need to remount rw.
|
||||
# 2 - It's not mounted, so need to mount it rw.
|
||||
mount-boot_check_status() {
|
||||
# Get out fast if possible.
|
||||
mount-boot_is_disabled && return 0
|
||||
|
||||
# note that /dev/BOOT is in the Gentoo default /etc/fstab file
|
||||
local fstabstate=$(awk '!/^#|^[[:blank:]]+#|^\/dev\/BOOT/ {print $2}' /etc/fstab | egrep "^/boot$" )
|
||||
local procstate=$(awk '$2 ~ /^\/boot$/ {print $2}' /proc/mounts)
|
||||
local proc_ro=$(awk '{ print $2 " ," $4 "," }' /proc/mounts | sed -n '/\/boot .*,ro,/p')
|
||||
|
||||
if [ -n "${fstabstate}" ] && [ -n "${procstate}" ]; then
|
||||
if [ -n "${proc_ro}" ]; then
|
||||
einfo
|
||||
einfo "Your boot partition, detected as being mounted as /boot, is read-only."
|
||||
einfo "Remounting it in read-write mode ..."
|
||||
einfo
|
||||
mount -o remount,rw /boot
|
||||
if [ "$?" -ne 0 ]; then
|
||||
eerror
|
||||
eerror "Unable to remount in rw mode. Please do it manually!"
|
||||
eerror
|
||||
die "Can't remount in rw mode. Please do it manually!"
|
||||
fi
|
||||
touch /boot/.e.remount
|
||||
if [ -n "${fstabstate}" ] && [ -n "${procstate}" ] ; then
|
||||
if [ -n "${proc_ro}" ] ; then
|
||||
echo
|
||||
einfo "Your boot partition, detected as being mounted at /boot, is read-only."
|
||||
einfo "It will be remounted in read-write mode temporarily."
|
||||
return 1
|
||||
else
|
||||
einfo
|
||||
einfo "Your boot partition was detected as being mounted as /boot."
|
||||
echo
|
||||
einfo "Your boot partition was detected as being mounted at /boot."
|
||||
einfo "Files will be installed there for ${PN} to function correctly."
|
||||
einfo
|
||||
return 0
|
||||
fi
|
||||
elif [ -n "${fstabstate}" ] && [ -z "${procstate}" ]; then
|
||||
mount /boot -o rw
|
||||
if [ "$?" -eq 0 ]; then
|
||||
einfo
|
||||
einfo "Your boot partition was not mounted as /boot, but portage"
|
||||
einfo "was able to mount it without additional intervention."
|
||||
einfo "Files will be installed there for ${PN} to function correctly."
|
||||
einfo
|
||||
else
|
||||
eerror
|
||||
eerror "Cannot automatically mount your /boot partition."
|
||||
eerror "Your boot partition has to be mounted rw before the installation"
|
||||
eerror "can continue. ${PN} needs to install important files there."
|
||||
eerror
|
||||
die "Please mount your /boot partition manually!"
|
||||
fi
|
||||
touch /boot/.e.mount
|
||||
elif [ -n "${fstabstate}" ] && [ -z "${procstate}" ] ; then
|
||||
echo
|
||||
einfo "Your boot partition was not mounted at /boot, so it will be automounted for you."
|
||||
einfo "Files will be installed there for ${PN} to function correctly."
|
||||
return 2
|
||||
else
|
||||
einfo
|
||||
echo
|
||||
einfo "Assuming you do not have a separate /boot partition."
|
||||
einfo
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
mount-boot_pkg_pretend() {
|
||||
# Get out fast if possible.
|
||||
mount-boot_is_disabled && return 0
|
||||
|
||||
elog "To avoid automounting and auto(un)installing with /boot,"
|
||||
elog "just export the DONT_MOUNT_BOOT variable."
|
||||
mount-boot_check_status
|
||||
}
|
||||
|
||||
mount-boot_mount_boot_partition() {
|
||||
mount-boot_check_status
|
||||
case $? in
|
||||
0) # Nothing to do.
|
||||
;;
|
||||
1) # Remount it rw.
|
||||
mount -o remount,rw /boot
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo
|
||||
eerror "Unable to remount in rw mode. Please do it manually!"
|
||||
die "Can't remount in rw mode. Please do it manually!"
|
||||
fi
|
||||
touch /boot/.e.remount
|
||||
;;
|
||||
2) # Mount it rw.
|
||||
mount /boot -o rw
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo
|
||||
eerror "Cannot automatically mount your /boot partition."
|
||||
eerror "Your boot partition has to be mounted rw before the installation"
|
||||
eerror "can continue. ${PN} needs to install important files there."
|
||||
die "Please mount your /boot partition manually!"
|
||||
fi
|
||||
touch /boot/.e.mount
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
mount-boot_pkg_preinst() {
|
||||
# Handle older EAPIs.
|
||||
case ${EAPI:-0} in
|
||||
[0-3]) mount-boot_pkg_pretend ;;
|
||||
esac
|
||||
|
||||
mount-boot_mount_boot_partition
|
||||
}
|
||||
|
||||
@ -82,20 +134,15 @@ mount-boot_pkg_prerm() {
|
||||
}
|
||||
|
||||
mount-boot_umount_boot_partition() {
|
||||
if [[ -n ${DONT_MOUNT_BOOT} ]] ; then
|
||||
return
|
||||
fi
|
||||
# Get out fast if possible.
|
||||
mount-boot_is_disabled && return 0
|
||||
|
||||
if [ -e /boot/.e.remount ] ; then
|
||||
einfo
|
||||
einfo "Automatically remounting /boot as ro"
|
||||
einfo
|
||||
einfo "Automatically remounting /boot as ro as it was previously."
|
||||
rm -f /boot/.e.remount
|
||||
mount -o remount,ro /boot
|
||||
elif [ -e /boot/.e.mount ] ; then
|
||||
einfo
|
||||
einfo "Automatically unmounting /boot"
|
||||
einfo
|
||||
einfo "Automatically unmounting /boot as it was previously."
|
||||
rm -f /boot/.e.mount
|
||||
umount /boot
|
||||
fi
|
||||
|
@ -1,8 +1,8 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/multibuild.eclass,v 1.20 2014/12/13 08:42:42 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: multibuild
|
||||
# @ECLASS: multibuild.eclass
|
||||
# @MAINTAINER:
|
||||
# Michał Górny <mgorny@gentoo.org>
|
||||
# @AUTHOR:
|
||||
@ -17,7 +17,7 @@ case "${EAPI:-0}" in
|
||||
0|1|2|3)
|
||||
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
|
||||
;;
|
||||
4|5)
|
||||
4|5|6)
|
||||
;;
|
||||
*)
|
||||
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
|
||||
@ -146,6 +146,8 @@ multibuild_foreach_variant() {
|
||||
multibuild_parallel_foreach_variant() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}"
|
||||
|
||||
multibuild_foreach_variant "${@}"
|
||||
}
|
||||
|
||||
@ -193,7 +195,7 @@ multibuild_copy_sources() {
|
||||
|
||||
_multibuild_create_source_copy() {
|
||||
einfo "${MULTIBUILD_VARIANT}: copying to ${BUILD_DIR}"
|
||||
cp -pr "${cp_args[@]}" \
|
||||
cp -p -R "${cp_args[@]}" \
|
||||
"${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/multilib-build.eclass,v 1.65 2014/12/13 08:41:37 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: multilib-build.eclass
|
||||
# @MAINTAINER:
|
||||
@ -21,10 +21,11 @@ if [[ ! ${_MULTILIB_BUILD} ]]; then
|
||||
|
||||
# EAPI=4 is required for meaningful MULTILIB_USEDEP.
|
||||
case ${EAPI:-0} in
|
||||
4|5) ;;
|
||||
4|5|6) ;;
|
||||
*) die "EAPI=${EAPI} is not supported" ;;
|
||||
esac
|
||||
|
||||
[[ ${EAPI} == [45] ]] && inherit eutils
|
||||
inherit multibuild multilib
|
||||
|
||||
# @ECLASS-VARIABLE: _MULTILIB_FLAGS
|
||||
@ -49,6 +50,7 @@ _MULTILIB_FLAGS=(
|
||||
abi_s390_32:s390
|
||||
abi_s390_64:s390x
|
||||
)
|
||||
readonly _MULTILIB_FLAGS
|
||||
|
||||
# @ECLASS-VARIABLE: MULTILIB_COMPAT
|
||||
# @DEFAULT_UNSET
|
||||
@ -124,8 +126,10 @@ _multilib_build_set_globals() {
|
||||
|
||||
IUSE=${flags[*]}
|
||||
MULTILIB_USEDEP=${usedeps// /,}
|
||||
readonly MULTILIB_USEDEP
|
||||
}
|
||||
_multilib_build_set_globals
|
||||
unset -f _multilib_build_set_globals
|
||||
|
||||
# @FUNCTION: multilib_get_enabled_abis
|
||||
# @DESCRIPTION:
|
||||
@ -196,9 +200,10 @@ _multilib_multibuild_wrapper() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
local ABI=${MULTIBUILD_VARIANT#*.}
|
||||
local MULTILIB_ABI_FLAG=${MULTIBUILD_VARIANT%.*}
|
||||
local -r MULTILIB_ABI_FLAG=${MULTIBUILD_VARIANT%.*}
|
||||
|
||||
multilib_toolchain_setup "${ABI}"
|
||||
readonly ABI
|
||||
"${@}"
|
||||
}
|
||||
|
||||
@ -244,6 +249,8 @@ multilib_parallel_foreach_abi() {
|
||||
multilib_for_best_abi() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}, use multilib_is_native_abi() instead"
|
||||
|
||||
eqawarn "QA warning: multilib_for_best_abi() function is deprecated and should"
|
||||
eqawarn "not be used. The multilib_is_native_abi() check may be used instead."
|
||||
|
||||
@ -261,19 +268,24 @@ multilib_for_best_abi() {
|
||||
# runs (if any). Dies if header files differ.
|
||||
multilib_check_headers() {
|
||||
_multilib_header_cksum() {
|
||||
[[ -d ${ED}usr/include ]] && \
|
||||
find "${ED}"usr/include -type f \
|
||||
-exec cksum {} + | sort -k2
|
||||
set -o pipefail
|
||||
|
||||
if [[ -d ${ED}usr/include ]]; then
|
||||
find "${ED}"usr/include -type f \
|
||||
-exec cksum {} + | sort -k2
|
||||
fi
|
||||
}
|
||||
|
||||
local cksum=$(_multilib_header_cksum)
|
||||
local cksum cksum_prev
|
||||
local cksum_file=${T}/.multilib_header_cksum
|
||||
cksum=$(_multilib_header_cksum) || die
|
||||
unset -f _multilib_header_cksum
|
||||
|
||||
if [[ -f ${cksum_file} ]]; then
|
||||
local cksum_prev=$(< "${cksum_file}")
|
||||
cksum_prev=$(< "${cksum_file}") || die
|
||||
|
||||
if [[ ${cksum} != ${cksum_prev} ]]; then
|
||||
echo "${cksum}" > "${cksum_file}.new"
|
||||
echo "${cksum}" > "${cksum_file}.new" || die
|
||||
|
||||
eerror "Header files have changed between ABIs."
|
||||
|
||||
@ -287,7 +299,7 @@ multilib_check_headers() {
|
||||
die "Header checksum mismatch, aborting."
|
||||
fi
|
||||
else
|
||||
echo "${cksum}" > "${cksum_file}"
|
||||
echo "${cksum}" > "${cksum_file}" || die
|
||||
fi
|
||||
}
|
||||
|
||||
@ -408,9 +420,9 @@ multilib_prepare_wrappers() {
|
||||
|
||||
if [[ -L ${root}/${f} ]]; then
|
||||
# rewrite the symlink target
|
||||
local target=$(readlink "${root}/${f}")
|
||||
local target_dir
|
||||
local target_fn=${target##*/}
|
||||
local target
|
||||
target=$(readlink "${root}/${f}") || die
|
||||
local target_dir target_fn=${target##*/}
|
||||
|
||||
[[ ${target} == */* ]] && target_dir=${target%/*}
|
||||
|
||||
@ -452,7 +464,7 @@ multilib_prepare_wrappers() {
|
||||
if [[ ! -f ${ED}/tmp/multilib-include${f} ]]; then
|
||||
dodir "/tmp/multilib-include${dir}"
|
||||
# a generic template
|
||||
cat > "${wrapper}" <<_EOF_
|
||||
cat > "${wrapper}" <<_EOF_ || die
|
||||
/* This file is auto-generated by multilib-build.eclass
|
||||
* as a multilib-friendly wrapper. For the original content,
|
||||
* please see the files that are #included below.
|
||||
@ -513,14 +525,6 @@ _EOF_
|
||||
sed -e "/${MULTILIB_ABI_FLAG} /s&error.*&include <${CHOST}${f}>&" \
|
||||
-i "${wrapper}" || die
|
||||
|
||||
# Hack for emul-linux-x86 compatibility.
|
||||
# It assumes amd64 will come after x86, and will use amd64
|
||||
# headers if no specific x86 headers were installed.
|
||||
if [[ ${ABI} == amd64 ]]; then
|
||||
sed -e "/abi_x86_32 /s&error.*&include <${CHOST}${f}>&" \
|
||||
-i "${wrapper}" || die
|
||||
fi
|
||||
|
||||
# Needed for swig.
|
||||
if multilib_is_native_abi; then
|
||||
sed -e "/Native ABI/s&error.*&include <${CHOST}${f}>&" \
|
||||
@ -581,6 +585,8 @@ multilib_is_native_abi() {
|
||||
multilib_build_binaries() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}, use multilib_is_native_abi() instead"
|
||||
|
||||
eqawarn "QA warning: multilib_build_binaries is deprecated. Please use the equivalent"
|
||||
eqawarn "multilib_is_native_abi function instead."
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/multilib-minimal.eclass,v 1.10 2014/12/13 08:41:37 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: multilib-minimal.eclass
|
||||
# @MAINTAINER:
|
||||
@ -25,12 +25,13 @@
|
||||
|
||||
# EAPI=4 is required for meaningful MULTILIB_USEDEP.
|
||||
case ${EAPI:-0} in
|
||||
4|5) ;;
|
||||
4|5|6) ;;
|
||||
*) die "EAPI=${EAPI} is not supported" ;;
|
||||
esac
|
||||
|
||||
|
||||
inherit eutils multilib-build
|
||||
[[ ${EAPI} == [45] ]] && inherit eutils
|
||||
inherit multilib-build
|
||||
|
||||
EXPORT_FUNCTIONS src_configure src_compile src_test src_install
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/multilib.eclass,v 1.107 2015/05/26 14:25:16 ottxor Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: multilib.eclass
|
||||
# @MAINTAINER:
|
||||
@ -49,15 +49,17 @@ has_multilib_profile() {
|
||||
# fall back on old behavior. Any profile that has these set should also
|
||||
# depend on a newer version of portage (not yet released) which uses these
|
||||
# over CONF_LIBDIR in econf, dolib, etc...
|
||||
get_libdir() {
|
||||
local CONF_LIBDIR
|
||||
if [ -n "${CONF_LIBDIR_OVERRIDE}" ] ; then
|
||||
# if there is an override, we want to use that... always.
|
||||
echo ${CONF_LIBDIR_OVERRIDE}
|
||||
else
|
||||
get_abi_LIBDIR
|
||||
fi
|
||||
}
|
||||
if has "${EAPI:-0}" 0 1 2 3 4 5; then
|
||||
get_libdir() {
|
||||
local CONF_LIBDIR
|
||||
if [ -n "${CONF_LIBDIR_OVERRIDE}" ] ; then
|
||||
# if there is an override, we want to use that... always.
|
||||
echo ${CONF_LIBDIR_OVERRIDE}
|
||||
else
|
||||
get_abi_LIBDIR
|
||||
fi
|
||||
}
|
||||
fi
|
||||
|
||||
# @FUNCTION: get_abi_var
|
||||
# @USAGE: <VAR> [ABI]
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/multiprocessing.eclass,v 1.9 2014/07/11 08:21:58 ulm Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: multiprocessing.eclass
|
||||
# @MAINTAINER:
|
||||
@ -86,9 +86,10 @@ makeopts_loadavg() {
|
||||
# This assumes the first .* will be more greedy than the second .*
|
||||
# since POSIX doesn't specify a non-greedy match (i.e. ".*?").
|
||||
local lavg=$(echo " $* " | sed -r -n \
|
||||
-e 's:.*[[:space:]](-l|--load-average[=[:space:]])[[:space:]]*([0-9]+|[0-9]+\.[0-9]+)[^0-9.]*:\2:p' \
|
||||
-e 's:.*[[:space:]](-l|--load-average)[[:space:]].*:999:p')
|
||||
echo ${lavg:-1}
|
||||
-e 's:.*[[:space:]](-l|--(load-average|max-load)[=[:space:]])[[:space:]]*([0-9]+|[0-9]+\.[0-9]+).*:\3:p' \
|
||||
-e 's:.*[[:space:]](-l|--(load-average|max-load))[[:space:]].*:999:p')
|
||||
# Default to 999 since the default is to not use a load limit.
|
||||
echo ${lavg:-999}
|
||||
}
|
||||
|
||||
# @FUNCTION: multijob_init
|
||||
|
@ -38,15 +38,21 @@ MYSQL_EXTRAS=""
|
||||
# @DESCRIPTION:
|
||||
# An array of CMake arguments added to native and non-native
|
||||
|
||||
inherit eutils systemd flag-o-matic ${MYSQL_EXTRAS} mysql_fx versionator \
|
||||
multilib prefix toolchain-funcs user cmake-utils multilib-minimal
|
||||
# Keeping eutils in EAPI=6 for emktemp in pkg_config
|
||||
|
||||
inherit eutils systemd flag-o-matic ${MYSQL_EXTRAS} versionator \
|
||||
prefix toolchain-funcs user cmake-utils multilib-minimal
|
||||
|
||||
if [[ "${EAPI}x" == "5x" ]]; then
|
||||
inherit multilib mysql_fx
|
||||
fi
|
||||
|
||||
#
|
||||
# Supported EAPI versions and export functions
|
||||
#
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
5) ;;
|
||||
5|6) ;;
|
||||
*) die "Unsupported EAPI: ${EAPI}" ;;
|
||||
esac
|
||||
|
||||
@ -82,19 +88,18 @@ if [[ -z ${MYSQL_PV_MAJOR} ]] ; then MYSQL_PV_MAJOR="$(get_version_component_ran
|
||||
# depend on this variable.
|
||||
# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
|
||||
# We also strip off upstream's trailing letter that they use to respin tarballs
|
||||
MYSQL_VERSION_ID=""
|
||||
tpv="${PV%[a-z]}"
|
||||
tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
|
||||
for vatom in 0 1 2 3 ; do
|
||||
# pad to length 2
|
||||
tpv[${vatom}]="00${tpv[${vatom}]}"
|
||||
MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
|
||||
done
|
||||
# strip leading "0" (otherwise it's considered an octal number by BASH)
|
||||
MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
|
||||
|
||||
# This eclass should only be used with at least mysql-5.5.35
|
||||
mysql_version_is_at_least "5.5.35" || die "This eclass should only be used with >=mysql-5.5.35"
|
||||
if [[ "${EAPI}x" == "5x" ]]; then
|
||||
MYSQL_VERSION_ID=""
|
||||
tpv="${PV%[a-z]}"
|
||||
tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
|
||||
for vatom in 0 1 2 3 ; do
|
||||
# pad to length 2
|
||||
tpv[${vatom}]="00${tpv[${vatom}]}"
|
||||
MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
|
||||
done
|
||||
# strip leading "0" (otherwise it's considered an octal number by BASH)
|
||||
MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
|
||||
fi
|
||||
|
||||
# Work out the default SERVER_URI correctly
|
||||
if [[ -z ${SERVER_URI} ]]; then
|
||||
@ -223,7 +228,7 @@ mysql-multilib-r1_pkg_pretend() {
|
||||
if [[ ${MERGE_TYPE} != binary ]] ; then
|
||||
local GCC_MAJOR_SET=$(gcc-major-version)
|
||||
local GCC_MINOR_SET=$(gcc-minor-version)
|
||||
if use_if_iuse tokudb && [[ ${GCC_MAJOR_SET} -lt 4 || \
|
||||
if in_iuse tokudb && use tokudb && [[ ${GCC_MAJOR_SET} -lt 4 || \
|
||||
${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then
|
||||
eerror "${PN} with tokudb needs to be built with gcc-4.7 or later."
|
||||
eerror "Please use gcc-config to switch to gcc-4.7 or later version."
|
||||
@ -285,14 +290,16 @@ mysql-multilib-r1_src_prepare() {
|
||||
if [[ ${MY_EXTRAS_VER} != none ]]; then
|
||||
|
||||
# Apply the patches for this MySQL version
|
||||
EPATCH_SUFFIX="patch"
|
||||
mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
|
||||
# Clean out old items
|
||||
rm -f "${EPATCH_SOURCE}"/*
|
||||
# Now link in right patches
|
||||
mysql_mv_patches
|
||||
# And apply
|
||||
epatch
|
||||
if [[ "${EAPI}x" == "5x" ]]; then
|
||||
EPATCH_SUFFIX="patch"
|
||||
mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
|
||||
# Clean out old items
|
||||
rm -f "${EPATCH_SOURCE}"/*
|
||||
# Now link in right patches
|
||||
mysql_mv_patches
|
||||
# And apply
|
||||
epatch
|
||||
fi
|
||||
fi
|
||||
|
||||
# last -fPIC fixup, per bug #305873
|
||||
@ -332,7 +339,11 @@ mysql-multilib-r1_src_prepare() {
|
||||
rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga"
|
||||
fi
|
||||
|
||||
epatch_user
|
||||
if [[ "${EAPI}x" == "5x" ]] ; then
|
||||
epatch_user
|
||||
else
|
||||
default
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: mysql-multilib-r1_src_configure
|
||||
@ -342,7 +353,7 @@ mysql-multilib-r1_src_configure() {
|
||||
# Bug #114895, bug #110149
|
||||
filter-flags "-O" "-O[01]"
|
||||
|
||||
append-cxxflags -felide-constructors -fno-rtti
|
||||
append-cxxflags -felide-constructors
|
||||
|
||||
# bug #283926, with GCC4.4, this is required to get correct behavior.
|
||||
append-flags -fno-strict-aliasing
|
||||
@ -388,7 +399,7 @@ multilib_src_configure() {
|
||||
-DINSTALL_UNIX_ADDRDIR=${EPREFIX}/var/run/mysqld/mysqld.sock
|
||||
-DWITH_DEFAULT_COMPILER_OPTIONS=0
|
||||
-DWITH_DEFAULT_FEATURE_SET=0
|
||||
-DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_unitdir)"
|
||||
-DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
|
||||
)
|
||||
|
||||
if in_iuse systemd ; then
|
||||
@ -680,7 +691,7 @@ mysql-multilib-r1_pkg_postinst() {
|
||||
fi
|
||||
done
|
||||
|
||||
if use_if_iuse pam ; then
|
||||
if in_iuse pam && use pam; then
|
||||
einfo
|
||||
elog "This install includes the PAM authentication plugin."
|
||||
elog "To activate and configure the PAM plugin, please read:"
|
||||
@ -708,7 +719,7 @@ mysql-multilib-r1_pkg_postinst() {
|
||||
einfo
|
||||
fi
|
||||
|
||||
if use_if_iuse galera ; then
|
||||
if in_iuse galera && use galera ; then
|
||||
einfo
|
||||
elog "Be sure to edit the my.cnf file to activate your cluster settings."
|
||||
elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
|
||||
@ -1038,9 +1049,80 @@ mysql-multilib-r1_disable_test() {
|
||||
# and some check WITHOUT_. Also, this can easily extend to non-storage plugins.
|
||||
mysql-cmake_use_plugin() {
|
||||
[[ -z $2 ]] && die "mysql-cmake_use_plugin <USE flag> <flag name>"
|
||||
if use_if_iuse $1 ; then
|
||||
if in_iuse $1 && use $1 ; then
|
||||
echo "-DWITH_$2=1 -DPLUGIN_$2=YES"
|
||||
else
|
||||
echo "-DWITHOUT_$2=1 -DWITH_$2=0 -DPLUGIN_$2=NO"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: mysql_init_vars
|
||||
# @DESCRIPTION:
|
||||
# void mysql_init_vars()
|
||||
# Initialize global variables
|
||||
# 2005-11-19 <vivo@gentoo.org>
|
||||
if [[ "${EAPI}x" != "5x" ]]; then
|
||||
|
||||
mysql_init_vars() {
|
||||
MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
|
||||
MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
|
||||
MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
|
||||
MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
|
||||
MY_INCLUDEDIR=${MY_INCLUDEDIR="${EPREFIX}/usr/include/mysql"}
|
||||
MY_LIBDIR=${MY_LIBDIR="${EPREFIX}/usr/$(get_libdir)/mysql"}
|
||||
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=""
|
||||
if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
|
||||
MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
|
||||
| sed -e 's/.*=\s*//' \
|
||||
| tail -n1`
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${MY_DATADIR}" ]] ; then
|
||||
MY_DATADIR="${MY_LOCALSTATEDIR}"
|
||||
einfo "Using default MY_DATADIR"
|
||||
fi
|
||||
elog "MySQL MY_DATADIR is ${MY_DATADIR}"
|
||||
|
||||
if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
|
||||
if [[ -e "${MY_DATADIR}" ]] ; then
|
||||
# If you get this and you're wondering about it, see bug #207636
|
||||
elog "MySQL datadir found in ${MY_DATADIR}"
|
||||
elog "A new one will not be created."
|
||||
PREVIOUS_DATADIR="yes"
|
||||
else
|
||||
PREVIOUS_DATADIR="no"
|
||||
fi
|
||||
export PREVIOUS_DATADIR
|
||||
fi
|
||||
else
|
||||
if [[ ${EBUILD_PHASE} == "config" ]]; then
|
||||
local new_MY_DATADIR
|
||||
new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
|
||||
| sed -ne '/datadir/s|^--datadir=||p' \
|
||||
| tail -n1`
|
||||
|
||||
if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
|
||||
ewarn "MySQL MY_DATADIR has changed"
|
||||
ewarn "from ${MY_DATADIR}"
|
||||
ewarn "to ${new_MY_DATADIR}"
|
||||
MY_DATADIR="${new_MY_DATADIR}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${MY_SOURCEDIR:-unset}" == "unset" ]; then
|
||||
MY_SOURCEDIR=${SERVER_URI##*/}
|
||||
MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
|
||||
fi
|
||||
|
||||
export MY_SHAREDSTATEDIR MY_SYSCONFDIR
|
||||
export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
|
||||
export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
|
||||
}
|
||||
fi
|
||||
|
@ -62,7 +62,8 @@ IUSE="+ocamlopt"
|
||||
[ -n "${OASIS_BUILD_DOCS}" ] && IUSE="${IUSE} doc"
|
||||
[ -n "${OASIS_BUILD_TESTS}" ] && IUSE="${IUSE} test"
|
||||
|
||||
DEPEND="${RDEPEND}"
|
||||
DEPEND="${RDEPEND}
|
||||
|| ( dev-ml/ocamlbuild <dev-lang/ocaml-4.02.3-r1 )"
|
||||
|
||||
# @FUNCTION: oasis_use_enable
|
||||
# @USAGE: < useflag > < variable >
|
||||
|
281
sdk_container/src/third_party/portage-stable/eclass/perl-functions.eclass
vendored
Normal file
281
sdk_container/src/third_party/portage-stable/eclass/perl-functions.eclass
vendored
Normal file
@ -0,0 +1,281 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: perl-functions.eclass
|
||||
# @MAINTAINER:
|
||||
# perl@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Seemant Kulleen <seemant@gentoo.org>
|
||||
# Andreas K. Huettel <dilfridge@gentoo.org>
|
||||
# @BLURB: helper functions eclass for perl modules
|
||||
# @DESCRIPTION:
|
||||
# The perl-functions eclass is designed to allow easier installation of perl
|
||||
# modules, and their incorporation into the Gentoo Linux system.
|
||||
# It provides helper functions, no phases or variable manipulation in
|
||||
# global scope.
|
||||
|
||||
[[ ${CATEGORY} == "perl-core" ]] && inherit alternatives
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
5|6)
|
||||
;;
|
||||
*)
|
||||
die "EAPI=${EAPI} is not supported by perl-functions.eclass"
|
||||
;;
|
||||
esac
|
||||
|
||||
perlinfo_done=false
|
||||
|
||||
# @FUNCTION: perl_set_version
|
||||
# @USAGE: perl_set_version
|
||||
# @DESCRIPTION:
|
||||
# Extract version information and installation paths from the current Perl
|
||||
# interpreter.
|
||||
#
|
||||
# This sets the following variables: PERL_VERSION, SITE_ARCH, SITE_LIB,
|
||||
# ARCH_LIB, VENDOR_LIB, VENDOR_ARCH
|
||||
#
|
||||
# This function used to be called perlinfo as well.
|
||||
perl_set_version() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
debug-print "$FUNCNAME: perlinfo_done=${perlinfo_done}"
|
||||
${perlinfo_done} && return 0
|
||||
perlinfo_done=true
|
||||
|
||||
local f version install{{site,vendor}{arch,lib},archlib}
|
||||
eval "$(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )"
|
||||
PERL_VERSION=${version}
|
||||
SITE_ARCH=${installsitearch}
|
||||
SITE_LIB=${installsitelib}
|
||||
ARCH_LIB=${installarchlib}
|
||||
VENDOR_LIB=${installvendorlib}
|
||||
VENDOR_ARCH=${installvendorarch}
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_localpod
|
||||
# @USAGE: perl_delete_localpod
|
||||
# @DESCRIPTION:
|
||||
# Remove stray perllocal.pod files in the temporary install directory D.
|
||||
#
|
||||
# This function used to be called fixlocalpod as well.
|
||||
perl_delete_localpod() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
find "${D}" -type f -name perllocal.pod -delete
|
||||
find "${D}" -depth -mindepth 1 -type d -empty -delete
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_fix_osx_extra
|
||||
# @USAGE: perl_fix_osx_extra
|
||||
# @DESCRIPTION:
|
||||
# Look through ${S} for AppleDouble encoded files and get rid of them.
|
||||
perl_fix_osx_extra() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
local f
|
||||
find "${S}" -type f -name "._*" -print0 | while read -rd '' f ; do
|
||||
einfo "Removing AppleDouble encoded Macintosh file: ${f#${S}/}"
|
||||
rm -f "${f}"
|
||||
f=${f#${S}/}
|
||||
grep -q "${f}" "${S}"/MANIFEST && \
|
||||
elog "AppleDouble encoded Macintosh file in MANIFEST: ${f#${S}/}"
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_module_manpages
|
||||
# @USAGE: perl_delete_module_manpages
|
||||
# @DESCRIPTION:
|
||||
# Bump off manpages installed by the current module such as *.3pm files as well
|
||||
# as empty directories.
|
||||
perl_delete_module_manpages() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
if [[ -d "${ED}"/usr/share/man ]] ; then
|
||||
find "${ED}"/usr/share/man -type f -name "*.3pm" -delete
|
||||
find "${ED}"/usr/share/man -depth -type d -empty -delete
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_packlist
|
||||
# @USAGE: perl_delete_packlist
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for .packlist files, empty .bs files and empty directories,
|
||||
# and get rid of items found.
|
||||
perl_delete_packlist() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
perl_set_version
|
||||
if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
|
||||
find "${D}/${VENDOR_ARCH}" -type f -a -name .packlist -delete
|
||||
perl_delete_emptybsdir
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_emptybsdir
|
||||
# @USAGE: perl_delete_emptybsdir
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for empty .bs files and empty directories,
|
||||
# and get rid of items found.
|
||||
perl_delete_emptybsdir() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
perl_set_version
|
||||
if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
|
||||
find "${D}/${VENDOR_ARCH}" -type f \
|
||||
-a -name '*.bs' -a -empty -delete
|
||||
find "${D}" -depth -mindepth 1 -type d -empty -delete
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_fix_packlist
|
||||
# @USAGE: perl_fix_packlist
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for .packlist text files containing the temporary installation
|
||||
# folder (i.e. ${D}). If the pattern is found, silently replace it with `/'.
|
||||
perl_fix_packlist() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
find "${D}" -type f -name '.packlist' -print0 | while read -rd '' f ; do
|
||||
if file "${f}" | grep -q -i " text" ; then
|
||||
sed -i -e "s:${D}:/:g" "${f}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_remove_temppath
|
||||
# @USAGE: perl_remove_temppath
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for text files containing the temporary installation
|
||||
# folder (i.e. ${D}). If the pattern is found, replace it with `/' and warn.
|
||||
perl_remove_temppath() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f ; do
|
||||
if file "${f}" | grep -q -i " text" ; then
|
||||
grep -q "${D}" "${f}" && ewarn "QA: File contains a temporary path ${f}"
|
||||
sed -i -e "s:${D}:/:g" "${f}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_rm_files
|
||||
# @USAGE: perl_rm_files "file_1" "file_2"
|
||||
# @DESCRIPTION:
|
||||
# Remove certain files from a Perl release and remove them from the MANIFEST
|
||||
# while we're there.
|
||||
#
|
||||
# Most useful in src_prepare for nuking bad tests, and is highly recommended
|
||||
# for any tests like 'pod.t', 'pod-coverage.t' or 'kwalitee.t', as what they
|
||||
# test is completely irrelevant to end users, and frequently fail simply
|
||||
# because the authors of Test::Pod... changed their recommendations, and thus
|
||||
# failures are only useful feedback to Authors, not users.
|
||||
#
|
||||
# Removing from MANIFEST also avoids needless log messages warning
|
||||
# users about files "missing from their kit".
|
||||
perl_rm_files() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
local skipfile="${T}/.gentoo_makefile_skip"
|
||||
local manifile="${S}/MANIFEST"
|
||||
local manitemp="${T}/.gentoo_manifest_temp"
|
||||
oldifs="$IFS"
|
||||
IFS="\n"
|
||||
for filename in "$@"; do
|
||||
einfo "Removing un-needed ${filename}";
|
||||
# Remove the file
|
||||
rm -f "${S}/${filename}"
|
||||
[[ -e "${manifile}" ]] && echo "${filename}" >> "${skipfile}"
|
||||
done
|
||||
if [[ -e "${manifile}" && -e "${skipfile}" ]]; then
|
||||
einfo "Fixing Manifest"
|
||||
grep -v -F -f "${skipfile}" "${manifile}" > "${manitemp}"
|
||||
mv -f -- "${manitemp}" "${manifile}"
|
||||
rm -- "${skipfile}";
|
||||
fi
|
||||
IFS="$oldifs"
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_link_duallife_scripts
|
||||
# @USAGE: perl_link_duallife_scripts
|
||||
# @DESCRIPTION:
|
||||
# Moves files and generates symlinks so dual-life packages installing scripts do not
|
||||
# lead to file collisions. Mainly for use in pkg_postinst and pkg_postrm, and makes
|
||||
# only sense for perl-core packages.
|
||||
perl_link_duallife_scripts() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
if [[ ${CATEGORY} != perl-core ]] || ! has_version ">=dev-lang/perl-5.8.8-r8" ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local i ff
|
||||
if has "${EBUILD_PHASE:-none}" "postinst" "postrm" ; then
|
||||
for i in "${DUALLIFESCRIPTS[@]}" ; do
|
||||
alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"
|
||||
done
|
||||
for i in "${DUALLIFEMAN[@]}" ; do
|
||||
ff=`echo "${EROOT}"/${i%.1}-${PV}-${P}.1*`
|
||||
ff=${ff##*.1}
|
||||
alternatives_auto_makesym "/${i}${ff}" "/${i%.1}-[0-9]*"
|
||||
done
|
||||
else
|
||||
pushd "${ED}" > /dev/null
|
||||
for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null) ; do
|
||||
mv ${i}{,-${PV}-${P}} || die
|
||||
#DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
|
||||
DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}
|
||||
done
|
||||
for i in $(find usr/share/man/man1 -maxdepth 1 -type f 2>/dev/null) ; do
|
||||
mv ${i} ${i%.1}-${PV}-${P}.1 || die
|
||||
DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}
|
||||
done
|
||||
popd > /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_check_env
|
||||
# @USAGE: perl_check_env
|
||||
# @DESCRIPTION:
|
||||
# Checks a blacklist of known-suspect ENV values that can be accidentally set by users
|
||||
# doing personal perl work, which may accidentally leak into portage and break the
|
||||
# system perl installaton.
|
||||
# Dies if any of the suspect fields are found, and tell the user what needs to be unset.
|
||||
# There's a workaround, but you'll have to read the code for it.
|
||||
perl_check_env() {
|
||||
local errored value;
|
||||
|
||||
for i in PERL_MM_OPT PERL5LIB PERL5OPT PERL_MB_OPT PERL_CORE PERLPREFIX; do
|
||||
# Next unless match
|
||||
[ -v $i ] || continue;
|
||||
|
||||
# Warn only once, and warn only when one of the bad values are set.
|
||||
# record failure here.
|
||||
if [ ${errored:-0} == 0 ]; then
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog "perl-module.eclass: Suspicious environment values found.";
|
||||
else
|
||||
eerror "perl-module.eclass: Suspicious environment values found.";
|
||||
fi
|
||||
fi
|
||||
errored=1
|
||||
|
||||
# Read ENV Value
|
||||
eval "value=\$$i";
|
||||
|
||||
# Print ENV name/value pair
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog " $i=\"$value\"";
|
||||
else
|
||||
eerror " $i=\"$value\"";
|
||||
fi
|
||||
done
|
||||
|
||||
# Return if there were no failures
|
||||
[ ${errored:-0} == 0 ] && return;
|
||||
|
||||
# Return if user knows what they're doing
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog "Continuing anyway, seems you know what you're doing."
|
||||
return
|
||||
fi
|
||||
|
||||
eerror "Your environment settings may lead to undefined behavior and/or build failures."
|
||||
die "Please fix your environment ( ~/.bashrc, package.env, ... ), see above for details."
|
||||
}
|
@ -1,25 +1,48 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/perl-module.eclass,v 1.166 2015/06/13 19:01:10 dilfridge Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: perl-module.eclass
|
||||
# @MAINTAINER:
|
||||
# perl@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Seemant Kulleen <seemant@gentoo.org>
|
||||
# @BLURB: eclass for perl modules
|
||||
# Andreas K. Hüttel <dilfridge@gentoo.org>
|
||||
# @BLURB: eclass for installing Perl module distributions
|
||||
# @DESCRIPTION:
|
||||
# The perl-module eclass is designed to allow easier installation of perl
|
||||
# modules, and their incorporation into the Gentoo Linux system.
|
||||
# The perl-module eclass is designed to allow easier installation of Perl
|
||||
# module distributions, and their incorporation into the Gentoo Linux system.
|
||||
# All exported functions from perl-functions.eclass (inherited here)
|
||||
# explicitly also belong to the interface of perl-module.eclass.
|
||||
# If your package does not use any Perl-specific build system (as, e.g.,
|
||||
# ExtUtils::MakeMaker or Module::Build), we recommend to use perl-functions.eclass
|
||||
# instead.
|
||||
|
||||
inherit eutils multiprocessing unpacker
|
||||
[[ ${CATEGORY} == "perl-core" ]] && inherit alternatives
|
||||
|
||||
PERL_EXPF="src_unpack src_prepare src_configure src_compile src_test src_install"
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
case ${EAPI:-0} in
|
||||
5)
|
||||
[[ ${CATEGORY} == "perl-core" ]] && \
|
||||
inherit eutils multiprocessing unpacker perl-functions
|
||||
PERL_EXPF="src_unpack src_prepare src_configure src_compile src_test src_install"
|
||||
;;
|
||||
6)
|
||||
inherit multiprocessing perl-functions
|
||||
PERL_EXPF="src_prepare src_configure src_compile src_test src_install"
|
||||
;;
|
||||
*)
|
||||
die "EAPI=${EAPI} is not supported by perl-module.eclass"
|
||||
;;
|
||||
esac
|
||||
|
||||
# @ECLASS-VARIABLE: GENTOO_DEPEND_ON_PERL
|
||||
# @DESCRIPTION:
|
||||
# This variable controls whether a runtime and build time dependency on
|
||||
# dev-lang/perl is automatically added by the eclass. It defaults to yes.
|
||||
# Set to no to disable, set to noslotop to add a perl dependency without
|
||||
# slot operator (EAPI=6). All packages installing into the vendor_perl
|
||||
# path must use yes here.
|
||||
|
||||
case ${EAPI:-0} in
|
||||
5)
|
||||
[[ ${CATEGORY} == perl-core ]] && \
|
||||
PERL_EXPF+=" pkg_postinst pkg_postrm"
|
||||
|
||||
case "${GENTOO_DEPEND_ON_PERL:-yes}" in
|
||||
@ -35,44 +58,112 @@ case "${EAPI:-0}" in
|
||||
RDEPEND="${DEPEND}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
die "EAPI=${EAPI} is not supported by perl-module.eclass"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${PERL_EXPORT_PHASE_FUNCTIONS:-yes}" in
|
||||
yes)
|
||||
case "${PERL_EXPORT_PHASE_FUNCTIONS:-yes}" in
|
||||
yes)
|
||||
EXPORT_FUNCTIONS ${PERL_EXPF}
|
||||
;;
|
||||
no)
|
||||
debug-print "PERL_EXPORT_PHASE_FUNCTIONS=no"
|
||||
;;
|
||||
*)
|
||||
die "PERL_EXPORT_PHASE_FUNCTIONS=${PERL_EXPORT_PHASE_FUNCTIONS} is not supported by perl-module.eclass"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
6)
|
||||
[[ ${CATEGORY} == perl-core ]] && \
|
||||
PERL_EXPF+=" pkg_postinst pkg_postrm"
|
||||
|
||||
case "${GENTOO_DEPEND_ON_PERL:-yes}" in
|
||||
yes)
|
||||
DEPEND="dev-lang/perl:="
|
||||
RDEPEND="dev-lang/perl:="
|
||||
;;
|
||||
noslotop)
|
||||
DEPEND="dev-lang/perl"
|
||||
RDEPEND="dev-lang/perl"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "${GENTOO_DEPEND_ON_PERL_SUBSLOT}" ]]; then
|
||||
eerror "GENTOO_DEPEND_ON_PERL_SUBSLOT is banned in EAPI=6. If you don't want a slot operator"
|
||||
die "set GENTOO_DEPEND_ON_PERL=noslotop instead."
|
||||
fi
|
||||
|
||||
if [[ "${PERL_EXPORT_PHASE_FUNCTIONS}" ]]; then
|
||||
eerror "PERL_EXPORT_PHASE_FUNCTIONS is banned in EAPI=6. Use perl-module.eclass if you need"
|
||||
die "phase functions, perl-functions.eclass if not."
|
||||
fi
|
||||
|
||||
EXPORT_FUNCTIONS ${PERL_EXPF}
|
||||
;;
|
||||
no)
|
||||
debug-print "PERL_EXPORT_PHASE_FUNCTIONS=no"
|
||||
;;
|
||||
*)
|
||||
die "PERL_EXPORT_PHASE_FUNCTIONS=${PERL_EXPORT_PHASE_FUNCTIONS} is not supported by perl-module.eclass"
|
||||
die "EAPI=${EAPI:-0} is not supported by perl-module.eclass"
|
||||
;;
|
||||
esac
|
||||
|
||||
LICENSE="${LICENSE:-|| ( Artistic GPL-1+ )}"
|
||||
|
||||
if [[ -n ${MY_PN} || -n ${MY_PV} || -n ${MODULE_VERSION} ]] ; then
|
||||
: ${MY_P:=${MY_PN:-${PN}}-${MY_PV:-${MODULE_VERSION:-${PV}}}}
|
||||
S=${MY_S:-${WORKDIR}/${MY_P}}
|
||||
# @ECLASS-VARIABLE: DIST_NAME
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) This variable provides a way to override PN for the calculation of S,
|
||||
# SRC_URI, and HOMEPAGE. Defaults to PN.
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_VERSION
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) This variable provides a way to override PV for the calculation of S and SRC_URI.
|
||||
# Use it to provide the non-normalized, upstream version number. Defaults to PV.
|
||||
# Named MODULE_VERSION in EAPI=5.
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_A_EXT
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) This variable provides a way to override the distfile extension for the calculation of
|
||||
# SRC_URI. Defaults to tar.gz. Named MODULE_A_EXT in EAPI=5.
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_A
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) This variable provides a way to override the distfile name for the calculation of
|
||||
# SRC_URI. Defaults to ${DIST_NAME}-${DIST_VERSION}.${DIST_A_EXT} Named MODULE_A in EAPI=5.
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_AUTHOR
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) This variable sets the module author name for the calculation of
|
||||
# SRC_URI. Named MODULE_AUTHOR in EAPI=5.
|
||||
|
||||
if [[ ${EAPI:-0} == 5 ]]; then
|
||||
if [[ -n ${MY_PN} || -n ${MY_PV} || -n ${MODULE_VERSION} ]] ; then
|
||||
: ${MY_P:=${MY_PN:-${PN}}-${MY_PV:-${MODULE_VERSION:-${PV}}}}
|
||||
S=${MY_S:-${WORKDIR}/${MY_P}}
|
||||
fi
|
||||
MODULE_NAME=${MY_PN:-${PN}}
|
||||
MODULE_P=${MY_P:-${P}}
|
||||
|
||||
[[ -z "${SRC_URI}" && -z "${MODULE_A}" ]] && \
|
||||
MODULE_A="${MODULE_P}.${MODULE_A_EXT:-tar.gz}"
|
||||
[[ -z "${SRC_URI}" && -n "${MODULE_AUTHOR}" ]] && \
|
||||
SRC_URI="mirror://cpan/authors/id/${MODULE_AUTHOR:0:1}/${MODULE_AUTHOR:0:2}/${MODULE_AUTHOR}/${MODULE_SECTION:+${MODULE_SECTION}/}${MODULE_A}"
|
||||
[[ -z "${HOMEPAGE}" ]] && \
|
||||
HOMEPAGE="http://search.cpan.org/dist/${MODULE_NAME}/"
|
||||
|
||||
SRC_TEST="skip"
|
||||
else
|
||||
DIST_NAME=${DIST_NAME:-${PN}}
|
||||
DIST_P=${DIST_NAME}-${DIST_VERSION:-${PV}}
|
||||
S=${WORKDIR}/${DIST_P}
|
||||
|
||||
[[ -z "${SRC_URI}" && -z "${DIST_A}" ]] && \
|
||||
DIST_A="${DIST_P}.${DIST_A_EXT:-tar.gz}"
|
||||
[[ -z "${SRC_URI}" && -n "${DIST_AUTHOR}" ]] && \
|
||||
SRC_URI="mirror://cpan/authors/id/${DIST_AUTHOR:0:1}/${DIST_AUTHOR:0:2}/${DIST_AUTHOR}/${DIST_SECTION:+${DIST_SECTION}/}${DIST_A}"
|
||||
[[ -z "${HOMEPAGE}" ]] && \
|
||||
HOMEPAGE="http://search.cpan.org/dist/${DIST_NAME}/"
|
||||
fi
|
||||
|
||||
[[ -z "${SRC_URI}" && -z "${MODULE_A}" ]] && \
|
||||
MODULE_A="${MY_P:-${P}}.${MODULE_A_EXT:-tar.gz}"
|
||||
[[ -z "${SRC_URI}" && -n "${MODULE_AUTHOR}" ]] && \
|
||||
SRC_URI="mirror://cpan/authors/id/${MODULE_AUTHOR:0:1}/${MODULE_AUTHOR:0:2}/${MODULE_AUTHOR}/${MODULE_SECTION:+${MODULE_SECTION}/}${MODULE_A}"
|
||||
[[ -z "${HOMEPAGE}" ]] && \
|
||||
HOMEPAGE="http://search.cpan.org/dist/${MY_PN:-${PN}}/"
|
||||
|
||||
SRC_PREP="no"
|
||||
SRC_TEST="skip"
|
||||
PREFER_BUILDPL="yes"
|
||||
|
||||
pm_echovar=""
|
||||
perlinfo_done=false
|
||||
|
||||
# @FUNCTION: perl-module_src_unpack
|
||||
# @USAGE: perl-module_src_unpack
|
||||
@ -81,7 +172,7 @@ perlinfo_done=false
|
||||
# This function is to be called during the ebuild src_unpack() phase.
|
||||
perl-module_src_unpack() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
[[ ${EAPI:-0} == 5 ]] || die "perl-module_src_unpack is banned in EAPI=6 or later"
|
||||
unpacker_src_unpack
|
||||
}
|
||||
|
||||
@ -92,15 +183,20 @@ perl-module_src_unpack() {
|
||||
# This function is to be called during the ebuild src_prepare() phase.
|
||||
perl-module_src_prepare() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
debug-print "$FUNCNAME: applying user patches"
|
||||
epatch_user
|
||||
|
||||
if [[ ${EAPI:-0} == 5 ]] ; then
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
debug-print "$FUNCNAME: applying user patches"
|
||||
epatch_user
|
||||
else
|
||||
default
|
||||
fi
|
||||
|
||||
if [[ ${PERL_RM_FILES[@]} ]]; then
|
||||
debug-print "$FUNCNAME: stripping unneeded files"
|
||||
perl_rm_files "${PERL_RM_FILES[@]}"
|
||||
fi
|
||||
perl_fix_osx_extra
|
||||
esvn_clean
|
||||
}
|
||||
|
||||
# @FUNCTION: perl-module_src_configure
|
||||
@ -111,7 +207,9 @@ perl-module_src_prepare() {
|
||||
perl-module_src_configure() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
[[ ${SRC_PREP} = yes ]] && return 0
|
||||
if [[ ${EAPI:-0} == 5 && ${SRC_PREP} == yes ]]; then
|
||||
return 0
|
||||
fi
|
||||
SRC_PREP="yes"
|
||||
|
||||
perl_check_env
|
||||
@ -132,29 +230,21 @@ perl-module_src_configure() {
|
||||
if grep -q '\(use\|require\)\s*Module::Build::Tiny' Build.PL ; then
|
||||
einfo "Using Module::Build::Tiny"
|
||||
if [[ ${DEPEND} != *dev-perl/Module-Build-Tiny* && ${PN} != Module-Build-Tiny ]]; then
|
||||
eqawarn "QA Notice: The ebuild uses Module::Build::Tiny but doesn't depend on it."
|
||||
eqawarn " Add dev-perl/Module-Build-Tiny to DEPEND!"
|
||||
if [[ -n ${PERLQAFATAL} ]]; then
|
||||
eerror "Bailing out due to PERLQAFATAL=1";
|
||||
die
|
||||
fi
|
||||
eerror "QA Notice: The ebuild uses Module::Build::Tiny but doesn't depend on it."
|
||||
die " Add dev-perl/Module-Build-Tiny to DEPEND!"
|
||||
fi
|
||||
else
|
||||
einfo "Using Module::Build"
|
||||
if [[ ${DEPEND} != *virtual/perl-Module-Build* && ${DEPEND} != *dev-perl/Module-Build* && ${PN} != Module-Build ]] ; then
|
||||
eqawarn "QA Notice: The ebuild uses Module::Build but doesn't depend on it."
|
||||
eqawarn " Add dev-perl/Module-Build to DEPEND!"
|
||||
if [[ -n ${PERLQAFATAL} ]]; then
|
||||
eerror "Bailing out due to PERLQAFATAL=1";
|
||||
die
|
||||
fi
|
||||
eerror "QA Notice: The ebuild uses Module::Build but doesn't depend on it."
|
||||
die " Add dev-perl/Module-Build to DEPEND!"
|
||||
fi
|
||||
fi
|
||||
set -- \
|
||||
--installdirs=vendor \
|
||||
--libdoc= \
|
||||
--destdir="${D}" \
|
||||
--create_packlist=0 \
|
||||
--create_packlist=1 \
|
||||
"${myconf_local[@]}"
|
||||
einfo "perl Build.PL" "$@"
|
||||
perl Build.PL "$@" <<< "${pm_echovar}" \
|
||||
@ -206,42 +296,81 @@ perl-module_src_compile() {
|
||||
fi
|
||||
}
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_TEST
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) Variable that controls if tests are run in the test phase
|
||||
# at all, and if yes under which conditions. Defaults to "do parallel"
|
||||
# If neither "do" nor "parallel" is recognized, tests are skipped.
|
||||
# (In EAPI=5 the variable is called SRC_TEST, defaults to "skip", and
|
||||
# recognizes fewer options.)
|
||||
# The following space-separated keywords are recognized:
|
||||
# do : run tests
|
||||
# parallel : run tests in parallel
|
||||
# verbose : increase test verbosity
|
||||
# network : do not try to disable network tests
|
||||
|
||||
# @ECLASS-VARIABLE: DIST_TEST_OVERRIDE
|
||||
# @DESCRIPTION:
|
||||
# (EAPI=6) Variable that controls if tests are run in the test phase
|
||||
# at all, and if yes under which conditions. It is intended for use in
|
||||
# make.conf or the environment by ebuild authors during testing, and
|
||||
# accepts the same values as DIST_TEST. If set, it overrides DIST_TEST
|
||||
# completely. DO NOT USE THIS IN EBUILDS!
|
||||
|
||||
# @FUNCTION: perl-module_src-test
|
||||
# @USAGE: perl-module_src_test()
|
||||
# @DESCRIPTION:
|
||||
# This code attempts to work out your threadingness from MAKEOPTS
|
||||
# and apply them to Test::Harness.
|
||||
#
|
||||
# If you want more verbose testing, set TEST_VERBOSE=1
|
||||
# in your bashrc | /etc/portage/make.conf | ENV
|
||||
#
|
||||
# or ebuild writers:
|
||||
# If you wish to enable default tests w/ 'make test' ,
|
||||
#
|
||||
# SRC_TEST="do"
|
||||
#
|
||||
# If you wish to have threads run in parallel ( using the users makeopts )
|
||||
# all of the following have been tested to work.
|
||||
#
|
||||
# SRC_TEST="do parallel"
|
||||
# SRC_TEST="parallel"
|
||||
# SRC_TEST="parallel do"
|
||||
# SRC_TEST=parallel
|
||||
#
|
||||
# This code attempts to work out your threadingness and runs tests
|
||||
# according to the settings of DIST_TEST using Test::Harness.
|
||||
perl-module_src_test() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
if has 'do' ${SRC_TEST} || has 'parallel' ${SRC_TEST} ; then
|
||||
if has "${TEST_VERBOSE:-0}" 0 && has 'parallel' ${SRC_TEST} ; then
|
||||
local my_test_control
|
||||
local my_test_verbose
|
||||
|
||||
if [[ ${EAPI:-0} == 5 ]] ; then
|
||||
my_test_control=${SRC_TEST}
|
||||
my_test_verbose=${TEST_VERBOSE:-0}
|
||||
if has 'do' ${my_test_control} || has 'parallel' ${my_test_control} ; then
|
||||
if has "${my_test_verbose}" 0 && has 'parallel' ${my_test_control} ; then
|
||||
export HARNESS_OPTIONS=j$(makeopts_jobs)
|
||||
einfo "Test::Harness Jobs=$(makeopts_jobs)"
|
||||
fi
|
||||
else
|
||||
einfo Skipping tests due to SRC_TEST=${SRC_TEST}
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
[[ -n "${DIST_TEST_OVERRIDE}" ]] && ewarn DIST_TEST_OVERRIDE is set to ${DIST_TEST_OVERRIDE}
|
||||
my_test_control=${DIST_TEST_OVERRIDE:-${DIST_TEST:-do parallel}}
|
||||
|
||||
if ! has 'do' ${my_test_control} && ! has 'parallel' ${my_test_control} ; then
|
||||
einfo Skipping tests due to DIST_TEST=${my_test_control}
|
||||
return 0
|
||||
fi
|
||||
|
||||
if has verbose ${my_test_control} ; then
|
||||
my_test_verbose=1
|
||||
else
|
||||
my_test_verbose=0
|
||||
fi
|
||||
|
||||
if has parallel ${my_test_control} ; then
|
||||
export HARNESS_OPTIONS=j$(makeopts_jobs)
|
||||
einfo "Test::Harness Jobs=$(makeopts_jobs)"
|
||||
fi
|
||||
${perlinfo_done} || perl_set_version
|
||||
if [[ -f Build ]] ; then
|
||||
./Build test verbose=${TEST_VERBOSE:-0} || die "test failed"
|
||||
elif [[ -f Makefile ]] ; then
|
||||
emake test TEST_VERBOSE=${TEST_VERBOSE:-0} || die "test failed"
|
||||
|
||||
# this might sometimes work...
|
||||
if ! has network ${my_test_control} ; then
|
||||
export NO_NETWORK_TESTING=1
|
||||
fi
|
||||
fi
|
||||
|
||||
perl_set_version
|
||||
if [[ -f Build ]] ; then
|
||||
./Build test verbose=${my_test_verbose} || die "test failed"
|
||||
elif [[ -f Makefile ]] ; then
|
||||
emake test TEST_VERBOSE=${my_test_verbose} || die "test failed"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl-module_src_install
|
||||
@ -278,7 +407,12 @@ perl-module_src_install() {
|
||||
|
||||
perl_delete_module_manpages
|
||||
perl_delete_localpod
|
||||
perl_delete_packlist
|
||||
if [[ ${EAPI:-0} == 5 ]] ; then
|
||||
perl_delete_packlist
|
||||
else
|
||||
perl_fix_packlist
|
||||
perl_delete_emptybsdir
|
||||
fi
|
||||
perl_remove_temppath
|
||||
|
||||
for f in Change* CHANGES README* TODO FAQ ${mydoc}; do
|
||||
@ -298,9 +432,8 @@ perl-module_src_install() {
|
||||
perl-module_pkg_postinst() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
if [[ ${CATEGORY} != perl-core ]] ; then
|
||||
eqawarn "perl-module.eclass: You are calling perl-module_pkg_postinst outside the perl-core category."
|
||||
eqawarn " This does not do anything; the call can be safely removed."
|
||||
return 0
|
||||
eerror "perl-module.eclass: You are calling perl-module_pkg_postinst outside the perl-core category."
|
||||
die " This does not do anything; the call can be removed."
|
||||
fi
|
||||
perl_link_duallife_scripts
|
||||
}
|
||||
@ -315,233 +448,8 @@ perl-module_pkg_postinst() {
|
||||
perl-module_pkg_postrm() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
if [[ ${CATEGORY} != perl-core ]] ; then
|
||||
eqawarn "perl-module.eclass: You are calling perl-module_pkg_postrm outside the perl-core category."
|
||||
eqawarn " This does not do anything; the call can be safely removed."
|
||||
return 0
|
||||
eerror "perl-module.eclass: You are calling perl-module_pkg_postrm outside the perl-core category."
|
||||
die " This does not do anything; the call can be removed."
|
||||
fi
|
||||
perl_link_duallife_scripts
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_set_version
|
||||
# @USAGE: perl_set_version
|
||||
# @DESCRIPTION:
|
||||
# Extract version information and installation paths from the current Perl
|
||||
# interpreter.
|
||||
#
|
||||
# This sets the following variables: PERL_VERSION, SITE_ARCH, SITE_LIB,
|
||||
# ARCH_LIB, VENDOR_LIB, VENDOR_ARCH
|
||||
#
|
||||
# This function used to be called perlinfo as well.
|
||||
perl_set_version() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
debug-print "$FUNCNAME: perlinfo_done=${perlinfo_done}"
|
||||
${perlinfo_done} && return 0
|
||||
perlinfo_done=true
|
||||
|
||||
local f version install{{site,vendor}{arch,lib},archlib}
|
||||
eval "$(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )"
|
||||
PERL_VERSION=${version}
|
||||
SITE_ARCH=${installsitearch}
|
||||
SITE_LIB=${installsitelib}
|
||||
ARCH_LIB=${installarchlib}
|
||||
VENDOR_LIB=${installvendorlib}
|
||||
VENDOR_ARCH=${installvendorarch}
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_localpod
|
||||
# @USAGE: perl_delete_localpod
|
||||
# @DESCRIPTION:
|
||||
# Remove stray perllocal.pod files in the temporary install directory D.
|
||||
#
|
||||
# This function used to be called fixlocalpod as well.
|
||||
perl_delete_localpod() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
find "${D}" -type f -name perllocal.pod -delete
|
||||
find "${D}" -depth -mindepth 1 -type d -empty -delete
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_fix_osx_extra
|
||||
# @USAGE: perl_fix_osx_extra
|
||||
# @DESCRIPTION:
|
||||
# Look through ${S} for AppleDouble encoded files and get rid of them.
|
||||
perl_fix_osx_extra() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
local f
|
||||
find "${S}" -type f -name "._*" -print0 | while read -rd '' f ; do
|
||||
einfo "Removing AppleDouble encoded Macintosh file: ${f#${S}/}"
|
||||
rm -f "${f}"
|
||||
f=${f#${S}/}
|
||||
grep -q "${f}" "${S}"/MANIFEST && \
|
||||
elog "AppleDouble encoded Macintosh file in MANIFEST: ${f#${S}/}"
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_module_manpages
|
||||
# @USAGE: perl_delete_module_manpages
|
||||
# @DESCRIPTION:
|
||||
# Bump off manpages installed by the current module such as *.3pm files as well
|
||||
# as empty directories.
|
||||
perl_delete_module_manpages() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
if [[ -d "${ED}"/usr/share/man ]] ; then
|
||||
find "${ED}"/usr/share/man -type f -name "*.3pm" -delete
|
||||
find "${ED}"/usr/share/man -depth -type d -empty -delete
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_delete_packlist
|
||||
# @USAGE: perl_delete_packlist
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for .packlist files, empty .bs files and empty directories,
|
||||
# and get rid of items found.
|
||||
perl_delete_packlist() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
perl_set_version
|
||||
if [[ -d ${D}/${VENDOR_ARCH} ]] ; then
|
||||
find "${D}/${VENDOR_ARCH}" -type f -a \( -name .packlist \
|
||||
-o \( -name '*.bs' -a -empty \) \) -delete
|
||||
find "${D}" -depth -mindepth 1 -type d -empty -delete
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_remove_temppath
|
||||
# @USAGE: perl_remove_temppath
|
||||
# @DESCRIPTION:
|
||||
# Look through ${D} for text files containing the temporary installation
|
||||
# folder (i.e. ${D}). If the pattern is found (i.e. " text"), replace it with `/'.
|
||||
perl_remove_temppath() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
|
||||
find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f ; do
|
||||
if file "${f}" | grep -q -i " text" ; then
|
||||
grep -q "${D}" "${f}" && ewarn "QA: File contains a temporary path ${f}"
|
||||
sed -i -e "s:${D}:/:g" "${f}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_rm_files
|
||||
# @USAGE: perl_rm_files "file_1" "file_2"
|
||||
# @DESCRIPTION:
|
||||
# Remove certain files from a Perl release and remove them from the MANIFEST
|
||||
# while we're there.
|
||||
#
|
||||
# Most useful in src_prepare for nuking bad tests, and is highly recommended
|
||||
# for any tests like 'pod.t', 'pod-coverage.t' or 'kwalitee.t', as what they
|
||||
# test is completely irrelevant to end users, and frequently fail simply
|
||||
# because the authors of Test::Pod... changed their recommendations, and thus
|
||||
# failures are only useful feedback to Authors, not users.
|
||||
#
|
||||
# Removing from MANIFEST also avoids needless log messages warning
|
||||
# users about files "missing from their kit".
|
||||
perl_rm_files() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
local skipfile="${T}/.gentoo_makefile_skip"
|
||||
local manifile="${S}/MANIFEST"
|
||||
local manitemp="${T}/.gentoo_manifest_temp"
|
||||
oldifs="$IFS"
|
||||
IFS="\n"
|
||||
for filename in "$@"; do
|
||||
einfo "Removing un-needed ${filename}";
|
||||
# Remove the file
|
||||
rm -f "${S}/${filename}"
|
||||
[[ -e "${manifile}" ]] && echo "${filename}" >> "${skipfile}"
|
||||
done
|
||||
if [[ -e "${manifile}" && -e "${skipfile}" ]]; then
|
||||
einfo "Fixing Manifest"
|
||||
grep -v -F -f "${skipfile}" "${manifile}" > "${manitemp}"
|
||||
mv -f -- "${manitemp}" "${manifile}"
|
||||
rm -- "${skipfile}";
|
||||
fi
|
||||
IFS="$oldifs"
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_link_duallife_scripts
|
||||
# @USAGE: perl_link_duallife_scripts
|
||||
# @DESCRIPTION:
|
||||
# Moves files and generates symlinks so dual-life packages installing scripts do not
|
||||
# lead to file collisions. Mainly for use in pkg_postinst and pkg_postrm, and makes
|
||||
# only sense for perl-core packages.
|
||||
perl_link_duallife_scripts() {
|
||||
debug-print-function $FUNCNAME "$@"
|
||||
if [[ ${CATEGORY} != perl-core ]] || ! has_version ">=dev-lang/perl-5.8.8-r8" ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local i ff
|
||||
if has "${EBUILD_PHASE:-none}" "postinst" "postrm" ; then
|
||||
for i in "${DUALLIFESCRIPTS[@]}" ; do
|
||||
alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"
|
||||
done
|
||||
for i in "${DUALLIFEMAN[@]}" ; do
|
||||
ff=`echo "${EROOT}"/${i%.1}-${PV}-${P}.1*`
|
||||
ff=${ff##*.1}
|
||||
alternatives_auto_makesym "/${i}${ff}" "/${i%.1}-[0-9]*"
|
||||
done
|
||||
else
|
||||
pushd "${ED}" > /dev/null
|
||||
for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null) ; do
|
||||
mv ${i}{,-${PV}-${P}} || die
|
||||
#DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i##*/}
|
||||
DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}
|
||||
done
|
||||
for i in $(find usr/share/man/man1 -maxdepth 1 -type f 2>/dev/null) ; do
|
||||
mv ${i} ${i%.1}-${PV}-${P}.1 || die
|
||||
DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}
|
||||
done
|
||||
popd > /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: perl_check_env
|
||||
# @USAGE: perl_check_env
|
||||
# @DESCRIPTION:
|
||||
# Checks a blacklist of known-suspect ENV values that can be accidentally set by users
|
||||
# doing personal perl work, which may accidentally leak into portage and break the
|
||||
# system perl installaton.
|
||||
# Dies if any of the suspect fields are found, and tell the user what needs to be unset.
|
||||
# There's a workaround, but you'll have to read the code for it.
|
||||
perl_check_env() {
|
||||
local errored value;
|
||||
|
||||
for i in PERL_MM_OPT PERL5LIB PERL5OPT PERL_MB_OPT PERL_CORE PERLPREFIX; do
|
||||
# Next unless match
|
||||
[ -v $i ] || continue;
|
||||
|
||||
# Warn only once, and warn only when one of the bad values are set.
|
||||
# record failure here.
|
||||
if [ ${errored:-0} == 0 ]; then
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog "perl-module.eclass: Suspicious environment values found.";
|
||||
else
|
||||
eerror "perl-module.eclass: Suspicious environment values found.";
|
||||
fi
|
||||
fi
|
||||
errored=1
|
||||
|
||||
# Read ENV Value
|
||||
eval "value=\$$i";
|
||||
|
||||
# Print ENV name/value pair
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog " $i=\"$value\"";
|
||||
else
|
||||
eerror " $i=\"$value\"";
|
||||
fi
|
||||
done
|
||||
|
||||
# Return if there were no failures
|
||||
[ ${errored:-0} == 0 ] && return;
|
||||
|
||||
# Return if user knows what they're doing
|
||||
if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then
|
||||
elog "Continuing anyway, seems you know what you're doing."
|
||||
return
|
||||
fi
|
||||
|
||||
eerror "Your environment settings may lead to undefined behavior and/or build failures."
|
||||
die "Please fix your environment ( ~/.bashrc, package.env, ... ), see above for details."
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ dlopen_lib() {
|
||||
# @USAGE:
|
||||
# @RETURN: system version of make
|
||||
# @DESCRIPTION:
|
||||
# Gets the name of the BSD-ish make command (pmake from NetBSD)
|
||||
# Gets the name of the BSD-ish make command (bmake from NetBSD)
|
||||
#
|
||||
# This will return make (provided by system packages) for BSD userlands,
|
||||
# or bsdmake for Darwin userlands and pmake for the rest of userlands,
|
||||
@ -107,12 +107,12 @@ dlopen_lib() {
|
||||
# Note: the bsdmake for Darwin userland is with compatibility with MacOSX
|
||||
# default name.
|
||||
get_bmake() {
|
||||
if [[ ${USERLAND} == *BSD ]]; then
|
||||
if [[ ${CBUILD:-${CHOST}} == *bsd* ]]; then
|
||||
echo make
|
||||
elif [[ ${USERLAND} == "Darwin" ]]; then
|
||||
elif [[ ${CBUILD:-${CHOST}} == *darwin* ]]; then
|
||||
echo bsdmake
|
||||
else
|
||||
echo pmake
|
||||
echo bmake
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/qmake-utils.eclass,v 1.11 2015/06/22 14:18:19 pesa Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: qmake-utils.eclass
|
||||
# @MAINTAINER:
|
||||
# Qt herd <qt@gentoo.org>
|
||||
# qt@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Davide Pesavento <pesa@gentoo.org>
|
||||
# @BLURB: Common functions for qmake-based packages.
|
||||
@ -17,11 +17,13 @@
|
||||
if [[ -z ${_QMAKE_UTILS_ECLASS} ]]; then
|
||||
_QMAKE_UTILS_ECLASS=1
|
||||
|
||||
inherit eutils multilib toolchain-funcs
|
||||
[[ ${EAPI:-0} == [012345] ]] && inherit multilib
|
||||
inherit eutils toolchain-funcs
|
||||
|
||||
# @FUNCTION: qt4_get_bindir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt4 binaries are installed.
|
||||
# EPREFIX is already prepended to the returned path.
|
||||
qt4_get_bindir() {
|
||||
has "${EAPI:-0}" 0 1 2 && use !prefix && EPREFIX=
|
||||
|
||||
@ -36,7 +38,6 @@ qt4_get_bindir() {
|
||||
# @FUNCTION: qt4_get_headerdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt4 headers are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt4_get_headerdir() {
|
||||
echo /usr/include/qt4
|
||||
}
|
||||
@ -44,7 +45,6 @@ qt4_get_headerdir() {
|
||||
# @FUNCTION: qt4_get_libdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt4 libraries are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt4_get_libdir() {
|
||||
echo /usr/$(get_libdir)/qt4
|
||||
}
|
||||
@ -52,14 +52,21 @@ qt4_get_libdir() {
|
||||
# @FUNCTION: qt4_get_mkspecsdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt4 mkspecs are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt4_get_mkspecsdir() {
|
||||
echo /usr/share/qt4/mkspecs
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4_get_plugindir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt4 plugins are installed.
|
||||
qt4_get_plugindir() {
|
||||
echo $(qt4_get_libdir)/plugins
|
||||
}
|
||||
|
||||
# @FUNCTION: qt5_get_bindir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt5 binaries are installed.
|
||||
# EPREFIX is already prepended to the returned path.
|
||||
qt5_get_bindir() {
|
||||
has "${EAPI:-0}" 0 1 2 && use !prefix && EPREFIX=
|
||||
|
||||
@ -69,7 +76,6 @@ qt5_get_bindir() {
|
||||
# @FUNCTION: qt5_get_headerdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt5 headers are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt5_get_headerdir() {
|
||||
echo /usr/include/qt5
|
||||
}
|
||||
@ -77,7 +83,6 @@ qt5_get_headerdir() {
|
||||
# @FUNCTION: qt5_get_libdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt5 libraries are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt5_get_libdir() {
|
||||
echo /usr/$(get_libdir)
|
||||
}
|
||||
@ -85,11 +90,17 @@ qt5_get_libdir() {
|
||||
# @FUNCTION: qt5_get_mkspecsdir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt5 mkspecs are installed.
|
||||
# Does not take EPREFIX into account.
|
||||
qt5_get_mkspecsdir() {
|
||||
echo $(qt5_get_libdir)/qt5/mkspecs
|
||||
}
|
||||
|
||||
# @FUNCTION: qt5_get_plugindir
|
||||
# @DESCRIPTION:
|
||||
# Echoes the directory where Qt5 plugins are installed.
|
||||
qt5_get_plugindir() {
|
||||
echo $(qt5_get_libdir)/qt5/plugins
|
||||
}
|
||||
|
||||
# @FUNCTION: qmake-utils_find_pro_file
|
||||
# @RETURN: zero or one qmake .pro file names
|
||||
# @INTERNAL
|
||||
@ -136,10 +147,10 @@ qmake-utils_find_pro_file() {
|
||||
# @FUNCTION: eqmake4
|
||||
# @USAGE: [project_file] [parameters to qmake]
|
||||
# @DESCRIPTION:
|
||||
# Wrapper for Qt4's qmake. If project_file isn't specified, eqmake4 will
|
||||
# look for it in the current directory (${S}, non-recursively). If more
|
||||
# than one project file are found, then ${PN}.pro is processed, provided
|
||||
# that it exists. Otherwise eqmake4 fails.
|
||||
# Wrapper for Qt4's qmake. If project_file is not specified, eqmake4 looks
|
||||
# for one in the current directory (non-recursively). If multiple project
|
||||
# files are found, then ${PN}.pro is used, if it exists, otherwise eqmake4
|
||||
# will not be able to continue.
|
||||
#
|
||||
# All other arguments are appended unmodified to qmake command line.
|
||||
#
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build-multilib.eclass,v 1.28 2015/06/16 21:38:00 pesa Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: qt4-build-multilib.eclass
|
||||
# @MAINTAINER:
|
||||
# Qt herd <qt@gentoo.org>
|
||||
# qt@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Davide Pesavento <pesa@gentoo.org>
|
||||
# @BLURB: Eclass for Qt4 split ebuilds with multilib support.
|
||||
@ -637,10 +637,11 @@ qt4_qmake() {
|
||||
local projectdir=${PWD/#${BUILD_DIR}/${S}}
|
||||
|
||||
"${BUILD_DIR}"/bin/qmake \
|
||||
"${projectdir}" \
|
||||
CONFIG+=nostrip \
|
||||
LIBS+=-L"${QT4_LIBDIR}" \
|
||||
"${projectdir}" \
|
||||
|| die "qmake failed (${projectdir})"
|
||||
"${myqmakeargs[@]}" \
|
||||
|| die "qmake failed (${projectdir#${S}/})"
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4_install_module_qconfigs
|
||||
|
@ -1,804 +0,0 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.163 2015/04/01 18:45:04 pesa Exp $
|
||||
|
||||
# @ECLASS: qt4-build.eclass
|
||||
# @MAINTAINER:
|
||||
# Qt herd <qt@gentoo.org>
|
||||
# @BLURB: Eclass for Qt4 split ebuilds.
|
||||
# @DESCRIPTION:
|
||||
# This eclass contains various functions that are used when building Qt4.
|
||||
|
||||
case ${EAPI} in
|
||||
4|5) : ;;
|
||||
*) die "qt4-build.eclass: unsupported EAPI=${EAPI:-0}" ;;
|
||||
esac
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs
|
||||
|
||||
HOMEPAGE="https://www.qt.io/"
|
||||
LICENSE="|| ( LGPL-2.1 GPL-3 )"
|
||||
SLOT="4"
|
||||
|
||||
case ${PV} in
|
||||
4.?.9999)
|
||||
QT4_BUILD_TYPE="live"
|
||||
EGIT_REPO_URI=(
|
||||
"git://code.qt.io/qt/qt.git"
|
||||
"https://code.qt.io/git/qt/qt.git"
|
||||
"https://github.com/qtproject/qt.git"
|
||||
)
|
||||
EGIT_BRANCH=${PV%.9999}
|
||||
inherit git-r3
|
||||
;;
|
||||
*)
|
||||
QT4_BUILD_TYPE="release"
|
||||
MY_P=qt-everywhere-opensource-src-${PV/_/-}
|
||||
SRC_URI="http://download.qt.io/archive/qt/${PV%.*}/${PV}/${MY_P}.tar.gz"
|
||||
S=${WORKDIR}/${MY_P}
|
||||
;;
|
||||
esac
|
||||
|
||||
IUSE="aqua debug pch"
|
||||
[[ ${PN} != qtxmlpatterns ]] && IUSE+=" +exceptions"
|
||||
|
||||
DEPEND="virtual/pkgconfig"
|
||||
if [[ ${QT4_BUILD_TYPE} == live ]]; then
|
||||
DEPEND+=" dev-lang/perl"
|
||||
fi
|
||||
|
||||
# @FUNCTION: qt4-build_pkg_setup
|
||||
# @DESCRIPTION:
|
||||
# Sets up PATH and LD_LIBRARY_PATH.
|
||||
qt4-build_pkg_setup() {
|
||||
# Warn users of possible breakage when downgrading to a previous release.
|
||||
# Downgrading revisions within the same release is safe.
|
||||
if has_version ">${CATEGORY}/${P}-r9999:4"; then
|
||||
ewarn
|
||||
ewarn "Downgrading Qt is completely unsupported and can break your system!"
|
||||
ewarn
|
||||
fi
|
||||
|
||||
PATH="${S}/bin${PATH:+:}${PATH}"
|
||||
if [[ ${CHOST} != *-darwin* ]]; then
|
||||
LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
|
||||
else
|
||||
DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}"
|
||||
# On MacOS we *need* at least src/gui/kernel/qapplication_mac.mm for
|
||||
# platform detection. Note: needs to come before any directories to
|
||||
# avoid extract failure.
|
||||
[[ ${CHOST} == *-apple-darwin* ]] && \
|
||||
QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
|
||||
${QT4_EXTRACT_DIRECTORIES}"
|
||||
fi
|
||||
}
|
||||
|
||||
# @ECLASS-VARIABLE: PATCHES
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array variable containing all the patches to be applied. This variable
|
||||
# is expected to be defined in the global scope of ebuilds. Make sure to
|
||||
# specify the full path. This variable is used in src_prepare phase.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# PATCHES=(
|
||||
# "${FILESDIR}/mypatch.patch"
|
||||
# "${FILESDIR}/patches_folder/"
|
||||
# )
|
||||
# @CODE
|
||||
|
||||
# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Space-separated list of directories that will be extracted
|
||||
# from Qt tarball.
|
||||
|
||||
# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Space-separated list of directories that will be configured,
|
||||
# compiled, and installed. All paths must be relative to ${S}.
|
||||
|
||||
# @FUNCTION: qt4-build_src_unpack
|
||||
# @DESCRIPTION:
|
||||
# Unpacks the sources.
|
||||
qt4-build_src_unpack() {
|
||||
setqtenv
|
||||
|
||||
if [[ $(gcc-major-version) -lt 4 ]] || [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -lt 4 ]]; then
|
||||
ewarn
|
||||
ewarn "Using a GCC version lower than 4.4 is not supported."
|
||||
ewarn
|
||||
fi
|
||||
|
||||
if [[ ${PN} == qtwebkit ]]; then
|
||||
eshopts_push -s extglob
|
||||
if is-flagq '-g?(gdb)?([1-9])'; then
|
||||
ewarn
|
||||
ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)."
|
||||
ewarn "You may experience really long compilation times and/or increased memory usage."
|
||||
ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug."
|
||||
ewarn "For more info check out https://bugs.gentoo.org/307861"
|
||||
ewarn
|
||||
fi
|
||||
eshopts_pop
|
||||
fi
|
||||
|
||||
case ${QT4_BUILD_TYPE} in
|
||||
live)
|
||||
git-r3_src_unpack
|
||||
;;
|
||||
release)
|
||||
local tarball="${MY_P}.tar.gz" target= targets=
|
||||
for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
|
||||
src/{qbase,qt_targets,qt_install}.pri bin config.tests \
|
||||
mkspecs qmake ${QT4_EXTRACT_DIRECTORIES}
|
||||
do
|
||||
targets+="${MY_P}/${target} "
|
||||
done
|
||||
|
||||
ebegin "Unpacking parts of ${tarball}:" ${targets//${MY_P}\/}
|
||||
tar -xzf "${DISTDIR}/${tarball}" ${targets}
|
||||
eend $? || die "failed to unpack"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_src_prepare
|
||||
# @DESCRIPTION:
|
||||
# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix
|
||||
# the build system in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified in make.conf.
|
||||
qt4-build_src_prepare() {
|
||||
setqtenv
|
||||
|
||||
if [[ ${QT4_BUILD_TYPE} == live ]]; then
|
||||
QTDIR="." ./bin/syncqt || die "syncqt failed"
|
||||
fi
|
||||
|
||||
# avoid X11 dependency in non-gui packages
|
||||
local nolibx11_pkgs="qtbearer qtcore qtdbus qtscript qtsql qttest qtxmlpatterns"
|
||||
has ${PN} ${nolibx11_pkgs} && qt_nolibx11
|
||||
|
||||
if use aqua; then
|
||||
# provide a proper macx-g++-64
|
||||
use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
|
||||
|
||||
sed -e '/^CONFIG/s:app_bundle::' \
|
||||
-e '/^CONFIG/s:plugin_no_soname:plugin_with_soname absolute_library_soname:' \
|
||||
-i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
|
||||
fi
|
||||
|
||||
if [[ ${CATEGORY}/${PN} != dev-qt/qtcore ]]; then
|
||||
skip_qmake_build
|
||||
skip_project_generation
|
||||
symlink_binaries_to_buildtree
|
||||
else
|
||||
# Bug 373061
|
||||
# qmake bus errors with -O2 or -O3 but -O1 works
|
||||
if [[ ${CHOST} == *86*-apple-darwin* ]]; then
|
||||
replace-flags -O[23] -O1
|
||||
fi
|
||||
|
||||
# Bug 503500
|
||||
# undefined reference with -Os and --as-needed
|
||||
if use x86; then
|
||||
replace-flags -Os -O2
|
||||
fi
|
||||
fi
|
||||
|
||||
# Bug 261632
|
||||
if use ppc64; then
|
||||
append-flags -mminimal-toc
|
||||
fi
|
||||
|
||||
# Bug 417105
|
||||
# graphite on gcc 4.7 causes miscompilations
|
||||
if [[ $(gcc-version) == "4.7" ]]; then
|
||||
filter-flags -fgraphite-identity
|
||||
fi
|
||||
|
||||
if use_if_iuse c++0x; then
|
||||
append-cxxflags -std=c++0x
|
||||
fi
|
||||
|
||||
# Respect CC, CXX, {C,CXX,LD}FLAGS in .qmake.cache
|
||||
sed -e "/^SYSTEM_VARIABLES=/i \
|
||||
CC='$(tc-getCC)'\n\
|
||||
CXX='$(tc-getCXX)'\n\
|
||||
CFLAGS='${CFLAGS}'\n\
|
||||
CXXFLAGS='${CXXFLAGS}'\n\
|
||||
LDFLAGS='${LDFLAGS}'\n\
|
||||
QMakeVar set QMAKE_CFLAGS_RELEASE\n\
|
||||
QMakeVar set QMAKE_CFLAGS_DEBUG\n\
|
||||
QMakeVar set QMAKE_CXXFLAGS_RELEASE\n\
|
||||
QMakeVar set QMAKE_CXXFLAGS_DEBUG\n\
|
||||
QMakeVar set QMAKE_LFLAGS_RELEASE\n\
|
||||
QMakeVar set QMAKE_LFLAGS_DEBUG\n"\
|
||||
-i configure \
|
||||
|| die "sed SYSTEM_VARIABLES failed"
|
||||
|
||||
# Respect CC, CXX, LINK and *FLAGS in config.tests
|
||||
find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \
|
||||
sed -i -e "/bin\/qmake/ s: \"\$SRCDIR/: \
|
||||
'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \
|
||||
'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \
|
||||
|| die "sed config.tests failed"
|
||||
|
||||
# Bug 172219
|
||||
sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
|
||||
|
||||
if [[ ${CHOST} == *-darwin* ]]; then
|
||||
# Set FLAGS *and* remove -arch, since our gcc-apple is multilib
|
||||
# crippled (by design) :/
|
||||
local mac_gpp_conf=
|
||||
if [[ -f mkspecs/common/mac-g++.conf ]]; then
|
||||
# qt < 4.8 has mac-g++.conf
|
||||
mac_gpp_conf="mkspecs/common/mac-g++.conf"
|
||||
elif [[ -f mkspecs/common/g++-macx.conf ]]; then
|
||||
# qt >= 4.8 has g++-macx.conf
|
||||
mac_gpp_conf="mkspecs/common/g++-macx.conf"
|
||||
else
|
||||
die "no known conf file for mac found"
|
||||
fi
|
||||
sed \
|
||||
-e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
|
||||
-e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
|
||||
-e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \
|
||||
-e "s:-arch\s\w*::g" \
|
||||
-i ${mac_gpp_conf} \
|
||||
|| die "sed ${mac_gpp_conf} failed"
|
||||
|
||||
# Fix configure's -arch settings that appear in qmake/Makefile and also
|
||||
# fix arch handling (automagically duplicates our -arch arg and breaks
|
||||
# pch). Additionally disable Xarch support.
|
||||
local mac_gcc_confs="${mac_gpp_conf}"
|
||||
if [[ -f mkspecs/common/gcc-base-macx.conf ]]; then
|
||||
mac_gcc_confs+=" mkspecs/common/gcc-base-macx.conf"
|
||||
fi
|
||||
sed \
|
||||
-e "s:-arch i386::" \
|
||||
-e "s:-arch ppc::" \
|
||||
-e "s:-arch x86_64::" \
|
||||
-e "s:-arch ppc64::" \
|
||||
-e "s:-arch \$i::" \
|
||||
-e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \
|
||||
-e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \
|
||||
-e "s:-Xarch_x86_64::g" \
|
||||
-e "s:-Xarch_ppc64::g" \
|
||||
-i configure ${mac_gcc_confs} \
|
||||
|| die "sed -arch/-Xarch failed"
|
||||
|
||||
# On Snow Leopard don't fall back to 10.5 deployment target.
|
||||
if [[ ${CHOST} == *-apple-darwin10 ]]; then
|
||||
sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \
|
||||
-e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \
|
||||
-i configure ${mac_gpp_conf} \
|
||||
|| die "sed deployment target failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# this one is needed for all systems with a separate -liconv, apart from
|
||||
# Darwin, for which the sources already cater for -liconv
|
||||
if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]]; then
|
||||
sed -e 's|mac:\(LIBS += -liconv\)|\1|g' \
|
||||
-i config.tests/unix/iconv/iconv.pro \
|
||||
|| die "sed iconv.pro failed"
|
||||
fi
|
||||
|
||||
# we need some patches for Solaris
|
||||
sed -i -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \
|
||||
mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
|
||||
# use GCC over SunStudio
|
||||
sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
|
||||
# do not flirt with non-Prefix stuff, we're quite possessive
|
||||
sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
|
||||
mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
|
||||
|
||||
# apply patches
|
||||
[[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
epatch_user
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_src_configure
|
||||
# @DESCRIPTION:
|
||||
# Default configure phase
|
||||
qt4-build_src_configure() {
|
||||
setqtenv
|
||||
|
||||
local conf="
|
||||
-prefix ${QTPREFIXDIR}
|
||||
-bindir ${QTBINDIR}
|
||||
-libdir ${QTLIBDIR}
|
||||
-docdir ${QTDOCDIR}
|
||||
-headerdir ${QTHEADERDIR}
|
||||
-plugindir ${QTPLUGINDIR}
|
||||
-importdir ${QTIMPORTDIR}
|
||||
-datadir ${QTDATADIR}
|
||||
-translationdir ${QTTRANSDIR}
|
||||
-sysconfdir ${QTSYSCONFDIR}
|
||||
-examplesdir ${QTEXAMPLESDIR}
|
||||
-demosdir ${QTDEMOSDIR}
|
||||
-opensource -confirm-license
|
||||
-shared -fast -largefile -stl -verbose
|
||||
-nomake examples -nomake demos"
|
||||
|
||||
# ARCH is set on Gentoo. Qt now falls back to generic on an unsupported
|
||||
# $(tc-arch). Therefore we convert it to supported values.
|
||||
case "$(tc-arch)" in
|
||||
amd64|x64-*) conf+=" -arch x86_64" ;;
|
||||
ppc-macos) conf+=" -arch ppc" ;;
|
||||
ppc|ppc64|ppc-*) conf+=" -arch powerpc" ;;
|
||||
sparc|sparc-*|sparc64-*) conf+=" -arch sparc" ;;
|
||||
x86-macos) conf+=" -arch x86" ;;
|
||||
x86|x86-*) conf+=" -arch i386" ;;
|
||||
alpha|arm|ia64|mips|s390) conf+=" -arch $(tc-arch)" ;;
|
||||
arm64|hppa|sh) conf+=" -arch generic" ;;
|
||||
*) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;;
|
||||
esac
|
||||
|
||||
conf+=" -platform $(qt_mkspecs_dir)"
|
||||
|
||||
[[ $(get_libdir) != lib ]] && conf+=" -L${EPREFIX}/usr/$(get_libdir)"
|
||||
|
||||
# debug/release
|
||||
if use debug; then
|
||||
conf+=" -debug"
|
||||
else
|
||||
conf+=" -release"
|
||||
fi
|
||||
conf+=" -no-separate-debug-info"
|
||||
|
||||
# exceptions USE flag
|
||||
conf+=" $(in_iuse exceptions && qt_use exceptions || echo -exceptions)"
|
||||
|
||||
# disable rpath (bug 380415), except on prefix (bug 417169)
|
||||
use prefix || conf+=" -no-rpath"
|
||||
|
||||
# precompiled headers don't work on hardened, where the flag is masked
|
||||
conf+=" $(qt_use pch)"
|
||||
|
||||
# -reduce-relocations
|
||||
# This flag seems to introduce major breakage to applications,
|
||||
# mostly to be seen as a core dump with the message "QPixmap: Must
|
||||
# construct a QApplication before a QPaintDevice" on Solaris.
|
||||
# -- Daniel Vergien
|
||||
[[ ${CHOST} != *-solaris* ]] && conf+=" -reduce-relocations"
|
||||
|
||||
# this one is needed for all systems with a separate -liconv, apart from
|
||||
# Darwin, for which the sources already cater for -liconv
|
||||
if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]]; then
|
||||
conf+=" -liconv"
|
||||
fi
|
||||
|
||||
if use_if_iuse glib; then
|
||||
local glibflags="$(pkg-config --cflags --libs glib-2.0 gthread-2.0)"
|
||||
# avoid the -pthread argument
|
||||
conf+=" ${glibflags//-pthread}"
|
||||
unset glibflags
|
||||
fi
|
||||
|
||||
if use aqua; then
|
||||
# On (snow) leopard use the new (frameworked) cocoa code.
|
||||
if [[ ${CHOST##*-darwin} -ge 9 ]]; then
|
||||
conf+=" -cocoa -framework"
|
||||
# We need the source's headers, not the installed ones.
|
||||
conf+=" -I${S}/include"
|
||||
# Add hint for the framework location.
|
||||
conf+=" -F${QTLIBDIR}"
|
||||
|
||||
# We are crazy and build cocoa + qt3support :-)
|
||||
if use qt3support; then
|
||||
sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
|
||||
-i configure || die
|
||||
fi
|
||||
else
|
||||
conf+=" -no-framework"
|
||||
fi
|
||||
else
|
||||
# freetype2 include dir is non-standard, thus pass it to configure
|
||||
conf+=" $(pkg-config --cflags-only-I freetype2)"
|
||||
fi
|
||||
|
||||
conf+=" ${myconf}"
|
||||
myconf=
|
||||
|
||||
echo ./configure ${conf}
|
||||
./configure ${conf} || die "./configure failed"
|
||||
|
||||
prepare_directories ${QT4_TARGET_DIRECTORIES}
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_src_compile
|
||||
# @DESCRIPTION:
|
||||
# Actual compile phase
|
||||
qt4-build_src_compile() {
|
||||
setqtenv
|
||||
|
||||
build_directories ${QT4_TARGET_DIRECTORIES}
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_src_test
|
||||
# @DESCRIPTION:
|
||||
# Runs tests only in target directories.
|
||||
qt4-build_src_test() {
|
||||
# QtMultimedia does not have any test suite (bug #332299)
|
||||
[[ ${CATEGORY}/${PN} == dev-qt/qtmultimedia ]] && return
|
||||
|
||||
for dir in ${QT4_TARGET_DIRECTORIES}; do
|
||||
emake -j1 check -C ${dir}
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: fix_includes
|
||||
# @DESCRIPTION:
|
||||
# For MacOS X we need to add some symlinks when frameworks are
|
||||
# being used, to avoid complications with some more or less stupid packages.
|
||||
fix_includes() {
|
||||
if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]]; then
|
||||
local frw dest f h rdir
|
||||
# Some packages tend to include <Qt/...>
|
||||
dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
|
||||
|
||||
# Fake normal headers when frameworks are installed... eases life later
|
||||
# on, make sure we use relative links though, as some ebuilds assume
|
||||
# these dirs exist in src_install to add additional files
|
||||
f=${QTHEADERDIR}
|
||||
h=${QTLIBDIR}
|
||||
while [[ -n ${f} && ${f%%/*} == ${h%%/*} ]] ; do
|
||||
f=${f#*/}
|
||||
h=${h#*/}
|
||||
done
|
||||
rdir=${h}
|
||||
f="../"
|
||||
while [[ ${h} == */* ]] ; do
|
||||
f="${f}../"
|
||||
h=${h#*/}
|
||||
done
|
||||
rdir="${f}${rdir}"
|
||||
|
||||
for frw in "${D}${QTLIBDIR}"/*.framework; do
|
||||
[[ -e "${frw}"/Headers ]] || continue
|
||||
f=$(basename ${frw})
|
||||
dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework}
|
||||
dosym "${rdir}"/${f}/Headers "${dest}"
|
||||
|
||||
# Link normal headers as well.
|
||||
for hdr in "${D}/${QTLIBDIR}/${f}"/Headers/*; do
|
||||
h=$(basename ${hdr})
|
||||
dosym "../${rdir}"/${f}/Headers/${h} \
|
||||
"${QTHEADERDIR#${EPREFIX}}"/Qt/${h}
|
||||
done
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_src_install
|
||||
# @DESCRIPTION:
|
||||
# Perform the actual installation including some library fixes.
|
||||
qt4-build_src_install() {
|
||||
setqtenv
|
||||
|
||||
install_directories ${QT4_TARGET_DIRECTORIES}
|
||||
install_qconfigs
|
||||
fix_library_files
|
||||
fix_includes
|
||||
|
||||
# remove .la files since we are building only shared libraries
|
||||
prune_libtool_files
|
||||
}
|
||||
|
||||
# @FUNCTION: setqtenv
|
||||
# @INTERNAL
|
||||
setqtenv() {
|
||||
# Set up installation directories
|
||||
QTPREFIXDIR=${EPREFIX}/usr
|
||||
QTBINDIR=${QTPREFIXDIR}/bin
|
||||
QTLIBDIR=${QTPREFIXDIR}/$(get_libdir)/qt4
|
||||
QTPCDIR=${QTPREFIXDIR}/$(get_libdir)/pkgconfig
|
||||
QTDOCDIR=${QTPREFIXDIR}/share/doc/qt-${PV}
|
||||
QTHEADERDIR=${QTPREFIXDIR}/include/qt4
|
||||
QTPLUGINDIR=${QTLIBDIR}/plugins
|
||||
QTIMPORTDIR=${QTLIBDIR}/imports
|
||||
QTDATADIR=${QTPREFIXDIR}/share/qt4
|
||||
QTTRANSDIR=${QTDATADIR}/translations
|
||||
QTSYSCONFDIR=${EPREFIX}/etc/qt4
|
||||
QTEXAMPLESDIR=${QTDATADIR}/examples
|
||||
QTDEMOSDIR=${QTDATADIR}/demos
|
||||
QMAKE_LIBDIR_QT=${QTLIBDIR}
|
||||
|
||||
PLATFORM=$(qt_mkspecs_dir)
|
||||
unset QMAKESPEC
|
||||
|
||||
export XDG_CONFIG_HOME="${T}"
|
||||
}
|
||||
|
||||
# @FUNCTION: prepare_directories
|
||||
# @USAGE: < directories >
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Generates Makefiles for the given list of directories.
|
||||
prepare_directories() {
|
||||
for x in "$@"; do
|
||||
pushd "${S}"/${x} >/dev/null || die
|
||||
einfo "Running qmake in: ${x}"
|
||||
"${S}"/bin/qmake \
|
||||
"LIBS+=-L${QTLIBDIR}" \
|
||||
"CONFIG+=nostrip" \
|
||||
|| die "qmake failed"
|
||||
popd >/dev/null || die
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: build_directories
|
||||
# @USAGE: < directories >
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Compiles the code in the given list of directories.
|
||||
build_directories() {
|
||||
for x in "$@"; do
|
||||
pushd "${S}"/${x} >/dev/null || die
|
||||
emake \
|
||||
AR="$(tc-getAR) cqs" \
|
||||
CC="$(tc-getCC)" \
|
||||
CXX="$(tc-getCXX)" \
|
||||
LINK="$(tc-getCXX)" \
|
||||
RANLIB=":" \
|
||||
STRIP=":"
|
||||
popd >/dev/null || die
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: install_directories
|
||||
# @USAGE: < directories >
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Runs emake install in the given directories, which are separated by spaces.
|
||||
install_directories() {
|
||||
for x in "$@"; do
|
||||
pushd "${S}"/${x} >/dev/null || die
|
||||
emake INSTALL_ROOT="${D}" install
|
||||
popd >/dev/null || die
|
||||
done
|
||||
}
|
||||
|
||||
# @ECLASS-VARIABLE: QCONFIG_ADD
|
||||
# @DESCRIPTION:
|
||||
# List options that need to be added to QT_CONFIG in qconfig.pri
|
||||
: ${QCONFIG_ADD:=}
|
||||
|
||||
# @ECLASS-VARIABLE: QCONFIG_REMOVE
|
||||
# @DESCRIPTION:
|
||||
# List options that need to be removed from QT_CONFIG in qconfig.pri
|
||||
: ${QCONFIG_REMOVE:=}
|
||||
|
||||
# @ECLASS-VARIABLE: QCONFIG_DEFINE
|
||||
# @DESCRIPTION:
|
||||
# List variables that should be defined at the top of QtCore/qconfig.h
|
||||
: ${QCONFIG_DEFINE:=}
|
||||
|
||||
# @FUNCTION: install_qconfigs
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Install gentoo-specific mkspecs configurations.
|
||||
install_qconfigs() {
|
||||
local x
|
||||
if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
|
||||
for x in QCONFIG_ADD QCONFIG_REMOVE; do
|
||||
[[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
|
||||
done
|
||||
insinto ${QTDATADIR#${EPREFIX}}/mkspecs/gentoo
|
||||
doins "${T}"/${PN}-qconfig.pri
|
||||
fi
|
||||
|
||||
if [[ -n ${QCONFIG_DEFINE} ]]; then
|
||||
for x in ${QCONFIG_DEFINE}; do
|
||||
echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h
|
||||
done
|
||||
insinto ${QTHEADERDIR#${EPREFIX}}/Gentoo
|
||||
doins "${T}"/gentoo-${PN}-qconfig.h
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: generate_qconfigs
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Generates gentoo-specific qconfig.{h,pri}.
|
||||
generate_qconfigs() {
|
||||
if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == dev-qt/qtcore ]]; then
|
||||
local x qconfig_add qconfig_remove qconfig_new
|
||||
for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
|
||||
[[ -f ${x} ]] || continue
|
||||
qconfig_add+=" $(sed -n 's/^QCONFIG_ADD=//p' "${x}")"
|
||||
qconfig_remove+=" $(sed -n 's/^QCONFIG_REMOVE=//p' "${x}")"
|
||||
done
|
||||
|
||||
# these error checks do not use die because dying in pkg_post{inst,rm}
|
||||
# just makes things worse.
|
||||
if [[ -e "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri ]]; then
|
||||
# start with the qconfig.pri that qtcore installed
|
||||
if ! cp "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri \
|
||||
"${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
|
||||
eerror "cp qconfig failed."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# generate list of QT_CONFIG entries from the existing list
|
||||
# including qconfig_add and excluding qconfig_remove
|
||||
for x in $(sed -n 's/^QT_CONFIG +=//p' \
|
||||
"${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do
|
||||
has ${x} ${qconfig_remove} || qconfig_new+=" ${x}"
|
||||
done
|
||||
|
||||
# replace the existing QT_CONFIG list with qconfig_new
|
||||
if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \
|
||||
"${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
|
||||
eerror "Sed for QT_CONFIG failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# create Gentoo/qconfig.h
|
||||
if [[ ! -e ${ROOT}${QTHEADERDIR}/Gentoo ]]; then
|
||||
if ! mkdir -p "${ROOT}${QTHEADERDIR}"/Gentoo; then
|
||||
eerror "mkdir ${QTHEADERDIR}/Gentoo failed"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
: > "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
|
||||
for x in "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-*-qconfig.h; do
|
||||
[[ -f ${x} ]] || continue
|
||||
cat "${x}" >> "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
|
||||
done
|
||||
else
|
||||
rm -f "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri
|
||||
rm -f "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
|
||||
rmdir "${ROOT}${QTDATADIR}"/mkspecs \
|
||||
"${ROOT}${QTDATADIR}" \
|
||||
"${ROOT}${QTHEADERDIR}"/Gentoo \
|
||||
"${ROOT}${QTHEADERDIR}" 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_pkg_postrm
|
||||
# @DESCRIPTION:
|
||||
# Regenerate configuration when the package is completely removed.
|
||||
qt4-build_pkg_postrm() {
|
||||
generate_qconfigs
|
||||
}
|
||||
|
||||
# @FUNCTION: qt4-build_pkg_postinst
|
||||
# @DESCRIPTION:
|
||||
# Regenerate configuration, plus throw a message about possible
|
||||
# breakages and proposed solutions.
|
||||
qt4-build_pkg_postinst() {
|
||||
generate_qconfigs
|
||||
}
|
||||
|
||||
# @FUNCTION: skip_qmake_build
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Patches configure to skip qmake compilation, as it's already installed by qtcore.
|
||||
skip_qmake_build() {
|
||||
sed -i -e "s:if true:if false:g" "${S}"/configure || die
|
||||
}
|
||||
|
||||
# @FUNCTION: skip_project_generation
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Exit the script early by throwing in an exit before all of the .pro files are scanned.
|
||||
skip_project_generation() {
|
||||
sed -i -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" "${S}"/configure || die
|
||||
}
|
||||
|
||||
# @FUNCTION: symlink_binaries_to_buildtree
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Symlinks generated binaries to buildtree, so they can be used during compilation time.
|
||||
symlink_binaries_to_buildtree() {
|
||||
for bin in qmake moc uic rcc; do
|
||||
ln -s "${QTBINDIR}"/${bin} "${S}"/bin/ || die "symlinking ${bin} to ${S}/bin failed"
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: fix_library_files
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Fixes the paths in *.la, *.prl, *.pc, as they are wrong due to sandbox and
|
||||
# moves the *.pc files into the pkgconfig directory.
|
||||
fix_library_files() {
|
||||
local libfile
|
||||
for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do
|
||||
if [[ -e ${libfile} ]]; then
|
||||
sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "sed on ${libfile} failed"
|
||||
fi
|
||||
done
|
||||
|
||||
# pkgconfig files refer to WORKDIR/bin as the moc and uic locations
|
||||
for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do
|
||||
if [[ -e ${libfile} ]]; then
|
||||
sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "sed on ${libfile} failed"
|
||||
|
||||
# Move .pc files into the pkgconfig directory
|
||||
dodir ${QTPCDIR#${EPREFIX}}
|
||||
mv ${libfile} "${D}"/${QTPCDIR}/ || die "moving ${libfile} to ${D}/${QTPCDIR}/ failed"
|
||||
fi
|
||||
done
|
||||
|
||||
# Don't install an empty directory
|
||||
rmdir "${D}"/${QTLIBDIR}/pkgconfig
|
||||
}
|
||||
|
||||
# @FUNCTION: qt_use
|
||||
# @USAGE: < flag > [ feature ] [ enableval ]
|
||||
# @DESCRIPTION:
|
||||
# This will echo "-${enableval}-${feature}" if <flag> is enabled, or
|
||||
# "-no-${feature}" if it's disabled. If [feature] is not specified, <flag>
|
||||
# will be used for that. If [enableval] is not specified, it omits the
|
||||
# "-${enableval}" part.
|
||||
qt_use() {
|
||||
use "$1" && echo "${3:+-$3}-${2:-$1}" || echo "-no-${2:-$1}"
|
||||
}
|
||||
|
||||
# @FUNCTION: qt_mkspecs_dir
|
||||
# @RETURN: the specs-directory w/o path
|
||||
# @DESCRIPTION:
|
||||
# Allows us to define which mkspecs dir we want to use.
|
||||
qt_mkspecs_dir() {
|
||||
local spec=
|
||||
|
||||
case "${CHOST}" in
|
||||
*-freebsd*|*-dragonfly*)
|
||||
spec=freebsd ;;
|
||||
*-openbsd*)
|
||||
spec=openbsd ;;
|
||||
*-netbsd*)
|
||||
spec=netbsd ;;
|
||||
*-darwin*)
|
||||
if use aqua; then
|
||||
# mac with carbon/cocoa
|
||||
spec=macx
|
||||
else
|
||||
# darwin/mac with x11
|
||||
spec=darwin
|
||||
fi
|
||||
;;
|
||||
*-solaris*)
|
||||
spec=solaris ;;
|
||||
*-linux-*|*-linux)
|
||||
spec=linux ;;
|
||||
*)
|
||||
die "${FUNCNAME}(): Unknown CHOST '${CHOST}'" ;;
|
||||
esac
|
||||
|
||||
case "$(tc-getCXX)" in
|
||||
*g++*)
|
||||
spec+=-g++ ;;
|
||||
*icpc*)
|
||||
spec+=-icc ;;
|
||||
*)
|
||||
die "${FUNCNAME}(): Unknown compiler '$(tc-getCXX)'" ;;
|
||||
esac
|
||||
|
||||
# Add -64 for 64bit profiles
|
||||
if use x64-freebsd ||
|
||||
use amd64-linux ||
|
||||
use x64-macos ||
|
||||
use x64-solaris ||
|
||||
use sparc64-solaris
|
||||
then
|
||||
spec+=-64
|
||||
fi
|
||||
|
||||
echo "${spec}"
|
||||
}
|
||||
|
||||
# @FUNCTION: qt_nolibx11
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Skip X11 tests for packages that don't need X libraries installed.
|
||||
qt_nolibx11() {
|
||||
sed -i -e '/^if.*PLATFORM_X11.*CFG_GUI/,/^fi$/d' "${S}"/configure || die
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst
|
@ -1,18 +1,20 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-r2.eclass,v 1.31 2014/11/01 23:48:16 pesa Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: qt4-r2.eclass
|
||||
# @MAINTAINER:
|
||||
# Qt herd <qt@gentoo.org>
|
||||
# qt@gentoo.org
|
||||
# @BLURB: Eclass for Qt4-based packages, second edition.
|
||||
# @DESCRIPTION:
|
||||
# This eclass contains various functions that may be useful when
|
||||
# dealing with packages using Qt4 libraries. Requires EAPI=2 or later.
|
||||
# dealing with packages using Qt4 libraries. Supports only EAPIs
|
||||
# 2, 3, 4, and 5. Use qmake-utils.eclass in EAPI 6 and later.
|
||||
|
||||
case ${EAPI} in
|
||||
2|3|4|5) : ;;
|
||||
*) die "qt4-r2.eclass: unsupported EAPI=${EAPI:-0}" ;;
|
||||
6) die "qt4-r2.eclass is banned in EAPI 6 and later" ;;
|
||||
*) die "qt4-r2.eclass: unsupported EAPI=${EAPI:-0}" ;;
|
||||
esac
|
||||
|
||||
inherit base eutils qmake-utils
|
||||
|
@ -1,37 +1,64 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/qt5-build.eclass,v 1.20 2015/06/17 15:48:58 pesa Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: qt5-build.eclass
|
||||
# @MAINTAINER:
|
||||
# Qt herd <qt@gentoo.org>
|
||||
# qt@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Davide Pesavento <pesa@gentoo.org>
|
||||
# @BLURB: Eclass for Qt5 split ebuilds.
|
||||
# @DESCRIPTION:
|
||||
# This eclass contains various functions that are used when building Qt5.
|
||||
# Requires EAPI 5.
|
||||
# Requires EAPI 5 or 6.
|
||||
|
||||
if [[ ${CATEGORY} != dev-qt ]]; then
|
||||
die "qt5-build.eclass is only to be used for building Qt 5."
|
||||
fi
|
||||
|
||||
case ${EAPI} in
|
||||
5) : ;;
|
||||
5|6) : ;;
|
||||
*) die "qt5-build.eclass: unsupported EAPI=${EAPI:-0}" ;;
|
||||
esac
|
||||
|
||||
inherit eutils flag-o-matic multilib toolchain-funcs virtualx
|
||||
|
||||
QT5_MINOR_VERSION=${PV#*.}
|
||||
QT5_MINOR_VERSION=${QT5_MINOR_VERSION%%.*}
|
||||
|
||||
HOMEPAGE="https://www.qt.io/"
|
||||
LICENSE="|| ( LGPL-2.1 LGPL-3 ) FDL-1.3"
|
||||
SLOT="5"
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_MODULE
|
||||
# @DESCRIPTION:
|
||||
# The upstream name of the module this package belongs to. Used for
|
||||
# SRC_URI and EGIT_REPO_URI. Must be defined before inheriting the eclass.
|
||||
: ${QT5_MODULE:=${PN}}
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_TARGET_SUBDIRS
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array variable containing the source directories that should be built.
|
||||
# All paths must be relative to ${S}.
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_GENTOO_CONFIG
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array of <useflag:feature:macro> triplets that are evaluated in src_install
|
||||
# to generate the per-package list of enabled QT_CONFIG features and macro
|
||||
# definitions, which are then merged together with all other Qt5 packages
|
||||
# installed on the system to obtain the global qconfig.{h,pri} files.
|
||||
|
||||
# @ECLASS-VARIABLE: VIRTUALX_REQUIRED
|
||||
# @DESCRIPTION:
|
||||
# For proper description see virtualx.eclass man page.
|
||||
# Here we redefine default value to be manual, if your package needs virtualx
|
||||
# for tests you should proceed with setting VIRTUALX_REQUIRED=test.
|
||||
: ${VIRTUALX_REQUIRED:=manual}
|
||||
|
||||
[[ ${EAPI} == 5 ]] && inherit multilib
|
||||
inherit eutils flag-o-matic toolchain-funcs versionator virtualx
|
||||
|
||||
HOMEPAGE="https://www.qt.io/"
|
||||
LICENSE="|| ( LGPL-2.1 LGPL-3 ) FDL-1.3"
|
||||
|
||||
QT5_MINOR_VERSION=$(get_version_component_range 2)
|
||||
readonly QT5_MINOR_VERSION
|
||||
|
||||
SLOT="5"
|
||||
|
||||
case ${PV} in
|
||||
5.9999)
|
||||
# git dev branch
|
||||
@ -58,6 +85,7 @@ case ${PV} in
|
||||
S=${WORKDIR}/${MY_P}
|
||||
;;
|
||||
esac
|
||||
readonly QT5_BUILD_TYPE
|
||||
|
||||
EGIT_REPO_URI=(
|
||||
"git://code.qt.io/qt/${QT5_MODULE}.git"
|
||||
@ -66,6 +94,14 @@ EGIT_REPO_URI=(
|
||||
)
|
||||
[[ ${QT5_BUILD_TYPE} == live ]] && inherit git-r3
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_BUILD_DIR
|
||||
# @DESCRIPTION:
|
||||
# Build directory for out-of-source builds.
|
||||
case ${QT5_BUILD_TYPE} in
|
||||
live) : ${QT5_BUILD_DIR:=${S}_build} ;;
|
||||
release) : ${QT5_BUILD_DIR:=${S}} ;; # workaround for bug 497312
|
||||
esac
|
||||
|
||||
IUSE="debug test"
|
||||
|
||||
[[ ${PN} == qtwebkit ]] && RESTRICT+=" mirror" # bug 524584
|
||||
@ -76,77 +112,39 @@ DEPEND="
|
||||
virtual/pkgconfig
|
||||
"
|
||||
if [[ ${PN} != qttest ]]; then
|
||||
if [[ ${QT5_MODULE} == qtbase ]]; then
|
||||
DEPEND+=" test? ( ~dev-qt/qttest-${PV} )"
|
||||
else
|
||||
DEPEND+=" test? ( >=dev-qt/qttest-${PV}:5 )"
|
||||
fi
|
||||
DEPEND+=" test? ( ~dev-qt/qttest-${PV} )"
|
||||
fi
|
||||
RDEPEND="
|
||||
dev-qt/qtchooser
|
||||
"
|
||||
|
||||
EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install src_test pkg_postinst pkg_postrm
|
||||
|
||||
|
||||
# @ECLASS-VARIABLE: PATCHES
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array variable containing all the patches to be applied. This variable
|
||||
# is expected to be defined in the global scope of ebuilds. Make sure to
|
||||
# specify the full path. This variable is used in src_prepare phase.
|
||||
#
|
||||
# Example:
|
||||
# @CODE
|
||||
# PATCHES=(
|
||||
# "${FILESDIR}/mypatch.patch"
|
||||
# "${FILESDIR}/mypatch2.patch"
|
||||
# )
|
||||
# @CODE
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_TARGET_SUBDIRS
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array variable containing the source directories that should be built.
|
||||
# All paths must be relative to ${S}.
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_BUILD_DIR
|
||||
# @DESCRIPTION:
|
||||
# Build directory for out-of-source builds.
|
||||
case ${QT5_BUILD_TYPE} in
|
||||
live) : ${QT5_BUILD_DIR:=${S}_build} ;;
|
||||
release) : ${QT5_BUILD_DIR:=${S}} ;; # workaround for bug 497312
|
||||
esac
|
||||
|
||||
# @ECLASS-VARIABLE: QT5_GENTOO_CONFIG
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Array of <useflag:feature:macro> triplets that are evaluated in src_install
|
||||
# to generate the per-package list of enabled QT_CONFIG features and macro
|
||||
# definitions, which are then merged together with all other Qt5 packages
|
||||
# installed on the system to obtain the global qconfig.{h,pri} files.
|
||||
|
||||
# @ECLASS-VARIABLE: VIRTUALX_REQUIRED
|
||||
# @DESCRIPTION:
|
||||
# For proper description see virtualx.eclass man page.
|
||||
# Here we redefine default value to be manual, if your package needs virtualx
|
||||
# for tests you should proceed with setting VIRTUALX_REQUIRED=test.
|
||||
: ${VIRTUALX_REQUIRED:=manual}
|
||||
|
||||
|
||||
###### Phase functions ######
|
||||
|
||||
EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install src_test pkg_postinst pkg_postrm
|
||||
|
||||
# @FUNCTION: qt5-build_src_unpack
|
||||
# @DESCRIPTION:
|
||||
# Unpacks the sources.
|
||||
qt5-build_src_unpack() {
|
||||
if [[ $(gcc-major-version) -lt 4 ]] || [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -lt 5 ]]; then
|
||||
ewarn
|
||||
ewarn "Using a GCC version lower than 4.5 is not supported."
|
||||
ewarn
|
||||
local gcc_version_check_fatal=false
|
||||
local min_gcc4_minor_version=5
|
||||
if [[ ${QT5_MINOR_VERSION} -ge 6 ]]; then
|
||||
gcc_version_check_fatal=true
|
||||
fi
|
||||
if [[ ${QT5_MINOR_VERSION} -ge 7 || ${PN} == qtwebengine ]]; then
|
||||
min_gcc4_minor_version=7
|
||||
fi
|
||||
if [[ $(gcc-major-version) -lt 4 ]] || \
|
||||
[[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -lt ${min_gcc4_minor_version} ]]; then
|
||||
if ${gcc_version_check_fatal}; then
|
||||
die "GCC version 4.${min_gcc4_minor_version} or later is required to build this package"
|
||||
else
|
||||
ewarn "Using a GCC version lower than 4.${min_gcc4_minor_version} is not supported"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${PN} == qtwebkit ]]; then
|
||||
if [[ ${PN} == qtwebengine || ${PN} == qtwebkit ]]; then
|
||||
eshopts_push -s extglob
|
||||
if is-flagq '-g?(gdb)?([1-9])'; then
|
||||
ewarn
|
||||
@ -192,14 +190,27 @@ qt5-build_src_prepare() {
|
||||
configure || die "sed failed (QMAKE_CONF_COMPILER)"
|
||||
|
||||
# Respect toolchain and flags in config.tests
|
||||
find config.tests/unix -name '*.test' -type f \
|
||||
-execdir sed -i -e '/bin\/qmake/ s/-nocache //' '{}' + \
|
||||
|| die "sed failed (config.tests)"
|
||||
find config.tests/unix -name '*.test' -type f -execdir \
|
||||
sed -i -e '/bin\/qmake/ s/-nocache //' '{}' + || die
|
||||
|
||||
# Don't add -O3 to CXXFLAGS (bug 549140)
|
||||
sed -i -e '/CONFIG\s*+=/ s/optimize_full//' \
|
||||
src/{corelib/corelib,gui/gui}.pro || die "sed failed (optimize_full)"
|
||||
|
||||
# Don't inject -msse/-mavx/... into CXXFLAGS when detecting
|
||||
# compiler support for extended instruction sets (bug 552942)
|
||||
if [[ ${QT5_MINOR_VERSION} -ge 5 ]]; then
|
||||
find config.tests/common -name '*.pro' -type f -execdir \
|
||||
sed -i -e '/else:QMAKE_CXXFLAGS\s*+=/ d' '{}' + || die
|
||||
fi
|
||||
fi
|
||||
|
||||
# apply patches
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
epatch_user
|
||||
if [[ ${EAPI} == 5 ]]; then
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
epatch_user
|
||||
else
|
||||
default
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: qt5-build_src_configure
|
||||
@ -225,29 +236,27 @@ qt5-build_src_compile() {
|
||||
# @DESCRIPTION:
|
||||
# Runs tests in the target directories.
|
||||
qt5-build_src_test() {
|
||||
# '-after SUBDIRS-=...' disables broken cmake tests (bug 474004)
|
||||
qt5_foreach_target_subdir qt5_qmake -after SUBDIRS-=cmake SUBDIRS-=installed_cmake
|
||||
# disable broken cmake tests (bug 474004)
|
||||
local myqmakeargs=("${myqmakeargs[@]}" -after SUBDIRS-=cmake SUBDIRS-=installed_cmake)
|
||||
|
||||
qt5_foreach_target_subdir qt5_qmake
|
||||
qt5_foreach_target_subdir emake
|
||||
|
||||
# create a custom testrunner script that correctly sets
|
||||
# {,DY}LD_LIBRARY_PATH before executing the given test
|
||||
# LD_LIBRARY_PATH before executing the given test
|
||||
local testrunner=${QT5_BUILD_DIR}/gentoo-testrunner
|
||||
cat <<-EOF > "${testrunner}"
|
||||
cat > "${testrunner}" <<-_EOF_ || die
|
||||
#!/bin/sh
|
||||
export LD_LIBRARY_PATH="${QT5_BUILD_DIR}/lib:${QT5_LIBDIR}"
|
||||
export DYLD_LIBRARY_PATH="${QT5_BUILD_DIR}/lib:${QT5_LIBDIR}"
|
||||
"\$@"
|
||||
EOF
|
||||
_EOF_
|
||||
chmod +x "${testrunner}"
|
||||
|
||||
_qt5_test_runner() {
|
||||
qt5_foreach_target_subdir emake TESTRUNNER="'${testrunner}'" check
|
||||
}
|
||||
|
||||
set -- qt5_foreach_target_subdir emake TESTRUNNER="'${testrunner}'" check
|
||||
if [[ ${VIRTUALX_REQUIRED} == test ]]; then
|
||||
VIRTUALX_COMMAND="_qt5_test_runner" virtualmake
|
||||
virtx "$@"
|
||||
else
|
||||
_qt5_test_runner
|
||||
"$@"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -282,7 +291,7 @@ qt5-build_src_install() {
|
||||
|| die "sed failed (qconfig.h)"
|
||||
|
||||
# install qtchooser configuration file
|
||||
cat > "${T}/qt5-${CHOST}.conf" <<-_EOF_
|
||||
cat > "${T}/qt5-${CHOST}.conf" <<-_EOF_ || die
|
||||
${QT5_BINDIR}
|
||||
${QT5_LIBDIR}
|
||||
_EOF_
|
||||
@ -402,6 +411,10 @@ qt5_prepare_env() {
|
||||
QT5_EXAMPLESDIR=${QT5_DATADIR}/examples
|
||||
QT5_TESTSDIR=${QT5_DATADIR}/tests
|
||||
QT5_SYSCONFDIR=${EPREFIX}/etc/xdg
|
||||
readonly QT5_PREFIX QT5_HEADERDIR QT5_LIBDIR QT5_ARCHDATADIR \
|
||||
QT5_BINDIR QT5_PLUGINDIR QT5_LIBEXECDIR QT5_IMPORTDIR \
|
||||
QT5_QMLDIR QT5_DATADIR QT5_DOCDIR QT5_TRANSLATIONDIR \
|
||||
QT5_EXAMPLESDIR QT5_TESTSDIR QT5_SYSCONFDIR
|
||||
|
||||
if [[ ${QT5_MODULE} == qtbase ]]; then
|
||||
# see mkspecs/features/qt_config.prf
|
||||
@ -412,28 +425,31 @@ qt5_prepare_env() {
|
||||
# @FUNCTION: qt5_foreach_target_subdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Executes the arguments inside each directory listed in QT5_TARGET_SUBDIRS.
|
||||
# Executes the command given as argument from inside each directory
|
||||
# listed in QT5_TARGET_SUBDIRS. Handles autotests subdirs automatically.
|
||||
qt5_foreach_target_subdir() {
|
||||
[[ -z ${QT5_TARGET_SUBDIRS[@]} ]] && QT5_TARGET_SUBDIRS=("")
|
||||
|
||||
local ret=0 subdir=
|
||||
local die_args=()
|
||||
[[ ${EAPI} != 5 ]] && die_args+=(-n)
|
||||
|
||||
local subdir=
|
||||
for subdir in "${QT5_TARGET_SUBDIRS[@]}"; do
|
||||
if [[ ${EBUILD_PHASE} == test ]]; then
|
||||
subdir=tests/auto${subdir#src}
|
||||
[[ -d ${S}/${subdir} ]] || continue
|
||||
fi
|
||||
|
||||
mkdir -p "${QT5_BUILD_DIR}/${subdir}" || die
|
||||
pushd "${QT5_BUILD_DIR}/${subdir}" >/dev/null || die
|
||||
local msg="Running $* ${subdir:+in ${subdir}}"
|
||||
einfo "${msg}"
|
||||
|
||||
einfo "Running $* ${subdir:+in ${subdir}}"
|
||||
"$@"
|
||||
((ret+=$?))
|
||||
mkdir -p "${QT5_BUILD_DIR}/${subdir}" || die "${die_args[@]}" || return $?
|
||||
pushd "${QT5_BUILD_DIR}/${subdir}" >/dev/null || die "${die_args[@]}" || return $?
|
||||
|
||||
popd >/dev/null || die
|
||||
"$@" || die "${die_args[@]}" "${msg} failed" || return $?
|
||||
|
||||
popd >/dev/null || die "${die_args[@]}" || return $?
|
||||
done
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
# @FUNCTION: qt5_symlink_tools_to_build_dir
|
||||
@ -445,7 +461,6 @@ qt5_symlink_tools_to_build_dir() {
|
||||
local tool= tools=()
|
||||
if [[ ${PN} != qtcore ]]; then
|
||||
tools+=(qmake moc rcc qlalr)
|
||||
[[ ${PN} != qdoc ]] && tools+=(qdoc)
|
||||
[[ ${PN} != qtdbus ]] && tools+=(qdbuscpp2xml qdbusxml2cpp)
|
||||
[[ ${PN} != qtwidgets ]] && tools+=(uic)
|
||||
fi
|
||||
@ -494,11 +509,15 @@ qt5_base_configure() {
|
||||
-release
|
||||
-no-separate-debug-info
|
||||
|
||||
# no need to forcefully build host tools in optimized mode,
|
||||
# just follow the overall debug/release build type
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 6 ]] && echo -no-optimized-tools)
|
||||
|
||||
# licensing stuff
|
||||
-opensource -confirm-license
|
||||
|
||||
# let configure automatically figure out if C++11 is supported
|
||||
#-c++11
|
||||
# autodetect the highest supported version of the C++ standard
|
||||
#-c++std <c++11|c++14|c++1z>
|
||||
|
||||
# build shared libraries
|
||||
-shared
|
||||
@ -517,16 +536,16 @@ qt5_base_configure() {
|
||||
# obsolete flag, does nothing
|
||||
#-qml-debug
|
||||
|
||||
# instruction set support
|
||||
$(is-flagq -mno-sse2 && echo -no-sse2)
|
||||
$(is-flagq -mno-sse3 && echo -no-sse3)
|
||||
$(is-flagq -mno-ssse3 && echo -no-ssse3)
|
||||
$(is-flagq -mno-sse4.1 && echo -no-sse4.1)
|
||||
$(is-flagq -mno-sse4.2 && echo -no-sse4.2)
|
||||
$(is-flagq -mno-avx && echo -no-avx)
|
||||
$(is-flagq -mno-avx2 && echo -no-avx2)
|
||||
$(is-flagq -mno-dsp && echo -no-mips_dsp)
|
||||
$(is-flagq -mno-dspr2 && echo -no-mips_dspr2)
|
||||
# extended instruction sets support
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-sse2 && echo -no-sse2)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-sse3 && echo -no-sse3)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-ssse3 && echo -no-ssse3)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-sse4.1 && echo -no-sse4.1)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-sse4.2 && echo -no-sse4.2)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-avx && echo -no-avx)
|
||||
$([[ ${QT5_MINOR_VERSION} -le 4 ]] && is-flagq -mno-avx2 && echo -no-avx2)
|
||||
$(is-flagq -mno-dsp && echo -no-mips_dsp)
|
||||
$(is-flagq -mno-dspr2 && echo -no-mips_dspr2)
|
||||
|
||||
# use pkg-config to detect include and library paths
|
||||
-pkg-config
|
||||
@ -535,27 +554,26 @@ qt5_base_configure() {
|
||||
-system-zlib
|
||||
-system-pcre
|
||||
|
||||
# don't specify -no-gif because there is no way to override it later
|
||||
#-no-gif
|
||||
|
||||
# disable everything to prevent automagic deps (part 1)
|
||||
-no-mtdev
|
||||
-no-journald
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 6 ]] && echo -no-syslog)
|
||||
-no-libpng -no-libjpeg
|
||||
-no-freetype -no-harfbuzz
|
||||
-no-openssl
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 5 ]] && echo -no-libproxy)
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 5 ]] && echo -no-xkbcommon-{x11,evdev})
|
||||
-no-xinput2 -no-xcb-xlib
|
||||
|
||||
# don't specify -no-gif because there is no way to override it later
|
||||
#-no-gif
|
||||
|
||||
# always enable glib event loop support
|
||||
-glib
|
||||
|
||||
# disable everything to prevent automagic deps (part 2)
|
||||
-no-pulseaudio -no-alsa
|
||||
|
||||
# override in qtgui and qtwidgets where x11-libs/cairo[qt4] is blocked
|
||||
# to avoid adding qt4 include paths (bug 433826)
|
||||
-no-gtkstyle
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 7 ]] && echo -no-gtk || echo -no-gtkstyle)
|
||||
|
||||
# exclude examples and tests from default build
|
||||
-nomake examples
|
||||
@ -568,9 +586,6 @@ qt5_base_configure() {
|
||||
# print verbose information about each configure test
|
||||
-verbose
|
||||
|
||||
# doesn't actually matter since we override CXXFLAGS
|
||||
#-no-optimized-qmake
|
||||
|
||||
# obsolete flag, does nothing
|
||||
#-nis
|
||||
|
||||
@ -578,15 +593,20 @@ qt5_base_configure() {
|
||||
-iconv
|
||||
|
||||
# disable everything to prevent automagic deps (part 3)
|
||||
-no-cups -no-evdev -no-icu -no-fontconfig -no-dbus
|
||||
-no-cups -no-evdev
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 5 ]] && echo -no-tslib)
|
||||
-no-icu -no-fontconfig
|
||||
-no-dbus
|
||||
|
||||
# don't strip
|
||||
# let portage handle stripping
|
||||
-no-strip
|
||||
|
||||
# precompiled headers are not that useful for us
|
||||
# and cause problems on hardened, so turn them off
|
||||
# precompiled headers can cause problems on hardened, so turn them off
|
||||
-no-pch
|
||||
|
||||
# link-time code generation is not something we want to enable by default
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 6 ]] && echo -no-ltcg)
|
||||
|
||||
# reduced relocations cause major breakage on at least arm and ppc, so
|
||||
# don't specify anything and let the configure figure out if they are
|
||||
# supported; see also https://bugreports.qt.io/browse/QTBUG-36129
|
||||
@ -596,7 +616,10 @@ qt5_base_configure() {
|
||||
#-use-gold-linker
|
||||
|
||||
# disable all platform plugins by default, override in qtgui
|
||||
-no-xcb -no-eglfs -no-directfb -no-linuxfb -no-kms
|
||||
-no-xcb -no-eglfs -no-kms
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 6 ]] && echo -no-gbm)
|
||||
-no-directfb -no-linuxfb
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 6 ]] && echo -no-mirclient)
|
||||
|
||||
# disable undocumented X11-related flags, override in qtgui
|
||||
# (not shown in ./configure -help output)
|
||||
@ -604,8 +627,7 @@ qt5_base_configure() {
|
||||
|
||||
# disable obsolete/unused X11-related flags
|
||||
# (not shown in ./configure -help output)
|
||||
-no-mitshm -no-xcursor -no-xfixes -no-xinerama -no-xinput
|
||||
-no-xrandr -no-xshape -no-xsync -no-xvideo
|
||||
-no-mitshm -no-xcursor -no-xfixes -no-xrandr -no-xshape -no-xsync
|
||||
|
||||
# always enable session management support: it doesn't need extra deps
|
||||
# at configure time and turning it off is dangerous, see bug 518262
|
||||
@ -614,9 +636,16 @@ qt5_base_configure() {
|
||||
# typedef qreal to double (warning: changing this flag breaks the ABI)
|
||||
-qreal double
|
||||
|
||||
# disable opengl and egl by default, override in qtgui and qtopengl
|
||||
# disable OpenGL and EGL support by default, override in qtgui,
|
||||
# qtopengl, qtprintsupport and qtwidgets
|
||||
-no-opengl -no-egl
|
||||
|
||||
# disable libinput-based generic plugin by default, override in qtgui
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 5 ]] && echo -no-libinput)
|
||||
|
||||
# disable gstreamer by default, override in qtmultimedia
|
||||
$([[ ${QT5_MINOR_VERSION} -ge 5 ]] && echo -no-gstreamer)
|
||||
|
||||
# use upstream default
|
||||
#-no-system-proxies
|
||||
|
||||
@ -650,6 +679,7 @@ qt5_qmake() {
|
||||
fi
|
||||
|
||||
"${qmakepath}"/qmake \
|
||||
"${projectdir}" \
|
||||
CONFIG+=$(usex debug debug release) \
|
||||
CONFIG-=$(usex debug release debug) \
|
||||
QMAKE_AR="$(tc-getAR) cqs" \
|
||||
@ -671,9 +701,8 @@ qt5_qmake() {
|
||||
QMAKE_LFLAGS="${LDFLAGS}" \
|
||||
QMAKE_LFLAGS_RELEASE= \
|
||||
QMAKE_LFLAGS_DEBUG= \
|
||||
"${projectdir}" \
|
||||
"$@" \
|
||||
|| die "qmake failed (${projectdir})"
|
||||
"${myqmakeargs[@]}" \
|
||||
|| die "qmake failed (${projectdir#${S}/})"
|
||||
}
|
||||
|
||||
# @FUNCTION: qt5_install_module_qconfigs
|
||||
|
248
sdk_container/src/third_party/portage-stable/eclass/ros-catkin.eclass
vendored
Normal file
248
sdk_container/src/third_party/portage-stable/eclass/ros-catkin.eclass
vendored
Normal file
@ -0,0 +1,248 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: ros-catkin.eclass
|
||||
# @MAINTAINER:
|
||||
# ros@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Alexis Ballier <aballier@gentoo.org>
|
||||
# @BLURB: Template eclass for catkin based ROS packages.
|
||||
# @DESCRIPTION:
|
||||
# Provides function for building ROS packages on Gentoo.
|
||||
# It supports selectively building messages, multi-python installation, live ebuilds (git only).
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
0|1|2|3|4)
|
||||
die "EAPI='${EAPI}' is not supported"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# @ECLASS-VARIABLE: ROS_REPO_URI
|
||||
# @DESCRIPTION:
|
||||
# URL of the upstream repository. Usually on github.
|
||||
# Serves for fetching tarballs, live ebuilds and inferring the meta-package name.
|
||||
EGIT_REPO_URI="${ROS_REPO_URI}"
|
||||
|
||||
# @ECLASS-VARIABLE: ROS_SUBDIR
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Subdir in which current packages is located.
|
||||
# Usually, a repository contains several packages, hence a typical value is:
|
||||
# ROS_SUBDIR=${PN}
|
||||
|
||||
SCM=""
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SCM="git-r3"
|
||||
fi
|
||||
|
||||
# @ECLASS-VARIABLE: PYTHON_COMPAT
|
||||
# @DESCRIPTION:
|
||||
# Tells the eclass the package has python code and forwards it to python-r1.eclass.
|
||||
PYTHON_ECLASS=""
|
||||
CATKIN_PYTHON_USEDEP=""
|
||||
if [ -n "${PYTHON_COMPAT}" ] ; then
|
||||
PYTHON_ECLASS="python-r1 python-utils-r1"
|
||||
fi
|
||||
|
||||
inherit ${SCM} ${PYTHON_ECLASS} cmake-utils
|
||||
|
||||
CATKIN_DO_PYTHON_MULTIBUILD=""
|
||||
if [ -n "${PYTHON_COMPAT}" ] ; then
|
||||
CATKIN_PYTHON_USEDEP="[${PYTHON_USEDEP}]"
|
||||
CATKIN_DO_PYTHON_MULTIBUILD="yes"
|
||||
fi
|
||||
|
||||
IUSE="test"
|
||||
RDEPEND="
|
||||
dev-util/catkin${CATKIN_PYTHON_USEDEP}
|
||||
dev-python/empy${CATKIN_PYTHON_USEDEP}
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
RDEPEND="${RDEPEND} dev-lang/python-exec:2 ${PYTHON_DEPS}"
|
||||
DEPEND="${DEPEND} ${PYTHON_DEPS}"
|
||||
fi
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_HAS_MESSAGES
|
||||
# @DESCRIPTION:
|
||||
# Set it to a non-empty value before inherit to tell the eclass the package has messages to build.
|
||||
# Messages will be built based on ROS_MESSAGES USE_EXPANDed variable.
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_MESSAGES_TRANSITIVE_DEPS
|
||||
# @DESCRIPTION:
|
||||
# Some messages have dependencies on other messages.
|
||||
# In that case, CATKIN_MESSAGES_TRANSITIVE_DEPS should contain a space-separated list of atoms
|
||||
# representing those dependencies. The eclass uses it to ensure proper dependencies on these packages.
|
||||
if [ -n "${CATKIN_HAS_MESSAGES}" ] ; then
|
||||
IUSE="${IUSE} +ros_messages_python +ros_messages_cxx ros_messages_eus ros_messages_lisp"
|
||||
RDEPEND="${RDEPEND}
|
||||
ros_messages_cxx? ( dev-ros/gencpp:=${CATKIN_PYTHON_USEDEP} )
|
||||
ros_messages_eus? ( dev-ros/geneus:=${CATKIN_PYTHON_USEDEP} )
|
||||
ros_messages_python? ( dev-ros/genpy:=${CATKIN_PYTHON_USEDEP} )
|
||||
ros_messages_lisp? ( dev-ros/genlisp:=${CATKIN_PYTHON_USEDEP} )
|
||||
dev-ros/message_runtime
|
||||
"
|
||||
DEPEND="${DEPEND} ${RDEPEND}
|
||||
dev-ros/message_generation
|
||||
dev-ros/genmsg${CATKIN_PYTHON_USEDEP}
|
||||
"
|
||||
if [ -n "${CATKIN_MESSAGES_TRANSITIVE_DEPS}" ] ; then
|
||||
for i in ${CATKIN_MESSAGES_TRANSITIVE_DEPS} ; do
|
||||
ds="${i}[ros_messages_python(-)?,ros_messages_cxx(-)?,ros_messages_lisp(-)?,ros_messages_eus(-)?] ros_messages_python? ( ${i}[${PYTHON_USEDEP}] )"
|
||||
RDEPEND="${RDEPEND} ${ds}"
|
||||
DEPEND="${DEPEND} ${ds}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_MESSAGES_CXX_USEDEP
|
||||
# @DESCRIPTION:
|
||||
# Use it as cat/pkg[${CATKIN_MESSAGES_CXX_USEDEP}] to indicate a dependency on the C++ messages of cat/pkg.
|
||||
CATKIN_MESSAGES_CXX_USEDEP="ros_messages_cxx(-)"
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_MESSAGES_PYTHON_USEDEP
|
||||
# @DESCRIPTION:
|
||||
# Use it as cat/pkg[${CATKIN_MESSAGES_PYTHON_USEDEP}] to indicate a dependency on the Python messages of cat/pkg.
|
||||
CATKIN_MESSAGES_PYTHON_USEDEP="ros_messages_python(-),${PYTHON_USEDEP}"
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_MESSAGES_LISP_USEDEP
|
||||
# @DESCRIPTION:
|
||||
# Use it as cat/pkg[${CATKIN_MESSAGES_LISP_USEDEP}] to indicate a dependency on the Common-Lisp messages of cat/pkg.
|
||||
CATKIN_MESSAGES_LISP_USEDEP="ros_messages_lisp(-)"
|
||||
|
||||
# @ECLASS-VARIABLE: CATKIN_MESSAGES_EUS_USEDEP
|
||||
# @DESCRIPTION:
|
||||
# Use it as cat/pkg[${CATKIN_MESSAGES_EUS_USEDEP}] to indicate a dependency on the EusLisp messages of cat/pkg.
|
||||
CATKIN_MESSAGES_EUS_USEDEP="ros_messages_eus(-)"
|
||||
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SRC_URI=""
|
||||
KEYWORDS=""
|
||||
S=${WORKDIR}/${P}/${ROS_SUBDIR}
|
||||
else
|
||||
SRC_URI="${ROS_REPO_URI}/archive/${VER_PREFIX}${PV%_*}${VER_SUFFIX}.tar.gz -> ${ROS_REPO_URI##*/}-${PV}.tar.gz"
|
||||
S=${WORKDIR}/${VER_PREFIX}${ROS_REPO_URI##*/}-${PV}${VER_SUFFIX}/${ROS_SUBDIR}
|
||||
fi
|
||||
|
||||
HOMEPAGE="http://wiki.ros.org/${PN}"
|
||||
|
||||
# @FUNCTION: ros-catkin_src_prepare
|
||||
# @DESCRIPTION:
|
||||
# Calls cmake-utils_src_prepare (so that PATCHES array is handled there) and initialises the workspace
|
||||
# by installing a recursive CMakeLists.txt to handle bundles.
|
||||
ros-catkin_src_prepare() {
|
||||
cmake-utils_src_prepare
|
||||
|
||||
if [ ! -f "${S}/CMakeLists.txt" ] ; then
|
||||
catkin_init_workspace || die
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_configure_internal
|
||||
# @DESCRIPTION:
|
||||
# Internal decoration of cmake-utils_src_configure to handle multiple python installs.
|
||||
ros-catkin_src_configure_internal() {
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
local mycmakeargs=("${mycmakeargs[@]}" -DPYTHON_EXECUTABLE="${PYTHON}")
|
||||
python_export PYTHON_SCRIPTDIR
|
||||
fi
|
||||
cmake-utils_src_configure "${@}"
|
||||
}
|
||||
|
||||
# @VARIABLE: mycatkincmakeargs
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Optional cmake defines as a bash array. Should be defined before calling
|
||||
# src_configure.
|
||||
|
||||
# @FUNCTION: ros-catkin_src_configure
|
||||
# @DESCRIPTION:
|
||||
# Configures a catkin-based package.
|
||||
ros-catkin_src_configure() {
|
||||
export CMAKE_PREFIX_PATH="${EPREFIX}/usr"
|
||||
export ROS_ROOT="${EPREFIX}/usr/share/ros"
|
||||
if [ -n "${CATKIN_HAS_MESSAGES}" ] ; then
|
||||
ROS_LANG_DISABLE=""
|
||||
use ros_messages_cxx || ROS_LANG_DISABLE="${ROS_LANG_DISABLE}:gencpp"
|
||||
use ros_messages_eus || ROS_LANG_DISABLE="${ROS_LANG_DISABLE}:geneus"
|
||||
use ros_messages_lisp || ROS_LANG_DISABLE="${ROS_LANG_DISABLE}:genlisp"
|
||||
use ros_messages_python || ROS_LANG_DISABLE="${ROS_LANG_DISABLE}:genpy"
|
||||
export ROS_LANG_DISABLE
|
||||
fi
|
||||
local mycmakeargs=(
|
||||
"$(cmake-utils_use test CATKIN_ENABLE_TESTING)"
|
||||
"-DCATKIN_BUILD_BINARY_PACKAGE=ON"
|
||||
"-DCATKIN_PREFIX_PATH=${SYSROOT:-${EROOT}}/usr"
|
||||
"${mycatkincmakeargs[@]}"
|
||||
)
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
python_foreach_impl ros-catkin_src_configure_internal "${@}"
|
||||
else
|
||||
ros-catkin_src_configure_internal "${@}"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_compile
|
||||
# @DESCRIPTION:
|
||||
# Builds a catkin-based package.
|
||||
ros-catkin_src_compile() {
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
python_foreach_impl cmake-utils_src_compile "${@}"
|
||||
else
|
||||
cmake-utils_src_compile "${@}"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_test_internal
|
||||
# @DESCRIPTION:
|
||||
# Decorator around cmake-utils_src_test to ensure tests are built before running them.
|
||||
ros-catkin_src_test_internal() {
|
||||
cd "${BUILD_DIR}" || die
|
||||
if nonfatal cmake-utils_src_make tests -n &> /dev/null ; then
|
||||
cmake-utils_src_make tests
|
||||
fi
|
||||
cmake-utils_src_test "${@}"
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_test
|
||||
# @DESCRIPTION:
|
||||
# Run the tests of a catkin-based package.
|
||||
ros-catkin_src_test() {
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
python_foreach_impl ros-catkin_src_test_internal "${@}"
|
||||
else
|
||||
ros-catkin_src_test_internal "${@}"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_install_with_python
|
||||
# @DESCRIPTION:
|
||||
# Decorator around cmake-utils_src_install to ensure python scripts are properly handled w.r.t. python-exec2.
|
||||
ros-catkin_src_install_with_python() {
|
||||
python_export PYTHON_SCRIPTDIR
|
||||
cmake-utils_src_install "${@}"
|
||||
if [ ! -f "${T}/.catkin_python_symlinks_generated" -a -d "${D}/${PYTHON_SCRIPTDIR}" ]; then
|
||||
dodir /usr/bin
|
||||
for i in "${D}/${PYTHON_SCRIPTDIR}"/* ; do
|
||||
dosym ../lib/python-exec/python-exec2 "/usr/bin/${i##*/}"
|
||||
done
|
||||
touch "${T}/.catkin_python_symlinks_generated" || die
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: ros-catkin_src_install
|
||||
# @DESCRIPTION:
|
||||
# Installs a catkin-based package.
|
||||
ros-catkin_src_install() {
|
||||
if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
|
||||
python_foreach_impl ros-catkin_src_install_with_python "${@}"
|
||||
else
|
||||
cmake-utils_src_install "${@}"
|
||||
fi
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/scons-utils.eclass,v 1.11 2012/09/27 16:35:42 axs Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: scons-utils.eclass
|
||||
# @MAINTAINER:
|
||||
@ -9,27 +9,42 @@
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides a set of function to help developers sanely call
|
||||
# dev-util/scons and pass parameters to it.
|
||||
# @EXAMPLE:
|
||||
#
|
||||
# Please note that SCons is more like a 'build system creation kit',
|
||||
# and requires a lot of upstream customization to be used sanely.
|
||||
# You will often need to request fixes upstream and/or patch the build
|
||||
# system. In particular:
|
||||
#
|
||||
# 1. There are no 'standard' variables. To respect CC, CXX, CFLAGS,
|
||||
# CXXFLAGS, CPPFLAGS, LDFLAGS, upstream needs to define appropriate
|
||||
# variables explicitly. In some cases, upstreams respect envvars,
|
||||
# in others you need to pass them as options.
|
||||
#
|
||||
# 2. SCons scrubs out environment by default and replaces it with some
|
||||
# pre-defined values. To respect environment variables such as PATH,
|
||||
# Upstreams need to explicitly get them from os.environ and copy them
|
||||
# to the build environment.
|
||||
#
|
||||
# @EXAMPLE:
|
||||
# @CODE
|
||||
# inherit scons-utils toolchain-funcs
|
||||
#
|
||||
# EAPI=4
|
||||
# EAPI=5
|
||||
#
|
||||
# src_configure() {
|
||||
# myesconsargs=(
|
||||
# MYSCONS=(
|
||||
# CC="$(tc-getCC)"
|
||||
# $(use_scons nls ENABLE_NLS)
|
||||
# ENABLE_NLS=$(usex nls)
|
||||
# )
|
||||
# }
|
||||
#
|
||||
# src_compile() {
|
||||
# escons
|
||||
# escons "${MYSCONS[@]}"
|
||||
# }
|
||||
#
|
||||
# src_install() {
|
||||
# # note: this can be DESTDIR, INSTALL_ROOT, ... depending on package
|
||||
# escons DESTDIR="${D}" install
|
||||
# escons "${MYSCONS[@]}" DESTDIR="${D}" install
|
||||
# }
|
||||
# @CODE
|
||||
|
||||
@ -43,6 +58,8 @@
|
||||
# @VARIABLE: myesconsargs
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# DEPRECATED, EAPI 0..5 ONLY: pass options to escons instead
|
||||
#
|
||||
# List of package-specific options to pass to all SCons calls. Supposed to be
|
||||
# set in src_configure().
|
||||
|
||||
@ -62,18 +79,22 @@
|
||||
|
||||
# @ECLASS-VARIABLE: USE_SCONS_TRUE
|
||||
# @DESCRIPTION:
|
||||
# DEPRECATED: use usex instead
|
||||
#
|
||||
# The default value for truth in scons-use() (1 by default).
|
||||
: ${USE_SCONS_TRUE:=1}
|
||||
|
||||
# @ECLASS-VARIABLE: USE_SCONS_FALSE
|
||||
# @DESCRIPTION:
|
||||
# DEPRECATED: use usex instead
|
||||
#
|
||||
# The default value for false in scons-use() (0 by default).
|
||||
: ${USE_SCONS_FALSE:=0}
|
||||
|
||||
# -- EAPI support check --
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4|5) ;;
|
||||
0|1|2|3|4|5|6) ;;
|
||||
*) die "EAPI ${EAPI} unsupported."
|
||||
esac
|
||||
|
||||
@ -88,36 +109,82 @@ fi
|
||||
# -- public functions --
|
||||
|
||||
# @FUNCTION: escons
|
||||
# @USAGE: [scons-arg] ...
|
||||
# @USAGE: [<args>...]
|
||||
# @DESCRIPTION:
|
||||
# Call scons, passing the supplied arguments, ${myesconsargs[@]},
|
||||
# filtered ${MAKEOPTS}, ${EXTRA_ESCONS}. Similar to emake. Like emake,
|
||||
# this function does die on failure in EAPI 4 (unless called nonfatal).
|
||||
# Call scons, passing the supplied arguments. Like emake, this function
|
||||
# does die on failure in EAPI 4. Respects nonfatal in EAPI 6 and newer.
|
||||
escons() {
|
||||
local ret
|
||||
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
# Use myesconsargs in EAPI 5 and older
|
||||
if [[ ${EAPI} == [012345] ]]; then
|
||||
set -- "${myesconsargs[@]}" "${@}"
|
||||
fi
|
||||
|
||||
# if SCONSOPTS are _unset_, use cleaned MAKEOPTS
|
||||
set -- scons ${SCONSOPTS-$(scons_clean_makeopts)} ${EXTRA_ESCONS} \
|
||||
"${myesconsargs[@]}" "${@}"
|
||||
if [[ ! ${SCONSOPTS+set} ]]; then
|
||||
local SCONSOPTS
|
||||
_scons_clean_makeopts
|
||||
fi
|
||||
|
||||
set -- scons ${SCONSOPTS} ${EXTRA_ESCONS} "${@}"
|
||||
echo "${@}" >&2
|
||||
"${@}"
|
||||
ret=${?}
|
||||
|
||||
[[ ${ret} -ne 0 ]] && has "${EAPI:-0}" 4 5 && die "escons failed."
|
||||
if [[ ${ret} -ne 0 ]]; then
|
||||
case "${EAPI:-0}" in
|
||||
0|1|2|3) # nonfatal in EAPIs 0 through 3
|
||||
;;
|
||||
4|5) # 100% fatal in 4 & 5
|
||||
die "escons failed."
|
||||
;;
|
||||
*) # respect nonfatal in 6 onwards
|
||||
die -n "escons failed."
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
# @FUNCTION: scons_clean_makeopts
|
||||
# @FUNCTION: _scons_get_default_jobs
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Output the default number of jobs, used if -j is used without
|
||||
# argument. Tries to figure out the number of logical CPUs, falling
|
||||
# back to hardcoded constant.
|
||||
_scons_get_default_jobs() {
|
||||
local nproc
|
||||
|
||||
if type -P nproc &>/dev/null; then
|
||||
# GNU
|
||||
nproc=$(nproc)
|
||||
elif type -P python &>/dev/null; then
|
||||
# fallback to python2.6+
|
||||
# note: this may fail (raise NotImplementedError)
|
||||
nproc=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count());' 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [[ ${nproc} ]]; then
|
||||
echo $(( nproc + 1 ))
|
||||
else
|
||||
# random default
|
||||
echo 5
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: _scons_clean_makeopts
|
||||
# @INTERNAL
|
||||
# @USAGE: [makeflags] [...]
|
||||
# @DESCRIPTION:
|
||||
# Strip the supplied makeflags (or ${MAKEOPTS} if called without
|
||||
# an argument) of options not supported by SCons and make sure --jobs
|
||||
# gets an argument. Output the resulting flag list (suitable
|
||||
# for an assignment to SCONSOPTS).
|
||||
scons_clean_makeopts() {
|
||||
local new_makeopts
|
||||
_scons_clean_makeopts() {
|
||||
local new_makeopts=()
|
||||
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
@ -132,27 +199,26 @@ scons_clean_makeopts() {
|
||||
# empty MAKEOPTS give out empty SCONSOPTS
|
||||
# thus, we do need to worry about the initial setup
|
||||
if [[ ${*} = ${_SCONS_CACHE_MAKEOPTS} ]]; then
|
||||
set -- ${_SCONS_CACHE_SCONSOPTS}
|
||||
debug-print "Cache hit: [${*}]"
|
||||
echo ${*}
|
||||
SCONSOPTS=${_SCONS_CACHE_SCONSOPTS}
|
||||
debug-print "Cache hit: [${SCONSOPTS}]"
|
||||
return
|
||||
fi
|
||||
export _SCONS_CACHE_MAKEOPTS=${*}
|
||||
_SCONS_CACHE_MAKEOPTS=${*}
|
||||
|
||||
while [[ ${#} -gt 0 ]]; do
|
||||
case ${1} in
|
||||
# clean, simple to check -- we like that
|
||||
--jobs=*|--keep-going)
|
||||
new_makeopts=${new_makeopts+${new_makeopts} }${1}
|
||||
new_makeopts+=( ${1} )
|
||||
;;
|
||||
# need to take a look at the next arg and guess
|
||||
--jobs)
|
||||
if [[ ${#} -gt 1 && ${2} =~ ^[0-9]+$ ]]; then
|
||||
new_makeopts="${new_makeopts+${new_makeopts} }${1} ${2}"
|
||||
new_makeopts+=( ${1} ${2} )
|
||||
shift
|
||||
else
|
||||
# no value means no limit, let's pass a random int
|
||||
new_makeopts=${new_makeopts+${new_makeopts} }${1}=5
|
||||
new_makeopts+=( ${1}=$(_scons_get_default_jobs) )
|
||||
fi
|
||||
;;
|
||||
# strip other long options
|
||||
@ -167,20 +233,20 @@ scons_clean_makeopts() {
|
||||
while [[ -n ${str} ]]; do
|
||||
case ${str} in
|
||||
k*)
|
||||
new_optstr=${new_optstr}k
|
||||
new_optstr+=k
|
||||
;;
|
||||
# -j needs to come last
|
||||
j)
|
||||
if [[ ${#} -gt 1 && ${2} =~ ^[0-9]+$ ]]; then
|
||||
new_optstr="${new_optstr}j ${2}"
|
||||
new_optstr+="j ${2}"
|
||||
shift
|
||||
else
|
||||
new_optstr="${new_optstr}j 5"
|
||||
new_optstr+="j $(_scons_get_default_jobs)"
|
||||
fi
|
||||
;;
|
||||
# otherwise, everything after -j is treated as an arg
|
||||
j*)
|
||||
new_optstr=${new_optstr}${str}
|
||||
new_optstr+=${str}
|
||||
break
|
||||
;;
|
||||
esac
|
||||
@ -188,22 +254,23 @@ scons_clean_makeopts() {
|
||||
done
|
||||
|
||||
if [[ -n ${new_optstr} ]]; then
|
||||
new_makeopts=${new_makeopts+${new_makeopts} }-${new_optstr}
|
||||
new_makeopts+=( -${new_optstr} )
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
set -- ${new_makeopts}
|
||||
export _SCONS_CACHE_SCONSOPTS=${*}
|
||||
debug-print "New SCONSOPTS: [${*}]"
|
||||
echo ${*}
|
||||
SCONSOPTS=${new_makeopts[*]}
|
||||
_SCONS_CACHE_SCONSOPTS=${SCONSOPTS}
|
||||
debug-print "New SCONSOPTS: [${SCONSOPTS}]"
|
||||
}
|
||||
|
||||
# @FUNCTION: use_scons
|
||||
# @USAGE: <use-flag> [var-name] [var-opt-true] [var-opt-false]
|
||||
# @DESCRIPTION:
|
||||
# DEPRECATED, EAPI 0..5 ONLY: use usex instead
|
||||
#
|
||||
# Output a SCons parameter with value depending on the USE flag state.
|
||||
# If the USE flag is set, output <var-name>=<var-opt-true>; otherwise
|
||||
# <var-name>=<var-opt-false>.
|
||||
@ -215,6 +282,9 @@ scons_clean_makeopts() {
|
||||
# If <var-opt-true> and/or <var-opt-false> are omitted,
|
||||
# ${USE_SCONS_TRUE} and/or ${USE_SCONS_FALSE} will be used instead.
|
||||
use_scons() {
|
||||
[[ ${EAPI} == [012345] ]] \
|
||||
|| die "${FUNCNAME} is banned in EAPI ${EAPI}, use usex instead"
|
||||
|
||||
local flag=${1}
|
||||
local varname=${2:-${flag/\!/no}}
|
||||
local vartrue=${3:-${USE_SCONS_TRUE}}
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/selinux-policy-2.eclass,v 1.32 2015/04/21 11:19:10 perfinion Exp $
|
||||
# $Id$
|
||||
|
||||
# Eclass for installing SELinux policy, and optionally
|
||||
# reloading the reference-policy based modules.
|
||||
@ -90,7 +90,7 @@ HOMEPAGE="https://wiki.gentoo.org/wiki/Project:SELinux"
|
||||
if [[ -n ${BASEPOL} ]] && [[ "${BASEPOL}" != "9999" ]];
|
||||
then
|
||||
SRC_URI="https://raw.githubusercontent.com/wiki/TresysTechnology/refpolicy/files/refpolicy-${PV}.tar.bz2
|
||||
http://dev.gentoo.org/~swift/patches/selinux-base-policy/patchbundle-selinux-base-policy-${BASEPOL}.tar.bz2"
|
||||
https://dev.gentoo.org/~swift/patches/selinux-base-policy/patchbundle-selinux-base-policy-${BASEPOL}.tar.bz2"
|
||||
elif [[ "${BASEPOL}" != "9999" ]];
|
||||
then
|
||||
SRC_URI="https://raw.githubusercontent.com/wiki/TresysTechnology/refpolicy/files/refpolicy-${PV}.tar.bz2"
|
||||
@ -122,7 +122,7 @@ case "${EAPI:-0}" in
|
||||
*) : ;;
|
||||
esac
|
||||
|
||||
EXPORT_FUNCTIONS "src_unpack src_prepare src_compile src_install pkg_postinst pkg_postrm"
|
||||
EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst pkg_postrm
|
||||
|
||||
# @FUNCTION: selinux-policy-2_src_unpack
|
||||
# @DESCRIPTION:
|
||||
@ -198,6 +198,7 @@ selinux-policy-2_src_prepare() {
|
||||
for i in ${MODS}; do
|
||||
modfiles="$(find ${S}/refpolicy/policy/modules -iname $i.te) $modfiles"
|
||||
modfiles="$(find ${S}/refpolicy/policy/modules -iname $i.fc) $modfiles"
|
||||
modfiles="$(find ${S}/refpolicy/policy/modules -iname $i.cil) $modfiles"
|
||||
if [ ${add_interfaces} -eq 1 ];
|
||||
then
|
||||
modfiles="$(find ${S}/refpolicy/policy/modules -iname $i.if) $modfiles"
|
||||
@ -228,18 +229,13 @@ selinux-policy-2_src_compile() {
|
||||
for i in ${POLICY_TYPES}; do
|
||||
# Support USE flags in builds
|
||||
export M4PARAM="${makeuse}"
|
||||
if [[ ${BASEPOL} == 2.20140311* ]]; then
|
||||
# Parallel builds are broken in 2.20140311-r7 and earlier, bug 530178
|
||||
emake -j1 NAME=$i -C "${S}"/${i} || die "${i} compile failed"
|
||||
else
|
||||
emake NAME=$i -C "${S}"/${i} || die "${i} compile failed"
|
||||
fi
|
||||
emake NAME=$i -C "${S}"/${i} || die "${i} compile failed"
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: selinux-policy-2_src_install
|
||||
# @DESCRIPTION:
|
||||
# Install the built .pp files in the correct subdirectory within
|
||||
# Install the built .pp (or copied .cil) files in the correct subdirectory within
|
||||
# /usr/share/selinux.
|
||||
selinux-policy-2_src_install() {
|
||||
local BASEDIR="/usr/share/selinux"
|
||||
@ -248,7 +244,11 @@ selinux-policy-2_src_install() {
|
||||
for j in ${MODS}; do
|
||||
einfo "Installing ${i} ${j} policy package"
|
||||
insinto ${BASEDIR}/${i}
|
||||
doins "${S}"/${i}/${j}.pp || die "Failed to add ${j}.pp to ${i}"
|
||||
if [ -f "${S}/${i}/${j}.pp" ] ; then
|
||||
doins "${S}"/${i}/${j}.pp || die "Failed to add ${j}.pp to ${i}"
|
||||
elif [ -f "${S}/${i}/${j}.cil" ] ; then
|
||||
doins "${S}"/${i}/${j}.cil || die "Failed to add ${j}.cil to ${i}"
|
||||
fi
|
||||
|
||||
if [[ "${POLICY_FILES[@]}" == *"${j}.if"* ]];
|
||||
then
|
||||
@ -261,14 +261,11 @@ selinux-policy-2_src_install() {
|
||||
|
||||
# @FUNCTION: selinux-policy-2_pkg_postinst
|
||||
# @DESCRIPTION:
|
||||
# Install the built .pp files in the SELinux policy stores, effectively
|
||||
# Install the built .pp (or copied .cil) files in the SELinux policy stores, effectively
|
||||
# activating the policy on the system.
|
||||
selinux-policy-2_pkg_postinst() {
|
||||
# build up the command in the case of multiple modules
|
||||
local COMMAND
|
||||
for i in ${MODS}; do
|
||||
COMMAND="-i ${i}.pp ${COMMAND}"
|
||||
done
|
||||
|
||||
for i in ${POLICY_TYPES}; do
|
||||
if [ "${i}" == "strict" ] && [ "${MODS}" = "unconfined" ];
|
||||
@ -279,7 +276,14 @@ selinux-policy-2_pkg_postinst() {
|
||||
einfo "Inserting the following modules into the $i module store: ${MODS}"
|
||||
|
||||
cd /usr/share/selinux/${i} || die "Could not enter /usr/share/selinux/${i}"
|
||||
semodule -s ${i} ${COMMAND}
|
||||
for j in ${MODS} ; do
|
||||
if [ -f "${j}.pp" ] ; then
|
||||
COMMAND="${j}.pp ${COMMAND}"
|
||||
elif [ -f "${j}.cil" ] ; then
|
||||
COMMAND="${j}.cil ${COMMAND}"
|
||||
fi
|
||||
done
|
||||
semodule -s ${i} -i ${COMMAND}
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
ewarn "SELinux module load failed. Trying full reload...";
|
||||
@ -313,6 +317,7 @@ selinux-policy-2_pkg_postinst() {
|
||||
else
|
||||
einfo "SELinux modules loaded succesfully."
|
||||
fi
|
||||
COMMAND="";
|
||||
done
|
||||
|
||||
# Relabel depending packages
|
||||
|
@ -23,11 +23,18 @@
|
||||
# Use flag to append dependency to.
|
||||
: ${SSL_CERT_USE:=ssl}
|
||||
|
||||
if [[ "${SSL_CERT_MANDATORY}" == "0" ]]; then
|
||||
DEPEND="${SSL_CERT_USE}? ( dev-libs/openssl )"
|
||||
IUSE="${SSL_CERT_USE}"
|
||||
else
|
||||
DEPEND="dev-libs/openssl"
|
||||
# @ECLASS-VARIABLE: SSL_DEPS_SKIP
|
||||
# @DESCRIPTION:
|
||||
# Set to non zero to skip adding to DEPEND and IUSE.
|
||||
: ${SSL_DEPS_SKIP:=0}
|
||||
|
||||
if [[ "${SSL_DEPS_SKIP}" == "0" ]]; then
|
||||
if [[ "${SSL_CERT_MANDATORY}" == "0" ]]; then
|
||||
DEPEND="${SSL_CERT_USE}? ( dev-libs/openssl )"
|
||||
IUSE="${SSL_CERT_USE}"
|
||||
else
|
||||
DEPEND="dev-libs/openssl"
|
||||
fi
|
||||
fi
|
||||
|
||||
# @FUNCTION: gen_cnf
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/systemd.eclass,v 1.32 2014/05/31 10:23:36 mgorny Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: systemd.eclass
|
||||
# @MAINTAINER:
|
||||
@ -15,46 +15,71 @@
|
||||
# inherit systemd
|
||||
#
|
||||
# src_configure() {
|
||||
# local myeconfargs=(
|
||||
# local myconf=(
|
||||
# --enable-foo
|
||||
# --disable-bar
|
||||
# "$(systemd_with_unitdir)"
|
||||
# --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
|
||||
# )
|
||||
#
|
||||
# econf "${myeconfargs[@]}"
|
||||
# econf "${myconf[@]}"
|
||||
# }
|
||||
# @CODE
|
||||
|
||||
inherit eutils toolchain-funcs
|
||||
inherit toolchain-funcs
|
||||
|
||||
case ${EAPI:-0} in
|
||||
0|1|2|3|4|5) ;;
|
||||
0|1|2|3|4|5|6) ;;
|
||||
*) die "${ECLASS}.eclass API in EAPI ${EAPI} not yet established."
|
||||
esac
|
||||
|
||||
DEPEND="virtual/pkgconfig"
|
||||
|
||||
# @FUNCTION: _systemd_get_dir
|
||||
# @USAGE: <variable-name> <fallback-directory>
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Try to obtain the <variable-name> variable from systemd.pc.
|
||||
# If pkg-config or systemd is not installed, return <fallback-directory>
|
||||
# instead.
|
||||
_systemd_get_dir() {
|
||||
[[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <variable-name> <fallback-directory>"
|
||||
local variable=${1} fallback=${2} d
|
||||
|
||||
if $(tc-getPKG_CONFIG) --exists systemd; then
|
||||
d=$($(tc-getPKG_CONFIG) --variable="${variable}" systemd) || die
|
||||
else
|
||||
d=${fallback}
|
||||
fi
|
||||
|
||||
echo "${d}"
|
||||
}
|
||||
|
||||
# @FUNCTION: _systemd_get_unitdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed unitdir.
|
||||
_systemd_get_unitdir() {
|
||||
if $(tc-getPKG_CONFIG) --exists systemd; then
|
||||
echo "$($(tc-getPKG_CONFIG) --variable=systemdsystemunitdir systemd)"
|
||||
else
|
||||
echo /usr/lib/systemd/system
|
||||
fi
|
||||
_systemd_get_systemunitdir() {
|
||||
_systemd_get_dir systemdsystemunitdir /usr/lib/systemd/system
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_get_systemunitdir
|
||||
# @DESCRIPTION:
|
||||
# Output the path for the systemd system unit directory (not including
|
||||
# ${D}). This function always succeeds, even if systemd is not
|
||||
# installed.
|
||||
systemd_get_systemunitdir() {
|
||||
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
echo "${EPREFIX}$(_systemd_get_systemunitdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_get_unitdir
|
||||
# @DESCRIPTION:
|
||||
# Output the path for the systemd unit directory (not including ${D}).
|
||||
# This function always succeeds, even if systemd is not installed.
|
||||
# Deprecated alias for systemd_get_systemunitdir.
|
||||
systemd_get_unitdir() {
|
||||
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
[[ ${EAPI} == [012345] ]] || die "${FUNCNAME} is banned in EAPI 6, use systemd_get_systemunitdir instead"
|
||||
|
||||
echo "${EPREFIX}$(_systemd_get_unitdir)"
|
||||
systemd_get_systemunitdir
|
||||
}
|
||||
|
||||
# @FUNCTION: _systemd_get_userunitdir
|
||||
@ -62,11 +87,7 @@ systemd_get_unitdir() {
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed userunitdir.
|
||||
_systemd_get_userunitdir() {
|
||||
if $(tc-getPKG_CONFIG) --exists systemd; then
|
||||
echo "$($(tc-getPKG_CONFIG) --variable=systemduserunitdir systemd)"
|
||||
else
|
||||
echo /usr/lib/systemd/user
|
||||
fi
|
||||
_systemd_get_dir systemduserunitdir /usr/lib/systemd/user
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_get_userunitdir
|
||||
@ -86,11 +107,7 @@ systemd_get_userunitdir() {
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed utildir.
|
||||
_systemd_get_utildir() {
|
||||
if $(tc-getPKG_CONFIG) --exists systemd; then
|
||||
echo "$($(tc-getPKG_CONFIG) --variable=systemdutildir systemd)"
|
||||
else
|
||||
echo /usr/lib/systemd
|
||||
fi
|
||||
_systemd_get_dir systemdutildir /usr/lib/systemd
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_get_utildir
|
||||
@ -114,7 +131,7 @@ systemd_dounit() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
(
|
||||
insinto "$(_systemd_get_unitdir)"
|
||||
insinto "$(_systemd_get_systemunitdir)"
|
||||
doins "${@}"
|
||||
)
|
||||
}
|
||||
@ -128,7 +145,7 @@ systemd_newunit() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
(
|
||||
insinto "$(_systemd_get_unitdir)"
|
||||
insinto "$(_systemd_get_systemunitdir)"
|
||||
newins "${@}"
|
||||
)
|
||||
}
|
||||
@ -239,7 +256,7 @@ systemd_enable_service() {
|
||||
|
||||
local target=${1}
|
||||
local service=${2}
|
||||
local ud=$(_systemd_get_unitdir)
|
||||
local ud=$(_systemd_get_systemunitdir)
|
||||
local destname=${service##*/}
|
||||
|
||||
dodir "${ud}"/"${target}".wants && \
|
||||
@ -273,13 +290,13 @@ systemd_enable_ntpunit() {
|
||||
die "The .list suffix is appended implicitly to ntpunit.d name."
|
||||
fi
|
||||
|
||||
local unitdir=$(systemd_get_unitdir)
|
||||
local unitdir=$(systemd_get_systemunitdir)
|
||||
local s
|
||||
for s in "${services[@]}"; do
|
||||
if [[ ! -f "${D}${unitdir}/${s}" ]]; then
|
||||
die "ntp-units.d provider ${s} not installed (yet?) in \${D}."
|
||||
fi
|
||||
echo "${s}" >> "${T}"/${ntpunit_name}.list
|
||||
echo "${s}" >> "${T}"/${ntpunit_name}.list || die
|
||||
done
|
||||
|
||||
(
|
||||
@ -296,6 +313,9 @@ systemd_enable_ntpunit() {
|
||||
# @FUNCTION: systemd_with_unitdir
|
||||
# @USAGE: [<configure-option-name>]
|
||||
# @DESCRIPTION:
|
||||
# Note: deprecated and banned in EAPI 6. Please use full --with-...=
|
||||
# parameter for improved ebuild readability.
|
||||
#
|
||||
# Output '--with-systemdsystemunitdir' as expected by systemd-aware configure
|
||||
# scripts. This function always succeeds. Its output may be quoted in order
|
||||
# to preserve whitespace in paths. systemd_to_myeconfargs() is preferred over
|
||||
@ -306,44 +326,34 @@ systemd_enable_ntpunit() {
|
||||
# argument to this function (`$(systemd_with_unitdir systemdunitdir)'). Please
|
||||
# remember to report a bug upstream as well.
|
||||
systemd_with_unitdir() {
|
||||
[[ ${EAPI:-0} != [012345] ]] && die "${FUNCNAME} is banned in EAPI ${EAPI}, use --with-${1:-systemdsystemunitdir}=\"\$(systemd_get_systemunitdir)\" instead"
|
||||
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
local optname=${1:-systemdsystemunitdir}
|
||||
|
||||
echo --with-${optname}="$(systemd_get_unitdir)"
|
||||
echo --with-${optname}="$(systemd_get_systemunitdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_with_utildir
|
||||
# @DESCRIPTION:
|
||||
# Note: deprecated and banned in EAPI 6. Please use full --with-...=
|
||||
# parameter for improved ebuild readability.
|
||||
#
|
||||
# Output '--with-systemdsystemutildir' as used by some packages to install
|
||||
# systemd helpers. This function always succeeds. Its output may be quoted
|
||||
# in order to preserve whitespace in paths.
|
||||
systemd_with_utildir() {
|
||||
[[ ${EAPI:-0} != [012345] ]] && die "${FUNCNAME} is banned in EAPI ${EAPI}, use --with-systemdutildir=\"\$(systemd_get_utildir)\" instead"
|
||||
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
echo --with-systemdutildir="$(systemd_get_utildir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_to_myeconfargs
|
||||
# @DESCRIPTION:
|
||||
# Add '--with-systemdsystemunitdir' as expected by systemd-aware configure
|
||||
# scripts to the myeconfargs variable used by autotools-utils eclass. Handles
|
||||
# quoting automatically.
|
||||
systemd_to_myeconfargs() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
eqawarn 'systemd_to_myeconfargs() is deprecated and will be removed on 2013-10-11.'
|
||||
eqawarn 'Please use $(systemd_with_unitdir) instead.'
|
||||
|
||||
myeconfargs=(
|
||||
"${myeconfargs[@]}"
|
||||
--with-systemdsystemunitdir="$(systemd_get_unitdir)"
|
||||
)
|
||||
}
|
||||
|
||||
# @FUNCTION: systemd_update_catalog
|
||||
# @DESCRIPTION:
|
||||
# Update the journald catalog. This needs to be called after installing
|
||||
# or removing catalog files.
|
||||
# or removing catalog files. This must be called in pkg_post* phases.
|
||||
#
|
||||
# If systemd is not installed, no operation will be done. The catalog
|
||||
# will be (re)built once systemd is installed.
|
||||
@ -352,6 +362,9 @@ systemd_to_myeconfargs() {
|
||||
systemd_update_catalog() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${EBUILD_PHASE} == post* ]] \
|
||||
|| die "${FUNCNAME} disallowed during ${EBUILD_PHASE_FUNC:-${EBUILD_PHASE}}"
|
||||
|
||||
# Make sure to work on the correct system.
|
||||
|
||||
local journalctl=${EPREFIX}/usr/bin/journalctl
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain-binutils.eclass,v 1.142 2015/05/25 08:41:16 vapier Exp $
|
||||
# $Id$
|
||||
#
|
||||
# Maintainer: Toolchain Ninjas <toolchain@gentoo.org>
|
||||
#
|
||||
@ -56,7 +56,7 @@ fi
|
||||
is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
|
||||
|
||||
DESCRIPTION="Tools necessary to build programs"
|
||||
HOMEPAGE="http://sourceware.org/binutils/"
|
||||
HOMEPAGE="https://sourceware.org/binutils/"
|
||||
|
||||
case ${BTYPE} in
|
||||
git) SRC_URI="" ;;
|
||||
@ -76,7 +76,7 @@ add_src_uri() {
|
||||
else
|
||||
a+=".bz2"
|
||||
fi
|
||||
set -- mirror://gentoo http://dev.gentoo.org/~vapier/dist
|
||||
set -- mirror://gentoo https://dev.gentoo.org/~vapier/dist
|
||||
SRC_URI="${SRC_URI} ${@/%//${a}}"
|
||||
}
|
||||
add_src_uri binutils-${BVER}-patches-${PATCHVER}.tar ${PATCHVER}
|
||||
@ -92,7 +92,7 @@ IUSE="cxx multislot multitarget nls static-libs test vanilla"
|
||||
if version_is_at_least 2.19 ; then
|
||||
IUSE+=" zlib"
|
||||
fi
|
||||
if ! version_is_at_least 2.23.90 || [[ ${BTYPE} != "rel" ]] || is_cross || use multislot ; then
|
||||
if ! version_is_at_least 2.25 || [[ ${BTYPE} != "rel" ]] || is_cross || use multislot ; then
|
||||
SLOT="${BVER}"
|
||||
else
|
||||
SLOT="0"
|
||||
@ -164,6 +164,13 @@ tc-binutils_apply_patches() {
|
||||
fi
|
||||
fi
|
||||
[[ ${#PATCHES[@]} -gt 0 ]] && epatch "${PATCHES[@]}"
|
||||
|
||||
# Make sure our explicit libdir paths don't get clobbered. #562460
|
||||
sed -i \
|
||||
-e 's:@bfdlibdir@:@libdir@:g' \
|
||||
-e 's:@bfdincludedir@:@includedir@:g' \
|
||||
{bfd,opcodes}/Makefile.in || die
|
||||
|
||||
epatch_user
|
||||
fi
|
||||
|
||||
@ -210,7 +217,7 @@ _eprefix_init() {
|
||||
|
||||
# Intended for ebuilds to override to set their own versioning information.
|
||||
toolchain-binutils_bugurl() {
|
||||
printf "http://bugs.gentoo.org/"
|
||||
printf "https://bugs.gentoo.org/"
|
||||
}
|
||||
toolchain-binutils_pkgversion() {
|
||||
printf "Gentoo ${BVER}"
|
||||
|
@ -1,11 +1,11 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v 1.675 2015/06/01 16:05:43 vapier Exp $
|
||||
# $Id$
|
||||
|
||||
# Maintainer: Toolchain Ninjas <toolchain@gentoo.org>
|
||||
|
||||
DESCRIPTION="The GNU Compiler Collection"
|
||||
HOMEPAGE="http://gcc.gnu.org/"
|
||||
HOMEPAGE="https://gcc.gnu.org/"
|
||||
RESTRICT="strip" # cross-compilers need controlled stripping
|
||||
|
||||
inherit eutils fixheadtails flag-o-matic gnuconfig libtool multilib pax-utils toolchain-funcs versionator
|
||||
@ -104,6 +104,7 @@ INCLUDEPATH=${TOOLCHAIN_INCLUDEPATH:-${LIBPATH}/include}
|
||||
|
||||
if is_crosscompile ; then
|
||||
BINPATH=${TOOLCHAIN_BINPATH:-${PREFIX}/${CHOST}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}}
|
||||
HOSTLIBPATH=${PREFIX}/${CHOST}/${CTARGET}/lib/${GCC_CONFIG_VER}
|
||||
else
|
||||
BINPATH=${TOOLCHAIN_BINPATH:-${PREFIX}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}}
|
||||
fi
|
||||
@ -152,16 +153,20 @@ if [[ ${PN} != "kgcc64" && ${PN} != gcc-* ]] ; then
|
||||
# the older versions, we don't want to bother supporting it. #448024
|
||||
tc_version_is_at_least 4.8 && IUSE+=" graphite" IUSE_DEF+=( sanitize )
|
||||
tc_version_is_at_least 4.9 && IUSE+=" cilk"
|
||||
tc_version_is_at_least 6.0 && IUSE+=" pie"
|
||||
tc_version_is_at_least 5.0 && IUSE+=" jit"
|
||||
tc_version_is_at_least 6.0 && IUSE+=" pie +ssp"
|
||||
fi
|
||||
|
||||
IUSE+=" ${IUSE_DEF[*]/#/+}"
|
||||
|
||||
# Support upgrade paths here or people get pissed
|
||||
if ! tc_version_is_at_least 4.7 || is_crosscompile || use multislot || [[ ${GCC_PV} == *_alpha* ]] ; then
|
||||
if ! tc_version_is_at_least 4.8 || is_crosscompile || use multislot || [[ ${GCC_PV} == *_alpha* ]] ; then
|
||||
SLOT="${GCC_CONFIG_VER}"
|
||||
else
|
||||
elif ! tc_version_is_at_least 5.0 ; then
|
||||
SLOT="${GCC_BRANCH_VER}"
|
||||
else
|
||||
# Upstream changed versioning w/gcc-5+, so SLOT matches major only. #555164
|
||||
SLOT="${GCCMAJOR}"
|
||||
fi
|
||||
|
||||
#---->> DEPEND <<----
|
||||
@ -172,7 +177,7 @@ RDEPEND="sys-libs/zlib
|
||||
tc_version_is_at_least 3 && RDEPEND+=" virtual/libiconv"
|
||||
|
||||
if tc_version_is_at_least 4 ; then
|
||||
GMP_MPFR_DEPS=">=dev-libs/gmp-4.3.2 >=dev-libs/mpfr-2.4.2"
|
||||
GMP_MPFR_DEPS=">=dev-libs/gmp-4.3.2:0 >=dev-libs/mpfr-2.4.2:0"
|
||||
if tc_version_is_at_least 4.3 ; then
|
||||
RDEPEND+=" ${GMP_MPFR_DEPS}"
|
||||
elif in_iuse fortran ; then
|
||||
@ -180,7 +185,7 @@ if tc_version_is_at_least 4 ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
tc_version_is_at_least 4.5 && RDEPEND+=" >=dev-libs/mpc-0.8.1"
|
||||
tc_version_is_at_least 4.5 && RDEPEND+=" >=dev-libs/mpc-0.8.1:0"
|
||||
|
||||
if in_iuse graphite ; then
|
||||
if tc_version_is_at_least 5.0 ; then
|
||||
@ -213,10 +218,6 @@ if in_iuse gcj ; then
|
||||
x11-proto/xextproto
|
||||
=x11-libs/gtk+-2*
|
||||
virtual/pkgconfig
|
||||
amd64? ( multilib? (
|
||||
app-emulation/emul-linux-x86-gtklibs
|
||||
app-emulation/emul-linux-x86-xlibs
|
||||
) )
|
||||
"
|
||||
tc_version_is_at_least 3.4 && GCJ_GTK_DEPS+=" x11-libs/pango"
|
||||
tc_version_is_at_least 4.2 && GCJ_DEPS+=" app-arch/zip app-arch/unzip"
|
||||
@ -242,7 +243,7 @@ S=$(
|
||||
gentoo_urls() {
|
||||
local devspace="HTTP~vapier/dist/URI HTTP~rhill/dist/URI
|
||||
HTTP~zorry/patches/gcc/URI HTTP~blueness/dist/URI"
|
||||
devspace=${devspace//HTTP/http:\/\/dev.gentoo.org\/}
|
||||
devspace=${devspace//HTTP/https:\/\/dev.gentoo.org\/}
|
||||
echo mirror://gentoo/$1 ${devspace//URI/$1}
|
||||
}
|
||||
|
||||
@ -660,7 +661,7 @@ make_gcc_hard() {
|
||||
ewarn "PIE has not been enabled by default"
|
||||
gcc_hard_flags+=" -DEFAULT_SSP"
|
||||
else
|
||||
# do nothing if hardened is't supported, but don't die either
|
||||
# do nothing if hardened isn't supported, but don't die either
|
||||
ewarn "hardened is not supported for this arch in this gcc version"
|
||||
return 0
|
||||
fi
|
||||
@ -842,6 +843,7 @@ toolchain_src_configure() {
|
||||
is_d && GCC_LANG+=",d"
|
||||
is_gcj && GCC_LANG+=",java"
|
||||
is_go && GCC_LANG+=",go"
|
||||
is_jit && GCC_LANG+=",jit"
|
||||
if is_objc || is_objcxx ; then
|
||||
GCC_LANG+=",objc"
|
||||
if tc_version_is_at_least 4 ; then
|
||||
@ -882,7 +884,9 @@ toolchain_src_configure() {
|
||||
# Use the default ("release") checking because upstream usually neglects
|
||||
# to test "disabled" so it has a history of breaking. #317217
|
||||
if tc_version_is_at_least 3.4 ; then
|
||||
confgcc+=( --enable-checking="${GCC_CHECKS_LIST:-$(usex debug yes release)}" )
|
||||
# The "release" keyword is new to 4.0. #551636
|
||||
local off=$(tc_version_is_at_least 4.0 && echo release || echo no)
|
||||
confgcc+=( --enable-checking="${GCC_CHECKS_LIST:-$(usex debug yes ${off})}" )
|
||||
fi
|
||||
|
||||
# Branding
|
||||
@ -903,6 +907,9 @@ toolchain_src_configure() {
|
||||
confgcc+=( --enable-libstdcxx-time )
|
||||
fi
|
||||
|
||||
# The jit language requires this.
|
||||
is_jit && confgcc+=( --enable-host-shared )
|
||||
|
||||
# # Turn on the -Wl,--build-id flag by default for ELF targets. #525942
|
||||
# # This helps with locating debug files.
|
||||
# case ${CTARGET} in
|
||||
@ -1195,7 +1202,11 @@ toolchain_src_configure() {
|
||||
fi
|
||||
|
||||
if tc_version_is_at_least 6.0 ; then
|
||||
confgcc+=( $(use_enable pie default-pie) )
|
||||
confgcc+=(
|
||||
$(use_enable pie default-pie)
|
||||
# This defaults to -fstack-protector-strong.
|
||||
$(use_enable ssp default-ssp)
|
||||
)
|
||||
fi
|
||||
|
||||
# Disable gcc info regeneration -- it ships with generated info pages
|
||||
@ -1500,7 +1511,7 @@ toolchain_src_compile() {
|
||||
|
||||
# Do not make manpages if we do not have perl ...
|
||||
[[ ! -x /usr/bin/perl ]] \
|
||||
&& find "${WORKDIR}"/build -name '*.[17]' | xargs touch
|
||||
&& find "${WORKDIR}"/build -name '*.[17]' -exec touch {} +
|
||||
|
||||
gcc_do_make ${GCC_MAKE_TARGET}
|
||||
}
|
||||
@ -1615,7 +1626,7 @@ toolchain_src_install() {
|
||||
# We remove the generated fixincludes, as they can cause things to break
|
||||
# (ncurses, openssl, etc). We do not prevent them from being built, as
|
||||
# in the following commit which we revert:
|
||||
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?r1=1.647&r2=1.648
|
||||
# https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?r1=1.647&r2=1.648
|
||||
# This is because bsd userland needs fixedincludes to build gcc, while
|
||||
# linux does not. Both can dispose of them afterwards.
|
||||
while read x ; do
|
||||
@ -1658,7 +1669,12 @@ toolchain_src_install() {
|
||||
for x in cpp gcc g++ c++ gcov g77 gcj gcjh gfortran gccgo ; do
|
||||
# For some reason, g77 gets made instead of ${CTARGET}-g77...
|
||||
# this should take care of that
|
||||
[[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
|
||||
if [[ -f ${x} ]] ; then
|
||||
# In case they're hardlinks, clear out the target first
|
||||
# otherwise the mv below will complain.
|
||||
rm -f ${CTARGET}-${x}
|
||||
mv ${x} ${CTARGET}-${x}
|
||||
fi
|
||||
|
||||
if [[ -f ${CTARGET}-${x} ]] ; then
|
||||
if ! is_crosscompile ; then
|
||||
@ -1676,9 +1692,16 @@ toolchain_src_install() {
|
||||
ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_CONFIG_VER}
|
||||
fi
|
||||
done
|
||||
# Clear out the main go binaries as we don't want to clobber dev-lang/go
|
||||
# when gcc-config runs. #567806
|
||||
if tc_version_is_at_least 5 && is_go ; then
|
||||
rm -f go gofmt
|
||||
fi
|
||||
|
||||
# Now do the fun stripping stuff
|
||||
env RESTRICT="" CHOST=${CHOST} prepstrip "${D}${BINPATH}"
|
||||
is_crosscompile && \
|
||||
env RESTRICT="" CHOST=${CHOST} prepstrip "${D}/${HOSTLIBPATH}"
|
||||
env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
|
||||
# gcc used to install helper binaries in lib/ but then moved to libexec/
|
||||
[[ -d ${D}${PREFIX}/libexec/gcc ]] && \
|
||||
@ -1708,9 +1731,8 @@ toolchain_src_install() {
|
||||
# install testsuite results
|
||||
if use regression-test; then
|
||||
docinto testsuite
|
||||
find "${WORKDIR}"/build -type f -name "*.sum" -print0 | xargs -0 dodoc
|
||||
find "${WORKDIR}"/build -type f -path "*/testsuite/*.log" -print0 \
|
||||
| xargs -0 dodoc
|
||||
find "${WORKDIR}"/build -type f -name "*.sum" -exec dodoc {} +
|
||||
find "${WORKDIR}"/build -type f -path "*/testsuite/*.log" -exec dodoc {} +
|
||||
fi
|
||||
|
||||
# Rather install the script, else portage with changing $FILESDIR
|
||||
@ -1760,6 +1782,17 @@ gcc_movelibs() {
|
||||
# older versions of gcc did not support --print-multi-os-directory
|
||||
tc_version_is_at_least 3.2 || return 0
|
||||
|
||||
# For non-target libs which are for CHOST and not CTARGET, we want to
|
||||
# move them to the compiler-specific CHOST internal dir. This is stuff
|
||||
# that you want to link against when building tools rather than building
|
||||
# code to run on the target.
|
||||
if tc_version_is_at_least 5 && is_crosscompile ; then
|
||||
dodir "${HOSTLIBPATH}"
|
||||
mv "${D}"/usr/$(get_libdir)/libcc1* "${D}${HOSTLIBPATH}" || die
|
||||
fi
|
||||
|
||||
# For all the libs that are built for CTARGET, move them into the
|
||||
# compiler-specific CTARGET internal dir.
|
||||
local x multiarg removedirs=""
|
||||
for multiarg in $($(XGCC) -print-multi-lib) ; do
|
||||
multiarg=${multiarg#*;}
|
||||
@ -1805,7 +1838,7 @@ gcc_movelibs() {
|
||||
for FROMDIR in ${removedirs} ; do
|
||||
rmdir "${D}"${FROMDIR} >& /dev/null
|
||||
done
|
||||
find "${D}" -type d | xargs rmdir >& /dev/null
|
||||
find -depth "${D}" -type d -exec rmdir {} + >& /dev/null
|
||||
}
|
||||
|
||||
# make sure the libtool archives have libdir set to where they actually
|
||||
@ -1955,7 +1988,7 @@ toolchain_pkg_postinst() {
|
||||
echo
|
||||
ewarn "You might want to review the GCC upgrade guide when moving between"
|
||||
ewarn "major versions (like 4.2 to 4.3):"
|
||||
ewarn "http://www.gentoo.org/doc/en/gcc-upgrading.xml"
|
||||
ewarn "https://wiki.gentoo.org/wiki/Upgrading_GCC"
|
||||
echo
|
||||
|
||||
# Clean up old paths
|
||||
@ -2141,6 +2174,11 @@ is_go() {
|
||||
use cxx && use_if_iuse go
|
||||
}
|
||||
|
||||
is_jit() {
|
||||
gcc-lang-supported jit || return 1
|
||||
use_if_iuse jit
|
||||
}
|
||||
|
||||
is_multilib() {
|
||||
tc_version_is_at_least 3 || return 1
|
||||
use multilib
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/vala.eclass,v 1.12 2015/06/09 10:18:38 eva Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: vala.eclass
|
||||
# @MAINTAINER:
|
||||
@ -26,13 +26,13 @@ esac
|
||||
|
||||
# @ECLASS-VARIABLE: VALA_MIN_API_VERSION
|
||||
# @DESCRIPTION:
|
||||
# Minimum vala API version (e.g. 0.20).
|
||||
VALA_MIN_API_VERSION=${VALA_MIN_API_VERSION:-0.20}
|
||||
# Minimum vala API version (e.g. 0.22).
|
||||
VALA_MIN_API_VERSION=${VALA_MIN_API_VERSION:-0.22}
|
||||
|
||||
# @ECLASS-VARIABLE: VALA_MAX_API_VERSION
|
||||
# @DESCRIPTION:
|
||||
# Maximum vala API version (e.g. 0.28).
|
||||
VALA_MAX_API_VERSION=${VALA_MAX_API_VERSION:-0.28}
|
||||
# Maximum vala API version (e.g. 0.30).
|
||||
VALA_MAX_API_VERSION=${VALA_MAX_API_VERSION:-0.30}
|
||||
|
||||
# @ECLASS-VARIABLE: VALA_USE_DEPEND
|
||||
# @DEFAULT_UNSET
|
||||
@ -50,7 +50,7 @@ vala_api_versions() {
|
||||
local minimal_supported_minor_version minor_version
|
||||
|
||||
# Dependency atoms are not generated for Vala versions older than 0.${minimal_supported_minor_version}.
|
||||
minimal_supported_minor_version="20"
|
||||
minimal_supported_minor_version="22"
|
||||
|
||||
for ((minor_version = ${VALA_MAX_API_VERSION#*.}; minor_version >= ${VALA_MIN_API_VERSION#*.}; minor_version = minor_version - 2)); do
|
||||
if ((minor_version >= minimal_supported_minor_version)); then
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.43 2012/10/03 22:47:12 chithanh Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: virtualx.eclass
|
||||
# @MAINTAINER:
|
||||
@ -9,6 +9,21 @@
|
||||
# Original author: Martin Schlemmer <azarah@gentoo.org>
|
||||
# @BLURB: This eclass can be used for packages that needs a working X environment to build.
|
||||
|
||||
if [[ ! ${_VIRTUAL_X} ]]; then
|
||||
|
||||
case "${EAPI:-0}" in
|
||||
0|1)
|
||||
die "virtualx.eclass: EAPI ${EAPI} is too old."
|
||||
;;
|
||||
2|3|4|5|6)
|
||||
;;
|
||||
*)
|
||||
die "virtualx.eclass: EAPI ${EAPI} is not supported yet."
|
||||
;;
|
||||
esac
|
||||
|
||||
[[ ${EAPI} == [2345] ]] && inherit eutils
|
||||
|
||||
# @ECLASS-VARIABLE: VIRTUALX_REQUIRED
|
||||
# @DESCRIPTION:
|
||||
# Variable specifying the dependency on xorg-server and xhost.
|
||||
@ -35,8 +50,6 @@ VIRTUALX_DEPEND="${VIRTUALX_DEPEND}
|
||||
# (within virtualmake function).
|
||||
: ${VIRTUALX_COMMAND:="emake"}
|
||||
|
||||
has "${EAPI:-0}" 0 1 && die "virtualx eclass require EAPI=2 or newer."
|
||||
|
||||
case ${VIRTUALX_REQUIRED} in
|
||||
manual)
|
||||
;;
|
||||
@ -45,16 +58,18 @@ case ${VIRTUALX_REQUIRED} in
|
||||
RDEPEND=""
|
||||
;;
|
||||
optional|tests)
|
||||
[[ ${EAPI} == [2345] ]] \
|
||||
|| die 'Values "optional" and "tests" for VIRTUALX_REQUIRED are banned in EAPI > 5'
|
||||
# deprecated section YAY.
|
||||
ewarn "QA: VIRTUALX_REQUIRED=optional and VIRTUALX_REQUIRED=tests are deprecated."
|
||||
ewarn "QA: You can drop the variable definition completely from ebuild,"
|
||||
ewarn "QA: because it is default behaviour."
|
||||
eqawarn "VIRTUALX_REQUIRED=optional and VIRTUALX_REQUIRED=tests are deprecated."
|
||||
eqawarn "You can drop the variable definition completely from ebuild,"
|
||||
eqawarn "because it is default behaviour."
|
||||
|
||||
if [[ -n ${VIRTUALX_USE} ]]; then
|
||||
# so they like to specify the useflag
|
||||
ewarn "QA: VIRTUALX_USE variable is deprecated."
|
||||
ewarn "QA: Please read eclass manpage to find out how to use VIRTUALX_REQUIRED"
|
||||
ewarn "QA: to achieve the same behaviour."
|
||||
eqawarn "VIRTUALX_USE variable is deprecated."
|
||||
eqawarn "Please read eclass manpage to find out how to use VIRTUALX_REQUIRED"
|
||||
eqawarn "to achieve the same behaviour."
|
||||
fi
|
||||
|
||||
[[ -z ${VIRTUALX_USE} ]] && VIRTUALX_USE="test"
|
||||
@ -71,99 +86,139 @@ esac
|
||||
|
||||
# @FUNCTION: virtualmake
|
||||
# @DESCRIPTION:
|
||||
# Function which attach to running X session or start new Xvfb session
|
||||
# Function which start new Xvfb session
|
||||
# where the VIRTUALX_COMMAND variable content gets executed.
|
||||
virtualmake() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local i=0
|
||||
local retval=0
|
||||
local OLD_SANDBOX_ON="${SANDBOX_ON}"
|
||||
local XVFB=$(type -p Xvfb)
|
||||
local XHOST=$(type -p xhost)
|
||||
local xvfbargs="-screen 0 1280x1024x24"
|
||||
[[ ${EAPI} == [2345] ]] \
|
||||
|| die "${FUNCNAME} is unsupported in EAPI > 5, please use virtx"
|
||||
|
||||
# backcompat for maketype
|
||||
if [[ -n ${maketype} ]]; then
|
||||
ewarn "QA: ebuild is exporting \$maketype=${maketype}"
|
||||
ewarn "QA: Ebuild should be migrated to use VIRTUALX_COMMAND=${maketype} instead."
|
||||
ewarn "QA: Setting VIRTUALX_COMMAND to \$maketype conveniently for now."
|
||||
[[ ${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
|
||||
|
||||
# If $DISPLAY is not set, or xhost cannot connect to an X
|
||||
# display, then do the Xvfb hack.
|
||||
if [[ -n ${XVFB} && -n ${XHOST} ]] && \
|
||||
( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
|
||||
debug-print "${FUNCNAME}: running Xvfb hack"
|
||||
export XAUTHORITY=
|
||||
# The following is derived from Mandrake's hack to allow
|
||||
# compiling without the X display
|
||||
virtx "${VIRTUALX_COMMAND}" "${@}"
|
||||
}
|
||||
|
||||
einfo "Scanning for an open DISPLAY to start Xvfb ..."
|
||||
# If we are in a chrooted environment, and there is already a
|
||||
# X server started outside of the chroot, Xvfb will fail to start
|
||||
# on the same display (most cases this is :0 ), so make sure
|
||||
# Xvfb is started, else bump the display number
|
||||
#
|
||||
# Azarah - 5 May 2002
|
||||
XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
|
||||
debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}"
|
||||
|
||||
# We really do not want SANDBOX enabled here
|
||||
export SANDBOX_ON="0"
|
||||
# @FUNCTION: virtx
|
||||
# @USAGE: <command> [command arguments]
|
||||
# @DESCRIPTION:
|
||||
# Start new Xvfb session and run commands in it.
|
||||
#
|
||||
# IMPORTANT: The command is run nonfatal !!!
|
||||
#
|
||||
# This means we are checking for the return code and raise an exception if it
|
||||
# isn't 0. So you need to make sure that all commands return a proper
|
||||
# code and not just die. All eclass function used should support nonfatal
|
||||
# calls properly.
|
||||
#
|
||||
# The rational behind this is the tear down of the started Xfvb session. A
|
||||
# straight die would leave a running session behind.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# @CODE
|
||||
# src_test() {
|
||||
# virtx default
|
||||
# }
|
||||
# @CODE
|
||||
#
|
||||
# @CODE
|
||||
# python_test() {
|
||||
# virtx py.test --verbose
|
||||
# }
|
||||
# @CODE
|
||||
#
|
||||
# @CODE
|
||||
# my_test() {
|
||||
# some_command
|
||||
# return $?
|
||||
# }
|
||||
#
|
||||
# src_test() {
|
||||
# virtx my_test
|
||||
# }
|
||||
# @CODE
|
||||
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=
|
||||
# The following is derived from Mandrake's hack to allow
|
||||
# compiling without the X display
|
||||
|
||||
einfo "Scanning for an open DISPLAY to start Xvfb ..."
|
||||
# If we are in a chrooted environment, and there is already a
|
||||
# X server started outside of the chroot, Xvfb will fail to start
|
||||
# on the same display (most cases this is :0 ), so make sure
|
||||
# Xvfb is started, else bump the display number
|
||||
#
|
||||
# Azarah - 5 May 2002
|
||||
XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
|
||||
debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}"
|
||||
|
||||
# We really do not want SANDBOX enabled here
|
||||
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
|
||||
# Stop trying after 15 tries
|
||||
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
|
||||
|
||||
local start=${XDISPLAY}
|
||||
while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
|
||||
# Stop trying after 15 tries
|
||||
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
|
||||
# Now enable SANDBOX again if needed.
|
||||
export SANDBOX_ON="${OLD_SANDBOX_ON}"
|
||||
|
||||
((XDISPLAY++))
|
||||
debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}"
|
||||
${XVFB} :${XDISPLAY} ${xvfbargs} &>/dev/null &
|
||||
sleep 2
|
||||
done
|
||||
einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
|
||||
|
||||
# Now enable SANDBOX again if needed.
|
||||
export SANDBOX_ON="${OLD_SANDBOX_ON}"
|
||||
|
||||
einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
|
||||
|
||||
export DISPLAY=:${XDISPLAY}
|
||||
# Do not break on error, but setup $retval, as we need
|
||||
# to kill Xvfb
|
||||
debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\""
|
||||
if has "${EAPI}" 2 3; then
|
||||
${VIRTUALX_COMMAND} "$@"
|
||||
retval=$?
|
||||
else
|
||||
nonfatal ${VIRTUALX_COMMAND} "$@"
|
||||
retval=$?
|
||||
fi
|
||||
|
||||
# Now kill Xvfb
|
||||
kill $(cat /tmp/.X${XDISPLAY}-lock)
|
||||
export DISPLAY=:${XDISPLAY}
|
||||
# Do not break on error, but setup $retval, as we need
|
||||
# to kill Xvfb
|
||||
debug-print "${FUNCNAME}: $@"
|
||||
if has "${EAPI}" 2 3; then
|
||||
"$@"
|
||||
retval=$?
|
||||
else
|
||||
debug-print "${FUNCNAME}: attaching to running X display"
|
||||
# Normal make if we can connect to an X display
|
||||
debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\""
|
||||
${VIRTUALX_COMMAND} "$@"
|
||||
nonfatal "$@"
|
||||
retval=$?
|
||||
fi
|
||||
|
||||
# Now kill Xvfb
|
||||
kill $(cat /tmp/.X${XDISPLAY}-lock)
|
||||
|
||||
# die if our command failed
|
||||
[[ ${retval} -ne 0 ]] && die "${FUNCNAME}: the ${VIRTUALX_COMMAND} failed."
|
||||
[[ ${retval} -ne 0 ]] && die "Failed to run '$@'"
|
||||
|
||||
return 0 # always return 0, it can be altered by failed kill for Xvfb
|
||||
}
|
||||
@ -175,8 +230,11 @@ virtualmake() {
|
||||
Xmake() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
ewarn "QA: you should not execute make directly"
|
||||
ewarn "QA: rather execute Xemake -j1 if you have issues with parallel make"
|
||||
[[ ${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 "$@"
|
||||
}
|
||||
|
||||
@ -186,6 +244,9 @@ Xmake() {
|
||||
Xemake() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ ${EAPI} == [2345] ]] \
|
||||
|| die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx emake ....'"
|
||||
|
||||
VIRTUALX_COMMAND="emake" virtualmake "$@"
|
||||
}
|
||||
|
||||
@ -195,5 +256,11 @@ Xemake() {
|
||||
Xeconf() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ ${EAPI} == [2345] ]] \
|
||||
|| die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx econf ....'"
|
||||
|
||||
VIRTUALX_COMMAND="econf" virtualmake "$@"
|
||||
}
|
||||
|
||||
_VIRTUAL_X=1
|
||||
fi
|
||||
|
@ -1,131 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/virtuoso.eclass,v 1.15 2014/03/07 03:27:47 creffett Exp $
|
||||
|
||||
# @ECLASS: virtuoso.eclass
|
||||
# @MAINTAINER:
|
||||
# Maciej Mrozowski <reavertm@gentoo.org>
|
||||
# Chris Reffett <creffett@gentoo.org>
|
||||
#
|
||||
# @BLURB: Provides splitting functionality for Virtuoso
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides common code for splitting Virtuoso OpenSource database
|
||||
|
||||
case ${EAPI:-0} in
|
||||
2|3|4|5) : ;;
|
||||
*) die "EAPI=${EAPI} is not supported" ;;
|
||||
esac
|
||||
|
||||
inherit autotools multilib eutils
|
||||
|
||||
MY_P="virtuoso-opensource-${PV}"
|
||||
|
||||
case ${PV} in
|
||||
*9999*)
|
||||
ECVS_SERVER="virtuoso.cvs.sourceforge.net:/cvsroot/virtuoso"
|
||||
ECVS_PROJECT='virtuoso'
|
||||
SRC_URI=""
|
||||
inherit cvs
|
||||
;;
|
||||
*)
|
||||
# Use this variable to determine distribution method (live or tarball)
|
||||
TARBALL="${MY_P}.tar.gz"
|
||||
SRC_URI="mirror://sourceforge/virtuoso/${TARBALL} mirror://gentoo/VOS-genpatches-${PV}.tar.bz2"
|
||||
;;
|
||||
esac
|
||||
|
||||
EXPORT_FUNCTIONS src_prepare src_configure
|
||||
|
||||
# Set some defaults
|
||||
HOMEPAGE='http://virtuoso.openlinksw.com/wiki/main/Main/'
|
||||
LICENSE='GPL-2'
|
||||
SLOT='0'
|
||||
|
||||
DEPEND='
|
||||
>=sys-devel/libtool-2.2.6a
|
||||
'
|
||||
RDEPEND=''
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
# @FUNCTION: virtuoso_src_prepare
|
||||
# @DESCRIPTION:
|
||||
# 1. Applies common release patches
|
||||
# 2. Applies package-specific patches (from ${FILESDIR}/, PATCHES can be used)
|
||||
# 3. Applies user patches from /etc/portage/patches/${CATEGORY}/${PN}/
|
||||
# 4. Modifies makefiles for split build. Uses VOS_EXTRACT
|
||||
# 5. eautoreconf
|
||||
virtuoso_src_prepare() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
EPATCH_SUFFIX='patch' EPATCH_FORCE='yes' epatch
|
||||
pushd "${S}" >/dev/null
|
||||
[[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
|
||||
|
||||
debug-print "$FUNCNAME: applying user patches"
|
||||
epatch_user
|
||||
|
||||
|
||||
# @ECLASS-VARIABLE: VOS_EXTRACT
|
||||
# @DESCRIPTION:
|
||||
# Lists any subdirectories that are required to be extracted
|
||||
# and enabled in Makefile.am's for current package.
|
||||
if [[ -n ${VOS_EXTRACT} ]]; then
|
||||
# Comment out everything
|
||||
find . -name Makefile.am -exec \
|
||||
sed -e '/SUBDIRS\s*=/s/^/# DISABLED /g' -i {} + \
|
||||
|| die 'failed to disable subdirs'
|
||||
|
||||
# Uncomment specified
|
||||
local path
|
||||
for path in ${VOS_EXTRACT}; do
|
||||
if [[ -d "${path}" ]]; then
|
||||
# Uncomment leaf
|
||||
if [[ -f "${path}"/Makefile.am ]]; then
|
||||
sed -e '/^# DISABLED \s*SUBDIRS\s*=/s/# DISABLED //g' \
|
||||
-i "${path}"/Makefile.am || die "failed to uncomment leaf in ${path}/Makefile.am"
|
||||
fi
|
||||
# Process remaining path elements
|
||||
while true; do
|
||||
local subdir=`basename "${path}"`
|
||||
path=`dirname "${path}"`
|
||||
if [[ -f "${path}"/Makefile.am ]]; then
|
||||
# Uncomment if necessary
|
||||
sed -e '/^# DISABLED \s*SUBDIRS\s*=/s/.*/SUBDIRS =/g' \
|
||||
-i "${path}"/Makefile.am
|
||||
# Append subdirs if not there already
|
||||
if [[ -z `sed -ne "/SUBDIRS\s*=.*${subdir}\b/p" "${path}"/Makefile.am` ]]; then
|
||||
sed -e "/^SUBDIRS\s*=/s|$| ${subdir}|" \
|
||||
-i "${path}"/Makefile.am || die "failed to append ${subdir}"
|
||||
fi
|
||||
fi
|
||||
[[ "${path}" = . ]] && break
|
||||
done
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
# @FUNCTION: virtuoso_src_configure
|
||||
# @DESCRIPTION:
|
||||
# Runs ./configure with common and user options specified via myconf variable
|
||||
virtuoso_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
# Override some variables to make tests work
|
||||
if [[ ${PN} != virtuoso-server ]]; then
|
||||
[[ ${EAPI} == 2 ]] && ! use prefix && EPREFIX=
|
||||
export ISQL="${EPREFIX}"/usr/bin/isql-v
|
||||
export SERVER="${EPREFIX}"/usr/bin/virtuoso-t
|
||||
fi
|
||||
|
||||
econf \
|
||||
--with-layout=gentoo \
|
||||
--localstatedir="${EPREFIX}"/var \
|
||||
--enable-shared \
|
||||
--with-pthreads \
|
||||
--without-internal-zlib \
|
||||
${myconf}
|
||||
}
|
@ -15,20 +15,14 @@
|
||||
# waf-based packages much easier.
|
||||
# Its main features are support of common portage default settings.
|
||||
|
||||
inherit eutils multilib toolchain-funcs multiprocessing
|
||||
[[ ${EAPI} == [45] ]] && inherit eutils
|
||||
inherit multilib toolchain-funcs multiprocessing
|
||||
|
||||
case ${EAPI:-0} in
|
||||
4|5) EXPORT_FUNCTIONS src_configure src_compile src_install ;;
|
||||
4|5|6) EXPORT_FUNCTIONS src_configure src_compile src_install ;;
|
||||
*) die "EAPI=${EAPI} is not supported" ;;
|
||||
esac
|
||||
|
||||
# Python with threads is required to run waf. We do not know which python slot
|
||||
# is being used as the system interpreter, so we are forced to block all
|
||||
# slots that have USE=-threads.
|
||||
DEPEND="${DEPEND}
|
||||
dev-lang/python
|
||||
!dev-lang/python[-threads]"
|
||||
|
||||
# @ECLASS-VARIABLE: WAF_VERBOSE
|
||||
# @DESCRIPTION:
|
||||
# Set to OFF to disable verbose messages during compilation
|
||||
@ -41,35 +35,41 @@ DEPEND="${DEPEND}
|
||||
waf-utils_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local fail
|
||||
if [[ ! ${_PYTHON_ANY_R1} && ! ${_PYTHON_SINGLE_R1} && ! ${_PYTHON_R1} ]]; then
|
||||
eqawarn "Using waf-utils.eclass without any python-r1 suite eclass is not supported"
|
||||
eqawarn "and will be banned on 2015-01-24. Please make sure to configure and inherit"
|
||||
eqawarn "appropriate -r1 eclass. For more information and examples, please see:"
|
||||
eqawarn " https://wiki.gentoo.org/wiki/Project:Python/waf-utils_integration"
|
||||
eerror "Using waf-utils.eclass without any python-r1 suite eclass is not supported."
|
||||
eerror "Please make sure to configure and inherit appropriate -r1 eclass."
|
||||
eerror "For more information and examples, please see:"
|
||||
eerror " https://wiki.gentoo.org/wiki/Project:Python/waf-utils_integration"
|
||||
fail=1
|
||||
else
|
||||
if [[ ! ${EPYTHON} ]]; then
|
||||
eqawarn "EPYTHON is unset while calling waf-utils. This most likely means that"
|
||||
eqawarn "the ebuild did not call the appropriate eclass function before calling waf."
|
||||
eerror "EPYTHON is unset while calling waf-utils. This most likely means that"
|
||||
eerror "the ebuild did not call the appropriate eclass function before calling waf."
|
||||
if [[ ${_PYTHON_ANY_R1} ]]; then
|
||||
eqawarn "Please ensure that python-any-r1_pkg_setup is called in pkg_setup()."
|
||||
eerror "Please ensure that python-any-r1_pkg_setup is called in pkg_setup()."
|
||||
elif [[ ${_PYTHON_SINGLE_R1} ]]; then
|
||||
eqawarn "Please ensure that python-single-r1_pkg_setup is called in pkg_setup()."
|
||||
eerror "Please ensure that python-single-r1_pkg_setup is called in pkg_setup()."
|
||||
else # python-r1
|
||||
eqawarn "Please ensure that python_setup is called before waf-utils_src_configure(),"
|
||||
eqawarn "or that the latter is used within python_foreach_impl as appropriate."
|
||||
eerror "Please ensure that python_setup is called before waf-utils_src_configure(),"
|
||||
eerror "or that the latter is used within python_foreach_impl as appropriate."
|
||||
fi
|
||||
eqawarn
|
||||
eerror
|
||||
fail=1
|
||||
fi
|
||||
|
||||
if [[ ${PYTHON_REQ_USE} != *threads* ]]; then
|
||||
eqawarn "Waf requires threading support in Python. To accomodate this requirement,"
|
||||
eqawarn "please add 'threads(+)' to PYTHON_REQ_USE variable (above inherit line)."
|
||||
eqawarn "For more information and examples, please see:"
|
||||
eqawarn " https://wiki.gentoo.org/wiki/Project:Python/waf-utils_integration"
|
||||
eerror "Waf requires threading support in Python. To accomodate this requirement,"
|
||||
eerror "please add 'threads(+)' to PYTHON_REQ_USE variable (above inherit line)."
|
||||
eerror "For more information and examples, please see:"
|
||||
eerror " https://wiki.gentoo.org/wiki/Project:Python/waf-utils_integration"
|
||||
fail=1
|
||||
fi
|
||||
fi
|
||||
|
||||
local libdir=""
|
||||
[[ ${fail} ]] && die "Invalid use of waf-utils.eclass"
|
||||
|
||||
local libdir=()
|
||||
|
||||
# @ECLASS-VARIABLE: WAF_BINARY
|
||||
# @DESCRIPTION:
|
||||
@ -81,25 +81,16 @@ waf-utils_src_configure() {
|
||||
# @DESCRIPTION:
|
||||
# Variable specifying that you don't want to set the libdir for waf script.
|
||||
# Some scripts does not allow setting it at all and die if they find it.
|
||||
[[ -z ${NO_WAF_LIBDIR} ]] && libdir="--libdir=${EPREFIX}/usr/$(get_libdir)"
|
||||
[[ -z ${NO_WAF_LIBDIR} ]] && libdir=(--libdir="${EPREFIX}/usr/$(get_libdir)")
|
||||
|
||||
tc-export AR CC CPP CXX RANLIB
|
||||
echo "CCFLAGS=\"${CFLAGS}\" LINKFLAGS=\"${CFLAGS} ${LDFLAGS}\" \"${WAF_BINARY}\" --prefix=${EPREFIX}/usr ${libdir} $@ configure"
|
||||
echo "CCFLAGS=\"${CFLAGS}\" LINKFLAGS=\"${CFLAGS} ${LDFLAGS}\" \"${WAF_BINARY}\" --prefix=${EPREFIX}/usr ${libdir[@]} $@ configure"
|
||||
|
||||
# This condition is required because waf takes even whitespace as function
|
||||
# calls, awesome isn't it?
|
||||
if [[ -z ${NO_WAF_LIBDIR} ]]; then
|
||||
CCFLAGS="${CFLAGS}" LINKFLAGS="${CFLAGS} ${LDFLAGS}" "${WAF_BINARY}" \
|
||||
"--prefix=${EPREFIX}/usr" \
|
||||
"${libdir}" \
|
||||
"$@" \
|
||||
configure || die "configure failed"
|
||||
else
|
||||
CCFLAGS="${CFLAGS}" LINKFLAGS="${CFLAGS} ${LDFLAGS}" "${WAF_BINARY}" \
|
||||
"--prefix=${EPREFIX}/usr" \
|
||||
"$@" \
|
||||
configure || die "configure failed"
|
||||
fi
|
||||
CCFLAGS="${CFLAGS}" LINKFLAGS="${CFLAGS} ${LDFLAGS}" "${WAF_BINARY}" \
|
||||
"--prefix=${EPREFIX}/usr" \
|
||||
"${libdir[@]}" \
|
||||
"$@" \
|
||||
configure || die "configure failed"
|
||||
}
|
||||
|
||||
# @FUNCTION: waf-utils_src_compile
|
||||
|
@ -1,11 +1,11 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/eclass/wxwidgets.eclass,v 1.39 2014/04/21 21:55:31 ottxor Exp $
|
||||
# $Id$
|
||||
|
||||
# @ECLASS: wxwidgets.eclass
|
||||
# @ECLASS: wxwidgets.eclass
|
||||
# @MAINTAINER:
|
||||
# wxwidgets@gentoo.org
|
||||
# @BLURB: Manages build configuration for wxGTK-using packages.
|
||||
# wxwidgets@gentoo.org
|
||||
# @BLURB: Manages build configuration for wxGTK-using packages.
|
||||
# @DESCRIPTION:
|
||||
# This eclass gives ebuilds the ability to build against a specific wxGTK
|
||||
# SLOT and profile without interfering with the system configuration. Any
|
||||
@ -29,7 +29,7 @@
|
||||
# DEPEND="wxwidgets? ( x11-libs/wxGTK:2.8[X?] )"
|
||||
#
|
||||
# src_configure() {
|
||||
# if use wxwidgets; then
|
||||
# if use wxwidgets; then
|
||||
# WX_GTK_VER="2.8"
|
||||
# if use X; then
|
||||
# need-wxwidgets unicode
|
||||
@ -52,21 +52,35 @@
|
||||
#
|
||||
# Note: unless you know your package works with wxbase (which is very
|
||||
# doubtful), always depend on wxGTK[X].
|
||||
#
|
||||
# Debugging: In wxGTK 3.0 and later debugging support is enabled in the
|
||||
# library by default and needs to be controlled at the package level.
|
||||
# Use the -DNDEBUG preprocessor flag to disable debugging features.
|
||||
# (Using need-wxwidgets will do this for you, see below.)
|
||||
|
||||
inherit eutils multilib
|
||||
if [[ -z ${_WXWIDGETS_ECLASS} ]]; then
|
||||
|
||||
case ${EAPI} in
|
||||
0|1|2|3|4|5)
|
||||
inherit eutils flag-o-matic multilib
|
||||
;;
|
||||
*)
|
||||
die "EAPI=${EAPI:-0} is not supported"
|
||||
;;
|
||||
esac
|
||||
|
||||
# We do this in global scope so ebuilds can get sane defaults just by
|
||||
# inheriting.
|
||||
if [[ -z ${WX_CONFIG} ]]; then
|
||||
if [[ -n ${WX_GTK_VER} ]]; then
|
||||
for wxtoolkit in mac gtk2 base; do
|
||||
for _wxtoolkit in mac gtk2 base; do
|
||||
# newer versions don't have a seperate debug profile
|
||||
for wxdebug in xxx release- debug-; do
|
||||
wxconf="${wxtoolkit}-unicode-${wxdebug/xxx/}${WX_GTK_VER}"
|
||||
for _wxdebug in xxx release- debug-; do
|
||||
_wxconf="${_wxtoolkit}-unicode-${_wxdebug/xxx/}${WX_GTK_VER}"
|
||||
|
||||
[[ -f ${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf} ]] || continue
|
||||
[[ -f ${EPREFIX}/usr/$(get_libdir)/wx/config/${_wxconf} ]] || continue
|
||||
|
||||
WX_CONFIG="${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf}"
|
||||
WX_CONFIG="${EPREFIX}/usr/$(get_libdir)/wx/config/${_wxconf}"
|
||||
WX_ECLASS_CONFIG="${WX_CONFIG}"
|
||||
break
|
||||
done
|
||||
@ -75,15 +89,26 @@ if [[ -z ${WX_CONFIG} ]]; then
|
||||
[[ -n ${WX_CONFIG} ]] && export WX_CONFIG WX_ECLASS_CONFIG
|
||||
fi
|
||||
fi
|
||||
unset _wxtoolkit
|
||||
unset _wxdebug
|
||||
unset _wxconf
|
||||
|
||||
# @FUNCTION: need-wxwidgets
|
||||
# @USAGE: <profile>
|
||||
# @DESCRIPTION:
|
||||
#
|
||||
# Available configurations are:
|
||||
# Available profiles are:
|
||||
#
|
||||
# unicode (USE="X")
|
||||
# base-unicode (USE="-X")
|
||||
#
|
||||
# This lets you choose which config file from /usr/lib/wx/config is used when
|
||||
# building the package. It also exports ${WX_CONFIG} with the full path to
|
||||
# that config.
|
||||
#
|
||||
# If your ebuild does not have a debug USE flag, or it has one and it is
|
||||
# disabled, -DNDEBUG will be automatically added to CPPFLAGS. This can be
|
||||
# overridden by setting WX_DISABLE_DEBUG if you want to handle it yourself.
|
||||
|
||||
need-wxwidgets() {
|
||||
local wxtoolkit wxdebug wxconf
|
||||
@ -93,7 +118,7 @@ need-wxwidgets() {
|
||||
echo
|
||||
die
|
||||
fi
|
||||
|
||||
|
||||
if [[ ${WX_GTK_VER} != 2.8 && ${WX_GTK_VER} != 2.9 && ${WX_GTK_VER} != 3.0 ]]; then
|
||||
eerror "Invalid WX_GTK_VER: ${WX_GTK_VER} - must be set to a valid wxGTK SLOT."
|
||||
echo
|
||||
@ -124,6 +149,10 @@ need-wxwidgets() {
|
||||
else
|
||||
wxdebug="release-"
|
||||
fi
|
||||
else
|
||||
if [[ -z ${WX_DISABLE_DEBUG} ]]; then
|
||||
use_if_iuse debug || append-cppflags -DNDEBUG
|
||||
fi
|
||||
fi
|
||||
|
||||
wxconf="${wxtoolkit}-unicode-${wxdebug}${WX_GTK_VER}"
|
||||
@ -143,3 +172,6 @@ need-wxwidgets() {
|
||||
einfo "Using wxWidgets: ${wxconf}"
|
||||
echo
|
||||
}
|
||||
|
||||
_WXWIDGETS_ECLASS=1
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user