about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2020-04-24 11:54:29 +0200
committerGitHub <noreply@github.com>2020-04-24 11:54:29 +0200
commit0d99474a9b38e476f82f10ae99f4b649fb66c727 (patch)
tree7fa172706c36532321742d8c1af8113d60755c80 /pkgs/applications
parent67a61fbd34fe2494f22668169e3dc79e8967852a (diff)
parent0481e09ad3bace6dc0c93791f031b62316041f4f (diff)
Merge pull request #85556 from B4dM4n/virtualbox-616
virtualbox: 6.1.4 -> 6.1.6
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix14
-rw-r--r--pkgs/applications/virtualization/virtualbox/extpack.nix2
-rw-r--r--pkgs/applications/virtualization/virtualbox/guest-additions/default.nix2
-rwxr-xr-xpkgs/applications/virtualization/virtualbox/update.py85
-rwxr-xr-xpkgs/applications/virtualization/virtualbox/update.sh44
5 files changed, 55 insertions, 92 deletions
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index 9d784d88a4f58..df7b81a43c8a7 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -19,10 +19,9 @@ with stdenv.lib;
 let
   python = python3;
   buildType = "release";
-  # Remember to change the extpackRev and version in extpack.nix and
-  # guest-additions/default.nix as well.
-  main = "59f8f5774473f593e3eb5940e2a337e0674bcd9854164b2578fd43f896260c99";
-  version = "6.1.4";
+  # Use maintainers/scripts/update.nix to update the version and all related hashes or
+  # change the hashes in extpack.nix and guest-additions/default.nix as well manually.
+  version = "6.1.6";
 
   iasl' = iasl.overrideAttrs (old: rec {
     inherit (old) pname;
@@ -39,7 +38,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
-    sha256 = main;
+    sha256 = "b031c30d770f28c5f884071ad933e8c1f83e65b93aaba03a4012077c1d90a54f";
   };
 
   outputs = [ "out" "modsrc" ];
@@ -108,6 +107,10 @@ in stdenv.mkDerivation {
   postPatch = ''
     sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
       src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
+  '' + optionalString headless ''
+    # Fix compile error in version 6.1.6
+    substituteInPlace src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-x11-stubs.cpp \
+      --replace PSHCLFORMATDATA PSHCLFORMATS
   '';
 
   # first line: ugly hack, and it isn't yet clear why it's a problem
@@ -216,6 +219,7 @@ in stdenv.mkDerivation {
   passthru = {
     inherit version;       # for guest additions
     inherit extensionPack; # for inclusion in profile to prevent gc
+    updateScript = ./update.sh;
   };
 
   meta = {
diff --git a/pkgs/applications/virtualization/virtualbox/extpack.nix b/pkgs/applications/virtualization/virtualbox/extpack.nix
index d50d3b59e24b3..c9918b1cedf48 100644
--- a/pkgs/applications/virtualization/virtualbox/extpack.nix
+++ b/pkgs/applications/virtualization/virtualbox/extpack.nix
@@ -12,7 +12,7 @@ fetchurl rec {
     # Manually sha256sum the extensionPack file, must be hex!
     # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
     # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
-    let value = "3b73798d776ff223ea8025b1a45001762f8d4e5bcd1ea61449773c1249935800";
+    let value = "80b96b4b51a502141f6a8981f1493ade08a00762622c39e48319e5b122119bf3";
     in assert (builtins.stringLength value) == 64; value;
 
   meta = {
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
index fdb393a94ebed..4275bc0542e8f 100644
--- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -26,7 +26,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
-    sha256 = "e2846a7576cce1b92a7c0744f41eaac750248d6e31dfca5c45d5766648b394c7";
+    sha256 = "bcde4691dea7de93b65a10a43dda2b8f52e570f820992ad281c9bb5c8dede181";
   };
 
   KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
diff --git a/pkgs/applications/virtualization/virtualbox/update.py b/pkgs/applications/virtualization/virtualbox/update.py
deleted file mode 100755
index 6e8bfd5c82502..0000000000000
--- a/pkgs/applications/virtualization/virtualbox/update.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i python3 -p python3
-
-import os
-import re
-import json
-import urllib.request
-
-from distutils.version import LooseVersion
-
-UPSTREAM_INFO_FILE = os.path.join(
-    os.path.dirname(os.path.abspath(__file__)),
-    "upstream-info.json"
-)
-
-
-def fetch_latest_version():
-    url = "http://download.virtualbox.org/virtualbox/LATEST.TXT"
-    return urllib.request.urlopen(url).read().strip().decode()
-
-
-def load_upstream_info():
-    try:
-        with open(UPSTREAM_INFO_FILE, 'r') as fp:
-            return json.load(fp)
-    except FileNotFoundError:
-        return {'version': "0"}
-
-
-def save_upstream_info(contents):
-    remark = "Generated using update.py from the same directory."
-    contents['__NOTE'] = remark
-    data = json.dumps(contents, indent=2, sort_keys=True)
-    with open(UPSTREAM_INFO_FILE, 'w') as fp:
-        fp.write(data + "\n")
-
-
-def fetch_file_table(version):
-    url = "http://download.virtualbox.org/virtualbox/{}/SHA256SUMS"
-    url = url.format(version)
-    result = {}
-    for line in urllib.request.urlopen(url):
-        sha, name = line.rstrip().split()
-        result[name.lstrip(b'*').decode()] = sha.decode()
-    return result
-
-
-def update_to_version(version):
-    extpack_start = 'Oracle_VM_VirtualBox_Extension_Pack-'
-    version_re = version.replace('.', '\\.')
-    attribute_map = {
-        'extpack': r'^' + extpack_start + r'[^-]+-[^.]+.vbox-extpack$',
-        'extpackRev': r'^' + extpack_start + r'[^-]+-([^.]+).vbox-extpack$',
-        'main': r'^VirtualBox-' + version_re + r'.tar.bz2$',
-        'guest': r'^VBoxGuestAdditions_' + version_re + r'.iso$',
-    }
-    table = fetch_file_table(version)
-    new_attrs = {'version': version}
-    for attr, searchexpr in attribute_map.items():
-        result = [re.search(searchexpr, key) for key in table.keys()]
-        filtered = filter(lambda m: m is not None, result)
-        found = [m.groups()[0] if len(m.groups()) > 0 else table[m.group(0)]
-                 for m in filtered if m is not None]
-
-        if len(found) == 0:
-            msg = "No package found for attribute {}".format(attr)
-            raise AssertionError(msg)
-        elif len(found) != 1:
-            msg = "More than one package found for attribute {}: ".format(attr)
-            msg += ', '.join(found)
-            raise AssertionError(msg)
-        else:
-            new_attrs[attr] = found[0]
-    return new_attrs
-
-
-info = load_upstream_info()
-latest = fetch_latest_version()
-if LooseVersion(info['version']) < LooseVersion(latest):
-    print("Updating to version {}...".format(latest), end="", flush=True)
-    new_attrs = update_to_version(latest)
-    save_upstream_info(new_attrs)
-    print(" done.")
-else:
-    print("Version {} is already the latest one.".format(info['version']))
diff --git a/pkgs/applications/virtualization/virtualbox/update.sh b/pkgs/applications/virtualization/virtualbox/update.sh
new file mode 100755
index 0000000000000..fcd02ae8a27b6
--- /dev/null
+++ b/pkgs/applications/virtualization/virtualbox/update.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq
+
+set -xeuo pipefail
+
+nixpkgs="$(git rev-parse --show-toplevel)"
+
+attr=virtualbox
+oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; $attr.version or (builtins.parseDrvName $attr.name).version" | tr -d '"')"
+latestVersion="$(curl -sS https://download.virtualbox.org/virtualbox/LATEST.TXT)"
+
+function fileShaSum() {
+  echo "$1" | grep -w $2 | cut -f1 -d' '
+}
+function oldHash() {
+  nix-instantiate --eval --strict -A "$1.drvAttrs.outputHash" | tr -d '"'
+}
+function nixFile() {
+  nix-instantiate --eval --strict -A "${1}.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/'
+}
+
+if [ ! "$oldVersion" = "$latestVersion" ]; then
+  shaSums=$(curl -sS https://download.virtualbox.org/virtualbox/$latestVersion/SHA256SUMS)
+
+  virtualBoxShaSum=$(fileShaSum "$shaSums" "VirtualBox-$latestVersion.tar.bz2")
+  extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VM_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack")
+  guestAdditionsShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso")
+
+  virtualboxNixFile=$(nixFile ${attr})
+  extpackNixFile=$(nixFile ${attr}Extpack)
+  guestAdditionsNixFile=$(nixFile linuxPackages.${attr}GuestAdditions)
+
+  extpackOldShaSum=$(oldHash ${attr}Extpack)
+  guestAdditionsOldShaSum=$(oldHash linuxPackages.${attr}GuestAdditions.src)
+
+  update-source-version $attr $latestVersion $virtualBoxShaSum
+  sed -i -e 's|value = "'$extpackOldShaSum'"|value = "'$extpackShaSum'"|' $extpackNixFile
+  sed -i -e 's|sha256 = "'$guestAdditionsOldShaSum'"|sha256 = "'$guestAdditionsShaSum'"|' $guestAdditionsNixFile
+
+  git add $virtualboxNixFile $extpackNixFile $guestAdditionsNixFile
+  git commit -m "$attr: ${oldVersion} -> ${latestVersion}"
+else
+  echo "$attr is already up-to-date"
+fi