summary refs log tree commit diff
path: root/pkgs/os-specific/linux/prl-tools
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2022-08-03 23:08:39 +0200
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2022-08-03 23:08:39 +0200
commit9594f1736017355b98976aa93fdb4a5fa5303f94 (patch)
tree6910962749cd5549fc4025db6123fffdb52b6549 /pkgs/os-specific/linux/prl-tools
parentd7007f3b80ddf624db0da015ec83d614825a34e4 (diff)
downloadnixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar.gz
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar.bz2
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar.lz
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar.xz
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.tar.zst
nixpkgs-9594f1736017355b98976aa93fdb4a5fa5303f94.zip
prl-tools: add patch against 5.19
Diffstat (limited to 'pkgs/os-specific/linux/prl-tools')
-rw-r--r--pkgs/os-specific/linux/prl-tools/default.nix30
-rw-r--r--pkgs/os-specific/linux/prl-tools/prl-tools-5.18.patch (renamed from pkgs/os-specific/linux/prl-tools/prl-tools.patch)0
-rw-r--r--pkgs/os-specific/linux/prl-tools/prl-tools-5.19.patch29
3 files changed, 53 insertions, 6 deletions
diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix
index ce0c05346ef..9a2c23d735a 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
index 561371e1e84..561371e1e84 100644
--- a/pkgs/os-specific/linux/prl-tools/prl-tools.patch
+++ b/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 00000000000..5ec00e6dd02
--- /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,