summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@debian.org>2013-05-04 21:55:53 +0100
committerRoger Leigh <rleigh@debian.org>2013-05-04 21:55:53 +0100
commitec0d913bf1b9a3c070f4448087f43fe369603691 (patch)
treeb76afc319520c2cc66d04d7d9fdf93e256a36d5f /lib
parent8be36ad53a52d3283f76c4217dbe9eaed1c7026b (diff)
downloadschroot-ec0d913bf1b9a3c070f4448087f43fe369603691.tar.gz
chroot::facet::factory: Add auto_install property
Diffstat (limited to 'lib')
-rw-r--r--lib/sbuild/chroot/facet/block-device.cc1
-rw-r--r--lib/sbuild/chroot/facet/btrfs-snapshot.cc1
-rw-r--r--lib/sbuild/chroot/facet/custom.cc1
-rw-r--r--lib/sbuild/chroot/facet/directory.cc1
-rw-r--r--lib/sbuild/chroot/facet/factory.cc16
-rw-r--r--lib/sbuild/chroot/facet/factory.h8
-rw-r--r--lib/sbuild/chroot/facet/file.cc1
-rw-r--r--lib/sbuild/chroot/facet/fsunion.cc1
-rw-r--r--lib/sbuild/chroot/facet/loopback.cc1
-rw-r--r--lib/sbuild/chroot/facet/lvm-snapshot.cc1
-rw-r--r--lib/sbuild/chroot/facet/mountable.cc1
-rw-r--r--lib/sbuild/chroot/facet/personality.cc1
-rw-r--r--lib/sbuild/chroot/facet/plain.cc1
-rw-r--r--lib/sbuild/chroot/facet/session-clonable.cc1
-rw-r--r--lib/sbuild/chroot/facet/session.cc1
-rw-r--r--lib/sbuild/chroot/facet/source-clonable.cc1
-rw-r--r--lib/sbuild/chroot/facet/source.cc1
-rw-r--r--lib/sbuild/chroot/facet/unshare.cc1
-rw-r--r--lib/sbuild/chroot/facet/userdata.cc1
19 files changed, 40 insertions, 1 deletions
diff --git a/lib/sbuild/chroot/facet/block-device.cc b/lib/sbuild/chroot/facet/block-device.cc
index 65fae0b9..735bd78b 100644
--- a/lib/sbuild/chroot/facet/block-device.cc
+++ b/lib/sbuild/chroot/facet/block-device.cc
@@ -53,6 +53,7 @@ namespace sbuild
{
"block-device",
N_("Support for ‘block-device’ chroots"),
+ false,
[]() -> facet::ptr { return block_device::create(); }
};
diff --git a/lib/sbuild/chroot/facet/btrfs-snapshot.cc b/lib/sbuild/chroot/facet/btrfs-snapshot.cc
index 0ff674b3..494798e4 100644
--- a/lib/sbuild/chroot/facet/btrfs-snapshot.cc
+++ b/lib/sbuild/chroot/facet/btrfs-snapshot.cc
@@ -50,6 +50,7 @@ namespace sbuild
{
"btrfs-snapshot",
N_("Support for ‘btrfs-snapshot’ chroots"),
+ false,
[]() -> facet::ptr { return btrfs_snapshot::create(); }
};
diff --git a/lib/sbuild/chroot/facet/custom.cc b/lib/sbuild/chroot/facet/custom.cc
index 49db9d5e..523df3dd 100644
--- a/lib/sbuild/chroot/facet/custom.cc
+++ b/lib/sbuild/chroot/facet/custom.cc
@@ -49,6 +49,7 @@ namespace sbuild
{
"custom",
N_("Support for ‘custom’ chroots"),
+ false,
[]() -> facet::ptr { return custom::create(); }
};
diff --git a/lib/sbuild/chroot/facet/directory.cc b/lib/sbuild/chroot/facet/directory.cc
index deef1f97..2f62354b 100644
--- a/lib/sbuild/chroot/facet/directory.cc
+++ b/lib/sbuild/chroot/facet/directory.cc
@@ -48,6 +48,7 @@ namespace sbuild
{
"directory",
N_("Support for ‘directory’ chroots"),
+ false,
[]() -> facet::ptr { return directory::create(); }
};
diff --git a/lib/sbuild/chroot/facet/factory.cc b/lib/sbuild/chroot/facet/factory.cc
index 8a842437..ce1a4c2f 100644
--- a/lib/sbuild/chroot/facet/factory.cc
+++ b/lib/sbuild/chroot/facet/factory.cc
@@ -18,7 +18,7 @@
#include <config.h>
-#include <iostream>
+#include <ostream>
#include <sbuild/chroot/facet/factory.h>
#include <sbuild/i18n.h>
@@ -68,6 +68,20 @@ namespace sbuild
return ret;
}
+ std::vector<facet::ptr>
+ factory::create_auto ()
+ {
+ std::vector<facet::ptr> ret;
+
+ for (const auto& facet : registered_facets())
+ {
+ if (facet.second->auto_install)
+ ret.push_back(facet.second->create());
+ }
+
+ return ret;
+ }
+
factory::map_type&
factory::registered_facets ()
{
diff --git a/lib/sbuild/chroot/facet/factory.h b/lib/sbuild/chroot/facet/factory.h
index 15e6ad4d..d487c6bf 100644
--- a/lib/sbuild/chroot/facet/factory.h
+++ b/lib/sbuild/chroot/facet/factory.h
@@ -38,8 +38,13 @@ namespace sbuild
public:
struct facet_info
{
+ /// Facet name.
std::string name;
+ /// Facet description.
std::string description;
+ /// Install in a chroot automatically on chroot creation.
+ bool auto_install;
+ /// Function to create an instance of this facet.
facet::ptr (*create)();
};
@@ -53,6 +58,9 @@ namespace sbuild
static facet::ptr
create (const std::string& name);
+ static std::vector<facet::ptr>
+ create_auto ();
+
private:
typedef std::map<std::string,const facet_info *> map_type;
diff --git a/lib/sbuild/chroot/facet/file.cc b/lib/sbuild/chroot/facet/file.cc
index d71e32b4..05704b0f 100644
--- a/lib/sbuild/chroot/facet/file.cc
+++ b/lib/sbuild/chroot/facet/file.cc
@@ -49,6 +49,7 @@ namespace sbuild
{
"file",
N_("Support for ‘file’ chroots"),
+ false,
[]() -> facet::ptr { return file::create(); }
};
diff --git a/lib/sbuild/chroot/facet/fsunion.cc b/lib/sbuild/chroot/facet/fsunion.cc
index a749b148..bb154a5e 100644
--- a/lib/sbuild/chroot/facet/fsunion.cc
+++ b/lib/sbuild/chroot/facet/fsunion.cc
@@ -53,6 +53,7 @@ namespace sbuild
{
"union",
N_("Support for filesystem unioning"),
+ false,
[]() -> facet::ptr { return fsunion::create(); }
};
diff --git a/lib/sbuild/chroot/facet/loopback.cc b/lib/sbuild/chroot/facet/loopback.cc
index a66d3f4c..d8cd6651 100644
--- a/lib/sbuild/chroot/facet/loopback.cc
+++ b/lib/sbuild/chroot/facet/loopback.cc
@@ -48,6 +48,7 @@ namespace sbuild
{
"loopback",
N_("Support for ‘loopback’ chroots"),
+ false,
[]() -> facet::ptr { return loopback::create(); }
};
diff --git a/lib/sbuild/chroot/facet/lvm-snapshot.cc b/lib/sbuild/chroot/facet/lvm-snapshot.cc
index f4ebdfbf..4822ea47 100644
--- a/lib/sbuild/chroot/facet/lvm-snapshot.cc
+++ b/lib/sbuild/chroot/facet/lvm-snapshot.cc
@@ -49,6 +49,7 @@ namespace sbuild
{
"lvm-snapshot",
N_("Support for ‘lvm-snapshot’ chroots"),
+ false,
[]() -> facet::ptr { return lvm_snapshot::create(); }
};
diff --git a/lib/sbuild/chroot/facet/mountable.cc b/lib/sbuild/chroot/facet/mountable.cc
index 88e50c72..5ef62a78 100644
--- a/lib/sbuild/chroot/facet/mountable.cc
+++ b/lib/sbuild/chroot/facet/mountable.cc
@@ -45,6 +45,7 @@ namespace sbuild
{
"mountable",
N_("Support for filesystem mounting"),
+ false,
[]() -> facet::ptr { return mountable::create(); }
};
diff --git a/lib/sbuild/chroot/facet/personality.cc b/lib/sbuild/chroot/facet/personality.cc
index 00e35dbe..7ba38c75 100644
--- a/lib/sbuild/chroot/facet/personality.cc
+++ b/lib/sbuild/chroot/facet/personality.cc
@@ -41,6 +41,7 @@ namespace sbuild
{
"personality",
N_("Linux kernel Application Binary Interface switching"),
+ true,
[]() -> facet::ptr { return personality::create(); }
};
diff --git a/lib/sbuild/chroot/facet/plain.cc b/lib/sbuild/chroot/facet/plain.cc
index 645c6e72..fe00df37 100644
--- a/lib/sbuild/chroot/facet/plain.cc
+++ b/lib/sbuild/chroot/facet/plain.cc
@@ -47,6 +47,7 @@ namespace sbuild
{
"plain",
N_("Support for ‘plain’ chroots"),
+ false,
[]() -> facet::ptr { return plain::create(); }
};
diff --git a/lib/sbuild/chroot/facet/session-clonable.cc b/lib/sbuild/chroot/facet/session-clonable.cc
index 4118e024..cb6b97e1 100644
--- a/lib/sbuild/chroot/facet/session-clonable.cc
+++ b/lib/sbuild/chroot/facet/session-clonable.cc
@@ -49,6 +49,7 @@ namespace sbuild
{
"session-clonable",
N_("Support for session chroot cloning"),
+ false,
[]() -> facet::ptr { return session_clonable::create(); }
};
diff --git a/lib/sbuild/chroot/facet/session.cc b/lib/sbuild/chroot/facet/session.cc
index 014795e2..0e13ff29 100644
--- a/lib/sbuild/chroot/facet/session.cc
+++ b/lib/sbuild/chroot/facet/session.cc
@@ -53,6 +53,7 @@ namespace sbuild
{
"session",
N_("Support for session chroots"),
+ false,
[]() -> facet::ptr { return session::create(); }
};
diff --git a/lib/sbuild/chroot/facet/source-clonable.cc b/lib/sbuild/chroot/facet/source-clonable.cc
index de1a1386..ff70e9b5 100644
--- a/lib/sbuild/chroot/facet/source-clonable.cc
+++ b/lib/sbuild/chroot/facet/source-clonable.cc
@@ -47,6 +47,7 @@ namespace sbuild
{
"source-clonable",
N_("Support for source chroot cloning"),
+ false,
[]() -> facet::ptr { return source_clonable::create(); }
};
diff --git a/lib/sbuild/chroot/facet/source.cc b/lib/sbuild/chroot/facet/source.cc
index ef595b79..638f3d0f 100644
--- a/lib/sbuild/chroot/facet/source.cc
+++ b/lib/sbuild/chroot/facet/source.cc
@@ -42,6 +42,7 @@ namespace sbuild
{
"source",
N_("Support for source chroots"),
+ false,
[]() -> facet::ptr { return source::create(); }
};
diff --git a/lib/sbuild/chroot/facet/unshare.cc b/lib/sbuild/chroot/facet/unshare.cc
index 33a6e751..9d421a51 100644
--- a/lib/sbuild/chroot/facet/unshare.cc
+++ b/lib/sbuild/chroot/facet/unshare.cc
@@ -57,6 +57,7 @@ namespace sbuild
{
"unshare",
N_("Linux dissassociation of shared execution context"),
+ true,
[]() -> facet::ptr { return unshare::create(); }
};
diff --git a/lib/sbuild/chroot/facet/userdata.cc b/lib/sbuild/chroot/facet/userdata.cc
index 9af16eb9..b1c30a04 100644
--- a/lib/sbuild/chroot/facet/userdata.cc
+++ b/lib/sbuild/chroot/facet/userdata.cc
@@ -83,6 +83,7 @@ namespace sbuild
{
"userdata",
N_("User setting of custom configuration parameters"),
+ true,
[]() -> facet::ptr { return userdata::create(); }
};