diff options
author | 2015-11-01 21:37:39 +0000 | |
---|---|---|
committer | 2015-11-05 17:37:28 +0000 | |
commit | 01a7fdc7633c7e693d0a73aae5eb0583688ae839 (patch) | |
tree | a143c01e464a80876aee5305ac04b519f62e8459 | |
parent | 5ac2a5152230998e0328166206fb3a9947553f87 (diff) | |
download | paludis-01a7fdc7633c7e693d0a73aae5eb0583688ae839.tar.gz paludis-01a7fdc7633c7e693d0a73aae5eb0583688ae839.tar.xz |
EAPI 6 has in_iuse
-rw-r--r-- | paludis/repositories/e/e_repository_TEST_5.cc | 9 | ||||
-rwxr-xr-x | paludis/repositories/e/e_repository_TEST_5_setup.sh | 16 | ||||
-rw-r--r-- | paludis/repositories/e/e_repository_TEST_6.cc | 26 | ||||
-rwxr-xr-x | paludis/repositories/e/e_repository_TEST_6_setup.sh | 61 | ||||
-rw-r--r-- | paludis/repositories/e/ebuild/6/Makefile.am | 1 | ||||
-rw-r--r-- | paludis/repositories/e/ebuild/6/list_functions.bash | 34 |
6 files changed, 147 insertions, 0 deletions
diff --git a/paludis/repositories/e/e_repository_TEST_5.cc b/paludis/repositories/e/e_repository_TEST_5.cc index 90fb61861..b3ead8dbe 100644 --- a/paludis/repositories/e/e_repository_TEST_5.cc +++ b/paludis/repositories/e/e_repository_TEST_5.cc @@ -312,6 +312,15 @@ TEST(ERepository, InstallEAPI5) EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); id->perform_action(action); } + + { + const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches( + PackageDepSpec(parse_user_package_dep_spec("=cat/no-in_iuse-5", + &env, { })), nullptr, { }))]->last()); + ASSERT_TRUE(bool(id)); + EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); + id->perform_action(action); + } } TEST(ERepository, RequiredUse) diff --git a/paludis/repositories/e/e_repository_TEST_5_setup.sh b/paludis/repositories/e/e_repository_TEST_5_setup.sh index 9a266b32f..c85aa644a 100755 --- a/paludis/repositories/e/e_repository_TEST_5_setup.sh +++ b/paludis/repositories/e/e_repository_TEST_5_setup.sh @@ -599,6 +599,22 @@ src_install() { } END +mkdir -p "cat/no-in_iuse" || exit 1 +cat << 'END' > cat/no-in_iuse/no-in_iuse-5.ebuild || exit 1 +EAPI="5" +DESCRIPTION="The Description" +HOMEPAGE="http://example.com/" +SRC_URI="" +SLOT="0" +IUSE="" +LICENSE="GPL-2" +KEYWORDS="test" + +pkg_setup() { + [[ -z $(declare -F in_iuse) ]] || die +} +END + mkdir -p "cat/subslots" || exit 1 cat << 'END' > cat/subslots/subslots-5.ebuild || exit 1 EAPI="5" diff --git a/paludis/repositories/e/e_repository_TEST_6.cc b/paludis/repositories/e/e_repository_TEST_6.cc index b3a763bb2..8d8f131fd 100644 --- a/paludis/repositories/e/e_repository_TEST_6.cc +++ b/paludis/repositories/e/e_repository_TEST_6.cc @@ -320,5 +320,31 @@ TEST(ERepository, InstallEAPI6) EXPECT_EQ("6", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); EXPECT_THROW(id->perform_action(action), ActionFailedError); } + + { + const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches( + PackageDepSpec(parse_user_package_dep_spec("=cat/in_iuse-6", + &env, { })), nullptr, { }))]->last()); + ASSERT_TRUE(bool(id)); + EXPECT_EQ("6", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); + id->perform_action(action); + } + + { + const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches( + PackageDepSpec(parse_user_package_dep_spec("=cat/in_iuse-global-6", + &env, { })), nullptr, { }))]->last()); + ASSERT_TRUE(bool(id)); + EXPECT_EQ("UNKNOWN", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); + } + + { + const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches( + PackageDepSpec(parse_user_package_dep_spec("=cat/in_iuse-global-notmetadata-6", + &env, { })), nullptr, { }))]->last()); + ASSERT_TRUE(bool(id)); + EXPECT_EQ("6", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value()); + EXPECT_THROW(id->perform_action(action), ActionFailedError); + } } diff --git a/paludis/repositories/e/e_repository_TEST_6_setup.sh b/paludis/repositories/e/e_repository_TEST_6_setup.sh index 67f82a1b7..5ccac771e 100755 --- a/paludis/repositories/e/e_repository_TEST_6_setup.sh +++ b/paludis/repositories/e/e_repository_TEST_6_setup.sh @@ -33,6 +33,9 @@ USE_EXPAND_VALUES_USERLAND="GNU" USE_EXPAND_VALUES_ARCH="cheese otherarch" IUSE_IMPLICIT="build" END +cat<<END > eclass/test.eclass +IUSE="eclass-flag" +END mkdir -p "cat/global-failglob" || exit 1 cat << 'END' > cat/global-failglob/global-failglob-6.ebuild || exit 1 @@ -541,5 +544,63 @@ src_install() { } END +mkdir -p "cat/in_iuse" || exit 1 +cat << 'END' > cat/in_iuse/in_iuse-6.ebuild || exit 1 +EAPI="6" + +inherit test + +DESCRIPTION="The Description" +HOMEPAGE="http://example.com/" +SRC_URI="" +SLOT="0" +IUSE="+ebuild-flag" +LICENSE="GPL-2" +KEYWORDS="test" + +pkg_setup() { + [[ -n $(declare -F in_iuse) ]] || die not defined + + in_iuse ebuild-flag || die ebuild-flag + in_iuse eclass-flag || die eclass-flag + in_iuse build || die build + in_iuse cheese || die cheese + in_iuse otherarch || die otherarch + in_iuse userland_GNU || die userland_GNU + in_iuse userland_zOS && die userland_zOS + in_iuse nowhere-flag && die nowhere-flag +} +END + +mkdir -p "cat/in_iuse-global" || exit 1 +cat << 'END' > cat/in_iuse-global/in_iuse-global-6.ebuild || exit 1 +EAPI="6" +DESCRIPTION="The Description" +HOMEPAGE="http://example.com/" +SRC_URI="" +SLOT="0" +IUSE="" +LICENSE="GPL-2" +KEYWORDS="test" + +in_iuse test && DEPEND="test? ( cat/test-dep )" +END + +mkdir -p "cat/in_iuse-global-notmetadata" || exit 1 +cat << 'END' > cat/in_iuse-global-notmetadata/in_iuse-global-notmetadata-6.ebuild || exit 1 +EAPI="6" +DESCRIPTION="The Description" +HOMEPAGE="http://example.com/" +SRC_URI="" +SLOT="0" +IUSE="" +LICENSE="GPL-2" +KEYWORDS="test" + +if [[ -n ${MERGE_TYPE} ]] && in_iuse test ; then + DEPEND="test? ( cat/test-dep )" +fi +END + cd .. cd .. diff --git a/paludis/repositories/e/ebuild/6/Makefile.am b/paludis/repositories/e/ebuild/6/Makefile.am index 6cedca5b2..ed6861bbb 100644 --- a/paludis/repositories/e/ebuild/6/Makefile.am +++ b/paludis/repositories/e/ebuild/6/Makefile.am @@ -6,6 +6,7 @@ libexecprog6dir = $(libexecdir)/paludis/6 libexecprog6_SCRIPTS = \ build_functions.bash \ + list_functions.bash \ multilib_functions.bash \ output_functions.bash diff --git a/paludis/repositories/e/ebuild/6/list_functions.bash b/paludis/repositories/e/ebuild/6/list_functions.bash new file mode 100644 index 000000000..4f34748de --- /dev/null +++ b/paludis/repositories/e/ebuild/6/list_functions.bash @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# vim: set sw=4 sts=4 et : + +# Copyright (c) 2006, 2009, 2012 Ciaran McCreesh +# Copyright (c) 2015 David Leverton +# +# Based in part upon ebuild.sh from Portage, which is Copyright 1995-2005 +# Gentoo Foundation and distributed under the terms of the GNU General +# Public License v2. +# +# This file is part of the Paludis package manager. Paludis is free software; +# you can redistribute it and/or modify it under the terms of the GNU General +# Public License, version 2, as published by the Free Software Foundation. +# +# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA + +ebuild_load_module --older list_functions + +in_iuse() +{ + hasq "${!PALUDIS_EBUILD_PHASE_VAR}" metadata init \ + && die "in_iuse must not be called in global scope" + + local i=( ${IUSE_EFFECTIVE} ) + hasq ${1} "${i[@]#[+-]}" +} + |