diff options
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r-- | pkgs/os-specific/linux/audit/default.nix | 5 | ||||
-rw-r--r-- | pkgs/os-specific/linux/nixos-rebuild/default.nix | 6 | ||||
-rwxr-xr-x | pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh | 86 | ||||
-rw-r--r-- | pkgs/os-specific/linux/pflask/default.nix | 18 | ||||
-rw-r--r-- | pkgs/os-specific/linux/smem/default.nix | 4 |
5 files changed, 79 insertions, 40 deletions
diff --git a/pkgs/os-specific/linux/audit/default.nix b/pkgs/os-specific/linux/audit/default.nix index de71b7d8c3e..e9762f44dcd 100644 --- a/pkgs/os-specific/linux/audit/default.nix +++ b/pkgs/os-specific/linux/audit/default.nix @@ -3,7 +3,10 @@ runCommand, autoreconfHook, autoconf, automake, libtool, - enablePython ? true, python3, swig, + # Enabling python support while cross compiling would be possible, but + # the configure script tries executing python to gather info instead of + # relying on python3-config exclusively + enablePython ? stdenv.hostPlatform == stdenv.buildPlatform, python3, swig, linuxHeaders ? stdenv.cc.libc.linuxHeaders }: diff --git a/pkgs/os-specific/linux/nixos-rebuild/default.nix b/pkgs/os-specific/linux/nixos-rebuild/default.nix index 08bba5a428d..58712835d60 100644 --- a/pkgs/os-specific/linux/nixos-rebuild/default.nix +++ b/pkgs/os-specific/linux/nixos-rebuild/default.nix @@ -5,6 +5,7 @@ , gnugrep , nix , lib +, nixosTests }: let fallback = import ./../../../../nixos/modules/installer/tools/nix-fallback-paths.nix; @@ -19,4 +20,9 @@ substituteAll { nix_i686_linux = fallback.i686-linux; nix_aarch64_linux = fallback.aarch64-linux; path = lib.makeBinPath [ coreutils gnused gnugrep ]; + + # run some a simple installer tests to make sure nixos-rebuild still works for them + passthru.tests = { + simple-installer-test = nixosTests.installer.simple; + }; } diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh index 5f950eb8b76..e7c6bd01604 100755 --- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh @@ -31,6 +31,7 @@ profile=/nix/var/nix/profiles/system buildHost=localhost targetHost= remoteSudo= +verboseScript= # comma separated list of vars to preserve when using sudo preservedSudoVars=NIXOS_INSTALL_BOOTLOADER @@ -71,7 +72,11 @@ while [ "$#" -gt 0 ]; do j="$1"; shift 1 extraBuildFlags+=("$i" "$j") ;; - --show-trace|--keep-failed|-K|--keep-going|-k|--verbose|-v|-vv|-vvv|-vvvv|-vvvvv|--fallback|--repair|--no-build-output|-Q|-j*|-L|--print-build-logs|--refresh|--no-net|--offline|--impure) + --show-trace|--keep-failed|-K|--keep-going|-k|--fallback|--repair|--no-build-output|-Q|-j*|-L|--print-build-logs|--refresh|--no-net|--offline|--impure) + extraBuildFlags+=("$i") + ;; + --verbose|-v|-vv|-vvv|-vvvv|-vvvvv) + verboseScript="true" extraBuildFlags+=("$i") ;; --option) @@ -143,30 +148,45 @@ if [ "$buildHost" = localhost ]; then buildHost= fi +# log the given argument to stderr if verbose mode is on +logVerbose() { + if [ -n "$verboseScript" ]; then + echo "$@" >&2 + fi +} + +# Run a command, logging it first if verbose mode is on +runCmd() { + logVerbose "$" "$@" + "$@" +} + buildHostCmd() { if [ -z "$buildHost" ]; then - "$@" + runCmd "$@" elif [ -n "$remoteNix" ]; then - ssh $SSHOPTS "$buildHost" "${maybeSudo[@]}" env PATH="$remoteNix":'$PATH' "$@" + runCmd ssh $SSHOPTS "$buildHost" "${maybeSudo[@]}" env PATH="$remoteNix":'$PATH' "$@" else - ssh $SSHOPTS "$buildHost" "${maybeSudo[@]}" "$@" + runCmd ssh $SSHOPTS "$buildHost" "${maybeSudo[@]}" "$@" fi } targetHostCmd() { if [ -z "$targetHost" ]; then - "${maybeSudo[@]}" "$@" + runCmd "${maybeSudo[@]}" "$@" else - ssh $SSHOPTS "$targetHost" "${maybeSudo[@]}" "$@" + runCmd ssh $SSHOPTS "$targetHost" "${maybeSudo[@]}" "$@" fi } copyToTarget() { if ! [ "$targetHost" = "$buildHost" ]; then if [ -z "$targetHost" ]; then - NIX_SSHOPTS=$SSHOPTS nix-copy-closure "${copyClosureFlags[@]}" --from "$buildHost" "$1" + logVerbose "Running nix-copy-closure with these NIX_SSHOPTS: $SSHOPTS" + NIX_SSHOPTS=$SSHOPTS runCmd nix-copy-closure "${copyClosureFlags[@]}" --from "$buildHost" "$1" elif [ -z "$buildHost" ]; then - NIX_SSHOPTS=$SSHOPTS nix-copy-closure "${copyClosureFlags[@]}" --to "$targetHost" "$1" + logVerbose "Running nix-copy-closure with these NIX_SSHOPTS: $SSHOPTS" + NIX_SSHOPTS=$SSHOPTS runCmd nix-copy-closure "${copyClosureFlags[@]}" --to "$targetHost" "$1" else buildHostCmd nix-copy-closure "${copyClosureFlags[@]}" --to "$targetHost" "$1" fi @@ -174,9 +194,12 @@ copyToTarget() { } nixBuild() { + logVerbose "Building in legacy (non-flake) mode." if [ -z "$buildHost" ]; then - nix-build "$@" + logVerbose "No --build-host given, running nix-build locally" + runCmd nix-build "$@" else + logVerbose "buildHost set to \"$buildHost\", running nix-build remotely" local instArgs=() local buildArgs=() local drv= @@ -206,9 +229,10 @@ nixBuild() { esac done - drv="$(nix-instantiate "${instArgs[@]}" "${extraBuildFlags[@]}")" + drv="$(runCmd nix-instantiate "${instArgs[@]}" "${extraBuildFlags[@]}")" if [ -a "$drv" ]; then - NIX_SSHOPTS=$SSHOPTS nix-copy-closure --to "$buildHost" "$drv" + logVerbose "Running nix-copy-closure with these NIX_SSHOPTS: $SSHOPTS" + NIX_SSHOPTS=$SSHOPTS runCmd nix-copy-closure --to "$buildHost" "$drv" buildHostCmd nix-store -r "$drv" "${buildArgs[@]}" else echo "nix-instantiate failed" @@ -218,12 +242,13 @@ nixBuild() { } nixFlakeBuild() { + logVerbose "Building in flake mode." if [[ -z "$buildHost" && -z "$targetHost" && "$action" != switch && "$action" != boot ]] then - nix "${flakeFlags[@]}" build "$@" + runCmd nix "${flakeFlags[@]}" build "$@" readlink -f ./result elif [ -z "$buildHost" ]; then - nix "${flakeFlags[@]}" build "$@" --out-link "${tmpDir}/result" + runCmd nix "${flakeFlags[@]}" build "$@" --out-link "${tmpDir}/result" readlink -f "${tmpDir}/result" else local attr="$1" @@ -255,9 +280,10 @@ nixFlakeBuild() { esac done - drv="$(nix "${flakeFlags[@]}" eval --raw "${attr}.drvPath" "${evalArgs[@]}" "${extraBuildFlags[@]}")" + drv="$(runCmd nix "${flakeFlags[@]}" eval --raw "${attr}.drvPath" "${evalArgs[@]}" "${extraBuildFlags[@]}")" if [ -a "$drv" ]; then - NIX_SSHOPTS=$SSHOPTS nix "${flakeFlags[@]}" copy --derivation --to "ssh://$buildHost" "$drv" + logVerbose "Running nix with these NIX_SSHOPTS: $SSHOPTS" + NIX_SSHOPTS=$SSHOPTS runCmd nix "${flakeFlags[@]}" copy --derivation --to "ssh://$buildHost" "$drv" buildHostCmd nix-store -r "$drv" "${buildArgs[@]}" else echo "nix eval failed" @@ -291,11 +317,11 @@ if [[ -n $upgrade && -z $_NIXOS_REBUILD_REEXEC && -z $flake ]]; then channel_name=$(basename "$channelpath") if [[ "$channel_name" == "nixos" ]]; then - nix-channel --update "$channel_name" + runCmd nix-channel --update "$channel_name" elif [ -e "$channelpath/.update-on-nixos-rebuild" ]; then - nix-channel --update "$channel_name" + runCmd nix-channel --update "$channel_name" elif [[ -n $upgrade_all ]] ; then - nix-channel --update "$channel_name" + runCmd nix-channel --update "$channel_name" fi done fi @@ -320,9 +346,9 @@ fi # Re-execute nixos-rebuild from the Nixpkgs tree. # FIXME: get nixos-rebuild from $flake. if [[ -z $_NIXOS_REBUILD_REEXEC && -n $canRun && -z $fast && -z $flake ]]; then - if p=$(nix-build --no-out-link --expr 'with import <nixpkgs/nixos> {}; config.system.build.nixos-rebuild' "${extraBuildFlags[@]}"); then + if p=$(runCmd nix-build --no-out-link --expr 'with import <nixpkgs/nixos> {}; config.system.build.nixos-rebuild' "${extraBuildFlags[@]}"); then export _NIXOS_REBUILD_REEXEC=1 - exec "$p/bin/nixos-rebuild" "${origArgs[@]}" + runCmd exec "$p/bin/nixos-rebuild" "${origArgs[@]}" exit 1 fi fi @@ -348,13 +374,13 @@ fi # Find configuration.nix and open editor instead of building. if [ "$action" = edit ]; then if [[ -z $flake ]]; then - NIXOS_CONFIG=${NIXOS_CONFIG:-$(nix-instantiate --find-file nixos-config)} + NIXOS_CONFIG=${NIXOS_CONFIG:-$(runCmd nix-instantiate --find-file nixos-config)} if [[ -d $NIXOS_CONFIG ]]; then NIXOS_CONFIG=$NIXOS_CONFIG/default.nix fi - exec ${EDITOR:-nano} "$NIXOS_CONFIG" + runCmd exec ${EDITOR:-nano} "$NIXOS_CONFIG" else - exec nix "${flakeFlags[@]}" edit "${lockFlags[@]}" -- "$flake#$flakeAttr" + runCmd exec nix "${flakeFlags[@]}" edit "${lockFlags[@]}" -- "$flake#$flakeAttr" fi exit 1 fi @@ -403,19 +429,19 @@ prebuiltNix() { if [[ -n $buildNix && -z $flake ]]; then echo "building Nix..." >&2 nixDrv= - if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root "$tmpDir/nix.drv" --indirect -A config.nix.package.out "${extraBuildFlags[@]}")"; then - if ! nixDrv="$(nix-instantiate '<nixpkgs>' --add-root "$tmpDir/nix.drv" --indirect -A nix "${extraBuildFlags[@]}")"; then - if ! nixStorePath="$(nix-instantiate --eval '<nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix>' -A "$(nixSystem)" | sed -e 's/^"//' -e 's/"$//')"; then + if ! nixDrv="$(runCmd nix-instantiate '<nixpkgs/nixos>' --add-root "$tmpDir/nix.drv" --indirect -A config.nix.package.out "${extraBuildFlags[@]}")"; then + if ! nixDrv="$(runCmd nix-instantiate '<nixpkgs>' --add-root "$tmpDir/nix.drv" --indirect -A nix "${extraBuildFlags[@]}")"; then + if ! nixStorePath="$(runCmd nix-instantiate --eval '<nixpkgs/nixos/modules/installer/tools/nix-fallback-paths.nix>' -A "$(nixSystem)" | sed -e 's/^"//' -e 's/"$//')"; then nixStorePath="$(prebuiltNix "$(uname -m)")" fi - if ! nix-store -r "$nixStorePath" --add-root "${tmpDir}/nix" --indirect \ + if ! runCmd nix-store -r "$nixStorePath" --add-root "${tmpDir}/nix" --indirect \ --option extra-binary-caches https://cache.nixos.org/; then echo "warning: don't know how to get latest Nix" >&2 fi # Older version of nix-store -r don't support --add-root. [ -e "$tmpDir/nix" ] || ln -sf "$nixStorePath" "$tmpDir/nix" if [ -n "$buildHost" ]; then - remoteNixStorePath="$(prebuiltNix "$(buildHostCmd uname -m)")" + remoteNixStorePath="$(runCmd prebuiltNix "$(buildHostCmd uname -m)")" remoteNix="$remoteNixStorePath/bin" if ! buildHostCmd nix-store -r "$remoteNixStorePath" \ --option extra-binary-caches https://cache.nixos.org/ >/dev/null; then @@ -442,8 +468,8 @@ fi # Update the version suffix if we're building from Git (so that # nixos-version shows something useful). if [[ -n $canRun && -z $flake ]]; then - if nixpkgs=$(nix-instantiate --find-file nixpkgs "${extraBuildFlags[@]}"); then - suffix=$($SHELL "$nixpkgs/nixos/modules/installer/tools/get-version-suffix" "${extraBuildFlags[@]}" || true) + if nixpkgs=$(runCmd nix-instantiate --find-file nixpkgs "${extraBuildFlags[@]}"); then + suffix=$(runCmd $SHELL "$nixpkgs/nixos/modules/installer/tools/get-version-suffix" "${extraBuildFlags[@]}" || true) if [ -n "$suffix" ]; then echo -n "$suffix" > "$nixpkgs/.version-suffix" || true fi diff --git a/pkgs/os-specific/linux/pflask/default.nix b/pkgs/os-specific/linux/pflask/default.nix index ba525c1a387..deb3e06ca49 100644 --- a/pkgs/os-specific/linux/pflask/default.nix +++ b/pkgs/os-specific/linux/pflask/default.nix @@ -1,18 +1,22 @@ -{ lib, stdenv, fetchFromGitHub, python2, wafHook }: +{ lib, stdenv, fetchFromGitHub, python3, wafHook }: stdenv.mkDerivation rec { pname = "pflask"; - version = "unstable-2015-12-17"; + version = "unstable-2018-01-23"; src = fetchFromGitHub { owner = "ghedo"; - repo = "pflask"; - rev = "599418bb6453eaa0ccab493f9411f13726c1a636"; - hash = "sha256-0RjitZd2JUK7WUEJuw4qhUx3joY5OI0Hh74mTzp7GmY="; + repo = pname; + rev = "9ac31ffe2ed29453218aac89ae992abbd6e7cc69"; + hash = "sha256-bAKPUj/EipZ98kHbZiFZZI3hLVMoQpCrYKMmznpSDhg="; }; - nativeBuildInputs = [ wafHook ]; - buildInputs = [ python2 ]; + nativeBuildInputs = [ python3 wafHook ]; + + postInstall = '' + mkdir -p $out/bin + cp build/pflask $out/bin + ''; meta = { description = "Lightweight process containers for Linux"; diff --git a/pkgs/os-specific/linux/smem/default.nix b/pkgs/os-specific/linux/smem/default.nix index b2636382aec..6308b83b600 100644 --- a/pkgs/os-specific/linux/smem/default.nix +++ b/pkgs/os-specific/linux/smem/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, python2 }: +{ lib, stdenv, fetchurl, python3 }: stdenv.mkDerivation rec { pname = "smem"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { sha256 = "19ibv1byxf2b68186ysrgrhy5shkc5mc69abark1h18yigp3j34m"; }; - buildInputs = [ python2 ]; + buildInputs = [ python3 ]; makeFlags = [ "smemcap" ]; |