Merge master into staging-next
This commit is contained in:
commit
b0a41194a1
@ -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";
|
||||
|
@ -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():
|
||||
|
@ -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> don’t break anymore
|
||||
when they are socket-activated.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
@ -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.
|
||||
|
@ -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 = [
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
'';
|
||||
})
|
||||
|
@ -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 ];
|
||||
|
@ -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
|
||||
'';
|
||||
|
||||
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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 ];
|
||||
|
26
pkgs/data/fonts/bront/default.nix
Normal file
26
pkgs/data/fonts/bront/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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"
|
||||
}
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
@ -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):
|
@ -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);
|
||||
-}
|
@ -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()
|
@ -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)
|
||||
|
||||
"""
|
@ -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)
|
@ -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])
|
@ -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");
|
||||
+}
|
@ -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",
|
@ -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);
|
||||
- }
|
||||
- }
|
||||
+
|
||||
}
|
||||
}
|
@ -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']
|
@ -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"*/ ];
|
||||
};
|
||||
};
|
||||
}
|
@ -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)
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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: {
|
||||
|
@ -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
|
||||
|
@ -149,6 +149,8 @@ package-maintainers:
|
||||
- pretty-simple
|
||||
- spago
|
||||
- termonad
|
||||
dalpd:
|
||||
- svgcairo
|
||||
domenkozar:
|
||||
- cachix
|
||||
- cachix-api
|
||||
|
@ -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
|
||||
|
736
pkgs/development/haskell-modules/hackage-packages.nix
generated
736
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -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
|
@ -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
|
||||
|
@ -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
@ -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 = [
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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";
|
||||
|
13
pkgs/development/ocaml-modules/yaml/yaml-sexp.nix
Normal file
13
pkgs/development/ocaml-modules/yaml/yaml-sexp.nix
Normal 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";
|
||||
};
|
||||
}
|
@ -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/
|
||||
|
@ -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 = [];
|
||||
|
||||
|
@ -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.
|
||||
'';
|
||||
|
21
pkgs/development/tools/profiling/pprof/deps.nix
generated
21
pkgs/development/tools/profiling/pprof/deps.nix
generated
@ -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";
|
||||
};
|
||||
}
|
||||
]
|
2923
pkgs/development/tools/wasm-bindgen-cli/Cargo.lock
generated
2923
pkgs/development/tools/wasm-bindgen-cli/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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";
|
||||
};
|
||||
}
|
||||
|
103
pkgs/games/runescape-launcher/default.nix
Normal file
103
pkgs/games/runescape-launcher/default.nix
Normal 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";
|
||||
}
|
@ -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/";
|
||||
};
|
||||
|
@ -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 = ''
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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 = ''
|
||||
|
@ -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; {
|
||||
|
12
pkgs/tools/misc/lesspipe/override-shell-detection.patch
Normal file
12
pkgs/tools/misc/lesspipe/override-shell-detection.patch
Normal 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) {
|
24
pkgs/tools/networking/vopono/default.nix
Normal file
24
pkgs/tools/networking/vopono/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 { };
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user