From 0bc8a83fd38878cd0b58b928b5637e5ba705a8af Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Wed, 1 Jan 2025 13:51:40 +0100 Subject: [PATCH] shared/pkgs/mcuxpresso: fix LinkServer not being found --- shared/pkgs/mcuxpresso/ide.nix | 62 ++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/shared/pkgs/mcuxpresso/ide.nix b/shared/pkgs/mcuxpresso/ide.nix index c279268..0f8a8d3 100644 --- a/shared/pkgs/mcuxpresso/ide.nix +++ b/shared/pkgs/mcuxpresso/ide.nix @@ -1,8 +1,4 @@ -{ - pkgs, - onlyUdevRules ? false, - ... -}: let +{pkgs, ...}: let name = "mcuxpressoide"; version = "24.9.25"; description = "MCUXpresso IDE"; @@ -21,21 +17,45 @@ sh $src --target deb || true ar -xv deb/${filename} tar xfvz data.tar.gz -C . + + # Unpack LinkServer. + mkdir -p linkserver + sh deb/LinkServer_24.9.75.x86_64.deb.bin --target deb/linkserver || true + ar -xv deb/linkserver/LPCScrypt.deb + tar xfvz data.tar.gz -C linkserver + ar -xv deb/linkserver/MCU-Link.deb + tar xfvz data.tar.gz -C linkserver + ar -xv deb/linkserver/LinkServer_24.9.75.x86_64.deb + tar xfvz data.tar.gz -C linkserver + mkdir -p ./final/eclipse mv ./usr/local/${name}-${version}/ide/* ./usr/local/${name}-${version}/ide/.* final/eclipse mv final/eclipse/mcuxpressoide final/eclipse/eclipse mv final/eclipse/mcuxpressoide.ini final/eclipse/eclipse.ini + # Create custom .eclipseproduct file rm final/eclipse/.eclipseproduct echo "name=${name} id=com.nxp.${name} version=${version} " > final/eclipse/.eclipseproduct + # Install udev rules mkdir -p final/lib/udev/rules.d mv ./lib/udev/rules.d/56-pemicro.rules ./lib/udev/rules.d/85-mcuxpresso.rules final/lib/udev/rules.d/ + # Additional files mv ./usr/local/${name}-${version}/mcu_data final/mcu_data + + # Place LinkServer, lpcscrypt, and MCU-LINK_installer in /usr/local + mkdir -p ./final/usr/local + mv ./linkserver/usr/local/LinkServer_24.9.75 ./final/usr/local + mv ./linkserver/usr/local/lpcscrypt-2.1.3_83 ./final/usr/local + mv ./linkserver/usr/local/MCU-LINK_installer_3.148 ./final/usr/local + + # Install LinkServer udev rules + # mv ./linkserver/lib/udev/rules.d/{85-linkserver_24.9.75.rules,85-mcu-link_3.148.rules,99-lpcscrypt.rules} final/lib/udev/rules.d + cd ./final tar -czf $out ./ ''; @@ -70,8 +90,14 @@ pkgs.libxcrypt pkgs.libxcrypt-legacy pkgs.libusb-compat-0_1 + pkgs.xorg.libxcb + pkgs.python3 ]; + extraBuildCommands = '' + mkdir -p $out/usr/local + cp -r ${mcuxpressoide}/usr/local $out/usr + ''; runScript = "${mcuxpressoide}/bin/eclipse"; }; in @@ -89,21 +115,23 @@ in exec = "mcuxpresso"; }) ]; + installPhase = '' runHook preInstall - mkdir -p $out/lib/udev/rules.d - if [ ${toString onlyUdevRules} = "true" ]; then - # only copy udev rules - cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/ - else - # copy full installation - mkdir -p $out/bin $out/eclipse $out/mcu_data - cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/ - cp -r ${mcuxpressoide}/eclipse $out/eclipse - cp -r ${mcuxpressoide}/mcu_data $out/mcu_data - ln -s ${mcuxpressoFhsEnv}/bin/mcuxpresso-env $out/bin/mcuxpresso - fi + # Create necessary directories + mkdir -p $out/lib/udev/rules.d + mkdir -p $out/bin $out/eclipse $out/mcu_data + + # Copy udev rules + cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/ + + # Copy full installation + cp -r ${mcuxpressoide}/eclipse $out/eclipse + cp -r ${mcuxpressoide}/mcu_data $out/mcu_data + + # Create symlink for the environment + ln -s ${mcuxpressoFhsEnv}/bin/mcuxpresso-env $out/bin/mcuxpresso runHook postInstall '';