// cgroup
struct pakfire_cgroup* cgroup;
+
+ // Jail
+ struct pakfire_jail* jail;
};
static const char* stages[] = {
if (build->cgroup)
pakfire_cgroup_unref(build->cgroup);
+ if (build->jail)
+ pakfire_jail_unref(build->jail);
+
pakfire_unref(build->pakfire);
free(build);
}
return 0;
}
+/*
+ Sets up a new jail for this build
+*/
+static int pakfire_build_setup_jail(struct pakfire_build* build) {
+ int r;
+
+ // Create a new jail
+ r = pakfire_jail_create(&build->jail, build->pakfire, 0);
+ if (r) {
+ ERROR(build->pakfire, "Could not create jail for build %s: %m\n", build->_id);
+ return r;
+ }
+
+ // Done
+ return 0;
+}
+
PAKFIRE_EXPORT int pakfire_build_create(struct pakfire_build** build,
struct pakfire* pakfire, const char* id, int flags) {
int r;
if (r)
goto ERROR;
+ // Create jail
+ r = pakfire_build_setup_jail(b);
+ if (r)
+ goto ERROR;
+
*build = b;
return 0;