Merge master into staging-next
This commit is contained in:
@@ -16,6 +16,11 @@
|
||||
|
||||
- All Log4Shell vulnerability scanners were removed, as they were all unmaintained upstream and are no longer relevant given that the vulnerability has been fixed upstream for several years.
|
||||
|
||||
- `asio` (standalone version of `boost::asio`) has been updated from 1.24.0 to 1.36.0. Some breaking changes were introduced between these
|
||||
two versions, and the one affected most was the removal of `asio::io_service` in favor of `asio::io_context` in 1.33.0. `asio_1_32_0` is
|
||||
retained for packages that have not completed migration. `asio_1_10` has been removed as no packages depend on it anymore.
|
||||
`asio` also no longer propagates `boost` as it is used independent from `boost` in most cases.
|
||||
|
||||
- `python3packages.pillow-avif-plugin` has been removed as the functionality is included in `python3packages.pillow` directly since version 11.3.
|
||||
|
||||
## Other Notable Changes {#sec-nixpkgs-release-26.05-notable-changes}
|
||||
|
||||
@@ -22,4 +22,4 @@
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Create the first release note entry in this section!
|
||||
- `services.openssh` now supports generating host SSH keys by setting `services.openssh.generateHostKeys = true` while leaving `services.openssh.enable` disabled. This is particularly useful for systems that have no need of an SSH daemon but want SSH host keys for other purposes such as using agenix or sops-nix.
|
||||
|
||||
@@ -381,6 +381,19 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
generateHostKeys = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.services.openssh.enable;
|
||||
defaultText = lib.literalExpression "services.openssh.enable";
|
||||
description = ''
|
||||
Whether to generate SSH host keys.
|
||||
|
||||
This can be enabled explicitly if you want to generate host keys but
|
||||
don't want to enable the SSH daemon.
|
||||
'';
|
||||
example = true;
|
||||
};
|
||||
|
||||
banner = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.lines;
|
||||
default = null;
|
||||
@@ -669,115 +682,232 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf cfg.enable {
|
||||
|
||||
users.users.sshd = {
|
||||
isSystemUser = true;
|
||||
group = "sshd";
|
||||
description = "SSH privilege separation user";
|
||||
};
|
||||
users.groups.sshd = { };
|
||||
|
||||
services.openssh.moduliFile = lib.mkDefault "${cfg.package}/etc/ssh/moduli";
|
||||
services.openssh.sftpServerExecutable = lib.mkDefault "${cfg.package}/libexec/sftp-server";
|
||||
|
||||
environment.etc =
|
||||
authKeysFiles
|
||||
// authPrincipalsFiles
|
||||
// {
|
||||
"ssh/moduli".source = cfg.moduliFile;
|
||||
"ssh/sshd_config".source = sshconf;
|
||||
users.users.sshd = {
|
||||
isSystemUser = true;
|
||||
group = "sshd";
|
||||
description = "SSH privilege separation user";
|
||||
};
|
||||
users.groups.sshd = { };
|
||||
|
||||
systemd.tmpfiles.settings."ssh-root-provision" = {
|
||||
"/root"."d-" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":700";
|
||||
};
|
||||
"/root/.ssh"."d-" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":700";
|
||||
};
|
||||
"/root/.ssh/authorized_keys"."f^" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":600";
|
||||
argument = "ssh.authorized_keys.root";
|
||||
};
|
||||
};
|
||||
services.openssh.moduliFile = lib.mkDefault "${cfg.package}/etc/ssh/moduli";
|
||||
services.openssh.sftpServerExecutable = lib.mkDefault "${cfg.package}/libexec/sftp-server";
|
||||
|
||||
systemd = {
|
||||
sockets.sshd = lib.mkIf cfg.startWhenNeeded {
|
||||
description = "SSH Socket";
|
||||
wantedBy = [ "sockets.target" ];
|
||||
socketConfig.ListenStream =
|
||||
if cfg.listenAddresses != [ ] then
|
||||
lib.concatMap (
|
||||
{ addr, port }:
|
||||
if port != null then [ "${addr}:${toString port}" ] else map (p: "${addr}:${toString p}") cfg.ports
|
||||
) cfg.listenAddresses
|
||||
else
|
||||
cfg.ports;
|
||||
socketConfig.Accept = true;
|
||||
# Prevent brute-force attacks from shutting down socket
|
||||
socketConfig.TriggerLimitIntervalSec = 0;
|
||||
};
|
||||
environment.etc =
|
||||
authKeysFiles
|
||||
// authPrincipalsFiles
|
||||
// {
|
||||
"ssh/moduli".source = cfg.moduliFile;
|
||||
"ssh/sshd_config".source = sshconf;
|
||||
};
|
||||
|
||||
services."sshd@" = {
|
||||
description = "SSH per-connection Daemon";
|
||||
after = [
|
||||
"network.target"
|
||||
"sshd-keygen.service"
|
||||
];
|
||||
wants = [ "sshd-keygen.service" ];
|
||||
stopIfChanged = false;
|
||||
path = [ cfg.package ];
|
||||
environment.LD_LIBRARY_PATH = nssModulesPath;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
"-${lib.getExe' cfg.package "sshd"}"
|
||||
"-i"
|
||||
"-D"
|
||||
"-f /etc/ssh/sshd_config"
|
||||
];
|
||||
KillMode = "process";
|
||||
StandardInput = "socket";
|
||||
StandardError = "journal";
|
||||
systemd.tmpfiles.settings."ssh-root-provision" = {
|
||||
"/root"."d-" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":700";
|
||||
};
|
||||
"/root/.ssh"."d-" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":700";
|
||||
};
|
||||
"/root/.ssh/authorized_keys"."f^" = {
|
||||
user = "root";
|
||||
group = ":root";
|
||||
mode = ":600";
|
||||
argument = "ssh.authorized_keys.root";
|
||||
};
|
||||
};
|
||||
|
||||
services.sshd = lib.mkIf (!cfg.startWhenNeeded) {
|
||||
description = "SSH Daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"sshd-keygen.service"
|
||||
];
|
||||
wants = [ "sshd-keygen.service" ];
|
||||
stopIfChanged = false;
|
||||
path = [ cfg.package ];
|
||||
environment.LD_LIBRARY_PATH = nssModulesPath;
|
||||
systemd = {
|
||||
sockets.sshd = lib.mkIf cfg.startWhenNeeded {
|
||||
description = "SSH Socket";
|
||||
wantedBy = [ "sockets.target" ];
|
||||
socketConfig.ListenStream =
|
||||
if cfg.listenAddresses != [ ] then
|
||||
lib.concatMap (
|
||||
{ addr, port }:
|
||||
if port != null then [ "${addr}:${toString port}" ] else map (p: "${addr}:${toString p}") cfg.ports
|
||||
) cfg.listenAddresses
|
||||
else
|
||||
cfg.ports;
|
||||
socketConfig.Accept = true;
|
||||
# Prevent brute-force attacks from shutting down socket
|
||||
socketConfig.TriggerLimitIntervalSec = 0;
|
||||
};
|
||||
|
||||
restartTriggers = [ config.environment.etc."ssh/sshd_config".source ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "notify-reload";
|
||||
Restart = "always";
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
(lib.getExe' cfg.package "sshd")
|
||||
"-D"
|
||||
"-f"
|
||||
"/etc/ssh/sshd_config"
|
||||
services."sshd@" = {
|
||||
description = "SSH per-connection Daemon";
|
||||
after = [
|
||||
"network.target"
|
||||
"sshd-keygen.service"
|
||||
];
|
||||
KillMode = "process";
|
||||
wants = lib.mkIf cfg.generateHostKeys [ "sshd-keygen.service" ];
|
||||
stopIfChanged = false;
|
||||
path = [ cfg.package ];
|
||||
environment.LD_LIBRARY_PATH = nssModulesPath;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
"-${lib.getExe' cfg.package "sshd"}"
|
||||
"-i"
|
||||
"-D"
|
||||
"-f /etc/ssh/sshd_config"
|
||||
];
|
||||
KillMode = "process";
|
||||
StandardInput = "socket";
|
||||
StandardError = "journal";
|
||||
};
|
||||
};
|
||||
|
||||
services.sshd = lib.mkIf (!cfg.startWhenNeeded) {
|
||||
description = "SSH Daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"sshd-keygen.service"
|
||||
];
|
||||
wants = lib.mkIf cfg.generateHostKeys [ "sshd-keygen.service" ];
|
||||
stopIfChanged = false;
|
||||
path = [ cfg.package ];
|
||||
environment.LD_LIBRARY_PATH = nssModulesPath;
|
||||
|
||||
restartTriggers = [ config.environment.etc."ssh/sshd_config".source ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "notify-reload";
|
||||
Restart = "always";
|
||||
ExecStart = lib.concatStringsSep " " [
|
||||
(lib.getExe' cfg.package "sshd")
|
||||
"-D"
|
||||
"-f"
|
||||
"/etc/ssh/sshd_config"
|
||||
];
|
||||
KillMode = "process";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.sshd-keygen = {
|
||||
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall cfg.ports;
|
||||
|
||||
security.pam.services.sshd = lib.mkIf cfg.settings.UsePAM {
|
||||
startSession = true;
|
||||
showMotd = true;
|
||||
unixAuth = if cfg.settings.PasswordAuthentication == true then true else false;
|
||||
};
|
||||
|
||||
# These values are merged with the ones defined externally, see:
|
||||
# https://github.com/NixOS/nixpkgs/pull/10155
|
||||
# https://github.com/NixOS/nixpkgs/pull/41745
|
||||
services.openssh.authorizedKeysFiles =
|
||||
lib.optional cfg.authorizedKeysInHomedir "%h/.ssh/authorized_keys"
|
||||
++ [ "/etc/ssh/authorized_keys.d/%u" ];
|
||||
|
||||
services.openssh.settings.AuthorizedPrincipalsFile = lib.mkIf (
|
||||
authPrincipalsFiles != { }
|
||||
) "/etc/ssh/authorized_principals.d/%u";
|
||||
|
||||
services.openssh.extraConfig = lib.mkOrder 0 (
|
||||
lib.concatStringsSep "\n" (
|
||||
[
|
||||
"Banner ${if cfg.banner == null then "none" else pkgs.writeText "ssh_banner" cfg.banner}"
|
||||
"AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}"
|
||||
]
|
||||
++ lib.map (port: ''Port ${toString port}'') cfg.ports
|
||||
++ lib.map (
|
||||
{ port, addr, ... }:
|
||||
''ListenAddress ${addr}${lib.optionalString (port != null) (":" + toString port)}''
|
||||
) cfg.listenAddresses
|
||||
++ lib.optional cfgc.setXAuthLocation "XAuthLocation ${lib.getExe pkgs.xorg.xauth}"
|
||||
++ lib.optional cfg.allowSFTP ''Subsystem sftp ${cfg.sftpServerExecutable} ${lib.concatStringsSep " " cfg.sftpFlags}''
|
||||
++ [
|
||||
"AuthorizedKeysFile ${toString cfg.authorizedKeysFiles}"
|
||||
]
|
||||
++ lib.optional (cfg.authorizedKeysCommand != "none") ''
|
||||
AuthorizedKeysCommand ${cfg.authorizedKeysCommand}
|
||||
AuthorizedKeysCommandUser ${cfg.authorizedKeysCommandUser}
|
||||
''
|
||||
++ lib.map (k: "HostKey ${k.path}") cfg.hostKeys
|
||||
)
|
||||
);
|
||||
|
||||
system.checks = [
|
||||
(pkgs.runCommand "check-sshd-config"
|
||||
{
|
||||
nativeBuildInputs = [ validationPackage ];
|
||||
}
|
||||
''
|
||||
${lib.concatMapStringsSep "\n" (
|
||||
lport: "sshd -G -T -C lport=${toString lport} -f ${sshconf} > /dev/null"
|
||||
) cfg.ports}
|
||||
${lib.concatMapStringsSep "\n" (
|
||||
la:
|
||||
lib.concatMapStringsSep "\n" (
|
||||
port:
|
||||
"sshd -G -T -C ${lib.escapeShellArg "laddr=${la.addr},lport=${toString port}"} -f ${sshconf} > /dev/null"
|
||||
) (if la.port != null then [ la.port ] else cfg.ports)
|
||||
) cfg.listenAddresses}
|
||||
touch $out
|
||||
''
|
||||
)
|
||||
];
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = if cfg.settings.X11Forwarding then cfgc.setXAuthLocation else true;
|
||||
message = "cannot enable X11 forwarding without setting xauth location";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
(builtins.match "(.*\n)?(\t )*[Kk][Ee][Rr][Bb][Ee][Rr][Oo][Ss][Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii][Cc][Aa][Tt][Ii][Oo][Nn][ |\t|=|\"]+yes.*" "${configFile}\n${cfg.extraConfig}")
|
||||
!= null
|
||||
-> cfgc.package.withKerberos;
|
||||
message = "cannot enable Kerberos authentication without using a package with Kerberos support";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
(builtins.match "(.*\n)?(\t )*[Gg][Ss][Ss][Aa][Pp][Ii][Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii][Cc][Aa][Tt][Ii][Oo][Nn][ |\t|=|\"]+yes.*" "${configFile}\n${cfg.extraConfig}")
|
||||
!= null
|
||||
-> cfgc.package.withKerberos;
|
||||
message = "cannot enable GSSAPI authentication without using a package with Kerberos support";
|
||||
}
|
||||
(
|
||||
let
|
||||
duplicates =
|
||||
# Filter out the groups with more than 1 element
|
||||
lib.filter (l: lib.length l > 1) (
|
||||
# Grab the groups, we don't care about the group identifiers
|
||||
lib.attrValues (
|
||||
# Group the settings that are the same in lower case
|
||||
lib.groupBy lib.strings.toLower (lib.attrNames cfg.settings)
|
||||
)
|
||||
);
|
||||
formattedDuplicates = lib.concatMapStringsSep ", " (
|
||||
dupl: "(${lib.concatStringsSep ", " dupl})"
|
||||
) duplicates;
|
||||
in
|
||||
{
|
||||
assertion = lib.length duplicates == 0;
|
||||
message = ''Duplicate sshd config key; does your capitalization match the option's? Duplicate keys: ${formattedDuplicates}'';
|
||||
}
|
||||
)
|
||||
]
|
||||
++ lib.forEach cfg.listenAddresses (
|
||||
{ addr, ... }:
|
||||
{
|
||||
assertion = addr != null;
|
||||
message = "addr must be specified in each listenAddresses entry";
|
||||
}
|
||||
);
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.generateHostKeys {
|
||||
systemd.services.sshd-keygen = {
|
||||
description = "SSH Host Keys Generation";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
unitConfig = {
|
||||
ConditionFileNotEmpty = map (k: "|!${k.path}") cfg.hostKeys;
|
||||
};
|
||||
@@ -802,119 +932,7 @@ in
|
||||
fi
|
||||
'');
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall cfg.ports;
|
||||
|
||||
security.pam.services.sshd = lib.mkIf cfg.settings.UsePAM {
|
||||
startSession = true;
|
||||
showMotd = true;
|
||||
unixAuth = if cfg.settings.PasswordAuthentication == true then true else false;
|
||||
};
|
||||
|
||||
# These values are merged with the ones defined externally, see:
|
||||
# https://github.com/NixOS/nixpkgs/pull/10155
|
||||
# https://github.com/NixOS/nixpkgs/pull/41745
|
||||
services.openssh.authorizedKeysFiles =
|
||||
lib.optional cfg.authorizedKeysInHomedir "%h/.ssh/authorized_keys"
|
||||
++ [ "/etc/ssh/authorized_keys.d/%u" ];
|
||||
|
||||
services.openssh.settings.AuthorizedPrincipalsFile = lib.mkIf (
|
||||
authPrincipalsFiles != { }
|
||||
) "/etc/ssh/authorized_principals.d/%u";
|
||||
|
||||
services.openssh.extraConfig = lib.mkOrder 0 (
|
||||
lib.concatStringsSep "\n" (
|
||||
[
|
||||
"Banner ${if cfg.banner == null then "none" else pkgs.writeText "ssh_banner" cfg.banner}"
|
||||
"AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}"
|
||||
]
|
||||
++ lib.map (port: ''Port ${toString port}'') cfg.ports
|
||||
++ lib.map (
|
||||
{ port, addr, ... }:
|
||||
''ListenAddress ${addr}${lib.optionalString (port != null) (":" + toString port)}''
|
||||
) cfg.listenAddresses
|
||||
++ lib.optional cfgc.setXAuthLocation "XAuthLocation ${lib.getExe pkgs.xorg.xauth}"
|
||||
++ lib.optional cfg.allowSFTP ''Subsystem sftp ${cfg.sftpServerExecutable} ${lib.concatStringsSep " " cfg.sftpFlags}''
|
||||
++ [
|
||||
"AuthorizedKeysFile ${toString cfg.authorizedKeysFiles}"
|
||||
]
|
||||
++ lib.optional (cfg.authorizedKeysCommand != "none") ''
|
||||
AuthorizedKeysCommand ${cfg.authorizedKeysCommand}
|
||||
AuthorizedKeysCommandUser ${cfg.authorizedKeysCommandUser}
|
||||
''
|
||||
++ lib.map (k: "HostKey ${k.path}") cfg.hostKeys
|
||||
)
|
||||
);
|
||||
|
||||
system.checks = [
|
||||
(pkgs.runCommand "check-sshd-config"
|
||||
{
|
||||
nativeBuildInputs = [ validationPackage ];
|
||||
}
|
||||
''
|
||||
${lib.concatMapStringsSep "\n" (
|
||||
lport: "sshd -G -T -C lport=${toString lport} -f ${sshconf} > /dev/null"
|
||||
) cfg.ports}
|
||||
${lib.concatMapStringsSep "\n" (
|
||||
la:
|
||||
lib.concatMapStringsSep "\n" (
|
||||
port:
|
||||
"sshd -G -T -C ${lib.escapeShellArg "laddr=${la.addr},lport=${toString port}"} -f ${sshconf} > /dev/null"
|
||||
) (if la.port != null then [ la.port ] else cfg.ports)
|
||||
) cfg.listenAddresses}
|
||||
touch $out
|
||||
''
|
||||
)
|
||||
];
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = if cfg.settings.X11Forwarding then cfgc.setXAuthLocation else true;
|
||||
message = "cannot enable X11 forwarding without setting xauth location";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
(builtins.match "(.*\n)?(\t )*[Kk][Ee][Rr][Bb][Ee][Rr][Oo][Ss][Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii][Cc][Aa][Tt][Ii][Oo][Nn][ |\t|=|\"]+yes.*" "${configFile}\n${cfg.extraConfig}")
|
||||
!= null
|
||||
-> cfgc.package.withKerberos;
|
||||
message = "cannot enable Kerberos authentication without using a package with Kerberos support";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
(builtins.match "(.*\n)?(\t )*[Gg][Ss][Ss][Aa][Pp][Ii][Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii][Cc][Aa][Tt][Ii][Oo][Nn][ |\t|=|\"]+yes.*" "${configFile}\n${cfg.extraConfig}")
|
||||
!= null
|
||||
-> cfgc.package.withKerberos;
|
||||
message = "cannot enable GSSAPI authentication without using a package with Kerberos support";
|
||||
}
|
||||
(
|
||||
let
|
||||
duplicates =
|
||||
# Filter out the groups with more than 1 element
|
||||
lib.filter (l: lib.length l > 1) (
|
||||
# Grab the groups, we don't care about the group identifiers
|
||||
lib.attrValues (
|
||||
# Group the settings that are the same in lower case
|
||||
lib.groupBy lib.strings.toLower (lib.attrNames cfg.settings)
|
||||
)
|
||||
);
|
||||
formattedDuplicates = lib.concatMapStringsSep ", " (
|
||||
dupl: "(${lib.concatStringsSep ", " dupl})"
|
||||
) duplicates;
|
||||
in
|
||||
{
|
||||
assertion = lib.length duplicates == 0;
|
||||
message = ''Duplicate sshd config key; does your capitalization match the option's? Duplicate keys: ${formattedDuplicates}'';
|
||||
}
|
||||
)
|
||||
]
|
||||
++ lib.forEach cfg.listenAddresses (
|
||||
{ addr, ... }:
|
||||
{
|
||||
assertion = addr != null;
|
||||
message = "addr must be specified in each listenAddresses entry";
|
||||
}
|
||||
);
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -250,6 +250,15 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
server-no-sshd-with-key =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.openssh.generateHostKeys = true;
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
snakeOilPublicKey
|
||||
];
|
||||
};
|
||||
|
||||
client =
|
||||
{ ... }:
|
||||
{
|
||||
@@ -276,6 +285,10 @@ in
|
||||
server_localhost_only_lazy.wait_for_unit("sshd.socket", timeout=30)
|
||||
server_lazy_socket.wait_for_unit("sshd.socket", timeout=30)
|
||||
|
||||
# sshd-keygen is a oneshot unit, so just wait for multi-user.target, which
|
||||
# pulls it in.
|
||||
server_no_sshd_with_key.wait_for_unit("multi-user.target", timeout=30)
|
||||
|
||||
with subtest("manual-authkey"):
|
||||
client.succeed(
|
||||
'${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""'
|
||||
@@ -408,6 +421,19 @@ in
|
||||
|
||||
server_sftp.wait_for_file("/srv/sftp/uploads/test-file")
|
||||
|
||||
with subtest("keygen without sshd"):
|
||||
client.fail(
|
||||
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil root@server-no-sshd-with-key true",
|
||||
timeout=30
|
||||
)
|
||||
server_no_sshd_with_key.succeed("test -e /etc/ssh/ssh_host_ed25519_key")
|
||||
server_no_sshd_with_key.succeed("test -e /etc/ssh/ssh_host_ed25519_key.pub")
|
||||
server_no_sshd_with_key.fail("pgrep sshd")
|
||||
|
||||
# Validate the above check for sshd using pgrep does pass on a server
|
||||
# that should have sshd running, just to prove it's a useful test.
|
||||
server.succeed("pgrep sshd")
|
||||
|
||||
# None of the per-connection units should have failed.
|
||||
server_lazy.fail("systemctl is-failed 'sshd@*.service'")
|
||||
'';
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "mame2003-plus";
|
||||
version = "0-unstable-2025-11-13";
|
||||
version = "0-unstable-2025-12-02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "mame2003-plus-libretro";
|
||||
rev = "62c7089644966f6ac5fc79fe03592603579a409d";
|
||||
hash = "sha256-NHJfZpo4/aR9a6Sn3x+BQaVfKtkMBUoDQlgtvIkXDFI=";
|
||||
rev = "e58d3285f4323a19a0f5aea01f4cdf7a934e1155";
|
||||
hash = "sha256-3n34FDDQ1CjmZ4V7Vl/JYi/24w9F3z1nLSEuq44KvMg=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "ppsspp";
|
||||
version = "0-unstable-2025-11-27";
|
||||
version = "0-unstable-2025-12-04";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hrydgard";
|
||||
repo = "ppsspp";
|
||||
rev = "e5bafa4264e88cf2699e44740e2580ced0454a90";
|
||||
hash = "sha256-+Rmj75yBodwqENJppTWpsef9R0ajCoz9KaxVuYktUII=";
|
||||
rev = "cf306e9cec919011339fb123d009cb470f628df4";
|
||||
hash = "sha256-5UNd59QG10yD7wuiXWC5JwqWvggx07M6n320dhJ3rU0=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
autoreconfHook,
|
||||
pkg-config,
|
||||
openssl,
|
||||
boost,
|
||||
testers,
|
||||
asioVersion ? "1.36.0",
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "asio";
|
||||
version = asioVersion;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chriskohlhoff";
|
||||
repo = "asio";
|
||||
tag = "asio-${lib.replaceStrings [ "." ] [ "-" ] finalAttrs.version}";
|
||||
hash =
|
||||
{
|
||||
# Preserve 1.32.0 because some project depends on asio/io_service.hpp
|
||||
"1.32.0" = "sha256-PBoa4OAOOmHas9wCutjz80rWXc3zGONntb9vTQk3FNY=";
|
||||
"1.36.0" = "sha256-BhJpE5+t0WXsuQ5CtncU0P8Kf483uFoV+OGlFLc7TpQ=";
|
||||
}
|
||||
.${asioVersion} or (throw "Unsupported asio version. Please use overrideAttrs directly");
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/asio";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
];
|
||||
|
||||
# Only used for test coverage
|
||||
checkInputs = [
|
||||
openssl
|
||||
boost
|
||||
];
|
||||
|
||||
configureFlags = lib.optionals finalAttrs.finalPackage.doCheck [
|
||||
# Only used in tests, "HAVE_BOOST_COROUTINE"
|
||||
"--enable-boost-coroutine"
|
||||
|
||||
# There is also the "--with-boost" flag, but
|
||||
# after several tests, it doesn't make any difference
|
||||
# in the output.
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
passthru.tests.pkg-config = testers.hasPkgConfigModules {
|
||||
package = finalAttrs.finalPackage;
|
||||
versionCheck = true;
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://think-async.com/Asio";
|
||||
description = "Cross-platform C++ library for network and low-level I/O programming";
|
||||
license = lib.licenses.boost;
|
||||
maintainers = with lib.maintainers; [ aleksana ];
|
||||
platforms = lib.platforms.unix;
|
||||
pkgConfigModules = [ "asio" ];
|
||||
};
|
||||
})
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cfspeedtest";
|
||||
version = "2.0.0";
|
||||
version = "2.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "code-inflation";
|
||||
repo = "cfspeedtest";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uqWTYhC+ADwGpUSYXKKD4t0ZSEsVxVM6hNHKewuW0Ts=";
|
||||
hash = "sha256-q69ti2bEJBO7Evz8X2EQGbMP3n27fesSO1z8HaEhKJM=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-VuCYy8awQTmOxh9efJb0t6BXcxwlkz/uJNb8bCzXMdc=";
|
||||
cargoHash = "sha256-AvcbA4V9Ht9yWNOPPVQvAGULiTh7cY92NaZJbOAOk1U=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "clorinde";
|
||||
version = "1.1.1";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "halcyonnouveau";
|
||||
repo = "clorinde";
|
||||
tag = "clorinde-v${finalAttrs.version}";
|
||||
hash = "sha256-a44y0cVmpQf3AmN4DXR50pFhUrWlANN9X0v0zQttT7M=";
|
||||
hash = "sha256-d+fVk3ZWccw/E6/mAyiGkP5t5/nl3riBAHwhzsaLiDs=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-YSyHp3JwsLO7yrLko5NE2lb6ozy8Ah9i2Rz3854ujh0=";
|
||||
cargoHash = "sha256-bu31l7slpWIHe2Ze/pP2udygt/KeWrdh0MYkCXCSWIc=";
|
||||
|
||||
cargoBuildFlags = [ "--package=clorinde" ];
|
||||
|
||||
|
||||
@@ -14,18 +14,18 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "codex";
|
||||
version = "0.64.0";
|
||||
version = "0.65.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "openai";
|
||||
repo = "codex";
|
||||
tag = "rust-v${finalAttrs.version}";
|
||||
hash = "sha256-1nUawra7VChAcLAwWgcasy22q37DQxq6q8qAx55gHMc=";
|
||||
hash = "sha256-1zh6ifwavP3RFqQbHIClEQ4cKRQ5LdU61LReA6+HSW8=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/codex-rs";
|
||||
|
||||
cargoHash = "sha256-cIiHB8THztG/TqPMjFekkQl8wEvALIf5Bg/fqXJ/hKs=";
|
||||
cargoHash = "sha256-XzqEI8wpI5g1+u+AOWiZYOzCVhwysMtHKPDpcfu2HAU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
|
||||
@@ -20,17 +20,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-applets";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-applets";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-4BH7qEoUf5UtpiQtk3WvgA3p/hAa58RnQ4jUjG8tpd0=";
|
||||
hash = "sha256-HZi9pT9s7h/TJtWK28vlCvhiuQqmxZa0HmSsnBa8F80=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-XOA5yREoQHGxPI9PVYd2UsaHRCIfbb3Tkr1eovqIIow=";
|
||||
cargoHash = "sha256-8Zq8l4gRI9FuGFy6Gi5doFNvOT7nOy8qCE9pmbcCELQ=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
just
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-applibrary";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-bg";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-comp";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-comp";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-MyE2C7oUMSIkNn03am/ytc1/oJITsAO7Ok3XV231EmA=";
|
||||
hash = "sha256-ozymo6ucBEv4vEADIHyn/G+p5V8SMgsyW/TcEi3Dhxg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-qlfCCHqjKX72hVj5Bgh1wKT7pMsy5vG1VEIqJk4prR8=";
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-edit";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-edit";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-Zk4qo/2ZdlAv2g1gIoMfzRXwndmqtyIqtX/2Z1nmhLM=";
|
||||
hash = "sha256-lqM2MYuGXUh0gTosjbJbusP5daHhs7tsnDTmYzh1Vbo=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-6b6m6mZTa3Li74JCm6czR0VBc7H5IRTPr7yic3V1FL4=";
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-files";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-files";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-jH88PzgHMbbtGc68v/7Azia+LrB1kfA7QdBJOVAsEs0=";
|
||||
hash = "sha256-rjGhT8ZFLpVEGz5g9Hy3E8eYigxUXF1ZHLXUhHdIyHE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-WPBK7/7l+Z69AFrqnDL6XszUcBHuZdKsNZ31HS+Ol4o=";
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-greeter";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "cosmic-icons";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-idle";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-initial-setup";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-initial-setup";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-iSxBd/0DsaId7PETZMZbN4uZHiUJmxzm/1KXRXDwpEo=";
|
||||
hash = "sha256-eK+1nEpCgWOdhA0Kdg/RwgAON0dMjZujWxqd5CdSqNk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-jOPJiKPE3UUD/QHmb+6s6l2RVhtUFls3QRGQ6DmEFSE=";
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-launcher";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-notifications";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-osd";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-osd";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-mbsTDxd8vvkY0EQCOI8sXxY80odJgSAuuP2gNzy6HXo=";
|
||||
hash = "sha256-WK90ml7xIRK2Xd1FIjRJg0QmXfFL1slmZOI8hhGsVtg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-cpNp/by8TU2lbb2d3smxUr48mTSLnoPXseiRZScwSXI=";
|
||||
cargoHash = "sha256-DNQvmE/2swrDybjcQfCAjMRkAttjl+ibbLG0HSlcZwU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
just
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-panel";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-panel";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-gvEHieM8osGyRrkeE8gEOPduTv3y3KgoZ2YhFgW5qp8=";
|
||||
hash = "sha256-1Xwe1uONJbl4wq6QBbTI1suLiSlTzU4e/5WBccvghHE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-ZkjXZrcA4qKHSjEOxj7+j10PxJw/du8B2Mee2fxPJxs=";
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-player";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-randr";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-screenshot";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-session";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-settings-daemon";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -27,17 +27,17 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-settings";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-settings";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-Z+MJMHcyqUnSKSUeYH5PyFFkzUQ33bkFoAd3m/TckrQ=";
|
||||
hash = "sha256-MNse8aUfRuJ7svNWv/b+XF2LVNKw4O6oZN7bUmrPE78=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-Su+yAQLr3Us8YNU8z83XO1UDjjOY3SCGnkmwGaIGFho=";
|
||||
cargoHash = "sha256-zubJwm+4Jb6Fv2+tu93It4wkD9KJe3KaPUkxlWAvuZE=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-store";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-store";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-rrM0ibnapXv+IYDPqw/dXQJ44cDWPNlz7rREVQw5J1o=";
|
||||
hash = "sha256-6PysnBu6b4REfmIwk7MgYZpNXeFKX2kIrwoflqAAKNg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-nJLowAuWvj5JfmPyExQyfCJ9pqNJ0OdzPPku9z7RDWc=";
|
||||
cargoHash = "sha256-n9QuACHrSctmH8qLpDL3Z6iGyKXhYKVoGOiw14jVIkc=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
just
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-term";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "cosmic-wallpapers";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cosmic-workspaces-epoch";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "cosmic-workspaces-epoch";
|
||||
tag = "epoch-${finalAttrs.version}";
|
||||
hash = "sha256-XsBOT4AUdw9cA1wjHzS0StbSIt4z3tEMnnJdegdsROI=";
|
||||
hash = "sha256-/NLEI+rBuqq1NXh9KijkR+lOlyEOfgwc46dgUoPxF1E=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-7BdyHz66A+QhJY0haohaQiNkhpmX9rqIW9gD8E4Q7Qg=";
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7dbc2c3..cfdd98d 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -11,7 +11,6 @@ project(Crow
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
-include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
|
||||
|
||||
# Make sure Findasio.cmake module is found
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
|
||||
index 67c458c..2873530 100644
|
||||
--- a/tests/CMakeLists.txt
|
||||
+++ b/tests/CMakeLists.txt
|
||||
@@ -5,18 +5,9 @@
|
||||
@@ -5,18 +5,9 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 new)
|
||||
set(CMAKE_POLICY_WARNING_CMP0126 new)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/compiler_options.cmake)
|
||||
@@ -9,7 +23,7 @@
|
||||
+find_package(Catch2 REQUIRED)
|
||||
|
||||
-CPMAddPackage(Catch2
|
||||
- VERSION 3.7.0
|
||||
- VERSION 3.10.0
|
||||
- GITHUB_REPOSITORY catchorg/Catch2
|
||||
- OPTIONS
|
||||
- "CATCH_INSTALL_DOCS Off"
|
||||
@@ -19,4 +33,4 @@
|
||||
-
|
||||
enable_testing()
|
||||
|
||||
set(TEST_SRCS
|
||||
# list the test sources
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "crow";
|
||||
version = "1.2.1.2";
|
||||
version = "1.3.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CrowCpp";
|
||||
repo = "Crow";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-iQ2owNry4LOmMxyO5L7O7XZB5vwUf+ZuZL76hZ6FThk=";
|
||||
hash = "sha256-QLYQ0RouqDDvhnBF79O/9M7IwlF0eQ3HTqR6bXWm574=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -30,6 +30,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "CROW_BUILD_EXAMPLES" false)
|
||||
# Requires more non-trivial patches to get around CPM
|
||||
(lib.cmakeBool "CROW_GENERATE_SBOM" false)
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
speexdsp,
|
||||
hamlib_4,
|
||||
wxGTK32,
|
||||
sioclient,
|
||||
dbus,
|
||||
apple-sdk_15,
|
||||
nix-update-script,
|
||||
@@ -133,7 +132,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
speexdsp
|
||||
hamlib_4
|
||||
wxGTK32
|
||||
sioclient
|
||||
python3.pkgs.numpy
|
||||
]
|
||||
++ (
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "fulcio";
|
||||
version = "1.8.2";
|
||||
version = "1.8.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sigstore";
|
||||
repo = "fulcio";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-yAaMXlcGU1JXGMr2nkUHAWkd2JAlprPbKxs1MKvU6iM=";
|
||||
hash = "sha256-yR8Q1ksz1fB8sc8NA6Hr4dwe5VXerEgIQYiIpNTOEf8=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
@@ -33,7 +33,7 @@ buildGoModule rec {
|
||||
find "$out" -name .git -print0 | xargs -0 rm -rf
|
||||
'';
|
||||
};
|
||||
vendorHash = "sha256-xOM92evfKrjFhPPny1kIVK5uxZkLJZ+qyJ15/4HpsN0=";
|
||||
vendorHash = "sha256-G+vtNCm9Ecpj5IzxXojzcjGEQL47R5gNMFI/JCs7C0w=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -5,18 +5,16 @@
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "gokey";
|
||||
version = "0.1.3";
|
||||
|
||||
patches = [ ./version.patch ];
|
||||
version = "0.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudflare";
|
||||
repo = "gokey";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-pvtRSWq/vXlyUShb61aiDlis9AiQnrA2PWycr1Zw0og=";
|
||||
hash = "sha256-tJ9nCHhKPrw7SRGsqAlo/tf3tBLF63+CevEXggZADlE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-qlP2tI6QQMjxP59zaXgx4mX9IWSrOKWmme717wDaUEc=";
|
||||
vendorHash = "sha256-Btac9Oi8efqRy+OH49Na3Y6RGehHEmGfvDo2/7EWPL4=";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/cloudflare/gokey";
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
diff --git a/go.mod b/go.mod
|
||||
index 50b6806..f23b2ec 100644
|
||||
--- a/go.mod
|
||||
+++ b/go.mod
|
||||
@@ -1,8 +1,9 @@
|
||||
module github.com/cloudflare/gokey
|
||||
|
||||
-go 1.13
|
||||
+go 1.17
|
||||
|
||||
require (
|
||||
golang.org/x/crypto v0.17.0
|
||||
golang.org/x/term v0.15.0
|
||||
+ golang.org/x/sys v0.15.0
|
||||
)
|
||||
@@ -8,7 +8,7 @@
|
||||
qt6,
|
||||
libusb1,
|
||||
protobuf,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
postPatch = ''
|
||||
substituteInPlace {hidviz,libhidx{,/libhidx{,_server{,_daemon}}}}/CMakeLists.txt \
|
||||
--replace-fail 'cmake_minimum_required(VERSION 3.2)' 'cmake_minimum_required(VERSION 3.10)'
|
||||
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace-fail '/usr/include/asio' '${lib.getDev asio}/include/asio'
|
||||
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace-fail '/usr/include/asio' '${lib.getDev asio_1_32_0}/include/asio'
|
||||
substituteInPlace libhidx/libhidx/src/Connector.cc --replace-fail '/usr/local/libexec' "$out/libexec"
|
||||
'';
|
||||
|
||||
@@ -39,7 +39,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
qt6.qtwebengine
|
||||
libusb1
|
||||
protobuf
|
||||
asio
|
||||
# depends on io_service
|
||||
asio_1_32_0
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
|
||||
@@ -22,6 +22,12 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-AhByaw1KnEDuRfKiN+/vQMbkG0BJ6Z3+h+QT8scFzAY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/STEllAR-GROUP/hpx/pull/6731
|
||||
# Fix build with asio >= 1.34.0
|
||||
./remove_deprecated_asio_features.patch
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ hwloc ];
|
||||
buildInputs = [
|
||||
asio
|
||||
|
||||
@@ -0,0 +1,557 @@
|
||||
From f073c54f9c69108707dc477c890592049fcd95db Mon Sep 17 00:00:00 2001
|
||||
From: Hartmut Kaiser <hartmut.kaiser@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 09:49:03 -0500
|
||||
Subject: [PATCH 1/2] Removing deprecated Asio features
|
||||
|
||||
Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
|
||||
---
|
||||
.../iostreams/src/server/output_stream.cpp | 30 ++++--
|
||||
examples/async_io/async_io_low_level.cpp | 5 +
|
||||
libs/core/asio/include/hpx/asio/asio_util.hpp | 6 ++
|
||||
libs/core/asio/src/asio_util.cpp | 102 +++++++++++++++++-
|
||||
libs/core/executors/src/service_executors.cpp | 10 +-
|
||||
.../hpx/io_service/io_service_pool.hpp | 4 +
|
||||
libs/core/io_service/src/io_service_pool.cpp | 4 +
|
||||
libs/core/runtime_local/src/pool_timer.cpp | 2 +-
|
||||
.../src/parcelport_gasnet.cpp | 6 ++
|
||||
.../parcelport_lci/src/parcelport_lci.cpp | 13 ++-
|
||||
.../parcelport_mpi/src/parcelport_mpi.cpp | 6 ++
|
||||
11 files changed, 168 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/components/iostreams/src/server/output_stream.cpp b/components/iostreams/src/server/output_stream.cpp
|
||||
index dd0a519b27f8..40f8ee0758a3 100644
|
||||
--- a/components/iostreams/src/server/output_stream.cpp
|
||||
+++ b/components/iostreams/src/server/output_stream.cpp
|
||||
@@ -34,7 +34,7 @@ namespace hpx::iostreams::detail {
|
||||
ar << valid;
|
||||
if (valid)
|
||||
{
|
||||
- ar& data_;
|
||||
+ ar & data_;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace hpx::iostreams::detail {
|
||||
ar >> valid;
|
||||
if (valid)
|
||||
{
|
||||
- ar& data_;
|
||||
+ ar & data_;
|
||||
}
|
||||
}
|
||||
} // namespace hpx::iostreams::detail
|
||||
@@ -53,23 +53,29 @@ namespace hpx::iostreams::server {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
void output_stream::call_write_async(std::uint32_t locality_id,
|
||||
std::uint64_t count, detail::buffer const& in, hpx::id_type /*this_id*/)
|
||||
- { // {{{
|
||||
+ {
|
||||
// Perform the IO operation.
|
||||
pending_output_.output(locality_id, count, in, write_f, mtx_);
|
||||
- } // }}}
|
||||
+ }
|
||||
|
||||
void output_stream::write_async(std::uint32_t locality_id,
|
||||
std::uint64_t count, detail::buffer const& buf_in)
|
||||
- { // {{{
|
||||
+ {
|
||||
// Perform the IO in another OS thread.
|
||||
detail::buffer in(buf_in);
|
||||
// we need to capture the GID of the component to keep it alive long
|
||||
// enough.
|
||||
hpx::id_type this_id = this->get_id();
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(hpx::get_thread_pool("io_pool")->get_io_service(),
|
||||
+ hpx::bind_front(&output_stream::call_write_async, this, locality_id,
|
||||
+ count, HPX_MOVE(in), HPX_MOVE(this_id)));
|
||||
+#else
|
||||
hpx::get_thread_pool("io_pool")->get_io_service().post(
|
||||
hpx::bind_front(&output_stream::call_write_async, this, locality_id,
|
||||
count, HPX_MOVE(in), HPX_MOVE(this_id)));
|
||||
- } // }}}
|
||||
+#endif
|
||||
+ }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
void output_stream::call_write_sync(std::uint32_t locality_id,
|
||||
@@ -86,16 +92,22 @@ namespace hpx::iostreams::server {
|
||||
|
||||
void output_stream::write_sync(std::uint32_t locality_id,
|
||||
std::uint64_t count, detail::buffer const& buf_in)
|
||||
- { // {{{
|
||||
+ {
|
||||
// Perform the IO in another OS thread.
|
||||
detail::buffer in(buf_in);
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(hpx::get_thread_pool("io_pool")->get_io_service(),
|
||||
+ hpx::bind_front(&output_stream::call_write_sync, this, locality_id,
|
||||
+ count, std::ref(in),
|
||||
+ threads::thread_id_ref_type(threads::get_outer_self_id())));
|
||||
+#else
|
||||
hpx::get_thread_pool("io_pool")->get_io_service().post(
|
||||
hpx::bind_front(&output_stream::call_write_sync, this, locality_id,
|
||||
count, std::ref(in),
|
||||
threads::thread_id_ref_type(threads::get_outer_self_id())));
|
||||
-
|
||||
+#endif
|
||||
// Sleep until the worker thread wakes us up.
|
||||
this_thread::suspend(threads::thread_schedule_state::suspended,
|
||||
"output_stream::write_sync");
|
||||
- } // }}}
|
||||
+ }
|
||||
} // namespace hpx::iostreams::server
|
||||
diff --git a/examples/async_io/async_io_low_level.cpp b/examples/async_io/async_io_low_level.cpp
|
||||
index 75312984bf7f..153e5d124930 100644
|
||||
--- a/examples/async_io/async_io_low_level.cpp
|
||||
+++ b/examples/async_io/async_io_low_level.cpp
|
||||
@@ -39,7 +39,12 @@ hpx::future<int> async_io(char const* string_to_write)
|
||||
hpx::get_runtime().get_thread_pool("io_pool");
|
||||
|
||||
// ... and schedule the handler to run on one of its OS-threads.
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(
|
||||
+ pool->get_io_service(), hpx::bind(&do_async_io, string_to_write, p));
|
||||
+#else
|
||||
pool->get_io_service().post(hpx::bind(&do_async_io, string_to_write, p));
|
||||
+#endif
|
||||
|
||||
return p->get_future();
|
||||
}
|
||||
diff --git a/libs/core/asio/include/hpx/asio/asio_util.hpp b/libs/core/asio/include/hpx/asio/asio_util.hpp
|
||||
index 286536692102..e79bb15c4cb1 100644
|
||||
--- a/libs/core/asio/include/hpx/asio/asio_util.hpp
|
||||
+++ b/libs/core/asio/include/hpx/asio/asio_util.hpp
|
||||
@@ -17,6 +17,7 @@
|
||||
#endif
|
||||
#include <asio/io_context.hpp>
|
||||
#include <asio/ip/tcp.hpp>
|
||||
+#include <asio/version.hpp>
|
||||
|
||||
/* The asio support includes termios.h.
|
||||
* The termios.h file on ppc64le defines these macros, which
|
||||
@@ -50,7 +51,12 @@ namespace hpx::util {
|
||||
[[nodiscard]] HPX_CORE_EXPORT std::string cleanup_ip_address(
|
||||
std::string const& addr);
|
||||
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ using endpoint_iterator_type =
|
||||
+ asio::ip::basic_resolver_iterator<asio::ip::tcp>;
|
||||
+#else
|
||||
using endpoint_iterator_type = asio::ip::tcp::resolver::iterator;
|
||||
+#endif
|
||||
|
||||
[[nodiscard]] endpoint_iterator_type HPX_CORE_EXPORT connect_begin(
|
||||
std::string const& address, std::uint16_t port,
|
||||
diff --git a/libs/core/asio/src/asio_util.cpp b/libs/core/asio/src/asio_util.cpp
|
||||
index b5443e5dfa4e..bd248f3345d0 100644
|
||||
--- a/libs/core/asio/src/asio_util.cpp
|
||||
+++ b/libs/core/asio/src/asio_util.cpp
|
||||
@@ -54,8 +54,13 @@ namespace hpx::util {
|
||||
{
|
||||
using namespace asio::ip;
|
||||
std::error_code ec;
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ address_v4 const addr4 = //-V821
|
||||
+ make_address_v4(addr.c_str(), ec);
|
||||
+#else
|
||||
address_v4 const addr4 = //-V821
|
||||
address_v4::from_string(addr.c_str(), ec);
|
||||
+#endif
|
||||
if (!ec)
|
||||
{ // it's an IPV4 address
|
||||
ep = tcp::endpoint(address(addr4), port);
|
||||
@@ -64,8 +69,13 @@ namespace hpx::util {
|
||||
|
||||
if (!force_ipv4)
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ address_v6 const addr6 = //-V821
|
||||
+ make_address_v6(addr.c_str(), ec);
|
||||
+#else
|
||||
address_v6 const addr6 = //-V821
|
||||
address_v6::from_string(addr.c_str(), ec);
|
||||
+#endif
|
||||
if (!ec)
|
||||
{ // it's an IPV6 address
|
||||
ep = tcp::endpoint(address(addr6), port);
|
||||
@@ -108,8 +118,26 @@ namespace hpx::util {
|
||||
{
|
||||
// resolve the given address
|
||||
tcp::resolver resolver(io_service);
|
||||
- tcp::resolver::query query(hostname, std::to_string(port));
|
||||
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v4(), hostname, std::to_string(port));
|
||||
+
|
||||
+ auto it = resolver_results.begin();
|
||||
+ auto end = resolver_results.begin();
|
||||
+
|
||||
+ // skip ipv6 results, if required
|
||||
+ if (it == end && !force_ipv4)
|
||||
+ {
|
||||
+ resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v6(), hostname, std::to_string(port));
|
||||
+ it = resolver_results.begin();
|
||||
+ }
|
||||
+
|
||||
+ HPX_ASSERT(it != end);
|
||||
+ return *it;
|
||||
+#else
|
||||
+ tcp::resolver::query query(hostname, std::to_string(port));
|
||||
asio::ip::tcp::resolver::iterator it = resolver.resolve(query);
|
||||
|
||||
// skip ipv6 results, if required
|
||||
@@ -121,9 +149,9 @@ namespace hpx::util {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
-
|
||||
HPX_ASSERT(it != asio::ip::tcp::resolver::iterator());
|
||||
return *it;
|
||||
+#endif
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
{
|
||||
@@ -149,8 +177,21 @@ namespace hpx::util {
|
||||
{
|
||||
asio::io_context io_service;
|
||||
tcp::resolver resolver(io_service);
|
||||
+
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v4(), asio::ip::host_name(), "");
|
||||
+ auto it = resolver_results.begin();
|
||||
+ if (it == resolver_results.end())
|
||||
+ {
|
||||
+ resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v6(), asio::ip::host_name(), "");
|
||||
+ it = resolver_results.begin();
|
||||
+ }
|
||||
+#else
|
||||
tcp::resolver::query query(asio::ip::host_name(), "");
|
||||
tcp::resolver::iterator it = resolver.resolve(query);
|
||||
+#endif
|
||||
tcp::endpoint endpoint = *it;
|
||||
return endpoint.address().to_string();
|
||||
}
|
||||
@@ -230,8 +271,14 @@ namespace hpx::util {
|
||||
tcp::endpoint ep;
|
||||
if (util::get_endpoint(address, port, ep))
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results =
|
||||
+ tcp::resolver::results_type::create(ep, address, port_str);
|
||||
+ return resolver_results.begin();
|
||||
+#else
|
||||
return {
|
||||
tcp::resolver::results_type::create(ep, address, port_str)};
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
@@ -244,10 +291,24 @@ namespace hpx::util {
|
||||
{
|
||||
// resolve the given address
|
||||
tcp::resolver resolver(io_service);
|
||||
+
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results = resolver.resolve(asio::ip::tcp::v4(),
|
||||
+ !address.empty() ? address : asio::ip::host_name(), port_str);
|
||||
+ auto it = resolver_results.begin();
|
||||
+ if (it == resolver_results.end())
|
||||
+ {
|
||||
+ resolver_results = resolver.resolve(asio::ip::tcp::v6(),
|
||||
+ !address.empty() ? address : asio::ip::host_name(),
|
||||
+ port_str);
|
||||
+ it = resolver_results.begin();
|
||||
+ }
|
||||
+ return it;
|
||||
+#else
|
||||
tcp::resolver::query query(
|
||||
!address.empty() ? address : asio::ip::host_name(), port_str);
|
||||
-
|
||||
return {resolver.resolve(query)};
|
||||
+#endif
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
{
|
||||
@@ -276,8 +337,14 @@ namespace hpx::util {
|
||||
tcp::endpoint ep;
|
||||
if (util::get_endpoint(address, port, ep))
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results =
|
||||
+ tcp::resolver::results_type::create(ep, address, port_str);
|
||||
+ return resolver_results.begin();
|
||||
+#else
|
||||
return {
|
||||
tcp::resolver::results_type::create(ep, address, port_str)};
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
@@ -290,9 +357,21 @@ namespace hpx::util {
|
||||
{
|
||||
// resolve the given address
|
||||
tcp::resolver resolver(io_service);
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results =
|
||||
+ resolver.resolve(asio::ip::tcp::v4(), address, port_str);
|
||||
+ auto it = resolver_results.begin();
|
||||
+ if (it == resolver_results.end())
|
||||
+ {
|
||||
+ resolver_results =
|
||||
+ resolver.resolve(asio::ip::tcp::v6(), address, port_str);
|
||||
+ it = resolver_results.begin();
|
||||
+ }
|
||||
+ return it;
|
||||
+#else
|
||||
tcp::resolver::query query(address, port_str);
|
||||
-
|
||||
return {resolver.resolve(query)};
|
||||
+#endif
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
{
|
||||
@@ -306,9 +385,22 @@ namespace hpx::util {
|
||||
{
|
||||
// resolve the given address
|
||||
tcp::resolver resolver(io_service);
|
||||
- tcp::resolver::query query(asio::ip::host_name(), port_str);
|
||||
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ auto resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v4(), asio::ip::host_name(), port_str);
|
||||
+ auto it = resolver_results.begin();
|
||||
+ if (it == resolver_results.end())
|
||||
+ {
|
||||
+ resolver_results = resolver.resolve(
|
||||
+ asio::ip::tcp::v6(), asio::ip::host_name(), port_str);
|
||||
+ it = resolver_results.begin();
|
||||
+ }
|
||||
+ return it;
|
||||
+#else
|
||||
+ tcp::resolver::query query(asio::ip::host_name(), port_str);
|
||||
return {resolver.resolve(query)};
|
||||
+#endif
|
||||
}
|
||||
catch (std::system_error const&)
|
||||
{
|
||||
diff --git a/libs/core/executors/src/service_executors.cpp b/libs/core/executors/src/service_executors.cpp
|
||||
index 4e3ba88a2392..3e39e59ede45 100644
|
||||
--- a/libs/core/executors/src/service_executors.cpp
|
||||
+++ b/libs/core/executors/src/service_executors.cpp
|
||||
@@ -1,4 +1,4 @@
|
||||
-// Copyright (c) 2023 Hartmut Kaiser
|
||||
+// Copyright (c) 2023-2025 Hartmut Kaiser
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
@@ -10,12 +10,20 @@
|
||||
#include <hpx/io_service/io_service_pool.hpp>
|
||||
|
||||
#include <asio/io_context.hpp>
|
||||
+#include <asio/version.hpp>
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+#include <asio/post.hpp>
|
||||
+#endif
|
||||
|
||||
namespace hpx::parallel::execution::detail {
|
||||
|
||||
void service_executor::post(
|
||||
hpx::util::io_service_pool* pool, hpx::function<void()>&& f)
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(pool->get_io_service(), HPX_MOVE(f));
|
||||
+#else
|
||||
pool->get_io_service().post(HPX_MOVE(f));
|
||||
+#endif
|
||||
}
|
||||
} // namespace hpx::parallel::execution::detail
|
||||
diff --git a/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp b/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
|
||||
index 8d800f36d18d..8441886b9a1d 100644
|
||||
--- a/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
|
||||
+++ b/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
|
||||
@@ -19,6 +19,10 @@
|
||||
#endif
|
||||
#include <asio/executor_work_guard.hpp>
|
||||
#include <asio/io_context.hpp>
|
||||
+#include <asio/version.hpp>
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+#include <asio/post.hpp>
|
||||
+#endif
|
||||
|
||||
// The boost asio support includes termios.h. The termios.h file on ppc64le
|
||||
// defines these macros, which are also used by blaze, blaze_tensor as Template
|
||||
diff --git a/libs/core/io_service/src/io_service_pool.cpp b/libs/core/io_service/src/io_service_pool.cpp
|
||||
index 44eb3318c04b..ca2fe443e219 100644
|
||||
--- a/libs/core/io_service/src/io_service_pool.cpp
|
||||
+++ b/libs/core/io_service/src/io_service_pool.cpp
|
||||
@@ -259,7 +259,11 @@ namespace hpx::util {
|
||||
for (std::size_t i = 0; i < pool_size_; ++i)
|
||||
{
|
||||
work_.emplace_back(initialize_work(*io_services_[i]));
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ io_services_[i]->restart();
|
||||
+#else
|
||||
io_services_[i]->reset();
|
||||
+#endif
|
||||
}
|
||||
|
||||
continue_barrier_->wait();
|
||||
diff --git a/libs/core/runtime_local/src/pool_timer.cpp b/libs/core/runtime_local/src/pool_timer.cpp
|
||||
index 7487b5a72692..d2723d2452e8 100644
|
||||
--- a/libs/core/runtime_local/src/pool_timer.cpp
|
||||
+++ b/libs/core/runtime_local/src/pool_timer.cpp
|
||||
@@ -146,7 +146,7 @@ namespace hpx::util::detail {
|
||||
}
|
||||
|
||||
HPX_ASSERT(timer_ != nullptr);
|
||||
- timer_->expires_from_now(time_duration.value());
|
||||
+ timer_->expires_at(time_duration.from_now());
|
||||
timer_->async_wait(hpx::bind_front( //-V779
|
||||
&pool_timer::timer_handler, this->shared_from_this()));
|
||||
|
||||
diff --git a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
|
||||
index 77da0c839b16..16160af101b7 100644
|
||||
--- a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
|
||||
+++ b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
|
||||
@@ -142,8 +142,14 @@ namespace hpx::parcelset {
|
||||
|
||||
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(
|
||||
+ io_service_pool_.get_io_service(static_cast<int>(i)),
|
||||
+ hpx::bind(&parcelport::io_service_work, this));
|
||||
+#else
|
||||
io_service_pool_.get_io_service(int(i)).post(
|
||||
hpx::bind(&parcelport::io_service_work, this));
|
||||
+#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
diff --git a/libs/full/parcelport_lci/src/parcelport_lci.cpp b/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
index d9083191376a..40cf14faba5c 100644
|
||||
--- a/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
+++ b/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
@@ -98,8 +98,13 @@ namespace hpx::parcelset::policies::lci {
|
||||
sender_p->run();
|
||||
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(io_service_pool_.get_io_service(static_cast<int>(i)),
|
||||
+ hpx::bind(&parcelport::io_service_work, this));
|
||||
+#else
|
||||
io_service_pool_.get_io_service(int(i)).post(
|
||||
hpx::bind(&parcelport::io_service_work, this));
|
||||
+#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -167,10 +172,10 @@ namespace hpx::parcelset::policies::lci {
|
||||
static_cast<int>(hpx::get_local_worker_thread_num());
|
||||
HPX_ASSERT(prg_thread_id < config_t::progress_thread_num);
|
||||
for (int i = prg_thread_id * config_t::ndevices /
|
||||
- config_t::progress_thread_num;
|
||||
- i < (prg_thread_id + 1) * config_t::ndevices /
|
||||
- config_t::progress_thread_num;
|
||||
- ++i)
|
||||
+ config_t::progress_thread_num;
|
||||
+ i < (prg_thread_id + 1) * config_t::ndevices /
|
||||
+ config_t::progress_thread_num;
|
||||
+ ++i)
|
||||
{
|
||||
devices_to_progress.push_back(&devices[i]);
|
||||
}
|
||||
diff --git a/libs/full/parcelport_mpi/src/parcelport_mpi.cpp b/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
|
||||
index e30025899e76..c319c54df7ef 100644
|
||||
--- a/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
|
||||
+++ b/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
|
||||
@@ -181,8 +181,14 @@ namespace hpx::parcelset {
|
||||
|
||||
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
|
||||
{
|
||||
+#if ASIO_VERSION >= 103400
|
||||
+ asio::post(
|
||||
+ io_service_pool_.get_io_service(static_cast<int>(i)),
|
||||
+ hpx::bind(&parcelport::io_service_work, this));
|
||||
+#else
|
||||
io_service_pool_.get_io_service(static_cast<int>(i))
|
||||
.post(hpx::bind(&parcelport::io_service_work, this));
|
||||
+#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
From 85805f56579fe6fa6c5905daa0d228eba26c40c3 Mon Sep 17 00:00:00 2001
|
||||
From: Hartmut Kaiser <hartmut.kaiser@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 10:31:26 -0500
|
||||
Subject: [PATCH 2/2] Changing some CIs to use Asio 1.34.2
|
||||
|
||||
Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
|
||||
---
|
||||
.github/workflows/linux_debug.yml | 1 +
|
||||
.github/workflows/macos_debug.yml | 1 +
|
||||
.github/workflows/windows_debug_vs2022.yml | 1 +
|
||||
libs/full/parcelport_lci/src/parcelport_lci.cpp | 2 ++
|
||||
4 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/.github/workflows/linux_debug.yml b/.github/workflows/linux_debug.yml
|
||||
index 551e6d7215b2..0048b533326f 100644
|
||||
--- a/.github/workflows/linux_debug.yml
|
||||
+++ b/.github/workflows/linux_debug.yml
|
||||
@@ -26,6 +26,7 @@ jobs:
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DHPX_WITH_MALLOC=system \
|
||||
-DHPX_WITH_FETCH_ASIO=ON \
|
||||
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
|
||||
-DHPX_WITH_EXAMPLES=ON \
|
||||
-DHPX_WITH_TESTS=ON \
|
||||
-DHPX_WITH_TESTS_MAX_THREADS_PER_LOCALITY=2 \
|
||||
diff --git a/.github/workflows/macos_debug.yml b/.github/workflows/macos_debug.yml
|
||||
index 7d0936730d54..5406fc0be0f1 100644
|
||||
--- a/.github/workflows/macos_debug.yml
|
||||
+++ b/.github/workflows/macos_debug.yml
|
||||
@@ -29,6 +29,7 @@ jobs:
|
||||
-GNinja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DHPX_WITH_FETCH_ASIO=ON \
|
||||
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
|
||||
-DHPX_WITH_EXAMPLES=ON \
|
||||
-DHPX_WITH_TESTS=ON \
|
||||
-DHPX_WITH_TESTS_MAX_THREADS_PER_LOCALITY=3 \
|
||||
diff --git a/.github/workflows/windows_debug_vs2022.yml b/.github/workflows/windows_debug_vs2022.yml
|
||||
index cebecd992140..f91765418163 100644
|
||||
--- a/.github/workflows/windows_debug_vs2022.yml
|
||||
+++ b/.github/workflows/windows_debug_vs2022.yml
|
||||
@@ -31,6 +31,7 @@ jobs:
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCMAKE_TOOLCHAIN_FILE='C:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake' \
|
||||
-DHPX_WITH_FETCH_ASIO=ON \
|
||||
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
|
||||
-DHPX_WITH_EXAMPLES=ON \
|
||||
-DHPX_WITH_TESTS=ON \
|
||||
-DHPX_WITH_TESTS_EXAMPLES=ON \
|
||||
diff --git a/libs/full/parcelport_lci/src/parcelport_lci.cpp b/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
index 40cf14faba5c..b9d1bcf293e9 100644
|
||||
--- a/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
+++ b/libs/full/parcelport_lci/src/parcelport_lci.cpp
|
||||
@@ -171,6 +171,7 @@ namespace hpx::parcelset::policies::lci {
|
||||
int prg_thread_id =
|
||||
static_cast<int>(hpx::get_local_worker_thread_num());
|
||||
HPX_ASSERT(prg_thread_id < config_t::progress_thread_num);
|
||||
+ // clang-format off
|
||||
for (int i = prg_thread_id * config_t::ndevices /
|
||||
config_t::progress_thread_num;
|
||||
i < (prg_thread_id + 1) * config_t::ndevices /
|
||||
@@ -179,6 +180,7 @@ namespace hpx::parcelset::policies::lci {
|
||||
{
|
||||
devices_to_progress.push_back(&devices[i]);
|
||||
}
|
||||
+ // clang-format on
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
boost,
|
||||
check,
|
||||
openssl,
|
||||
@@ -25,7 +25,8 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
asio
|
||||
# depends on io_service
|
||||
asio_1_32_0
|
||||
boost.dev
|
||||
check
|
||||
openssl
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "msolve";
|
||||
version = "0.9.2";
|
||||
version = "0.9.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "algebraic-solving";
|
||||
repo = "msolve";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-/KV4zmato86DKDOUe3D/Ru/cFQaKOPyx6cQ8wZS4bgA=";
|
||||
hash = "sha256-N/ePJGbF3pGU+IiyztkKujpfFRLy7FSIkpUltv6iJXY=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "noto-fonts${suffix}";
|
||||
version = "2025.11.01";
|
||||
version = "2025.12.01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "notofonts";
|
||||
repo = "notofonts.github.io";
|
||||
rev = "noto-monthly-release-${version}";
|
||||
hash = "sha256-T7F8SUCbEEuJfgUYWk+/lDGuXn/df2DaGc+3hCuYhS0=";
|
||||
hash = "sha256-XYamBsakiqfpwghuQan81ZNJTvcfua9hIbVXU4HWOqY=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
fetchpatch,
|
||||
cmake,
|
||||
boost,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
openssl,
|
||||
zlib,
|
||||
}:
|
||||
@@ -34,7 +34,8 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [
|
||||
boost
|
||||
asio
|
||||
# Depends on io_service
|
||||
asio_1_32_0
|
||||
openssl
|
||||
zlib
|
||||
];
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
glib,
|
||||
jsoncpp,
|
||||
libcap_ng,
|
||||
@@ -81,7 +81,8 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
asio
|
||||
# Depends on io_service
|
||||
asio_1_32_0
|
||||
glib
|
||||
jsoncpp
|
||||
libcap_ng
|
||||
@@ -101,7 +102,7 @@ stdenv.mkDerivation rec {
|
||||
(lib.mesonOption "bash-completion" "enabled")
|
||||
(lib.mesonOption "test_programs" "disabled")
|
||||
(lib.mesonOption "unit_tests" "disabled")
|
||||
(lib.mesonOption "asio_path" "${asio}")
|
||||
(lib.mesonOption "asio_path" "${asio_1_32_0}")
|
||||
(lib.mesonOption "dbus_policy_dir" "${placeholder "out"}/share/dbus-1/system.d")
|
||||
(lib.mesonOption "dbus_system_service_dir" "${placeholder "out"}/share/dbus-1/system-services")
|
||||
(lib.mesonOption "systemd_system_unit_dir" "${placeholder "out"}/lib/systemd/system")
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
git,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
catch2,
|
||||
spdlog,
|
||||
udev,
|
||||
@@ -47,7 +47,8 @@ stdenv.mkDerivation rec {
|
||||
git
|
||||
];
|
||||
buildInputs = [
|
||||
asio
|
||||
# Depends on io_service
|
||||
asio_1_32_0
|
||||
catch2
|
||||
spdlog
|
||||
];
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "prometheus-qbittorrent-exporter";
|
||||
version = "1.12.1";
|
||||
version = "1.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "martabal";
|
||||
repo = "qbittorrent-exporter";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-9J4nGG52M7SSeXigLBJK/dqXRvSpPqOGRJ8BQx7+1eU=";
|
||||
hash = "sha256-ivHTGj2+6c23KW5aT5a8NFzUxV13u0y9UnHttZYTkuA=";
|
||||
};
|
||||
sourceRoot = "${finalAttrs.src.name}/src";
|
||||
|
||||
vendorHash = "sha256-jJmhRnjioeTq9Uol0lYLChPi4O1D9JnGqN7q1XK36yE=";
|
||||
vendorHash = "sha256-FHKt2QpvianVVbAJUcaou/+Ok69a8NbkM7ymVgxUi0I=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "prometheus";
|
||||
version = "3.7.2";
|
||||
version = "3.8.0";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -45,14 +45,14 @@ buildGoModule (finalAttrs: {
|
||||
owner = "prometheus";
|
||||
repo = "prometheus";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-bitRDX1oymFfzvQVYL31BON6UBfQYnqjZefQKc+yXx0=";
|
||||
hash = "sha256-hRuZxwPPDLxQvy5MPKEyfmanNabcSjLRO+XbNKugPtk=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-V+qLxjqGOaT1veEwtklqcS7iO31ufvDHBA9DbZLzDiE=";
|
||||
vendorHash = "sha256-5wDaG01vcTtGzrS/S33U5XWXoSWM+N9z3dzXZlILxD8=";
|
||||
|
||||
webUiStatic = fetchurl {
|
||||
url = "https://github.com/prometheus/prometheus/releases/download/v${finalAttrs.version}/prometheus-web-ui-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-NFv6zNpMacd0RgVYBlWKbXKNCEh7WijpREg0bNojisM=";
|
||||
hash = "sha256-oOEvNZFlYtTNBsn+B2pAWXi0A2oJ6IAo7V8bOLtjfCM=";
|
||||
};
|
||||
|
||||
excludedPackages = [
|
||||
@@ -107,7 +107,6 @@ buildGoModule (finalAttrs: {
|
||||
in
|
||||
[
|
||||
"-s"
|
||||
"-w"
|
||||
"-X ${t}.Version=${finalAttrs.version}"
|
||||
"-X ${t}.Revision=unknown"
|
||||
"-X ${t}.Branch=unknown"
|
||||
@@ -129,19 +128,24 @@ buildGoModule (finalAttrs: {
|
||||
# Test mock data uses 64 bit data without an explicit (u)int64
|
||||
doCheck = !(stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.parsed.cpu.bits < 64);
|
||||
|
||||
checkFlags = lib.optionals stdenv.hostPlatform.isAarch64 [
|
||||
checkFlags = [
|
||||
# Skip for issue during TSDB compaction
|
||||
"-skip=TestBlockRanges"
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isAarch64 [
|
||||
"-skip=TestEvaluations/testdata/aggregators.test"
|
||||
];
|
||||
|
||||
passthru.tests = { inherit (nixosTests) prometheus; };
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Service monitoring system and time series database";
|
||||
homepage = "https://prometheus.io";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [
|
||||
fpletz
|
||||
Frostman
|
||||
];
|
||||
mainProgram = "prometheus";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
}:
|
||||
let
|
||||
pname = "remnote";
|
||||
version = "1.22.23";
|
||||
version = "1.22.28";
|
||||
src = fetchurl {
|
||||
url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
|
||||
hash = "sha256-8AliWnmYemaF6R7MGiU+H0ZwVw5hZRIbMHuGo4p+NQg=";
|
||||
hash = "sha256-suYd2IK/lwPd0sEoRmKPydgyExX5aRNyBLikubBmMpI=";
|
||||
};
|
||||
appimageContents = appimageTools.extractType2 { inherit pname version src; };
|
||||
in
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ripunzip";
|
||||
version = "2.0.3";
|
||||
version = "2.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "ripunzip";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-giNaTALPZYOfQ+kPyQufbRTdTwwKLK7iDvg50YNfzDg=";
|
||||
hash = "sha256-oujRw/4yKNNqLJLTN4wxaOllSUGMu077YgWZkD0DJ4M=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-uz07yZBkmBTEGB64rhBYQ2iL0KbrY4UAM96utv8HCSE=";
|
||||
cargoHash = "sha256-J6FtaWjeJhbSB1WoAbh6c4DeShPmqGgmh2NTNRS6CUk=";
|
||||
|
||||
buildInputs = [ openssl ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finaAttrs: {
|
||||
pname = "scom";
|
||||
version = "1.2.2";
|
||||
version = "1.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "crash-systems";
|
||||
repo = "scom";
|
||||
tag = finaAttrs.version;
|
||||
hash = "sha256-erHer9oeCFwenaEDk/RWYzGkrqigpwB+RPa+UVxFrOI=";
|
||||
hash = "sha256-eFnCXMrks5V6o+0+vMjR8zaCdkc+hC3trSS+pOh4Y6U=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
asio,
|
||||
rapidjson,
|
||||
websocketpp,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "sioclient";
|
||||
version = "3.1.0-unstable-2023-11-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "socketio";
|
||||
repo = "socket.io-client-cpp";
|
||||
rev = "0dc2f7afea17a0e5bfb5e9b1e6d6f26ab1455cef";
|
||||
hash = "sha256-iUKWDv/CS2e68cCSM0QUobkfz2A8ZjJ7S0zw7rowQJ0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
asio
|
||||
rapidjson
|
||||
websocketpp
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "C++11 implementation of Socket.IO client";
|
||||
homepage = "https://github.com/socketio/socket.io-client-cpp";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ wegank ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
let
|
||||
pname = "surrealdb-migrations";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
inherit pname version;
|
||||
@@ -18,10 +18,10 @@ rustPlatform.buildRustPackage {
|
||||
owner = "Odonno";
|
||||
repo = "surrealdb-migrations";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-BCShTHZSeahJclOHcWh7etl0FajhFs4/RVVszFZdOV8=";
|
||||
hash = "sha256-eeIXbpfXZ91XcQ+4T76BGZU0Ron5dAf2pUAvLj9nEok=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-fV7yHRiqcM4l9i3tnoMawEQxd9fqbcZYZkeTITy310g=";
|
||||
cargoHash = "sha256-XA4OXHKSdVKoq3aKpKnYXzWjXHolDqPNLeIDS3iARYI=";
|
||||
|
||||
# Error: No such file or directory (os error 2)
|
||||
# failures:
|
||||
|
||||
@@ -18,10 +18,14 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with cmake4
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zaphoyd/websocketpp/commit/deb0a334471362608958ce59a6b0bcd3e5b73c24.patch?full_index=1";
|
||||
hash = "sha256-bFCHwtRuCFz9vr4trmmBLziPSlEx6SNjsTcBv9zV8go=";
|
||||
})
|
||||
# Fix build with boost187/newer asio
|
||||
# https://github.com/zaphoyd/websocketpp/pull/1164
|
||||
./websocketpp-0.8.2-boost-1.87-compat.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "xdg-desktop-portal-cosmic";
|
||||
version = "1.0.0-beta.8";
|
||||
version = "1.0.0-beta.9";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{ callPackage, ... }@args:
|
||||
|
||||
callPackage ./generic.nix (
|
||||
args
|
||||
// {
|
||||
version = "1.10.8";
|
||||
sha256 = "0jgdl4fxw0hwy768rl3lhdc0czz7ak7czf3dg10j21pdpfpfvpi6";
|
||||
}
|
||||
)
|
||||
@@ -1,9 +0,0 @@
|
||||
{ callPackage, ... }@args:
|
||||
|
||||
callPackage ./generic.nix (
|
||||
args
|
||||
// {
|
||||
version = "1.24.0";
|
||||
sha256 = "sha256-iXaBLCShGGAPb88HGiBgZjCmmv5MCr7jsN6lKOaCxYU=";
|
||||
}
|
||||
)
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
boost,
|
||||
openssl,
|
||||
version,
|
||||
sha256,
|
||||
...
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "asio";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/asio/asio-${version}.tar.bz2";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ boost ];
|
||||
|
||||
buildInputs = [ openssl ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://asio.sourceforge.net/";
|
||||
description = "Cross-platform C++ library for network and low-level I/O programming";
|
||||
license = licenses.boost;
|
||||
broken = stdenv.hostPlatform.isDarwin && lib.versionOlder version "1.16.1";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
{
|
||||
lib,
|
||||
asioSupport ? true,
|
||||
asio,
|
||||
asio_1_32_0,
|
||||
boost,
|
||||
boost186,
|
||||
log4cxxSupport ? false,
|
||||
log4cxx,
|
||||
snappySupport ? false,
|
||||
@@ -23,30 +24,6 @@
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
let
|
||||
/*
|
||||
Check if null or false
|
||||
Example:
|
||||
let result = enableFeature null
|
||||
=> "OFF"
|
||||
let result = enableFeature false
|
||||
=> "OFF"
|
||||
let result = enableFeature «derivation»
|
||||
=> "ON"
|
||||
*/
|
||||
enableCmakeFeature = p: if (p == null || p == false) then "OFF" else "ON";
|
||||
|
||||
defaultOptionals = [
|
||||
protobuf
|
||||
]
|
||||
++ lib.optional snappySupport snappy.dev
|
||||
++ lib.optional zlibSupport zlib
|
||||
++ lib.optional zstdSupport zstd
|
||||
++ lib.optional log4cxxSupport log4cxx
|
||||
++ lib.optional asioSupport asio
|
||||
++ lib.optional (!asioSupport) boost;
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libpulsar";
|
||||
version = "3.7.2";
|
||||
@@ -61,21 +38,38 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
protobuf # protoc
|
||||
]
|
||||
++ defaultOptionals
|
||||
++ lib.optional gtestSupport gtest.dev;
|
||||
|
||||
buildInputs = [
|
||||
jsoncpp
|
||||
openssl
|
||||
curl
|
||||
protobuf
|
||||
]
|
||||
++ defaultOptionals;
|
||||
++ lib.optional snappySupport snappy.dev
|
||||
++ lib.optional zlibSupport zlib
|
||||
++ lib.optional zstdSupport zstd
|
||||
++ lib.optional log4cxxSupport log4cxx
|
||||
++ lib.optionals asioSupport [
|
||||
# io_service was removed in 1.33.0
|
||||
asio_1_32_0
|
||||
boost
|
||||
]
|
||||
++ lib.optionals (!asioSupport) [
|
||||
# io_service was removed in 1.87.0
|
||||
boost186
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_TESTS=${enableCmakeFeature gtestSupport}"
|
||||
"-DUSE_LOG4CXX=${enableCmakeFeature log4cxxSupport}"
|
||||
"-DUSE_ASIO=${enableCmakeFeature asioSupport}"
|
||||
(lib.cmakeBool "BUILD_TESTS" gtestSupport)
|
||||
(lib.cmakeBool "USE_LOG4CXX" log4cxxSupport)
|
||||
# We enable USE_ASIO here so at least we can
|
||||
# have newer boost minus boost::asio
|
||||
(lib.cmakeBool "USE_ASIO" asioSupport)
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
@@ -21,6 +21,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
&&
|
||||
# https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/48
|
||||
stdenv.hostPlatform.linker == "bfd"
|
||||
&&
|
||||
# Even with bfd linker, the above issue occurs on platforms with stricter linker requirements
|
||||
# https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/48#note_1453201
|
||||
!(stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isBigEndian)
|
||||
&& lib.meta.availableOn stdenv.hostPlatform wayland;
|
||||
|
||||
src = fetchurl {
|
||||
|
||||
@@ -23,26 +23,15 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "colbert-ai";
|
||||
version = "0.2.21";
|
||||
version = "0.2.22";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit version;
|
||||
pname = "colbert_ai";
|
||||
hash = "sha256-qNb9tOInLysI7Tf45QlgchYNhBXR5AWFdRiYt35iW6s=";
|
||||
hash = "sha256-AK/P711xXw06cGvpDStbdKK7fEAgc4B861UVwAJqiIY=";
|
||||
};
|
||||
|
||||
# ImportError: cannot import name 'AdamW' from 'transformers'
|
||||
# https://github.com/stanford-futuredata/ColBERT/pull/390
|
||||
postPatch = ''
|
||||
substituteInPlace colbert/training/training.py \
|
||||
--replace-fail \
|
||||
"from transformers import AdamW, get_linear_schedule_with_warmup" \
|
||||
"from transformers import get_linear_schedule_with_warmup; from torch.optim import AdamW"
|
||||
'';
|
||||
|
||||
pythonRemoveDeps = [ "git-python" ];
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyghmi";
|
||||
version = "1.6.7";
|
||||
version = "1.6.8";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-UtFTvWt/VX5bKZgAsnM+fzcG5ovh8TR6EKIn58Ohu7g=";
|
||||
hash = "sha256-qkiPYbjL5iNeyxb1hC9hBoz8wB+uTMhp9NaWwlqijnk=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "sagemaker-mlflow";
|
||||
version = ".0.2.0";
|
||||
version = "0.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -23,13 +23,13 @@ let
|
||||
versionHash =
|
||||
if lib.versionAtLeast ocaml.version "5.4" then
|
||||
{
|
||||
version = "6.0.0-54";
|
||||
hash = "sha256-689OK37ObYhopfcaJ3AmkScGC4lCu3ZOTEM6N+Npvzs=";
|
||||
version = "6.0.1-54";
|
||||
hash = "sha256-bV5TD8qlLt7wQdm9W0TyhDDBFFo/PdJXGgiscnsBFmc=";
|
||||
}
|
||||
else if lib.versionAtLeast ocaml.version "5.3" then
|
||||
{
|
||||
version = "6.0.0-53";
|
||||
hash = "sha256-jPTQvV095BPB4EDepwGJTZ9sB/60VTO4YJTj2wI39jc=";
|
||||
version = "6.0.1-53";
|
||||
hash = "sha256-e1/RIsFsKeAbc2wgQf1Hhta+nyAXIuEP7uatXrU9cLs=";
|
||||
}
|
||||
else if lib.versionAtLeast ocaml.version "5.2" then
|
||||
{
|
||||
|
||||
@@ -309,6 +309,7 @@ mapAliases {
|
||||
artichoke = throw "artichoke has been removed due to being archived upstream."; # Added 2025-11-04
|
||||
artim-dark = aritim-dark; # Added 2025-07-27
|
||||
aseprite-unfree = throw "'aseprite-unfree' has been renamed to/replaced by 'aseprite'"; # Converted to throw 2025-10-27
|
||||
asio_1_10 = throw "'asio_1_10' has been removed as it is outdated and unused. Use 'asio' instead"; # Added 2025-12-03
|
||||
asitop = throw "'asitop' has been renamed to/replaced by 'macpm'"; # Converted to throw 2025-10-27
|
||||
asterisk_18 = throw "asterisk_18: Asterisk 18 is end of life and has been removed"; # Added 2025-10-19
|
||||
atlassian-cli = appfire-cli; # Added 2025-09-29
|
||||
@@ -1435,6 +1436,7 @@ mapAliases {
|
||||
sierra-breeze-enhanced = throw "'sierra-breeze-enhanced' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20
|
||||
signal-desktop-source = throw "'signal-desktop-source' has been renamed to/replaced by 'signal-desktop'"; # Converted to throw 2025-10-27
|
||||
simplesamlphp = throw "'simplesamlphp' was removed because it was unmaintained in nixpkgs"; # Added 2025-10-17
|
||||
sioclient = throw "'sioclient' has been removed as it is no longer used by freedv, and doesn't build with newer asio"; # Added 2025-12-03
|
||||
siproxd = throw "'siproxd' has been removed as it was unmaintained and incompatible with newer libosip versions"; # Added 2025-05-18
|
||||
sipwitch = throw "'sipwitch' has been removed because it has been marked as broken since at least November 2024."; # Added 2025-10-01
|
||||
sisco.lv2 = throw "'sisco.lv2' has been removed as it was unmaintained and broken"; # Added 2025-08-26
|
||||
|
||||
@@ -6850,8 +6850,8 @@ with pkgs;
|
||||
|
||||
argparse-manpage = with python3Packages; toPythonApplication argparse-manpage;
|
||||
|
||||
asio_1_10 = callPackage ../development/libraries/asio/1.10.nix { };
|
||||
asio = callPackage ../development/libraries/asio { };
|
||||
asio_1_32_0 = callPackage ../by-name/as/asio/package.nix { asioVersion = "1.32.0"; };
|
||||
asio_1_36_0 = callPackage ../by-name/as/asio/package.nix { asioVersion = "1.36.0"; };
|
||||
|
||||
aspell = callPackage ../development/libraries/aspell { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user