aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar David Leverton <levertond@googlemail.com> 2008-08-03 16:53:22 +0100
committerAvatar David Leverton <levertond@googlemail.com> 2008-08-03 18:32:16 +0100
commite16130d830bf6911e21b6c2d9c1e2d9672d2fcf0 (patch)
tree41344b91725c58ce562270eabd0176294f6c7908
parent6450119094d0c6dbc68162a815d5a5d8e500ce00 (diff)
downloadpaludis-e16130d830bf6911e21b6c2d9c1e2d9672d2fcf0.tar.gz
paludis-e16130d830bf6911e21b6c2d9c1e2d9672d2fcf0.tar.xz
Support Portage-syntax for USE deps.
-rw-r--r--paludis/elike_package_dep_spec.cc39
-rw-r--r--paludis/elike_package_dep_spec.se4
-rw-r--r--paludis/elike_use_requirement.cc268
-rw-r--r--paludis/elike_use_requirement.se1
-rw-r--r--paludis/repositories/e/eapis/exheres-0.conf4
-rw-r--r--paludis/repositories/e/eapis/kdebuild-1.conf2
-rw-r--r--paludis/repositories/e/eapis/paludis-1.conf2
-rw-r--r--paludis/repositories/fake/dep_parser.cc4
8 files changed, 207 insertions, 117 deletions
diff --git a/paludis/elike_package_dep_spec.cc b/paludis/elike_package_dep_spec.cc
index e668b28..5d0cb96 100644
--- a/paludis/elike_package_dep_spec.cc
+++ b/paludis/elike_package_dep_spec.cc
@@ -92,15 +92,6 @@ paludis::elike_remove_trailing_square_bracket_if_exists(std::string & s, Partial
if (std::string::npos == ((use_group_p = s.rfind('['))))
return false;
- if (! options[epdso_allow_square_bracket_deps])
- {
- if (options[epdso_strict_parsing])
- throw PackageDepSpecError("[] dependencies not safe for use here");
- else
- Log::get_instance()->message("e.package_dep_spec.brackets_not_allowed", ll_warning, lc_context)
- << "[] dependencies not safe for use here";
- }
-
if (s.at(s.length() - 1) != ']')
throw PackageDepSpecError("Mismatched []");
@@ -116,6 +107,15 @@ paludis::elike_remove_trailing_square_bracket_if_exists(std::string & s, Partial
case '>':
case '=':
case '~':
+ if (! options[epdso_allow_ranged_deps])
+ {
+ if (options[epdso_strict_parsing])
+ throw PackageDepSpecError("Version range dependencies not safe for use here");
+ else
+ Log::get_instance()->message("e.package_dep_spec.range_not_allowed", ll_warning, lc_context)
+ << "Version range dependencies not safe for use here";
+ }
+
{
char needed_mode(0);
@@ -178,11 +178,32 @@ paludis::elike_remove_trailing_square_bracket_if_exists(std::string & s, Partial
break;
default:
+ if (options[epdso_allow_use_deps_portage] || ! options[epdso_allow_use_deps])
+ {
+ if (! options[epdso_allow_use_deps_portage])
+ {
+ if (options[epdso_strict_parsing])
+ throw PackageDepSpecError("USE dependencies not safe for use here");
+ else
+ {
+ // Use Portage syntax for this case, as it
+ // should only happen in Gentoo EAPIs
+ Log::get_instance()->message("e.package_dep_spec.use_not_allowed", ll_warning, lc_context)
+ << "USE dependencies not safe for use here";
+ }
+ }
+
+ std::tr1::shared_ptr<const AdditionalPackageDepSpecRequirement> req(parse_elike_use_requirement(flag,
+ id, ELikeUseRequirementOptions() + euro_allow_self_deps + euro_portage_syntax));
+ result.additional_requirement(req);
+ }
+ else
{
std::tr1::shared_ptr<const AdditionalPackageDepSpecRequirement> req(parse_elike_use_requirement(flag,
id, ELikeUseRequirementOptions() + euro_allow_self_deps));
result.additional_requirement(req);
}
+
break;
};
diff --git a/paludis/elike_package_dep_spec.se b/paludis/elike_package_dep_spec.se
index ba0e4d6..212f5b8 100644
--- a/paludis/elike_package_dep_spec.se
+++ b/paludis/elike_package_dep_spec.se
@@ -10,7 +10,9 @@ make_enum_ELikePackageDepSpecOption()
key epdso_allow_slot_star_deps "Allow :* slot deps"
key epdso_allow_slot_equal_deps "Allow := and :=blah slot deps"
key epdso_allow_repository_deps "Allow ::repo deps"
- key epdso_allow_square_bracket_deps "Allow [use] and [opver] deps"
+ key epdso_allow_use_deps "Allow [use] deps"
+ key epdso_allow_use_deps_portage "Allow [use] deps with Portage syntax"
+ key epdso_allow_ranged_deps "Allow [op version] deps"
key epdso_allow_tilde_greater_deps "Allow ~> deps"
key epdso_strict_parsing "Error rather than warn for violations"
}
diff --git a/paludis/elike_use_requirement.cc b/paludis/elike_use_requirement.cc
index 5b9c34b..41a5c66 100644
--- a/paludis/elike_use_requirement.cc
+++ b/paludis/elike_use_requirement.cc
@@ -21,37 +21,41 @@
#include <paludis/util/options.hh>
#include <paludis/util/make_shared_ptr.hh>
#include <paludis/util/stringify.hh>
+#include <paludis/util/join.hh>
+#include <paludis/util/tokeniser.hh>
#include <paludis/dep_spec.hh>
#include <paludis/name.hh>
#include <paludis/environment.hh>
+#include <vector>
+#include <functional>
using namespace paludis;
namespace
{
- class PALUDIS_VISIBLE UseRequirement :
- public AdditionalPackageDepSpecRequirement
+ class PALUDIS_VISIBLE UseRequirement
{
private:
- const std::string _raw;
const UseFlagName _name;
public:
- UseRequirement(const std::string &, const UseFlagName &);
+ UseRequirement(const UseFlagName &);
+ virtual ~UseRequirement() { }
const UseFlagName flag() const PALUDIS_ATTRIBUTE((warn_unused_result))
{
return _name;
}
- virtual const std::string as_raw_string() const PALUDIS_ATTRIBUTE((warn_unused_result));
+ virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ virtual const std::string as_human_string() const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
};
class PALUDIS_VISIBLE EnabledUseRequirement :
public UseRequirement
{
public:
- EnabledUseRequirement(const std::string &, const UseFlagName &);
+ EnabledUseRequirement(const UseFlagName &);
~EnabledUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -62,7 +66,7 @@ namespace
public UseRequirement
{
public:
- DisabledUseRequirement(const std::string &, const UseFlagName &);
+ DisabledUseRequirement(const UseFlagName &);
~DisabledUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -76,7 +80,7 @@ namespace
const std::tr1::shared_ptr<const PackageID> _id;
public:
- ConditionalUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ ConditionalUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~ConditionalUseRequirement();
const std::tr1::shared_ptr<const PackageID> package_id() const PALUDIS_ATTRIBUTE((warn_unused_result))
@@ -89,7 +93,7 @@ namespace
public ConditionalUseRequirement
{
public:
- IfMineThenUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ IfMineThenUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~IfMineThenUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -100,7 +104,7 @@ namespace
public ConditionalUseRequirement
{
public:
- IfNotMineThenUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ IfNotMineThenUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~IfNotMineThenUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -111,7 +115,7 @@ namespace
public ConditionalUseRequirement
{
public:
- IfMineThenNotUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ IfMineThenNotUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~IfMineThenNotUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -122,7 +126,7 @@ namespace
public ConditionalUseRequirement
{
public:
- IfNotMineThenNotUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ IfNotMineThenNotUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~IfNotMineThenNotUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -133,7 +137,7 @@ namespace
public ConditionalUseRequirement
{
public:
- EqualUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ EqualUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~EqualUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
@@ -144,28 +148,136 @@ namespace
public ConditionalUseRequirement
{
public:
- NotEqualUseRequirement(const std::string &, const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
+ NotEqualUseRequirement(const UseFlagName &, const std::tr1::shared_ptr<const PackageID> &);
~NotEqualUseRequirement();
virtual bool requirement_met(const Environment * const, const PackageID &) const PALUDIS_ATTRIBUTE((warn_unused_result));
virtual const std::string as_human_string() const PALUDIS_ATTRIBUTE((warn_unused_result));
};
-}
-UseRequirement::UseRequirement(const std::string & r, const UseFlagName & f) :
- _raw(r),
- _name(f)
-{
+ class UseRequirements :
+ public AdditionalPackageDepSpecRequirement
+ {
+ private:
+ std::string _raw;
+ std::vector<std::tr1::shared_ptr<const UseRequirement> > _reqs;
+
+ public:
+ UseRequirements(const std::string & r) :
+ _raw(r)
+ {
+ }
+
+ virtual bool requirement_met(const Environment * const env, const PackageID & id) const
+ {
+ using namespace std::tr1::placeholders;
+ return _reqs.end() == std::find_if(_reqs.begin(), _reqs.end(), std::tr1::bind(
+ std::logical_not<bool>(), std::tr1::bind(
+ &UseRequirement::requirement_met, _1, env, std::tr1::cref(id))));
+ }
+
+ virtual const std::string as_human_string() const
+ {
+ return join(_reqs.begin(), _reqs.end(), "; ", std::tr1::mem_fn(&UseRequirement::as_human_string));
+ }
+
+ virtual const std::string as_raw_string() const
+ {
+ return _raw;
+ }
+
+ void add_requirement(const std::tr1::shared_ptr<const UseRequirement> & req)
+ {
+ _reqs.push_back(req);
+ }
+ };
+
+ std::tr1::shared_ptr<const UseRequirement>
+ parse_one_use_requirement(const std::string & s, std::string & flag,
+ const std::tr1::shared_ptr<const PackageID> & id, const ELikeUseRequirementOptions & options)
+ {
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+
+ if ('=' == flag.at(flag.length() - 1))
+ {
+ if ((! options[euro_allow_self_deps]) || (! id))
+ throw ELikeUseRequirementError(s, "Cannot use [use=] here");
+
+ flag.erase(flag.length() - 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+ std::string::size_type not_position(options[euro_portage_syntax] ? 0 : flag.length() - 1);
+ if ('!' == flag.at(not_position))
+ {
+ flag.erase(not_position, 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+ return make_shared_ptr(new NotEqualUseRequirement(UseFlagName(flag), id));
+ }
+ else
+ return make_shared_ptr(new EqualUseRequirement(UseFlagName(flag), id));
+ }
+ else if ('?' == flag.at(flag.length() - 1))
+ {
+ if ((! options[euro_allow_self_deps]) || (! id))
+ throw ELikeUseRequirementError(s, "Cannot use [use?] here");
+
+ flag.erase(flag.length() - 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+ std::string::size_type not_position(options[euro_portage_syntax] ? 0 : flag.length() - 1);
+ if ('!' == flag.at(not_position))
+ {
+ flag.erase(not_position, 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+ if (options[euro_portage_syntax])
+ return make_shared_ptr(new IfNotMineThenNotUseRequirement(UseFlagName(flag), id));
+ else if ('-' == flag.at(0))
+ {
+ flag.erase(0, 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+
+ return make_shared_ptr(new IfNotMineThenNotUseRequirement(UseFlagName(flag), id));
+ }
+ else
+ return make_shared_ptr(new IfNotMineThenUseRequirement(UseFlagName(flag), id));
+ }
+ else
+ {
+ if (! options[euro_portage_syntax] && '-' == flag.at(0))
+ {
+ flag.erase(0, 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+
+ return make_shared_ptr(new IfMineThenNotUseRequirement(UseFlagName(flag), id));
+ }
+ else
+ return make_shared_ptr(new IfMineThenUseRequirement(UseFlagName(flag), id));
+ }
+ }
+ else if ('-' == flag.at(0))
+ {
+ flag.erase(0, 1);
+ if (flag.empty())
+ throw ELikeUseRequirementError(s, "Invalid [] contents");
+ return make_shared_ptr(new DisabledUseRequirement(UseFlagName(flag)));
+ }
+ else
+ return make_shared_ptr(new EnabledUseRequirement(UseFlagName(flag)));
+ }
}
-const std::string
-UseRequirement::as_raw_string() const
+UseRequirement::UseRequirement(const UseFlagName & f) :
+ _name(f)
{
- return _raw;
}
-EnabledUseRequirement::EnabledUseRequirement(const std::string & s, const UseFlagName & n) :
- UseRequirement(s, n)
+EnabledUseRequirement::EnabledUseRequirement(const UseFlagName & n) :
+ UseRequirement(n)
{
}
@@ -185,8 +297,8 @@ EnabledUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' enabled";
}
-DisabledUseRequirement::DisabledUseRequirement(const std::string & s, const UseFlagName & n) :
- UseRequirement(s, n)
+DisabledUseRequirement::DisabledUseRequirement(const UseFlagName & n) :
+ UseRequirement(n)
{
}
@@ -206,9 +318,8 @@ DisabledUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' disabled";
}
-ConditionalUseRequirement::ConditionalUseRequirement(const std::string & s,
- const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- UseRequirement(s, n),
+ConditionalUseRequirement::ConditionalUseRequirement(const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
+ UseRequirement(n),
_id(i)
{
}
@@ -217,9 +328,9 @@ ConditionalUseRequirement::~ConditionalUseRequirement()
{
}
-IfMineThenUseRequirement::IfMineThenUseRequirement(const std::string & s,
+IfMineThenUseRequirement::IfMineThenUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -239,9 +350,9 @@ IfMineThenUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' enabled if it is enabled for '" + stringify(*package_id()) + "'";
}
-IfNotMineThenUseRequirement::IfNotMineThenUseRequirement(const std::string & s,
+IfNotMineThenUseRequirement::IfNotMineThenUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -261,9 +372,9 @@ IfNotMineThenUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' enabled if it is disabled for '" + stringify(*package_id()) + "'";
}
-IfMineThenNotUseRequirement::IfMineThenNotUseRequirement(const std::string & s,
+IfMineThenNotUseRequirement::IfMineThenNotUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -283,9 +394,9 @@ IfMineThenNotUseRequirement::requirement_met(const Environment * const env, cons
return ! env->query_use(flag(), *package_id()) || ! env->query_use(flag(), pkg);
}
-IfNotMineThenNotUseRequirement::IfNotMineThenNotUseRequirement(const std::string & s,
+IfNotMineThenNotUseRequirement::IfNotMineThenNotUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -305,9 +416,9 @@ IfNotMineThenNotUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' disabled if it is disabled for '" + stringify(*package_id()) + "'";
}
-EqualUseRequirement::EqualUseRequirement(const std::string & s,
+EqualUseRequirement::EqualUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -327,9 +438,9 @@ EqualUseRequirement::as_human_string() const
return "Flag '" + stringify(flag()) + "' enabled or disabled like it is for '" + stringify(*package_id()) + "'";
}
-NotEqualUseRequirement::NotEqualUseRequirement(const std::string & s,
+NotEqualUseRequirement::NotEqualUseRequirement(
const UseFlagName & n, const std::tr1::shared_ptr<const PackageID> & i) :
- ConditionalUseRequirement(s, n, i)
+ ConditionalUseRequirement(n, i)
{
}
@@ -360,71 +471,26 @@ paludis::parse_elike_use_requirement(const std::string & s,
{
Context context("When parsing use requirement '" + s + "':");
- std::string flag(s), raw_flag("[" + s + "]");
- if ('=' == flag.at(flag.length() - 1))
+ std::tr1::shared_ptr<UseRequirements> result(new UseRequirements("[" + s + "]"));
+ if (options[euro_portage_syntax])
{
- if ((! options[euro_allow_self_deps]) || (! id))
- throw ELikeUseRequirementError(s, "Cannot use [use=] here");
-
- flag.erase(flag.length() - 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
- if ('!' == flag.at(flag.length() - 1))
+ std::string::size_type pos(0);
+ for (;;)
{
- flag.erase(flag.length() - 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
- return make_shared_ptr(new NotEqualUseRequirement(raw_flag, UseFlagName(flag), id));
+ std::string::size_type comma(s.find(',', pos));
+ std::string flag(s.substr(pos, std::string::npos == comma ? comma : comma - pos));
+ result->add_requirement(parse_one_use_requirement(s, flag, id, options));
+ if (std::string::npos == comma)
+ break;
+ pos = comma + 1;
}
- else
- return make_shared_ptr(new EqualUseRequirement(raw_flag, UseFlagName(flag), id));
}
- else if ('?' == flag.at(flag.length() - 1))
- {
- if ((! options[euro_allow_self_deps]) || (! id))
- throw ELikeUseRequirementError(s, "Cannot use [use?] here");
-
- flag.erase(flag.length() - 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
- if ('!' == flag.at(flag.length() - 1))
- {
- flag.erase(flag.length() - 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
- if ('-' == flag.at(0))
- {
- flag.erase(0, 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
-
- return make_shared_ptr(new IfNotMineThenNotUseRequirement(raw_flag, UseFlagName(flag), id));
- }
- else
- return make_shared_ptr(new IfNotMineThenUseRequirement(raw_flag, UseFlagName(flag), id));
- }
- else
- {
- if ('-' == flag.at(0))
- {
- flag.erase(0, 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
-
- return make_shared_ptr(new IfMineThenNotUseRequirement(raw_flag, UseFlagName(flag), id));
- }
- else
- return make_shared_ptr(new IfMineThenUseRequirement(raw_flag, UseFlagName(flag), id));
- }
- }
- else if ('-' == flag.at(0))
+ else
{
- flag.erase(0, 1);
- if (flag.empty())
- throw ELikeUseRequirementError(s, "Invalid [] contents");
- return make_shared_ptr(new DisabledUseRequirement(raw_flag, UseFlagName(flag)));
+ std::string flag(s);
+ result->add_requirement(parse_one_use_requirement(s, flag, id, options));
}
- else
- return make_shared_ptr(new EnabledUseRequirement(raw_flag, UseFlagName(flag)));
+
+ return result;
}
diff --git a/paludis/elike_use_requirement.se b/paludis/elike_use_requirement.se
index e1c114a..4e61a01 100644
--- a/paludis/elike_use_requirement.se
+++ b/paludis/elike_use_requirement.se
@@ -7,5 +7,6 @@ make_enum_ELikeUseRequirementOption()
want_destringify
key euro_allow_self_deps "Allow self-dependent use deps"
+ key euro_portage_syntax "Parse using Portage syntax"
}
diff --git a/paludis/repositories/e/eapis/exheres-0.conf b/paludis/repositories/e/eapis/exheres-0.conf
index af0c1bc..8c75f1e 100644
--- a/paludis/repositories/e/eapis/exheres-0.conf
+++ b/paludis/repositories/e/eapis/exheres-0.conf
@@ -5,8 +5,8 @@
exported_name = exheres-0
can_be_pbin = true
-package_dep_spec_parse_options = allow_slot_deps allow_square_bracket_deps \
- allow_tilde_greater_deps strict_parsing \
+package_dep_spec_parse_options = allow_slot_deps allow_use_deps \
+ allow_ranged_deps allow_tilde_greater_deps strict_parsing \
allow_slot_equal_deps allow_slot_star_deps
dependency_spec_tree_parse_options = disallow_any_use uri_supports_arrow
iuse_flag_parse_options = strict_parsing
diff --git a/paludis/repositories/e/eapis/kdebuild-1.conf b/paludis/repositories/e/eapis/kdebuild-1.conf
index 8d872e7..9c89cda 100644
--- a/paludis/repositories/e/eapis/kdebuild-1.conf
+++ b/paludis/repositories/e/eapis/kdebuild-1.conf
@@ -7,7 +7,7 @@ exported_name = kdebuild-1
can_be_pbin = false
package_dep_spec_parse_options = allow_slot_deps allow_slot_deps allow_slot_equal_deps \
- allow_slot_star_deps allow_square_bracket_deps
+ allow_slot_star_deps allow_use_deps allow_ranged_deps
ebuild_module_suffixes = kdebuild-1 1 0
utility_path_suffixes = kdebuild-1 1 0
dependency_spec_tree_parse_options = uri_supports_arrow
diff --git a/paludis/repositories/e/eapis/paludis-1.conf b/paludis/repositories/e/eapis/paludis-1.conf
index f242ec8..31b26c9 100644
--- a/paludis/repositories/e/eapis/paludis-1.conf
+++ b/paludis/repositories/e/eapis/paludis-1.conf
@@ -5,7 +5,7 @@
exported_name = paludis-1
can_be_pbin = true
-package_dep_spec_parse_options = allow_slot_deps allow_square_bracket_deps \
+package_dep_spec_parse_options = allow_slot_deps allow_use_deps allow_ranged_deps \
allow_repository_deps allow_tilde_greater_deps strict_parsing \
allow_slot_equal_deps allow_slot_star_deps
dependency_spec_tree_parse_options = disallow_any_use uri_supports_arrow
diff --git a/paludis/repositories/fake/dep_parser.cc b/paludis/repositories/fake/dep_parser.cc
index 389b40b..3aeb5b0 100644
--- a/paludis/repositories/fake/dep_parser.cc
+++ b/paludis/repositories/fake/dep_parser.cc
@@ -62,7 +62,7 @@ namespace
{
PackageDepSpec p(parse_elike_package_dep_spec(s, ELikePackageDepSpecOptions() + epdso_allow_slot_deps
+ epdso_allow_slot_star_deps + epdso_allow_slot_equal_deps + epdso_allow_repository_deps
- + epdso_allow_square_bracket_deps + epdso_allow_tilde_greater_deps
+ + epdso_allow_use_deps + epdso_allow_ranged_deps + epdso_allow_tilde_greater_deps
+ epdso_strict_parsing, id));
(*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, PackageDepSpec>(make_shared_ptr(new PackageDepSpec(p)))));
}
@@ -77,7 +77,7 @@ namespace
make_shared_ptr(new PackageDepSpec(parse_elike_package_dep_spec(s.substr(1),
ELikePackageDepSpecOptions() + epdso_allow_slot_deps
+ epdso_allow_slot_star_deps + epdso_allow_slot_equal_deps + epdso_allow_repository_deps
- + epdso_allow_square_bracket_deps + epdso_allow_tilde_greater_deps
+ + epdso_allow_use_deps + epdso_allow_ranged_deps + epdso_allow_tilde_greater_deps
+ epdso_strict_parsing, id)))));
(*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, BlockDepSpec>(b)));
}