ciscoPacketTracer8: fix script modules (#356289)

This commit is contained in:
misuzu
2024-12-31 15:48:56 +02:00
committed by GitHub
+125 -69
View File
@@ -1,17 +1,31 @@
{ stdenvNoCC
, lib
, alsa-lib
, autoPatchelfHook
, copyDesktopItems
, dbus
, dpkg
, expat
, fontconfig
, glib
, makeDesktopItem
, makeWrapper
, qt5
, requireFile
{
lib,
stdenvNoCC,
requireFile,
autoPatchelfHook,
makeWrapper,
alsa-lib,
dbus,
expat,
fontconfig,
glib,
libdrm,
libglvnd,
libpulseaudio,
libudev0-shim,
libxkbcommon,
libxml2,
libxslt,
nspr,
wayland,
nss,
xorg,
dpkg,
buildFHSEnv,
copyDesktopItems,
makeDesktopItem,
version ? "8.2.2",
packetTracerSource ? null,
}:
let
@@ -25,62 +39,104 @@ let
"8.2.1" = "CiscoPacketTracer_821_Ubuntu_64bit.deb";
"8.2.2" = "CiscoPacketTracer822_amd64_signed.deb";
};
in
stdenvNoCC.mkDerivation (args: {
pname = "ciscoPacketTracer8";
unwrapped = stdenvNoCC.mkDerivation {
name = "ciscoPacketTracer8-unwrapped";
inherit version;
version = "8.2.2";
src =
if (packetTracerSource != null) then
packetTracerSource
else
requireFile {
name = names.${version};
hash = hashes.${version};
url = "https://www.netacad.com";
};
src = requireFile {
name = names.${args.version};
hash = hashes.${args.version};
url = "https://www.netacad.com";
buildInputs =
[
autoPatchelfHook
makeWrapper
alsa-lib
dbus
expat
fontconfig
glib
libdrm
libglvnd
libpulseaudio
libudev0-shim
libxkbcommon
libxml2
libxslt
nspr
nss
wayland
]
++ (with xorg; [
libICE
libSM
libX11
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libxcb
xcbutilimage
xcbutilkeysyms
xcbutilrenderutil
xcbutilwm
]);
unpackPhase = ''
runHook preUnpack
${lib.getExe' dpkg "dpkg-deb"} -x $src $out
chmod 755 "$out"
runHook postUnpack
'';
installPhase = ''
runHook preInstall
makeWrapper "$out/opt/pt/bin/PacketTracer" "$out/bin/packettracer8" \
--prefix LD_LIBRARY_PATH : "$out/opt/pt/bin"
runHook postInstall
'';
};
unpackPhase = ''
runHook preUnpack
fhs-env = buildFHSEnv {
name = "ciscoPacketTracer8-fhs-env";
runScript = lib.getExe' unwrapped "packettracer8";
targetPkgs = pkgs: [ libudev0-shim ];
};
in
dpkg-deb -x $src $out
chmod 755 "$out"
stdenvNoCC.mkDerivation {
pname = "ciscoPacketTracer8";
inherit version;
runHook postUnpack
'';
dontUnpack = true;
nativeBuildInputs = [
autoPatchelfHook
copyDesktopItems
dpkg
makeWrapper
qt5.wrapQtAppsHook
];
buildInputs = [
alsa-lib
dbus
expat
fontconfig
glib
qt5.qtbase
qt5.qtmultimedia
qt5.qtnetworkauth
qt5.qtscript
qt5.qtspeech
qt5.qtwebengine
qt5.qtwebsockets
];
installPhase = ''
runHook preInstall
makeWrapper "$out/opt/pt/bin/PacketTracer" "$out/bin/packettracer8" \
"''${qtWrapperArgs[@]}" \
--set QT_QPA_PLATFORMTHEME "" \
--prefix LD_LIBRARY_PATH : "$out/opt/pt/bin"
install -D $out/opt/pt/art/app.png $out/share/icons/hicolor/128x128/apps/ciscoPacketTracer8.png
rm $out/opt/pt/bin/libQt5* -f
mkdir -p $out/bin
ln -s ${fhs-env}/bin/${fhs-env.name} $out/bin/packettracer8
ln -s ${fhs-env}/usr $out/usr
runHook postInstall
'';
@@ -89,25 +145,25 @@ stdenvNoCC.mkDerivation (args: {
(makeDesktopItem {
name = "cisco-pt8.desktop";
desktopName = "Cisco Packet Tracer 8";
icon = "ciscoPacketTracer8";
icon = "${unwrapped}/opt/pt/art/app.png";
exec = "packettracer8 %f";
mimeTypes = [ "application/x-pkt" "application/x-pka" "application/x-pkz" ];
mimeTypes = [
"application/x-pkt"
"application/x-pka"
"application/x-pkz"
];
})
];
dontWrapQtApps = true;
passthru = {
inherit hashes;
};
meta = with lib; {
meta = {
description = "Network simulation tool from Cisco";
homepage = "https://www.netacad.com/courses/packet-tracer";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
maintainers = with maintainers; [ ];
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
mainProgram = "packettracer8";
maintainers = with lib.maintainers; [
gepbird
];
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
}