forked from mirrors/nixpkgs
Merge master into staging-next
This commit is contained in:
commit
b40a01817b
|
@ -305,7 +305,7 @@ class CleanEnvironment(object):
|
|||
|
||||
def get_current_plugins(editor: Editor) -> List[Plugin]:
|
||||
with CleanEnvironment():
|
||||
cmd = ["nix", "eval", "--impure", "--json", "--expr", editor.get_plugins]
|
||||
cmd = ["nix", "eval", "--extra-experimental-features", "nix-command", "--impure", "--json", "--expr", editor.get_plugins]
|
||||
log.debug("Running command %s", cmd)
|
||||
out = subprocess.check_output(cmd)
|
||||
data = json.loads(out)
|
||||
|
|
|
@ -88,6 +88,8 @@ starting them in parallel:
|
|||
start_all()
|
||||
```
|
||||
|
||||
## Machine objects {#ssec-machine-objects}
|
||||
|
||||
The following methods are available on machine objects:
|
||||
|
||||
`start`
|
||||
|
@ -313,3 +315,52 @@ repository):
|
|||
# fmt: on
|
||||
'';
|
||||
```
|
||||
|
||||
## Failing tests early {#ssec-failing-tests-early}
|
||||
|
||||
To fail tests early when certain invariables are no longer met (instead of waiting for the build to time out), the decorator `polling_condition` is provided. For example, if we are testing a program `foo` that should not quit after being started, we might write the following:
|
||||
|
||||
```py
|
||||
@polling_condition
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
|
||||
|
||||
machine.succeed("foo --start")
|
||||
machine.wait_until_succeeds("pgrep -x foo")
|
||||
|
||||
with foo_running:
|
||||
... # Put `foo` through its paces
|
||||
```
|
||||
|
||||
|
||||
`polling_condition` takes the following (optional) arguments:
|
||||
|
||||
`seconds_interval`
|
||||
|
||||
:
|
||||
specifies how often the condition should be polled:
|
||||
|
||||
```py
|
||||
@polling_condition(seconds_interval=10)
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
|
||||
`description`
|
||||
|
||||
:
|
||||
is used in the log when the condition is checked. If this is not provided, the description is pulled from the docstring of the function. These two are therefore equivalent:
|
||||
|
||||
```py
|
||||
@polling_condition
|
||||
def foo_running():
|
||||
"check that foo is running"
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
|
||||
```py
|
||||
@polling_condition(description="check that foo is running")
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
|
|
|
@ -117,407 +117,413 @@ if not "Linux" in machine.succeed("uname"):
|
|||
<programlisting language="python">
|
||||
start_all()
|
||||
</programlisting>
|
||||
<para>
|
||||
The following methods are available on machine objects:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>start</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Start the virtual machine. This method is asynchronous — it
|
||||
does not wait for the machine to finish booting.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>shutdown</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Shut down the machine, waiting for the VM to exit.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>crash</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate a sudden power failure, by telling the VM to exit
|
||||
immediately.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>block</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate unplugging the Ethernet cable that connects the
|
||||
machine to the other machines.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>unblock</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Undo the effect of <literal>block</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>screenshot</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Take a picture of the display of the virtual machine, in PNG
|
||||
format. The screenshot is linked from the HTML log.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>get_screen_text_variants</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Return a list of different interpretations of what is
|
||||
currently visible on the machine's screen using optical
|
||||
character recognition. The number and order of the
|
||||
interpretations is not specified and is subject to change, but
|
||||
if no exception is raised at least one will be returned.
|
||||
</para>
|
||||
<note>
|
||||
<section xml:id="ssec-machine-objects">
|
||||
<title>Machine objects</title>
|
||||
<para>
|
||||
The following methods are available on machine objects:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>start</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
Start the virtual machine. This method is asynchronous — it
|
||||
does not wait for the machine to finish booting.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>get_screen_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Return a textual representation of what is currently visible
|
||||
on the machine's screen using optical character recognition.
|
||||
</para>
|
||||
<note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>shutdown</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
Shut down the machine, waiting for the VM to exit.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_monitor_command</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Send a command to the QEMU monitor. This is rarely used, but
|
||||
allows doing stuff such as attaching virtual USB disks to a
|
||||
running machine.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_key</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate pressing keys on the virtual keyboard, e.g.,
|
||||
<literal>send_key("ctrl-alt-delete")</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_chars</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate typing a sequence of characters on the virtual
|
||||
keyboard, e.g.,
|
||||
<literal>send_chars("foobar\n")</literal> will type
|
||||
the string <literal>foobar</literal> followed by the Enter
|
||||
key.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>execute</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Execute a shell command, returning a list
|
||||
<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. Examples of detaching
|
||||
commands are <literal>sleep 365d &</literal>, where the
|
||||
shell forks a new process that can write to stdout and
|
||||
<literal>xclip -i</literal>, where the
|
||||
<literal>xclip</literal> command itself forks without closing
|
||||
stdout. Takes an optional parameter
|
||||
<literal>check_return</literal> that defaults to
|
||||
<literal>True</literal>. Setting this parameter to
|
||||
<literal>False</literal> will not check for the return code
|
||||
and return -1 instead. This can be used for commands that shut
|
||||
down the VM and would therefore break the pipe that would be
|
||||
used for retrieving the return code.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>succeed</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Execute a shell command, raising an exception if the exit
|
||||
status is not zero, otherwise returning the standard output.
|
||||
Commands are run with <literal>set -euo pipefail</literal>
|
||||
set:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
If several commands are separated by <literal>;</literal>
|
||||
and one fails, the command as a whole will fail.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
For pipelines, the last non-zero exit status will be
|
||||
returned (if there is one, zero will be returned
|
||||
otherwise).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Dereferencing unset variables fail the command.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
It will wait for stdout to be closed. See
|
||||
<literal>execute</literal> for the implications.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>fail</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Like <literal>succeed</literal>, but raising an exception if
|
||||
the command returns a zero status.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_until_succeeds</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Repeat a shell command with 1-second intervals until it
|
||||
succeeds.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_until_fails</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Repeat a shell command with 1-second intervals until it fails.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_unit</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the specified systemd unit has reached the
|
||||
<quote>active</quote> state.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_file</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the specified file exists.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_open_port</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until a process is listening on the given TCP port (on
|
||||
<literal>localhost</literal>, at least).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_closed_port</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until nobody is listening on the given TCP port.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_x</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the X11 server is accepting connections.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the supplied regular expressions matches the
|
||||
textual contents of the screen by using optical character
|
||||
recognition (see <literal>get_screen_text</literal> and
|
||||
<literal>get_screen_text_variants</literal>).
|
||||
</para>
|
||||
<note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>crash</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
Simulate a sudden power failure, by telling the VM to exit
|
||||
immediately.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_console_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the supplied regular expressions match a line of
|
||||
the serial console output. This method is useful when OCR is
|
||||
not possibile or accurate enough.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_window</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until an X11 window has appeared whose name matches the
|
||||
given regular expression, e.g.,
|
||||
<literal>wait_for_window("Terminal")</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>copy_from_host</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Copies a file from host to machine, e.g.,
|
||||
<literal>copy_from_host("myfile", "/etc/my/important/file")</literal>.
|
||||
</para>
|
||||
<para>
|
||||
The first argument is the file on the host. The file needs to
|
||||
be accessible while building the nix derivation. The second
|
||||
argument is the location of the file on the machine.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>systemctl</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Runs <literal>systemctl</literal> commands with optional
|
||||
support for <literal>systemctl --user</literal>
|
||||
</para>
|
||||
<programlisting language="python">
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>block</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate unplugging the Ethernet cable that connects the
|
||||
machine to the other machines.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>unblock</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Undo the effect of <literal>block</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>screenshot</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Take a picture of the display of the virtual machine, in PNG
|
||||
format. The screenshot is linked from the HTML log.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>get_screen_text_variants</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Return a list of different interpretations of what is
|
||||
currently visible on the machine's screen using optical
|
||||
character recognition. The number and order of the
|
||||
interpretations is not specified and is subject to change,
|
||||
but if no exception is raised at least one will be returned.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>get_screen_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Return a textual representation of what is currently visible
|
||||
on the machine's screen using optical character recognition.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_monitor_command</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Send a command to the QEMU monitor. This is rarely used, but
|
||||
allows doing stuff such as attaching virtual USB disks to a
|
||||
running machine.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_key</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate pressing keys on the virtual keyboard, e.g.,
|
||||
<literal>send_key("ctrl-alt-delete")</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>send_chars</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Simulate typing a sequence of characters on the virtual
|
||||
keyboard, e.g.,
|
||||
<literal>send_chars("foobar\n")</literal> will
|
||||
type the string <literal>foobar</literal> followed by the
|
||||
Enter key.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>execute</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Execute a shell command, returning a list
|
||||
<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. Examples of
|
||||
detaching commands are <literal>sleep 365d &</literal>,
|
||||
where the shell forks a new process that can write to stdout
|
||||
and <literal>xclip -i</literal>, where the
|
||||
<literal>xclip</literal> command itself forks without
|
||||
closing stdout. Takes an optional parameter
|
||||
<literal>check_return</literal> that defaults to
|
||||
<literal>True</literal>. Setting this parameter to
|
||||
<literal>False</literal> will not check for the return code
|
||||
and return -1 instead. This can be used for commands that
|
||||
shut down the VM and would therefore break the pipe that
|
||||
would be used for retrieving the return code.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>succeed</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Execute a shell command, raising an exception if the exit
|
||||
status is not zero, otherwise returning the standard output.
|
||||
Commands are run with <literal>set -euo pipefail</literal>
|
||||
set:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
If several commands are separated by
|
||||
<literal>;</literal> and one fails, the command as a
|
||||
whole will fail.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
For pipelines, the last non-zero exit status will be
|
||||
returned (if there is one, zero will be returned
|
||||
otherwise).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Dereferencing unset variables fail the command.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
It will wait for stdout to be closed. See
|
||||
<literal>execute</literal> for the implications.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>fail</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Like <literal>succeed</literal>, but raising an exception if
|
||||
the command returns a zero status.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_until_succeeds</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Repeat a shell command with 1-second intervals until it
|
||||
succeeds.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_until_fails</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Repeat a shell command with 1-second intervals until it
|
||||
fails.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_unit</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the specified systemd unit has reached the
|
||||
<quote>active</quote> state.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_file</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the specified file exists.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_open_port</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until a process is listening on the given TCP port (on
|
||||
<literal>localhost</literal>, at least).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_closed_port</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until nobody is listening on the given TCP port.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_x</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the X11 server is accepting connections.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the supplied regular expressions matches the
|
||||
textual contents of the screen by using optical character
|
||||
recognition (see <literal>get_screen_text</literal> and
|
||||
<literal>get_screen_text_variants</literal>).
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
This requires passing <literal>enableOCR</literal> to the
|
||||
test attribute set.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_console_text</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until the supplied regular expressions match a line of
|
||||
the serial console output. This method is useful when OCR is
|
||||
not possibile or accurate enough.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>wait_for_window</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait until an X11 window has appeared whose name matches the
|
||||
given regular expression, e.g.,
|
||||
<literal>wait_for_window("Terminal")</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>copy_from_host</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Copies a file from host to machine, e.g.,
|
||||
<literal>copy_from_host("myfile", "/etc/my/important/file")</literal>.
|
||||
</para>
|
||||
<para>
|
||||
The first argument is the file on the host. The file needs
|
||||
to be accessible while building the nix derivation. The
|
||||
second argument is the location of the file on the machine.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>systemctl</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Runs <literal>systemctl</literal> commands with optional
|
||||
support for <literal>systemctl --user</literal>
|
||||
</para>
|
||||
<programlisting language="python">
|
||||
machine.systemctl("list-jobs --no-pager") # runs `systemctl list-jobs --no-pager`
|
||||
machine.systemctl("list-jobs --no-pager", "any-user") # spawns a shell for `any-user` and runs `systemctl --user list-jobs --no-pager`
|
||||
</programlisting>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>shell_interact</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allows you to directly interact with the guest shell. This
|
||||
should only be used during test development, not in production
|
||||
tests. Killing the interactive session with
|
||||
<literal>Ctrl-d</literal> or <literal>Ctrl-c</literal> also
|
||||
ends the guest session.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
To test user units declared by
|
||||
<literal>systemd.user.services</literal> the optional
|
||||
<literal>user</literal> argument can be used:
|
||||
</para>
|
||||
<programlisting language="python">
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<literal>shell_interact</literal>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allows you to directly interact with the guest shell. This
|
||||
should only be used during test development, not in
|
||||
production tests. Killing the interactive session with
|
||||
<literal>Ctrl-d</literal> or <literal>Ctrl-c</literal> also
|
||||
ends the guest session.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>
|
||||
To test user units declared by
|
||||
<literal>systemd.user.services</literal> the optional
|
||||
<literal>user</literal> argument can be used:
|
||||
</para>
|
||||
<programlisting language="python">
|
||||
machine.start()
|
||||
machine.wait_for_x()
|
||||
machine.wait_for_unit("xautolock.service", "x-session-user")
|
||||
</programlisting>
|
||||
<para>
|
||||
This applies to <literal>systemctl</literal>,
|
||||
<literal>get_unit_info</literal>, <literal>wait_for_unit</literal>,
|
||||
<literal>start_job</literal> and <literal>stop_job</literal>.
|
||||
</para>
|
||||
<para>
|
||||
For faster dev cycles it's also possible to disable the code-linters
|
||||
(this shouldn't be commited though):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<para>
|
||||
This applies to <literal>systemctl</literal>,
|
||||
<literal>get_unit_info</literal>,
|
||||
<literal>wait_for_unit</literal>, <literal>start_job</literal> and
|
||||
<literal>stop_job</literal>.
|
||||
</para>
|
||||
<para>
|
||||
For faster dev cycles it's also possible to disable the
|
||||
code-linters (this shouldn't be commited though):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
import ./make-test-python.nix {
|
||||
skipLint = true;
|
||||
machine =
|
||||
|
@ -531,13 +537,13 @@ import ./make-test-python.nix {
|
|||
'';
|
||||
}
|
||||
</programlisting>
|
||||
<para>
|
||||
This will produce a Nix warning at evaluation time. To fully disable
|
||||
the linter, wrap the test script in comment directives to disable
|
||||
the Black linter directly (again, don't commit this within the
|
||||
Nixpkgs repository):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
<para>
|
||||
This will produce a Nix warning at evaluation time. To fully
|
||||
disable the linter, wrap the test script in comment directives to
|
||||
disable the Black linter directly (again, don't commit this within
|
||||
the Nixpkgs repository):
|
||||
</para>
|
||||
<programlisting language="bash">
|
||||
testScript =
|
||||
''
|
||||
# fmt: off
|
||||
|
@ -545,4 +551,66 @@ import ./make-test-python.nix {
|
|||
# fmt: on
|
||||
'';
|
||||
</programlisting>
|
||||
</section>
|
||||
<section xml:id="ssec-failing-tests-early">
|
||||
<title>Failing tests early</title>
|
||||
<para>
|
||||
To fail tests early when certain invariables are no longer met
|
||||
(instead of waiting for the build to time out), the decorator
|
||||
<literal>polling_condition</literal> is provided. For example, if
|
||||
we are testing a program <literal>foo</literal> that should not
|
||||
quit after being started, we might write the following:
|
||||
</para>
|
||||
<programlisting language="python">
|
||||
@polling_condition
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
|
||||
|
||||
machine.succeed("foo --start")
|
||||
machine.wait_until_succeeds("pgrep -x foo")
|
||||
|
||||
with foo_running:
|
||||
... # Put `foo` through its paces
|
||||
</programlisting>
|
||||
<para>
|
||||
<literal>polling_condition</literal> takes the following
|
||||
(optional) arguments:
|
||||
</para>
|
||||
<para>
|
||||
<literal>seconds_interval</literal>
|
||||
</para>
|
||||
<para>
|
||||
: specifies how often the condition should be polled:
|
||||
</para>
|
||||
<programlisting>
|
||||
```py
|
||||
@polling_condition(seconds_interval=10)
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
</programlisting>
|
||||
<para>
|
||||
<literal>description</literal>
|
||||
</para>
|
||||
<para>
|
||||
: is used in the log when the condition is checked. If this is not
|
||||
provided, the description is pulled from the docstring of the
|
||||
function. These two are therefore equivalent:
|
||||
</para>
|
||||
<programlisting>
|
||||
```py
|
||||
@polling_condition
|
||||
def foo_running():
|
||||
"check that foo is running"
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
|
||||
```py
|
||||
@polling_condition(description="check that foo is running")
|
||||
def foo_running():
|
||||
machine.succeed("pgrep -x foo")
|
||||
```
|
||||
</programlisting>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "nixos-test-driver";
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
src = ./.;
|
||||
|
||||
propagatedBuildInputs = [ coreutils netpbm python3Packages.colorama python3Packages.ptpython qemu_pkg socat vde2 ]
|
||||
|
@ -26,7 +26,7 @@ python3Packages.buildPythonApplication rec {
|
|||
mypy --disallow-untyped-defs \
|
||||
--no-implicit-optional \
|
||||
--ignore-missing-imports ${src}/test_driver
|
||||
pylint --errors-only ${src}/test_driver
|
||||
pylint --errors-only --enable=unused-import ${src}/test_driver
|
||||
black --check --diff ${src}/test_driver
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||
|
||||
setup(
|
||||
name="nixos-test-driver",
|
||||
version='1.0',
|
||||
version='1.1',
|
||||
packages=find_packages(),
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
from contextlib import contextmanager
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Iterator, List
|
||||
from typing import Any, Dict, Iterator, List, Union, Optional, Callable, ContextManager
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from test_driver.logger import rootlog
|
||||
from test_driver.machine import Machine, NixStartScript, retry
|
||||
from test_driver.vlan import VLan
|
||||
from test_driver.polling_condition import PollingCondition
|
||||
|
||||
|
||||
class Driver:
|
||||
|
@ -16,6 +17,7 @@ class Driver:
|
|||
tests: str
|
||||
vlans: List[VLan]
|
||||
machines: List[Machine]
|
||||
polling_conditions: List[PollingCondition]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -36,12 +38,15 @@ class Driver:
|
|||
for s in scripts:
|
||||
yield NixStartScript(s)
|
||||
|
||||
self.polling_conditions = []
|
||||
|
||||
self.machines = [
|
||||
Machine(
|
||||
start_command=cmd,
|
||||
keep_vm_state=keep_vm_state,
|
||||
name=cmd.machine_name,
|
||||
tmp_dir=tmp_dir,
|
||||
callbacks=[self.check_polling_conditions],
|
||||
)
|
||||
for cmd in cmd(start_scripts)
|
||||
]
|
||||
|
@ -84,6 +89,7 @@ class Driver:
|
|||
retry=retry,
|
||||
serial_stdout_off=self.serial_stdout_off,
|
||||
serial_stdout_on=self.serial_stdout_on,
|
||||
polling_condition=self.polling_condition,
|
||||
Machine=Machine, # for typing
|
||||
)
|
||||
machine_symbols = {m.name: m for m in self.machines}
|
||||
|
@ -159,3 +165,36 @@ class Driver:
|
|||
|
||||
def serial_stdout_off(self) -> None:
|
||||
rootlog._print_serial_logs = False
|
||||
|
||||
def check_polling_conditions(self) -> None:
|
||||
for condition in self.polling_conditions:
|
||||
condition.maybe_raise()
|
||||
|
||||
def polling_condition(
|
||||
self,
|
||||
fun_: Optional[Callable] = None,
|
||||
*,
|
||||
seconds_interval: float = 2.0,
|
||||
description: Optional[str] = None,
|
||||
) -> Union[Callable[[Callable], ContextManager], ContextManager]:
|
||||
driver = self
|
||||
|
||||
class Poll:
|
||||
def __init__(self, fun: Callable):
|
||||
self.condition = PollingCondition(
|
||||
fun,
|
||||
seconds_interval,
|
||||
description,
|
||||
)
|
||||
|
||||
def __enter__(self) -> None:
|
||||
driver.polling_conditions.append(self.condition)
|
||||
|
||||
def __exit__(self, a, b, c) -> None: # type: ignore
|
||||
res = driver.polling_conditions.pop()
|
||||
assert res is self.condition
|
||||
|
||||
if fun_ is None:
|
||||
return Poll
|
||||
else:
|
||||
return Poll(fun_)
|
||||
|
|
|
@ -318,6 +318,7 @@ class Machine:
|
|||
# Store last serial console lines for use
|
||||
# of wait_for_console_text
|
||||
last_lines: Queue = Queue()
|
||||
callbacks: List[Callable]
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<Machine '{self.name}'>"
|
||||
|
@ -329,12 +330,14 @@ class Machine:
|
|||
name: str = "machine",
|
||||
keep_vm_state: bool = False,
|
||||
allow_reboot: bool = False,
|
||||
callbacks: Optional[List[Callable]] = None,
|
||||
) -> None:
|
||||
self.tmp_dir = tmp_dir
|
||||
self.keep_vm_state = keep_vm_state
|
||||
self.allow_reboot = allow_reboot
|
||||
self.name = name
|
||||
self.start_command = start_command
|
||||
self.callbacks = callbacks if callbacks is not None else []
|
||||
|
||||
# set up directories
|
||||
self.shared_dir = self.tmp_dir / "shared-xchg"
|
||||
|
@ -406,6 +409,7 @@ class Machine:
|
|||
return answer
|
||||
|
||||
def send_monitor_command(self, command: str) -> str:
|
||||
self.run_callbacks()
|
||||
with self.nested("sending monitor command: {}".format(command)):
|
||||
message = ("{}\n".format(command)).encode()
|
||||
assert self.monitor is not None
|
||||
|
@ -509,6 +513,7 @@ class Machine:
|
|||
def execute(
|
||||
self, command: str, check_return: bool = True, timeout: Optional[int] = 900
|
||||
) -> Tuple[int, str]:
|
||||
self.run_callbacks()
|
||||
self.connect()
|
||||
|
||||
if timeout is not None:
|
||||
|
@ -969,3 +974,7 @@ class Machine:
|
|||
self.shell.close()
|
||||
self.monitor.close()
|
||||
self.serial_thread.join()
|
||||
|
||||
def run_callbacks(self) -> None:
|
||||
for callback in self.callbacks:
|
||||
callback()
|
||||
|
|
77
nixos/lib/test-driver/test_driver/polling_condition.py
Normal file
77
nixos/lib/test-driver/test_driver/polling_condition.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
from typing import Callable, Optional
|
||||
import time
|
||||
|
||||
from .logger import rootlog
|
||||
|
||||
|
||||
class PollingConditionFailed(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class PollingCondition:
|
||||
condition: Callable[[], bool]
|
||||
seconds_interval: float
|
||||
description: Optional[str]
|
||||
|
||||
last_called: float
|
||||
entered: bool
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
condition: Callable[[], Optional[bool]],
|
||||
seconds_interval: float = 2.0,
|
||||
description: Optional[str] = None,
|
||||
):
|
||||
self.condition = condition # type: ignore
|
||||
self.seconds_interval = seconds_interval
|
||||
|
||||
if description is None:
|
||||
if condition.__doc__:
|
||||
self.description = condition.__doc__
|
||||
else:
|
||||
self.description = condition.__name__
|
||||
else:
|
||||
self.description = str(description)
|
||||
|
||||
self.last_called = float("-inf")
|
||||
self.entered = False
|
||||
|
||||
def check(self) -> bool:
|
||||
if self.entered or not self.overdue:
|
||||
return True
|
||||
|
||||
with self, rootlog.nested(self.nested_message):
|
||||
rootlog.info(f"Time since last: {time.monotonic() - self.last_called:.2f}s")
|
||||
try:
|
||||
res = self.condition() # type: ignore
|
||||
except Exception:
|
||||
res = False
|
||||
res = res is None or res
|
||||
rootlog.info(self.status_message(res))
|
||||
return res
|
||||
|
||||
def maybe_raise(self) -> None:
|
||||
if not self.check():
|
||||
raise PollingConditionFailed(self.status_message(False))
|
||||
|
||||
def status_message(self, status: bool) -> str:
|
||||
return f"Polling condition {'succeeded' if status else 'failed'}: {self.description}"
|
||||
|
||||
@property
|
||||
def nested_message(self) -> str:
|
||||
nested_message = ["Checking polling condition"]
|
||||
if self.description is not None:
|
||||
nested_message.append(repr(self.description))
|
||||
|
||||
return " ".join(nested_message)
|
||||
|
||||
@property
|
||||
def overdue(self) -> bool:
|
||||
return self.last_called + self.seconds_interval < time.monotonic()
|
||||
|
||||
def __enter__(self) -> None:
|
||||
self.entered = True
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback) -> None: # type: ignore
|
||||
self.entered = False
|
||||
self.last_called = time.monotonic()
|
|
@ -34,36 +34,46 @@ let
|
|||
};
|
||||
enableOCR = true;
|
||||
testScript = ''
|
||||
@polling_condition
|
||||
def codium_running():
|
||||
machine.succeed('pgrep -x codium')
|
||||
|
||||
|
||||
start_all()
|
||||
|
||||
machine.wait_for_unit('graphical.target')
|
||||
machine.wait_until_succeeds('pgrep -x codium')
|
||||
|
||||
# Wait until vscodium is visible. "File" is in the menu bar.
|
||||
machine.wait_for_text('File')
|
||||
machine.screenshot('start_screen')
|
||||
with codium_running:
|
||||
# Wait until vscodium is visible. "File" is in the menu bar.
|
||||
machine.wait_for_text('Get Started')
|
||||
machine.screenshot('start_screen')
|
||||
|
||||
test_string = 'testfile'
|
||||
test_string = 'testfile'
|
||||
|
||||
# Create a new file
|
||||
machine.send_key('ctrl-n')
|
||||
machine.wait_for_text('Untitled')
|
||||
machine.screenshot('empty_editor')
|
||||
# Create a new file
|
||||
machine.send_key('ctrl-n')
|
||||
machine.wait_for_text('Untitled')
|
||||
machine.screenshot('empty_editor')
|
||||
|
||||
# Type a string
|
||||
machine.send_chars(test_string)
|
||||
machine.wait_for_text(test_string)
|
||||
machine.screenshot('editor')
|
||||
# Type a string
|
||||
machine.send_chars(test_string)
|
||||
machine.wait_for_text(test_string)
|
||||
machine.screenshot('editor')
|
||||
|
||||
# Save the file
|
||||
machine.send_key('ctrl-s')
|
||||
machine.wait_for_text('Save')
|
||||
machine.screenshot('save_window')
|
||||
machine.send_key('ret')
|
||||
# Save the file
|
||||
machine.send_key('ctrl-s')
|
||||
machine.wait_for_text('Save')
|
||||
machine.screenshot('save_window')
|
||||
machine.send_key('ret')
|
||||
|
||||
# (the default filename is the first line of the file)
|
||||
machine.wait_for_file(f'/home/alice/{test_string}')
|
||||
# (the default filename is the first line of the file)
|
||||
machine.wait_for_file(f'/home/alice/{test_string}')
|
||||
|
||||
machine.send_key('ctrl-q')
|
||||
machine.wait_until_fails('pgrep -x codium')
|
||||
'';
|
||||
});
|
||||
|
||||
in builtins.mapAttrs (k: v: mkTest k v { }) tests
|
||||
in
|
||||
builtins.mapAttrs (k: v: mkTest k v { }) tests
|
||||
|
|
|
@ -1 +1 @@
|
|||
WGET_ARGS=( https://download.kde.org/stable/release-service/21.12.0/src -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.kde.org/stable/release-service/21.12.1/src -A '*.tar.xz' )
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -12,13 +12,13 @@ assert trackerSearch -> (python3 != null);
|
|||
with lib;
|
||||
mkDerivation rec {
|
||||
pname = "qbittorrent";
|
||||
version = "4.3.9";
|
||||
version = "4.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qbittorrent";
|
||||
repo = "qBittorrent";
|
||||
rev = "release-${version}";
|
||||
sha256 = "sha256-pFHeozx72qVjA3cmW6GK058IIAOWmyNm1UQVCQ1v5EU=";
|
||||
sha256 = "sha256-xxQ6NGRSwRP+7kTxUsDB00VItHRHuaFopEroETtnGSs=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "onedrive";
|
||||
version = "2.4.14";
|
||||
version = "2.4.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "abraunegg";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-zh9CSvuwZj9B8XPvV23xS0MqnsR+vhfdD8V+k6CjCxQ=";
|
||||
sha256 = "sha256-nYko7htg16Sp/Fs+KuPflrpHn8WShM0OKozhr9BFH5U=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ldc installShellFiles pkg-config ];
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
, highlightSupport ? fullBuild
|
||||
, ApplicationServices
|
||||
# test dependencies
|
||||
, runCommand
|
||||
, unzip
|
||||
, which
|
||||
, sqlite
|
||||
|
@ -39,15 +40,6 @@ let
|
|||
} else null;
|
||||
cargoRoot = if rustSupport then "rust" else null;
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
|
||||
for f in **/*.{py,c,t}; do
|
||||
# not only used in shebangs
|
||||
substituteAllInPlace "$f" '/bin/sh' '${stdenv.shell}'
|
||||
done
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = lib.optional re2Support fb-re2
|
||||
++ lib.optional gitSupport pygit2
|
||||
++ lib.optional highlightSupport pygments;
|
||||
|
@ -63,27 +55,6 @@ let
|
|||
makeFlags = [ "PREFIX=$(out)" ]
|
||||
++ lib.optional rustSupport "PURE=--rust";
|
||||
|
||||
doCheck = stdenv.isLinux; # tests seem unstable on Darwin
|
||||
checkInputs = [
|
||||
unzip
|
||||
which
|
||||
sqlite
|
||||
git
|
||||
gnupg
|
||||
];
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; # needed for git
|
||||
checkPhase = ''
|
||||
cat << EOF > tests/blacklists/nix
|
||||
# tests enforcing "/usr/bin/env" shebangs, which are patched for nix
|
||||
test-run-tests.t
|
||||
test-check-shbang.t
|
||||
EOF
|
||||
|
||||
# extended timeout necessary for tests to pass on the busy CI workers
|
||||
export HGTESTFLAGS="--blacklist blacklists/nix --timeout 1800"
|
||||
make check
|
||||
'';
|
||||
|
||||
postInstall = (lib.optionalString guiSupport ''
|
||||
mkdir -p $out/etc/mercurial
|
||||
cp contrib/hgk $out/bin
|
||||
|
@ -111,18 +82,81 @@ let
|
|||
--zsh contrib/zsh_completion
|
||||
'';
|
||||
|
||||
passthru.tests = {};
|
||||
passthru.tests = {
|
||||
mercurial-tests = makeTests { flags = "--with-hg=$MERCURIAL_BASE/bin/hg"; };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A fast, lightweight SCM system for very large distributed projects";
|
||||
homepage = "https://www.mercurial-scm.org";
|
||||
downloadPage = "https://www.mercurial-scm.org/release/";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ eelco lukegb ];
|
||||
maintainers = with maintainers; [ eelco lukegb pacien ];
|
||||
updateWalker = true;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
};
|
||||
|
||||
makeTests = { mercurial ? self, nameSuffix ? "", flags ? "" }: runCommand "${mercurial.pname}${nameSuffix}-tests" {
|
||||
inherit (mercurial) src;
|
||||
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; # needed for git
|
||||
MERCURIAL_BASE = mercurial;
|
||||
nativeBuildInputs = [
|
||||
python
|
||||
unzip
|
||||
which
|
||||
sqlite
|
||||
git
|
||||
gnupg
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
|
||||
for f in **/*.{py,c,t}; do
|
||||
# not only used in shebangs
|
||||
substituteAllInPlace "$f" '/bin/sh' '${stdenv.shell}'
|
||||
done
|
||||
|
||||
for f in **/*.t; do
|
||||
substituteInPlace 2>/dev/null "$f" \
|
||||
--replace '*/hg:' '*/*hg*:' \${/* paths emitted by our wrapped hg look like ..hg-wrapped-wrapped */""}
|
||||
--replace '"$PYTHON" "$BINDIR"/hg' '"$BINDIR"/hg' ${/* 'hg' is a wrapper; don't run using python directly */""}
|
||||
done
|
||||
'';
|
||||
|
||||
# This runs Mercurial _a lot_ of times.
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
# Don't run tests if not-Linux or if cross-compiling.
|
||||
meta.broken = !stdenv.hostPlatform.isLinux || stdenv.buildPlatform != stdenv.hostPlatform;
|
||||
} ''
|
||||
addToSearchPathWithCustomDelimiter : PYTHONPATH "${mercurial}/${python.sitePackages}"
|
||||
|
||||
unpackPhase
|
||||
cd "$sourceRoot"
|
||||
patchPhase
|
||||
|
||||
cat << EOF > tests/blacklists/nix
|
||||
# tests enforcing "/usr/bin/env" shebangs, which are patched for nix
|
||||
test-run-tests.t
|
||||
test-check-shbang.t
|
||||
|
||||
# unstable experimental/unsupported features
|
||||
# https://bz.mercurial-scm.org/show_bug.cgi?id=6633#c1
|
||||
test-git-interop.t
|
||||
|
||||
# doesn't like the extra setlocale warnings emitted by our bash wrappers
|
||||
test-locale.t
|
||||
EOF
|
||||
|
||||
export HGTEST_REAL_HG="${mercurial}/bin/hg"
|
||||
# extended timeout necessary for tests to pass on the busy CI workers
|
||||
export HGTESTFLAGS="--blacklist blacklists/nix --timeout 1800 -j$NIX_BUILD_CORES ${flags}"
|
||||
make check
|
||||
touch $out
|
||||
'';
|
||||
in
|
||||
self.overridePythonAttrs (origAttrs: {
|
||||
passthru = origAttrs.passthru // rec {
|
||||
|
|
|
@ -1,6 +1,22 @@
|
|||
{ stdenv, lib, coreutils }:
|
||||
{ stdenv, runCommand, lib, coreutils }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
if stdenv.hostPlatform.isStatic
|
||||
then throw ''
|
||||
libredirect is not available on static builds.
|
||||
|
||||
Please fix your derivation to not depend on libredirect on static
|
||||
builds, using something like following:
|
||||
|
||||
nativeBuildInputs =
|
||||
lib.optional (!stdenv.buildPlatform.isStatic) libredirect;
|
||||
|
||||
and disable tests as necessary, although fixing tests to work without
|
||||
libredirect is even better.
|
||||
|
||||
libredirect uses LD_PRELOAD feature of dynamic loader and does not
|
||||
work on static builds where dynamic loader is not used.
|
||||
''
|
||||
else stdenv.mkDerivation rec {
|
||||
pname = "libredirect";
|
||||
version = "0";
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
WGET_ARGS=( https://download.kde.org/stable/plasma/5.23.4/ -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.kde.org/stable/plasma/5.23.5/ -A '*.tar.xz' )
|
||||
|
|
|
@ -4,427 +4,427 @@
|
|||
|
||||
{
|
||||
bluedevil = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/bluedevil-5.23.4.tar.xz";
|
||||
sha256 = "13sxwsks7gnws13jhk8428npzdyhvv5yhczzayi5yd3856d3g4av";
|
||||
name = "bluedevil-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/bluedevil-5.23.5.tar.xz";
|
||||
sha256 = "1nbnmfdaisqngygyz1478fswsm1xp28v9l78xlw70yvvyjk2kc6v";
|
||||
name = "bluedevil-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
breeze = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/breeze-5.23.4.tar.xz";
|
||||
sha256 = "1wbhir9g2gfwcvw0ib50qhqk0rgfji8wjipqqp7ddsm463ykp472";
|
||||
name = "breeze-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/breeze-5.23.5.tar.xz";
|
||||
sha256 = "1pyw7rhzkbd9kwsm8l7iz867jhwlbmkarc5iihg0bkbcg1ds18ic";
|
||||
name = "breeze-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
breeze-grub = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/breeze-grub-5.23.4.tar.xz";
|
||||
sha256 = "1zkl8ddbdnckz4glaf0j6vkxf1z63d5q9nx0w64d17qydp1fwxjq";
|
||||
name = "breeze-grub-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/breeze-grub-5.23.5.tar.xz";
|
||||
sha256 = "12rm9a3vrmb3sm04l2c4vcj8psfyjxplp9wgh87q3k1rcyqz7fqk";
|
||||
name = "breeze-grub-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
breeze-gtk = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/breeze-gtk-5.23.4.tar.xz";
|
||||
sha256 = "0jv064y7wlvglk0w2yx1zwnxjhczi9gq6cfnz004z18rlqwnz9pq";
|
||||
name = "breeze-gtk-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/breeze-gtk-5.23.5.tar.xz";
|
||||
sha256 = "1ynbvfgy2nlxg5svjqazj70m7py58ixxa7xyj13dcj6i2ikbcjld";
|
||||
name = "breeze-gtk-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
breeze-plymouth = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/breeze-plymouth-5.23.4.tar.xz";
|
||||
sha256 = "1qc8pnhhl89bqwyh215cn92qahw8k8gx7zr14rwxqjn9hxf9jxxy";
|
||||
name = "breeze-plymouth-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/breeze-plymouth-5.23.5.tar.xz";
|
||||
sha256 = "1sllcrhz8hniqkgybk5bbb36fzjcdp5drjbf7v7jn4ih4wvybwmk";
|
||||
name = "breeze-plymouth-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
discover = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/discover-5.23.4.tar.xz";
|
||||
sha256 = "0z5bp7p3f470i4x5796raawx7kjg1ca453y63wn9papdbiyl4iiz";
|
||||
name = "discover-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/discover-5.23.5.tar.xz";
|
||||
sha256 = "1kzp7jpw2kgml2yc3cx9n5syln3kyd9fxa5klh3sa1xn6bz9f8zr";
|
||||
name = "discover-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
drkonqi = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/drkonqi-5.23.4.tar.xz";
|
||||
sha256 = "073vdclybx83dpvvqb3rc413k3nh50nil8rcig4kqm0gzjhp3qdb";
|
||||
name = "drkonqi-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/drkonqi-5.23.5.tar.xz";
|
||||
sha256 = "08jjh52r6dmgp7dyxjxvavb4cxhmvzirwdn7hnmfhdbwkm09fqm5";
|
||||
name = "drkonqi-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kactivitymanagerd = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kactivitymanagerd-5.23.4.tar.xz";
|
||||
sha256 = "1m0rbv8pkswkzfvbf231vn2c8x507ymc07kd0dw03np8h8zs5vbz";
|
||||
name = "kactivitymanagerd-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kactivitymanagerd-5.23.5.tar.xz";
|
||||
sha256 = "09v6pia34a694g0amj0miqi0j42yqvhfcv6yr9zfix4gf1qcdidn";
|
||||
name = "kactivitymanagerd-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kde-cli-tools = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kde-cli-tools-5.23.4.tar.xz";
|
||||
sha256 = "0ay320b3ixlicd8d1rjngkbxspmpk7rd8g562dv0c54hk73q61gj";
|
||||
name = "kde-cli-tools-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kde-cli-tools-5.23.5.tar.xz";
|
||||
sha256 = "1203z87i4dmhq1vlrfj4kiw157i5zkccd2bwc7p7qwhgbddaw5jd";
|
||||
name = "kde-cli-tools-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kde-gtk-config = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kde-gtk-config-5.23.4.tar.xz";
|
||||
sha256 = "0537vk4wdvgz7jl0qkksf38bra5fdk6d0z6lnwm5v4fapdysbry9";
|
||||
name = "kde-gtk-config-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kde-gtk-config-5.23.5.tar.xz";
|
||||
sha256 = "14qqxy2vz9004kfam9biv6q0601sn9yhrkx0i8y0958a58s5z3hp";
|
||||
name = "kde-gtk-config-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kdecoration = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kdecoration-5.23.4.tar.xz";
|
||||
sha256 = "0s80dhbba458yr85m6yfv7m5jkkn0xqzp42nhhaj4m9hh36bbd9s";
|
||||
name = "kdecoration-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kdecoration-5.23.5.tar.xz";
|
||||
sha256 = "1kqj8l95wy46kfsw3f1crxwba9zwdlbgi7345mamhyks74wj1628";
|
||||
name = "kdecoration-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kdeplasma-addons = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kdeplasma-addons-5.23.4.tar.xz";
|
||||
sha256 = "1j7xd2p8a8xi69sh91hldyajqg77lx5bla1vjg65f7yqz903bp4h";
|
||||
name = "kdeplasma-addons-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kdeplasma-addons-5.23.5.tar.xz";
|
||||
sha256 = "0cq0g8nqrkwv12010rsrmzqvxsa5arjpa87gvws8pah3v9k1xnkq";
|
||||
name = "kdeplasma-addons-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kgamma5 = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kgamma5-5.23.4.tar.xz";
|
||||
sha256 = "1b3m812xxcya0gf665m8crpmwq91mkq28jkcjaavknr9dd22dkyk";
|
||||
name = "kgamma5-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kgamma5-5.23.5.tar.xz";
|
||||
sha256 = "17j0kv00ibs2g9jxfvflk965221iznm0ydgj3i05i6j2bd8301zn";
|
||||
name = "kgamma5-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
khotkeys = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/khotkeys-5.23.4.tar.xz";
|
||||
sha256 = "1fsll3cp6z763wp65iwqz244hzq0qlm4007jpxgd4gasbrd5zfg8";
|
||||
name = "khotkeys-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/khotkeys-5.23.5.tar.xz";
|
||||
sha256 = "13562p0bv0jkamx9q07wi5vs78bdrhd0h3qg5rxajc5s36gyh63a";
|
||||
name = "khotkeys-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kinfocenter = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kinfocenter-5.23.4.tar.xz";
|
||||
sha256 = "0z3hwq5qjkrcxn0smgi7x49mcyixm1apjd4f16q0z40sn7sdybad";
|
||||
name = "kinfocenter-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kinfocenter-5.23.5.tar.xz";
|
||||
sha256 = "0f7ik3gg1pimjlc94dp6psk0sha8k7pinx50nvmgsglap4k1xbk7";
|
||||
name = "kinfocenter-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kmenuedit = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kmenuedit-5.23.4.tar.xz";
|
||||
sha256 = "1iildwnhkvg2i2yhp6zl7m77fpa8vs7hhv8wjma3vbr2gh808nck";
|
||||
name = "kmenuedit-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kmenuedit-5.23.5.tar.xz";
|
||||
sha256 = "0k3dbip98zwia6m8nlgiw4mz09pkw7bik4cn3j73v2x3n7y3c542";
|
||||
name = "kmenuedit-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kscreen = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kscreen-5.23.4.tar.xz";
|
||||
sha256 = "0sa9xvyz42c69aqnn2bm3j1hq87n2nk5yawppl7csxyz91iyv3n5";
|
||||
name = "kscreen-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kscreen-5.23.5.tar.xz";
|
||||
sha256 = "0j5rgzj132j7qy1pgi12mhihf1a89a3xh8j5f7dp5s1f8kyjq0yi";
|
||||
name = "kscreen-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kscreenlocker = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kscreenlocker-5.23.4.tar.xz";
|
||||
sha256 = "1n4gkcf74hk60fvbkb9940q5r89jbj4kwc4byi51523n038pvymf";
|
||||
name = "kscreenlocker-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kscreenlocker-5.23.5.tar.xz";
|
||||
sha256 = "07vhwvcyz9ynjzh44zny1f6di2knzy3fkiji3bhrki8p3zc9vjpm";
|
||||
name = "kscreenlocker-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
ksshaskpass = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/ksshaskpass-5.23.4.tar.xz";
|
||||
sha256 = "1s9wbfl867fgr5md51f63fc57626zw2b637xh7qy8sn563l8y1lk";
|
||||
name = "ksshaskpass-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/ksshaskpass-5.23.5.tar.xz";
|
||||
sha256 = "0p8aka60mc8p96v3bx954jy99n9lf0a4b09sig307clwinfr23if";
|
||||
name = "ksshaskpass-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
ksystemstats = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/ksystemstats-5.23.4.tar.xz";
|
||||
sha256 = "00vs71jxqlv52absh16jyj1zryk2ib0bpd21c4qja11a3hw7j3gz";
|
||||
name = "ksystemstats-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/ksystemstats-5.23.5.tar.xz";
|
||||
sha256 = "1xmr0yk5xynja6z7xc6l1zd529q5si5qs71f72dba2zna22hb7hb";
|
||||
name = "ksystemstats-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kwallet-pam = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kwallet-pam-5.23.4.tar.xz";
|
||||
sha256 = "08ycniyna3hzdgzi3m61iamwid32hajb1k1m27kw16abh3ds4vx7";
|
||||
name = "kwallet-pam-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kwallet-pam-5.23.5.tar.xz";
|
||||
sha256 = "1cha41wiqsfgyrqb8di5qnnz0mnvmchprxay48czrn3r5mz49pw9";
|
||||
name = "kwallet-pam-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kwayland-integration = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kwayland-integration-5.23.4.tar.xz";
|
||||
sha256 = "14j6iwakkmdyhf3796ap2dnfi0vdbrl3813x4ygzjyb8068a7k9g";
|
||||
name = "kwayland-integration-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kwayland-integration-5.23.5.tar.xz";
|
||||
sha256 = "0gs68v4rriknn59fv0yjcgrmcryv7wxgskswdgi1xx18v0rlc4ag";
|
||||
name = "kwayland-integration-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kwayland-server = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kwayland-server-5.23.4.tar.xz";
|
||||
sha256 = "13cvw4i1ysw4ncdnx7c4qw29zc350wbmc29dy06b574idm5rbnrm";
|
||||
name = "kwayland-server-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kwayland-server-5.23.5.tar.xz";
|
||||
sha256 = "0b8c1mkh36cgxhx18v9j23n9gnvzy22x50gpiw3dbkjzsmr1n7by";
|
||||
name = "kwayland-server-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kwin = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kwin-5.23.4.tar.xz";
|
||||
sha256 = "0rqim6p0r7k886mwvqy4zpz18scnah9zvjjbgx0p77f1086azvsc";
|
||||
name = "kwin-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kwin-5.23.5.tar.xz";
|
||||
sha256 = "00azqmdgkh72bg4d8868cin984vxxk6s6pk5x4dfvlaknzlyfjgp";
|
||||
name = "kwin-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
kwrited = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/kwrited-5.23.4.tar.xz";
|
||||
sha256 = "15sixbk5i5i1jv07hj820xi4fh0b6fmb4jkv2917911wpdkdnyik";
|
||||
name = "kwrited-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/kwrited-5.23.5.tar.xz";
|
||||
sha256 = "0aj911kfzd100jq1k1sg7i1nhiixnl7qiphc2bczn47f1jj64iqv";
|
||||
name = "kwrited-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
layer-shell-qt = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/layer-shell-qt-5.23.4.tar.xz";
|
||||
sha256 = "0a74s7wx3jxxi1dp4j0a5dz7k45il4wjf7hf9j6cw2m5pdni1i2k";
|
||||
name = "layer-shell-qt-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/layer-shell-qt-5.23.5.tar.xz";
|
||||
sha256 = "1ah66z9hiricw6h3j7x2k7d49y7g4l2s9w2658wjrava2qng9bsr";
|
||||
name = "layer-shell-qt-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
libkscreen = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/libkscreen-5.23.4.tar.xz";
|
||||
sha256 = "0n1xghmabhn7sb99k0zsyrbx05mbaf926hyyw9qp5rf07r8yzk2p";
|
||||
name = "libkscreen-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/libkscreen-5.23.5.tar.xz";
|
||||
sha256 = "08wgg96clp685fl5lflrfd4kmf5c2p5ms7n1q2izvg0n6qr37m1i";
|
||||
name = "libkscreen-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
libksysguard = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/libksysguard-5.23.4.tar.xz";
|
||||
sha256 = "1xik5qaww9m26nkg804akaxbn7i7bd8ibc2v93h3p8ihkb5hh7lw";
|
||||
name = "libksysguard-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/libksysguard-5.23.5.tar.xz";
|
||||
sha256 = "1gy1grkkz7vwglby52vv4gr8zbzsv8rbvwbp6rqvvhmqg7ascc1h";
|
||||
name = "libksysguard-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
milou = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/milou-5.23.4.tar.xz";
|
||||
sha256 = "15wniaj9zprhvly6krxl5847q8kh8m8z5sr2wj816n70hh1y58f8";
|
||||
name = "milou-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/milou-5.23.5.tar.xz";
|
||||
sha256 = "05bc6hc5pn5rz4zp6b2akjdbssv7xppvzsw3pidkqb8pincl01gh";
|
||||
name = "milou-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
oxygen = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/oxygen-5.23.4.tar.xz";
|
||||
sha256 = "0b4rhf9500jhx73xw4ghqifgkfr527n2isiiys8g7m23ya38pbxz";
|
||||
name = "oxygen-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/oxygen-5.23.5.tar.xz";
|
||||
sha256 = "1vvy9yqllqq9dx2riwv4bmxfq13wph5wagy84f1hhl7zxnbcyv0c";
|
||||
name = "oxygen-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-browser-integration = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-browser-integration-5.23.4.tar.xz";
|
||||
sha256 = "004406s80i0gv1ga151ws7sny4l3y74swawdgd1swmvkjg2ii909";
|
||||
name = "plasma-browser-integration-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-browser-integration-5.23.5.tar.xz";
|
||||
sha256 = "0jw9jircgbilig4pryyjxhby8qc7nag9a1s5nk1zdsnlaqr08jyp";
|
||||
name = "plasma-browser-integration-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-desktop = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-desktop-5.23.4.tar.xz";
|
||||
sha256 = "1p48sl6zyra1iyri9zrx88wka9fbzgyhkd9m7r4nqa8h0v5p12as";
|
||||
name = "plasma-desktop-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-desktop-5.23.5.tar.xz";
|
||||
sha256 = "0ym8cssw351ygw2vy27cyxql05y0gaflnqnq4fwkdgidldvmi45k";
|
||||
name = "plasma-desktop-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-disks = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-disks-5.23.4.tar.xz";
|
||||
sha256 = "0sgfwqyn539nd6s23nix3igf7z87sn3dn9zp8w2fy488vmm1pdmi";
|
||||
name = "plasma-disks-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-disks-5.23.5.tar.xz";
|
||||
sha256 = "0197zyj5p7j8y80g0vvf5d9bq86qxkhwpa9dzb5l3is50y8lkj6p";
|
||||
name = "plasma-disks-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-firewall = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-firewall-5.23.4.tar.xz";
|
||||
sha256 = "040w85ml5rh0l95l744576s3kb00niyr72q4pvf5xj98df1h89aw";
|
||||
name = "plasma-firewall-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-firewall-5.23.5.tar.xz";
|
||||
sha256 = "0fhycjrb89blh6wf24rvq7bafqqrxj37ir0daj5jlph9f1w4laq0";
|
||||
name = "plasma-firewall-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-integration = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-integration-5.23.4.tar.xz";
|
||||
sha256 = "0b4rvfnd40xgvgab81p9qjgdpjww673nlaiklwrkrqmv41m0yy33";
|
||||
name = "plasma-integration-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-integration-5.23.5.tar.xz";
|
||||
sha256 = "03c0cqvr5cdpvxgm145sqpbbr8wv0qv4pqjl69v3bs010pd755lg";
|
||||
name = "plasma-integration-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-nano = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-nano-5.23.4.tar.xz";
|
||||
sha256 = "1kw77w00261dmp2w0jvaslamia215mlhd3nnl0wr39p5vhlym70p";
|
||||
name = "plasma-nano-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-nano-5.23.5.tar.xz";
|
||||
sha256 = "1yh67bh1smk7zx35hd72pafjbjdv7wwwhm76ga5sj251m61ncxim";
|
||||
name = "plasma-nano-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-nm = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-nm-5.23.4.tar.xz";
|
||||
sha256 = "0c4gfdyzac67yxjvz75mxd61wacnsa01liaajdyj853bn7wkx294";
|
||||
name = "plasma-nm-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-nm-5.23.5.tar.xz";
|
||||
sha256 = "14sknzy4v4xx1ihjn1s6x0lv5difnp4gi24zsdqvnkxkmxzhcij3";
|
||||
name = "plasma-nm-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-pa = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-pa-5.23.4.tar.xz";
|
||||
sha256 = "0g4q0y4sr14xsi71mv5qgn6qj8svmd045ff73hf34pb15qvdq0a7";
|
||||
name = "plasma-pa-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-pa-5.23.5.tar.xz";
|
||||
sha256 = "1pcnf59qj7rgmcbc5xhad5zl487r48i2kyp6nc3yrlgj1xcfpfxg";
|
||||
name = "plasma-pa-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-phone-components = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-phone-components-5.23.4.tar.xz";
|
||||
sha256 = "0ml5pyi90nlmx5550sf3x9263f8mypj4jmdskzabzhnz44ck8vy9";
|
||||
name = "plasma-phone-components-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-phone-components-5.23.5.tar.xz";
|
||||
sha256 = "08c03pycvv7ald21d8ckxpv6d25qlxs28gjm99hdn6x8m74j7frn";
|
||||
name = "plasma-phone-components-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-sdk = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-sdk-5.23.4.tar.xz";
|
||||
sha256 = "1cbsksjy9x3jlk8bzd9m1zgr83rzkwv0jd015fap707ysdil1ypk";
|
||||
name = "plasma-sdk-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-sdk-5.23.5.tar.xz";
|
||||
sha256 = "1s0l09lgqipks0w0jplaaipcs4a1ny4iclkz9hkfx4xjgcvk5m2j";
|
||||
name = "plasma-sdk-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-systemmonitor = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-systemmonitor-5.23.4.tar.xz";
|
||||
sha256 = "16kfpzm8bhxyl9jx5xqbas4cm99sny4b2n6i27hc7ggjgx9r3j31";
|
||||
name = "plasma-systemmonitor-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-systemmonitor-5.23.5.tar.xz";
|
||||
sha256 = "1snzabxgja9rsk000h97qjadb9fs8zdbqpr4zqa9sk0jjgm011lf";
|
||||
name = "plasma-systemmonitor-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-tests = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-tests-5.23.4.tar.xz";
|
||||
sha256 = "1vnihnrxgbrk224xxpisqj84hjbllyk32vsra2rbgrwp2g58fh69";
|
||||
name = "plasma-tests-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-tests-5.23.5.tar.xz";
|
||||
sha256 = "125b0sf7h0ibjl7msw1sc3cccms8nrrkx6cgwd46a9xi5svrsfg2";
|
||||
name = "plasma-tests-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-thunderbolt = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-thunderbolt-5.23.4.tar.xz";
|
||||
sha256 = "0g5n24qwm6yd78rg14d6j2hn0krn0z0fm6bpyzr54ycrgiv850zz";
|
||||
name = "plasma-thunderbolt-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-thunderbolt-5.23.5.tar.xz";
|
||||
sha256 = "1ich92w479llvq1vjlfyvxh3dvqc4pgycfi97hz4sfhn7dnaw3vr";
|
||||
name = "plasma-thunderbolt-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-vault = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-vault-5.23.4.tar.xz";
|
||||
sha256 = "1ay9x7kbgb5qg7w1m1rp9xbp8dzsxdj7zh2ifk3lff1g5f3yh9y6";
|
||||
name = "plasma-vault-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-vault-5.23.5.tar.xz";
|
||||
sha256 = "1gf531q29qnvvsdxqgb1zyxwh5ck25kb0h1kk0d95pjkkylgyv0d";
|
||||
name = "plasma-vault-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-workspace = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-workspace-5.23.4.tar.xz";
|
||||
sha256 = "0kd37sfg8hbf8biia3ip89nx0jgrdgfprmda392gx5xfzbnlxv0k";
|
||||
name = "plasma-workspace-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-workspace-5.23.5.tar.xz";
|
||||
sha256 = "0x950nb56xmmdf7hfpbrd9hvgq1a8vca0x8g1qsvrjhh5ymydgif";
|
||||
name = "plasma-workspace-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-workspace-wallpapers = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plasma-workspace-wallpapers-5.23.4.tar.xz";
|
||||
sha256 = "157kbi40bv9arxq7cvgxypk1qmrpd52d76xq99rsfbzdfrggx9nc";
|
||||
name = "plasma-workspace-wallpapers-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plasma-workspace-wallpapers-5.23.5.tar.xz";
|
||||
sha256 = "0nr631yz8v671a87vh9f2a5kfjhn4f9147b339p09fwgfpx06vfx";
|
||||
name = "plasma-workspace-wallpapers-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
plymouth-kcm = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/plymouth-kcm-5.23.4.tar.xz";
|
||||
sha256 = "11f2r4nq7pi8xn3z6zjc58ix5hj3das16xqvq7m82p8zvw2qs44p";
|
||||
name = "plymouth-kcm-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/plymouth-kcm-5.23.5.tar.xz";
|
||||
sha256 = "0ynyqfm6az8yj3d30yxza5mjcsgfw6mmdkcgr3v95r6db112hqbx";
|
||||
name = "plymouth-kcm-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
polkit-kde-agent = {
|
||||
version = "1-5.23.4";
|
||||
version = "1-5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/polkit-kde-agent-1-5.23.4.tar.xz";
|
||||
sha256 = "06qjz87c2h0vgpk0jpf24194rahdrwpc274k6vmfkmbr5232w48h";
|
||||
name = "polkit-kde-agent-1-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/polkit-kde-agent-1-5.23.5.tar.xz";
|
||||
sha256 = "1wgpgbq987qa6fdayw4155fwym6rcn2z7w66s8faqv94x78njzln";
|
||||
name = "polkit-kde-agent-1-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
powerdevil = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/powerdevil-5.23.4.tar.xz";
|
||||
sha256 = "1sl62vm25libbx2l2kw7s9p44kdq561gh8an03vkf1q1qgrnpwsf";
|
||||
name = "powerdevil-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/powerdevil-5.23.5.tar.xz";
|
||||
sha256 = "1lxjqd4w3jvnffcn9751j9k1fzsyasd1z8b1gm2iaf38iys21116";
|
||||
name = "powerdevil-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
qqc2-breeze-style = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/qqc2-breeze-style-5.23.4.tar.xz";
|
||||
sha256 = "1wl8zxq7bca6v40mnwjnpxc3pzz30khc223y9dwpgy8ampvy2ghr";
|
||||
name = "qqc2-breeze-style-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/qqc2-breeze-style-5.23.5.tar.xz";
|
||||
sha256 = "15i9h2md54a1h7isvma4x9pni3iy0bk84z8ibn3a36ydimyq5hra";
|
||||
name = "qqc2-breeze-style-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
sddm-kcm = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/sddm-kcm-5.23.4.tar.xz";
|
||||
sha256 = "148vf9af4fhma0w6v7wwlxpq8v8a858yx3qx7w0pg8jq5zd1k6g2";
|
||||
name = "sddm-kcm-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/sddm-kcm-5.23.5.tar.xz";
|
||||
sha256 = "0csj1gml8w29dzv62zpbia9g10qz5k1nzv1yywsvay1q8rbqccxv";
|
||||
name = "sddm-kcm-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
systemsettings = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/systemsettings-5.23.4.tar.xz";
|
||||
sha256 = "0naw5zxgs47nx5wwg1li35salyg2cfpaphhn5m20plwqfi43zbdw";
|
||||
name = "systemsettings-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/systemsettings-5.23.5.tar.xz";
|
||||
sha256 = "0shsqancxbxy6f4fd9m2a30x7gnjmd6gb8kq4nhlj6rramcwn3jh";
|
||||
name = "systemsettings-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
xdg-desktop-portal-kde = {
|
||||
version = "5.23.4";
|
||||
version = "5.23.5";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma/5.23.4/xdg-desktop-portal-kde-5.23.4.tar.xz";
|
||||
sha256 = "17n5d4rjm28in7jpsq2qg2d7lv3qcnlpmgi9kclx81miih9rjwan";
|
||||
name = "xdg-desktop-portal-kde-5.23.4.tar.xz";
|
||||
url = "${mirror}/stable/plasma/5.23.5/xdg-desktop-portal-kde-5.23.5.tar.xz";
|
||||
sha256 = "09s3fpjdrnxqvnyxmxva0rx612d6pxv28qqvm00hzrb23nxz6qgb";
|
||||
name = "xdg-desktop-portal-kde-5.23.5.tar.xz";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -22,13 +22,13 @@ let
|
|||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "amdvlk";
|
||||
version = "2021.Q4.2";
|
||||
version = "2021.Q4.3";
|
||||
|
||||
src = fetchRepoProject {
|
||||
name = "${pname}-src";
|
||||
manifest = "https://github.com/GPUOpen-Drivers/AMDVLK.git";
|
||||
rev = "refs/tags/v-${version}";
|
||||
sha256 = "DpylZjIqWmCnUI0lEvd/HQcY+lr8asMurt1K9MI3qQw=";
|
||||
sha256 = "9HKkpWbDiSqMI1KraIXnFioEnTYFh6Sddtm72vZMsK4=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -117,22 +117,22 @@ let
|
|||
qttools = [ ./qttools.patch ];
|
||||
};
|
||||
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
addPackages = self: with self;
|
||||
let
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
callPackage = self.newScope { inherit qtCompatVersion qtModule srcs; };
|
||||
in {
|
||||
|
||||
|
@ -228,6 +228,4 @@ let
|
|||
} ../hooks/wrap-qt-apps-hook.sh;
|
||||
};
|
||||
|
||||
self = lib.makeScope newScope addPackages;
|
||||
|
||||
in self
|
||||
in lib.makeScope newScope addPackages
|
||||
|
|
|
@ -118,22 +118,22 @@ let
|
|||
qtwayland = [ ./qtwayland-libdrm-build.patch ];
|
||||
};
|
||||
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
addPackages = self: with self;
|
||||
let
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
callPackage = self.newScope { inherit qtCompatVersion qtModule srcs; };
|
||||
in {
|
||||
|
||||
|
@ -228,6 +228,4 @@ let
|
|||
} ../hooks/wrap-qt-apps-hook.sh;
|
||||
};
|
||||
|
||||
self = lib.makeScope newScope addPackages;
|
||||
|
||||
in self
|
||||
in lib.makeScope newScope addPackages
|
||||
|
|
|
@ -80,22 +80,22 @@ let
|
|||
qttools = [ ./qttools.patch ];
|
||||
};
|
||||
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
addPackages = self: with self;
|
||||
let
|
||||
qtModule =
|
||||
import ../qtModule.nix
|
||||
{
|
||||
inherit perl;
|
||||
inherit lib;
|
||||
# Use a variant of mkDerivation that does not include wrapQtApplications
|
||||
# to avoid cyclic dependencies between Qt modules.
|
||||
mkDerivation =
|
||||
import ../mkDerivation.nix
|
||||
{ inherit lib; inherit debug; wrapQtAppsHook = null; }
|
||||
stdenv.mkDerivation;
|
||||
}
|
||||
{ inherit self srcs patches; };
|
||||
|
||||
callPackage = self.newScope { inherit qtCompatVersion qtModule srcs; };
|
||||
in {
|
||||
|
||||
|
@ -192,6 +192,4 @@ let
|
|||
} ../hooks/wrap-qt-apps-hook.sh;
|
||||
};
|
||||
|
||||
self = lib.makeScope newScope addPackages;
|
||||
|
||||
in self
|
||||
in lib.makeScope newScope addPackages
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "python-heatclient";
|
||||
version = "2.4.0";
|
||||
version = "2.5.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "b53529eb73f08c384181a580efaa42293cc35e0e1ecc4b0bc14a5c7b202019bb";
|
||||
sha256 = "b610748eb3f18f6bd762e0808accdf872308289a77c3b19ed2d8b9f306393a42";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "python-ironicclient";
|
||||
version = "4.9.0";
|
||||
version = "4.10.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "99d45e914b2845731ac44fbfc63ae3e1bd52211396748797b588f2adc4b3f341";
|
||||
sha256 = "8f3ad8ae1fc4df524ea05a458ad2567b58144e881807dbbb985e282902d732fd";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "python-keystoneclient";
|
||||
version = "4.3.0";
|
||||
version = "4.4.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "fd09b7790ce53c20dc94318ec4d76e1cf71908aed59baeb4c7a61c17afd3aad5";
|
||||
sha256 = "fc17ca9a1aa493104b496ba347f12507f271b5b6e819f4de4aef6574918aa071";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nexus";
|
||||
version = "3.32.0-03";
|
||||
version = "3.37.3-02";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-${version}-unix.tar.gz";
|
||||
sha256 = "17cgbpv1id4gbp3c42pqc3dxnh36cm1c77y7dysskyml4qfh5f7m";
|
||||
sha256 = "sha256-wdtDGQjFp2tEAVxVXW70UXq/CoaET6/+4PXWxiNZMS0=";
|
||||
};
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
|
|
@ -2,38 +2,43 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "andyetitmoves";
|
||||
version = "1.2.2";
|
||||
version = "1.2.2";
|
||||
|
||||
src = if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux"
|
||||
src =
|
||||
if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux"
|
||||
then
|
||||
let postfix = if stdenv.hostPlatform.system == "i686-linux" then "i386" else "x86_64";
|
||||
commercialName = "${pname}-${version}_${postfix}.tar.gz";
|
||||
demoUrl = "http://www.andyetitmoves.net/demo/${pname}Demo-${version}_${postfix}.tar.gz";
|
||||
let
|
||||
postfix = if stdenv.hostPlatform.system == "i686-linux" then "i386" else "x86_64";
|
||||
commercialName = "${pname}-${version}_${postfix}.tar.gz";
|
||||
demoUrl = "http://www.andyetitmoves.net/demo/${pname}Demo-${version}_${postfix}.tar.gz";
|
||||
in
|
||||
if commercialVersion
|
||||
then requireFile {
|
||||
message = ''
|
||||
We cannot download the commercial version automatically, as you require a license.
|
||||
Once you bought a license, you need to add your downloaded version to the nix store.
|
||||
You can do this by using "nix-prefetch-url file:///\$PWD/${commercialName}" in the
|
||||
directory where yousaved it.
|
||||
'';
|
||||
name = commercialName;
|
||||
sha256 = if stdenv.hostPlatform.system == "i686-linux"
|
||||
then "15wvzmmidvykwjrbnq70h5jrvnjx1hcrm0357qj85q4aqbzavh01"
|
||||
else "1v8z16qa9ka8sf7qq45knsxj87s6sipvv3a7xq11pb5xk08fb2ql";
|
||||
}
|
||||
else fetchurl {
|
||||
url = demoUrl;
|
||||
sha256 = if stdenv.hostPlatform.system == "i686-linux"
|
||||
then "0f14vrrbq05hsbdajrb5y9za65fpng1lc8f0adb4aaz27x7sh525"
|
||||
else "0mg41ya0b27blq3b5498kwl4rj46dj21rcd7qd0rw1kyvr7sx4v4";
|
||||
}
|
||||
then
|
||||
requireFile
|
||||
{
|
||||
message = ''
|
||||
We cannot download the commercial version automatically, as you require a license.
|
||||
Once you bought a license, you need to add your downloaded version to the nix store.
|
||||
You can do this by using "nix-prefetch-url file:///\$PWD/${commercialName}" in the
|
||||
directory where yousaved it.
|
||||
'';
|
||||
name = commercialName;
|
||||
sha256 =
|
||||
if stdenv.hostPlatform.system == "i686-linux"
|
||||
then "15wvzmmidvykwjrbnq70h5jrvnjx1hcrm0357qj85q4aqbzavh01"
|
||||
else "1v8z16qa9ka8sf7qq45knsxj87s6sipvv3a7xq11pb5xk08fb2ql";
|
||||
}
|
||||
else
|
||||
fetchurl {
|
||||
url = demoUrl;
|
||||
sha256 =
|
||||
if stdenv.hostPlatform.system == "i686-linux"
|
||||
then "0f14vrrbq05hsbdajrb5y9za65fpng1lc8f0adb4aaz27x7sh525"
|
||||
else "0mg41ya0b27blq3b5498kwl4rj46dj21rcd7qd0rw1kyvr7sx4v4";
|
||||
}
|
||||
else
|
||||
throw "And Yet It Moves nix package only supports linux and intel cpu's.";
|
||||
|
||||
phases = "unpackPhase installPhase";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{opt/andyetitmoves,bin}
|
||||
cp -r * $out/opt/andyetitmoves/
|
||||
|
@ -54,19 +59,15 @@ stdenv.mkDerivation rec {
|
|||
chmod +x $out/bin/$binName
|
||||
'';
|
||||
|
||||
buildInputs = [libvorbis libogg libtheora SDL libXft SDL_image zlib libX11 libpng openal];
|
||||
buildInputs = [ libvorbis libogg libtheora SDL libXft SDL_image zlib libX11 libpng openal ];
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "Physics/Gravity Platform game";
|
||||
|
||||
longDescription = ''
|
||||
And Yet It Moves is an award-winning physics-based platform game in which players rotate the game world at will to solve challenging puzzles. Tilting the world turns walls into floors, slides into platforms, and stacks of rocks into dangerous hazards.
|
||||
'';
|
||||
|
||||
homepage = "http://www.andyetitmoves.net/";
|
||||
|
||||
license = lib.licenses.unfree;
|
||||
|
||||
maintainers = with lib.maintainers; [bluescreen303];
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ bluescreen303 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "phoronix-test-suite";
|
||||
version = "10.6.1";
|
||||
version = "10.8.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://phoronix-test-suite.com/releases/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-ixDMd9/tO793yVvIE60n5gytfDAmcuA631/ZON9v6LA=";
|
||||
sha256 = "sha256-HvyMkafW2QdSlizWkOsv9U8VSN9Y9Z3F1jt1PwF9nuo=";
|
||||
};
|
||||
|
||||
buildInputs = [ php ];
|
||||
|
|
55
pkgs/tools/package-management/comma/default.nix
Normal file
55
pkgs/tools/package-management/comma/default.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, fetchFromGitHub
|
||||
, linkFarm
|
||||
, nix-index
|
||||
, fzy
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
# nix-index takes a little while to run and the contents don't change
|
||||
# meaningfully very often.
|
||||
indexCache = fetchurl {
|
||||
url = "https://github.com/Mic92/nix-index-database/releases/download/2021-12-12/index-x86_64-linux";
|
||||
sha256 = "sha256-+SoG5Qz2KWA/nIWXE6SLpdi8MDqTs8LY90fGZxGKOiA=";
|
||||
};
|
||||
|
||||
# nix-locate needs the --db argument to be a directory containing a file
|
||||
# named "files".
|
||||
nixIndexDB = linkFarm "nix-index-cache" [
|
||||
{ name = "files"; path = indexCache; }
|
||||
];
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "comma";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nix-community";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace , \
|
||||
--replace '$PREBUILT_NIX_INDEX_DB' "${nixIndexDB}" \
|
||||
--replace nix-locate "${nix-index}/bin/nix-locate" \
|
||||
--replace fzy "${fzy}/bin/fzy"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -Dm755 , -t $out/bin
|
||||
ln -s $out/bin/, $out/bin/comma
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/nix-community/comma";
|
||||
description = "Run software without installing it";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ Enzime ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "nfpm";
|
||||
version = "2.11.2";
|
||||
version = "2.11.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "goreleaser";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ycb5331o/ILz+eUGGipBrjI7/pYnmHUSDRc4UNpJO5s=";
|
||||
sha256 = "sha256-xwziGGdFBmPpLRlBBficioULISt8WjGBocbrQUXa8CY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-RaAb8QDFp/7TolsNZqcXurozr3vvK0SRyyy2h8MPhnk=";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "acpica-tools";
|
||||
version = "20210930";
|
||||
version = "20211217";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://acpica.org/sites/acpica/files/acpica-unix-${version}.tar.gz";
|
||||
sha256 = "08a8q174ac3jwxnd8q8iqc3cckwc2f7ncrc6f3171g0n38l2mn1w";
|
||||
sha256 = "14jrrdrl3sw438791zf2v6rjvhiq78yl7hz2ldzp83c251cgh495";
|
||||
};
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-O3";
|
||||
|
|
|
@ -2548,6 +2548,8 @@ with pkgs;
|
|||
|
||||
cz-cli = callPackage ../applications/version-management/cz-cli {};
|
||||
|
||||
comma = callPackage ../tools/package-management/comma { };
|
||||
|
||||
common-licenses = callPackage ../data/misc/common-licenses {};
|
||||
|
||||
compactor = callPackage ../applications/networking/compactor { };
|
||||
|
|
Loading…
Reference in a new issue