Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2021-09-08 18:01:37 +00:00 committed by GitHub
commit a84ab6724a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 619 additions and 144 deletions

View File

@ -1,11 +1,10 @@
use strict; use strict;
use warnings;
use File::Path qw(make_path); use File::Path qw(make_path);
use File::Slurp; use File::Slurp;
use Getopt::Long;
use JSON; use JSON;
make_path("/var/lib/nixos", { mode => 0755 });
# Keep track of deleted uids and gids. # Keep track of deleted uids and gids.
my $uidMapFile = "/var/lib/nixos/uid-map"; my $uidMapFile = "/var/lib/nixos/uid-map";
my $uidMap = -e $uidMapFile ? decode_json(read_file($uidMapFile)) : {}; my $uidMap = -e $uidMapFile ? decode_json(read_file($uidMapFile)) : {};
@ -13,12 +12,19 @@ my $uidMap = -e $uidMapFile ? decode_json(read_file($uidMapFile)) : {};
my $gidMapFile = "/var/lib/nixos/gid-map"; my $gidMapFile = "/var/lib/nixos/gid-map";
my $gidMap = -e $gidMapFile ? decode_json(read_file($gidMapFile)) : {}; my $gidMap = -e $gidMapFile ? decode_json(read_file($gidMapFile)) : {};
my $is_dry = ($ENV{'NIXOS_ACTION'} // "") eq "dry-activate";
GetOptions("dry-activate" => \$is_dry);
make_path("/var/lib/nixos", { mode => 0755 }) unless $is_dry;
sub updateFile { sub updateFile {
my ($path, $contents, $perms) = @_; my ($path, $contents, $perms) = @_;
return if $is_dry;
write_file($path, { atomic => 1, binmode => ':utf8', perms => $perms // 0644 }, $contents) or die; write_file($path, { atomic => 1, binmode => ':utf8', perms => $perms // 0644 }, $contents) or die;
} }
sub nscdInvalidate {
system("nscd", "--invalidate", $_[0]) unless $is_dry;
}
sub hashPassword { sub hashPassword {
my ($password) = @_; my ($password) = @_;
@ -28,6 +34,14 @@ sub hashPassword {
return crypt($password, '$6$' . $salt . '$'); return crypt($password, '$6$' . $salt . '$');
} }
sub dry_print {
if ($is_dry) {
print STDERR ("$_[1] $_[2]\n")
} else {
print STDERR ("$_[0] $_[2]\n")
}
}
# Functions for allocating free GIDs/UIDs. FIXME: respect ID ranges in # Functions for allocating free GIDs/UIDs. FIXME: respect ID ranges in
# /etc/login.defs. # /etc/login.defs.
@ -51,7 +65,7 @@ sub allocGid {
my ($name) = @_; my ($name) = @_;
my $prevGid = $gidMap->{$name}; my $prevGid = $gidMap->{$name};
if (defined $prevGid && !defined $gidsUsed{$prevGid}) { if (defined $prevGid && !defined $gidsUsed{$prevGid}) {
print STDERR "reviving group '$name' with GID $prevGid\n"; dry_print("reviving", "would revive", "group '$name' with GID $prevGid");
$gidsUsed{$prevGid} = 1; $gidsUsed{$prevGid} = 1;
return $prevGid; return $prevGid;
} }
@ -63,15 +77,14 @@ sub allocUid {
my ($min, $max, $up) = $isSystemUser ? (400, 999, 0) : (1000, 29999, 1); my ($min, $max, $up) = $isSystemUser ? (400, 999, 0) : (1000, 29999, 1);
my $prevUid = $uidMap->{$name}; my $prevUid = $uidMap->{$name};
if (defined $prevUid && $prevUid >= $min && $prevUid <= $max && !defined $uidsUsed{$prevUid}) { if (defined $prevUid && $prevUid >= $min && $prevUid <= $max && !defined $uidsUsed{$prevUid}) {
print STDERR "reviving user '$name' with UID $prevUid\n"; dry_print("reviving", "would revive", "user '$name' with UID $prevUid");
$uidsUsed{$prevUid} = 1; $uidsUsed{$prevUid} = 1;
return $prevUid; return $prevUid;
} }
return allocId(\%uidsUsed, \%uidsPrevUsed, $min, $max, $up, sub { my ($uid) = @_; getpwuid($uid) }); return allocId(\%uidsUsed, \%uidsPrevUsed, $min, $max, $up, sub { my ($uid) = @_; getpwuid($uid) });
} }
# Read the declared users/groups
# Read the declared users/groups.
my $spec = decode_json(read_file($ARGV[0])); my $spec = decode_json(read_file($ARGV[0]));
# Don't allocate UIDs/GIDs that are manually assigned. # Don't allocate UIDs/GIDs that are manually assigned.
@ -134,7 +147,7 @@ foreach my $g (@{$spec->{groups}}) {
if (defined $existing) { if (defined $existing) {
$g->{gid} = $existing->{gid} if !defined $g->{gid}; $g->{gid} = $existing->{gid} if !defined $g->{gid};
if ($g->{gid} != $existing->{gid}) { if ($g->{gid} != $existing->{gid}) {
warn "warning: not applying GID change of group $name ($existing->{gid} -> $g->{gid})\n"; dry_print("warning: not applying", "warning: would not apply", "GID change of group $name ($existing->{gid} -> $g->{gid})");
$g->{gid} = $existing->{gid}; $g->{gid} = $existing->{gid};
} }
$g->{password} = $existing->{password}; # do we want this? $g->{password} = $existing->{password}; # do we want this?
@ -163,7 +176,7 @@ foreach my $name (keys %groupsCur) {
my $g = $groupsCur{$name}; my $g = $groupsCur{$name};
next if defined $groupsOut{$name}; next if defined $groupsOut{$name};
if (!$spec->{mutableUsers} || defined $declGroups{$name}) { if (!$spec->{mutableUsers} || defined $declGroups{$name}) {
print STDERR "removing group $name\n"; dry_print("removing group", "would remove group", "$name");
} else { } else {
$groupsOut{$name} = $g; $groupsOut{$name} = $g;
} }
@ -175,7 +188,7 @@ my @lines = map { join(":", $_->{name}, $_->{password}, $_->{gid}, $_->{members}
(sort { $a->{gid} <=> $b->{gid} } values(%groupsOut)); (sort { $a->{gid} <=> $b->{gid} } values(%groupsOut));
updateFile($gidMapFile, to_json($gidMap)); updateFile($gidMapFile, to_json($gidMap));
updateFile("/etc/group", \@lines); updateFile("/etc/group", \@lines);
system("nscd --invalidate group"); nscdInvalidate("group");
# Generate a new /etc/passwd containing the declared users. # Generate a new /etc/passwd containing the declared users.
my %usersOut; my %usersOut;
@ -196,7 +209,7 @@ foreach my $u (@{$spec->{users}}) {
if (defined $existing) { if (defined $existing) {
$u->{uid} = $existing->{uid} if !defined $u->{uid}; $u->{uid} = $existing->{uid} if !defined $u->{uid};
if ($u->{uid} != $existing->{uid}) { if ($u->{uid} != $existing->{uid}) {
warn "warning: not applying UID change of user $name ($existing->{uid} -> $u->{uid})\n"; dry_print("warning: not applying", "warning: would not apply", "UID change of user $name ($existing->{uid} -> $u->{uid})");
$u->{uid} = $existing->{uid}; $u->{uid} = $existing->{uid};
} }
} else { } else {
@ -211,7 +224,7 @@ foreach my $u (@{$spec->{users}}) {
# Ensure home directory incl. ownership and permissions. # Ensure home directory incl. ownership and permissions.
if ($u->{createHome}) { if ($u->{createHome}) {
make_path($u->{home}, { mode => 0700 }) if ! -e $u->{home}; make_path($u->{home}, { mode => 0700 }) if ! -e $u->{home} and ! $is_dry;
chown $u->{uid}, $u->{gid}, $u->{home}; chown $u->{uid}, $u->{gid}, $u->{home};
chmod 0700, $u->{home}; chmod 0700, $u->{home};
} }
@ -250,7 +263,7 @@ foreach my $name (keys %usersCur) {
my $u = $usersCur{$name}; my $u = $usersCur{$name};
next if defined $usersOut{$name}; next if defined $usersOut{$name};
if (!$spec->{mutableUsers} || defined $declUsers{$name}) { if (!$spec->{mutableUsers} || defined $declUsers{$name}) {
print STDERR "removing user $name\n"; dry_print("removing user", "would remove user", "$name");
} else { } else {
$usersOut{$name} = $u; $usersOut{$name} = $u;
} }
@ -261,7 +274,7 @@ foreach my $name (keys %usersCur) {
(sort { $a->{uid} <=> $b->{uid} } (values %usersOut)); (sort { $a->{uid} <=> $b->{uid} } (values %usersOut));
updateFile($uidMapFile, to_json($uidMap)); updateFile($uidMapFile, to_json($uidMap));
updateFile("/etc/passwd", \@lines); updateFile("/etc/passwd", \@lines);
system("nscd --invalidate passwd"); nscdInvalidate("passwd");
# Rewrite /etc/shadow to add new accounts or remove dead ones. # Rewrite /etc/shadow to add new accounts or remove dead ones.
@ -293,7 +306,7 @@ updateFile("/etc/shadow", \@shadowNew, 0640);
my $uid = getpwnam "root"; my $uid = getpwnam "root";
my $gid = getgrnam "shadow"; my $gid = getgrnam "shadow";
my $path = "/etc/shadow"; my $path = "/etc/shadow";
chown($uid, $gid, $path) || die "Failed to change ownership of $path: $!"; (chown($uid, $gid, $path) || die "Failed to change ownership of $path: $!") unless $is_dry;
} }
# Rewrite /etc/subuid & /etc/subgid to include default container mappings # Rewrite /etc/subuid & /etc/subgid to include default container mappings

View File

@ -561,14 +561,16 @@ in {
shadow.gid = ids.gids.shadow; shadow.gid = ids.gids.shadow;
}; };
system.activationScripts.users = stringAfter [ "stdio" ] system.activationScripts.users = {
'' supportsDryActivation = true;
text = ''
install -m 0700 -d /root install -m 0700 -d /root
install -m 0755 -d /home install -m 0755 -d /home
${pkgs.perl.withPackages (p: [ p.FileSlurp p.JSON ])}/bin/perl \ ${pkgs.perl.withPackages (p: [ p.FileSlurp p.JSON ])}/bin/perl \
-w ${./update-users-groups.pl} ${spec} -w ${./update-users-groups.pl} ${spec}
''; '';
};
# for backwards compatibility # for backwards compatibility
system.activationScripts.groups = stringAfter [ "users" ] ""; system.activationScripts.groups = stringAfter [ "users" ] "";

View File

@ -17,6 +17,41 @@ let
''; '';
}); });
systemActivationScript = set: onlyDry: let
set' = filterAttrs (_: v: onlyDry -> v.supportsDryActivation) (mapAttrs (_: v: if isString v then (noDepEntry v) // { supportsDryActivation = false; } else v) set);
withHeadlines = addAttributeName set';
in
''
#!${pkgs.runtimeShell}
systemConfig='@out@'
export PATH=/empty
for i in ${toString path}; do
PATH=$PATH:$i/bin:$i/sbin
done
_status=0
trap "_status=1 _localstatus=\$?" ERR
# Ensure a consistent umask.
umask 0022
${textClosureMap id (withHeadlines) (attrNames withHeadlines)}
'' + optionalString (!onlyDry) ''
# Make this configuration the current configuration.
# The readlink is there to ensure that when $systemConfig = /system
# (which is a symlink to the store), /run/current-system is still
# used as a garbage collection root.
ln -sfn "$(readlink -f "$systemConfig")" /run/current-system
# Prevent the current configuration from being garbage-collected.
ln -sfn /run/current-system /nix/var/nix/gcroots/current-system
exit $_status
'';
path = with pkgs; map getBin path = with pkgs; map getBin
[ coreutils [ coreutils
gnugrep gnugrep
@ -28,7 +63,7 @@ let
util-linux # needed for mount and mountpoint util-linux # needed for mount and mountpoint
]; ];
scriptType = with types; scriptType = withDry: with types;
let scriptOptions = let scriptOptions =
{ deps = mkOption { deps = mkOption
{ type = types.listOf types.str; { type = types.listOf types.str;
@ -39,6 +74,19 @@ let
{ type = types.lines; { type = types.lines;
description = "The content of the script."; description = "The content of the script.";
}; };
} // optionalAttrs withDry {
supportsDryActivation = mkOption
{ type = types.bool;
default = false;
description = ''
Whether this activation script supports being dry-activated.
These activation scripts will also be executed on dry-activate
activations with the environment variable
<literal>NIXOS_ACTION</literal> being set to <literal>dry-activate
</literal>. it's important that these activation scripts don't
modify anything about the system when the variable is set.
'';
};
}; };
in either str (submodule { options = scriptOptions; }); in either str (submodule { options = scriptOptions; });
@ -74,47 +122,19 @@ in
idempotent and fast. idempotent and fast.
''; '';
type = types.attrsOf scriptType; type = types.attrsOf (scriptType true);
apply = set: set // {
apply = set: { script = systemActivationScript set false;
script =
''
#! ${pkgs.runtimeShell}
systemConfig=@out@
export PATH=/empty
for i in ${toString path}; do
PATH=$PATH:$i/bin:$i/sbin
done
_status=0
trap "_status=1 _localstatus=\$?" ERR
# Ensure a consistent umask.
umask 0022
${
let
set' = mapAttrs (n: v: if isString v then noDepEntry v else v) set;
withHeadlines = addAttributeName set';
in textClosureMap id (withHeadlines) (attrNames withHeadlines)
}
# Make this configuration the current configuration.
# The readlink is there to ensure that when $systemConfig = /system
# (which is a symlink to the store), /run/current-system is still
# used as a garbage collection root.
ln -sfn "$(readlink -f "$systemConfig")" /run/current-system
# Prevent the current configuration from being garbage-collected.
ln -sfn /run/current-system /nix/var/nix/gcroots/current-system
exit $_status
'';
}; };
}; };
system.dryActivationScript = mkOption {
description = "The shell script that is to be run when dry-activating a system.";
readOnly = true;
internal = true;
default = systemActivationScript (removeAttrs config.system.activationScripts [ "script" ]) true;
};
system.userActivationScripts = mkOption { system.userActivationScripts = mkOption {
default = {}; default = {};
@ -137,7 +157,7 @@ in
idempotent and fast. idempotent and fast.
''; '';
type = with types; attrsOf scriptType; type = with types; attrsOf (scriptType false);
apply = set: { apply = set: {
script = '' script = ''

View File

@ -36,6 +36,8 @@ EOF
exit 1; exit 1;
} }
$ENV{NIXOS_ACTION} = $action;
# This is a NixOS installation if it has /etc/NIXOS or a proper # This is a NixOS installation if it has /etc/NIXOS or a proper
# /etc/os-release. # /etc/os-release.
die "This is not a NixOS installation!\n" unless die "This is not a NixOS installation!\n" unless
@ -360,6 +362,10 @@ if ($action eq "dry-activate") {
if scalar @unitsToStopFiltered > 0; if scalar @unitsToStopFiltered > 0;
print STDERR "would NOT stop the following changed units: ", join(", ", sort(keys %unitsToSkip)), "\n" print STDERR "would NOT stop the following changed units: ", join(", ", sort(keys %unitsToSkip)), "\n"
if scalar(keys %unitsToSkip) > 0; if scalar(keys %unitsToSkip) > 0;
print STDERR "would activate the configuration...\n";
system("$out/dry-activate", "$out");
print STDERR "would restart systemd\n" if $restartSystemd; print STDERR "would restart systemd\n" if $restartSystemd;
print STDERR "would restart the following units: ", join(", ", sort(keys %unitsToRestart)), "\n" print STDERR "would restart the following units: ", join(", ", sort(keys %unitsToRestart)), "\n"
if scalar(keys %unitsToRestart) > 0; if scalar(keys %unitsToRestart) > 0;

View File

@ -56,9 +56,11 @@ let
''} ''}
echo "$activationScript" > $out/activate echo "$activationScript" > $out/activate
echo "$dryActivationScript" > $out/dry-activate
substituteInPlace $out/activate --subst-var out substituteInPlace $out/activate --subst-var out
chmod u+x $out/activate substituteInPlace $out/dry-activate --subst-var out
unset activationScript chmod u+x $out/activate $out/dry-activate
unset activationScript dryActivationScript
cp ${config.system.build.bootStage2} $out/init cp ${config.system.build.bootStage2} $out/init
substituteInPlace $out/init --subst-var-by systemConfig $out substituteInPlace $out/init --subst-var-by systemConfig $out
@ -108,6 +110,7 @@ let
config.system.build.installBootLoader config.system.build.installBootLoader
or "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true"; or "echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2; true";
activationScript = config.system.activationScripts.script; activationScript = config.system.activationScripts.script;
dryActivationScript = config.system.dryActivationScript;
nixosLabel = config.system.nixos.label; nixosLabel = config.system.nixos.label;
configurationName = config.boot.loader.grub.configurationName; configurationName = config.boot.loader.grub.configurationName;

View File

@ -46,22 +46,32 @@ in {
kernelModules = [ "dm-snapshot" "dm-thin-pool" ]; kernelModules = [ "dm-snapshot" "dm-thin-pool" ];
extraUtilsCommands = '' extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.thin-provisioning-tools}/bin/pdata_tools for BIN in ${pkgs.thin-provisioning-tools}/bin/*; do
copy_bin_and_libs ${pkgs.thin-provisioning-tools}/bin/thin_check copy_bin_and_libs $BIN
done
'';
extraUtilsCommandsTest = ''
ls ${pkgs.thin-provisioning-tools}/bin/ | grep -v pdata_tools | while read BIN; do
$out/bin/$(basename $BIN) --help > /dev/null
done
''; '';
}; };
environment.etc."lvm/lvm.conf".text = '' environment.etc."lvm/lvm.conf".text = concatMapStringsSep "\n"
global/thin_check_executable = "${pkgs.thin-provisioning-tools}/bin/thin_check" (bin: "global/${bin}_executable = ${pkgs.thin-provisioning-tools}/bin/${bin}")
''; [ "thin_check" "thin_dump" "thin_repair" "cache_check" "cache_dump" "cache_repair" ];
}) })
(mkIf (cfg.dmeventd.enable || cfg.boot.thin.enable) { (mkIf (cfg.dmeventd.enable || cfg.boot.thin.enable) {
boot.initrd.preLVMCommands = '' boot.initrd.preLVMCommands = ''
mkdir -p /etc/lvm mkdir -p /etc/lvm
cat << EOF >> /etc/lvm/lvm.conf cat << EOF >> /etc/lvm/lvm.conf
${optionalString cfg.boot.thin.enable '' ${optionalString cfg.boot.thin.enable (
global/thin_check_executable = "$(command -v thin_check)" concatMapStringsSep "\n"
''} (bin: "global/${bin}_executable = $(command -v ${bin})")
[ "thin_check" "thin_dump" "thin_repair" "cache_check" "cache_dump" "cache_repair" ]
)
}
${optionalString cfg.dmeventd.enable '' ${optionalString cfg.dmeventd.enable ''
dmeventd/executable = "$(command -v false)" dmeventd/executable = "$(command -v false)"
activation/monitoring = 0 activation/monitoring = 0

View File

@ -12,6 +12,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
}; };
mutable = { ... }: { mutable = { ... }: {
users.mutableUsers = true; users.mutableUsers = true;
users.users.dry-test.isNormalUser = true;
}; };
}; };
@ -41,5 +42,32 @@ import ./make-test-python.nix ({ pkgs, ...} : {
"${mutableSystem}/bin/switch-to-configuration test" "${mutableSystem}/bin/switch-to-configuration test"
) )
assert "/run/wrappers/" in machine.succeed("which passwd") assert "/run/wrappers/" in machine.succeed("which passwd")
with subtest("dry-activation does not change files"):
machine.succeed('test -e /home/dry-test') # home was created
machine.succeed('rm -rf /home/dry-test')
files_to_check = ['/etc/group',
'/etc/passwd',
'/etc/shadow',
'/etc/subuid',
'/etc/subgid',
'/var/lib/nixos/uid-map',
'/var/lib/nixos/gid-map',
'/var/lib/nixos/declarative-groups',
'/var/lib/nixos/declarative-users'
]
expected_hashes = {}
expected_stats = {}
for file in files_to_check:
expected_hashes[file] = machine.succeed(f"sha256sum {file}")
expected_stats[file] = machine.succeed(f"stat {file}")
machine.succeed("/run/current-system/bin/switch-to-configuration dry-activate")
machine.fail('test -e /home/dry-test') # home was not recreated
for file in files_to_check:
assert machine.succeed(f"sha256sum {file}") == expected_hashes[file]
assert machine.succeed(f"stat {file}") == expected_stats[file]
''; '';
}) })

View File

@ -25,7 +25,7 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "lollypop"; pname = "lollypop";
version = "1.4.17"; version = "1.4.23";
format = "other"; format = "other";
doCheck = false; doCheck = false;
@ -34,7 +34,7 @@ python3.pkgs.buildPythonApplication rec {
url = "https://gitlab.gnome.org/World/lollypop"; url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "sha256-GrznUXIYUTYOKQ1znsCqmBdm5YImCABMK2NGRtx5fSk="; sha256 = "sha256-wwdH3gMpYt40VGqrL1XfB1dOfg45zLKtTEI23AwjCis=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -200,6 +200,11 @@ in stdenv.mkDerivation {
done done
''} ''}
# https://github.com/NixOS/nixpkgs/issues/137104
${optionalString (enableHardening || headless) ''
rm $libexec/components/VBoxREM.so
''}
cp -rv out/linux.*/${buildType}/bin/src "$modsrc" cp -rv out/linux.*/${buildType}/bin/src "$modsrc"
''; '';

View File

@ -57,7 +57,8 @@ let
] "") + optionalString (v == null) "-broken"; ] "") + optionalString (v == null) "-broken";
append-version = p: n: p + display-pkg n "" coqPackages.${n}.version + "-"; append-version = p: n: p + display-pkg n "" coqPackages.${n}.version + "-";
prefix-name = foldl append-version "" namePrefix; prefix-name = foldl append-version "" namePrefix;
var-coqlib-install = (optionalString (versions.isGe "8.7" coq.coq-version) "COQMF_") + "COQLIB"; var-coqlib-install =
(optionalString (versions.isGe "8.7" coq.coq-version || coq.coq-version == "dev") "COQMF_") + "COQLIB";
useDune2 = args.useDune2 or (useDune2ifVersion fetched.version); useDune2 = args.useDune2 or (useDune2ifVersion fetched.version);
in in

View File

@ -16,7 +16,7 @@
let let
mergeInputs = name: mergeInputs = name:
(attrs.${name} or []) ++ (attrs.${name} or []) ++
(lib.subtractLists inputsFrom (lib.catAttrs name inputsFrom)); (lib.subtractLists inputsFrom (lib.flatten (lib.catAttrs name inputsFrom)));
rest = builtins.removeAttrs attrs [ rest = builtins.removeAttrs attrs [
"packages" "packages"

View File

@ -0,0 +1,166 @@
{ stdenv
, binutils-unwrapped
, clang
, clang-unwrapped
, cmake
, compiler-rt
, fetchFromGitHub
, fetchpatch
, file
, lib
, lld
, llvm
, makeWrapper
, perl
, python
, rocclr
, rocm-comgr
, rocm-device-libs
, rocm-opencl-runtime
, rocm-runtime
, rocm-thunk
, rocminfo
, writeText
}:
stdenv.mkDerivation rec {
name = "hip";
version = "4.3.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "HIP";
rev = "rocm-${version}";
sha256 = "sha256-dUdP32H0u6kVItS+VUE549vvxkV1mSN84HvyfeK2hEE=";
};
# FIXME: https://github.com/ROCm-Developer-Tools/HIP/issues/2317
postPatch = ''
cp ${rocm-opencl-runtime.src}/amdocl/cl_vk_amd.hpp amdocl/
'';
nativeBuildInputs = [ cmake python makeWrapper ];
propagatedBuildInputs = [
clang
compiler-rt
lld
llvm
rocclr
rocm-comgr
rocm-device-libs
rocm-runtime
rocm-thunk
rocminfo
];
preConfigure = ''
export HIP_CLANG_PATH=${clang}/bin
export DEVICE_LIB_PATH=${rocm-device-libs}/lib
'';
# The patch version is the last two digits of year + week number +
# day in the week: date -d "2021-07-25" +%y%U%w
workweek = "21300";
cmakeFlags = [
"-DHSA_PATH=${rocm-runtime}"
"-DHIP_COMPILER=clang"
"-DHIP_PLATFORM=amd"
"-DHIP_VERSION_GITDATE=${workweek}"
"-DCMAKE_C_COMPILER=${clang}/bin/clang"
"-DCMAKE_CXX_COMPILER=${clang}/bin/clang++"
"-DLLVM_ENABLE_RTTI=ON"
"-DLIBROCclr_STATIC_DIR=${rocclr}/lib/cmake"
"-DROCclr_DIR=${rocclr}"
"-DHIP_CLANG_ROOT=${clang-unwrapped}"
];
patches = [
(fetchpatch {
name = "no-git-during-build";
url = "https://github.com/acowley/HIP/commit/310b7e972cfb23216250c0240ba6134741679aee.patch";
sha256 = "08ky7v1yvajabn9m5x3afzrnz38gnrgc7vgqlbyr7s801c383ha1";
})
(fetchpatch {
name = "use-PATH-when-compiling-pch";
url = "https://github.com/acowley/HIP/commit/bfb4dd1eafa9714a2c05a98229cc35ffa3429b37.patch";
sha256 = "1wp0m32df7pf4rhx3k5n750fd7kz10zr60z0wllb0mw6h00w6xpz";
})
];
# - fix bash paths
# - fix path to rocm_agent_enumerator
# - fix hcc path
# - fix hcc version parsing
# - add linker flags for libhsa-runtime64 and hc_am since libhip_hcc
# refers to them.
prePatch = ''
for f in $(find bin -type f); do
sed -e 's,#!/usr/bin/perl,#!${perl}/bin/perl,' \
-e 's,#!/bin/bash,#!${stdenv.shell},' \
-i "$f"
done
for f in $(find . -regex '.*\.cpp\|.*\.h\(pp\)?'); do
if grep -q __hcc_workweek__ "$f" ; then
substituteInPlace "$f" --replace '__hcc_workweek__' '${workweek}'
fi
done
sed 's,#!/usr/bin/python,#!${python}/bin/python,' -i hip_prof_gen.py
sed -e 's,$ROCM_AGENT_ENUM = "''${ROCM_PATH}/bin/rocm_agent_enumerator";,$ROCM_AGENT_ENUM = "${rocminfo}/bin/rocm_agent_enumerator";,' \
-e "s,^\($HIP_LIB_PATH=\).*$,\1\"$out/lib\";," \
-e 's,^\($HIP_CLANG_PATH=\).*$,\1"${clang}/bin";,' \
-e 's,^\($DEVICE_LIB_PATH=\).*$,\1"${rocm-device-libs}/amdgcn/bitcode";,' \
-e 's,^\($HIP_COMPILER=\).*$,\1"clang";,' \
-e 's,^\($HIP_RUNTIME=\).*$,\1"ROCclr";,' \
-e 's,^\([[:space:]]*$HSA_PATH=\).*$,\1"${rocm-runtime}";,'g \
-e 's,\([[:space:]]*$HOST_OSNAME=\).*,\1"nixos";,' \
-e 's,\([[:space:]]*$HOST_OSVER=\).*,\1"${lib.versions.majorMinor lib.version}";,' \
-e 's,^\([[:space:]]*\)$HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include");,\1$HIP_CLANG_INCLUDE_PATH = "${clang-unwrapped}/lib/clang/$HIP_CLANG_VERSION/include";,' \
-e 's,^\([[:space:]]*$HIPCXXFLAGS .= " -isystem $HIP_CLANG_INCLUDE_PATH\)";,\1 -isystem ${rocm-runtime}/include";,' \
-e 's,\($HIPCXXFLAGS .= " -isystem \\"$HIP_INCLUDE_PATH\\"\)" ;,\1 --rocm-path=${rocclr}";,' \
-e "s,\$HIP_PATH/\(bin\|lib\),$out/\1,g" \
-e "s,^\$HIP_LIB_PATH=\$ENV{'HIP_LIB_PATH'};,\$HIP_LIB_PATH=\"$out/lib\";," \
-e 's,`file,`${file}/bin/file,g' \
-e 's,`readelf,`${binutils-unwrapped}/bin/readelf,' \
-e 's, ar , ${binutils-unwrapped}/bin/ar ,g' \
-i bin/hipcc
sed -e 's,^\($HSA_PATH=\).*$,\1"${rocm-runtime}";,' \
-e 's,^\($HIP_CLANG_PATH=\).*$,\1"${clang}/bin";,' \
-e 's,^\($HIP_PLATFORM=\).*$,\1"amd";,' \
-e 's,$HIP_CLANG_PATH/llc,${llvm}/bin/llc,' \
-e 's, abs_path, Cwd::abs_path,' \
-i bin/hipconfig
sed -e 's, abs_path, Cwd::abs_path,' -i bin/hipvars.pm
sed -e 's|_IMPORT_PREFIX}/../include|_IMPORT_PREFIX}/include|g' \
-e 's|''${HIP_CLANG_ROOT}/lib/clang/\*/include|${clang-unwrapped}/lib/clang/*/include|' \
-i hip-config.cmake.in
'';
preInstall = ''
mkdir -p $out/lib/cmake
'';
# The upstream ROCclr setup wants everything built into the same
# ROCclr output directory. We copy things into the HIP output
# directory, since it is downstream of ROCclr in terms of dependency
# direction. Thus we have device-libs and rocclr pieces in the HIP
# output directory.
postInstall = ''
mkdir -p $out/share
mv $out/lib/cmake $out/share/
mv $out/cmake/* $out/share/cmake/hip
mkdir -p $out/lib
ln -s ${rocm-device-libs}/lib $out/lib/bitcode
mkdir -p $out/include
ln -s ${clang-unwrapped}/lib/clang/11.0.0/include $out/include/clang
ln -s ${rocclr}/lib/*.* $out/lib
ln -s ${rocclr}/include/* $out/include
wrapProgram $out/bin/hipcc --set HIP_PATH $out --set HSA_PATH ${rocm-runtime} --set HIP_CLANG_PATH ${clang}/bin --prefix PATH : ${lld}/bin --set NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt} 1 --prefix NIX_LDFLAGS ' ' -L${compiler-rt}/lib --prefix NIX_LDFLAGS_FOR_TARGET ' ' -L${compiler-rt}/lib
wrapProgram $out/bin/hipconfig --set HIP_PATH $out --set HSA_PATH ${rocm-runtime} --set HIP_CLANG_PATH ${clang}/bin
'';
}

View File

@ -1,4 +1,5 @@
{ lib, stdenv { stdenv
, lib
, fetchFromGitHub , fetchFromGitHub
, cmake , cmake
, python3 , python3
@ -65,7 +66,7 @@ stdenv.mkDerivation rec {
description = "ROCm fork of the clang C/C++/Objective-C/Objective-C++ LLVM compiler frontend"; description = "ROCm fork of the clang C/C++/Objective-C/Objective-C++ LLVM compiler frontend";
homepage = "https://llvm.org/"; homepage = "https://llvm.org/";
license = with licenses; [ ncsa ]; license = with licenses; [ ncsa ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ acowley danieldk lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -0,0 +1,33 @@
From 3dec5f3475a26aeb4678627795c4b67c6b7b4785 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Tue, 19 Sep 2017 13:13:06 -0500
Subject: [PATCH] remove codesign use on Apple, disable ios sim testing that
needs it
---
cmake/Modules/AddCompilerRT.cmake | 8 ------
test/asan/CMakeLists.txt | 52 ---------------------------------------
test/tsan/CMakeLists.txt | 47 -----------------------------------
3 files changed, 107 deletions(-)
diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake
index bc5fb9ff7..b64eb4246 100644
--- a/cmake/Modules/AddCompilerRT.cmake
+++ b/cmake/Modules/AddCompilerRT.cmake
@@ -210,14 +210,6 @@ function(add_compiler_rt_runtime name type)
set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "")
set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib")
endif()
- if(APPLE)
- # Ad-hoc sign the dylibs
- add_custom_command(TARGET ${libname}
- POST_BUILD
- COMMAND codesign --sign - $<TARGET_FILE:${libname}>
- WORKING_DIRECTORY ${COMPILER_RT_LIBRARY_OUTPUT_DIR}
- )
- endif()
endif()
install(TARGETS ${libname}
ARCHIVE DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR}
2.14.1

View File

@ -0,0 +1,65 @@
{ stdenv, lib, version, src, cmake, python3, llvm, libcxxabi }:
stdenv.mkDerivation rec {
pname = "compiler-rt";
inherit version src;
nativeBuildInputs = [ cmake python3 llvm ];
NIX_CFLAGS_COMPILE = [
"-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
];
cmakeFlags = [
"-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
"-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}"
"-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}"
"-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
"-DCOMPILER_RT_BUILD_XRAY=OFF"
"-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
"-DCOMPILER_RT_BUILD_PROFILE=OFF"
"-DCMAKE_C_COMPILER_WORKS=ON"
"-DCMAKE_CXX_COMPILER_WORKS=ON"
"-DCOMPILER_RT_BAREMETAL_BUILD=ON"
"-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}"
"-DCOMPILER_RT_BUILD_BUILTINS=ON"
"-DCMAKE_C_FLAGS=-nodefaultlibs"
#https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program
"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
];
outputs = [ "out" "dev" ];
patches = [
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
];
# TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
# to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra
# can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd
# get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by
# a flag and turn the flag off during the stdenv build.
postPatch = lib.optionalString (!stdenv.isDarwin) ''
substituteInPlace cmake/builtin-config-ix.cmake \
--replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)'
'';
# Hack around weird upsream RPATH bug
postInstall = ''
ln -s "$out/lib"/*/* "$out/lib"
ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o
ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o
ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o
ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o
'';
enableParallelBuilding = true;
meta = with lib; {
description = "ROCm fork of the LLVM Compiler runtime libraries";
homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = licenses.ncsa;
maintainers = with maintainers; [ acowley danieldk lovesegfault ];
platforms = platforms.linux;
};
}

View File

@ -1,12 +1,12 @@
{ lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith }: { stdenv, lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith, overrideCC }:
let let
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "llvm-project"; repo = "llvm-project";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-DlId/dF5r0ULl2omYPCyu1Ic3XKlLL7ndiCA0RaF264="; hash = "sha256-7XVtHcrTpw+NYUvuKQFWWFE0FlOTt8EnfZpvepQqE1c=";
}; };
in rec { in rec {
clang = wrapCCWith rec { clang = wrapCCWith rec {
@ -15,8 +15,25 @@ in rec {
clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"` clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
rsrc="$out/resource-root" rsrc="$out/resource-root"
mkdir "$rsrc" mkdir "$rsrc"
ln -s "${lib.getLib cc}/lib/clang/$clang_version/include" "$rsrc" ln -s "${cc}/lib/clang/$clang_version/include" "$rsrc"
ln -s "${compiler-rt}/lib" "$rsrc/lib"
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${stdenv.cc.cc}" >> $out/nix-support/cc-cflags
echo "-Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags
rm $out/nix-support/add-hardening.sh
touch $out/nix-support/add-hardening.sh
'';
};
clangNoCompilerRt = wrapCCWith rec {
cc = clang-unwrapped;
extraBuildCommands = ''
clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
rsrc="$out/resource-root"
mkdir "$rsrc"
ln -s "${cc}/lib/clang/$clang_version/include" "$rsrc"
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${stdenv.cc.cc}" >> $out/nix-support/cc-cflags
echo "-Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags echo "-Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags
rm $out/nix-support/add-hardening.sh rm $out/nix-support/add-hardening.sh
touch $out/nix-support/add-hardening.sh touch $out/nix-support/add-hardening.sh
@ -28,10 +45,15 @@ in rec {
src = "${src}/clang"; src = "${src}/clang";
}; };
lld = callPackage ./lld { compiler-rt = callPackage ./compiler-rt {
inherit version llvm;
src = "${src}/compiler-rt";
stdenv = overrideCC stdenv clangNoCompilerRt;
};
lld = callPackage ./lld.nix {
inherit llvm version; inherit llvm version;
src = "${src}/lld"; src = "${src}/lld";
buildLlvmTools = buildPackages.llvmPackages_rocm;
}; };
llvm = callPackage ./llvm { llvm = callPackage ./llvm {

View File

@ -1,5 +1,5 @@
{ lib, stdenv { stdenv
, buildLlvmTools , lib
, cmake , cmake
, libxml2 , libxml2
, llvm , llvm
@ -14,18 +14,13 @@ stdenv.mkDerivation rec {
pname = "lld"; pname = "lld";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ libxml2 llvm ]; buildInputs = [ libxml2 llvm ];
cmakeFlags = [
"-DLLVM_MAIN_SRC_DIR=${llvm.src}"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
"-DLLVM_CONFIG_PATH=${llvm.dev}/bin/llvm-config-native"
];
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
cmakeFlags = [ "-DLLVM_MAIN_SRC_DIR=${llvm.src}" ];
postInstall = '' postInstall = ''
moveToOutput include "$dev" moveToOutput include "$dev"
moveToOutput lib "$dev" moveToOutput lib "$dev"
@ -39,7 +34,7 @@ stdenv.mkDerivation rec {
description = "ROCm fork of the LLVM Linker"; description = "ROCm fork of the LLVM Linker";
homepage = "https://github.com/RadeonOpenCompute/llvm-project"; homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ acowley danieldk lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -1,4 +1,5 @@
{ lib, stdenv { stdenv
, lib
, fetchFromGitHub , fetchFromGitHub
, cmake , cmake
, python3 , python3
@ -91,7 +92,7 @@ in stdenv.mkDerivation rec {
description = "ROCm fork of the LLVM compiler infrastructure"; description = "ROCm fork of the LLVM compiler infrastructure";
homepage = "https://github.com/RadeonOpenCompute/llvm-project"; homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = with licenses; [ ncsa ]; license = with licenses; [ ncsa ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ acowley danieldk lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libxc"; pname = "libxc";
version = "5.1.5"; version = "5.1.6";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "libxc"; owner = "libxc";
repo = "libxc"; repo = "libxc";
rev = version; rev = version;
sha256 = "0cy3x2zn1bldc5i0rzislfbc8h4nqgds445jkfqjv0d1shvdy0zn"; sha256 = "07iljmv737kx24kd33x9ndf5l854mwslg9x2psqm12k07jmq9wjw";
}; };
nativeBuildInputs = [ perl cmake gfortran ]; nativeBuildInputs = [ perl cmake gfortran ];

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocclr"; pname = "rocclr";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ROCm-Developer-Tools"; owner = "ROCm-Developer-Tools";
repo = "ROCclr"; repo = "ROCclr";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-2DI/PL29aiZcxOrGZBzXwAnNgZQpSDjyyGKgl+vDErk="; hash = "sha256-3lk7Zucoam+11gFBzg/TWQI1L8uAlxTrPz/mDwTwod4=";
}; };
nativeBuildInputs = [ cmake rocm-cmake ]; nativeBuildInputs = [ cmake rocm-cmake ];
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
description = "Radeon Open Compute common language runtime"; description = "Radeon Open Compute common language runtime";
homepage = "https://github.com/ROCm-Developer-Tools/ROCclr"; homepage = "https://github.com/ROCm-Developer-Tools/ROCclr";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
# rocclr seems to have some AArch64 ifdefs, but does not seem # rocclr seems to have some AArch64 ifdefs, but does not seem
# to be supported yet by the build infrastructure. Recheck in # to be supported yet by the build infrastructure. Recheck in
# the future. # the future.

View File

@ -1,21 +1,21 @@
{ lib, stdenv, fetchFromGitHub, cmake, clang, device-libs, lld, llvm }: { lib, stdenv, fetchFromGitHub, cmake, clang, rocm-device-libs, lld, llvm }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-comgr"; pname = "rocm-comgr";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCm-CompilerSupport"; repo = "ROCm-CompilerSupport";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-LbQqyJxRqb6vpXiYSkRlF1FeqXJJXktPafGmYDDK02U="; hash = "sha256-wHSAhp1cqR9xOreGt2M2Td/ELCuLEHjpMRRkqE9dUy0=";
}; };
sourceRoot = "source/lib/comgr"; sourceRoot = "source/lib/comgr";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ clang device-libs lld llvm ]; buildInputs = [ clang rocm-device-libs lld llvm ];
cmakeFlags = [ cmakeFlags = [
"-DCLANG=${clang}/bin/clang" "-DCLANG=${clang}/bin/clang"
@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
description = "APIs for compiling and inspecting AMDGPU code objects"; description = "APIs for compiling and inspecting AMDGPU code objects";
homepage = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr"; homepage = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-device-libs"; pname = "rocm-device-libs";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCm-Device-Libs"; repo = "ROCm-Device-Libs";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-9p6PIXdHFIgHgNWZzqVz5O9i2Np0z/iyxodG2cLrpGs="; hash = "sha256-fPD9vevO2UDaFaclSI0CC/lRfM5WemWmxP1K5ajXHbk=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
description = "Set of AMD-specific device-side language runtime libraries"; description = "Set of AMD-specific device-side language runtime libraries";
homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs"; homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs";
license = licenses.ncsa; license = licenses.ncsa;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
meta = with lib; { meta = with lib; {
description = "OpenCL ICD definition for AMD GPUs using the ROCm stack"; description = "OpenCL ICD definition for AMD GPUs using the ROCm stack";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -1,4 +1,5 @@
{ lib, stdenv { stdenv
, lib
, fetchFromGitHub , fetchFromGitHub
, addOpenGLRunpath , addOpenGLRunpath
, cmake , cmake
@ -21,13 +22,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-opencl-runtime"; pname = "rocm-opencl-runtime";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCm-OpenCL-Runtime"; repo = "ROCm-OpenCL-Runtime";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-+6h1E5uWNKjjaeO5ZIi854CWYi0QGQ5mVUHdi9+4vX4="; hash = "sha256-4+PNxRqvAvU0Nj2igYl3WiS5h5HGV63J+cHbIVW89LE=";
}; };
nativeBuildInputs = [ cmake rocm-cmake ]; nativeBuildInputs = [ cmake rocm-cmake ];
@ -77,7 +78,7 @@ stdenv.mkDerivation rec {
description = "OpenCL runtime for AMD GPUs, part of the ROCm stack"; description = "OpenCL runtime for AMD GPUs, part of the ROCm stack";
homepage = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime"; homepage = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime";
license = with licenses; [ asl20 mit ]; license = with licenses; [ asl20 mit ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ acowley danieldk lovesegfault ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -1,4 +1,5 @@
{ lib, stdenv { stdenv
, lib
, fetchFromGitHub , fetchFromGitHub
, addOpenGLRunpath , addOpenGLRunpath
, clang-unwrapped , clang-unwrapped
@ -6,25 +7,26 @@
, xxd , xxd
, elfutils , elfutils
, llvm , llvm
, numactl
, rocm-device-libs , rocm-device-libs
, rocm-thunk }: , rocm-thunk }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-runtime"; pname = "rocm-runtime";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCR-Runtime"; repo = "ROCR-Runtime";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-Jxg3n203tV0L+UrmeQEuzX0TKpFu5An2cnuEA/F/SNY="; hash = "sha256-B67v9B8LXDbWNxYNRxM3dgFFLjFSyJmm0zd3G5Bgvek=";
}; };
sourceRoot = "source/src"; sourceRoot = "source/src";
nativeBuildInputs = [ cmake xxd ]; nativeBuildInputs = [ cmake xxd ];
buildInputs = [ clang-unwrapped elfutils llvm ]; buildInputs = [ clang-unwrapped elfutils llvm numactl ];
cmakeFlags = [ cmakeFlags = [
"-DBITCODE_DIR=${rocm-device-libs}/amdgcn/bitcode" "-DBITCODE_DIR=${rocm-device-libs}/amdgcn/bitcode"
@ -43,6 +45,6 @@ stdenv.mkDerivation rec {
description = "Platform runtime for ROCm"; description = "Platform runtime for ROCm";
homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime"; homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime";
license = with licenses; [ ncsa ]; license = with licenses; [ ncsa ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ danieldk lovesegfault ];
}; };
} }

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-thunk"; pname = "rocm-thunk";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCT-Thunk-Interface"; repo = "ROCT-Thunk-Interface";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-gdto7BbrSRa3UiRNvTW1KLkHyjrcxdah4+L+1Gdm0wA="; hash = "sha256-jpwFL4UbEnWkw1AiM4U1s1t7GiqzBeOwa55VpnOG2Dk=";
}; };
preConfigure = '' preConfigure = ''
@ -32,6 +32,6 @@ stdenv.mkDerivation rec {
description = "Radeon open compute thunk interface"; description = "Radeon open compute thunk interface";
homepage = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface"; homepage = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface";
license = with licenses; [ bsd2 mit ]; license = with licenses; [ bsd2 mit ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
}; };
} }

View File

@ -17,11 +17,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "google-cloud-asset"; pname = "google-cloud-asset";
version = "3.4.0"; version = "3.5.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "bd1fe84efd2e45042d95c7e5713e0a0365ec8138df062c07fab761233202ab6f"; sha256 = "7d7218ffdd17d64184e1de69ef016f1f070bb0c888785510c4731948b078067d";
}; };
postPatch = '' postPatch = ''

View File

@ -12,11 +12,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "google-resumable-media"; pname = "google-resumable-media";
version = "2.0.1"; version = "2.0.2";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "cac55be7802e3424b8f022d8a572a8349327e7ce8494eee5e0f4df02458b1813"; sha256 = "36d682161fdcbfa29681212c210fabecbf6849a505a0cbc54b7f70a10a5278a2";
}; };
propagatedBuildInputs = [ google-auth google-crc32c requests ]; propagatedBuildInputs = [ google-auth google-crc32c requests ];

View File

@ -31,7 +31,11 @@ buildPythonPackage rec {
url = "https://github.com/jmschrei/pomegranate/commit/42d14bebc44ffd4a778b2a6430aa845591b7c3b7.patch"; url = "https://github.com/jmschrei/pomegranate/commit/42d14bebc44ffd4a778b2a6430aa845591b7c3b7.patch";
sha256 = "0f9cx0fj9xkr3hch7jyrn76zjypilh5bqw734caaw6g2m49lvbff"; sha256 = "0f9cx0fj9xkr3hch7jyrn76zjypilh5bqw734caaw6g2m49lvbff";
}) })
]; ] ++ [
# Likely an upstream test bug and not a real problem:
# https://github.com/jmschrei/pomegranate/issues/939
./disable-failed-on-nextworkx-2.6.patch
] ;
propagatedBuildInputs = [ numpy scipy cython networkx joblib pyyaml ]; propagatedBuildInputs = [ numpy scipy cython networkx joblib pyyaml ];

View File

@ -0,0 +1,26 @@
Test started failing after upgrading networkx 2.5.1 -> 2.6.2:
https://github.com/jmschrei/pomegranate/issues/939
Failures look benigh.
--- a/tests/test_bayesian_network.py
+++ b/tests/test_bayesian_network.py
@@ -1057,7 +1057,8 @@ def test_exact_structure_learning_exclude_edges():
assert_not_equal(model.structure[-2], (d-1,))
assert_equal(model.structure[-2], (1,))
-def test_exact_dp_structure_learning_exclude_edges():
+# disabled for https://github.com/jmschrei/pomegranate/issues/939
+def disabled_exact_dp_structure_learning_exclude_edges():
for X in datasets:
X = X.copy()
X[:,1] = X[:,-1]
@@ -1139,7 +1140,8 @@ def test_constrained_parents_structure_learning_exclude_edges():
assert_equal(model.structure[7], (2,))
assert_equal(model.structure[4], (0,))
-def test_constrained_slap_structure_learning_exclude_edges():
+# disabled for https://github.com/jmschrei/pomegranate/issues/939
+def disabled_constrained_slap_structure_learning_exclude_edges():
for X in datasets:
X = X.copy()
X[:,1] = X[:,-1]

View File

@ -24,13 +24,13 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "trezor"; pname = "trezor";
version = "0.12.3"; version = "0.12.4";
disabled = !isPy3k; disabled = !isPy3k;
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "02c39c333435b8f6dc62cc79bb5bf35fc7f0eb144a1a748be3b7c065ee3e85ae"; sha256 = "3e180d9f9f8b69176b5ef36311b6161f5b793b538eb2dfd4babbb4d3fb1e374e";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-cmake"; pname = "rocm-cmake";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "rocm-cmake"; repo = "rocm-cmake";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-uK060F7d7/pTCNbGqdKCzxgPrPPbGjNwuUOt176z7EM="; hash = "sha256-BhpYOL7+IlBpkzeFjfy6KLO7ail472KQWFfQX/sXLGo=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -0,0 +1,38 @@
{ stdenv, lib, fetchFromGitHub, fetchpatch, cmake, rocm-runtime, python3, rocm-cmake, busybox, gnugrep
# rocminfo requires that the calling user have a password and be in
# the video group. If we let rocm_agent_enumerator rely upon
# rocminfo's output, then it, too, has those requirements. Instead,
# we can specify the GPU targets for this system (e.g. "gfx803" for
# Polaris) such that no system call is needed for downstream
# compilers to determine the desired target.
, defaultTargets ? []}:
stdenv.mkDerivation rec {
version = "4.3.1";
pname = "rocminfo";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "rocminfo";
rev = "rocm-${version}";
sha256 = "sha256-n80tiSVaPTFl4imZvoFENM4KhPLxgDKz5VlOvhEYlV0=";
};
enableParallelBuilding = true;
buildInputs = [ cmake rocm-cmake rocm-runtime ];
cmakeFlags = [
"-DROCM_DIR=${rocm-runtime}"
"-DROCRTST_BLD_TYPE=Release"
];
prePatch = ''
sed 's,#!/usr/bin/env python3,#!${python3}/bin/python,' -i rocm_agent_enumerator
sed 's,lsmod | grep ,${busybox}/bin/lsmod | ${gnugrep}/bin/grep ,' -i rocminfo.cc
'';
installPhase = ''
mkdir -p $out/bin
cp rocminfo $out/bin
cp rocm_agent_enumerator $out/bin
'' + lib.optionalString (defaultTargets != []) ''
echo '${lib.concatStringsSep "\n" defaultTargets}' > $out/bin/target.lst
'';
}

View File

@ -3482,12 +3482,12 @@ final: prev:
pname = "neorg"; pname = "neorg";
version = "2021-09-05"; version = "2021-09-05";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "vhyrro"; owner = "nvim-neorg";
repo = "neorg"; repo = "neorg";
rev = "47a0a3d91ddde94488ccd03d38b5beeb296d3148"; rev = "47a0a3d91ddde94488ccd03d38b5beeb296d3148";
sha256 = "0n8scyjy3wx2l3anl3dyipx7rlayrjb5dlri2r81dr1s77vkch83"; sha256 = "0n8scyjy3wx2l3anl3dyipx7rlayrjb5dlri2r81dr1s77vkch83";
}; };
meta.homepage = "https://github.com/vhyrro/neorg/"; meta.homepage = "https://github.com/nvim-neorg/neorg/";
}; };
neoscroll-nvim = buildVimPluginFrom2Nix { neoscroll-nvim = buildVimPluginFrom2Nix {

View File

@ -511,6 +511,7 @@ nvim-lua/lsp-status.nvim
nvim-lua/lsp_extensions.nvim nvim-lua/lsp_extensions.nvim
nvim-lua/plenary.nvim nvim-lua/plenary.nvim
nvim-lua/popup.nvim nvim-lua/popup.nvim
nvim-neorg/neorg@main
nvim-telescope/telescope-dap.nvim nvim-telescope/telescope-dap.nvim
nvim-telescope/telescope-frecency.nvim nvim-telescope/telescope-frecency.nvim
nvim-telescope/telescope-fzf-native.nvim@main nvim-telescope/telescope-fzf-native.nvim@main
@ -789,7 +790,6 @@ urbit/hoon.vim
Valloric/MatchTagAlways Valloric/MatchTagAlways
Valodim/deoplete-notmuch Valodim/deoplete-notmuch
vhda/verilog_systemverilog.vim vhda/verilog_systemverilog.vim
vhyrro/neorg@main
vigoux/LanguageTool.nvim vigoux/LanguageTool.nvim
vim-airline/vim-airline vim-airline/vim-airline
vim-airline/vim-airline-themes vim-airline/vim-airline-themes

View File

@ -59,5 +59,6 @@ stdenv.mkDerivation {
platforms = [ "x86_64-linux" "i686-linux" ]; platforms = [ "x86_64-linux" "i686-linux" ];
homepage = "https://github.com/Bumblebee-Project/bbswitch"; homepage = "https://github.com/Bumblebee-Project/bbswitch";
maintainers = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];
license = licenses.gpl2Plus;
}; };
} }

View File

@ -40,6 +40,6 @@ stdenv.mkDerivation {
homepage = "https://github.com/brendangregg/perf-tools"; homepage = "https://github.com/brendangregg/perf-tools";
description = "Performance analysis tools based on Linux perf_events (aka perf) and ftrace"; description = "Performance analysis tools based on Linux perf_events (aka perf) and ftrace";
maintainers = [ maintainers.eelco ]; maintainers = [ maintainers.eelco ];
license = licenses.gpl2; license = licenses.gpl2Plus;
}; };
} }

View File

@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
version = "0.16"; version = "0.16";
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/${pname}-${version}.tar.gz"; url = "https://www.lenzg.net/mylvmbackup/${pname}-${version}.tar.gz";
sha256 = "sha256-vb7M3EPIrxIz6jUwm241fzaEz2czqdCObrFgSOSgJRU="; sha256 = "sha256-vb7M3EPIrxIz6jUwm241fzaEz2czqdCObrFgSOSgJRU=";
}; };

View File

@ -0,0 +1,26 @@
{ lib, buildPythonPackage, fetchFromGitHub, docopt }:
buildPythonPackage rec {
pname = "spoof-mac";
version = "unstable-2018-01-27";
src = fetchFromGitHub {
owner = "feross";
repo = "SpoofMAC";
rev = "2cfc796150ef48009e9b765fe733e37d82c901e0";
sha256 = "sha256-Qiu0URjUyx8QDVQQUFGxPax0J80e2m4+bPJeqFoKxX8=";
};
propagatedBuildInputs = [ docopt ];
# No tests
doCheck = false;
meta = with lib; {
description = "Change your MAC address for debugging purposes";
homepage = "https://github.com/feross/SpoofMAC";
license = licenses.mit;
maintainers = with maintainers; [ siraben ];
platforms = platforms.unix;
};
}

View File

@ -1,17 +1,17 @@
{ lib, stdenv, fetchFromGitHub, cmake, python3 }: { lib, stdenv, fetchFromGitHub, cmake, wrapPython }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-smi"; pname = "rocm-smi";
version = "4.1.0"; version = "4.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "rocm_smi_lib"; repo = "rocm_smi_lib";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-LEaC1XhmyoVWrpL05MhgN02LVT2rLKdnw9g2QdfM/uE="; hash = "sha256-Ckno73Otkc9rHEUkSgNoOui+6ZHGUF+B9iAoe0NQH0c=";
}; };
nativeBuildInputs = [ cmake python3.pkgs.wrapPython ]; nativeBuildInputs = [ cmake wrapPython ];
postPatch = '' postPatch = ''
# Upstream ROCm is installed in an /opt directory. For this reason, # Upstream ROCm is installed in an /opt directory. For this reason,
@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
description = "System management interface for AMD GPUs supported by ROCm"; description = "System management interface for AMD GPUs supported by ROCm";
homepage = "https://github.com/RadeonOpenCompute/ROC-smi"; homepage = "https://github.com/RadeonOpenCompute/ROC-smi";
license = with licenses; [ mit ]; license = with licenses; [ mit ];
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ lovesegfault ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View File

@ -2,22 +2,22 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "difftastic"; pname = "difftastic";
version = "0.6"; version = "0.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wilfred"; owner = "wilfred";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "WFvxdRCbTBW1RGn2SvAo2iXn82OO/Z06cZQkIu4eiew="; sha256 = "0103py4v4v7xqv85yiczhd9w9h1aa54svhhdibvbl6x4b35y2mk5";
}; };
cargoSha256 = "2hRUfIxNVs4uSrEESas3wvvVsZHVocP8aiO7K0NZ+mY="; cargoSha256 = "1k0d7yadicfzfc2m1aqs4c4a2k3srb54fpwarc3kwn26v3vfjai1";
meta = with lib; { meta = with lib; {
description = "A syntax-aware diff"; description = "A syntax-aware diff";
homepage = "https://github.com/Wilfred/difftastic"; homepage = "https://github.com/Wilfred/difftastic";
changelog = "https://github.com/Wilfred/difftastic/raw/${version}/CHANGELOG.md";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ ethancedwards8 ]; maintainers = with maintainers; [ ethancedwards8 ];
platforms = platforms.unix;
}; };
} }

View File

@ -9086,6 +9086,8 @@ with pkgs;
spicy = callPackage ../development/tools/spicy { }; spicy = callPackage ../development/tools/spicy { };
spoof-mac = python3Packages.callPackage ../tools/networking/spoof-mac { };
ssh-askpass-fullscreen = callPackage ../tools/networking/ssh-askpass-fullscreen { }; ssh-askpass-fullscreen = callPackage ../tools/networking/ssh-askpass-fullscreen { };
sshguard = callPackage ../tools/security/sshguard {}; sshguard = callPackage ../tools/security/sshguard {};
@ -12173,11 +12175,14 @@ with pkgs;
inherit (llvmPackages_rocm) clang; inherit (llvmPackages_rocm) clang;
}; };
hip = callPackage ../development/compilers/hip {
inherit (llvmPackages_rocm) clang clang-unwrapped compiler-rt lld llvm;
};
rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake { }; rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake { };
rocm-comgr = callPackage ../development/libraries/rocm-comgr { rocm-comgr = callPackage ../development/libraries/rocm-comgr {
inherit (llvmPackages_rocm) clang lld llvm; inherit (llvmPackages_rocm) clang lld llvm;
device-libs = rocm-device-libs;
}; };
rocm-device-libs = callPackage ../development/libraries/rocm-device-libs { rocm-device-libs = callPackage ../development/libraries/rocm-device-libs {
@ -12194,11 +12199,12 @@ with pkgs;
inherit (llvmPackages_rocm) clang-unwrapped llvm; inherit (llvmPackages_rocm) clang-unwrapped llvm;
}; };
# Python >= 3.8 still gives a bunch of warnings. rocm-smi = python3Packages.callPackage ../tools/system/rocm-smi { };
rocm-smi = python37.pkgs.callPackage ../tools/system/rocm-smi { };
rocm-thunk = callPackage ../development/libraries/rocm-thunk { }; rocm-thunk = callPackage ../development/libraries/rocm-thunk { };
rocminfo = callPackage ../development/tools/rocminfo { };
rtags = callPackage ../development/tools/rtags { rtags = callPackage ../development/tools/rtags {
inherit (darwin) apple_sdk; inherit (darwin) apple_sdk;
}; };