mirror of
https://github.com/tweag/nickel.git
synced 2024-10-26 11:52:13 +03:00
Switching from nixpkgs-mozilla overlay to rust-overlay
This commit is contained in:
parent
9826d59d90
commit
dba0dbf90c
60
.github/workflows/daily_update_rust_channel.yml
vendored
60
.github/workflows/daily_update_rust_channel.yml
vendored
@ -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'
|
68
flake.lock
68
flake.lock
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
93
flake.nix
93
flake.nix
@ -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));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
channel="beta"
|
||||
date="2022-01-09"
|
||||
sha256="sha256-J4PElelxqC8MVCyN6BCwJcXSdPJMoxtjgT6EuYFC6lo="
|
@ -1,3 +0,0 @@
|
||||
channel="nightly"
|
||||
date="2022-01-13"
|
||||
sha256="sha256-5LiUnOIBfJY2ktoAa3e5+QZ3S295OyyFUy3xHfu/kOQ="
|
@ -1,3 +0,0 @@
|
||||
channel="stable"
|
||||
date="2022-01-13"
|
||||
sha256="sha256-eQBpSmy9+oHfVyPs0Ea+GVZ0fvIatj6QVhNhYKOJ6Jk="
|
@ -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"
|
Loading…
Reference in New Issue
Block a user