diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2015-12-31 09:47:26 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2015-12-31 09:53:02 +0100 |
commit | f9f6f41bff2213e199bded515e9b66d1e5c4d7dd (patch) | |
tree | 29c5a75228e31f305f42c5b761709a186e406776 /pkgs/build-support | |
parent | bbcf127c7c9029cba43493d7d25a9d1c65d59152 (diff) | |
parent | 468f698f609e123bb0ffae67181d07ac99eb2204 (diff) | |
download | nixpkgs-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.nix | 9 | ||||
-rw-r--r-- | pkgs/build-support/emacs/melpa.nix | 15 | ||||
-rw-r--r-- | pkgs/build-support/emacs/melpa2nix.el | 19 | ||||
-rw-r--r-- | pkgs/build-support/emacs/wrapper.nix | 47 | ||||
-rwxr-xr-x | pkgs/build-support/fetchbzr/nix-prefetch-bzr | 3 | ||||
-rw-r--r-- | pkgs/build-support/fetchzip/default.nix | 6 | ||||
-rwxr-xr-x | pkgs/build-support/fetchzip/nix-prefetch-zip | 2 | ||||
-rw-r--r-- | pkgs/build-support/make-desktopitem/default.nix | 5 | ||||
-rw-r--r-- | pkgs/build-support/trivial-builders.nix | 6 | ||||
-rw-r--r-- | pkgs/build-support/vm/default.nix | 4 | ||||
-rw-r--r-- | pkgs/build-support/vm/windows/controller/default.nix | 4 |
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 |