diff options
author | 2009-11-03 15:27:47 +0000 | |
---|---|---|
committer | 2009-11-03 15:32:20 +0000 | |
commit | 5dadbad7bdf301228b2869c76b1afb9f99da747a (patch) | |
tree | f90355726f182a22a000ae5a892cec8e87d72036 | |
parent | ee4023b1945fdefa9ebcdc81b4810896b7ee3fae (diff) | |
download | paludis-5dadbad7bdf301228b2869c76b1afb9f99da747a.tar.gz paludis-5dadbad7bdf301228b2869c76b1afb9f99da747a.tar.xz |
Explain EUSER better for paludis -i foo::/
-rw-r--r-- | doc/faq/index.html.part | 2 | ||||
-rw-r--r-- | doc/faq/operation.html.part | 8 | ||||
-rw-r--r-- | paludis/install_task.cc | 17 |
3 files changed, 27 insertions, 0 deletions
diff --git a/doc/faq/index.html.part b/doc/faq/index.html.part index ab270d7fc..2b43a0928 100644 --- a/doc/faq/index.html.part +++ b/doc/faq/index.html.part @@ -44,6 +44,8 @@ functionality. Pestering anyone about these is liable to get you hurt a lot.</p> <li><a href="operation.html#info">Get package information for a bug report</a></li> <li><a href="operation.html#arrows">What do those fancy arrows when merging things mean?</a></li> <li><a href="operation.html#updates">Profiles Updates for Package Moves and Slot Moves</a></li> + <li><a href="operation.html#repospecs">I can't install <code>*/*::installed</code> or + <code>*/*::overlay-></code></a></li> </ul> <h2>Stricter than Portage</h2> diff --git a/doc/faq/operation.html.part b/doc/faq/operation.html.part index b408f6ff8..7cd60893f 100644 --- a/doc/faq/operation.html.part +++ b/doc/faq/operation.html.part @@ -8,6 +8,8 @@ <li><a href="operation.html#info">Get package information for a bug report</a></li> <li><a href="operation.html#arrows">What do those fancy arrows when merging things mean?</a></li> <li><a href="operation.html#updates">Profiles Updates for Package Moves and Slot Moves</a></li> + <li><a href="operation.html#repospecs">I can't install <code>*/*::installed</code> or + <code>*/*::overlay-></code></a></li> </ul> <h2 id="updatingdepends">Paludis does not update DEPENDs of already installed packages</h2> @@ -99,3 +101,9 @@ variable to <code>yes</code> and then sync to perform updates.</p> the update. In this situation, you should generally manually uninstall the older of <code>foo</code> or <code>bar</code>.</p> +<h2 id="repospecs">I can't install <code>*/*::installed</code> or <code>*/*::overlay-></code></h2> + +<p>You can't install (or reinstall) a package ID that is already installed. The <code>foo/bar-1.23</code> you have +installed has absolutely nothing whatsoever to do with any other <code>foo/bar-1.23</code>, and by specifying +<code>::installed</code> or <code>::overlay-></code> you are specifically saying "give me the installed ID".</p> + diff --git a/paludis/install_task.cc b/paludis/install_task.cc index 5d372ff36..95435c23b 100644 --- a/paludis/install_task.cc +++ b/paludis/install_task.cc @@ -468,6 +468,23 @@ InstallTask::_add_target(const std::string & target) _imp->env, UserPackageDepSpecOptions() + updso_throw_if_set + updso_allow_wildcards, filter::SupportsAction<InstallAction>()))); + bool spec_is_installed(false); + + if (spec->in_repository_ptr() && + _imp->env->package_database()->has_repository_named(*spec->in_repository_ptr()) && + _imp->env->package_database()->fetch_repository(*spec->in_repository_ptr())->installed_root_key()) + spec_is_installed = true; + else if (spec->from_repository_ptr()) + spec_is_installed = true; + else if (spec->installed_at_path_ptr()) + spec_is_installed = true; + + if (spec_is_installed) + Log::get_instance()->message("install_task.installed_spec", ll_warning, lc_context) + << "Target '" << target << "' appears to make use of ::repository restrictions " + << "that restrict to an installed repository. This probably does not do what you " + << "think it does. Consult the FAQ for an explanation"; + if (_imp->had_set_targets) throw HadBothPackageAndSetTargets(); _imp->had_package_targets = true; |