aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Thoby <git@nightmared.fr>2023-03-19 14:09:05 +0100
committerSimon Thoby <git@nightmared.fr>2023-03-19 14:09:05 +0100
commit715d9f9662cbe4c16a1d394dd1b605ee32498c47 (patch)
treed2fe9b86d3969508305138ff31df17f95b292089
parent3de41cd804668a144cf206bc5a236c3a4d45014d (diff)
nix: move the support files to a subdirectory and upgrade to rustables 0.8.1
-rw-r--r--nix/Cargo.nix (renamed from Cargo.nix)202
-rw-r--r--nix/flake.lock (renamed from flake.lock)0
-rw-r--r--nix/flake.nix (renamed from flake.nix)15
3 files changed, 137 insertions, 80 deletions
diff --git a/Cargo.nix b/nix/Cargo.nix
index c4a4522..21c14f4 100644
--- a/Cargo.nix
+++ b/nix/Cargo.nix
@@ -7,7 +7,11 @@
, pkgs ? import nixpkgs { config = {}; }
, lib ? pkgs.lib
, stdenv ? pkgs.stdenv
-, buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate
+, buildRustCrateForPkgs ? if buildRustCrate != null
+ then lib.warn "crate2nix: Passing `buildRustCrate` as argument to Cargo.nix is deprecated. If you don't customize `buildRustCrate`, replace `callPackage ./Cargo.nix {}` by `import ./Cargo.nix { inherit pkgs; }`, and if you need to customize `buildRustCrate`, use `buildRustCrateForPkgs` instead." (_: buildRustCrate)
+ else pkgs: pkgs.buildRustCrate
+ # Deprecated
+, buildRustCrate ? null
# This is used as the `crateOverrides` argument for `buildRustCrate`.
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
# The features to enable for the root_crate or the workspace_members.
@@ -295,10 +299,10 @@ rec {
};
"cc" = rec {
crateName = "cc";
- version = "1.0.78";
+ version = "1.0.79";
edition = "2018";
crateBin = [];
- sha256 = "0gcch8g41jsjs4zk8fy7k4jhc33sfqdab4nxsrcsds2w6gi080d2";
+ sha256 = "07x93b8zbf3xc2dggdd460xlk1wg8lxm6yflwddxj8b15030klsh";
authors = [
"Alex Crichton <alex@alexcrichton.com>"
];
@@ -649,9 +653,9 @@ rec {
};
"libc" = rec {
crateName = "libc";
- version = "0.2.139";
+ version = "0.2.140";
edition = "2015";
- sha256 = "0yaz3z56c72p2nfgv2y2zdi8bzi7x3kdq2hzgishgw0da8ky6790";
+ sha256 = "037qjmhfv8iyzfv6zqapxxvf6p1ydg6dzgzhkjbimbhzj8s768lr";
authors = [
"The Rust Project Developers"
];
@@ -819,6 +823,27 @@ rec {
};
resolvedDefaultFeatures = [ "alloc" "std" ];
};
+ "once_cell" = rec {
+ crateName = "once_cell";
+ version = "1.17.1";
+ edition = "2021";
+ sha256 = "1lrsy9c5ikf2iwxr4iwgd3rlq9mg8alh0np1g8abnvp1k4151rdp";
+ authors = [
+ "Aleksey Kladov <aleksey.kladov@gmail.com>"
+ ];
+ features = {
+ "alloc" = [ "race" ];
+ "atomic-polyfill" = [ "critical-section" ];
+ "atomic_polyfill" = [ "dep:atomic_polyfill" ];
+ "critical-section" = [ "critical_section" "atomic_polyfill" ];
+ "critical_section" = [ "dep:critical_section" ];
+ "default" = [ "std" ];
+ "parking_lot" = [ "parking_lot_core" ];
+ "parking_lot_core" = [ "dep:parking_lot_core" ];
+ "std" = [ "alloc" ];
+ };
+ resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
+ };
"peeking_take_while" = rec {
crateName = "peeking_take_while";
version = "0.1.2";
@@ -852,7 +877,7 @@ rec {
}
{
name = "syn";
- packageId = "syn";
+ packageId = "syn 1.0.109";
optional = true;
usesDefaultFeatures = false;
}
@@ -899,9 +924,9 @@ rec {
};
"proc-macro2" = rec {
crateName = "proc-macro2";
- version = "1.0.49";
+ version = "1.0.52";
edition = "2018";
- sha256 = "19b3xdfmnay9mchza82lhb3n8qjrfzkxwd23f50xxzy4z6lyra2p";
+ sha256 = "0922fkhi689x134yh6l97lnpwgarhbv0vnv3vpnkpk1nx3lil3hx";
authors = [
"David Tolnay <dtolnay@gmail.com>"
"Alex Crichton <alex@alexcrichton.com>"
@@ -930,9 +955,9 @@ rec {
};
"quote" = rec {
crateName = "quote";
- version = "1.0.23";
+ version = "1.0.26";
edition = "2018";
- sha256 = "0ywwzw5xfwwgq62ihp4fbjbfdjb3ilss2vh3fka18ai59lvdhml8";
+ sha256 = "1z521piwggwzs0rj4wjx4ma6af1g6f1h5dkp382y5akqyx5sy924";
authors = [
"David Tolnay <dtolnay@gmail.com>"
];
@@ -1009,13 +1034,9 @@ rec {
};
"rustables" = rec {
crateName = "rustables";
- version = "0.8.0";
+ version = "0.8.1";
edition = "2021";
- # We can't filter paths with references in Nix 2.4
- # See https://github.com/NixOS/nix/issues/5410
- src = if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
- then lib.cleanSourceWith { filter = sourceFilter; src = ./.; }
- else ./.;
+ src = lib.cleanSourceWith { filter = sourceFilter; src = ../.; };
authors = [
"lafleur@boum.org"
"Simon Thoby"
@@ -1072,15 +1093,20 @@ rec {
};
"rustables-macros" = rec {
crateName = "rustables-macros";
- version = "0.1.0";
+ version = "0.1.1";
edition = "2021";
- sha256 = "093ygmvwd4w69qiry4p99xvyzm2g4ywf8zx0hxrqhyrwy1fldqxm";
+ src = lib.cleanSourceWith { filter = sourceFilter; src = ../macros; };
procMacro = true;
authors = [
+ "lafleur@boum.org"
"Simon Thoby"
];
dependencies = [
{
+ name = "once_cell";
+ packageId = "once_cell";
+ }
+ {
name = "proc-macro-error";
packageId = "proc-macro-error";
}
@@ -1094,7 +1120,7 @@ rec {
}
{
name = "syn";
- packageId = "syn";
+ packageId = "syn 1.0.109";
features = [ "full" ];
}
];
@@ -1133,11 +1159,11 @@ rec {
];
};
- "syn" = rec {
+ "syn 1.0.109" = rec {
crateName = "syn";
- version = "1.0.107";
+ version = "1.0.109";
edition = "2018";
- sha256 = "1xg3315vx8civ8y0l5zxq5mkx07qskaqwnjak18aw0vfn6sn8h0z";
+ sha256 = "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj";
authors = [
"David Tolnay <dtolnay@gmail.com>"
];
@@ -1167,11 +1193,45 @@ rec {
};
resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ];
};
+ "syn 2.0.2" = rec {
+ crateName = "syn";
+ version = "2.0.2";
+ edition = "2021";
+ sha256 = "0idhj68il6kghbjacchj0pdy4nrb2ysnjyci28vc780zxrm2glsr";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ optional = true;
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "unicode-ident";
+ packageId = "unicode-ident";
+ }
+ ];
+ features = {
+ "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
+ "printing" = [ "quote" ];
+ "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
+ "quote" = [ "dep:quote" ];
+ "test" = [ "syn-test-suite/all-features" ];
+ };
+ resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "parsing" "printing" "proc-macro" "quote" ];
+ };
"termcolor" = rec {
crateName = "termcolor";
- version = "1.1.3";
+ version = "1.2.0";
edition = "2018";
- sha256 = "0mbpflskhnz3jf312k50vn0hqbql8ga2rk0k79pkgchip4q4vcms";
+ sha256 = "1dmrbsljxpfng905qkaxljlwjhv8h0i3969cbiv5rb7y8a4wymdy";
authors = [
"Andrew Gallant <jamslam@gmail.com>"
];
@@ -1205,9 +1265,9 @@ rec {
};
"thiserror" = rec {
crateName = "thiserror";
- version = "1.0.38";
+ version = "1.0.40";
edition = "2018";
- sha256 = "1l7yh18iqcr2jnl6qjx3ywvhny98cvda3biwc334ap3xm65d373a";
+ sha256 = "1b7bdhriasdsr99y39d50jz995xaz9sw3hsbb6z9kp6q9cqrm34p";
authors = [
"David Tolnay <dtolnay@gmail.com>"
];
@@ -1221,9 +1281,9 @@ rec {
};
"thiserror-impl" = rec {
crateName = "thiserror-impl";
- version = "1.0.38";
+ version = "1.0.40";
edition = "2018";
- sha256 = "0vzkcjqkzzgrwwby92xvnbp11a8d70b1gkybm0zx1r458spjgcqz";
+ sha256 = "17sn41kyimc6s983aypkk6a45pcyrkbkvrw6rp407n5hqm16ligr";
procMacro = true;
authors = [
"David Tolnay <dtolnay@gmail.com>"
@@ -1239,16 +1299,16 @@ rec {
}
{
name = "syn";
- packageId = "syn";
+ packageId = "syn 2.0.2";
}
];
};
"unicode-ident" = rec {
crateName = "unicode-ident";
- version = "1.0.6";
+ version = "1.0.8";
edition = "2018";
- sha256 = "1g2fdsw5sv9l1m73whm99za3lxq3nw4gzx5kvi562h4b46gjp8l4";
+ sha256 = "1x4v4v95fv9gn5zbpm23sa9awjvmclap1wh1lmikmw9rna3llip5";
authors = [
"David Tolnay <dtolnay@gmail.com>"
];
@@ -1350,12 +1410,12 @@ rec {
{
name = "winapi-i686-pc-windows-gnu";
packageId = "winapi-i686-pc-windows-gnu";
- target = { target, features }: (pkgs.rust.lib.toRustTarget stdenv.hostPlatform == "i686-pc-windows-gnu");
+ target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
}
{
name = "winapi-x86_64-pc-windows-gnu";
packageId = "winapi-x86_64-pc-windows-gnu";
- target = { target, features }: (pkgs.rust.lib.toRustTarget stdenv.hostPlatform == "x86_64-pc-windows-gnu");
+ target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
}
];
features = {
@@ -1410,25 +1470,26 @@ rec {
/* Target (platform) data for conditional dependencies.
This corresponds roughly to what buildRustCrate is setting.
*/
- makeDefaultTarget = platform: {
- unix = platform.isUnix;
- windows = platform.isWindows;
+ defaultTarget = {
+ unix = true;
+ windows = false;
fuchsia = true;
test = false;
- /* We are choosing an arbitrary rust version to grab `lib` from,
- which is unfortunate, but `lib` has been version-agnostic the
- whole time so this is good enough for now.
- */
- os = pkgs.rust.lib.toTargetOs platform;
- arch = pkgs.rust.lib.toTargetArch platform;
+ # This doesn't appear to be officially documented anywhere yet.
+ # See https://github.com/rust-lang-nursery/rust-forge/issues/101.
+ os =
+ if stdenv.hostPlatform.isDarwin
+ then "macos"
+ else stdenv.hostPlatform.parsed.kernel.name;
+ arch = stdenv.hostPlatform.parsed.cpu.name;
family = "unix";
env = "gnu";
endian =
- if platform.parsed.cpu.significantByte.name == "littleEndian"
+ if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian"
then "little" else "big";
- pointer_width = toString platform.parsed.cpu.bits;
- vendor = platform.parsed.vendor.name;
+ pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits;
+ vendor = stdenv.hostPlatform.parsed.vendor.name;
debug_assertions = false;
};
@@ -1631,12 +1692,12 @@ rec {
, crateConfigs ? crates
, buildRustCrateForPkgsFunc
, runTests
- , makeTarget ? makeDefaultTarget
+ , target ? defaultTarget
} @ args:
assert (builtins.isAttrs crateConfigs);
assert (builtins.isString packageId);
assert (builtins.isList features);
- assert (builtins.isAttrs (makeTarget stdenv.hostPlatform));
+ assert (builtins.isAttrs target);
assert (builtins.isBool runTests);
let
rootPackageId = packageId;
@@ -1644,7 +1705,7 @@ rec {
(
args // {
inherit rootPackageId;
- target = makeTarget stdenv.hostPlatform // { test = runTests; };
+ target = target // { test = runTests; };
}
);
# Memoize built packages so that reappearing packages are only built once.
@@ -1653,7 +1714,6 @@ rec {
let
self = {
crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;
- target = makeTarget pkgs.stdenv.hostPlatform;
build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
};
in
@@ -1670,8 +1730,7 @@ rec {
(crateConfig'.devDependencies or [ ]);
dependencies =
dependencyDerivations {
- inherit features;
- inherit (self) target;
+ inherit features target;
buildByPackageId = depPackageId:
# proc_macro crates must be compiled for the build architecture
if crateConfigs.${depPackageId}.procMacro or false
@@ -1683,26 +1742,24 @@ rec {
};
buildDependencies =
dependencyDerivations {
- inherit features;
- inherit (self.build) target;
+ inherit features target;
buildByPackageId = depPackageId:
self.build.crates.${depPackageId};
dependencies = crateConfig.buildDependencies or [ ];
};
+ filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies {
+ inherit dependencies features target;
+ };
dependenciesWithRenames =
- let
- buildDeps = filterEnabledDependencies {
- inherit features;
- inherit (self) target;
- dependencies = crateConfig.dependencies or [ ] ++ devDependencies;
- };
- hostDeps = filterEnabledDependencies {
- inherit features;
- inherit (self.build) target;
- dependencies = crateConfig.buildDependencies or [ ];
- };
- in
- lib.filter (d: d ? "rename") (hostDeps ++ buildDeps);
+ lib.filter (d: d ? "rename")
+ (
+ filterEnabledDependenciesForThis
+ (
+ (crateConfig.buildDependencies or [ ])
+ ++ (crateConfig.dependencies or [ ])
+ ++ devDependencies
+ )
+ );
# Crate renames have the form:
#
# {
@@ -1777,7 +1834,7 @@ rec {
else val;
/* Returns various tools to debug a crate. */
- debugCrate = { packageId, target ? makeDefaultTarget stdenv.hostPlatform }:
+ debugCrate = { packageId, target ? defaultTarget }:
assert (builtins.isString packageId);
let
debug = rec {
@@ -1953,14 +2010,15 @@ rec {
dependencies;
/* Returns whether the given feature should enable the given dependency. */
- doesFeatureEnableDependency = dependency: feature:
+ doesFeatureEnableDependency = { name, rename ? null, ... }: feature:
let
- name = dependency.rename or dependency.name;
prefix = "${name}/";
len = builtins.stringLength prefix;
startsWithPrefix = builtins.substring 0 len feature == prefix;
in
- feature == name || feature == "dep:" + name || startsWithPrefix;
+ (rename == null && feature == name)
+ || (rename != null && rename == feature)
+ || startsWithPrefix;
/* Returns the expanded features for the given inputFeatures by applying the
rules in featureMap.
@@ -1995,9 +2053,7 @@ rec {
let
enabled = builtins.any (doesFeatureEnableDependency dependency) features;
in
- if (dependency.optional or false) && enabled
- then [ (dependency.rename or dependency.name) ]
- else [ ]
+ if (dependency.optional or false) && enabled then [ dependency.name ] else [ ]
)
dependencies;
in
diff --git a/flake.lock b/nix/flake.lock
index c527b71..c527b71 100644
--- a/flake.lock
+++ b/nix/flake.lock
diff --git a/flake.nix b/nix/flake.nix
index 3f0a50c..852b42f 100644
--- a/flake.nix
+++ b/nix/flake.nix
@@ -51,18 +51,19 @@
buildRustCrateForPkgs = customBuildCrate;
release = false;
};
+ devShell = pkgs.mkShell {
+ name = "rustables";
+ nativeBuildInputs = nativeBuildInputs;
+ buildInputs = buildInputs;
+ LIBCLANG_PATH = LIBCLANG_PATH;
+ packages = with pkgs; [ rust-analyzer rustc-with-src ];
+ };
in {
defaultPackage = cargoNix.rootCrate.build;
+ devShells.default = devShell;
packages = {
rustables = cargoNix.rootCrate.build;
};
- devShell = pkgs.mkShell {
- name = "rustables";
- nativeBuildInputs = nativeBuildInputs;
- buildInputs = buildInputs;
- LIBCLANG_PATH = LIBCLANG_PATH;
- packages = with pkgs; [ rust-analyzer rustc-with-src ];
- };
}
);
}