jachris / cook Goto Github PK
View Code? Open in Web Editor NEW๐ ๏ธ An Extensible, Dynamic, Fast and Cross-Platform Build System (2017)
Home Page: https://getcook.org/
License: MIT License
๐ ๏ธ An Extensible, Dynamic, Fast and Cross-Platform Build System (2017)
Home Page: https://getcook.org/
License: MIT License
Currently, core.call()
uses an empty environment when not specifying anything else. This is a bad default behaviour because many applications rely on some enviroment variables like TMP
. We should determine some useful defaults which will not impact reproducability.
The results could be saved to a file from a separate task to avoid redoing it every build.
The CLion CMake generator (currently examples/cpp/clion.py
) should regenerate CMakeLists.txt when needed.
It should be possible to let the system run other build systems. This could be useful to build subprojects not using Cook or for projects that want to change build systems.
flake8 testing of https://github.com/jachris/cook on Python 3.6.2
$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
./cook/core/graph.py:327:23: F821 undefined name 'primaries'
return primary in primaries
^
Sometimes there is the need for just running a program with known outputs and inputs. There should be a user-friendly rule that provides such a functionality, maybe including inputs / outputs path substitution.
There has been another "cook" build system that was first made available in the early 2000's by a notable software author, Peter Miller. Your system seems to share no relationship with it and that may be confusing for some users.
http://ibiblio.org/pub/Linux/devel/make/cook-2.25.tut.pdf
https://en.wikipedia.org/wiki/Peter_Miller_(software_engineer)
https://lists.auug.org.au/pipermail/cook-users/
I would recommend choosing another name, or including prominent footnotes indicating that there is no relationship in respect to that prior author's work.
cmdline switch at least would be fine. Especially on Windows (git bash console) it's annoying to stop failing build process.
Some rules (e.g. Java) might output different filenames which are difficult to know before executing the rule. Currently all outputs must be known before execution โ other build tools solve this by zipping all produced files to a well-defined path.
Is it possible to setup output outside of build directory?
A rule must currently core.resolve()
any files relative to the build script and core.build()
any files relative to the build directory. The paths are returned relative to the current working directory.
This can lead to some unexpected resulsts since a path returned by build
can be resolve
d to create a totally nonsensical path. This could be improved to reduce the likelihood of errors.
It would be nice to have something like Decider function ( http://scons.org/doc/HTML/scons-user.html#idm139933297217568 ) - so manage when input file has changed. As part of my build process is binary mesh builder file and I'd like to rebuild every time its checksum changed and not timestep.
While his website is down after his death, the source is still on FTP sites, and it's available as Debian and Ubuntu packages.
Currently, there are two completly separate implementations for shared and static c++ libraries. Maybe the underlying rule implementation or even the API can be unified?
The mechanism seems to be broken. A test should be added to prevent this in the future.
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.