Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 26974e962ebc
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 926d6c0bad41
Choose a head ref
  • 4 commits
  • 4 files changed
  • 2 contributors

Commits on Oct 25, 2018

  1. cntr: init at 1.2.0

    Mic92 committed Oct 25, 2018
    Copy the full SHA
    84e915a View commit details
  2. breakpointHook: add for debugging failing builds

    Usuage: Add breakpointHook to your `buildInputs` like this:
    
      stdenv.mkDerivation rec {
        # ...
        buildInputs = [ breakpointHook ];
      });
    
    When the build fails as show in this example:
    
      pkgs.hello.overrideAttrs (old: {
        buildInputs = [ breakpointHook ];
        postPatch = ''
          false
        '';
      });
    
    It will halt execution printing the following message:
    
    build failed in patchPhase with exit code 1
    To attach to this build run the following command as root:
    
       cntr attach -t command cntr-/nix/store/ynyb4n82x2r7sldd58pbb405jdqh5f00-hello-2.10
    
    Installing cntr and running the command will provide shell access to the
    build sandbox of failed build:
    
    sudo cntr attach -t command cntr-/nix/store/ynyb4n82x2r7sldd58pbb405jdqh5f00-hello-2.10
    WARNING: bad ownership on /nix/var/nix/profiles/per-user/root, should be 1000
    [nixbld@localhost:/var/lib/cntr]$
    
    At /var/lib/cntr the sandbox filesystem is mounted. All commands and
    files of the system are still accessible within the shell.
    To execute commands from the sandbox use the `cntr exec` subcommand.
    Mic92 committed Oct 25, 2018
    2
    Copy the full SHA
    f10b935 View commit details
  3. Copy the full SHA
    325a569 View commit details
  4. Merge pull request #42371 from Mic92/nix-breakpoints

    breakpointHook: add for debugging failing builds
    Mic92 authored Oct 25, 2018
    Copy the full SHA
    926d6c0 View commit details
Showing with 57 additions and 0 deletions.
  1. +19 −0 doc/stdenv.xml
  2. +24 −0 pkgs/applications/virtualization/cntr/default.nix
  3. +9 −0 pkgs/build-support/setup-hooks/breakpoint-hook.sh
  4. +5 −0 pkgs/top-level/all-packages.nix
19 changes: 19 additions & 0 deletions doc/stdenv.xml
Original file line number Diff line number Diff line change
@@ -2445,6 +2445,25 @@ addEnvHooks "$hostOffset" myBashFunction
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
breakpointHook
</term>
<listitem>
<para>
This hook will make a build pause instead of stopping
when a failure happen. It prevents nix to cleanup the build
environment immediatly and allows the user to attach
to a build environemnt using the <varname>cntr</varname> command.
On build error it will print the instruction that are neccessary for cntr.
Note that <varname>cntr</varname> is not installed by default and
needs to be installed seperatly. <varname>cntr</varname> also needs to be executed
on the machine that is doing the build, which might be not the case
when remote builders are enabled. <varname>cntr</varname> is only supported
on linux based platforms.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
24 changes: 24 additions & 0 deletions pkgs/applications/virtualization/cntr/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{ stdenv, rustPlatform, fetchFromGitHub }:

rustPlatform.buildRustPackage rec {
name = "cntr-${version}";
version = "1.2.0";

src = fetchFromGitHub {
owner = "Mic92";
repo = "cntr";
rev = version;
sha256 = "0lmbsnjia44h4rskqkv9yc7xb6f3qjgbg8kcr9zqnr7ivr5fjcxg";
};

cargoSha256 = "0gainr5gfy0bbhr6078zvgx0kzp53slxjp37d3da091ikgzgfn51";

meta = with stdenv.lib; {
description = "A container debugging tool based on FUSE";
homepage = https://github.com/Mic92/cntr;
license = licenses.mit;
# aarch64 support will be fixed soon
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.mic92 ];
};
}
9 changes: 9 additions & 0 deletions pkgs/build-support/setup-hooks/breakpoint-hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
breakpointHook() {
local red='\033[0;31m'
local no_color='\033[0m'

echo -e "${red}build failed in ${curPhase} with exit code ${exitCode}${no_color}"
printf "To attach install cntr and run the following command as root:\n\n"
sh -c "echo ' cntr attach -t command cntr-${out}'; while true; do sleep 99999999; done"
}
failureHooks+=(breakpointHook)
5 changes: 5 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
@@ -977,6 +977,9 @@ with pkgs;

bruteforce-luks = callPackage ../tools/security/bruteforce-luks { };

breakpointHook = assert stdenv.isLinux;
makeSetupHook { } ../build-support/setup-hooks/breakpoint-hook.sh;

bsod = callPackage ../misc/emulators/bsod { };

btrfs-progs = callPackage ../tools/filesystems/btrfs-progs { };
@@ -16010,6 +16013,8 @@ with pkgs;
cni = callPackage ../applications/networking/cluster/cni {};
cni-plugins = callPackage ../applications/networking/cluster/cni/plugins.nix {};

cntr = callPackage ../applications/virtualization/cntr { };

communi = libsForQt5.callPackage ../applications/networking/irc/communi { };

confclerk = callPackage ../applications/misc/confclerk { };