about summary refs log tree commit diff
path: root/pkgs/by-name/se
diff options
context:
space:
mode:
authorRick van Schijndel <Mindavi@users.noreply.github.com>2024-02-06 21:20:50 +0100
committerGitHub <noreply@github.com>2024-02-06 21:20:50 +0100
commit06de1cfb78243da0acd25c11c5153a56fc322cd3 (patch)
treeac8d374abba2803f2801bd93e774f20ef93de00a /pkgs/by-name/se
parenta005075002c0c1bf1f469b2aeaefa2306a9727df (diff)
parent9058bc4e8f118f83f877c34a4c59f87bbf295d2d (diff)
Merge pull request #255185 from StarGate01/nrfconnect
 segger-jlink: init at 794a, nrfconnect: init at 4.3.0, nrf-command-line-tools: init at 10.23.2
Diffstat (limited to 'pkgs/by-name/se')
-rwxr-xr-xpkgs/by-name/se/segger-jlink/package.nix228
1 files changed, 228 insertions, 0 deletions
diff --git a/pkgs/by-name/se/segger-jlink/package.nix b/pkgs/by-name/se/segger-jlink/package.nix
new file mode 100755
index 0000000000000..cfec869a04ca7
--- /dev/null
+++ b/pkgs/by-name/se/segger-jlink/package.nix
@@ -0,0 +1,228 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, udev
+, config
+, acceptLicense ? config.segger-jlink.acceptLicense or false
+, fontconfig
+, xorg
+, makeDesktopItem
+, copyDesktopItems
+}:
+
+let
+  supported = {
+    x86_64-linux = {
+      name = "x86_64";
+      hash = "sha256-WGEDvB6TJ8Y2Xl1VUB1JWVMK54OevvPoVGris3I27t4=";
+    };
+    i686-linux = {
+      name = "i386";
+      hash = "sha256-BOQ4yExDRGKuUvsPUUswElrps0SpXcDCHxy2tmGbV/I=";
+    };
+    aarch64-linux = {
+      name = "arm64";
+      hash = "sha256-ZWzaWCUgV4x5Fbz+jphj771kIyLyeoRZKjgf8rmbFxQ=";
+    };
+    armv7l-linux = {
+      name = "arm";
+      hash = "sha256-Qjb5P1XH/CoiLP9iqWyEX0YHUjDIuSdw5ej1bE61T48=";
+    };
+  };
+
+  platform = supported.${stdenv.system} or (throw "unsupported platform ${stdenv.system}");
+
+  version = "794a";
+
+  url = "https://www.segger.com/downloads/jlink/JLink_Linux_V${version}_${platform.name}.tgz";
+
+  src =
+    assert !acceptLicense -> throw ''
+      Use of the "SEGGER JLink Software and Documentation pack" requires the
+      acceptance of the following licenses:
+
+        - SEGGER Downloads Terms of Use [1]
+        - SEGGER Software Licensing [2]
+
+      You can express acceptance by setting acceptLicense to true in your
+      configuration. Note that this is not a free license so it requires allowing
+      unfree licenses as well.
+
+      configuration.nix:
+        nixpkgs.config.allowUnfree = true;
+        nixpkgs.config.segger-jlink.acceptLicense = true;
+
+      config.nix:
+        allowUnfree = true;
+        segger-jlink.acceptLicense = true;
+
+      [1]: ${url}
+      [2]: https://www.segger.com/purchase/licensing/
+    '';
+      fetchurl {
+        inherit url;
+        inherit (platform) hash;
+        curlOpts = "--data accept_license_agreement=accepted";
+      };
+
+  qt4-bundled = stdenv.mkDerivation {
+    pname = "segger-jlink-qt4";
+    inherit src version;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+    ];
+
+    buildInputs = [
+      stdenv.cc.cc.lib
+      fontconfig
+      xorg.libXrandr
+      xorg.libXfixes
+      xorg.libXcursor
+      xorg.libSM
+      xorg.libICE
+      xorg.libX11
+    ];
+
+    dontConfigure = true;
+    dontBuild = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      # Install libraries
+      mkdir -p $out/lib
+      mv libQt* $out/lib
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      description = "Bundled QT4 libraries for the J-Link Software and Documentation pack";
+      homepage = "https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack";
+      license = licenses.lgpl21;
+      maintainers = with maintainers; [ stargate01 ];
+      knownVulnerabilities = [
+        "This bundled version of Qt 4 has reached its end of life after 2015. See https://github.com/NixOS/nixpkgs/pull/174634"
+        "CVE-2023-43114"
+        "CVE-2023-38197"
+        "CVE-2023-37369"
+        "CVE-2023-34410"
+        "CVE-2023-32763"
+        "CVE-2023-32762"
+        "CVE-2023-32573"
+        "CVE-2022-25634"
+        "CVE-2020-17507"
+        "CVE-2020-0570"
+        "CVE-2018-21035"
+        "CVE-2018-19873"
+        "CVE-2018-19871"
+        "CVE-2018-19870"
+        "CVE-2018-19869"
+        "CVE-2015-1290"
+        "CVE-2014-0190"
+        "CVE-2013-0254"
+        "CVE-2012-6093"
+        "CVE-2012-5624"
+        "CVE-2009-2700"
+      ];
+    };
+  };
+
+in stdenv.mkDerivation {
+  pname = "segger-jlink";
+  inherit src version;
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    copyDesktopItems
+  ];
+
+  buildInputs = [
+    qt4-bundled
+  ];
+
+  # Udev is loaded late at runtime
+  appendRunpaths = [
+    "${udev}/lib"
+  ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  desktopItems = map (entry:
+    (makeDesktopItem {
+      name = entry;
+      exec = entry;
+      icon = "applications-utilities";
+      desktopName = entry;
+      genericName = "SEGGER ${entry}";
+      categories = [ "Development" ];
+      type = "Application";
+      terminal = false;
+      startupNotify = false;
+    })
+  ) [
+    "JFlash"
+    "JFlashLite"
+    "JFlashSPI"
+    "JLinkConfig"
+    "JLinkGDBServer"
+    "JLinkLicenseManager"
+    "JLinkRTTViewer"
+    "JLinkRegistration"
+    "JLinkRemoteServer"
+    "JLinkSWOViewer"
+    "JLinkUSBWebServer"
+    "JMem"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    # Install binaries and runtime files into /opt/
+    mkdir -p $out/opt
+    mv J* ETC GDBServer Firmwares $out/opt
+
+    # Link executables into /bin/
+    mkdir -p $out/bin
+    for binr in $out/opt/*Exe; do
+      binrlink=''${binr#"$out/opt/"}
+      ln -s $binr $out/bin/$binrlink
+      # Create additional symlinks without "Exe" suffix
+      binrlink=''${binrlink/%Exe}
+      ln -s $binr $out/bin/$binrlink
+    done
+
+    # Copy special alias symlinks
+    for slink in $(find $out/opt/. -type l); do
+      cp -P -n $slink $out/bin || true
+      rm $slink
+    done
+
+    # Install libraries
+    install -Dm444 libjlinkarm.so* -t $out/lib
+    for libr in $out/lib/libjlinkarm.*; do
+      ln -s $libr $out/opt
+    done
+
+    # Install docs and examples
+    mkdir -p $out/share
+    mv Doc $out/share/docs
+    mv Samples $out/share/examples
+
+    # Install udev rules
+    install -Dm444 99-jlink.rules -t $out/lib/udev/rules.d/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "J-Link Software and Documentation pack";
+    homepage = "https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack";
+    license = licenses.unfree;
+    platforms = attrNames supported;
+    maintainers = with maintainers; [ FlorianFranzen stargate01 ];
+  };
+}