aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-01-09 19:15:12 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-01-09 19:15:12 +0000
commit335d1ef199ef041ece93401ac709a6bf215a981b (patch)
tree20bf338d6f52b4b4d8a5999e3856cb3c5b0d794d
parent3c502ca3ff22aea056348040fe8fd47e94baf346 (diff)
downloadpaludis-335d1ef199ef041ece93401ac709a6bf215a981b.tar.gz
paludis-335d1ef199ef041ece93401ac709a6bf215a981b.tar.xz
Crude phases support.
Fixes: ticket:412
-rw-r--r--paludis/action-fwd.hh6
-rw-r--r--paludis/action.cc5
-rw-r--r--paludis/action.hh4
-rw-r--r--paludis/action.se21
-rw-r--r--paludis/args/install_args_group.cc35
-rw-r--r--paludis/args/install_args_group.hh14
-rw-r--r--paludis/files.m42
-rw-r--r--paludis/install_task.cc132
-rw-r--r--paludis/install_task.hh16
-rw-r--r--paludis/repositories/e/e_repository_TEST.cc23
-rw-r--r--paludis/repositories/e/eapis/0.conf15
-rw-r--r--paludis/repositories/e/eapis/2.conf17
-rw-r--r--paludis/repositories/e/eapis/exheres-0.conf19
-rw-r--r--paludis/repositories/e/eapis/kdebuild-1.conf15
-rw-r--r--paludis/repositories/e/eapis/paludis-1.conf15
-rw-r--r--paludis/repositories/e/eapis/pbin-1+0.conf18
-rw-r--r--paludis/repositories/e/eapis/pbin-1+1.conf18
-rw-r--r--paludis/repositories/e/eapis/pbin-1+exheres-0.conf18
-rw-r--r--paludis/repositories/e/eapis/pbin-1+paludis-1.conf18
-rw-r--r--paludis/repositories/e/ebuild_entries.cc25
-rw-r--r--paludis/repositories/e/exndbam_repository_TEST.cc10
-rw-r--r--paludis/repositories/e/vdb_repository_TEST.cc23
-rw-r--r--paludis/repositories/unpackaged/installed_repository_TEST.cc14
-rw-r--r--paludis/repositories/unpackaged/unpackaged_repository_TEST.cc11
-rw-r--r--python/action.cc8
-rw-r--r--ruby/action.cc8
-rw-r--r--src/output/console_install_task.cc31
-rw-r--r--src/output/console_install_task.hh8
28 files changed, 441 insertions, 108 deletions
diff --git a/paludis/action-fwd.hh b/paludis/action-fwd.hh
index a18d890..2881e3d 100644
--- a/paludis/action-fwd.hh
+++ b/paludis/action-fwd.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -22,6 +22,7 @@
#include <paludis/util/attributes.hh>
#include <tr1/memory>
+#include <iosfwd>
/** \file
* Forward declarations for paludis/action.hh .
@@ -57,6 +58,9 @@ namespace paludis
struct UninstallActionOptions;
struct FetchActionFailure;
+
+#include <paludis/action-se.hh>
+
}
#endif
diff --git a/paludis/action.cc b/paludis/action.cc
index dbe4e27..7fa330c 100644
--- a/paludis/action.cc
+++ b/paludis/action.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -23,9 +23,12 @@
#include <paludis/util/stringify.hh>
#include <paludis/util/sequence-impl.hh>
#include <paludis/util/wrapped_forward_iterator-impl.hh>
+#include <ostream>
using namespace paludis;
+#include <paludis/action-se.cc>
+
Action::~Action()
{
}
diff --git a/paludis/action.hh b/paludis/action.hh
index 5577872..4cbbd1c 100644
--- a/paludis/action.hh
+++ b/paludis/action.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -59,6 +59,7 @@ namespace paludis
struct safe_resume;
struct target_file;
struct used_this_for_config_protect;
+ struct want_phase;
}
/**
@@ -97,6 +98,7 @@ namespace paludis
{
NamedValue<n::destination, std::tr1::shared_ptr<Repository> > destination;
NamedValue<n::used_this_for_config_protect, std::tr1::function<void (const std::string &)> > used_this_for_config_protect;
+ NamedValue<n::want_phase, std::tr1::function<WantPhase (const std::string &)> > want_phase;
};
/**
diff --git a/paludis/action.se b/paludis/action.se
new file mode 100644
index 0000000..5983830
--- /dev/null
+++ b/paludis/action.se
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et ft=sh :
+
+make_enum_WantPhase()
+{
+ prefix wp
+
+ key wp_yes "Yes, run the phase"
+ key wp_skip "Skip the phase"
+ key wp_abort "Abort"
+
+ doxygen_comment << "END"
+ /**
+ * Whether or not we want a phase for an InstallAction.
+ *
+ * \see InstallActionOptions
+ * \ingroup g_repository
+ */
+END
+}
+
diff --git a/paludis/args/install_args_group.cc b/paludis/args/install_args_group.cc
index b5730cc..d22d2e0 100644
--- a/paludis/args/install_args_group.cc
+++ b/paludis/args/install_args_group.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2005, 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2005, 2006, 2007, 2008, 2009 Ciaran McCreesh
* Copyright (c) 2007 David Leverton
*
* This file is part of the Paludis package manager. Paludis is free software;
@@ -65,7 +65,17 @@ InstallArgsGroup::InstallArgsGroup(ArgsHandler * h, const std::string & our_name
("if-independent", "If independent of failed and skipped packages")
("always", "Always (UNSAFE)"),
"if-fetch-only"),
- a_continue_on_eroyf(&a_continue_on_failure, "continue-on-eroyf", true)
+ a_continue_on_eroyf(&a_continue_on_failure, "continue-on-eroyf", true),
+ a_skip_phase(this, "skip-phase", '\0', "Skip phases with a given name (e.g. init, preinst, unpack, merge, strip). Dangerous."),
+ a_abort_at_phase(this, "abort-at-phase", '\0', "Abort when a phase with a given name is encountered."),
+ a_skip_until_phase(this, "skip-until-phase", '\0', "Skip all phases until a phase with a given name is encountered. Dangerous."),
+ a_change_phases_for(this, "change-phases-for", '\0', "Control to which package or packages options --" + a_skip_phase.long_name() + ", --"
+ + a_skip_until_phase.long_name() + " and --" + a_skip_until_phase.long_name() + " apply.",
+ args::EnumArg::EnumArgOptions
+ ("all", "All packages")
+ ("first", "Only the first package on the list")
+ ("last", "Only the last package on the list"),
+ "all")
{
}
@@ -128,6 +138,27 @@ InstallArgsGroup::populate_install_task(const Environment *, InstallTask & task)
task.set_continue_on_failure(itcof_always);
else
throw args::DoHelp("bad value for --continue-on-failure");
+
+ if (a_change_phases_for.argument() == "all")
+ task.set_phase_options_apply_to_all(true);
+ else if (a_change_phases_for.argument() == "first")
+ task.set_phase_options_apply_to_first(true);
+ else if (a_change_phases_for.argument() == "last")
+ task.set_phase_options_apply_to_last(true);
+ else
+ throw args::DoHelp("bad value for --item-for-phase-options");
+
+ std::tr1::shared_ptr<Set<std::string> > skip_phases(new Set<std::string>);
+ std::copy(a_skip_phase.begin_args(), a_skip_phase.end_args(), skip_phases->inserter());
+ task.set_skip_phases(skip_phases);
+
+ std::tr1::shared_ptr<Set<std::string> > abort_at_phases(new Set<std::string>);
+ std::copy(a_abort_at_phase.begin_args(), a_abort_at_phase.end_args(), abort_at_phases->inserter());
+ task.set_abort_at_phases(abort_at_phases);
+
+ std::tr1::shared_ptr<Set<std::string> > skip_until_phases(new Set<std::string>);
+ std::copy(a_skip_until_phase.begin_args(), a_skip_until_phase.end_args(), skip_until_phases->inserter());
+ task.set_skip_until_phases(skip_until_phases);
}
bool
diff --git a/paludis/args/install_args_group.hh b/paludis/args/install_args_group.hh
index fa7dfea..dceca9b 100644
--- a/paludis/args/install_args_group.hh
+++ b/paludis/args/install_args_group.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh
* Copyright (c) 2007 David Leverton
*
* This file is part of the Paludis package manager. Paludis is free software;
@@ -91,6 +91,18 @@ namespace paludis
paludis::args::EnumArg a_continue_on_failure;
paludis::args::AliasArg a_continue_on_eroyf;
+ /// --skip-phase
+ paludis::args::StringSetArg a_skip_phase;
+
+ /// --abort-at-phase
+ paludis::args::StringSetArg a_abort_at_phase;
+
+ /// --skip-until-phase
+ paludis::args::StringSetArg a_skip_until_phase;
+
+ /// --change-phases-for
+ paludis::args::EnumArg a_change_phases_for;
+
/// }
/**
diff --git a/paludis/files.m4 b/paludis/files.m4
index 0d0c45a..98e841c 100644
--- a/paludis/files.m4
+++ b/paludis/files.m4
@@ -9,7 +9,7 @@ dnl `test', `impl', `testscript'. Note that there isn't much error checking done
dnl on this file at present...
add(`about', `hh', `test')
-add(`action', `hh', `cc', `fwd')
+add(`action', `hh', `cc', `fwd', `se')
add(`action_names', `hh', `cc', `fwd')
add(`choice', `hh', `cc', `fwd')
add(`contents', `hh', `cc', `fwd')
diff --git a/paludis/install_task.cc b/paludis/install_task.cc
index 8cac0a2..ac51cec 100644
--- a/paludis/install_task.cc
+++ b/paludis/install_task.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -62,6 +62,64 @@ template class WrappedForwardIterator<InstallTask::TargetsConstIteratorTag, cons
#include <paludis/install_task-se.cc>
+namespace
+{
+ WantPhase want_phase_function(
+ InstallTask * const task,
+ const std::tr1::shared_ptr<const Set<std::string> > & abort_at_phases,
+ const std::tr1::shared_ptr<const Set<std::string> > & skip_phases,
+ const std::tr1::shared_ptr<const Set<std::string> > & skip_until_phases,
+ bool phase_options_apply_to_first,
+ bool phase_options_apply_to_last,
+ bool phase_options_apply_to_all,
+ bool is_first, bool is_last, bool & done_any, const std::string & phase)
+ {
+ bool apply(false);
+
+ if (is_first && phase_options_apply_to_first)
+ apply = true;
+
+ if (is_last && phase_options_apply_to_last)
+ apply = true;
+
+ if (phase_options_apply_to_all)
+ apply = true;
+
+ if (apply)
+ {
+ if (abort_at_phases->end() != abort_at_phases->find(phase))
+ {
+ task->on_phase_abort(phase);
+ return wp_abort;
+ }
+
+ if (! skip_until_phases->empty())
+ if (! done_any)
+ if (skip_until_phases->end() == skip_until_phases->find(phase))
+ {
+ task->on_phase_skip_until(phase);
+ return wp_skip;
+ }
+
+ /* make --skip-until-phase foo --skip-phase foo work */
+ done_any = true;
+
+ if (skip_phases->end() != skip_phases->find(phase))
+ {
+ task->on_phase_skip(phase);
+ return wp_skip;
+ }
+
+ task->on_phase_proceed_conditionally(phase);
+ }
+ else
+ task->on_phase_proceed_unconditionally(phase);
+
+ done_any = true;
+ return wp_yes;
+ }
+}
+
namespace paludis
{
template<>
@@ -89,6 +147,14 @@ namespace paludis
InstallTaskContinueOnFailure continue_on_failure;
+ std::tr1::shared_ptr<const Set<std::string> > abort_at_phases;
+ std::tr1::shared_ptr<const Set<std::string> > skip_phases;
+ std::tr1::shared_ptr<const Set<std::string> > skip_until_phases;
+
+ bool phase_options_apply_to_first;
+ bool phase_options_apply_to_last;
+ bool phase_options_apply_to_all;
+
bool had_resolution_failures;
Implementation<InstallTask>(Environment * const e, const DepListOptions & o,
@@ -107,7 +173,8 @@ namespace paludis
value_for<n::destination>(std::tr1::shared_ptr<Repository>()),
value_for<n::used_this_for_config_protect>(std::tr1::bind(
&Implementation<InstallTask>::assign_config_protect,
- this, std::tr1::placeholders::_1))
+ this, std::tr1::placeholders::_1)),
+ value_for<n::want_phase>(std::tr1::function<WantPhase (const std::string &)>())
)),
config_protect(""),
targets(new SetSpecTree(make_shared_ptr(new AllDepSpec))),
@@ -119,6 +186,12 @@ namespace paludis
had_package_targets(false),
override_target_type(false),
continue_on_failure(itcof_if_fetch_only),
+ abort_at_phases(new Set<std::string>),
+ skip_phases(new Set<std::string>),
+ skip_until_phases(new Set<std::string>),
+ phase_options_apply_to_first(false),
+ phase_options_apply_to_last(false),
+ phase_options_apply_to_all(false),
had_resolution_failures(false)
{
}
@@ -659,7 +732,7 @@ InstallTask::_pretend()
}
void
-InstallTask::_one(const DepList::Iterator dep, const int x, const int y, const int s, const int f)
+InstallTask::_one(const DepList::Iterator dep, const int x, const int y, const int s, const int f, const bool is_first, const bool is_last)
{
std::string cpvr(stringify(*dep->package_id()));
@@ -705,7 +778,13 @@ InstallTask::_one(const DepList::Iterator dep, const int x, const int y, const i
if (! _imp->fetch_only)
{
+ bool done_any(false);
_imp->install_options.destination() = dep->destination();
+ _imp->install_options.want_phase() = std::tr1::bind(&want_phase_function, this,
+ _imp->abort_at_phases, _imp->skip_phases, _imp->skip_until_phases,
+ _imp->phase_options_apply_to_first, _imp->phase_options_apply_to_last, _imp->phase_options_apply_to_all,
+ is_first, is_last, std::tr1::ref(done_any),
+ std::tr1::placeholders::_1);
InstallAction install_action(_imp->install_options);
dep->package_id()->perform_action(install_action);
}
@@ -870,10 +949,15 @@ InstallTask::_main_actions()
/* fetch / install our entire list */
int x(0), y(0), s(0), f(0);
+ bool is_first(true), is_last(false);
+ DepList::Iterator dep_last_package(_imp->dep_list.end());
for (DepList::Iterator dep(_imp->dep_list.begin()), dep_end(_imp->dep_list.end()) ;
dep != dep_end ; ++dep)
if (dep->kind() == dlk_package)
+ {
+ dep_last_package = dep;
++y;
+ }
for (DepList::Iterator dep(_imp->dep_list.begin()), dep_end(_imp->dep_list.end()) ;
dep != dep_end ; ++dep)
@@ -881,6 +965,8 @@ InstallTask::_main_actions()
if (dlk_package != dep->kind())
continue;
+ is_last = (dep == dep_last_package);
+
++x;
if (had_action_failures())
@@ -929,7 +1015,7 @@ InstallTask::_main_actions()
try
{
- _one(dep, x, y, s, f);
+ _one(dep, x, y, s, f, is_first, is_last);
}
catch (const InstallActionError & e)
{
@@ -943,6 +1029,8 @@ InstallTask::_main_actions()
on_fetch_action_error(e);
++f;
}
+
+ is_first = false;
}
/* go no further if we had failures */
@@ -1666,3 +1754,39 @@ InstallTask::fetch_action_options()
return _imp->fetch_options;
}
+void
+InstallTask::set_skip_phases(const std::tr1::shared_ptr<const Set<std::string> > & s)
+{
+ _imp->skip_phases = s;
+}
+
+void
+InstallTask::set_skip_until_phases(const std::tr1::shared_ptr<const Set<std::string> > & s)
+{
+ _imp->skip_until_phases = s;
+}
+
+void
+InstallTask::set_abort_at_phases(const std::tr1::shared_ptr<const Set<std::string> > & s)
+{
+ _imp->abort_at_phases = s;
+}
+
+void
+InstallTask::set_phase_options_apply_to_first(const bool b)
+{
+ _imp->phase_options_apply_to_first = b;
+}
+
+void
+InstallTask::set_phase_options_apply_to_last(const bool b)
+{
+ _imp->phase_options_apply_to_last = b;
+}
+
+void
+InstallTask::set_phase_options_apply_to_all(const bool b)
+{
+ _imp->phase_options_apply_to_all = b;
+}
+
diff --git a/paludis/install_task.hh b/paludis/install_task.hh
index 5a3566e..51a1100 100644
--- a/paludis/install_task.hh
+++ b/paludis/install_task.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -62,7 +62,7 @@ namespace paludis
void _display_task_list();
bool _pretend();
void _main_actions();
- void _one(const DepList::Iterator, const int, const int, const int, const int);
+ void _one(const DepList::Iterator, const int, const int, const int, const int, const bool is_first, const bool is_last);
void _display_failure_summary();
void _add_target(const std::string &);
@@ -100,6 +100,12 @@ namespace paludis
void set_add_to_world_spec(const std::string &);
void set_safe_resume(const bool);
void set_continue_on_failure(const InstallTaskContinueOnFailure);
+ void set_skip_phases(const std::tr1::shared_ptr<const Set<std::string> > &);
+ void set_skip_until_phases(const std::tr1::shared_ptr<const Set<std::string> > &);
+ void set_abort_at_phases(const std::tr1::shared_ptr<const Set<std::string> > &);
+ void set_phase_options_apply_to_first(const bool);
+ void set_phase_options_apply_to_last(const bool);
+ void set_phase_options_apply_to_all(const bool);
///\}
@@ -201,6 +207,12 @@ namespace paludis
virtual void on_install_action_error(const InstallActionError &) = 0;
virtual void on_fetch_action_error(const FetchActionError &) = 0;
+ virtual void on_phase_skip(const std::string & phase) = 0;
+ virtual void on_phase_abort(const std::string & phase) = 0;
+ virtual void on_phase_skip_until(const std::string & phase) = 0;
+ virtual void on_phase_proceed_conditionally(const std::string & phase) = 0;
+ virtual void on_phase_proceed_unconditionally(const std::string & phase) = 0;
+
///\}
///\name Logic
diff --git a/paludis/repositories/e/e_repository_TEST.cc b/paludis/repositories/e/e_repository_TEST.cc
index 8766699..a9f7ab4 100644
--- a/paludis/repositories/e/e_repository_TEST.cc
+++ b/paludis/repositories/e/e_repository_TEST.cc
@@ -70,6 +70,11 @@ namespace
void dummy_used_this_for_config_protect(const std::string &)
{
}
+
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
}
namespace test_cases
@@ -1094,7 +1099,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
#ifdef ENABLE_VIRTUALS_REPOSITORY
@@ -1348,7 +1354,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
{
@@ -1441,7 +1448,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
{
@@ -1564,7 +1572,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
{
@@ -1765,7 +1774,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
{
@@ -2357,7 +2367,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
diff --git a/paludis/repositories/e/eapis/0.conf b/paludis/repositories/e/eapis/0.conf
index ab27974..9a85763 100644
--- a/paludis/repositories/e/eapis/0.conf
+++ b/paludis/repositories/e/eapis/0.conf
@@ -101,17 +101,18 @@ ebuild_functions = \
src_compile src_install src_test src_unpack
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
skipname=setup skipifno=setup : loadenv setup saveenv ; \
- sandbox userpriv : loadenv unpack compile saveenv ; \
- sandbox userpriv optional_tests : loadenv test saveenv ; \
+ skipname=unpack sandbox userpriv : loadenv unpack saveenv ; \
+ skipname=compile sandbox userpriv : loadenv compile saveenv ; \
+ skipname=test sandbox userpriv optional_tests : loadenv test saveenv ; \
skipname=install skipifno=install sandbox : loadenv install saveenv ; \
- strip : ; \
+ skipname=strip strip : ; \
skipname=preinst skipifno=preinst prepost : loadenv preinst saveenv ; \
- merge : ; \
+ skipname=merge merge : ; \
skipname=postinst skipifno=postinst prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=tidyup : tidyup
ebuild_uninstall = \
skipname=killoldrm skipifno=prerm,postrm : killoldrm ; \
diff --git a/paludis/repositories/e/eapis/2.conf b/paludis/repositories/e/eapis/2.conf
index 36d401b..8512cdd 100644
--- a/paludis/repositories/e/eapis/2.conf
+++ b/paludis/repositories/e/eapis/2.conf
@@ -12,17 +12,20 @@ ebuild_module_suffixes = 2 1 0
ebuild_functions = ${ebuild_functions} src_prepare src_configure
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
skipname=setup skipifno=setup : loadenv setup saveenv ; \
- sandbox userpriv : loadenv unpack prepare configure compile saveenv ; \
- sandbox userpriv optional_tests : loadenv test saveenv ; \
+ skipname=unpack sandbox userpriv : loadenv unpack saveenv ; \
+ skipname=prepare sandbox userpriv : loadenv prepare saveenv ; \
+ skipname=configure sandbox userpriv : loadenv configure saveenv ; \
+ skipname=compile sandbox userpriv : loadenv compile saveenv ; \
+ skipname=test sandbox userpriv optional_tests : loadenv test saveenv ; \
skipname=install skipifno=install sandbox : loadenv install saveenv ; \
- strip : ; \
+ skipname=strip strip : ; \
skipname=preinst skipifno=preinst prepost : loadenv preinst saveenv ; \
- merge : ; \
+ skipname=merge merge : ; \
skipname=postinst skipifno=postinst prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=tidyup : tidyup
ebuild_new_upgrade_phase_order = true
diff --git a/paludis/repositories/e/eapis/exheres-0.conf b/paludis/repositories/e/eapis/exheres-0.conf
index 6c1a85f..233a9e6 100644
--- a/paludis/repositories/e/eapis/exheres-0.conf
+++ b/paludis/repositories/e/eapis/exheres-0.conf
@@ -105,17 +105,20 @@ ebuild_functions = \
src_compile src_configure src_install src_prepare src_test src_unpack
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
skipname=setup skipifno=setup sandbox : loadenv setup saveenv ; \
- sandbox userpriv : loadenv unpack prepare configure compile saveenv ; \
- sandbox userpriv recommended_tests : loadenv test saveenv ; \
- sandbox : loadenv install saveenv ; \
- strip : ; \
+ skipname=unpack sandbox userpriv : loadenv unpack saveenv ; \
+ skipname=prepare sandbox userpriv : loadenv prepare saveenv ; \
+ skipname=configure sandbox userpriv : loadenv configure saveenv ; \
+ skipname=compile sandbox userpriv : loadenv compile saveenv ; \
+ skipname=test sandbox userpriv recommended_tests : loadenv test saveenv ; \
+ skipnae=install sandbox : loadenv install saveenv ; \
+ skipname=strip strip : ; \
skipname=preinst skipifno=preinst sandbox : loadenv preinst saveenv ; \
- merge : ; \
+ skipname=merge merge : ; \
skipname=postinst skipifno=postinst sandbox : loadenv postinst saveenv ; \
- : tidyup
+ skipname=tidyup : tidyup
ebuild_uninstall = \
skipname=killoldrm skipifno=prerm,postrm : killoldrm ; \
diff --git a/paludis/repositories/e/eapis/kdebuild-1.conf b/paludis/repositories/e/eapis/kdebuild-1.conf
index c60eeae..54ac875 100644
--- a/paludis/repositories/e/eapis/kdebuild-1.conf
+++ b/paludis/repositories/e/eapis/kdebuild-1.conf
@@ -26,17 +26,18 @@ metadata_provide =
flat_list_minimum_size = -1
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
skipname=setup skipifno=setup : loadenv setup saveenv ; \
- sandbox userpriv : loadenv unpack compile saveenv ; \
- sandbox userpriv recommended_tests : loadenv test saveenv ; \
+ skipname=unpack sandbox userpriv : loadenv unpack saveenv ; \
+ skipname=compile sandbox userpriv : loadenv compile saveenv ; \
+ skipname=test sandbox userpriv recommended_tests : loadenv test saveenv ; \
skipname=install skipifno=install sandbox : loadenv install saveenv ; \
- strip : ; \
+ skipname=strip strip : ; \
skipname=preinst skipifno=preinst prepost : loadenv preinst saveenv ; \
- merge : ; \
+ skipname=merge merge : ; \
skipname=postinst skipifno=postinst prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=tidyup : tidyup
ebuild_info = \
: killoldmisc ; \
diff --git a/paludis/repositories/e/eapis/paludis-1.conf b/paludis/repositories/e/eapis/paludis-1.conf
index bafa714..081d58c 100644
--- a/paludis/repositories/e/eapis/paludis-1.conf
+++ b/paludis/repositories/e/eapis/paludis-1.conf
@@ -103,17 +103,18 @@ ebuild_functions = \
src_compile src_install src_test src_unpack
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
skipname=setup skipifno=setup sandbox : loadenv setup saveenv ; \
- sandbox userpriv : loadenv unpack compile saveenv ; \
- sandbox userpriv recommended_tests : loadenv test saveenv ; \
+ skipname=unpack sandbox userpriv : loadenv unpack saveenv ; \
+ skipname=compile sandbox userpriv : loadenv compile saveenv ; \
+ skipname=test sandbox userpriv recommended_tests : loadenv test saveenv ; \
skipname=install skipifno=install sandbox : loadenv install saveenv ; \
- strip : ; \
+ skipname=strip strip : ; \
skipname=preinst skipifno=preinst sandbox : loadenv preinst saveenv ; \
- merge : ; \
+ skipname=merge merge : ; \
skipname=postinst skipifno=postinst sandbox : loadenv postinst saveenv ; \
- : tidyup
+ skipname=tidyup : tidyup
ebuild_uninstall = \
skipname=killoldrm skipifno=prerm,postrm : killoldrm ; \
diff --git a/paludis/repositories/e/eapis/pbin-1+0.conf b/paludis/repositories/e/eapis/pbin-1+0.conf
index 8fe380c..6ff3de7 100644
--- a/paludis/repositories/e/eapis/pbin-1+0.conf
+++ b/paludis/repositories/e/eapis/pbin-1+0.conf
@@ -23,15 +23,15 @@ ignore_pivot_env_functions = \
ebuild_functions = ${ebuild_functions} builtin_pivotbin builtin_installbin
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
- : loadenv pivotbin setup saveenv ; \
- sandbox : loadenv installbin saveenv ; \
- strip : ; \
- prepost : loadenv preinst saveenv ; \
- merge : ; \
- prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
+ skipname=pivotbin : loadenv pivotbin setup saveenv ; \
+ skipname=installbin sandbox : loadenv installbin saveenv ; \
+ skipname=strip strip : ; \
+ skipname=preinst prepost : loadenv preinst saveenv ; \
+ skipname=merge merge : ; \
+ skipname=postinst prepost : loadenv postinst saveenv ; \
+ skipname=tidyup : tidyup
description_generated_using = Generated using
description_generated_time = Generated time
diff --git a/paludis/repositories/e/eapis/pbin-1+1.conf b/paludis/repositories/e/eapis/pbin-1+1.conf
index 4315adf..d417ed9 100644
--- a/paludis/repositories/e/eapis/pbin-1+1.conf
+++ b/paludis/repositories/e/eapis/pbin-1+1.conf
@@ -23,15 +23,15 @@ ignore_pivot_env_functions = \
ebuild_functions = ${ebuild_functions} builtin_pivotbin builtin_installbin
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
- : loadenv pivotbin setup saveenv ; \
- sandbox : loadenv installbin saveenv ; \
- strip : ; \
- prepost : loadenv preinst saveenv ; \
- merge : ; \
- prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
+ skipname=setup : loadenv pivotbin setup saveenv ; \
+ skipname=installbin sandbox : loadenv installbin saveenv ; \
+ skipname=strip strip : ; \
+ skipname=preinst prepost : loadenv preinst saveenv ; \
+ skipname=merge merge : ; \
+ skipname=postinst prepost : loadenv postinst saveenv ; \
+ skipname=tidyup : tidyup
description_generated_using = Generated using
description_generated_time = Generated time
diff --git a/paludis/repositories/e/eapis/pbin-1+exheres-0.conf b/paludis/repositories/e/eapis/pbin-1+exheres-0.conf
index e7074c1..ad3e024 100644
--- a/paludis/repositories/e/eapis/pbin-1+exheres-0.conf
+++ b/paludis/repositories/e/eapis/pbin-1+exheres-0.conf
@@ -24,15 +24,15 @@ ignore_pivot_env_functions = \
ebuild_functions = ${ebuild_functions} builtin_pivotbin builtin_installbin
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
- : loadenv pivotbin setup saveenv ; \
- sandbox : loadenv installbin saveenv ; \
- strip : ; \
- prepost : loadenv preinst saveenv ; \
- merge : ; \
- prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
+ skipname=setup : loadenv pivotbin setup saveenv ; \
+ skipname=installbin sandbox : loadenv installbin saveenv ; \
+ skipname=strip strip : ; \
+ skipname=preinst prepost : loadenv preinst saveenv ; \
+ skipname=merge merge : ; \
+ skipname=postinst prepost : loadenv postinst saveenv ; \
+ skipname=tidyup : tidyup
description_generated_using = Generated using
description_generated_time = Generated time
diff --git a/paludis/repositories/e/eapis/pbin-1+paludis-1.conf b/paludis/repositories/e/eapis/pbin-1+paludis-1.conf
index ca8937a..72923ec 100644
--- a/paludis/repositories/e/eapis/pbin-1+paludis-1.conf
+++ b/paludis/repositories/e/eapis/pbin-1+paludis-1.conf
@@ -24,15 +24,15 @@ ignore_pivot_env_functions = \
ebuild_functions = ${ebuild_functions} builtin_pivotbin builtin_installbin
ebuild_install = \
- : killold ; \
- userpriv sandbox : init saveenv ; \
- : loadenv pivotbin setup saveenv ; \
- sandbox : loadenv installbin saveenv ; \
- strip : ; \
- prepost : loadenv preinst saveenv ; \
- merge : ; \
- prepost : loadenv postinst saveenv ; \
- : tidyup
+ skipname=killold : killold ; \
+ skipname=init userpriv sandbox : init saveenv ; \
+ skipname=setup : loadenv pivotbin setup saveenv ; \
+ skipname=installbin sandbox : loadenv installbin saveenv ; \
+ skipname=strip strip : ; \
+ skipname=preinst prepost : loadenv preinst saveenv ; \
+ skipname=merge merge : ; \
+ skipname=postinst prepost : loadenv postinst saveenv ; \
+ skipname=tidyup : tidyup
description_generated_using = Generated using
description_generated_time = Generated time
diff --git a/paludis/repositories/e/ebuild_entries.cc b/paludis/repositories/e/ebuild_entries.cc
index 819884b..c40b020 100644
--- a/paludis/repositories/e/ebuild_entries.cc
+++ b/paludis/repositories/e/ebuild_entries.cc
@@ -617,6 +617,31 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
+ bool skip(false);
+ do
+ {
+ switch (o.want_phase()(phase->equal_option("skipname")))
+ {
+ case wp_yes:
+ continue;
+
+ case wp_skip:
+ skip = true;
+ continue;
+
+ case wp_abort:
+ throw InstallActionError("Told to abort install");
+
+ case last_wp:
+ break;
+ }
+
+ throw InternalError(PALUDIS_HERE, "bad want_phase");
+ } while (false);
+
+ if (skip)
+ continue;
+
if (can_skip_phase(id, *phase))
{
std::cout << "--- No need to do anything for " << phase->equal_option("skipname") << " phase" << std::endl;
diff --git a/paludis/repositories/e/exndbam_repository_TEST.cc b/paludis/repositories/e/exndbam_repository_TEST.cc
index 802f6ec..1a20613 100644
--- a/paludis/repositories/e/exndbam_repository_TEST.cc
+++ b/paludis/repositories/e/exndbam_repository_TEST.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2008 Ciaran McCreesh
+ * Copyright (c) 2008, 2009 Ciaran McCreesh
*
* 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
@@ -51,6 +51,11 @@ namespace
void dummy_used_this_for_config_protect(const std::string &)
{
}
+
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
}
namespace test_cases
@@ -117,7 +122,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(exndbam_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
diff --git a/paludis/repositories/e/vdb_repository_TEST.cc b/paludis/repositories/e/vdb_repository_TEST.cc
index 6a3f71d..a0c8e9c 100644
--- a/paludis/repositories/e/vdb_repository_TEST.cc
+++ b/paludis/repositories/e/vdb_repository_TEST.cc
@@ -63,6 +63,11 @@ namespace
void dummy_used_this_for_config_protect(const std::string &)
{
}
+
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
}
namespace test_cases
@@ -346,7 +351,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
@@ -461,7 +467,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
@@ -576,7 +583,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
@@ -971,7 +979,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
@@ -1207,7 +1216,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
TEST_CHECK(vdb_repo->package_ids(QualifiedPackageName("cat/pkg"))->empty());
@@ -1297,7 +1307,8 @@ namespace test_cases
InstallAction install_action(make_named_values<InstallActionOptions>(
value_for<n::destination>(vdb_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
UninstallAction uninstall_action(make_named_values<UninstallActionOptions>(
diff --git a/paludis/repositories/unpackaged/installed_repository_TEST.cc b/paludis/repositories/unpackaged/installed_repository_TEST.cc
index 7fc8ff1..c3610a8 100644
--- a/paludis/repositories/unpackaged/installed_repository_TEST.cc
+++ b/paludis/repositories/unpackaged/installed_repository_TEST.cc
@@ -81,6 +81,11 @@ namespace
void dummy_used_this_for_config_protect(const std::string &)
{
}
+
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
}
namespace test_cases
@@ -393,7 +398,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
(*env[selection::RequireExactlyOne(generator::InRepository(RepositoryName("unpackaged")))]->begin())->perform_action(action);
@@ -447,7 +453,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
(*env[selection::RequireExactlyOne(generator::InRepository(RepositoryName("unpackaged")))]->begin())->perform_action(action);
@@ -504,7 +511,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
(*env[selection::RequireExactlyOne(generator::InRepository(RepositoryName("unpackaged")))]->begin())->perform_action(action);
diff --git a/paludis/repositories/unpackaged/unpackaged_repository_TEST.cc b/paludis/repositories/unpackaged/unpackaged_repository_TEST.cc
index 9e54b61..2d8e2b6 100644
--- a/paludis/repositories/unpackaged/unpackaged_repository_TEST.cc
+++ b/paludis/repositories/unpackaged/unpackaged_repository_TEST.cc
@@ -44,6 +44,11 @@ namespace
void dummy_used_this_for_config_protect(const std::string &)
{
}
+
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
}
namespace test_cases
@@ -225,7 +230,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
id->perform_action(action);
@@ -278,7 +284,8 @@ namespace test_cases
InstallAction action(make_named_values<InstallActionOptions>(
value_for<n::destination>(installed_repo),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
id->perform_action(action);
diff --git a/python/action.cc b/python/action.cc
index 8bbb355..cd5805d 100644
--- a/python/action.cc
+++ b/python/action.cc
@@ -54,12 +54,18 @@ namespace
{
}
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
+
InstallActionOptions * make_install_action_options(
const std::tr1::shared_ptr<paludis::Repository> & r)
{
return new InstallActionOptions(make_named_values<InstallActionOptions>(
value_for<n::destination>(r),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
}
diff --git a/ruby/action.cc b/ruby/action.cc
index d80798c..8f69a19 100644
--- a/ruby/action.cc
+++ b/ruby/action.cc
@@ -474,6 +474,11 @@ namespace
}
};
+ WantPhase want_all_phases(const std::string &)
+ {
+ return wp_yes;
+ }
+
/*
* call-seq:
* InstallActionOptions.new(destination) -> InstallActionOptions
@@ -510,7 +515,8 @@ namespace
ptr = new InstallActionOptions(make_named_values<InstallActionOptions>(
value_for<n::destination>(v_destination),
- value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect)
+ value_for<n::used_this_for_config_protect>(&dummy_used_this_for_config_protect),
+ value_for<n::want_phase>(&want_all_phases)
));
VALUE tdata(Data_Wrap_Struct(self, 0, &Common<InstallActionOptions>::free, ptr));
diff --git a/src/output/console_install_task.cc b/src/output/console_install_task.cc
index 17ba0fb..0e512f2 100644
--- a/src/output/console_install_task.cc
+++ b/src/output/console_install_task.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -1902,3 +1902,32 @@ ConsoleInstallTask::perform_hook(const Hook & hook) const
return InstallTask::perform_hook(hook("RESUME_COMMAND", resume_command));
}
+void
+ConsoleInstallTask::on_phase_skip(const std::string & phase)
+{
+ output_starred_item("Skipping phase '" + phase + "' as instructed");
+}
+
+void
+ConsoleInstallTask::on_phase_abort(const std::string & phase)
+{
+ output_starred_item("Aborting at phase '" + phase + "' as instructed");
+}
+
+void
+ConsoleInstallTask::on_phase_skip_until(const std::string & phase)
+{
+ output_starred_item("Skipping phase '" + phase + "' as instructed since it is before a start phase");
+}
+
+void
+ConsoleInstallTask::on_phase_proceed_conditionally(const std::string & phase)
+{
+ output_starred_item("Executing phase '" + phase + "' as instructed");
+}
+
+void
+ConsoleInstallTask::on_phase_proceed_unconditionally(const std::string &)
+{
+}
+
diff --git a/src/output/console_install_task.hh b/src/output/console_install_task.hh
index 60ee838..06a9955 100644
--- a/src/output/console_install_task.hh
+++ b/src/output/console_install_task.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh
*
* 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
@@ -195,6 +195,12 @@ namespace paludis
virtual void on_display_failure_summary_totals(const int, const int, const int, const int, const int);
virtual void on_display_failure_summary_post();
+ virtual void on_phase_skip(const std::string & phase);
+ virtual void on_phase_abort(const std::string & phase);
+ virtual void on_phase_skip_until(const std::string & phase);
+ virtual void on_phase_proceed_conditionally(const std::string & phase);
+ virtual void on_phase_proceed_unconditionally(const std::string & phase);
+
///\name More granular display routines
///\{