diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix index ce0c05346ef1..9a2c23d735ab 100644 --- a/pkgs/os-specific/linux/prl-tools/default.nix +++ b/pkgs/os-specific/linux/prl-tools/default.nix @@ -1,7 +1,24 @@ -{ stdenv, lib, makeWrapper, p7zip -, gawk, util-linux, xorg, glib, dbus-glib, zlib, bbe, bash, timetrap, netcat, cups -, kernel ? null, libsOnly ? false -, fetchurl, undmg, perl, autoPatchelfHook +{ stdenv +, lib +, makeWrapper +, p7zip +, gawk +, util-linux +, xorg +, glib +, dbus-glib +, zlib +, bbe +, bash +, timetrap +, netcat +, cups +, kernel ? null +, libsOnly ? false +, fetchurl +, undmg +, perl +, autoPatchelfHook }: assert (!libsOnly) -> kernel != null; @@ -14,7 +31,7 @@ stdenv.mkDerivation rec { # We download the full distribution to extract prl-tools-lin.iso from # => ${dmg}/Parallels\ Desktop.app/Contents/Resources/Tools/prl-tools-lin.iso src = fetchurl { - url = "https://download.parallels.com/desktop/v${lib.versions.major version}/${version}/ParallelsDesktop-${version}.dmg"; + url = "https://download.parallels.com/desktop/v${lib.versions.major version}/${version}/ParallelsDesktop-${version}.dmg"; sha256 = "sha256-gjLxQOTFuVghv1Bj+zfbNW97q1IN2rurSnPQi13gzRA="; }; @@ -39,7 +56,8 @@ stdenv.mkDerivation rec { fi ''; - patches = lib.optionals (lib.versionAtLeast kernel.version "5.18") [ ./prl-tools.patch ]; + patches = lib.optional (lib.versionAtLeast kernel.version "5.18") ./prl-tools-5.18.patch + ++ lib.optional (lib.versionAtLeast kernel.version "5.19") ./prl-tools-5.19.patch; kernelVersion = lib.optionalString (!libsOnly) kernel.modDirVersion; kernelDir = lib.optionalString (!libsOnly) "${kernel.dev}/lib/modules/${kernelVersion}"; diff --git a/pkgs/os-specific/linux/prl-tools/prl-tools.patch b/pkgs/os-specific/linux/prl-tools/prl-tools-5.18.patch similarity index 100% rename from pkgs/os-specific/linux/prl-tools/prl-tools.patch rename to pkgs/os-specific/linux/prl-tools/prl-tools-5.18.patch diff --git a/pkgs/os-specific/linux/prl-tools/prl-tools-5.19.patch b/pkgs/os-specific/linux/prl-tools/prl-tools-5.19.patch new file mode 100644 index 000000000000..5ec00e6dd02e --- /dev/null +++ b/pkgs/os-specific/linux/prl-tools/prl-tools-5.19.patch @@ -0,0 +1,29 @@ +diff -puNr prl-tools-build/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c prl-tools-build/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c +--- prl-tools-build/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c ++++ prl-tools-build/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c +@@ -851,7 +851,7 @@ ssize_t prlfs_rw(struct inode *inode, char *buf, size_t size, + loff_t *off, unsigned int rw, int user, int flags); + + +-int prlfs_readpage(struct file *file, struct page *page) { ++int prlfs_read_folio(struct file *file, struct folio *folio) { + char *buf; + ssize_t ret; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) +@@ -859,6 +859,7 @@ int prlfs_readpage(struct file *file, struct page *page) { + #else + struct inode *inode = file->f_dentry->d_inode; + #endif ++ struct page *page = &folio->page; + loff_t off = page->index << PAGE_SHIFT; + + if (!file) { +@@ -950,7 +951,7 @@ out: + } + + static const struct address_space_operations prlfs_aops = { +- .readpage = prlfs_readpage, ++ .read_folio = prlfs_read_folio, + .writepage = prlfs_writepage, + .write_begin = simple_write_begin, + .write_end = prlfs_write_end,