aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar David Leverton <levertond@googlemail.com> 2015-11-01 21:37:39 +0000
committerAvatar David Leverton <levertond@googlemail.com> 2015-11-05 17:37:28 +0000
commit01a7fdc7633c7e693d0a73aae5eb0583688ae839 (patch)
treea143c01e464a80876aee5305ac04b519f62e8459
parent5ac2a5152230998e0328166206fb3a9947553f87 (diff)
downloadpaludis-01a7fdc7633c7e693d0a73aae5eb0583688ae839.tar.gz
paludis-01a7fdc7633c7e693d0a73aae5eb0583688ae839.tar.xz
EAPI 6 has in_iuse
-rw-r--r--paludis/repositories/e/e_repository_TEST_5.cc9
-rwxr-xr-xpaludis/repositories/e/e_repository_TEST_5_setup.sh16
-rw-r--r--paludis/repositories/e/e_repository_TEST_6.cc26
-rwxr-xr-xpaludis/repositories/e/e_repository_TEST_6_setup.sh61
-rw-r--r--paludis/repositories/e/ebuild/6/Makefile.am1
-rw-r--r--paludis/repositories/e/ebuild/6/list_functions.bash34
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 90fb618..b3ead8d 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 9a266b3..c85aa64 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 b3a763b..8d8f131 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 67f82a1..5ccac77 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 6cedca5..ed6861b 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 0000000..4f34748
--- /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[@]#[+-]}"
+}
+