[paludis-commits] paludis.git (master) -- e16130d by David Leverton

git at git.pioto.org git at git.pioto.org
Sun Aug 3 13:56:37 EDT 2008


Module:    paludis.git
Branch:    master
Commit:    e16130d830bf6911e21b6c2d9c1e2d9672d2fcf0
URL:       http://git.pioto.org/?p=paludis.git;a=commit;h=e16130d830bf6911e21b6c2d9c1e2d9672d2fcf0

Author:    David Leverton <levertond at googlemail.com>
Committer: David Leverton <levertond at googlemail.com>
Date:      Sun Aug  3 16:53:22 2008 +0100

----

Support Portage-syntax for USE deps.

----

 paludis/elike_package_dep_spec.cc            |   39 +++-
 paludis/elike_package_dep_spec.se            |    4 +-
 paludis/elike_use_requirement.cc             |  268 ++++++++++++++++----------
 paludis/elike_use_requirement.se             |    1 +
 paludis/repositories/e/eapis/exheres-0.conf  |    4 +-
 paludis/repositories/e/eapis/kdebuild-1.conf |    2 +-
 paludis/repositories/e/eapis/paludis-1.conf  |    2 +-
 paludis/repositories/fake/dep_parser.cc      |    4 +-
 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)));
         }
---


More information about the paludis-commits mailing list