Commit 8c513137 authored by Tmplt's avatar Tmplt
Browse files

chore(etc): improve JLink Nix derivation

parent cb0f4ea6
No related merge requests found
Showing with 84 additions and 0 deletions
+84 -0
/target
**/*.rs.bk
etc/result
.envrc
{ pkgs ? import <nixpkgs> {} }:
with pkgs;
{ stdenv, dpkg, buildFHSUserEnv, udev, fetchurl, buildEnv }:
let
jlink = stdenv.mkDerivation rec {
arch = {
"x86_64-linux" = "x86_64";
"i686-linux" = "x86";
}.${stdenv.system};
jlinkSrc = stdenv.mkDerivation rec {
name = "jlink-v${version}";
version = "6.42c";
version' = stdenv.lib.replaceStrings ["."] [""] version;
src = fetchurl {
url = "https://www.segger.com/downloads/jlink/JLink_Linux_V${stdenv.lib.replaceStrings ["."] [""] version}_x86_64.deb";
url = "https://www.segger.com/downloads/jlink/JLink_Linux_V${version'}_${arch}.deb";
# TODO: fix sha256 for i686
sha256 = "1ladqgszyicjg01waasbn5b6fngv4ap3vcksxcv1smrgr9yv9bv4";
curlOpts = "-d accept_license_agreement=accepted -d confirm=yes";
};
......@@ -21,38 +27,52 @@ let
dontPatchELF = true;
meta = with stdenv.lib; {
description = "TODO";
homepage = "";
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [ tmplt ];
};
};
# TODO: package all binaries in jlink
gdbServer = buildFHSUserEnv rec {
name = "JLinkGDBServerCLExe";
runScript = "${jlink}/opt/SEGGER/JLink_V6*/JLinkGDBServerCLExe";
};
rttClient = buildFHSUserEnv rec {
name = "JLinkRTTClientExe";
runScript = "${jlink}/opt/SEGGER/JLink_V6*/JLinkRTTClientExe";
wrapJlink = name: deps: buildFHSUserEnv rec {
inherit name;
runScript = "${jlinkSrc}/opt/SEGGER/JLink_V*/${name}";
targetPkgs = pkgs: deps;
};
JLinkExe = buildFHSUserEnv rec {
name = "JLinkExe";
runScript = "${jlink}/opt/SEGGER/JLink_V64*/JLinkExe";
targetPkgs = pkgs: with pkgs; [
udev
];
};
flashLite = wrapJlink "JFlashLiteExe" [];
flashSPI = wrapJlink "JFlashSPICLExe" [];
jlink = wrapJlink "JLinkExe" [ udev ];
gdbServer = wrapJlink "JLinkGDBServerExe" [];
gdbServerCL = wrapJlink "JLinkGDBServerCLExe" [];
licenseManager = wrapJlink "JLinkLicenseManagerExe" [];
remoteServer = wrapJlink "JLinkRemoteServerExe" [];
remoteServerCL = wrapJlink "JLinkRemoteServerCLExe" [];
rttClient = wrapJlink "JLinkRTTClientExe" [];
rttLogger = wrapJlink "JLinkRTTLoggerExe" [];
stm32 = wrapJlink "JLinkSTM32Exe" [];
swoViewer = wrapJlink "JLinkSWOViewerCLExe" [];
jtagLoad = wrapJlink "JTAGLoadExe" [];
in
mkShell {
buildInputs = [ gdbServer rttClient JLinkExe ];
buildEnv rec {
name = jlinkSrc.name;
paths = [
flashLite
flashSPI
jlink
gdbServer
gdbServerCL
licenseManager
remoteServer
remoteServerCL
rttClient
rttLogger
stm32
swoViewer
jtagLoad
];
LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib64:$LD_LIBRARY_PATH";
meta = with stdenv.lib; {
description = "TODO";
homepage = "https://www.segger.com/downloads/jlink/";
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [ tmplt ];
};
}
with import <nixpkgs> {};
mkShell {
buildInputs = [ (callPackage ./default.nix {}) ];
LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib64:$LD_LIBRARY_PATH";
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment