From fd3052901c13af372228502350c444dddc21cb6e Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Tue, 24 Sep 2019 10:47:34 +0200 Subject: [PATCH 1/3] lib/versions: expose splitVersion --- lib/default.nix | 2 ++ lib/versions.nix | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 18d2dfae1e18..f293a1defb11 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -134,5 +134,7 @@ let mergeAttrsByFuncDefaultsClean mergeAttrBy fakeSha256 fakeSha512 nixType imap; + inherit (versions) + splitVersion; }); in lib diff --git a/lib/versions.nix b/lib/versions.nix index 2c05445b3dd0..0e9d81ac78b1 100644 --- a/lib/versions.nix +++ b/lib/versions.nix @@ -1,14 +1,16 @@ /* Version string functions. */ { lib }: -let +rec { + /* Break a version string into its component parts. + + Example: + splitVersion "1.2.3" + => ["1" "2" "3"] + */ splitVersion = builtins.splitVersion or (lib.splitString "."); -in - -{ - /* Get the major version string from a string. Example: From 2d4352b1ae57a06670b451f1b4426beff9796628 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Tue, 24 Sep 2019 11:27:14 +0200 Subject: [PATCH 2/3] lib: basic tests for lib.versions --- lib/tests/misc.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index d8f412d3fc49..e5d76d4e57b7 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -102,6 +102,21 @@ runTests { expected = [ "2001" "db8" "0" "0042" "" "8a2e" "370" "" ]; }; + testSplitVersionSingle = { + expr = versions.splitVersion "1"; + expected = [ "1" ]; + }; + + testSplitVersionDouble = { + expr = versions.splitVersion "1.2"; + expected = [ "1" "2" ]; + }; + + testSplitVersionTriple = { + expr = versions.splitVersion "1.2.3"; + expected = [ "1" "2" "3" ]; + }; + testIsStorePath = { expr = let goodPath = From bad07dfac57c36dff1c7b3fd4020fea806d7be93 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Tue, 24 Sep 2019 11:24:13 +0200 Subject: [PATCH 3/3] tree-wide: replace uses of splitString "." with lib.versions Quoting from the splitString docstring: NOTE: this function is not performant and should never be used. This replaces trivial uses of splitString for splitting version strings with the (potentially builtin) splitVersion. --- nixos/modules/services/web-servers/apache-httpd/default.nix | 2 +- pkgs/applications/misc/mupdf/default.nix | 3 +-- pkgs/applications/misc/workrave/default.nix | 2 +- pkgs/applications/networking/cluster/openshift/default.nix | 2 +- pkgs/applications/science/logic/yices/default.nix | 2 +- .../virtualization/virtualbox/guest-additions/default.nix | 2 +- pkgs/build-support/rust/build-rust-crate/configure-crate.nix | 3 +-- pkgs/development/compilers/cudatoolkit/default.nix | 4 +--- pkgs/development/compilers/llvm/3.9/llvm.nix | 2 +- pkgs/development/compilers/llvm/4/llvm.nix | 2 +- pkgs/development/compilers/llvm/5/llvm.nix | 2 +- pkgs/development/compilers/llvm/6/llvm.nix | 2 +- pkgs/development/compilers/llvm/7/llvm.nix | 2 +- pkgs/development/compilers/llvm/8/llvm.nix | 2 +- pkgs/development/interpreters/lfe/generic-builder.nix | 4 ++-- pkgs/development/libraries/mesa/default.nix | 2 +- pkgs/development/libraries/science/math/cudnn/generic.nix | 2 +- pkgs/development/libraries/sqlite/archive-version.nix | 4 ++-- pkgs/development/lua-modules/overrides.nix | 2 +- pkgs/games/dwarf-fortress/game.nix | 2 +- pkgs/misc/emulators/epsxe/default.nix | 2 +- pkgs/os-specific/bsd/netbsd/default.nix | 4 ++-- pkgs/os-specific/linux/kernel/linux-4.14.nix | 4 ++-- pkgs/os-specific/linux/kernel/linux-4.19.nix | 4 ++-- pkgs/os-specific/linux/kernel/linux-5.2.nix | 4 ++-- pkgs/os-specific/linux/kernel/linux-5.3.nix | 4 ++-- pkgs/os-specific/linux/prl-tools/default.nix | 4 ++-- 27 files changed, 35 insertions(+), 39 deletions(-) diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix index 098160ee3692..b0374d949fc5 100644 --- a/nixos/modules/services/web-servers/apache-httpd/default.nix +++ b/nixos/modules/services/web-servers/apache-httpd/default.nix @@ -12,7 +12,7 @@ let php = mainCfg.phpPackage.override { apacheHttpd = httpd.dev; /* otherwise it only gets .out */ }; - phpMajorVersion = head (splitString "." php.version); + phpMajorVersion = lib.versions.major (lib.getVersion php); mod_perl = pkgs.apacheHttpdPackages.mod_perl.override { apacheHttpd = httpd; }; diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index ddd325214b2f..7420932e0b68 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -9,8 +9,7 @@ let # OpenJPEG version is hardcoded in package source openJpegVersion = with stdenv; - lib.concatStringsSep "." (lib.lists.take 2 - (lib.splitString "." (lib.getVersion openjpeg))); + lib.versions.majorMinor (lib.getVersion openjpeg); in stdenv.mkDerivation rec { diff --git a/pkgs/applications/misc/workrave/default.nix b/pkgs/applications/misc/workrave/default.nix index a3c9d735ff8d..9ad010deb16d 100644 --- a/pkgs/applications/misc/workrave/default.nix +++ b/pkgs/applications/misc/workrave/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { in fetchFromGitHub { sha256 = "0v2mx2idaxlsyv5w66b7pknlill9j9i2gqcs3vq54gak7ix9fj1p"; rev = with stdenv.lib; - "v" + concatStringsSep "_" (splitString "." version); + "v" + concatStringsSep "_" (splitVersion version); repo = "workrave"; owner = "rcaelers"; }; diff --git a/pkgs/applications/networking/cluster/openshift/default.nix b/pkgs/applications/networking/cluster/openshift/default.nix index 758786f586a6..3b96ef4ea45e 100644 --- a/pkgs/applications/networking/cluster/openshift/default.nix +++ b/pkgs/applications/networking/cluster/openshift/default.nix @@ -10,7 +10,7 @@ with lib; let version = "3.11.0"; - ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version); + ver = stdenv.lib.elemAt (stdenv.lib.splitVersion version); versionMajor = ver 0; versionMinor = ver 1; versionPatch = ver 2; diff --git a/pkgs/applications/science/logic/yices/default.nix b/pkgs/applications/science/logic/yices/default.nix index 76ed934fb39e..b8dd528a11c1 100644 --- a/pkgs/applications/science/logic/yices/default.nix +++ b/pkgs/applications/science/logic/yices/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { # Includes a fix for the embedded soname being libyices.so.2.5, but # only installing the libyices.so.2.5.x file. installPhase = let - ver_XdotY = builtins.concatStringsSep "." (stdenv.lib.take 2 (stdenv.lib.splitString "." version)); + ver_XdotY = stdenv.lib.versions.majorMinor version; in '' make install LDCONFIG=true ln -sfr $out/lib/libyices.so.{${version},${ver_XdotY}} diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index ad860b07bdf6..1b93121f14e5 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -3,7 +3,7 @@ let version = virtualbox.version; - xserverVListFunc = builtins.elemAt (stdenv.lib.splitString "." xorg.xorgserver.version); + xserverVListFunc = builtins.elemAt (stdenv.lib.splitVersion xorg.xorgserver.version); # Forced to 1.18 in # as it even fails to build otherwise. Still, override this even here, diff --git a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix index 2a40240671cb..2c7226b09622 100644 --- a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix @@ -21,7 +21,7 @@ , workspace_member }: let version_ = lib.splitString "-" crateVersion; versionPre = if lib.tail version_ == [] then "" else builtins.elemAt version_ 1; - version = lib.splitString "." (lib.head version_); + version = lib.splitVersion (lib.head version_); rustcOpts = lib.lists.foldl' (opts: opt: opts + " " + opt) (if release then "-C opt-level=3" else "-C debuginfo=2") (["-C codegen-units=$NIX_BUILD_CORES"] ++ extraRustcOpts); @@ -150,4 +150,3 @@ in '' fi runHook postConfigure '' - diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index 8aab9580232b..0a7b74b465f4 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -180,9 +180,7 @@ let ''; passthru = { cc = gcc; - majorVersion = - let versionParts = lib.splitString "." version; - in "${lib.elemAt versionParts 0}.${lib.elemAt versionParts 1}"; + majorVersion = lib.versions.majorMinor version; }; meta = with stdenv.lib; { diff --git a/pkgs/development/compilers/llvm/3.9/llvm.nix b/pkgs/development/compilers/llvm/3.9/llvm.nix index 4dde3be277ab..474cfcde9c0b 100644 --- a/pkgs/development/compilers/llvm/3.9/llvm.nix +++ b/pkgs/development/compilers/llvm/3.9/llvm.nix @@ -22,7 +22,7 @@ assert (stdenv.hostPlatform != stdenv.buildPlatform) -> !enableSharedLibraries; let # Used when creating a versioned symlinks of libLLVM.dylib versionSuffixes = with stdenv.lib; - let parts = splitString "." version; in + let parts = splitVersion version; in imap (i: _: concatStringsSep "." (take i parts)) parts; in diff --git a/pkgs/development/compilers/llvm/4/llvm.nix b/pkgs/development/compilers/llvm/4/llvm.nix index 7e8559953524..ac5dcbe6b942 100644 --- a/pkgs/development/compilers/llvm/4/llvm.nix +++ b/pkgs/development/compilers/llvm/4/llvm.nix @@ -19,7 +19,7 @@ let # Used when creating a versioned symlinks of libLLVM.dylib versionSuffixes = with stdenv.lib; - let parts = splitString "." release_version; in + let parts = splitVersion release_version; in imap (i: _: concatStringsSep "." (take i parts)) parts; in diff --git a/pkgs/development/compilers/llvm/5/llvm.nix b/pkgs/development/compilers/llvm/5/llvm.nix index 02db395db571..2fe7df7695b8 100644 --- a/pkgs/development/compilers/llvm/5/llvm.nix +++ b/pkgs/development/compilers/llvm/5/llvm.nix @@ -18,7 +18,7 @@ let # Used when creating a versioned symlinks of libLLVM.dylib versionSuffixes = with stdenv.lib; - let parts = splitString "." release_version; in + let parts = splitVersion release_version; in imap (i: _: concatStringsSep "." (take i parts)) parts; in diff --git a/pkgs/development/compilers/llvm/6/llvm.nix b/pkgs/development/compilers/llvm/6/llvm.nix index 2586602d7378..a250c9fefac7 100644 --- a/pkgs/development/compilers/llvm/6/llvm.nix +++ b/pkgs/development/compilers/llvm/6/llvm.nix @@ -21,7 +21,7 @@ let # Used when creating a versioned symlinks of libLLVM.dylib versionSuffixes = with stdenv.lib; - let parts = splitString "." release_version; in + let parts = splitVersion release_version; in imap (i: _: concatStringsSep "." (take i parts)) parts; in diff --git a/pkgs/development/compilers/llvm/7/llvm.nix b/pkgs/development/compilers/llvm/7/llvm.nix index cfcda02b4131..068791406e83 100644 --- a/pkgs/development/compilers/llvm/7/llvm.nix +++ b/pkgs/development/compilers/llvm/7/llvm.nix @@ -26,7 +26,7 @@ let # Used when creating a versioned symlinks of libLLVM.dylib versionSuffixes = with stdenv.lib; - let parts = splitString "." release_version; in + let parts = splitVersion release_version; in imap (i: _: concatStringsSep "." (take i parts)) parts; in stdenv.mkDerivation ({ diff --git a/pkgs/development/compilers/llvm/8/llvm.nix b/pkgs/development/compilers/llvm/8/llvm.nix index 70e666ba27de..160e2a723666 100644 --- a/pkgs/development/compilers/llvm/8/llvm.nix +++ b/pkgs/development/compilers/llvm/8/llvm.nix @@ -25,7 +25,7 @@ let # Used when creating a version-suffixed symlink of libLLVM.dylib shortVersion = with stdenv.lib; - concatStringsSep "." (take 1 (splitString "." release_version)); + concatStringsSep "." (take 1 (splitVersion release_version)); in stdenv.mkDerivation ({ name = "llvm-${version}"; diff --git a/pkgs/development/interpreters/lfe/generic-builder.nix b/pkgs/development/interpreters/lfe/generic-builder.nix index fb034a471e7c..6e74229e1e88 100644 --- a/pkgs/development/interpreters/lfe/generic-builder.nix +++ b/pkgs/development/interpreters/lfe/generic-builder.nix @@ -9,9 +9,9 @@ }: let - inherit (stdenv.lib) getVersion versionAtLeast splitString head; + inherit (stdenv.lib) getVersion versionAtLeast versions; - mainVersion = head (splitString "." (getVersion erlang)); + mainVersion = versions.major (getVersion erlang); proper = buildHex { name = "proper"; diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index cf1bdaf64323..3a7c93413d54 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -28,7 +28,7 @@ with stdenv.lib; let version = "19.1.5"; - branch = head (splitString "." version); + branch = versions.major version; in stdenv.mkDerivation { diff --git a/pkgs/development/libraries/science/math/cudnn/generic.nix b/pkgs/development/libraries/science/math/cudnn/generic.nix index f0f5829ce465..5a17e807bd43 100644 --- a/pkgs/development/libraries/science/math/cudnn/generic.nix +++ b/pkgs/development/libraries/science/math/cudnn/generic.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation { passthru = { inherit cudatoolkit; - majorVersion = lib.head (lib.splitString "." version); + majorVersion = lib.versions.major version; }; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/sqlite/archive-version.nix b/pkgs/development/libraries/sqlite/archive-version.nix index 1f312ecef23a..75d70680fbf9 100644 --- a/pkgs/development/libraries/sqlite/archive-version.nix +++ b/pkgs/development/libraries/sqlite/archive-version.nix @@ -1,9 +1,9 @@ lib: version: with lib; - + let - fragments = splitString "." version; + fragments = splitVersion version; major = head fragments; minor = concatMapStrings (fixedWidthNumber 2) (tail fragments); in diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix index 233503c2eca8..1f1dc45246b4 100644 --- a/pkgs/development/lua-modules/overrides.nix +++ b/pkgs/development/lua-modules/overrides.nix @@ -29,7 +29,7 @@ with super; # Parse out a version number without the Lua version inserted version = with pkgs.lib; let version' = super.cqueues.version; - rel = splitString "." version'; + rel = splitVersion version'; date = head rel; rev = last (splitString "-" (last rel)); in "${date}-${rev}"; diff --git a/pkgs/games/dwarf-fortress/game.nix b/pkgs/games/dwarf-fortress/game.nix index 291e32b6406c..d3a265294243 100644 --- a/pkgs/games/dwarf-fortress/game.nix +++ b/pkgs/games/dwarf-fortress/game.nix @@ -26,7 +26,7 @@ let i686-cygwin = "win32"; }; - dfVersionTriple = splitString "." dfVersion; + dfVersionTriple = splitVersion dfVersion; baseVersion = elemAt dfVersionTriple 1; patchVersion = elemAt dfVersionTriple 2; diff --git a/pkgs/misc/emulators/epsxe/default.nix b/pkgs/misc/emulators/epsxe/default.nix index 6950e12e889a..b9923def6f2c 100644 --- a/pkgs/misc/emulators/epsxe/default.nix +++ b/pkgs/misc/emulators/epsxe/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { version = "2.0.5"; src = let - version2 = concatStrings (splitString "." version); + version2 = replaceStrings ["."] [""] version; platform = "linux" + (optionalString stdenv.is64bit "_x64"); in fetchurl { url = "https://www.epsxe.com/files/ePSXe${version2}${platform}.zip"; diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index 7370901f3193..f724fd33939e 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -68,9 +68,9 @@ let } // lib.optionalAttrs stdenv'.isDarwin { MKRELRO = "no"; } // lib.optionalAttrs (stdenv'.cc.isClang or false) { - HAVE_LLVM = lib.head (lib.splitString "." (lib.getVersion stdenv'.cc.cc)); + HAVE_LLVM = lib.versions.major (lib.getVersion stdenv'.cc.cc); } // lib.optionalAttrs (stdenv'.cc.isGNU or false) { - HAVE_GCC = lib.head (lib.splitString "." (lib.getVersion stdenv'.cc.cc)); + HAVE_GCC = lib.versions.major (lib.getVersion stdenv'.cc.cc); } // lib.optionalAttrs (attrs.headersOnly or false) { installPhase = "includesPhase"; dontBuild = true; diff --git a/pkgs/os-specific/linux/kernel/linux-4.14.nix b/pkgs/os-specific/linux/kernel/linux-4.14.nix index c5931f2da110..64288071976d 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.14.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.14.nix @@ -6,10 +6,10 @@ buildLinux (args // rec { version = "4.14.145"; # modDirVersion needs to be x.y.z, will automatically add .0 if needed - modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg; + modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg; # branchVersion needs to be x.y - extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version))); + extraMeta.branch = versions.majorMinor version; src = fetchurl { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; diff --git a/pkgs/os-specific/linux/kernel/linux-4.19.nix b/pkgs/os-specific/linux/kernel/linux-4.19.nix index 5e0e5f882e48..c4735415d1da 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.19.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.19.nix @@ -6,10 +6,10 @@ buildLinux (args // rec { version = "4.19.74"; # modDirVersion needs to be x.y.z, will automatically add .0 if needed - modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg; + modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg; # branchVersion needs to be x.y - extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version))); + extraMeta.branch = versions.majorMinor version; src = fetchurl { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; diff --git a/pkgs/os-specific/linux/kernel/linux-5.2.nix b/pkgs/os-specific/linux/kernel/linux-5.2.nix index 69cfada34223..13856d146002 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.2.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.2.nix @@ -6,10 +6,10 @@ buildLinux (args // rec { version = "5.2.16"; # modDirVersion needs to be x.y.z, will automatically add .0 if needed - modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg; + modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg; # branchVersion needs to be x.y - extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version))); + extraMeta.branch = versions.majorMinor version; src = fetchurl { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; diff --git a/pkgs/os-specific/linux/kernel/linux-5.3.nix b/pkgs/os-specific/linux/kernel/linux-5.3.nix index e9cb412d8dbb..ebc548ea5b4b 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.3.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.3.nix @@ -6,10 +6,10 @@ buildLinux (args // rec { version = "5.3"; # modDirVersion needs to be x.y.z, will automatically add .0 if needed - modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg; + modDirVersion = if (modDirVersionArg == null) then concatStringsSep "." (take 3 (splitVersion "${version}.0")) else modDirVersionArg; # branchVersion needs to be x.y - extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version))); + extraMeta.branch = versions.majorMinor version; src = fetchurl { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix index 3daab3917e84..5f84b5dcc662 100644 --- a/pkgs/os-specific/linux/prl-tools/default.nix +++ b/pkgs/os-specific/linux/prl-tools/default.nix @@ -8,8 +8,8 @@ assert (!libsOnly) -> kernel != null; # Disable for kernels 4.15 and above due to compatibility issues assert kernel != null -> stdenv.lib.versionOlder kernel.version "4.15"; -let xorgFullVer = (builtins.parseDrvName xorg.xorgserver.name).version; - xorgVer = lib.concatStringsSep "." (lib.take 2 (lib.splitString "." xorgFullVer)); +let xorgFullVer = lib.getVersion xorg.xorgserver; + xorgVer = lib.versions.majorMinor xorgFullVer; x64 = if stdenv.hostPlatform.system == "x86_64-linux" then true else if stdenv.hostPlatform.system == "i686-linux" then false else throw "Parallels Tools for Linux only support {x86-64,i686}-linux targets";