anchor.diff:    dontInstall = true;
   
     inherit meta;
  -}
  +} // attrs')
  
positive.code: 
    requiredOctavePackages = requiredOctavePackages';
  
    nativeBuildInputs = [
      octave
      writeRequiredOctavePackagesHook
    ]
    ++ nativeBuildInputs;
  
    buildInputs = buildInputs ++ requiredOctavePackages';
  
  
negative.code: let
    requiredOctavePackages' = computeRequiredOctavePackages requiredOctavePackages;
  
    # Must use attrs.nativeBuildInputs before they are removed by the removeAttrs
    # below, or everything fails.
    nativeBuildInputs' = [
      octave
      writeRequiredOctavePackagesHook
    ]
    ++ nativeBuildInputs;
  
    # This step is required because when
    # a = { test = [ "a" "b" ]; }; b = { test = [ "c" "d" ]; };
    # (a // b).test = [ "c" "d" ];
    # This used to mean that if a package defined extra nativeBuildInputs, it
    # would override the ones for building an Octave package (the hook and Octave
    # itself, causing everything to fail.
    attrs' = builtins.removeAttrs attrs [ "nativeBuildInputs" ];
  
  in stdenv.mkDerivation ({
    packageName = "${fullLibName}";
    # The name of the octave package ends up being
    # "octave-version-package-version"
  