Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-04-20 | Rename directories to match crate names | Matthias Schiffer | |
2024-04-13 | Replace 'inherit' recipe field with 'parent' | Matthias Schiffer | |
All occurrences of 'inherit' in the code are replaced with 'parent' or 'ancestors'. | |||
2024-04-07 | runner: task: print detailed CPU usage for finished tasks | Matthias Schiffer | |
2024-04-07 | runner: detach from driver session/process group | Matthias Schiffer | |
We want signals like SIGINT to be handled by the driver process. | |||
2024-04-05 | runner: task: do not pass INPUT_HASH in task environment | Matthias Schiffer | |
There is nothing useful that a task could do with the input hash that doesn't reduce reproducibility. | |||
2024-04-02 | Update dependencies | Matthias Schiffer | |
2023-09-30 | runner: jobserver: use OwnedFds | Matthias Schiffer | |
2023-09-30 | Fix clippy warnings | Matthias Schiffer | |
2023-09-30 | Update dependencies | Matthias Schiffer | |
2021-11-17 | runner: handle force_run flag, warn if output hash does not match | Matthias Schiffer | |
2021-11-17 | runner: util: fs: make ensure_removed() work with regular files | Matthias Schiffer | |
2021-11-01 | runner: use rootfs passed in Task definition | Matthias Schiffer | |
With this, the rootfs hash is included in the task's input hash, so now the hash covers all significant inputs except for the runner itself. | |||
2021-11-01 | runner: allow passing a map of pins with a task submission | Matthias Schiffer | |
Pins allow to use fixed versions of dependencies. They are stored separately from regular dependency archives. | |||
2021-11-01 | runner: set CLOEXEC on signalfd | Matthias Schiffer | |
2021-11-01 | runner: detect file conflicts in dependencies again | Matthias Schiffer | |
The new code will also detect conflicts between the rootfs and individual dependencies. | |||
2021-10-31 | runner: unpack dependencies only once | Matthias Schiffer | |
Reuse unpacked dependencies across multiple tasks by mounting them into a single task's build directory. We lose support for file conflict detection for now. | |||
2021-10-31 | runner: add Stack type | Matthias Schiffer | |
A Stack guarantees that elements are dropped in reverse push order. | |||
2021-10-30 | runner: set up /dev in separate directory | Matthias Schiffer | |
Preparation for removal of a single rootfs. | |||
2021-10-30 | runner: do not use tmpfs for temporary build directories | Matthias Schiffer | |
2021-10-30 | runner: move lockfile out of state directory | Matthias Schiffer | |
2021-10-30 | runner: remove unneeded reference reported by clippy | Matthias Schiffer | |
2021-10-30 | runner: verify hash when unpacking dependencies | Matthias Schiffer | |
2021-10-30 | Make TaskOutput input hash optional | Matthias Schiffer | |
The input hash is used for the summary output only. For empty tasks, we want to skip submitting the task to the runner at all, so there is no input hash. | |||
2021-10-28 | Pass workdir from driver to runner | Matthias Schiffer | |
The paths modules of driver and runner do not contain any duplicates anymore. One remaining path that still appears in more places than it should is /build. | |||
2021-10-28 | runner: drop paths::abs() function | Matthias Schiffer | |
2021-10-28 | Move handling of current directory of task to driver | Matthias Schiffer | |
2021-10-28 | Pass target directory for download archives from driver to runner | Matthias Schiffer | |
2021-10-28 | Split paths module into driver and runner parts | Matthias Schiffer | |
There are still a few remaining paths that are defined in both driver and runner. | |||
2021-10-28 | Pass full Output path to runner | Matthias Schiffer | |
Concatenate TASK_DESTDIR with output path in driver instead of runner to reduce amount of shared logic between driver and runner. | |||
2021-10-27 | runner: get rid of spawn argument funnelling | Matthias Schiffer | |
2021-10-27 | runner: tar: simplify spawn call | Matthias Schiffer | |
The writing end of the pipe is moved to the child process, there is no need to funnel it back to the parent process just to drop it. | |||
2021-10-27 | runner: add Steal wrapper, use for socket | Matthias Schiffer | |
A deref wrapper that allows taking out its contents, which is convenient after a fork. | |||
2021-10-26 | runner: move Checkable trait into separabe module | Matthias Schiffer | |
2021-10-26 | runner: remove another layer of child processes | Matthias Schiffer | |
With the restructuring around the poll loop and moving the job token handling to the task process, this has become unnecessary as well. | |||
2021-10-26 | runner: move jobserver token handling into task process | Matthias Schiffer | |
We can avoid holding onto a token while waiting on a lock this way. Abnormal exits that would make us lose tokens should not happen here; if they do, the runner PID1 will stop the whole build, so a lost token does not matter. | |||
2021-10-26 | runner: maintain list of task PIDs in context | Matthias Schiffer | |
2021-10-26 | runner: add RunnerContext struct | Matthias Schiffer | |
Bundle common variables passed to different functions. | |||
2021-10-26 | runner: move more code into the actual task process | Matthias Schiffer | |
Leave only the jobserver token handling in the task spawner process. | |||
2021-10-26 | runner: pass jobserver to task handler as reference | Matthias Schiffer | |
Some code simplification. | |||
2021-10-26 | runner: handle reaping and requests in the poll loop | Matthias Schiffer | |
2021-10-26 | runner: wait for signals using poll() | Matthias Schiffer | |
2021-10-26 | runner: use signal fd to wait for exiting child processes | Matthias Schiffer | |
Will be used to poll for new tasks and signals in the same process. | |||
2021-10-26 | Replace ipc-channel with UNIX sockets and manual FD passing | Matthias Schiffer | |
The new implementation is more flexible, as it allows mixed polling with other FD types, and it saves us a whole zoo of dependencies. | |||
2021-10-26 | Switch to 2021 edition | Matthias Schiffer | |
2021-10-26 | runner: hold lock on task state dir while task is running | Matthias Schiffer | |
Do not allow concurrent runs of the same task. | |||
2021-10-26 | runner: do not delete whole task dir, only layer and work dir | Matthias Schiffer | |
We will also store a lockfile in the taskdir that must not be deleted. | |||
2021-10-26 | runner: make lock() function more generic | Matthias Schiffer | |
2021-10-25 | Allow to set the maximum number of jobs on the command line | Matthias Schiffer | |
2021-10-25 | Add lockfile for build state directory | Matthias Schiffer | |
Use flock() to ensure that there are no concurrent instances using the same build state. More fine-gained locking may be implemented in the future. | |||
2021-10-25 | Move runner into separate crate | Matthias Schiffer | |