summaryrefslogtreecommitdiffstats
path: root/src/job
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-11-11 17:04:11 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-11-11 17:05:39 +0100
commitf1626ac35ef0c8359e4a342a564a3365d96bce1c (patch)
tree3e291e3902cbe0c11bb41eb842fd2a6558430074 /src/job
parentdbb931d96ce53ee8f94ac8604985e4408576974e (diff)
Copy package source to container before running build
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/job')
-rw-r--r--src/job/runnable.rs12
-rw-r--r--src/job/set.rs5
2 files changed, 14 insertions, 3 deletions
diff --git a/src/job/runnable.rs b/src/job/runnable.rs
index 6b26d43..066d434 100644
--- a/src/job/runnable.rs
+++ b/src/job/runnable.rs
@@ -12,6 +12,8 @@ use crate::package::Package;
use crate::package::ParseDependency;
use crate::package::Script;
use crate::package::ScriptBuilder;
+use crate::source::SourceCache;
+use crate::source::SourceEntry;
use crate::util::docker::ImageName;
/// A job configuration that can be run. All inputs are clear here.
@@ -27,6 +29,9 @@ pub struct RunnableJob {
image: ImageName,
#[getset(get = "pub")]
+ source_cache: SourceCache,
+
+ #[getset(get = "pub")]
script: Script,
#[getset(get = "pub")]
@@ -34,7 +39,7 @@ pub struct RunnableJob {
}
impl RunnableJob {
- pub fn build_from_job(job: Job, merged_stores: &MergedStores) -> Result<Self> {
+ pub fn build_from_job(job: Job, merged_stores: &MergedStores, source_cache: &SourceCache) -> Result<Self> {
let script = ScriptBuilder::new(&job.script_shebang)
.build(&job.package, &job.script_phases)?;
@@ -60,12 +65,17 @@ impl RunnableJob {
package: job.package,
image: job.image,
resources: job.resources.into_iter().chain(resources.into_iter()).collect(),
+ source_cache: source_cache.clone(),
script,
})
}
+ pub fn package_source(&self) -> SourceEntry {
+ self.source_cache.source_for(&self.package())
+ }
+
fn build_resource(dep: &dyn ParseDependency, merged_stores: &MergedStores) -> Result<JobResource> {
let (name, vers) = dep.parse_as_name_and_version()?;
trace!("Copying dep: {:?} {:?}", name, vers);
diff --git a/src/job/set.rs b/src/job/set.rs
index 375db08..58bf7ce 100644
--- a/src/job/set.rs
+++ b/src/job/set.rs
@@ -5,6 +5,7 @@ use crate::job::Job;
use crate::job::RunnableJob;
use crate::package::Tree;
use crate::phase::PhaseName;
+use crate::source::SourceCache;
use crate::util::docker::ImageName;
/// A set of jobs that could theoretically be run in parallel
@@ -22,8 +23,8 @@ impl JobSet {
self.set.is_empty()
}
- pub fn into_runables<'a>(self, merged_stores: &'a MergedStores) -> impl Iterator<Item = Result<RunnableJob>> + 'a {
- self.set.into_iter().map(move |j| RunnableJob::build_from_job(j, merged_stores))
+ pub fn into_runables<'a>(self, merged_stores: &'a MergedStores, source_cache: &'a SourceCache) -> impl Iterator<Item = Result<RunnableJob>> + 'a {
+ self.set.into_iter().map(move |j| RunnableJob::build_from_job(j, merged_stores, source_cache))
}
pub fn len(&self) -> usize {