-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge of haskell-with-nixpkgs back into HNix #681
Conversation
…tional note M build.sh
GHC 8.4 is still widely used, so it's good to check compatibility with it.
* CI: Travis: rm cache | Builds 2X times faster without Travis cache M .travis.yml * CI: Travis: build.sh: mv `set` declaration | fx master CI statuses M .travis.yml M build.sh
M default.nix
M default.nix
Integrates with CI. M default.nix
M default.nix
Due to new strict `set` rules `if` statement check agains empty variable was failing the build, this fixes builds in PRs. ...sigh. M build.sh
M default.nix
Nix that installs through Nix installer is 2.0.4. Current Nix release is 2.3.5. To to have a less of old bugs, and more of new bugs - Nix after installation needs an update right away. Old Nix literally prevented importing Nix channels on Linux Nix installations. M build.sh
M default.nix
…uild bug M default.nix
…acOS tests This feature seems to enable binaries as also a dynamic library, with is a rare and largely unknown feature, and it not used. Since it is unexpected optional rare not standard feature - turn it off by default. M default.nix
M default.nix
Providing docs to them and sort them roughly in order of their application/stage M default.nix
M default.nix
M default.nix
M default.nix
M default.nix
See: #681 (comment) M .travis.yml
b3499bb
to
cfc96b4
Compare
c197c22
to
61b40d4
Compare
Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: #681 (comment) CI: Travis: fx optional builds CI: Nixpkgs-Linux-main: make all builds optional Due to Nixpkgs brittleness - it often blocks the development process, when the PRs do not pass due to issues of downstream Nixpkgs. Moreover that HNix builds in Nixpkgs with Nix, so the point of this builds is just to check that HNix builds with Nixpkgs under Nix. When Nixpkgs build is mandatory - PRs get blocked by it and PRs await on fixing Nixpkgs. Making Nixpkgs builds optional allows parallelization of code development and Nixpkgs fixing. More in discussion: #681 (comment) CI: Travis: fx optional builds
See: #681 (comment) M .travis.yml
f7f1486
to
2dff82b
Compare
M .github/workflows/Nixpkgs-Linux-main.yml
M .github/workflows/Nixpkgs-Linux-main.yml
ef6ea59
to
c1a3198
Compare
Turned off GHCJS build∵:
⊢ GHCJS build test turned off. If someone would actively pursue GHCJS |
About using 'DHall' and 'github-actions-dhall' for CI (answering message #681 (comment)), lets see further down the line. I do no see the problem of having several files where everything is structured and laid-out in official GitHub way without use of additional utilites, and vast majority of people would never look or care about CI configuration further down the line, it is important but supplementary to the main goal - the project itself. But when the people would look into GitHub CI configuration - they would work with the standard GitHub CI setup configuration. |
c1a3198
to
0f7c8e6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM based on my impression that this addresses some of our current CI woes.
If there are any issues we'll probably detect them while using the CI in anger.
Adding hundreds of commits to master
for this CI overhaul seems a little disproportionate, so maybe this PR should be squashed.
Thanks for all the work, @Anton-Latukha, and thanks for addressing my concerns with the current CI setup! 👍
Well, my view of it:
Specifically sitting and faking, retrofitting Git history is silly. The argument that there is some magic number of commits person needs to get into, while what matters is work done, and that the number of some commits and my number of commits different - is an argument of numbers, who likes which numbers. While what primary - is results, and following a good practice. And googling
Obviously I node towards this:
What I mean, is that Git workflows can become much better. |
Thank you @sjakobi for the review. I understand that my style sometimes may be seen as obnoxious. I squashed everything into one commit. My style honestly started from learning Git by doing, and Git was painful for me back in a dey, I used to not commit changes in time and created a small number of huge commits, so I started frequently commit unital atomic commits to get accustomed to Git commiting. And, obviously, big commit numbers inspire respect both in person, and more importantly in the projects. And self-documentation, the following of the guidelines and developing effective practices - are a bonus. If something - I encourage adoption of this style, since it arrives at many goals. Thank you again, I am kneeling down for your work 🙏. |
No worries, @Anton-Latukha! I appreciate your work on our CI! :) |
This PR update build processes, both with CI processes:
* ✔️ updates from Travis 50min restriction to GitHub 6 hours of execution time, which allows churning through Nixpkgs revisions that when Hydra CI Cache is not present (since Hydra CI cache has a pretty constant lag to after the channel update).
* ✔️ faster node startup times
* ✔️ much bigger number of nodes and the compute power of nodes
* ✔️ Cachix and Nix deployment processes are better supported for GitHub Actions.
* ✔️ multiple checks reported to PR, so the community can roughly see the info on build results even without going into CI interface. Find a CI that is able to pass multiple check results into GitHub #593
8.{4,10}
), that is mandatory for the Haskell project, Please, provide in CI the classical Cabal build #653Also:
HNix
was taken and with maximal preservation of Git history, Git history waspassed through pass filter and that in how
haskell-with-nix
was formed.Further, work on CI and build configs happened there.
Due to
HNix
being a mothership project and sincehaskell-with-nix
preservation of original history - it is possible to merge progress from it
back.
Now, when
haskell-with-nixpkgs
main setup stabilized - it is ready to bemerged back, meanwhile
HNix
needed to dodge Nixpkgs downstream quirks whichblocked the development processes and new CI was needed.
Merge went pretty ideal, for merge
haskell-with-nixpkgs
only relevant historywas also filtered-out and also dropped 3 commits that got into the passed files.
A custom merge commit also was required.
But overall, the process of merge went unexpectedly great.
After the inside PR merge - also the change of stub names used in
haskell-with-nixpkgs
toHNix
-specific names is obviously needed. So that directly follows thismerge inside PR branch.