diff options
Diffstat (limited to 'pkgs/by-name/se/segger-jlink/package.nix')
-rw-r--r--[-rwxr-xr-x] | pkgs/by-name/se/segger-jlink/package.nix | 193 |
1 files changed, 64 insertions, 129 deletions
diff --git a/pkgs/by-name/se/segger-jlink/package.nix b/pkgs/by-name/se/segger-jlink/package.nix index d7b2e0cfcaebb..a092097bce3bc 100755..100644 --- a/pkgs/by-name/se/segger-jlink/package.nix +++ b/pkgs/by-name/se/segger-jlink/package.nix @@ -1,39 +1,23 @@ { lib , stdenv , fetchurl +, callPackage , autoPatchelfHook , udev , config , acceptLicense ? config.segger-jlink.acceptLicense or false -, fontconfig -, xorg +, headless ? false , makeDesktopItem , copyDesktopItems }: let - supported = { - x86_64-linux = { - name = "x86_64"; - hash = "sha256-UsDP+wMS7ZeWMQBObwv5RxbwuWU8nLnHes7LEXK6imE="; - }; - i686-linux = { - name = "i386"; - hash = "sha256-InNHXWAc6QZEWyEcTTUCRMDsKd0RtR8d7O0clWKuFo8="; - }; - aarch64-linux = { - name = "arm64"; - hash = "sha256-ueIGdqfuIRCuEwaPkgZMgghO9DU11IboLLMryg/mxQ8="; - }; - armv7l-linux = { - name = "arm"; - hash = "sha256-6nTQGQpkbqQntheQqiUAdVS4rp30nl2KRUn5Adsfeoo="; - }; - }; + source = import ./source.nix; + supported = removeAttrs source ["version"]; platform = supported.${stdenv.system} or (throw "unsupported platform ${stdenv.system}"); - version = "796b"; + inherit (source) version; url = "https://www.segger.com/downloads/jlink/JLink_Linux_V${version}_${platform.name}.tgz"; @@ -66,69 +50,7 @@ let 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" - ]; - }; - }; + qt4-bundled = callPackage ./qt4-bundled.nix { inherit src version; }; in stdenv.mkDerivation { pname = "segger-jlink"; @@ -136,10 +58,11 @@ in stdenv.mkDerivation { nativeBuildInputs = [ autoPatchelfHook + ] ++ lib.optionals (!headless) [ copyDesktopItems ]; - buildInputs = [ + buildInputs = lib.optionals (!headless) [ qt4-bundled ]; @@ -151,55 +74,60 @@ in stdenv.mkDerivation { 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" - ]; + desktopItems = lib.optionals (!headless) ( + 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 + ${lib.optionalString (!headless) '' + # Install binaries and runtime files into /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 @@ -218,11 +146,18 @@ in stdenv.mkDerivation { runHook postInstall ''; + passthru.updateScript = ./update.py; + meta = with lib; { description = "J-Link Software and Documentation pack"; homepage = "https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack"; + changelog = "https://www.segger.com/downloads/jlink/ReleaseNotes_JLink.html"; license = licenses.unfree; platforms = attrNames supported; - maintainers = with maintainers; [ FlorianFranzen stargate01 ]; + maintainers = with maintainers; [ + FlorianFranzen + h7x4 + stargate01 + ]; }; } |