nixpkgs icon indicating copy to clipboard operation
nixpkgs copied to clipboard

iosevka{,-bin}: 15.5.2 -> 15.6.3

Open otavio opened this issue 1 year ago • 13 comments

  • iosevka: 15.5.2 -> 15.6.3
  • iosevka-bin: 15.6.1 -> 15.6.3
Description of changes
Things done
  • Built on platform(s)
    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
  • [ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • [ ] Tested, as applicable:
  • [ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • [ ] Tested basic functionality of all binary files (usually in ./result/bin/)
  • 22.11 Release Notes (or backporting 22.05 Release notes)
    • [ ] (Package updates) Added a release notes entry if the change is major or breaking
    • [ ] (Module updates) Added a release notes entry if the change is significant
    • [ ] (Module addition) Added a release notes entry if adding a new NixOS module
    • [ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes
  • [ ] Fits CONTRIBUTING.md.

otavio avatar Aug 09 '22 18:08 otavio

The iosevka-comfy build hangs (which was mentioned in https://github.com/NixOS/nixpkgs/issues/185597#issuecomment-1207718125), let me see if it persists across all systems.

@ofborg build iosevka-comfy.comfy

winterqt avatar Aug 09 '22 19:08 winterqt

Hangs on darwin-intel

viraptor avatar Aug 10 '22 06:08 viraptor

The build is currently failing, will this update fix it aswell?

The iosevka-comfy build hangs (which was mentioned in #185597 (comment)), let me see if it persists across all systems.

@ofborg build iosevka-comfy.comfy

It is not only iosevka-comfy that fails, the default variant fails as well on master:

~/code/github.com/NixOS/nixpkgs master
❯ nix build '.#iosevka'
error: builder for '/nix/store/p0l5xkfh3fj32kckxsgfbf3xflap5dng-iosevka-15.5.2.drv' failed with exit code 1;
       last 7 log lines:
       > unpacking sources
       > unpacking source archive /nix/store/8k7893693wqpnfi8s0c9bv8mh2kjicxz-iosevka-15.5.2.tar.gz
       > source root is Iosevka-15.5.2
       > setting SOURCE_DATE_EPOCH to timestamp 1656159437 of file Iosevka-15.5.2/verdafile.js
       > patching sources
       > configuring
       > building
       For full logs, run 'nix log /nix/store/p0l5xkfh3fj32kckxsgfbf3xflap5dng-iosevka-15.5.2.drv'.

~/code/github.com/NixOS/nixpkgs master 1m 55s
❯ nix log /nix/store/p0l5xkfh3fj32kckxsgfbf3xflap5dng-iosevka-15.5.2.drv
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
unpacking source archive /nix/store/8k7893693wqpnfi8s0c9bv8mh2kjicxz-iosevka-15.5.2.tar.gz
source root is Iosevka-15.5.2
setting SOURCE_DATE_EPOCH to timestamp 1656159437 of file Iosevka-15.5.2/verdafile.js
@nix { "action": "setPhase", "phase": "patchPhase" }
patching sources
@nix { "action": "setPhase", "phase": "configurePhase" }
configuring
@nix { "action": "setPhase", "phase": "buildPhase" }
building

EDIT: seems like the update should fix this: https://github.com/be5invis/Iosevka/issues/1383#issuecomment-1186611609

pinpox avatar Aug 10 '22 07:08 pinpox

I've opened https://github.com/be5invis/Iosevka/issues/1394.

For what it's worth, we were disabling build logs (probably because they were too noisy), so that's why nobody saw any output: https://github.com/NixOS/nixpkgs/blob/e322b140209ecf72300f171e6f7d4274120ebc0f/pkgs/data/fonts/iosevka/default.nix#L111

winterqt avatar Aug 10 '22 17:08 winterqt

@otavio Just to be sure:

  1. Did you successfully build this, as indicated in the PR template, or did you just tick that since you're running on x86_64-linux?
  2. Did you run the node-packages regeneration script? I ask since there are some formatting changes in there which makes me suspect that you might've edited this manually instead of running the script.

winterqt avatar Aug 10 '22 22:08 winterqt

  1. Did you successfully build this, as indicated in the PR template, or did you just tick that since you're running on x86_64-linux?

No; I ran it again and it failed.

I looked at this as 15.5.2 were failing to me. I ended moving to -bin.

  1. Did you run the node-packages regeneration script? I ask since there are some formatting changes in there which makes me suspect that you might've edited this manually instead of running the script.

I did by hand. Want me to rerun it?

otavio avatar Aug 10 '22 22:08 otavio

I looked at this as 15.5.2 were failing to me. I ended moving to -bin.

So -bin built successfully, that's why you ticked it? (Just want to make sure, sorry.)

I did by hand. Want me to rerun it?

Yes, please. Whatever dependencies that changed with this release didn't get changed in the derivation, so that may be the source of the failures (although it's weird that it would stall upon a dependency not being found as opposed to exiting, but shrugs). Note that the script will probably take a while to run.

Thanks!

winterqt avatar Aug 11 '22 00:08 winterqt

I looked at this as 15.5.2 were failing to me. I ended moving to -bin.

So -bin built successfully, that's why you ticked it? (Just want to make sure, sorry.)

Yes.

I did by hand. Want me to rerun it?

Yes, please. Whatever dependencies that changed with this release didn't get changed in the derivation, so that may be the source of the failures (although it's weird that it would stall upon a dependency not being found as opposed to exiting, but shrugs). Note that the script will probably take a while to run.

Sure. Running it.

otavio avatar Aug 11 '22 11:08 otavio

Hello, I did the update, and it fail due to a lack of verda as buildInput.

otavio avatar Aug 11 '22 20:08 otavio

Please fix the merge conflict (best way is to rebase ontop of master and regenerate the file from there, to avoid any issues).

winterqt avatar Aug 11 '22 21:08 winterqt

Did and it fails as:

setting SOURCE_DATE_EPOCH to timestamp 1659758719 of file Iosevka-15.6.3/verdafile.mjs
patching sources
configuring
building
sh: line 1: verda: command not found
error: builder for '/nix/store/pdmn0ls6dxkc6w2k7mbl5cgpcbr2jq2f-iosevka-15.6.3.drv' failed with exit code 127;
       last 8 log lines:
       > unpacking sources
       > unpacking source archive /nix/store/xq8ffccmwjcfs61kpgpw9gkzx7qbkpqz-iosevka-15.6.3.tar.gz
       > source root is Iosevka-15.6.3
       > setting SOURCE_DATE_EPOCH to timestamp 1659758719 of file Iosevka-15.6.3/verdafile.mjs
       > patching sources
       > configuring
       > building
       > sh: line 1: verda: command not found
       For full logs, run 'nix log /nix/store/pdmn0ls6dxkc6w2k7mbl5cgpcbr2jq2f-iosevka-15.6.3.drv'.

otavio avatar Aug 12 '22 20:08 otavio

I was able to fix this with

diff --git a/pkgs/data/fonts/iosevka/default.nix b/pkgs/data/fonts/iosevka/default.nix
index b4f64c59d80..fa825fe7277 100644
--- a/pkgs/data/fonts/iosevka/default.nix
+++ b/pkgs/data/fonts/iosevka/default.nix
@@ -72,6 +72,7 @@ stdenv.mkDerivation rec {
     nodeIosevka
     remarshal
     ttfautohint-nox
+    nodePackages.verda
   ];
 
   buildPlan =

But then, there is a Node.js-related error, which I don't know how to fix, because I've no experience with Node:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'verda' imported from /build/Iosevka-15.6.3/verdafile.mjs
Did you mean to import verda-1.10.0/lib/node_modules/verda/lib/index.js?
    at new NodeError (internal/errors.js:322:7)
    at packageResolve (internal/modules/esm/resolve.js:732:9)
    at moduleResolve (internal/modules/esm/resolve.js:773:18)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:887:11)
    at Loader.resolve (internal/modules/esm/loader.js:89:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)
    at link (internal/modules/esm/module_job.js:75:36) {
  code: 'ERR_MODULE_NOT_FOUND'

wentasah avatar Aug 12 '22 20:08 wentasah

@wentasah It's hard to tell from this but could the NODE_PATH environment variable be off to explain why it can't find libraries... https://nodejs.org/api/modules.html#loading-from-the-global-folders. Does something like this magically help?

{
  buildPhase = ''
    export NODE_PATH="${pkgs.nodePackages.verda}/lib/node_modules:$NODE_PATH"
  '';
}

That said, verda should already be resolved given it's a dependency.

toastal avatar Aug 13 '22 15:08 toastal

That said, verda should already be resolved given it's a dependency.

It'a now a development dependency, which node2nix does not support using when deploying a collection of packages.

There are two cleaner/more proper/more future proof ways that we can fix this, one which would require adding a new feature to node2nix, and one that would require restructuring this package a bit. I'm going to lean towards the second one (generating a node-packages.nix expression for the package) for now, though, so we can get this merged sooner.

@otavio Do you mind if I push this work to your branch? Thanks!

winterqt avatar Aug 13 '22 18:08 winterqt

@otavio Do you mind if I push this work to your branch? Thanks!

Absolutely not. Let me know if I can help somehow.

otavio avatar Aug 13 '22 18:08 otavio

@toastal NODE_PATH seems to be set correctly - it already contains /nix/store/fsvkchsrzsgsnk37gl021izqh1f60b4c-verda-1.10.0/lib/node_modules.

I tried to play with the package along the lines suggested by @winterqt, but without success. I hope somebody more familiar with NodeJS will be able to continue.

wentasah avatar Aug 13 '22 22:08 wentasah

Accidentally dropped the node-packages update, but that doesn't matter.

83519fe97684e52bac2a82c2457ed934bff2dfb0 fixes building iosevka and ioseveka-comfy.comfy (I only tested the comfy build, but all the others should work too), but it's not ready to merge yet (I need to clean up node-packages, add support for updating the dependency files to the update script, and most likely rework how I use the generated package). No matter the clean up changes I do make, though, the basic mechanism and fix is still the same -- so it shouldn't have any impact on if this builds or not.

@otavio @wentasah @toastal @romildo @t184256 @DamienCassou, please test and let me know if something goes awry.

winterqt avatar Aug 14 '22 03:08 winterqt

Builds fine on my system. I'm just surprised that building a font takes so long even on a 32 way machine.

ofborg's aarch64-darwin tests timed out, but from the logs, it seems the build would succeed given more time.

wentasah avatar Aug 14 '22 08:08 wentasah

It indeed takes forever... nice it got fixed.

otavio avatar Aug 14 '22 13:08 otavio

Builds for me: x86_64 NixOS

toastal avatar Aug 14 '22 16:08 toastal

Builds perfectly fine on my Fedora.

Building iosevka has always been very long for me and these commits don't seem to make it even longer.

DamienCassou avatar Aug 15 '22 11:08 DamienCassou

This was not ready to be merged. 😕 should've marked it as draft I guess, my bad.

winterqt avatar Aug 15 '22 15:08 winterqt

I'll make a follow up PR cleaning up the bits I left, and fixing the update script, but the package builds so at least it'll work once it hits unstable. (This shouldn't be reverted, to be clear, it does build.)

Lesson learned (to mark things as draft) I guess 🙃

winterqt avatar Aug 15 '22 15:08 winterqt

Building iosevka has always been very long for me and these commits don't seem to make it even longer.

Not sure I can confirm this. Iosevka has always been slow, but it currently builds extremely long time on my pretty decently spec'ed system. Is there really nothing that can be done to speed it up? Is there a problem upstream?

pinpox avatar Aug 19 '22 10:08 pinpox