summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-12-31 09:47:26 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-12-31 09:53:02 +0100
commitf9f6f41bff2213e199bded515e9b66d1e5c4d7dd (patch)
tree29c5a75228e31f305f42c5b761709a186e406776 /pkgs/build-support
parentbbcf127c7c9029cba43493d7d25a9d1c65d59152 (diff)
parent468f698f609e123bb0ffae67181d07ac99eb2204 (diff)
downloadnixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar.gz
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar.bz2
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar.lz
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar.xz
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.tar.zst
nixpkgs-f9f6f41bff2213e199bded515e9b66d1e5c4d7dd.zip
Merge branch 'master' into closure-size
TODO: there was more significant refactoring of qtbase and plasma 5.5
on master, and I'm deferring pointing to correct outputs to later.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/build-fhs-userenv/default.nix9
-rw-r--r--pkgs/build-support/emacs/melpa.nix15
-rw-r--r--pkgs/build-support/emacs/melpa2nix.el19
-rw-r--r--pkgs/build-support/emacs/wrapper.nix47
-rwxr-xr-xpkgs/build-support/fetchbzr/nix-prefetch-bzr3
-rw-r--r--pkgs/build-support/fetchzip/default.nix6
-rwxr-xr-xpkgs/build-support/fetchzip/nix-prefetch-zip2
-rw-r--r--pkgs/build-support/make-desktopitem/default.nix5
-rw-r--r--pkgs/build-support/trivial-builders.nix6
-rw-r--r--pkgs/build-support/vm/default.nix4
-rw-r--r--pkgs/build-support/vm/windows/controller/default.nix4
11 files changed, 96 insertions, 24 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/default.nix b/pkgs/build-support/build-fhs-userenv/default.nix
index aa95080ac52..54ce3e76897 100644
--- a/pkgs/build-support/build-fhs-userenv/default.nix
+++ b/pkgs/build-support/build-fhs-userenv/default.nix
@@ -1,8 +1,9 @@
-{ runCommand, lib, writeText, writeScriptBin, stdenv, ruby } :
-{ env, runScript ? "bash", extraBindMounts ? [], extraInstallCommands ? "" } :
+{ runCommand, lib, writeText, writeScriptBin, stdenv, bash, ruby } :
+{ env, runScript ? "${bash}/bin/bash", extraBindMounts ? [], extraInstallCommands ? "" } :
 
 let
   name = env.pname;
+  bash' = "${bash}/bin/bash";
 
   # Sandboxing script
   chroot-user = writeScriptBin "chroot-user" ''
@@ -29,7 +30,7 @@ in runCommand name {
     runCommand "${name}-shell-env" {
       shellHook = ''
         export CHROOTENV_EXTRA_BINDS="${lib.concatStringsSep ":" extraBindMounts}:$CHROOTENV_EXTRA_BINDS"
-        exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init "bash"} "$(pwd)"
+        exec ${chroot-user}/bin/chroot-user ${env} ${bash'} -l ${init bash'} "$(pwd)"
       '';
     } ''
       echo >&2 ""
@@ -42,7 +43,7 @@ in runCommand name {
   cat <<EOF >$out/bin/${name}
   #! ${stdenv.shell}
   export CHROOTENV_EXTRA_BINDS="${lib.concatStringsSep ":" extraBindMounts}:\$CHROOTENV_EXTRA_BINDS"
-  exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init runScript} "\$(pwd)" "\$@"
+  exec ${chroot-user}/bin/chroot-user ${env} ${bash'} -l ${init runScript} "\$(pwd)" "\$@"
   EOF
   chmod +x $out/bin/${name}
   ${extraInstallCommands}
diff --git a/pkgs/build-support/emacs/melpa.nix b/pkgs/build-support/emacs/melpa.nix
index 5eaa995b412..8fd2a00b50a 100644
--- a/pkgs/build-support/emacs/melpa.nix
+++ b/pkgs/build-support/emacs/melpa.nix
@@ -8,6 +8,8 @@ with lib;
 { pname
 , version
 
+, recipeFile ? null
+
 , files ? null
 , fileSpecs ? [ "*.el" "*.el.in" "dir"
                 "*.info" "*.texi" "*.texinfo"
@@ -22,8 +24,8 @@ with lib;
 let
 
   packageBuild = fetchurl {
-    url = https://raw.githubusercontent.com/milkypostman/melpa/12a862e5c5c62ce627dab83d7cf2cca6e8b56c47/package-build.el;
-    sha256 = "1nviyyprypz7nmam9rwli4yv3kxh170glfbznryrp4czxkrjjdhk";
+    url = https://raw.githubusercontent.com/milkypostman/melpa/2b3eb31c077fcaff94b74b757c1ce17650333943/package-build.el;
+    sha256 = "1biwg2pqmmdz5iwqbjdszljazqymvgyyjcnc255nr6qz8mhnx67j";
   };
 
   fname = "${pname}-${version}";
@@ -43,8 +45,17 @@ import ./generic.nix { inherit lib stdenv emacs texinfo; } ({
     runHook preBuild
 
     emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \
+    ${if recipeFile == null
+      then
+      ''
       -f melpa2nix-build-package \
       ${pname} ${version} ${targets}
+      ''
+      else
+      ''
+      -f melpa2nix-build-package-from-recipe \
+      ${pname} ${version} ${recipeFile}
+      ''}
 
     runHook postBuild
   '';
diff --git a/pkgs/build-support/emacs/melpa2nix.el b/pkgs/build-support/emacs/melpa2nix.el
index d54e9d21e25..f1309fc0d57 100644
--- a/pkgs/build-support/emacs/melpa2nix.el
+++ b/pkgs/build-support/emacs/melpa2nix.el
@@ -21,16 +21,25 @@
     (`(,package ,version . ,files)
      (melpa2nix-package-build-archive package version files))))
 
+(defun melpa2nix-build-package-from-recipe ()
+  (if (not noninteractive)
+      (error "`melpa2nix-build-package' is to be used only with -batch"))
+  (pcase command-line-args-left
+    (`(,package ,version ,recipe-file)
+     (let* ((rcp (cdr (package-build--read-from-file recipe-file)))
+            (files (package-build--config-file-list rcp)))
+       (melpa2nix-package-build-archive package version files)))))
+
 (defun melpa2nix-package-build-archive (name version files)
   "Build a package archive for package NAME."
-  (pb/message "\n;;; %s\n" name)
+  (package-build--message "\n;;; %s\n" name)
   (let* ((start-time (current-time))
          (archive-entry (package-build-package name
                                                version
                                                files
                                                package-build-working-dir
                                                package-build-archive-dir)))
-    
-    (pb/message "Built in %.3fs, finished at %s"
-                (time-to-seconds (time-since start-time))
-                (current-time-string))))
+
+    (package-build--message "Built in %.3fs, finished at %s"
+                            (time-to-seconds (time-since start-time))
+                            (current-time-string))))
diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix
index 4020a1aca33..dc4ff03f9e7 100644
--- a/pkgs/build-support/emacs/wrapper.nix
+++ b/pkgs/build-support/emacs/wrapper.nix
@@ -1,8 +1,49 @@
-{ stdenv, makeWrapper, emacs }:
+/*
 
-with stdenv.lib;
+# Usage
 
-explicitRequires: # packages explicitly requested by the user
+`emacsWithPackages` takes a single argument: a function from a package
+set to a list of packages (the packages that will be available in
+Emacs). For example,
+```
+emacsWithPackages (epkgs: [ epkgs.evil epkgs.magit ])
+```
+All the packages in the list should come from the provided package
+set. It is possible to add any package to the list, but the provided
+set is guaranteed to have consistent dependencies and be built with
+the correct version of Emacs.
+
+# Overriding
+
+`emacsWithPackages` inherits the package set which contains it, so the
+correct way to override the provided package set is to override the
+set which contains `emacsWithPackages`. For example, to override
+`emacsPackagesNg.emacsWithPackages`,
+```
+let customEmacsPackages =
+      emacsPackagesNg.override (super: self: {
+        # use a custom version of emacs
+        emacs = ...;
+        # use the unstable MELPA version of magit
+        magit = self.melpaPackages.magit;
+      });
+in customEmacsPackages.emacsWithPackages (epkgs: [ epkgs.evil epkgs.magit ])
+```
+
+*/
+
+{ lib, makeWrapper, stdenv }: self:
+
+with lib; let inherit (self) emacs; in
+
+packagesFun: # packages explicitly requested by the user
+
+let
+  explicitRequires =
+    if builtins.isFunction packagesFun
+      then packagesFun self
+    else packagesFun;
+in
 
 stdenv.mkDerivation {
   name = (appendToName "with-packages" emacs).name;
diff --git a/pkgs/build-support/fetchbzr/nix-prefetch-bzr b/pkgs/build-support/fetchbzr/nix-prefetch-bzr
index 8143fca7025..dbe8a7ef801 100755
--- a/pkgs/build-support/fetchbzr/nix-prefetch-bzr
+++ b/pkgs/build-support/fetchbzr/nix-prefetch-bzr
@@ -26,8 +26,7 @@ repoName=$(echo $url | sed '
   s,.*/\([^/]\+\)/tags/\([^/]\+\)/*$,\1-\2,;t
   s,.*/\([^/]\+\)/*$,\1,;t
 ')
-dstFile=$repoName-r$rev
-test -n "$rev" || dstFile=$repoName
+dstFile="bzr-export"
 
 # If the hash was given, a file with that hash may already be in the
 # store.
diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix
index 46e7d917160..9015f951a51 100644
--- a/pkgs/build-support/fetchzip/default.nix
+++ b/pkgs/build-support/fetchzip/default.nix
@@ -10,6 +10,7 @@
 { # Optionally move the contents of the unpacked tree up one level.
   stripRoot ? true
 , url
+, extraPostFetch ? ""
 , ... } @ args:
 
 lib.overrideDerivation (fetchurl ({
@@ -47,7 +48,8 @@ lib.overrideDerivation (fetchurl ({
       fi
     '' else ''
       mv "$unpackDir"/* "$out/"
-    '');
-} // removeAttrs args [ "stripRoot" ]))
+    '') #*/
+    + extraPostFetch;
+} // removeAttrs args [ "stripRoot" "extraPostFetch" ]))
 # Hackety-hack: we actually need unzip hooks, too
 (x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})
diff --git a/pkgs/build-support/fetchzip/nix-prefetch-zip b/pkgs/build-support/fetchzip/nix-prefetch-zip
index ccc03e087e5..ea55643668d 100755
--- a/pkgs/build-support/fetchzip/nix-prefetch-zip
+++ b/pkgs/build-support/fetchzip/nix-prefetch-zip
@@ -73,7 +73,7 @@ mkdir -p $unpackDirTmp
 unpackDir=$tmp/unpacked/$name
 mkdir -p $unpackDir
 
-downloadedFile=$tmp/$name
+downloadedFile=$tmp/$(basename "$url")
 
 unpackFile() {
   local curSrc="$1"
diff --git a/pkgs/build-support/make-desktopitem/default.nix b/pkgs/build-support/make-desktopitem/default.nix
index 1a03faae54c..d4baf17adf1 100644
--- a/pkgs/build-support/make-desktopitem/default.nix
+++ b/pkgs/build-support/make-desktopitem/default.nix
@@ -9,6 +9,7 @@
 , genericName
 , mimeType ? ""
 , categories ? "Application;Other;"
+, startupNotify ? null
 }:
 
 stdenv.mkDerivation {
@@ -26,6 +27,8 @@ stdenv.mkDerivation {
     GenericName=${genericName}
     MimeType=${mimeType}
     Categories=${categories}
-    EOF
+    ${if startupNotify == null then ''EOF'' else ''
+    StartupNotify=${startupNotify}
+    EOF''}
   '';
 }
diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix
index 9203425b20a..1350e36940b 100644
--- a/pkgs/build-support/trivial-builders.nix
+++ b/pkgs/build-support/trivial-builders.nix
@@ -153,4 +153,10 @@ _EOF_
         exec ${bin} "$@"
       '';
 
+  # Copy a path to the Nix store.
+  copyPathToStore = builtins.filterSource (p: t: true);
+
+  # Copy a list of paths to the Nix store.
+  copyPathsToStore = builtins.map copyPathToStore;
+
 }
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 317594d8f9f..2311b0d2fec 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -118,7 +118,7 @@ rec {
 
     echo "mounting Nix store..."
     mkdir -p /fs/nix/store
-    mount -t 9p store /fs/nix/store -o trans=virtio,version=9p2000.L,msize=262144,cache=loose
+    mount -t 9p store /fs/nix/store -o trans=virtio,version=9p2000.L,cache=loose
 
     mkdir -p /fs/tmp /fs/run /fs/var
     mount -t tmpfs -o "mode=1777" none /fs/tmp
@@ -127,7 +127,7 @@ rec {
 
     echo "mounting host's temporary directory..."
     mkdir -p /fs/tmp/xchg
-    mount -t 9p xchg /fs/tmp/xchg -o trans=virtio,version=9p2000.L,msize=262144,cache=loose
+    mount -t 9p xchg /fs/tmp/xchg -o trans=virtio,version=9p2000.L,cache=loose
 
     mkdir -p /fs/proc
     mount -t proc none /fs/proc
diff --git a/pkgs/build-support/vm/windows/controller/default.nix b/pkgs/build-support/vm/windows/controller/default.nix
index 0beaf401758..1c8e6af83b8 100644
--- a/pkgs/build-support/vm/windows/controller/default.nix
+++ b/pkgs/build-support/vm/windows/controller/default.nix
@@ -48,11 +48,11 @@ let
     mount -t proc none /fs/proc
 
     mount -t 9p \
-      -o trans=virtio,version=9p2000.L,msize=262144,cache=loose \
+      -o trans=virtio,version=9p2000.L,cache=loose \
       store /fs/nix/store
 
     mount -t 9p \
-      -o trans=virtio,version=9p2000.L,msize=262144,cache=loose \
+      -o trans=virtio,version=9p2000.L,cache=loose \
       xchg /fs/xchg
 
     echo root:x:0:0::/root:/bin/false > /fs/etc/passwd