diff options
-rw-r--r-- | include/jobs.h | 5 | ||||
-rw-r--r-- | src/evanix.c | 10 | ||||
-rw-r--r-- | src/jobs.c | 4 | ||||
-rw-r--r-- | src/queue.c | 6 |
4 files changed, 13 insertions, 12 deletions
diff --git a/include/jobs.h b/include/jobs.h index 37445c1..7390306 100644 --- a/include/jobs.h +++ b/include/jobs.h @@ -10,7 +10,7 @@ struct output { struct job { char *name, *drv_path, *attr; - bool transitive; + bool scheduled; bool insubstituters; size_t outputs_size, outputs_filled; @@ -36,7 +36,8 @@ typedef enum { } job_read_state_t; int job_read(FILE *stream, struct job **jobs); -int jobs_init(FILE **stream, char *expr); +/* Spawns nix-eval-jobs and connects its stdout to stream */ +int jobs_init(FILE **stream, const char *expr); void job_free(struct job *j); int job_parents_list_insert(struct job *job, struct job *parent); void job_deps_list_rm(struct job *job, struct job *dep); diff --git a/src/evanix.c b/src/evanix.c index 01279d1..27ab428 100644 --- a/src/evanix.c +++ b/src/evanix.c @@ -33,22 +33,22 @@ static int evanix(char *expr) { struct queue_thread *queue_thread = NULL; struct build_thread *build_thread = NULL; - FILE *stream = NULL; + FILE *jobsStream = NULL; /* nix-eval-jobs stdout */ int ret = 0; - ret = jobs_init(&stream, expr); + ret = jobs_init(&jobsStream, expr); if (ret < 0) goto out_free; - ret = queue_thread_new(&queue_thread, stream); + ret = queue_thread_new(&queue_thread, jobsStream); if (ret < 0) { - free(stream); + free(jobsStream); goto out_free; } ret = build_thread_new(&build_thread, queue_thread->queue); if (ret < 0) { - free(stream); + free(jobsStream); goto out_free; } @@ -367,7 +367,7 @@ static int job_new(struct job **j, char *name, char *drv_path, print_err("%s", strerror(errno)); return -errno; } - job->transitive = true; + job->scheduled = false; job->outputs_size = 0; job->outputs_filled = 0; @@ -434,7 +434,7 @@ out_free_job: return ret; } -int jobs_init(FILE **stream, char *expr) +int jobs_init(FILE **stream, const char *expr) { size_t argindex; char *args[6]; diff --git a/src/queue.c b/src/queue.c index 09eebb6..3a7ca52 100644 --- a/src/queue.c +++ b/src/queue.c @@ -41,7 +41,7 @@ static int queue_dag_isolate(struct job *job, struct job *keep_parent, job->parents_filled = 0; } - if (!job->transitive) + if (job->scheduled) CIRCLEQ_REMOVE(jobs, job, clist); ret = htab_delete(htab, job->drv_path); @@ -169,8 +169,8 @@ static int queue_push(struct queue *queue, struct job *job) } /* no duplicate entries in queue */ - if (job->transitive) { - job->transitive = false; + if (!job->scheduled) { + job->scheduled = true; CIRCLEQ_INSERT_TAIL(&queue->jobs, job, clist); } pthread_mutex_unlock(&queue->mutex); |