tharre / redo Goto Github PK
View Code? Open in Web Editor NEWAn elegant and minimalistic replacement for make, written in C.
License: MIT License
An elegant and minimalistic replacement for make, written in C.
License: MIT License
Add test cases to ensure redo
keeps on working like expected.
While depending on environmental variables is by no means difficult at the moment, it can certainly be cumbersome. An alternative would be to create a new command, redo-env
, that would expect environment variables as arguments and hash over their contents. If the hash changes between subsequent redo
runs the target would be considered out-of-date.
Example:
redo-env CC
$ redo
redo all
(build.c:309): redo: failed to get realpath() of /usr/lib/clang/3.7.0/include/stddef.h: No such file or directory
(build.c:140): redo: invoked .do script ./default.do failed: 1
Clang was updated to 3.8.0 and thus the directory of the dependency disappeared. redo
should just declare the dependency out-of-date in that case instead of failing.
This won't be trivial, as redo depends on a lot of POSIX features like the shell. But it's not impossible either.
Currently, mkdir() is called thousands of times because we call mkpath() unnecessarily. This is bad for performance.
redo-ifchange foo bar
should build foo and bar in parallel.
Additionally, redo
should support the jobserver protocol like apenwarr's implementation does.
There should be test cases checking $3, specifically for subdirectories, as this has been bugged before.
Commit that fixed this bug: 0a9f087
redo
should provide some mechanism to catch all output files of certain commands or "broken" compilers (like javac). A fork of apenwarr's redo has already implemented a interesting mechanic to do so (see here for an explanation).
Note that even while this issue remains unfixed you can still manage multiple outputs with redo
, it's just not as good as it should be.
redo
saves hashes about everything it builds already in .redo/, so we might as well provide a clean
command to save people from writing their own (often outdated) clean.do.
redo
shouldn't abort if files in .redo/ have been corrupted if it can be avoided. Corrupted files should just be deleted.Using rand()
for generating the magic numbers is bad because it only guarantees 2^15 different values.
Possible solutions:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.