Oslo PTS 2018; Chains, tools, and reindeer
// date: 2018-05-02
// filed: programming, rakudo
// perma
This year at PTS we picked up where we left off last year, talking about the build system, dependency chains, and walking to the next food spot. Last year we had developed perl6 Warthog. Warthog is a hash "collapser" that works on OS [distro|kernel] and environment variables. This allows you to do things like determine native dependencies (like libcrypt in linux vs libgcrypt on osx) in your META6.json. An example of that here. So, that was last year.
This year I worked mainly on integrating that into zef. Nine worked
on Distribution::Builder::MakeFromJSON
and integrated support for that into zef. Ugexe also worked on that
integration and improved the S22 support for depends
allowing :from<native|bin>
signalling native lib or
bin requirements in the meta (and coralling/giving direction to nine and
me)
The other thing I worked on is ancillary to zef and something we hope
to integrate in the future to increase the speed of determining and
building dependencies. I'll call it zefpan
for
this post though it's not meant to be comparable to cpan
.
Zefpan is essentially a webservice that provides a dependency chain for
YourModule:ver<>:api<>:auth<>
, this
allows zef to bypass parsing the entirety of the ecosystem JSON to
determine what's needed for installing/building a module and just make
an http query to get the dependency chain. It also allows us to do
things like generate a "cool" dependency graph. Check this graph
out for Cro:
I'm keeping this short because I'm relatively sick but there will be
more in the next couple of weeks discussing Warthog, the dependency
graphing, and possibly zefpan
as we hash things out.