Meta-repository tracking the current state of the darcs-pijul integration

root

This "meta-repository" is for tracking known good states as we work on darcs-pijul integration.

Running the integration requires orchestrating a few different repos (darcs, pijul and sanakirja), as well as setting up the right environment and applying some WIP patches.

The scripts in this repository fetch the repositories, apply any patches that are needed, use nix to reproduce the right build environment and build pijul+darcs and run the tests.

You will need nix to run them.

cache.sh

Run this initially, and then after each pull, to get the latest versions of upstream repositories locally. The repositories are nixpkgs (for the build environment), sanakirja, pijul and darcs.

If you have your own local clones of any of the repositories already, you can reduce the remote downloading by first cloning them into cache/{project}, and then run cache.sh to make sure they are up to date and grab any missing ones.

If you have problems with git and SSL connections, set GIT_SSL_NO_VERIFY to 1 when running cache.sh.

test.sh

Run this to build and test the integration. The darcs tests produce a lot of output, so you may need a big terminal buffer if you want to scroll back after they've finished. The shell script should exit on first failure so if the darcs tests run to completion then everything is good.

This will run incrementally. To get a clean run, delete the work/ folder.

capture.sh

This is only useful if you are actually working on the integration. Edit it to point to your local repositories. Once you have a new working state, make sure to record in those repositories, run 'cache.sh' to make sure the upstream baseline is up to date, and run 'capture.sh' to grab local copies of the necessary state.

The nix expressions in *.nix and the nixpkgs repository revisions in test.sh need to be maintained by hand.

Notes

Storing darcs patches in a darcs repository is a bit hacky :-)

It isn't perfectly isolated because of state in .cabal, .ghc, .cargo and because the upstream Rust and Haskell package repositories can change.

Sanakirja currently doesn't support some filesystems because it makes a huge sparse file, and darcs will exit with an unclear message like 'darcs: Load' if this fails. You can use strace to confirm what's happening.