Merge branch 'staging-next' into staging
This commit is contained in:
commit
555a4016a2
60 changed files with 165 additions and 103 deletions
|
@ -53,7 +53,7 @@ system, [Hydra](https://hydra.nixos.org/).
|
||||||
Artifacts successfully built with Hydra are published to cache at
|
Artifacts successfully built with Hydra are published to cache at
|
||||||
https://cache.nixos.org/. When successful build and test criteria are
|
https://cache.nixos.org/. When successful build and test criteria are
|
||||||
met, the Nixpkgs expressions are distributed via [Nix
|
met, the Nixpkgs expressions are distributed via [Nix
|
||||||
channels](https://nixos.org/nix/manual/#sec-channels).
|
channels](https://nixos.org/manual/nix/stable/package-management/channels.html).
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@ self: super:
|
||||||
This overlay uses Intel's MKL library for both BLAS and LAPACK interfaces. Note that the same can be accomplished at runtime using `LD_LIBRARY_PATH` of `libblas.so.3` and `liblapack.so.3`. For instance:
|
This overlay uses Intel's MKL library for both BLAS and LAPACK interfaces. Note that the same can be accomplished at runtime using `LD_LIBRARY_PATH` of `libblas.so.3` and `liblapack.so.3`. For instance:
|
||||||
|
|
||||||
```ShellSession
|
```ShellSession
|
||||||
$ LD_LIBRARY_PATH=$(nix-build -A mkl)/lib:$LD_LIBRARY_PATH nix-shell -p octave --run octave
|
$ LD_LIBRARY_PATH=$(nix-build -A mkl)/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH nix-shell -p octave --run octave
|
||||||
```
|
```
|
||||||
|
|
||||||
Intel MKL requires an `openmp` implementation when running with multiple processors. By default, `mkl` will use Intel's `iomp` implementation if no other is specified, but this is a runtime-only dependency and binary compatible with the LLVM implementation. To use that one instead, Intel recommends users set it with `LD_PRELOAD`. Note that `mkl` is only available on `x86_64-linux` and `x86_64-darwin`. Moreover, Hydra is not building and distributing pre-compiled binaries using it.
|
Intel MKL requires an `openmp` implementation when running with multiple processors. By default, `mkl` will use Intel's `iomp` implementation if no other is specified, but this is a runtime-only dependency and binary compatible with the LLVM implementation. To use that one instead, Intel recommends users set it with `LD_PRELOAD`. Note that `mkl` is only available on `x86_64-linux` and `x86_64-darwin`. Moreover, Hydra is not building and distributing pre-compiled binaries using it.
|
||||||
|
|
|
@ -159,6 +159,10 @@ The following methods are available on machine objects:
|
||||||
`execute`
|
`execute`
|
||||||
|
|
||||||
: Execute a shell command, returning a list `(status, stdout)`.
|
: Execute a shell command, returning a list `(status, stdout)`.
|
||||||
|
If the command detaches, it must close stdout, as `execute` will wait
|
||||||
|
for this to consume all output reliably. This can be achieved by
|
||||||
|
redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or
|
||||||
|
a file.
|
||||||
Takes an optional parameter `check_return` that defaults to `True`.
|
Takes an optional parameter `check_return` that defaults to `True`.
|
||||||
Setting this parameter to `False` will not check for the return code
|
Setting this parameter to `False` will not check for the return code
|
||||||
and return -1 instead. This can be used for commands that shut down
|
and return -1 instead. This can be used for commands that shut down
|
||||||
|
@ -179,6 +183,8 @@ The following methods are available on machine objects:
|
||||||
|
|
||||||
- Dereferencing unset variables fail the command.
|
- Dereferencing unset variables fail the command.
|
||||||
|
|
||||||
|
- It will wait for stdout to be closed. See `execute`.
|
||||||
|
|
||||||
`fail`
|
`fail`
|
||||||
|
|
||||||
: Like `succeed`, but raising an exception if the command returns a zero
|
: Like `succeed`, but raising an exception if the command returns a zero
|
||||||
|
|
|
@ -266,7 +266,12 @@ start_all()
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Execute a shell command, returning a list
|
Execute a shell command, returning a list
|
||||||
<literal>(status, stdout)</literal>. Takes an optional
|
<literal>(status, stdout)</literal>. If the command detaches,
|
||||||
|
it must close stdout, as <literal>execute</literal> will wait
|
||||||
|
for this to consume all output reliably. This can be achieved
|
||||||
|
by redirecting stdout to stderr <literal>>&2</literal>,
|
||||||
|
to <literal>/dev/console</literal>,
|
||||||
|
<literal>/dev/null</literal> or a file. Takes an optional
|
||||||
parameter <literal>check_return</literal> that defaults to
|
parameter <literal>check_return</literal> that defaults to
|
||||||
<literal>True</literal>. Setting this parameter to
|
<literal>True</literal>. Setting this parameter to
|
||||||
<literal>False</literal> will not check for the return code
|
<literal>False</literal> will not check for the return code
|
||||||
|
@ -306,6 +311,12 @@ start_all()
|
||||||
Dereferencing unset variables fail the command.
|
Dereferencing unset variables fail the command.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
It will wait for stdout to be closed. See
|
||||||
|
<literal>execute</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
|
@ -423,6 +423,23 @@
|
||||||
<section xml:id="sec-release-21.11-incompatibilities">
|
<section xml:id="sec-release-21.11-incompatibilities">
|
||||||
<title>Backward Incompatibilities</title>
|
<title>Backward Incompatibilities</title>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The NixOS VM test framework,
|
||||||
|
<literal>pkgs.nixosTest</literal>/<literal>make-test-python.nix</literal>,
|
||||||
|
now requires non-terminating commands such as
|
||||||
|
<literal>succeed("foo &")</literal> to close
|
||||||
|
stdout. This can be done with a redirect such as
|
||||||
|
<literal>succeed("foo >&2 &")</literal>.
|
||||||
|
This breaking change was necessitated by a race condition
|
||||||
|
causing tests to fail or hang. It applies to all methods that
|
||||||
|
invoke commands on the nodes, including
|
||||||
|
<literal>execute</literal>, <literal>succeed</literal>,
|
||||||
|
<literal>fail</literal>,
|
||||||
|
<literal>wait_until_succeeds</literal>,
|
||||||
|
<literal>wait_until_fails</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The <literal>services.wakeonlan</literal> option was removed,
|
The <literal>services.wakeonlan</literal> option was removed,
|
||||||
|
|
|
@ -128,6 +128,10 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
|
|
||||||
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
||||||
|
|
||||||
|
- The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix`, now requires non-terminating commands such as `succeed("foo &")` to close stdout.
|
||||||
|
This can be done with a redirect such as `succeed("foo >&2 &")`. This breaking change was necessitated by a race condition causing tests to fail or hang.
|
||||||
|
It applies to all methods that invoke commands on the nodes, including `execute`, `succeed`, `fail`, `wait_until_succeeds`, `wait_until_fails`.
|
||||||
|
|
||||||
- The `services.wakeonlan` option was removed, and replaced with `networking.interfaces.<name>.wakeOnLan`.
|
- The `services.wakeonlan` option was removed, and replaced with `networking.interfaces.<name>.wakeOnLan`.
|
||||||
|
|
||||||
- The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set.
|
- The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set.
|
||||||
|
|
|
@ -119,7 +119,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
|
|
||||||
with subtest("Stop a container early"):
|
with subtest("Stop a container early"):
|
||||||
machine.succeed(f"nixos-container stop {id1}")
|
machine.succeed(f"nixos-container stop {id1}")
|
||||||
machine.succeed(f"nixos-container start {id1} &")
|
machine.succeed(f"nixos-container start {id1} >&2 &")
|
||||||
machine.wait_for_console_text("Stage 2")
|
machine.wait_for_console_text("Stage 2")
|
||||||
machine.succeed(f"nixos-container stop {id1}")
|
machine.succeed(f"nixos-container stop {id1}")
|
||||||
machine.wait_for_console_text(f"Container {id1} exited successfully")
|
machine.wait_for_console_text(f"Container {id1} exited successfully")
|
||||||
|
|
|
@ -38,7 +38,7 @@ in {
|
||||||
sender.execute("echo Hello World > testfile01.txt")
|
sender.execute("echo Hello World > testfile01.txt")
|
||||||
sender.execute("echo Hello Earth > testfile02.txt")
|
sender.execute("echo Hello Earth > testfile02.txt")
|
||||||
sender.execute(
|
sender.execute(
|
||||||
"croc --pass ${pass} --relay relay send --code topSecret testfile01.txt testfile02.txt &"
|
"croc --pass ${pass} --relay relay send --code topSecret testfile01.txt testfile02.txt >&2 &"
|
||||||
)
|
)
|
||||||
|
|
||||||
# receive the testfiles and check them
|
# receive the testfiles and check them
|
||||||
|
|
|
@ -33,7 +33,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
)
|
)
|
||||||
|
|
||||||
# connects to the daemon
|
# connects to the daemon
|
||||||
machine.succeed("emacsclient --create-frame $EDITOR &")
|
machine.succeed("emacsclient --create-frame $EDITOR >&2 &")
|
||||||
|
|
||||||
# checks that Emacs shows the edited filename
|
# checks that Emacs shows the edited filename
|
||||||
machine.wait_for_text("emacseditor")
|
machine.wait_for_text("emacseditor")
|
||||||
|
|
|
@ -88,7 +88,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
||||||
machine.screenshot("wizard12")
|
machine.screenshot("wizard12")
|
||||||
|
|
||||||
with subtest("Run Terminology"):
|
with subtest("Run Terminology"):
|
||||||
machine.succeed("terminology &")
|
machine.succeed("terminology >&2 &")
|
||||||
machine.sleep(5)
|
machine.sleep(5)
|
||||||
machine.send_chars("ls --color -alF\n")
|
machine.send_chars("ls --color -alF\n")
|
||||||
machine.sleep(2)
|
machine.sleep(2)
|
||||||
|
|
|
@ -13,7 +13,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
''
|
''
|
||||||
machine.wait_for_unit("multi-user.target")
|
machine.wait_for_unit("multi-user.target")
|
||||||
machine.succeed("etesync-dav --version")
|
machine.succeed("etesync-dav --version")
|
||||||
machine.execute("etesync-dav &")
|
machine.execute("etesync-dav >&2 &")
|
||||||
machine.wait_for_open_port(37358)
|
machine.wait_for_open_port(37358)
|
||||||
with subtest("Check that the web interface is accessible"):
|
with subtest("Check that the web interface is accessible"):
|
||||||
assert "Add User" in machine.succeed("curl -s http://localhost:37358/.web/add/")
|
assert "Add User" in machine.succeed("curl -s http://localhost:37358/.web/add/")
|
||||||
|
|
|
@ -91,7 +91,7 @@ import ./make-test-python.nix ({ pkgs, firefoxPackage, ... }: {
|
||||||
|
|
||||||
with subtest("Wait until Firefox has finished loading the Valgrind docs page"):
|
with subtest("Wait until Firefox has finished loading the Valgrind docs page"):
|
||||||
machine.execute(
|
machine.execute(
|
||||||
"xterm -e 'firefox file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html' &"
|
"xterm -e 'firefox file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html' >&2 &"
|
||||||
)
|
)
|
||||||
machine.wait_for_window("Valgrind")
|
machine.wait_for_window("Valgrind")
|
||||||
machine.sleep(40)
|
machine.sleep(40)
|
||||||
|
@ -99,7 +99,7 @@ import ./make-test-python.nix ({ pkgs, firefoxPackage, ... }: {
|
||||||
with subtest("Check whether Firefox can play sound"):
|
with subtest("Check whether Firefox can play sound"):
|
||||||
with audio_recording(machine):
|
with audio_recording(machine):
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"firefox file://${pkgs.sound-theme-freedesktop}/share/sounds/freedesktop/stereo/phone-incoming-call.oga &"
|
"firefox file://${pkgs.sound-theme-freedesktop}/share/sounds/freedesktop/stereo/phone-incoming-call.oga >&2 &"
|
||||||
)
|
)
|
||||||
wait_for_sound(machine)
|
wait_for_sound(machine)
|
||||||
machine.copy_from_vm("/tmp/record.wav")
|
machine.copy_from_vm("/tmp/record.wav")
|
||||||
|
|
|
@ -22,7 +22,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
# Add a dummy sound card, or the program won't start
|
# Add a dummy sound card, or the program won't start
|
||||||
machine.execute("modprobe snd-dummy")
|
machine.execute("modprobe snd-dummy")
|
||||||
|
|
||||||
machine.execute("ft2-clone &")
|
machine.execute("ft2-clone >&2 &")
|
||||||
|
|
||||||
machine.wait_for_window(r"Fasttracker")
|
machine.wait_for_window(r"Fasttracker")
|
||||||
machine.sleep(5)
|
machine.sleep(5)
|
||||||
|
|
|
@ -110,7 +110,7 @@ in makeTest {
|
||||||
)
|
)
|
||||||
|
|
||||||
# Hibernate machine
|
# Hibernate machine
|
||||||
hibernate.execute("systemctl hibernate &", check_return=False)
|
hibernate.execute("systemctl hibernate >&2 &", check_return=False)
|
||||||
hibernate.wait_for_shutdown()
|
hibernate.wait_for_shutdown()
|
||||||
|
|
||||||
# Restore machine from hibernation, validate our ramfs file is there.
|
# Restore machine from hibernation, validate our ramfs file is there.
|
||||||
|
|
|
@ -26,7 +26,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
|
|
||||||
# start KeePassXC window
|
# start KeePassXC window
|
||||||
machine.execute("su - alice -c keepassxc &")
|
machine.execute("su - alice -c keepassxc >&2 &")
|
||||||
|
|
||||||
machine.wait_for_text("KeePassXC ${pkgs.keepassxc.version}")
|
machine.wait_for_text("KeePassXC ${pkgs.keepassxc.version}")
|
||||||
machine.screenshot("KeePassXC")
|
machine.screenshot("KeePassXC")
|
||||||
|
|
|
@ -13,7 +13,7 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
||||||
''
|
''
|
||||||
machine.wait_for_unit("multi-user.target")
|
machine.wait_for_unit("multi-user.target")
|
||||||
machine.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"')
|
machine.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"')
|
||||||
machine.execute("systemctl kexec &", check_return=False)
|
machine.execute("systemctl kexec >&2 &", check_return=False)
|
||||||
machine.connected = False
|
machine.connected = False
|
||||||
machine.connect()
|
machine.connect()
|
||||||
machine.wait_for_unit("multi-user.target")
|
machine.wait_for_unit("multi-user.target")
|
||||||
|
|
|
@ -46,7 +46,7 @@ let
|
||||||
|
|
||||||
# set up process that expects all the keys to be entered
|
# set up process that expects all the keys to be entered
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"{} {} {} {} &".format(
|
"{} {} {} {} >&2 &".format(
|
||||||
cmd,
|
cmd,
|
||||||
"${testReader}",
|
"${testReader}",
|
||||||
len(inputs),
|
len(inputs),
|
||||||
|
|
|
@ -89,7 +89,7 @@ in
|
||||||
"""
|
"""
|
||||||
Sends a message as Alice to Bob
|
Sends a message as Alice to Bob
|
||||||
"""
|
"""
|
||||||
bob.execute("nc -lu ::0 1234 >/tmp/msg &")
|
bob.execute("nc -lu ::0 1234 >/tmp/msg >&2 &")
|
||||||
alice.sleep(1)
|
alice.sleep(1)
|
||||||
alice.succeed(f"echo '{msg}' | nc -uw 0 bob 1234")
|
alice.succeed(f"echo '{msg}' | nc -uw 0 bob 1234")
|
||||||
bob.succeed(f"grep '{msg}' /tmp/msg")
|
bob.succeed(f"grep '{msg}' /tmp/msg")
|
||||||
|
@ -100,7 +100,7 @@ in
|
||||||
Starts eavesdropping on Alice and Bob
|
Starts eavesdropping on Alice and Bob
|
||||||
"""
|
"""
|
||||||
match = "src host alice and dst host bob"
|
match = "src host alice and dst host bob"
|
||||||
eve.execute(f"tcpdump -i br0 -c 1 -Avv {match} >/tmp/log &")
|
eve.execute(f"tcpdump -i br0 -c 1 -Avv {match} >/tmp/log >&2 &")
|
||||||
|
|
||||||
|
|
||||||
start_all()
|
start_all()
|
||||||
|
@ -120,7 +120,7 @@ in
|
||||||
alice.succeed("ipsec verify 1>&2")
|
alice.succeed("ipsec verify 1>&2")
|
||||||
|
|
||||||
with subtest("Alice and Bob can start the tunnel"):
|
with subtest("Alice and Bob can start the tunnel"):
|
||||||
alice.execute("ipsec auto --start tunnel &")
|
alice.execute("ipsec auto --start tunnel >&2 &")
|
||||||
bob.succeed("ipsec auto --start tunnel")
|
bob.succeed("ipsec auto --start tunnel")
|
||||||
# apparently this is needed to "wake" the tunnel
|
# apparently this is needed to "wake" the tunnel
|
||||||
bob.execute("ping -c1 alice")
|
bob.execute("ping -c1 alice")
|
||||||
|
|
|
@ -14,7 +14,7 @@ import ../make-test-python.nix {
|
||||||
)
|
)
|
||||||
|
|
||||||
# Start the daemon and wait until it is ready
|
# Start the daemon and wait until it is ready
|
||||||
machine.execute("lorri daemon > lorri.stdout 2> lorri.stderr &")
|
machine.execute("lorri daemon > lorri.stdout 2> lorri.stderr >&2 &")
|
||||||
machine.wait_until_succeeds("grep --fixed-strings 'ready' lorri.stdout")
|
machine.wait_until_succeeds("grep --fixed-strings 'ready' lorri.stdout")
|
||||||
|
|
||||||
# Ping the daemon
|
# Ping the daemon
|
||||||
|
|
|
@ -29,7 +29,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
|
||||||
# Create a secret file and send it to Bob
|
# Create a secret file and send it to Bob
|
||||||
client_alice.succeed("echo mysecret > secretfile")
|
client_alice.succeed("echo mysecret > secretfile")
|
||||||
client_alice.succeed("wormhole --relay-url=ws://server:4000/v1 send -0 secretfile &")
|
client_alice.succeed("wormhole --relay-url=ws://server:4000/v1 send -0 secretfile >&2 &")
|
||||||
|
|
||||||
# Retrieve a secret file from Alice and check its content
|
# Retrieve a secret file from Alice and check its content
|
||||||
client_bob.succeed("wormhole --relay-url=ws://server:4000/v1 receive -0 --accept-file")
|
client_bob.succeed("wormhole --relay-url=ws://server:4000/v1 receive -0 --accept-file")
|
||||||
|
|
|
@ -20,7 +20,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
let user = nodes.client.config.users.users.alice;
|
let user = nodes.client.config.users.users.alice;
|
||||||
in ''
|
in ''
|
||||||
client.wait_for_x()
|
client.wait_for_x()
|
||||||
client.execute("su - alice -c minecraft-launcher &")
|
client.execute("su - alice -c minecraft-launcher >&2 &")
|
||||||
client.wait_for_text("Create a new Microsoft account")
|
client.wait_for_text("Create a new Microsoft account")
|
||||||
client.sleep(10)
|
client.sleep(10)
|
||||||
client.screenshot("launcher")
|
client.screenshot("launcher")
|
||||||
|
|
|
@ -21,7 +21,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.execute("set -m; mpv --script-opts=webui-port=${port} --idle=yes &")
|
machine.execute("set -m; mpv --script-opts=webui-port=${port} --idle=yes >&2 &")
|
||||||
machine.wait_for_open_port(${port})
|
machine.wait_for_open_port(${port})
|
||||||
assert "<title>simple-mpv-webui" in machine.succeed("curl -s localhost:${port}")
|
assert "<title>simple-mpv-webui" in machine.succeed("curl -s localhost:${port}")
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -38,8 +38,8 @@ in
|
||||||
client1.wait_for_x()
|
client1.wait_for_x()
|
||||||
client2.wait_for_x()
|
client2.wait_for_x()
|
||||||
|
|
||||||
client1.execute("mumble mumble://client1:testpassword\@server/test &")
|
client1.execute("mumble mumble://client1:testpassword\@server/test >&2 &")
|
||||||
client2.execute("mumble mumble://client2:testpassword\@server/test &")
|
client2.execute("mumble mumble://client2:testpassword\@server/test >&2 &")
|
||||||
|
|
||||||
# cancel client audio configuration
|
# cancel client audio configuration
|
||||||
client1.wait_for_window(r"Audio Tuning Wizard")
|
client1.wait_for_window(r"Audio Tuning Wizard")
|
||||||
|
|
|
@ -44,7 +44,7 @@ in
|
||||||
)
|
)
|
||||||
|
|
||||||
# Start MuseScore window
|
# Start MuseScore window
|
||||||
machine.execute("DISPLAY=:0.0 mscore &")
|
machine.execute("DISPLAY=:0.0 mscore >&2 &")
|
||||||
|
|
||||||
# Wait until MuseScore has launched
|
# Wait until MuseScore has launched
|
||||||
machine.wait_for_window("MuseScore")
|
machine.wait_for_window("MuseScore")
|
||||||
|
|
|
@ -66,7 +66,7 @@ in
|
||||||
client2.succeed("time flock -n -s /data/lock true")
|
client2.succeed("time flock -n -s /data/lock true")
|
||||||
|
|
||||||
with subtest("client 2 fails to acquire lock held by client 1"):
|
with subtest("client 2 fails to acquire lock held by client 1"):
|
||||||
client1.succeed("flock -x /data/lock -c 'touch locked; sleep 100000' &")
|
client1.succeed("flock -x /data/lock -c 'touch locked; sleep 100000' >&2 &")
|
||||||
client1.wait_for_file("locked")
|
client1.wait_for_file("locked")
|
||||||
client2.fail("flock -n -s /data/lock true")
|
client2.fail("flock -n -s /data/lock true")
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ import ./make-test-python.nix {
|
||||||
|
|
||||||
server.wait_for_unit("nginx.service")
|
server.wait_for_unit("nginx.service")
|
||||||
client.wait_for_unit("multi-user.target")
|
client.wait_for_unit("multi-user.target")
|
||||||
client.execute("test-runner &")
|
client.execute("test-runner >&2 &")
|
||||||
client.wait_for_file("/tmp/passed_stage1")
|
client.wait_for_file("/tmp/passed_stage1")
|
||||||
|
|
||||||
server.succeed(
|
server.succeed(
|
||||||
|
|
|
@ -78,7 +78,7 @@ let
|
||||||
# Put newlines on console, to flush the console reader's line buffer
|
# Put newlines on console, to flush the console reader's line buffer
|
||||||
# in case nixops' last output did not end in a newline, as is the case
|
# in case nixops' last output did not end in a newline, as is the case
|
||||||
# with a status line (if implemented?)
|
# with a status line (if implemented?)
|
||||||
deployer.succeed("while sleep 60s; do echo [60s passed] >/dev/console; done &")
|
deployer.succeed("while sleep 60s; do echo [60s passed]; done >&2 &")
|
||||||
|
|
||||||
deployer_do("cd ~/unicorn; ssh -oStrictHostKeyChecking=accept-new root@server echo hi")
|
deployer_do("cd ~/unicorn; ssh -oStrictHostKeyChecking=accept-new root@server echo hi")
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@ in {
|
||||||
client1.wait_for_x()
|
client1.wait_for_x()
|
||||||
client2.wait_for_x()
|
client2.wait_for_x()
|
||||||
|
|
||||||
client1.execute("openarena +set r_fullscreen 0 +set name Foo +connect server &")
|
client1.execute("openarena +set r_fullscreen 0 +set name Foo +connect server >&2 &")
|
||||||
client2.execute("openarena +set r_fullscreen 0 +set name Bar +connect server &")
|
client2.execute("openarena +set r_fullscreen 0 +set name Bar +connect server >&2 &")
|
||||||
|
|
||||||
server.wait_until_succeeds(
|
server.wait_until_succeeds(
|
||||||
"journalctl -u openarena -e | grep -q 'Foo.*entered the game'"
|
"journalctl -u openarena -e | grep -q 'Foo.*entered the game'"
|
||||||
|
|
|
@ -14,7 +14,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.succeed("gnome-calculator &")
|
machine.succeed("gnome-calculator >&2 &")
|
||||||
machine.wait_for_window("gnome-calculator")
|
machine.wait_for_window("gnome-calculator")
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"xdotool search --sync --onlyvisible --class gnome-calculator "
|
"xdotool search --sync --onlyvisible --class gnome-calculator "
|
||||||
|
|
|
@ -22,7 +22,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
# Add a dummy sound card, or the program won't start
|
# Add a dummy sound card, or the program won't start
|
||||||
machine.execute("modprobe snd-dummy")
|
machine.execute("modprobe snd-dummy")
|
||||||
|
|
||||||
machine.execute("pt2-clone &")
|
machine.execute("pt2-clone >&2 &")
|
||||||
|
|
||||||
machine.wait_for_window(r"ProTracker")
|
machine.wait_for_window(r"ProTracker")
|
||||||
machine.sleep(5)
|
machine.sleep(5)
|
||||||
|
|
|
@ -19,7 +19,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.execute("shattered-pixel-dungeon &")
|
machine.execute("shattered-pixel-dungeon >&2 &")
|
||||||
machine.wait_for_window(r"Shattered Pixel Dungeon")
|
machine.wait_for_window(r"Shattered Pixel Dungeon")
|
||||||
machine.sleep(5)
|
machine.sleep(5)
|
||||||
if "Enter" not in machine.get_screen_text():
|
if "Enter" not in machine.get_screen_text():
|
||||||
|
|
|
@ -41,7 +41,7 @@ in {
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
|
|
||||||
# start signal desktop
|
# start signal desktop
|
||||||
machine.execute("su - alice -c signal-desktop &")
|
machine.execute("su - alice -c signal-desktop >&2 &")
|
||||||
|
|
||||||
# Wait for the Signal window to appear. Since usually the tests
|
# Wait for the Signal window to appear. Since usually the tests
|
||||||
# are run sandboxed and therfore with no internet, we can not wait
|
# are run sandboxed and therfore with no internet, we can not wait
|
||||||
|
|
|
@ -16,7 +16,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.succeed("soapui &")
|
machine.succeed("soapui >&2 &")
|
||||||
machine.wait_for_window(r"SoapUI \d+\.\d+\.\d+")
|
machine.wait_for_window(r"SoapUI \d+\.\d+\.\d+")
|
||||||
machine.sleep(1)
|
machine.sleep(1)
|
||||||
machine.screenshot("soapui")
|
machine.screenshot("soapui")
|
||||||
|
|
|
@ -35,13 +35,13 @@ makeTest {
|
||||||
for host in [server, client]:
|
for host in [server, client]:
|
||||||
host.succeed("echo foobar | vncpasswd -f > vncpasswd")
|
host.succeed("echo foobar | vncpasswd -f > vncpasswd")
|
||||||
|
|
||||||
server.succeed("Xvnc -geometry 720x576 :1 -PasswordFile vncpasswd &")
|
server.succeed("Xvnc -geometry 720x576 :1 -PasswordFile vncpasswd >&2 &")
|
||||||
server.wait_until_succeeds("nc -z localhost 5901", timeout=10)
|
server.wait_until_succeeds("nc -z localhost 5901", timeout=10)
|
||||||
server.succeed("DISPLAY=:1 xwininfo -root | grep 720x576")
|
server.succeed("DISPLAY=:1 xwininfo -root | grep 720x576")
|
||||||
server.execute("DISPLAY=:1 display -size 360x200 -font sans -gravity south label:'HELLO VNC WORLD' &")
|
server.execute("DISPLAY=:1 display -size 360x200 -font sans -gravity south label:'HELLO VNC WORLD' >&2 &")
|
||||||
|
|
||||||
client.wait_for_x()
|
client.wait_for_x()
|
||||||
client.execute("vncviewer server:1 -PasswordFile vncpasswd &")
|
client.execute("vncviewer server:1 -PasswordFile vncpasswd >&2 &")
|
||||||
client.wait_for_window(r"VNC")
|
client.wait_for_window(r"VNC")
|
||||||
client.screenshot("screenshot")
|
client.screenshot("screenshot")
|
||||||
text = client.get_screen_text()
|
text = client.get_screen_text()
|
||||||
|
|
|
@ -97,7 +97,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
)
|
)
|
||||||
machine.execute(
|
machine.execute(
|
||||||
# Note trailing & for backgrounding.
|
# Note trailing & for backgrounding.
|
||||||
f"({xvnc_command} | tee /tmp/Xvnc.stdout) 3>&1 1>&2 2>&3 | tee /tmp/Xvnc.stderr &",
|
f"({xvnc_command} | tee /tmp/Xvnc.stdout) 3>&1 1>&2 2>&3 | tee /tmp/Xvnc.stderr >&2 &",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
def test_glxgears_failing_with_bad_driver_path():
|
def test_glxgears_failing_with_bad_driver_path():
|
||||||
machine.execute(
|
machine.execute(
|
||||||
# Note trailing & for backgrounding.
|
# Note trailing & for backgrounding.
|
||||||
"(env DISPLAY=:0 LIBGL_DRIVERS_PATH=/nonexistent glxgears -info | tee /tmp/glxgears-should-fail.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears-should-fail.stderr &"
|
"(env DISPLAY=:0 LIBGL_DRIVERS_PATH=/nonexistent glxgears -info | tee /tmp/glxgears-should-fail.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears-should-fail.stderr >&2 &"
|
||||||
)
|
)
|
||||||
machine.wait_until_succeeds("test -f /tmp/glxgears-should-fail.stderr")
|
machine.wait_until_succeeds("test -f /tmp/glxgears-should-fail.stderr")
|
||||||
wait_until_terminated_or_succeeds(
|
wait_until_terminated_or_succeeds(
|
||||||
|
@ -136,7 +136,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||||
def test_glxgears_prints_renderer():
|
def test_glxgears_prints_renderer():
|
||||||
machine.execute(
|
machine.execute(
|
||||||
# Note trailing & for backgrounding.
|
# Note trailing & for backgrounding.
|
||||||
"(env DISPLAY=:0 glxgears -info | tee /tmp/glxgears.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears.stderr &"
|
"(env DISPLAY=:0 glxgears -info | tee /tmp/glxgears.stdout) 3>&1 1>&2 2>&3 | tee /tmp/glxgears.stderr >&2 &"
|
||||||
)
|
)
|
||||||
machine.wait_until_succeeds("test -f /tmp/glxgears.stderr")
|
machine.wait_until_succeeds("test -f /tmp/glxgears.stderr")
|
||||||
wait_until_terminated_or_succeeds(
|
wait_until_terminated_or_succeeds(
|
||||||
|
|
|
@ -16,7 +16,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.succeed("tuxguitar &")
|
machine.succeed("tuxguitar >&2 &")
|
||||||
machine.wait_for_window("TuxGuitar - Untitled.tg")
|
machine.wait_for_window("TuxGuitar - Untitled.tg")
|
||||||
machine.sleep(1)
|
machine.sleep(1)
|
||||||
machine.screenshot("tuxguitar")
|
machine.screenshot("tuxguitar")
|
||||||
|
|
|
@ -430,7 +430,7 @@ in mapAttrs (mkVBoxTest false vboxVMs) {
|
||||||
|
|
||||||
|
|
||||||
create_vm_simple()
|
create_vm_simple()
|
||||||
machine.succeed(ru("VirtualBox &"))
|
machine.succeed(ru("VirtualBox >&2 &"))
|
||||||
machine.wait_until_succeeds(ru("xprop -name 'Oracle VM VirtualBox Manager'"))
|
machine.wait_until_succeeds(ru("xprop -name 'Oracle VM VirtualBox Manager'"))
|
||||||
machine.sleep(5)
|
machine.sleep(5)
|
||||||
machine.screenshot("gui_manager_started")
|
machine.screenshot("gui_manager_started")
|
||||||
|
|
|
@ -31,7 +31,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
||||||
|
|
||||||
# Start VSCodium with a file that doesn't exist yet
|
# Start VSCodium with a file that doesn't exist yet
|
||||||
machine.fail("ls /home/alice/foo.txt")
|
machine.fail("ls /home/alice/foo.txt")
|
||||||
machine.succeed("su - alice -c 'codium foo.txt' &")
|
machine.succeed("su - alice -c 'codium foo.txt' >&2 &")
|
||||||
|
|
||||||
# Wait for the window to appear
|
# Wait for the window to appear
|
||||||
machine.wait_for_text("VSCodium")
|
machine.wait_for_text("VSCodium")
|
||||||
|
|
|
@ -32,13 +32,13 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
|
|
||||||
client.sleep(5)
|
client.sleep(5)
|
||||||
|
|
||||||
client.execute("xterm &")
|
client.execute("xterm >&2 &")
|
||||||
client.sleep(1)
|
client.sleep(1)
|
||||||
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:${user.name} /p:${user.password}\n")
|
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:${user.name} /p:${user.password}\n")
|
||||||
client.sleep(5)
|
client.sleep(5)
|
||||||
client.screenshot("localrdp")
|
client.screenshot("localrdp")
|
||||||
|
|
||||||
client.execute("xterm &")
|
client.execute("xterm >&2 &")
|
||||||
client.sleep(1)
|
client.sleep(1)
|
||||||
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:${user.name} /p:${user.password}\n")
|
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:${user.name} /p:${user.password}\n")
|
||||||
client.sleep(5)
|
client.sleep(5)
|
||||||
|
|
|
@ -13,7 +13,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.succeed("DISPLAY=:0 xterm -title testterm -class testterm -fullscreen &")
|
machine.succeed("DISPLAY=:0 xterm -title testterm -class testterm -fullscreen >&2 &")
|
||||||
machine.sleep(2)
|
machine.sleep(2)
|
||||||
machine.send_chars("echo $XTERM_VERSION >> /tmp/xterm_version\n")
|
machine.send_chars("echo $XTERM_VERSION >> /tmp/xterm_version\n")
|
||||||
machine.wait_for_file("/tmp/xterm_version")
|
machine.wait_for_file("/tmp/xterm_version")
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "bitwig-studio";
|
pname = "bitwig-studio";
|
||||||
version = "4.0.1";
|
version = "4.0.7";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
|
url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
|
||||||
sha256 = "sha256-yhCAKlbLjyBywkSYY1aqbUGFlAHBLR8g8xPDIqoUIZk=";
|
sha256 = "sha256-NAiwHLYhTAQH6xZw5u8bM7MOILcMclQMKtJc7MGJb+Q=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
|
nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
|
||||||
|
|
|
@ -15,6 +15,7 @@ let
|
||||||
sha256 = "09h1153wgr5x2ny7ds0w2m81n3bb9j8hjb8sjfnrg506r01clkyx";
|
sha256 = "09h1153wgr5x2ny7ds0w2m81n3bb9j8hjb8sjfnrg506r01clkyx";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
click = self.callPackage ../../../development/python-modules/click/7.nix { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
|
@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
makeWrapper $out/lib/runtime/bin/java $out/bin/jabref \
|
makeWrapper $out/lib/runtime/bin/java $out/bin/jabref \
|
||||||
--add-flags '-Djava.library.path=${systemLibPaths}' --add-flags "-p $out/lib/app -m org.jabref/org.jabref.JabRefLauncher" \
|
--add-flags '-Djava.library.path=${systemLibPaths}' --add-flags "-p $out/lib/app -m org.jabref/org.jabref.JabRefLauncher" \
|
||||||
--run 'export LD_LIBRARY_PATH=${systemLibPaths}:$LD_LIBRARY_PATH'
|
--prefix LD_LIBRARY_PATH : '${systemLibPaths}'
|
||||||
|
|
||||||
cp -r ${desktopItem}/share/applications $out/share/
|
cp -r ${desktopItem}/share/applications $out/share/
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, gtk3
|
, gtk3
|
||||||
, withWayland ? false
|
, withWayland ? false
|
||||||
, gtk-layer-shell
|
, gtk-layer-shell
|
||||||
|
, stdenv
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
|
@ -39,5 +40,6 @@ rustPlatform.buildRustPackage rec {
|
||||||
homepage = "https://github.com/elkowar/eww";
|
homepage = "https://github.com/elkowar/eww";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ figsoda legendofmiracles ];
|
maintainers = with maintainers; [ figsoda legendofmiracles ];
|
||||||
|
broken = stdenv.isDarwin;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ in stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preCheck = ''
|
preCheck = ''
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
|
@ -29,6 +29,8 @@ stdenv.mkDerivation rec {
|
||||||
"-DCRC32C_BUILD_BENCHMARKS=0"
|
"-DCRC32C_BUILD_BENCHMARKS=0"
|
||||||
"-DCRC32C_USE_GLOG=0"
|
"-DCRC32C_USE_GLOG=0"
|
||||||
"-DBUILD_SHARED_LIBS=${if staticOnly then "0" else "1"}"
|
"-DBUILD_SHARED_LIBS=${if staticOnly then "0" else "1"}"
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
"-DCMAKE_SKIP_BUILD_RPATH=OFF" # for tests
|
||||||
];
|
];
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "libplctag";
|
pname = "libplctag";
|
||||||
version = "2.4.0";
|
version = "2.4.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "libplctag";
|
owner = "libplctag";
|
||||||
repo = "libplctag";
|
repo = "libplctag";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-ClNLU1BPNemUOu+nMHujFYQSE+wnYuUPhHytjD8snb4=";
|
sha256 = "sha256-LyFCKWOjqSHWGBm2p52R/eYuPjtf5IfqqMtrLCNWIV8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -36,7 +36,7 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
preCheck = "export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH";
|
preCheck = "export LD_LIBRARY_PATH=$(pwd)\${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Very fast, header only, C++ logging library";
|
description = "Very fast, header only, C++ logging library";
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ lib, buildPythonPackage, fetchPypi, PyGithub, GitPython, toml, click, tqdm,
|
{ lib, buildPythonPackage, fetchPypi, PyGithub, GitPython, toml, click, tqdm,
|
||||||
paramiko, networkx, pydot, pyyaml }:
|
networkx, pydot, pyyaml, atomicwrites }:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "mathlibtools";
|
pname = "mathlibtools";
|
||||||
|
@ -11,7 +11,7 @@ buildPythonPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
PyGithub GitPython toml click tqdm paramiko networkx pydot pyyaml
|
PyGithub GitPython toml click tqdm networkx pydot pyyaml atomicwrites
|
||||||
];
|
];
|
||||||
|
|
||||||
# requires internet access
|
# requires internet access
|
||||||
|
|
|
@ -13,7 +13,7 @@ buildPythonPackage rec {
|
||||||
# some functionality to work (inparticular, pybel).
|
# some functionality to work (inparticular, pybel).
|
||||||
# see https://openbabel.org/docs/dev/Installation/install.html
|
# see https://openbabel.org/docs/dev/Installation/install.html
|
||||||
BABEL_LIBDIR = "${openbabel}/lib/openbabel/3.1.0";
|
BABEL_LIBDIR = "${openbabel}/lib/openbabel/3.1.0";
|
||||||
LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${openbabel}/lib";
|
LD_LIBRARY_PATH = "${openbabel}/lib";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
pythonImportsCheck = [ "openbabel" ];
|
pythonImportsCheck = [ "openbabel" ];
|
||||||
|
|
|
@ -47,5 +47,6 @@ buildPythonPackage rec {
|
||||||
homepage = "https://github.com/yunstanford/pytest-sanic/";
|
homepage = "https://github.com/yunstanford/pytest-sanic/";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ costrouc ];
|
maintainers = with maintainers; [ costrouc ];
|
||||||
|
broken = true; # 2021-11-04
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "sanic-routing";
|
pname = "sanic-routing";
|
||||||
version = "0.6.2";
|
version = "0.7.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sanic-org";
|
owner = "sanic-org";
|
||||||
repo = "sanic-routing";
|
repo = "sanic-routing";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-ZMl8PB9E401pUfUJ4tW7nBx1TgPQQtx9erVni3zP+lo=";
|
hash = "sha256-MN6A8CtDVxj34eehr3UIwCT09VOfcruVX+/iImr1MgY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
checkInputs = [ pytestCheckHook pytest-asyncio ];
|
checkInputs = [ pytestCheckHook pytest-asyncio ];
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{ lib
|
{ lib
|
||||||
|
, stdenv
|
||||||
, aiofiles
|
, aiofiles
|
||||||
, beautifulsoup4
|
, beautifulsoup4
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
|
@ -10,7 +11,6 @@
|
||||||
, multidict
|
, multidict
|
||||||
, pytest-asyncio
|
, pytest-asyncio
|
||||||
, pytest-benchmark
|
, pytest-benchmark
|
||||||
, pytest-sanic
|
|
||||||
, pytest-sugar
|
, pytest-sugar
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, sanic-routing
|
, sanic-routing
|
||||||
|
@ -23,28 +23,19 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "sanic";
|
pname = "sanic";
|
||||||
version = "21.3.4";
|
version = "21.9.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sanic-org";
|
owner = "sanic-org";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0vldlic8gqcf56fqb31igycqf11syd9csk66v34w6dim54lcny2b";
|
sha256 = "sha256-TRrJr/L8AXLAARPjhBi2FxNh+jvxxdeMN24cT1njmqY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
# Allow later websockets release, https://github.com/sanic-org/sanic/pull/2154
|
|
||||||
(fetchpatch {
|
|
||||||
name = "later-websockets.patch";
|
|
||||||
url = "https://github.com/sanic-org/sanic/commit/5fb820b5c1ce395e86a1ee11996790c65ec7bc65.patch";
|
|
||||||
sha256 = "1glvq23pf1sxqjnrz0w8rr7nsnyz82k1479b3rm8szfkjg9q5d1w";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# Loosen dependency requirements.
|
# Loosen dependency requirements.
|
||||||
substituteInPlace setup.py \
|
substituteInPlace setup.py \
|
||||||
--replace '"pytest==5.2.1"' '"pytest"' \
|
--replace '"pytest==6.2.5"' '"pytest"' \
|
||||||
--replace '"gunicorn==20.0.4"' '"gunicorn"' \
|
--replace '"gunicorn==20.0.4"' '"gunicorn"' \
|
||||||
--replace '"pytest-sanic",' "" \
|
--replace '"pytest-sanic",' "" \
|
||||||
# Patch a request headers test to allow brotli encoding
|
# Patch a request headers test to allow brotli encoding
|
||||||
|
@ -68,7 +59,6 @@ buildPythonPackage rec {
|
||||||
gunicorn
|
gunicorn
|
||||||
pytest-asyncio
|
pytest-asyncio
|
||||||
pytest-benchmark
|
pytest-benchmark
|
||||||
pytest-sanic
|
|
||||||
pytest-sugar
|
pytest-sugar
|
||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
sanic-testing
|
sanic-testing
|
||||||
|
@ -77,6 +67,11 @@ buildPythonPackage rec {
|
||||||
|
|
||||||
inherit doCheck;
|
inherit doCheck;
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
# Some tests depends on executables on PATH
|
||||||
|
PATH="$out/bin:${gunicorn}/bin:$PATH"
|
||||||
|
'';
|
||||||
|
|
||||||
disabledTests = [
|
disabledTests = [
|
||||||
# Tests are flaky
|
# Tests are flaky
|
||||||
"test_keep_alive_client_timeout"
|
"test_keep_alive_client_timeout"
|
||||||
|
@ -84,8 +79,18 @@ buildPythonPackage rec {
|
||||||
"test_check_timeouts_response_timeout"
|
"test_check_timeouts_response_timeout"
|
||||||
"test_reloader_live"
|
"test_reloader_live"
|
||||||
"test_zero_downtime"
|
"test_zero_downtime"
|
||||||
|
# Not working from 21.9.1
|
||||||
|
"test_create_server_main"
|
||||||
|
"test_create_server_main_convenience"
|
||||||
|
"test_debug"
|
||||||
|
"test_auto_reload"
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# https://github.com/sanic-org/sanic/issues/2298
|
||||||
|
"test_no_exceptions_when_cancel_pending_request"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# avoid usage of nixpkgs-review in darwin since tests will compete usage
|
||||||
|
# for the same local port
|
||||||
__darwinAllowLocalNetworking = true;
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
pythonImportsCheck = [ "sanic" ];
|
pythonImportsCheck = [ "sanic" ];
|
||||||
|
|
|
@ -1700,7 +1700,7 @@ self: super:
|
||||||
if (!enableCuda) then ''
|
if (!enableCuda) then ''
|
||||||
export USE_CUDA=0
|
export USE_CUDA=0
|
||||||
'' else ''
|
'' else ''
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${cudatoolkit}/targets/x86_64-linux/lib"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${cudatoolkit}/targets/x86_64-linux/lib"
|
||||||
'';
|
'';
|
||||||
preFixup = lib.optionalString (!enableCuda) ''
|
preFixup = lib.optionalString (!enableCuda) ''
|
||||||
# For some reason pytorch retains a reference to libcuda even if it
|
# For some reason pytorch retains a reference to libcuda even if it
|
||||||
|
@ -1739,9 +1739,9 @@ self: super:
|
||||||
];
|
];
|
||||||
preConfigure =
|
preConfigure =
|
||||||
if (enableCuda) then ''
|
if (enableCuda) then ''
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${self.torch}/${self.python.sitePackages}/torch/lib:${lib.makeLibraryPath [ cudatoolkit "${cudatoolkit}" ]}"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${self.torch}/${self.python.sitePackages}/torch/lib:${lib.makeLibraryPath [ cudatoolkit "${cudatoolkit}" ]}"
|
||||||
'' else ''
|
'' else ''
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${self.torch}/${self.python.sitePackages}/torch/lib"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${self.torch}/${self.python.sitePackages}/torch/lib"
|
||||||
'';
|
'';
|
||||||
}))
|
}))
|
||||||
{ };
|
{ };
|
||||||
|
|
|
@ -1,31 +1,33 @@
|
||||||
{ lib, stdenv
|
{ lib,
|
||||||
, fetchurl, autoconf, gfortran
|
stdenv,
|
||||||
, libelf, libiberty, zlib, libbfd, libopcodes
|
fetchFromGitLab,
|
||||||
, buildPackages
|
gfortran,
|
||||||
|
libelf,
|
||||||
|
libiberty,
|
||||||
|
zlib,
|
||||||
|
libbfd,
|
||||||
|
libopcodes,
|
||||||
|
buildPackages,
|
||||||
|
autoreconfHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "1.1-7";
|
|
||||||
pname = "EZTrace";
|
pname = "EZTrace";
|
||||||
|
version = "1.1-11";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitLab {
|
||||||
url = "https://gforge.inria.fr/frs/download.php/file/37155/eztrace-${version}.tar.gz";
|
owner = "eztrace";
|
||||||
sha256 = "0cr2d4fdv4ljvag55dsz3rpha1jan2gc3jhr06ycyk43450pl58p";
|
repo = "eztrace";
|
||||||
|
rev = "eztrace-${version}";
|
||||||
|
sha256 = "sha256-A6HMr4ib5Ka1lTbbTQOdq3kIdCoN/CwAKRdXdv9wpfU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Goes past the rpl_malloc linking failure; fixes silent file breakage
|
nativeBuildInputs = [ gfortran autoreconfHook ];
|
||||||
preConfigure = ''
|
|
||||||
export ac_cv_func_malloc_0_nonnull=yes
|
|
||||||
substituteInPlace ./configure \
|
|
||||||
--replace "/usr/bin/file" "${buildPackages.file}/bin/file"
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [ autoconf gfortran ];
|
|
||||||
buildInputs = [ libelf libiberty zlib libbfd libopcodes ];
|
buildInputs = [ libelf libiberty zlib libbfd libopcodes ];
|
||||||
|
|
||||||
meta = {
|
meta = with lib; {
|
||||||
description = "Tool that aims at generating automatically execution trace from HPC programs";
|
description = "Tool that aims at generating automatically execution trace from HPC programs";
|
||||||
license = lib.licenses.cecill-b;
|
license = licenses.cecill-b;
|
||||||
maintainers = with lib.maintainers; [ ];
|
maintainers = with maintainers; [ ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,9 @@ rustPlatform.buildRustPackage rec {
|
||||||
checkFlags = [
|
checkFlags = [
|
||||||
# uses internet
|
# uses internet
|
||||||
"--skip non_existent_http_link --skip working_http_check"
|
"--skip non_existent_http_link --skip working_http_check"
|
||||||
];
|
] ++ lib.optional (stdenv.hostPlatform.system != "x86_64-linux")
|
||||||
|
# assumes the target is x86_64-unknown-linux-gnu
|
||||||
|
"--skip simple_project::it_checks_okay_project_correctly";
|
||||||
|
|
||||||
buildInputs = lib.optional stdenv.isDarwin Security;
|
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "knot-dns";
|
pname = "knot-dns";
|
||||||
version = "3.1.3";
|
version = "3.1.4";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
|
url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
|
||||||
sha256 = "a3fc448cbce3209575f93a3cf1224fa37802fc6606f7c7d4bb3aa6dbeaed2c64";
|
sha256 = "05ebca053b4ce62205a095b6885ed1a1167c629ccac2b3c8dcc431bd2deedf70";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "bin" "out" "dev" ];
|
outputs = [ "bin" "out" "dev" ];
|
||||||
|
|
|
@ -6,7 +6,7 @@ index 573b3e4..6f2799e 100755
|
||||||
|
|
||||||
# ld will find the right path to load the library, including for 32-bit apps.
|
# ld will find the right path to load the library, including for 32-bit apps.
|
||||||
LD_PRELOAD="${GAMEMODEAUTO_NAME}${LD_PRELOAD:+:$LD_PRELOAD}"
|
LD_PRELOAD="${GAMEMODEAUTO_NAME}${LD_PRELOAD:+:$LD_PRELOAD}"
|
||||||
+LD_LIBRARY_PATH="@libraryPath@${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
+LD_LIBRARY_PATH="@libraryPath@${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
-exec env LD_PRELOAD="${LD_PRELOAD}" $GAMEMODERUNEXEC "$@"
|
-exec env LD_PRELOAD="${LD_PRELOAD}" $GAMEMODERUNEXEC "$@"
|
||||||
+exec env LD_PRELOAD="${LD_PRELOAD}" LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" $GAMEMODERUNEXEC "$@"
|
+exec env LD_PRELOAD="${LD_PRELOAD}" LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" $GAMEMODERUNEXEC "$@"
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "mcrcon";
|
pname = "mcrcon";
|
||||||
version = "0.7.1";
|
version = "0.7.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Tiiffi";
|
owner = "Tiiffi";
|
||||||
repo = "mcrcon";
|
repo = "mcrcon";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "004h1glagyw1mic1k461bky0w2fxdfhrhcqjzr9wp6gvyy9s8bix";
|
sha256 = "sha256-cedeKsZgEyu0jqN4kBSgMJzFNUfCVXCEwH3M54miSG4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ lib, rustPlatform, fetchFromGitHub
|
{ lib, rustPlatform, fetchFromGitHub
|
||||||
, libsodium, openssl
|
, libsodium, openssl
|
||||||
, pkg-config
|
, pkg-config
|
||||||
|
, fetchpatch
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with rustPlatform;
|
with rustPlatform;
|
||||||
|
@ -16,6 +17,14 @@ buildRustPackage rec {
|
||||||
sha256 = "sha256-tB6v2NEBdTNHf89USdQOr/pV0mbxxb8ftOYPPJMvz5Y=";
|
sha256 = "sha256-tB6v2NEBdTNHf89USdQOr/pV0mbxxb8ftOYPPJMvz5Y=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cargoPatches = [
|
||||||
|
# update cargo lock
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/tox-rs/tox-node/commit/63712d49d84e55df7bba9710e129780bbc636de3.patch";
|
||||||
|
sha256 = "sha256-jI6b5IHsAuGuM+7sPCdFnOOuV6K9rBmc5QqU5x72Fl0=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
buildInputs = [ libsodium openssl ];
|
buildInputs = [ libsodium openssl ];
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
||||||
|
@ -23,13 +32,13 @@ buildRustPackage rec {
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
cargoSha256 = "sha256-J/0KO33vZmOvm6V7qCXInuAJTbRqyy5/qj6p6dEmoas=";
|
cargoSha256 = "sha256-yHsYjKJJNjepvcNszj4XQ0DbOY3AEJMZOnz0cAiwO1A=";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A server application to run tox node written in pure Rust";
|
description = "A server application to run tox node written in pure Rust";
|
||||||
homepage = "https://github.com/tox-rs/tox-node";
|
homepage = "https://github.com/tox-rs/tox-node";
|
||||||
license = [ licenses.gpl3Plus ];
|
license = [ licenses.gpl3Plus ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
maintainers = with maintainers; [ suhr ];
|
maintainers = with maintainers; [ suhr kurnevsky ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue