Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-03-11 12:01:42 +00:00 committed by GitHub
commit 339816cfdf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
89 changed files with 5001 additions and 2991 deletions

1
.gitignore vendored
View File

@ -17,7 +17,6 @@ tags
/doc/NEWS.txt
/doc/manual.html
/doc/manual.pdf
/result
/source/
.version-suffix

View File

@ -9423,6 +9423,13 @@
githubId = 392720;
name = "Jon Banafato";
};
jonas-w = {
email = "nixpkgs@03j.de";
github = "jonas-w";
githubId = 32615971;
name = "Jonas Wunderlich";
matrix = "@matrix:03j.de";
};
jonathanmarler = {
email = "johnnymarler@gmail.com";
github = "marler8997";
@ -10596,6 +10603,12 @@
githubId = 449813;
name = "Roman Kuznetsov";
};
kuznetsss = {
email = "kuzzz99@gmail.com";
github = "kuznetsss";
githubId = 15742918;
name = "Sergey Kuznetsov";
};
kwohlfahrt = {
email = "kai.wohlfahrt@gmail.com";
github = "kwohlfahrt";
@ -19227,6 +19240,12 @@
githubId = 3105057;
name = "Jan Beinke";
};
themaxmur = {
name = "Maxim Muravev";
email = "muravjev.mak@yandex.ru";
github = "TheMaxMur";
githubId = 31189199;
};
thenonameguy = {
email = "thenonameguy24@gmail.com";
name = "Krisztian Szabo";

View File

@ -377,6 +377,9 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
- [Nginx virtual hosts](#opt-services.nginx.virtualHosts) using `forceSSL` or
`globalRedirect` can now have redirect codes other than 301 through
- `bacula` now allows to configure `TLS` for encrypted communication.
`redirectCode`.
- `libjxl` 0.9.0 [dropped support for the butteraugli API](https://github.com/libjxl/libjxl/pull/2576). You will no longer be able to set `enableButteraugli` on `libaom`.

View File

@ -4,11 +4,36 @@
# TODO: test configuration when building nixexpr (use -t parameter)
# TODO: support sqlite3 (it's deprecate?) and mysql
with lib;
let
inherit (lib)
concatStringsSep
literalExpression
mapAttrsToList
mdDoc
mkIf
mkOption
optional
optionalString
types
;
libDir = "/var/lib/bacula";
yes_no = bool: if bool then "yes" else "no";
tls_conf = tls_cfg: optionalString tls_cfg.enable (
concatStringsSep
"\n"
(
["TLS Enable = yes;"]
++ optional (tls_cfg.require != null) "TLS Require = ${yes_no tls_cfg.require};"
++ optional (tls_cfg.certificate != null) ''TLS Certificate = "${tls_cfg.certificate}";''
++ [''TLS Key = "${tls_cfg.key}";'']
++ optional (tls_cfg.verifyPeer != null) "TLS Verify Peer = ${yes_no tls_cfg.verifyPeer};"
++ optional (tls_cfg.allowedCN != [ ]) "TLS Allowed CN = ${concatStringsSep " " (tls_cfg.allowedCN)};"
++ optional (tls_cfg.caCertificateFile != null) ''TLS CA Certificate File = "${tls_cfg.caCertificateFile}";''
)
);
fd_cfg = config.services.bacula-fd;
fd_conf = pkgs.writeText "bacula-fd.conf"
''
@ -18,6 +43,7 @@ let
WorkingDirectory = ${libDir};
Pid Directory = /run;
${fd_cfg.extraClientConfig}
${tls_conf fd_cfg.tls}
}
${concatStringsSep "\n" (mapAttrsToList (name: value: ''
@ -25,6 +51,7 @@ let
Name = "${name}";
Password = ${value.password};
Monitor = ${value.monitor};
${tls_conf value.tls}
}
'') fd_cfg.director)}
@ -44,6 +71,7 @@ let
WorkingDirectory = ${libDir};
Pid Directory = /run;
${sd_cfg.extraStorageConfig}
${tls_conf sd_cfg.tls}
}
${concatStringsSep "\n" (mapAttrsToList (name: value: ''
@ -70,6 +98,7 @@ let
Name = "${name}";
Password = ${value.password};
Monitor = ${value.monitor};
${tls_conf value.tls}
}
'') sd_cfg.director)}
@ -90,6 +119,7 @@ let
Working Directory = ${libDir};
Pid Directory = /run/;
QueryFile = ${pkgs.bacula}/etc/query.sql;
${tls_conf dir_cfg.tls}
${dir_cfg.extraDirectorConfig}
}
@ -108,13 +138,99 @@ let
${dir_cfg.extraConfig}
'';
directorOptions = {...}:
linkOption = name: destination: "[${name}](#opt-${builtins.replaceStrings [ "<" ">"] ["_" "_"] destination})";
tlsLink = destination: submodulePath: linkOption "${submodulePath}.${destination}" "${submodulePath}.${destination}";
tlsOptions = submodulePath: {...}:
{
options = {
enable = mkOption {
type = types.bool;
default = false;
description = mdDoc ''
Specifies if TLS should be enabled.
If this set to `false` TLS will be completely disabled, even if ${tlsLink "tls.require" submodulePath} is true.
'';
};
require = mkOption {
type = types.nullOr types.bool;
default = null;
description = mdDoc ''
Require TLS or TLS-PSK encryption.
This directive is ignored unless one of ${tlsLink "tls.enable" submodulePath} is true or TLS PSK Enable is set to `yes`.
If TLS is not required while TLS or TLS-PSK are enabled, then the Bacula component
will connect with other components either with or without TLS or TLS-PSK
If ${tlsLink "tls.enable" submodulePath} or TLS-PSK is enabled and TLS is required, then the Bacula
component will refuse any connection request that does not use TLS.
'';
};
certificate = mkOption {
type = types.nullOr types.path;
default = null;
description = mdDoc ''
The full path to the PEM encoded TLS certificate.
It will be used as either a client or server certificate,
depending on the connection direction.
This directive is required in a server context, but it may
not be specified in a client context if ${tlsLink "tls.verifyPeer" submodulePath} is
`false` in the corresponding server context.
'';
};
key = mkOption {
type = types.path;
description = mdDoc ''
The path of a PEM encoded TLS private key.
It must correspond to the TLS certificate.
'';
};
verifyPeer = mkOption {
type = types.nullOr types.bool;
default = null;
description = mdDoc ''
Verify peer certificate.
Instructs server to request and verify the client's X.509 certificate.
Any client certificate signed by a known-CA will be accepted.
Additionally, the client's X509 certificate Common Name must meet the value of the Address directive.
If ${tlsLink "tls.allowedCN" submodulePath} is used,
the client's x509 certificate Common Name must also correspond to
one of the CN specified in the ${tlsLink "tls.allowedCN" submodulePath} directive.
This directive is valid only for a server and not in client context.
Standard from Bacula is `true`.
'';
};
allowedCN = mkOption {
type = types.listOf types.str;
default = [ ];
description = mdDoc ''
Common name attribute of allowed peer certificates.
This directive is valid for a server and in a client context.
If this directive is specified, the peer certificate will be verified against this list.
In the case this directive is configured on a server side, the allowed
CN list will not be checked if ${tlsLink "tls.verifyPeer" submodulePath} is false.
'';
};
caCertificateFile = mkOption {
type = types.nullOr types.path;
default = null;
description = mdDoc ''
The path specifying a PEM encoded TLS CA certificate(s).
Multiple certificates are permitted in the file.
One of TLS CA Certificate File or TLS CA Certificate Dir are required in a server context, unless
${tlsLink "tls.verifyPeer" submodulePath} is false, and are always required in a client context.
'';
};
};
};
directorOptions = submodulePath:{...}:
{
options = {
password = mkOption {
type = types.str;
# TODO: required?
description = lib.mdDoc ''
description = mdDoc ''
Specifies the password that must be supplied for the default Bacula
Console to be authorized. The same password must appear in the
Director resource of the Console configuration file. For added
@ -135,7 +251,7 @@ let
type = types.enum [ "no" "yes" ];
default = "no";
example = "yes";
description = lib.mdDoc ''
description = mdDoc ''
If Monitor is set to `no`, this director will have
full access to this Storage daemon. If Monitor is set to
`yes`, this director will only be able to fetch the
@ -146,6 +262,13 @@ let
security problems.
'';
};
tls = mkOption {
type = types.submodule (tlsOptions "${submodulePath}.director.<name>");
description = mdDoc ''
TLS Options for the Director in this Configuration.
'';
};
};
};
@ -154,7 +277,7 @@ let
options = {
changerDevice = mkOption {
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The specified name-string must be the generic SCSI device name of the
autochanger that corresponds to the normal read/write Archive Device
specified in the Device resource. This generic SCSI device name
@ -173,7 +296,7 @@ let
changerCommand = mkOption {
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The name-string specifies an external program to be called that will
automatically change volumes as required by Bacula. Normally, this
directive will be specified only in the AutoChanger resource, which
@ -195,14 +318,14 @@ let
};
devices = mkOption {
description = lib.mdDoc "";
description = mdDoc "";
type = types.listOf types.str;
};
extraAutochangerConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Autochanger directive.
'';
example = ''
@ -219,7 +342,7 @@ let
archiveDevice = mkOption {
# TODO: required?
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The specified name-string gives the system file name of the storage
device managed by this storage daemon. This will usually be the
device file name of a removable storage device (tape drive), for
@ -236,7 +359,7 @@ let
mediaType = mkOption {
# TODO: required?
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The specified name-string names the type of media supported by this
device, for example, `DLT7000`. Media type names are
arbitrary in that you set them to anything you want, but they must be
@ -274,7 +397,7 @@ let
extraDeviceConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Device directive.
'';
example = ''
@ -295,7 +418,7 @@ in {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Whether to enable the Bacula File Daemon.
'';
};
@ -304,7 +427,7 @@ in {
default = "${config.networking.hostName}-fd";
defaultText = literalExpression ''"''${config.networking.hostName}-fd"'';
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The client name that must be used by the Director when connecting.
Generally, it is a good idea to use a name related to the machine so
that error messages can be easily identified if you have multiple
@ -315,7 +438,7 @@ in {
port = mkOption {
default = 9102;
type = types.port;
description = lib.mdDoc ''
description = mdDoc ''
This specifies the port number on which the Client listens for
Director connections. It must agree with the FDPort specified in
the Client resource of the Director's configuration file.
@ -324,16 +447,26 @@ in {
director = mkOption {
default = {};
description = lib.mdDoc ''
description = mdDoc ''
This option defines director resources in Bacula File Daemon.
'';
type = with types; attrsOf (submodule directorOptions);
type = types.attrsOf (types.submodule (directorOptions "services.bacula-fd"));
};
tls = mkOption {
type = types.submodule (tlsOptions "services.bacula-fd");
default = { };
description = mdDoc ''
TLS Options for the File Daemon.
Important notice: The backup won't be encrypted.
'';
};
extraClientConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Client directive.
'';
example = ''
@ -345,7 +478,7 @@ in {
extraMessagesConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Messages directive.
'';
example = ''
@ -358,7 +491,7 @@ in {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Whether to enable Bacula Storage Daemon.
'';
};
@ -367,7 +500,7 @@ in {
default = "${config.networking.hostName}-sd";
defaultText = literalExpression ''"''${config.networking.hostName}-sd"'';
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
Specifies the Name of the Storage daemon.
'';
};
@ -375,7 +508,7 @@ in {
port = mkOption {
default = 9103;
type = types.port;
description = lib.mdDoc ''
description = mdDoc ''
Specifies port number on which the Storage daemon listens for
Director connections.
'';
@ -383,32 +516,32 @@ in {
director = mkOption {
default = {};
description = lib.mdDoc ''
description = mdDoc ''
This option defines Director resources in Bacula Storage Daemon.
'';
type = with types; attrsOf (submodule directorOptions);
type = types.attrsOf (types.submodule (directorOptions "services.bacula-sd"));
};
device = mkOption {
default = {};
description = lib.mdDoc ''
description = mdDoc ''
This option defines Device resources in Bacula Storage Daemon.
'';
type = with types; attrsOf (submodule deviceOptions);
type = types.attrsOf (types.submodule deviceOptions);
};
autochanger = mkOption {
default = {};
description = lib.mdDoc ''
description = mdDoc ''
This option defines Autochanger resources in Bacula Storage Daemon.
'';
type = with types; attrsOf (submodule autochangerOptions);
type = types.attrsOf (types.submodule autochangerOptions);
};
extraStorageConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Storage directive.
'';
example = ''
@ -420,13 +553,21 @@ in {
extraMessagesConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Messages directive.
'';
example = ''
console = all
'';
};
tls = mkOption {
type = types.submodule (tlsOptions "services.bacula-sd");
default = { };
description = mdDoc ''
TLS Options for the Storage Daemon.
Important notice: The backup won't be encrypted.
'';
};
};
@ -434,7 +575,7 @@ in {
enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Whether to enable Bacula Director Daemon.
'';
};
@ -443,7 +584,7 @@ in {
default = "${config.networking.hostName}-dir";
defaultText = literalExpression ''"''${config.networking.hostName}-dir"'';
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
The director name used by the system administrator. This directive is
required.
'';
@ -452,7 +593,7 @@ in {
port = mkOption {
default = 9101;
type = types.port;
description = lib.mdDoc ''
description = mdDoc ''
Specify the port (a positive integer) on which the Director daemon
will listen for Bacula Console connections. This same port number
must be specified in the Director resource of the Console
@ -465,7 +606,7 @@ in {
password = mkOption {
# TODO: required?
type = types.str;
description = lib.mdDoc ''
description = mdDoc ''
Specifies the password that must be supplied for a Director.
'';
};
@ -473,7 +614,7 @@ in {
extraMessagesConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Messages directive.
'';
example = ''
@ -484,7 +625,7 @@ in {
extraDirectorConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration to be passed in Director directive.
'';
example = ''
@ -496,13 +637,22 @@ in {
extraConfig = mkOption {
default = "";
type = types.lines;
description = lib.mdDoc ''
description = mdDoc ''
Extra configuration for Bacula Director Daemon.
'';
example = ''
TODO
'';
};
tls = mkOption {
type = types.submodule (tlsOptions "services.bacula-dir");
default = { };
description = mdDoc ''
TLS Options for the Director.
Important notice: The backup won't be encrypted.
'';
};
};
};

View File

@ -686,6 +686,7 @@ in {
pgbouncer = handleTest ./pgbouncer.nix {};
pgjwt = handleTest ./pgjwt.nix {};
pgmanage = handleTest ./pgmanage.nix {};
pgvecto-rs = handleTest ./pgvecto-rs.nix {};
phosh = handleTest ./phosh.nix {};
photoprism = handleTest ./photoprism.nix {};
php = handleTest ./php {};

View File

@ -0,0 +1,76 @@
# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix
# as it seemed unapproriate to test additional extensions for postgresql there.
{ system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../.. { inherit system config; }
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
let
postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs;
# Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION vectors;
CREATE TABLE items (
id bigserial PRIMARY KEY,
content text NOT NULL,
embedding vectors.vector(3) NOT NULL -- 3 dimensions
);
INSERT INTO items (content, embedding) VALUES
('a fat cat sat on a mat and ate a fat rat', '[1, 2, 3]'),
('a fat dog sat on a mat and ate a fat rat', '[4, 5, 6]'),
('a thin cat sat on a mat and ate a thin rat', '[7, 8, 9]'),
('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]');
'';
make-postgresql-test = postgresql-name: postgresql-package: makeTest {
name = postgresql-name;
meta = with pkgs.lib.maintainers; {
maintainers = [ diogotcorreia ];
};
nodes.machine = { ... }:
{
services.postgresql = {
enable = true;
package = postgresql-package;
extraPlugins = ps: with ps; [
pgvecto-rs
];
settings.shared_preload_libraries = "vectors";
};
};
testScript = ''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql with extension vectors is available just after unit start"):
machine.succeed(check_count("SELECT * FROM pg_available_extensions WHERE name = 'vectors' AND default_version = '${postgresql-package.pkgs.pgvecto-rs.version}';", 1))
machine.succeed("sudo -u postgres psql -f ${test-sql}")
machine.succeed(check_count("SELECT content, embedding FROM items WHERE to_tsvector('english', content) @@ 'cat & rat'::tsquery;", 2))
machine.shutdown()
'';
};
applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "12") postgresql-versions;
in
mapAttrs'
(name: package: {
inherit name;
value = make-postgresql-test name package;
})
applicablePostgresqlVersions

View File

@ -1,6 +1,6 @@
{ lib, stdenv, vscode-utils, callPackage }:
let
version = "1.42.0";
version = "1.48.0";
rescript-editor-analysis = callPackage ./rescript-editor-analysis.nix { inherit version; };
arch =
if stdenv.isLinux then "linux"
@ -13,7 +13,7 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
name = "rescript-vscode";
publisher = "chenglou92";
inherit version;
sha256 = "sha256-Po7zuppr8EHSfg2sDzkNn0KARncsiNVPoRsd25zc/xg=";
sha256 = "sha256-/1nDuj/kSdkV6PlbdlOLfUKQeuvyL2VhPjUAr9kq2NM=";
};
postPatch = ''
rm -r ${analysisDir}

View File

@ -1986,6 +1986,22 @@ let
};
};
hashicorp.hcl = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "HCL";
publisher = "HashiCorp";
version = "0.3.2";
sha256 = "sha256-cxF3knYY29PvT3rkRS8SGxMn9vzt56wwBXpk2PqO0mo=";
};
meta = {
description = "HashiCorp HCL syntax";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=HashiCorp.HCL";
homepage = "https://github.com/hashicorp/vscode-hcl";
license = lib.licenses.mpl20;
maintainers = [ lib.maintainers.themaxmur ];
};
};
hashicorp.terraform = callPackage ./hashicorp.terraform { };
haskell.haskell = buildVscodeMarketplaceExtension {
@ -2971,6 +2987,22 @@ let
};
};
naumovs.theme-oceanicnext = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "theme-oceanicnext";
publisher = "naumovs";
version = "0.0.4";
sha256 = "sha256-romhWL3s0NVZ3kptSNT4/X9WkgakgNNfFElaBCo6jj4=";
};
meta = {
description = "Oceanic Next theme for VSCode + dimmed bg version for better looking UI";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=naumovs.theme-oceanicnext";
homepage = "https://github.com/voronianski/oceanic-next-color-scheme";
license = lib.licenses.unlicense;
maintainers = [ lib.maintainers.themaxmur ];
};
};
njpwerner.autodocstring = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "autodocstring";
@ -3447,8 +3479,8 @@ let
mktplcRef = {
publisher = "shd101wyy";
name = "markdown-preview-enhanced";
version = "0.8.10";
sha256 = "sha256-BjTV2uH9QqCS1VJ94XXgzNMJb4FB4Ee+t/5uAQfJCuM=";
version = "0.8.12";
sha256 = "sha256-4Iq6idux029i7cBV3x79ZRAbSk3ymqx+Q2jv0zV9ZTI=";
};
meta = {
description = "Provides a live preview of markdown using either markdown-it or pandoc";
@ -3730,6 +3762,22 @@ let
};
};
tal7aouy.icons = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "icons";
publisher = "tal7aouy";
version = "3.8.0";
sha256 = "sha256-PdhNFyVUWcOfli/ZlT+6TmtWrV31fBP1E1Vd4QWOY+A=";
};
meta = {
description = "Icons for Visual Studio Code.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=tal7aouy.icons";
homepage = "https://github.com/tal7aouy/vscode-icons";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.themaxmur ];
};
};
tamasfe.even-better-toml = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "even-better-toml";
@ -4063,6 +4111,22 @@ let
};
};
vlanguage.vscode-vlang = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-vlang";
publisher = "vlanguage";
version = "0.1.14";
sha256 = "sha256-hlBALxBs5wZZFk4lgAkdkGs731Xuc2p0qxffOW6mMWQ=";
};
meta = {
description = "V language support (syntax highlighting, formatter, snippets) for Visual Studio Code.";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=vlanguage.vscode-vlang";
homepage = "https://github.com/vlang/vscode-vlang";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.themaxmur ];
};
};
vscjava.vscode-gradle = buildVscodeMarketplaceExtension rec {
mktplcRef = {
name = "vscode-gradle";

View File

@ -55,20 +55,20 @@
"src": {
"owner": "libretro",
"repo": "beetle-pce-libretro",
"rev": "95b5ea18a694f5a05b1c0cda20928c825d981238",
"hash": "sha256-4Y2dyELUGWycCQ1UA0Ov6Ijh1t+KgSL1AtDefbRmjbA="
"rev": "96a654ae2b2df1cc12dc7f1f2d1822db562aa51f",
"hash": "sha256-Tz9FA2Kqu8R2pXSTgbr5Mxu4VKrURWWpy+J3R3/CHpk="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-08"
},
"beetle-pce-fast": {
"fetcher": "fetchFromGitHub",
"src": {
"owner": "libretro",
"repo": "beetle-pce-fast-libretro",
"rev": "28180934e9d7f1a6ec655adde0b81f0b167732ad",
"hash": "sha256-Kt1Bh32zoJynbqp/0ARngPTYHlvp6k/Ya09l8/736gk="
"rev": "f450a7118a3b4e8524cdd915aa610bd364e64dde",
"hash": "sha256-VHW+MJT68wIoSV8H24484uyGK7/cySFMITcpu6zqo3A="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-08"
},
"beetle-pcfx": {
"fetcher": "fetchFromGitHub",
@ -85,10 +85,10 @@
"src": {
"owner": "libretro",
"repo": "beetle-psx-libretro",
"rev": "680bbf0e2a4f9bc2b534d213416456baa9c95212",
"hash": "sha256-QmiCokeMtQC2+cwWFovve2+c3pahD+IdOFBRAXEPV0k="
"rev": "b9018ad9776de0d92d05f6d6c1017f1ac07e9238",
"hash": "sha256-1xxJ33IiTgmqbH4vzEGBc3eKe1Wz67TI1RTiipr9/Cg="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-08"
},
"beetle-saturn": {
"fetcher": "fetchFromGitHub",
@ -115,10 +115,10 @@
"src": {
"owner": "libretro",
"repo": "beetle-supergrafx-libretro",
"rev": "29ff9e00a85db3d462cca42543a84597c421c99c",
"hash": "sha256-UZt1yFcwgdY/TbDs+GQ73Nu5KRA1R8gdKs73IQC1mCg="
"rev": "239d25f4c2bbb6e66d3e48502907d3d611119a22",
"hash": "sha256-8SP/SOJR/5tDkpysYTAuDPeQJCaAVgXE9CieSj1H4ZQ="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-08"
},
"beetle-vb": {
"fetcher": "fetchFromGitHub",
@ -165,10 +165,10 @@
"src": {
"owner": "libretro",
"repo": "bsnes-libretro",
"rev": "9e9b928e0153f663cf4802f266315ab092067b7e",
"hash": "sha256-Fn1bz3TC+8CEmGDNcll0yfzBpDPvfS1vknf49ogNCIQ="
"rev": "9c688ea5cbbb0e8c586414e07305cfbdffbf83e2",
"hash": "sha256-tte90wZfrkkNzjsUhmGGf/eKj6vwskcQAQTdqxg9wkE="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-09"
},
"bsnes-hd": {
"fetcher": "fetchFromGitHub",
@ -287,10 +287,10 @@
"src": {
"owner": "libretro",
"repo": "fbneo",
"rev": "a9c41d1e1132b1a7aad48c0f8e94fcf9c7ba0f9f",
"hash": "sha256-H4pJruHqJ4p3tBykm015U+wApHrAeVaZO9nLJ9Rc0NQ="
"rev": "6fc8060a75fd75c5b292fbef488ed8dd37c7bc34",
"hash": "sha256-Wjh6ab5kLlfX4QVv+d6YgnuvWtDat9wgJ8dQdl7MH2A="
},
"version": "unstable-2024-03-03"
"version": "unstable-2024-03-06"
},
"fceumm": {
"fetcher": "fetchFromGitHub",
@ -307,11 +307,11 @@
"src": {
"owner": "flyinghead",
"repo": "flycast",
"rev": "391da7023f63c2afd32af72ac9f2cfb02bbc7eb6",
"hash": "sha256-fcNpFl6VwaoL2mWZOgyVoJWX9CV2KbWctukdxxo797I=",
"rev": "464defe0d791795553a6cd2f0dbe05b437ecd068",
"hash": "sha256-Gnp8MMerKweUnDg8fIoAF3vkIFVVbQdn3qjxZYLBTEY=",
"fetchSubmodules": true
},
"version": "unstable-2024-03-04"
"version": "unstable-2024-03-10"
},
"fmsx": {
"fetcher": "fetchFromGitHub",
@ -348,20 +348,20 @@
"src": {
"owner": "libretro",
"repo": "gambatte-libretro",
"rev": "9806d3f12bc3a831fad3f71c6fbad6f93d83581c",
"hash": "sha256-EdqS410TZyRqE/nd/oLJt7dauN0DCtNnhB6k6CPd/tc="
"rev": "76c875138f6ffe1b1cf983b49758004cd53785ce",
"hash": "sha256-HcZY/0JK+tqvrI70xzzEkDH8hX4Xk7ojLsSp/a3EWnk="
},
"version": "unstable-2024-03-01"
"version": "unstable-2024-03-08"
},
"genesis-plus-gx": {
"fetcher": "fetchFromGitHub",
"src": {
"owner": "libretro",
"repo": "Genesis-Plus-GX",
"rev": "d434ad9ee418247490a8560b52e0651d25304f35",
"hash": "sha256-v6IYku+9hLlGD0sgkzoatdD7Glp/3pgwBE2K4hdsFec="
"rev": "541229daa9e8f706135531c28c7abec4efd08d48",
"hash": "sha256-0yytgnO6bBt2ssapOu+6S488peeCzKS1fE7Znyk51HA="
},
"version": "unstable-2024-03-02"
"version": "unstable-2024-03-09"
},
"gpsp": {
"fetcher": "fetchFromGitHub",
@ -438,10 +438,10 @@
"src": {
"owner": "libretro",
"repo": "mame2003-plus-libretro",
"rev": "a7cb863de48247c771a0fcc71d519131eae4e9c6",
"hash": "sha256-Y/Zyfck5tJ6oVsL/WjNXJZdPE5THeyBD5tNzJQaLSn8="
"rev": "f8b0565fd3278f2efbc3e68fc929a912645e211b",
"hash": "sha256-jOQxPUTbKQH0PKJSOItEpSHaNPzMlYOJ2CUgzSLHti4="
},
"version": "unstable-2024-03-02"
"version": "unstable-2024-03-10"
},
"mame2010": {
"fetcher": "fetchFromGitHub",
@ -539,10 +539,10 @@
"src": {
"owner": "libretro",
"repo": "mupen64plus-libretro-nx",
"rev": "fa55ddca926d3c3ad2285911646919def4aa6fa3",
"hash": "sha256-Fn/qSQDR8FuHG9eLE0I24wUa0sdosrl6+lhnf9cD+yQ="
"rev": "3f794eec4dc4af2f22ecce507f2da324381d3d92",
"hash": "sha256-xO01TAjW8otnoU8fzmK69BufoQn3eY9BPamc3ISqBn8="
},
"version": "unstable-2024-02-06"
"version": "unstable-2024-03-07"
},
"neocd": {
"fetcher": "fetchFromGitHub",
@ -662,11 +662,11 @@
"src": {
"owner": "hrydgard",
"repo": "ppsspp",
"rev": "0159102a191d43de7ae51775a79846efa2635988",
"hash": "sha256-b7QOOpeoVJUComVOlMtZK8B5w5vkE6rxJVEHecJE19k=",
"rev": "a0aaab9c47bae66fd834354977a562baec581a54",
"hash": "sha256-N+s4BzOsXUMqdOnfy0Th8euaD2EvRoYEie706RNuIoo=",
"fetchSubmodules": true
},
"version": "unstable-2024-02-28"
"version": "unstable-2024-03-10"
},
"prboom": {
"fetcher": "fetchFromGitHub",
@ -793,10 +793,10 @@
"src": {
"owner": "stella-emu",
"repo": "stella",
"rev": "a311e1d714db3837ae4c05e2fab0abcf092a2e54",
"hash": "sha256-QJirSJleSPezNoyH2DKkaoNmGY3r/5J64IHBp+MeFvI="
"rev": "8e8549c1c441e62c2bac0ae5a6489ba3e15412c6",
"hash": "sha256-gcIBtLpfmjPHxnixMOF/onNyIclC8sDrmgTi3zHW0Mc="
},
"version": "unstable-2024-03-03"
"version": "unstable-2024-03-08"
},
"stella2014": {
"fetcher": "fetchFromGitHub",

View File

@ -1,9 +1,10 @@
{ lib
, clangStdenv
, fetchurl
, gnustep
}:
gnustep.gsmakeDerivation rec {
clangStdenv.mkDerivation rec {
pname = "pikopixel";
version = "1.0-b10";
@ -14,6 +15,11 @@ gnustep.gsmakeDerivation rec {
sourceRoot = "PikoPixel.Sources.${version}/PikoPixel";
nativeBuildInputs = [
gnustep.make
gnustep.wrapGNUstepAppsHook
];
buildInputs = [
gnustep.base
gnustep.gui

View File

@ -113,6 +113,8 @@ stdenv.mkDerivation rec {
patches = [
# Fix for webkitgtk linking
./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
# Fix build with cgal-5.6.1+
./meshboolean-const.patch
];
doCheck = true;

View File

@ -0,0 +1,21 @@
Fix build with cgal 5.6.1+
diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp
index 50bbc099..b05245d3 100644
--- a/src/libslic3r/MeshBoolean.cpp
+++ b/src/libslic3r/MeshBoolean.cpp
@@ -200,12 +200,12 @@ indexed_triangle_set cgal_to_indexed_triangle_set(const _Mesh &cgalmesh)
const auto &vertices = cgalmesh.vertices();
int vsize = int(vertices.size());
- for (auto &vi : vertices) {
+ for (const auto &vi : vertices) {
auto &v = cgalmesh.point(vi); // Don't ask...
its.vertices.emplace_back(to_vec3f(v));
}
- for (auto &face : faces) {
+ for (const auto &face : faces) {
auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face));
int i = 0;

View File

@ -4,7 +4,7 @@ let
if stdenv.isLinux then {
stable = "0.0.44";
ptb = "0.0.72";
canary = "0.0.285";
canary = "0.0.294";
development = "0.0.13";
} else {
stable = "0.0.294";
@ -25,7 +25,7 @@ let
};
canary = fetchurl {
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
hash = "sha256-dfBwe/YOzUUAfBrf51mNXtpyGL3Mp235e6TfQM4h04s=";
hash = "sha256-3D48+eg8hqToGepFdQznUTTUu37WRcZJ9kgG+wpxFAE=";
};
development = fetchurl {
url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";

View File

@ -22,6 +22,18 @@ let
ln -sf $out/lib/libssl.so $out/lib/libssl.so.1.0.0
'';
};
opencv4' = symlinkJoin {
name = "opencv4-compat";
nativeBuildInputs = [ makeWrapper ];
paths = [ opencv4 ];
postBuild = ''
for so in ${opencv4}/lib/*.so; do
ln -s "$so" $out/lib/$(basename "$so").407
done
'';
};
in
stdenv.mkDerivation rec {
@ -97,7 +109,7 @@ stdenv.mkDerivation rec {
mesa
nspr
nss
opencv4
opencv4'
openssl'
pango
speex

View File

@ -49,13 +49,13 @@ let
in
stdenv.mkDerivation rec {
pname = "mkvtoolnix";
version = "82.0";
version = "83.0";
src = fetchFromGitLab {
owner = "mbunkus";
repo = "mkvtoolnix";
rev = "release-${version}";
hash = "sha256-3WULzEkjMH4PUETJeKmDKn9PdanWf581O2mI/IqN8YM=";
hash = "sha256-MHi3ewxCn560vpVfOucV34CNj/95U2OFd6bxAjtMBoc=";
};
nativeBuildInputs = [

View File

@ -1,5 +1,5 @@
{ lib
, stdenv
, clangStdenv
, fetchFromGitHub
, gnustep
, libxkbcommon
@ -12,9 +12,10 @@
assert wayland.withLibraries;
let
mkDerivation = if stdenv.isDarwin then stdenv.mkDerivation else gnustep.gsmakeDerivation;
stdenv = clangStdenv;
in
mkDerivation {
stdenv.mkDerivation {
pname = "owl-compositor";
version = "unstable-2021-11-10";
@ -43,6 +44,7 @@ mkDerivation {
darwin.bootstrap_cmds
] ++ lib.optionals (!stdenv.isDarwin) [
gnustep.make
gnustep.wrapGNUstepAppsHook
];
buildInputs = [

View File

@ -7,13 +7,13 @@
buildGoModule rec {
pname = "dmarc-report-converter";
version = "0.6.5";
version = "0.7.0";
src = fetchFromGitHub {
owner = "tierpod";
repo = "dmarc-report-converter";
rev = "v${version}";
hash = "sha256-4rAQhZmqYldilCKomBfuyqS0vcUg5yS4nqp84XSjam4=";
hash = "sha256-doipM3SZmU/QUglN0UA2IpRgrhdMnuCmMPRs0OWRxPE=";
};
vendorHash = null;

View File

@ -21,13 +21,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "feather";
version = "2.6.3";
version = "2.6.4";
src = fetchFromGitHub {
owner = "feather-wallet";
repo = "feather";
rev = finalAttrs.version;
hash = "sha256-pQnaJbKznK1i8wn7t8ZnxLVu1LV/D47krxZZ0j6Mw6g=";
hash = "sha256-NFFIpHyie8jABfmiJP38VbPFjZgaNc+i5JcpbRr+mBU=";
fetchSubmodules = true;
};

View File

@ -0,0 +1,60 @@
{ lib, stdenv, fetchFromGitHub, qt5 }:
stdenv.mkDerivation (finalAttrs: {
pname = "frequest";
version = "1.2a";
srcs = [
(fetchFromGitHub {
owner = "fabiobento512";
name = "frequest";
repo = "FRequest";
rev = "v${finalAttrs.version}";
hash = "sha256-fdn3MK5GWBOhJjpMtRaytO9EsVzz6KJknDhqWtAyXCc=";
})
# The application depends on hard-coded relative paths to ../CommonLibs and ../CommonUtils.
# See https://github.com/fabiobento512/FRequest/wiki/Building-FRequest for more info.
# Upstream provides no tags for these dependencies, use latest commit on their `master` branch.
# Changing the name of these srcs will break the build.
(fetchFromGitHub {
owner = "fabiobento512";
name = "CommonLibs";
repo = "CommonLibs";
rev = "d3906931bb06ddf4194ff711a59e1dcff80fa82f";
hash = "sha256-iLJJ95yJ+VjNPuk8fNEDvYBI0db0rcfJF12a9azGv1Y=";
})
(fetchFromGitHub {
owner = "fabiobento512";
name = "CommonUtils";
repo = "CommonUtils";
rev = "53970984f6538d78350be1b9426032bcb5bcf818";
hash = "sha256-nRv9DriSOuAiWhy+KkOVNEz5oSgNNNJZqk8sNwgbx8U=";
})
];
sourceRoot = "frequest";
buildInputs = [
qt5.qtbase
];
nativeBuildInputs = [
qt5.wrapQtAppsHook
qt5.qmake
];
# Without this, nothing gets installed in $out.
postInstall = ''
install -D FRequest $out/bin/FRequest
install -D LinuxAppImageDeployment/frequest.desktop $out/share/applications/frequest.desktop
install -D LinuxAppImageDeployment/frequest_icon.png $out/share/icons/hicolor/128x128/apps/frequest_icon.png
'';
meta = {
description = "A fast, lightweight and opensource desktop application to make HTTP(s) requests";
homepage = "https://fabiobento512.github.io/FRequest";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ eliandoran ];
platforms = lib.platforms.linux;
mainProgram = "frequest";
};
})

View File

@ -0,0 +1,38 @@
{ lib
, stdenv
, fetchFromGitHub
, rustPlatform
, darwin
, libgit2
, git
, pkg-config
, zlib
}:
rustPlatform.buildRustPackage {
pname = "git-agecrypt";
version = "unstable-2023-07-14";
src = fetchFromGitHub {
owner = "vlaci";
repo = "git-agecrypt";
rev = "945b80556d8848f6e85a8cc0053f9020bdc8b359";
hash = "sha256-6FjyJRYGyZt+uvYjXWvXI7DGq/+BNZHSSAT/DhOsF/E=";
};
cargoHash = "sha256-QCV0DT0kcDRMzVc+9uTn9FYPpf+xvKJbakP6CHRcibo=";
nativeBuildInputs = [ pkg-config git ];
buildInputs = [ libgit2 zlib ]
++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
meta = with lib; {
description = "Alternative to git-crypt using age instead of GPG.";
homepage = "https://github.com/vlaci/git-agecrypt";
license = licenses.mpl20;
maintainers = with maintainers; [ kuznetsss ];
mainProgram = "git-agecrypt";
};
}

View File

@ -5,10 +5,10 @@
let
pname = "jan";
version = "0.4.7";
version = "0.4.8";
src = fetchurl {
url = "https://github.com/janhq/jan/releases/download/v${version}/jan-linux-x86_64-${version}.AppImage";
hash = "sha256-Mn7rIBEf46JbNof8h3z66TGdGKnb0FGMJc46JncA0KM=";
hash = "sha256-8Vi2KK+5Wk/K+RJZ0/cbRUb8L25WEiLdo5ay8+ichdw=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };

View File

@ -11,17 +11,17 @@
rustPlatform.buildRustPackage rec {
pname = "just";
version = "1.25.1";
version = "1.25.2";
outputs = [ "out" "man" "doc" ];
src = fetchFromGitHub {
owner = "casey";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-CvOnvUez2mfta9aXmdsLFxpVB/TGDw0y0ha3OyNJ2DE=";
hash = "sha256-w7tHLjIFnlvyuTw5yG6zxJtQ7oDNdKRXHIRKY638vTo=";
};
cargoHash = "sha256-b4hprcYOcY0z0UnUe3pGc87j+X3n52btYlaCemETLYg=";
cargoHash = "sha256-VL2uNbEtqOv3xmLukhdCmo3lrfx5yFwOAMGwgBlgAVw=";
nativeBuildInputs = [ installShellFiles mdbook ];
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];

View File

@ -0,0 +1,74 @@
{ lib
, stdenv
, fetchFromGitLab
, rustPlatform
, meson
, ninja
, pkg-config
, rustc
, cargo
, wrapGAppsHook4
, desktop-file-utils
, libadwaita
, gst_all_1
, darwin
}:
stdenv.mkDerivation rec {
pname = "kana";
version = "1.4";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "fkinoshita";
repo = "Kana";
rev = "v${version}";
hash = "sha256-/Ri723ub8LMlhbPObC83bay63JuWIQpgxAT5UUYuwZI=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "kana-${version}";
hash = "sha256-Z7DpPe8/Tt8AcLjCwKbwzQTsLe6YvWBCG7DlDkkklew=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
rustc
cargo
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [
libadwaita
] ++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-bad
gst-plugins-good
]) ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Foundation
];
# Workaround for the gettext-sys issue
# https://github.com/Koka/gettext-rs/issues/114
env.NIX_CFLAGS_COMPILE = lib.optionalString
(
stdenv.cc.isClang &&
lib.versionAtLeast stdenv.cc.version "16"
)
"-Wno-error=incompatible-function-pointer-types";
meta = with lib; {
description = "Learn Japanese hiragana and katakana characters";
homepage = "https://gitlab.gnome.org/fkinoshita/kana";
license = licenses.gpl3Plus;
mainProgram = "kana";
maintainers = with maintainers; [ aleksana ];
platforms = platforms.unix;
};
}

View File

@ -15,25 +15,27 @@
, flex
, fontconfig
, freetype
, ghostscript
, glib
, glm
, gmp
, harfbuzz
, hidapi
, lib3mf
, libGL
, libGLU
, libICE
, libSM
, libsForQt5
, libspnav
, libzip
, mesa
, mpfr
, python3
, tbb_2021_8
, wayland
, wayland-protocols
, wrapGAppsHook
, xorg
}:
let
# get cccl from source to avoid license issues
@ -79,24 +81,25 @@ in
# clang consume much less RAM than GCC
clangStdenv.mkDerivation rec {
pname = "openscad-unstable";
version = "2024-02-18";
version = "2024-03-10";
src = fetchFromGitHub {
owner = "openscad";
repo = "openscad";
rev = "f5688998760d6b85d7b280300388448c162edc42";
hash = "sha256-rQnih7Am7NvlrTwIGAN4QbZCcziFm6YOOT27wmjcY8A=";
rev = "db167b1df31fbd8a2101cf3a13dac148b0c2165d";
hash = "sha256-i2ZGYsNfMLDi3wRd/lohs9BuO2KuQ/7kJIXGtV65OQU=";
fetchSubmodules = true;
};
patches = [ ./test.diff ];
nativeBuildInputs = [
pkg-config
cmake
ninja
(python3.withPackages (ps: with ps; [ numpy pillow ]))
bison
cmake
flex
python3
libsForQt5.qt5.wrapQtAppsHook
llvmPackages.bintools
wrapGAppsHook
ninja
pkg-config
];
buildInputs = with libsForQt5; with qt5; [
# manifold dependencies
@ -112,6 +115,7 @@ clangStdenv.mkDerivation rec {
eigen
fontconfig
freetype
ghostscript
glib
gmp
harfbuzz
@ -124,7 +128,15 @@ clangStdenv.mkDerivation rec {
qtbase
qtmultimedia
]
++ lib.optionals clangStdenv.isLinux [ libICE libSM libGLU libGL wayland wayland-protocols qtwayland ]
++ lib.optionals clangStdenv.isLinux [
xorg.libXdmcp
libICE
libSM
wayland
wayland-protocols
qtwayland
libGLU
]
++ lib.optional clangStdenv.isDarwin qtmacextras
;
cmakeFlags = [
@ -133,11 +145,18 @@ clangStdenv.mkDerivation rec {
"-DUSE_BUILTIN_OPENCSG=ON" # bundled latest opencsg
"-DOPENSCAD_VERSION=\"${builtins.replaceStrings ["-"] ["."] version}\""
"-DCMAKE_UNITY_BUILD=ON" # faster build
"-DENABLE_TESTS=OFF" # tests do not work for now
# IPO
"-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld"
"-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON"
];
doCheck = true;
checkPhase = ''
# for running mesa llvmpipe
export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json
export LIBGL_DRIVERS_PATH=${mesa.drivers}/lib:${mesa.drivers}/lib/dri
# some fontconfig issues cause pdf output to have wrong font
ctest -j$NIX_BUILD_CORES -E pdfexporttest.\*
'';
meta = with lib; {
description = "3D parametric model compiler (unstable)";
longDescription = ''

View File

@ -0,0 +1,42 @@
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5c1b40af4..917451dee 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -59,13 +59,14 @@ if(USE_IMAGE_COMPARE_PY)
# Since msys2 on Windows prefers bin/ over Scripts, we need to look for the actual folder to determine
# how to utilize the venv
- find_path(VENV_BIN_PATH activate PATHS "${VENV_DIR}/bin" "${VENV_DIR}/Scripts" NO_DEFAULT_PATH NO_CACHE)
- if(WIN32)
- set(IMAGE_COMPARE_EXE "${VENV_BIN_PATH}/python.exe")
- else()
- set(IMAGE_COMPARE_EXE "${VENV_BIN_PATH}/python")
- endif()
- if(EXISTS "${IMAGE_COMPARE_EXE}")
+ # find_path(VENV_BIN_PATH activate PATHS "${VENV_DIR}/bin" "${VENV_DIR}/Scripts" NO_DEFAULT_PATH NO_CACHE)
+ # if(WIN32)
+ # set(IMAGE_COMPARE_EXE "${VENV_BIN_PATH}/python.exe")
+ # else()
+ # set(IMAGE_COMPARE_EXE "${VENV_BIN_PATH}/python")
+ # endif()
+ set(IMAGE_COMPARE_EXE "python3")
+ # if(EXISTS "${IMAGE_COMPARE_EXE}")
message(STATUS "venv found, testing libraries")
execute_process(
COMMAND "${IMAGE_COMPARE_EXE}" "${CCSD}/image_compare.py" "--status"
@@ -77,10 +78,10 @@ if(USE_IMAGE_COMPARE_PY)
message(STATUS "venv libraries complete")
set(BUILD_VENV FALSE)
endif()
- else()
- message(STATUS "venv not found")
- set(BUILD_VENV TRUE)
- endif()
+ # else()
+ # message(STATUS "venv not found")
+ # set(BUILD_VENV TRUE)
+ # endif()
if(BUILD_VENV)
message(STATUS "Setting up testing venv for image comparison")
execute_process(

View File

@ -0,0 +1,37 @@
{ lib, stdenv, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "reproxy";
version = "1.1.1";
src = fetchFromGitHub {
owner = "umputun";
repo = "reproxy";
rev = "v${version}";
hash = "sha256-/ydpqi7O4z41YxYb/RngPWk/79h3MIxAopzqIDMgw1g=";
};
vendorHash = null;
ldflags = [
"-s" "-w" "-X main.revision=${version}"
];
checkFlags = [
# Requires network access or fluky
"-skip=^Test(_MainWithPlugin|_MainWithSSL|_Main|Http_matchHandler|Http_withBasicAuth|File_Events|File_Events_BusyListener)$"
];
postInstall = ''
mv $out/bin/{app,reproxy}
'';
meta = with lib; {
description = "Simple edge server / reverse proxy";
homepage = "https://reproxy.io/";
changelog = "https://github.com/umputun/reproxy/releases/tag/${src.rev}";
license = licenses.mit;
maintainers = with maintainers; [ sikmir ];
mainProgram = "reproxy";
};
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "tippecanoe";
version = "2.49.0";
version = "2.51.0";
src = fetchFromGitHub {
owner = "felt";
repo = "tippecanoe";
rev = finalAttrs.version;
hash = "sha256-Wu6TSld/mxCb4CFXf2oIZpDvX/j3Ujm7Vli4kp04u7c=";
hash = "sha256-5Cu+0Tn+ExxJTO5AjeTnIJtnpBNKR7nxudD77X696H0=";
};
buildInputs = [ sqlite zlib ];

View File

@ -915,6 +915,7 @@ version = "0.0.1"
dependencies = [
"anyhow",
"cache-key",
"chrono",
"data-encoding",
"distribution-filename",
"fs-err",
@ -972,6 +973,15 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "encoding_rs_io"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83"
dependencies = [
"encoding_rs",
]
[[package]]
name = "equivalent"
version = "1.0.1"
@ -2882,16 +2892,6 @@ dependencies = [
"thiserror",
]
[[package]]
name = "reqwest-netrc"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eca0c58cd4b2978f9697dea94302e772399f559cd175356eb631cb6daaa0b6db"
dependencies = [
"reqwest-middleware",
"rust-netrc",
]
[[package]]
name = "reqwest-retry"
version = "0.3.0"
@ -4179,13 +4179,14 @@ checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
[[package]]
name = "uv"
version = "0.1.16"
version = "0.1.17"
dependencies = [
"anstream",
"anyhow",
"assert_cmd",
"assert_fs",
"base64 0.21.7",
"byteorder",
"chrono",
"clap",
"clap_complete_command",
@ -4282,7 +4283,6 @@ dependencies = [
"tokio",
"toml",
"tracing",
"uv-extract",
"uv-fs",
"uv-interpreter",
"uv-traits",
@ -4318,6 +4318,7 @@ dependencies = [
"async-trait",
"async_http_range_reader",
"async_zip",
"base64 0.21.7",
"cache-key",
"chrono",
"distribution-filename",
@ -4335,10 +4336,10 @@ dependencies = [
"pypi-types",
"reqwest",
"reqwest-middleware",
"reqwest-netrc",
"reqwest-retry",
"rkyv",
"rmp-serde",
"rust-netrc",
"rustc-hash",
"serde",
"serde_json",
@ -4500,10 +4501,12 @@ name = "uv-fs"
version = "0.0.1"
dependencies = [
"dunce",
"encoding_rs_io",
"fs-err",
"fs2",
"junction",
"tempfile",
"tokio",
"tracing",
"urlencoding",
"uv-warnings",
@ -4688,7 +4691,7 @@ dependencies = [
[[package]]
name = "uv-version"
version = "0.1.16"
version = "0.1.17"
[[package]]
name = "uv-virtualenv"

View File

@ -10,13 +10,13 @@
rustPlatform.buildRustPackage rec {
pname = "uv";
version = "0.1.16";
version = "0.1.17";
src = fetchFromGitHub {
owner = "astral-sh";
repo = "uv";
rev = version;
hash = "sha256-CvaYXtgd8eqzPNoXukjPwaoT/QOlUVKYNzD8Db6on9Q=";
hash = "sha256-nXH/9/c2UeG7LOJo0ZnozdI9df5cmVwICvgi0kRjgMU=";
};
cargoLock = {

View File

@ -1,7 +1,11 @@
{ gsmakeDerivation
{ lib
, stdenv
, make
, wrapGNUstepAppsHook
, cairo
, fetchzip
, base, gui
, base
, gui
, fontconfig
, freetype
, pkg-config
@ -9,18 +13,23 @@
, libXmu
}:
gsmakeDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "gnustep-back";
version = "0.30.0";
src = fetchzip {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/${pname}-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-${finalAttrs.version}.tar.gz";
sha256 = "sha256-HD4PLdkE573nPWqFwffUmcHw8VYIl5rLiPKWrbnwpCI=";
};
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ make pkg-config wrapGNUstepAppsHook ];
buildInputs = [ cairo base gui fontconfig freetype libXft libXmu ];
meta = {
description = "A generic backend for GNUstep";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -1,26 +1,40 @@
{ aspell, audiofile
, gsmakeDerivation
{ lib
, stdenv
, aspell
, audiofile
, make
, wrapGNUstepAppsHook
, cups
, fetchzip
, fetchpatch
, gmp, gnutls
, libffi, binutils-unwrapped
, libjpeg, libtiff, libpng, giflib
, libxml2, libxslt, libiconv
, libobjc, libgcrypt
, gmp
, gnutls
, libffi
, binutils-unwrapped
, libjpeg
, libtiff
, libpng
, giflib
, libxml2
, libxslt
, libiconv
, libobjc
, libgcrypt
, icu
, pkg-config, portaudio
, pkg-config
, portaudio
, libiberty
}:
gsmakeDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "gnustep-base";
version = "1.29.0";
src = fetchzip {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/${pname}-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-${finalAttrs.version}.tar.gz";
hash = "sha256-4fjdsLBsYEDxLOFrq17dKii2sLKvOaFCu0cw3qQtM5U=";
};
outputs = [ "out" "dev" "lib" ];
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ pkg-config make wrapGNUstepAppsHook ];
propagatedBuildInputs = [
aspell audiofile
cups
@ -55,7 +69,11 @@ gsmakeDerivation rec {
];
meta = {
changelog = "https://github.com/gnustep/libs-base/releases/tag/base-${builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
description = "An implementation of AppKit and Foundation libraries of OPENSTEP and Cocoa";
changelog = "https://github.com/gnustep/libs-base/releases/tag/base-${builtins.replaceStrings [ "." ] [ "_" ] version}";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -5,18 +5,21 @@
let
callPackage = newScope self;
self = rec {
self = {
stdenv = llvmPackages.stdenv;
gsmakeDerivation = callPackage ./make/gsmakeDerivation.nix {};
wrapGNUstepAppsHook = callPackage ./wrapGNUstepAppsHook.nix {};
make = callPackage ./make {};
libobjc = callPackage ./libobjc2 {};
base = callPackage ./base {};
back = callPackage ./back {};
gui = callPackage ./gui {};
gorm = callPackage ./gorm {};
projectcenter = callPackage ./projectcenter {};
system_preferences = callPackage ./systempreferences {};
libobjc = callPackage ./libobjc2 {};
make = callPackage ./make {};
back = callPackage ./back {};
base = callPackage ./base { };
gui = callPackage ./gui {};
gworkspace = callPackage ./gworkspace {};
};

View File

@ -1,15 +1,31 @@
{ fetchzip, base, back, gsmakeDerivation, gui }:
gsmakeDerivation rec {
{ lib
, stdenv
, fetchzip
, base
, back
, make
, wrapGNUstepAppsHook
, gui
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gorm";
version = "1.3.1";
src = fetchzip {
url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${finalAttrs.version}.tar.gz";
sha256 = "sha256-W+NgbvLjt1PpDiauhzWFaU1/CUhmDACQz+GoyRUyWB8=";
};
nativeBuildInputs = [ make wrapGNUstepAppsHook ];
buildInputs = [ base back gui ];
meta = {
description = "Graphical Object Relationship Modeller is an easy-to-use interface designer for GNUstep";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
mainProgram = "Gorm";
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -1,19 +1,32 @@
{ gsmakeDerivation, fetchzip, base }:
{ lib
, stdenv
, make
, wrapGNUstepAppsHook
, fetchzip
, base
}:
gsmakeDerivation rec {
stdenv.mkDerivation (finalAttrs: {
version = "0.30.0";
pname = "gnustep-gui";
src = fetchzip {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/${pname}-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-${finalAttrs.version}.tar.gz";
sha256 = "sha256-24hL4TeIY6izlhQUcxKI0nXITysAPfRrncRqsDm2zNk=";
};
nativeBuildInputs = [ make wrapGNUstepAppsHook ];
buildInputs = [ base ];
patches = [
./fixup-all.patch
];
meta = {
changelog = "https://github.com/gnustep/libs-gui/releases/tag/gui-${builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
description = "A GUI class library of GNUstep";
changelog = "https://github.com/gnustep/libs-gui/releases/tag/gui-${builtins.replaceStrings [ "." ] [ "_" ] version}";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -1,22 +1,36 @@
{ back, base, gui, gsmakeDerivation
{ lib
, stdenv
, back
, base
, gui
, make
, wrapGNUstepAppsHook
, fetchurl
, system_preferences
}:
let
stdenv.mkDerivation (finalAttrs: {
pname = "gworkspace";
version = "1.0.0";
in
gsmakeDerivation {
name = "gworkspace-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${finalAttrs.version}.tar.gz";
sha256 = "sha256-M7dV7RVatw8gdYHQlRi5wNBd6MGT9GqW04R/DoKNu6I=";
};
# additional dependencies:
# - PDFKit framework from http://gap.nongnu.org/
# - TODO: to --enable-gwmetadata, need libDBKit as well as sqlite!
nativeBuildInputs = [ make wrapGNUstepAppsHook ];
buildInputs = [ back base gui system_preferences ];
configureFlags = [ "--with-inotify" ];
meta = {
description = "A workspace manager for GNUstep";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
mainProgram = "GWorkspace";
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -1,13 +1,17 @@
{ stdenv, lib, fetchFromGitHub, cmake }:
{ lib
, stdenv
, fetchFromGitHub
, cmake
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "libobjc2";
version = "2.1";
src = fetchFromGitHub {
owner = "gnustep";
repo = "libobjc2";
rev = "v${version}";
rev = "v${finalAttrs.version}";
hash = "sha256-iDOVEDnTAfg9r3/kdHp7hzX2oIjO1ovaqgrlIV7V68M=";
fetchSubmodules = true;
};
@ -19,9 +23,9 @@ stdenv.mkDerivation rec {
meta = with lib; {
broken = stdenv.isDarwin;
description = "Objective-C runtime for use with GNUstep";
homepage = "http://gnustep.org/";
homepage = "https://gnustep.github.io/";
license = licenses.mit;
maintainers = with maintainers; [ ashalkhakov matthewbauer ];
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = platforms.unix;
};
}
})

View File

@ -1,127 +0,0 @@
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
source $stdenv/setup
providedPreConfigure="$preConfigure";
preConfigure() {
eval "$providedPreConfigure"
. $GNUSTEP_MAKEFILES/GNUstep.sh
}
wrapGSMake() {
local program="$1"
local config="$2"
local wrapped="$(dirname $program)/.$(basename $program)-wrapped"
mv "$program" "$wrapped"
cat > "$program"<<EOF
#! $SHELL -e
export GNUSTEP_CONFIG_FILE="$config"
exec "$wrapped" "\$@"
EOF
chmod +x "$program"
}
postInstall() {
local conf="$out/share/.GNUstep.conf"
mkdir -p "$out/share"
touch $conf
# add the current package to the paths
local tmp="$out/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp"
fi
tmp="$out/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp"
fi
tmp="$out/lib/GNUstep/WebApplications"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp"
fi
tmp="$out/bin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp"
fi
tmp="$out/sbin"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp"
fi
tmp="$out/lib/GNUstep"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp"
fi
tmp="$out/include"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then
if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then
export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp"
else
export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp"
fi
fi
tmp="$out/lib"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp"
fi
tmp="$out/share/GNUstep/Documentation"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp"
fi
tmp="$out/share/man"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp"
fi
tmp="$out/share/info"
if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp"
fi
# write the config file
echo GNUSTEP_MAKEFILES=$GNUSTEP_MAKEFILES >> $conf
if [ -n "$NIX_GNUSTEP_SYSTEM_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_APPS="$NIX_GNUSTEP_SYSTEM_APPS"
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_ADMIN_APPS="$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_WEB_APPS" ]; then
echo NIX_GNUSTEP_SYSTEM_WEB_APPS="$NIX_GNUSTEP_SYSTEM_WEB_APPS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_TOOLS" ]; then
echo NIX_GNUSTEP_SYSTEM_TOOLS="$NIX_GNUSTEP_SYSTEM_TOOLS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then
echo NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS="$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARY" ]; then
echo NIX_GNUSTEP_SYSTEM_LIBRARY="$NIX_GNUSTEP_SYSTEM_LIBRARY" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then
echo NIX_GNUSTEP_SYSTEM_HEADERS="$NIX_GNUSTEP_SYSTEM_HEADERS" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARIES" ]; then
echo NIX_GNUSTEP_SYSTEM_LIBRARIES="$NIX_GNUSTEP_SYSTEM_LIBRARIES" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC="$NIX_GNUSTEP_SYSTEM_DOC" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_MAN" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC_MAN="$NIX_GNUSTEP_SYSTEM_DOC_MAN" >> $conf
fi
if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_INFO" ]; then
echo NIX_GNUSTEP_SYSTEM_DOC_INFO="$NIX_GNUSTEP_SYSTEM_DOC_INFO" >> $conf
fi
for i in $out/bin/*; do
echo "wrapping $(basename $i)"
wrapGSMake "$i" "$out/share/.GNUstep.conf"
done
}
genericBuild

View File

@ -1,11 +1,16 @@
{ lib, stdenv, fetchurl, clang, which, libobjc }:
{ lib
, stdenv
, fetchurl
, which
, libobjc
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "gnustep-make";
version = "2.9.1";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${finalAttrs.version}.tar.gz";
sha256 = "sha256-w9bnDPFWsn59HtJQHFffP5bidIjOLzUbk+R5xYwB6uc=";
};
@ -22,17 +27,19 @@ stdenv.mkDerivation rec {
"GNUSTEP_INSTALLATION_DOMAIN=SYSTEM"
];
nativeBuildInputs = [ clang which ];
buildInputs = [ libobjc ];
propagatedBuildInputs = [ which ];
patches = [ ./fixup-paths.patch ];
setupHook = ./setup-hook.sh;
meta = {
changelog = "https://github.com/gnustep/tools-make/releases/tag/make-${builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
description = "A build manager for GNUstep";
homepage = "http://gnustep.org/";
changelog = "https://github.com/gnustep/tools-make/releases/tag/make-${builtins.replaceStrings [ "." ] [ "_" ] version}";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer ];
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.unix;
};
}
})

View File

@ -1,19 +0,0 @@
{ lib, stdenv, make, makeWrapper, which }:
{ nativeBuildInputs ? [], ...} @ args:
stdenv.mkDerivation (args // {
nativeBuildInputs = [ makeWrapper make which ] ++ nativeBuildInputs;
builder = ./builder.sh;
setupHook = ./setup-hook.sh;
GNUSTEP_MAKEFILES = "${make}/share/GNUstep/Makefiles";
meta = {
homepage = "http://gnustep.org/";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer ];
platforms = lib.platforms.linux;
} // (lib.optionalAttrs (builtins.hasAttr "meta" args) args.meta);
})

View File

@ -20,62 +20,52 @@ addGnustepInstallFlags() {
preInstallPhases+=" addGnustepInstallFlags"
addEnvVars() {
addGNUstepEnvVars() {
local filename
gsAddToSearchPath() {
if [[ -d "$2" && "${!1-}" != *"$2"* ]]; then
addToSearchPath "$1" "$2"
fi
}
gsAddToIncludeSearchPath() {
local -n ref="$1"
# NOTE: contrary to the one in wrapGNUstepAppsHook, use -e here instead of -d since it's also used for the makefiles
if [[ -e "$2" && "${ref-}" != *"$2"* ]]; then
if [[ "${ref-}" != "" ]]; then
ref+=" "
fi
ref+="$2"
fi
}
for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do
if case "${NIX_GNUSTEP_MAKEFILES_ADDITIONAL-}" in *"{$filename}"*) false;; *) true;; esac; then
export NIX_GNUSTEP_MAKEFILES_ADDITIONAL+=" $filename"
fi
gsAddToIncludeSearchPath NIX_GNUSTEP_MAKEFILES_ADDITIONAL "$filename"
done
local tmp="$1/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp"
fi
tmp="$1/lib/GNUstep/Applications"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp"
fi
tmp="$1/lib/GNUstep/WebApplications"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_WEB_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp"
fi
tmp="$1/bin"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp"
fi
tmp="$1/sbin"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp"
fi
tmp="$1/lib/GNUstep"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARY-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp"
fi
tmp="$1/include"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_HEADERS-}" in *"${tmp}"*) false;; *) true;; esac; then
if [ -z "${NIX_GNUSTEP_SYSTEM_HEADERS-}" ]; then
export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp"
else
export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp"
fi
fi
tmp="$1/lib"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARIES-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp"
fi
tmp="$1/share/GNUstep/Documentation"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp"
fi
tmp="$1/share/man"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_MAN-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp"
fi
tmp="$1/share/info"
if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_INFO-}" in *"${tmp}"*) false;; *) true;; esac; then
addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp"
fi
export NIX_GNUSTEP_MAKEFILES_ADDITIONAL
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$1/lib/GNUstep/Applications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$1/lib/GNUstep/Applications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$1/lib/GNUstep/WebApplications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$1/bin"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$1/sbin"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$1/lib/GNUstep"
gsAddToIncludeSearchPath NIX_GNUSTEP_SYSTEM_HEADERS "$1/include"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$1/lib"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$1/share/GNUstep/Documentation"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$1/share/man"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$1/share/info"
}
addEnvHooks "$targetOffset" addEnvVars
addEnvHooks "$targetOffset" addGNUstepEnvVars
gsmakeSetup() {
export GNUSTEP_MAKEFILES="$(gnustep-config --variable=GNUSTEP_MAKEFILES)"
. $GNUSTEP_MAKEFILES/GNUstep.sh
}
preConfigureHooks+=(gsmakeSetup)

View File

@ -1,4 +0,0 @@
#!/bin/sh
. $GNUSTEP_MAKEFILES/GNUstep.sh
$1

View File

@ -1,21 +1,29 @@
{ lib, fetchFromGitHub
, base, back, gsmakeDerivation, gui, gorm
, gnumake, gdb
{ lib
, stdenv
, fetchFromGitHub
, make
, wrapGNUstepAppsHook
, base
, back
, gui
, gorm
, gnumake
, gdb
}:
let
version = "0.7.0";
in
gsmakeDerivation {
stdenv.mkDerivation (finalAttrs: {
pname = "projectcenter";
inherit version;
version = "0.7.0";
src = fetchFromGitHub {
owner = "gnustep";
repo = "apps-projectcenter";
rev = "projectcenter-${lib.replaceStrings [ "." ] [ "_" ] version}";
rev = "projectcenter-${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
hash = "sha256-uXT2UUvMZNc6Fqi2BUXQimbZk8b3IqXzB+A2btBOmms=";
};
nativeBuildInputs = [ make wrapGNUstepAppsHook ];
# NOTE: need a patch for ProjectCenter to help it locate some necessary tools:
# 1. Framework/PCProjectLauncher.m, locate gdb (say among NIX_GNUSTEP_SYSTEM_TOOLS)
# 2. Framework/PCProjectBuilder.m, locate gmake (similar)
@ -23,5 +31,10 @@ gsmakeDerivation {
meta = {
description = "GNUstep's integrated development environment";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
mainProgram = "ProjectCenter";
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -1,17 +1,31 @@
{ back, base, gui, gsmakeDerivation, fetchurl }:
let
{ lib
, stdenv
, fetchurl
, make
, wrapGNUstepAppsHook
, back
, base
, gui
}:
stdenv.mkDerivation (finalAttrs: {
pname = "system-preferences";
version = "1.2.0";
in
gsmakeDerivation {
name = "system_preferences-${version}";
src = fetchurl {
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${version}.tar.gz";
url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${finalAttrs.version}.tar.gz";
sha256 = "1fg7c3ihfgvl6n21rd17fs9ivx3l8ps874m80vz86n1callgs339";
};
# GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles";
nativeBuildInputs = [ make wrapGNUstepAppsHook ];
buildInputs = [ back base gui ];
# propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui ];
meta = {
description = "The settings manager for the GNUstep environment and its applications";
homepage = "https://gnustep.github.io/";
license = lib.licenses.lgpl2Plus;
mainProgram = "SystemPreferences";
maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ];
platforms = lib.platforms.linux;
};
}
})

View File

@ -0,0 +1,8 @@
{makeBinaryWrapper, makeSetupHook}:
makeSetupHook
{
name = "wrapGNUstepAppsHook";
propagatedBuildInputs = [makeBinaryWrapper];
}
./wrapGNUstepAppsHook.sh

View File

@ -0,0 +1,96 @@
if [[ -z "${__nix_wrapGNUstepAppsHook-}" ]]; then
__nix_wrapGNUstepAppsHook=1 # Don't run this hook more than once.
# Inherit arguments given in mkDerivation
gnustepWrapperArgs=(${gnustepWrapperArgs-})
gnustepConfigVars+=(
GNUSTEP_MAKEFILES
NIX_GNUSTEP_SYSTEM_APPS
NIX_GNUSTEP_SYSTEM_ADMIN_APPS
NIX_GNUSTEP_SYSTEM_WEB_APPS
NIX_GNUSTEP_SYSTEM_TOOLS
NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS
NIX_GNUSTEP_SYSTEM_LIBRARY
NIX_GNUSTEP_SYSTEM_HEADERS
NIX_GNUSTEP_SYSTEM_LIBRARIES
NIX_GNUSTEP_SYSTEM_DOC
NIX_GNUSTEP_SYSTEM_DOC_MAN
NIX_GNUSTEP_SYSTEM_DOC_INFO
)
wrapGNUstepApp() {
wrapProgram "$1" \
--set GNUSTEP_CONFIG_FILE "$out/GNUstep.conf" \
"${gnustepWrapperArgs[@]}"
}
ensureGNUstepConfig() (
if [[ -f "$out/GNUstep.conf" ]]; then
return
fi
echo "writing GNUstep config file"
gsAddToSearchPath() {
if [[ -d "$2" && "${!1-}" != *"$2"* ]]; then
addToSearchPath "$1" "$2"
fi
}
gsAddToIncludeSearchPath() {
local -n ref="$1"
if [[ -d "$2" && "${ref-}" != *"$2"* ]]; then
if [[ "${ref-}" != "" ]]; then
ref+=" "
fi
ref+="$2"
fi
}
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$out/lib/GNUstep/Applications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$out/lib/GNUstep/Applications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$out/lib/GNUstep/WebApplications"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$out/bin"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$out/sbin"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$out/lib/GNUstep"
gsAddToIncludeSearchPath NIX_GNUSTEP_SYSTEM_HEADERS "$out/include"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$out/lib"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$out/share/GNUstep/Documentation"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$out/share/man"
gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$out/share/info"
for var in "${gnustepConfigVars[@]}"; do
if [[ -n "${!var-}" ]]; then
printf '%s="%s"\n' "$var" "${!var}"
fi
done > "$out/GNUstep.conf"
)
# Note: $gnustepWrapperArgs still gets defined even if ${dontWrapGNUstepApps-} is set.
wrapGNUstepAppsHook() {
# skip this hook when requested
[[ -z "${dontWrapGNUstepApps-}" ]] || return 0
# guard against running multiple times (e.g. due to propagation)
[[ -z "$wrapGNUstepAppsHookHasRun" ]] || return 0
wrapGNUstepAppsHookHasRun=1
local targetDirs=("$prefix/bin")
echo "wrapping GNUstep applications in ${targetDirs[@]}"
for targetDir in "${targetDirs[@]}"; do
[[ -d "$targetDir" ]] || continue
while IFS= read -r -d '' file; do
ensureGNUstepConfig
echo "wrapping $file"
wrapGNUstepApp "$file"
done < <(find "$targetDir" ! -type d -executable -print0)
done
}
fixupOutputHooks+=(wrapGNUstepAppsHook)
fi

View File

@ -1,4 +1,4 @@
{ fetchFromGitHub, idris2Packages, makeWrapper }:
{ lib, fetchFromGitHub, idris2Packages, makeWrapper }:
let
globalLibraries = let
@ -40,5 +40,12 @@ let
wrapProgram $out/bin/idris2-lsp \
--suffix IDRIS2_PACKAGE_PATH ':' "${globalLibrariesPath}"
'';
meta = with lib; {
description = "Language Server for Idris2";
homepage = "https://github.com/idris-community/idris2-lsp";
license = licenses.bsd3;
maintainers = with maintainers; [ mattpolzin ];
};
};
in lspPkg.executable

View File

@ -1,4 +1,4 @@
{ lib, buildPackages, callPackage, cargo-auditable, stdenv, runCommand }@prev:
{ lib, buildPackages, callPackage, callPackages, cargo-auditable, stdenv, runCommand }@prev:
{ rustc
, cargo
@ -34,7 +34,7 @@ rec {
};
# Hooks
inherit (callPackage ../../../build-support/rust/hooks {
inherit (callPackages ../../../build-support/rust/hooks {
inherit stdenv cargo rustc;
}) cargoBuildHook cargoCheckHook cargoInstallHook cargoNextestHook cargoSetupHook maturinBuildHook bindgenHook;
}

View File

@ -2,17 +2,17 @@
buildDunePackage rec {
pname = "cry";
version = "1.0.1";
version = "1.0.2";
src = fetchFromGitHub {
owner = "savonet";
repo = "ocaml-cry";
rev = "v${version}";
sha256 = "sha256-wn9hLqbydzFTdYsJ1e76dmDLtwcZ7CGjbzFe5o9veYQ=";
hash = "sha256-wtilYOUOHElW8ZVxolMNomvT//ho2tACmoubEvU2bpQ=";
};
postPatch = ''
substituteInPlace src/dune --replace bytes ""
substituteInPlace src/dune --replace-warn bytes ""
'';
minimalOCamlVersion = "4.12";

View File

@ -1,6 +1,6 @@
{ lib
, ocaml
, version ? if lib.versionAtLeast ocaml.version "5.1" then "0.15" else "0.12"
, version ? if lib.versionAtLeast ocaml.version "5.1" then "1.0" else "0.12"
, buildDunePackage
, bigstringaf
, cstruct
@ -24,9 +24,9 @@ let
minimalOCamlVersion = "5.0";
hash = "sha256-2EhHzoX/t4ZBSWrSS+PGq1zCxohc7a1q4lfsrFnZJqA=";
};
"0.15" = {
"1.0" = {
minimalOCamlVersion = "5.1";
hash = "sha256-gH7O8zfdqEmwXT29F6ko5vXGNudusV4iE2Z8kRJ3GKc=";
hash = "sha256-2iYNnaOLPd6fMWZSogsTomHPkLhaJJisZpt9Vk5hlC0=";
};
}."${version}";
in

View File

@ -17,13 +17,13 @@
buildDunePackage rec {
pname = "eliom";
version = "10.1.2";
version = "10.3.1";
src = fetchFromGitHub {
owner = "ocsigen";
repo = "eliom";
rev = version;
hash = "sha256-Cxwp534ADUO7AHnxZnGsrqxGDkhcJ314M5wytO4e8/0=";
hash = "sha256-REOyxwnQqWOKywVYwN/WP22cNKZv5Nv0OpFVbNBPJN8=";
};
nativeBuildInputs = [

View File

@ -1,5 +1,6 @@
{ lib
, fetchFromGitHub
, fetchpatch
, installShellFiles
, php
, nix-update-script
@ -8,16 +9,25 @@
php.buildComposerProject (finalAttrs: {
pname = "castor";
version = "0.13.1";
version = "0.14.0";
src = fetchFromGitHub {
owner = "jolicode";
repo = "castor";
rev = "v${finalAttrs.version}";
hash = "sha256-Sm6I306iKVr66sBp+ADeTZAKGToVMc+Y/BCymUdszNc=";
hash = "sha256-sSIkXNW6RR1mx15dKouQLMaHBr5FEkTTc/0QIkWV8sg=";
};
vendorHash = "sha256-KbmovAnejShyVclF4IcZ9ckUOWysfEz3DFqE8OxlzI0=";
patches = [
# Upstream lock is invalid. https://github.com/jolicode/castor/issues/319
(fetchpatch {
name = "fix-invalid-lock.patch";
url = "https://github.com/jolicode/castor/commit/5ff0c3ecbdddad20146adbc2f055b83f5aadba0f.patch";
hash = "sha256-1a3Dpk/UXp92Ugw9zSoLPsbWOJEuP2FBWc/pQ/EKwaM=";
})
];
vendorHash = "sha256-HfEjwlkozeuT4LDnYwiCu7T0spcf4GLhkd7Kc1VRnro=";
nativeBuildInputs = [ installShellFiles ];

View File

@ -2,16 +2,16 @@
php.buildComposerProject (finalAttrs: {
pname = "phpstan";
version = "1.10.59";
version = "1.10.60";
src = fetchFromGitHub {
owner = "phpstan";
repo = "phpstan-src";
rev = finalAttrs.version;
hash = "sha256-2+CQtpmh2r2+87zLhx7UkYlZ7sDQdDh4S8v67PGNjLM=";
hash = "sha256-DKrlR3ujHWfbhPMzZhhkUCeTtKW6hpGUe4z7xgzJ4qs=";
};
vendorHash = "sha256-6Wea4iUSFq0xSWFq4er4lzFn2mgeoYBXG1zMGM3Y390=";
vendorHash = "sha256-8CEg1q3K1E9M6gaa5IlSYNPZb+evaY1oxbCnySXuFGE=";
composerStrictValidation = false;
meta = {

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "axis";
version = "52";
version = "53";
pyproject = true;
disabled = pythonOlder "3.11";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "Kane610";
repo = "axis";
rev = "refs/tags/v${version}";
hash = "sha256-L94q3NxnkhYPIiz6p+o071QK2h4u9kSm+EUKdi93JzA=";
hash = "sha256-M5uaRiZP66RApSztvgzzpAUBKCcSCqC6fxzmB52mibY=";
};
postPatch = ''

View File

@ -45,7 +45,7 @@
buildPythonPackage rec {
pname = "mitmproxy";
version = "10.2.3";
version = "10.2.4";
pyproject = true;
disabled = pythonOlder "3.9";
@ -54,7 +54,7 @@ buildPythonPackage rec {
owner = "mitmproxy";
repo = "mitmproxy";
rev = "refs/tags/${version}";
hash = "sha256-hlZ5d4J3SDQp80C8lhwZkms/rc0uj8LslRmBqB5eIEw=";
hash = "sha256-6TPhxprrP6Bgc1yAhN3pBdr98WpvfGnVNvkNtFxROgE=";
};
nativeBuildInputs = [

View File

@ -7,7 +7,7 @@
buildPythonPackage rec {
pname = "pypinyin";
version = "0.50.0";
version = "0.51.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -16,7 +16,7 @@ buildPythonPackage rec {
owner = "mozillazg";
repo = "python-pinyin";
rev = "refs/tags/v${version}";
hash = "sha256-9RnuC9AvTlUtZqep6kn5y1xQcq/dzA9jTZXAsMpKZWc=";
hash = "sha256-kbUVif3a3L7BHj1b37FME5wicalK/iild0pvwPawr6Q=";
};
postPatch = ''

View File

@ -0,0 +1,44 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools
, requests
, paho-mqtt
, cryptography
}:
let
pname = "tuya-device-sharing-sdk";
version = "0.2.0";
in
buildPythonPackage {
inherit pname version;
src = fetchPypi {
inherit pname version;
hash = "sha256-fu8zh59wlnxtstNbNL8mIm10tiXy22oPbi6oUy5x8c8=";
};
# workaround needed, upstream issue: https://github.com/tuya/tuya-device-sharing-sdk/issues/10
postPatch = ''
touch requirements.txt
'';
build-system = [
setuptools
];
dependencies = [
requests
paho-mqtt
cryptography
];
doCheck = false; # no tests
meta = with lib; {
description = "Tuya Device Sharing SDK";
homepage = "https://github.com/tuya/tuya-device-sharing-sdk";
license = licenses.mit;
maintainers = with maintainers; [ aciceri ];
};
}

View File

@ -17,7 +17,7 @@
buildPythonPackage rec {
pname = "xiaomi-ble";
version = "0.26.1";
version = "0.27.0";
pyproject = true;
disabled = pythonOlder "3.9";
@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "Bluetooth-Devices";
repo = "xiaomi-ble";
rev = "refs/tags/v${version}";
hash = "sha256-ENs+n8YgOSQpN+UpYU6CI1McWPyh8hKKMUjPDUYRWjI=";
hash = "sha256-D1LqIdnusCs7vzVCPnbhXqRER/+uPKWoVsfeGe2M6b8=";
};
postPatch = ''

View File

@ -541,6 +541,7 @@ let
bayesWatch = [ pkgs.boost.dev ];
clustermq = [ pkgs.pkg-config ];
coga = [ pkgs.gsl.dev ];
gpg = [ pkgs.gpgme ];
webp = [ pkgs.libwebp ];
RMark = [ pkgs.which ];
RPushbullet = [ pkgs.which ];

View File

@ -1,41 +0,0 @@
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java
index 6fff2af..7e2877e 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java
@@ -47,6 +47,16 @@ public final class PosixLocalEnvProvider implements LocalEnvProvider {
Map<String, String> env, BinTools binTools, String fallbackTmpDir) {
ImmutableMap.Builder<String, String> result = ImmutableMap.builder();
result.putAll(Maps.filterKeys(env, k -> !k.equals("TMPDIR")));
+
+ // In case we are running on NixOS.
+ // If bash is called with an unset PATH on this platform,
+ // it will set it to /no-such-path and default tools will be missings.
+ // See, https://github.com/NixOS/nixpkgs/issues/94222
+ // So we ensure that minimal dependencies are present.
+ if (!env.containsKey("PATH")){
+ result.put("PATH", "@actionsPathPatch@");
+ }
+
String p = clientEnv.get("TMPDIR");
if (Strings.isNullOrEmpty(p)) {
// Do not use `fallbackTmpDir`, use `/tmp` instead. This way if the user didn't export TMPDIR
index 95642767c6..39d3c62461 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/XcodeLocalEnvProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/XcodeLocalEnvProvider.java
@@ -74,6 +74,16 @@ public final class XcodeLocalEnvProvider implements LocalEnvProvider {
ImmutableMap.Builder<String, String> newEnvBuilder = ImmutableMap.builder();
newEnvBuilder.putAll(Maps.filterKeys(env, k -> !k.equals("TMPDIR")));
+
+ // In case we are running on NixOS.
+ // If bash is called with an unset PATH on this platform,
+ // it will set it to /no-such-path and default tools will be missings.
+ // See, https://github.com/NixOS/nixpkgs/issues/94222
+ // So we ensure that minimal dependencies are present.
+ if (!env.containsKey("PATH")){
+ newEnvBuilder.put("PATH", "@actionsPathPatch@");
+ }
+
String p = clientEnv.get("TMPDIR");
if (Strings.isNullOrEmpty(p)) {
// Do not use `fallbackTmpDir`, use `/tmp` instead. This way if the user didn't export TMPDIR

View File

@ -1,662 +0,0 @@
{ stdenv, callPackage, lib, fetchurl, fetchpatch, fetchFromGitHub, installShellFiles
, runCommand, runCommandCC, makeWrapper, recurseIntoAttrs
# this package (through the fixpoint glass)
, bazel_self
, lr, xe, zip, unzip, bash, writeCBin, coreutils
, which, gawk, gnused, gnutar, gnugrep, gzip, findutils
# updater
, python3, writeScript
# Apple dependencies
, cctools, libcxx, CoreFoundation, CoreServices, Foundation
# Allow to independently override the jdks used to build and run respectively
, buildJdk, runJdk
, buildJdkName
, runtimeShell
# Always assume all markers valid (this is needed because we remove markers; they are non-deterministic).
# Also, don't clean up environment variables (so that NIX_ environment variables are passed to compilers).
, enableNixHacks ? false
, gcc-unwrapped
, autoPatchelfHook
, file
, substituteAll
, writeTextFile
}:
let
version = "4.2.2";
sourceRoot = ".";
src = fetchurl {
url = "https://github.com/bazelbuild/bazel/releases/download/${version}/bazel-${version}-dist.zip";
sha256 = "mYHQ1To1bE6HlihHdQqXyegFTkYIVHSABsgPDX4rLTM=";
};
# Update with `eval $(nix-build -A bazel.updater)`,
# then add new dependencies from the dict in ./src-deps.json as required.
srcDeps = lib.attrsets.attrValues srcDepsSet;
srcDepsSet =
let
srcs = lib.importJSON ./src-deps.json;
toFetchurl = d: lib.attrsets.nameValuePair d.name (fetchurl {
urls = d.urls;
sha256 = d.sha256;
});
in builtins.listToAttrs (map toFetchurl [
srcs.desugar_jdk_libs
srcs.io_bazel_skydoc
srcs.bazel_skylib
srcs.io_bazel_rules_sass
srcs.platforms
(if stdenv.hostPlatform.isDarwin
then srcs."java_tools_javac11_darwin-v10.6.zip"
else srcs."java_tools_javac11_linux-v10.6.zip")
srcs."coverage_output_generator-v2.5.zip"
srcs.build_bazel_rules_nodejs
srcs."android_tools_pkg-0.23.0.tar.gz"
srcs.bazel_toolchains
srcs.com_github_grpc_grpc
srcs.upb
srcs.com_google_protobuf
srcs.rules_pkg
srcs.rules_cc
srcs.rules_java
srcs.rules_proto
srcs.com_google_absl
srcs.com_github_google_re2
srcs.com_github_cares_cares
]);
distDir = runCommand "bazel-deps" {} ''
mkdir -p $out
for i in ${builtins.toString srcDeps}; do cp $i $out/$(stripHash $i); done
'';
defaultShellUtils =
# Keep this list conservative. For more exotic tools, prefer to use
# @rules_nixpkgs to pull in tools from the nix repository. Example:
#
# WORKSPACE:
#
# nixpkgs_git_repository(
# name = "nixpkgs",
# revision = "def5124ec8367efdba95a99523dd06d918cb0ae8",
# )
#
# # This defines an external Bazel workspace.
# nixpkgs_package(
# name = "bison",
# repositories = { "nixpkgs": "@nixpkgs//:default.nix" },
# )
#
# some/BUILD.bazel:
#
# genrule(
# ...
# cmd = "$(location @bison//:bin/bison) -other -args",
# tools = [
# ...
# "@bison//:bin/bison",
# ],
# )
[
bash
coreutils
file
findutils
gawk
gnugrep
gnused
gnutar
gzip
python3
unzip
which
zip
];
defaultShellPath = lib.makeBinPath defaultShellUtils;
# Java toolchain used for the build and tests
javaToolchain = "@bazel_tools//tools/jdk:toolchain_${buildJdkName}";
platforms = lib.platforms.linux ++ lib.platforms.darwin;
# This repository is fetched by bazel at runtime
# however it contains prebuilt java binaries, with wrong interpreter
# and libraries path.
# We prefetch it, patch it, and override it in a global bazelrc.
system = if stdenv.hostPlatform.isDarwin then "darwin" else "linux";
# on aarch64 Darwin, `uname -m` returns "arm64"
arch = with stdenv.hostPlatform; if isDarwin && isAarch64 then "arm64" else parsed.cpu.name;
remote_java_tools = stdenv.mkDerivation {
name = "remote_java_tools_${system}";
src = srcDepsSet."java_tools_javac11_${system}-v10.6.zip";
nativeBuildInputs = [ unzip ]
++ lib.optional stdenv.isLinux autoPatchelfHook;
buildInputs = [ gcc-unwrapped ];
sourceRoot = ".";
buildPhase = ''
runHook preBuild
mkdir $out;
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -Ra * $out/
touch $out/WORKSPACE
runHook postInstall
'';
};
bazelRC = writeTextFile {
name = "bazel-rc";
text = ''
startup --server_javabase=${runJdk}
# Can't use 'common'; https://github.com/bazelbuild/bazel/issues/3054
# Most commands inherit from 'build' anyway.
build --distdir=${distDir}
fetch --distdir=${distDir}
query --distdir=${distDir}
build --override_repository=${remote_java_tools.name}=${remote_java_tools}
fetch --override_repository=${remote_java_tools.name}=${remote_java_tools}
query --override_repository=${remote_java_tools.name}=${remote_java_tools}
# Provide a default java toolchain, this will be the same as ${runJdk}
build --host_javabase='@local_jdk//:jdk'
# load default location for the system wide configuration
try-import /etc/bazel.bazelrc
'';
};
in
stdenv.mkDerivation rec {
pname = "bazel";
inherit version;
meta = with lib; {
homepage = "https://github.com/bazelbuild/bazel/";
description = "Build tool that builds code quickly and reliably";
sourceProvenance = with sourceTypes; [
fromSource
binaryBytecode # source bundles dependencies as jars
];
license = licenses.asl20;
maintainers = lib.teams.bazel.members;
inherit platforms;
};
inherit src;
inherit sourceRoot;
patches = [
./upb-clang16.patch
# On Darwin, the last argument to gcc is coming up as an empty string. i.e: ''
# This is breaking the build of any C target. This patch removes the last
# argument if it's found to be an empty string.
../trim-last-argument-to-gcc-if-empty.patch
# On Darwin, using clang 6 to build fails because of a linker error (see #105573),
# but using clang 7 fails because libarclite_macosx.a cannot be found when linking
# the xcode_locator tool.
# This patch removes using the -fobjc-arc compiler option and makes the code
# compile without automatic reference counting. Caveat: this leaks memory, but
# we accept this fact because xcode_locator is only a short-lived process used during the build.
./no-arc.patch
# --experimental_strict_action_env (which may one day become the default
# see bazelbuild/bazel#2574) hardcodes the default
# action environment to a non hermetic value (e.g. "/usr/local/bin").
# This is non hermetic on non-nixos systems. On NixOS, bazel cannot find the required binaries.
# So we are replacing this bazel paths by defaultShellPath,
# improving hermeticity and making it work in nixos.
(substituteAll {
src = ../strict_action_env.patch;
strictActionEnvPatch = defaultShellPath;
})
(substituteAll {
src = ./actions_path.patch;
actionsPathPatch = defaultShellPath;
})
# bazel reads its system bazelrc in /etc
# override this path to a builtin one
(substituteAll {
src = ../bazel_rc.patch;
bazelSystemBazelRCPath = bazelRC;
})
# disable suspend detection during a build inside Nix as this is
# not available inside the darwin sandbox
../bazel_darwin_sandbox.patch
] ++ lib.optional enableNixHacks ../nix-hacks.patch;
# Additional tests that check bazels functionality. Execute
#
# nix-build . -A bazel.tests
#
# in the nixpkgs checkout root to exercise them locally.
passthru.tests =
let
runLocal = name: attrs: script:
let
attrs' = removeAttrs attrs [ "buildInputs" ];
buildInputs = attrs.buildInputs or [];
in
runCommandCC name ({
inherit buildInputs;
preferLocalBuild = true;
meta.platforms = platforms;
} // attrs') script;
# bazel wants to extract itself into $install_dir/install every time it runs,
# so lets do that only once.
extracted = bazelPkg:
let install_dir =
# `install_base` field printed by `bazel info`, minus the hash.
# yes, this path is kinda magic. Sorry.
"$HOME/.cache/bazel/_bazel_nixbld";
in runLocal "bazel-extracted-homedir" { passthru.install_dir = install_dir; } ''
export HOME=$(mktemp -d)
touch WORKSPACE # yeah, everything sucks
install_base="$(${bazelPkg}/bin/bazel info | grep install_base)"
# assert its actually below install_dir
[[ "$install_base" =~ ${install_dir} ]] \
|| (echo "oh no! $install_base but we are \
trying to copy ${install_dir} to $out instead!"; exit 1)
cp -R ${install_dir} $out
'';
bazelTest = { name, bazelScript, workspaceDir, bazelPkg, buildInputs ? [] }:
let
be = extracted bazelPkg;
in runLocal name { inherit buildInputs; } (
# skip extraction caching on Darwin, because nobody knows how Darwin works
(lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
# set up home with pre-unpacked bazel
export HOME=$(mktemp -d)
mkdir -p ${be.install_dir}
cp -R ${be}/install ${be.install_dir}
# https://stackoverflow.com/questions/47775668/bazel-how-to-skip-corrupt-installation-on-centos6
# Bazel checks whether the mtime of the install dir files
# is >9 years in the future, otherwise it extracts itself again.
# see PosixFileMTime::IsUntampered in src/main/cpp/util
# What the hell bazel.
${lr}/bin/lr -0 -U ${be.install_dir} | ${xe}/bin/xe -N0 -0 touch --date="9 years 6 months" {}
'')
+
''
# Note https://github.com/bazelbuild/bazel/issues/5763#issuecomment-456374609
# about why to create a subdir for the workspace.
cp -r ${workspaceDir} wd && chmod u+w wd && cd wd
${bazelScript}
touch $out
'');
bazelWithNixHacks = bazel_self.override { enableNixHacks = true; };
bazel-examples = fetchFromGitHub {
owner = "bazelbuild";
repo = "examples";
rev = "4183fc709c26a00366665e2d60d70521dc0b405d";
sha256 = "1mm4awx6sa0myiz9j4hwp71rpr7yh8vihf3zm15n2ii6xb82r31k";
};
in (lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) {
# `extracted` doesnt work on darwin
shebang = callPackage ../shebang-test.nix { inherit runLocal extracted bazelTest distDir; bazel = bazel_self; };
}) // {
bashTools = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; };
cpp = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self; };
java = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazel_self; };
protobuf = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; };
pythonBinPath = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; bazel = bazel_self; };
bashToolsWithNixHacks = callPackage ../bash-tools-test.nix { inherit runLocal bazelTest distDir; bazel = bazelWithNixHacks; };
cppWithNixHacks = callPackage ../cpp-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazelWithNixHacks; };
javaWithNixHacks = callPackage ../java-test.nix { inherit runLocal bazelTest bazel-examples distDir; bazel = bazelWithNixHacks; };
protobufWithNixHacks = callPackage ../protobuf-test.nix { inherit runLocal bazelTest distDir; bazel = bazelWithNixHacks; };
pythonBinPathWithNixHacks = callPackage ../python-bin-path-test.nix { inherit runLocal bazelTest distDir; bazel = bazelWithNixHacks; };
};
src_for_updater = stdenv.mkDerivation rec {
name = "updater-sources";
inherit src;
nativeBuildInputs = [ unzip ];
inherit sourceRoot;
installPhase = ''
runHook preInstall
cp -r . "$out"
runHook postInstall
'';
};
# update the list of workspace dependencies
passthru.updater = writeScript "update-bazel-deps.sh" ''
#!${runtimeShell}
(cd "${src_for_updater}" &&
BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 \
"${bazel_self}"/bin/bazel \
query 'kind(http_archive, //external:all) + kind(http_file, //external:all) + kind(distdir_tar, //external:all) + kind(git_repository, //external:all)' \
--loading_phase_threads=1 \
--output build) \
| "${python3}"/bin/python3 "${./update-srcDeps.py}" \
"${builtins.toString ./src-deps.json}"
'';
# Necessary for the tests to pass on Darwin with sandbox enabled.
# Bazel starts a local server and needs to bind a local address.
__darwinAllowLocalNetworking = true;
postPatch = let
darwinPatches = ''
bazelLinkFlags () {
eval set -- "$NIX_LDFLAGS"
local flag
for flag in "$@"; do
printf ' -Wl,%s' "$flag"
done
}
# Disable Bazel's Xcode toolchain detection which would configure compilers
# and linkers from Xcode instead of from PATH
export BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
# Explicitly configure gcov since we don't have it on Darwin, so autodetection fails
export GCOV=${coreutils}/bin/false
# Framework search paths aren't added by bintools hook
# https://github.com/NixOS/nixpkgs/pull/41914
export NIX_LDFLAGS+=" -F${CoreFoundation}/Library/Frameworks -F${CoreServices}/Library/Frameworks -F${Foundation}/Library/Frameworks"
# libcxx includes aren't added by libcxx hook
# https://github.com/NixOS/nixpkgs/pull/41589
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -isystem ${lib.getDev libcxx}/include/c++/v1"
# for CLang 16 compatibility in third_party/{zlib}, external/{upb} dependencies
export NIX_CFLAGS_COMPILE+=" -Wno-implicit-function-declaration -Wno-gnu-offsetof-extensions"
# don't use system installed Xcode to run clang, use Nix clang instead
sed -i -E "s;/usr/bin/xcrun (--sdk macosx )?clang;${stdenv.cc}/bin/clang $NIX_CFLAGS_COMPILE $(bazelLinkFlags) -framework CoreFoundation;g" \
scripts/bootstrap/compile.sh \
src/tools/xcode/realpath/BUILD \
src/tools/xcode/stdredirect/BUILD \
tools/osx/BUILD
substituteInPlace scripts/bootstrap/compile.sh --replace ' -mmacosx-version-min=10.9' ""
# nixpkgs's libSystem cannot use pthread headers directly, must import GCD headers instead
sed -i -e "/#include <pthread\/spawn.h>/i #include <dispatch/dispatch.h>" src/main/cpp/blaze_util_darwin.cc
# clang installed from Xcode has a compatibility wrapper that forwards
# invocations of gcc to clang, but vanilla clang doesn't
sed -i -e 's;_find_generic(repository_ctx, "gcc", "CC", overriden_tools);_find_generic(repository_ctx, "clang", "CC", overriden_tools);g' tools/cpp/unix_cc_configure.bzl
sed -i -e 's;/usr/bin/libtool;${cctools}/bin/libtool;g' tools/cpp/unix_cc_configure.bzl
wrappers=( tools/cpp/osx_cc_wrapper.sh tools/cpp/osx_cc_wrapper.sh.tpl )
for wrapper in "''${wrappers[@]}"; do
sed -i -e "s,/usr/bin/install_name_tool,${cctools}/bin/install_name_tool,g" $wrapper
done
'';
genericPatches = ''
# Substitute j2objc and objc wrapper's python shebang to plain python path.
substituteInPlace tools/j2objc/j2objc_header_map.py --replace "$!/usr/bin/python2.7" "#!${python3.interpreter}"
substituteInPlace tools/j2objc/j2objc_wrapper.py --replace "$!/usr/bin/python2.7" "#!${python3.interpreter}"
substituteInPlace tools/objc/j2objc_dead_code_pruner.py --replace "$!/usr/bin/python2.7" "#!${python3.interpreter}"
# md5sum is part of coreutils
sed -i 's|/sbin/md5|md5sum|g' \
src/BUILD third_party/ijar/test/testenv.sh tools/objc/libtool.sh
# replace initial value of pythonShebang variable in BazelPythonSemantics.java
substituteInPlace src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java \
--replace '"#!/usr/bin/env " + pythonExecutableName' "\"#!${python3}/bin/python\""
# substituteInPlace is rather slow, so prefilter the files with grep
grep -rlZ /bin/ src/main/java/com/google/devtools | while IFS="" read -r -d "" path; do
# If you add more replacements here, you must change the grep above!
# Only files containing /bin are taken into account.
substituteInPlace "$path" \
--replace /bin/bash ${bash}/bin/bash \
--replace "/usr/bin/env bash" ${bash}/bin/bash \
--replace "/usr/bin/env python" ${python3}/bin/python \
--replace /usr/bin/env ${coreutils}/bin/env \
--replace /bin/true ${coreutils}/bin/true
done
# bazel test runner include references to /bin/bash
substituteInPlace tools/build_rules/test_rules.bzl \
--replace /bin/bash ${bash}/bin/bash
for i in $(find tools/cpp/ -type f)
do
substituteInPlace $i \
--replace /bin/bash ${bash}/bin/bash
done
# Fixup scripts that generate scripts. Not fixed up by patchShebangs below.
substituteInPlace scripts/bootstrap/compile.sh \
--replace /bin/bash ${bash}/bin/bash
# add nix environment vars to .bazelrc
cat >> .bazelrc <<EOF
# Limit the resources Bazel is allowed to use during the build to 1/2 the
# available RAM and 3/4 the available CPU cores. This should help avoid
# overwhelming the build machine.
build --local_ram_resources=HOST_RAM*.5
build --local_cpu_resources=HOST_CPUS*.75
build --distdir=${distDir}
fetch --distdir=${distDir}
build --copt="$(echo $NIX_CFLAGS_COMPILE | sed -e 's/ /" --copt="/g')"
build --host_copt="$(echo $NIX_CFLAGS_COMPILE | sed -e 's/ /" --host_copt="/g')"
build --linkopt="$(echo $(< ${stdenv.cc}/nix-support/libcxx-ldflags) | sed -e 's/ /" --linkopt="/g')"
build --host_linkopt="$(echo $(< ${stdenv.cc}/nix-support/libcxx-ldflags) | sed -e 's/ /" --host_linkopt="/g')"
build --linkopt="-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --linkopt="-Wl,/g')"
build --host_linkopt="-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --host_linkopt="-Wl,/g')"
build --host_javabase='@local_jdk//:jdk'
build --host_java_toolchain='${javaToolchain}'
build --verbose_failures
build --curses=no
EOF
# add the same environment vars to compile.sh
sed -e "/\$command \\\\$/a --copt=\"$(echo $NIX_CFLAGS_COMPILE | sed -e 's/ /" --copt=\"/g')\" \\\\" \
-e "/\$command \\\\$/a --host_copt=\"$(echo $NIX_CFLAGS_COMPILE | sed -e 's/ /" --host_copt=\"/g')\" \\\\" \
-e "/\$command \\\\$/a --linkopt=\"$(echo $(< ${stdenv.cc}/nix-support/libcxx-ldflags) | sed -e 's/ /" --linkopt=\"/g')\" \\\\" \
-e "/\$command \\\\$/a --host_linkopt=\"$(echo $(< ${stdenv.cc}/nix-support/libcxx-ldflags) | sed -e 's/ /" --host_linkopt=\"/g')\" \\\\" \
-e "/\$command \\\\$/a --linkopt=\"-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --linkopt=\"-Wl,/g')\" \\\\" \
-e "/\$command \\\\$/a --host_linkopt=\"-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --host_linkopt=\"-Wl,/g')\" \\\\" \
-e "/\$command \\\\$/a --host_javabase='@local_jdk//:jdk' \\\\" \
-e "/\$command \\\\$/a --host_java_toolchain='${javaToolchain}' \\\\" \
-e "/\$command \\\\$/a --verbose_failures \\\\" \
-e "/\$command \\\\$/a --curses=no \\\\" \
-i scripts/bootstrap/compile.sh
# This is necessary to avoid:
# "error: no visible @interface for 'NSDictionary' declares the selector
# 'initWithContentsOfURL:error:'"
# This can be removed when the apple_sdk is upgraded beyond 10.13+
sed -i '/initWithContentsOfURL:versionPlistUrl/ {
N
s/error:nil\];/\];/
}' tools/osx/xcode_locator.m
# append the PATH with defaultShellPath in tools/bash/runfiles/runfiles.bash
echo "PATH=\$PATH:${defaultShellPath}" >> runfiles.bash.tmp
cat tools/bash/runfiles/runfiles.bash >> runfiles.bash.tmp
mv runfiles.bash.tmp tools/bash/runfiles/runfiles.bash
patchShebangs .
'';
in lib.optionalString stdenv.hostPlatform.isDarwin darwinPatches
+ genericPatches;
buildInputs = [buildJdk] ++ defaultShellUtils;
# when a command cant be found in a bazel build, you might also
# need to add it to `defaultShellPath`.
nativeBuildInputs = [
installShellFiles
makeWrapper
python3
unzip
which
zip
python3.pkgs.absl-py # Needed to build fish completion
] ++ lib.optionals (stdenv.isDarwin) [ cctools libcxx CoreFoundation CoreServices Foundation ];
# Bazel makes extensive use of symlinks in the WORKSPACE.
# This causes problems with infinite symlinks if the build output is in the same location as the
# Bazel WORKSPACE. This is why before executing the build, the source code is moved into a
# subdirectory.
# Failing to do this causes "infinite symlink expansion detected"
preBuildPhases = ["preBuildPhase"];
preBuildPhase = ''
mkdir bazel_src
shopt -s dotglob extglob
mv !(bazel_src) bazel_src
'';
buildPhase = ''
runHook preBuild
# Increasing memory during compilation might be necessary.
# export BAZEL_JAVAC_OPTS="-J-Xmx2g -J-Xms200m"
# If EMBED_LABEL isn't set, it'd be auto-detected from CHANGELOG.md
# and `git rev-parse --short HEAD` which would result in
# "3.7.0- (@non-git)" due to non-git build and incomplete changelog.
# Actual bazel releases use scripts/release/common.sh which is based
# on branch/tag information which we don't have with tarball releases.
# Note that .bazelversion is always correct and is based on bazel-*
# executable name, version checks should work fine
export EMBED_LABEL="${version}- (@non-git)"
${bash}/bin/bash ./bazel_src/compile.sh
./bazel_src/scripts/generate_bash_completion.sh \
--bazel=./bazel_src/output/bazel \
--output=./bazel_src/output/bazel-complete.bash \
--prepend=./bazel_src/scripts/bazel-complete-header.bash \
--prepend=./bazel_src/scripts/bazel-complete-template.bash
${python3}/bin/python3 ./bazel_src/scripts/generate_fish_completion.py \
--bazel=./bazel_src/output/bazel \
--output=./bazel_src/output/bazel-complete.fish
# need to change directory for bazel to find the workspace
cd ./bazel_src
# build execlog tooling
export HOME=$(mktemp -d)
./output/bazel build src/tools/execlog:parser_deploy.jar
cd -
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
# official wrapper scripts that searches for $WORKSPACE_ROOT/tools/bazel
# if it cant find something in tools, it calls $out/bin/bazel-{version}-{os_arch}
# The binary _must_ exist with this naming if your project contains a .bazelversion
# file.
cp ./bazel_src/scripts/packages/bazel.sh $out/bin/bazel
wrapProgram $out/bin/bazel $wrapperfile --suffix PATH : ${defaultShellPath}
mv ./bazel_src/output/bazel $out/bin/bazel-${version}-${system}-${arch}
mkdir $out/share
cp ./bazel_src/bazel-bin/src/tools/execlog/parser_deploy.jar $out/share/parser_deploy.jar
cat <<EOF > $out/bin/bazel-execlog
#!${runtimeShell} -e
${runJdk}/bin/java -jar $out/share/parser_deploy.jar \$@
EOF
chmod +x $out/bin/bazel-execlog
# shell completion files
installShellCompletion --bash \
--name bazel.bash \
./bazel_src/output/bazel-complete.bash
installShellCompletion --zsh \
--name _bazel \
./bazel_src/scripts/zsh_completion/_bazel
installShellCompletion --fish \
--name bazel.fish \
./bazel_src/output/bazel-complete.fish
'';
# Install check fails on `aarch64-darwin`
# https://github.com/NixOS/nixpkgs/issues/145587
doInstallCheck = stdenv.hostPlatform.system != "aarch64-darwin";
installCheckPhase = ''
export TEST_TMPDIR=$(pwd)
hello_test () {
$out/bin/bazel test \
--test_output=errors \
--java_toolchain='${javaToolchain}' \
examples/cpp:hello-success_test \
examples/java-native/src/test/java/com/example/myproject:hello
}
cd ./bazel_src
# test whether $WORKSPACE_ROOT/tools/bazel works
mkdir -p tools
cat > tools/bazel <<"EOF"
#!${runtimeShell} -e
exit 1
EOF
chmod +x tools/bazel
# first call should fail if tools/bazel is used
! hello_test
cat > tools/bazel <<"EOF"
#!${runtimeShell} -e
exec "$BAZEL_REAL" "$@"
EOF
# second call succeeds because it defers to $out/bin/bazel-{version}-{os_arch}
hello_test
runHook postInstall
'';
# Save paths to hardcoded dependencies so Nix can detect them.
# This is needed because the templates get tard up into a .jar.
postFixup = ''
mkdir -p $out/nix-support
echo "${defaultShellPath}" >> $out/nix-support/depends
# The string literal specifying the path to the bazel-rc file is sometimes
# stored non-contiguously in the binary due to gcc optimisations, which leads
# Nix to miss the hash when scanning for dependencies
echo "${bazelRC}" >> $out/nix-support/depends
'' + lib.optionalString stdenv.isDarwin ''
echo "${cctools}" >> $out/nix-support/depends
'';
dontStrip = true;
dontPatchELF = true;
}

View File

@ -1,34 +0,0 @@
--- a/tools/osx/xcode_locator.m 2020-12-10 13:27:29.000000000 +0100
+++ b/tools/osx/xcode_locator.m 2021-02-01 09:09:32.159557051 +0100
@@ -21,10 +21,6 @@
// 6,6.4,6.4.1 = 6.4.1
// 6.3,6.3.0 = 6.3
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
#import <CoreServices/CoreServices.h>
#import <Foundation/Foundation.h>
--- a/tools/osx/xcode_configure.bzl 1980-01-01 01:00:00.000000000 +0100
+++ b/tools/osx/xcode_configure.bzl 2021-02-01 09:36:57.773418444 +0100
@@ -123,7 +123,6 @@
"macosx",
"clang",
"-mmacosx-version-min=10.9",
- "-fobjc-arc",
"-framework",
"CoreServices",
"-framework",
--- a/tools/osx/BUILD 2021-02-01 11:01:02.191659553 +0100
+++ b/tools/osx/BUILD 2021-02-01 11:04:29.735071019 +0100
@@ -27,7 +27,7 @@
])
DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
- /usr/bin/xcrun --sdk macosx clang -mmacosx-version-min=10.9 -fobjc-arc -framework CoreServices \
+ /usr/bin/xcrun --sdk macosx clang -mmacosx-version-min=10.9 -framework CoreServices \
-framework Foundation -o $@ $<
"""

View File

@ -1,57 +0,0 @@
diff --git a/WORKSPACE b/WORKSPACE
index 2d995f095e..55fddef663 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1232,7 +1232,7 @@ register_toolchains("//src/main/res:empty_rc_toolchain")
http_archive(
name = "com_github_grpc_grpc",
patch_args = ["-p1"],
- patches = ["//third_party/grpc:grpc_1.33.1.patch"],
+ patches = ["//third_party/grpc:grpc_1.33.1.patch", "//:grpc-upb-clang16.patch"],
sha256 = "58eaee5c0f1bd0b92ebe1fa0606ec8f14798500620e7444726afcaf65041cb63",
strip_prefix = "grpc-1.33.1",
urls = [
diff --git a/grpc-upb-clang16.patch b/grpc-upb-clang16.patch
new file mode 100644
index 0000000000..ae6a7ad0e0
--- /dev/null
+++ b/grpc-upb-clang16.patch
@@ -0,0 +1,13 @@
+diff -r -u a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl
+--- a/bazel/grpc_deps.bzl
++++ b/bazel/grpc_deps.bzl
+@@ -285,6 +285,8 @@
+ name = "upb",
+ sha256 = "7992217989f3156f8109931c1fc6db3434b7414957cb82371552377beaeb9d6c",
+ strip_prefix = "upb-382d5afc60e05470c23e8de19b19fc5ad231e732",
++ patches = ["//:upb-clang16.patch"],
++ patch_args = ["-p1"],
+ urls = [
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/protocolbuffers/upb/archive/382d5afc60e05470c23e8de19b19fc5ad231e732.tar.gz",
+ "https://github.com/protocolbuffers/upb/archive/382d5afc60e05470c23e8de19b19fc5ad231e732.tar.gz",
+
diff --git a/upb-clang16.patch b/upb-clang16.patch
new file mode 100644
index 0000000000..b799737fac
--- /dev/null
+++ b/upb-clang16.patch
@@ -0,0 +1,18 @@
+--- a/BUILD
++++ b/BUILD
+@@ -34,6 +34,7 @@
+ "-Wextra",
+ # "-Wshorten-64-to-32", # not in GCC (and my Kokoro images doesn't have Clang)
+ "-Werror",
++ "-Wno-gnu-offsetof-extensions",
+ "-Wno-long-long",
+ # copybara:strip_end
+ ]
+@@ -42,6 +43,7 @@
+ # copybara:strip_for_google3_begin
+ "-pedantic",
+ "-Werror=pedantic",
++ "-Wno-gnu-offsetof-extensions",
+ "-Wstrict-prototypes",
+ # copybara:strip_end
+ ]

View File

@ -1,54 +0,0 @@
#!/usr/bin/env python3
import sys
import json
if len(sys.argv) != 2:
print("usage: ./this-script src-deps.json < WORKSPACE", file=sys.stderr)
print("Takes the bazel WORKSPACE file and reads all archives into a json dict (by evaling it as python code)", file=sys.stderr)
print("Hail Eris.", file=sys.stderr)
sys.exit(1)
http_archives = []
# just the kw args are the dict { name, sha256, urls … }
def http_archive(**kw):
http_archives.append(kw)
# like http_file
def http_file(**kw):
http_archives.append(kw)
# this is inverted from http_archive/http_file and bundles multiple archives
def distdir_tar(**kw):
for archive_name in kw['archives']:
http_archives.append({
"name": archive_name,
"sha256": kw['sha256'][archive_name],
"urls": kw['urls'][archive_name]
})
# TODO?
def git_repository(**kw):
print(json.dumps(kw, sort_keys=True, indent=4), file=sys.stderr)
sys.exit(1)
# execute the WORKSPACE like it was python code in this module,
# using all the function stubs from above.
exec(sys.stdin.read())
# transform to a dict with the names as keys
d = { el['name']: el for el in http_archives }
def has_urls(el):
return ('url' in el and el['url']) or ('urls' in el and el['urls'])
def has_sha256(el):
return 'sha256' in el and el['sha256']
bad_archives = list(filter(lambda el: not has_urls(el) or not has_sha256(el), d.values()))
if bad_archives:
print('Following bazel dependencies are missing url or sha256', file=sys.stderr)
print('Check bazel sources for master or non-checksummed dependencies', file=sys.stderr)
for el in bad_archives:
print(json.dumps(el, sort_keys=True, indent=4), file=sys.stderr)
sys.exit(1)
with open(sys.argv[1], "w") as f:
print(json.dumps(d, sort_keys=True, indent=4), file=f)

View File

@ -9,16 +9,16 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-deny";
version = "0.14.15";
version = "0.14.16";
src = fetchFromGitHub {
owner = "EmbarkStudios";
repo = "cargo-deny";
rev = version;
hash = "sha256-soDLgxEbeNk8mQHwUzBZK5QqTURzXQKZb2LtJA6fnhc=";
hash = "sha256-Evvr9In/ny+yQP77u47uTCWCtRqg/l9B5y79va8oMbw=";
};
cargoHash = "sha256-XblrLV3AMmFFXOr3K/Sq4Vb6MknI7H92H/bDvUEUOko=";
cargoHash = "sha256-JgI4Tbl0C0lJEOMRwVjo9h6fuUL0u0mICGLsx8/0dMc=";
nativeBuildInputs = [
pkg-config

View File

@ -16,12 +16,12 @@
}:
let
version = "2.3.1";
version = "2.4";
prebuilt_server = fetchurl {
name = "scrcpy-server";
inherit version;
url = "https://github.com/Genymobile/scrcpy/releases/download/v${version}/scrcpy-server-v${version}";
hash = "sha256-9oFIIvwwinpTLyU0hckDgYPGKWpsXfRwqeODtPjnYFs=";
hash = "sha256-k8Jyt0OGBcBV4Sf3REBk7Xj6nKSfgRVnd/0gHnnOe6M=";
};
in
stdenv.mkDerivation rec {
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
owner = "Genymobile";
repo = "scrcpy";
rev = "refs/tags/v${version}";
hash = "sha256-RM29WjzsYnn26x/Xr2RKp0p87/v+Jl8skEcAwxhZEtU=";
hash = "sha256-x1feZgCR3ZUi40/YZSjDULYk4W9Pjo17cn8RqcOoeoE=";
};
# display.c: When run without a hardware accelerator, this allows the command to continue working rather than failing unexpectedly.

View File

@ -2,20 +2,16 @@
stdenv.mkDerivation rec {
pname = "ch9344";
version = "1.9";
version = "2.0";
src = fetchzip {
name = "CH9344SER_LINUX.zip";
url = "https://www.wch.cn/downloads/file/386.html#CH9344SER_LINUX.zip";
hash = "sha256-g55ftAfjKKlUFzGhI1a/O7Eqbz6rkGf1vWuEJjBZxBE=";
hash = "sha256-YKNMYpap7CjhgTIpd/M9+nB11NtpwGYT/P14J6q3XZg=";
};
patches = lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.1") [
# https://github.com/torvalds/linux/commit/a8c11c1520347be74b02312d10ef686b01b525f1
patches = [
./fix-incompatible-pointer-types.patch
] ++ lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.3") [
# https://github.com/torvalds/linux/commit/5d420399073770134d2b03e004b2c0201c7fa26f
./fix-incompatible-pointer-types_6_3.patch
];
sourceRoot = "${src.name}/driver";

View File

@ -1,22 +1,16 @@
diff --git a/ch9344.c b/ch9344.c
index 1e37293..a16af82 100644
index bfa10bb..76a94a7 100644
--- a/ch9344.c
+++ b/ch9344.c
@@ -79,7 +79,7 @@ static DEFINE_IDR(ch9344_minors);
static DEFINE_MUTEX(ch9344_minors_lock);
static void ch9344_tty_set_termios(struct tty_struct *tty,
- struct ktermios *termios_old);
+ const struct ktermios *termios_old);
static int ch9344_get_portnum(int index);
@@ -1597,7 +1597,7 @@ u8 cal_recv_tmt(__le32 bd)
@@ -837,7 +837,11 @@ static void ch9344_tty_close(struct tty_struct *tty, struct file *filp)
}
}
static void ch9344_tty_set_termios(struct tty_struct *tty,
- struct ktermios *termios_old)
+ const struct ktermios *termios_old)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
+static ssize_t ch9344_tty_write(struct tty_struct *tty, const u8 *buf, size_t count)
+#else
static int ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, int count)
+#endif
{
struct ch9344 *ch9344 = tty->driver_data;
struct ktermios *termios = &tty->termios;
struct ch9344 *ch9344 = tty->driver_data;
int stat;

View File

@ -1,13 +0,0 @@
diff --git a/ch9344.c b/ch9344.c
index a16af82..8922ed9 100644
--- a/ch9344.c
+++ b/ch9344.c
@@ -774,7 +774,7 @@ static inline void *tty_get_portdata(struct ch9344_ttyport *port)
return (port->portdata);
}
-static void ch9344_port_dtr_rts(struct tty_port *port, int raise)
+static void ch9344_port_dtr_rts(struct tty_port *port, bool raise)
{
struct ch9344_ttyport *ttyport = container_of(port, struct ch9344_ttyport, port);
struct ch9344 *ch9344 = tty_get_portdata(ttyport);

View File

@ -4,9 +4,9 @@ let
# comments with variant added for update script
# ./update-zen.py zen
zenVariant = {
version = "6.7.9"; #zen
version = "6.8"; #zen
suffix = "zen1"; #zen
sha256 = "0g20hx5jhs99gm7bc3b99x6cg3hkx6r91dnxjzbplinzgh2kp0pz"; #zen
sha256 = "19rsi8747xw5lsq4pwizq2va6inmwrywgy8b5f2ppcd6ny0whn1i"; #zen
isLqx = false;
};
# ./update-zen.py lqx

View File

@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, cmake, kernel, installShellFiles, pkg-config
, luajit, ncurses, perl, jsoncpp, openssl, curl, jq, gcc, elfutils, tbb, protobuf, grpc
, yaml-cpp, nlohmann_json, re2, zstd, uthash, fetchpatch, fetchurl
, yaml-cpp, nlohmann_json, re2, zstd, uthash
}:
let
@ -26,13 +26,13 @@ let
in
stdenv.mkDerivation rec {
pname = "sysdig";
version = "0.35.1";
version = "0.35.3";
src = fetchFromGitHub {
owner = "draios";
repo = "sysdig";
rev = version;
hash = "sha256-nSCkKwhdEduepyvcyWEKMQtQ6TfhF3GnTSreRVoarsw=";
hash = "sha256-wvCnWzQbkkM8qEG93li22P67WX1bGX9orTk+2vsBHZY=";
};
nativeBuildInputs = [ cmake perl installShellFiles pkg-config ];

View File

@ -9,11 +9,11 @@ let
owner = "superseriousbusiness";
repo = "gotosocial";
version = "0.13.3";
version = "0.14.1";
web-assets = fetchurl {
url = "https://github.com/${owner}/${repo}/releases/download/v${version}/${repo}_${version}_web-assets.tar.gz";
hash = "sha256-xC1Acm/CJHXTblV8E63vZB+r/ktBH7EytL7x4eWGko8=";
hash = "sha256-cNO0LuTzgx3CAP+qjTBZ9Fgs4jrH3ypZREpKKipOJDA=";
};
in
buildGoModule rec {
@ -23,7 +23,7 @@ buildGoModule rec {
src = fetchFromGitHub {
inherit owner repo;
rev = "refs/tags/v${version}";
hash = "sha256-zjmIa25veVL0ruFow4c1oV+VtgJGgWrRL99GPdaNc4g";
hash = "sha256-gXriCpLPFBzIWm0xKE2LdT3+VWLNwJAHtT9ZuYO3sDI=";
};
vendorHash = null;

View File

@ -5265,7 +5265,8 @@
];
"tuya" = ps: with ps; [
ha-ffmpeg
]; # missing inputs: tuya-device-sharing-sdk
tuya-device-sharing-sdk
];
"twentemilieu" = ps: with ps; [
twentemilieu
];
@ -6574,6 +6575,7 @@
"transport_nsw"
"trend"
"tts"
"tuya"
"twentemilieu"
"twilio"
"twinkly"

View File

@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p nodePackages.pyright ruff isort"
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p nodePackages.pyright ruff isort
#
# This script downloads Home Assistant's source tarball.
# Inside the homeassistant/components directory, each integration has an associated manifest.json,

View File

@ -1,45 +0,0 @@
{ lib, stdenv, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "reproxy";
version = "1.0.0";
src = fetchFromGitHub {
owner = "umputun";
repo = pname;
rev = "v${version}";
hash = "sha256-ac4fOOMht2WGlrXLN95NEIA8ivqghhVuxHnBumvajx0=";
};
postPatch = ''
# Requires network access
substituteInPlace app/main_test.go \
--replace "Test_Main" "Skip_Main"
substituteInPlace app/proxy/proxy_test.go \
--replace "TestHttp_matchHandler" "SkipHttp_matchHandler"
'' + lib.optionalString stdenv.isDarwin ''
# Fails on Darwin.
# https://github.com/umputun/reproxy/issues/77
substituteInPlace app/discovery/provider/file_test.go \
--replace "TestFile_Events" "SkipFile_Events" \
--replace "TestFile_Events_BusyListener" "SkipFile_Events_BusyListener"
'';
vendorHash = null;
ldflags = [
"-s" "-w" "-X main.revision=${version}"
];
installPhase = ''
install -Dm755 $GOPATH/bin/app $out/bin/reproxy
'';
meta = with lib; {
description = "Simple edge server / reverse proxy";
homepage = "https://reproxy.io/";
license = licenses.mit;
maintainers = with maintainers; [ sikmir ];
mainProgram = "reproxy";
};
}

View File

@ -0,0 +1,19 @@
diff --git a/crates/c/build.rs b/crates/c/build.rs
index 8d822e5..8b7e371 100644
--- a/crates/c/build.rs
+++ b/crates/c/build.rs
@@ -1,9 +1,13 @@
fn main() {
println!("cargo:rerun-if-changed=src/c.h");
println!("cargo:rerun-if-changed=src/c.c");
+ println!("cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS");
cc::Build::new()
- .compiler("clang-16")
+ .compiler("@clang@")
.file("./src/c.c")
+ // read env var set by rustPlatform.bindgenHook
+ .try_flags_from_environment("BINDGEN_EXTRA_CLANG_ARGS")
+ .expect("the BINDGEN_EXTRA_CLANG_ARGS environment variable must be specified and UTF-8")
.opt_level(3)
.debug(true)
.compile("pgvectorsc");

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
{ lib
, buildPgrxExtension
, cargo-pgrx
, clang_16
, fetchCrate
, fetchFromGitHub
, nix-update-script
, nixosTests
, openssl
, pkg-config
, postgresql
, rustPlatform
, stdenv
, substituteAll
}:
let
# Upstream only works with clang 16, so we're pinning it here to
# avoid future incompatibility.
# See https://docs.pgvecto.rs/developers/development.html#environment, step 4
clang = clang_16;
rustPlatform' = rustPlatform // {
bindgenHook = rustPlatform.bindgenHook.override { inherit clang; };
};
# Upstream only works with a fixed version of cargo-pgrx for each release,
# so we're pinning it here to avoid future incompatibility.
# See https://docs.pgvecto.rs/developers/development.html#environment, step 6
cargo-pgrx_0_11_2 = cargo-pgrx.overrideAttrs (old: rec {
pname = "cargo-pgrx";
version = "0.11.2";
src = fetchCrate {
pname = "cargo-pgrx";
inherit version;
hash = "sha256-8NlpMDFaltTIA8G4JioYm8LaPJ2RGKH5o6sd6lBHmmM=";
};
cargoDeps = old.cargoDeps.overrideAttrs (_: {
inherit src;
outputHash = "sha256-qTb3JV3u42EilaK2jP9oa5D09mkuHyRbGGRs9Rg4TzI=";
});
});
in
(buildPgrxExtension.override {
cargo-pgrx = cargo-pgrx_0_11_2;
rustPlatform = rustPlatform';
}) rec {
inherit postgresql;
pname = "pgvecto-rs";
version = "0.2.1";
buildInputs = [ openssl ];
nativeBuildInputs = [ pkg-config ];
patches = [
# Tell the `c` crate to use the flags from the rust bindgen hook
(substituteAll {
src = ./0001-read-clang-flags-from-environment.diff;
clang = lib.getExe clang;
})
];
src = fetchFromGitHub {
owner = "tensorchord";
repo = "pgvecto.rs";
rev = "v${version}";
hash = "sha256-kwaGHerEVh6Oxb9jQupSapm7CsKl5CoH6jCv+zbi4FE=";
};
# Package has git dependencies on Cargo.lock (instead of just crate.io dependencies),
# so cargoHash does not work, therefore we have to include Cargo.lock in nixpkgs.
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"openai_api_rust-0.1.8" = "sha256-os5Y8KIWXJEYEcNzzT57wFPpEXdZ2Uy9W3j5+hJhhR4=";
"std_detect-0.1.5" = "sha256-RwWejfqyGOaeU9zWM4fbb/hiO1wMpxYPKEjLO0rtRmU=";
};
};
# Set appropriate version on vectors.control, otherwise it won't show up on PostgreSQL
postPatch = ''
substituteInPlace ./vectors.control --subst-var-by CARGO_VERSION ${version}
'';
# Include upgrade scripts in the final package
# https://github.com/tensorchord/pgvecto.rs/blob/v0.2.0/scripts/ci_package.sh#L6-L8
postInstall = ''
cp sql/upgrade/* $out/share/postgresql/extension/
'';
env = {
# Needed to get openssl-sys to use pkg-config.
OPENSSL_NO_VENDOR = 1;
# Bypass rust nightly features not being available on rust stable
RUSTC_BOOTSTRAP = 1;
};
passthru = {
updateScript = nix-update-script { };
tests = {
pgvecto-rs = nixosTests.pgvecto-rs;
};
};
meta = with lib; {
# The pgrx 0.11.2 dependency is broken in aarch64-linux: https://github.com/pgcentralfoundation/pgrx/issues/1429
# It is fixed in pgrx 0.11.3, but upstream is still using pgrx 0.11.2
broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
description = "Scalable, Low-latency and Hybrid-enabled Vector Search in Postgres";
homepage = "https://github.com/tensorchord/pgvecto.rs";
license = licenses.asl20;
maintainers = with maintainers; [ diogotcorreia esclear ];
};
}

View File

@ -44,6 +44,8 @@ self: super: {
pgsql-http = super.callPackage ./ext/pgsql-http.nix { };
pgvecto-rs = super.callPackage ./ext/pgvecto-rs { };
pgvector = super.callPackage ./ext/pgvector.nix { };
plpgsql_check = super.callPackage ./ext/plpgsql_check.nix { };

View File

@ -5,11 +5,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "squid";
version = "6.7";
version = "6.8";
src = fetchurl {
url = "http://www.squid-cache.org/Versions/v6/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
hash = "sha256-4U2qTq5Bkl0a4/COZEOaaqowEb3O1oZii43ml9WrhCg=";
hash = "sha256-EcxWULUYCdmUg8z64kdEouUc0WGZ9f8MkX6E/OaVhw8=";
};
nativeBuildInputs = [ pkg-config ];

View File

@ -2,7 +2,7 @@
buildPythonApplication rec {
pname = "Tautulli";
version = "2.13.2";
version = "2.13.4";
format = "other";
pythonPath = [ setuptools ];
@ -12,7 +12,7 @@ buildPythonApplication rec {
owner = "Tautulli";
repo = pname;
rev = "v${version}";
sha256 = "sha256-G1YNOJ2snddhFOWDkRQikQ1qC3G1BHg+qb2j5ffIR8k=";
sha256 = "sha256-cOHirjYdfPPv7O9o3vnsKBffvqxoaRN32NaUOK0SmQ8=";
};
installPhase = ''

View File

@ -5,7 +5,7 @@
hash = "sha256-Jo2/Vlm4Ml24ucPI6ZHs2mkbpY2rZB1dofmGXNPweA8=";
};
wordpress6_4 = {
version = "6.4.2";
hash = "sha256-m4KJELf5zs3gwAQPmAhoPe2rhopZFsYN6OzAv6Wzo6c=";
version = "6.4.3";
hash = "sha256-PwjHHRlwhEH9q94bPq34NnQv3uhm1kOpjRAu0/ECaYY=";
};
}

View File

@ -12,13 +12,13 @@
buildGoModule rec {
pname = "granted";
version = "0.21.0";
version = "0.21.1";
src = fetchFromGitHub {
owner = "common-fate";
repo = pname;
rev = "v${version}";
sha256 = "sha256-hNbn1bBC9dNiThwi1+Mh45s/9DAwoI8XC4ZjB6Ls8sw=";
sha256 = "sha256-aHqMsEqlD/a/qQEjRKQU/+9Ov5BTnptExuO0eEXvf9k=";
};
vendorHash = "sha256-I4sds5r61oGop+EtOpDgTYwLbSVBBSBmNbRU56sCYjo=";

View File

@ -7,7 +7,7 @@
let
pname = "liquidsoap";
version = "2.2.3";
version = "2.2.4";
in
stdenv.mkDerivation {
inherit pname version;
@ -16,7 +16,7 @@ stdenv.mkDerivation {
owner = "savonet";
repo = "liquidsoap";
rev = "refs/tags/v${version}";
hash = "sha256-oCMSdmdU3oHrq3QFEDQLdb3CLFYcWylxTqKWtGOoQW8=";
hash = "sha256-aAW3PeobTRVi5mV321MHZ6RymvOY4DbZITjwcMwGwFo=";
};
postPatch = ''
@ -76,6 +76,7 @@ stdenv.mkDerivation {
ocamlPackages.camomile
ocamlPackages.uri
ocamlPackages.fileutils
ocamlPackages.magic-mime
ocamlPackages.menhir # liquidsoap-lang
ocamlPackages.menhirLib
ocamlPackages.metadata
@ -99,7 +100,6 @@ stdenv.mkDerivation {
ocamlPackages.frei0r
ocamlPackages.gd4o
ocamlPackages.graphics
ocamlPackages.gstreamer
ocamlPackages.imagelib
ocamlPackages.inotify
ocamlPackages.ladspa
@ -108,7 +108,6 @@ stdenv.mkDerivation {
ocamlPackages.lilv
ocamlPackages.lo
ocamlPackages.mad
ocamlPackages.magic
ocamlPackages.ogg
ocamlPackages.opus
ocamlPackages.portaudio

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation rec {
pname = "rshim-user-space";
version = "2.0.12";
version = "2.0.20";
src = fetchFromGitHub {
owner = "Mellanox";
repo = pname;
rev = "rshim-${version}";
hash = "sha256-jR9Q1i2p4weKuGPTAylNIVglgcZH0UtvXBVVCEquxu8=";
hash = "sha256-zm1cMTna9o8edl0M7tjUhbnElbUkQZSkh3KOI6tbE6I=";
};
nativeBuildInputs = [

View File

@ -2,6 +2,7 @@
, buildPythonPackage
, fetchPypi
, brotli
, hatchling
, certifi
, ffmpeg
, rtmpdump
@ -9,7 +10,9 @@
, pycryptodomex
, websockets
, mutagen
, requests
, secretstorage
, urllib3
, atomicparsleySupport ? true
, ffmpegSupport ? true
, rtmpSupport ? true
@ -22,19 +25,27 @@ buildPythonPackage rec {
# The websites yt-dlp deals with are a very moving target. That means that
# downloads break constantly. Because of that, updates should always be backported
# to the latest stable release.
version = "2023.12.30";
version = "2024.3.10";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-oRhi5XchsKDwiD3+taTXm6ITotTEXhiA6f1w+OZXDDg=";
inherit version;
pname = "yt_dlp";
hash = "sha256-bnTLFKadvrhyyO9OC4u+0u6EbsYzUTzzEkp0wfrtwHs=";
};
nativeBuildInputs = [
hatchling
];
propagatedBuildInputs = [
brotli
certifi
mutagen
pycryptodomex
requests
secretstorage # "optional", as in not in requirements.txt, needed for `--cookies-from-browser`
urllib3
websockets
];
@ -48,7 +59,7 @@ buildPythonPackage rec {
++ lib.optional atomicparsleySupport atomicparsley
++ lib.optional ffmpegSupport ffmpeg
++ lib.optional rtmpSupport rtmpdump;
in lib.optionalString (packagesToBinPath != [])
in lib.optionals (packagesToBinPath != [])
[ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ];
setupPyBuildFlags = [

View File

@ -97,6 +97,7 @@ mapAliases ({
bashInteractive_5 = bashInteractive; # Added 2021-08-20
bash_5 = bash; # Added 2021-08-20
bazel_3 = throw "bazel 3 is past end of life as it is not an lts version"; # Added 2023-02-02
bazel_4 = throw "'bazel_4' has been removed from nixpkgs as it has reached end of life"; # Added 2024-01-23
bedup = throw "bedup was removed because it was broken and abandoned upstream"; # added 2023-02-04
bee-unstable = throw "bee-unstable has been removed, use 'bee' instead"; # Added 2024-02-12
bee-clef = throw "bee-clef has been removed as the upstream project was archived"; # Added 2024-02-12

View File

@ -18330,18 +18330,6 @@ with pkgs;
bazel = bazel_6;
bazel_4 = callPackage ../development/tools/build-managers/bazel/bazel_4 {
inherit (darwin) cctools;
inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
buildJdk = jdk11_headless;
buildJdkName = "java11";
runJdk = jdk11_headless;
stdenv = if stdenv.cc.isClang then llvmPackages.stdenv
else if stdenv.cc.isGNU then gcc10Stdenv
else stdenv;
bazel_self = bazel_4;
};
bazel_5 = callPackage ../development/tools/build-managers/bazel/bazel_5 {
inherit (darwin) cctools sigtool;
inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
@ -26922,8 +26910,6 @@ with pkgs;
redstore = callPackage ../servers/http/redstore { };
reproxy = callPackage ../servers/reproxy { };
repro-get = callPackage ../tools/package-management/repro-get { };
restic = callPackage ../tools/backup/restic { };

View File

@ -15034,6 +15034,8 @@ self: super: with self; {
turnt = callPackage ../development/python-modules/turnt { };
tuya-device-sharing-sdk = callPackage ../development/python-modules/tuya-device-sharing-sdk { };
tuya-iot-py-sdk = callPackage ../development/python-modules/tuya-iot-py-sdk { };
tuyaha = callPackage ../development/python-modules/tuyaha { };