Merge master into staging-next
This commit is contained in:
commit
429249f120
|
@ -547,6 +547,19 @@
|
||||||
will now correctly remove those domains during rebuild/renew.
|
will now correctly remove those domains during rebuild/renew.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
MariaDB is now offered in several versions, not just the
|
||||||
|
newest one. So if you have a need for running MariaDB 10.4 for
|
||||||
|
example, you can now just set
|
||||||
|
<literal>services.mysql.package = pkgs.mariadb_104;</literal>.
|
||||||
|
In general, it is recommended to run the newest version, to
|
||||||
|
get the newest features, while sticking with an LTS version
|
||||||
|
will most likely provide a more stable experience. Sometimes
|
||||||
|
software is also incompatible with the newest version of
|
||||||
|
MariaDB.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The option
|
The option
|
||||||
|
|
|
@ -190,6 +190,11 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
- Removing domains from `security.acme.certs._name_.extraDomainNames`
|
- Removing domains from `security.acme.certs._name_.extraDomainNames`
|
||||||
will now correctly remove those domains during rebuild/renew.
|
will now correctly remove those domains during rebuild/renew.
|
||||||
|
|
||||||
|
- MariaDB is now offered in several versions, not just the newest one.
|
||||||
|
So if you have a need for running MariaDB 10.4 for example, you can now just set `services.mysql.package = pkgs.mariadb_104;`.
|
||||||
|
In general, it is recommended to run the newest version, to get the newest features, while sticking with an LTS version will most likely provide a more stable experience.
|
||||||
|
Sometimes software is also incompatible with the newest version of MariaDB.
|
||||||
|
|
||||||
- The option
|
- The option
|
||||||
[programs.ssh.enableAskPassword](#opt-programs.ssh.enableAskPassword) was
|
[programs.ssh.enableAskPassword](#opt-programs.ssh.enableAskPassword) was
|
||||||
added, decoupling the setting of `SSH_ASKPASS` from
|
added, decoupling the setting of `SSH_ASKPASS` from
|
||||||
|
|
|
@ -38,7 +38,7 @@ let
|
||||||
ssl_cert = <${cfg.sslServerCert}
|
ssl_cert = <${cfg.sslServerCert}
|
||||||
ssl_key = <${cfg.sslServerKey}
|
ssl_key = <${cfg.sslServerKey}
|
||||||
${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)}
|
${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)}
|
||||||
ssl_dh = <${config.security.dhparams.params.dovecot2.path}
|
${optionalString cfg.enableDHE ''ssl_dh = <${config.security.dhparams.params.dovecot2.path}''}
|
||||||
disable_plaintext_auth = yes
|
disable_plaintext_auth = yes
|
||||||
''
|
''
|
||||||
)
|
)
|
||||||
|
@ -169,25 +169,13 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
options.services.dovecot2 = {
|
options.services.dovecot2 = {
|
||||||
enable = mkEnableOption "Dovecot 2.x POP3/IMAP server";
|
enable = mkEnableOption "the dovecot 2.x POP3/IMAP server";
|
||||||
|
|
||||||
enablePop3 = mkOption {
|
enablePop3 = mkEnableOption "starting the POP3 listener (when Dovecot is enabled).";
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Start the POP3 listener (when Dovecot is enabled).";
|
|
||||||
};
|
|
||||||
|
|
||||||
enableImap = mkOption {
|
enableImap = mkEnableOption "starting the IMAP listener (when Dovecot is enabled)." // { default = true; };
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = "Start the IMAP listener (when Dovecot is enabled).";
|
|
||||||
};
|
|
||||||
|
|
||||||
enableLmtp = mkOption {
|
enableLmtp = mkEnableOption "starting the LMTP listener (when Dovecot is enabled).";
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Start the LMTP listener (when Dovecot is enabled).";
|
|
||||||
};
|
|
||||||
|
|
||||||
protocols = mkOption {
|
protocols = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
|
@ -279,13 +267,9 @@ in
|
||||||
description = "Default group to store mail for virtual users.";
|
description = "Default group to store mail for virtual users.";
|
||||||
};
|
};
|
||||||
|
|
||||||
createMailUser = mkOption {
|
createMailUser = mkEnableOption ''automatically creating the user
|
||||||
type = types.bool;
|
given in <option>services.dovecot.user</option> and the group
|
||||||
default = true;
|
given in <option>services.dovecot.group</option>.'' // { default = true; };
|
||||||
description = ''Whether to automatically create the user
|
|
||||||
given in <option>services.dovecot.user</option> and the group
|
|
||||||
given in <option>services.dovecot.group</option>.'';
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = mkOption {
|
modules = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
|
@ -316,11 +300,9 @@ in
|
||||||
description = "Path to the server's private key.";
|
description = "Path to the server's private key.";
|
||||||
};
|
};
|
||||||
|
|
||||||
enablePAM = mkOption {
|
enablePAM = mkEnableOption "creating a own Dovecot PAM service and configure PAM user logins." // { default = true; };
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
enableDHE = mkEnableOption "enable ssl_dh and generation of primes for the key exchange." // { default = true; };
|
||||||
description = "Whether to create a own Dovecot PAM service and configure PAM user logins.";
|
|
||||||
};
|
|
||||||
|
|
||||||
sieveScripts = mkOption {
|
sieveScripts = mkOption {
|
||||||
type = types.attrsOf types.path;
|
type = types.attrsOf types.path;
|
||||||
|
@ -328,11 +310,7 @@ in
|
||||||
description = "Sieve scripts to be executed. Key is a sequence, e.g. 'before2', 'after' etc.";
|
description = "Sieve scripts to be executed. Key is a sequence, e.g. 'before2', 'after' etc.";
|
||||||
};
|
};
|
||||||
|
|
||||||
showPAMFailure = mkOption {
|
showPAMFailure = mkEnableOption "showing the PAM failure message on authentication error (useful for OTPW).";
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Show the PAM failure message on authentication error (useful for OTPW).";
|
|
||||||
};
|
|
||||||
|
|
||||||
mailboxes = mkOption {
|
mailboxes = mkOption {
|
||||||
type = with types; coercedTo
|
type = with types; coercedTo
|
||||||
|
@ -348,12 +326,7 @@ in
|
||||||
description = "Configure mailboxes and auto create or subscribe them.";
|
description = "Configure mailboxes and auto create or subscribe them.";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableQuota = mkOption {
|
enableQuota = mkEnableOption "the dovecot quota service.";
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether to enable the dovecot quota service.";
|
|
||||||
};
|
|
||||||
|
|
||||||
quotaPort = mkOption {
|
quotaPort = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
@ -376,7 +349,7 @@ in
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
security.pam.services.dovecot2 = mkIf cfg.enablePAM {};
|
security.pam.services.dovecot2 = mkIf cfg.enablePAM {};
|
||||||
|
|
||||||
security.dhparams = mkIf (cfg.sslServerCert != null) {
|
security.dhparams = mkIf (cfg.sslServerCert != null && cfg.enableDHE) {
|
||||||
enable = true;
|
enable = true;
|
||||||
params.dovecot2 = {};
|
params.dovecot2 = {};
|
||||||
};
|
};
|
||||||
|
|
|
@ -268,8 +268,7 @@ in
|
||||||
mailcatcher = handleTest ./mailcatcher.nix {};
|
mailcatcher = handleTest ./mailcatcher.nix {};
|
||||||
mailhog = handleTest ./mailhog.nix {};
|
mailhog = handleTest ./mailhog.nix {};
|
||||||
man = handleTest ./man.nix {};
|
man = handleTest ./man.nix {};
|
||||||
mariadb-galera-mariabackup = handleTest ./mysql/mariadb-galera-mariabackup.nix {};
|
mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
|
||||||
mariadb-galera-rsync = handleTest ./mysql/mariadb-galera-rsync.nix {};
|
|
||||||
matomo = handleTest ./matomo.nix {};
|
matomo = handleTest ./matomo.nix {};
|
||||||
matrix-appservice-irc = handleTest ./matrix-appservice-irc.nix {};
|
matrix-appservice-irc = handleTest ./matrix-appservice-irc.nix {};
|
||||||
matrix-conduit = handleTest ./matrix-conduit.nix {};
|
matrix-conduit = handleTest ./matrix-conduit.nix {};
|
||||||
|
|
10
nixos/tests/mysql/common.nix
Normal file
10
nixos/tests/mysql/common.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ lib, pkgs }: {
|
||||||
|
mariadbPackages = lib.filterAttrs (n: _: lib.hasPrefix "mariadb" n) (pkgs.callPackage ../../../pkgs/servers/sql/mariadb {
|
||||||
|
inherit (pkgs.darwin) cctools;
|
||||||
|
inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices;
|
||||||
|
});
|
||||||
|
mysqlPackage = {
|
||||||
|
inherit (pkgs) mysql57 mysql80;
|
||||||
|
};
|
||||||
|
mkTestName = pkg: "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor pkg.version)}";
|
||||||
|
}
|
|
@ -1,233 +0,0 @@
|
||||||
import ./../make-test-python.nix ({ pkgs, ...} :
|
|
||||||
|
|
||||||
let
|
|
||||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
|
||||||
mysqlenv-mariabackup = pkgs.buildEnv { name = "mysql-path-env-mariabackup"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ gzip iproute2 netcat procps pv socat ]; };
|
|
||||||
|
|
||||||
# Common user configuration
|
|
||||||
users = { ... }:
|
|
||||||
{
|
|
||||||
users.users.testuser = {
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "testusers";
|
|
||||||
};
|
|
||||||
users.groups.testusers = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
name = "mariadb-galera-mariabackup";
|
|
||||||
meta = with pkgs.lib.maintainers; {
|
|
||||||
maintainers = [ izorkin ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# The test creates a Galera cluster with 3 nodes and is checking if mariabackup-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
|
||||||
# and checking the table's presence on the other node.
|
|
||||||
|
|
||||||
nodes = {
|
|
||||||
galera_01 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.1.1"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.1.1 galera_01
|
|
||||||
192.168.1.2 galera_02
|
|
||||||
192.168.1.3 galera_03
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
ensureDatabases = [ "testdb" ];
|
|
||||||
ensureUsers = [{
|
|
||||||
name = "testuser";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
initialScript = pkgs.writeText "mariadb-init.sql" ''
|
|
||||||
GRANT ALL PRIVILEGES ON *.* TO 'check_repl'@'localhost' IDENTIFIED BY 'check_pass' WITH GRANT OPTION;
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
'';
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://";
|
|
||||||
wsrep_cluster_name = "galera";
|
|
||||||
wsrep_node_address = "192.168.1.1";
|
|
||||||
wsrep_node_name = "galera_01";
|
|
||||||
wsrep_sst_method = "mariabackup";
|
|
||||||
wsrep_sst_auth = "check_repl:check_pass";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
galera_02 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.1.2"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.1.1 galera_01
|
|
||||||
192.168.1.2 galera_02
|
|
||||||
192.168.1.3 galera_03
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
|
||||||
wsrep_cluster_name = "galera";
|
|
||||||
wsrep_node_address = "192.168.1.2";
|
|
||||||
wsrep_node_name = "galera_02";
|
|
||||||
wsrep_sst_method = "mariabackup";
|
|
||||||
wsrep_sst_auth = "check_repl:check_pass";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
galera_03 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.1.3"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.1.1 galera_01
|
|
||||||
192.168.1.2 galera_02
|
|
||||||
192.168.1.3 galera_03
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
|
||||||
wsrep_cluster_name = "galera";
|
|
||||||
wsrep_node_address = "192.168.1.3";
|
|
||||||
wsrep_node_name = "galera_03";
|
|
||||||
wsrep_sst_method = "mariabackup";
|
|
||||||
wsrep_sst_auth = "check_repl:check_pass";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript = ''
|
|
||||||
galera_01.start()
|
|
||||||
galera_01.wait_for_unit("mysql")
|
|
||||||
galera_01.wait_for_open_port(3306)
|
|
||||||
galera_01.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_01.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (37);'"
|
|
||||||
)
|
|
||||||
galera_02.start()
|
|
||||||
galera_02.wait_for_unit("mysql")
|
|
||||||
galera_02.wait_for_open_port(3306)
|
|
||||||
galera_03.start()
|
|
||||||
galera_03.wait_for_unit("mysql")
|
|
||||||
galera_03.wait_for_open_port(3306)
|
|
||||||
galera_02.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
|
||||||
)
|
|
||||||
galera_02.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_02.succeed("systemctl stop mysql")
|
|
||||||
galera_01.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (38);'"
|
|
||||||
)
|
|
||||||
galera_03.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_01.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (39);'"
|
|
||||||
)
|
|
||||||
galera_02.succeed("systemctl start mysql")
|
|
||||||
galera_02.wait_for_open_port(3306)
|
|
||||||
galera_02.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
|
||||||
)
|
|
||||||
galera_03.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
|
||||||
)
|
|
||||||
galera_01.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 39"
|
|
||||||
)
|
|
||||||
galera_02.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 38"
|
|
||||||
)
|
|
||||||
galera_03.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
|
||||||
)
|
|
||||||
galera_01.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
|
||||||
galera_02.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
|
||||||
galera_03.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
|
||||||
'';
|
|
||||||
})
|
|
|
@ -1,226 +0,0 @@
|
||||||
import ./../make-test-python.nix ({ pkgs, ...} :
|
|
||||||
|
|
||||||
let
|
|
||||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
|
||||||
mysqlenv-rsync = pkgs.buildEnv { name = "mysql-path-env-rsync"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ lsof procps rsync stunnel ]; };
|
|
||||||
|
|
||||||
# Common user configuration
|
|
||||||
users = { ... }:
|
|
||||||
{
|
|
||||||
users.users.testuser = {
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "testusers";
|
|
||||||
};
|
|
||||||
users.groups.testusers = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
name = "mariadb-galera-rsync";
|
|
||||||
meta = with pkgs.lib.maintainers; {
|
|
||||||
maintainers = [ izorkin ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# The test creates a Galera cluster with 3 nodes and is checking if rsync-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
|
||||||
# and checking the table's presence on the other node.
|
|
||||||
|
|
||||||
nodes = {
|
|
||||||
galera_04 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.2.1"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.2.1 galera_04
|
|
||||||
192.168.2.2 galera_05
|
|
||||||
192.168.2.3 galera_06
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
ensureDatabases = [ "testdb" ];
|
|
||||||
ensureUsers = [{
|
|
||||||
name = "testuser";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://";
|
|
||||||
wsrep_cluster_name = "galera-rsync";
|
|
||||||
wsrep_node_address = "192.168.2.1";
|
|
||||||
wsrep_node_name = "galera_04";
|
|
||||||
wsrep_sst_method = "rsync";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
galera_05 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.2.2"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.2.1 galera_04
|
|
||||||
192.168.2.2 galera_05
|
|
||||||
192.168.2.3 galera_06
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
|
||||||
wsrep_cluster_name = "galera-rsync";
|
|
||||||
wsrep_node_address = "192.168.2.2";
|
|
||||||
wsrep_node_name = "galera_05";
|
|
||||||
wsrep_sst_method = "rsync";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
galera_06 =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
networking = {
|
|
||||||
interfaces.eth1 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{ address = "192.168.2.3"; prefixLength = 24; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
extraHosts = ''
|
|
||||||
192.168.2.1 galera_04
|
|
||||||
192.168.2.2 galera_05
|
|
||||||
192.168.2.3 galera_06
|
|
||||||
'';
|
|
||||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
|
||||||
firewall.allowedUDPPorts = [ 4567 ];
|
|
||||||
};
|
|
||||||
systemd.services.mysql = with pkgs; {
|
|
||||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
|
||||||
};
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
settings = {
|
|
||||||
mysqld = {
|
|
||||||
bind_address = "0.0.0.0";
|
|
||||||
};
|
|
||||||
galera = {
|
|
||||||
wsrep_on = "ON";
|
|
||||||
wsrep_debug = "NONE";
|
|
||||||
wsrep_retry_autocommit = "3";
|
|
||||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
|
||||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
|
||||||
wsrep_cluster_name = "galera-rsync";
|
|
||||||
wsrep_node_address = "192.168.2.3";
|
|
||||||
wsrep_node_name = "galera_06";
|
|
||||||
wsrep_sst_method = "rsync";
|
|
||||||
binlog_format = "ROW";
|
|
||||||
enforce_storage_engine = "InnoDB";
|
|
||||||
innodb_autoinc_lock_mode = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
testScript = ''
|
|
||||||
galera_04.start()
|
|
||||||
galera_04.wait_for_unit("mysql")
|
|
||||||
galera_04.wait_for_open_port(3306)
|
|
||||||
galera_04.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_04.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (41);'"
|
|
||||||
)
|
|
||||||
galera_05.start()
|
|
||||||
galera_05.wait_for_unit("mysql")
|
|
||||||
galera_05.wait_for_open_port(3306)
|
|
||||||
galera_06.start()
|
|
||||||
galera_06.wait_for_unit("mysql")
|
|
||||||
galera_06.wait_for_open_port(3306)
|
|
||||||
galera_05.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
|
||||||
)
|
|
||||||
galera_05.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_05.succeed("systemctl stop mysql")
|
|
||||||
galera_04.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (42);'"
|
|
||||||
)
|
|
||||||
galera_06.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
|
||||||
)
|
|
||||||
galera_04.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (43);'"
|
|
||||||
)
|
|
||||||
galera_05.succeed("systemctl start mysql")
|
|
||||||
galera_05.wait_for_open_port(3306)
|
|
||||||
galera_05.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
|
||||||
)
|
|
||||||
galera_06.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
|
||||||
)
|
|
||||||
galera_04.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 43"
|
|
||||||
)
|
|
||||||
galera_05.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 42"
|
|
||||||
)
|
|
||||||
galera_06.succeed(
|
|
||||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
|
||||||
)
|
|
||||||
galera_04.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
|
||||||
galera_05.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
|
||||||
galera_06.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
|
||||||
'';
|
|
||||||
})
|
|
250
nixos/tests/mysql/mariadb-galera.nix
Normal file
250
nixos/tests/mysql/mariadb-galera.nix
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
{
|
||||||
|
system ? builtins.currentSystem,
|
||||||
|
config ? {},
|
||||||
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
|
lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||||
|
|
||||||
|
makeTest = import ./../make-test-python.nix;
|
||||||
|
|
||||||
|
# Common user configuration
|
||||||
|
makeGaleraTest = {
|
||||||
|
mariadbPackage,
|
||||||
|
name ? mkTestName mariadbPackage,
|
||||||
|
galeraPackage ? pkgs.mariadb-galera
|
||||||
|
}: makeTest {
|
||||||
|
name = "${name}-galera-mariabackup";
|
||||||
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [ izorkin ajs124 das_j ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# The test creates a Galera cluster with 3 nodes and is checking if mariabackup-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||||
|
# and checking the table's presence on the other node.
|
||||||
|
nodes = let
|
||||||
|
mkGaleraNode = {
|
||||||
|
id,
|
||||||
|
method
|
||||||
|
}: let
|
||||||
|
address = "192.168.1.${toString id}";
|
||||||
|
isFirstClusterNode = id == 1 || id == 4;
|
||||||
|
in {
|
||||||
|
users = {
|
||||||
|
users.testuser = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "testusers";
|
||||||
|
};
|
||||||
|
groups.testusers = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
interfaces.eth1 = {
|
||||||
|
ipv4.addresses = [
|
||||||
|
{ inherit address; prefixLength = 24; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraHosts = lib.concatMapStringsSep "\n" (i: "192.168.1.${toString i} galera_0${toString i}") (lib.range 1 6);
|
||||||
|
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||||
|
firewall.allowedUDPPorts = [ 4567 ];
|
||||||
|
};
|
||||||
|
systemd.services.mysql = with pkgs; {
|
||||||
|
path = with pkgs; [
|
||||||
|
bash
|
||||||
|
gawk
|
||||||
|
gnutar
|
||||||
|
gzip
|
||||||
|
inetutils
|
||||||
|
iproute2
|
||||||
|
netcat
|
||||||
|
procps
|
||||||
|
pv
|
||||||
|
rsync
|
||||||
|
socat
|
||||||
|
stunnel
|
||||||
|
which
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.mysql = {
|
||||||
|
enable = true;
|
||||||
|
package = mariadbPackage;
|
||||||
|
ensureDatabases = lib.mkIf isFirstClusterNode [ "testdb" ];
|
||||||
|
ensureUsers = lib.mkIf isFirstClusterNode [{
|
||||||
|
name = "testuser";
|
||||||
|
ensurePermissions = {
|
||||||
|
"testdb.*" = "ALL PRIVILEGES";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
initialScript = lib.mkIf isFirstClusterNode (pkgs.writeText "mariadb-init.sql" ''
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'check_repl'@'localhost' IDENTIFIED BY 'check_pass' WITH GRANT OPTION;
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
'');
|
||||||
|
settings = {
|
||||||
|
mysqld = {
|
||||||
|
bind_address = "0.0.0.0";
|
||||||
|
};
|
||||||
|
galera = {
|
||||||
|
wsrep_on = "ON";
|
||||||
|
wsrep_debug = "NONE";
|
||||||
|
wsrep_retry_autocommit = "3";
|
||||||
|
wsrep_provider = "${galeraPackage}/lib/galera/libgalera_smm.so";
|
||||||
|
wsrep_cluster_address = "gcomm://"
|
||||||
|
+ lib.optionalString (id == 2 || id == 3) "galera_01,galera_02,galera_03"
|
||||||
|
+ lib.optionalString (id == 5 || id == 6) "galera_04,galera_05,galera_06";
|
||||||
|
wsrep_cluster_name = "galera";
|
||||||
|
wsrep_node_address = address;
|
||||||
|
wsrep_node_name = "galera_0${toString id}";
|
||||||
|
wsrep_sst_method = method;
|
||||||
|
wsrep_sst_auth = "check_repl:check_pass";
|
||||||
|
binlog_format = "ROW";
|
||||||
|
enforce_storage_engine = "InnoDB";
|
||||||
|
innodb_autoinc_lock_mode = "2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
galera_01 = mkGaleraNode {
|
||||||
|
id = 1;
|
||||||
|
method = "mariabackup";
|
||||||
|
};
|
||||||
|
|
||||||
|
galera_02 = mkGaleraNode {
|
||||||
|
id = 2;
|
||||||
|
method = "mariabackup";
|
||||||
|
};
|
||||||
|
|
||||||
|
galera_03 = mkGaleraNode {
|
||||||
|
id = 3;
|
||||||
|
method = "mariabackup";
|
||||||
|
};
|
||||||
|
|
||||||
|
galera_04 = mkGaleraNode {
|
||||||
|
id = 4;
|
||||||
|
method = "rsync";
|
||||||
|
};
|
||||||
|
|
||||||
|
galera_05 = mkGaleraNode {
|
||||||
|
id = 5;
|
||||||
|
method = "rsync";
|
||||||
|
};
|
||||||
|
|
||||||
|
galera_06 = mkGaleraNode {
|
||||||
|
id = 6;
|
||||||
|
method = "rsync";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
galera_01.start()
|
||||||
|
galera_01.wait_for_unit("mysql")
|
||||||
|
galera_01.wait_for_open_port(3306)
|
||||||
|
galera_01.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_01.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (37);'"
|
||||||
|
)
|
||||||
|
galera_02.start()
|
||||||
|
galera_02.wait_for_unit("mysql")
|
||||||
|
galera_02.wait_for_open_port(3306)
|
||||||
|
galera_03.start()
|
||||||
|
galera_03.wait_for_unit("mysql")
|
||||||
|
galera_03.wait_for_open_port(3306)
|
||||||
|
galera_02.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||||
|
)
|
||||||
|
galera_02.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_02.succeed("systemctl stop mysql")
|
||||||
|
galera_01.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (38);'"
|
||||||
|
)
|
||||||
|
galera_03.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_01.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (39);'"
|
||||||
|
)
|
||||||
|
galera_02.succeed("systemctl start mysql")
|
||||||
|
galera_02.wait_for_open_port(3306)
|
||||||
|
galera_02.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||||
|
)
|
||||||
|
galera_03.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||||
|
)
|
||||||
|
galera_01.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 39"
|
||||||
|
)
|
||||||
|
galera_02.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 38"
|
||||||
|
)
|
||||||
|
galera_03.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||||
|
)
|
||||||
|
galera_01.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||||
|
galera_02.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||||
|
galera_03.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||||
|
galera_01.crash()
|
||||||
|
galera_02.crash()
|
||||||
|
galera_03.crash()
|
||||||
|
|
||||||
|
galera_04.start()
|
||||||
|
galera_04.wait_for_unit("mysql")
|
||||||
|
galera_04.wait_for_open_port(3306)
|
||||||
|
galera_04.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_04.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (41);'"
|
||||||
|
)
|
||||||
|
galera_05.start()
|
||||||
|
galera_05.wait_for_unit("mysql")
|
||||||
|
galera_05.wait_for_open_port(3306)
|
||||||
|
galera_06.start()
|
||||||
|
galera_06.wait_for_unit("mysql")
|
||||||
|
galera_06.wait_for_open_port(3306)
|
||||||
|
galera_05.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||||
|
)
|
||||||
|
galera_05.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_05.succeed("systemctl stop mysql")
|
||||||
|
galera_04.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (42);'"
|
||||||
|
)
|
||||||
|
galera_06.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||||
|
)
|
||||||
|
galera_04.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (43);'"
|
||||||
|
)
|
||||||
|
galera_05.succeed("systemctl start mysql")
|
||||||
|
galera_05.wait_for_open_port(3306)
|
||||||
|
galera_05.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||||
|
)
|
||||||
|
galera_06.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||||
|
)
|
||||||
|
galera_04.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 43"
|
||||||
|
)
|
||||||
|
galera_05.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 42"
|
||||||
|
)
|
||||||
|
galera_06.succeed(
|
||||||
|
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||||
|
)
|
||||||
|
galera_04.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||||
|
galera_05.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||||
|
galera_06.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.mapAttrs (_: mariadbPackage: makeGaleraTest { inherit mariadbPackage; }) mariadbPackages
|
|
@ -1,38 +1,53 @@
|
||||||
import ./../make-test-python.nix ({ pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "automysqlbackup";
|
system ? builtins.currentSystem,
|
||||||
meta.maintainers = [ lib.maintainers.aanderse ];
|
config ? {},
|
||||||
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
|
lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
|
||||||
machine =
|
let
|
||||||
{ pkgs, ... }:
|
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||||
{
|
|
||||||
services.mysql.enable = true;
|
makeTest = import ./../make-test-python.nix;
|
||||||
services.mysql.package = pkgs.mariadb;
|
|
||||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
makeAutobackupTest = {
|
||||||
|
package,
|
||||||
|
name ? mkTestName package,
|
||||||
|
}: makeTest {
|
||||||
|
name = "${name}-automysqlbackup";
|
||||||
|
meta.maintainers = [ lib.maintainers.aanderse ];
|
||||||
|
|
||||||
|
machine = {
|
||||||
|
services.mysql = {
|
||||||
|
inherit package;
|
||||||
|
enable = true;
|
||||||
|
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||||
|
};
|
||||||
|
|
||||||
services.automysqlbackup.enable = true;
|
services.automysqlbackup.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
start_all()
|
start_all()
|
||||||
|
|
||||||
# Need to have mysql started so that it can be populated with data.
|
# Need to have mysql started so that it can be populated with data.
|
||||||
machine.wait_for_unit("mysql.service")
|
machine.wait_for_unit("mysql.service")
|
||||||
|
|
||||||
with subtest("Wait for testdb to be fully populated (5 rows)."):
|
with subtest("Wait for testdb to be fully populated (5 rows)."):
|
||||||
machine.wait_until_succeeds(
|
machine.wait_until_succeeds(
|
||||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
)
|
)
|
||||||
|
|
||||||
with subtest("Do a backup and wait for it to start"):
|
with subtest("Do a backup and wait for it to start"):
|
||||||
machine.start_job("automysqlbackup.service")
|
machine.start_job("automysqlbackup.service")
|
||||||
machine.wait_for_job("automysqlbackup.service")
|
machine.wait_for_job("automysqlbackup.service")
|
||||||
|
|
||||||
with subtest("wait for backup file and check that data appears in backup"):
|
with subtest("wait for backup file and check that data appears in backup"):
|
||||||
machine.wait_for_file("/var/backup/mysql/daily/testdb")
|
machine.wait_for_file("/var/backup/mysql/daily/testdb")
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
|
"${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
})
|
};
|
||||||
|
in
|
||||||
|
lib.mapAttrs (_: package: makeAutobackupTest { inherit package; }) mariadbPackages
|
||||||
|
|
|
@ -1,56 +1,72 @@
|
||||||
# Test whether mysqlBackup option works
|
{
|
||||||
import ./../make-test-python.nix ({ pkgs, ... } : {
|
system ? builtins.currentSystem,
|
||||||
name = "mysql-backup";
|
config ? {},
|
||||||
meta = with pkgs.lib.maintainers; {
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
maintainers = [ rvl ];
|
lib ? pkgs.lib
|
||||||
};
|
}:
|
||||||
|
|
||||||
nodes = {
|
let
|
||||||
master = { pkgs, ... }: {
|
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.mysqlBackup = {
|
makeTest = import ./../make-test-python.nix;
|
||||||
enable = true;
|
|
||||||
databases = [ "doesnotexist" "testdb" ];
|
makeBackupTest = {
|
||||||
|
package,
|
||||||
|
name ? mkTestName package
|
||||||
|
}: makeTest {
|
||||||
|
name = "${name}-backup";
|
||||||
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [ rvl ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
master = { pkgs, ... }: {
|
||||||
|
services.mysql = {
|
||||||
|
inherit package;
|
||||||
|
enable = true;
|
||||||
|
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mysqlBackup = {
|
||||||
|
enable = true;
|
||||||
|
databases = [ "doesnotexist" "testdb" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
# Delete backup file that may be left over from a previous test run.
|
||||||
|
# This is not needed on Hydra but useful for repeated local test runs.
|
||||||
|
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
||||||
|
|
||||||
|
# Need to have mysql started so that it can be populated with data.
|
||||||
|
master.wait_for_unit("mysql.service")
|
||||||
|
|
||||||
|
# Wait for testdb to be fully populated (5 rows).
|
||||||
|
master.wait_until_succeeds(
|
||||||
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Do a backup and wait for it to start
|
||||||
|
master.start_job("mysql-backup.service")
|
||||||
|
master.wait_for_unit("mysql-backup.service")
|
||||||
|
|
||||||
|
# wait for backup to fail, because of database 'doesnotexist'
|
||||||
|
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
||||||
|
|
||||||
|
# wait for backup file and check that data appears in backup
|
||||||
|
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||||
|
master.succeed(
|
||||||
|
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check that a failed backup is logged
|
||||||
|
master.succeed(
|
||||||
|
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
||||||
|
)
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
in
|
||||||
testScript = ''
|
lib.mapAttrs (_: package: makeBackupTest { inherit package; }) mariadbPackages
|
||||||
start_all()
|
|
||||||
|
|
||||||
# Delete backup file that may be left over from a previous test run.
|
|
||||||
# This is not needed on Hydra but useful for repeated local test runs.
|
|
||||||
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
|
||||||
|
|
||||||
# Need to have mysql started so that it can be populated with data.
|
|
||||||
master.wait_for_unit("mysql.service")
|
|
||||||
|
|
||||||
# Wait for testdb to be fully populated (5 rows).
|
|
||||||
master.wait_until_succeeds(
|
|
||||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Do a backup and wait for it to start
|
|
||||||
master.start_job("mysql-backup.service")
|
|
||||||
master.wait_for_unit("mysql-backup.service")
|
|
||||||
|
|
||||||
# wait for backup to fail, because of database 'doesnotexist'
|
|
||||||
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
|
||||||
|
|
||||||
# wait for backup file and check that data appears in backup
|
|
||||||
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
|
||||||
master.succeed(
|
|
||||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Check that a failed backup is logged
|
|
||||||
master.succeed(
|
|
||||||
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
|
|
|
@ -1,91 +1,101 @@
|
||||||
import ./../make-test-python.nix ({ pkgs, ...} :
|
{
|
||||||
|
system ? builtins.currentSystem,
|
||||||
|
config ? {},
|
||||||
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
|
lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||||
|
|
||||||
replicateUser = "replicate";
|
replicateUser = "replicate";
|
||||||
replicatePassword = "secret";
|
replicatePassword = "secret";
|
||||||
in
|
|
||||||
|
|
||||||
{
|
makeTest = import ./../make-test-python.nix;
|
||||||
name = "mysql-replication";
|
|
||||||
meta = with pkgs.lib.maintainers; {
|
|
||||||
maintainers = [ eelco shlevy ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nodes = {
|
makeReplicationTest = {
|
||||||
master =
|
package,
|
||||||
{ pkgs, ... }:
|
name ? mkTestName package,
|
||||||
|
}: makeTest {
|
||||||
|
name = "${name}-replication";
|
||||||
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [ ajs124 das_j ];
|
||||||
|
};
|
||||||
|
|
||||||
{
|
nodes = {
|
||||||
services.mysql.enable = true;
|
primary = {
|
||||||
services.mysql.package = pkgs.mariadb;
|
services.mysql = {
|
||||||
services.mysql.replication.role = "master";
|
inherit package;
|
||||||
services.mysql.replication.slaveHost = "%";
|
enable = true;
|
||||||
services.mysql.replication.masterUser = replicateUser;
|
replication.role = "master";
|
||||||
services.mysql.replication.masterPassword = replicatePassword;
|
replication.slaveHost = "%";
|
||||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
replication.masterUser = replicateUser;
|
||||||
|
replication.masterPassword = replicatePassword;
|
||||||
|
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||||
|
};
|
||||||
networking.firewall.allowedTCPPorts = [ 3306 ];
|
networking.firewall.allowedTCPPorts = [ 3306 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
slave1 =
|
secondary1 = { nodes, ... }: {
|
||||||
{ pkgs, nodes, ... }:
|
services.mysql = {
|
||||||
|
inherit package;
|
||||||
{
|
enable = true;
|
||||||
services.mysql.enable = true;
|
replication.role = "slave";
|
||||||
services.mysql.package = pkgs.mariadb;
|
replication.serverId = 2;
|
||||||
services.mysql.replication.role = "slave";
|
replication.masterHost = nodes.primary.config.networking.hostName;
|
||||||
services.mysql.replication.serverId = 2;
|
replication.masterUser = replicateUser;
|
||||||
services.mysql.replication.masterHost = nodes.master.config.networking.hostName;
|
replication.masterPassword = replicatePassword;
|
||||||
services.mysql.replication.masterUser = replicateUser;
|
};
|
||||||
services.mysql.replication.masterPassword = replicatePassword;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
slave2 =
|
secondary2 = { nodes, ... }: {
|
||||||
{ pkgs, nodes, ... }:
|
services.mysql = {
|
||||||
|
inherit package;
|
||||||
{
|
enable = true;
|
||||||
services.mysql.enable = true;
|
replication.role = "slave";
|
||||||
services.mysql.package = pkgs.mariadb;
|
replication.serverId = 3;
|
||||||
services.mysql.replication.role = "slave";
|
replication.masterHost = nodes.primary.config.networking.hostName;
|
||||||
services.mysql.replication.serverId = 3;
|
replication.masterUser = replicateUser;
|
||||||
services.mysql.replication.masterHost = nodes.master.config.networking.hostName;
|
replication.masterPassword = replicatePassword;
|
||||||
services.mysql.replication.masterUser = replicateUser;
|
};
|
||||||
services.mysql.replication.masterPassword = replicatePassword;
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
primary.start()
|
||||||
|
primary.wait_for_unit("mysql")
|
||||||
|
primary.wait_for_open_port(3306)
|
||||||
|
# Wait for testdb to be fully populated (5 rows).
|
||||||
|
primary.wait_until_succeeds(
|
||||||
|
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
|
secondary1.start()
|
||||||
|
secondary2.start()
|
||||||
|
secondary1.wait_for_unit("mysql")
|
||||||
|
secondary1.wait_for_open_port(3306)
|
||||||
|
secondary2.wait_for_unit("mysql")
|
||||||
|
secondary2.wait_for_open_port(3306)
|
||||||
|
|
||||||
|
# wait for replications to finish
|
||||||
|
secondary1.wait_until_succeeds(
|
||||||
|
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
secondary2.wait_until_succeeds(
|
||||||
|
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
|
secondary2.succeed("systemctl stop mysql")
|
||||||
|
primary.succeed(
|
||||||
|
"echo 'insert into testdb.tests values (123, 456);' | sudo -u mysql mysql -u mysql -N"
|
||||||
|
)
|
||||||
|
secondary2.succeed("systemctl start mysql")
|
||||||
|
secondary2.wait_for_unit("mysql")
|
||||||
|
secondary2.wait_for_open_port(3306)
|
||||||
|
secondary2.wait_until_succeeds(
|
||||||
|
"echo 'select * from testdb.tests where Id = 123;' | sudo -u mysql mysql -u mysql -N | grep 456"
|
||||||
|
)
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
in
|
||||||
testScript = ''
|
lib.mapAttrs (_: package: makeReplicationTest { inherit package; }) mariadbPackages
|
||||||
master.start()
|
|
||||||
master.wait_for_unit("mysql")
|
|
||||||
master.wait_for_open_port(3306)
|
|
||||||
# Wait for testdb to be fully populated (5 rows).
|
|
||||||
master.wait_until_succeeds(
|
|
||||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
|
||||||
)
|
|
||||||
|
|
||||||
slave1.start()
|
|
||||||
slave2.start()
|
|
||||||
slave1.wait_for_unit("mysql")
|
|
||||||
slave1.wait_for_open_port(3306)
|
|
||||||
slave2.wait_for_unit("mysql")
|
|
||||||
slave2.wait_for_open_port(3306)
|
|
||||||
|
|
||||||
# wait for replications to finish
|
|
||||||
slave1.wait_until_succeeds(
|
|
||||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
|
||||||
)
|
|
||||||
slave2.wait_until_succeeds(
|
|
||||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
|
||||||
)
|
|
||||||
|
|
||||||
slave2.succeed("systemctl stop mysql")
|
|
||||||
master.succeed(
|
|
||||||
"echo 'insert into testdb.tests values (123, 456);' | sudo -u mysql mysql -u mysql -N"
|
|
||||||
)
|
|
||||||
slave2.succeed("systemctl start mysql")
|
|
||||||
slave2.wait_for_unit("mysql")
|
|
||||||
slave2.wait_for_open_port(3306)
|
|
||||||
slave2.wait_until_succeeds(
|
|
||||||
"echo 'select * from testdb.tests where Id = 123;' | sudo -u mysql mysql -u mysql -N | grep 456"
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
|
|
|
@ -1,221 +1,149 @@
|
||||||
import ./../make-test-python.nix ({ pkgs, ...}:
|
{
|
||||||
|
system ? builtins.currentSystem,
|
||||||
|
config ? {},
|
||||||
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
|
lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages mysqlPackages;
|
||||||
|
|
||||||
|
makeTest = import ./../make-test-python.nix;
|
||||||
# Setup common users
|
# Setup common users
|
||||||
users = { ... }:
|
makeMySQLTest = {
|
||||||
{
|
package,
|
||||||
users.groups.testusers = { };
|
name ? mkTestName package,
|
||||||
|
useSocketAuth ? true,
|
||||||
users.users.testuser = {
|
hasMroonga ? true,
|
||||||
isSystemUser = true;
|
hasRocksDB ? true
|
||||||
group = "testusers";
|
}: makeTest {
|
||||||
|
inherit name;
|
||||||
|
meta = with lib.maintainers; {
|
||||||
|
maintainers = [ ajs124 das_j ];
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.testuser2 = {
|
nodes = {
|
||||||
isSystemUser = true;
|
${name} =
|
||||||
group = "testusers";
|
{ pkgs, ... }: {
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
users = {
|
||||||
|
groups.testusers = { };
|
||||||
|
|
||||||
{
|
users.testuser = {
|
||||||
name = "mysql";
|
isSystemUser = true;
|
||||||
meta = with pkgs.lib.maintainers; {
|
group = "testusers";
|
||||||
maintainers = [ eelco shlevy ];
|
};
|
||||||
};
|
|
||||||
|
|
||||||
nodes = {
|
users.testuser2 = {
|
||||||
mysql57 =
|
isSystemUser = true;
|
||||||
{ pkgs, ... }:
|
group = "testusers";
|
||||||
|
};
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
|
|
||||||
services.mysql.enable = true;
|
|
||||||
services.mysql.initialDatabases = [
|
|
||||||
{ name = "testdb3"; schema = ./testdb.sql; }
|
|
||||||
];
|
|
||||||
# note that using pkgs.writeText here is generally not a good idea,
|
|
||||||
# as it will store the password in world-readable /nix/store ;)
|
|
||||||
services.mysql.initialScript = pkgs.writeText "mysql-init.sql" ''
|
|
||||||
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
|
||||||
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
|
||||||
'';
|
|
||||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
|
||||||
services.mysql.ensureUsers = [{
|
|
||||||
name = "testuser";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
};
|
||||||
} {
|
|
||||||
name = "testuser2";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb2.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
services.mysql.package = pkgs.mysql57;
|
|
||||||
};
|
|
||||||
|
|
||||||
mysql80 =
|
services.mysql = {
|
||||||
{ pkgs, ... }:
|
enable = true;
|
||||||
|
initialDatabases = [
|
||||||
|
{ name = "testdb3"; schema = ./testdb.sql; }
|
||||||
|
];
|
||||||
|
# note that using pkgs.writeText here is generally not a good idea,
|
||||||
|
# as it will store the password in world-readable /nix/store ;)
|
||||||
|
initialScript = pkgs.writeText "mysql-init.sql" (if (!useSocketAuth) then ''
|
||||||
|
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
||||||
|
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
||||||
|
'' else ''
|
||||||
|
ALTER USER root@localhost IDENTIFIED WITH unix_socket;
|
||||||
|
DELETE FROM mysql.user WHERE password = ''' AND plugin = ''';
|
||||||
|
DELETE FROM mysql.user WHERE user = ''';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
'');
|
||||||
|
|
||||||
{
|
ensureDatabases = [ "testdb" "testdb2" ];
|
||||||
imports = [ users ];
|
ensureUsers = [{
|
||||||
|
name = "testuser";
|
||||||
services.mysql.enable = true;
|
ensurePermissions = {
|
||||||
services.mysql.initialDatabases = [
|
"testdb.*" = "ALL PRIVILEGES";
|
||||||
{ name = "testdb3"; schema = ./testdb.sql; }
|
};
|
||||||
];
|
} {
|
||||||
# note that using pkgs.writeText here is generally not a good idea,
|
name = "testuser2";
|
||||||
# as it will store the password in world-readable /nix/store ;)
|
ensurePermissions = {
|
||||||
services.mysql.initialScript = pkgs.writeText "mysql-init.sql" ''
|
"testdb2.*" = "ALL PRIVILEGES";
|
||||||
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
};
|
||||||
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
}];
|
||||||
'';
|
package = package;
|
||||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
settings = {
|
||||||
services.mysql.ensureUsers = [{
|
mysqld = {
|
||||||
name = "testuser";
|
plugin-load-add = lib.optional hasMroonga "ha_mroonga.so"
|
||||||
ensurePermissions = {
|
++ lib.optional hasRocksDB "ha_rocksdb.so";
|
||||||
"testdb.*" = "ALL PRIVILEGES";
|
};
|
||||||
};
|
};
|
||||||
} {
|
|
||||||
name = "testuser2";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb2.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
services.mysql.package = pkgs.mysql80;
|
|
||||||
};
|
|
||||||
|
|
||||||
mariadb =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ users ];
|
|
||||||
|
|
||||||
services.mysql.enable = true;
|
|
||||||
services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
|
|
||||||
ALTER USER root@localhost IDENTIFIED WITH unix_socket;
|
|
||||||
DELETE FROM mysql.user WHERE password = ''' AND plugin = ''';
|
|
||||||
DELETE FROM mysql.user WHERE user = ''';
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
'';
|
|
||||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
|
||||||
services.mysql.ensureUsers = [{
|
|
||||||
name = "testuser";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
} {
|
|
||||||
name = "testuser2";
|
|
||||||
ensurePermissions = {
|
|
||||||
"testdb2.*" = "ALL PRIVILEGES";
|
|
||||||
};
|
|
||||||
}];
|
|
||||||
services.mysql.settings = {
|
|
||||||
mysqld = {
|
|
||||||
plugin-load-add = [ "ha_mroonga.so" "ha_rocksdb.so" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.mysql.package = pkgs.mariadb;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
mariadb = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
machine = ${name}
|
||||||
|
machine.wait_for_unit("mysql")
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
||||||
|
machine.fail(
|
||||||
|
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser2"
|
||||||
|
)
|
||||||
|
# Ensure testuser2 is not able to authenticate as mysql testuser
|
||||||
|
machine.fail(
|
||||||
|
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
||||||
|
)
|
||||||
|
|
||||||
|
${lib.optionalString hasMroonga ''
|
||||||
|
# Check if Mroonga plugin works
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; create table mroongadb (test_id INT, PRIMARY KEY (test_id)) ENGINE = Mroonga;' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; insert into mroongadb values (25);' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; select test_id from mroongadb;' | sudo -u testuser mysql -u testuser -N | grep 25"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; drop table mroongadb;' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
''}
|
||||||
|
|
||||||
|
${lib.optionalString hasRocksDB ''
|
||||||
|
# Check if RocksDB plugin works
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; create table rocksdb (test_id INT, PRIMARY KEY (test_id)) ENGINE = RocksDB;' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; insert into rocksdb values (28);' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; select test_id from rocksdb;' | sudo -u testuser mysql -u testuser -N | grep 28"
|
||||||
|
)
|
||||||
|
machine.succeed(
|
||||||
|
"echo 'use testdb; drop table rocksdb;' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
''}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
in
|
||||||
testScript = ''
|
lib.mapAttrs (_: package: makeMySQLTest {
|
||||||
start_all()
|
inherit package;
|
||||||
|
hasRocksDB = false; hasMroonga = false;
|
||||||
mysql57.wait_for_unit("mysql")
|
}) mysqlPackages
|
||||||
mysql57.succeed(
|
// (lib.mapAttrs (_: package: makeMySQLTest {
|
||||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
inherit package;
|
||||||
)
|
}) mariadbPackages)
|
||||||
mysql57.succeed(
|
|
||||||
"echo 'use testdb; insert into tests values (41);' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
|
||||||
mysql57.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser2"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
|
||||||
mysql57.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser"
|
|
||||||
)
|
|
||||||
mysql57.succeed(
|
|
||||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 41"
|
|
||||||
)
|
|
||||||
mysql57.succeed(
|
|
||||||
"echo 'use testdb3; select * from tests;' | mysql -u testuser3 --password=secure -N | grep 4"
|
|
||||||
)
|
|
||||||
|
|
||||||
mysql80.wait_for_unit("mysql")
|
|
||||||
mysql80.succeed(
|
|
||||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mysql80.succeed(
|
|
||||||
"echo 'use testdb; insert into tests values (41);' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
|
||||||
mysql80.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser2"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
|
||||||
mysql80.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser"
|
|
||||||
)
|
|
||||||
mysql80.succeed(
|
|
||||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 41"
|
|
||||||
)
|
|
||||||
mysql80.succeed(
|
|
||||||
"echo 'use testdb3; select * from tests;' | mysql -u testuser3 --password=secure -N | grep 4"
|
|
||||||
)
|
|
||||||
|
|
||||||
mariadb.wait_for_unit("mysql")
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
|
||||||
mariadb.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser2"
|
|
||||||
)
|
|
||||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
|
||||||
mariadb.fail(
|
|
||||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Check if Mroonga plugin works
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; create table mroongadb (test_id INT, PRIMARY KEY (test_id)) ENGINE = Mroonga;' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; insert into mroongadb values (25);' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; select test_id from mroongadb;' | sudo -u testuser mysql -u testuser -N | grep 25"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; drop table mroongadb;' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Check if RocksDB plugin works
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; create table rocksdb (test_id INT, PRIMARY KEY (test_id)) ENGINE = RocksDB;' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; insert into rocksdb values (28);' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; select test_id from rocksdb;' | sudo -u testuser mysql -u testuser -N | grep 28"
|
|
||||||
)
|
|
||||||
mariadb.succeed(
|
|
||||||
"echo 'use testdb; drop table rocksdb;' | sudo -u testuser mysql -u testuser"
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
version = "0.9.5";
|
version = "0.9.6";
|
||||||
pname = "qjackctl";
|
pname = "qjackctl";
|
||||||
|
|
||||||
# some dependencies such as killall have to be installed additionally
|
# some dependencies such as killall have to be installed additionally
|
||||||
|
@ -14,7 +14,7 @@ mkDerivation rec {
|
||||||
owner = "rncbc";
|
owner = "rncbc";
|
||||||
repo = "qjackctl";
|
repo = "qjackctl";
|
||||||
rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
|
rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
|
||||||
sha256 = "sha256-20oy3R0gbVXO3Da80cTYXu+BG8OfVNRLtAwHk8nRFJk=";
|
sha256 = "sha256-8oVnUe+/y4p1WeHMEhKMIl0/ax3PT0pN4f1UJaBmZBw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -30,11 +30,11 @@
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "qtractor";
|
pname = "qtractor";
|
||||||
version = "0.9.24";
|
version = "0.9.25";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||||
sha256 = "sha256-YTT7ko5HjKrZ8DKU3L06EI7bZeBtvPl21pqUf6EaeS4=";
|
sha256 = "sha256-cKXHH7rugTJ5D7MDJmr/fX6p209wyGMQvSLbv5T0KXU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
{ lib, stdenv, fetchurl, glibc, libGLU, libGL, freetype, glib, libSM, libICE, libXi, libXv
|
|
||||||
, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11
|
|
||||||
, zlib, fontconfig, dpkg, libproxy, libxml2, gst_all_1, dbus }:
|
|
||||||
|
|
||||||
let
|
|
||||||
arch =
|
|
||||||
if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
|
|
||||||
else if stdenv.hostPlatform.system == "i686-linux" then "i386"
|
|
||||||
else throw "Unsupported system ${stdenv.hostPlatform.system}";
|
|
||||||
sha256 =
|
|
||||||
if arch == "amd64"
|
|
||||||
then "0dwnppn5snl5bwkdrgj4cyylnhngi0g66fn2k41j3dvis83x24k6"
|
|
||||||
else "0gndbxrj3kgc2dhjqwjifr3cl85hgpm695z0wi01wvwzhrjqs0l2";
|
|
||||||
version = "7.1.8.3036";
|
|
||||||
fullPath = lib.makeLibraryPath [
|
|
||||||
glibc
|
|
||||||
glib
|
|
||||||
stdenv.cc.cc
|
|
||||||
libSM
|
|
||||||
libICE
|
|
||||||
libXi
|
|
||||||
libXv
|
|
||||||
libGLU libGL
|
|
||||||
libXrender
|
|
||||||
libXrandr
|
|
||||||
libXfixes
|
|
||||||
libXcursor
|
|
||||||
libXinerama
|
|
||||||
freetype
|
|
||||||
libXext
|
|
||||||
libX11
|
|
||||||
zlib
|
|
||||||
fontconfig
|
|
||||||
libproxy
|
|
||||||
libxml2
|
|
||||||
dbus
|
|
||||||
gst_all_1.gstreamer
|
|
||||||
gst_all_1.gst-plugins-base
|
|
||||||
];
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "googleearth";
|
|
||||||
inherit version;
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-stable/google-earth-stable_${version}-r0_${arch}.deb";
|
|
||||||
inherit sha256;
|
|
||||||
};
|
|
||||||
|
|
||||||
phases = [ "unpackPhase" "installPhase" "checkPhase" ];
|
|
||||||
|
|
||||||
doCheck = true;
|
|
||||||
|
|
||||||
buildInputs = [ dpkg ];
|
|
||||||
|
|
||||||
unpackPhase = ''
|
|
||||||
dpkg-deb -x ${src} ./
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase =''
|
|
||||||
mkdir $out
|
|
||||||
mv usr/* $out/
|
|
||||||
rmdir usr
|
|
||||||
mv * $out/
|
|
||||||
rm $out/bin/google-earth $out/opt/google/earth/free/googleearth
|
|
||||||
|
|
||||||
# patch and link googleearth binary
|
|
||||||
ln -s $out/opt/google/earth/free/googleearth-bin $out/bin/googleearth
|
|
||||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
||||||
--set-rpath "${fullPath}:\$ORIGIN" \
|
|
||||||
$out/opt/google/earth/free/googleearth-bin
|
|
||||||
|
|
||||||
# patch and link gpsbabel binary
|
|
||||||
ln -s $out/opt/google/earth/free/gpsbabel $out/bin/gpsbabel
|
|
||||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
||||||
--set-rpath "${fullPath}:\$ORIGIN" \
|
|
||||||
$out/opt/google/earth/free/gpsbabel
|
|
||||||
|
|
||||||
# patch libraries
|
|
||||||
for a in $out/opt/google/earth/free/*.so* ; do
|
|
||||||
patchelf --set-rpath "${fullPath}:\$ORIGIN" $a
|
|
||||||
done
|
|
||||||
|
|
||||||
# Add desktop config file and icons
|
|
||||||
mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
|
|
||||||
ln -s $out/opt/google/earth/free/google-earth.desktop $out/share/applications/google-earth.desktop
|
|
||||||
sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth|g" $out/opt/google/earth/free/google-earth.desktop
|
|
||||||
for size in 16 22 24 32 48 64 128 256; do
|
|
||||||
ln -s $out/opt/google/earth/free/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth.png
|
|
||||||
done
|
|
||||||
ln -s $out/opt/google/earth/free/product_logo_256.png $out/share/pixmaps/google-earth.png
|
|
||||||
'';
|
|
||||||
|
|
||||||
checkPhase = ''
|
|
||||||
$out/bin/gpsbabel -V > /dev/null
|
|
||||||
'';
|
|
||||||
|
|
||||||
dontPatchELF = true;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "A world sphere viewer";
|
|
||||||
homepage = "http://earth.google.com";
|
|
||||||
license = licenses.unfree;
|
|
||||||
maintainers = with maintainers; [ markus1189 ];
|
|
||||||
platforms = platforms.linux;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +1,30 @@
|
||||||
{ lib, stdenv, fetchurl, python2, rcs, git, makeWrapper }:
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchurl
|
||||||
|
, python
|
||||||
|
, rcs
|
||||||
|
, git
|
||||||
|
, makeWrapper
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "src";
|
pname = "src";
|
||||||
version = "1.28";
|
version = "1.29";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.catb.org/~esr/src/${pname}-${version}.tar.gz";
|
url = "http://www.catb.org/~esr/src/${pname}-${version}.tar.gz";
|
||||||
sha256 = "1fkr5z3mlj13djz9w1sb644wc7r1fywz52qq97byw1yyw0bqyi7f";
|
sha256 = "sha256-Tc+qBhLtC9u23BrqVniAprAV8YhXELvbMn+XxN5BQkE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ python2 rcs git ];
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
python
|
||||||
|
rcs
|
||||||
|
git
|
||||||
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
patchShebangs .
|
patchShebangs .
|
||||||
|
@ -24,6 +38,7 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
homepage = "http://www.catb.org/esr/src/";
|
||||||
description = "Simple single-file revision control";
|
description = "Simple single-file revision control";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
SRC, acronym of Simple Revision Control, is RCS/SCCS reloaded with a
|
SRC, acronym of Simple Revision Control, is RCS/SCCS reloaded with a
|
||||||
|
@ -33,10 +48,9 @@ stdenv.mkDerivation rec {
|
||||||
will seem familiar to Subversion/Git/hg users, and no binary blobs
|
will seem familiar to Subversion/Git/hg users, and no binary blobs
|
||||||
anywhere.
|
anywhere.
|
||||||
'';
|
'';
|
||||||
homepage = "http://www.catb.org/esr/src/";
|
|
||||||
changelog = "https://gitlab.com/esr/src/raw/${version}/NEWS";
|
changelog = "https://gitlab.com/esr/src/raw/${version}/NEWS";
|
||||||
license = licenses.bsd2;
|
license = licenses.bsd2;
|
||||||
platforms = platforms.all;
|
|
||||||
maintainers = with maintainers; [ calvertvl AndersonTorres ];
|
maintainers = with maintainers; [ calvertvl AndersonTorres ];
|
||||||
|
inherit (python.meta) platforms;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, ffmpeg_3, SDL2, chromaprint, libebur128 }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
version = "4.3.0";
|
|
||||||
pname = "libgroove";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "andrewrk";
|
|
||||||
repo = "libgroove";
|
|
||||||
rev = version;
|
|
||||||
sha256 = "1la9d9kig50mc74bxvhx6hzqv0nrci9aqdm4k2j4q0s1nlfgxipd";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [
|
|
||||||
./no-warnings-as-errors.patch
|
|
||||||
(fetchpatch {
|
|
||||||
name = "update-for-ffmpeg-3.0.patch";
|
|
||||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-update-for-ffmpeg-3.0.patch?h=libgroove&id=a9f3bd2a5afd3227733414a5d54c7a2aa0a1249e";
|
|
||||||
sha256 = "0800drk9df1kwbv80f2ffv77xk888249fk0d961rp2a305hvyrk0";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
|
||||||
buildInputs = [ ffmpeg_3 SDL2 chromaprint libebur128 ];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Streaming audio processing library";
|
|
||||||
homepage = "https://github.com/andrewrk/libgroove";
|
|
||||||
license = licenses.mit;
|
|
||||||
platforms = platforms.unix;
|
|
||||||
maintainers = with maintainers; [ andrewrk ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index a1e8541..6bc9c30 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -135,8 +135,8 @@ configure_file (
|
|
||||||
"${PROJECT_BINARY_DIR}/config.h"
|
|
||||||
)
|
|
||||||
|
|
||||||
-set(LIB_CFLAGS "${C99_C_FLAGS} -pedantic -Werror -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L")
|
|
||||||
-set(EXAMPLE_CFLAGS "${C99_C_FLAGS} -pedantic -Werror -Wall -g")
|
|
||||||
+set(LIB_CFLAGS "${C99_C_FLAGS} -pedantic -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L")
|
|
||||||
+set(EXAMPLE_CFLAGS "${C99_C_FLAGS} -pedantic -Wall -g")
|
|
||||||
set(EXAMPLE_INCLUDES "${PROJECT_SOURCE_DIR}")
|
|
||||||
|
|
||||||
add_library(groove SHARED ${LIBGROOVE_SOURCES} ${LIBGROOVE_HEADERS})
|
|
|
@ -11,12 +11,12 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "azure-mgmt-subscription";
|
pname = "azure-mgmt-subscription";
|
||||||
version = "2.0.0";
|
version = "3.0.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
extension = "zip";
|
extension = "zip";
|
||||||
sha256 = "70ec6e3395549c434bfd981f8f76cb8b6863339bad9b31924c1510af661dbf45";
|
sha256 = "157bd9123a5814473a9cd131832ea614c478548722ec01f47b35d778dc307d55";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -10,14 +10,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "dufte";
|
pname = "dufte";
|
||||||
version = "0.2.27";
|
version = "0.2.29";
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "nschloe";
|
owner = "nschloe";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1i68h224hx9clxj3l0rd2yigsi6fqsr3x10vj5hf3j6s69iah7r3";
|
sha256 = "0ccsmpj160xj6w503a948aw8icj55mw9414xnmijmmjvlwhm0p48";
|
||||||
};
|
};
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
|
@ -28,6 +28,13 @@ buildPythonPackage rec {
|
||||||
importlib-metadata
|
importlib-metadata
|
||||||
];
|
];
|
||||||
|
|
||||||
|
preCheck = ''
|
||||||
|
export HOME=$(mktemp -d)
|
||||||
|
mkdir -p $HOME/.config/matplotlib
|
||||||
|
echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
|
||||||
|
ln -s $HOME/.config/matplotlib $HOME/.matplotlib
|
||||||
|
'';
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
];
|
];
|
||||||
|
|
|
@ -15,20 +15,20 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "orjson";
|
pname = "orjson";
|
||||||
version = "3.6.5";
|
version = "3.6.6";
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ijl";
|
owner = "ijl";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1f8gc62w4hncrz8xkfw730cfqnk5433qswz3rba3pvvd7ldj5658";
|
sha256 = "00s8pwvq830h2y77pwx1i2vfvnzisvp41qhzqcp1piyc3pwxfc13";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
sha256 = "0jlhzdnfyk7hnn74rz9zbx51sdjs6rwlzfl1g62h58x28xh6m6gb";
|
sha256 = "0l1zvkr06kwclgxy1qz9fxa1gjrpf5nnx6hb12j4ymyyxpcmn8rz";
|
||||||
};
|
};
|
||||||
|
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
|
@ -8,12 +8,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "pymazda";
|
pname = "pymazda";
|
||||||
version = "0.3.0";
|
version = "0.3.1";
|
||||||
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-D0odz4GkKvjuafhEGlHtRnO8lk4rV9y3imaHl7jXqJw=";
|
sha256 = "eb4b275bcdfbf947e00b27c20dfc8ebcedfc1fb1252449141eccb5c39d782440";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
@ -23,7 +25,10 @@ buildPythonPackage rec {
|
||||||
|
|
||||||
# Project has no tests
|
# Project has no tests
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
pythonImportsCheck = [ "pymazda" ];
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"pymazda"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Python client for interacting with the MyMazda API";
|
description = "Python client for interacting with the MyMazda API";
|
||||||
|
|
|
@ -24,12 +24,12 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "snowflake-connector-python";
|
pname = "snowflake-connector-python";
|
||||||
version = "2.7.2";
|
version = "2.7.3";
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "b2f8f360750eefa98be09ff53c130381646f8dfc8c6e4a705387676210ff8578";
|
sha256 = "026562392d8733bdfaddcd5ec1537a139940df46a3a225849a36c71c1bf3e61c";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "sphinx-inline-tabs";
|
pname = "sphinx-inline-tabs";
|
||||||
version = "2021.08.17.beta10";
|
version = "2022.01.02.beta11";
|
||||||
format = "flit";
|
format = "flit";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pradyunsg";
|
owner = "pradyunsg";
|
||||||
repo = "sphinx-inline-tabs";
|
repo = "sphinx-inline-tabs";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-T3OqK0eXNiBs2zQURCSPLc8aIyf2an32UyDh4qSmxQ4=";
|
sha256 = "sha256-k2nOidUk87EZbFsqQ7zr/4eHk+T7wUOYimjbllfneUM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "stripe";
|
pname = "stripe";
|
||||||
version = "2.64.0";
|
version = "2.65.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "2f4b2175046104e4fcd8a2689a68bb9828a857814126d2ed13772cf2554fb93e";
|
sha256 = "2e55d4d7262085de9cef2228f14581925c35350ba58a332352b1ec9e19a7b7a6";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ requests ];
|
propagatedBuildInputs = [ requests ];
|
||||||
|
|
|
@ -12,11 +12,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "svglib";
|
pname = "svglib";
|
||||||
version = "1.1.0";
|
version = "1.2.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "520ee5290ee2ebeebd20ca0d7d995c08c903b364fcf515826bab43a1288d422e";
|
sha256 = "33f075dc853807e56e92d6dc404104c6ccc7fb5388d96ab943d7b349b1c924c7";
|
||||||
};
|
};
|
||||||
|
|
||||||
disabled = !isPy3k;
|
disabled = !isPy3k;
|
||||||
|
|
|
@ -17,11 +17,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "tern";
|
pname = "tern";
|
||||||
version = "2.9.0";
|
version = "2.9.1";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "9cb509dba91718feecefd302388a89d4782454f6613e8f931ec8de87a6594de0";
|
sha256 = "c7ce55a500061e1160b040e75dc38d0eccc790a2b70fa3b7ad1b4fb715c18fc9";
|
||||||
};
|
};
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "teslajsonpy";
|
pname = "teslajsonpy";
|
||||||
version = "1.5.0";
|
version = "1.6.0";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
disabled = pythonOlder "3.6";
|
disabled = pythonOlder "3.6";
|
||||||
|
@ -24,7 +24,7 @@ buildPythonPackage rec {
|
||||||
owner = "zabuldon";
|
owner = "zabuldon";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-5ZGj3ZS+KGtnlphyUF1xb9e2XuHa4qbOWWtyzZwP1RM=";
|
sha256 = "1jxdfk2ka131spnfkl35lnzvkgwgsbs5xl3hsjj03q1nfjcqvx9l";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "tinydb";
|
pname = "tinydb";
|
||||||
version = "4.5.2";
|
version = "4.6.1";
|
||||||
disabled = pythonOlder "3.5";
|
disabled = pythonOlder "3.5";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ buildPythonPackage rec {
|
||||||
owner = "msiemens";
|
owner = "msiemens";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0gyc9rk1adw4gynwnv4kfas0hxv1cql0sm5b3fsms39088ha894l";
|
sha256 = "17m8g6xzwa0k8qb4k4p9hjcyv58gmxz1lkvr2ckc5csa0ydvv91a";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "types-futures";
|
pname = "types-futures";
|
||||||
version = "3.3.2";
|
version = "3.3.7";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "f47bf00704ef8ff05726a7e86fcf0986de998992fbdd880986121baa8b7184bf";
|
sha256 = "d286db818fb67e3ce5c28acd9058c067329b91865acc443ac3cf91497fa36f05";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "types-protobuf";
|
pname = "types-protobuf";
|
||||||
version = "3.18.4";
|
version = "3.19.5";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "2aed45e5257e9adebce306637179bfa111d42ecdd523e2a13d30cf8b2ee3cc84";
|
sha256 = "9e3d954de5f5693817514b8da3476daa22f035d2b8060217c78c3831a1a49c23";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -5,12 +5,12 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "types-urllib3";
|
pname = "types-urllib3";
|
||||||
version = "1.26.4";
|
version = "1.26.7";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-NcF74J4bzvOx4hAcUXK5fNt4MwkVlzx0H0wZedhAXvk=";
|
hash = "sha256-z9H7vkuppgXtFIKUAIqsinuLdHJlHRzDV9UHrlli49I=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Module doesn't have tests
|
# Module doesn't have tests
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "vertica-python";
|
pname = "vertica-python";
|
||||||
version = "1.0.2";
|
version = "1.0.3";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "ce0abfc5909d06031dc612ec321d7f75df50bcb47a31e14e882a299cea2ea7a3";
|
sha256 = "cfe1794c5ba9fdfbd470a55d82f60c2e08e129828367753bf64199a58a539bc2";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ future python-dateutil six ];
|
propagatedBuildInputs = [ future python-dateutil six ];
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "wrf-python";
|
pname = "wrf-python";
|
||||||
version = "1.3.2";
|
version = "1.3.2.6";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "NCAR";
|
owner = "NCAR";
|
||||||
repo = "wrf-python";
|
repo = "wrf-python";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "1rklkki54z5392cpwwy78bnmsy2ghc187l3j7nv0rzn6jk5bvyi7";
|
sha256 = "046kflai71r7xrmdw6jn0ifn5656wj9gpnwlgxkx430dgk7zbc2y";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "zigpy-znp";
|
pname = "zigpy-znp";
|
||||||
version = "0.6.4";
|
version = "0.7.0";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.7";
|
||||||
|
@ -27,7 +27,7 @@ buildPythonPackage rec {
|
||||||
owner = "zigpy";
|
owner = "zigpy";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0hz483wqzpdaap96gbjasisxd4wy8f4lslnspcvzqcf4dy1mxln6";
|
sha256 = "0h6dclz4q4lvmapzpslh8kb0aihdjddbkxc4zc981glbip89li5w";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "zstandard";
|
pname = "zstandard";
|
||||||
version = "0.16.0";
|
version = "0.17.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "eaae2d3e8fdf8bfe269628385087e4b648beef85bb0c187644e7df4fb0fe9046";
|
sha256 = "fa9194cb91441df7242aa3ddc4cb184be38876cb10dd973674887f334bafbfb6";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedNativeBuildInputs = [ cffi ];
|
propagatedNativeBuildInputs = [ cffi ];
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "ddosify";
|
pname = "ddosify";
|
||||||
version = "0.7.1";
|
version = "0.7.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-QzNMUeA9oOZaNZDGf9TXloZ5r2prDHTRX1wso3fSetc=";
|
sha256 = "sha256-QLJB2WcnguknEMdgwJzltp++mJCL4cFOWU568aTk0sc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-TY8shTb77uFm8/yCvlIncAfq7brWgnH/63W+hj1rvqg=";
|
vendorSha256 = "sha256-TY8shTb77uFm8/yCvlIncAfq7brWgnH/63W+hj1rvqg=";
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "skaffold";
|
pname = "skaffold";
|
||||||
version = "1.35.1";
|
version = "1.35.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "GoogleContainerTools";
|
owner = "GoogleContainerTools";
|
||||||
repo = "skaffold";
|
repo = "skaffold";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-8Ye2eR9eB7oyYOo46OraOxfLOG/XphWJkk+xPzDthPU=";
|
sha256 = "sha256-s1gkfgpQhmXgbU0iGu71a+cMQsInGTf7GUb8h2SK9qs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-jr4HEs2mTRPNAiV/OWUnjYyQ1uSUJfVOTNCRi/18tEo=";
|
vendorSha256 = "sha256-jr4HEs2mTRPNAiV/OWUnjYyQ1uSUJfVOTNCRi/18tEo=";
|
||||||
|
@ -24,6 +24,11 @@ buildGoModule rec {
|
||||||
|
|
||||||
nativeBuildInputs = [ installShellFiles ];
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
|
doInstallCheck = true;
|
||||||
|
installCheckPhase = ''
|
||||||
|
$out/bin/skaffold version | grep ${version} > /dev/null
|
||||||
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
installShellCompletion --cmd skaffold \
|
installShellCompletion --cmd skaffold \
|
||||||
--bash <($out/bin/skaffold completion bash) \
|
--bash <($out/bin/skaffold completion bash) \
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "yq-go";
|
pname = "yq-go";
|
||||||
version = "4.16.2";
|
version = "4.17.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mikefarah";
|
owner = "mikefarah";
|
||||||
repo = "yq";
|
repo = "yq";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-qJZDFyBSiaS0cUcfEz1P+b5Z6Tb//KKWeYqNJpdOh9Q=";
|
sha256 = "sha256-jfb/r4Z8i23A0e4cJqZoG2TPXGVFOf64FfnZy/keAeQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-6J+pHWiswDRxCFdRj/d+6+QLxEF207vTyfnPq5tP30o=";
|
vendorSha256 = "sha256-0eaD4oT6DyCWkJ0He4A7ysOEJD8CtFH6diQYBuEOoIk=";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
|
|
@ -274,6 +274,13 @@ in {
|
||||||
filesToInstall = ["u-boot-dtb.bin"];
|
filesToInstall = ["u-boot-dtb.bin"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ubootOlimexA64Olinuxino = buildUBoot {
|
||||||
|
defconfig = "a64-olinuxino-emmc_defconfig";
|
||||||
|
extraMeta.platforms = ["aarch64-linux"];
|
||||||
|
BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin";
|
||||||
|
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
|
||||||
|
};
|
||||||
|
|
||||||
ubootOrangePiPc = buildUBoot {
|
ubootOrangePiPc = buildUBoot {
|
||||||
defconfig = "orangepi_pc_defconfig";
|
defconfig = "orangepi_pc_defconfig";
|
||||||
extraMeta.platforms = ["armv7l-linux"];
|
extraMeta.platforms = ["armv7l-linux"];
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
# Native buildInputs components
|
# Native buildInputs components
|
||||||
, bison, boost, cmake, fixDarwinDylibNames, flex, makeWrapper, pkg-config
|
, bison, boost, cmake, fixDarwinDylibNames, flex, makeWrapper, pkg-config
|
||||||
# Common components
|
# Common components
|
||||||
, curl, libiconv, ncurses, openssl, pcre2
|
, curl, libiconv, ncurses, openssl, pcre, pcre2
|
||||||
, libkrb5, liburing, systemd
|
, libkrb5, libaio, liburing, systemd
|
||||||
, CoreServices, cctools, perl
|
, CoreServices, cctools, perl
|
||||||
, jemalloc, less
|
, jemalloc, less
|
||||||
# Server components
|
# Server components
|
||||||
|
@ -14,36 +14,37 @@
|
||||||
, withStorageRocks ? true
|
, withStorageRocks ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let # in mariadb # spans the whole file
|
let # in mariadb # spans the whole file
|
||||||
|
|
||||||
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
|
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||||
|
|
||||||
mytopEnv = perl.withPackages (p: with p; [ DBDmysql DBI TermReadKey ]);
|
mytopEnv = perl.withPackages (p: with p; [ DBDmysql DBI TermReadKey ]);
|
||||||
|
|
||||||
mariadb = server // {
|
mariadbPackage = packageSettings: (server packageSettings) // {
|
||||||
inherit client; # MariaDB Client
|
client = client packageSettings; # MariaDB Client
|
||||||
server = server; # MariaDB Server
|
server = server packageSettings; # MariaDB Server
|
||||||
};
|
};
|
||||||
|
|
||||||
common = rec { # attributes common to both builds
|
commonOptions = packageSettings: rec { # attributes common to both builds
|
||||||
version = "10.6.5";
|
inherit (packageSettings) version;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://downloads.mariadb.com/MariaDB/mariadb-${version}/source/mariadb-${version}.tar.gz";
|
url = "https://downloads.mariadb.com/MariaDB/mariadb-${version}/source/mariadb-${version}.tar.gz";
|
||||||
sha256 = "sha256-4L4EBCjZpCqLtL0iG1Z/8lIs1vqJBjhic9pPA8XCCo8=";
|
inherit (packageSettings) sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ]
|
nativeBuildInputs = [ cmake pkg-config ]
|
||||||
++ optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames
|
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames
|
||||||
++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
|
++ lib.optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
curl libiconv ncurses openssl pcre2 zlib
|
curl libiconv ncurses openssl zlib
|
||||||
] ++ optionals stdenv.hostPlatform.isLinux [ libkrb5 liburing systemd ]
|
] ++ (packageSettings.extraBuildInputs or [])
|
||||||
++ optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ]
|
++ lib.optionals stdenv.hostPlatform.isLinux ([ libkrb5 systemd ]
|
||||||
++ optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ];
|
++ (if (lib.versionOlder version "10.6") then [ libaio ] else [ liburing ]))
|
||||||
|
++ lib.optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ]
|
||||||
|
++ lib.optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ]
|
||||||
|
++ (if (lib.versionOlder version "10.5") then [ pcre ] else [ pcre2 ]);
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt
|
sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt
|
||||||
|
@ -54,7 +55,7 @@ common = rec { # attributes common to both builds
|
||||||
]
|
]
|
||||||
# Fixes a build issue as documented on
|
# Fixes a build issue as documented on
|
||||||
# https://jira.mariadb.org/browse/MDEV-26769?focusedCommentId=206073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-206073
|
# https://jira.mariadb.org/browse/MDEV-26769?focusedCommentId=206073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-206073
|
||||||
++ lib.optional (!stdenv.isLinux) ./patch/macos-MDEV-26769-regression-fix.patch;
|
++ lib.optional (!stdenv.hostPlatform.isLinux && lib.versionAtLeast version "10.6") ./patch/macos-MDEV-26769-regression-fix.patch;
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DBUILD_CONFIG=mysql_release"
|
"-DBUILD_CONFIG=mysql_release"
|
||||||
|
@ -86,7 +87,7 @@ common = rec { # attributes common to both builds
|
||||||
"-DWITH_SAFEMALLOC=OFF"
|
"-DWITH_SAFEMALLOC=OFF"
|
||||||
"-DWITH_UNIT_TESTS=OFF"
|
"-DWITH_UNIT_TESTS=OFF"
|
||||||
"-DEMBEDDED_LIBRARY=OFF"
|
"-DEMBEDDED_LIBRARY=OFF"
|
||||||
] ++ optionals stdenv.hostPlatform.isDarwin [
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
# On Darwin without sandbox, CMake will find the system java and attempt to build with java support, but
|
# On Darwin without sandbox, CMake will find the system java and attempt to build with java support, but
|
||||||
# then it will fail during the actual build. Let's just disable the flag explicitly until someone decides
|
# then it will fail during the actual build. Let's just disable the flag explicitly until someone decides
|
||||||
# to pass in java explicitly.
|
# to pass in java explicitly.
|
||||||
|
@ -98,37 +99,39 @@ common = rec { # attributes common to both builds
|
||||||
# Remove Development components. Need to use libmysqlclient.
|
# Remove Development components. Need to use libmysqlclient.
|
||||||
rm "$out"/lib/mysql/plugin/daemon_example.ini
|
rm "$out"/lib/mysql/plugin/daemon_example.ini
|
||||||
rm "$out"/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a}
|
rm "$out"/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a}
|
||||||
rm "$out"/bin/{mariadb-config,mariadb_config,mysql_config}
|
rm -f "$out"/bin/{mariadb-config,mariadb_config,mysql_config}
|
||||||
rm -r $out/include
|
rm -r $out/include
|
||||||
rm -r $out/lib/pkgconfig
|
rm -r $out/lib/pkgconfig
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# perlPackages.DBDmysql is broken on darwin
|
# perlPackages.DBDmysql is broken on darwin
|
||||||
postFixup = optionalString (!stdenv.hostPlatform.isDarwin) ''
|
postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||||
wrapProgram $out/bin/mytop --set PATH ${makeBinPath [ less ncurses ]}
|
wrapProgram $out/bin/mytop --set PATH ${lib.makeBinPath [ less ncurses ]}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.mysqlVersion = "5.7";
|
passthru.tests = let
|
||||||
|
testVersion = "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor (packageSettings.version))}";
|
||||||
passthru.tests = {
|
in {
|
||||||
mariadb-galera-mariabackup = nixosTests.mariadb-galera-mariabackup;
|
mariadb-galera-rsync = nixosTests.mariadb-galera.${testVersion};
|
||||||
mariadb-galera-rsync = nixosTests.mariadb-galera-rsync;
|
mysql = nixosTests.mysql.${testVersion};
|
||||||
mysql = nixosTests.mysql;
|
mysql-autobackup = nixosTests.mysql-autobackup.${testVersion};
|
||||||
mysql-autobackup = nixosTests.mysql-autobackup;
|
mysql-backup = nixosTests.mysql-backup.${testVersion};
|
||||||
mysql-backup = nixosTests.mysql-backup;
|
mysql-replication = nixosTests.mysql-replication.${testVersion};
|
||||||
mysql-replication = nixosTests.mysql-replication;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = with lib; {
|
||||||
description = "An enhanced, drop-in replacement for MySQL";
|
description = "An enhanced, drop-in replacement for MySQL";
|
||||||
homepage = "https://mariadb.org/";
|
homepage = "https://mariadb.org/";
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
maintainers = with maintainers; [ thoughtpolice ];
|
maintainers = with maintainers; [ thoughtpolice ajs124 das_j ];
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
client = stdenv.mkDerivation (common // {
|
client = packageSettings: let
|
||||||
|
common = commonOptions packageSettings;
|
||||||
|
|
||||||
|
in stdenv.mkDerivation (common // {
|
||||||
pname = "mariadb-client";
|
pname = "mariadb-client";
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [ "out" "man" ];
|
||||||
|
@ -153,7 +156,10 @@ client = stdenv.mkDerivation (common // {
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
server = stdenv.mkDerivation (common // {
|
server = packageSettings: let
|
||||||
|
common = commonOptions packageSettings;
|
||||||
|
|
||||||
|
in stdenv.mkDerivation (common // {
|
||||||
pname = "mariadb-server";
|
pname = "mariadb-server";
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [ "out" "man" ];
|
||||||
|
@ -163,11 +169,11 @@ server = stdenv.mkDerivation (common // {
|
||||||
buildInputs = common.buildInputs ++ [
|
buildInputs = common.buildInputs ++ [
|
||||||
bzip2 lz4 lzo snappy xz zstd
|
bzip2 lz4 lzo snappy xz zstd
|
||||||
cracklib judy libevent libxml2
|
cracklib judy libevent libxml2
|
||||||
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl
|
] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl
|
||||||
++ optionals stdenv.hostPlatform.isLinux [ linux-pam ]
|
++ lib.optionals stdenv.hostPlatform.isLinux [ linux-pam ]
|
||||||
++ optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev
|
++ lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev
|
||||||
++ optional (!stdenv.hostPlatform.isDarwin) mytopEnv
|
++ lib.optional (!stdenv.hostPlatform.isDarwin) mytopEnv
|
||||||
++ optionals withStorageMroonga [ kytea libsodium msgpack zeromq ];
|
++ lib.optionals withStorageMroonga [ kytea libsodium msgpack zeromq ];
|
||||||
|
|
||||||
patches = common.patches;
|
patches = common.patches;
|
||||||
|
|
||||||
|
@ -188,38 +194,54 @@ server = stdenv.mkDerivation (common // {
|
||||||
"-DWITHOUT_EXAMPLE=1"
|
"-DWITHOUT_EXAMPLE=1"
|
||||||
"-DWITHOUT_FEDERATED=1"
|
"-DWITHOUT_FEDERATED=1"
|
||||||
"-DWITHOUT_TOKUDB=1"
|
"-DWITHOUT_TOKUDB=1"
|
||||||
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [
|
] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [
|
||||||
"-DWITH_NUMA=ON"
|
"-DWITH_NUMA=ON"
|
||||||
] ++ optional (!withStorageMroonga) [
|
] ++ lib.optional (!withStorageMroonga) [
|
||||||
"-DWITHOUT_MROONGA=1"
|
"-DWITHOUT_MROONGA=1"
|
||||||
] ++ optional (!withStorageRocks) [
|
] ++ lib.optional (!withStorageRocks) [
|
||||||
"-DWITHOUT_ROCKSDB=1"
|
"-DWITHOUT_ROCKSDB=1"
|
||||||
] ++ optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [
|
] ++ lib.optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [
|
||||||
"-DWITH_ROCKSDB_JEMALLOC=ON"
|
"-DWITH_ROCKSDB_JEMALLOC=ON"
|
||||||
] ++ optional (!stdenv.hostPlatform.isDarwin) [
|
] ++ lib.optional (!stdenv.hostPlatform.isDarwin) [
|
||||||
"-DWITH_JEMALLOC=yes"
|
"-DWITH_JEMALLOC=yes"
|
||||||
] ++ optionals stdenv.hostPlatform.isDarwin [
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
"-DPLUGIN_AUTH_PAM=OFF"
|
"-DPLUGIN_AUTH_PAM=OFF"
|
||||||
"-DWITHOUT_OQGRAPH=1"
|
"-DWITHOUT_OQGRAPH=1"
|
||||||
"-DWITHOUT_PLUGIN_S3=1"
|
"-DWITHOUT_PLUGIN_S3=1"
|
||||||
];
|
];
|
||||||
|
|
||||||
preConfigure = optionalString (!stdenv.hostPlatform.isDarwin) ''
|
preConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||||
patchShebangs scripts/mytop.sh
|
patchShebangs scripts/mytop.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = common.postInstall + ''
|
postInstall = common.postInstall + ''
|
||||||
rm -r "$out"/share/aclocal
|
rm -r "$out"/share/aclocal
|
||||||
chmod +x "$out"/bin/wsrep_sst_common
|
chmod +x "$out"/bin/wsrep_sst_common
|
||||||
rm "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest}
|
rm -f "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest}
|
||||||
'' + optionalString withStorageMroonga ''
|
'' + lib.optionalString withStorageMroonga ''
|
||||||
mv "$out"/share/{groonga,groonga-normalizer-mysql} "$out"/share/doc/mysql
|
mv "$out"/share/{groonga,groonga-normalizer-mysql} "$out"/share/doc/mysql
|
||||||
'' + optionalString (!stdenv.hostPlatform.isDarwin) ''
|
'' + lib.optionalString (!stdenv.hostPlatform.isDarwin && lib.versionAtLeast common.version "10.4") ''
|
||||||
mv "$out"/OFF/suite/plugins/pam/pam_mariadb_mtr.so "$out"/share/pam/lib/security
|
mv "$out"/OFF/suite/plugins/pam/pam_mariadb_mtr.so "$out"/share/pam/lib/security
|
||||||
mv "$out"/OFF/suite/plugins/pam/mariadb_mtr "$out"/share/pam/etc/security
|
mv "$out"/OFF/suite/plugins/pam/mariadb_mtr "$out"/share/pam/etc/security
|
||||||
rm -r "$out"/OFF
|
rm -r "$out"/OFF
|
||||||
'';
|
'';
|
||||||
|
|
||||||
CXXFLAGS = optionalString stdenv.hostPlatform.isi686 "-fpermissive";
|
CXXFLAGS = lib.optionalString stdenv.hostPlatform.isi686 "-fpermissive";
|
||||||
});
|
});
|
||||||
in mariadb
|
in {
|
||||||
|
mariadb_104 = mariadbPackage {
|
||||||
|
# Supported until 2024-06-18
|
||||||
|
version = "10.4.22";
|
||||||
|
sha256 = "000ca1hdnj2jg051cjgdd2ralgwgh2p8nwb1x6b85202xdpc7ga4";
|
||||||
|
};
|
||||||
|
mariadb_105 = mariadbPackage {
|
||||||
|
# Supported until 2025-06-24
|
||||||
|
version = "10.5.13";
|
||||||
|
sha256 = "0n0w1pyypv6wsknaqyykj3lc9zv6smji4q5jcf90w4rid330iw0n";
|
||||||
|
};
|
||||||
|
mariadb_106 = mariadbPackage {
|
||||||
|
# Supported until 2026-07
|
||||||
|
version = "10.6.5";
|
||||||
|
sha256 = "13qaqb2h6kysfdi3h1l9zbb2qlpjgxb1n8mxnj5jm96r50209gp0";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
|
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "diffoscope";
|
pname = "diffoscope";
|
||||||
version = "200";
|
version = "201";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
|
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
|
||||||
sha256 = "sha256-x6qAVEtvGmW0L4L/K+YKAp9jc9zz0Orrsl3qBkPYnW0=";
|
sha256 = "sha256-urvSZSpy5ksHhWqJM8ek0dyyKPeme/sJ16L6JfHg7Lg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "man" ];
|
outputs = [ "out" "man" ];
|
||||||
|
|
|
@ -34,7 +34,7 @@ xorg,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.29.6";
|
version = "1.30.1";
|
||||||
|
|
||||||
rpath = lib.makeLibraryPath [
|
rpath = lib.makeLibraryPath [
|
||||||
alsa-lib
|
alsa-lib
|
||||||
|
@ -84,7 +84,7 @@ let
|
||||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
||||||
sha256 = "sha256-yLbuHvZrI8C4X/burIo5cI+H8KEv++4FyRgtISpmPxE=";
|
sha256 = "sha256-MwkYgkDZmzZsthJxSK6c+0us0D4cPuDfuV1XBbeTNXE=";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "jwt-cli";
|
pname = "jwt-cli";
|
||||||
version = "5.0.1";
|
version = "5.0.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mike-engel";
|
owner = "mike-engel";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "08yynwmn1kzanabiqzysyk9jbn0zyjjlilj4b4j5m29hfykq1jvf";
|
sha256 = "0w7fqmh8gihknvdamnq1n519253d4lxrpv378jajca9x906rqy1r";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "19rbmiy71hgybzfwpz4msqqgl98qv9c3x06mjcpmixq4qhgxz616";
|
cargoSha256 = "0b7m23azy8cb8d5wkawnw6nv8k7lfnfwc06swmbkfvg8vcxfsacs";
|
||||||
|
|
||||||
buildInputs = lib.optional stdenv.isDarwin Security;
|
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||||
|
|
||||||
|
|
|
@ -368,6 +368,7 @@ mapAliases ({
|
||||||
google-music-scripts = throw "google-music-scripts has been removed because Google Play Music was discontinued"; # added 2021-03-07
|
google-music-scripts = throw "google-music-scripts has been removed because Google Play Music was discontinued"; # added 2021-03-07
|
||||||
google-musicmanager = throw "google-musicmanager has been removed because Google Play Music was discontinued"; # added 2021-03-07
|
google-musicmanager = throw "google-musicmanager has been removed because Google Play Music was discontinued"; # added 2021-03-07
|
||||||
googleAuthenticator = google-authenticator; # added 2016-10-16
|
googleAuthenticator = google-authenticator; # added 2016-10-16
|
||||||
|
googleearth = throw "the non-pro version of Google Earth was removed because it was discontinued and downloading it isn't possible anymore"; # added 2022-01-22
|
||||||
grantlee5 = libsForQt5.grantlee; # added 2015-12-19
|
grantlee5 = libsForQt5.grantlee; # added 2015-12-19
|
||||||
graalvm8 = throw "graalvm8-ce has been removed by upstream."; # added 2021-10-19
|
graalvm8 = throw "graalvm8-ce has been removed by upstream."; # added 2021-10-19
|
||||||
graalvm8-ce = throw "graalvm8-ce has been removed by upstream."; # added 2021-10-19
|
graalvm8-ce = throw "graalvm8-ce has been removed by upstream."; # added 2021-10-19
|
||||||
|
@ -480,6 +481,7 @@ mapAliases ({
|
||||||
libgnome_keyring3 = libgnome-keyring3; # added 2018-02-25
|
libgnome_keyring3 = libgnome-keyring3; # added 2018-02-25
|
||||||
libgpgerror = libgpg-error; # added 2021-09-04
|
libgpgerror = libgpg-error; # added 2021-09-04
|
||||||
libgumbo = gumbo; # added 2018-01-21
|
libgumbo = gumbo; # added 2018-01-21
|
||||||
|
libgroove = throw "libgroove has been removed, because it depends on an outdated and insecure version of ffmpeg"; # added 2022-01-21
|
||||||
libGL_driver = mesa.drivers; # added 2019-05-28
|
libGL_driver = mesa.drivers; # added 2019-05-28
|
||||||
libintlOrEmpty = lib.optional (!stdenv.isLinux || stdenv.hostPlatform.libc != "glibc") gettext; # added 2018-03-14
|
libintlOrEmpty = lib.optional (!stdenv.isLinux || stdenv.hostPlatform.libc != "glibc") gettext; # added 2018-03-14
|
||||||
libjpeg_drop = libjpeg_original; # added 2020-06-05
|
libjpeg_drop = libjpeg_original; # added 2020-06-05
|
||||||
|
|
|
@ -8853,8 +8853,6 @@ with pkgs;
|
||||||
|
|
||||||
poly2tri-c = callPackage ../development/libraries/poly2tri-c { };
|
poly2tri-c = callPackage ../development/libraries/poly2tri-c { };
|
||||||
|
|
||||||
polymc = libsForQt5.callPackage ../games/polymc { };
|
|
||||||
|
|
||||||
ponysay = callPackage ../tools/misc/ponysay { };
|
ponysay = callPackage ../tools/misc/ponysay { };
|
||||||
|
|
||||||
popfile = callPackage ../tools/text/popfile { };
|
popfile = callPackage ../tools/text/popfile { };
|
||||||
|
@ -15737,6 +15735,8 @@ with pkgs;
|
||||||
|
|
||||||
nsis = callPackage ../development/tools/nsis { };
|
nsis = callPackage ../development/tools/nsis { };
|
||||||
|
|
||||||
|
tockloader = callPackage ../development/tools/misc/tockloader { };
|
||||||
|
|
||||||
### DEVELOPMENT / LIBRARIES
|
### DEVELOPMENT / LIBRARIES
|
||||||
|
|
||||||
a52dec = callPackage ../development/libraries/a52dec { };
|
a52dec = callPackage ../development/libraries/a52dec { };
|
||||||
|
@ -16294,6 +16294,14 @@ with pkgs;
|
||||||
|
|
||||||
eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};
|
eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};
|
||||||
|
|
||||||
|
vapoursynth = callPackage ../development/libraries/vapoursynth {
|
||||||
|
inherit (darwin.apple_sdk.frameworks) ApplicationServices;
|
||||||
|
};
|
||||||
|
|
||||||
|
vapoursynth-editor = libsForQt5.callPackage ../development/libraries/vapoursynth/editor.nix { };
|
||||||
|
|
||||||
|
vapoursynth-mvtools = callPackage ../development/libraries/vapoursynth-mvtools { };
|
||||||
|
|
||||||
vmmlib = callPackage ../development/libraries/vmmlib {
|
vmmlib = callPackage ../development/libraries/vmmlib {
|
||||||
inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
|
inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
|
||||||
};
|
};
|
||||||
|
@ -17809,8 +17817,6 @@ with pkgs;
|
||||||
|
|
||||||
libgringotts = callPackage ../development/libraries/libgringotts { };
|
libgringotts = callPackage ../development/libraries/libgringotts { };
|
||||||
|
|
||||||
libgroove = callPackage ../development/libraries/libgroove { };
|
|
||||||
|
|
||||||
libgrss = callPackage ../development/libraries/libgrss { };
|
libgrss = callPackage ../development/libraries/libgrss { };
|
||||||
|
|
||||||
libgweather = callPackage ../development/libraries/libgweather { };
|
libgweather = callPackage ../development/libraries/libgweather { };
|
||||||
|
@ -21449,10 +21455,15 @@ with pkgs;
|
||||||
asio = asio_1_10;
|
asio = asio_1_10;
|
||||||
};
|
};
|
||||||
|
|
||||||
mariadb = callPackage ../servers/sql/mariadb {
|
inherit (callPackage ../servers/sql/mariadb {
|
||||||
inherit (darwin) cctools;
|
inherit (darwin) cctools;
|
||||||
inherit (darwin.apple_sdk.frameworks) CoreServices;
|
inherit (darwin.apple_sdk.frameworks) CoreServices;
|
||||||
};
|
})
|
||||||
|
mariadb_104
|
||||||
|
mariadb_105
|
||||||
|
mariadb_106
|
||||||
|
;
|
||||||
|
mariadb = mariadb_106;
|
||||||
|
|
||||||
mongodb = hiPrio mongodb-3_4;
|
mongodb = hiPrio mongodb-3_4;
|
||||||
|
|
||||||
|
@ -23072,6 +23083,7 @@ with pkgs;
|
||||||
ubootNovena
|
ubootNovena
|
||||||
ubootOdroidC2
|
ubootOdroidC2
|
||||||
ubootOdroidXU3
|
ubootOdroidXU3
|
||||||
|
ubootOlimexA64Olinuxino
|
||||||
ubootOrangePiPc
|
ubootOrangePiPc
|
||||||
ubootOrangePiZeroPlus2H5
|
ubootOrangePiZeroPlus2H5
|
||||||
ubootOrangePiZero
|
ubootOrangePiZero
|
||||||
|
@ -25978,8 +25990,6 @@ with pkgs;
|
||||||
inherit (darwin.apple_sdk.frameworks) AppKit AudioToolbox;
|
inherit (darwin.apple_sdk.frameworks) AppKit AudioToolbox;
|
||||||
};
|
};
|
||||||
|
|
||||||
googleearth = callPackage ../applications/misc/googleearth { };
|
|
||||||
|
|
||||||
googleearth-pro = libsForQt5.callPackage ../applications/misc/googleearth-pro { };
|
googleearth-pro = libsForQt5.callPackage ../applications/misc/googleearth-pro { };
|
||||||
|
|
||||||
google-chrome = callPackage ../applications/networking/browsers/google-chrome { gconf = gnome2.GConf; };
|
google-chrome = callPackage ../applications/networking/browsers/google-chrome { gconf = gnome2.GConf; };
|
||||||
|
@ -28744,6 +28754,7 @@ with pkgs;
|
||||||
|
|
||||||
src = callPackage ../applications/version-management/src {
|
src = callPackage ../applications/version-management/src {
|
||||||
git = gitMinimal;
|
git = gitMinimal;
|
||||||
|
python = python3;
|
||||||
};
|
};
|
||||||
|
|
||||||
sslyze = with python3Packages; toPythonApplication sslyze;
|
sslyze = with python3Packages; toPythonApplication sslyze;
|
||||||
|
@ -28969,8 +28980,6 @@ with pkgs;
|
||||||
|
|
||||||
tetraproc = callPackage ../applications/audio/tetraproc { };
|
tetraproc = callPackage ../applications/audio/tetraproc { };
|
||||||
|
|
||||||
tetrio-desktop = callPackage ../games/tetrio-desktop { };
|
|
||||||
|
|
||||||
tev = callPackage ../applications/graphics/tev { };
|
tev = callPackage ../applications/graphics/tev { };
|
||||||
|
|
||||||
themechanger = callPackage ../applications/misc/themechanger { };
|
themechanger = callPackage ../applications/misc/themechanger { };
|
||||||
|
@ -30967,10 +30976,14 @@ with pkgs;
|
||||||
|
|
||||||
portmod = callPackage ../games/portmod { };
|
portmod = callPackage ../games/portmod { };
|
||||||
|
|
||||||
|
tetrio-desktop = callPackage ../games/tetrio-desktop { };
|
||||||
|
|
||||||
tr-patcher = callPackage ../games/tr-patcher { };
|
tr-patcher = callPackage ../games/tr-patcher { };
|
||||||
|
|
||||||
tes3cmd = callPackage ../games/tes3cmd { };
|
tes3cmd = callPackage ../games/tes3cmd { };
|
||||||
|
|
||||||
|
otto-matic = callPackage ../games/otto-matic { };
|
||||||
|
|
||||||
openraPackages = import ../games/openra pkgs;
|
openraPackages = import ../games/openra pkgs;
|
||||||
|
|
||||||
openra = openraPackages.engines.release;
|
openra = openraPackages.engines.release;
|
||||||
|
@ -31024,6 +31037,8 @@ with pkgs;
|
||||||
|
|
||||||
planetary_annihilation = callPackage ../games/planetaryannihilation { };
|
planetary_annihilation = callPackage ../games/planetaryannihilation { };
|
||||||
|
|
||||||
|
polymc = libsForQt5.callPackage ../games/polymc { };
|
||||||
|
|
||||||
pong3d = callPackage ../games/pong3d { };
|
pong3d = callPackage ../games/pong3d { };
|
||||||
|
|
||||||
pokerth = libsForQt5.callPackage ../games/pokerth { };
|
pokerth = libsForQt5.callPackage ../games/pokerth { };
|
||||||
|
@ -31270,8 +31285,6 @@ with pkgs;
|
||||||
|
|
||||||
tinyfugue = callPackage ../games/tinyfugue { };
|
tinyfugue = callPackage ../games/tinyfugue { };
|
||||||
|
|
||||||
tockloader = callPackage ../development/tools/misc/tockloader { };
|
|
||||||
|
|
||||||
tome2 = callPackage ../games/tome2 { };
|
tome2 = callPackage ../games/tome2 { };
|
||||||
|
|
||||||
tome4 = callPackage ../games/tome4 { };
|
tome4 = callPackage ../games/tome4 { };
|
||||||
|
@ -31338,14 +31351,6 @@ with pkgs;
|
||||||
|
|
||||||
ut2004demo = res.ut2004Packages.ut2004 [ res.ut2004Packages.ut2004-demo ];
|
ut2004demo = res.ut2004Packages.ut2004 [ res.ut2004Packages.ut2004-demo ];
|
||||||
|
|
||||||
vapoursynth = callPackage ../development/libraries/vapoursynth {
|
|
||||||
inherit (darwin.apple_sdk.frameworks) ApplicationServices;
|
|
||||||
};
|
|
||||||
|
|
||||||
vapoursynth-editor = libsForQt5.callPackage ../development/libraries/vapoursynth/editor.nix { };
|
|
||||||
|
|
||||||
vapoursynth-mvtools = callPackage ../development/libraries/vapoursynth-mvtools { };
|
|
||||||
|
|
||||||
vassal = callPackage ../games/vassal { };
|
vassal = callPackage ../games/vassal { };
|
||||||
|
|
||||||
vdrift = callPackage ../games/vdrift { };
|
vdrift = callPackage ../games/vdrift { };
|
||||||
|
@ -32226,8 +32231,6 @@ with pkgs;
|
||||||
|
|
||||||
otter = callPackage ../applications/science/logic/otter {};
|
otter = callPackage ../applications/science/logic/otter {};
|
||||||
|
|
||||||
otto-matic = callPackage ../games/otto-matic { };
|
|
||||||
|
|
||||||
picosat = callPackage ../applications/science/logic/picosat {};
|
picosat = callPackage ../applications/science/logic/picosat {};
|
||||||
|
|
||||||
libpoly = callPackage ../applications/science/logic/poly {};
|
libpoly = callPackage ../applications/science/logic/poly {};
|
||||||
|
|
|
@ -5,32 +5,32 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0ilq5mniarm0zlvnkagqj9n9p73ljrhphciz02aymrpfxxxclz2x";
|
sha256 = "121zl6435dwz1d14xviyynxj4njbawbv1ljxj5p0cxlhql1n3jsm";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
actionmailbox = {
|
actionmailbox = {
|
||||||
dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"];
|
dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "16azdnjws215clb056b9mabglx4b8f61hr82hv7hm80dmn89zqq6";
|
sha256 = "1jkxqdp9ha8pm2cd61ajs2pgn41adz3x1f8yqvdca3fvfrlgirjg";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
actionmailer = {
|
actionmailer = {
|
||||||
dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "rails-dom-testing"];
|
dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "00s07l2ac5igch1g2rpa0linmiq7mhgk6v6wxkckg8gbiqijb592";
|
sha256 = "0r27a5g0r7b27mzcl150hdc7ljgl5iyrxw1z4wn3n1jfb7xs5rkq";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
actionpack = {
|
actionpack = {
|
||||||
dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
|
dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
|
||||||
|
@ -38,21 +38,21 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0xgysqnibjsy6kdz10x2xb3kwa6lssiqhh0zggrbgs31ypwhlpia";
|
sha256 = "0q27kqcl369g9y7sxxcfigrm1yyj3q22kd135l7ahx977vcy5hjm";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
actiontext = {
|
actiontext = {
|
||||||
dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"];
|
dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0m4fy4qqh09vnzbhx383vjdfid6fzbs49bzzg415x05nmmjkx582";
|
sha256 = "0yya6xda23q8p3knvg5c8zfqk7xwnkjplf2bxnvmipn88918cz6w";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
actionview = {
|
actionview = {
|
||||||
dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
|
dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
|
||||||
|
@ -60,10 +60,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1yf4ic5kl324rs0raralpwx24s6hvvdzxfhinafylf8f3x7jj23z";
|
sha256 = "0nc0v74mdlag3kxcby0rrcz2ivvc94sfdrw3zm5ng2qrchh56w1b";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
activejob = {
|
activejob = {
|
||||||
dependencies = ["activesupport" "globalid"];
|
dependencies = ["activesupport" "globalid"];
|
||||||
|
@ -71,10 +71,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1q7c0i0kwarxgcbxk71wa9jnlg45grbxmhlrh7dk9bgcv7r7r7hn";
|
sha256 = "1yshbsy4k8702x9jv90yr6cjjpn5vxlw42pb878g70cgp2wq45r3";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
activemodel = {
|
activemodel = {
|
||||||
dependencies = ["activesupport"];
|
dependencies = ["activesupport"];
|
||||||
|
@ -82,10 +82,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "16ixam4lni8b5lgx0whnax0imzh1dh10fy5r9pxs52n83yz5nbq3";
|
sha256 = "0vr3ayykc1s7n12ajddcyff751v9j48yfimgxrys6qsxj89gmnmh";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
activerecord = {
|
activerecord = {
|
||||||
dependencies = ["activemodel" "activesupport"];
|
dependencies = ["activemodel" "activesupport"];
|
||||||
|
@ -93,10 +93,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1ccgvlj767ybps3pxlaa4iw77n7wbriw2sr8754id3ngjfap08ja";
|
sha256 = "1dpn1r1v2165bx9wj07rh1g27jl49yr6kyd34xhkd48hxfadq3jb";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
activestorage = {
|
activestorage = {
|
||||||
dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
|
dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
|
||||||
|
@ -104,21 +104,21 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "17knzz9fvqg4x582vy0xmlgjkxfb13xyzl2rgw19qfma86hxsvvi";
|
sha256 = "0pxjxyjgh4al11k7z1lbnsc5wx5dnraz95p2wx00dkrvpgw8gm8b";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
activesupport = {
|
activesupport = {
|
||||||
dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
|
dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "19gx1jcq46x9d1pi1w8xq0bgvvfw239y4lalr8asm291gj3q3ds4";
|
sha256 = "02lys9pnb99hsczs551iqzjn008i8k7c728xxba7acfi9rdw9pa6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
addressable = {
|
addressable = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -290,10 +290,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0kasxsms24fgcdsq680nz99d5lazl9rmz1qkil2y5gbbssx89g0z";
|
sha256 = "0bpqhc0kqjp1bh9b7ffc395l9gfls0337rrhmab4v46ykl45qg3d";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.0.3";
|
version = "1.1.0";
|
||||||
};
|
};
|
||||||
clamp = {
|
clamp = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -396,10 +396,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "04bzk1x67pqrmnmz3pdw107j5p9ncwfm7gdv8n4bk4r9nqxdv3wn";
|
sha256 = "1zaid3awk470igr5yilx1wvj1jnh88fbjl11hp93a4qic7j3i6ca";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.2.0";
|
version = "0.0.6";
|
||||||
};
|
};
|
||||||
cocoapods-deintegrate = {
|
cocoapods-deintegrate = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -551,10 +551,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0f7w4gxr45m42ca6fpbq38jfzii00xysz12vcc68myvi8x0krr5l";
|
sha256 = "03dqcz9pks7mbzq3zkfm2rzbjwkcwp8z3rip60d4pqs8b2bb61bg";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.2.0";
|
version = "0.0.6";
|
||||||
};
|
};
|
||||||
cocoapods-trunk = {
|
cocoapods-trunk = {
|
||||||
dependencies = ["nap" "netrc"];
|
dependencies = ["nap" "netrc"];
|
||||||
|
@ -704,20 +704,20 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1q7kqswm780vx1fannnrprbfbsp166smgyszgip5q7b859mk89wp";
|
sha256 = "06k7iybv6shvf8ypw28q9pbks129v2k34sn4f293650000ybdman";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.9.11";
|
version = "1.0.0";
|
||||||
};
|
};
|
||||||
curses = {
|
curses = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0j00s12wn9ai2qinbmzak6v0173cldqllnzs2s2id7gl45py2s75";
|
sha256 = "0py4n868h0whr5n8a4943nyagkpf0vnldk9nyizgf1q1lmrj1pkx";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.4.2";
|
version = "1.4.3";
|
||||||
};
|
};
|
||||||
daemons = {
|
daemons = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -755,10 +755,20 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0m925b8xc6kbpnif9dldna24q1szg4mk0fvszrki837pfn46afmz";
|
sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.4.4";
|
version = "1.5.0";
|
||||||
|
};
|
||||||
|
digest = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "00vwzvxgby22h7jhwadqqf9ssbkp3ag2pl4g7q3zf1y8mlk7rk39";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.1.0";
|
||||||
};
|
};
|
||||||
digest-sha3 = {
|
digest-sha3 = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -868,10 +878,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0153rr745g48h48vaplgmx7xkfjbc79acpq5jsl7agdrk4yf75ih";
|
sha256 = "1bkh80zzjpfglm14rhz116qgz0nb5gvk3ydfjpg14av5407srgh1";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.89.0";
|
version = "0.90.0";
|
||||||
};
|
};
|
||||||
execjs = {
|
execjs = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -884,15 +894,15 @@
|
||||||
version = "2.8.1";
|
version = "2.8.1";
|
||||||
};
|
};
|
||||||
faraday = {
|
faraday = {
|
||||||
dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "multipart-post" "ruby2_keywords"];
|
dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0afhlqgby2cizcwgh7h2sq5f77q01axjbdl25bsvfwsry9n7gyyi";
|
sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.8.0";
|
version = "1.9.3";
|
||||||
};
|
};
|
||||||
faraday-em_http = {
|
faraday-em_http = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -934,6 +944,17 @@
|
||||||
};
|
};
|
||||||
version = "1.0.1";
|
version = "1.0.1";
|
||||||
};
|
};
|
||||||
|
faraday-multipart = {
|
||||||
|
dependencies = ["multipart-post"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "03qfi9020ynf7hkdiaq01sd2mllvw7fg4qiin3pk028b4wv23j3j";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.0.3";
|
||||||
|
};
|
||||||
faraday-net_http = {
|
faraday-net_http = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -974,15 +995,25 @@
|
||||||
};
|
};
|
||||||
version = "1.0.0";
|
version = "1.0.0";
|
||||||
};
|
};
|
||||||
|
faraday-retry = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "1.0.3";
|
||||||
|
};
|
||||||
ffi = {
|
ffi = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0ssxcywmb3flxsjdg13is6k01807zgzasdhj4j48dm7ac59cmksn";
|
sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.15.4";
|
version = "1.15.5";
|
||||||
};
|
};
|
||||||
ffi-compiler = {
|
ffi-compiler = {
|
||||||
dependencies = ["ffi" "rake"];
|
dependencies = ["ffi" "rake"];
|
||||||
|
@ -1311,6 +1342,16 @@
|
||||||
};
|
};
|
||||||
version = "0.1.4";
|
version = "0.1.4";
|
||||||
};
|
};
|
||||||
|
io-wait = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "10jj6xz15qaw8gkck5wv3a3xg1zdfsarrandkglfbf75x4xmkrfz";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.2.1";
|
||||||
|
};
|
||||||
jaro_winkler = {
|
jaro_winkler = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -1322,15 +1363,15 @@
|
||||||
version = "1.5.4";
|
version = "1.5.4";
|
||||||
};
|
};
|
||||||
jbuilder = {
|
jbuilder = {
|
||||||
dependencies = ["activesupport"];
|
dependencies = ["actionview" "activesupport"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1a8fhj01wqsjyr3cm6fzrv54p879v83xpm2vrh7if9q5zwvkqmfn";
|
sha256 = "1h58xgmp0fqpnd6mvw0zl0f76119v8lnf4xabqhckbzl6jrk8qpa";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.11.3";
|
version = "2.11.5";
|
||||||
};
|
};
|
||||||
jekyll = {
|
jekyll = {
|
||||||
dependencies = ["colorator" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "rouge" "safe_yaml"];
|
dependencies = ["colorator" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "rouge" "safe_yaml"];
|
||||||
|
@ -1477,10 +1518,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
|
sha256 = "1ylph158dc3ql6cvkik00ab6gf2k1rv2dii63m196xclhkzwfyan";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.4.0";
|
version = "1.5.0";
|
||||||
};
|
};
|
||||||
json = {
|
json = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1538,10 +1579,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0w2pw08b6pc9pm51ix7413jcllaisc06dvwzq0191ag1jsysv220";
|
sha256 = "0kr51hg192mfn5ixngs41f1z8iyik5r6b52chcy8ilfs006fdkgi";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.2.1";
|
version = "3.2.2";
|
||||||
};
|
};
|
||||||
liquid = {
|
liquid = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1684,10 +1725,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "03m3fkix2haah20kvh1jgv262yg9jlzn6wq0y31kafxk8fysfy27";
|
sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.2021.1115";
|
version = "3.2022.0105";
|
||||||
};
|
};
|
||||||
mini_magick = {
|
mini_magick = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1714,20 +1755,20 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
|
sha256 = "0d3ga166pahsxavzwj19yjj4lr13rw1vsb36s2qs8blcxigrdp6z";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.6.1";
|
version = "2.7.1";
|
||||||
};
|
};
|
||||||
minitest = {
|
minitest = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "19z7wkhg59y8abginfrm2wzplz7py3va8fyngiigngqvsws6cwgl";
|
sha256 = "06xf558gid4w8lwx13jwfdafsch9maz8m0g85wnfymqj63x5nbbd";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "5.14.4";
|
version = "5.15.0";
|
||||||
};
|
};
|
||||||
molinillo = {
|
molinillo = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1815,10 +1856,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1ww1mq41q7rda975byjmq5dk8k13v8dawvm33370pbkrymd8syp8";
|
sha256 = "1pcpqw8vjxf2cs97bzzxcz5bh72x6bkayj0vzsilidw90kvrv2ds";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.1.1";
|
version = "1.1.3";
|
||||||
};
|
};
|
||||||
ncursesw = {
|
ncursesw = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1840,6 +1881,39 @@
|
||||||
};
|
};
|
||||||
version = "0.9.0";
|
version = "0.9.0";
|
||||||
};
|
};
|
||||||
|
net-imap = {
|
||||||
|
dependencies = ["digest" "net-protocol" "strscan"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1rl79ykmxa2k4dlk6ykrb9l0a4h101q1gd8c4qv3cl0p9h68zmbn";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.2.3";
|
||||||
|
};
|
||||||
|
net-pop = {
|
||||||
|
dependencies = ["digest" "net-protocol" "timeout"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1slsl3xlbf0cqzmf2q1rfqbm61xvxzmr0h9zprwlbm1xn1cvn9xb";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.1.1";
|
||||||
|
};
|
||||||
|
net-protocol = {
|
||||||
|
dependencies = ["io-wait" "timeout"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "0rrzdar609d8c96ikpw2yif44pp5k3n3cpjld31ia0rgmz9z59gv";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.1.2";
|
||||||
|
};
|
||||||
net-scp = {
|
net-scp = {
|
||||||
dependencies = ["net-ssh"];
|
dependencies = ["net-ssh"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -1851,6 +1925,17 @@
|
||||||
};
|
};
|
||||||
version = "3.0.0";
|
version = "3.0.0";
|
||||||
};
|
};
|
||||||
|
net-smtp = {
|
||||||
|
dependencies = ["digest" "net-protocol" "timeout"];
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "1s358kfv9mnfxcjbpr1d5a2gs1q7wkw7ffpn86mf1b3s9p31bw9s";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.3.1";
|
||||||
|
};
|
||||||
net-ssh = {
|
net-ssh = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -1887,10 +1972,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
|
sha256 = "1zqzawia52cdcmi55lp7v8jmiqyw7pcpwsksqlnirwfm3f7bnf11";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.12.5";
|
version = "1.13.1";
|
||||||
};
|
};
|
||||||
octokit = {
|
octokit = {
|
||||||
dependencies = ["faraday" "sawyer"];
|
dependencies = ["faraday" "sawyer"];
|
||||||
|
@ -1898,10 +1983,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0ak64rb48d8z98nw6q70r6i0i3ivv61iqla40ss5l79491qfnn27";
|
sha256 = "1nmdd7klyinvrrv2mggwwmc99ykaq7i379j00i37hvvaqx4giifj";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.21.0";
|
version = "4.22.0";
|
||||||
};
|
};
|
||||||
opus-ruby = {
|
opus-ruby = {
|
||||||
dependencies = ["ffi"];
|
dependencies = ["ffi"];
|
||||||
|
@ -2003,10 +2088,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1mjjy1grxr64znkffxsvprcckbrrnm40b6gbllnbm7jxslbr3gjl";
|
sha256 = "1rkxhps7fxzjhld68bpdaq8sss2k6fp14jz5kcqgrxp8x3yd15mk";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.4.6";
|
version = "1.4.7";
|
||||||
};
|
};
|
||||||
polyglot = {
|
polyglot = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2056,10 +2141,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "11gczh6fggly245r774yl2phcnh33iv6xpqw7p9dggqrmcyaslq3";
|
sha256 = "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
};
|
};
|
||||||
public_suffix = {
|
public_suffix = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2125,15 +2210,15 @@
|
||||||
version = "1.1.0";
|
version = "1.1.0";
|
||||||
};
|
};
|
||||||
rails = {
|
rails = {
|
||||||
dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
|
dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1y59m2x8rdc581bjgyyr9dabi3vk3frqhhpbb5ldpbj622kxfpbz";
|
sha256 = "1yfqhxa89331mk0z33l12pvzdm4y35fx41kjb2p9jzl06jhz00rz";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
rails-dom-testing = {
|
rails-dom-testing = {
|
||||||
dependencies = ["activesupport" "nokogiri"];
|
dependencies = ["activesupport" "nokogiri"];
|
||||||
|
@ -2158,35 +2243,35 @@
|
||||||
version = "1.4.2";
|
version = "1.4.2";
|
||||||
};
|
};
|
||||||
railties = {
|
railties = {
|
||||||
dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
|
dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor" "zeitwerk"];
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1kwpm068cqys34p2g0j3l1g0cd5f3kxnsay5v7lmbd0sgarac0vy";
|
sha256 = "0gi4q1j3n7vb79ijsqjgy1fnqqxypk4zdj61kic4py19pn6xqaxw";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "6.1.4.1";
|
version = "7.0.1";
|
||||||
};
|
};
|
||||||
rainbow = {
|
rainbow = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
|
sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.0.0";
|
version = "3.1.1";
|
||||||
};
|
};
|
||||||
rake = {
|
rake = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
|
sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "10.5.0";
|
version = "13.0.6";
|
||||||
};
|
};
|
||||||
rb-fsevent = {
|
rb-fsevent = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2340,10 +2425,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0z1qk9i18zma000cqd758av9ca0622ykwp2cwm1x4dv9c0vw03yg";
|
sha256 = "0zxljscsg2sp49s2f80n2rdpbazkf97v3jd2fydm3kgaplcyrh96";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.2.3";
|
version = "4.2.4";
|
||||||
};
|
};
|
||||||
rouge = {
|
rouge = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2393,10 +2478,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1sz9bj4ri28adsklnh257pnbq4r5ayziw02qf67wry0kvzazbb17";
|
sha256 = "1qrj2j9jcd3m4aksk4kbv439882yl3z1harv2jrybrgjgdzdz7zs";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.10.1";
|
version = "3.10.2";
|
||||||
};
|
};
|
||||||
rspec-mocks = {
|
rspec-mocks = {
|
||||||
dependencies = ["diff-lcs" "rspec-support"];
|
dependencies = ["diff-lcs" "rspec-support"];
|
||||||
|
@ -2550,10 +2635,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1v846qs2pa3wnzgz95jzbcdrgl9vyjl65qiscw4q4dvm5sb7j68i";
|
sha256 = "0x00xqq666wfi53w2bb7lgqrr3diyakncbr4sxpbvkd2yvvra913";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
};
|
};
|
||||||
safe_yaml = {
|
safe_yaml = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2625,20 +2710,20 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0hiifw2zm2w00h3c7hfqy9n23q270aq18wwd5fs8wh9f6ap0vjvz";
|
sha256 = "0k7iz98xfv84dkdjk2d90vxnzrjqx20gg6k3fdm45q5rnp2lb9j7";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.11.6";
|
version = "0.11.8";
|
||||||
};
|
};
|
||||||
sequel = {
|
sequel = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0kx1vvld5n51jamvgv4xj14fq9jqw93vjwkalx4809z8jh08znbz";
|
sha256 = "0z0s3xq6dmak96296dchi8j61m0cih7j9pzdpxxsh786vrpznwlj";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "5.51.0";
|
version = "5.52.0";
|
||||||
};
|
};
|
||||||
sequel_pg = {
|
sequel_pg = {
|
||||||
dependencies = ["pg" "sequel"];
|
dependencies = ["pg" "sequel"];
|
||||||
|
@ -2745,28 +2830,6 @@
|
||||||
};
|
};
|
||||||
version = "0.39.17";
|
version = "0.39.17";
|
||||||
};
|
};
|
||||||
sprockets = {
|
|
||||||
dependencies = ["concurrent-ruby" "rack"];
|
|
||||||
groups = ["default"];
|
|
||||||
platforms = [];
|
|
||||||
source = {
|
|
||||||
remotes = ["https://rubygems.org"];
|
|
||||||
sha256 = "0ikgwbl6jv3frfiy3xhg5yxw9d0064rgzghar1rg391xmrc4gm38";
|
|
||||||
type = "gem";
|
|
||||||
};
|
|
||||||
version = "4.0.2";
|
|
||||||
};
|
|
||||||
sprockets-rails = {
|
|
||||||
dependencies = ["actionpack" "activesupport" "sprockets"];
|
|
||||||
groups = ["default"];
|
|
||||||
platforms = [];
|
|
||||||
source = {
|
|
||||||
remotes = ["https://rubygems.org"];
|
|
||||||
sha256 = "1b9i14qb27zs56hlcc2hf139l0ghbqnjpmfi0054dxycaxvk5min";
|
|
||||||
type = "gem";
|
|
||||||
};
|
|
||||||
version = "3.4.2";
|
|
||||||
};
|
|
||||||
sqlite3 = {
|
sqlite3 = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -2777,6 +2840,16 @@
|
||||||
};
|
};
|
||||||
version = "1.4.2";
|
version = "1.4.2";
|
||||||
};
|
};
|
||||||
|
strscan = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "05bzfzfwvs5ngl14yf303nvrg5wjx3srgbjqkki7x65cm66w948p";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "3.0.1";
|
||||||
|
};
|
||||||
taglib-ruby = {
|
taglib-ruby = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -2803,10 +2876,10 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "18yhlvmfya23cs3pvhr1qy38y41b6mhr5q9vwv5lrgk16wmf3jna";
|
sha256 = "0inl77jh4ia03jw3iqm5ipr76ghal3hyjrd6r8zqsswwvi9j2xdi";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.1.0";
|
version = "1.2.1";
|
||||||
};
|
};
|
||||||
thrift = {
|
thrift = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
@ -2828,6 +2901,16 @@
|
||||||
};
|
};
|
||||||
version = "2.0.10";
|
version = "2.0.10";
|
||||||
};
|
};
|
||||||
|
timeout = {
|
||||||
|
groups = ["default"];
|
||||||
|
platforms = [];
|
||||||
|
source = {
|
||||||
|
remotes = ["https://rubygems.org"];
|
||||||
|
sha256 = "10bx1hcyrjqgq6a848fc1i0cgrvx42gcy8hk4vp90y6zc7k8xzbk";
|
||||||
|
type = "gem";
|
||||||
|
};
|
||||||
|
version = "0.2.0";
|
||||||
|
};
|
||||||
tiny_tds = {
|
tiny_tds = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
|
@ -2965,15 +3048,14 @@
|
||||||
version = "1.21.0";
|
version = "1.21.0";
|
||||||
};
|
};
|
||||||
xctasks = {
|
xctasks = {
|
||||||
dependencies = ["nokogiri" "rake"];
|
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1m01vnmdy9m4hn85ajji5v595faqsy8d3a0r646q79vphw1fikj1";
|
sha256 = "1jmxq0dv2q4qs628cykrhsm9piysjsacbq5blsf35a0fj015bw7l";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.6.0";
|
version = "0.2.2";
|
||||||
};
|
};
|
||||||
yard = {
|
yard = {
|
||||||
dependencies = ["webrick"];
|
dependencies = ["webrick"];
|
||||||
|
@ -2991,20 +3073,20 @@
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "18l4r6layck0d80ydc692mv1lxak5xbf6w2paj1x7m2ggbggzxgj";
|
sha256 = "0lmg9x683gr9mkrbq9df2m0zb0650mdfxqna0bs10js44inv7znx";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.5.1";
|
version = "2.5.3";
|
||||||
};
|
};
|
||||||
ZenTest = {
|
ZenTest = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0vkqgajgwmmf2dxfj9h4zs94v3rlvmvb1hcm4wid57dj79y7a0ak";
|
sha256 = "1vss0ldskqprnlvl5pczcl8p346p2ib1sc6hyprbprh6gjq4v16y";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.12.0";
|
version = "4.12.1";
|
||||||
};
|
};
|
||||||
zookeeper = {
|
zookeeper = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
|
Loading…
Reference in a new issue