Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3,001 changes: 3,001 additions & 0 deletions .github/workflows/nix-action-8.10-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2986,7 +2986,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.10" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.10
name: Nix CI for bundle 8.10 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
3,414 changes: 3,414 additions & 0 deletions .github/workflows/nix-action-8.11-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3399,7 +3399,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.11" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.11
name: Nix CI for bundle 8.11 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
3,613 changes: 3,613 additions & 0 deletions .github/workflows/nix-action-8.12-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3598,7 +3598,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.12" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.12
name: Nix CI for bundle 8.12 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
3,878 changes: 3,878 additions & 0 deletions .github/workflows/nix-action-8.13-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3863,7 +3863,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.13" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.13
name: Nix CI for bundle 8.13 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
3,919 changes: 3,919 additions & 0 deletions .github/workflows/nix-action-8.14-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3904,7 +3904,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.14" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.14
name: Nix CI for bundle 8.14 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
3,919 changes: 3,919 additions & 0 deletions .github/workflows/nix-action-8.15-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3904,7 +3904,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.15" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.15
name: Nix CI for bundle 8.15 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
2,363 changes: 2,363 additions & 0 deletions .github/workflows/nix-action-8.16-macos.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2348,7 +2348,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "8.16" --argstr
job "zorns-lemma"
name: Nix CI for bundle 8.16
name: Nix CI for bundle 8.16 on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
91 changes: 91 additions & 0 deletions .github/workflows/nix-action-master-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
jobs:
coq:
needs: []
runs-on: macos-latest
steps:
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{\
\ github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{\
\ github.event.repository.html_url }} refs/pull/${{ github.event.number }}/merge\
\ | cut -f1)\n if [ -z \"$merge_commit\" ]; then\n echo \"tested_commit=${{\
\ github.event.pull_request.head.sha }}\" >> $GITHUB_ENV\n else\n echo\
\ \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-community
uses: cachix/cachix-action@v10
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, math-comp
name: coq-community
- id: stepCheck
name: Checking presence of CI target coq
run: "nb_dry_run=$(NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr\
\ bundle \"master\" --argstr job \"coq\" \\\n --dry-run 2>&1 > /dev/null)\n\
echo $nb_dry_run\necho ::set-output name=status::$(echo $nb_dry_run | grep\
\ \"built:\" | sed \"s/.*/built/\")\n"
- if: steps.stepCheck.outputs.status == 'built'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "master"
--argstr job "coq"
coq-shell:
needs:
- coq
runs-on: macos-latest
steps:
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{\
\ github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{\
\ github.event.repository.html_url }} refs/pull/${{ github.event.number }}/merge\
\ | cut -f1)\n if [ -z \"$merge_commit\" ]; then\n echo \"tested_commit=${{\
\ github.event.pull_request.head.sha }}\" >> $GITHUB_ENV\n else\n echo\
\ \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-community
uses: cachix/cachix-action@v10
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, math-comp
name: coq-community
- id: stepCheck
name: Checking presence of CI target coq-shell
run: "nb_dry_run=$(NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr\
\ bundle \"master\" --argstr job \"coq-shell\" \\\n --dry-run 2>&1 > /dev/null)\n\
echo $nb_dry_run\necho ::set-output name=status::$(echo $nb_dry_run | grep\
\ \"built:\" | sed \"s/.*/built/\")\n"
- if: steps.stepCheck.outputs.status == 'built'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "master"
--argstr job "coq"
- if: steps.stepCheck.outputs.status == 'built'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "master"
--argstr job "coq-shell"
name: Nix CI for bundle master on platform macos-latest
'on':
pull_request:
paths:
- .github/workflows/**
pull_request_target:
types:
- opened
- synchronize
- reopened
push:
branches:
- master
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle "master"
--argstr job "coq-shell"
name: Nix CI for bundle master
name: Nix CI for bundle master on platform ubuntu-latest
'on':
pull_request:
paths:
Expand Down
6 changes: 3 additions & 3 deletions .nix/nixpkgs.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
fetchTarball {
url = https://github.com/NixOS/nixpkgs/archive/e50697278bf4ff7a1dfc30cbb44f17832d1d1250.tar.gz;
sha256 = "1ggi1f3zl1pk9yj74ilrd2cga1qrwg6qpma6ydkf6hzm4q1lnb7f";
}
url = https://github.com/r-ryantm/nixpkgs/archive/a037a50b4696632977dadd61747b02492a109478.tar.gz;
sha256 = "0fsmd82ws64q0b5lf7baq4vc3kjai6knfhjxv494swmjz9pyzhjj";
}
11 changes: 11 additions & 0 deletions .nix/shellHook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,17 @@ genNixActions (){
}
addNixCommand genNixActions

genCrossPlatformNixActions (){
mkdir -p $currentDir/.github/workflows/
for t in $bundles; do
for p in "ubuntu" "macos"; do
echo "generating $currentDir/.github/workflows/nix-action-$t-$p.yml"
nix-shell --arg do-nothing true --argstr bundle $t --argstr ci-platform "$p-latest" --run "ppNixAction > $currentDir/.github/workflows/nix-action-$t-$p.yml"
done
done
}
addNixCommand genCrossPlatformNixActions

initNixConfig (){
Orig=$toolboxDir/template-config.nix
F=$configDir/config.nix;
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,15 @@ When you run `nix-shell`, you get an environment with a few available commands:
- `fetchCoqOverlay`: fetch a derivation file from nixpkgs that you may then edit locally to override a package.
- `createOverlay`: create a fresh derivation file from a template, which could then be added to nixpkgs.
- `cachedMake`: compile the project by reusing build outputs cached (generally thanks to Cachix).
- `genNixActions`: generates GitHub one actions file per bundle, for testing dependencies and reverse depndencies.
- `genNixActions`: generates GitHub one actions file per bundle, for testing dependencies and reverse dependencies.
- `genCrossPlatformNixActions`: duplicate generated workflows to run on both Ubuntu and macOS (useful when macOS users want to get cached artifacts as well).

These three commands update the nixpkgs version to use (will create or override `.nix/nixpkgs.nix`):
- `updateNixpkgsUnstable`: update to the latest nixpkgs-unstable.
- `updateNixpkgsMaster`: update to the head of `master` of nixpkgs.
- `updateNixpkgs`: update to the specified owner and ref.

After one of these three commands, you should leave and re-enter `nix-shell` if you want the update to be taken into account (e.g., before calling `genNixActions`).
After one of these three commands, you should leave and re-enter `nix-shell` if you want the update to be taken into account.

## Arguments accepted by `nix-shell`

Expand All @@ -117,7 +118,7 @@ To test a PR on nixpkgs that modifies the `coqPackages` set, clone this reposito

```
nix-shell --arg do-nothing true --run "updateNixpkgs <pr_owner> <pr_branch>"
nix-shell --arg do-nothing true --run "genNixActions"
nix-shell --arg do-nothing true --run "genCrossPlatformNixActions"
```

Then, open a draft PR with the generated changes here.
Expand All @@ -126,5 +127,5 @@ Once the PR on nixpkgs has been merged, you can transform the draft PR into one

```
nix-shell --arg do-nothing true --run "updateNixpkgsMaster"
nix-shell --arg do-nothing true --run "genNixActions"
nix-shell --arg do-nothing true --run "genCrossPlatformNixActions"
```
14 changes: 7 additions & 7 deletions action.nix
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,13 @@ with builtins; with lib; let
run = "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle \"${bundlestr}\" --argstr job \"${job}\"";
};

mkJob = { job, jobs ? [], bundles ? [], deps ? {}, cachix ? {}, suffix ? false }:
mkJob = { job, jobs ? [], bundles ? [], deps ? {}, cachix ? {}, ci-platform, suffix ? false }:
let
suffixStr = optionalString (suffix && isString bundles) "-${bundles}";
jdeps = deps.${job} or [];
in {
"${job}${suffixStr}" = rec {
runs-on = "ubuntu-latest";
runs-on = if ci-platform == null then "ubuntu-latest" else ci-platform;
needs = map (j: "${j}${suffixStr}") (filter (j: elem j jobs) jdeps);
steps = [ stepCommitToTest stepCheckout stepCachixInstall ]
++ (stepCachixUseAll cachix)
Expand All @@ -94,11 +94,11 @@ with builtins; with lib; let
} // (optionalAttrs (isList bundles) {strategy.matrix.bundle = bundles;});
};

mkJobs = { jobs ? [], bundles ? [], deps ? {}, cachix ? {}, suffix ? false }@args:
mkJobs = { jobs ? [], bundles ? [], deps ? {}, cachix ? {}, ci-platform, suffix ? false }@args:
foldl (action: job: action // (mkJob ({ inherit job; } // args))) {} jobs;

mkActionFromJobs = { actionJobs, bundles ? [] }: {
name = "Nix CI for bundle ${toString bundles}";
mkActionFromJobs = { actionJobs, bundles ? [], ci-platform }: {
name = "Nix CI for bundle ${toString bundles}${if ci-platform == null then "" else " on platform ${ci-platform}"}";
on = {
push.branches = [ "master" ];
pull_request.paths = [ ".github/workflows/**" ];
Expand All @@ -107,7 +107,7 @@ with builtins; with lib; let
jobs = actionJobs;
};

mkAction = { jobs ? [], bundles ? [], deps ? {}, cachix ? {} }@args:
mkActionFromJobs {inherit bundles; actionJobs = mkJobs args; };
mkAction = { jobs ? [], bundles ? [], deps ? {}, cachix ? {}, ci-platform ? null }@args:
mkActionFromJobs {inherit bundles ci-platform; actionJobs = mkJobs args; };

in { inherit mkJob mkJobs mkAction; }
2 changes: 2 additions & 0 deletions config-parser-1.0.0/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ with builtins;
override ? {},
ocaml-override ? {},
global-override ? {},
ci-platform,
lib,
}@initial:
with lib;
Expand Down Expand Up @@ -59,6 +60,7 @@ in with config; let
inherit (import ../action.nix { inherit lib; }) mkJobs mkAction;
action = mkAction {
inherit (config) cachix;
inherit ci-platform;
bundles = bundleName;
jobs = let
jdeps = genAttrs ci.mains (n: genCI.pkgsRevDepsSet.${n} or {});
Expand Down
2 changes: 2 additions & 0 deletions default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ in
coq-overlays-dir ? get-path src "coq-overlays",
ocaml-overlays-dir ? get-path src "ocaml-overlays",
ci-matrix ? false,
ci-platform ? null,
config ? {},
override ? {},
ocaml-override ? {},
Expand Down Expand Up @@ -44,6 +45,7 @@ let
// { diag = f: x: f x x; };
inherit overlays-dir coq-overlays-dir ocaml-overlays-dir;
inherit global-override override ocaml-override;
inherit ci-platform;
};
my-throw = x: throw "Coq nix toolbox error: ${x}";
in
Expand Down