NDNts nightly build

NDNts nightly build is a set of NPM-compatible tarballs compiled automatically from the development branch of NDNts, Named Data Networking (NDN) libraries for the modern web. They are built by the Continuous Integration (CI) system and uploaded to the NDNts nightly build website: ndnts-nightly.ndn.today. Homepage of that website displays a list of URIs of available tarballs.

How to install NDNts nightly build

You can find available tarballs on NDNts nightly build website: ndnts-nightly.ndn.today.

To install a tarball as a local dependency within the current project, you can execute something like:

$ npm install https://ndnts-nightly.ndn.today/packet.tgz
+ @ndn/packet@0.0.20200822-nightly.a471902
added 5 packages from 3 contributors and audited 5 packages in 1.612s
found 0 vulnerabilities

To install a tarball as a global command, you can execute something like:

$ npm install -g https://ndnts-nightly.ndn.today/keychain-cli.tgz
/home/sunny/.nvm/versions/node/v14.8.0/bin/ndntssec -> /home/sunny/.nvm/versions/node/v14.8.0/lib/node_modules/@ndn/keychain-cli/cli.cjs
+ @ndn/keychain-cli@0.0.20200822-nightly.a471902
updated 19 packages in 13.327s

Caveats of NDNts nightly build

NDNts nightly build website is not a NPM registry. It only serves the latest version, and does not preserve previous versions. Whenever the CI job uploads a new version, it overwrites the previous versions.

NPM stores a SHA512 digest of the tarball in the package-lock.json file. When you (re)install packages with a package-lock.json file present, it would download the tarballs from the NDNts nightly build website, and notice that their SHA512 digest does not match the records in package-lock.json. Then, the installation fails with an error like this:

$ npm install
npm ERR! code EINTEGRITY
npm ERR! sha512-mtyR9BXk5/liMRGHkVILpRGE2+PtDDCuUz49PzW8TwR17UnrTWMFmAb4uIefDQqW1jdCTOOX9kPzkfeK6f1RjQ==
  integrity checksum failed when using sha512: wanted
  sha512-mtyR9BXk5/liMRGHkVILpRGE2+PtDDCuUz49PzW8TwR17UnrTWMFmAb4uIefDQqW1jdCTOOX9kPzkfeK6f1RjQ==
  but got
  sha512-Q6oePXREf3J3wpwIbZ5j7ZtVRuNpuxStmnQwcQvjhSeT9ZZ2xoJnkjdYsmzfPkZnrD1QaWWMBQelcUR8EukBCQ==.
  (1494 bytes)

To workaround this issue, you should delete the lockfile and previously downloaded NDNts packages before executing npm install.

# command for NPM
rm -rf package-lock.json node_modules/\@ndn

# command for PNPM
rm -rf pnpm-lock.json node_modules/\@ndn node_modules/.pnpm/\@ndnts-nightly.* \
  $HOME/.pnpm-store/v3/\@ndnts-nightly.*`

I understand that these steps are quite unusual. In the future, I'll provide a procedure that allows building and locally hosting a specific version of NDNts nightly build, to make NDNts night build easier to use.

Tags: