Skip to content

Commit 9c82c8a

Browse files
jtojnardrupol
authored andcommitted
checks: Move most of the code to flake.nix
This will basically allow us to treat `checks.nix` like something that supports having its dependencies injected by `callPackages`, allowing us to simplify the expression a bit. It will also allow other scripts to get the check names trivially.
1 parent 286067b commit 9c82c8a

File tree

2 files changed

+143
-148
lines changed

2 files changed

+143
-148
lines changed

checks.nix

Lines changed: 83 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -1,158 +1,96 @@
11
{
2-
system,
3-
packages,
4-
pkgs,
2+
lib,
3+
php,
4+
runCommand,
55
}:
66

7-
let
8-
phpPackages = builtins.filter (name: builtins.match "php[0-9]+" name != null) (builtins.attrNames packages);
9-
10-
checks = {
11-
php = {
12-
description = "Build PHP";
13-
drv = { php, ... }: php;
14-
};
15-
16-
imagick = {
17-
description = "Build Imagick extension";
18-
drv = { php, ... }: php.extensions.imagick;
19-
};
20-
21-
redis = {
22-
description = "Build Redis extension";
23-
drv = { php, ... }: php.extensions.redis;
24-
};
25-
26-
redis3 = {
27-
description = "Build Redis 3 extension";
28-
enabled = { php, lib, ... }: lib.versionOlder php.version "8";
29-
drv = { php, ... }: php.extensions.redis3;
30-
};
31-
32-
mysql = {
33-
description = "Build MySQL extension";
34-
enabled = { php, lib, ... }: lib.versionOlder php.version "7";
35-
drv = { php, ... }: php.extensions.mysql;
36-
};
37-
38-
xdebug = {
39-
description = "Build Xdebug extension";
40-
drv = { php, ... }: php.extensions.xdebug;
41-
};
7+
{
8+
php = {
9+
description = "Build PHP";
10+
drv = php;
11+
};
4212

43-
tidy = {
44-
description = "Build Tidy extension";
45-
drv = { php, ... }: php.extensions.tidy;
46-
};
13+
imagick = {
14+
description = "Build Imagick extension";
15+
drv = php.extensions.imagick;
16+
};
4717

48-
composer-phar = {
49-
description = "Check that composer PHAR works";
50-
drv =
51-
{ pkgs, php, ... }:
52-
pkgs.runCommand
53-
"composer-phar-check"
54-
{
55-
buildInputs = [
56-
php.packages.composer
57-
];
58-
}
59-
''
60-
composer --version
61-
touch "$out"
62-
'';
63-
};
18+
redis = {
19+
description = "Build Redis extension";
20+
drv = php.extensions.redis;
21+
};
6422

65-
mysqli-socket-path = {
66-
description = "Validate php.extensions.mysqli default unix socket path";
67-
drv =
68-
{ pkgs, php, ... }:
69-
pkgs.runCommand
70-
"mysqli-socket-path-check"
71-
{
72-
buildInputs = [
73-
(php.withExtensions ({ all, ... }: [
74-
all.mysqli
75-
]))
76-
];
77-
}
78-
''
79-
php -r "echo ini_get('mysqli.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
80-
touch "$out"
81-
'';
82-
};
23+
redis3 = {
24+
description = "Build Redis 3 extension";
25+
enabled = lib.versionOlder php.version "8";
26+
drv = php.extensions.redis3;
27+
};
8328

84-
pdo_mysql-socket-path = {
85-
description = "Validate php.extensions.pdo_mysql default unix socket path";
86-
drv =
87-
{ pkgs, php, ... }:
88-
pkgs.runCommand
89-
"pdo_mysql-socket-path-check"
90-
{
91-
buildInputs = [
92-
(php.withExtensions ({ all, ... }: [
93-
all.pdo_mysql
94-
]))
95-
];
96-
}
97-
''
98-
php -r "echo ini_get('pdo_mysql.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
99-
touch "$out"
100-
'';
101-
};
29+
mysql = {
30+
description = "Build MySQL extension";
31+
enabled = lib.versionOlder php.version "7";
32+
drv = php.extensions.mysql;
10233
};
10334

104-
inherit (pkgs) lib;
35+
xdebug = {
36+
description = "Build Xdebug extension";
37+
drv = php.extensions.xdebug;
38+
};
10539

106-
/* AttrSet<phpName, AttrSet<checkName, checkDrv>> */
107-
checksPerVersion =
108-
lib.listToAttrs (
109-
builtins.map
110-
(phpName:
111-
let
112-
php = packages.${phpName};
113-
phpVersion = lib.versions.majorMinor php.version;
114-
args = { inherit lib php pkgs system; };
115-
supportedChecks = lib.filterAttrs (_name: { enabled ? lib.const true, ... }: enabled args) checks;
116-
in
117-
{
118-
name = phpName;
119-
value =
120-
lib.mapAttrs
121-
(
122-
_name:
123-
{
124-
description,
125-
drv,
126-
...
127-
}:
40+
tidy = {
41+
description = "Build Tidy extension";
42+
drv = php.extensions.tidy;
43+
};
12844

129-
let
130-
check = drv args;
131-
in
132-
check // {
133-
description = "PHP ${phpVersion}${description}";
134-
}
135-
)
136-
supportedChecks;
137-
}
138-
)
139-
phpPackages
140-
);
141-
in
142-
lib.foldAttrs
143-
lib.mergeAttrs
144-
{}
145-
(
146-
lib.mapAttrsToList
147-
(
148-
phpName:
45+
composer-phar = {
46+
description = "Check that composer PHAR works";
47+
drv =
48+
runCommand
49+
"composer-phar-check"
50+
{
51+
buildInputs = [
52+
php.packages.composer
53+
];
54+
}
55+
''
56+
composer --version
57+
touch "$out"
58+
'';
59+
};
14960

150-
lib.mapAttrs'
151-
(
152-
name:
61+
mysqli-socket-path = {
62+
description = "Validate php.extensions.mysqli default unix socket path";
63+
drv =
64+
runCommand
65+
"mysqli-socket-path-check"
66+
{
67+
buildInputs = [
68+
(php.withExtensions ({ all, ... }: [
69+
all.mysqli
70+
]))
71+
];
72+
}
73+
''
74+
php -r "echo ini_get('mysqli.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
75+
touch "$out"
76+
'';
77+
};
15378

154-
lib.nameValuePair "${phpName}-${name}"
155-
)
156-
)
157-
checksPerVersion
158-
)
79+
pdo_mysql-socket-path = {
80+
description = "Validate php.extensions.pdo_mysql default unix socket path";
81+
drv =
82+
runCommand
83+
"pdo_mysql-socket-path-check"
84+
{
85+
buildInputs = [
86+
(php.withExtensions ({ all, ... }: [
87+
all.pdo_mysql
88+
]))
89+
];
90+
}
91+
''
92+
php -r "echo ini_get('pdo_mysql.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
93+
touch "$out"
94+
'';
95+
};
96+
}

flake.nix

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,66 @@
3232
inherit (pkgs) php php56 php70 php71 php72 php73 php74 php80 php81 php82;
3333
};
3434

35-
checks = import ./checks.nix {
36-
inherit packages pkgs system;
37-
};
35+
checks =
36+
let
37+
phpPackages = builtins.filter (name: builtins.match "php[0-9]+" name != null) (builtins.attrNames packages);
38+
39+
inherit (pkgs) lib;
40+
41+
42+
/* AttrSet<phpName, AttrSet<checkName, checkDrv>> */
43+
checksPerVersion =
44+
lib.listToAttrs (
45+
builtins.map
46+
(phpName:
47+
let
48+
php = packages.${phpName};
49+
phpVersion = lib.versions.majorMinor php.version;
50+
checks = import ./checks.nix {
51+
inherit lib php;
52+
inherit (pkgs) runCommand;
53+
};
54+
supportedChecks = lib.filterAttrs (_name: { enabled ? true, ... }: enabled) checks;
55+
in
56+
{
57+
name = phpName;
58+
value =
59+
lib.mapAttrs
60+
(
61+
_name:
62+
{
63+
description,
64+
drv,
65+
...
66+
}:
67+
68+
drv // {
69+
description = "PHP ${phpVersion}${description}";
70+
}
71+
)
72+
supportedChecks;
73+
}
74+
)
75+
phpPackages
76+
);
77+
in
78+
lib.foldAttrs
79+
lib.mergeAttrs
80+
{}
81+
(
82+
lib.mapAttrsToList
83+
(
84+
phpName:
85+
86+
lib.mapAttrs'
87+
(
88+
name:
89+
90+
lib.nameValuePair "${phpName}-${name}"
91+
)
92+
)
93+
checksPerVersion
94+
);
3895
}
3996
) // {
4097
overlays.default = import ./pkgs/phps.nix nixpkgs.outPath;

0 commit comments

Comments
 (0)