1+ name : Test nixpkgs reverse dependencies
2+
3+ on :
4+ workflow_dispatch :
5+
6+ jobs :
7+
8+ test-highspy :
9+ name : pytest HiGHS own test suite
10+ runs-on : ubuntu-latest
11+ steps :
12+ - name : Checkout HiGHS repo
13+ uses : actions/checkout@v4
14+
15+ - name : Install Nix
16+ uses : cachix/install-nix-action@v27
17+ with :
18+ nix_path : nixpkgs=channel:nixos-unstable
19+ extra_nix_config : |
20+ experimental-features = nix-command flakes
21+ substituters = https://cache.nixos.org
22+ trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
23+
24+ - name : Run pytest against local highspy
25+ run : |
26+ nix shell --impure \
27+ --expr '
28+ let
29+ nixpkgs = builtins.getFlake "github:NixOS/nixpkgs/nixos-unstable";
30+ localSrc = builtins.getEnv "GITHUB_WORKSPACE";
31+ overlay = final: prev: {
32+ highs = prev.highs.overrideAttrs (old: {
33+ src = prev.lib.cleanSource localSrc;
34+ });
35+ };
36+ pkgs = nixpkgs.legacyPackages.x86_64-linux.extend overlay;
37+ in pkgs.python3.withPackages (ps: [ ps.highspy ps.pytest ])
38+ ' --command pytest tests/test_highspy.py -v
39+
40+ test-revdeps :
41+ name : Build ${{ matrix.package }} against local HiGHS
42+ runs-on : ubuntu-latest
43+ strategy :
44+ fail-fast : false
45+ matrix :
46+ package :
47+ - highs
48+ - sleqp
49+ - or-tools
50+ - casadi
51+ - python3Packages.highspy
52+ - python3Packages.qpsolvers
53+ - python3Packages.cvxpy
54+
55+ steps :
56+ - name : Checkout HiGHS repo
57+ uses : actions/checkout@v4
58+
59+ - name : Install Nix
60+ uses : cachix/install-nix-action@v27
61+ with :
62+ nix_path : nixpkgs=channel:nixos-unstable
63+ extra_nix_config : |
64+ experimental-features = nix-command flakes
65+ # Cache hits dramatically speed up revdep builds since only
66+ # highs itself needs to be rebuilt from source
67+ substituters = https://cache.nixos.org
68+ trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
69+
70+ - name : Build ${{ matrix.package }} with local HiGHS overlay
71+ run : |
72+ nix build --print-build-logs --no-link \
73+ --impure \
74+ --expr '
75+ let
76+ nixpkgs = builtins.getFlake "github:NixOS/nixpkgs/nixos-unstable";
77+ localSrc = builtins.getEnv "GITHUB_WORKSPACE";
78+ overlay = final: prev: {
79+ highs = prev.highs.overrideAttrs (old: {
80+ src = final.lib.cleanSource localSrc;
81+ });
82+ };
83+ pkgs = nixpkgs.legacyPackages.x86_64-linux.extend overlay;
84+ in
85+ pkgs.lib.getAttrFromPath
86+ (pkgs.lib.strings.splitString "." "${{ matrix.package }}")
87+ pkgs
88+ '
89+
90+ - name : Smoke-test highspy import (Python packages only)
91+ if : contains(matrix.package, 'python3Packages')
92+ run : |
93+ nix shell --impure \
94+ --expr '
95+ let
96+ nixpkgs = builtins.getFlake "github:NixOS/nixpkgs/nixos-unstable";
97+ localSrc = builtins.getEnv "GITHUB_WORKSPACE";
98+ overlay = final: prev: {
99+ highs = prev.highs.overrideAttrs (old: {
100+ src = prev.lib.cleanSource localSrc;
101+ });
102+ };
103+ pkgs = nixpkgs.legacyPackages.x86_64-linux.extend overlay;
104+ in pkgs.python3.withPackages (ps: [ ps.highspy ])
105+ ' --command python3 -c "import highspy; h = highspy.Highs(); h.silent(); h.addVar(0, 1); h.run(); assert h.getInfoValue('primal_solution_status')[1] == 2, 'solver failed'; print('OK')"
0 commit comments