zopsicle / snowflake-new-old

Snowflake is a language-agnostic build system that aims to implement caching correctly.
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link

I'd like to compare notes sometime #7

Open cxw42 opened 4 years ago

cxw42 commented 4 years ago

Chloe, cpan:CXW here. I just found out about this project after being introduced to your work on CRAI by the Rakudo Weekly. I have unknowingly been working on a similar project and would be interested in trading notes sometime, if you're still working on snowflake. I particularly like your use of inline bash to specify build steps. TIMTOWTDI!

My example corresponding to the snowflake README is at https://github.com/hopenbuild/App-hopen/blob/master/eg/003-double-file-double-compile/.hopen.pl . The dataflow is handled by standalone library Data::Hopen, in case that is of any interest to you as a back end for snowflake.

Thanks for reading this rambling! :) Please let me know if you have any interest in chatting, or feel free to close this issue if not.

-Chris

zopsicle commented 4 years ago

Note that the inline Bash is just an example, you can use any executable for snowflake-build. :)

An important aspect of the data flow in Snowflake is that it is based on a content-addressable store, so as to minimize rebuilds.

Thanks for pointing me to Data::Hopen, a data flow library may help with the implementation of parallel builds.

cxw42 commented 4 years ago

Minimizing rebuilds is a Good Thing :) . You also mention caching in the README --- was it long build times that originally triggered you to start writing snowflake?

In my case, hacking cmake files to build things on Cygwin became very painful over time. I wanted to write a build system that would make it easier for downstream to customize builds without having to involve upstream. That was the genesis of hopen.