nrfutil: 7.13.0 -> 8.1.1, package all installables (#440671)
This commit is contained in:
@@ -22,6 +22,7 @@ lhapdf.section.md
|
|||||||
locales.section.md
|
locales.section.md
|
||||||
etc-files.section.md
|
etc-files.section.md
|
||||||
nginx.section.md
|
nginx.section.md
|
||||||
|
nrfutil.section.md
|
||||||
opengl.section.md
|
opengl.section.md
|
||||||
shell-helpers.section.md
|
shell-helpers.section.md
|
||||||
python-tree-sitter.section.md
|
python-tree-sitter.section.md
|
||||||
|
|||||||
13
doc/packages/nrfutil.section.md
Normal file
13
doc/packages/nrfutil.section.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# nrfutil {#sec-nrfutil}
|
||||||
|
|
||||||
|
nrfutil can be built with its installables as following:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
(nrfutil.withExtensions [
|
||||||
|
"nrfutil-completion"
|
||||||
|
"nrfutil-device"
|
||||||
|
"nrfutil-trace"
|
||||||
|
])
|
||||||
|
```
|
||||||
|
|
||||||
|
Keep in mind that all installables might not be available for every supported platform.
|
||||||
@@ -325,6 +325,9 @@
|
|||||||
"sec-nixpkgs-release-25.05-notable-changes": [
|
"sec-nixpkgs-release-25.05-notable-changes": [
|
||||||
"release-notes.html#sec-nixpkgs-release-25.05-notable-changes"
|
"release-notes.html#sec-nixpkgs-release-25.05-notable-changes"
|
||||||
],
|
],
|
||||||
|
"sec-nrfutil": [
|
||||||
|
"index.html#sec-nrfutil"
|
||||||
|
],
|
||||||
"sec-overlays-install": [
|
"sec-overlays-install": [
|
||||||
"index.html#sec-overlays-install"
|
"index.html#sec-overlays-install"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -2,69 +2,148 @@
|
|||||||
lib,
|
lib,
|
||||||
stdenvNoCC,
|
stdenvNoCC,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
|
|
||||||
|
xz,
|
||||||
zlib,
|
zlib,
|
||||||
libusb1,
|
libusb1,
|
||||||
segger-jlink-headless,
|
segger-jlink-headless,
|
||||||
gcc,
|
gcc,
|
||||||
|
|
||||||
autoPatchelfHook,
|
autoPatchelfHook,
|
||||||
versionCheckHook,
|
versionCheckHook,
|
||||||
|
makeWrapper,
|
||||||
|
installShellFiles,
|
||||||
|
|
||||||
|
symlinkJoin,
|
||||||
|
extensions ? [ ],
|
||||||
|
nrfutil,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
source = import ./source.nix;
|
sources = import ./source.nix;
|
||||||
supported = removeAttrs source [ "version" ];
|
platformSources =
|
||||||
|
sources.${stdenvNoCC.system} or (throw "unsupported platform ${stdenvNoCC.system}");
|
||||||
|
|
||||||
platform = supported.${stdenvNoCC.system} or (throw "unsupported platform ${stdenvNoCC.system}");
|
sharedMeta = with lib; {
|
||||||
|
|
||||||
in
|
|
||||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
|
||||||
pname = "nrfutil";
|
|
||||||
inherit (source) version;
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://files.nordicsemi.com/artifactory/swtools/external/nrfutil/packages/nrfutil/nrfutil-${platform.name}-${finalAttrs.version}.tar.gz";
|
|
||||||
inherit (platform) hash;
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
autoPatchelfHook
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
zlib
|
|
||||||
libusb1
|
|
||||||
gcc.cc.lib
|
|
||||||
segger-jlink-headless
|
|
||||||
];
|
|
||||||
|
|
||||||
dontConfigure = true;
|
|
||||||
dontBuild = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out
|
|
||||||
mv data/* $out/
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
doInstallCheck = true;
|
|
||||||
nativeInstallCheckInputs = [
|
|
||||||
versionCheckHook
|
|
||||||
];
|
|
||||||
passthru.updateScript = ./update.sh;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "CLI tool for managing Nordic Semiconductor devices";
|
description = "CLI tool for managing Nordic Semiconductor devices";
|
||||||
homepage = "https://www.nordicsemi.com/Products/Development-tools/nRF-Util";
|
homepage = "https://www.nordicsemi.com/Products/Development-tools/nRF-Util";
|
||||||
changelog = "https://docs.nordicsemi.com/bundle/nrfutil/page/guides/revision_history.html";
|
changelog = "https://docs.nordicsemi.com/bundle/nrfutil/page/guides/revision_history.html";
|
||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
platforms = lib.attrNames supported;
|
platforms = lib.attrNames sources;
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
maintainers = with maintainers; [
|
maintainers = with maintainers; [
|
||||||
h7x4
|
h7x4
|
||||||
ezrizhu
|
ezrizhu
|
||||||
];
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages =
|
||||||
|
map
|
||||||
|
(
|
||||||
|
name:
|
||||||
|
let
|
||||||
|
package = platformSources.packages.${name};
|
||||||
|
in
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = name;
|
||||||
|
inherit (package) version;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://files.nordicsemi.com/artifactory/swtools/external/nrfutil/packages/${name}/${name}-${platformSources.triplet}-${package.version}.tar.gz";
|
||||||
|
inherit (package) hash;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoPatchelfHook
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
xz
|
||||||
|
zlib
|
||||||
|
libusb1
|
||||||
|
gcc.cc.lib
|
||||||
|
segger-jlink-headless
|
||||||
|
];
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out
|
||||||
|
mv data/* $out/
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
doInstallCheck = true;
|
||||||
|
nativeInstallCheckInputs = [
|
||||||
|
versionCheckHook
|
||||||
|
];
|
||||||
|
versionCheckProgramArg = "--version";
|
||||||
|
|
||||||
|
meta = sharedMeta // {
|
||||||
|
mainProgram = name;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
)
|
||||||
|
(
|
||||||
|
[
|
||||||
|
"nrfutil"
|
||||||
|
"nrfutil-completion"
|
||||||
|
]
|
||||||
|
++ extensions
|
||||||
|
);
|
||||||
|
|
||||||
|
in
|
||||||
|
symlinkJoin {
|
||||||
|
pname = "nrfutil";
|
||||||
|
inherit (platformSources.packages.nrfutil) version;
|
||||||
|
|
||||||
|
paths = packages;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
installShellFiles
|
||||||
|
];
|
||||||
|
|
||||||
|
postBuild =
|
||||||
|
let
|
||||||
|
wrapProgramArgs = lib.concatStringsSep " " (
|
||||||
|
[
|
||||||
|
''--prefix PATH : "$out/bin"''
|
||||||
|
''--prefix PATH : "$out"/lib/nrfutil-npm''
|
||||||
|
''--prefix PATH : "$out"/lib/nrfutil-nrf5sdk-tools''
|
||||||
|
''--set NRF_JLINK_DLL_PATH '${segger-jlink-headless}'/lib/libjlinkarm.so''
|
||||||
|
''--set NRFUTIL_BLE_SNIFFER_SHIM_BIN_ENV "$out"/lib/nrfutil-ble-sniffer/wireshark-shim''
|
||||||
|
''--set NRFUTIL_BLE_SNIFFER_HCI_SHIM_BIN_ENV "$out"/lib/nrfutil-ble-sniffer/wireshark-hci-shim''
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
let
|
||||||
|
# These are the extensions with the probe-plugin-worker executable vendored.
|
||||||
|
relevantExtensions = lib.intersectLists [ "nrfutil-device" "nrfutil-trace" ] extensions;
|
||||||
|
in
|
||||||
|
lib.optionals (relevantExtensions != [ ]) [
|
||||||
|
''--set NRF_PROBE_PATH "$out"/lib/${lib.head relevantExtensions}''
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
in
|
||||||
|
''
|
||||||
|
wrapProgram "$out"/bin/nrfutil ${wrapProgramArgs}
|
||||||
|
|
||||||
|
installShellCompletion --cmd nrfutil \
|
||||||
|
--bash $(realpath "$out"/share/nrfutil-completion/scripts/bash/setup.bash) \
|
||||||
|
--zsh $(realpath "$out"/share/nrfutil-completion/scripts/zsh/_nrfutil)
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
updateScript = ./update.sh;
|
||||||
|
withExtensions = extensions: nrfutil.override { inherit extensions; };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = sharedMeta // {
|
||||||
mainProgram = "nrfutil";
|
mainProgram = "nrfutil";
|
||||||
};
|
};
|
||||||
})
|
}
|
||||||
|
|||||||
@@ -1,7 +1,84 @@
|
|||||||
{
|
{
|
||||||
version = "7.13.0";
|
aarch64-linux = {
|
||||||
|
triplet = "aarch64-unknown-linux-gnu";
|
||||||
|
packages = {
|
||||||
|
nrfutil = {
|
||||||
|
version = "8.1.1";
|
||||||
|
hash = "sha256-y7ywCr9Ze3Uz1JQh0hNg2BOPKW2yEftYDaD8WzHWSxY=";
|
||||||
|
};
|
||||||
|
nrfutil-ble-sniffer = {
|
||||||
|
version = "0.16.2";
|
||||||
|
hash = "sha256-vCpSs9oUcqKPDKVoEtrqqY9Jy0AtbMwK8s398xvQ7Us=";
|
||||||
|
};
|
||||||
|
nrfutil-device = {
|
||||||
|
version = "2.15.1";
|
||||||
|
hash = "sha256-u8JlM7bxkR5x0fhTQRIkElpxot6jpKyL2SljFfoKj54=";
|
||||||
|
};
|
||||||
|
nrfutil-mcu-manager = {
|
||||||
|
version = "0.8.0";
|
||||||
|
hash = "sha256-jLsLN/Ny5zL4MSaKS3cb2L4WBCKZHVLiR2RkPAL8JnY=";
|
||||||
|
};
|
||||||
|
nrfutil-sdk-manager = {
|
||||||
|
version = "1.8.0";
|
||||||
|
hash = "sha256-DsGuOQ6rzwit5oeG4ZLObCOaxMt8WB+YYnuXRYtqq4U=";
|
||||||
|
};
|
||||||
|
nrfutil-trace = {
|
||||||
|
version = "4.0.1";
|
||||||
|
hash = "sha256-IR4P1tK/0P3d96Wnwciq7b3TJurENF2pYKaHu2yZIPk=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
x86_64-linux = {
|
x86_64-linux = {
|
||||||
name = "x86_64-unknown-linux-gnu";
|
triplet = "x86_64-unknown-linux-gnu";
|
||||||
hash = "sha256-R3OF/340xEab+0zamfwvejY16fjy/3TrzMvQaBlVxHw=";
|
packages = {
|
||||||
|
nrfutil = {
|
||||||
|
version = "8.1.1";
|
||||||
|
hash = "sha256-asX1UbAE6X03lLC3l9e/9G2WgVRezfmRD6dyXJKb18Y=";
|
||||||
|
};
|
||||||
|
nrfutil-91 = {
|
||||||
|
version = "0.5.0";
|
||||||
|
hash = "sha256-ACQ+csYVIoANKV+CyAAD+drXQSb7CVUdvDYe76LELqs=";
|
||||||
|
};
|
||||||
|
nrfutil-ble-sniffer = {
|
||||||
|
version = "0.16.2";
|
||||||
|
hash = "sha256-4TGbn0HdlER5k76Hc5rCSVvyx89VdLQ56fMiGgWUvrU=";
|
||||||
|
};
|
||||||
|
nrfutil-completion = {
|
||||||
|
version = "1.5.0";
|
||||||
|
hash = "sha256-KA5h9/hJA66nkAAW1Tui+m60E/Iv9wzVPdeQqIQWpxc=";
|
||||||
|
};
|
||||||
|
nrfutil-device = {
|
||||||
|
version = "2.15.1";
|
||||||
|
hash = "sha256-zH/QtM1vM6BIiZHPLM23TRt2LCRUdJvmYN9oveotsH0=";
|
||||||
|
};
|
||||||
|
nrfutil-mcu-manager = {
|
||||||
|
version = "0.8.0";
|
||||||
|
hash = "sha256-ItU3kys1HMd06srLTzPtRoAW1YxwOt39LqjIQPMvmaI=";
|
||||||
|
};
|
||||||
|
nrfutil-npm = {
|
||||||
|
version = "0.3.1";
|
||||||
|
hash = "sha256-kQ63fVWR8RdGTQLA27Sg7jegYhtlkvXvLJsucifH4I0=";
|
||||||
|
};
|
||||||
|
nrfutil-nrf5sdk-tools = {
|
||||||
|
version = "1.1.0";
|
||||||
|
hash = "sha256-hLQhTEa5F2lrFxppKmVrD5PnIA3JPcP/M/r9bYizHk8=";
|
||||||
|
};
|
||||||
|
nrfutil-sdk-manager = {
|
||||||
|
version = "1.8.0";
|
||||||
|
hash = "sha256-+Z1xfEdTAcvYj+hjsW0z/dHRoIzVGWXjD6lSqoQvOPg=";
|
||||||
|
};
|
||||||
|
nrfutil-suit = {
|
||||||
|
version = "0.9.0";
|
||||||
|
hash = "sha256-uwbUgjpJNC27bSINyhfzTrOXIUi7GjFnPebg38apRKc=";
|
||||||
|
};
|
||||||
|
nrfutil-toolchain-manager = {
|
||||||
|
version = "0.15.0";
|
||||||
|
hash = "sha256-/bQx4yu1ybCO2TBd7MctxCANiYO5c1qCDYSjXm7hLcE=";
|
||||||
|
};
|
||||||
|
nrfutil-trace = {
|
||||||
|
version = "4.0.1";
|
||||||
|
hash = "sha256-YmsMQOD1vylaRwMWOhOA9xXePJR779P8im4Lcs7EcWk=";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,23 +12,60 @@ set -euo pipefail
|
|||||||
declare -A architectures
|
declare -A architectures
|
||||||
declare -A versions
|
declare -A versions
|
||||||
declare -A hashes
|
declare -A hashes
|
||||||
|
declare -a packages
|
||||||
|
|
||||||
architectures["x86_64-linux"]="x86_64-unknown-linux-gnu"
|
architectures["x86_64-linux"]="x86_64-unknown-linux-gnu"
|
||||||
|
architectures["aarch64-linux"]="aarch64-unknown-linux-gnu"
|
||||||
|
# NOTE: segger-jlink is not yet packaged for darwin
|
||||||
|
# architectures["x86_64-darwin"]="x86_64-apple-darwin"
|
||||||
|
# architectures["aarch64-darwin"]="aarch64-apple-darwin"
|
||||||
|
|
||||||
|
packages=(
|
||||||
|
"nrfutil"
|
||||||
|
"nrfutil-91"
|
||||||
|
"nrfutil-ble-sniffer"
|
||||||
|
"nrfutil-completion"
|
||||||
|
"nrfutil-device"
|
||||||
|
"nrfutil-mcu-manager"
|
||||||
|
"nrfutil-npm"
|
||||||
|
"nrfutil-nrf5sdk-tools"
|
||||||
|
"nrfutil-sdk-manager"
|
||||||
|
"nrfutil-suit"
|
||||||
|
"nrfutil-toolchain-manager"
|
||||||
|
"nrfutil-trace"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
BASE_URL="https://files.nordicsemi.com/artifactory/swtools/external/nrfutil"
|
BASE_URL="https://files.nordicsemi.com/artifactory/swtools/external/nrfutil"
|
||||||
|
|
||||||
for a in ${!architectures[@]}; do
|
for a in "${!architectures[@]}"; do
|
||||||
versions["$a"]=$(curl "$BASE_URL/index/${architectures[${a}]}/index.json" | jq -r '.packages.nrfutil.latest_version')
|
ARCH="${architectures["${a}"]}"
|
||||||
hashes["$a"]=$(narhash "$BASE_URL/packages/nrfutil/nrfutil-${architectures[${a}]}-${versions[${a}]}.tar.gz")
|
INDEX=$(curl "$BASE_URL/index/${ARCH}/index.json")
|
||||||
|
for p in "${!packages[@]}"; do
|
||||||
|
PKG="${packages["${p}"]}"
|
||||||
|
|
||||||
|
jq -e -r ".packages.\"${PKG}\"" <<< "$INDEX" 1>/dev/null && {
|
||||||
|
versions["$a-$p"]=$(jq -r ".packages.\"${PKG}\".latest_version" <<< "$INDEX")
|
||||||
|
hashes["$a-$p"]=$(narhash "$BASE_URL/packages/${PKG}/${PKG}-${ARCH}-${versions["$a-$p"]}.tar.gz")
|
||||||
|
}
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
{
|
{
|
||||||
printf "{\n"
|
printf "{\n"
|
||||||
printf " version = \"${versions["x86_64-linux"]}\";\n"
|
for a in "${!architectures[@]}"; do
|
||||||
for a in ${!architectures[@]}; do
|
printf " %s = {\n" "$a"
|
||||||
printf " ${a} = {\n"
|
printf " triplet = \"%s\";\n" "${architectures["${a}"]}"
|
||||||
printf " name = \"${architectures[${a}]}\";\n"
|
printf " packages = {\n"
|
||||||
printf " hash = \"${hashes[${a}]}\";\n"
|
for p in "${!packages[@]}"; do
|
||||||
|
test ${versions["$a-$p"]+_} && {
|
||||||
|
printf " %s = {\n" "${packages["${p}"]}"
|
||||||
|
printf " version = \"%s\";\n" "${versions["$a-$p"]}"
|
||||||
|
printf " hash = \"%s\";\n" "${hashes["$a-$p"]}"
|
||||||
|
printf " };\n"
|
||||||
|
}
|
||||||
|
done
|
||||||
|
printf " };\n"
|
||||||
printf " };\n"
|
printf " };\n"
|
||||||
done
|
done
|
||||||
printf "}\n"
|
printf "}\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user