depot/version.nix
Luke Granger-Brown ea927a8c34 depot: make version build faster
We don't need the entire depot to get the build version.
2021-03-28 01:14:59 +00:00

35 lines
1,012 B
Nix

# SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
#
# SPDX-License-Identifier: Apache-2.0
{ pkgs, ... }:
let
inherit (pkgs) lib;
inherit (builtins) elemAt match length;
hgRelativePath = path: elemAt (match ".*/\\.hg/(.*)$" path) 0;
hgDepth = path: length (lib.splitString "/" (hgRelativePath path));
hgRepo = builtins.path {
path = ./.hg;
name = "depot-hg";
filter = path: type: (type == "directory" && (
hgRelativePath path == "store" ||
hgRelativePath path == "merge" ||
hgRelativePath path == "cache")) ||
(type == "regular" && hgDepth path == 1) ||
(type == "regular" && hgDepth path == 2);
};
changesetDeriv = pkgs.runCommandLocal "depot-version" {
HG_REPO = hgRepo;
MERCURIAL = pkgs.mercurial;
} ''
export HGPLAIN=
mytmp=$(mktemp -d)
pushd $mytmp
ln -s $HG_REPO .hg
echo -n "depot-$($MERCURIAL/bin/hg id --id -r.)" > $out
popd
rm -rf $mytmp
'';
in
builtins.readFile changesetDeriv