1
1
mirror of https://github.com/tweag/nickel.git synced 2024-08-15 22:50:22 +03:00

Switching from nixpkgs-mozilla overlay to rust-overlay

This commit is contained in:
Rok Garbas 2022-01-17 12:53:18 +01:00
parent 9826d59d90
commit dba0dbf90c
No known key found for this signature in database
GPG Key ID: A0E01EF44C27BF00
7 changed files with 83 additions and 178 deletions

View File

@ -1,60 +0,0 @@
name: "Update Rust channels"
on:
schedule:
- cron: '1 1 * * *'
jobs:
update-rust-channels:
strategy:
# Run in sequence to prevent `git push` overlaps
max-parallel: 1
matrix:
rust_channel:
- stable
- beta
- nightly
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]')"
steps:
- name: Checking out the repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Installing Nix
uses: cachix/install-nix-action@v14.1
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes
- name: Setup Cachix
uses: cachix/cachix-action@v10
with:
name: nickel
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- name: Update `${{ matrix.rust_channel }}` channel
run: |
bash ./scripts/update_channel.sh ${{ matrix.rust_channel }}
- name: Build Nickel against `${{ matrix.rust_channel }}` Rust channel
run: |
nix build ./#checks.x86_64-linux.nickel-against-${{ matrix.rust_channel }}-rust-channel
- name: Commit `scripts/channel_${{ matrix.rust_channel }}.toml`
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'Update `${{ matrix.rust_channel }}` Rust channel [ci skip]'
branch: 'master'
file_pattern: scripts/channel_${{ matrix.rust_channel }}.toml
# See https://github.community/t/github-actions-bot-email-address/17204/6
commit_user_name: github-actions[bot]
commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com
commit_author: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com>
if: github.repository == 'tweag/nickel'

View File

@ -15,6 +15,21 @@
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1637014545,
"narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"import-cargo": {
"locked": {
"lastModified": 1594305518,
@ -45,38 +60,20 @@
"type": "indirect"
}
},
"nixpkgs-mozilla": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1630405024,
"narHash": "sha256-DvYmScld4IOj8DdIF4RI8B2POAD7BVgajdUviWpBhgM=",
"owner": "nickel-lang",
"repo": "nixpkgs-mozilla",
"rev": "38af8eb25905bcece8c1adc5d80e3f26f5e533f8",
"type": "github"
},
"original": {
"owner": "nickel-lang",
"ref": "flake",
"repo": "nixpkgs-mozilla",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1630248577,
"narHash": "sha256-9d/yq96TTrnF7qjA6wPYk+rYjWAXwfUmwk3qewezSeg=",
"lastModified": 1637453606,
"narHash": "sha256-Gy6cwUswft9xqsjWxFYEnx/63/qzaFUwatcbV5GF/GQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8d8a28b47b7c41aeb4ad01a2bd8b7d26986c3512",
"rev": "8afc4e543663ca0a6a4f496262cd05233737e732",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
@ -84,7 +81,26 @@
"flake-utils": "flake-utils",
"import-cargo": "import-cargo",
"nixpkgs": "nixpkgs",
"nixpkgs-mozilla": "nixpkgs-mozilla"
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1642301007,
"narHash": "sha256-YKs/KV8Rdv8K33RidbjH78nZeMDqKUCwsdq8bow7Ogc=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "9c426beb3820ca3ede6349c664eb461ae4603565",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},

View File

@ -1,7 +1,7 @@
{
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs-mozilla.url = "github:nickel-lang/nixpkgs-mozilla/flake";
inputs.rust-overlay.url = "github:oxalica/rust-overlay";
inputs.import-cargo.url = "github:edolstra/import-cargo";
nixConfig = {
@ -12,7 +12,7 @@
outputs = { self
, nixpkgs
, flake-utils
, nixpkgs-mozilla
, rust-overlay
, import-cargo
}:
let
@ -23,15 +23,12 @@
"x86_64-linux"
];
RUST_CHANNELS = readRustChannels [
RUST_CHANNELS = [
"stable"
"beta"
"nightly"
];
readRustChannel = c: builtins.fromTOML (builtins.readFile (./. + "/scripts/channel_${c}.toml"));
readRustChannels = cs: builtins.listToAttrs (map (c: { name = c; value = readRustChannel c; }) cs);
cargoTOML = builtins.fromTOML (builtins.readFile ./Cargo.toml);
WasmBindgenCargoVersion = cargoTOML.dependencies.wasm-bindgen.version;
WasmBindgenVersion = builtins.substring 1 (builtins.stringLength WasmBindgenCargoVersion) WasmBindgenCargoVersion;
@ -67,7 +64,10 @@
let
pkgs = import nixpkgs {
inherit system;
overlays = [ customOverlay nixpkgs-mozilla.overlays.rust ];
overlays = [
(import rust-overlay)
customOverlay
];
};
cargoHome = (import-cargo.builders.importCargo {
@ -75,24 +75,6 @@
inherit pkgs;
}).cargoHome;
rustPlatform =
builtins.listToAttrs
(builtins.map
(channel:
let
manifestFile = builtins.fetchurl {
url = pkgs.lib.rustLib.manifest_v2_url RUST_CHANNELS.${channel};
sha256 = RUST_CHANNELS.${channel}.sha256;
};
in { name = channel;
value = pkgs.lib.rustLib.fromManifestFile manifestFile {
inherit (pkgs) lib stdenv fetchurl patchelf;
};
}
)
(builtins.attrNames RUST_CHANNELS)
);
# Additional packages required for some systems to build Nickel
missingSysPkgs =
if pkgs.stdenv.isDarwin then
@ -108,15 +90,20 @@
, checkFmt ? false
}:
let
rustProfile =
if isShell then "default"
else "minimal";
rust =
rustPlatform.${channel}.rust.override {
extensions = if isShell then [
"rust-src"
"rust-analysis"
"rustfmt-preview"
"clippy-preview"
] else [];
};
if channel == "nightly" then
pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.${rustProfile}.override {
extensions = [ "rustfmt-preview" ];
})
else
pkgs.rust-bin.${channel}.latest.${rustProfile}.override {
extensions = [ "rustfmt-preview" ];
};
in pkgs.stdenv.mkDerivation {
name = "nickel-${version}";
@ -149,31 +136,37 @@
cargo install --frozen --offline --path lsp/nls --root $out
rm $out/.crates.toml
'';
passhtru.rust = rust;
};
buildNickelWASM = { channel ? "stable"
, optimize ? true
}:
let
rust = rustPlatform.${channel}.rust.override({
targets = ["wasm32-unknown-unknown"];
});
rust =
if channel == "nightly" then
pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal.override {
targets = ["wasm32-unknown-unknown"];
})
else
pkgs.rust-bin.${channel}.latest.minimal.override {
targets = ["wasm32-unknown-unknown"];
};
in pkgs.stdenv.mkDerivation {
name = "nickel-wasm-${version}";
src = self;
nativeBuildInputs = [ pkgs.jq ];
buildInputs =
[
rust
[ rust
pkgs.wasm-pack
pkgs.wasm-bindgen-cli
pkgs.binaryen
cargoHome
]
++ missingSysPkgs;
nativeBuildInputs = [pkgs.jq];
src = self;
] ++ missingSysPkgs;
preBuild =
''
@ -273,12 +266,10 @@
buildDevShell = { channel ? "stable" }:
let
nickel = buildNickel { isShell = true; };
rust = rustPlatform.${channel}.rust.override({
extensions = [ "rustfmt-preview" ];
});
rustFormatHook = pkgs.writeShellScriptBin "check-rust-format-hook"
''
${rust}/bin/cargo fmt -- --check
${nickel.rust}/bin/cargo fmt -- --check
RESULT=$?
[ $RESULT != 0 ] && echo "Please run \`cargo fmt\` before"
exit $RESULT
@ -374,8 +365,7 @@
builtins.listToAttrs
(builtins.map (channel: { name = channel;
value = buildDevShell { inherit channel; };
})
(builtins.attrNames RUST_CHANNELS)
}) RUST_CHANNELS
);
devShell = devShells.stable;
@ -389,8 +379,7 @@
(builtins.map (channel: let checkFmt = channel == "stable";
in { name = "nickel-against-${channel}-rust-channel";
value = buildNickel { inherit channel checkFmt; };
})
(builtins.attrNames RUST_CHANNELS)));
}) RUST_CHANNELS));
}
);
}

View File

@ -1,3 +0,0 @@
channel="beta"
date="2022-01-09"
sha256="sha256-J4PElelxqC8MVCyN6BCwJcXSdPJMoxtjgT6EuYFC6lo="

View File

@ -1,3 +0,0 @@
channel="nightly"
date="2022-01-13"
sha256="sha256-5LiUnOIBfJY2ktoAa3e5+QZ3S295OyyFUy3xHfu/kOQ="

View File

@ -1,3 +0,0 @@
channel="stable"
date="2022-01-13"
sha256="sha256-eQBpSmy9+oHfVyPs0Ea+GVZ0fvIatj6QVhNhYKOJ6Jk="

View File

@ -1,31 +0,0 @@
#!/usr/bin/env bash
HERE=$(dirname $0)
CHANNEL=$1
case $CHANNEL in
stable|beta|nightly)
;;
*)
echo "You need to select one of the following channels to update:"
echo " - stable"
echo " - beta"
echo " - nightly"
exit 1
;;
esac
echo "Downloading the latest '$CHANNEL' channel information ..."
curl "https://static.rust-lang.org/dist/channel-rust-$CHANNEL.toml" > $HERE/tmp.toml
CHANNEL_FILE=$HERE/channel_$CHANNEL.toml
CHANNEL_DATE=$(nix-instantiate --eval -E "(builtins.fromTOML (builtins.readFile $HERE/tmp.toml)).date")
CHANNEL_SHA=$(nix hash file $HERE/tmp.toml)
rm -f tmp.toml
echo "channel=\"$CHANNEL\"" > $CHANNEL_FILE
echo "date=$CHANNEL_DATE" >> $CHANNEL_FILE
echo "sha256=\"$CHANNEL_SHA\"" >> $CHANNEL_FILE
echo "Channel info written in $CHANNEL_FILE"