Merge staging-next into staging
This commit is contained in:
commit
782ff21ae3
@ -46,7 +46,7 @@ rec {
|
|||||||
|
|
||||||
armv7a-android-prebuilt = {
|
armv7a-android-prebuilt = {
|
||||||
config = "armv7a-unknown-linux-androideabi";
|
config = "armv7a-unknown-linux-androideabi";
|
||||||
sdkVer = "24";
|
sdkVer = "29";
|
||||||
ndkVer = "18b";
|
ndkVer = "18b";
|
||||||
platform = platforms.armv7a-android;
|
platform = platforms.armv7a-android;
|
||||||
useAndroidPrebuilt = true;
|
useAndroidPrebuilt = true;
|
||||||
@ -54,7 +54,7 @@ rec {
|
|||||||
|
|
||||||
aarch64-android-prebuilt = {
|
aarch64-android-prebuilt = {
|
||||||
config = "aarch64-unknown-linux-android";
|
config = "aarch64-unknown-linux-android";
|
||||||
sdkVer = "24";
|
sdkVer = "29";
|
||||||
ndkVer = "18b";
|
ndkVer = "18b";
|
||||||
platform = platforms.aarch64-multiplatform;
|
platform = platforms.aarch64-multiplatform;
|
||||||
useAndroidPrebuilt = true;
|
useAndroidPrebuilt = true;
|
||||||
|
@ -3394,10 +3394,14 @@
|
|||||||
name = "Hlodver Sigurdsson";
|
name = "Hlodver Sigurdsson";
|
||||||
};
|
};
|
||||||
hugoreeves = {
|
hugoreeves = {
|
||||||
email = "hugolreeves@gmail.com";
|
email = "hugo@hugoreeves.com";
|
||||||
github = "hugoreeves";
|
github = "hugoreeves";
|
||||||
githubId = 20039091;
|
githubId = 20039091;
|
||||||
name = "Hugo Reeves";
|
name = "Hugo Reeves";
|
||||||
|
keys = [{
|
||||||
|
longkeyid = "rsa4096/0x49FA39F8A7F735F9";
|
||||||
|
fingerprint = "78C2 E81C 828A 420B 269A EBC1 49FA 39F8 A7F7 35F9";
|
||||||
|
}];
|
||||||
};
|
};
|
||||||
hodapp = {
|
hodapp = {
|
||||||
email = "hodapp87@gmail.com";
|
email = "hodapp87@gmail.com";
|
||||||
@ -7351,6 +7355,12 @@
|
|||||||
githubId = 1153271;
|
githubId = 1153271;
|
||||||
name = "Sander van der Burg";
|
name = "Sander van der Burg";
|
||||||
};
|
};
|
||||||
|
sarcasticadmin = {
|
||||||
|
email = "rob@sarcasticadmin.com";
|
||||||
|
github = "sarcasticadmin";
|
||||||
|
githubId = 30531572;
|
||||||
|
name = "Robert James Hernandez";
|
||||||
|
};
|
||||||
sargon = {
|
sargon = {
|
||||||
email = "danielehlers@mindeye.net";
|
email = "danielehlers@mindeye.net";
|
||||||
github = "sargon";
|
github = "sargon";
|
||||||
@ -9484,6 +9494,12 @@
|
|||||||
github = "fzakaria";
|
github = "fzakaria";
|
||||||
githubId = 605070;
|
githubId = 605070;
|
||||||
};
|
};
|
||||||
|
nagisa = {
|
||||||
|
name = "Simonas Kazlauskas";
|
||||||
|
email = "nixpkgs@kazlauskas.me";
|
||||||
|
github = "nagisa";
|
||||||
|
githubId = 679122;
|
||||||
|
};
|
||||||
yevhenshymotiuk = {
|
yevhenshymotiuk = {
|
||||||
name = "Yevhen Shymotiuk";
|
name = "Yevhen Shymotiuk";
|
||||||
email = "yevhenshymotiuk@gmail.com";
|
email = "yevhenshymotiuk@gmail.com";
|
||||||
|
@ -204,6 +204,16 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
Note: Password support is only avaiable in GRUB version 2.
|
Note: Password support is only avaiable in GRUB version 2.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Following its deprecation in 20.03, the Perl NixOS test driver has been removed.
|
||||||
|
All remaining tests have been ported to the Python test framework.
|
||||||
|
Code outside nixpkgs using <filename>make-test.nix</filename> or
|
||||||
|
<filename>testing.nix</filename> needs to be ported to
|
||||||
|
<filename>make-test-python.nix</filename> and
|
||||||
|
<filename>testing-python.nix</filename> respectively.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -223,6 +233,11 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
|||||||
<para>
|
<para>
|
||||||
There is a new <xref linkend="opt-security.doas.enable"/> module that provides <command>doas</command>, a lighter alternative to <command>sudo</command> with many of the same features.
|
There is a new <xref linkend="opt-security.doas.enable"/> module that provides <command>doas</command>, a lighter alternative to <command>sudo</command> with many of the same features.
|
||||||
</para>
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<link xlink:href="https://hercules-ci.com">Hercules CI</link> Agent is a specialized build agent for projects built with Nix. See the <link xlink:href="https://nixos.org/nixos/options.html#services.hercules-ci-agent">options</link> and <link xlink:href="https://docs.hercules-ci.com/hercules-ci/getting-started/#deploy-agent">setup</link>.
|
||||||
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
package Logger;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Thread::Queue;
|
|
||||||
use XML::Writer;
|
|
||||||
use Encode qw(decode encode);
|
|
||||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
|
||||||
|
|
||||||
sub new {
|
|
||||||
my ($class) = @_;
|
|
||||||
|
|
||||||
my $logFile = defined $ENV{LOGFILE} ? "$ENV{LOGFILE}" : "/dev/null";
|
|
||||||
my $log = new XML::Writer(OUTPUT => new IO::File(">$logFile"));
|
|
||||||
|
|
||||||
my $self = {
|
|
||||||
log => $log,
|
|
||||||
logQueue => Thread::Queue->new()
|
|
||||||
};
|
|
||||||
|
|
||||||
$self->{log}->startTag("logfile");
|
|
||||||
|
|
||||||
bless $self, $class;
|
|
||||||
return $self;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub close {
|
|
||||||
my ($self) = @_;
|
|
||||||
$self->{log}->endTag("logfile");
|
|
||||||
$self->{log}->end;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub drainLogQueue {
|
|
||||||
my ($self) = @_;
|
|
||||||
while (defined (my $item = $self->{logQueue}->dequeue_nb())) {
|
|
||||||
$self->{log}->dataElement("line", sanitise($item->{msg}), 'machine' => $item->{machine}, 'type' => 'serial');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub maybePrefix {
|
|
||||||
my ($msg, $attrs) = @_;
|
|
||||||
$msg = $attrs->{machine} . ": " . $msg if defined $attrs->{machine};
|
|
||||||
return $msg;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub nest {
|
|
||||||
my ($self, $msg, $coderef, $attrs) = @_;
|
|
||||||
print STDERR maybePrefix("$msg\n", $attrs);
|
|
||||||
$self->{log}->startTag("nest");
|
|
||||||
$self->{log}->dataElement("head", $msg, %{$attrs});
|
|
||||||
my $now = clock_gettime(CLOCK_MONOTONIC);
|
|
||||||
$self->drainLogQueue();
|
|
||||||
eval { &$coderef };
|
|
||||||
my $res = $@;
|
|
||||||
$self->drainLogQueue();
|
|
||||||
$self->log(sprintf("(%.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now));
|
|
||||||
$self->{log}->endTag("nest");
|
|
||||||
die $@ if $@;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub sanitise {
|
|
||||||
my ($s) = @_;
|
|
||||||
$s =~ s/[[:cntrl:]\xff]//g;
|
|
||||||
$s = decode('UTF-8', $s, Encode::FB_DEFAULT);
|
|
||||||
return encode('UTF-8', $s, Encode::FB_CROAK);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub log {
|
|
||||||
my ($self, $msg, $attrs) = @_;
|
|
||||||
chomp $msg;
|
|
||||||
print STDERR maybePrefix("$msg\n", $attrs);
|
|
||||||
$self->drainLogQueue();
|
|
||||||
$self->{log}->dataElement("line", $msg, %{$attrs});
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
@ -1,734 +0,0 @@
|
|||||||
package Machine;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use threads;
|
|
||||||
use Socket;
|
|
||||||
use IO::Handle;
|
|
||||||
use POSIX qw(dup2);
|
|
||||||
use FileHandle;
|
|
||||||
use Cwd;
|
|
||||||
use File::Basename;
|
|
||||||
use File::Path qw(make_path);
|
|
||||||
use File::Slurp;
|
|
||||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
|
||||||
|
|
||||||
|
|
||||||
my $showGraphics = defined $ENV{'DISPLAY'};
|
|
||||||
|
|
||||||
my $sharedDir;
|
|
||||||
|
|
||||||
|
|
||||||
sub new {
|
|
||||||
my ($class, $args) = @_;
|
|
||||||
|
|
||||||
my $startCommand = $args->{startCommand};
|
|
||||||
|
|
||||||
my $name = $args->{name};
|
|
||||||
if (!$name) {
|
|
||||||
$startCommand =~ /run-(.*)-vm$/ if defined $startCommand;
|
|
||||||
$name = $1 || "machine";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$startCommand) {
|
|
||||||
# !!! merge with qemu-vm.nix.
|
|
||||||
my $netBackend = "-netdev user,id=net0";
|
|
||||||
my $netFrontend = "-device virtio-net-pci,netdev=net0";
|
|
||||||
|
|
||||||
$netBackend .= "," . $args->{netBackendArgs}
|
|
||||||
if defined $args->{netBackendArgs};
|
|
||||||
|
|
||||||
$netFrontend .= "," . $args->{netFrontendArgs}
|
|
||||||
if defined $args->{netFrontendArgs};
|
|
||||||
|
|
||||||
$startCommand =
|
|
||||||
"qemu-kvm -m 384 $netBackend $netFrontend \$QEMU_OPTS ";
|
|
||||||
|
|
||||||
if (defined $args->{hda}) {
|
|
||||||
if ($args->{hdaInterface} eq "scsi") {
|
|
||||||
$startCommand .= "-drive id=hda,file="
|
|
||||||
. Cwd::abs_path($args->{hda})
|
|
||||||
. ",werror=report,if=none "
|
|
||||||
. "-device scsi-hd,drive=hda ";
|
|
||||||
} else {
|
|
||||||
$startCommand .= "-drive file=" . Cwd::abs_path($args->{hda})
|
|
||||||
. ",if=" . $args->{hdaInterface}
|
|
||||||
. ",werror=report ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$startCommand .= "-cdrom $args->{cdrom} "
|
|
||||||
if defined $args->{cdrom};
|
|
||||||
$startCommand .= "-device piix3-usb-uhci -drive id=usbdisk,file=$args->{usb},if=none,readonly -device usb-storage,drive=usbdisk "
|
|
||||||
if defined $args->{usb};
|
|
||||||
$startCommand .= "-bios $args->{bios} "
|
|
||||||
if defined $args->{bios};
|
|
||||||
$startCommand .= $args->{qemuFlags} || "";
|
|
||||||
}
|
|
||||||
|
|
||||||
my $tmpDir = $ENV{'TMPDIR'} || "/tmp";
|
|
||||||
unless (defined $sharedDir) {
|
|
||||||
$sharedDir = $tmpDir . "/xchg-shared";
|
|
||||||
make_path($sharedDir, { mode => 0700, owner => $< });
|
|
||||||
}
|
|
||||||
|
|
||||||
my $allowReboot = 0;
|
|
||||||
$allowReboot = $args->{allowReboot} if defined $args->{allowReboot};
|
|
||||||
|
|
||||||
my $self = {
|
|
||||||
startCommand => $startCommand,
|
|
||||||
name => $name,
|
|
||||||
allowReboot => $allowReboot,
|
|
||||||
booted => 0,
|
|
||||||
pid => 0,
|
|
||||||
connected => 0,
|
|
||||||
socket => undef,
|
|
||||||
stateDir => "$tmpDir/vm-state-$name",
|
|
||||||
monitor => undef,
|
|
||||||
log => $args->{log},
|
|
||||||
redirectSerial => $args->{redirectSerial} // 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
mkdir $self->{stateDir}, 0700;
|
|
||||||
|
|
||||||
bless $self, $class;
|
|
||||||
return $self;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub log {
|
|
||||||
my ($self, $msg) = @_;
|
|
||||||
$self->{log}->log($msg, { machine => $self->{name} });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub nest {
|
|
||||||
my ($self, $msg, $coderef, $attrs) = @_;
|
|
||||||
$self->{log}->nest($msg, $coderef, { %{$attrs || {}}, machine => $self->{name} });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub name {
|
|
||||||
my ($self) = @_;
|
|
||||||
return $self->{name};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub stateDir {
|
|
||||||
my ($self) = @_;
|
|
||||||
return $self->{stateDir};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub start {
|
|
||||||
my ($self) = @_;
|
|
||||||
return if $self->{booted};
|
|
||||||
|
|
||||||
$self->log("starting vm");
|
|
||||||
|
|
||||||
# Create a socket pair for the serial line input/output of the VM.
|
|
||||||
my ($serialP, $serialC);
|
|
||||||
socketpair($serialP, $serialC, PF_UNIX, SOCK_STREAM, 0) or die;
|
|
||||||
|
|
||||||
# Create a Unix domain socket to which QEMU's monitor will connect.
|
|
||||||
my $monitorPath = $self->{stateDir} . "/monitor";
|
|
||||||
unlink $monitorPath;
|
|
||||||
my $monitorS;
|
|
||||||
socket($monitorS, PF_UNIX, SOCK_STREAM, 0) or die;
|
|
||||||
bind($monitorS, sockaddr_un($monitorPath)) or die "cannot bind monitor socket: $!";
|
|
||||||
listen($monitorS, 1) or die;
|
|
||||||
|
|
||||||
# Create a Unix domain socket to which the root shell in the guest will connect.
|
|
||||||
my $shellPath = $self->{stateDir} . "/shell";
|
|
||||||
unlink $shellPath;
|
|
||||||
my $shellS;
|
|
||||||
socket($shellS, PF_UNIX, SOCK_STREAM, 0) or die;
|
|
||||||
bind($shellS, sockaddr_un($shellPath)) or die "cannot bind shell socket: $!";
|
|
||||||
listen($shellS, 1) or die;
|
|
||||||
|
|
||||||
# Start the VM.
|
|
||||||
my $pid = fork();
|
|
||||||
die if $pid == -1;
|
|
||||||
|
|
||||||
if ($pid == 0) {
|
|
||||||
close $serialP;
|
|
||||||
close $monitorS;
|
|
||||||
close $shellS;
|
|
||||||
if ($self->{redirectSerial}) {
|
|
||||||
open NUL, "</dev/null" or die;
|
|
||||||
dup2(fileno(NUL), fileno(STDIN));
|
|
||||||
dup2(fileno($serialC), fileno(STDOUT));
|
|
||||||
dup2(fileno($serialC), fileno(STDERR));
|
|
||||||
}
|
|
||||||
$ENV{TMPDIR} = $self->{stateDir};
|
|
||||||
$ENV{SHARED_DIR} = $sharedDir;
|
|
||||||
$ENV{USE_TMPDIR} = 1;
|
|
||||||
$ENV{QEMU_OPTS} =
|
|
||||||
($self->{allowReboot} ? "" : "-no-reboot ") .
|
|
||||||
"-monitor unix:./monitor -chardev socket,id=shell,path=./shell " .
|
|
||||||
"-device virtio-serial -device virtconsole,chardev=shell " .
|
|
||||||
"-device virtio-rng-pci " .
|
|
||||||
($showGraphics ? "-serial stdio" : "-nographic") . " " . ($ENV{QEMU_OPTS} || "");
|
|
||||||
chdir $self->{stateDir} or die;
|
|
||||||
exec $self->{startCommand};
|
|
||||||
die "running VM script: $!";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Process serial line output.
|
|
||||||
close $serialC;
|
|
||||||
|
|
||||||
threads->create(\&processSerialOutput, $self, $serialP)->detach;
|
|
||||||
|
|
||||||
sub processSerialOutput {
|
|
||||||
my ($self, $serialP) = @_;
|
|
||||||
while (<$serialP>) {
|
|
||||||
chomp;
|
|
||||||
s/\r$//;
|
|
||||||
print STDERR $self->{name}, "# $_\n";
|
|
||||||
$self->{log}->{logQueue}->enqueue({msg => $_, machine => $self->{name}}); # !!!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
eval {
|
|
||||||
local $SIG{CHLD} = sub { die "QEMU died prematurely\n"; };
|
|
||||||
|
|
||||||
# Wait until QEMU connects to the monitor.
|
|
||||||
accept($self->{monitor}, $monitorS) or die;
|
|
||||||
|
|
||||||
# Wait until QEMU connects to the root shell socket. QEMU
|
|
||||||
# does so immediately; this doesn't mean that the root shell
|
|
||||||
# has connected yet inside the guest.
|
|
||||||
accept($self->{socket}, $shellS) or die;
|
|
||||||
$self->{socket}->autoflush(1);
|
|
||||||
};
|
|
||||||
die "$@" if $@;
|
|
||||||
|
|
||||||
$self->waitForMonitorPrompt;
|
|
||||||
|
|
||||||
$self->log("QEMU running (pid $pid)");
|
|
||||||
|
|
||||||
$self->{pid} = $pid;
|
|
||||||
$self->{booted} = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Send a command to the monitor and wait for it to finish. TODO: QEMU
|
|
||||||
# also has a JSON-based monitor interface now, but it doesn't support
|
|
||||||
# all commands yet. We should use it once it does.
|
|
||||||
sub sendMonitorCommand {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
$self->log("sending monitor command: $command");
|
|
||||||
syswrite $self->{monitor}, "$command\n";
|
|
||||||
return $self->waitForMonitorPrompt;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until the monitor sends "(qemu) ".
|
|
||||||
sub waitForMonitorPrompt {
|
|
||||||
my ($self) = @_;
|
|
||||||
my $res = "";
|
|
||||||
my $s;
|
|
||||||
while (sysread($self->{monitor}, $s, 1024)) {
|
|
||||||
$res .= $s;
|
|
||||||
last if $res =~ s/\(qemu\) $//;
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Call the given code reference repeatedly, with 1 second intervals,
|
|
||||||
# until it returns 1 or a timeout is reached.
|
|
||||||
sub retry {
|
|
||||||
my ($coderef) = @_;
|
|
||||||
my $n;
|
|
||||||
for ($n = 899; $n >=0; $n--) {
|
|
||||||
return if &$coderef($n);
|
|
||||||
sleep 1;
|
|
||||||
}
|
|
||||||
die "action timed out after $n seconds";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub connect {
|
|
||||||
my ($self) = @_;
|
|
||||||
return if $self->{connected};
|
|
||||||
|
|
||||||
$self->nest("waiting for the VM to finish booting", sub {
|
|
||||||
|
|
||||||
$self->start;
|
|
||||||
|
|
||||||
my $now = clock_gettime(CLOCK_MONOTONIC);
|
|
||||||
local $SIG{ALRM} = sub { die "timed out waiting for the VM to connect\n"; };
|
|
||||||
alarm 600;
|
|
||||||
readline $self->{socket} or die "the VM quit before connecting\n";
|
|
||||||
alarm 0;
|
|
||||||
|
|
||||||
$self->log("connected to guest root shell");
|
|
||||||
# We're interested in tracking how close we are to `alarm`.
|
|
||||||
$self->log(sprintf("(connecting took %.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now));
|
|
||||||
$self->{connected} = 1;
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub waitForShutdown {
|
|
||||||
my ($self) = @_;
|
|
||||||
return unless $self->{booted};
|
|
||||||
|
|
||||||
$self->nest("waiting for the VM to power off", sub {
|
|
||||||
waitpid $self->{pid}, 0;
|
|
||||||
$self->{pid} = 0;
|
|
||||||
$self->{booted} = 0;
|
|
||||||
$self->{connected} = 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub isUp {
|
|
||||||
my ($self) = @_;
|
|
||||||
return $self->{booted} && $self->{connected};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub execute_ {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
|
|
||||||
$self->connect;
|
|
||||||
|
|
||||||
print { $self->{socket} } ("( $command ); echo '|!=EOF' \$?\n");
|
|
||||||
|
|
||||||
my $out = "";
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
my $line = readline($self->{socket});
|
|
||||||
die "connection to VM lost unexpectedly" unless defined $line;
|
|
||||||
#$self->log("got line: $line");
|
|
||||||
if ($line =~ /^(.*)\|\!\=EOF\s+(\d+)$/) {
|
|
||||||
$out .= $1;
|
|
||||||
$self->log("exit status $2");
|
|
||||||
return ($2, $out);
|
|
||||||
}
|
|
||||||
$out .= $line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub execute {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
my @res;
|
|
||||||
$self->nest("running command: $command", sub {
|
|
||||||
@res = $self->execute_($command);
|
|
||||||
});
|
|
||||||
return @res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub succeed {
|
|
||||||
my ($self, @commands) = @_;
|
|
||||||
|
|
||||||
my $res;
|
|
||||||
foreach my $command (@commands) {
|
|
||||||
$self->nest("must succeed: $command", sub {
|
|
||||||
my ($status, $out) = $self->execute_($command);
|
|
||||||
if ($status != 0) {
|
|
||||||
$self->log("output: $out");
|
|
||||||
die "command `$command' did not succeed (exit code $status)\n";
|
|
||||||
}
|
|
||||||
$res .= $out;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub mustSucceed {
|
|
||||||
succeed @_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub waitUntilSucceeds {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
$self->nest("waiting for success: $command", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute($command);
|
|
||||||
return 1 if $status == 0;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub waitUntilFails {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
$self->nest("waiting for failure: $command", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute($command);
|
|
||||||
return 1 if $status != 0;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub fail {
|
|
||||||
my ($self, $command) = @_;
|
|
||||||
$self->nest("must fail: $command", sub {
|
|
||||||
my ($status, $out) = $self->execute_($command);
|
|
||||||
die "command `$command' unexpectedly succeeded"
|
|
||||||
if $status == 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub mustFail {
|
|
||||||
fail @_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub getUnitInfo {
|
|
||||||
my ($self, $unit, $user) = @_;
|
|
||||||
my ($status, $lines) = $self->systemctl("--no-pager show \"$unit\"", $user);
|
|
||||||
return undef if $status != 0;
|
|
||||||
my $info = {};
|
|
||||||
foreach my $line (split '\n', $lines) {
|
|
||||||
$line =~ /^([^=]+)=(.*)$/ or next;
|
|
||||||
$info->{$1} = $2;
|
|
||||||
}
|
|
||||||
return $info;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub systemctl {
|
|
||||||
my ($self, $q, $user) = @_;
|
|
||||||
if ($user) {
|
|
||||||
$q =~ s/'/\\'/g;
|
|
||||||
return $self->execute("su -l $user -c \$'XDG_RUNTIME_DIR=/run/user/`id -u` systemctl --user $q'");
|
|
||||||
}
|
|
||||||
|
|
||||||
return $self->execute("systemctl $q");
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fail if the given systemd unit is not in the "active" state.
|
|
||||||
sub requireActiveUnit {
|
|
||||||
my ($self, $unit) = @_;
|
|
||||||
$self->nest("checking if unit ‘$unit’ has reached state 'active'", sub {
|
|
||||||
my $info = $self->getUnitInfo($unit);
|
|
||||||
my $state = $info->{ActiveState};
|
|
||||||
if ($state ne "active") {
|
|
||||||
die "Expected unit ‘$unit’ to to be in state 'active' but it is in state ‘$state’\n";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
# Wait for a systemd unit to reach the "active" state.
|
|
||||||
sub waitForUnit {
|
|
||||||
my ($self, $unit, $user) = @_;
|
|
||||||
$self->nest("waiting for unit ‘$unit’", sub {
|
|
||||||
retry sub {
|
|
||||||
my $info = $self->getUnitInfo($unit, $user);
|
|
||||||
my $state = $info->{ActiveState};
|
|
||||||
die "unit ‘$unit’ reached state ‘$state’\n" if $state eq "failed";
|
|
||||||
if ($state eq "inactive") {
|
|
||||||
# If there are no pending jobs, then assume this unit
|
|
||||||
# will never reach active state.
|
|
||||||
my ($status, $jobs) = $self->systemctl("list-jobs --full 2>&1", $user);
|
|
||||||
if ($jobs =~ /No jobs/) { # FIXME: fragile
|
|
||||||
# Handle the case where the unit may have started
|
|
||||||
# between the previous getUnitInfo() and
|
|
||||||
# list-jobs.
|
|
||||||
my $info2 = $self->getUnitInfo($unit);
|
|
||||||
die "unit ‘$unit’ is inactive and there are no pending jobs\n"
|
|
||||||
if $info2->{ActiveState} eq $state;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1 if $state eq "active";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub waitForJob {
|
|
||||||
my ($self, $jobName) = @_;
|
|
||||||
return $self->waitForUnit($jobName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until the specified file exists.
|
|
||||||
sub waitForFile {
|
|
||||||
my ($self, $fileName) = @_;
|
|
||||||
$self->nest("waiting for file ‘$fileName’", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute("test -e $fileName");
|
|
||||||
return 1 if $status == 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
sub startJob {
|
|
||||||
my ($self, $jobName, $user) = @_;
|
|
||||||
$self->systemctl("start $jobName", $user);
|
|
||||||
# FIXME: check result
|
|
||||||
}
|
|
||||||
|
|
||||||
sub stopJob {
|
|
||||||
my ($self, $jobName, $user) = @_;
|
|
||||||
$self->systemctl("stop $jobName", $user);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until the machine is listening on the given TCP port.
|
|
||||||
sub waitForOpenPort {
|
|
||||||
my ($self, $port) = @_;
|
|
||||||
$self->nest("waiting for TCP port $port", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute("nc -z localhost $port");
|
|
||||||
return 1 if $status == 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until the machine is not listening on the given TCP port.
|
|
||||||
sub waitForClosedPort {
|
|
||||||
my ($self, $port) = @_;
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute("nc -z localhost $port");
|
|
||||||
return 1 if $status != 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub shutdown {
|
|
||||||
my ($self) = @_;
|
|
||||||
return unless $self->{booted};
|
|
||||||
|
|
||||||
print { $self->{socket} } ("poweroff\n");
|
|
||||||
|
|
||||||
$self->waitForShutdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub crash {
|
|
||||||
my ($self) = @_;
|
|
||||||
return unless $self->{booted};
|
|
||||||
|
|
||||||
$self->log("forced crash");
|
|
||||||
|
|
||||||
$self->sendMonitorCommand("quit");
|
|
||||||
|
|
||||||
$self->waitForShutdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Make the machine unreachable by shutting down eth1 (the multicast
|
|
||||||
# interface used to talk to the other VMs). We keep eth0 up so that
|
|
||||||
# the test driver can continue to talk to the machine.
|
|
||||||
sub block {
|
|
||||||
my ($self) = @_;
|
|
||||||
$self->sendMonitorCommand("set_link virtio-net-pci.1 off");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Make the machine reachable.
|
|
||||||
sub unblock {
|
|
||||||
my ($self) = @_;
|
|
||||||
$self->sendMonitorCommand("set_link virtio-net-pci.1 on");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Take a screenshot of the X server on :0.0.
|
|
||||||
sub screenshot {
|
|
||||||
my ($self, $filename) = @_;
|
|
||||||
my $dir = $ENV{'out'} || Cwd::abs_path(".");
|
|
||||||
$filename = "$dir/${filename}.png" if $filename =~ /^\w+$/;
|
|
||||||
my $tmp = "${filename}.ppm";
|
|
||||||
my $name = basename($filename);
|
|
||||||
$self->nest("making screenshot ‘$name’", sub {
|
|
||||||
$self->sendMonitorCommand("screendump $tmp");
|
|
||||||
system("pnmtopng $tmp > ${filename}") == 0
|
|
||||||
or die "cannot convert screenshot";
|
|
||||||
unlink $tmp;
|
|
||||||
}, { image => $name } );
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get the text of TTY<n>
|
|
||||||
sub getTTYText {
|
|
||||||
my ($self, $tty) = @_;
|
|
||||||
|
|
||||||
my ($status, $out) = $self->execute("fold -w\$(stty -F /dev/tty${tty} size | awk '{print \$2}') /dev/vcs${tty}");
|
|
||||||
return $out;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Wait until TTY<n>'s text matches a particular regular expression
|
|
||||||
sub waitUntilTTYMatches {
|
|
||||||
my ($self, $tty, $regexp) = @_;
|
|
||||||
|
|
||||||
$self->nest("waiting for $regexp to appear on tty $tty", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($retries_remaining) = @_;
|
|
||||||
if ($retries_remaining == 0) {
|
|
||||||
$self->log("Last chance to match /$regexp/ on TTY$tty, which currently contains:");
|
|
||||||
$self->log($self->getTTYText($tty));
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1 if $self->getTTYText($tty) =~ /$regexp/;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
# Debugging: Dump the contents of the TTY<n>
|
|
||||||
sub dumpTTYContents {
|
|
||||||
my ($self, $tty) = @_;
|
|
||||||
|
|
||||||
$self->execute("fold -w 80 /dev/vcs${tty} | systemd-cat");
|
|
||||||
}
|
|
||||||
|
|
||||||
# Take a screenshot and return the result as text using optical character
|
|
||||||
# recognition.
|
|
||||||
sub getScreenText {
|
|
||||||
my ($self) = @_;
|
|
||||||
|
|
||||||
system("command -v tesseract &> /dev/null") == 0
|
|
||||||
or die "getScreenText used but enableOCR is false";
|
|
||||||
|
|
||||||
my $text;
|
|
||||||
$self->nest("performing optical character recognition", sub {
|
|
||||||
my $tmpbase = Cwd::abs_path(".")."/ocr";
|
|
||||||
my $tmpin = $tmpbase."in.ppm";
|
|
||||||
|
|
||||||
$self->sendMonitorCommand("screendump $tmpin");
|
|
||||||
|
|
||||||
my $magickArgs = "-filter Catrom -density 72 -resample 300 "
|
|
||||||
. "-contrast -normalize -despeckle -type grayscale "
|
|
||||||
. "-sharpen 1 -posterize 3 -negate -gamma 100 "
|
|
||||||
. "-blur 1x65535";
|
|
||||||
my $tessArgs = "-c debug_file=/dev/null --psm 11 --oem 2";
|
|
||||||
|
|
||||||
$text = `convert $magickArgs $tmpin tiff:- | tesseract - - $tessArgs`;
|
|
||||||
my $status = $? >> 8;
|
|
||||||
unlink $tmpin;
|
|
||||||
|
|
||||||
die "OCR failed with exit code $status" if $status != 0;
|
|
||||||
});
|
|
||||||
return $text;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until a specific regexp matches the textual contents of the screen.
|
|
||||||
sub waitForText {
|
|
||||||
my ($self, $regexp) = @_;
|
|
||||||
$self->nest("waiting for $regexp to appear on the screen", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($retries_remaining) = @_;
|
|
||||||
if ($retries_remaining == 0) {
|
|
||||||
$self->log("Last chance to match /$regexp/ on the screen, which currently contains:");
|
|
||||||
$self->log($self->getScreenText);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1 if $self->getScreenText =~ /$regexp/;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until it is possible to connect to the X server. Note that
|
|
||||||
# testing the existence of /tmp/.X11-unix/X0 is insufficient.
|
|
||||||
sub waitForX {
|
|
||||||
my ($self, $regexp) = @_;
|
|
||||||
$self->nest("waiting for the X11 server", sub {
|
|
||||||
retry sub {
|
|
||||||
my ($status, $out) = $self->execute("journalctl -b SYSLOG_IDENTIFIER=systemd | grep 'Reached target Current graphical'");
|
|
||||||
return 0 if $status != 0;
|
|
||||||
($status, $out) = $self->execute("[ -e /tmp/.X11-unix/X0 ]");
|
|
||||||
return 1 if $status == 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub getWindowNames {
|
|
||||||
my ($self) = @_;
|
|
||||||
my $res = $self->mustSucceed(
|
|
||||||
q{xwininfo -root -tree | sed 's/.*0x[0-9a-f]* \"\([^\"]*\)\".*/\1/; t; d'});
|
|
||||||
return split /\n/, $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub waitForWindow {
|
|
||||||
my ($self, $regexp) = @_;
|
|
||||||
$self->nest("waiting for a window to appear", sub {
|
|
||||||
retry sub {
|
|
||||||
my @names = $self->getWindowNames;
|
|
||||||
|
|
||||||
my ($retries_remaining) = @_;
|
|
||||||
if ($retries_remaining == 0) {
|
|
||||||
$self->log("Last chance to match /$regexp/ on the the window list, which currently contains:");
|
|
||||||
$self->log(join(", ", @names));
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach my $n (@names) {
|
|
||||||
return 1 if $n =~ /$regexp/;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub copyFileFromHost {
|
|
||||||
my ($self, $from, $to) = @_;
|
|
||||||
my $s = `cat $from` or die;
|
|
||||||
$s =~ s/'/'\\''/g;
|
|
||||||
$self->mustSucceed("echo '$s' > $to");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my %charToKey = (
|
|
||||||
'A' => "shift-a", 'N' => "shift-n", '-' => "0x0C", '_' => "shift-0x0C", '!' => "shift-0x02",
|
|
||||||
'B' => "shift-b", 'O' => "shift-o", '=' => "0x0D", '+' => "shift-0x0D", '@' => "shift-0x03",
|
|
||||||
'C' => "shift-c", 'P' => "shift-p", '[' => "0x1A", '{' => "shift-0x1A", '#' => "shift-0x04",
|
|
||||||
'D' => "shift-d", 'Q' => "shift-q", ']' => "0x1B", '}' => "shift-0x1B", '$' => "shift-0x05",
|
|
||||||
'E' => "shift-e", 'R' => "shift-r", ';' => "0x27", ':' => "shift-0x27", '%' => "shift-0x06",
|
|
||||||
'F' => "shift-f", 'S' => "shift-s", '\'' => "0x28", '"' => "shift-0x28", '^' => "shift-0x07",
|
|
||||||
'G' => "shift-g", 'T' => "shift-t", '`' => "0x29", '~' => "shift-0x29", '&' => "shift-0x08",
|
|
||||||
'H' => "shift-h", 'U' => "shift-u", '\\' => "0x2B", '|' => "shift-0x2B", '*' => "shift-0x09",
|
|
||||||
'I' => "shift-i", 'V' => "shift-v", ',' => "0x33", '<' => "shift-0x33", '(' => "shift-0x0A",
|
|
||||||
'J' => "shift-j", 'W' => "shift-w", '.' => "0x34", '>' => "shift-0x34", ')' => "shift-0x0B",
|
|
||||||
'K' => "shift-k", 'X' => "shift-x", '/' => "0x35", '?' => "shift-0x35",
|
|
||||||
'L' => "shift-l", 'Y' => "shift-y", ' ' => "spc",
|
|
||||||
'M' => "shift-m", 'Z' => "shift-z", "\n" => "ret",
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
sub sendKeys {
|
|
||||||
my ($self, @keys) = @_;
|
|
||||||
foreach my $key (@keys) {
|
|
||||||
$key = $charToKey{$key} if exists $charToKey{$key};
|
|
||||||
$self->sendMonitorCommand("sendkey $key");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub sendChars {
|
|
||||||
my ($self, $chars) = @_;
|
|
||||||
$self->nest("sending keys ‘$chars’", sub {
|
|
||||||
$self->sendKeys(split //, $chars);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Sleep N seconds (in virtual guest time, not real time).
|
|
||||||
sub sleep {
|
|
||||||
my ($self, $time) = @_;
|
|
||||||
$self->succeed("sleep $time");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Forward a TCP port on the host to a TCP port on the guest. Useful
|
|
||||||
# during interactive testing.
|
|
||||||
sub forwardPort {
|
|
||||||
my ($self, $hostPort, $guestPort) = @_;
|
|
||||||
$hostPort = 8080 unless defined $hostPort;
|
|
||||||
$guestPort = 80 unless defined $guestPort;
|
|
||||||
$self->sendMonitorCommand("hostfwd_add tcp::$hostPort-:$guestPort");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
|
@ -1,191 +0,0 @@
|
|||||||
#! /somewhere/perl -w
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Machine;
|
|
||||||
use Term::ReadLine;
|
|
||||||
use IO::File;
|
|
||||||
use IO::Pty;
|
|
||||||
use Logger;
|
|
||||||
use Cwd;
|
|
||||||
use POSIX qw(_exit dup2);
|
|
||||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
|
||||||
|
|
||||||
$SIG{PIPE} = 'IGNORE'; # because Unix domain sockets may die unexpectedly
|
|
||||||
|
|
||||||
STDERR->autoflush(1);
|
|
||||||
|
|
||||||
my $log = new Logger;
|
|
||||||
|
|
||||||
|
|
||||||
# Start vde_switch for each network required by the test.
|
|
||||||
my %vlans;
|
|
||||||
foreach my $vlan (split / /, $ENV{VLANS} || "") {
|
|
||||||
next if defined $vlans{$vlan};
|
|
||||||
# Start vde_switch as a child process. We don't run it in daemon
|
|
||||||
# mode because we want the child process to be cleaned up when we
|
|
||||||
# die. Since we have to make sure that the control socket is
|
|
||||||
# ready, we send a dummy command to vde_switch (via stdin) and
|
|
||||||
# wait for a reply. Note that vde_switch requires stdin to be a
|
|
||||||
# TTY, so we create one.
|
|
||||||
$log->log("starting VDE switch for network $vlan");
|
|
||||||
my $socket = Cwd::abs_path "./vde$vlan.ctl";
|
|
||||||
my $pty = new IO::Pty;
|
|
||||||
my ($stdoutR, $stdoutW); pipe $stdoutR, $stdoutW;
|
|
||||||
my $pid = fork(); die "cannot fork" unless defined $pid;
|
|
||||||
if ($pid == 0) {
|
|
||||||
dup2(fileno($pty->slave), 0);
|
|
||||||
dup2(fileno($stdoutW), 1);
|
|
||||||
exec "vde_switch -s $socket --dirmode 0700" or _exit(1);
|
|
||||||
}
|
|
||||||
close $stdoutW;
|
|
||||||
print $pty "version\n";
|
|
||||||
readline $stdoutR or die "cannot start vde_switch";
|
|
||||||
$ENV{"QEMU_VDE_SOCKET_$vlan"} = $socket;
|
|
||||||
$vlans{$vlan} = $pty;
|
|
||||||
die unless -e "$socket/ctl";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my %vms;
|
|
||||||
my $context = "";
|
|
||||||
|
|
||||||
sub createMachine {
|
|
||||||
my ($args) = @_;
|
|
||||||
my $vm = Machine->new({%{$args}, log => $log, redirectSerial => ($ENV{USE_SERIAL} // "0") ne "1"});
|
|
||||||
$vms{$vm->name} = $vm;
|
|
||||||
$context .= "my \$" . $vm->name . " = \$vms{'" . $vm->name . "'}; ";
|
|
||||||
return $vm;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach my $vmScript (@ARGV) {
|
|
||||||
my $vm = createMachine({startCommand => $vmScript});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub startAll {
|
|
||||||
$log->nest("starting all VMs", sub {
|
|
||||||
$_->start foreach values %vms;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Wait until all VMs have terminated.
|
|
||||||
sub joinAll {
|
|
||||||
$log->nest("waiting for all VMs to finish", sub {
|
|
||||||
$_->waitForShutdown foreach values %vms;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# In interactive tests, this allows the non-interactive test script to
|
|
||||||
# be executed conveniently.
|
|
||||||
sub testScript {
|
|
||||||
eval "$context $ENV{testScript};\n";
|
|
||||||
warn $@ if $@;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my $nrTests = 0;
|
|
||||||
my $nrSucceeded = 0;
|
|
||||||
|
|
||||||
|
|
||||||
sub subtest {
|
|
||||||
my ($name, $coderef) = @_;
|
|
||||||
$log->nest("subtest: $name", sub {
|
|
||||||
$nrTests++;
|
|
||||||
eval { &$coderef };
|
|
||||||
if ($@) {
|
|
||||||
$log->log("error: $@", { error => 1 });
|
|
||||||
} else {
|
|
||||||
$nrSucceeded++;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub runTests {
|
|
||||||
if (defined $ENV{tests}) {
|
|
||||||
$log->nest("running the VM test script", sub {
|
|
||||||
eval "$context $ENV{tests}";
|
|
||||||
if ($@) {
|
|
||||||
$log->log("error: $@", { error => 1 });
|
|
||||||
die $@;
|
|
||||||
}
|
|
||||||
}, { expanded => 1 });
|
|
||||||
} else {
|
|
||||||
my $term = Term::ReadLine->new('nixos-vm-test');
|
|
||||||
$term->ReadHistory;
|
|
||||||
while (defined ($_ = $term->readline("> "))) {
|
|
||||||
eval "$context $_\n";
|
|
||||||
warn $@ if $@;
|
|
||||||
}
|
|
||||||
$term->WriteHistory;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Copy the kernel coverage data for each machine, if the kernel
|
|
||||||
# has been compiled with coverage instrumentation.
|
|
||||||
$log->nest("collecting coverage data", sub {
|
|
||||||
foreach my $vm (values %vms) {
|
|
||||||
my $gcovDir = "/sys/kernel/debug/gcov";
|
|
||||||
|
|
||||||
next unless $vm->isUp();
|
|
||||||
|
|
||||||
my ($status, $out) = $vm->execute("test -e $gcovDir");
|
|
||||||
next if $status != 0;
|
|
||||||
|
|
||||||
# Figure out where to put the *.gcda files so that the
|
|
||||||
# report generator can find the corresponding kernel
|
|
||||||
# sources.
|
|
||||||
my $kernelDir = $vm->mustSucceed("echo \$(dirname \$(readlink -f /run/current-system/kernel))/.build/linux-*");
|
|
||||||
chomp $kernelDir;
|
|
||||||
my $coverageDir = "/tmp/xchg/coverage-data/$kernelDir";
|
|
||||||
|
|
||||||
# Copy all the *.gcda files.
|
|
||||||
$vm->execute("for d in $gcovDir/nix/store/*/.build/linux-*; do for i in \$(cd \$d && find -name '*.gcda'); do echo \$i; mkdir -p $coverageDir/\$(dirname \$i); cp -v \$d/\$i $coverageDir/\$i; done; done");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$log->nest("syncing", sub {
|
|
||||||
foreach my $vm (values %vms) {
|
|
||||||
next unless $vm->isUp();
|
|
||||||
$vm->execute("sync");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($nrTests != 0) {
|
|
||||||
$log->log("$nrSucceeded out of $nrTests tests succeeded",
|
|
||||||
($nrSucceeded < $nrTests ? { error => 1 } : { }));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Create an empty raw virtual disk with the given name and size (in
|
|
||||||
# MiB).
|
|
||||||
sub createDisk {
|
|
||||||
my ($name, $size) = @_;
|
|
||||||
system("qemu-img create -f raw $name ${size}M") == 0
|
|
||||||
or die "cannot create image of size $size";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
END {
|
|
||||||
$log->nest("cleaning up", sub {
|
|
||||||
foreach my $vm (values %vms) {
|
|
||||||
if ($vm->{pid}) {
|
|
||||||
$log->log("killing " . $vm->{name} . " (pid " . $vm->{pid} . ")");
|
|
||||||
kill 9, $vm->{pid};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$log->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
my $now1 = clock_gettime(CLOCK_MONOTONIC);
|
|
||||||
|
|
||||||
runTests;
|
|
||||||
|
|
||||||
my $now2 = clock_gettime(CLOCK_MONOTONIC);
|
|
||||||
|
|
||||||
printf STDERR "test script finished in %.2fs\n", $now2 - $now1;
|
|
||||||
|
|
||||||
exit ($nrSucceeded < $nrTests ? 1 : 0);
|
|
@ -1,258 +0,0 @@
|
|||||||
{ system
|
|
||||||
, pkgs ? import ../.. { inherit system config; }
|
|
||||||
# Use a minimal kernel?
|
|
||||||
, minimal ? false
|
|
||||||
# Ignored
|
|
||||||
, config ? {}
|
|
||||||
# Modules to add to each VM
|
|
||||||
, extraConfigurations ? [] }:
|
|
||||||
|
|
||||||
with import ./build-vms.nix { inherit system pkgs minimal extraConfigurations; };
|
|
||||||
with pkgs;
|
|
||||||
|
|
||||||
rec {
|
|
||||||
|
|
||||||
inherit pkgs;
|
|
||||||
|
|
||||||
|
|
||||||
testDriver = lib.warn ''
|
|
||||||
Perl VM tests are deprecated and will be removed for 20.09.
|
|
||||||
Please update your tests to use the python test driver.
|
|
||||||
See https://github.com/NixOS/nixpkgs/pull/71684 for details.
|
|
||||||
'' stdenv.mkDerivation {
|
|
||||||
name = "nixos-test-driver";
|
|
||||||
|
|
||||||
buildInputs = [ makeWrapper perl ];
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
preferLocalBuild = true;
|
|
||||||
|
|
||||||
installPhase =
|
|
||||||
''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp ${./test-driver/test-driver.pl} $out/bin/nixos-test-driver
|
|
||||||
chmod u+x $out/bin/nixos-test-driver
|
|
||||||
|
|
||||||
libDir=$out/${perl.libPrefix}
|
|
||||||
mkdir -p $libDir
|
|
||||||
cp ${./test-driver/Machine.pm} $libDir/Machine.pm
|
|
||||||
cp ${./test-driver/Logger.pm} $libDir/Logger.pm
|
|
||||||
|
|
||||||
wrapProgram $out/bin/nixos-test-driver \
|
|
||||||
--prefix PATH : "${lib.makeBinPath [ qemu_test vde2 netpbm coreutils ]}" \
|
|
||||||
--prefix PERL5LIB : "${with perlPackages; makePerlPath [ TermReadLineGnu XMLWriter IOTty FileSlurp ]}:$out/${perl.libPrefix}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Run an automated test suite in the given virtual network.
|
|
||||||
# `driver' is the script that runs the network.
|
|
||||||
runTests = driver:
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "vm-test-run-${driver.testName}";
|
|
||||||
|
|
||||||
requiredSystemFeatures = [ "kvm" "nixos-test" ];
|
|
||||||
|
|
||||||
buildCommand =
|
|
||||||
''
|
|
||||||
mkdir -p $out
|
|
||||||
|
|
||||||
LOGFILE=/dev/null tests='eval $ENV{testScript}; die $@ if $@;' ${driver}/bin/nixos-test-driver
|
|
||||||
|
|
||||||
for i in */xchg/coverage-data; do
|
|
||||||
mkdir -p $out/coverage-data
|
|
||||||
mv $i $out/coverage-data/$(dirname $(dirname $i))
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
makeTest =
|
|
||||||
{ testScript
|
|
||||||
, makeCoverageReport ? false
|
|
||||||
, enableOCR ? false
|
|
||||||
, name ? "unnamed"
|
|
||||||
, ...
|
|
||||||
} @ t:
|
|
||||||
|
|
||||||
let
|
|
||||||
# A standard store path to the vm monitor is built like this:
|
|
||||||
# /tmp/nix-build-vm-test-run-$name.drv-0/vm-state-machine/monitor
|
|
||||||
# The max filename length of a unix domain socket is 108 bytes.
|
|
||||||
# This means $name can at most be 50 bytes long.
|
|
||||||
maxTestNameLen = 50;
|
|
||||||
testNameLen = builtins.stringLength name;
|
|
||||||
|
|
||||||
testDriverName = with builtins;
|
|
||||||
if testNameLen > maxTestNameLen then
|
|
||||||
abort ("The name of the test '${name}' must not be longer than ${toString maxTestNameLen} " +
|
|
||||||
"it's currently ${toString testNameLen} characters long.")
|
|
||||||
else
|
|
||||||
"nixos-test-driver-${name}";
|
|
||||||
|
|
||||||
nodes = buildVirtualNetwork (
|
|
||||||
t.nodes or (if t ? machine then { machine = t.machine; } else { }));
|
|
||||||
|
|
||||||
testScript' =
|
|
||||||
# Call the test script with the computed nodes.
|
|
||||||
if lib.isFunction testScript
|
|
||||||
then testScript { inherit nodes; }
|
|
||||||
else testScript;
|
|
||||||
|
|
||||||
vlans = map (m: m.config.virtualisation.vlans) (lib.attrValues nodes);
|
|
||||||
|
|
||||||
vms = map (m: m.config.system.build.vm) (lib.attrValues nodes);
|
|
||||||
|
|
||||||
ocrProg = tesseract4.override { enableLanguages = [ "eng" ]; };
|
|
||||||
|
|
||||||
imagemagick_tiff = imagemagick_light.override { inherit libtiff; };
|
|
||||||
|
|
||||||
# Generate onvenience wrappers for running the test driver
|
|
||||||
# interactively with the specified network, and for starting the
|
|
||||||
# VMs from the command line.
|
|
||||||
driver = runCommand testDriverName
|
|
||||||
{ buildInputs = [ makeWrapper];
|
|
||||||
testScript = testScript';
|
|
||||||
preferLocalBuild = true;
|
|
||||||
testName = name;
|
|
||||||
}
|
|
||||||
''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
echo "$testScript" > $out/test-script
|
|
||||||
ln -s ${testDriver}/bin/nixos-test-driver $out/bin/
|
|
||||||
vms=($(for i in ${toString vms}; do echo $i/bin/run-*-vm; done))
|
|
||||||
wrapProgram $out/bin/nixos-test-driver \
|
|
||||||
--add-flags "''${vms[*]}" \
|
|
||||||
${lib.optionalString enableOCR
|
|
||||||
"--prefix PATH : '${ocrProg}/bin:${imagemagick_tiff}/bin'"} \
|
|
||||||
--run "export testScript=\"\$(cat $out/test-script)\"" \
|
|
||||||
--set VLANS '${toString vlans}'
|
|
||||||
ln -s ${testDriver}/bin/nixos-test-driver $out/bin/nixos-run-vms
|
|
||||||
wrapProgram $out/bin/nixos-run-vms \
|
|
||||||
--add-flags "''${vms[*]}" \
|
|
||||||
${lib.optionalString enableOCR "--prefix PATH : '${ocrProg}/bin'"} \
|
|
||||||
--set tests 'startAll; joinAll;' \
|
|
||||||
--set VLANS '${toString vlans}' \
|
|
||||||
${lib.optionalString (builtins.length vms == 1) "--set USE_SERIAL 1"}
|
|
||||||
''; # "
|
|
||||||
|
|
||||||
passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
|
|
||||||
meta = (drv.meta or {}) // t.meta;
|
|
||||||
};
|
|
||||||
|
|
||||||
test = passMeta (runTests driver);
|
|
||||||
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
|
||||||
|
|
||||||
nodeNames = builtins.attrNames nodes;
|
|
||||||
invalidNodeNames = lib.filter
|
|
||||||
(node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames;
|
|
||||||
|
|
||||||
in
|
|
||||||
if lib.length invalidNodeNames > 0 then
|
|
||||||
throw ''
|
|
||||||
Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
|
|
||||||
All machines are referenced as perl variables in the testing framework which will break the
|
|
||||||
script when special characters are used.
|
|
||||||
|
|
||||||
Please stick to alphanumeric chars and underscores as separation.
|
|
||||||
''
|
|
||||||
else
|
|
||||||
(if makeCoverageReport then report else test) // {
|
|
||||||
inherit nodes driver test;
|
|
||||||
};
|
|
||||||
|
|
||||||
runInMachine =
|
|
||||||
{ drv
|
|
||||||
, machine
|
|
||||||
, preBuild ? ""
|
|
||||||
, postBuild ? ""
|
|
||||||
, ... # ???
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
vm = buildVM { }
|
|
||||||
[ machine
|
|
||||||
{ key = "run-in-machine";
|
|
||||||
networking.hostName = "client";
|
|
||||||
nix.readOnlyStore = false;
|
|
||||||
virtualisation.writableStore = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
buildrunner = writeText "vm-build" ''
|
|
||||||
source $1
|
|
||||||
|
|
||||||
${coreutils}/bin/mkdir -p $TMPDIR
|
|
||||||
cd $TMPDIR
|
|
||||||
|
|
||||||
exec $origBuilder $origArgs
|
|
||||||
'';
|
|
||||||
|
|
||||||
testScript = ''
|
|
||||||
startAll;
|
|
||||||
$client->waitForUnit("multi-user.target");
|
|
||||||
${preBuild}
|
|
||||||
$client->succeed("env -i ${bash}/bin/bash ${buildrunner} /tmp/xchg/saved-env >&2");
|
|
||||||
${postBuild}
|
|
||||||
$client->succeed("sync"); # flush all data before pulling the plug
|
|
||||||
'';
|
|
||||||
|
|
||||||
vmRunCommand = writeText "vm-run" ''
|
|
||||||
xchg=vm-state-client/xchg
|
|
||||||
${coreutils}/bin/mkdir $out
|
|
||||||
${coreutils}/bin/mkdir -p $xchg
|
|
||||||
|
|
||||||
for i in $passAsFile; do
|
|
||||||
i2=''${i}Path
|
|
||||||
_basename=$(${coreutils}/bin/basename ''${!i2})
|
|
||||||
${coreutils}/bin/cp ''${!i2} $xchg/$_basename
|
|
||||||
eval $i2=/tmp/xchg/$_basename
|
|
||||||
${coreutils}/bin/ls -la $xchg
|
|
||||||
done
|
|
||||||
|
|
||||||
unset i i2 _basename
|
|
||||||
export | ${gnugrep}/bin/grep -v '^xchg=' > $xchg/saved-env
|
|
||||||
unset xchg
|
|
||||||
|
|
||||||
export tests='${testScript}'
|
|
||||||
${testDriver}/bin/nixos-test-driver ${vm.config.system.build.vm}/bin/run-*-vm
|
|
||||||
''; # */
|
|
||||||
|
|
||||||
in
|
|
||||||
lib.overrideDerivation drv (attrs: {
|
|
||||||
requiredSystemFeatures = [ "kvm" ];
|
|
||||||
builder = "${bash}/bin/sh";
|
|
||||||
args = ["-e" vmRunCommand];
|
|
||||||
origArgs = attrs.args;
|
|
||||||
origBuilder = attrs.builder;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
runInMachineWithX = { require ? [], ... } @ args:
|
|
||||||
let
|
|
||||||
client =
|
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
inherit require;
|
|
||||||
imports = [
|
|
||||||
../tests/common/auto.nix
|
|
||||||
];
|
|
||||||
virtualisation.memorySize = 1024;
|
|
||||||
services.xserver.enable = true;
|
|
||||||
test-support.displayManager.auto.enable = true;
|
|
||||||
services.xserver.displayManager.defaultSession = "none+icewm";
|
|
||||||
services.xserver.windowManager.icewm.enable = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
runInMachine ({
|
|
||||||
machine = client;
|
|
||||||
preBuild =
|
|
||||||
''
|
|
||||||
$client->waitForX;
|
|
||||||
'';
|
|
||||||
} // args);
|
|
||||||
|
|
||||||
|
|
||||||
simpleTest = as: (makeTest as).test;
|
|
||||||
|
|
||||||
}
|
|
@ -262,6 +262,7 @@
|
|||||||
./services/continuous-integration/buildbot/worker.nix
|
./services/continuous-integration/buildbot/worker.nix
|
||||||
./services/continuous-integration/buildkite-agents.nix
|
./services/continuous-integration/buildkite-agents.nix
|
||||||
./services/continuous-integration/hail.nix
|
./services/continuous-integration/hail.nix
|
||||||
|
./services/continuous-integration/hercules-ci-agent/default.nix
|
||||||
./services/continuous-integration/hydra/default.nix
|
./services/continuous-integration/hydra/default.nix
|
||||||
./services/continuous-integration/gitlab-runner.nix
|
./services/continuous-integration/gitlab-runner.nix
|
||||||
./services/continuous-integration/gocd-agent/default.nix
|
./services/continuous-integration/gocd-agent/default.nix
|
||||||
|
@ -23,11 +23,17 @@ in
|
|||||||
default = [];
|
default = [];
|
||||||
description = "List of packages to be added to apparmor's include path";
|
description = "List of packages to be added to apparmor's include path";
|
||||||
};
|
};
|
||||||
|
parserConfig = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = "AppArmor parser configuration file content";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [ pkgs.apparmor-utils ];
|
environment.systemPackages = [ pkgs.apparmor-utils ];
|
||||||
|
environment.etc."apparmor/parser.conf".text = cfg.parserConfig;
|
||||||
|
|
||||||
boot.kernelParams = [ "apparmor=1" "security=apparmor" ];
|
boot.kernelParams = [ "apparmor=1" "security=apparmor" ];
|
||||||
|
|
||||||
|
@ -0,0 +1,213 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This file is for options that NixOS and nix-darwin have in common.
|
||||||
|
|
||||||
|
Platform-specific code is in the respective default.nix files.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
{ config, lib, options, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption mkIf types filterAttrs literalExample mkRenamedOptionModule;
|
||||||
|
|
||||||
|
cfg =
|
||||||
|
config.services.hercules-ci-agent;
|
||||||
|
|
||||||
|
format = pkgs.formats.toml {};
|
||||||
|
|
||||||
|
settingsModule = { config, ... }: {
|
||||||
|
freeformType = format.type;
|
||||||
|
options = {
|
||||||
|
baseDirectory = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/lib/hercules-ci-agent";
|
||||||
|
description = ''
|
||||||
|
State directory (secrets, work directory, etc) for agent
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
concurrentTasks = mkOption {
|
||||||
|
description = ''
|
||||||
|
Number of tasks to perform simultaneously, such as evaluations, derivations.
|
||||||
|
|
||||||
|
You must have a total capacity across agents of at least 2 concurrent tasks on <literal>x86_64-linux</literal>
|
||||||
|
to allow for import from derivation.
|
||||||
|
'';
|
||||||
|
type = types.int;
|
||||||
|
default = 4;
|
||||||
|
};
|
||||||
|
workDirectory = mkOption {
|
||||||
|
description = ''
|
||||||
|
The directory in which temporary subdirectories are created for task state. This includes sources for Nix evaluation.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
default = config.baseDirectory + "/work";
|
||||||
|
defaultText = literalExample ''baseDirectory + "/work"'';
|
||||||
|
};
|
||||||
|
staticSecretsDirectory = mkOption {
|
||||||
|
description = ''
|
||||||
|
This is the default directory to look for statically configured secrets like <literal>cluster-join-token.key</literal>.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
default = config.baseDirectory + "/secrets";
|
||||||
|
defaultText = literalExample ''baseDirectory + "/secrets"'';
|
||||||
|
};
|
||||||
|
clusterJoinTokenPath = mkOption {
|
||||||
|
description = ''
|
||||||
|
Location of the cluster-join-token.key file.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
default = config.staticSecretsDirectory + "/cluster-join-token.key";
|
||||||
|
defaultText = literalExample ''staticSecretsDirectory + "/cluster-join-token.key"'';
|
||||||
|
# internal: It's a bit too detailed to show by default in the docs,
|
||||||
|
# but useful to define explicitly to allow reuse by other modules.
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
binaryCachesPath = mkOption {
|
||||||
|
description = ''
|
||||||
|
Location of the binary-caches.json file.
|
||||||
|
'';
|
||||||
|
type = types.path;
|
||||||
|
default = config.staticSecretsDirectory + "/binary-caches.json";
|
||||||
|
defaultText = literalExample ''staticSecretsDirectory + "/binary-caches.json"'';
|
||||||
|
# internal: It's a bit too detailed to show by default in the docs,
|
||||||
|
# but useful to define explicitly to allow reuse by other modules.
|
||||||
|
internal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
checkNix =
|
||||||
|
if !cfg.checkNix
|
||||||
|
then ""
|
||||||
|
else if lib.versionAtLeast config.nix.package.version "2.4.0"
|
||||||
|
then ""
|
||||||
|
else pkgs.stdenv.mkDerivation {
|
||||||
|
name = "hercules-ci-check-system-nix-src";
|
||||||
|
inherit (config.nix.package) src patches;
|
||||||
|
configurePhase = ":";
|
||||||
|
buildPhase = ''
|
||||||
|
echo "Checking in-memory pathInfoCache expiry"
|
||||||
|
if ! grep 'struct PathInfoCacheValue' src/libstore/store-api.hh >/dev/null; then
|
||||||
|
cat 1>&2 <<EOF
|
||||||
|
|
||||||
|
You are deploying Hercules CI Agent on a system with an incompatible
|
||||||
|
nix-daemon. Please
|
||||||
|
- either upgrade Nix to version 2.4.0 (when released),
|
||||||
|
- or set option services.hercules-ci-agent.patchNix = true;
|
||||||
|
- or set option nix.package to a build of Nix 2.3 with this patch applied:
|
||||||
|
https://github.com/NixOS/nix/pull/3405
|
||||||
|
|
||||||
|
The patch is required for Nix-daemon clients that expect a change in binary
|
||||||
|
cache contents while running, like the agent's evaluator. Without it, import
|
||||||
|
from derivation will fail if your cluster has more than one machine.
|
||||||
|
We are conservative with changes to the overall system, which is why we
|
||||||
|
keep changes to a minimum and why we ask for confirmation in the form of
|
||||||
|
services.hercules-ci-agent.patchNix = true before applying.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
installPhase = "touch $out";
|
||||||
|
};
|
||||||
|
|
||||||
|
patchedNix = lib.mkIf (!lib.versionAtLeast pkgs.nix.version "2.4.0") (
|
||||||
|
if lib.versionAtLeast pkgs.nix.version "2.4pre"
|
||||||
|
then lib.warn "Hercules CI Agent module will not patch 2.4 pre-release. Make sure it includes (equivalently) PR #3043, commit d048577909 or is no older than 2020-03-13." pkgs.nix
|
||||||
|
else pkgs.nix.overrideAttrs (
|
||||||
|
o: {
|
||||||
|
patches = (o.patches or []) ++ [ backportNix3398 ];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
backportNix3398 = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/hercules-ci/hercules-ci-agent/hercules-ci-agent-0.7.3/for-upstream/issue-3398-path-info-cache-ttls-backport-2.3.patch";
|
||||||
|
sha256 = "0jfckqjir9il2il7904yc1qyadw366y7xqzg81sp9sl3f1pw70ib";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(mkRenamedOptionModule ["services" "hercules-ci-agent" "extraOptions"] ["services" "hercules-ci-agent" "settings"])
|
||||||
|
(mkRenamedOptionModule ["services" "hercules-ci-agent" "baseDirectory"] ["services" "hercules-ci-agent" "settings" "baseDirectory"])
|
||||||
|
(mkRenamedOptionModule ["services" "hercules-ci-agent" "concurrentTasks"] ["services" "hercules-ci-agent" "settings" "concurrentTasks"])
|
||||||
|
];
|
||||||
|
|
||||||
|
options.services.hercules-ci-agent = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable to run Hercules CI Agent as a system service.
|
||||||
|
|
||||||
|
<link xlink:href="https://hercules-ci.com">Hercules CI</link> is a
|
||||||
|
continuous integation service that is centered around Nix.
|
||||||
|
|
||||||
|
Support is available at <link xlink:href="mailto:help@hercules-ci.com">help@hercules-ci.com</link>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
patchNix = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Fix Nix 2.3 cache path metadata caching behavior. Has the effect of <literal>nix.package = patch pkgs.nix;</literal>
|
||||||
|
|
||||||
|
This option will be removed when Hercules CI Agent moves to Nix 2.4 (upcoming Nix release).
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
checkNix = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to make sure that the system's Nix (nix-daemon) is compatible.
|
||||||
|
|
||||||
|
If you set this to false, please keep up with the change log.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
package = mkOption {
|
||||||
|
description = ''
|
||||||
|
Package containing the bin/hercules-ci-agent executable.
|
||||||
|
'';
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.hercules-ci-agent;
|
||||||
|
defaultText = literalExample "pkgs.hercules-ci-agent";
|
||||||
|
};
|
||||||
|
settings = mkOption {
|
||||||
|
description = ''
|
||||||
|
These settings are written to the <literal>agent.toml</literal> file.
|
||||||
|
|
||||||
|
Not all settings are listed as options, can be set nonetheless.
|
||||||
|
|
||||||
|
For the exhaustive list of settings, see <link xlink:href="https://docs.hercules-ci.com/hercules-ci/reference/agent-config/"/>.
|
||||||
|
'';
|
||||||
|
type = types.submoduleWith { modules = [ settingsModule ]; };
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Internal and/or computed values.
|
||||||
|
|
||||||
|
These are written as options instead of let binding to allow sharing with
|
||||||
|
default.nix on both NixOS and nix-darwin.
|
||||||
|
*/
|
||||||
|
tomlFile = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
internal = true;
|
||||||
|
defaultText = "generated hercules-ci-agent.toml";
|
||||||
|
description = ''
|
||||||
|
The fully assembled config file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
nix.extraOptions = lib.addContextFrom checkNix ''
|
||||||
|
# A store path that was missing at first may well have finished building,
|
||||||
|
# even shortly after the previous lookup. This *also* applies to the daemon.
|
||||||
|
narinfo-cache-negative-ttl = 0
|
||||||
|
'';
|
||||||
|
nix.package = mkIf cfg.patchNix patchedNix;
|
||||||
|
services.hercules-ci-agent.tomlFile =
|
||||||
|
format.generate "hercules-ci-agent.toml" cfg.settings;
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This file is for NixOS-specific options and configs.
|
||||||
|
|
||||||
|
Code that is shared with nix-darwin goes in common.nix.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
inherit (lib) mkIf mkDefault;
|
||||||
|
|
||||||
|
cfg = config.services.hercules-ci-agent;
|
||||||
|
|
||||||
|
command = "${cfg.package}/bin/hercules-ci-agent --config ${cfg.tomlFile}";
|
||||||
|
testCommand = "${command} --test-configuration";
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./common.nix
|
||||||
|
(lib.mkRenamedOptionModule ["services" "hercules-ci-agent" "user"] ["systemd" "services" "hercules-ci-agent" "serviceConfig" "User"])
|
||||||
|
];
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
systemd.services.hercules-ci-agent = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
path = [ config.nix.package ];
|
||||||
|
serviceConfig = {
|
||||||
|
User = "hercules-ci-agent";
|
||||||
|
ExecStart = command;
|
||||||
|
ExecStartPre = testCommand;
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 120;
|
||||||
|
StartLimitBurst = 30 * 1000000; # practically infinite
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Changes in the secrets do not affect the unit in any way that would cause
|
||||||
|
# a restart, which is currently necessary to reload the secrets.
|
||||||
|
systemd.paths.hercules-ci-agent-restart-files = {
|
||||||
|
wantedBy = [ "hercules-ci-agent.service" ];
|
||||||
|
pathConfig = {
|
||||||
|
Unit = "hercules-ci-agent-restarter.service";
|
||||||
|
PathChanged = [ cfg.settings.clusterJoinTokenPath cfg.settings.binaryCachesPath ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.services.hercules-ci-agent-restarter = {
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
script = ''
|
||||||
|
# Wait a bit, with the effect of bundling up file changes into a single
|
||||||
|
# run of this script and hopefully a single restart.
|
||||||
|
sleep 10
|
||||||
|
if systemctl is-active --quiet hercules-ci-agent.service; then
|
||||||
|
if ${testCommand}; then
|
||||||
|
systemctl restart hercules-ci-agent.service
|
||||||
|
else
|
||||||
|
echo 1>&2 "WARNING: Not restarting agent because config is not valid at this time."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo 1>&2 "Not restarting hercules-ci-agent despite config file update, because it is not already active."
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Trusted user allows simplified configuration and better performance
|
||||||
|
# when operating in a cluster.
|
||||||
|
nix.trustedUsers = [ config.systemd.services.hercules-ci-agent.serviceConfig.User ];
|
||||||
|
services.hercules-ci-agent.settings.nixUserIsTrusted = true;
|
||||||
|
|
||||||
|
users.users.hercules-ci-agent = {
|
||||||
|
home = cfg.settings.baseDirectory;
|
||||||
|
createHome = true;
|
||||||
|
group = "hercules-ci-agent";
|
||||||
|
description = "Hercules CI Agent system user";
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.hercules-ci-agent = {};
|
||||||
|
};
|
||||||
|
}
|
@ -322,7 +322,7 @@ https://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides
|
|||||||
If you want, you can tweak the Emacs package itself from your
|
If you want, you can tweak the Emacs package itself from your
|
||||||
<filename>emacs.nix</filename>. For example, if you want to have a
|
<filename>emacs.nix</filename>. For example, if you want to have a
|
||||||
GTK 3-based Emacs instead of the default GTK 2-based binary and remove the
|
GTK 3-based Emacs instead of the default GTK 2-based binary and remove the
|
||||||
automatically generated <filename>emacs.desktop</filename> (useful is you
|
automatically generated <filename>emacs.desktop</filename> (useful if you
|
||||||
only use <command>emacsclient</command>), you can change your file
|
only use <command>emacsclient</command>), you can change your file
|
||||||
<filename>emacs.nix</filename> in this way:
|
<filename>emacs.nix</filename> in this way:
|
||||||
</para>
|
</para>
|
||||||
|
@ -106,11 +106,28 @@ in rec {
|
|||||||
(onFullSupported "nixos.tests.networking.scripted.bridge")
|
(onFullSupported "nixos.tests.networking.scripted.bridge")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.dhcpOneIf")
|
(onFullSupported "nixos.tests.networking.scripted.dhcpOneIf")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.dhcpSimple")
|
(onFullSupported "nixos.tests.networking.scripted.dhcpSimple")
|
||||||
|
(onFullSupported "nixos.tests.networking.scripted.link")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.loopback")
|
(onFullSupported "nixos.tests.networking.scripted.loopback")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.macvlan")
|
(onFullSupported "nixos.tests.networking.scripted.macvlan")
|
||||||
|
(onFullSupported "nixos.tests.networking.scripted.privacy")
|
||||||
|
(onFullSupported "nixos.tests.networking.scripted.routes")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.sit")
|
(onFullSupported "nixos.tests.networking.scripted.sit")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.static")
|
(onFullSupported "nixos.tests.networking.scripted.static")
|
||||||
|
(onFullSupported "nixos.tests.networking.scripted.virtual")
|
||||||
(onFullSupported "nixos.tests.networking.scripted.vlan")
|
(onFullSupported "nixos.tests.networking.scripted.vlan")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.bond")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.bridge")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.dhcpOneIf")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.dhcpSimple")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.link")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.loopback")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.macvlan")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.privacy")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.routes")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.sit")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.static")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.virtual")
|
||||||
|
(onFullSupported "nixos.tests.networking.networkd.vlan")
|
||||||
(onFullSupported "nixos.tests.systemd-networkd-ipv6-prefix-delegation")
|
(onFullSupported "nixos.tests.systemd-networkd-ipv6-prefix-delegation")
|
||||||
(onFullSupported "nixos.tests.nfs3.simple")
|
(onFullSupported "nixos.tests.nfs3.simple")
|
||||||
(onFullSupported "nixos.tests.nfs4.simple")
|
(onFullSupported "nixos.tests.nfs4.simple")
|
||||||
|
@ -49,6 +49,7 @@ in
|
|||||||
ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {};
|
ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {};
|
||||||
certmgr = handleTest ./certmgr.nix {};
|
certmgr = handleTest ./certmgr.nix {};
|
||||||
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
|
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
|
||||||
|
charliecloud = handleTest ./charliecloud.nix {};
|
||||||
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
|
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
|
||||||
cjdns = handleTest ./cjdns.nix {};
|
cjdns = handleTest ./cjdns.nix {};
|
||||||
clickhouse = handleTest ./clickhouse.nix {};
|
clickhouse = handleTest ./clickhouse.nix {};
|
||||||
|
43
nixos/tests/charliecloud.nix
Normal file
43
nixos/tests/charliecloud.nix
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# This test checks charliecloud image construction and run
|
||||||
|
|
||||||
|
import ./make-test-python.nix ({ pkgs, ...} : let
|
||||||
|
|
||||||
|
dockerfile = pkgs.writeText "Dockerfile" ''
|
||||||
|
FROM nix
|
||||||
|
RUN mkdir /home /tmp
|
||||||
|
RUN touch /etc/passwd /etc/group
|
||||||
|
CMD ["true"]
|
||||||
|
'';
|
||||||
|
|
||||||
|
in {
|
||||||
|
name = "charliecloud";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ bzizou ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
host = { ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.charliecloud ];
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
users.users.alice = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "docker" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
host.start()
|
||||||
|
host.wait_for_unit("docker.service")
|
||||||
|
host.succeed(
|
||||||
|
'su - alice -c "docker load --input=${pkgs.dockerTools.examples.nix}"'
|
||||||
|
)
|
||||||
|
host.succeed(
|
||||||
|
"cp ${dockerfile} /home/alice/Dockerfile"
|
||||||
|
)
|
||||||
|
host.succeed('su - alice -c "ch-build -t hello ."')
|
||||||
|
host.succeed('su - alice -c "ch-builder2tar hello /var/tmp"')
|
||||||
|
host.succeed('su - alice -c "ch-tar2dir /var/tmp/hello.tar.gz /var/tmp"')
|
||||||
|
host.succeed('su - alice -c "ch-run /var/tmp/hello -- echo Running_From_Container_OK"')
|
||||||
|
'';
|
||||||
|
})
|
@ -1,9 +0,0 @@
|
|||||||
f: {
|
|
||||||
system ? builtins.currentSystem,
|
|
||||||
pkgs ? import ../.. { inherit system; config = {}; },
|
|
||||||
...
|
|
||||||
} @ args:
|
|
||||||
|
|
||||||
with import ../lib/testing.nix { inherit system pkgs; };
|
|
||||||
|
|
||||||
makeTest (if pkgs.lib.isFunction f then f (args // { inherit pkgs; inherit (pkgs) lib; }) else f)
|
|
@ -531,6 +531,12 @@ let
|
|||||||
(attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
|
(attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
orgit-forge = super.orgit-forge.overrideAttrs (attrs: {
|
||||||
|
# searches for Git at build time
|
||||||
|
nativeBuildInputs =
|
||||||
|
(attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
|
||||||
|
});
|
||||||
|
|
||||||
# tries to write to $HOME
|
# tries to write to $HOME
|
||||||
php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
|
php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
|
||||||
HOME = "/tmp";
|
HOME = "/tmp";
|
||||||
|
26
pkgs/applications/editors/gophernotes/default.nix
Normal file
26
pkgs/applications/editors/gophernotes/default.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ lib
|
||||||
|
, buildGoModule
|
||||||
|
, fetchFromGitHub
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "gophernotes";
|
||||||
|
version = "0.7.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "gopherdata";
|
||||||
|
repo = "gophernotes";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0hs92bdrsjqafdkhg2fk3z16h307i32mvbm9f6bb80bgsciysh27";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorSha256 = "1ylqf1sx0h2kixnq9f3prn3sha43q3ybd5ay57yy5z79qr8zqvxs";
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Go kernel for Jupyter notebooks";
|
||||||
|
homepage = "https://github.com/gopherdata/gophernotes";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = [ maintainers.costrouc ];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
@ -10,7 +10,7 @@ let
|
|||||||
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
|
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
|
||||||
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
|
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
|
||||||
in mkDerivation rec {
|
in mkDerivation rec {
|
||||||
version = "3.10.7";
|
version = "3.10.9";
|
||||||
pname = "qgis";
|
pname = "qgis";
|
||||||
name = "${pname}-unwrapped-${version}";
|
name = "${pname}-unwrapped-${version}";
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ in mkDerivation rec {
|
|||||||
owner = "qgis";
|
owner = "qgis";
|
||||||
repo = "QGIS";
|
repo = "QGIS";
|
||||||
rev = "final-${lib.replaceStrings ["."] ["_"] version}";
|
rev = "final-${lib.replaceStrings ["."] ["_"] version}";
|
||||||
sha256 = "0z593n5g3zwhlzhs0z7nlpblz6z2rl3y7y3j1wf1rdx76i8p3qgf";
|
sha256 = "0d646hvrhhgsw789qc2g3iblmsvr64qh15jck1jkaljzrj3qbml6";
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
53
pkgs/applications/graphics/odafileconverter/default.nix
Normal file
53
pkgs/applications/graphics/odafileconverter/default.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{ lib, stdenv, mkDerivation, dpkg, fetchurl, qtbase }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# To obtain the version you will need to run the following command:
|
||||||
|
#
|
||||||
|
# dpkg-deb -I ${odafileconverter.src} | grep Version
|
||||||
|
version = "21.7.0.0";
|
||||||
|
rpath = "$ORIGIN:${lib.makeLibraryPath [ stdenv.cc.cc qtbase ]}";
|
||||||
|
|
||||||
|
in mkDerivation {
|
||||||
|
pname = "oda-file-converter";
|
||||||
|
inherit version;
|
||||||
|
nativeBuildInputs = [ dpkg ];
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
# NB: this URL is not stable (i.e. the underlying file and the corresponding version will change over time)
|
||||||
|
url = "https://download.opendesign.com/guestfiles/ODAFileConverter/ODAFileConverter_QT5_lnxX64_7.2dll.deb";
|
||||||
|
sha256 = "0sa21nnwzqb6g7gl0z43smqgcd9h3xipj3cq2cl7ybfh3cvcxfi9";
|
||||||
|
};
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
dpkg -x $src oda_unpacked
|
||||||
|
sourceRoot=$PWD/oda_unpacked
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/lib
|
||||||
|
cp -vr $sourceRoot/usr/bin/ODAFileConverter_${version} $out/libexec
|
||||||
|
cp -vr $sourceRoot/usr/share $out/share
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
fixupPhase = ''
|
||||||
|
echo "setting interpreter"
|
||||||
|
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/libexec/ODAFileConverter
|
||||||
|
patchelf --set-rpath '${rpath}' $out/libexec/ODAFileConverter
|
||||||
|
wrapQtApp $out/libexec/ODAFileConverter
|
||||||
|
mv $out/libexec/ODAFileConverter $out/bin
|
||||||
|
|
||||||
|
find $out/libexec -type f -executable | while read file; do
|
||||||
|
echo "patching $file"
|
||||||
|
patchelf --set-rpath '${rpath}' $file
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "For converting between different versions of .dwg and .dxf";
|
||||||
|
homepage = "https://www.opendesign.com/guestfiles/oda_file_converter";
|
||||||
|
license = licenses.unfree;
|
||||||
|
maintainers = with maintainers; [ nagisa ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
}
|
@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "navi";
|
pname = "navi";
|
||||||
version = "2.8.0";
|
version = "2.9.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "denisidoro";
|
owner = "denisidoro";
|
||||||
repo = "navi";
|
repo = "navi";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0w63yx4c60r05nfswv61jw3l3zbl5n1s396a6f4ayn52fb6rxwg1";
|
sha256 = "16rwhpyk0zqks9z9bv2a1a8vww2m6867kg33bjbr29hawjg68jql";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "06xpk04nxkm7h4nn235x8a4gi0qhscj8kkl2f9gqphlfmm56kjfn";
|
cargoSha256 = "19w9gm389lj1zwhyjifhc2fzkvrvqvyc80lwxz070cnj11ir2l9m";
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
@ -91,19 +91,19 @@ let
|
|||||||
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
||||||
|
|
||||||
# Upstream source
|
# Upstream source
|
||||||
version = "9.5.3";
|
version = "9.5.4";
|
||||||
|
|
||||||
lang = "en-US";
|
lang = "en-US";
|
||||||
|
|
||||||
srcs = {
|
srcs = {
|
||||||
x86_64-linux = fetchurl {
|
x86_64-linux = fetchurl {
|
||||||
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
|
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
|
||||||
sha256 = "1kqvr0sag94xdkq85k426qq1hz2b52m315yz51w6hvc87d8332b4";
|
sha256 = "sha256-XW2B2wTgqMU2w9XhPJNcUjGLrHykQIngMcG/fFTWb04=";
|
||||||
};
|
};
|
||||||
|
|
||||||
i686-linux = fetchurl {
|
i686-linux = fetchurl {
|
||||||
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
|
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
|
||||||
sha256 = "179g00xw964d6x11wvzs84r7d6rcczx7ganqrxrs499yklscc46b";
|
sha256 = "sha256-EyDyAxB5Og1Cn04tuBF9ob8BxqULy2Ur07BuDxZlmqQ=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, pkgconfig
|
, pkgconfig
|
||||||
, python3
|
, python3
|
||||||
, fetchhg
|
, fetchFromGitLab
|
||||||
, fetchpatch
|
|
||||||
, gtk3
|
, gtk3
|
||||||
, glib
|
, glib
|
||||||
, gdbm
|
, gdbm
|
||||||
, gtkspell3
|
, gtkspell3
|
||||||
, ofono
|
, ofono
|
||||||
, itstool
|
, itstool
|
||||||
, libappindicator-gtk3
|
, libayatana-appindicator-gtk3
|
||||||
, perlPackages
|
, perlPackages
|
||||||
, glibcLocales
|
, glibcLocales
|
||||||
, meson
|
, meson
|
||||||
@ -18,22 +17,16 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "modem-manager-gui";
|
pname = "modem-manager-gui";
|
||||||
version = "0.0.19.1";
|
version = "0.0.20";
|
||||||
|
|
||||||
src = fetchhg {
|
src = fetchFromGitLab {
|
||||||
url = "https://linuxonly@bitbucket.org/linuxonly/modem-manager-gui";
|
domain = "salsa.debian.org";
|
||||||
rev = "version ${version}";
|
owner = "debian";
|
||||||
sha256 = "11iibh36567814h2bz41sa1072b86p1l13xyj670pwkh9k8kw8fd";
|
repo = "modem-manager-gui";
|
||||||
|
rev = "upstream%2F${version}";
|
||||||
|
sha256 = "1pjx4rbsxa7gcs628yjkwb0zqrm5xq8pkmp0cfk4flfk1ryflmgr";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
# Fix docs build
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://bitbucket.org/linuxonly/modem-manager-gui/commits/68fb09c12413b7de9b7477cbf4241c3527568325/raw";
|
|
||||||
sha256 = "033nrlhjlk0zvadv5g9n2id53ajagswf77mda0ixnrskyi7wiig7";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkgconfig
|
pkgconfig
|
||||||
python3
|
python3
|
||||||
@ -49,7 +42,7 @@ stdenv.mkDerivation rec {
|
|||||||
gdbm
|
gdbm
|
||||||
gtkspell3
|
gtkspell3
|
||||||
ofono
|
ofono
|
||||||
libappindicator-gtk3
|
libayatana-appindicator-gtk3
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
@ -66,7 +59,7 @@ stdenv.mkDerivation rec {
|
|||||||
'';
|
'';
|
||||||
homepage = "https://linuxonly.ru/page/modem-manager-gui";
|
homepage = "https://linuxonly.ru/page/modem-manager-gui";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = with maintainers; [ ahuzik ];
|
maintainers = with maintainers; [ ahuzik galagora ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,11 @@ let
|
|||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "msmtp";
|
pname = "msmtp";
|
||||||
version = "1.8.11";
|
version = "1.8.12";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
|
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
|
||||||
sha256 = "0q0fg235qk448l1xjcwyxr7vcpzk6w57jzhjbkb0m7nffyhhypzj";
|
sha256 = "0m33m5bc7ajmgy7vivnzj3mhybg37259hx79xypj769kfyafyvx8";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
49
pkgs/applications/networking/p2p/tremc/default.nix
Normal file
49
pkgs/applications/networking/p2p/tremc/default.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, python3Packages
|
||||||
|
, x11Support ? !stdenv.isDarwin
|
||||||
|
, xclip ? null
|
||||||
|
, pbcopy ? null
|
||||||
|
, useGeoIP ? false # Require /var/lib/geoip-databases/GeoIP.dat
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
wrapperPath = with stdenv.lib; makeBinPath (
|
||||||
|
optional x11Support xclip ++
|
||||||
|
optional stdenv.isDarwin pbcopy
|
||||||
|
);
|
||||||
|
in
|
||||||
|
python3Packages.buildPythonPackage rec {
|
||||||
|
version = "0.9.1";
|
||||||
|
pname = "tremc";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "tremc";
|
||||||
|
repo = pname;
|
||||||
|
rev = "0.9.1";
|
||||||
|
sha256 = "1yhwvlcyv1s830p5a7q5x3mkb3mbvr5cn5nh7y62l5b6iyyynlvm";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = with python3Packages; [
|
||||||
|
python
|
||||||
|
wrapPython
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonPath = with python3Packages; [
|
||||||
|
ipy
|
||||||
|
pyperclip
|
||||||
|
] ++
|
||||||
|
stdenv.lib.optional useGeoIP GeoIP;
|
||||||
|
|
||||||
|
phases = [ "unpackPhase" "installPhase" ];
|
||||||
|
|
||||||
|
makeWrapperArgs = ["--prefix PATH : ${wrapperPath}"];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
make DESTDIR=$out install
|
||||||
|
wrapPythonPrograms
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Curses interface for transmission";
|
||||||
|
homepage = "https://github.com/tremc/tremc";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
};
|
||||||
|
}
|
@ -2,29 +2,27 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
pname = "alt-ergo";
|
pname = "alt-ergo";
|
||||||
version = "2.3.2";
|
version = "2.3.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-${version}/alt-ergo-${version}.tar.gz";
|
url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-${version}/alt-ergo-${version}.tar.gz";
|
||||||
sha256 = "130hisjzkaslygipdaaqib92spzx9rapsd45dbh5ssczjn5qnhb9";
|
sha256 = "124k2a4ikk4wdpmvgjpgl97x9skvr9qznk8m68dzsynzpv6yksaj";
|
||||||
};
|
};
|
||||||
|
|
||||||
preConfigure = "patchShebangs ./configure";
|
|
||||||
|
|
||||||
nativeBuildInputs = [ which ];
|
nativeBuildInputs = [ which ];
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
let alt-ergo-lib = ocamlPackages.buildDunePackage rec {
|
let alt-ergo-lib = ocamlPackages.buildDunePackage rec {
|
||||||
pname = "alt-ergo-lib";
|
pname = "alt-ergo-lib";
|
||||||
inherit version src preConfigure nativeBuildInputs;
|
inherit version src nativeBuildInputs;
|
||||||
configureFlags = pname;
|
configureFlags = pname;
|
||||||
propagatedBuildInputs = with ocamlPackages; [ num ocplib-simplex stdlib-shims zarith ];
|
propagatedBuildInputs = with ocamlPackages; [ num ocplib-simplex stdlib-shims zarith ];
|
||||||
}; in
|
}; in
|
||||||
|
|
||||||
let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
|
let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
|
||||||
pname = "alt-ergo-parsers";
|
pname = "alt-ergo-parsers";
|
||||||
inherit version src preConfigure nativeBuildInputs;
|
inherit version src nativeBuildInputs;
|
||||||
configureFlags = pname;
|
configureFlags = pname;
|
||||||
buildInputs = with ocamlPackages; [ menhir ];
|
buildInputs = with ocamlPackages; [ menhir ];
|
||||||
propagatedBuildInputs = [ alt-ergo-lib ] ++ (with ocamlPackages; [ camlzip psmt2-frontend ]);
|
propagatedBuildInputs = [ alt-ergo-lib ] ++ (with ocamlPackages; [ camlzip psmt2-frontend ]);
|
||||||
@ -32,7 +30,7 @@ let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
|
|||||||
|
|
||||||
ocamlPackages.buildDunePackage {
|
ocamlPackages.buildDunePackage {
|
||||||
|
|
||||||
inherit pname version src preConfigure nativeBuildInputs;
|
inherit pname version src nativeBuildInputs;
|
||||||
|
|
||||||
configureFlags = pname;
|
configureFlags = pname;
|
||||||
|
|
||||||
|
@ -1,22 +1,32 @@
|
|||||||
{ stdenv, fetchFromGitHub, python }:
|
{ stdenv, fetchFromGitHub, python3, python3Packages, docker, autoreconfHook, coreutils, makeWrapper, gnused, gnutar, gzip, findutils, sudo, nixosTests }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
version = "0.12";
|
version = "0.18";
|
||||||
pname = "charliecloud";
|
pname = "charliecloud";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hpc";
|
owner = "hpc";
|
||||||
repo = "charliecloud";
|
repo = "charliecloud";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "177rcf1klcxsp6x9cw75cmz3y2izgd1hvi1rb9vc6iz9qx1nmk3v";
|
sha256 = "0x2kvp95ld0yii93z9i0k9sknfx7jkgy4rkw9l369fl7f73ghsiq";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ python ];
|
nativeBuildInputs = [ autoreconfHook makeWrapper ];
|
||||||
|
buildInputs = [
|
||||||
|
docker
|
||||||
|
(python3.withPackages (ps: [ ps.lark-parser ps.requests ]))
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags = let
|
||||||
|
pythonEnv = python3.withPackages (ps: [ ps.lark-parser ps.requests ]);
|
||||||
|
in [
|
||||||
|
"--with-python=${pythonEnv}/bin/python3"
|
||||||
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
substituteInPlace Makefile --replace '/bin/bash' '${stdenv.shell}'
|
|
||||||
patchShebangs test/
|
patchShebangs test/
|
||||||
|
substituteInPlace configure.ac --replace "/usr/bin/env" "${coreutils}/bin/env"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
@ -24,12 +34,16 @@ stdenv.mkDerivation rec {
|
|||||||
"LIBEXEC_DIR=lib/charliecloud"
|
"LIBEXEC_DIR=lib/charliecloud"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Charliecloud calls some external system tools.
|
||||||
|
# Here we wrap those deps so they are resolved inside nixpkgs.
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/share/charliecloud
|
for file in $out/bin/* ; do \
|
||||||
mv $out/lib/charliecloud/examples $out/share/charliecloud
|
wrapProgram $file --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils docker gnused gnutar gzip findutils sudo ]}
|
||||||
mv $out/lib/charliecloud/test $out/share/charliecloud
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.tests.charliecloud = nixosTests.charliecloud;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "User-defined software stacks (UDSS) for high-performance computing (HPC) centers";
|
description = "User-defined software stacks (UDSS) for high-performance computing (HPC) centers";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
@ -136,8 +136,13 @@ rec {
|
|||||||
|
|
||||||
extraPath = optionals (stdenv.isLinux) (makeBinPath [ iproute iptables e2fsprogs xz xfsprogs procps utillinux git ]);
|
extraPath = optionals (stdenv.isLinux) (makeBinPath [ iproute iptables e2fsprogs xz xfsprogs procps utillinux git ]);
|
||||||
|
|
||||||
installPhase = optionalString (stdenv.isLinux) ''
|
installPhase = ''
|
||||||
cd ./go/src/${goPackagePath}
|
cd ./go/src/${goPackagePath}
|
||||||
|
install -Dm755 ./components/cli/docker $out/libexec/docker/docker
|
||||||
|
|
||||||
|
makeWrapper $out/libexec/docker/docker $out/bin/docker \
|
||||||
|
--prefix PATH : "$out/libexec/docker:$extraPath"
|
||||||
|
'' + optionalString (stdenv.isLinux) ''
|
||||||
install -Dm755 ./components/engine/bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd
|
install -Dm755 ./components/engine/bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd
|
||||||
|
|
||||||
makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
|
makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
|
||||||
@ -153,11 +158,6 @@ rec {
|
|||||||
# systemd
|
# systemd
|
||||||
install -Dm644 ./components/engine/contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
|
install -Dm644 ./components/engine/contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
|
||||||
'' + ''
|
'' + ''
|
||||||
install -Dm755 ./components/cli/docker $out/libexec/docker/docker
|
|
||||||
|
|
||||||
makeWrapper $out/libexec/docker/docker $out/bin/docker \
|
|
||||||
--prefix PATH : "$out/libexec/docker:$extraPath"
|
|
||||||
|
|
||||||
# completion (cli)
|
# completion (cli)
|
||||||
installShellCompletion --bash ./components/cli/contrib/completion/bash/docker
|
installShellCompletion --bash ./components/cli/contrib/completion/bash/docker
|
||||||
installShellCompletion --fish ./components/cli/contrib/completion/fish/docker.fish
|
installShellCompletion --fish ./components/cli/contrib/completion/fish/docker.fish
|
||||||
|
27
pkgs/applications/window-managers/windowchef/default.nix
Normal file
27
pkgs/applications/window-managers/windowchef/default.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, libxcb, libXrandr
|
||||||
|
, xcbutil, xcbutilkeysyms, xcbutilwm, xcbproto
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "windowchef";
|
||||||
|
version = "0.5.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "tudurom";
|
||||||
|
repo = "windowchef";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "02fvb8fxnkpzb0vpbsl6rf7ssdrvw6mlm43qvl2sxq7zb88zdw96";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ libxcb libXrandr xcbutil xcbutilkeysyms xcbutilwm xcbproto];
|
||||||
|
|
||||||
|
makeFlags = [ "PREFIX=$(out)" ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "A stacking window manager that cooks windows with orders from the Waitron";
|
||||||
|
homepage = "https://github.com/tudurom/windowchef";
|
||||||
|
maintainers = with maintainers; [ bhougland ];
|
||||||
|
license = licenses.isc;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -68,7 +68,17 @@ done
|
|||||||
|
|
||||||
mkdir -p $out/lib/firmware
|
mkdir -p $out/lib/firmware
|
||||||
for module in $(cat closure); do
|
for module in $(cat closure); do
|
||||||
for i in $(modinfo -F firmware $module); do
|
# for builtin modules, modinfo will reply with a wrong output looking like:
|
||||||
|
# $ modinfo -F firmware unix
|
||||||
|
# name: unix
|
||||||
|
#
|
||||||
|
# There is a pending attempt to fix this:
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/96153
|
||||||
|
# https://lore.kernel.org/linux-modules/20200823215433.j5gc5rnsmahpf43v@blumerang/T/#u
|
||||||
|
#
|
||||||
|
# For now, the workaround is just to filter out the extraneous lines out
|
||||||
|
# of its output.
|
||||||
|
for i in $(modinfo -b $kernel --set-version "$version" -F firmware $module | grep -v '^name:'); do
|
||||||
mkdir -p "$out/lib/firmware/$(dirname "$i")"
|
mkdir -p "$out/lib/firmware/$(dirname "$i")"
|
||||||
echo "firmware for $module: $i"
|
echo "firmware for $module: $i"
|
||||||
cp "$firmware/lib/firmware/$i" "$out/lib/firmware/$i" 2>/dev/null || if test -z "$allowMissing"; then exit 1; fi
|
cp "$firmware/lib/firmware/$i" "$out/lib/firmware/$i" 2>/dev/null || if test -z "$allowMissing"; then exit 1; fi
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
{ lib, fetchurl, unzip }:
|
{ lib, fetchurl, unzip }:
|
||||||
|
|
||||||
{ crateName
|
{ crateName ? args.pname
|
||||||
|
, pname ? null
|
||||||
, version
|
, version
|
||||||
, sha256
|
, sha256
|
||||||
, ... } @ args:
|
, ... } @ args:
|
||||||
|
|
||||||
|
assert pname == null || pname == crateName;
|
||||||
|
|
||||||
lib.overrideDerivation (fetchurl ({
|
lib.overrideDerivation (fetchurl ({
|
||||||
|
|
||||||
name = "${crateName}-${version}.tar.gz";
|
name = "${crateName}-${version}.tar.gz";
|
||||||
@ -30,6 +33,6 @@ lib.overrideDerivation (fetchurl ({
|
|||||||
fi
|
fi
|
||||||
mv "$unpackDir/$fn" "$out"
|
mv "$unpackDir/$fn" "$out"
|
||||||
'';
|
'';
|
||||||
} // removeAttrs args [ "crateName" "version" ]))
|
} // removeAttrs args [ "crateName" "pname" "version" ]))
|
||||||
# Hackety-hack: we actually need unzip hooks, too
|
# Hackety-hack: we actually need unzip hooks, too
|
||||||
(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})
|
(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{ lib, fetchzip }:
|
{ lib, fetchzip }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.059";
|
version = "1.062";
|
||||||
in
|
in
|
||||||
fetchzip {
|
fetchzip {
|
||||||
name = "recursive-${version}";
|
name = "recursive-${version}";
|
||||||
|
|
||||||
url = "https://github.com/arrowtype/recursive/releases/download/${version}/Recursive-${version}.zip";
|
url = "https://github.com/arrowtype/recursive/releases/download/${version}/ArrowType-Recursive-${version}.zip";
|
||||||
|
|
||||||
postFetch = ''
|
postFetch = ''
|
||||||
mkdir -p $out/share/fonts/
|
mkdir -p $out/share/fonts/
|
||||||
@ -15,7 +15,7 @@ fetchzip {
|
|||||||
unzip -j $downloadedFile \*.woff2 -d $out/share/fonts/woff2
|
unzip -j $downloadedFile \*.woff2 -d $out/share/fonts/woff2
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sha256 = "0dlv8nrcqdn5vn3s918in5ph6kx6rg607kgp66p6ibpbg2s8ljy7";
|
sha256 = "06qilfa0c897shh7m7rpwia02nay8cjwnizzzba27ylzy5pwd96r";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://recursive.design/";
|
homepage = "https://recursive.design/";
|
||||||
|
@ -30,4 +30,34 @@
|
|||||||
androidndk = androidComposition.ndk-bundle;
|
androidndk = androidComposition.ndk-bundle;
|
||||||
targetAndroidndkPkgs = targetPackages.androidndkPkgs_18b;
|
targetAndroidndkPkgs = targetPackages.androidndkPkgs_18b;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"21" =
|
||||||
|
let
|
||||||
|
ndkVersion = "21.0.6113669";
|
||||||
|
|
||||||
|
buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
|
||||||
|
includeNDK = true;
|
||||||
|
inherit ndkVersion;
|
||||||
|
};
|
||||||
|
|
||||||
|
androidComposition = androidenv.composeAndroidPackages {
|
||||||
|
includeNDK = true;
|
||||||
|
inherit ndkVersion;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
import ./androidndk-pkgs.nix {
|
||||||
|
inherit (buildPackages)
|
||||||
|
makeWrapper;
|
||||||
|
inherit (pkgs)
|
||||||
|
stdenv
|
||||||
|
runCommand wrapBintoolsWith wrapCCWith;
|
||||||
|
# buildPackages.foo rather than buildPackages.buildPackages.foo would work,
|
||||||
|
# but for splicing messing up on infinite recursion for the variants we
|
||||||
|
# *dont't* use. Using this workaround, but also making a test to ensure
|
||||||
|
# these two really are the same.
|
||||||
|
buildAndroidndk = buildAndroidComposition.ndk-bundle;
|
||||||
|
androidndk = androidComposition.ndk-bundle;
|
||||||
|
targetAndroidndkPkgs = targetPackages.androidndkPkgs_21;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ let
|
|||||||
let files = builtins.attrNames (builtins.readDir dir);
|
let files = builtins.attrNames (builtins.readDir dir);
|
||||||
in map (f: dir + ("/" + f)) files;
|
in map (f: dir + ("/" + f)) files;
|
||||||
in {
|
in {
|
||||||
|
mkFlutter = mkFlutter;
|
||||||
stable = mkFlutter rec {
|
stable = mkFlutter rec {
|
||||||
pname = "flutter";
|
pname = "flutter";
|
||||||
channel = "stable";
|
channel = "stable";
|
||||||
|
@ -62,8 +62,15 @@ let
|
|||||||
endif
|
endif
|
||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
# We only need to build stage1 on most cross-compilation because
|
||||||
|
# we will be running the compiler on the native system. In some
|
||||||
|
# situations, like native Musl compilation, we need the compiler
|
||||||
|
# to actually link to our new Libc. The iOS simulator is a special
|
||||||
|
# exception because we can’t actually run simulators binaries
|
||||||
|
# ourselves.
|
||||||
|
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
|
@ -59,8 +59,15 @@ let
|
|||||||
endif
|
endif
|
||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
# We only need to build stage1 on most cross-compilation because
|
||||||
|
# we will be running the compiler on the native system. In some
|
||||||
|
# situations, like native Musl compilation, we need the compiler
|
||||||
|
# to actually link to our new Libc. The iOS simulator is a special
|
||||||
|
# exception because we can’t actually run simulators binaries
|
||||||
|
# ourselves.
|
||||||
|
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
|
@ -59,8 +59,15 @@ let
|
|||||||
endif
|
endif
|
||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
# We only need to build stage1 on most cross-compilation because
|
||||||
|
# we will be running the compiler on the native system. In some
|
||||||
|
# situations, like native Musl compilation, we need the compiler
|
||||||
|
# to actually link to our new Libc. The iOS simulator is a special
|
||||||
|
# exception because we can’t actually run simulators binaries
|
||||||
|
# ourselves.
|
||||||
|
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
|
@ -62,8 +62,15 @@ let
|
|||||||
endif
|
endif
|
||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
# We only need to build stage1 on most cross-compilation because
|
||||||
|
# we will be running the compiler on the native system. In some
|
||||||
|
# situations, like native Musl compilation, we need the compiler
|
||||||
|
# to actually link to our new Libc. The iOS simulator is a special
|
||||||
|
# exception because we can’t actually run simulators binaries
|
||||||
|
# ourselves.
|
||||||
|
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
|
@ -62,8 +62,15 @@ let
|
|||||||
endif
|
endif
|
||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
# We only need to build stage1 on most cross-compilation because
|
||||||
|
# we will be running the compiler on the native system. In some
|
||||||
|
# situations, like native Musl compilation, we need the compiler
|
||||||
|
# to actually link to our new Libc. The iOS simulator is a special
|
||||||
|
# exception because we can’t actually run simulators binaries
|
||||||
|
# ourselves.
|
||||||
|
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
, # Whether to build terminfo.
|
, # Whether to build terminfo.
|
||||||
enableTerminfo ? !stdenv.targetPlatform.isWindows
|
enableTerminfo ? !stdenv.targetPlatform.isWindows
|
||||||
|
|
||||||
, version ? "8.11.20200731"
|
, version ? "8.11.20200824"
|
||||||
, # What flavour to build. An empty string indicates no
|
, # What flavour to build. An empty string indicates no
|
||||||
# specific flavour and falls back to ghc default values.
|
# specific flavour and falls back to ghc default values.
|
||||||
ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
|
ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
|
||||||
@ -69,7 +69,7 @@ let
|
|||||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||||
BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
|
BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
|
||||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||||
CrossCompilePrefix = ${targetPrefix}
|
CrossCompilePrefix = ${targetPrefix}
|
||||||
HADDOCK_DOCS = NO
|
HADDOCK_DOCS = NO
|
||||||
BUILD_SPHINX_HTML = NO
|
BUILD_SPHINX_HTML = NO
|
||||||
@ -110,8 +110,8 @@ stdenv.mkDerivation (rec {
|
|||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://gitlab.haskell.org/ghc/ghc.git/";
|
url = "https://gitlab.haskell.org/ghc/ghc.git/";
|
||||||
rev = "380638a33691ba43fdcd2e18bca636750e5f66f1";
|
rev = "3f50154591ada9064351ccec4adfe6df53ca2439";
|
||||||
sha256 = "029cgiyhddvwnx5zx31i0vgj13zsvzb8fna99zr6ifscz6x7rid1";
|
sha256 = "1w2p5bc74aswspzvgvrhcb95hvj5ky38rgqqjvrri19z2qyiky6d";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
{ haskellLib }:
|
{ haskellLib }:
|
||||||
|
|
||||||
let inherit (haskellLib) doJailbreak dontHaddock;
|
let inherit (haskellLib) doJailbreak dontHaddock dontCheck;
|
||||||
in self: super: {
|
in self: super: {
|
||||||
|
ghcjs = super.ghcjs.override {
|
||||||
|
shelly = super.shelly_1_8_1;
|
||||||
|
};
|
||||||
ghc-api-ghcjs = super.ghc-api-ghcjs.override
|
ghc-api-ghcjs = super.ghc-api-ghcjs.override
|
||||||
{
|
{
|
||||||
happy = self.happy_1_19_5;
|
happy = self.happy_1_19_5;
|
||||||
};
|
};
|
||||||
haddock-library-ghcjs = doJailbreak super.haddock-library-ghcjs;
|
haddock-library-ghcjs = doJailbreak (dontCheck super.haddock-library-ghcjs);
|
||||||
haddock-api-ghcjs = doJailbreak (dontHaddock super.haddock-api-ghcjs);
|
haddock-api-ghcjs = doJailbreak (dontHaddock super.haddock-api-ghcjs);
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,6 @@ in stdenv.mkDerivation {
|
|||||||
|
|
||||||
inherit passthru;
|
inherit passthru;
|
||||||
|
|
||||||
meta.broken = true; # build does not succeed
|
meta.platforms = passthru.bootPkgs.ghc.meta.platforms;
|
||||||
meta.platforms = lib.platforms.none; # passthru.bootPkgs.ghc.meta.platforms;
|
|
||||||
meta.maintainers = [lib.maintainers.elvishjerricco];
|
meta.maintainers = [lib.maintainers.elvishjerricco];
|
||||||
}
|
}
|
||||||
|
25
pkgs/development/compilers/kcc/default.nix
Normal file
25
pkgs/development/compilers/kcc/default.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, cmake, bison, flex, boost }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "kcc";
|
||||||
|
|
||||||
|
version = "4.0.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "KnightOS";
|
||||||
|
repo = "kcc";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "1cd226nqbxq32mppkljavq1kb74jqfqns9r7fskszr42hbygynk4";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake bison flex ];
|
||||||
|
|
||||||
|
buildInputs = [ boost ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://knightos.org/";
|
||||||
|
description = "KnightOS C compiler";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
maintainers = with maintainers; [ siraben ];
|
||||||
|
};
|
||||||
|
}
|
@ -375,6 +375,7 @@ self: super: {
|
|||||||
tickle = dontCheck super.tickle;
|
tickle = dontCheck super.tickle;
|
||||||
tpdb = dontCheck super.tpdb;
|
tpdb = dontCheck super.tpdb;
|
||||||
translatable-intset = dontCheck super.translatable-intset;
|
translatable-intset = dontCheck super.translatable-intset;
|
||||||
|
trifecta = if pkgs.stdenv.hostPlatform.isAarch64 then dontCheck super.trifecta else super.trifecta; # affected by this bug https://gitlab.haskell.org/ghc/ghc/-/issues/15275#note_295461
|
||||||
ua-parser = dontCheck super.ua-parser;
|
ua-parser = dontCheck super.ua-parser;
|
||||||
unagi-chan = dontCheck super.unagi-chan;
|
unagi-chan = dontCheck super.unagi-chan;
|
||||||
wai-logger = dontCheck super.wai-logger;
|
wai-logger = dontCheck super.wai-logger;
|
||||||
@ -920,7 +921,12 @@ self: super: {
|
|||||||
# Generate cli completions for dhall.
|
# Generate cli completions for dhall.
|
||||||
dhall = generateOptparseApplicativeCompletion "dhall" super.dhall;
|
dhall = generateOptparseApplicativeCompletion "dhall" super.dhall;
|
||||||
dhall-json = generateOptparseApplicativeCompletions ["dhall-to-json" "dhall-to-yaml"] super.dhall-json;
|
dhall-json = generateOptparseApplicativeCompletions ["dhall-to-json" "dhall-to-yaml"] super.dhall-json;
|
||||||
dhall-nix = generateOptparseApplicativeCompletion "dhall-to-nix" (super.dhall-nix);
|
dhall-nix = generateOptparseApplicativeCompletion "dhall-to-nix" (
|
||||||
|
super.dhall-nix.overrideScope (self: super: {
|
||||||
|
dhall = super.dhall_1_34_0;
|
||||||
|
repline = self.repline_0_4_0_0;
|
||||||
|
haskeline = self.haskeline_0_8_1_0;
|
||||||
|
}));
|
||||||
|
|
||||||
# https://github.com/haskell-hvr/netrc/pull/2#issuecomment-469526558
|
# https://github.com/haskell-hvr/netrc/pull/2#issuecomment-469526558
|
||||||
netrc = doJailbreak super.netrc;
|
netrc = doJailbreak super.netrc;
|
||||||
@ -1155,13 +1161,6 @@ self: super: {
|
|||||||
# 2020-06-22: NOTE: QuickCheck upstreamed https://github.com/phadej/binary-instances/issues/7
|
# 2020-06-22: NOTE: QuickCheck upstreamed https://github.com/phadej/binary-instances/issues/7
|
||||||
binary-instances = dontCheck super.binary-instances;
|
binary-instances = dontCheck super.binary-instances;
|
||||||
|
|
||||||
# Disabling the test suite lets the build succeed on older CPUs
|
|
||||||
# that are unable to run the generated library because they
|
|
||||||
# lack support for AES-NI, like some of our Hydra build slaves
|
|
||||||
# do. See https://github.com/NixOS/nixpkgs/issues/81915 for
|
|
||||||
# details.
|
|
||||||
cryptonite = dontCheck super.cryptonite;
|
|
||||||
|
|
||||||
# The test suite depends on an impure cabal-install installation in
|
# The test suite depends on an impure cabal-install installation in
|
||||||
# $HOME, which we don't have in our build sandbox.
|
# $HOME, which we don't have in our build sandbox.
|
||||||
cabal-install-parsers = dontCheck super.cabal-install-parsers;
|
cabal-install-parsers = dontCheck super.cabal-install-parsers;
|
||||||
@ -1333,6 +1332,12 @@ self: super: {
|
|||||||
# https://github.com/ennocramer/monad-dijkstra/issues/4
|
# https://github.com/ennocramer/monad-dijkstra/issues/4
|
||||||
monad-dijkstra = dontCheck (doJailbreak super.monad-dijkstra);
|
monad-dijkstra = dontCheck (doJailbreak super.monad-dijkstra);
|
||||||
|
|
||||||
|
# Fixed upstream but not released to Hackage yet:
|
||||||
|
# https://github.com/k0001/hs-libsodium/issues/2
|
||||||
|
libsodium = overrideCabal super.libsodium (drv: {
|
||||||
|
libraryToolDepends = (drv.libraryToolDepends or []) ++ [self.c2hs];
|
||||||
|
});
|
||||||
|
|
||||||
# https://github.com/kowainik/policeman/issues/57
|
# https://github.com/kowainik/policeman/issues/57
|
||||||
policeman = doJailbreak super.policeman;
|
policeman = doJailbreak super.policeman;
|
||||||
|
|
||||||
@ -1415,12 +1420,12 @@ self: super: {
|
|||||||
});
|
});
|
||||||
|
|
||||||
# Testsuite trying to run `which haskeline-examples-Test`
|
# Testsuite trying to run `which haskeline-examples-Test`
|
||||||
haskeline_0_8_0_0 = dontCheck super.haskeline_0_8_0_0;
|
haskeline_0_8_1_0 = dontCheck super.haskeline_0_8_1_0;
|
||||||
|
|
||||||
# Requires repline 0.4 which is the default only for ghc8101, override for the rest
|
# Requires repline 0.4 which is the default only for ghc8101, override for the rest
|
||||||
zre = super.zre.override {
|
zre = super.zre.override {
|
||||||
repline = self.repline_0_4_0_0.override {
|
repline = self.repline_0_4_0_0.override {
|
||||||
haskeline = self.haskeline_0_8_0_0;
|
haskeline = self.haskeline_0_8_1_0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1441,26 +1446,35 @@ self: super: {
|
|||||||
|
|
||||||
# Tests rely on `Int` being 64-bit: https://github.com/hspec/hspec/issues/431.
|
# Tests rely on `Int` being 64-bit: https://github.com/hspec/hspec/issues/431.
|
||||||
# Also, we need QuickCheck-2.14.x to build the test suite, which isn't easy in LTS-16.x.
|
# Also, we need QuickCheck-2.14.x to build the test suite, which isn't easy in LTS-16.x.
|
||||||
# So let's not go there any just disable the tests altogether.
|
# So let's not go there and just disable the tests altogether.
|
||||||
hspec-core = dontCheck super.hspec-core;
|
hspec-core = dontCheck super.hspec-core;
|
||||||
|
|
||||||
|
# github.com/ucsd-progsys/liquidhaskell/issues/1729
|
||||||
|
liquidhaskell = super.liquidhaskell.override { Diff = self.Diff_0_3_4; };
|
||||||
|
Diff_0_3_4 = dontCheck super.Diff_0_3_4;
|
||||||
|
|
||||||
|
# We want the latest version of cryptonite. This is a first step towards
|
||||||
|
# resolving https://github.com/NixOS/nixpkgs/issues/81915.
|
||||||
|
cryptonite = self.cryptonite_0_27;
|
||||||
|
|
||||||
# INSERT NEW OVERRIDES ABOVE THIS LINE
|
# INSERT NEW OVERRIDES ABOVE THIS LINE
|
||||||
|
|
||||||
} // (let
|
} // (let
|
||||||
hlsScopeOverride = self: super: {
|
hlsScopeOverride = self: super: {
|
||||||
# haskell-language-server uses its own fork of ghcide
|
# haskell-language-server uses its own fork of ghcide
|
||||||
# Test disabled: it seems to freeze (is it just that it takes a long time ?)
|
# Test disabled: it seems to freeze (is it just that it takes a long time ?)
|
||||||
ghcide = dontCheck self.hls-ghcide;
|
ghcide = dontCheck super.hls-ghcide;
|
||||||
# we are faster than stack here
|
# we are faster than stack here
|
||||||
hie-bios = dontCheck self.hie-bios_0_6_2;
|
hie-bios = dontCheck super.hie-bios_0_7_0;
|
||||||
lsp-test = dontCheck self.lsp-test_0_11_0_4;
|
lsp-test = dontCheck super.lsp-test_0_11_0_4;
|
||||||
# fourmolu can‘t compile with an older aeson
|
# fourmolu can‘t compile with an older aeson
|
||||||
aeson = dontCheck super.aeson_1_5_2_0;
|
aeson = dontCheck super.aeson_1_5_2_0;
|
||||||
# brittany has an aeson upper bound of 1.5
|
# brittany has an aeson upper bound of 1.5
|
||||||
brittany = doJailbreak super.brittany;
|
brittany = doJailbreak super.brittany;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
haskell-language-server = dontCheck (super.haskell-language-server.overrideScope hlsScopeOverride);
|
# jailbreaking for hie-bios 0.7.0 (upstream PR: https://github.com/haskell/haskell-language-server/pull/357)
|
||||||
|
haskell-language-server = dontCheck (doJailbreak (super.haskell-language-server.overrideScope hlsScopeOverride));
|
||||||
hls-ghcide = dontCheck (super.hls-ghcide.overrideScope hlsScopeOverride);
|
hls-ghcide = dontCheck (super.hls-ghcide.overrideScope hlsScopeOverride);
|
||||||
fourmolu = super.fourmolu.overrideScope hlsScopeOverride;
|
fourmolu = super.fourmolu.overrideScope hlsScopeOverride;
|
||||||
}
|
}
|
||||||
|
@ -62,14 +62,16 @@ self: super: {
|
|||||||
|
|
||||||
# Jailbreak to fix the build.
|
# Jailbreak to fix the build.
|
||||||
base-noprelude = doJailbreak super.base-noprelude;
|
base-noprelude = doJailbreak super.base-noprelude;
|
||||||
pandoc = doJailbreak super.pandoc;
|
|
||||||
system-fileio = doJailbreak super.system-fileio;
|
system-fileio = doJailbreak super.system-fileio;
|
||||||
unliftio-core = doJailbreak super.unliftio-core;
|
unliftio-core = doJailbreak super.unliftio-core;
|
||||||
|
|
||||||
# Use the latest version to fix the build.
|
# Use the latest version to fix the build.
|
||||||
dhall = self.dhall_1_34_0;
|
dhall = self.dhall_1_34_0;
|
||||||
lens = self.lens_4_19_2;
|
lens = self.lens_4_19_2;
|
||||||
|
optics = self.optics_0_3;
|
||||||
optics-core = self.optics-core_0_3_0_1;
|
optics-core = self.optics-core_0_3_0_1;
|
||||||
|
optics-extra = self.optics-extra_0_3;
|
||||||
|
optics-th = self.optics-th_0_3_0_2;
|
||||||
repline = self.repline_0_4_0_0;
|
repline = self.repline_0_4_0_0;
|
||||||
singletons = self.singletons_2_7;
|
singletons = self.singletons_2_7;
|
||||||
th-desugar = self.th-desugar_1_11;
|
th-desugar = self.th-desugar_1_11;
|
||||||
@ -117,4 +119,10 @@ self: super: {
|
|||||||
executableHaskellDepends = drv.executableToolDepends or [] ++ [ self.repline ];
|
executableHaskellDepends = drv.executableToolDepends or [] ++ [ self.repline ];
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
# We want the latest version of Pandoc.
|
||||||
|
pandoc = self.pandoc_2_10_1;
|
||||||
|
pandoc-citeproc = self.pandoc-citeproc_0_17_0_2;
|
||||||
|
pandoc-plot = self.pandoc-plot_0_9_2_0;
|
||||||
|
pandoc-types = self.pandoc-types_1_21;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ core-packages:
|
|||||||
#
|
#
|
||||||
# WARNING: This list is generated semiautomatically based on the most recent
|
# WARNING: This list is generated semiautomatically based on the most recent
|
||||||
# LTS package set. If you want to add entries to it, you must do so before the
|
# LTS package set. If you want to add entries to it, you must do so before the
|
||||||
# comment saying "# LTS Haskell x.y". Any changes after that commend will be
|
# comment saying "# LTS Haskell x.y". Any changes after that comment will be
|
||||||
# lost the next time `update-stackage.sh` runs.
|
# lost the next time `update-stackage.sh` runs.
|
||||||
default-package-overrides:
|
default-package-overrides:
|
||||||
# This was only intended for ghc-7.0.4, and has very old deps, one hidden behind a flag
|
# This was only intended for ghc-7.0.4, and has very old deps, one hidden behind a flag
|
||||||
@ -72,7 +72,7 @@ default-package-overrides:
|
|||||||
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
|
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
|
||||||
# not yet available in Nixpkgs
|
# not yet available in Nixpkgs
|
||||||
- gi-gdkx11 < 4
|
- gi-gdkx11 < 4
|
||||||
# LTS Haskell 16.10
|
# LTS Haskell 16.11
|
||||||
- abstract-deque ==0.3
|
- abstract-deque ==0.3
|
||||||
- abstract-par ==0.3.3
|
- abstract-par ==0.3.3
|
||||||
- AC-Angle ==1.0
|
- AC-Angle ==1.0
|
||||||
@ -207,7 +207,7 @@ default-package-overrides:
|
|||||||
- amazonka-workspaces ==1.6.1
|
- amazonka-workspaces ==1.6.1
|
||||||
- amazonka-xray ==1.6.1
|
- amazonka-xray ==1.6.1
|
||||||
- amqp ==0.20.0
|
- amqp ==0.20.0
|
||||||
- amqp-utils ==0.4.4.0
|
- amqp-utils ==0.4.4.1
|
||||||
- annotated-wl-pprint ==0.7.0
|
- annotated-wl-pprint ==0.7.0
|
||||||
- ansi-terminal ==0.10.3
|
- ansi-terminal ==0.10.3
|
||||||
- ansi-wl-pprint ==0.6.9
|
- ansi-wl-pprint ==0.6.9
|
||||||
@ -262,7 +262,7 @@ default-package-overrides:
|
|||||||
- attoparsec-path ==0.0.0.1
|
- attoparsec-path ==0.0.0.1
|
||||||
- audacity ==0.0.2
|
- audacity ==0.0.2
|
||||||
- aur ==7.0.3
|
- aur ==7.0.3
|
||||||
- aura ==3.1.7
|
- aura ==3.1.8
|
||||||
- authenticate ==1.3.5
|
- authenticate ==1.3.5
|
||||||
- authenticate-oauth ==1.6.0.1
|
- authenticate-oauth ==1.6.0.1
|
||||||
- auto ==0.4.3.1
|
- auto ==0.4.3.1
|
||||||
@ -366,7 +366,7 @@ default-package-overrides:
|
|||||||
- bv ==0.5
|
- bv ==0.5
|
||||||
- bv-little ==1.1.1
|
- bv-little ==1.1.1
|
||||||
- byteable ==0.1.1
|
- byteable ==0.1.1
|
||||||
- byte-count-reader ==0.10.0.1
|
- byte-count-reader ==0.10.1.1
|
||||||
- bytedump ==1.0
|
- bytedump ==1.0
|
||||||
- byte-order ==0.1.2.0
|
- byte-order ==0.1.2.0
|
||||||
- byteorder ==1.0.4
|
- byteorder ==1.0.4
|
||||||
@ -760,7 +760,7 @@ default-package-overrides:
|
|||||||
- extended-reals ==0.2.4.0
|
- extended-reals ==0.2.4.0
|
||||||
- extensible-effects ==5.0.0.1
|
- extensible-effects ==5.0.0.1
|
||||||
- extensible-exceptions ==0.1.1.4
|
- extensible-exceptions ==0.1.1.4
|
||||||
- extra ==1.7.5
|
- extra ==1.7.6
|
||||||
- extractable-singleton ==0.0.1
|
- extractable-singleton ==0.0.1
|
||||||
- extrapolate ==0.4.2
|
- extrapolate ==0.4.2
|
||||||
- fail ==4.9.0.0
|
- fail ==4.9.0.0
|
||||||
@ -808,7 +808,7 @@ default-package-overrides:
|
|||||||
- floatshow ==0.2.4
|
- floatshow ==0.2.4
|
||||||
- flow ==1.0.21
|
- flow ==1.0.21
|
||||||
- flush-queue ==1.0.0
|
- flush-queue ==1.0.0
|
||||||
- fmlist ==0.9.3
|
- fmlist ==0.9.4
|
||||||
- fmt ==0.6.1.2
|
- fmt ==0.6.1.2
|
||||||
- fn ==0.3.0.2
|
- fn ==0.3.0.2
|
||||||
- focus ==1.0.1.3
|
- focus ==1.0.1.3
|
||||||
@ -1277,7 +1277,7 @@ default-package-overrides:
|
|||||||
- jwt ==0.10.0
|
- jwt ==0.10.0
|
||||||
- kan-extensions ==5.2
|
- kan-extensions ==5.2
|
||||||
- kanji ==3.4.1
|
- kanji ==3.4.1
|
||||||
- katip ==0.8.4.0
|
- katip ==0.8.5.0
|
||||||
- kawhi ==0.3.0
|
- kawhi ==0.3.0
|
||||||
- kazura-queue ==0.1.0.4
|
- kazura-queue ==0.1.0.4
|
||||||
- kdt ==0.2.4
|
- kdt ==0.2.4
|
||||||
@ -1348,7 +1348,7 @@ default-package-overrides:
|
|||||||
- linux-file-extents ==0.2.0.0
|
- linux-file-extents ==0.2.0.0
|
||||||
- linux-namespaces ==0.1.3.0
|
- linux-namespaces ==0.1.3.0
|
||||||
- List ==0.6.2
|
- List ==0.6.2
|
||||||
- ListLike ==4.7.1
|
- ListLike ==4.7.2
|
||||||
- list-predicate ==0.1.0.1
|
- list-predicate ==0.1.0.1
|
||||||
- listsafe ==0.1.0.1
|
- listsafe ==0.1.0.1
|
||||||
- list-singleton ==1.0.0.4
|
- list-singleton ==1.0.0.4
|
||||||
@ -1433,7 +1433,7 @@ default-package-overrides:
|
|||||||
- midi ==0.2.2.2
|
- midi ==0.2.2.2
|
||||||
- mighty-metropolis ==2.0.0
|
- mighty-metropolis ==2.0.0
|
||||||
- mime-mail ==0.5.0
|
- mime-mail ==0.5.0
|
||||||
- mime-mail-ses ==0.4.1
|
- mime-mail-ses ==0.4.2
|
||||||
- mime-types ==0.1.0.9
|
- mime-types ==0.1.0.9
|
||||||
- mini-egison ==1.0.0
|
- mini-egison ==1.0.0
|
||||||
- minimal-configuration ==0.1.4
|
- minimal-configuration ==0.1.4
|
||||||
@ -1558,7 +1558,7 @@ default-package-overrides:
|
|||||||
- nonce ==1.0.7
|
- nonce ==1.0.7
|
||||||
- nondeterminism ==1.4
|
- nondeterminism ==1.4
|
||||||
- non-empty ==0.3.2
|
- non-empty ==0.3.2
|
||||||
- nonempty-containers ==0.3.4.0
|
- nonempty-containers ==0.3.4.1
|
||||||
- nonemptymap ==0.0.6.0
|
- nonemptymap ==0.0.6.0
|
||||||
- non-empty-sequence ==0.2.0.4
|
- non-empty-sequence ==0.2.0.4
|
||||||
- nonempty-vector ==0.2.0.2
|
- nonempty-vector ==0.2.0.2
|
||||||
@ -1613,7 +1613,7 @@ default-package-overrides:
|
|||||||
- options ==1.2.1.1
|
- options ==1.2.1.1
|
||||||
- optparse-applicative ==0.15.1.0
|
- optparse-applicative ==0.15.1.0
|
||||||
- optparse-generic ==1.3.1
|
- optparse-generic ==1.3.1
|
||||||
- optparse-simple ==0.1.1.2
|
- optparse-simple ==0.1.1.3
|
||||||
- optparse-text ==0.1.1.0
|
- optparse-text ==0.1.1.0
|
||||||
- ordered-containers ==0.2.2
|
- ordered-containers ==0.2.2
|
||||||
- ormolu ==0.1.2.0
|
- ormolu ==0.1.2.0
|
||||||
@ -1859,7 +1859,7 @@ default-package-overrides:
|
|||||||
- regex-posix ==0.96.0.0
|
- regex-posix ==0.96.0.0
|
||||||
- regex-tdfa ==1.3.1.0
|
- regex-tdfa ==1.3.1.0
|
||||||
- regex-with-pcre ==1.1.0.0
|
- regex-with-pcre ==1.1.0.0
|
||||||
- registry ==0.1.9.1
|
- registry ==0.1.9.3
|
||||||
- reinterpret-cast ==0.1.0
|
- reinterpret-cast ==0.1.0
|
||||||
- relapse ==1.0.0.0
|
- relapse ==1.0.0.0
|
||||||
- relational-query ==0.12.2.3
|
- relational-query ==0.12.2.3
|
||||||
@ -1902,7 +1902,7 @@ default-package-overrides:
|
|||||||
- safe ==0.3.19
|
- safe ==0.3.19
|
||||||
- safecopy ==0.10.3
|
- safecopy ==0.10.3
|
||||||
- safe-decimal ==0.2.0.0
|
- safe-decimal ==0.2.0.0
|
||||||
- safe-exceptions ==0.1.7.0
|
- safe-exceptions ==0.1.7.1
|
||||||
- safe-exceptions-checked ==0.1.0
|
- safe-exceptions-checked ==0.1.0
|
||||||
- safe-foldable ==0.1.0.0
|
- safe-foldable ==0.1.0.0
|
||||||
- safeio ==0.0.5.0
|
- safeio ==0.0.5.0
|
||||||
@ -1978,7 +1978,7 @@ default-package-overrides:
|
|||||||
- servant-purescript ==0.10.0.0
|
- servant-purescript ==0.10.0.0
|
||||||
- servant-rawm ==0.3.2.0
|
- servant-rawm ==0.3.2.0
|
||||||
- servant-server ==0.16.2
|
- servant-server ==0.16.2
|
||||||
- servant-static-th ==0.2.3.0
|
- servant-static-th ==0.2.4.0
|
||||||
- servant-subscriber ==0.7.0.0
|
- servant-subscriber ==0.7.0.0
|
||||||
- servant-swagger ==1.1.7.1
|
- servant-swagger ==1.1.7.1
|
||||||
- servant-swagger-ui ==0.3.4.3.23.11
|
- servant-swagger-ui ==0.3.4.3.23.11
|
||||||
@ -2328,7 +2328,7 @@ default-package-overrides:
|
|||||||
- unexceptionalio-trans ==0.5.1
|
- unexceptionalio-trans ==0.5.1
|
||||||
- unicode ==0.0.1.1
|
- unicode ==0.0.1.1
|
||||||
- unicode-show ==0.1.0.4
|
- unicode-show ==0.1.0.4
|
||||||
- unicode-transforms ==0.3.6
|
- unicode-transforms ==0.3.7
|
||||||
- unification-fd ==0.10.0.1
|
- unification-fd ==0.10.0.1
|
||||||
- union-find ==0.2
|
- union-find ==0.2
|
||||||
- uniplate ==1.6.12
|
- uniplate ==1.6.12
|
||||||
@ -2395,7 +2395,7 @@ default-package-overrides:
|
|||||||
- vector-instances ==3.4
|
- vector-instances ==3.4
|
||||||
- vector-mmap ==0.0.3
|
- vector-mmap ==0.0.3
|
||||||
- vector-rotcev ==0.1.0.0
|
- vector-rotcev ==0.1.0.0
|
||||||
- vector-sized ==1.4.1.0
|
- vector-sized ==1.4.2
|
||||||
- vector-space ==0.16
|
- vector-space ==0.16
|
||||||
- vector-split ==1.0.0.2
|
- vector-split ==1.0.0.2
|
||||||
- vector-th-unbox ==0.2.1.7
|
- vector-th-unbox ==0.2.1.7
|
||||||
@ -2498,7 +2498,7 @@ default-package-overrides:
|
|||||||
- xss-sanitize ==0.3.6
|
- xss-sanitize ==0.3.6
|
||||||
- xturtle ==0.2.0.0
|
- xturtle ==0.2.0.0
|
||||||
- xxhash-ffi ==0.2.0.0
|
- xxhash-ffi ==0.2.0.0
|
||||||
- yaml ==0.11.4.0
|
- yaml ==0.11.5.0
|
||||||
- yamlparse-applicative ==0.1.0.1
|
- yamlparse-applicative ==0.1.0.1
|
||||||
- yesod ==1.6.1.0
|
- yesod ==1.6.1.0
|
||||||
- yesod-auth ==1.6.10
|
- yesod-auth ==1.6.10
|
||||||
@ -2560,12 +2560,13 @@ extra-packages:
|
|||||||
- dbus <1 # for xmonad-0.26
|
- dbus <1 # for xmonad-0.26
|
||||||
- deepseq == 1.3.0.1 # required to build Cabal with GHC 6.12.3
|
- deepseq == 1.3.0.1 # required to build Cabal with GHC 6.12.3
|
||||||
- dhall == 1.29.0 # required for spago 0.14.0.
|
- dhall == 1.29.0 # required for spago 0.14.0.
|
||||||
|
- Diff < 0.4 # required by liquidhaskell-0.8.10.2: https://github.com/ucsd-progsys/liquidhaskell/issues/1729
|
||||||
- doctemplates == 0.8 # required by pandoc-2.9.x
|
- doctemplates == 0.8 # required by pandoc-2.9.x
|
||||||
- gi-gdk == 3.0.23 # required for gi-pango 1.0.23
|
|
||||||
- gi-gtk == 3.0.35 # required for gi-pango 1.0.23
|
|
||||||
- generic-deriving == 1.10.5.* # new versions don't compile with GHC 7.10.x
|
- generic-deriving == 1.10.5.* # new versions don't compile with GHC 7.10.x
|
||||||
- ghc-check == 0.3.0.1 # only version compatible with ghcide 0.2.0
|
- ghc-check == 0.3.0.1 # only version compatible with ghcide 0.2.0
|
||||||
- ghc-tcplugins-extra ==0.3.2 # required for polysemy-plugin 0.2.5.0
|
- ghc-tcplugins-extra ==0.3.2 # required for polysemy-plugin 0.2.5.0
|
||||||
|
- gi-gdk == 3.0.23 # required for gi-pango 1.0.23
|
||||||
|
- gi-gtk == 3.0.35 # required for gi-pango 1.0.23
|
||||||
- gloss < 1.9.3 # new versions don't compile with GHC 7.8.x
|
- gloss < 1.9.3 # new versions don't compile with GHC 7.8.x
|
||||||
- haddock == 2.22.* # required on GHC 8.0.x
|
- haddock == 2.22.* # required on GHC 8.0.x
|
||||||
- haddock == 2.23.* # required on GHC < 8.10.x
|
- haddock == 2.23.* # required on GHC < 8.10.x
|
||||||
@ -2579,9 +2580,9 @@ extra-packages:
|
|||||||
- haskell-src-exts == 1.19.* # required by hindent and structured-haskell-mode
|
- haskell-src-exts == 1.19.* # required by hindent and structured-haskell-mode
|
||||||
- hinotify == 0.3.9 # for xmonad-0.26: https://github.com/kolmodin/hinotify/issues/29
|
- hinotify == 0.3.9 # for xmonad-0.26: https://github.com/kolmodin/hinotify/issues/29
|
||||||
- hoogle == 5.0.14 # required by hie-hoogle
|
- hoogle == 5.0.14 # required by hie-hoogle
|
||||||
|
- hslua == 1.1.2 # required for pandoc 2.10
|
||||||
- html-conduit ^>= 1.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
- html-conduit ^>= 1.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||||
- http-conduit ^>= 2.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
- http-conduit ^>= 2.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||||
- hslua == 1.1.2 # required for pandoc 2.10
|
|
||||||
- inline-c < 0.6 # required on GHC 8.0.x
|
- inline-c < 0.6 # required on GHC 8.0.x
|
||||||
- inline-c-cpp < 0.2 # required on GHC 8.0.x
|
- inline-c-cpp < 0.2 # required on GHC 8.0.x
|
||||||
- lens-labels == 0.1.* # required for proto-lens-descriptors
|
- lens-labels == 0.1.* # required for proto-lens-descriptors
|
||||||
@ -2604,6 +2605,7 @@ extra-packages:
|
|||||||
- resourcet ==1.1.* # pre-lts-11.x versions neeed by git-annex 6.20180227
|
- resourcet ==1.1.* # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||||
- seqid < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
- seqid < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
||||||
- seqid-streams < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
- seqid-streams < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
||||||
|
- shelly ==1.8.1 # ghcjs depends on shelly < 1.9
|
||||||
- split < 0.2 # newer versions don't work with GHC 6.12.3
|
- split < 0.2 # newer versions don't work with GHC 6.12.3
|
||||||
- tar < 0.4.2.0 # later versions don't work with GHC < 7.6.x
|
- tar < 0.4.2.0 # later versions don't work with GHC < 7.6.x
|
||||||
- transformers == 0.4.3.* # the latest version isn't supported by mtl yet
|
- transformers == 0.4.3.* # the latest version isn't supported by mtl yet
|
||||||
@ -2756,17 +2758,26 @@ dont-distribute-packages:
|
|||||||
- accelerate-examples
|
- accelerate-examples
|
||||||
- accelerate-fft
|
- accelerate-fft
|
||||||
- accelerate-fourier-benchmark
|
- accelerate-fourier-benchmark
|
||||||
|
- accelerate-io-array
|
||||||
|
- accelerate-io-bmp
|
||||||
|
- accelerate-io-bytestring
|
||||||
|
- accelerate-io-cereal
|
||||||
|
- accelerate-io-JuicyPixels
|
||||||
|
- accelerate-io-repa
|
||||||
|
- accelerate-io-vector
|
||||||
- accelerate-llvm-ptx
|
- accelerate-llvm-ptx
|
||||||
- bindings-yices
|
- bindings-yices
|
||||||
- boolector
|
- boolector
|
||||||
- ccelerate-cuda
|
- ccelerate-cuda
|
||||||
|
- containers-accelerate
|
||||||
- cplex-hs
|
- cplex-hs
|
||||||
- cuda # 2020-08-18 because of dependency nvidia-x11
|
|
||||||
- cublas
|
- cublas
|
||||||
|
- cuda # 2020-08-18 because of dependency nvidia-x11
|
||||||
- cufft
|
- cufft
|
||||||
- cusolver
|
- cusolver
|
||||||
- cusparse
|
- cusparse
|
||||||
- gloss-raster-accelerate
|
- gloss-raster-accelerate
|
||||||
|
- hashable-accelerate
|
||||||
- libnvvm
|
- libnvvm
|
||||||
- matlab
|
- matlab
|
||||||
- nvvm
|
- nvvm
|
||||||
@ -3670,6 +3681,7 @@ broken-packages:
|
|||||||
- cap
|
- cap
|
||||||
- Capabilities
|
- Capabilities
|
||||||
- capability
|
- capability
|
||||||
|
- capataz
|
||||||
- capnp
|
- capnp
|
||||||
- capped-list
|
- capped-list
|
||||||
- capri
|
- capri
|
||||||
@ -3959,8 +3971,9 @@ broken-packages:
|
|||||||
- complexity
|
- complexity
|
||||||
- compose-trans
|
- compose-trans
|
||||||
- composite-aeson
|
- composite-aeson
|
||||||
|
- composite-aeson-path
|
||||||
- composite-aeson-refined
|
- composite-aeson-refined
|
||||||
- composite-base
|
- composite-binary
|
||||||
- composite-ekg
|
- composite-ekg
|
||||||
- composite-opaleye
|
- composite-opaleye
|
||||||
- composite-swagger
|
- composite-swagger
|
||||||
@ -4292,6 +4305,7 @@ broken-packages:
|
|||||||
- data-transform
|
- data-transform
|
||||||
- data-type
|
- data-type
|
||||||
- data-util
|
- data-util
|
||||||
|
- data-validation
|
||||||
- data-variant
|
- data-variant
|
||||||
- database-id-groundhog
|
- database-id-groundhog
|
||||||
- database-study
|
- database-study
|
||||||
@ -4415,7 +4429,6 @@ broken-packages:
|
|||||||
- dhall-check
|
- dhall-check
|
||||||
- dhall-docs
|
- dhall-docs
|
||||||
- dhall-fly
|
- dhall-fly
|
||||||
- dhall-nix
|
|
||||||
- dhall-text
|
- dhall-text
|
||||||
- dhall-to-cabal
|
- dhall-to-cabal
|
||||||
- dhall-yaml
|
- dhall-yaml
|
||||||
@ -4763,6 +4776,9 @@ broken-packages:
|
|||||||
- EsounD
|
- EsounD
|
||||||
- espial
|
- espial
|
||||||
- ess
|
- ess
|
||||||
|
- essence-of-live-coding-gloss-example
|
||||||
|
- essence-of-live-coding-pulse-example
|
||||||
|
- essence-of-live-coding-warp
|
||||||
- estimators
|
- estimators
|
||||||
- EstProgress
|
- EstProgress
|
||||||
- estreps
|
- estreps
|
||||||
@ -5322,6 +5338,23 @@ broken-packages:
|
|||||||
- ghcprofview
|
- ghcprofview
|
||||||
- ght
|
- ght
|
||||||
- gi-cairo-again
|
- gi-cairo-again
|
||||||
|
- gi-cairo-connector
|
||||||
|
- gi-cairo-render
|
||||||
|
- gi-dbusmenu
|
||||||
|
- gi-dbusmenugtk3
|
||||||
|
- gi-gdkx11
|
||||||
|
- gi-graphene
|
||||||
|
- gi-gsk
|
||||||
|
- gi-gstpbutils
|
||||||
|
- gi-gsttag
|
||||||
|
- gi-gtk-declarative
|
||||||
|
- gi-gtk-declarative-app-simple
|
||||||
|
- gi-gtk-hs
|
||||||
|
- gi-gtkosxapplication
|
||||||
|
- gi-handy
|
||||||
|
- gi-poppler
|
||||||
|
- gi-wnck
|
||||||
|
- gi-xlib
|
||||||
- giak
|
- giak
|
||||||
- Gifcurry
|
- Gifcurry
|
||||||
- ginsu
|
- ginsu
|
||||||
@ -5402,6 +5435,7 @@ broken-packages:
|
|||||||
- gloss-sodium
|
- gloss-sodium
|
||||||
- glpk-headers
|
- glpk-headers
|
||||||
- glpk-hs
|
- glpk-hs
|
||||||
|
- gltf-codec
|
||||||
- glue
|
- glue
|
||||||
- GLUtil
|
- GLUtil
|
||||||
- gmap
|
- gmap
|
||||||
@ -5793,6 +5827,7 @@ broken-packages:
|
|||||||
- haskell-src-exts-prisms
|
- haskell-src-exts-prisms
|
||||||
- haskell-src-exts-qq
|
- haskell-src-exts-qq
|
||||||
- haskell-src-exts-sc
|
- haskell-src-exts-sc
|
||||||
|
- haskell-src-match
|
||||||
- haskell-src-meta-mwotton
|
- haskell-src-meta-mwotton
|
||||||
- haskell-stack-trace-plugin
|
- haskell-stack-trace-plugin
|
||||||
- haskell-token-utils
|
- haskell-token-utils
|
||||||
@ -5876,6 +5911,7 @@ broken-packages:
|
|||||||
- haskore-supercollider
|
- haskore-supercollider
|
||||||
- haskore-synthesizer
|
- haskore-synthesizer
|
||||||
- HaskRel
|
- HaskRel
|
||||||
|
- haskseg
|
||||||
- hasktorch
|
- hasktorch
|
||||||
- hasktorch-codegen
|
- hasktorch-codegen
|
||||||
- hasktorch-ffi-th
|
- hasktorch-ffi-th
|
||||||
@ -6959,6 +6995,7 @@ broken-packages:
|
|||||||
- jsonsql
|
- jsonsql
|
||||||
- jsontsv
|
- jsontsv
|
||||||
- jsonxlsx
|
- jsonxlsx
|
||||||
|
- jsop
|
||||||
- jspath
|
- jspath
|
||||||
- juandelacosa
|
- juandelacosa
|
||||||
- judge
|
- judge
|
||||||
@ -7060,6 +7097,7 @@ broken-packages:
|
|||||||
- ks-test
|
- ks-test
|
||||||
- KSP
|
- KSP
|
||||||
- ktx
|
- ktx
|
||||||
|
- ktx-codec
|
||||||
- kubernetes-client
|
- kubernetes-client
|
||||||
- kubernetes-client-core
|
- kubernetes-client-core
|
||||||
- kuifje
|
- kuifje
|
||||||
@ -7248,6 +7286,7 @@ broken-packages:
|
|||||||
- libconfig
|
- libconfig
|
||||||
- libcspm
|
- libcspm
|
||||||
- libexpect
|
- libexpect
|
||||||
|
- libfuse3
|
||||||
- libGenI
|
- libGenI
|
||||||
- libhbb
|
- libhbb
|
||||||
- libinfluxdb
|
- libinfluxdb
|
||||||
@ -7265,7 +7304,6 @@ broken-packages:
|
|||||||
- libraft
|
- libraft
|
||||||
- librandomorg
|
- librandomorg
|
||||||
- librato
|
- librato
|
||||||
- libsodium
|
|
||||||
- libssh2
|
- libssh2
|
||||||
- libssh2-conduit
|
- libssh2-conduit
|
||||||
- libsystemd-daemon
|
- libsystemd-daemon
|
||||||
@ -7324,17 +7362,6 @@ broken-packages:
|
|||||||
- lio-fs
|
- lio-fs
|
||||||
- lio-simple
|
- lio-simple
|
||||||
- lipsum-gen
|
- lipsum-gen
|
||||||
- liquid
|
|
||||||
- liquid-base
|
|
||||||
- liquid-bytestring
|
|
||||||
- liquid-containers
|
|
||||||
- liquid-fixpoint
|
|
||||||
- liquid-ghc-prim
|
|
||||||
- liquid-parallel
|
|
||||||
- liquid-platform
|
|
||||||
- liquid-prelude
|
|
||||||
- liquid-vector
|
|
||||||
- liquidhaskell
|
|
||||||
- liquidhaskell-cabal
|
- liquidhaskell-cabal
|
||||||
- Liquorice
|
- Liquorice
|
||||||
- list-fusion-probe
|
- list-fusion-probe
|
||||||
@ -7403,6 +7430,7 @@ broken-packages:
|
|||||||
- log4hs
|
- log4hs
|
||||||
- logentries
|
- logentries
|
||||||
- logger
|
- logger
|
||||||
|
- logging-effect
|
||||||
- logging-effect-extra
|
- logging-effect-extra
|
||||||
- logging-effect-extra-file
|
- logging-effect-extra-file
|
||||||
- logging-effect-extra-handler
|
- logging-effect-extra-handler
|
||||||
@ -7475,6 +7503,7 @@ broken-packages:
|
|||||||
- lye
|
- lye
|
||||||
- Lykah
|
- Lykah
|
||||||
- lz4-conduit
|
- lz4-conduit
|
||||||
|
- lz4-frame-conduit
|
||||||
- lzma-enumerator
|
- lzma-enumerator
|
||||||
- lzma-streams
|
- lzma-streams
|
||||||
- lzo
|
- lzo
|
||||||
@ -7691,6 +7720,7 @@ broken-packages:
|
|||||||
- ministg
|
- ministg
|
||||||
- minst-idx
|
- minst-idx
|
||||||
- mios
|
- mios
|
||||||
|
- MIP
|
||||||
- mirror-tweet
|
- mirror-tweet
|
||||||
- misfortune
|
- misfortune
|
||||||
- miso-action-logger
|
- miso-action-logger
|
||||||
@ -7733,6 +7763,7 @@ broken-packages:
|
|||||||
- monad-atom
|
- monad-atom
|
||||||
- monad-atom-simple
|
- monad-atom-simple
|
||||||
- monad-branch
|
- monad-branch
|
||||||
|
- monad-classes-logging
|
||||||
- monad-exception
|
- monad-exception
|
||||||
- monad-finally
|
- monad-finally
|
||||||
- monad-fork
|
- monad-fork
|
||||||
@ -7922,6 +7953,7 @@ broken-packages:
|
|||||||
- mvc
|
- mvc
|
||||||
- mvc-updates
|
- mvc-updates
|
||||||
- mvclient
|
- mvclient
|
||||||
|
- mwc-probability-transition
|
||||||
- mwc-random-accelerate
|
- mwc-random-accelerate
|
||||||
- mxnet
|
- mxnet
|
||||||
- mxnet-dataiter
|
- mxnet-dataiter
|
||||||
@ -8605,6 +8637,7 @@ broken-packages:
|
|||||||
- polydata
|
- polydata
|
||||||
- polydata-core
|
- polydata-core
|
||||||
- polynomial
|
- polynomial
|
||||||
|
- polysemy-http
|
||||||
- polysemy-optics
|
- polysemy-optics
|
||||||
- polysemy-RandomFu
|
- polysemy-RandomFu
|
||||||
- polysemy-webserver
|
- polysemy-webserver
|
||||||
@ -8702,6 +8735,7 @@ broken-packages:
|
|||||||
- pretty-ghci
|
- pretty-ghci
|
||||||
- pretty-ncols
|
- pretty-ncols
|
||||||
- prettyprinter-graphviz
|
- prettyprinter-graphviz
|
||||||
|
- prettyprinter-lucid
|
||||||
- prettyprinter-vty
|
- prettyprinter-vty
|
||||||
- preview
|
- preview
|
||||||
- prim
|
- prim
|
||||||
@ -9257,6 +9291,7 @@ broken-packages:
|
|||||||
- ruler
|
- ruler
|
||||||
- ruler-core
|
- ruler-core
|
||||||
- rungekutta
|
- rungekutta
|
||||||
|
- runhs
|
||||||
- runmany
|
- runmany
|
||||||
- runtime-arbitrary
|
- runtime-arbitrary
|
||||||
- rvar
|
- rvar
|
||||||
@ -9530,6 +9565,7 @@ broken-packages:
|
|||||||
- shadower
|
- shadower
|
||||||
- shake-bindist
|
- shake-bindist
|
||||||
- shake-cabal-build
|
- shake-cabal-build
|
||||||
|
- shake-dhall
|
||||||
- shake-extras
|
- shake-extras
|
||||||
- shake-minify
|
- shake-minify
|
||||||
- shake-pack
|
- shake-pack
|
||||||
@ -9805,6 +9841,7 @@ broken-packages:
|
|||||||
- spanout
|
- spanout
|
||||||
- sparkle
|
- sparkle
|
||||||
- sparrow
|
- sparrow
|
||||||
|
- spars
|
||||||
- sparse
|
- sparse
|
||||||
- sparse-lin-alg
|
- sparse-lin-alg
|
||||||
- sparsebit
|
- sparsebit
|
||||||
@ -10045,6 +10082,7 @@ broken-packages:
|
|||||||
- superconstraints
|
- superconstraints
|
||||||
- superevent
|
- superevent
|
||||||
- supermonad
|
- supermonad
|
||||||
|
- supernova
|
||||||
- supero
|
- supero
|
||||||
- supervisor
|
- supervisor
|
||||||
- supervisors
|
- supervisors
|
||||||
@ -10218,7 +10256,6 @@ broken-packages:
|
|||||||
- termbox-bindings
|
- termbox-bindings
|
||||||
- terminal-text
|
- terminal-text
|
||||||
- termination-combinators
|
- termination-combinators
|
||||||
- termonad
|
|
||||||
- termplot
|
- termplot
|
||||||
- terntup
|
- terntup
|
||||||
- terrahs
|
- terrahs
|
||||||
@ -10656,6 +10693,7 @@ broken-packages:
|
|||||||
- uri-parse
|
- uri-parse
|
||||||
- uri-template
|
- uri-template
|
||||||
- uri-templater
|
- uri-templater
|
||||||
|
- url-bytes
|
||||||
- url-decoders
|
- url-decoders
|
||||||
- url-generic
|
- url-generic
|
||||||
- URLb
|
- URLb
|
||||||
|
2042
pkgs/development/haskell-modules/hackage-packages.nix
generated
2042
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -7,13 +7,13 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "mimalloc";
|
pname = "mimalloc";
|
||||||
version = "1.6.3";
|
version = "1.6.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "microsoft";
|
owner = "microsoft";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0hk30adrm0s1g5flfaqfr3lc72y3hlmhqnyrqd7p0y91rsaw86b9";
|
sha256 = "0b6ymi2a9is2q6n49dvlnjxknikj0rfff5ygbc4n7894h5mllvvr";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ninja ];
|
nativeBuildInputs = [ cmake ninja ];
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
, lldbVersions ? [ ]
|
, lldbVersions ? [ ]
|
||||||
, cmakeVersions ? [ ]
|
, cmakeVersions ? [ ]
|
||||||
, includeNDK ? false
|
, includeNDK ? false
|
||||||
, ndkVersion ? "18.1.5063045"
|
, ndkVersion ? "21.0.6113669"
|
||||||
, useGoogleAPIs ? false
|
, useGoogleAPIs ? false
|
||||||
, useGoogleTVAddOns ? false
|
, useGoogleTVAddOns ? false
|
||||||
, includeExtras ? []
|
, includeExtras ? []
|
||||||
|
@ -672,70 +672,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "Solver for ConstraintLayout 1.0.0-alpha8";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha8.zip";
|
|
||||||
sha1 = "cd13d16a8f0198c1d6040ec8b1d0d4e5bb7feb6a";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
||||||
@ -896,70 +832,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
|
||||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
|
||||||
revision = "1";
|
|
||||||
displayName = "ConstraintLayout for Android 1.0.0-alpha8";
|
|
||||||
archives = {
|
|
||||||
|
|
||||||
all = fetchurl {
|
|
||||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha8.zip";
|
|
||||||
sha1 = "7912ba03b04831f918f523648f118c4ee4da7604";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
||||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
||||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
||||||
|
@ -7,12 +7,14 @@ deployAndroidPackage {
|
|||||||
inherit package os;
|
inherit package os;
|
||||||
buildInputs = [ autoPatchelfHook makeWrapper pkgs.python2 ]
|
buildInputs = [ autoPatchelfHook makeWrapper pkgs.python2 ]
|
||||||
++ lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out ];
|
++ lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out ];
|
||||||
patchInstructions = lib.optionalString (os == "linux") ''
|
patchInstructions = lib.optionalString (os == "linux") (''
|
||||||
patchShebangs .
|
patchShebangs .
|
||||||
|
|
||||||
|
'' + lib.optionalString (builtins.compareVersions (lib.getVersion package) "21" > 0) ''
|
||||||
patch -p1 \
|
patch -p1 \
|
||||||
--no-backup-if-mismatch < ${./make_standalone_toolchain.py_18.patch}
|
--no-backup-if-mismatch < ${./make_standalone_toolchain.py_18.patch}
|
||||||
wrapProgram $(pwd)/build/tools/make_standalone_toolchain.py --prefix PATH : "${runtime_paths}"
|
wrapProgram $(pwd)/build/tools/make_standalone_toolchain.py --prefix PATH : "${runtime_paths}"
|
||||||
|
'' + ''
|
||||||
|
|
||||||
# TODO: allow this stuff
|
# TODO: allow this stuff
|
||||||
rm -rf docs tests
|
rm -rf docs tests
|
||||||
@ -46,6 +48,6 @@ deployAndroidPackage {
|
|||||||
do
|
do
|
||||||
ln -sf ../libexec/android-sdk/ndk-bundle/$i $out/bin/$i
|
ln -sf ../libexec/android-sdk/ndk-bundle/$i $out/bin/$i
|
||||||
done
|
done
|
||||||
'';
|
'');
|
||||||
noAuditTmpdir = true; # Audit script gets invoked by the build/ component in the path for the make standalone script
|
noAuditTmpdir = true; # Audit script gets invoked by the build/ component in the path for the make standalone script
|
||||||
}
|
}
|
||||||
|
22
pkgs/development/ocaml-modules/cohttp/async.nix
Normal file
22
pkgs/development/ocaml-modules/cohttp/async.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ stdenv, buildDunePackage, async, cohttp, conduit-async, uri, ppx_sexp_conv
|
||||||
|
, logs, magic-mime }:
|
||||||
|
|
||||||
|
if !stdenv.lib.versionAtLeast cohttp.version "0.99" then
|
||||||
|
cohttp
|
||||||
|
else if !stdenv.lib.versionAtLeast async.version "0.13" then
|
||||||
|
throw "cohttp-async needs async-0.13 (hence OCaml >= 4.08)"
|
||||||
|
else
|
||||||
|
|
||||||
|
buildDunePackage {
|
||||||
|
pname = "cohttp-async";
|
||||||
|
useDune2 = true;
|
||||||
|
inherit (cohttp) version src;
|
||||||
|
|
||||||
|
buildInputs = [ ppx_sexp_conv ];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ async cohttp conduit-async logs magic-mime uri ];
|
||||||
|
|
||||||
|
meta = cohttp.meta // {
|
||||||
|
description = "CoHTTP implementation for the Async concurrency library";
|
||||||
|
};
|
||||||
|
}
|
19
pkgs/development/ocaml-modules/conduit/async.nix
Normal file
19
pkgs/development/ocaml-modules/conduit/async.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ stdenv, buildDunePackage, async, async_ssl, ppx_sexp_conv, conduit }:
|
||||||
|
|
||||||
|
if !stdenv.lib.versionAtLeast conduit.version "1.0"
|
||||||
|
then conduit
|
||||||
|
else
|
||||||
|
|
||||||
|
buildDunePackage {
|
||||||
|
pname = "conduit-async";
|
||||||
|
useDune2 = true;
|
||||||
|
inherit (conduit) version src;
|
||||||
|
|
||||||
|
buildInputs = [ ppx_sexp_conv ];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ async async_ssl conduit ];
|
||||||
|
|
||||||
|
meta = conduit.meta // {
|
||||||
|
description = "A network connection establishment library for Async";
|
||||||
|
};
|
||||||
|
}
|
@ -18,7 +18,7 @@ buildDunePackage rec {
|
|||||||
propagatedBuildInputs = [ astring ipaddr ipaddr-sexp sexplib uri ];
|
propagatedBuildInputs = [ astring ipaddr ipaddr-sexp sexplib uri ];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Network connection library for TCP and SSL";
|
description = "A network connection establishment library";
|
||||||
license = stdenv.lib.licenses.isc;
|
license = stdenv.lib.licenses.isc;
|
||||||
maintainers = with stdenv.lib.maintainers; [ alexfmpe vbgl ];
|
maintainers = with stdenv.lib.maintainers; [ alexfmpe vbgl ];
|
||||||
homepage = "https://github.com/mirage/ocaml-conduit";
|
homepage = "https://github.com/mirage/ocaml-conduit";
|
||||||
|
@ -14,11 +14,11 @@ else
|
|||||||
stdenv.mkDerivation rec
|
stdenv.mkDerivation rec
|
||||||
{
|
{
|
||||||
pname = "eliom";
|
pname = "eliom";
|
||||||
version = "6.12.0";
|
version = "6.12.1";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
|
url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
|
||||||
sha256 = "015jh72v6ch9h9czd8sn5kjz3pv6lsnvvnhdjgrplwj443dn1xp8";
|
sha256 = "04c1sz113015gyhj3w7flw7l4bv0v50q6n04kk8dybcravzy2xgx";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild js_of_ocaml-ppx_deriving_json opaline
|
buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild js_of_ocaml-ppx_deriving_json opaline
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{ janePackage
|
{ janePackage
|
||||||
, ctypes
|
, ctypes
|
||||||
|
, dune-configurator
|
||||||
, num
|
, num
|
||||||
, octavius
|
, octavius
|
||||||
, ppxlib
|
, ppxlib
|
||||||
@ -417,6 +418,15 @@ rec {
|
|||||||
propagatedBuildInputs = [ async shell ];
|
propagatedBuildInputs = [ async shell ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async_ssl = janePackage {
|
||||||
|
pname = "async_ssl";
|
||||||
|
useDune2 = true;
|
||||||
|
hash = "0z5dbiam5k7ipx9ph4r8nqv0a1ldx1ymxw3xjxgrdjda90lmwf2k";
|
||||||
|
meta.description = "Async wrappers for SSL";
|
||||||
|
buildInputs = [ dune-configurator ];
|
||||||
|
propagatedBuildInputs = [ async ctypes openssl ];
|
||||||
|
};
|
||||||
|
|
||||||
core_bench = janePackage {
|
core_bench = janePackage {
|
||||||
pname = "core_bench";
|
pname = "core_bench";
|
||||||
hash = "1nk0i3z8rqrljbf4bc7ljp71g0a4361nh85s2ang0lgxri74zacm";
|
hash = "1nk0i3z8rqrljbf4bc7ljp71g0a4361nh85s2ang0lgxri74zacm";
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
, requests_download
|
, requests_download
|
||||||
, zipfile36
|
, zipfile36
|
||||||
, pythonOlder
|
, pythonOlder
|
||||||
, pytest_4
|
, pytest
|
||||||
, testpath
|
, testpath
|
||||||
, responses
|
, responses
|
||||||
, pytoml
|
, pytoml
|
||||||
@ -39,7 +39,7 @@ buildPythonPackage rec {
|
|||||||
zipfile36
|
zipfile36
|
||||||
];
|
];
|
||||||
|
|
||||||
checkInputs = [ pytest_4 testpath responses ];
|
checkInputs = [ pytest testpath responses ];
|
||||||
|
|
||||||
# Disable test that needs some ini file.
|
# Disable test that needs some ini file.
|
||||||
# Disable test that wants hg
|
# Disable test that wants hg
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "google-api-python-client";
|
pname = "google-api-python-client";
|
||||||
version = "1.10.1";
|
version = "1.11.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "0v4yzrmrp1l3nlkw9ibllgblwy8y45anzfkkky2vghkl6w8411xa";
|
sha256 = "0yxrz897kpjypfqzcy0ry90hc34w47q4fzqidp81h6pg01c03x6a";
|
||||||
};
|
};
|
||||||
|
|
||||||
# No tests included in archive
|
# No tests included in archive
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
{ lib
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, pythonOlder
|
||||||
|
, jupyterhub
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "jupyterhub-tmpauthenticator";
|
||||||
|
version = "0.6";
|
||||||
|
disabled = pythonOlder "3.5";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
sha256 = "064x1ypxwx1l270ic97p8czbzb7swl9758v40k3w2gaqf9762f0l";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ jupyterhub ];
|
||||||
|
|
||||||
|
# No tests available in the package
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "tmpauthenticator" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Simple Jupyterhub authenticator that allows anyone to log in.";
|
||||||
|
license = with licenses; [ bsd3 ];
|
||||||
|
homepage = "https://github.com/jupyterhub/tmpauthenticator";
|
||||||
|
maintainers = with maintainers; [ chiroptical ];
|
||||||
|
};
|
||||||
|
}
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "mautrix";
|
pname = "mautrix";
|
||||||
version = "0.6.1";
|
version = "0.5.8";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "a86c6448fb3c0f5e149f3347fbf0cd776431aec16a137a9b45298b6fe5991e42";
|
sha256 = "1hqg32n7pmjhap0ybfcf05zgfcyyirb4fm1m7gf44dwh40da6qz0";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
@ -11,11 +11,11 @@ let
|
|||||||
ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
|
ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
|
||||||
in buildPythonPackage rec {
|
in buildPythonPackage rec {
|
||||||
pname = "reportlab";
|
pname = "reportlab";
|
||||||
version = "3.5.47";
|
version = "3.5.48";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "0gw0902yjszwxk0air69in7nk4h2q36r96ga3r4bz0p0cnmagcj5";
|
sha256 = "0bfe3fe6e1bd1d922f83683eae2ba1d2d29de94e25fb115eacca9530b4b02f76";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [ glibcLocales ];
|
checkInputs = [ glibcLocales ];
|
||||||
|
28
pkgs/development/python-modules/ujson/2.nix
Normal file
28
pkgs/development/python-modules/ujson/2.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, setuptools_scm
|
||||||
|
, pytestCheckHook
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "ujson";
|
||||||
|
version = "2.0.3";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
sha256 = "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ setuptools_scm ];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://pypi.python.org/pypi/ujson";
|
||||||
|
description = "Ultra fast JSON encoder and decoder for Python";
|
||||||
|
license = licenses.bsd3;
|
||||||
|
};
|
||||||
|
}
|
@ -8,11 +8,11 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "coursier";
|
pname = "coursier";
|
||||||
version = "2.0.0-RC6-18";
|
version = "2.0.0-RC6-25";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/coursier/coursier/releases/download/v${version}/coursier";
|
url = "https://github.com/coursier/coursier/releases/download/v${version}/coursier";
|
||||||
sha256 = "0vym99fyn0g8l5y2zvhf73ww17wywrh503wg5aw4nilj8w1ncvn2";
|
sha256 = "0hkkfm18v2hvkf344ln9ka8gi3jdl6bvqpafc6h06f06vmp8prch";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
@ -18,8 +18,8 @@ mkDerivation {
|
|||||||
version = "0.2.0";
|
version = "0.2.0";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://github.com/wz1000/ghcide";
|
url = "https://github.com/wz1000/ghcide";
|
||||||
sha256 = "1zq7ngaak8il91a309rl51dghzasnk4m2sm3av6d93cyqyra1hfc";
|
sha256 = "112bsk2660750n94gnsgrvd30rk0ccxb8dbhka606a11pcqv5cgx";
|
||||||
rev = "078e3d3c0d319f83841ccbcdc60ff5f0e243f6be";
|
rev = "3f6cd4553279ec47d1599b502720791a4f4613cd";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
isLibrary = true;
|
isLibrary = true;
|
||||||
|
26
pkgs/development/tools/misc/kimg/default.nix
Normal file
26
pkgs/development/tools/misc/kimg/default.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, cmake, asciidoc, pkg-config, imagemagick }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "kimg";
|
||||||
|
version = "0.3.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "KnightOS";
|
||||||
|
repo = "kimg";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "00gj420m0jvhgm8kkslw8r69nl7r73bxrh6gqs2mx16ymcpkanpk";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake asciidoc pkg-config ];
|
||||||
|
|
||||||
|
buildInputs = [ imagemagick ];
|
||||||
|
|
||||||
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://knightos.org/";
|
||||||
|
description = "Converts image formats supported by ImageMagick to the KnightOS image format";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ siraben ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||||
buildGoPackage rec {
|
buildGoPackage rec {
|
||||||
pname = "packer";
|
pname = "packer";
|
||||||
version = "1.6.1";
|
version = "1.6.2";
|
||||||
|
|
||||||
goPackagePath = "github.com/hashicorp/packer";
|
goPackagePath = "github.com/hashicorp/packer";
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
|||||||
owner = "hashicorp";
|
owner = "hashicorp";
|
||||||
repo = "packer";
|
repo = "packer";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0jm8950rk0cdf84z0yxm8ic3pm353cgmxr1akn6kq1bwg2w0vsrq";
|
sha256 = "104jw2jcshzds74d7m4yqn6mbk7lgps6qnqmp6h395b1mdyjhink";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
1283
pkgs/development/tools/rust/cargo-make/Cargo.lock
generated
1283
pkgs/development/tools/rust/cargo-make/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,32 +1,22 @@
|
|||||||
{ stdenv, fetchurl, runCommand, fetchFromGitHub, rustPlatform, Security, openssl, pkg-config
|
{ stdenv, fetchurl, runCommand, fetchCrate, rustPlatform, Security, openssl, pkg-config
|
||||||
, SystemConfiguration
|
, SystemConfiguration
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "cargo-make";
|
pname = "cargo-make";
|
||||||
version = "0.32.2";
|
version = "0.32.3";
|
||||||
|
|
||||||
src =
|
src = fetchCrate {
|
||||||
let
|
inherit pname version;
|
||||||
source = fetchFromGitHub {
|
sha256 = "0qcwhmba83rrwqnlkcmvnmbj9jb2bwm0mka8rcp26y4yxmjm431n";
|
||||||
owner = "sagiegurari";
|
};
|
||||||
repo = pname;
|
|
||||||
rev = version;
|
|
||||||
sha256 = "0l0pislc7pgx1m68kirvadraq88c86mm1k46wbz3a47ph2d4g912";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
runCommand "source" {} ''
|
|
||||||
cp -R ${source} $out
|
|
||||||
chmod +w $out
|
|
||||||
cp ${./Cargo.lock} $out/Cargo.lock
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
buildInputs = [ openssl ]
|
buildInputs = [ openssl ]
|
||||||
++ stdenv.lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
|
++ stdenv.lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
|
||||||
|
|
||||||
cargoSha256 = "16ygkh8sbb37nfc41shxg9nh2mbszyschbqrrr1gr7xzf1z36ipp";
|
cargoSha256 = "1dmcdzdm7kzmrq2xsiaikns2xzjpdmh9w8pw653nlqfjjr2h6pxp";
|
||||||
|
|
||||||
# Some tests fail because they need network access.
|
# Some tests fail because they need network access.
|
||||||
# However, Travis ensures a proper build.
|
# However, Travis ensures a proper build.
|
||||||
|
35
pkgs/development/tools/wxformbuilder/default.nix
Normal file
35
pkgs/development/tools/wxformbuilder/default.nix
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, wxGTK31
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "wxFormBuilder";
|
||||||
|
version = "unstable-2020-08-18";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "wxFormBuilder";
|
||||||
|
repo = "wxFormBuilder";
|
||||||
|
rev = "d053665cc33a79dd935b518b5e7aea6baf493c92";
|
||||||
|
sha256 = "sha256-hTO7Fyp5ZWpq2CfIYEXB85oOkNrqr6Njfh8h0t9B6wU=";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
ninja
|
||||||
|
meson
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
wxGTK31
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "RAD tool for wxWidgets GUI design";
|
||||||
|
homepage = "https://github.com/wxFormBuilder/wxFormBuilder";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = with maintainers; [ matthuszagh ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,123 +0,0 @@
|
|||||||
diff -aur exult-1.4.9rc1.orig/desktop/exult.desktop exult-1.4.9rc1/desktop/exult.desktop
|
|
||||||
--- exult-1.4.9rc1.orig/desktop/exult.desktop 2008-07-11 05:41:06.000000000 +0600
|
|
||||||
+++ exult-1.4.9rc1/desktop/exult.desktop 2012-05-19 13:15:30.616084585 +0600
|
|
||||||
@@ -1,9 +1,8 @@
|
|
||||||
[Desktop Entry]
|
|
||||||
-Encoding=UTF-8
|
|
||||||
Name=Exult
|
|
||||||
Comment=Exult Ultima 7 Engine
|
|
||||||
Exec=exult
|
|
||||||
-Icon=exult.png
|
|
||||||
+Icon=exult
|
|
||||||
Terminal=false
|
|
||||||
Type=Application
|
|
||||||
-Categories=Application;Game;RolePlaying;
|
|
||||||
+Categories=Game;RolePlaying;
|
|
||||||
diff -aur exult-1.4.9rc1.orig/files/databuf.h exult-1.4.9rc1/files/databuf.h
|
|
||||||
--- exult-1.4.9rc1.orig/files/databuf.h 2010-03-10 09:07:05.000000000 +0500
|
|
||||||
+++ exult-1.4.9rc1/files/databuf.h 2012-05-19 12:50:16.856076030 +0600
|
|
||||||
@@ -18,6 +18,7 @@
|
|
||||||
#define DATA_H
|
|
||||||
|
|
||||||
#include <cstdio>
|
|
||||||
+#include <cstddef>
|
|
||||||
#include <cstring>
|
|
||||||
#include <cassert>
|
|
||||||
#include <fstream>
|
|
||||||
diff -aur exult-1.4.9rc1.orig/files/U7obj.h exult-1.4.9rc1/files/U7obj.h
|
|
||||||
--- exult-1.4.9rc1.orig/files/U7obj.h 2010-02-25 07:52:07.000000000 +0500
|
|
||||||
+++ exult-1.4.9rc1/files/U7obj.h 2012-05-19 12:50:35.916076137 +0600
|
|
||||||
@@ -26,6 +26,7 @@
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include <cstring>
|
|
||||||
+#include <cstddef>
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "utils.h"
|
|
||||||
|
|
||||||
diff -aur exult-1.4.9rc1.orig/imagewin/manip.h exult-1.4.9rc1/imagewin/manip.h
|
|
||||||
--- exult-1.4.9rc1.orig/imagewin/manip.h 2010-08-29 20:26:00.000000000 +0600
|
|
||||||
+++ exult-1.4.9rc1/imagewin/manip.h 2012-05-19 13:02:45.159413596 +0600
|
|
||||||
@@ -319,7 +319,7 @@
|
|
||||||
static uintD copy(uintS src)
|
|
||||||
{
|
|
||||||
unsigned int r, g, b;
|
|
||||||
- split_source(src,r,g,b);
|
|
||||||
+ ManipBaseSrc<color_s,color_d>::split_source(src,r,g,b);
|
|
||||||
return ManipBaseDest<color_d>::rgb(r,g,b);
|
|
||||||
}
|
|
||||||
static void copy(uintD& dest, uintS src)
|
|
||||||
diff -aur exult-1.4.9rc1.orig/istring.h exult-1.4.9rc1/istring.h
|
|
||||||
--- exult-1.4.9rc1.orig/istring.h 2005-06-07 15:55:39.000000000 +0600
|
|
||||||
+++ exult-1.4.9rc1/istring.h 2012-05-19 13:01:14.886079750 +0600
|
|
||||||
@@ -162,19 +162,19 @@
|
|
||||||
|
|
||||||
_Myt& operator+=(const _Myt& _Right)
|
|
||||||
{ // append _Right
|
|
||||||
- append(_Right);
|
|
||||||
+ this->append(_Right);
|
|
||||||
return (*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_Myt& operator+=(const _Elem *_Ptr)
|
|
||||||
{ // append [_Ptr, <null>)
|
|
||||||
- append(_Ptr);
|
|
||||||
+ this->append(_Ptr);
|
|
||||||
return (*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_Myt& operator+=(_Elem _Ch)
|
|
||||||
{ // append 1 * _Ch
|
|
||||||
- append(static_cast<size_type>(1), _Ch);
|
|
||||||
+ this->append(static_cast<size_type>(1), _Ch);
|
|
||||||
return (*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff -aur exult-1.4.9rc1.orig/shapes/pngio.cc exult-1.4.9rc1/shapes/pngio.cc
|
|
||||||
--- exult-1.4.9rc1.orig/shapes/pngio.cc 2010-02-15 18:48:11.000000000 -0200
|
|
||||||
+++ exult-1.4.9rc1/shapes/pngio.cc 2013-09-22 20:56:37.809763588 -0300
|
|
||||||
@@ -26,6 +26,7 @@
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
+#include <string.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_PNG_H
|
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@
|
|
||||||
}
|
|
||||||
// Allocate info. structure.
|
|
||||||
png_infop info = png_create_info_struct(png);
|
|
||||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
|
||||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
|
||||||
{
|
|
||||||
png_destroy_read_struct(&png, &info, 0);
|
|
||||||
fclose(fp);
|
|
||||||
@@ -208,7 +209,7 @@
|
|
||||||
}
|
|
||||||
// Allocate info. structure.
|
|
||||||
png_infop info = png_create_info_struct(png);
|
|
||||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
|
||||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
|
||||||
{
|
|
||||||
png_destroy_write_struct(&png, &info);
|
|
||||||
fclose(fp);
|
|
||||||
@@ -306,7 +307,7 @@
|
|
||||||
}
|
|
||||||
// Allocate info. structure.
|
|
||||||
png_infop info = png_create_info_struct(png);
|
|
||||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
|
||||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
|
||||||
{
|
|
||||||
png_destroy_read_struct(&png, &info, 0);
|
|
||||||
fclose(fp);
|
|
||||||
@@ -395,7 +396,7 @@
|
|
||||||
}
|
|
||||||
// Allocate info. structure.
|
|
||||||
png_infop info = png_create_info_struct(png);
|
|
||||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
|
||||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
|
||||||
{
|
|
||||||
png_destroy_write_struct(&png, &info);
|
|
||||||
fclose(fp);
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, pkgconfig, SDL, libogg, libvorbis, zlib, unzip }:
|
{ stdenv, fetchurl, pkgconfig, SDL2, libogg, libvorbis, zlib, unzip }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
@ -12,27 +12,20 @@ let
|
|||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "exult-1.4.9rc1";
|
name = "exult-1.6";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/exult/${name}.tar.gz";
|
url = "mirror://sourceforge/exult/${name}.tar.gz";
|
||||||
sha256 = "0a03a2l3ji6h48n106d4w55l8v6lni1axniafnvvv5c5n3nz5bgd";
|
sha256 = "1dm27qkxj30567zb70q4acddsizn0xyi3z87hg7lysxdkyv49s3s";
|
||||||
};
|
};
|
||||||
|
|
||||||
configureFlags = [ "--disable-tools" ];
|
configureFlags = [ "--disable-tools" ];
|
||||||
|
|
||||||
patches =
|
|
||||||
[ # Arch Linux patch set.
|
|
||||||
./arch.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
buildInputs = [ SDL libogg libvorbis zlib unzip ];
|
buildInputs = [ SDL2 libogg libvorbis zlib unzip ];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
makeFlags = [ "DESTDIR=$(out)" ];
|
|
||||||
|
|
||||||
NIX_LDFLAGS = "-lX11";
|
NIX_LDFLAGS = "-lX11";
|
||||||
|
|
||||||
postInstall =
|
postInstall =
|
||||||
|
@ -14,42 +14,43 @@
|
|||||||
, ocl-icd ? null
|
, ocl-icd ? null
|
||||||
, gperftools ? null
|
, gperftools ? null
|
||||||
, eigen ? null
|
, eigen ? null
|
||||||
, gpuEnabled ? true
|
, enableAVX2 ? false
|
||||||
, useAVX2 ? false
|
, enableBigBoards ? false
|
||||||
, cudaSupport ? false
|
, enableCuda ? false
|
||||||
, useTcmalloc ? true}:
|
, enableGPU ? true
|
||||||
|
, enableTcmalloc ? true}:
|
||||||
|
|
||||||
assert !gpuEnabled -> (
|
assert !enableGPU -> (
|
||||||
eigen != null &&
|
eigen != null &&
|
||||||
!cudaSupport);
|
!enableCuda);
|
||||||
|
|
||||||
assert cudaSupport -> (
|
assert enableCuda -> (
|
||||||
libGL_driver != null &&
|
libGL_driver != null &&
|
||||||
cudatoolkit != null &&
|
cudatoolkit != null &&
|
||||||
cudnn != null);
|
cudnn != null);
|
||||||
|
|
||||||
assert !cudaSupport -> (
|
assert !enableCuda -> (
|
||||||
!gpuEnabled || (
|
!enableGPU || (
|
||||||
opencl-headers != null &&
|
opencl-headers != null &&
|
||||||
ocl-icd != null));
|
ocl-icd != null));
|
||||||
|
|
||||||
assert useTcmalloc -> (
|
assert enableTcmalloc -> (
|
||||||
gperftools != null);
|
gperftools != null);
|
||||||
|
|
||||||
let
|
let
|
||||||
env = if cudaSupport
|
env = if enableCuda
|
||||||
then gcc8Stdenv
|
then gcc8Stdenv
|
||||||
else stdenv;
|
else stdenv;
|
||||||
|
|
||||||
in env.mkDerivation rec {
|
in env.mkDerivation rec {
|
||||||
pname = "katago";
|
pname = "katago";
|
||||||
version = "1.6.0";
|
version = "1.6.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "lightvector";
|
owner = "lightvector";
|
||||||
repo = "katago";
|
repo = "katago";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1r84ws2rj7j8085v1cqffy9rg65rzrhk6z8jbxivqxsmsgs2zs48";
|
sha256 = "030ff9prnvpadgcb4x4hx6b6ggg10bwqcj8vd8nwrdz9sjq67yf7";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@ -60,42 +61,44 @@ in env.mkDerivation rec {
|
|||||||
buildInputs = [
|
buildInputs = [
|
||||||
libzip
|
libzip
|
||||||
boost
|
boost
|
||||||
] ++ lib.optionals (!gpuEnabled) [
|
] ++ lib.optionals (!enableGPU) [
|
||||||
eigen
|
eigen
|
||||||
] ++ lib.optionals (gpuEnabled && cudaSupport) [
|
] ++ lib.optionals (enableGPU && enableCuda) [
|
||||||
cudnn
|
cudnn
|
||||||
libGL_driver
|
libGL_driver
|
||||||
] ++ lib.optionals (gpuEnabled && !cudaSupport) [
|
] ++ lib.optionals (enableGPU && !enableCuda) [
|
||||||
opencl-headers
|
opencl-headers
|
||||||
ocl-icd
|
ocl-icd
|
||||||
] ++ lib.optionals useTcmalloc [
|
] ++ lib.optionals enableTcmalloc [
|
||||||
gperftools
|
gperftools
|
||||||
];
|
];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DNO_GIT_REVISION=ON"
|
"-DNO_GIT_REVISION=ON"
|
||||||
] ++ lib.optionals (!gpuEnabled) [
|
] ++ lib.optionals (!enableGPU) [
|
||||||
"-DUSE_BACKEND=EIGEN"
|
"-DUSE_BACKEND=EIGEN"
|
||||||
] ++ lib.optionals useAVX2 [
|
] ++ lib.optionals enableAVX2 [
|
||||||
"-DUSE_AVX2=ON"
|
"-DUSE_AVX2=ON"
|
||||||
] ++ lib.optionals (gpuEnabled && cudaSupport) [
|
] ++ lib.optionals (enableGPU && enableCuda) [
|
||||||
"-DUSE_BACKEND=CUDA"
|
"-DUSE_BACKEND=CUDA"
|
||||||
] ++ lib.optionals (gpuEnabled && !cudaSupport) [
|
] ++ lib.optionals (enableGPU && !enableCuda) [
|
||||||
"-DUSE_BACKEND=OPENCL"
|
"-DUSE_BACKEND=OPENCL"
|
||||||
] ++ lib.optionals useTcmalloc [
|
] ++ lib.optionals enableTcmalloc [
|
||||||
"-DUSE_TCMALLOC=ON"
|
"-DUSE_TCMALLOC=ON"
|
||||||
|
] ++ lib.optionals enableBigBoards [
|
||||||
|
"-DUSE_BIGGER_BOARDS_EXPENSIVE=ON"
|
||||||
];
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
cd cpp/
|
cd cpp/
|
||||||
'' + lib.optionalString cudaSupport ''
|
'' + lib.optionalString enableCuda ''
|
||||||
export CUDA_PATH="${cudatoolkit}"
|
export CUDA_PATH="${cudatoolkit}"
|
||||||
export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
|
export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin; cp katago $out/bin;
|
mkdir -p $out/bin; cp katago $out/bin;
|
||||||
'' + lib.optionalString cudaSupport ''
|
'' + lib.optionalString enableCuda ''
|
||||||
wrapProgram $out/bin/katago \
|
wrapProgram $out/bin/katago \
|
||||||
--prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib"
|
--prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib"
|
||||||
'';
|
'';
|
||||||
|
@ -130,7 +130,11 @@ let
|
|||||||
libapparmor.python
|
libapparmor.python
|
||||||
];
|
];
|
||||||
|
|
||||||
prePatch = prePatchCommon;
|
prePatch = prePatchCommon + ''
|
||||||
|
substituteInPlace ./utils/apparmor/easyprof.py --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||||
|
substituteInPlace ./utils/apparmor/aa.py --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||||
|
substituteInPlace ./utils/logprof.conf --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||||
|
'';
|
||||||
inherit patches;
|
inherit patches;
|
||||||
postPatch = "cd ./utils";
|
postPatch = "cd ./utils";
|
||||||
makeFlags = [ "LANGS=" ];
|
makeFlags = [ "LANGS=" ];
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
python.pkgs.buildPythonApplication rec {
|
python.pkgs.buildPythonApplication rec {
|
||||||
pname = "bcc";
|
pname = "bcc";
|
||||||
version = "0.15.0";
|
version = "0.16.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/iovisor/bcc/releases/download/v${version}/bcc-src-with-submodule.tar.gz";
|
url = "https://github.com/iovisor/bcc/releases/download/v${version}/bcc-src-with-submodule.tar.gz";
|
||||||
sha256 = "1k00xbhdzdvqp4hfxpgg34bbhnx597jjhpg1x6dz2w80r7xzsj28";
|
sha256 = "sha256-ekVRyugpZOU1nr0N9kWCSoJTmtD2qGsn/DmWgK7XZ/c=";
|
||||||
};
|
};
|
||||||
format = "other";
|
format = "other";
|
||||||
|
|
||||||
|
@ -9,11 +9,11 @@ in
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "klibc";
|
pname = "klibc";
|
||||||
version = "2.0.7";
|
version = "2.0.8";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz";
|
url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz";
|
||||||
sha256 = "08li3aj9bvzabrih98jdxi3m19h85cp53s8cr7cqad42r8vjdvxb";
|
sha256 = "0dmlkhnn5q8fc6rkzsisir4chkzmmiq6xkjmvyvf0g7yihwz2j2f";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./no-reinstall-kernel-headers.patch ];
|
patches = [ ./no-reinstall-kernel-headers.patch ];
|
||||||
|
@ -9,11 +9,11 @@ let
|
|||||||
in
|
in
|
||||||
buildPythonApplication rec {
|
buildPythonApplication rec {
|
||||||
pname = "matrix-synapse";
|
pname = "matrix-synapse";
|
||||||
version = "1.19.0";
|
version = "1.19.1";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "1fl9p0cb442271hx7zjz8vp111xgvdpn4khk8bk3kl8z9hjs2l1p";
|
sha256 = "0ddn3g3q0nkxpmw0xpjhnl0m1g3lrlp89abqbal9k6n689h6kfly";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "timescaledb";
|
pname = "timescaledb";
|
||||||
version = "1.7.2";
|
version = "1.7.3";
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
buildInputs = [ postgresql openssl ];
|
buildInputs = [ postgresql openssl ];
|
||||||
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
|||||||
owner = "timescale";
|
owner = "timescale";
|
||||||
repo = "timescaledb";
|
repo = "timescaledb";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
sha256 = "0xqyq3a43j2rav5n87lv1d0f66h9kqjnlxq5nq5d54h5g5qbsr3y";
|
sha256 = "1y3w1ap1cxmi691wfz078r2h74pcwf38zs8lr985pfmb25w47q0l";
|
||||||
};
|
};
|
||||||
|
|
||||||
cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" ];
|
cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" ];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, rustPlatform
|
, rustPlatform
|
||||||
, fetchFromGitHub
|
, fetchCrate
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, coreutils
|
, coreutils
|
||||||
@ -12,11 +12,9 @@ rustPlatform.buildRustPackage rec {
|
|||||||
pname = "broot";
|
pname = "broot";
|
||||||
version = "0.20.3";
|
version = "0.20.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchCrate {
|
||||||
owner = "Canop";
|
inherit pname version;
|
||||||
repo = pname;
|
sha256 = "0vw956c5xpjsbd9b0ardvgi9jjqb230m2x5n4h9ai0yiwizc8rh6";
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "0hbz7cslngl77qka8sl84fjhijbqbw69dj058ghhsgaxw06nypg2";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "1zl4p3n327iq7nm7hi79zjxv2gvw9f3lwgkg1qp52kycv1af5gqp";
|
cargoSha256 = "1zl4p3n327iq7nm7hi79zjxv2gvw9f3lwgkg1qp52kycv1af5gqp";
|
||||||
|
@ -21,6 +21,12 @@ rustPlatform.buildRustPackage rec {
|
|||||||
url = "https://github.com/NerdyPepper/eva/commit/cacf51dbb9748b1dbe97b35f3c593a0a272bd4db.patch";
|
url = "https://github.com/NerdyPepper/eva/commit/cacf51dbb9748b1dbe97b35f3c593a0a272bd4db.patch";
|
||||||
sha256 = "11q7dkz2x1888f3awnlr1nbbxzzfjrr46kd0kk6sgjdkyfh50cvv";
|
sha256 = "11q7dkz2x1888f3awnlr1nbbxzzfjrr46kd0kk6sgjdkyfh50cvv";
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# to fix `cargo test -- --test-threads $NIX_BUILD_CORES`
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/NerdyPepper/eva/commit/ccfb3d327567dbaf03b2283c7e684477e2e84590.patch";
|
||||||
|
sha256 = "003yxqlyi8jna0rf05q2a006r2pkz6pcwwfl3dv8zb6p83kk1kgj";
|
||||||
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchgit, flex, bison, python, autoconf, automake, gnulib, libtool
|
{ stdenv, fetchgit, flex, bison, python3, autoconf, automake, gnulib, libtool
|
||||||
, gettext, ncurses, libusb-compat-0_1, freetype, qemu, lvm2, unifont, pkgconfig
|
, gettext, ncurses, libusb-compat-0_1, freetype, qemu, lvm2, unifont, pkgconfig
|
||||||
, fuse # only needed for grub-mount
|
, fuse # only needed for grub-mount
|
||||||
, zfs ? null
|
, zfs ? null
|
||||||
@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
|
|||||||
./fix-bash-completion.patch
|
./fix-bash-completion.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ bison flex python pkgconfig autoconf automake ];
|
nativeBuildInputs = [ bison flex python3 pkgconfig autoconf automake ];
|
||||||
buildInputs = [ ncurses libusb-compat-0_1 freetype gettext lvm2 fuse libtool ]
|
buildInputs = [ ncurses libusb-compat-0_1 freetype gettext lvm2 fuse libtool ]
|
||||||
++ optional doCheck qemu
|
++ optional doCheck qemu
|
||||||
++ optional zfsSupport zfs;
|
++ optional zfsSupport zfs;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
{ fetchurl, stdenv, perl, makeWrapper, procps }:
|
{ fetchurl, stdenv, perl, makeWrapper, procps }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "parallel-20200722";
|
name = "parallel-20200822";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/parallel/${name}.tar.bz2";
|
url = "mirror://gnu/parallel/${name}.tar.bz2";
|
||||||
sha256 = "0vqd8nhf4lkvbfy7nnibxjkpzpfandpklqm0hrix5vki5x7x80a8";
|
sha256 = "02dy46g6f05p7s2qs8h6yg20p1zl3flxxf77n5jw74l3h1m24m4n";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [ "out" "man" ];
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{ stdenv, fetchurl, makeWrapper, jre, graphviz }:
|
{ stdenv, fetchurl, makeWrapper, jre, graphviz }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.2020.15";
|
version = "1.2020.16";
|
||||||
pname = "plantuml";
|
pname = "plantuml";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/plantuml/${version}/plantuml.${version}.jar";
|
url = "mirror://sourceforge/project/plantuml/${version}/plantuml.${version}.jar";
|
||||||
sha256 = "0dvm24ihdr71giz0mihg7wjqf2nrkk7a52vbbzimrvbilaih6s8v";
|
sha256 = "0k9dligb0b2kc8rl9k5wp9sh8z1kb8g97v5pfiiwa321lp8y6wpp";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
28
pkgs/tools/misc/sd-mux-ctrl/default.nix
Normal file
28
pkgs/tools/misc/sd-mux-ctrl/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ stdenv, fetchgit, cmake, pkgconfig, libftdi1, popt}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "sd-mux-ctrl-unstable";
|
||||||
|
version = "2020-02-17";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://git.tizen.org/cgit/tools/testlab/sd-mux";
|
||||||
|
rev = "9dd189d973da64e033a0c5c2adb3d94b23153d94";
|
||||||
|
sha256 = "0fxl8m1zkkyxkc2zi8930m0njfgnd04a22acny6vljnzag2shjvg";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
|
|
||||||
|
buildInputs = [ libftdi1 popt ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
install -D -m 644 ../doc/man/sd-mux-ctrl.1 $out/share/man/man1/sd-mux-ctrl.1
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Tool for controlling multiple sd-mux devices";
|
||||||
|
homepage = "https://wiki.tizen.org/SD_MUX";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ sarcasticadmin ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
@ -1,5 +1,8 @@
|
|||||||
{ stdenv, makeWrapper
|
{ stdenv
|
||||||
, buildGoModule, fetchFromGitHub, installShellFiles
|
, makeWrapper
|
||||||
|
, buildGoModule
|
||||||
|
, fetchFromGitHub
|
||||||
|
, installShellFiles
|
||||||
, git
|
, git
|
||||||
, gnupg
|
, gnupg
|
||||||
, xclip
|
, xclip
|
||||||
@ -26,11 +29,13 @@ buildGoModule rec {
|
|||||||
|
|
||||||
buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version} -X main.commit=${src.rev}" ];
|
buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version} -X main.commit=${src.rev}" ];
|
||||||
|
|
||||||
wrapperPath = stdenv.lib.makeBinPath ([
|
wrapperPath = stdenv.lib.makeBinPath (
|
||||||
git
|
[
|
||||||
gnupg
|
git
|
||||||
xclip
|
gnupg
|
||||||
] ++ stdenv.lib.optional stdenv.isLinux wl-clipboard);
|
xclip
|
||||||
|
] ++ stdenv.lib.optional stdenv.isLinux wl-clipboard
|
||||||
|
);
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
for shell in bash fish zsh; do
|
for shell in bash fish zsh; do
|
||||||
@ -49,11 +54,11 @@ buildGoModule rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "The slightly more awesome Standard Unix Password Manager for Teams. Written in Go.";
|
description = "The slightly more awesome Standard Unix Password Manager for Teams. Written in Go.";
|
||||||
homepage = "https://www.gopass.pw/";
|
homepage = "https://www.gopass.pw/";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ andir rvolosatovs ];
|
maintainers = with maintainers; [ andir rvolosatovs ];
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
|
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
gopass is a rewrite of the pass password manager in Go with the aim of
|
gopass is a rewrite of the pass password manager in Go with the aim of
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "podiff";
|
pname = "podiff";
|
||||||
version = "1.1";
|
version = "1.2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.1.tar.gz";
|
url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.2.tar.gz";
|
||||||
sha256 = "1zz6bcmka5zvk2rq775qv122lqh54aijkxlghvx7z0r6kh880x59";
|
sha256 = "1l2b4hh53xlx28riigwarzkhxpv1pcz059xj1ka33ccvxc6c20k9";
|
||||||
};
|
};
|
||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
|
@ -6,13 +6,13 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "cri-tools";
|
pname = "cri-tools";
|
||||||
version = "1.18.0";
|
version = "1.19.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kubernetes-sigs";
|
owner = "kubernetes-sigs";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "06sxjhjpd893fn945c1s4adri2bf7s50ddvcw5pnwb6qndzfljw6";
|
sha256 = "0dx21ws4nzzizzjb0g172fzvjgwck88ikr5c2av08ii06rys1567";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = null;
|
vendorSha256 = null;
|
||||||
|
@ -1183,6 +1183,7 @@ in
|
|||||||
|
|
||||||
androidndkPkgs = androidndkPkgs_18b;
|
androidndkPkgs = androidndkPkgs_18b;
|
||||||
androidndkPkgs_18b = (callPackage ../development/androidndk-pkgs {})."18b";
|
androidndkPkgs_18b = (callPackage ../development/androidndk-pkgs {})."18b";
|
||||||
|
androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21";
|
||||||
|
|
||||||
androidsdk_9_0 = androidenv.androidPkgs_9_0.androidsdk;
|
androidsdk_9_0 = androidenv.androidPkgs_9_0.androidsdk;
|
||||||
|
|
||||||
@ -2268,6 +2269,8 @@ in
|
|||||||
|
|
||||||
obinskit = callPackage ../applications/misc/obinskit {};
|
obinskit = callPackage ../applications/misc/obinskit {};
|
||||||
|
|
||||||
|
odafileconverter = libsForQt5.callPackage ../applications/graphics/odafileconverter {};
|
||||||
|
|
||||||
pastel = callPackage ../applications/misc/pastel {
|
pastel = callPackage ../applications/misc/pastel {
|
||||||
inherit (darwin.apple_sdk.frameworks) Security;
|
inherit (darwin.apple_sdk.frameworks) Security;
|
||||||
};
|
};
|
||||||
@ -4884,6 +4887,11 @@ in
|
|||||||
|
|
||||||
kippo = callPackage ../servers/kippo { };
|
kippo = callPackage ../servers/kippo { };
|
||||||
|
|
||||||
|
kimg = callPackage ../development/tools/misc/kimg {
|
||||||
|
asciidoc = asciidoc-full;
|
||||||
|
imagemagick = imagemagick7Big;
|
||||||
|
};
|
||||||
|
|
||||||
kristall = libsForQt5.callPackage ../applications/networking/browsers/kristall { };
|
kristall = libsForQt5.callPackage ../applications/networking/browsers/kristall { };
|
||||||
|
|
||||||
kzipmix = pkgsi686Linux.callPackage ../tools/compression/kzipmix { };
|
kzipmix = pkgsi686Linux.callPackage ../tools/compression/kzipmix { };
|
||||||
@ -6804,6 +6812,8 @@ in
|
|||||||
inherit (darwin.apple_sdk.frameworks) Security;
|
inherit (darwin.apple_sdk.frameworks) Security;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sd-mux-ctrl = callPackage ../tools/misc/sd-mux-ctrl { };
|
||||||
|
|
||||||
sd-switch = callPackage ../os-specific/linux/sd-switch { };
|
sd-switch = callPackage ../os-specific/linux/sd-switch { };
|
||||||
|
|
||||||
sdate = callPackage ../tools/misc/sdate { };
|
sdate = callPackage ../tools/misc/sdate { };
|
||||||
@ -9234,6 +9244,8 @@ in
|
|||||||
|
|
||||||
jwasm = callPackage ../development/compilers/jwasm { };
|
jwasm = callPackage ../development/compilers/jwasm { };
|
||||||
|
|
||||||
|
knightos-kcc = callPackage ../development/compilers/kcc { };
|
||||||
|
|
||||||
kotlin = callPackage ../development/compilers/kotlin { };
|
kotlin = callPackage ../development/compilers/kotlin { };
|
||||||
|
|
||||||
lazarus = callPackage ../development/compilers/fpc/lazarus.nix {
|
lazarus = callPackage ../development/compilers/fpc/lazarus.nix {
|
||||||
@ -15674,6 +15686,8 @@ in
|
|||||||
wt3
|
wt3
|
||||||
wt4;
|
wt4;
|
||||||
|
|
||||||
|
wxformbuilder = callPackage ../development/tools/wxformbuilder { };
|
||||||
|
|
||||||
wxGTK = wxGTK28;
|
wxGTK = wxGTK28;
|
||||||
|
|
||||||
wxGTK30 = wxGTK30-gtk2;
|
wxGTK30 = wxGTK30-gtk2;
|
||||||
@ -20346,6 +20360,8 @@ in
|
|||||||
|
|
||||||
gopher = callPackage ../applications/networking/gopher/gopher { };
|
gopher = callPackage ../applications/networking/gopher/gopher { };
|
||||||
|
|
||||||
|
gophernotes = callPackage ../applications/editors/gophernotes { };
|
||||||
|
|
||||||
goxel = callPackage ../applications/graphics/goxel { };
|
goxel = callPackage ../applications/graphics/goxel { };
|
||||||
|
|
||||||
gpa = callPackage ../applications/misc/gpa { };
|
gpa = callPackage ../applications/misc/gpa { };
|
||||||
@ -20987,6 +21003,8 @@ in
|
|||||||
|
|
||||||
i3-wk-switch = callPackage ../applications/window-managers/i3/wk-switch.nix { };
|
i3-wk-switch = callPackage ../applications/window-managers/i3/wk-switch.nix { };
|
||||||
|
|
||||||
|
windowchef = callPackage ../applications/window-managers/windowchef/default.nix { };
|
||||||
|
|
||||||
wmfocus = callPackage ../applications/window-managers/i3/wmfocus.nix { };
|
wmfocus = callPackage ../applications/window-managers/i3/wmfocus.nix { };
|
||||||
|
|
||||||
wmfs = callPackage ../applications/window-managers/wmfs/default.nix { };
|
wmfs = callPackage ../applications/window-managers/wmfs/default.nix { };
|
||||||
@ -23370,6 +23388,8 @@ in
|
|||||||
|
|
||||||
treesheets = callPackage ../applications/office/treesheets { wxGTK = wxGTK31; };
|
treesheets = callPackage ../applications/office/treesheets { wxGTK = wxGTK31; };
|
||||||
|
|
||||||
|
tremc = callPackage ../applications/networking/p2p/tremc { };
|
||||||
|
|
||||||
tribler = callPackage ../applications/networking/p2p/tribler { };
|
tribler = callPackage ../applications/networking/p2p/tribler { };
|
||||||
|
|
||||||
trojita = libsForQt5.callPackage ../applications/networking/mailreaders/trojita {
|
trojita = libsForQt5.callPackage ../applications/networking/mailreaders/trojita {
|
||||||
@ -24718,13 +24738,13 @@ in
|
|||||||
katago = callPackage ../games/katago { };
|
katago = callPackage ../games/katago { };
|
||||||
|
|
||||||
katagoWithCuda = katago.override {
|
katagoWithCuda = katago.override {
|
||||||
cudaSupport = true;
|
enableCuda = true;
|
||||||
cudnn = cudnn_cudatoolkit_10_2;
|
cudnn = cudnn_cudatoolkit_10_2;
|
||||||
cudatoolkit = cudatoolkit_10_2;
|
cudatoolkit = cudatoolkit_10_2;
|
||||||
};
|
};
|
||||||
|
|
||||||
katagoCPU = katago.override {
|
katagoCPU = katago.override {
|
||||||
gpuEnabled = false;
|
enableGPU = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
klavaro = callPackage ../games/klavaro {};
|
klavaro = callPackage ../games/klavaro {};
|
||||||
|
@ -137,12 +137,16 @@ let
|
|||||||
|
|
||||||
cohttp = callPackage ../development/ocaml-modules/cohttp { };
|
cohttp = callPackage ../development/ocaml-modules/cohttp { };
|
||||||
|
|
||||||
|
cohttp-async = callPackage ../development/ocaml-modules/cohttp/async.nix { };
|
||||||
|
|
||||||
cohttp-lwt = callPackage ../development/ocaml-modules/cohttp/lwt.nix { };
|
cohttp-lwt = callPackage ../development/ocaml-modules/cohttp/lwt.nix { };
|
||||||
|
|
||||||
cohttp-lwt-unix = callPackage ../development/ocaml-modules/cohttp/lwt-unix.nix { };
|
cohttp-lwt-unix = callPackage ../development/ocaml-modules/cohttp/lwt-unix.nix { };
|
||||||
|
|
||||||
conduit = callPackage ../development/ocaml-modules/conduit { };
|
conduit = callPackage ../development/ocaml-modules/conduit { };
|
||||||
|
|
||||||
|
conduit-async = callPackage ../development/ocaml-modules/conduit/async.nix { };
|
||||||
|
|
||||||
conduit-lwt = callPackage ../development/ocaml-modules/conduit/lwt.nix { };
|
conduit-lwt = callPackage ../development/ocaml-modules/conduit/lwt.nix { };
|
||||||
|
|
||||||
conduit-lwt-unix = callPackage ../development/ocaml-modules/conduit/lwt-unix.nix { };
|
conduit-lwt-unix = callPackage ../development/ocaml-modules/conduit/lwt-unix.nix { };
|
||||||
@ -991,7 +995,7 @@ let
|
|||||||
janeStreet =
|
janeStreet =
|
||||||
if lib.versionOlder "4.08" ocaml.version
|
if lib.versionOlder "4.08" ocaml.version
|
||||||
then import ../development/ocaml-modules/janestreet/0.13.nix {
|
then import ../development/ocaml-modules/janestreet/0.13.nix {
|
||||||
inherit ctypes janePackage num octavius ppxlib re;
|
inherit ctypes dune-configurator janePackage num octavius ppxlib re;
|
||||||
inherit (pkgs) openssl;
|
inherit (pkgs) openssl;
|
||||||
}
|
}
|
||||||
else if lib.versionOlder "4.07" ocaml.version
|
else if lib.versionOlder "4.07" ocaml.version
|
||||||
|
@ -4544,6 +4544,8 @@ in {
|
|||||||
|
|
||||||
jupyterhub-ldapauthenticator = callPackage ../development/python-modules/jupyterhub-ldapauthenticator { };
|
jupyterhub-ldapauthenticator = callPackage ../development/python-modules/jupyterhub-ldapauthenticator { };
|
||||||
|
|
||||||
|
jupyterhub-tmpauthenticator = callPackage ../development/python-modules/jupyterhub-tmpauthenticator { };
|
||||||
|
|
||||||
jupyterhub-systemdspawner = callPackage ../development/python-modules/jupyterhub-systemdspawner {
|
jupyterhub-systemdspawner = callPackage ../development/python-modules/jupyterhub-systemdspawner {
|
||||||
inherit (pkgs) bash;
|
inherit (pkgs) bash;
|
||||||
};
|
};
|
||||||
@ -6991,7 +6993,9 @@ in {
|
|||||||
|
|
||||||
carbon = callPackage ../development/python-modules/carbon { };
|
carbon = callPackage ../development/python-modules/carbon { };
|
||||||
|
|
||||||
ujson = callPackage ../development/python-modules/ujson { };
|
ujson = if isPy27
|
||||||
|
then callPackage ../development/python-modules/ujson/2.nix { }
|
||||||
|
else callPackage ../development/python-modules/ujson { };
|
||||||
|
|
||||||
unidecode = callPackage ../development/python-modules/unidecode {};
|
unidecode = callPackage ../development/python-modules/unidecode {};
|
||||||
|
|
||||||
@ -7851,7 +7855,7 @@ in {
|
|||||||
rxv = callPackage ../development/python-modules/rxv { };
|
rxv = callPackage ../development/python-modules/rxv { };
|
||||||
|
|
||||||
userpath = callPackage ../development/python-modules/userpath { };
|
userpath = callPackage ../development/python-modules/userpath { };
|
||||||
|
|
||||||
pooch = callPackage ../development/python-modules/pooch {};
|
pooch = callPackage ../development/python-modules/pooch {};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user