Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ciscoPacketTracer8: fix script modules #356289

Merged
merged 6 commits into from
Dec 31, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
198 changes: 127 additions & 71 deletions pkgs/by-name/ci/ciscoPacketTracer8/package.nix
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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";

version = "8.2.2";

src = requireFile {
name = names.${args.version};
hash = hashes.${args.version};
url = "https://www.netacad.com";
unwrapped = stdenvNoCC.mkDerivation {
name = "ciscoPacketTracer8-unwrapped";
inherit version;

src =
if (packetTracerSource != null) then
packetTracerSource
else
requireFile {
name = names.${version};
hash = hashes.${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
'';
Expand All @@ -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 ];
};
})
}
Loading