nixpkgs-suyu/pkgs/development/tools/misc/stm32cubemx/default.nix
Felix Uhl be1392dbd9 stm32cubemx: 6.0.1 -> 6.2.1
Fixes:
STM32CubeMX uses an outdated version of xstream that is not
compatible with JDK16. The derivation uses JDK11 (LTS) explicitly now.
Additionally, the desktop file wasn't generated by copyDesktopItems
before. This is now fixed as well.

Upstream changes:
- Main files moved from . to MX
- JAR file has no .exe extension anymore
- Icon format changed from icns to ico
- There is now a bundled JRE, but we prefer not to use it

Additional changes:
- Move version definition into mkDerivation
2021-04-27 18:23:40 +02:00

71 lines
2.7 KiB
Nix

{ lib, stdenv, makeDesktopItem, copyDesktopItems, icoutils, fdupes, imagemagick, jdk11, fetchzip }:
# TODO: JDK16 causes STM32CubeMX to crash right now, so we fixed the version to JDK11
# This may be fixed in a future version of STM32CubeMX. This issue has been reported to ST:
# https://community.st.com/s/question/0D53W00000jnOzPSAU/stm32cubemx-crashes-on-launch-with-openjdk16
# If you're updating this derivation, check the link above to see if it's been fixed upstream
# and try replacing all occurrences of jdk11 with jre and test whether it works.
let
iconame = "STM32CubeMX";
in
stdenv.mkDerivation rec {
pname = "stm32cubemx";
version = "6.2.1";
src = fetchzip {
url = "https://sw-center.st.com/packs/resource/library/stm32cube_mx_v${builtins.replaceStrings ["."] [""] version}-lin.zip";
sha256 = "0m5h01iq0mgrr9svj4gmykfi9lsyjpqzrkvlizff26c8dqad59c5";
stripRoot = false;
};
nativeBuildInputs = [ icoutils fdupes imagemagick copyDesktopItems];
desktopItems = [
(makeDesktopItem {
name = "stm32CubeMX";
exec = "stm32cubemx";
desktopName = "STM32CubeMX";
categories = "Development;";
comment = "STM32Cube initialization code generator";
icon = "stm32cubemx";
})
];
buildCommand = ''
mkdir -p $out/{bin,opt/STM32CubeMX}
cp -r $src/MX/. $out/opt/STM32CubeMX/
chmod +rx $out/opt/STM32CubeMX/STM32CubeMX
cat << EOF > $out/bin/${pname}
#!${stdenv.shell}
${jdk11}/bin/java -jar $out/opt/STM32CubeMX/STM32CubeMX
EOF
chmod +x $out/bin/${pname}
icotool --extract $out/opt/STM32CubeMX/help/${iconame}.ico
fdupes -dN . > /dev/null
ls
for size in 16 24 32 48 64 128 256; do
mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps
if [ $size -eq 256 ]; then
mv ${iconame}_*_"$size"x"$size"x32.png \
$out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
else
convert -resize "$size"x"$size" ${iconame}_*_256x256x32.png \
$out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
fi
done;
'';
meta = with lib; {
description = "A graphical tool for configuring STM32 microcontrollers and microprocessors";
longDescription = ''
A graphical tool that allows a very easy configuration of STM32
microcontrollers and microprocessors, as well as the generation of the
corresponding initialization C code for the Arm® Cortex®-M core or a
partial Linux® Device Tree for Arm® Cortex®-A core), through a
step-by-step process.
'';
homepage = "https://www.st.com/en/development-tools/stm32cubemx.html";
license = licenses.unfree;
maintainers = with maintainers; [ wucke13 ];
platforms = platforms.all;
};
}