Merge master into staging-next

This commit is contained in:
github-actions[bot] 2021-10-18 18:01:14 +00:00 committed by GitHub
commit b0a41194a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
66 changed files with 2378 additions and 4876 deletions

View File

@ -2443,6 +2443,12 @@
githubId = 4331004;
name = "Naoya Hatta";
};
dalpd = {
email = "denizalpd@ogr.iu.edu.tr";
github = "dalpd";
githubId = 16895361;
name = "Deniz Alp Durmaz";
};
DamienCassou = {
email = "damien@cassou.me";
github = "DamienCassou";

View File

@ -33,8 +33,7 @@ TMP_FILE="$(mktemp)"
GENERATED_NIXFILE="pkgs/development/lua-modules/generated-packages.nix"
LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
HEADER = """
/* {GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
HEADER = """/* {GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
Regenerate it with:
nixpkgs$ ./maintainers/scripts/update-luarocks-packages
@ -99,9 +98,8 @@ class LuaEditor(Editor):
header2 = textwrap.dedent(
# header2 = inspect.cleandoc(
"""
{ self, stdenv, lib, fetchurl, fetchgit, ... } @ args:
self: super:
with self;
{ self, stdenv, lib, fetchurl, fetchgit, callPackage, ... } @ args:
final: prev:
{
""")
f.write(header2)
@ -199,6 +197,7 @@ def generate_pkg_nix(plug: LuaPlugin):
log.debug("running %s", ' '.join(cmd))
output = subprocess.check_output(cmd, text=True)
output = "callPackage(" + output.strip() + ") {};\n\n"
return (plug, output)
def main():

View File

@ -1568,6 +1568,15 @@ Superuser created successfully.
encapsulation.
</para>
</listitem>
<listitem>
<para>
Changing systemd <literal>.socket</literal> units now restarts
them and stops the service that is activated by them.
Additionally, services with
<literal>stopOnChange = false</literal> dont break anymore
when they are socket-activated.
</para>
</listitem>
</itemizedlist>
</section>
</section>

View File

@ -453,3 +453,5 @@ In addition to numerous new and upgraded packages, this release has the followin
- The `networking` module has a new `networking.fooOverUDP` option to configure Foo-over-UDP encapsulations.
- `networking.sits` now supports Foo-over-UDP encapsulation.
- Changing systemd `.socket` units now restarts them and stops the service that is activated by them. Additionally, services with `stopOnChange = false` don't break anymore when they are socket-activated.

View File

@ -152,6 +152,8 @@ in
install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.download-dir}'
'' + optionalString cfg.settings.incomplete-dir-enabled ''
install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.incomplete-dir}'
'' + optionalString cfg.settings.watch-dir-enabled ''
install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.watch-dir}'
'';
assertions = [

View File

@ -11,7 +11,6 @@ use Cwd 'abs_path';
my $out = "@out@";
# FIXME: maybe we should use /proc/1/exe to get the current systemd.
my $curSystemd = abs_path("/run/current-system/sw/bin");
# To be robust against interruption, record what units need to be started etc.
@ -19,13 +18,16 @@ my $startListFile = "/run/nixos/start-list";
my $restartListFile = "/run/nixos/restart-list";
my $reloadListFile = "/run/nixos/reload-list";
# Parse restart/reload requests by the activation script
# Parse restart/reload requests by the activation script.
# Activation scripts may write newline-separated units to this
# file and switch-to-configuration will handle them. While
# `stopIfChanged = true` is ignored, switch-to-configuration will
# handle `restartIfChanged = false` and `reloadIfChanged = true`.
# This also works for socket-activated units.
my $restartByActivationFile = "/run/nixos/activation-restart-list";
my $reloadByActivationFile = "/run/nixos/activation-reload-list";
my $dryRestartByActivationFile = "/run/nixos/dry-activation-restart-list";
my $dryReloadByActivationFile = "/run/nixos/dry-activation-reload-list";
make_path("/run/nixos", { mode => 0755 });
make_path("/run/nixos", { mode => oct(755) });
my $action = shift @ARGV;
@ -147,6 +149,92 @@ sub fingerprintUnit {
return abs_path($s) . (-f "${s}.d/overrides.conf" ? " " . abs_path "${s}.d/overrides.conf" : "");
}
sub handleModifiedUnit {
my ($unit, $baseName, $newUnitFile, $activePrev, $unitsToStop, $unitsToStart, $unitsToReload, $unitsToRestart, $unitsToSkip) = @_;
if ($unit eq "sysinit.target" || $unit eq "basic.target" || $unit eq "multi-user.target" || $unit eq "graphical.target" || $unit =~ /\.slice$/ || $unit =~ /\.path$/) {
# Do nothing. These cannot be restarted directly.
# Slices and Paths don't have to be restarted since
# properties (resource limits and inotify watches)
# seem to get applied on daemon-reload.
} elsif ($unit =~ /\.mount$/) {
# Reload the changed mount unit to force a remount.
$unitsToReload->{$unit} = 1;
recordUnit($reloadListFile, $unit);
} else {
my $unitInfo = parseUnit($newUnitFile);
if (boolIsTrue($unitInfo->{'X-ReloadIfChanged'} // "no")) {
$unitsToReload->{$unit} = 1;
recordUnit($reloadListFile, $unit);
}
elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") || boolIsTrue($unitInfo->{'X-OnlyManualStart'} // "no")) {
$unitsToSkip->{$unit} = 1;
} else {
# If this unit is socket-activated, then stop it instead
# of restarting it to make sure the new version of it is
# socket-activated.
my $socketActivated = 0;
if ($unit =~ /\.service$/) {
my @sockets = split / /, ($unitInfo->{Sockets} // "");
if (scalar @sockets == 0) {
@sockets = ("$baseName.socket");
}
foreach my $socket (@sockets) {
if (-e "$out/etc/systemd/system/$socket") {
$socketActivated = 1;
$unitsToStop->{$unit} = 1;
# If the socket was not running previously,
# start it now.
if (not defined $activePrev->{$socket}) {
$unitsToStart->{$socket} = 1;
}
}
}
}
# Don't do the rest of this for socket-activated units
# because we handled these above where we stop the unit.
# Since only services can be socket-activated, the
# following condition always evaluates to `true` for
# non-service units.
if ($socketActivated) {
return;
}
# If we are restarting a socket, also stop the corresponding
# service. This is required because restarting a socket
# when the service is already activated fails.
if ($unit =~ /\.socket$/) {
my $service = $unitInfo->{Service} // "";
if ($service eq "") {
$service = "$baseName.service";
}
if (defined $activePrev->{$service}) {
$unitsToStop->{$service} = 1;
}
$unitsToRestart->{$unit} = 1;
recordUnit($restartListFile, $unit);
} else {
# Always restart non-services instead of stopping and starting them
# because it doesn't make sense to stop them with a config from
# the old evaluation.
if (!boolIsTrue($unitInfo->{'X-StopIfChanged'} // "yes") || $unit !~ /\.service$/) {
# This unit should be restarted instead of
# stopped and started.
$unitsToRestart->{$unit} = 1;
recordUnit($restartListFile, $unit);
} else {
# We write to a file to ensure that the
# service gets restarted if we're interrupted.
$unitsToStart->{$unit} = 1;
recordUnit($startListFile, $unit);
$unitsToStop->{$unit} = 1;
}
}
}
}
}
# Figure out what units need to be stopped, started, restarted or reloaded.
my (%unitsToStop, %unitsToSkip, %unitsToStart, %unitsToRestart, %unitsToReload);
@ -219,65 +307,7 @@ while (my ($unit, $state) = each %{$activePrev}) {
}
elsif (fingerprintUnit($prevUnitFile) ne fingerprintUnit($newUnitFile)) {
if ($unit eq "sysinit.target" || $unit eq "basic.target" || $unit eq "multi-user.target" || $unit eq "graphical.target") {
# Do nothing. These cannot be restarted directly.
} elsif ($unit =~ /\.mount$/) {
# Reload the changed mount unit to force a remount.
$unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
} elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) {
# FIXME: do something?
} else {
my $unitInfo = parseUnit($newUnitFile);
if (boolIsTrue($unitInfo->{'X-ReloadIfChanged'} // "no")) {
$unitsToReload{$unit} = 1;
recordUnit($reloadListFile, $unit);
}
elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") || boolIsTrue($unitInfo->{'X-OnlyManualStart'} // "no")) {
$unitsToSkip{$unit} = 1;
} else {
if (!boolIsTrue($unitInfo->{'X-StopIfChanged'} // "yes")) {
# This unit should be restarted instead of
# stopped and started.
$unitsToRestart{$unit} = 1;
recordUnit($restartListFile, $unit);
} else {
# If this unit is socket-activated, then stop the
# socket unit(s) as well, and restart the
# socket(s) instead of the service.
my $socketActivated = 0;
if ($unit =~ /\.service$/) {
my @sockets = split / /, ($unitInfo->{Sockets} // "");
if (scalar @sockets == 0) {
@sockets = ("$baseName.socket");
}
foreach my $socket (@sockets) {
if (defined $activePrev->{$socket}) {
$unitsToStop{$socket} = 1;
# Only restart sockets that actually
# exist in new configuration:
if (-e "$out/etc/systemd/system/$socket") {
$unitsToStart{$socket} = 1;
recordUnit($startListFile, $socket);
$socketActivated = 1;
}
}
}
}
# If the unit is not socket-activated, record
# that this unit needs to be started below.
# We write this to a file to ensure that the
# service gets restarted if we're interrupted.
if (!$socketActivated) {
$unitsToStart{$unit} = 1;
recordUnit($startListFile, $unit);
}
$unitsToStop{$unit} = 1;
}
}
}
handleModifiedUnit($unit, $baseName, $newUnitFile, $activePrev, \%unitsToStop, \%unitsToStart, \%unitsToReload, \%unitsToRestart, %unitsToSkip);
}
}
}
@ -362,8 +392,6 @@ sub filterUnits {
}
my @unitsToStopFiltered = filterUnits(\%unitsToStop);
my @unitsToStartFiltered = filterUnits(\%unitsToStart);
# Show dry-run actions.
if ($action eq "dry-activate") {
@ -375,21 +403,44 @@ if ($action eq "dry-activate") {
print STDERR "would activate the configuration...\n";
system("$out/dry-activate", "$out");
$unitsToRestart{$_} = 1 foreach
split('\n', read_file($dryRestartByActivationFile, err_mode => 'quiet') // "");
# Handle the activation script requesting the restart or reload of a unit.
my %unitsToAlsoStop;
my %unitsToAlsoSkip;
foreach (split('\n', read_file($dryRestartByActivationFile, err_mode => 'quiet') // "")) {
my $unit = $_;
my $baseUnit = $unit;
my $newUnitFile = "$out/etc/systemd/system/$baseUnit";
$unitsToReload{$_} = 1 foreach
split('\n', read_file($dryReloadByActivationFile, err_mode => 'quiet') // "");
# Detect template instances.
if (!-e $newUnitFile && $unit =~ /^(.*)@[^\.]*\.(.*)$/) {
$baseUnit = "$1\@.$2";
$newUnitFile = "$out/etc/systemd/system/$baseUnit";
}
my $baseName = $baseUnit;
$baseName =~ s/\.[a-z]*$//;
handleModifiedUnit($unit, $baseName, $newUnitFile, $activePrev, \%unitsToAlsoStop, \%unitsToStart, \%unitsToReload, \%unitsToRestart, %unitsToAlsoSkip);
}
unlink($dryRestartByActivationFile);
my @unitsToAlsoStopFiltered = filterUnits(\%unitsToAlsoStop);
if (scalar(keys %unitsToAlsoStop) > 0) {
print STDERR "would stop the following units as well: ", join(", ", @unitsToAlsoStopFiltered), "\n"
if scalar @unitsToAlsoStopFiltered;
}
print STDERR "would NOT restart the following changed units as well: ", join(", ", sort(keys %unitsToAlsoSkip)), "\n"
if scalar(keys %unitsToAlsoSkip) > 0;
print STDERR "would restart systemd\n" if $restartSystemd;
print STDERR "would restart the following units: ", join(", ", sort(keys %unitsToRestart)), "\n"
if scalar(keys %unitsToRestart) > 0;
print STDERR "would start the following units: ", join(", ", @unitsToStartFiltered), "\n"
if scalar @unitsToStartFiltered;
print STDERR "would reload the following units: ", join(", ", sort(keys %unitsToReload)), "\n"
if scalar(keys %unitsToReload) > 0;
unlink($dryRestartByActivationFile);
unlink($dryReloadByActivationFile);
print STDERR "would restart the following units: ", join(", ", sort(keys %unitsToRestart)), "\n"
if scalar(keys %unitsToRestart) > 0;
my @unitsToStartFiltered = filterUnits(\%unitsToStart);
print STDERR "would start the following units: ", join(", ", @unitsToStartFiltered), "\n"
if scalar @unitsToStartFiltered;
exit 0;
}
@ -400,7 +451,7 @@ if (scalar (keys %unitsToStop) > 0) {
print STDERR "stopping the following units: ", join(", ", @unitsToStopFiltered), "\n"
if scalar @unitsToStopFiltered;
# Use current version of systemctl binary before daemon is reexeced.
system("$curSystemd/systemctl", "stop", "--", sort(keys %unitsToStop)); # FIXME: ignore errors?
system("$curSystemd/systemctl", "stop", "--", sort(keys %unitsToStop));
}
print STDERR "NOT restarting the following changed units: ", join(", ", sort(keys %unitsToSkip)), "\n"
@ -414,12 +465,38 @@ system("$out/activate", "$out") == 0 or $res = 2;
# Handle the activation script requesting the restart or reload of a unit.
# We can only restart and reload (not stop/start) because the units to be
# stopped are already stopped before the activation script is run.
$unitsToRestart{$_} = 1 foreach
split('\n', read_file($restartByActivationFile, err_mode => 'quiet') // "");
# stopped are already stopped before the activation script is run. We do however
# make an exception for services that are socket-activated and that have to be stopped
# instead of being restarted.
my %unitsToAlsoStop;
my %unitsToAlsoSkip;
foreach (split('\n', read_file($restartByActivationFile, err_mode => 'quiet') // "")) {
my $unit = $_;
my $baseUnit = $unit;
my $newUnitFile = "$out/etc/systemd/system/$baseUnit";
$unitsToReload{$_} = 1 foreach
split('\n', read_file($reloadByActivationFile, err_mode => 'quiet') // "");
# Detect template instances.
if (!-e $newUnitFile && $unit =~ /^(.*)@[^\.]*\.(.*)$/) {
$baseUnit = "$1\@.$2";
$newUnitFile = "$out/etc/systemd/system/$baseUnit";
}
my $baseName = $baseUnit;
$baseName =~ s/\.[a-z]*$//;
handleModifiedUnit($unit, $baseName, $newUnitFile, $activePrev, \%unitsToAlsoStop, \%unitsToStart, \%unitsToReload, \%unitsToRestart, %unitsToAlsoSkip);
}
unlink($restartByActivationFile);
my @unitsToAlsoStopFiltered = filterUnits(\%unitsToAlsoStop);
if (scalar(keys %unitsToAlsoStop) > 0) {
print STDERR "stopping the following units as well: ", join(", ", @unitsToAlsoStopFiltered), "\n"
if scalar @unitsToAlsoStopFiltered;
system("$curSystemd/systemctl", "stop", "--", sort(keys %unitsToAlsoStop));
}
print STDERR "NOT restarting the following changed units as well: ", join(", ", sort(keys %unitsToAlsoSkip)), "\n"
if scalar(keys %unitsToAlsoSkip) > 0;
# Restart systemd if necessary. Note that this is done using the
# current version of systemd, just in case the new one has trouble
@ -460,14 +537,40 @@ if (scalar(keys %unitsToReload) > 0) {
print STDERR "reloading the following units: ", join(", ", sort(keys %unitsToReload)), "\n";
system("@systemd@/bin/systemctl", "reload", "--", sort(keys %unitsToReload)) == 0 or $res = 4;
unlink($reloadListFile);
unlink($reloadByActivationFile);
}
# Restart changed services (those that have to be restarted rather
# than stopped and started).
if (scalar(keys %unitsToRestart) > 0) {
print STDERR "restarting the following units: ", join(", ", sort(keys %unitsToRestart)), "\n";
system("@systemd@/bin/systemctl", "restart", "--", sort(keys %unitsToRestart)) == 0 or $res = 4;
# We split the units to be restarted into sockets and non-sockets.
# This is because restarting sockets may fail which is not bad by
# itself but which will prevent changes on the sockets. We usually
# restart the socket and stop the service before that. Restarting
# the socket will fail however when the service was re-activated
# in the meantime. There is no proper way to prevent that from happening.
my @unitsWithErrorHandling = grep { $_ !~ /\.socket$/ } sort(keys %unitsToRestart);
my @unitsWithoutErrorHandling = grep { $_ =~ /\.socket$/ } sort(keys %unitsToRestart);
if (scalar(@unitsWithErrorHandling) > 0) {
system("@systemd@/bin/systemctl", "restart", "--", @unitsWithErrorHandling) == 0 or $res = 4;
}
if (scalar(@unitsWithoutErrorHandling) > 0) {
# Don't print warnings from systemctl
no warnings 'once';
open(OLDERR, ">&", \*STDERR);
close(STDERR);
my $ret = system("@systemd@/bin/systemctl", "restart", "--", @unitsWithoutErrorHandling);
# Print stderr again
open(STDERR, ">&OLDERR");
if ($ret ne 0) {
print STDERR "warning: some sockets failed to restart. Please check your journal (journalctl -eb) and act accordingly.\n";
}
}
unlink($restartListFile);
unlink($restartByActivationFile);
}
@ -478,6 +581,7 @@ if (scalar(keys %unitsToRestart) > 0) {
# that are symlinks to other units. We shouldn't start both at the
# same time because we'll get a "Failed to add path to set" error from
# systemd.
my @unitsToStartFiltered = filterUnits(\%unitsToStart);
print STDERR "starting the following units: ", join(", ", @unitsToStartFiltered), "\n"
if scalar @unitsToStartFiltered;
system("@systemd@/bin/systemctl", "start", "--", sort(keys %unitsToStart)) == 0 or $res = 4;
@ -485,7 +589,7 @@ unlink($startListFile);
# Print failed and new units.
my (@failed, @new, @restarting);
my (@failed, @new);
my $activeNew = getActiveUnits;
while (my ($unit, $state) = each %{$activeNew}) {
if ($state->{state} eq "failed") {
@ -501,7 +605,9 @@ while (my ($unit, $state) = each %{$activeNew}) {
push @failed, $unit;
}
}
elsif ($state->{state} ne "failed" && !defined $activePrev->{$unit}) {
# Ignore scopes since they are not managed by this script but rather
# created and managed by third-party services via the systemd dbus API.
elsif ($state->{state} ne "failed" && !defined $activePrev->{$unit} && $unit !~ /\.scope$/) {
push @new, $unit;
}
}

View File

@ -84,6 +84,13 @@ let
export localeArchive="${config.i18n.glibcLocales}/lib/locale/locale-archive"
substituteAll ${./switch-to-configuration.pl} $out/bin/switch-to-configuration
chmod +x $out/bin/switch-to-configuration
${optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) ''
if ! output=$($perl/bin/perl -c $out/bin/switch-to-configuration 2>&1); then
echo "switch-to-configuration syntax is not valid:"
echo "$output"
exit 1
fi
''}
echo -n "${toString config.system.extraDependencies}" > $out/extra-dependencies

View File

@ -7,15 +7,224 @@ import ./make-test-python.nix ({ pkgs, ...} : {
};
nodes = {
machine = { ... }: {
machine = { config, pkgs, lib, ... }: {
environment.systemPackages = [ pkgs.socat ]; # for the socket activation stuff
users.mutableUsers = false;
specialisation = {
# A system with a simple socket-activated unit
simple-socket.configuration = {
systemd.services.socket-activated.serviceConfig = {
ExecStart = pkgs.writeScript "socket-test.py" /* python */ ''
#!${pkgs.python3}/bin/python3
from socketserver import TCPServer, StreamRequestHandler
import socket
class Handler(StreamRequestHandler):
def handle(self):
self.wfile.write("hello".encode("utf-8"))
class Server(TCPServer):
def __init__(self, server_address, handler_cls):
# Invoke base but omit bind/listen steps (performed by systemd activation!)
TCPServer.__init__(
self, server_address, handler_cls, bind_and_activate=False)
# Override socket
self.socket = socket.fromfd(3, self.address_family, self.socket_type)
if __name__ == "__main__":
server = Server(("localhost", 1234), Handler)
server.serve_forever()
'';
};
systemd.sockets.socket-activated = {
wantedBy = [ "sockets.target" ];
listenStreams = [ "/run/test.sock" ];
socketConfig.SocketMode = lib.mkDefault "0777";
};
};
# The same system but the socket is modified
modified-socket.configuration = {
imports = [ config.specialisation.simple-socket.configuration ];
systemd.sockets.socket-activated.socketConfig.SocketMode = "0666";
};
# The same system but the service is modified
modified-service.configuration = {
imports = [ config.specialisation.simple-socket.configuration ];
systemd.services.socket-activated.serviceConfig.X-Test = "test";
};
# The same system but both service and socket are modified
modified-service-and-socket.configuration = {
imports = [ config.specialisation.simple-socket.configuration ];
systemd.services.socket-activated.serviceConfig.X-Test = "some_value";
systemd.sockets.socket-activated.socketConfig.SocketMode = "0444";
};
# A system with a socket-activated service and some simple services
service-and-socket.configuration = {
imports = [ config.specialisation.simple-socket.configuration ];
systemd.services.simple-service = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
};
};
systemd.services.simple-restart-service = {
stopIfChanged = false;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
};
};
systemd.services.simple-reload-service = {
reloadIfChanged = true;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
ExecReload = "${pkgs.coreutils}/bin/true";
};
};
systemd.services.no-restart-service = {
restartIfChanged = false;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
};
};
};
# The same system but with an activation script that restarts all services
restart-and-reload-by-activation-script.configuration = {
imports = [ config.specialisation.service-and-socket.configuration ];
system.activationScripts.restart-and-reload-test = {
supportsDryActivation = true;
deps = [];
text = ''
if [ "$NIXOS_ACTION" = dry-activate ]; then
f=/run/nixos/dry-activation-restart-list
else
f=/run/nixos/activation-restart-list
fi
cat <<EOF >> "$f"
simple-service.service
simple-restart-service.service
simple-reload-service.service
no-restart-service.service
socket-activated.service
EOF
'';
};
};
# A system with a timer
with-timer.configuration = {
systemd.timers.test-timer = {
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "@1395716396"; # chosen by fair dice roll
};
systemd.services.test-timer = {
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.coreutils}/bin/true";
};
};
};
# The same system but with another time
with-timer-modified.configuration = {
imports = [ config.specialisation.with-timer.configuration ];
systemd.timers.test-timer.timerConfig.OnCalendar = lib.mkForce "Fri 2012-11-23 16:00:00";
};
# A system with a systemd mount
with-mount.configuration = {
systemd.mounts = [
{
description = "Testmount";
what = "tmpfs";
type = "tmpfs";
where = "/testmount";
options = "size=1M";
wantedBy = [ "local-fs.target" ];
}
];
};
# The same system but with another time
with-mount-modified.configuration = {
systemd.mounts = [
{
description = "Testmount";
what = "tmpfs";
type = "tmpfs";
where = "/testmount";
options = "size=10M";
wantedBy = [ "local-fs.target" ];
}
];
};
# A system with a path unit
with-path.configuration = {
systemd.paths.test-watch = {
wantedBy = [ "paths.target" ];
pathConfig.PathExists = "/testpath";
};
systemd.services.test-watch = {
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.coreutils}/bin/touch /testpath-modified";
};
};
};
# The same system but watching another file
with-path-modified.configuration = {
imports = [ config.specialisation.with-path.configuration ];
systemd.paths.test-watch.pathConfig.PathExists = lib.mkForce "/testpath2";
};
# A system with a slice
with-slice.configuration = {
systemd.slices.testslice.sliceConfig.MemoryMax = "1"; # don't allow memory allocation
systemd.services.testservice = {
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
Slice = "testslice.slice";
};
};
};
# The same system but the slice allows to allocate memory
with-slice-non-crashing.configuration = {
imports = [ config.specialisation.with-slice.configuration ];
systemd.slices.testslice.sliceConfig.MemoryMax = lib.mkForce null;
};
};
};
other = { ... }: {
users.mutableUsers = true;
};
};
testScript = {nodes, ...}: let
testScript = { nodes, ... }: let
originalSystem = nodes.machine.config.system.build.toplevel;
otherSystem = nodes.other.config.system.build.toplevel;
@ -27,12 +236,182 @@ import ./make-test-python.nix ({ pkgs, ...} : {
set -o pipefail
exec env -i "$@" | tee /dev/stderr
'';
in ''
in /* python */ ''
def switch_to_specialisation(name, action="test"):
out = machine.succeed(f"${originalSystem}/specialisation/{name}/bin/switch-to-configuration {action} 2>&1")
assert_lacks(out, "switch-to-configuration line") # Perl warnings
return out
def assert_contains(haystack, needle):
if needle not in haystack:
print("The haystack that will cause the following exception is:")
print("---")
print(haystack)
print("---")
raise Exception(f"Expected string '{needle}' was not found")
def assert_lacks(haystack, needle):
if needle in haystack:
print("The haystack that will cause the following exception is:")
print("---")
print(haystack, end="")
print("---")
raise Exception(f"Unexpected string '{needle}' was found")
machine.succeed(
"${stderrRunner} ${originalSystem}/bin/switch-to-configuration test"
)
machine.succeed(
"${stderrRunner} ${otherSystem}/bin/switch-to-configuration test"
)
with subtest("systemd sockets"):
machine.succeed("${originalSystem}/bin/switch-to-configuration test")
# Simple socket is created
out = switch_to_specialisation("simple-socket")
assert_lacks(out, "stopping the following units:")
# not checking for reload because dbus gets reloaded
assert_lacks(out, "restarting the following units:")
assert_lacks(out, "\nstarting the following units:")
assert_contains(out, "the following new units were started: socket-activated.socket\n")
assert_lacks(out, "as well:")
machine.succeed("[ $(stat -c%a /run/test.sock) = 777 ]")
# Changing the socket restarts it
out = switch_to_specialisation("modified-socket")
assert_lacks(out, "stopping the following units:")
#assert_lacks(out, "reloading the following units:")
assert_contains(out, "restarting the following units: socket-activated.socket\n")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
machine.succeed("[ $(stat -c%a /run/test.sock) = 666 ]") # change was applied
# The unit is properly activated when the socket is accessed
if machine.succeed("socat - UNIX-CONNECT:/run/test.sock") != "hello":
raise Exception("Socket was not properly activated")
# Changing the socket restarts it and ignores the active service
out = switch_to_specialisation("simple-socket")
assert_contains(out, "stopping the following units: socket-activated.service\n")
assert_lacks(out, "reloading the following units:")
assert_contains(out, "restarting the following units: socket-activated.socket\n")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
machine.succeed("[ $(stat -c%a /run/test.sock) = 777 ]") # change was applied
# Changing the service does nothing when the service is not active
out = switch_to_specialisation("modified-service")
assert_lacks(out, "stopping the following units:")
assert_lacks(out, "reloading the following units:")
assert_lacks(out, "restarting the following units:")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
# Activating the service and modifying it stops it but leaves the socket untouched
machine.succeed("socat - UNIX-CONNECT:/run/test.sock")
out = switch_to_specialisation("simple-socket")
assert_contains(out, "stopping the following units: socket-activated.service\n")
assert_lacks(out, "reloading the following units:")
assert_lacks(out, "restarting the following units:")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
# Activating the service and both the service and the socket stops the service and restarts the socket
machine.succeed("socat - UNIX-CONNECT:/run/test.sock")
out = switch_to_specialisation("modified-service-and-socket")
assert_contains(out, "stopping the following units: socket-activated.service\n")
assert_lacks(out, "reloading the following units:")
assert_contains(out, "restarting the following units: socket-activated.socket\n")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
with subtest("restart and reload by activation file"):
out = switch_to_specialisation("service-and-socket")
# Switch to a system where the example services get restarted
# by the activation script
out = switch_to_specialisation("restart-and-reload-by-activation-script")
assert_lacks(out, "stopping the following units:")
assert_contains(out, "stopping the following units as well: simple-service.service, socket-activated.service\n")
assert_contains(out, "reloading the following units: simple-reload-service.service\n")
assert_contains(out, "restarting the following units: simple-restart-service.service\n")
assert_contains(out, "\nstarting the following units: simple-service.service")
# The same, but in dry mode
switch_to_specialisation("service-and-socket")
out = switch_to_specialisation("restart-and-reload-by-activation-script", action="dry-activate")
assert_lacks(out, "would stop the following units:")
assert_contains(out, "would stop the following units as well: simple-service.service, socket-activated.service\n")
assert_contains(out, "would reload the following units: simple-reload-service.service\n")
assert_contains(out, "would restart the following units: simple-restart-service.service\n")
assert_contains(out, "\nwould start the following units: simple-service.service")
with subtest("mounts"):
switch_to_specialisation("with-mount")
out = machine.succeed("mount | grep 'on /testmount'")
assert_contains(out, "size=1024k")
out = switch_to_specialisation("with-mount-modified")
assert_lacks(out, "stopping the following units:")
assert_contains(out, "reloading the following units: testmount.mount\n")
assert_lacks(out, "restarting the following units:")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
# It changed
out = machine.succeed("mount | grep 'on /testmount'")
assert_contains(out, "size=10240k")
with subtest("timers"):
switch_to_specialisation("with-timer")
out = machine.succeed("systemctl show test-timer.timer")
assert_contains(out, "OnCalendar=2014-03-25 02:59:56 UTC")
out = switch_to_specialisation("with-timer-modified")
assert_lacks(out, "stopping the following units:")
assert_lacks(out, "reloading the following units:")
assert_contains(out, "restarting the following units: test-timer.timer\n")
assert_lacks(out, "\nstarting the following units:")
assert_lacks(out, "the following new units were started:")
assert_lacks(out, "as well:")
# It changed
out = machine.succeed("systemctl show test-timer.timer")
assert_contains(out, "OnCalendar=Fri 2012-11-23 16:00:00")
with subtest("paths"):
switch_to_specialisation("with-path")
machine.fail("test -f /testpath-modified")
# touch the file, unit should be triggered
machine.succeed("touch /testpath")
machine.wait_until_succeeds("test -f /testpath-modified")
machine.succeed("rm /testpath /testpath-modified")
switch_to_specialisation("with-path-modified")
machine.succeed("touch /testpath")
machine.fail("test -f /testpath-modified")
machine.succeed("touch /testpath2")
machine.wait_until_succeeds("test -f /testpath-modified")
# This test ensures that changes to slice configuration get applied.
# We test this by having a slice that allows no memory allocation at
# all and starting a service within it. If the service crashes, the slice
# is applied and if we modify the slice to allow memory allocation, the
# service should successfully start.
with subtest("slices"):
machine.succeed("echo 0 > /proc/sys/vm/panic_on_oom") # allow OOMing
out = switch_to_specialisation("with-slice")
machine.fail("systemctl start testservice.service")
out = switch_to_specialisation("with-slice-non-crashing")
machine.succeed("systemctl start testservice.service")
machine.succeed("echo 1 > /proc/sys/vm/panic_on_oom") # disallow OOMing
'';
})

View File

@ -13,13 +13,13 @@
mkDerivation rec {
pname = "ptcollab";
version = "0.4.3";
version = "0.5.0";
src = fetchFromGitHub {
owner = "yuxshao";
repo = "ptcollab";
rev = "v${version}";
sha256 = "sha256-bFFWPl7yaTwCKz7/f9Vk6mg0roUnig0dFERS4IE4R7g=";
sha256 = "sha256-sN3O8m+ib6Chb/RXTFbNWW6PnrolCHpmC/avRX93AH4=";
};
nativeBuildInputs = [ qmake pkg-config ];

View File

@ -1,12 +1,12 @@
{ lib, stdenv, fetchurl, appimageTools, makeWrapper, electron }:
{ lib, stdenv, fetchurl, appimageTools, makeWrapper, electron_13 }:
stdenv.mkDerivation rec {
pname = "logseq";
version = "0.3.5";
version = "0.4.2";
src = fetchurl {
url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage";
sha256 = "ruJALAI0YQNwG8An5VzoJX06Qu/pXZ9zsrPZ7EH+5Pk=";
sha256 = "BEDScQtGfkp74Gx3RKK8ItNQ9JD8AJkl1zdS/gZqyXk=";
name = "${pname}-${version}.AppImage";
};
@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
'';
postFixup = ''
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
makeWrapper ${electron_13}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app
'';

View File

@ -5,13 +5,13 @@
mkDerivation rec {
pname = "qownnotes";
version = "21.9.2";
version = "21.10.9";
src = fetchurl {
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
# Fetch the checksum of current version with curl:
# curl https://download.tuxfamily.org/qownnotes/src/qownnotes-<version>.tar.xz.sha256
sha256 = "sha256-R+aXPnQ2Ns2D8PBTvaeh8ht3juZZhZJIb52A8CVRtFI=";
sha256 = "2c86d66ae427bdcd16d706b982cedaa669a27340f7819fc97a8e2b24c709e74f";
};
nativeBuildInputs = [ qmake qttools ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "fast-export";
version = "200213";
version = "210917";
src = fetchFromGitHub {
owner = "frej";
repo = pname;
rev = "v${version}";
sha256 = "0hzyh66rlawxip4n2pvz7pbs0cq82clqv1d6c7hf60v1drjxw287";
sha256 = "0xg8r9rbqv7mriraqxdks2mgj7j4c9gap3kc05y1kxi3nniywyd3";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -13,14 +13,14 @@
rustPlatform.buildRustPackage rec {
pname = "pijul";
version = "1.0.0-alpha.53";
version = "1.0.0-alpha.54";
src = fetchCrate {
inherit version pname;
sha256 = "1y5wnqscyfhd806qs6gfmssm7hvfdi7mxc9p1125jnmzca4wcsm2";
sha256 = "0b9494kwchfds8hk566k3fkwdvcskpgw0ajlrdry9lmmvx3vj7dc";
};
cargoSha256 = "0m9zjagq59rxf5pysklal030f4n0dqgmjsgwcnljajxc2r26665h";
cargoSha256 = "0rgd6mfxbxgzpj2nj2y315kgvxiayr9xbma4j014bc61ms7cnys7";
cargoBuildFlags = lib.optional gitImportSupport "--features=git";

View File

@ -7,11 +7,11 @@
buildPythonApplication rec {
pname = "ffmpeg-normalize";
version = "1.22.3";
version = "1.22.4";
src = fetchPypi {
inherit pname version;
sha256 = "317a9636587182280debc85d483f6d21987ceb6cd96ab36a2399836780eca822";
sha256 = "a20978538ae9a51bdbe5ef5aa0f87ede0f8efd2817ab240980de56eac36982e3";
};
propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];

View File

@ -0,0 +1,26 @@
{ stdenvNoCC, lib, fetchFromGitHub }:
stdenvNoCC.mkDerivation {
pname = "bront_fonts";
version = "unstable-2015-06-28";
src = fetchFromGitHub {
owner = "chrismwendt";
repo = "bront";
rev = "aef23d9a11416655a8351230edb3c2377061c077";
sha256 = "1sx2gv19pgdyccb38sx3qnwszksmva7pqa1c8m35s6cipgjhhgb4";
};
installPhase = ''
install -m444 -Dt $out/share/fonts/truetype *Bront.ttf
'';
meta = with lib; {
description = "Bront Fonts";
longDescription = "Ubuntu Mono Bront and DejaVu Sans Mono Bront fonts.";
homepage = "https://github.com/chrismwendt/bront";
license = licenses.free;
platforms = platforms.all;
maintainers = [ maintainers.grburst ];
};
}

View File

@ -1,6 +1,6 @@
{
"commit": "67f421ee170f4f161832c146be8ef87499ff0d37",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/67f421ee170f4f161832c146be8ef87499ff0d37.tar.gz",
"sha256": "0rzwh0iff4xn499vvzv960gmrd85z6amjbbsyhb5qcldcap5jpjs",
"msg": "Update from Hackage at 2021-10-11T20:00:11Z"
"commit": "73463ac080cd55650580d58fe80e5b2dcdfe5a7e",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/73463ac080cd55650580d58fe80e5b2dcdfe5a7e.tar.gz",
"sha256": "1vwlpkrpfj6wdzlv4lwargyakyci81gri70z2jhkpvv3l6adc0gk",
"msg": "Update from Hackage at 2021-10-15T10:42:20Z"
}

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "terminology";
version = "1.9.0";
version = "1.10.0";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
sha256 = "0v74858yvrrfy0l2pq7yn6izvqhpkb9gw2jpd3a3khjwv8kw6frz";
sha256 = "0imk7cjkcjss3zf4hjwmy54pbizm6l6pq553jcx7bpsnhs56bbsz";
};
nativeBuildInputs = [
@ -30,11 +30,11 @@ stdenv.mkDerivation rec {
patchShebangs data/colorschemes/*.py
'';
meta = {
meta = with lib; {
description = "Powerful terminal emulator based on EFL";
homepage = "https://www.enlightenment.org/about-terminology";
license = lib.licenses.bsd2;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ matejc tstrobel ftrvxmtrx romildo ];
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = with maintainers; [ matejc tstrobel ftrvxmtrx romildo ];
};
}

View File

@ -1,291 +0,0 @@
diff --git a/mx.py b/mx.py
index a0b9315..b7d67a0 100755
--- a/mx.py
+++ b/mx.py
@@ -238,21 +238,7 @@ def _check_file_with_sha1(path, sha1, sha1path, mustExist=True, newFile=False, l
f.write(value or sha1OfFile(path))
if exists(path):
- if sha1Check and sha1:
- if not _sha1CachedValid() or (newFile and sha1 != _sha1Cached()):
- logv('Create/update SHA1 cache file ' + sha1path)
- _writeSha1Cached()
-
- if sha1 != _sha1Cached():
- computedSha1 = sha1OfFile(path)
- if sha1 == computedSha1:
- warn('Fixing corrupt SHA1 cache file ' + sha1path)
- _writeSha1Cached(computedSha1)
- return True
- if logErrors:
- size = os.path.getsize(path)
- log_error('SHA1 of {} [size: {}] ({}) does not match expected value ({})'.format(TimeStampFile(path), size, computedSha1, sha1))
- return False
+ return True
elif mustExist:
if logErrors:
log_error("'{}' does not exist".format(path))
@@ -1057,46 +1043,8 @@ class SuiteImport:
version = import_dict.get("version")
suite_dir = None
version_from = import_dict.get("versionFrom")
- if version_from and version:
- abort("In import for '{}': 'version' and 'versionFrom' can not be both set".format(name), context=context)
- if version is None and version_from is None:
- if not (in_subdir and (importer.vc_dir != importer.dir or isinstance(importer, BinarySuite))):
- abort("In import for '{}': No version given and not a 'subdir' suite of the same repository".format(name), context=context)
- if importer.isSourceSuite():
- suite_dir = join(importer.vc_dir, name)
- version = importer.version()
- if urls is None:
- if not in_subdir:
- if import_dict.get("subdir") is None and importer.vc_dir != importer.dir:
- warn("In import for '{}': No urls given but 'subdir' is not set, assuming 'subdir=True'".format(name), context)
- in_subdir = True
- else:
- abort("In import for '{}': No urls given and not a 'subdir' suite".format(name), context=context)
- return SuiteImport(name, version, None, None, dynamicImport=dynamicImport, in_subdir=in_subdir, version_from=version_from, suite_dir=suite_dir)
- # urls a list of alternatives defined as dicts
- if not isinstance(urls, list):
- abort('suite import urls must be a list', context=context)
- urlinfos = []
- mainKind = None
- for urlinfo in urls:
- if isinstance(urlinfo, dict) and urlinfo.get('url') and urlinfo.get('kind'):
- kind = urlinfo.get('kind')
- if not VC.is_valid_kind(kind):
- abort('suite import kind ' + kind + ' illegal', context=context)
- else:
- abort('suite import url must be a dict with {"url", kind", attributes', context=context)
- vc = vc_system(kind)
- if kind != 'binary':
- assert not mainKind or mainKind == kind, "Only expecting one non-binary kind"
- mainKind = kind
- url = mx_urlrewrites.rewriteurl(urlinfo.get('url'))
- urlinfos.append(SuiteImportURLInfo(url, kind, vc))
- vc_kind = None
- if mainKind:
- vc_kind = mainKind
- elif urlinfos:
- vc_kind = 'binary'
- return SuiteImport(name, version, urlinfos, vc_kind, dynamicImport=dynamicImport, in_subdir=in_subdir, version_from=version_from, suite_dir=suite_dir)
+ suite_dir = join(get_env('MX_GIT_CACHE_DIR'), name)
+ return SuiteImport(name, version, [], None, True, in_subdir=in_subdir, version_from=version_from, suite_dir=suite_dir)
@staticmethod
def get_source_urls(source, kind=None):
@@ -1467,8 +1415,6 @@ class Suite(object):
:type dists: list[Distribution]
"""
def __init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=False):
- if primary is True and vc_dir is None:
- abort("The primary suite must be in a vcs repository")
self.imported_by = [] if primary else [importing_suite]
self.mxDir = mxDir
self.dir = dirname(mxDir)
@@ -1496,7 +1442,7 @@ class Suite(object):
self._outputRoot = None
self._preloaded_suite_dict = None
self.vc = vc
- self.vc_dir = vc_dir
+ self.vc_dir = get_env('MX_GIT_CACHE_DIR')
self._preload_suite_dict()
self._init_imports()
if load:
@@ -2405,7 +2351,9 @@ class Repository(SuiteConstituent):
class SourceSuite(Suite):
"""A source suite"""
def __init__(self, mxDir, primary=False, load=True, internal=False, importing_suite=None, dynamicallyImported=False):
- vc, vc_dir = VC.get_vc_root(dirname(mxDir), abortOnError=False)
+ vc, vc_dir_test = VC.get_vc_root(dirname(mxDir), abortOnError=False)
+ vc_dir = get_env('MX_GIT_CACHE_DIR')
+ warn("LOOKING FOR: " + mxDir)
Suite.__init__(self, mxDir, primary, internal, importing_suite, load, vc, vc_dir, dynamicallyImported=dynamicallyImported)
logvv("SourceSuite.__init__({}), got vc={}, vc_dir={}".format(mxDir, self.vc, self.vc_dir))
self.projects = []
@@ -2454,17 +2402,7 @@ class SourceSuite(Suite):
"""
Gets the release tag from VC or create a time based once if VC is unavailable
"""
- if snapshotSuffix not in self._releaseVersion:
- _version = self._get_early_suite_dict_property('version')
- if _version and self.getMxCompatibility().addVersionSuffixToExplicitVersion():
- if not self.is_release():
- _version = _version + '-' + snapshotSuffix
- if not _version:
- _version = self.vc.release_version_from_tags(self.vc_dir, self.name, snapshotSuffix=snapshotSuffix)
- if not _version:
- _version = 'unknown-{0}-{1}'.format(platform.node(), time.strftime('%Y-%m-%d_%H-%M-%S_%Z'))
- self._releaseVersion[snapshotSuffix] = _version
- return self._releaseVersion[snapshotSuffix]
+ return get_env('version')
def scm_metadata(self, abortOnError=False):
scm = self.scm
@@ -2993,12 +2931,35 @@ def _find_suite_import(importing_suite, suite_import, fatalIfMissing=True, load=
Attempts to locate an existing suite in the local context
Returns the path to the mx.name dir if found else None
"""
- if mode == 'binary':
- # binary suites are always stored relative to the importing suite in mx-private directory
- return importing_suite._find_binary_suite_dir(suite_import.name)
+ warn("FAKE CLONE: " + str(suite_import))
+ if (suite_import.name == "truffle"):
+ return join(get_env('TMP'), "source", "truffle", "mx.truffle")
+ if (suite_import.name == "graal-nodejs"):
+ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-nodejs", "mx.graal-nodejs")
+ if (suite_import.name == "truffleruby"):
+ return join(get_env('MX_GIT_CACHE_DIR'), "truffleruby", "mx.truffleruby")
+ if (suite_import.name == "graalpython"):
+ return join(get_env('MX_GIT_CACHE_DIR'), "graalpython", "mx.graalpython")
+ if (suite_import.name == "vm"):
+ return join(get_env('TMP'), "source", "vm", "mx.vm")
+ if (suite_import.name == "fastr"):
+ return join(get_env('MX_GIT_CACHE_DIR'), "fastr", "mx.fastr")
+ if (suite_import.name == "sdk"):
+ return join(get_env('TMP'), "source", "sdk", "mx.sdk")
+ if (suite_import.name == "graal-js"):
+ return join(get_env('MX_GIT_CACHE_DIR'), "graaljs", "graal-js", "mx.graal-js")
+ if (suite_import.name == "regex"):
+ return join(get_env('TMP'), "source", "regex", "mx.regex")
+ if (suite_import.name == "substratevm"):
+ return join(get_env('TMP'), "source", "substratevm", "mx.substratevm")
+ if (suite_import.name == "tools"):
+ return join(get_env('TMP'), "source", "tools", "mx.tools")
+ if (suite_import.name == "sulong"):
+ return join(get_env('TMP'), "source", "sulong", "mx.sulong")
+ if (suite_import.name == "compiler"):
+ return join(get_env('TMP'), "source", "compiler", "mx.compiler")
else:
- # use the SuiteModel to locate a local source copy of the suite
- return _suitemodel.find_suite_dir(suite_import)
+ return join(get_env('MX_GIT_CACHE_DIR'), suite_import.name)
def _get_import_dir(url, mode):
"""Return directory where the suite will be cloned to"""
@@ -3816,7 +3777,7 @@ def getmtime(name):
"""
Wrapper for builtin open function that handles long path names on Windows.
"""
- return os.path.getmtime(_safe_path(name))
+ return 315532800
def stat(name):
@@ -4062,57 +4023,8 @@ def _attempt_download(url, path, jarEntryName=None):
return False
def download(path, urls, verbose=False, abortOnError=True, verifyOnly=False):
- """
- Attempts to downloads content for each URL in a list, stopping after the first successful download.
- If the content cannot be retrieved from any URL, the program is aborted, unless abortOnError=False.
- The downloaded content is written to the file indicated by `path`.
- """
- if not verifyOnly:
- ensure_dirname_exists(path)
- assert not path.endswith(os.sep)
-
- # https://docs.oracle.com/javase/7/docs/api/java/net/JarURLConnection.html
- jarURLPattern = re.compile('jar:(.*)!/(.*)')
- verify_errors = {}
- for url in urls:
- if not verifyOnly or verbose:
- log('Downloading ' + url + ' to ' + path)
- m = jarURLPattern.match(url)
- jarEntryName = None
- if m:
- url = m.group(1)
- jarEntryName = m.group(2)
-
- if not _opts.trust_http and (url.lower().startswith('http://') or url.lower().startswith('ftp://')):
- warn('Downloading from non-https URL {}. Use --trust-http mx option to suppress this warning.'.format(url))
-
- if verifyOnly:
- try:
- conn = _urlopen(url, timeout=10)
- conn.close()
- except (IOError, socket.timeout) as e:
- _suggest_tlsv1_error(e)
- verify_errors[url] = e
- else:
- for i in range(4):
- if i != 0:
- time.sleep(1)
- warn('Retry {} to download from {}'.format(i, url))
- if _attempt_download(url, path, jarEntryName):
- return True # Download was successful
-
- if verifyOnly and len(verify_errors) < len(urls): # verify-mode at least one success -> success
- return True
- else: # Either verification error or no download was successful
- msg = 'Could not download to ' + path + ' from any of the following URLs: ' + ', '.join(urls)
- if verifyOnly: # verify-mode -> print error details
- for url, e in verify_errors.items():
- msg += '\n ' + url + ': ' + str(e)
- if abortOnError:
- abort(msg)
- else:
- warn(msg)
- return False
+ print("FAKE download(path={} urls={} verbose={} abortOnError={} verifyOnly={})".format(path, urls, verbose, abortOnError, verifyOnly))
+ return True
def update_file(path, content, showDiff=False):
"""
@@ -7887,30 +7799,6 @@ class PackedResourceLibrary(ResourceLibrary):
def get_path(self, resolve):
extract_path = _make_absolute(self.extract_path, self.suite.dir)
- download_path = super(PackedResourceLibrary, self).get_path(resolve)
- if resolve and self._check_extract_needed(extract_path, download_path):
- extract_path_tmp = tempfile.mkdtemp(suffix=basename(extract_path), dir=dirname(extract_path))
- try:
- # extract archive
- Extractor.create(download_path).extract(extract_path_tmp)
- # ensure modification time is up to date
- os.utime(extract_path_tmp, None)
- logv("Moving temporary directory {} to {}".format(extract_path_tmp, extract_path))
- try:
- # attempt atomic overwrite
- os.rename(extract_path_tmp, extract_path)
- except OSError:
- # clean destination & re-try for cases where atomic overwrite doesn't work
- rmtree(extract_path, ignore_errors=True)
- os.rename(extract_path_tmp, extract_path)
- except OSError as ose:
- # Rename failed. Race with other process?
- if self._check_extract_needed(extract_path, download_path):
- # ok something really went wrong
- abort("Extracting {} failed!".format(download_path), context=ose)
- finally:
- rmtree(extract_path_tmp, ignore_errors=True)
-
return extract_path
def _check_download_needed(self):
@@ -8430,7 +8318,7 @@ class VC(_with_metaclass(ABCMeta, object)):
:param str branch: a branch name
:param bool abortOnError: if True abort on error
"""
- abort(self.kind + " update_to_branch is not implemented")
+ self.run(['hg', vcdir] + cmd)
def is_release_from_tags(self, vcdir, prefix):
"""
@@ -8831,7 +8719,7 @@ class HgConfig(VC):
return None
def parent_info(self, vcdir, abortOnError=True):
- out = self.hg_command(vcdir, ["log", "-r", ".", "--template", "{author}|||{date|hgdate}"], abortOnError=abortOnError)
+ out = _check_output_str(["hg", '-R', vcdir, "log", "-r", ".", "--template", "{author}|||{date|hgdate}"])
author, date = out.split("|||")
ts, _ = date.split(" ")
return self._sanitize_parent_info({
@@ -14069,6 +13957,7 @@ class Archiver(SafeFileCreation):
def _add_zip(self, filename, archive_name, provenance):
self._add_provenance(archive_name, provenance)
+ os.utime(filename, (315532800, 315532800))
self.zf.write(filename, archive_name)
def _add_str_zip(self, data, archive_name, provenance):

View File

@ -1,16 +0,0 @@
diff --git a/sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/src/setjmp.c b/sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/src/setjmp.c
index 16b869354d8..3691739d13b 100644
--- a/sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/src/setjmp.c
+++ b/sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/src/setjmp.c
@@ -41,11 +41,3 @@ int sigsetjmp(sigjmp_buf env, int savesigs) {
WARN_UNSUPPORTED(sigsetjmp);
return 0;
}
-
-void longjmp(jmp_buf env, int val) {
- ERR_UNSUPPORTED(longjmp);
-}
-
-void siglongjmp(sigjmp_buf env, int val) {
- ERR_UNSUPPORTED(siglongjmp);
-}

View File

@ -1,12 +0,0 @@
diff --git a/truffle/mx.truffle/mx_truffle.py b/truffle/mx.truffle/mx_truffle.py
index 8889c5ad810..add211a45c5 100644
--- a/truffle/mx.truffle/mx_truffle.py
+++ b/truffle/mx.truffle/mx_truffle.py
@@ -695,6 +695,7 @@ class LibffiBuildTask(mx.AbstractNativeBuildTask):
os.path.relpath(self.subject.delegate.dir, self.subject.suite.vc_dir)]
for patch in self.subject.patches:
mx.run(git_apply + [patch], cwd=self.subject.suite.vc_dir)
+ mx.run(['cp', os.path.join(os.getenv('TMP'), 'truffle.make'), os.path.join(self.subject.delegate.dir, 'Makefile')])
self.delegate.logBuild()
self.delegate.build()

View File

@ -1,12 +0,0 @@
diff --git a/mx.jvmci/mx_jvmci.py b/mx.jvmci/mx_jvmci.py
index 491fc19ab9..b4ddc03abb 100644
--- a/mx.jvmci/mx_jvmci.py
+++ b/mx.jvmci/mx_jvmci.py
@@ -192,6 +192,7 @@ class HotSpotVMJDKDeployedDist(JDKDeployedDist):
if m.name in _hs_deploy_map:
targetDir = join(jdkDir, _hs_deploy_map[m.name])
mx.logv('Deploying {} from {} to {}'.format(m.name, dist.name, targetDir))
+ subprocess.call(["chmod", "-R", "+rw", targetDir])
tar.extract(m, targetDir)
"""

View File

@ -1,46 +0,0 @@
diff --git a/tool/jt.rb b/tool/jt.rb
index 870d88edcb..0a6e4c367b 100755
--- a/tool/jt.rb
+++ b/tool/jt.rb
@@ -152,13 +152,16 @@ module Utilities
end
def find_mx
- if which('mx')
- 'mx'
+ if ENV.key?("MX_GIT_CACHE_DIR")
+ "mx-internal"
else
- mx_repo = find_or_clone_repo("https://github.com/graalvm/mx.git")
- "#{mx_repo}/mx"
+ if which('mx')
+ 'mx'
+ else
+ mx_repo = find_or_clone_repo("https://github.com/graalvm/mx.git")
+ "#{mx_repo}/mx"
+ end
end
- end
def find_launcher(use_native)
if use_native
@@ -444,8 +447,8 @@ module Commands
--no-sforceimports do not run sforceimports before building
parser build the parser
options build the options
- graalvm build a minimal JVM-only GraalVM containing only TruffleRuby,
- available by default in mxbuild/truffleruby-jvm,
+ graalvm build a minimal JVM-only GraalVM containing only TruffleRuby,
+ available by default in mxbuild/truffleruby-jvm,
the Ruby is symlinked into rbenv or chruby if available
--graal include the GraalVM Compiler in the build
--native build native ruby image as well, available in mxbuild/truffleruby-native
@@ -491,7 +494,7 @@ module Commands
jt test compiler run compiler tests
jt test integration [TESTS] run integration tests
jt test bundle [--jdebug] tests using bundler
- jt test gems [TESTS] tests using gems
+ jt test gems [TESTS] tests using gems
jt test ecosystem [TESTS] tests using the wider ecosystem such as bundler, Rails, etc
jt test cexts [--no-openssl] [--no-gems] [test_names...]
run C extension tests (set GEM_HOME)

View File

@ -1,14 +0,0 @@
diff --git a/mx.fastr/mx_copylib.py b/mx.fastr/mx_copylib.py
index 4f57e1954..db45220d9 100644
--- a/mx.fastr/mx_copylib.py
+++ b/mx.fastr/mx_copylib.py
@@ -54,6 +54,9 @@ def _copylib(lib, libpath, plain_libpath_base, target):
else:
try:
if platform.system() == 'Linux':
+ # https://github.com/oracle/fastr/issues/110
+ if libpath.endswith("libgcc_s.so"):
+ libpath = libpath + ".1"
output = subprocess.check_output(['objdump', '-p', libpath])
elif platform.system() == 'SunOS':
output = subprocess.check_output(['elfdump', '-d', libpath])

View File

@ -1,85 +0,0 @@
diff --git a/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c b/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c
index dcf081316..c2cb4879b 100644
--- a/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c
+++ b/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c
@@ -20,8 +20,10 @@
#include <Rinternals.h>
#include <stdlib.h>
+#include <rlocale.h>
#include <R_ext/eventloop.h>
+#include <R_ext/GraphicsEngine.h>
#include <Defn.h>
Rboolean known_to_be_latin1 = FALSE;
@@ -166,3 +168,69 @@ int Scollate(SEXP a, SEXP b) {
void z_prec_r(Rcomplex *r, Rcomplex *x, double digits) {
unimplemented("z_prec_r");
}
+
+int Rf_AdobeSymbol2ucs2(int n) {
+ unimplemented("Rf_AdobeSymbol2ucs2");
+ return 0;
+}
+
+size_t Mbrtowc(wchar_t *wc, const char *s, size_t n, mbstate_t *ps) {
+ unimplemented("Mbrtowc");
+ return 0;
+}
+
+double R_GE_VStrHeight(const char *s, cetype_t enc, const pGEcontext gc, pGEDevDesc dd) {
+ unimplemented("R_GE_VStrHeight");
+ return 0;
+}
+
+void R_GE_VText(double x, double y, const char * const s, cetype_t enc,
+ double x_justify, double y_justify, double rotation,
+ const pGEcontext gc, pGEDevDesc dd) {
+ unimplemented("R_GE_VText");
+}
+
+double R_GE_VStrWidth(const char *s, cetype_t enc, const pGEcontext gc, pGEDevDesc dd) {
+ unimplemented("R_GE_VStrWidth");
+}
+
+void setulb(int n, int m, double *x, double *l, double *u, int *nbd,
+ double *f, double *g, double factr, double *pgtol,
+ double *wa, int * iwa, char *task, int iprint, int *isave) {
+ unimplemented("setulb");
+}
+
+void genptry(int n, double *p, double *ptry, double scale, void *ex) {
+ unimplemented("genptry");
+}
+
+double EXP(double x) {
+ unimplemented("EXP");
+ return 0;
+}
+
+double LOG(double x) {
+ unimplemented("LOG");
+ return 0;
+}
+
+Rwchar_t Rf_utf8toucs32(wchar_t high, const char *s) {
+ unimplemented("Rf_utf8toucs32");
+ return 0;
+}
+
+size_t mbtoucs(unsigned int *wc, const char *s, size_t n) {
+ unimplemented("mbtoucs");
+ return (size_t) 0;
+}
+
+
+int DispatchOrEval(SEXP call, SEXP op, const char *generic, SEXP args,
+ SEXP rho, SEXP *ans, int dropmissing, int argsevald) {
+ unimplemented("DispatchOrEval");
+ return 0;
+}
+
+void ENSURE_NAMEDMAX (SEXP x) {
+ unimplemented("ENSURE_NAMEDMAX");
+}

View File

@ -1,33 +0,0 @@
diff --git a/mx.jvmci/suite.py b/mx.jvmci/suite.py
index 9690c0a38f..fa1d36b7e1 100644
--- a/mx.jvmci/suite.py
+++ b/mx.jvmci/suite.py
@@ -241,18 +241,7 @@ suite = {
"workingSets" : "JVMCI,HotSpot,SPARC",
},
- "jdk.vm.ci.hotspot.jfr" : {
- "subDir" : "jvmci",
- "sourceDirs" : ["src"],
- "dependencies" : [
- "jdk.vm.ci.hotspot",
- "JFR",
- ],
- "checkstyle" : "jdk.vm.ci.hotspot",
- "javaCompliance" : "1.8",
- "profile" : "",
- "workingSets" : "JVMCI,HotSpot",
- },
+
"hotspot" : {
"native" : True,
@@ -354,7 +343,7 @@ suite = {
"jdk.vm.ci.hotspot.aarch64",
"jdk.vm.ci.hotspot.amd64",
"jdk.vm.ci.hotspot.sparc",
- "jdk.vm.ci.hotspot.jfr",
+
],
"distDependencies" : [
"JVMCI_SERVICES",

View File

@ -1,21 +0,0 @@
diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/query/SizeAndSignednessVerifier.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/query/SizeAndSignednessVerifier.java
index 23a76357fd2..f13694b6ed7 100644
--- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/query/SizeAndSignednessVerifier.java
+++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/query/SizeAndSignednessVerifier.java
@@ -249,15 +249,6 @@ public final class SizeAndSignednessVerifier extends NativeInfoTreeVisitor {
}
private void checkSignedness(boolean isUnsigned, ResolvedJavaType type, ResolvedJavaMethod method) {
- if (isSigned(type)) {
- if (isUnsigned) {
- addError("Type " + type.toJavaName(false) + " is signed, but accessed C value is unsigned", method);
- }
- } else if (nativeLibs.isWordBase(type)) {
- /* every Word type other than Signed is assumed to be unsigned. */
- if (!isUnsigned) {
- addError("Type " + type.toJavaName(false) + " is unsigned, but accessed C value is signed", method);
- }
- }
+
}
}

View File

@ -1,13 +0,0 @@
diff --git a/substratevm/mx.substratevm/mx_substratevm.py b/substratevm/mx.substratevm/mx_substratevm.py
index b89163ef983..0fd0138b336 100644
--- a/substratevm/mx.substratevm/mx_substratevm.py
+++ b/substratevm/mx.substratevm/mx_substratevm.py
@@ -189,7 +189,7 @@ if str(svm_java_compliance().value) not in GRAAL_COMPILER_FLAGS_MAP:
mx.abort("Substrate VM does not support this Java version: " + str(svm_java_compliance()))
GRAAL_COMPILER_FLAGS = GRAAL_COMPILER_FLAGS_BASE + GRAAL_COMPILER_FLAGS_MAP[str(svm_java_compliance().value)]
-IMAGE_ASSERTION_FLAGS = ['-H:+VerifyGraalGraphs', '-H:+VerifyPhases']
+IMAGE_ASSERTION_FLAGS = ['-H:+VerifyGraalGraphs', '-H:+VerifyPhases', '-H:+ReportExceptionStackTraces']
suite = mx.suite('substratevm')
svmSuites = [suite]
clibraryDists = ['SVM_HOSTED_NATIVE']

View File

@ -1,540 +0,0 @@
{ stdenv, lib, fetchFromGitHub, fetchurl, fetchzip, fetchgit, mercurial_4, python27, setJavaClassPath,
which, zlib, makeWrapper, openjdk, unzip, git, clang, llvm, icu, ruby, glibc, bash, gcc, libobjc,
xcodebuild, gfortran, readline, bzip2, xz, pcre, curl, ed, libresolv, libiconv, writeScriptBin,
openssl, perl, CoreFoundation, Foundation, JavaNativeFoundation, JavaRuntimeSupport, JavaVM, Cocoa
}:
let
version = "19.2.1";
mercurial = mercurial_4;
truffleMake = ./truffle.make;
makeMxGitCache = list: out: ''
mkdir ${out}
${lib.concatMapStrings ({ url, name, rev, sha256 }: ''
mkdir -p ${out}/${name}
cp -rf ${fetchgit { inherit url rev sha256; }}/* ${out}/${name}
''
) list}
# # GRAAL-NODEJS # #
chmod -R +rw ${out}
sed -i "s|#include \"../../../../mxbuild/trufflenode/coremodules/node_snapshots.h\"| \
#include \"$NIX_BUILD_TOP/mxbuild/graal-nodejs/trufflenode/coremodules/node_snapshots.h\"|g" \
${out}/graaljs/graal-nodejs/deps/v8/src/graal/callbacks.cc
# patch the shebang in python script runner
chmod -R +rw ${out}/graaljs/graal-nodejs/mx.graal-nodejs/python2
patchShebangs ${out}/graaljs/graal-nodejs/mx.graal-nodejs/python2/python
# # TUFFLE-RUBY # #
(cd ${out}/truffleruby && git apply ${./005_tool_jt.rb.patch})
patchShebangs ${out}/truffleruby/tool/query-versions-json.rb
substituteInPlace ${out}/truffleruby/src/main/c/Makefile \
--replace '(MX_HOME)/mx' '(MX_HOME)/mx-internal'
substituteInPlace ${out}/truffleruby/src/processor/java/org/truffleruby/processor/BuildInformationProcessor.java \
--replace 'trufflerubyHome = findHome();' \
'trufflerubyHome = new File(System.getenv("MX_GIT_CACHE_DIR"), "truffleruby");' \
--replace tool/query-versions-json.rb 'ruby tool/query-versions-json.rb' \
--replace 'revision = runCommand("git rev-parse --short=8 HEAD");' \
'revision = "${version}";' \
--replace 'compileDate = runCommand("git log -1 --date=short --pretty=format:%cd");' \
'compileDate = "1970-01-01";'
substituteInPlace ${out}/truffleruby/mx.truffleruby/mx_truffleruby.py \
--replace "mx_binary = join(mx._mx_home, 'mx')" "mx_binary = join(mx._mx_home, 'mx-internal')"
# # FASTR # #
(cd ${out}/fastr && git apply ${ ./006_mx_copylib.py.patch })
(cd ${out}/fastr && git apply ${ ./007_unimplemented.c.patch })
substituteInPlace ${out}/fastr/com.oracle.truffle.r.parser.processor/src/com/oracle/truffle/r/parser/processor/GenerateRParserProcessor.java \
--replace 'File suiteRoot = srcGenDir.getCanonicalFile().getParentFile().getParentFile().getParentFile();' \
'File suiteRoot = new File(System.getenv("MX_GIT_CACHE_DIR"), "fastr");'
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native/gnur/Makefile.libs \
--replace 'mx -p' 'mx-internal -p'
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native/include/Makefile \
--replace 'mx -p' 'mx-internal -p'
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native/fficall/Makefile \
--replace 'mx -p' 'mx-internal -p'
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native.recommended/Makefile \
--replace 'mx -p' 'mx-internal -p'
# Make sure that the logs aren't hidden when compiling gnur
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native/gnur/Makefile.gnur \
--replace '> gnur_configure.log 2>&1' "" \
--replace '> gnur_make.log 2>&1' ""
substituteInPlace ${out}/fastr/com.oracle.truffle.r.native/run/Linux/Renviron \
--replace /bin/ "" \
--replace /usr/bin/ ""
sed -i "s|exec \$mx|exec mx-internal|g" ${out}/fastr/com.oracle.truffle.r.native/run/*.sh
chmod +x ${out}/fastr/com.oracle.truffle.r.native/run/*.sh
patchShebangs ${out}/fastr/com.oracle.truffle.r.native/run/*.sh
cd ${out}
hg init
hg add
hg commit -m 'dummy commit'
hg tag ${lib.escapeShellArg "vm${version}"}
hg checkout ${lib.escapeShellArg "vm${version}"}
'';
# pre-download some cache entries ('mx' will not be able to download under nixbld)
makeMxCache = list:
stdenv.mkDerivation {
name = "mx-cache";
nativeBuildInputs = [ unzip ];
buildCommand = with lib; ''
mkdir $out
${lib.concatMapStrings
({url, name, sha1, isNinja ? false}: ''
install -D ${fetchurl { inherit url sha1; }} $out/${name}
echo -n ${sha1} > $out/${name}.sha1
${if isNinja then ''
export BASENAME=${removeSuffix ".zip" name}
mkdir "$out/$BASENAME.extracted" &&
unzip "$out/${name}" -d "$out/$BASENAME.extracted"
# Ninja is called later in the build process
${lib.optionalString stdenv.isLinux ''
if [ -f $out/$BASENAME.extracted/ninja ]; then
patchelf --set-interpreter \
"$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${stdenv.cc.cc.lib}/lib64" \
$out/$BASENAME.extracted/ninja
fi''}
''
else ""}
'') list}
'';
};
jvmci8-mxcache = [
rec { sha1 = "53addc878614171ff0fcbc8f78aed12175c22cdb"; name = "JACOCOCORE_0.8.4_${sha1}/jacococore-0.8.4.jar"; url = "mirror://maven/org/jacoco/org.jacoco.core/0.8.4/org.jacoco.core-0.8.4.jar"; }
rec { sha1 = "9bd1fa334d941005bc9ab3ac92478a590f5b7d73"; name = "JACOCOCORE_0.8.4_${sha1}/jacococore-0.8.4.sources.jar"; url = "mirror://maven/org/jacoco/org.jacoco.core/0.8.4/org.jacoco.core-0.8.4-sources.jar"; }
rec { sha1 = "e5ca9511493b7e3bc2cabdb8ded92e855f3aac32"; name = "JACOCOREPORT_0.8.4_${sha1}/jacocoreport-0.8.4.jar"; url = "mirror://maven/org/jacoco/org.jacoco.report/0.8.4/org.jacoco.report-0.8.4.jar"; }
rec { sha1 = "eb61e479b35b467954f28a565c094c563b790e19"; name = "JACOCOREPORT_0.8.4_${sha1}/jacocoreport-0.8.4.sources.jar"; url = "mirror://maven/org/jacoco/org.jacoco.report/0.8.4/org.jacoco.report-0.8.4-sources.jar"; }
rec { sha1 = "869021a6d90cfb008b12e83fccbe42eca29e5355"; name = "JACOCOAGENT_0.8.4_${sha1}/jacocoagent-0.8.4.jar"; url = "mirror://maven/org/jacoco/org.jacoco.agent/0.8.4/org.jacoco.agent-0.8.4-runtime.jar"; }
rec { sha1 = "306816fb57cf94f108a43c95731b08934dcae15c"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.jar"; url = "mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar"; }
rec { sha1 = "9cd14a61d7aa7d554f251ef285a6f2c65caf7b65"; name = "JOPTSIMPLE_4_6_${sha1}/joptsimple-4-6.sources.jar"; url = "mirror://maven/net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6-sources.jar"; }
rec { sha1 = "fa29aa438674ff19d5e1386d2c3527a0267f291e"; name = "ASM_7.1_${sha1}/asm-7.1.jar"; url = "mirror://maven/org/ow2/asm/asm/7.1/asm-7.1.jar"; }
rec { sha1 = "9d170062d595240da35301362b079e5579c86f49"; name = "ASM_7.1_${sha1}/asm-7.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm/7.1/asm-7.1-sources.jar"; }
rec { sha1 = "a3662cf1c1d592893ffe08727f78db35392fa302"; name = "ASM_TREE_7.1_${sha1}/asm-tree-7.1.jar"; url = "mirror://maven/org/ow2/asm/asm-tree/7.1/asm-tree-7.1.jar"; }
rec { sha1 = "157238292b551de8680505fa2d19590d136e25b9"; name = "ASM_TREE_7.1_${sha1}/asm-tree-7.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-tree/7.1/asm-tree-7.1-sources.jar"; }
rec { sha1 = "379e0250f7a4a42c66c5e94e14d4c4491b3c2ed3"; name = "ASM_ANALYSIS_7.1_${sha1}/asm-analysis-7.1.jar"; url = "mirror://maven/org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1.jar"; }
rec { sha1 = "36789198124eb075f1a5efa18a0a7812fb16f47f"; name = "ASM_ANALYSIS_7.1_${sha1}/asm-analysis-7.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1-sources.jar"; }
rec { sha1 = "431dc677cf5c56660c1c9004870de1ed1ea7ce6c"; name = "ASM_COMMONS_7.1_${sha1}/asm-commons-7.1.jar"; url = "mirror://maven/org/ow2/asm/asm-commons/7.1/asm-commons-7.1.jar"; }
rec { sha1 = "a62ff3ae6e37affda7c6fb7d63b89194c6d006ee"; name = "ASM_COMMONS_7.1_${sha1}/asm-commons-7.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-commons/7.1/asm-commons-7.1-sources.jar"; }
rec { sha1 = "ec2544ab27e110d2d431bdad7d538ed509b21e62"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.jar"; url = "mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar"; }
rec { sha1 = "cd098e055bf192a60c81d81893893e6e31a6482f"; name = "COMMONS_MATH3_3_2_${sha1}/commons-math3-3-2.sources.jar"; url = "mirror://maven/org/apache/commons/commons-math3/3.2/commons-math3-3.2-sources.jar"; }
rec { sha1 = "442447101f63074c61063858033fbfde8a076873"; name = "JMH_1_21_${sha1}/jmh-1-21.jar"; url = "mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar"; }
rec { sha1 = "a6fe84788bf8cf762b0e561bf48774c2ea74e370"; name = "JMH_1_21_${sha1}/jmh-1-21.sources.jar"; url = "mirror://maven/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21-sources.jar"; }
rec { sha1 = "7aac374614a8a76cad16b91f1a4419d31a7dcda3"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.jar"; url = "mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.jar"; }
rec { sha1 = "fb48e2a97df95f8b9dced54a1a37749d2a64d2ae"; name = "JMH_GENERATOR_ANNPROCESS_1_21_${sha1}/jmh-generator-annprocess-1-21.sources.jar"; url = "mirror://maven/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21-sources.jar"; }
rec { sha1 = "2973d150c0dc1fefe998f834810d68f278ea58ec"; name = "JUNIT_${sha1}/junit.jar"; url = "mirror://maven/junit/junit/4.12/junit-4.12.jar"; }
rec { sha1 = "a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa"; name = "JUNIT_${sha1}/junit.sources.jar"; url = "mirror://maven/junit/junit/4.12/junit-4.12-sources.jar"; }
rec { sha1 = "42a25dc3219429f0e5d060061f71acb49bf010a0"; name = "HAMCREST_${sha1}/hamcrest.jar"; url = "mirror://maven/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"; }
rec { sha1 = "1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b"; name = "HAMCREST_${sha1}/hamcrest.sources.jar"; url = "mirror://maven/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"; }
rec { sha1 = "0d031013db9a80d6c88330c42c983fbfa7053193"; name = "hsdis_${sha1}/hsdis.so"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hsdis/intel/hsdis-amd64-linux-${sha1}.so"; }
] ++ lib.optionals stdenv.isLinux [
rec { sha1 = "0d031013db9a80d6c88330c42c983fbfa7053193"; name = "hsdis_${sha1}/hsdis.so"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hsdis/intel/hsdis-amd64-linux-${sha1}.so"; }
]
++ lib.optionals stdenv.isDarwin [
rec { sha1 = "67f6d23cbebd8998450a88b5bef362171f66f11a"; name = "hsdis_${sha1}/hsdis.dylib"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hsdis/intel/hsdis-amd64-darwin-${sha1}.dylib"; }
];
graal-mxcache = jvmci8-mxcache ++ [
# rec { sha1 = "5001adab652fc4eb35e30cdefbb0765442f8b7db"; name = "LLVM_ORG_LIBCXX_SRC_${sha1}/llvm-org-libcxx-src.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org/compiler-rt-llvmorg-8.0.0-4-gd563e33a79-bgae3b177eaa-linux-amd64.tar.gz"; }
rec { sha1 = "5001adab652fc4eb35e30cdefbb0765442f8b7db"; name = "LLVM_ORG_COMPILER_RT_LINUX_${sha1}/llvm-org-compiler-rt-linux.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org/compiler-rt-llvmorg-8.0.0-4-gd563e33a79-bgae3b177eaa-linux-amd64.tar.gz"; }
rec { sha1 = "a990b2dba1c706f5c43c56fedfe70bad9a695852"; name = "LLVM_WRAPPER_${sha1}/llvm-wrapper.jar"; url = "mirror://maven/org/bytedeco/javacpp-presets/llvm/6.0.1-1.4.2/llvm-6.0.1-1.4.2.jar"; }
rec { sha1 = "decbd95d46092fa9afaf2523b5b23d07ad7ad6bc"; name = "LLVM_WRAPPER_${sha1}/llvm-wrapper.sources.jar"; url = "mirror://maven/org/bytedeco/javacpp-presets/llvm/6.0.1-1.4.2/llvm-6.0.1-1.4.2-sources.jar"; }
rec { sha1 = "cfa6a0259d98bff5aa8d41ba11b4d1dad648fbaa"; name = "JAVACPP_${sha1}/javacpp.jar"; url = "mirror://maven/org/bytedeco/javacpp/1.4.2/javacpp-1.4.2.jar"; }
rec { sha1 = "fdb2d2c17f6b91cdd5421554396da8905f0dfed2"; name = "JAVACPP_${sha1}/javacpp.sources.jar"; url = "mirror://maven/org/bytedeco/javacpp/1.4.2/javacpp-1.4.2-sources.jar"; }
rec { sha1 = "702ca2d0ae93841c5ab75e4d119b29780ec0b7d9"; name = "NINJA_SYNTAX_${sha1}/ninja-syntax.tar.gz"; url = "https://pypi.org/packages/source/n/ninja_syntax/ninja_syntax-1.7.2.tar.gz"; }
rec { sha1 = "f2cfb09cee12469ff64f0d698b13de19903bb4f7"; name = "NanoHTTPD-WebSocket_${sha1}/nanohttpd-websocket.jar"; url = "mirror://maven/org/nanohttpd/nanohttpd-websocket/2.3.1/nanohttpd-websocket-2.3.1.jar"; }
rec { sha1 = "a8d54d1ca554a77f377eff6bf9e16ca8383c8f6c"; name = "NanoHTTPD_${sha1}/nanohttpd.jar"; url = "mirror://maven/org/nanohttpd/nanohttpd/2.3.1/nanohttpd-2.3.1.jar"; }
rec { sha1 = "946f8aa9daa917dd81a8b818111bec7e288f821a"; name = "ANTLR4_${sha1}/antlr4.jar"; url = "mirror://maven/org/antlr/antlr4-runtime/4.7.1/antlr4-runtime-4.7.1.jar"; }
rec { sha1 = "c3aeac59c022bdc497c8c48ed86fa50450e4896a"; name = "JLINE_${sha1}/jline.jar"; url = "mirror://maven/jline/jline/2.14.6/jline-2.14.6.jar"; }
rec { sha1 = "d0bdc21c5e6404726b102998e44c66a738897905"; name = "JAVA_ALLOCATION_INSTRUMENTER_${sha1}/java-allocation-instrumenter.jar"; url = "mirror://maven/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.1.0/java-allocation-instrumenter-3.1.0.jar"; }
rec { sha1 = "0da08b8cce7bbf903602a25a3a163ae252435795"; name = "ASM5_${sha1}/asm5.jar"; url = "mirror://maven/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar"; }
rec { sha1 = "396ce0c07ba2b481f25a70195c7c94922f0d1b0b"; name = "ASM_TREE5_${sha1}/asm-tree5.jar"; url = "mirror://maven/org/ow2/asm/asm-tree/5.0.4/asm-tree-5.0.4.jar"; }
rec { sha1 = "280c265b789e041c02e5c97815793dfc283fb1e6"; name = "LIBFFI_SOURCES_${sha1}/libffi-sources.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/libffi-3.2.1.tar.gz"; }
rec { sha1 = "8819cea8bfe22c9c63f55465e296b3855ea41786"; name = "TruffleJSON_${sha1}/trufflejson.jar"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/trufflejson-20180130.jar"; }
rec { sha1 = "9712a8124c40298015f04a74f61b3d81a51513af"; name = "CHECKSTYLE_8.8_${sha1}/checkstyle-8.8.jar"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/checkstyle-8.8-all.jar"; }
rec { sha1 = "8dc5a90bed5f51d7538d05b8c31c31b7dfddbd66"; name = "VISUALVM_COMMON_${sha1}/visualvm-common.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm/visualvm-19_0_0-20.tar.gz"; }
rec { sha1 = "e6e60889b7211a80b21052a249bd7e0f88f79fee"; name = "Java-WebSocket_${sha1}/java-websocket.jar"; url = "mirror://maven/org/java-websocket/Java-WebSocket/1.3.9/Java-WebSocket-1.3.9.jar"; }
rec { sha1 = "7a4d00d5ec5febd252a6182e8b6e87a0a9821f81"; name = "ICU4J_${sha1}/icu4j.jar"; url = "mirror://maven/com/ibm/icu/icu4j/62.1/icu4j-62.1.jar"; }
# This duplication of asm with underscore and minus is totally weird
rec { sha1 = "c01b6798f81b0fc2c5faa70cbe468c275d4b50c7"; name = "ASM-6.2.1_${sha1}/asm-6.2.1.jar"; url = "mirror://maven/org/ow2/asm/asm/6.2.1/asm-6.2.1.jar"; }
rec { sha1 = "cee28077ac7a63d3de0b205ec314d83944ff6267"; name = "ASM-6.2.1_${sha1}/asm-6.2.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm/6.2.1/asm-6.2.1-sources.jar"; }
rec { sha1 = "332b022092ecec53cdb6272dc436884b2d940615"; name = "ASM_TREE-6.2.1_${sha1}/asm-tree-6.2.1.jar"; url = "mirror://maven/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jar"; }
rec { sha1 = "072bd64989090e4ed58e4657e3d4481d96f643af"; name = "ASM_TREE-6.2.1_${sha1}/asm-tree-6.2.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1-sources.jar"; }
rec { sha1 = "e8b876c5ccf226cae2f44ed2c436ad3407d0ec1d"; name = "ASM_ANALYSIS-6.2.1_${sha1}/asm-analysis-6.2.1.jar"; url = "mirror://maven/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jar"; }
rec { sha1 = "b0b249bd185677648692e7c57b488b6d7c2a6653"; name = "ASM_ANALYSIS-6.2.1_${sha1}/asm-analysis-6.2.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1-sources.jar"; }
rec { sha1 = "eaf31376d741a3e2017248a4c759209fe25c77d3"; name = "ASM_COMMONS-6.2.1_${sha1}/asm-commons-6.2.1.jar"; url = "mirror://maven/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jar"; }
rec { sha1 = "667fa0f9d370e7848b0e3d173942855a91fd1daf"; name = "ASM_COMMONS-6.2.1_${sha1}/asm-commons-6.2.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1-sources.jar"; }
# From here on the deps are new
rec { sha1 = "400d664d7c92a659d988c00cb65150d1b30cf339"; name = "ASM_UTIL-6.2.1_${sha1}/asm-util-6.2.1.jar"; url = "mirror://maven/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1.jar"; }
rec { sha1 = "c9f7246bf93bb0dc7fe9e7c9eca531a8fb98d252"; name = "ASM_UTIL-6.2.1_${sha1}/asm-util-6.2.1.sources.jar"; url = "mirror://maven/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1-sources.jar"; }
rec { sha1 = "4b52bd03014f6d080ef0528865c1ee50621e35c6"; name = "NETBEANS_PROFILER_${sha1}/netbeans-profiler.jar"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/truffle/js/org-netbeans-lib-profiler-8.2-201609300101.jar"; }
rec { sha1 = "b5840706cc8ce639fcafeab1bc61da2d8aa37afd"; name = "NASHORN_INTERNAL_TESTS_${sha1}/nashorn-internal-tests.jar"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/truffle/js/nashorn-internal-tests-700f5e3f5ff2.jar"; }
rec { sha1 = "9577018f9ce3636a2e1cb0a0c7fe915e5098ded5"; name = "JACKSON_ANNOTATIONS_${sha1}/jackson-annotations.jar"; url = "mirror://maven/com/fasterxml/jackson/core/jackson-annotations/2.8.6/jackson-annotations-2.8.6.jar"; }
rec { sha1 = "2ef7b1cc34de149600f5e75bc2d5bf40de894e60"; name = "JACKSON_CORE_${sha1}/jackson-core.jar"; url = "mirror://maven/com/fasterxml/jackson/core/jackson-core/2.8.6/jackson-core-2.8.6.jar"; }
rec { sha1 = "c43de61f74ecc61322ef8f402837ba65b0aa2bf4"; name = "JACKSON_DATABIND_${sha1}/jackson-databind.jar"; url = "mirror://maven/com/fasterxml/jackson/core/jackson-databind/2.8.6/jackson-databind-2.8.6.jar"; }
rec { sha1 = "2838952e91baa37ac73ed817451268a193ba440a"; name = "JCODINGS_${sha1}/jcodings.jar"; url = "mirror://maven/org/jruby/jcodings/jcodings/1.0.40/jcodings-1.0.40.jar"; }
rec { sha1 = "0ed89e096c83d540acac00d6ee3ea935b4c905ff"; name = "JCODINGS_${sha1}/jcodings.sources.jar"; url = "mirror://maven/org/jruby/jcodings/jcodings/1.0.40/jcodings-1.0.40-sources.jar"; }
rec { sha1 = "5dbb09787a9b8780737b71fbf942235ef59051b9"; name = "JONI_${sha1}/joni.jar"; url = "mirror://maven/org/jruby/joni/joni/2.1.25/joni-2.1.25.jar"; }
rec { sha1 = "505a09064f6e2209616f38724f6d97d8d889aa92"; name = "JONI_${sha1}/joni.sources.jar"; url = "mirror://maven/org/jruby/joni/joni/2.1.25/joni-2.1.25-sources.jar"; }
rec { sha1 = "c4f7d054303948eb6a4066194253886c8af07128"; name = "XZ-1.8_${sha1}/xz-1.8.jar"; url = "mirror://maven/org/tukaani/xz/1.8/xz-1.8.jar"; }
rec { sha1 = "9314d3d372b05546a33791fbc8dd579c92ebd16b"; name = "GNUR_${sha1}/gnur.tar.gz"; url = "http://cran.rstudio.com/src/base/R-3/R-3.5.1.tar.gz"; }
rec { sha1 = "90aa8308da72ae610207d8f6ca27736921be692a"; name = "ANTLR4_COMPLETE_${sha1}/antlr4-complete.jar"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/antlr-4.7.1-complete.jar"; }] ++
lib.optionals stdenv.isLinux [
rec { sha1 = "df4c1f784294d02a82d78664064248283bfcc297"; name = "LLVM_ORG_${sha1}/llvm-org.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org/llvm-llvmorg-8.0.0-4-gd563e33a79-bgae3b177eaa-linux-amd64.tar.gz"; }
rec { sha1 = "344483aefa15147c121a8fb6fb35a2406768cc5c"; name = "LLVM_PLATFORM_SPECIFIC_${sha1}/llvm-platform-specific.jar"; url = "mirror://maven/org/bytedeco/javacpp-presets/llvm/6.0.1-1.4.2/llvm-6.0.1-1.4.2-linux-x86_64.jar"; }
rec { sha1 = "fd1a723d62cbbc591041d303e8b151d89f131643"; name = "VISUALVM_PLATFORM_SPECIFIC_${sha1}/visualvm-platform-specific.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm/visualvm-19_0_0-20-linux-amd64.tar.gz"; }
rec { sha1 = "987234c4ce45505c21302e097c24efef4873325c"; name = "NINJA_${sha1}/ninja.zip"; url = "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip";
isNinja = true; }] ++
lib.optionals stdenv.isDarwin [
rec { sha1 = "0fa1af180755fa4cc018ee9be33f2d7d827593c4"; name = "LLVM_ORG_${sha1}/llvm-org.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/llvm-org/llvm-llvmorg-8.0.0-4-gd563e33a79-bgae3b177eaa-darwin-amd64.tar.gz"; }
rec { sha1 = "57bc74574104a9e0a2dc4d7a71ffcc5731909e57"; name = "LLVM_PLATFORM_SPECIFIC_${sha1}/llvm-platform-specific.jar"; url = "mirror://maven/org/bytedeco/javacpp-presets/llvm/6.0.1-1.4.2/llvm-6.0.1-1.4.2-macosx-x86_64.jar"; }
rec { sha1 = "ae23bb365930f720acc88c62640bae6852a37d67"; name = "VISUALVM_PLATFORM_SPECIFIC_${sha1}/visualvm-platform-specific.tar.gz"; url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm/visualvm-19_0_0-20-macosx-x86_64.tar.gz"; }
rec { sha1 = "8142c497f7dfbdb052a1e31960fdfe2c6f9a5ca2"; name = "NINJA_${sha1}/ninja.zip"; url = "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-mac.zip";
isNinja = true; }];
graal-mxcachegit = [
{ sha256 = "01w39ms39gl3cw7c2fgcacr2yjg94im9x2x7p5g94l6xlcgqvcnr"; name = "graaljs"; url = "https://github.com/graalvm/graaljs.git"; rev = "vm-${version}"; }
{ sha256 = "1dps9n5b9c80pbg1fmlwpffy6ina0f0h27di24kafc8isxrdggia"; name = "truffleruby"; url = "https://github.com/oracle/truffleruby.git"; rev = "vm-${version}"; }
{ sha256 = "0jdpdqm3ld1wsasmi8ka26qf19cibjac8lrqm040h5vh0iqzxizy"; name = "fastr"; url = "https://github.com/oracle/fastr.git"; rev = "vm-${version}"; }
{ sha256 = "1gv8vafwrafjzvgv4gwk4kcsb3bnvsx07qa5inc0bdyxy5shl381"; name = "graalpython"; url = "https://github.com/graalvm/graalpython.git"; rev = "vm-${version}"; }];
ninja-syntax = python27.pkgs.buildPythonPackage rec {
version = "1.7.2";
pname = "ninja_syntax";
doCheck = false;
src = python27.pkgs.fetchPypi {
inherit pname version;
sha256 = "07zg30m0khx55fv2gxxn7pqd549z0vk3x592mrdlk9l8krxwjb9l";
};
};
findbugs = fetchzip {
name = "findbugs-3.0.0";
url = "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/findbugs-3.0.0.zip";
sha256 = "0sf5f9h1s6fmhfigjy81i109j1ani5kzdr4njlpq0mnkkh9fpr7m";
};
python27withPackages = python27.withPackages (ps: [ ninja-syntax ]);
in rec {
mx = stdenv.mkDerivation rec {
version = "5.247.1";
pname = "mx";
src = fetchFromGitHub {
owner = "graalvm";
repo = "mx";
rev = version;
sha256 = "038qr49rqzkhj76nqd27h8fysssnlpdhmy23ks2y81xlxhlzkc59";
};
nativeBuildInputs = [ makeWrapper ];
prePatch = ''
cp mx.py bak_mx.py
'';
patches = [ ./001_mx.py.patch ];
postPatch = ''
mv mx.py internal_mx.py
mv bak_mx.py mx.py
'';
buildPhase = ''
substituteInPlace mx --replace /bin/pwd pwd
# avoid crash with 'ValueError: ZIP does not support timestamps before 1980'
substituteInPlace internal_mx.py --replace \
'zipfile.ZipInfo(arcname, time.localtime(getmtime(join(root, f)))[:6])' \
'zipfile.ZipInfo(arcname, time.strptime ("1 Jan 1980", "%d %b %Y" )[:6])'
'';
installPhase = ''
mkdir -p $out/bin
cp -dpR * $out/bin
wrapProgram $out/bin/mx \
--prefix PATH : ${lib.makeBinPath [ python27withPackages mercurial ]} \
--set FINDBUGS_HOME ${findbugs}
makeWrapper ${python27}/bin/python $out/bin/mx-internal \
--add-flags "$out/bin/internal_mx.py" \
--prefix PATH : ${lib.makeBinPath [ python27withPackages mercurial ]} \
--set FINDBUGS_HOME ${findbugs}
'';
meta = with lib; {
homepage = "https://github.com/graalvm/mx";
description = "Command-line tool used for the development of Graal projects";
license = licenses.gpl2;
platforms = python27.meta.platforms;
};
};
jvmci8 = stdenv.mkDerivation rec {
version = "19.3-b05";
pname = "jvmci";
src = fetchFromGitHub {
owner = "graalvm";
repo = "graal-jvmci-8";
rev = "jvmci-${version}";
sha256 = "0j7my76vldbrvki9x1gn9ics3x2z96j05jdy4nflbpik8i396114";
};
buildInputs = [ mx mercurial openjdk ] ++ lib.optionals stdenv.isDarwin [
libobjc CoreFoundation Foundation JavaNativeFoundation JavaRuntimeSupport JavaVM xcodebuild Cocoa
];
postUnpack = ''
# a fake mercurial dir to prevent mx crash and supply the version to mx
( cd $sourceRoot
hg init
hg add
hg commit -m 'dummy commit'
hg tag ${lib.escapeShellArg src.rev}
hg checkout ${lib.escapeShellArg src.rev}
)
'';
patches = [ ./004_mx_jvmci.py.patch ] ++
lib.optional stdenv.isDarwin [
./008_remove_jfr.patch ];
postPatch =''
# The hotspot version name regex fix
substituteInPlace mx.jvmci/mx_jvmci.py \
--replace "\\d+.\\d+-b\\d+" "\\d+.\\d+-b[g\\d][a\\d]"
# darwin: https://github.com/oracle/graal/issues/1816
substituteInPlace src/share/vm/code/compiledIC.cpp \
--replace 'entry == false' '*entry == false'
'';
hardeningDisable = [ "fortify" ];
NIX_CFLAGS_COMPILE = toString (lib.optional stdenv.isDarwin [
"-Wno-reserved-user-defined-literal"
"-Wno-c++11-narrowing"
] ++
lib.optional stdenv.isLinux [
"-Wno-error=format-overflow" # newly detected by gcc7
"-Wno-error=nonnull"
]);
buildPhase = ''
export MX_ALT_OUTPUT_ROOT=$NIX_BUILD_TOP/mxbuild
export MX_CACHE_DIR=${makeMxCache jvmci8-mxcache}
mx-internal --primary-suite . --vm=server -v build -DFULL_DEBUG_SYMBOLS=0
mx-internal --primary-suite . --vm=server -v vm -version
mx-internal --primary-suite . --vm=server -v unittest
'';
installPhase = ''
mkdir -p $out
${if stdenv.isDarwin
then "mv openjdk1.8.0_*/darwin-amd64/product/* $out"
else "mv openjdk1.8.0_*/linux-amd64/product/* $out"}
install -v -m0555 -D $MX_CACHE_DIR/hsdis*/hsdis.so $out/jre/lib/amd64/hsdis-amd64.so
'';
# copy-paste openjdk's preFixup
preFixup = ''
# Propagate the setJavaClassPath setup hook from the JRE so that
# any package that depends on the JRE has $CLASSPATH set up
# properly.
mkdir -p $out/nix-support
printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs
# Set JAVA_HOME automatically.
mkdir -p $out/nix-support
cat <<EOF > $out/nix-support/setup-hook
if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi
EOF
'';
postFixup = openjdk.postFixup or null;
dontStrip = true; # stripped javac crashes with "segmentaion fault"
inherit (openjdk) meta;
};
graalvm8 = stdenv.mkDerivation rec {
inherit version;
pname = "graal";
src = fetchFromGitHub {
owner = "oracle";
repo = "graal";
rev = "vm-${version}";
sha256 = "0v8zkmzkyhmmmvra5pp876d4i4ijrrw15j98ipayc7is02kwiwmq";
};
patches = [ ./002_setjmp.c.patch ./003_mx_truffle.py.patch ] ++
lib.optional stdenv.isDarwin [
./009_remove_signedness_verifier.patch ./010_mx_substratevm.py
];
nativeBuildInputs = [ gfortran ];
buildInputs = [ mx zlib.dev mercurial jvmci8 git llvm clang
python27withPackages icu ruby bzip2 which
readline bzip2 xz pcre curl ed
] ++ lib.optional stdenv.isDarwin [
CoreFoundation gcc.cc.lib libiconv perl openssl
];
postUnpack = ''
${lib.optionalString stdenv.isLinux ''
cp ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/stdlib.h \
$sourceRoot/sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/include
''}
cp ${truffleMake} $TMPDIR/truffle.make
rm $sourceRoot/truffle/src/libffi/patches/others/0001-Add-mx-bootstrap-Makefile.patch
# a fake mercurial dir to prevent mx crash and supply the version to mx
( cd $sourceRoot
hg init
hg add
hg commit -m 'dummy commit'
hg tag ${lib.escapeShellArg src.rev}
hg checkout ${lib.escapeShellArg src.rev}
)
# make a copy of jvmci8
mkdir $NIX_BUILD_TOP/jvmci8
cp -dpR ${jvmci8}/* $NIX_BUILD_TOP/jvmci8
chmod +w -R $NIX_BUILD_TOP/jvmci8
export MX_CACHE_DIR=${makeMxCache graal-mxcache}
export MX_GIT_CACHE_DIR=$NIX_BUILD_TOP/mxgitcache
${makeMxGitCache graal-mxcachegit "$MX_GIT_CACHE_DIR"}
cd $TMPDIR
'';
postPatch = ''
substituteInPlace substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/headers/PosixDirectives.java \
--replace '<zlib.h>' '<${zlib.dev}/include/zlib.h>'
substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/CCLinkerInvocation.java \
--replace 'cmd.add("-v");' 'cmd.add("-v"); cmd.add("-L${zlib}/lib");'
# For debugging native-image build, add this replace statement on CCompilerInvoker.java
# --replace '(String line : lines) {' '(String line : lines) {System.out.println("DEBUG: " + line);'
${if stdenv.isLinux then ''
substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/codegen/CCompilerInvoker.java \
--replace 'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "gcc");' \
'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "${stdenv.cc}/bin/gcc");' ''
else ''
substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/codegen/CCompilerInvoker.java \
--replace 'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "gcc");' \
'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "${gcc.cc}/bin/gcc");
command.add("-F"); command.add("${CoreFoundation}/Library/Frameworks");
command.add("-framework"); command.add("CoreFoundation");'
''}
# prevent cyclical imports caused by identical <include> names
substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/CCLinkerInvocation.java \
--replace 'protected String compilerCommand = "cc";' 'protected String compilerCommand = "${stdenv.cc}/bin/cc";'
# dragonegg can't seem to compile on nix, so let's not require it
substituteInPlace sulong/mx.sulong/suite.py \
--replace '"requireDragonegg" : True,' '"requireDragonegg" : False,'
substituteInPlace truffle/mx.truffle/mx_truffle.py \
--replace 'os.path.relpath(self.subject.delegate.dir, self.subject.suite.vc_dir)' \
'self.subject.delegate.dir'
substituteInPlace sulong/projects/bootstrap-toolchain-launchers/Makefile \
--replace /bin/bash ${bash}/bin/bash
# Patch the native-image template, as it will be run during build
chmod +x vm/mx.vm/launcher_template.sh && patchShebangs vm/mx.vm
# Prevent random errors from too low maxRuntimecompilemethods
substituteInPlace truffle/mx.truffle/macro-truffle.properties \
--replace '-H:MaxRuntimeCompileMethods=1400' \
'-H:MaxRuntimeCompileMethods=28000'
${lib.optionalString stdenv.isDarwin ''
substituteInPlace truffle/src/com.oracle.truffle.nfi.test.native/src/object.cc \
--replace '#include <stdlib.h>' ""
''}
${lib.optionalString stdenv.isLinux ''
substituteInPlace sulong/projects/com.oracle.truffle.llvm.libraries.bitcode/include/stdlib.h \
--replace '# include <cstdlib>' '# include "${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/cstdlib"'
''}
'';
buildPhase = ''
export MX_ALT_OUTPUT_ROOT=$NIX_BUILD_TOP/mxbuild
export MX_GIT_CACHE='refcache'
export JVMCI_VERSION_CHECK='ignore'
export JAVA_HOME=$NIX_BUILD_TOP/jvmci8
export FASTR_RELEASE=true
export PKG_LDFLAGS_OVERRIDE="-L${pcre.out}/lib -L${zlib}/lib -L${gfortran.cc.lib}/lib64"
${lib.optionalString stdenv.isDarwin ''
export CC="gcc"
export CPP="gcc -E"
export NIX_CXXSTDLIB_LINK=""
export NIX_CXXSTDLIB_LINK_FOR_TARGET=""
export OPENSSL_PREFIX=$(realpath openssl)
# this fixes error: impure path 'LibFFIHeaderDirectives' used in link
export NIX_ENFORCE_PURITY=0
''}
( cd vm
mx-internal -v --suite sdk --suite compiler --suite vm --suite tools --suite regex --suite truffle \
--dynamicimports /substratevm,/sulong,graal-js,graalpython,fastr,truffleruby build
)
'';
installPhase =
(if stdenv.isDarwin then ''
mkdir -p $out
rm -rf $MX_ALT_OUTPUT_ROOT/vm/darwin-amd64/GRAALVM_*STAGE1*
cp -rf $MX_ALT_OUTPUT_ROOT/vm/darwin-amd64/GRAALVM*/graalvm-unknown-${version}/* $out
''
else ''
mkdir -p $out
rm -rf $MX_ALT_OUTPUT_ROOT/vm/linux-amd64/GRAALVM_*STAGE1*
cp -rf $MX_ALT_OUTPUT_ROOT/vm/linux-amd64/GRAALVM*/graalvm-unknown-${version}/* $out
# BUG workaround http://mail.openjdk.java.net/pipermail/graal-dev/2017-December/005141.html
substituteInPlace $out/jre/lib/security/java.security \
--replace file:/dev/random file:/dev/./urandom \
--replace NativePRNGBlocking SHA1PRNG
# copy static and dynamic libraries needed for static compilation
cp -rf ${glibc}/lib/* $out/jre/lib/svm/clibraries/linux-amd64/
cp ${glibc.static}/lib/* $out/jre/lib/svm/clibraries/linux-amd64/
cp ${zlib.static}/lib/libz.a $out/jre/lib/svm/clibraries/linux-amd64/libz.a
'');
inherit (jvmci8) preFixup;
dontStrip = true; # stripped javac crashes with "segmentaion fault"
doInstallCheck = true;
installCheckPhase = ''
echo ${lib.escapeShellArg ''
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
''} > HelloWorld.java
$out/bin/javac HelloWorld.java
# run on JVM with Graal Compiler
$out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld
$out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World'
# Ahead-Of-Time compilation
$out/bin/native-image --no-server HelloWorld
./helloworld
./helloworld | fgrep 'Hello World'
${lib.optionalString stdenv.isLinux
''
# Ahead-Of-Time compilation with --static (supported on linux only)
$out/bin/native-image --no-server --static HelloWorld
./helloworld
./helloworld | fgrep 'Hello World'
''}
'';
enableParallelBuilding = true;
passthru.home = graalvm8;
meta = with lib; {
homepage = "https://github.com/oracle/graal";
description = "High-Performance Polyglot VM";
license = licenses.gpl2;
maintainers = with maintainers; [ volth hlolli ];
platforms = [ "x86_64-linux" "x86_64-darwin" /*"aarch64-linux"*/ ];
};
};
}

View File

@ -1,16 +0,0 @@
# This Makefile is used by mx to bootstrap libffi build.
# `make MX_VERBOSE=y` will report all lines executed. The actual value doesn't
# matter as long as it's not empty.
QUIETLY$(MX_VERBOSE) = @
.PHONY: default
default:
sed -i "s|-print-multi-os-directory||g" ../$(SOURCES)/configure
$(QUIETLY) echo CONFIGURE libffi
$(QUIETLY) mkdir ../$(OUTPUT)
$(QUIETLY) cd ../$(OUTPUT) && ../$(SOURCES)/configure $(CONFIGURE_ARGS)
$(QUIETLY) echo MAKE libffi
$(QUIETLY) $(MAKE) -C ../$(OUTPUT)

View File

@ -72,15 +72,17 @@ let
nimHost = parsePlatform stdenv.hostPlatform;
nimTarget = parsePlatform stdenv.targetPlatform;
bootstrapCompiler = stdenv.mkDerivation rec {
bootstrapCompiler = let
revision = "561b417c65791cd8356b5f73620914ceff845d10";
in stdenv.mkDerivation {
pname = "nim-bootstrap";
version = "0.20.0";
version = "g${lib.substring 0 7 revision}";
src = fetchgit {
# A Git checkout is much smaller than a GitHub tarball.
url = "https://github.com/nim-lang/csources.git";
rev = "v${version}";
sha256 = "0i6vsfy1sgapx43n226q8m0pvn159sw2mhp50zm3hhb9zfijanis";
url = "https://github.com/nim-lang/csources_v1.git";
rev = revision;
sha256 = "1c2k681knrha1zmf4abhb32i2wwd3nwflzylnqryxk753swla043";
};
enableParallelBuilding = true;

View File

@ -1272,10 +1272,21 @@ self: super: {
gi-cairo-render = doJailbreak super.gi-cairo-render;
gi-cairo-connector = doJailbreak super.gi-cairo-connector;
# Remove when https://github.com/gtk2hs/svgcairo/pull/10 gets merged.
svgcairo = appendPatch super.svgcairo (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/svgcairo/commit/df6c6172b52ecbd32007529d86ba9913ba001306.patch";
sha256 = "128qrns56y139vfzg1rbyqfi2xn8gxsmpnxv3zqf4v5spsnprxwh";
svgcairo = overrideCabal super.svgcairo (drv: {
patches = [
# Remove when https://github.com/gtk2hs/svgcairo/pull/10 gets merged.
(pkgs.fetchpatch {
url = "https://github.com/gtk2hs/svgcairo/commit/df6c6172b52ecbd32007529d86ba9913ba001306.patch";
sha256 = "128qrns56y139vfzg1rbyqfi2xn8gxsmpnxv3zqf4v5spsnprxwh";
})
# The update here breaks svgcairo:
# https://github.com/NixOS/nixpkgs/commit/08fcd73d9dc9a28aa901210b259d9bfb3c228018
# and updating the call to the header with the correct name fixes it.
(pkgs.fetchpatch {
url = "https://github.com/dalpd/svgcairo/commit/4dc6d8d3a6c24be0b8c1fd73b282ff247e7b1e6f.patch";
sha256 = "1pq9ld9z67zsxj8vqjf82qwckcp69lvvnrjb7wsyb5jc6jaj3q0a";
})
];
});
# Missing -Iinclude parameter to doc-tests (pull has been accepted, so should be resolved when 0.5.3 released)
@ -2039,4 +2050,8 @@ EOT
network = self.network_3_1_2_5;
});
# Fixes https://github.com/NixOS/nixpkgs/issues/140613
# https://github.com/recursion-schemes/recursion-schemes/issues/128
recursion-schemes = appendPatch super.recursion-schemes ./patches/recursion-schemes-128.patch;
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super

View File

@ -166,7 +166,7 @@ self: super: {
# 2021-09-18: Need path >= 0.9.0 for ghc 9 compat
path = self.path_0_9_0;
# 2021-09-18: Need ormolu >= 0.3.0.0 for ghc 9 compat
ormolu = doDistribute self.ormolu_0_3_0_1;
ormolu = doDistribute self.ormolu_0_3_1_0;
# 2021-09-18: https://github.com/haskell/haskell-language-server/issues/2206
# Restrictive upper bound on ormolu
hls-ormolu-plugin = doJailbreak super.hls-ormolu-plugin;

View File

@ -67,13 +67,18 @@ self: super: {
postPatch = "sed -i -e 's,<4.16,<4.17,' basement.cabal";
});
base16-bytestring = appendPatch super.base16-bytestring (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/base16-bytestring-1.0.1.0.patch";
sha256 = "19ajai9y04981zfpcdj1nlz44b12gjj4m1ncciijv43mnz82plji";
});
# Duplicate Show instances in tests and library cause compiling tests to fail
blaze-builder = appendPatch (dontCheck super.blaze-builder) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/blaze-builder-0.4.2.1.patch";
sha256 = "1h5ny3mlng69vwaabl3af8hlv4qi24wfw8s14lw2ksw1yjbgi0j8";
});
cereal = appendPatch super.cereal (pkgs.fetchpatch {
cereal = appendPatch (doJailbreak super.cereal) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/cereal-0.5.8.1.patch";
sha256 = "03v4nxwz9y6viaa8anxcmp4zdf2clczv4pf9fqq6lnpplpz5i128";
});
@ -91,9 +96,9 @@ self: super: {
sha256 = "1g48lrmqgd88hqvfq3klz7lsrpwrir2v1931myrhh6dy0d9pqj09";
});
# cabal-install needs more recent versions of Cabal and base16-bytestring.
# cabal-install needs more recent versions of Cabal
cabal-install = (doJailbreak super.cabal-install).overrideScope (self: super: {
Cabal = null;
Cabal = self.Cabal_3_6_2_0;
});
doctest = appendPatch (dontCheck (doJailbreak super.doctest_0_18_1)) (pkgs.fetchpatch {
@ -145,8 +150,50 @@ self: super: {
type-equality = doJailbreak super.type-equality;
vector = doJailbreak (dontCheck super.vector);
vector-binary-instances = doJailbreak super.vector-binary-instances;
vector-th-unbox = doJailbreak super.vector-th-unbox;
zlib = doJailbreak super.zlib;
indexed-traversable-instances = doJailbreak super.indexed-traversable-instances;
hpack = overrideCabal (doJailbreak super.hpack) (drv: {
# Cabal 3.6 seems to preserve comments when reading, which makes this test fail
# 2021-10-10: 9.2.1 is not yet supported (also no issue)
testFlags = [
"--skip=/Hpack/renderCabalFile/is inverse to readCabalFile/"
] ++ drv.testFlags or [];
});
# Patch for TH code from head.hackage
vector-th-unbox = appendPatch (doJailbreak super.vector-th-unbox) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/vector-th-unbox-0.2.1.9.patch";
sha256 = "02bvvy3hx3cf4y4dr64zl5pjvq8giwk4286j5g1n6k8ikyn2403p";
});
# Patch for TH code from head.hackage
invariant = appendPatch (doJailbreak super.invariant) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/invariant-0.5.4.patch";
sha256 = "17gg8ck4r6qmlbcbpbnqzksgf5q7i891zs6axfzhas6ajncylxvc";
});
# base 4.15 support from head.hackage
lens = appendPatch (doJailbreak super.lens_5_0_1) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/lens-5.0.1.patch";
sha256 = "1s8qqg7ymvv94dnfnr1ragx91chh9y7ydc4jx25zn361wbn00pv7";
});
semigroupoids = overrideCabal super.semigroupoids (drv: {
# Patch from head.hackage for base 4.15 compat
patches = drv.patches or [] ++ [
(pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/semigroupoids-5.3.5.patch";
sha256 = "0xrn1gv6b2n76522pk2nfp4z69kvp14l2zpif2f8zzz6cwcrx9w8";
})
];
# acrobatics to make the patch apply
prePatch = ''
find . -type f | xargs -L 1 ${pkgs.buildPackages.dos2unix}/bin/dos2unix
'';
editedCabalFile = null;
revision = null;
});
# Syntax error in tests fixed in https://github.com/simonmar/alex/commit/84b29475e057ef744f32a94bc0d3954b84160760
alex = dontCheck super.alex;
@ -171,9 +218,6 @@ self: super: {
# The test suite indirectly depends on random, which leads to infinite recursion
random = dontCheck super.random_1_2_1;
# 5 introduced support for GHC 9.0.x, but hasn't landed in stackage yet
lens = super.lens_5_0_1;
# 0.16.0 introduced support for GHC 9.0.x, stackage has 0.15.0
memory = appendPatch super.memory_0_16_0 (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/memory-0.16.0.patch";
@ -195,10 +239,12 @@ self: super: {
# https://github.com/Soostone/retry/issues/71
retry = dontCheck super.retry;
streaming-commons = appendPatch super.streaming-commons (pkgs.fetchpatch {
# Disable tests pending resolution of
# https://github.com/haskell/text/issues/380 or https://github.com/fpco/streaming-commons/issues/60
streaming-commons = dontCheck (appendPatch super.streaming-commons (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/-/raw/dfd024c9a336c752288ec35879017a43bd7e85a0/patches/streaming-commons-0.2.2.1.patch";
sha256 = "04wi1jskr3j8ayh88kkx4irvhhgz0i7aj6fblzijy0fygikvidpy";
});
}));
# hlint 3.3 needs a ghc-lib-parser newer than the one from stackage
hlint = super.hlint_3_3_4.overrideScope (self: super: {

View File

@ -742,7 +742,6 @@ broken-packages:
- commodities
- commonmark-cli
- commsec
- compactable
- Compactable
- compact-list
- compact-map
@ -1435,6 +1434,7 @@ broken-packages:
- flamethrower
- flamingra
- flat-maybe
- flatparse
- flay
- flexible-time
- flickr
@ -2404,6 +2404,7 @@ broken-packages:
- htssets
- http2-client
- http2-grpc-proto-lens
- http3
- http-attoparsec
- http-client-lens
- http-client-request-modifiers
@ -2846,6 +2847,7 @@ broken-packages:
- linear-algebra-cblas
- linear-base
- linear-code
- linear-generics
- linear-maps
- linear-opengl
- linearscan
@ -4717,7 +4719,6 @@ broken-packages:
- SVD2HS
- svfactor
- svg-builder-fork
- svgcairo
- svgutils
- svm-light-utils
- svm-simple

View File

@ -149,6 +149,8 @@ package-maintainers:
- pretty-simple
- spago
- termonad
dalpd:
- svgcairo
domenkozar:
- cachix
- cachix-api

View File

@ -331,15 +331,9 @@ dont-distribute-packages:
- Shellac-haskeline
- Shellac-readline
- ShortestPathProblems
- Shpadoinkle-backend-pardiff
- Shpadoinkle-backend-static
- Shpadoinkle-developer-tools
- Shpadoinkle-disembodied
- Shpadoinkle-examples
- Shpadoinkle-html
- Shpadoinkle-router
- Shpadoinkle-template
- Shpadoinkle-widgets
- SimpleGL
- SimpleLog
- SimpleServer
@ -733,9 +727,9 @@ dont-distribute-packages:
- claferwiki
- clash
- clash-ghc
- clash-ghc_1_4_4
- clash-ghc_1_4_5
- clash-lib
- clash-lib_1_4_4
- clash-lib_1_4_5
- clash-multisignal
- clash-prelude-quickcheck
- clash-shake
@ -1075,6 +1069,7 @@ dont-distribute-packages:
- every-bit-counts
- exception-monads-fd
- exference
- exon
- expand
- expat-enumerator
- expiring-containers
@ -2313,6 +2308,7 @@ dont-distribute-packages:
- mkbndl
- mlist
- mmark-cli
- mmark-cli_0_0_5_1
- mmark-ext
- mmtl-base
- moan
@ -2631,7 +2627,6 @@ dont-distribute-packages:
- proto3-suite
- protobuf-native
- protocol-buffers-descriptor-fork
- proton
- psc-ide
- puffytools
- pugs-compat
@ -3443,6 +3438,7 @@ dont-distribute-packages:
- xml-push
- xml-query-xml-conduit
- xml-query-xml-types
- xml-syntax
- xml-tydom-conduit
- xml2x
- xmltv

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
diff --git a/recursion-schemes.cabal b/recursion-schemes.cabal
index c35f2c6..e692ade 100644
--- a/recursion-schemes.cabal
+++ b/recursion-schemes.cabal
@@ -93,6 +93,7 @@ library
Paths_recursion_schemes
ghc-options: -Wall
+ ghc-prof-options: -DPROFILING_ENABLED
if impl(ghc >= 8.6)
ghc-options: -Wno-star-is-type
default-language: Haskell2010
diff --git a/src/Data/Functor/Foldable/TH.hs b/src/Data/Functor/Foldable/TH.hs
index b3d5ac8..d4ef0e4 100644
--- a/src/Data/Functor/Foldable/TH.hs
+++ b/src/Data/Functor/Foldable/TH.hs
@@ -1,4 +1,7 @@
{-# LANGUAGE CPP, PatternGuards, Rank2Types #-}
+#if defined(PROFILING_ENABLED)
+{-# OPTIONS_GHC -O0 #-}
+#endif
module Data.Functor.Foldable.TH
( MakeBaseFunctor(..)
, BaseRules

View File

@ -25,7 +25,6 @@ pname
# propagate build dependencies so in case we have A -> B -> C,
# C can import package A propagated by B
, propagatedBuildInputs ? []
, propagatedNativeBuildInputs ? []
# used to disable derivation, useful for specific lua versions
# TODO move from this setting meta.broken to a 'disabled' attribute on the
@ -50,7 +49,7 @@ pname
# The latter is used to work-around luarocks having a problem with
# multiple-output derivations as external deps:
# https://github.com/luarocks/luarocks/issues/766<Paste>
, externalDeps ? lib.unique (lib.filter (drv: !drv ? luaModule) (propagatedBuildInputs ++ buildInputs))
, externalDeps ? []
# Appended to the generated luarocks config
, extraConfig ? ""
@ -74,7 +73,6 @@ pname
let
generatedRockspecFilename = "${rockspecDir}/${pname}-${version}.rockspec";
# TODO fix warnings "Couldn't load rockspec for ..." during manifest
# construction -- from initial investigation, appears it will require
# upstream luarocks changes to fix cleanly (during manifest construction,
@ -83,7 +81,7 @@ let
luarocks_config = "luarocks-config.lua";
luarocks_content = let
generatedConfig = lua.pkgs.lib.generateLuarocksConfig {
inherit externalDeps;
externalDeps = externalDeps ++ externalDepsGenerated;
inherit extraVariables;
inherit rocksSubdir;
inherit requiredLuaRocks;
@ -99,12 +97,13 @@ let
# Filter out the lua derivation itself from the Lua module dependency
# closure, as it doesn't have a rock tree :)
requiredLuaRocks = lib.filter (d: d ? luaModule)
(lua.pkgs.requiredLuaModules propagatedBuildInputs);
(lua.pkgs.requiredLuaModules luarocksDrv.propagatedBuildInputs);
# example externalDeps': [ { name = "CRYPTO"; dep = pkgs.openssl; } ]
externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs));
externalDeps' = lib.filter (dep: !lib.isDerivation dep) externalDeps;
in
toLuaModule ( lua.stdenv.mkDerivation (
luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation (
builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariables"] // {
name = namePrefix + pname + "-" + version;
@ -146,13 +145,12 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
runHook postConfigure
'';
# TODO could be moved to configurePhase
buildPhase = ''
runHook preBuild
nix_debug "Using LUAROCKS_CONFIG=$LUAROCKS_CONFIG"
LUAROCKS=luarocks
LUAROCKS=${lua.pkgs.luarocks}/bin/luarocks
if (( ''${NIX_DEBUG:-0} >= 1 )); then
LUAROCKS="$LUAROCKS --verbose"
fi
@ -195,6 +193,7 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
passthru = {
inherit lua; # The lua interpreter
inherit externalDeps;
inherit luarocks_content;
} // passthru;
meta = {
@ -203,4 +202,6 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
maintainers = (meta.maintainers or []) ++ [ ];
broken = disabled;
} // meta;
}))
}));
in
luarocksDrv

View File

@ -15,7 +15,7 @@ let
overridenPackages = import ./overrides.nix { inherit pkgs; };
generatedPackages = if (builtins.pathExists ./generated-packages.nix) then
pkgs.callPackage ./generated-packages.nix { } else (final: prev: {});
(final: prev: pkgs.callPackage ./generated-packages.nix { inherit (final) callPackage; } final prev) else (final: prev: {});
extensible-self = lib.makeExtensible
(extends overrides

File diff suppressed because it is too large Load Diff

View File

@ -5,8 +5,20 @@ let
in unique ([lua] ++ modules ++ concatLists (catAttrs "requiredLuaModules" modules));
# Check whether a derivation provides a lua module.
hasLuaModule = drv: drv ? luaModule;
/*
Use this to override the arguments passed to buildLuarocksPackage
*/
overrideLuarocks = drv: f: (drv.override (args: args // {
buildLuarocksPackage = drv: (args.buildLuarocksPackage drv).override f;
})) // {
overrideScope = scope: overrideLuarocks (drv.overrideScope scope) f;
};
in
rec {
inherit overrideLuarocks;
inherit hasLuaModule requiredLuaModules;
luaPathList = [

View File

@ -1,11 +1,11 @@
{ pkgs, ... }:
self: super:
with super;
{ pkgs }:
final: prev:
with prev;
{
##########################################3
#### manual fixes for generated packages
##########################################3
bit32 = super.bit32.override({
bit32 = prev.bit32.overrideAttrs(oa: {
# Small patch in order to no longer redefine a Lua 5.2 function that Luajit
# 2.1 also provides, see https://github.com/LuaJIT/LuaJIT/issues/325 for
# more
@ -14,7 +14,7 @@ with super;
];
});
busted = super.busted.override({
busted = prev.busted.overrideAttrs(oa: {
postConfigure = ''
substituteInPlace ''${rockspecFilename} \
--replace "'lua_cliargs = 3.0-1'," "'lua_cliargs >= 3.0-1',"
@ -25,14 +25,7 @@ with super;
'';
});
cqueues = super.cqueues.override(rec {
# Parse out a version number without the Lua version inserted
version = with pkgs.lib; let
version' = super.cqueues.version;
rel = splitVersion version';
date = head rel;
rev = last (splitString "-" (last rel));
in "${date}-${rev}";
cqueues = (prev.lib.overrideLuarocks prev.cqueues (drv: {
nativeBuildInputs = [
pkgs.gnum4
];
@ -41,9 +34,17 @@ with super;
{ name = "OPENSSL"; dep = pkgs.openssl; }
];
disabled = luaOlder "5.1" || luaAtLeast "5.4";
})).overrideAttrs(oa: rec {
# Parse out a version number without the Lua version inserted
version = with pkgs.lib; let
version' = prev.cqueues.version;
rel = splitVersion version';
date = head rel;
rev = last (splitString "-" (last rel));
in "${date}-${rev}";
# Upstream rockspec is pointlessly broken into separate rockspecs, per Lua
# version, which doesn't work well for us, so modify it
postConfigure = let inherit (super.cqueues) pname; in ''
postConfigure = let inherit (prev.cqueues) pname; in ''
# 'all' target auto-detects correct Lua version, which is fine for us as
# we only have the right one available :)
sed -Ei ''${rockspecFilename} \
@ -56,13 +57,13 @@ with super;
'';
});
cyrussasl = super.cyrussasl.override({
cyrussasl = prev.lib.overrideLuarocks prev.cyrussasl (drv: {
externalDeps = [
{ name = "LIBSASL"; dep = pkgs.cyrus_sasl; }
];
});
http = super.http.override({
http = prev.http.overrideAttrs(oa: {
patches = [
(pkgs.fetchpatch {
name = "invalid-state-progression.patch";
@ -76,7 +77,7 @@ with super;
*/
});
ldbus = super.ldbus.override({
ldbus = prev.lib.overrideLuarocks prev.ldbus (drv: {
extraVariables = {
DBUS_DIR="${pkgs.dbus.lib}";
DBUS_ARCH_INCDIR="${pkgs.dbus.lib}/lib/dbus-1.0/include";
@ -87,7 +88,7 @@ with super;
];
});
ljsyscall = super.ljsyscall.override(rec {
ljsyscall = prev.ljsyscall.overrideAttrs(oa: rec {
version = "unstable-20180515";
# package hasn't seen any release for a long time
src = pkgs.fetchFromGitHub {
@ -106,7 +107,7 @@ with super;
propagatedBuildInputs = with pkgs.lib; optional (!isLuaJIT) luaffi;
});
lgi = super.lgi.override({
lgi = prev.lib.overrideLuarocks prev.lgi (drv: {
nativeBuildInputs = [
pkgs.pkg-config
];
@ -128,31 +129,31 @@ with super;
'';
});
lrexlib-gnu = super.lrexlib-gnu.override({
lrexlib-gnu = prev.lib.overrideLuarocks prev.lrexlib-gnu (drv: {
buildInputs = [
pkgs.gnulib
];
});
lrexlib-pcre = super.lrexlib-pcre.override({
lrexlib-pcre = prev.lib.overrideLuarocks prev.lrexlib-pcre (drv: {
externalDeps = [
{ name = "PCRE"; dep = pkgs.pcre; }
];
});
lrexlib-posix = super.lrexlib-posix.override({
lrexlib-posix = prev.lib.overrideLuarocks prev.lrexlib-posix (drv: {
buildInputs = [
pkgs.glibc.dev
];
});
lua-iconv = super.lua-iconv.override({
lua-iconv = prev.lib.overrideLuarocks prev.lua-iconv (drv: {
buildInputs = [
pkgs.libiconv
];
});
lua-lsp = super.lua-lsp.override({
lua-lsp = prev.lua-lsp.overrideAttrs(oa: {
# until Alloyed/lua-lsp#28
postConfigure = ''
substituteInPlace ''${rockspecFilename} \
@ -160,14 +161,14 @@ with super;
'';
});
lua-zlib = super.lua-zlib.override({
lua-zlib = prev.lib.overrideLuarocks prev.lua-zlib (drv: {
buildInputs = [
pkgs.zlib.dev
];
disabled = luaOlder "5.1" || luaAtLeast "5.4";
});
luadbi-mysql = super.luadbi-mysql.override({
luadbi-mysql = prev.lib.overrideLuarocks prev.luadbi-mysql (drv: {
extraVariables = {
# Can't just be /include and /lib, unfortunately needs the trailing 'mysql'
MYSQL_INCDIR="${pkgs.libmysqlclient.dev}/include/mysql";
@ -179,19 +180,19 @@ with super;
];
});
luadbi-postgresql = super.luadbi-postgresql.override({
luadbi-postgresql = prev.lib.overrideLuarocks prev.luadbi-postgresql (drv: {
buildInputs = [
pkgs.postgresql
];
});
luadbi-sqlite3 = super.luadbi-sqlite3.override({
luadbi-sqlite3 = prev.lib.overrideLuarocks prev.luadbi-sqlite3 (drv: {
externalDeps = [
{ name = "SQLITE"; dep = pkgs.sqlite; }
];
});
luaevent = super.luaevent.override({
luaevent = prev.lib.overrideLuarocks prev.luaevent (drv: {
propagatedBuildInputs = [
luasocket
];
@ -201,7 +202,7 @@ with super;
disabled = luaOlder "5.1" || luaAtLeast "5.4";
});
luaexpat = super.luaexpat.override({
luaexpat = prev.lib.overrideLuarocks prev.luaexpat (drv: {
externalDeps = [
{ name = "EXPAT"; dep = pkgs.expat; }
];
@ -212,59 +213,57 @@ with super;
# TODO Somehow automatically amend buildInputs for things that need luaffi
# but are in luajitPackages?
luaffi = super.luaffi.override({
luaffi = prev.lib.overrideLuarocks prev.luaffi (drv: {
# The packaged .src.rock version is pretty old, and doesn't work with Lua 5.3
src = pkgs.fetchFromGitHub {
owner = "facebook"; repo = "luaffifb";
rev = "532c757e51c86f546a85730b71c9fef15ffa633d";
sha256 = "1nwx6sh56zfq99rcs7sph0296jf6a9z72mxknn0ysw9fd7m1r8ig";
};
knownRockspec = with super.luaffi; "${pname}-${version}.rockspec";
knownRockspec = with prev.luaffi; "${pname}-${version}.rockspec";
disabled = luaOlder "5.1" || luaAtLeast "5.4" || isLuaJIT;
});
luaossl = super.luaossl.override({
luaossl = prev.lib.overrideLuarocks prev.luaossl (drv: {
externalDeps = [
{ name = "CRYPTO"; dep = pkgs.openssl; }
{ name = "OPENSSL"; dep = pkgs.openssl; }
];
});
luasec = super.luasec.override({
luasec = prev.lib.overrideLuarocks prev.luasec (drv: {
externalDeps = [
{ name = "OPENSSL"; dep = pkgs.openssl; }
];
});
luasql-sqlite3 = super.luasql-sqlite3.override({
luasql-sqlite3 = prev.lib.overrideLuarocks prev.luasql-sqlite3 (drv: {
externalDeps = [
{ name = "SQLITE"; dep = pkgs.sqlite; }
];
});
luasystem = super.luasystem.override({
buildInputs = pkgs.lib.optionals pkgs.stdenv.isLinux [
pkgs.glibc
];
});
luasystem = prev.lib.overrideLuarocks prev.luasystem (drv: { buildInputs = [ pkgs.glibc.out ]; });
luazip = super.luazip.override({
luazip = prev.lib.overrideLuarocks prev.luazip (drv: {
buildInputs = [
pkgs.zziplib
];
});
lua-yajl = super.lua-yajl.override({
lua-yajl = prev.lib.overrideLuarocks prev.lua-yajl (drv: {
buildInputs = [
pkgs.yajl
];
});
luuid = super.luuid.override(old: {
luuid = (prev.lib.overrideLuarocks prev.luuid (drv: {
externalDeps = [
{ name = "LIBUUID"; dep = pkgs.libuuid; }
];
meta = old.meta // {
disabled = luaOlder "5.1" || (luaAtLeast "5.4");
})).overrideAttrs(oa: {
meta = oa.meta // {
platforms = pkgs.lib.platforms.linux;
};
# Trivial patch to make it work in both 5.1 and 5.2. Basically just the
@ -276,13 +275,12 @@ with super;
patches = [
./luuid.patch
];
postConfigure = let inherit (super.luuid) version pname; in ''
postConfigure = let inherit (prev.luuid) version pname; in ''
sed -Ei ''${rockspecFilename} -e 's|lua >= 5.2|lua >= 5.1,|'
'';
disabled = luaOlder "5.1" || (luaAtLeast "5.4");
});
luv = super.luv.override({
luv = prev.lib.overrideLuarocks prev.luv (drv: {
# Use system libuv instead of building local and statically linking
# This is a hacky way to specify -DWITH_SHARED_LIBUV=ON which
# is not possible with luarocks and the current luv rockspec
@ -296,8 +294,8 @@ with super;
buildInputs = [ pkgs.libuv ];
passthru = {
libluv = self.luv.override ({
preBuild = self.luv.preBuild + ''
libluv = final.luv.overrideAttrs (oa: {
preBuild = final.luv.preBuild + ''
sed -i 's,\(option(BUILD_MODULE.*\)ON,\1OFF,' CMakeLists.txt
sed -i 's,\(option(BUILD_SHARED_LIBS.*\)OFF,\1ON,' CMakeLists.txt
sed -i 's,${"\${.*INSTALL_INC_DIR}"},${placeholder "out"}/include/luv,' CMakeLists.txt
@ -312,32 +310,32 @@ with super;
};
});
lyaml = super.lyaml.override({
lyaml = prev.lib.overrideLuarocks prev.lyaml (oa: {
buildInputs = [
pkgs.libyaml
];
});
mpack = super.mpack.override({
mpack = prev.lib.overrideLuarocks prev.mpack (drv: {
buildInputs = [ pkgs.libmpack ];
# the rockspec doesn't use the makefile so you may need to export more flags
USE_SYSTEM_LUA = "yes";
USE_SYSTEM_MPACK = "yes";
});
rapidjson = super.rapidjson.override({
rapidjson = prev.rapidjson.overrideAttrs(oa: {
preBuild = ''
sed -i '/set(CMAKE_CXX_FLAGS/d' CMakeLists.txt
sed -i '/set(CMAKE_C_FLAGS/d' CMakeLists.txt
'';
});
readline = (super.readline.override ({
readline = (prev.lib.overrideLuarocks prev.readline (drv: {
unpackCmd = ''
unzip "$curSrc"
tar xf *.tar.gz
'';
propagatedBuildInputs = super.readline.propagatedBuildInputs ++ [ pkgs.readline ];
propagatedBuildInputs = prev.readline.propagatedBuildInputs ++ [ pkgs.readline.out ];
extraVariables = rec {
READLINE_INCDIR = "${pkgs.readline.dev}/include";
HISTORY_INCDIR = READLINE_INCDIR;
@ -349,14 +347,14 @@ with super;
'';
});
std-_debug = super.std-_debug.overrideAttrs(oa: {
std-_debug = prev.std-_debug.overrideAttrs(oa: {
# run make to generate lib/std/_debug/version.lua
preConfigure = ''
make all
'';
});
std-normalize = super.std-normalize.overrideAttrs(oa: {
std-normalize = prev.std-normalize.overrideAttrs(oa: {
# run make to generate lib/std/_debug/version.lua
preConfigure = ''
make all
@ -365,10 +363,10 @@ with super;
# TODO just while testing, remove afterwards
# toVimPlugin should do it instead
gitsigns-nvim = super.gitsigns-nvim.overrideAttrs(oa: {
gitsigns-nvim = prev.gitsigns-nvim.overrideAttrs(oa: {
nativeBuildInputs = oa.nativeBuildInputs or [] ++ [ pkgs.vimUtils.vimGenDocHook ];
});
# aliases
cjson = super.lua-cjson;
cjson = prev.lua-cjson;
}

View File

@ -1,22 +1,23 @@
{ lib, fetchurl, buildDunePackage
, dune-configurator
, ppx_sexp_conv
, bos, ctypes, fmt, logs, rresult, sexplib
, bos, ctypes, fmt, logs, rresult
, mdx, alcotest, crowbar, junit_alcotest, ezjsonm
}:
buildDunePackage rec {
pname = "yaml";
version = "2.1.0";
version = "3.0.0";
useDune2 = true;
src = fetchurl {
url = "https://github.com/avsm/ocaml-yaml/releases/download/v${version}/yaml-v${version}.tbz";
sha256 = "03g8vsh5jgi1cm5q78v15slgnzifp91fp7n4v1i7pa8yk0bkh585";
sha256 = "1iws6lbnrrd5hhmm7lczfvqp0aidx5xn7jlqk2s5rjfmj9qf4j2c";
};
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ bos ctypes fmt logs ppx_sexp_conv rresult sexplib ];
propagatedBuildInputs = [ bos ctypes rresult ];
checkInputs = [ fmt logs mdx alcotest crowbar junit_alcotest ezjsonm ];
meta = {
description = "Parse and generate YAML 1.1 files";

View File

@ -0,0 +1,13 @@
{ lib, fetchurl, buildDunePackage, yaml, dune-configurator, ppx_sexp_conv, sexplib }:
buildDunePackage rec {
pname = "yaml-sexp";
inherit (yaml) version src useDune2;
propagatedBuildInputs = [ yaml ppx_sexp_conv sexplib ];
meta = yaml.meta // {
description = "ocaml-yaml with sexp support";
};
}

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "kustomize-sops";
version = "2.6.0";
version = "3.0.1";
src = fetchFromGitHub {
owner = "viaduct-ai";
repo = pname;
rev = "v${version}";
sha256 = "sha256-3dSWIDPIT4crsJuaB1TDfrUzobn8RfRlFAhqMXzZbKI=";
sha256 = "sha256-ZCEgv+2WC1XLDFdRtigkiWu81zLMHvmB8vvIBWN2UYY=";
};
vendorSha256 = "sha256-+MVViFwaApGZZxCyTwLzIEWTZDbr7WSx7e/yGbJ309Y=";
vendorSha256 = "sha256-LFa0s2FBkw97P0CV+9JBmUAjaKVO+RzCX+iWGPUD9iA=";
installPhase = ''
mkdir -p $out/lib/viaduct.ai/v1/ksops-exec/

View File

@ -5,8 +5,8 @@ luarocks.overrideAttrs(old: {
src = fetchFromGitHub {
owner = "nix-community";
repo = "luarocks-nix";
rev = "test-speedup";
sha256 = "sha256-WfzLSpIp0V7Ib4sjYvoJHF+/vHaieccvfVAr5W47QsQ=";
rev = "standalone";
sha256 = "sha256-53Zi+GTayO9EQTCIVrzPeRRHeIkHLqy0mHyBDzbcQQk=";
};
patches = [];

View File

@ -1,33 +1,42 @@
# This file was originally generated by https://github.com/kamilchm/go2nix v1.2.1
{ lib, buildGoPackage, fetchgit }:
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoPackage rec {
pname = "pprof-unstable";
version = "2018-08-15";
rev = "781f11b1fcf71fae9d185e7189b5e686f575075a";
buildGoModule rec {
pname = "pprof";
version = "unstable-2021-09-30";
goPackagePath = "github.com/google/pprof";
src = fetchgit {
inherit rev;
url = "git://github.com/google/pprof";
sha256 = "1nvzwcj6h4q0lsjlri3bym4axgv848w3xz57iz5p0wz9lcd5jsmf";
src = fetchFromGitHub {
owner = "google";
repo = "pprof";
rev = "7fe48b4c820be13151ae35ce5a5e3f54f1b53eef";
sha256 = "05nr3igdigs1586qplwfm17hfw0v81jy745g6vayq7cbplljfjb1";
};
goDeps = ./deps.nix;
vendorSha256 = "0yl8y3m2ia3cwxhmg1km8358a0225khimv6hcvras8r2glm69h3f";
meta = with lib; {
description = "A tool for visualization and analysis of profiling data";
homepage = "https://github.com/google/pprof";
license = licenses.asl20;
longDescription = ''
pprof reads a collection of profiling samples in profile.proto format and generates reports to visualize and help analyze the data. It can generate both text and graphical reports (through the use of the dot visualization package).
pprof reads a collection of profiling samples in profile.proto format and
generates reports to visualize and help analyze the data. It can generate
both text and graphical reports (through the use of the dot visualization
package).
profile.proto is a protocol buffer that describes a set of callstacks and symbolization information. A common usage is to represent a set of sampled callstacks from statistical profiling. The format is described on the proto/profile.proto file. For details on protocol buffers, see https://developers.google.com/protocol-buffers
profile.proto is a protocol buffer that describes a set of callstacks and
symbolization information. A common usage is to represent a set of sampled
callstacks from statistical profiling. The format is described on the
proto/profile.proto file. For details on protocol buffers, see
https://developers.google.com/protocol-buffers
Profiles can be read from a local file, or over http. Multiple profiles of the same type can be aggregated or compared.
Profiles can be read from a local file, or over http. Multiple profiles of
the same type can be aggregated or compared.
If the profile samples contain machine addresses, pprof can symbolize them through the use of the native binutils tools (addr2line and nm).
If the profile samples contain machine addresses, pprof can symbolize them
through the use of the native binutils tools (addr2line and nm).
This is not an official Google product.
'';

View File

@ -1,21 +0,0 @@
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
[
{
goPackagePath = "github.com/chzyer/readline";
fetch = {
type = "git";
url = "https://github.com/chzyer/readline";
rev = "2972be24d48e78746da79ba8e24e8b488c9880de";
sha256 = "104q8dazj8yf6b089jjr82fy9h1g80zyyzvp3g8b44a7d8ngjj6r";
};
}
{
goPackagePath = "github.com/ianlancetaylor/demangle";
fetch = {
type = "git";
url = "https://github.com/ianlancetaylor/demangle";
rev = "fcd258a6f0b45dc345a407ee5568cf9a4d24a0ae";
sha256 = "10hdzq6n4mb13g8ddqvwjwx14djfyxhh0gjc888vdihzvhyqhvrp";
};
}
]

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,9 @@
{ rustPlatform
, fetchFromGitHub
, lib
, openssl
{ lib
, rustPlatform
, fetchCrate
, nodejs
, pkg-config
, openssl
, stdenv
, curl
, Security
@ -13,32 +14,27 @@ rustPlatform.buildRustPackage rec {
pname = "wasm-bindgen-cli";
version = "0.2.78";
src =
let
tarball = fetchFromGitHub {
owner = "rustwasm";
repo = "wasm-bindgen";
rev = version;
hash = "sha256-1Z5d4gjZUic6Yrd+O8oLWYpJqAYGcByZYP0H1iInXHA=";
};
in
runCommand "source" { } ''
cp -R ${tarball} $out
chmod -R +w $out
cp ${./Cargo.lock} $out/Cargo.lock
'';
src = fetchCrate {
inherit pname version;
sha256 = "sha256-5s+HidnVfDV0AXA+/YcXNGVjv/E9JeK0Ttng4mCVX8M=";
};
cargoSha256 = "sha256-CbtjUFwowP/QqyAMCzmUiSib4EpRhQAmO4ekX00xYGE=";
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security curl ];
nativeBuildInputs = [ pkg-config ];
cargoHash = "sha256-RixIEat7EzGzgSQTnPennePpiucmAatrDGhbFSfTajo=";
cargoBuildFlags = [ "-p" pname ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ curl Security ];
checkInputs = [ nodejs ];
# other tests require it to be ran in the wasm-bindgen monorepo
cargoTestFlags = [ "--test=interface-types" ];
meta = with lib; {
homepage = "https://rustwasm.github.io/docs/wasm-bindgen/";
license = licenses.asl20;
license = with licenses; [ asl20 /* or */ mit ];
description = "Facilitating high-level interactions between wasm modules and JavaScript";
maintainers = with maintainers; [ ma27 nitsky rizary ];
platforms = platforms.unix;
mainProgram = "wasm-bindgen";
};
}

View File

@ -0,0 +1,103 @@
{ stdenv, lib, buildFHSUserEnv, dpkg, glibc, gcc-unwrapped, autoPatchelfHook, fetchurl, wrapGAppsHook
, gnome2, xorg
, libSM, libXxf86vm, libX11, glib, pango, cairo, gtk2-x11, zlib, openssl
, libpulseaudio
, SDL2, xorg_sys_opengl, libGL
}:
let
runescape = stdenv.mkDerivation rec {
pname = "runescape-launcher";
version = "2.2.9";
src = fetchurl {
url = "https://content.runescape.com/downloads/ubuntu/pool/non-free/r/${pname}/${pname}_${version}_amd64.deb";
sha256 = "0r5v1pwh0aas31b1d3pkrc8lqmqz9b4fml2b4kxmg5xzp677h271";
};
nativeBuildInputs = [
autoPatchelfHook
wrapGAppsHook
dpkg
];
buildInputs = [
glibc
gcc-unwrapped
libSM
libXxf86vm
libX11
glib
pango
cairo
gtk2-x11
zlib
openssl
];
runtimeDependencies = [
libpulseaudio
libGL
SDL2
xorg_sys_opengl
openssl
zlib
];
dontUnpack = true;
preBuild = ''
export DH_VERBOSE=1
'';
envVarsWithXmodifiers = ''
export MESA_GLSL_CACHE_DIR=~/Jagex
export GDK_SCALE=2
unset XMODIFIERS
'';
installPhase = ''
mkdir -p $out/bin $out/share
dpkg -x $src $out
patchShebangs $out/usr/bin/runescape-launcher
substituteInPlace $out/usr/bin/runescape-launcher \
--replace "unset XMODIFIERS" "$envVarsWithXmodifiers" \
--replace "/usr/share/games/runescape-launcher/runescape" "$out/share/games/runescape-launcher/runescape"
cp -r $out/usr/bin $out/
cp -r $out/usr/share $out/
rm -r $out/usr
'';
meta = with lib; {
description = "Launcher for RuneScape 3, the current main RuneScape";
homepage = "https://www.runescape.com/";
license = licenses.unfree;
maintainers = with lib.maintainers; [ grburst ];
platforms = [ "x86_64-linux" ];
};
};
in
/*
* We can patch the runescape launcher, but it downloads a client at runtime and checks it for changes.
* For that we need use a buildFHSUserEnv.
* FHS simulates a classic linux shell
*/
buildFHSUserEnv {
name = "RuneScape";
targetPkgs = pkgs: [
runescape
dpkg glibc gcc-unwrapped
libSM libXxf86vm libX11 glib pango cairo gtk2-x11 zlib openssl
libpulseaudio
xorg.libX11
SDL2 xorg_sys_opengl libGL
];
multiPkgs = pkgs: [ libGL ];
runScript = "runescape-launcher";
}

View File

@ -329,12 +329,12 @@ final: prev:
better-escape-nvim = buildVimPluginFrom2Nix {
pname = "better-escape.nvim";
version = "2021-10-09";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "max397574";
repo = "better-escape.nvim";
rev = "a644df43e4607df2e645cb7b6f50ede79fffe477";
sha256 = "1kjc1h35xfqgsqbg00hsvg52wkjskfilxxsxnnlimcsv9v8iadmh";
rev = "bbb8b0e3d1b1088a1db6b5ece776a41709929128";
sha256 = "1xiaywjy12rj25qdq5ys8ayrwlw9p9frpjzzagx1p6zgp03jpq63";
};
meta.homepage = "https://github.com/max397574/better-escape.nvim/";
};
@ -461,12 +461,12 @@ final: prev:
chadtree = buildVimPluginFrom2Nix {
pname = "chadtree";
version = "2021-10-17";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "ms-jpq";
repo = "chadtree";
rev = "63259154cae7c01a877cd493c7ff53d8bbaf36a8";
sha256 = "0072yqwcs23j1q5akybc9q933lg3davrbh10rjqs690b8p69rz0p";
rev = "47071cacfb9bcd5ac86dddb1e3ef272ca7ac254d";
sha256 = "1b2dx5j44441xgfk3dj8f135kim38fnp2s8rpf098q8r2gn3zv8d";
};
meta.homepage = "https://github.com/ms-jpq/chadtree/";
};
@ -870,12 +870,12 @@ final: prev:
comment-nvim = buildVimPluginFrom2Nix {
pname = "comment.nvim";
version = "2021-10-17";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "numtostr";
repo = "comment.nvim";
rev = "a86384dc153e86a9a3cbec1436a8acfa4b07690d";
sha256 = "043nczs67sa7i2nmmadhrd52d3yzjr1kcm3bgb4q5zig1a7r4dcj";
rev = "5365cc7f1fc2522ffa1b560830d3125372928d6a";
sha256 = "0lvcl3pykcry35r6c9fxmjklzvzz7lpxfchbz1qgadpq45pidyir";
};
meta.homepage = "https://github.com/numtostr/comment.nvim/";
};
@ -1014,12 +1014,12 @@ final: prev:
conflict-marker-vim = buildVimPluginFrom2Nix {
pname = "conflict-marker.vim";
version = "2020-09-23";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "rhysd";
repo = "conflict-marker.vim";
rev = "6a9b8f92a57ea8a90cbf62c960db9e5894be2d7a";
sha256 = "0vw5kvnmwwia65gni97vk42b9s47r3p5bglrhpcxsvs3f4s250vq";
rev = "22b6133116795ea8fb6705ddca981aa8faecedda";
sha256 = "0rh3c1sl145hwyh6idwgyqbrgnwvd91spxc5qs2hfr1xsh53ssx2";
};
meta.homepage = "https://github.com/rhysd/conflict-marker.vim/";
};
@ -1907,12 +1907,12 @@ final: prev:
floobits-neovim = buildVimPluginFrom2Nix {
pname = "floobits-neovim";
version = "2018-08-01";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "floobits";
repo = "floobits-neovim";
rev = "29ab2ed4bd5c879df0bd6df313a776155eb98ad8";
sha256 = "0bnncn3waw9birpd51j27hrzlriz8dk4naxdajmbwznwcnbkkgwx";
rev = "dbfa051e4f097dfa3f46997a2019556a62861258";
sha256 = "1zsr1536qf7zqdskpshf366m333w66hfjrfdw3ws5yz2l7kq5bcm";
};
meta.homepage = "https://github.com/floobits/floobits-neovim/";
};
@ -2159,12 +2159,12 @@ final: prev:
gitlinker-nvim = buildVimPluginFrom2Nix {
pname = "gitlinker.nvim";
version = "2021-10-12";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "ruifm";
repo = "gitlinker.nvim";
rev = "a727080a527cb0f01843b59e9c445d7c4dce0f12";
sha256 = "0mbnbiikavl6p0jsaal7vmxafrzdcn59xngwszx16qw8f00l76hw";
rev = "a6fb6d1ec2746fc18f81433648416edfb1a96d43";
sha256 = "0c417li0jx970h8qkgrww7ifzjjknfi26i7n13qx96c5axjxady5";
};
meta.homepage = "https://github.com/ruifm/gitlinker.nvim/";
};
@ -2964,12 +2964,12 @@ final: prev:
lightspeed-nvim = buildVimPluginFrom2Nix {
pname = "lightspeed.nvim";
version = "2021-10-09";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "ggandor";
repo = "lightspeed.nvim";
rev = "0836af9ad0c4bb913c8e00595bb25620c894fb97";
sha256 = "0vj84656vifg5c47m2pj7sfp9gz5ikpq9n0p57047d8r1arw50xg";
rev = "d2d47534b00d6fcd16cabab8ec8a6cd15c40ebf3";
sha256 = "13yb0srx7g9yf6rrr0bycxr4kac1ip1a1nzz27hamfkq3l9rcgn5";
};
meta.homepage = "https://github.com/ggandor/lightspeed.nvim/";
};
@ -3900,12 +3900,12 @@ final: prev:
null-ls-nvim = buildVimPluginFrom2Nix {
pname = "null-ls.nvim";
version = "2021-10-15";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "jose-elias-alvarez";
repo = "null-ls.nvim";
rev = "f9d3acd1a4e3b7e6d84951754fbdaadb196ae0fd";
sha256 = "15jk540qb2zwpq3vh31skdl1gn9v6y28vqv9jrw78fjmhrs99lld";
rev = "9534bda66ec8e919bace771bec74678b50b87a88";
sha256 = "0n61rf8qg8kqxa9hmf7jvnrj36xqi5ml9h3kfwszzbjmq89533kw";
};
meta.homepage = "https://github.com/jose-elias-alvarez/null-ls.nvim/";
};
@ -4008,12 +4008,12 @@ final: prev:
nvim-cmp = buildVimPluginFrom2Nix {
pname = "nvim-cmp";
version = "2021-10-16";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "hrsh7th";
repo = "nvim-cmp";
rev = "4ecf2a24265626a2c00427394deb4747c7b9d5dc";
sha256 = "1p134wb9g2ki0gn7aqhsh64frcx5n00npkcj1lgnzcc4cc95p7d4";
rev = "a6a98856c3986de675bc40c9c98b7458fb19e95c";
sha256 = "0x0hzymvna939iscz0llm64ic28iinh4bn6xihv8afgm693j3jbi";
};
meta.homepage = "https://github.com/hrsh7th/nvim-cmp/";
};
@ -4212,12 +4212,12 @@ final: prev:
nvim-lsp-ts-utils = buildVimPluginFrom2Nix {
pname = "nvim-lsp-ts-utils";
version = "2021-10-03";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "jose-elias-alvarez";
repo = "nvim-lsp-ts-utils";
rev = "efa321ad03fbffeca699bc04ca1a59db0c54d16f";
sha256 = "1bxj37jfcq6vrxpl5cslzmg03aqf2i13i71birvcvlw6n4p3kbbm";
rev = "cae4c06308c1ba4f2fdde31836fd98de3fc3e2b5";
sha256 = "1s2jbl4wpylvqfc4mrycd211xsi1p97r8r579fccjxpswvsm4bbk";
};
meta.homepage = "https://github.com/jose-elias-alvarez/nvim-lsp-ts-utils/";
};
@ -4228,8 +4228,8 @@ final: prev:
src = fetchFromGitHub {
owner = "neovim";
repo = "nvim-lspconfig";
rev = "9661d267f64a872a451dab0453b2b951e55cef27";
sha256 = "0hv77ridsxi5n2qibrp9a66kbmlw1c9yl8gpakr1iz2hhazq58x9";
rev = "7f902f952944aa708c78138f6536c0dc55aec3a2";
sha256 = "1n8srlrfliak2587r30la87x3jgl9iq1x8jdxlhrx7i874ha3ykp";
};
meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
};
@ -4704,12 +4704,12 @@ final: prev:
plenary-nvim = buildVimPluginFrom2Nix {
pname = "plenary.nvim";
version = "2021-10-06";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "nvim-lua";
repo = "plenary.nvim";
rev = "80bb2b9bb74bdca38a46480b6f2e15af990406e4";
sha256 = "11akcpxcp4m997a2y76ajknnmsifac2hj4nq9i4a8b1j08bxinim";
rev = "901b96d37a30be0504c97cc2c05d3a99b4cca842";
sha256 = "14nkpj4x9213waqsy93sdgnll42s4dxxpq5kv6g8w015drjrbwhv";
};
meta.homepage = "https://github.com/nvim-lua/plenary.nvim/";
};
@ -4897,12 +4897,12 @@ final: prev:
rainbow = buildVimPluginFrom2Nix {
pname = "rainbow";
version = "2020-05-28";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "luochen1990";
repo = "rainbow";
rev = "4d15633cdaf61602e1d9fd216a77fc02e0881b2d";
sha256 = "168mbdf2h3zhkqrdyyhh0pbkjdvxwida80rdwk8ml97mxxii8ziw";
rev = "e96f502eb0e88968858a2cb0348c8e2253637bcc";
sha256 = "02lj86yrqjpcs83z4qfh3nhiy4nsq1fdrrcy3x56701zsiml511i";
};
meta.homepage = "https://github.com/luochen1990/rainbow/";
};
@ -4993,12 +4993,12 @@ final: prev:
registers-nvim = buildVimPluginFrom2Nix {
pname = "registers.nvim";
version = "2021-10-16";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "tversteeg";
repo = "registers.nvim";
rev = "6445f9131d872d6bf2236ea301e5d400a96f961d";
sha256 = "0g60vks084jcajv1rsjnkn4idcwvzfbwqwnpkcw0xh009p71wyjd";
rev = "35227ec930cfa836f9a82bfdc3afc302b68a372f";
sha256 = "1pcc5bhacs6h0bxr3ksr6bwdgl75irqwmiwk4l3dwifdj1arhvq7";
};
meta.homepage = "https://github.com/tversteeg/registers.nvim/";
};
@ -5595,12 +5595,12 @@ final: prev:
syntastic = buildVimPluginFrom2Nix {
pname = "syntastic";
version = "2021-09-06";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "vim-syntastic";
repo = "syntastic";
rev = "97bf9ec720662af51ae403b6dfe720d4a24bfcbc";
sha256 = "0rcivwwvb6hmd420jkgy8gnzyv78z0bb8gw6232qrwf9m2lskzad";
rev = "d086f49d389e1c2d58211b1f92cf20c9f63dc325";
sha256 = "0cnd2m1dnx69657dpckiiy1slx2fpnpggm3qs0nzm5rm3qpzx185";
};
meta.homepage = "https://github.com/vim-syntastic/syntastic/";
};
@ -7638,12 +7638,12 @@ final: prev:
vim-fugitive = buildVimPluginFrom2Nix {
pname = "vim-fugitive";
version = "2021-10-17";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "tpope";
repo = "vim-fugitive";
rev = "93f41ace7dc068cf89314bcea23bdf8da686407a";
sha256 = "0hbif3hndmn7jll4w1kci6x3j7379wmpp9rnxg8rlbbnyxl2fpxj";
rev = "4d29c1d6a0def18923b4762c8f85ca3ee5ae6c83";
sha256 = "1m8qw6pqgyvfnbph8xwpsvgwdyapsg2abxbpqvsjhcg6ylbxfx17";
};
meta.homepage = "https://github.com/tpope/vim-fugitive/";
};
@ -7770,12 +7770,12 @@ final: prev:
vim-go = buildVimPluginFrom2Nix {
pname = "vim-go";
version = "2021-10-11";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "fatih";
repo = "vim-go";
rev = "f75762b6252fcdcfe6167e895e8171fb1ecfcd34";
sha256 = "0xgzl4ms1x9gp6pa5krasks106958cr69kza1ybqy56kbngghzq0";
rev = "66ce1595569513a23e3e0dc7aeb8bcacec3b220c";
sha256 = "0bcbrbyqbn993g1i5py2ix8rnsvcxzyhn9fbk7c08257l2i7cc6x";
};
meta.homepage = "https://github.com/fatih/vim-go/";
};
@ -8504,12 +8504,12 @@ final: prev:
vim-lsp-cxx-highlight = buildVimPluginFrom2Nix {
pname = "vim-lsp-cxx-highlight";
version = "2021-04-29";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "jackguo380";
repo = "vim-lsp-cxx-highlight";
rev = "9e42350272a413a51ce9a93b00c98682815ff7c1";
sha256 = "1nsac8f2c0lj42a77wxcv3k6i8sbpm5ghip6nx7yz0dj7zd4xm10";
rev = "679db721db12c2a1c3ae7addf2cc17ae9a26cf08";
sha256 = "064sqa11hnnxj6fnnp9dvd7m367ywg6vzwvqxawqv3cwvgr7123w";
};
meta.homepage = "https://github.com/jackguo380/vim-lsp-cxx-highlight/";
};
@ -9717,12 +9717,12 @@ final: prev:
vim-sneak = buildVimPluginFrom2Nix {
pname = "vim-sneak";
version = "2021-07-11";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "justinmk";
repo = "vim-sneak";
rev = "95374ad3e4b5ef902854e8f4bcfa9a7a31a91d71";
sha256 = "0ns80kjirk72l5lapl7m32ybyr5q71p2mr8a45ihh1k2dlc2wv06";
rev = "94c2de47ab301d476a2baec9ffda07367046bec9";
sha256 = "110f06rf1m6p0asr5h4sr80wpwji3krwna5vdn6aakvcr8a7qqdi";
};
meta.homepage = "https://github.com/justinmk/vim-sneak/";
};
@ -9982,12 +9982,12 @@ final: prev:
vim-test = buildVimPluginFrom2Nix {
pname = "vim-test";
version = "2021-10-15";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "vim-test";
repo = "vim-test";
rev = "5fe8ada99a3c711c8db65eb341c3f631043c4a26";
sha256 = "1vz28llgmjybg2hgxlv6d9q69f7lhj32id531p2hlnhxl49s9jbn";
rev = "2052bd926c37b5c828dd07c47ac676102ca34a0e";
sha256 = "1lyx57jryxx5r9s60hg3v6y0kx5p2qc408nl8zhffqhzzmxvkgp9";
};
meta.homepage = "https://github.com/vim-test/vim-test/";
};
@ -10222,12 +10222,12 @@ final: prev:
vim-ultest = buildVimPluginFrom2Nix {
pname = "vim-ultest";
version = "2021-10-05";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "rcarriga";
repo = "vim-ultest";
rev = "7861d1925baef8fe3fa313affdfbdcaa6b2af26f";
sha256 = "165klmixdch1nc9cxdldl5yg4q79q58riw0mg0mahqvvr5m1yrw3";
rev = "71290da8930cddb946758e108f01a9546c5dda75";
sha256 = "0jjb8b20dy65rjfmhhxq4jlcpdfqvmi4ianc6h2m6n08h5a4iw61";
};
meta.homepage = "https://github.com/rcarriga/vim-ultest/";
};
@ -10246,12 +10246,12 @@ final: prev:
vim-unimpaired = buildVimPluginFrom2Nix {
pname = "vim-unimpaired";
version = "2021-09-24";
version = "2021-10-18";
src = fetchFromGitHub {
owner = "tpope";
repo = "vim-unimpaired";
rev = "39f195d7e66141d7f1fa683927547026501e9961";
sha256 = "0bbiv32brznns82v8s0s2fylcn4j5d3vw4x2kp5h6zb4lqgya30q";
rev = "e4006d68cd4f390efef935bc09be0ce3bd022e72";
sha256 = "048n8p7bjpcwdk924glqkwkp10fl813ffrjsagwwzsnakax3da5f";
};
meta.homepage = "https://github.com/tpope/vim-unimpaired/";
};
@ -10655,12 +10655,12 @@ final: prev:
vimtex = buildVimPluginFrom2Nix {
pname = "vimtex";
version = "2021-10-13";
version = "2021-10-17";
src = fetchFromGitHub {
owner = "lervag";
repo = "vimtex";
rev = "4b3ceb9eb7f0e12c239d7ef4262728491aee89ba";
sha256 = "1q3ygk39pbm2bhq463c0rc7zqm5zzg2ln2k1qka1v2i4ghngaszi";
rev = "0824ade4187472fcdc1634f462da84b3cfc5931f";
sha256 = "0p7308x3yy9n43jhpggqb1vmz39k00ckx3svpxbckwh9y21hjxnc";
};
meta.homepage = "https://github.com/lervag/vimtex/";
};

View File

@ -6,8 +6,8 @@
callPackage ./generic.nix args {
src = fetchhg {
url = "https://hg.nginx.org/nginx-quic";
rev = "5b0c229ba5fe"; # branch=quic
sha256 = "1bb6n6b4nkc1cfllj75lwr4gjijl8883bkcvq8ncg7r4s5xs7r90";
rev = "404de224517e"; # branch=quic
sha256 = "00x8djp3hqnq60jzpddfrj0v23j2fbl27jyw609ha3wqkkbxrip9";
};
preConfigure = ''

View File

@ -1,13 +1,29 @@
{ lib, stdenv, fetchurl, bash, btrfs-progs, openssh, perl, perlPackages
, util-linux, asciidoc, asciidoctor, mbuffer, makeWrapper, nixosTests }:
{ lib
, stdenv
, fetchurl
, bash
, btrfs-progs
, openssh
, perl
, perlPackages
, util-linux
, asciidoc
, asciidoctor
, mbuffer
, makeWrapper
, genericUpdater
, curl
, writeShellScript
, nixosTests
}:
stdenv.mkDerivation rec {
pname = "btrbk";
version = "0.29.1";
version = "0.31.3";
src = fetchurl {
url = "https://digint.ch/download/btrbk/releases/${pname}-${version}.tar.xz";
sha256 = "153inyvvnl17hq1w3nsa783havznaykdam2yrj775bmi2wg6fvwn";
sha256 = "1lx7vnf386nsik8mxrrfyx1h7mkqk5zs26sy0s0lynfxcm4lkxb2";
};
nativeBuildInputs = [ asciidoc asciidoctor makeWrapper ];
@ -22,7 +38,9 @@ stdenv.mkDerivation rec {
done
# Tainted Mode disables PERL5LIB
substituteInPlace btrbk --replace "perl -T" "perl"
substituteInPlace btrbk \
--replace "perl -T" "perl" \
--replace "\$0" "\$ENV{'program_name'}"
# Fix SSH filter script
sed -i '/^export PATH/d' ssh_filter_btrbk.sh
@ -30,17 +48,26 @@ stdenv.mkDerivation rec {
'';
preFixup = ''
wrapProgram $out/sbin/btrbk \
wrapProgram $out/bin/btrbk \
--set PERL5LIB $PERL5LIB \
--run 'export program_name=$0' \
--prefix PATH ':' "${lib.makeBinPath [ btrfs-progs bash mbuffer openssh ]}"
'';
passthru.tests.btrbk = nixosTests.btrbk;
passthru.updateScript = genericUpdater {
inherit pname version;
versionLister = writeShellScript "btrbk-versionLister" ''
echo "# Versions for $1:" >> "$2"
${curl}/bin/curl -s https://digint.ch/download/btrbk/releases/ | ${perl}/bin/perl -lne 'print $1 if /btrbk-([0-9.]*)\.tar/'
'';
};
meta = with lib; {
description = "A backup tool for btrfs subvolumes";
homepage = "https://digint.ch/btrbk";
license = licenses.gpl3;
license = licenses.gpl3Only;
platforms = platforms.unix;
maintainers = with maintainers; [ asymmetric ];
};

View File

@ -6,11 +6,11 @@ let
in
stdenv.mkDerivation rec {
pname = "bandwidth";
version = "1.10.1";
version = "1.10.4";
src = fetchurl {
url = "https://zsmith.co/archives/${pname}-${version}.tar.gz";
sha256 = "sha256-trya+/cBNIittQAc5tcykZbImeISqIolO/Y8uOI0jGk=";
sha256 = "sha256-e/eP2rA7ElFrh2Z4qTzRGR/cxY1UI6s+LQ9Og1x46/I=";
};
postPatch = ''

View File

@ -1,11 +1,18 @@
{ lib, stdenv, fetchFromGitHub, substituteAll, perl, file, ncurses }:
{ lib, stdenv, fetchFromGitHub, substituteAll, perl, file, ncurses, bash }:
stdenv.mkDerivation rec {
pname = "lesspipe";
version = "1.85";
buildInputs = [ perl ];
preConfigure = "patchShebangs .";
nativeBuildInputs = [ perl ];
buildInputs = [ perl bash ];
strictDeps = true;
preConfigure = ''
patchShebangs --build configure
'';
configureFlags = [ "--shell=${bash}/bin/bash" "--yes" ];
configurePlatforms = [];
dontBuild = true;
src = fetchFromGitHub {
owner = "wofr06";
@ -20,6 +27,7 @@ stdenv.mkDerivation rec {
file = "${file}/bin/file";
tput = "${ncurses}/bin/tput";
})
./override-shell-detection.patch
];
meta = with lib; {

View File

@ -0,0 +1,12 @@
--- a/configure
+++ b/configure
@@ -101,7 +101,8 @@
open OUT, ">lesspipe.sh.tmp";
my $in = 1;
my $anyin;
-my $shell = check_shell_vers();
+my $shell = $opt_shell;
+print OUT "#!$shell\n";
# ask if syntax highlighting should be included
$ifsyntax = '';
if ($opt_yes) {

View File

@ -0,0 +1,24 @@
{ lib
, fetchCrate
, rustPlatform
}:
rustPlatform.buildRustPackage rec {
pname = "vopono";
version = "0.8.6";
src = fetchCrate {
inherit pname version;
sha256 = "0dsyav755mggnsybj7iwvdqbqzz0gfd3j9vh0hmg5b7pbffanzvy";
};
cargoHash = "sha256:187mi36dgr2f1klqclci175zqgyrm0b6awrcnav63vira7hqz076";
meta = with lib; {
description = "Run applications through VPN connections in network namespaces";
homepage = "https://github.com/jamesmcm/vopono";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = [ maintainers.romildo ];
};
}

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec {
pname = "ytcc";
version = "2.5.0";
version = "2.5.1";
src = fetchFromGitHub {
owner = "woefe";
repo = "ytcc";
rev = "v${version}";
sha256 = "0d5zlj5c9n8kq38sq2napc2pnqq866v8jpsyg07q5yjcjwlmihap";
sha256 = "1w2frcy51kwsvd486awhpl5kkm11zj1nw3nnv9337316gfs213nw";
};
nativeBuildInputs = [ gettext ];

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonPackage rec {
pname = "auto-cpufreq";
version = "1.7.0";
version = "1.7.1";
src = fetchFromGitHub {
owner = "AdnanHodzic";
repo = pname;
rev = "v${version}";
sha256 = "0b6j26glg1ffihdr2h7dlr1lrbhkclgp17dxmkjgg5gk4mhz799r";
sha256 = "1r27ydv258c6pc82za0wq8q8fj0j3r50c8wxc6r7dwr6wx8q3asx";
};
propagatedBuildInputs = with python3Packages; [ click distro psutil ];

View File

@ -1,36 +1,38 @@
{ lib, nimPackages, fetchFromGitLab
{ lib
, nimPackages
, fetchFromGitLab
, enableShells ? [ "bash" "zsh" "fish" "sh" "posh" ]
}:
nimPackages.buildNimPackage rec{
nimPackages.buildNimPackage {
name = "swaycwd";
version = "0.0.1";
name = "swaycwd";
version = "0.0.2";
src = fetchFromGitLab {
owner = "cab404";
repo = "swaycwd";
rev = "aca81695ec2102b9bca6f5bae364f69a8b9d399f";
hash = "sha256-MkyY3wWByQo0l0J28xKDfGtxfazVPRyZHCObl9Fszh4=";
};
src = fetchFromGitLab {
owner = "cab404";
repo = name;
rev = "v${version}";
hash = "sha256-OZWOPtOqcX+fVQCxWntrn98EzFu70WH55rfYCPDMSKk=";
};
preConfigure = ''
{
echo 'let enabledShells: seq[string] = @${builtins.toJSON enableShells}'
echo 'export enabledShells'
} > shells.nim
cat << EOF > swaycwd.nimble
srcDir = "."
bin = "swaycwd"
EOF
'';
preConfigure = ''
{
echo 'let enabledShells: seq[string] = @${builtins.toJSON enableShells}'
echo 'export enabledShells'
} > shells.nim
cat << EOF > swaycwd.nimble
srcDir = "."
bin = "swaycwd"
EOF
'';
nimFlags = [ "--opt:speed" ];
nimFlags = [ "--opt:speed" ];
meta = with lib; {
homepage = "https://gitlab.com/cab404/swaycwd";
description = "Returns cwd for shell in currently focused sway window, or home directory if cannot find shell";
maintainers = with maintainers; [ cab404 ];
platforms = platforms.linux;
license = licenses.gpl3Only;
};
meta = with lib; {
homepage = "https://gitlab.com/cab404/swaycwd";
description = "Returns cwd for shell in currently focused sway window, or home directory if cannot find shell";
maintainers = with maintainers; [ cab404 ];
platforms = platforms.linux;
license = licenses.gpl3Only;
};
}

View File

@ -333,6 +333,8 @@ mapAliases ({
google-musicmanager = throw "google-musicmanager has been removed because Google Play Music was discontinued"; # added 2021-03-07
googleAuthenticator = google-authenticator; # added 2016-10-16
grantlee5 = libsForQt5.grantlee; # added 2015-12-19
graalvm8 = graalvm8-ce;
graalvm11 = graalvm11-ce;
gsettings_desktop_schemas = gsettings-desktop-schemas; # added 2018-02-25
gtk_doc = gtk-doc; # added 2018-02-25
guileCairo = guile-cairo; # added 2017-09-24
@ -374,6 +376,7 @@ mapAliases ({
jbuilder = dune_1; # added 2018-09-09
jikes = throw "jikes was deprecated on 2019-10-07: abandoned by upstream";
joseki = apache-jena-fuseki; # added 2016-02-28
jvmci8 = throw "graalvm8 and its tools were deprecated in favor of graalvm8-ce"; # added 2021-10-15
json_glib = json-glib; # added 2018-02-25
kdecoration-viewer = throw "kdecoration-viewer has been removed from nixpkgs, as there is no upstream activity"; # 2020-06-16
k9copy = throw "k9copy has been removed from nixpkgs, as there is no upstream activity"; # 2020-11-06
@ -569,6 +572,7 @@ mapAliases ({
mpv-with-scripts = self.wrapMpv self.mpv-unwrapped { }; # added 2020-05-22
multipath_tools = multipath-tools; # added 2016-01-21
mupen64plus1_5 = mupen64plus; # added 2016-02-12
mx = throw "graalvm8 and its tools were deprecated in favor of graalvm8-ce"; # added 2021-10-15
mxisd = throw "mxisd has been removed from nixpkgs as it has reached end of life, see https://github.com/kamax-matrix/mxisd/blob/535e0a5b96ab63cb0ddef90f6f42c5866407df95/EOL.md#end-of-life-notice . ma1sd may be a suitable alternative."; # added 2021-04-15
mysqlWorkbench = mysql-workbench; # added 2017-01-19
nagiosPluginsOfficial = monitoring-plugins;

View File

@ -968,6 +968,8 @@ with pkgs;
ventoy-bin = callPackage ../tools/cd-dvd/ventoy-bin { };
vopono = callPackage ../tools/networking/vopono { };
xcd = callPackage ../tools/misc/xcd { };
xtrt = callPackage ../tools/archivers/xtrt { };
@ -5467,7 +5469,7 @@ with pkgs;
git-fame = callPackage ../applications/version-management/git-and-tools/git-fame {};
git-fast-export = callPackage ../applications/version-management/git-and-tools/fast-export { mercurial = mercurial_4; };
git-fast-export = callPackage ../applications/version-management/git-and-tools/fast-export { };
git-filter-repo = callPackage ../applications/version-management/git-and-tools/git-filter-repo {
pythonPackages = python3Packages;
@ -8996,6 +8998,8 @@ with pkgs;
runelite = callPackage ../games/runelite { };
runescape = callPackage ../games/runescape-launcher { };
runningx = callPackage ../tools/X11/runningx { };
rund = callPackage ../development/tools/rund { };
@ -10311,6 +10315,7 @@ with pkgs;
wasm-bindgen-cli = callPackage ../development/tools/wasm-bindgen-cli {
inherit (darwin.apple_sdk.frameworks) Security;
nodejs = nodejs_latest;
};
welkin = callPackage ../tools/graphics/welkin {};
@ -12096,14 +12101,6 @@ with pkgs;
openjdk = openjdk16;
openjdk_headless = openjdk16_headless;
inherit (callPackages ../development/compilers/graalvm {
gcc = if stdenv.targetPlatform.isDarwin then gcc8 else gcc;
inherit (darwin.apple_sdk.frameworks)
CoreFoundation Foundation JavaNativeFoundation
JavaVM JavaRuntimeSupport Cocoa;
inherit (darwin) libiconv libobjc libresolv;
}) mx jvmci8 graalvm8;
graalvmCEPackages =
recurseIntoAttrs (callPackage ../development/compilers/graalvm/community-edition {
inherit (darwin.apple_sdk.frameworks) Foundation;
@ -23405,6 +23402,8 @@ with pkgs;
ucs-fonts = callPackage ../data/fonts/ucs-fonts
{ inherit (buildPackages.xorg) fonttosfnt mkfontscale; };
bront_fonts = callPackage ../data/fonts/bront { };
ultimate-oldschool-pc-font-pack = callPackage ../data/fonts/ultimate-oldschool-pc-font-pack { };
ultralist = callPackage ../applications/misc/ultralist { };

View File

@ -1408,6 +1408,8 @@ let
yaml = callPackage ../development/ocaml-modules/yaml { };
yaml-sexp = callPackage ../development/ocaml-modules/yaml/yaml-sexp.nix { };
yojson = callPackage ../development/ocaml-modules/yojson { };
z3 = callPackage ../development/ocaml-modules/z3 {

View File

@ -48,7 +48,7 @@ let
compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
# list of all compilers to test specific packages on
all = with compilerNames; [
released = with compilerNames; [
ghc884
ghc8107
ghc901
@ -304,18 +304,19 @@ let
# and to confirm that critical packages for the
# package sets (like Cabal, jailbreak-cabal) are
# working as expected.
cabal-install = all;
Cabal_3_6_2_0 = with compilerNames; [ ghc884 ghc8107 ghc901 ghc921 ];
cabal2nix-unstable = all;
funcmp = all;
haskell-language-server = all;
hoogle = all;
hsdns = all;
jailbreak-cabal = all;
language-nix = all;
nix-paths = all;
titlecase = all;
ghc-api-compat = all;
cabal-install = released ++ [ compilerNames.ghc921 ];
Cabal_3_6_2_0 = released ++ [ compilerNames.ghc921 ];
cabal2nix = released ++ [ compilerNames.ghc921 ];
cabal2nix-unstable = released ++ [ compilerNames.ghc921 ];
funcmp = released ++ [ compilerNames.ghc921 ];
haskell-language-server = released;
hoogle = released;
hsdns = released ++ [ compilerNames.ghc921 ];
jailbreak-cabal = released ++ [ compilerNames.ghc921 ];
language-nix = released ++ [ compilerNames.ghc921 ];
nix-paths = released ++ [ compilerNames.ghc921 ];
titlecase = released ++ [ compilerNames.ghc921 ];
ghc-api-compat = released;
})
{
mergeable = pkgs.releaseTools.aggregate {