jujutsu: overhaul build expression
The `jujutsu` expression has changed very lightly in the past year since it was introduced, but the upstream Nix flake expression has gotten a lot of updates in that time, to make builds faster and more featureful. This is a port of some of those upstream changes. Among other things, this: - Stops zstd from being vendored via crate - Stops libgit2 from being vendored via crate - Removes a spurious dbus(?) dependency - Installs man pages - Runs the testsuite via nextest Signed-off-by: Austin Seipp <aseipp@pobox.com>
This commit is contained in:
parent
128d2c2a0b
commit
a9584671c3
1 changed files with 47 additions and 11 deletions
|
@ -1,14 +1,18 @@
|
||||||
{ lib
|
{ stdenv
|
||||||
, rustPlatform
|
, lib
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, pkg-config
|
, rustPlatform
|
||||||
, openssl
|
|
||||||
, stdenv
|
|
||||||
, dbus
|
|
||||||
, sqlite
|
|
||||||
, Security
|
, Security
|
||||||
, SystemConfiguration
|
, SystemConfiguration
|
||||||
|
, pkg-config
|
||||||
, libiconv
|
, libiconv
|
||||||
|
, openssl
|
||||||
|
, gzip
|
||||||
|
, libssh2
|
||||||
|
, libgit2
|
||||||
|
, zstd
|
||||||
|
, fetchpatch
|
||||||
|
, installShellFiles
|
||||||
, nix-update-script
|
, nix-update-script
|
||||||
, testers
|
, testers
|
||||||
, jujutsu
|
, jujutsu
|
||||||
|
@ -27,23 +31,55 @@ rustPlatform.buildRustPackage rec {
|
||||||
|
|
||||||
cargoHash = "sha256-qbCOVcKpNGWGonRAwPsr3o3yd+7qUTy3IVmC3Ifn4xE=";
|
cargoHash = "sha256-qbCOVcKpNGWGonRAwPsr3o3yd+7qUTy3IVmC3Ifn4xE=";
|
||||||
|
|
||||||
# Needed to get openssl-sys to use pkg-config.
|
buildNoDefaultFeatures = true;
|
||||||
OPENSSL_NO_VENDOR = 1;
|
buildFeatures = [
|
||||||
|
# enable 'packaging' feature, which enables extra features such as support
|
||||||
|
# for watchman
|
||||||
|
"packaging"
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# this patch (hopefully!) fixes a very, very rare test failure that can
|
||||||
|
# occasionally be cajoled out of Nix and GitHub CI builds. go ahead and
|
||||||
|
# apply it to be safe.
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/martinvonz/jj/commit/8e7e32710d29010423f3992bb920aaf2a0fa04ec.patch";
|
||||||
|
hash = "sha256-ySieobB1P/DpWOurcCb4BXoHk9IqrjzMfzdc3O5cTXk=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
cargoBuildFlags = [ "--bin" "jj" ]; # don't install the fake editors
|
||||||
|
useNextest = true; # nextest is the upstream integration framework
|
||||||
|
ZSTD_SYS_USE_PKG_CONFIG = "1"; # disable vendored zlib
|
||||||
|
LIBSSH2_SYS_USE_PKG_CONFIG = "1"; # disable vendored libssh2
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
gzip
|
||||||
|
installShellFiles
|
||||||
pkg-config
|
pkg-config
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
openssl
|
openssl
|
||||||
dbus
|
zstd
|
||||||
sqlite
|
libgit2
|
||||||
|
libssh2
|
||||||
] ++ lib.optionals stdenv.isDarwin [
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
Security
|
Security
|
||||||
SystemConfiguration
|
SystemConfiguration
|
||||||
libiconv
|
libiconv
|
||||||
];
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
$out/bin/jj util mangen > ./jj.1
|
||||||
|
installManPage ./jj.1
|
||||||
|
|
||||||
|
installShellCompletion --cmd jj \
|
||||||
|
--bash <($out/bin/jj util completion --bash) \
|
||||||
|
--fish <($out/bin/jj util completion --fish) \
|
||||||
|
--zsh <($out/bin/jj util completion --zsh)
|
||||||
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = nix-update-script { };
|
updateScript = nix-update-script { };
|
||||||
tests = {
|
tests = {
|
||||||
|
|
Loading…
Reference in a new issue