treeform / fidget

Figma based UI library for nim, with HTML and OpenGL backends.
MIT License
763 stars 32 forks source link

nimble install fidget fails #145

Closed Clonkk closed 3 years ago

Clonkk commented 3 years ago

There is an error in Nimble specified versions of dependencies.

Fidget require Typography >= 0.7.5 => latest is 0.7.7 In the nimble file for Typography v0.7.7 it requires Pixie >= 1.0.4 .

In the latest fidget version it requires Pixie 1.0.3.

=> These range are incompatible. Minimum acceptable version for Pixie package is 1.0.4 or Typography needs to be restrained to a version that accepts Pixie 1.0.3.

guzba commented 3 years ago

Hi. Hm, Fidget requires typography 0.7.5 not >= 0.7.5. See https://github.com/treeform/fidget/blob/master/fidget.nimble.

This 0.7.5 will result in Pixie 1.0.3 for Typography as well, resolving the incompatibility issue. We have locked the versions to ensure Fidget works, I'm not sure why later versions are installed but they are not what Fidget requires and that is the problem.

Clonkk commented 3 years ago

Hello, Indeed, you are right. I was hasty (nad mistaken) in my package versions dependencies analysis.

Here is the output on my first nimble install fidget

Downloading https://github.com/treeform/fidget using git
  Verifying dependencies for fidget@0.7.4
 Installing chroma@0.2.3
Downloading https://github.com/treeform/chroma using git
  Verifying dependencies for chroma@0.2.3
 Installing chroma@0.2.3
   Success: chroma installed successfully.
 Installing typography@0.7.5
Downloading https://github.com/treeform/typography using git
  Verifying dependencies for typography@0.7.5
 Installing pixie@>= 1.0.3
Downloading https://github.com/treeform/pixie using git
  Verifying dependencies for pixie@1.1.0
 Installing vmath@>= 0.4.0
Downloading https://github.com/treeform/vmath using git
  Verifying dependencies for vmath@0.5.0
 Installing vmath@0.5.0
   Success: vmath installed successfully.
 Installing chroma@>= 0.2.5
Downloading https://github.com/treeform/chroma using git
  Verifying dependencies for chroma@0.2.5
 Installing chroma@0.2.5
   Success: chroma installed successfully.
      Info: Dependency on zippy@>= 0.3.5 already satisfied
  Verifying dependencies for zippy@0.5.3
 Installing flatty@>= 0.1.3
Downloading https://github.com/treeform/flatty using git
  Verifying dependencies for flatty@0.2.1
 Installing flatty@0.2.1
   Success: flatty installed successfully.
 Installing nimsimd@>= 1.0.0
Downloading https://github.com/guzba/nimsimd using git
  Verifying dependencies for nimsimd@1.0.0
 Installing nimsimd@1.0.0
   Success: nimsimd installed successfully.
 Installing bumpy@>= 1.0.2
Downloading https://github.com/treeform/bumpy using git
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
 Installing bumpy@1.0.2
   Success: bumpy installed successfully.
 Installing pixie@1.1.0
   Success: pixie installed successfully.
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on chroma@>= 0.2.3 already satisfied
  Verifying dependencies for chroma@0.2.5
      Info: Dependency on print@>= 0.1.0 already satisfied
  Verifying dependencies for print@0.2.0
      Info: Dependency on bumpy@>= 1.0.0 already satisfied
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on flatty@>= 0.1.3 already satisfied
  Verifying dependencies for flatty@0.2.1
 Installing typography@0.7.5
   Success: typography installed successfully.
 Installing pixie@1.0.3
Downloading https://github.com/treeform/pixie using git
       Tip: 158 messages have been suppressed, use --verbose to show them.
     Error: Downloaded package's version does not satisfy requested version range: wanted 1.0.3 got 1.1.0.

Running nimble install fidget a second time yields a different package having incompatible versions. I'm guessing some version were still installed by nimble in the meantime so the dependencies resolution (or lack of) failed in another place.

This was my second attempt :

Downloading https://github.com/treeform/fidget using git
  Verifying dependencies for fidget@0.7.4
      Info: Dependency on chroma@0.2.3 already satisfied
  Verifying dependencies for chroma@0.2.3
      Info: Dependency on typography@0.7.5 already satisfied
  Verifying dependencies for typography@0.7.5
      Info: Dependency on pixie@>= 1.0.3 already satisfied
  Verifying dependencies for pixie@1.1.0
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on chroma@>= 0.2.5 already satisfied
  Verifying dependencies for chroma@0.2.5
      Info: Dependency on zippy@>= 0.3.5 already satisfied
  Verifying dependencies for zippy@0.5.3
      Info: Dependency on flatty@>= 0.1.3 already satisfied
  Verifying dependencies for flatty@0.2.1
      Info: Dependency on nimsimd@>= 1.0.0 already satisfied
  Verifying dependencies for nimsimd@1.0.0
      Info: Dependency on bumpy@>= 1.0.2 already satisfied
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on chroma@>= 0.2.3 already satisfied
  Verifying dependencies for chroma@0.2.5
      Info: Dependency on print@>= 0.1.0 already satisfied
  Verifying dependencies for print@0.2.0
      Info: Dependency on bumpy@>= 1.0.0 already satisfied
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on flatty@>= 0.1.3 already satisfied
  Verifying dependencies for flatty@0.2.1
 Installing pixie@1.0.3
Downloading https://github.com/treeform/pixie using git
  Verifying dependencies for pixie@1.0.3
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on chroma@>= 0.2.3 already satisfied
  Verifying dependencies for chroma@0.2.5
      Info: Dependency on zippy@>= 0.3.5 already satisfied
  Verifying dependencies for zippy@0.5.3
      Info: Dependency on flatty@>= 0.1.3 already satisfied
  Verifying dependencies for flatty@0.2.1
      Info: Dependency on nimsimd@>= 1.0.0 already satisfied
  Verifying dependencies for nimsimd@1.0.0
      Info: Dependency on bumpy@>= 1.0.2 already satisfied
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
 Installing pixie@1.0.3
   Success: pixie installed successfully.
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
      Info: Dependency on print@>= 0.1.0 already satisfied
  Verifying dependencies for print@0.2.0
 Installing opengl@>= 1.2.3
Downloading https://github.com/nim-lang/opengl using git
  Verifying dependencies for opengl@1.2.6
 Installing x11@>= 1.1
Downloading https://github.com/nim-lang/x11 using git
  Verifying dependencies for x11@1.1
 Installing x11@1.1
   Success: x11 installed successfully.
 Installing opengl@1.2.6
   Success: opengl installed successfully.
 Installing html5_canvas@>= 1.3
Downloading https://gitlab.com/define-private-public/HTML5-Canvas-Nim using git
  Verifying dependencies for html5_canvas@1.3
 Installing html5_canvas@1.3
   Success: html5_canvas installed successfully.
 Installing staticglfw@>= 4.1.2
Downloading https://github.com/treeform/staticglfw using git
  Verifying dependencies for staticglfw@4.1.2
      Info: Dependency on opengl@>= 1.2.3 already satisfied
  Verifying dependencies for opengl@1.2.6
      Info: Dependency on x11@>= 1.1 already satisfied
  Verifying dependencies for x11@1.1
 Installing staticglfw@4.1.2
   Success: staticglfw installed successfully.
      Info: Dependency on cligen@>= 1.0.0 already satisfied
  Verifying dependencies for cligen@1.4.1
 Installing supersnappy@>= 1.0.0
Downloading https://github.com/guzba/supersnappy using git
  Verifying dependencies for supersnappy@2.0.0
 Installing supersnappy@2.0.0
   Success: supersnappy installed successfully.
      Info: Dependency on bumpy@>= 1.0.0 already satisfied
  Verifying dependencies for bumpy@1.0.2
      Info: Dependency on vmath@>= 0.4.0 already satisfied
  Verifying dependencies for vmath@0.5.0
       Tip: 269 messages have been suppressed, use --verbose to show them.
     Error: Cannot satisfy the dependency on chroma 0.2.5 and chroma 0.2.3
guzba commented 3 years ago

Yeah I wish we got more helpful errors here, it'd be nice to know which packages required the different versions.

Another person ran into this, from having a later Chroma installed by a later Pixie. Dom ended up suggesting a new nimble dir since there's bug(s) in Nimble. See the convo here in Discord: https://discord.com/channels/371759389889003530/371759607934353448/820388609508769802 https://dl3.pushbulletusercontent.com/t4HXVghftQCFNKT6NEuSsmYGY7ynRWwa/image.png

I think just uninstalling Chroma (which got a later version from the later version of Pixie) may resolve the issue though but the other person who had this tried and it didn't work. I'm not sure, something with Nimble is off unfortunately.

dom96 commented 3 years ago

Hi. Hm, Fidget requires typography 0.7.5 not >= 0.7.5. See https://github.com/treeform/fidget/blob/master/fidget.nimble.

This 0.7.5 will result in Pixie 1.0.3 for Typography as well, resolving the incompatibility issue. We have locked the versions to ensure Fidget works, I'm not sure why later versions are installed but they are not what Fidget requires and that is the problem.

Unfortunately by doing this you are asking for trouble. Libraries shouldn't lock dependencies, only application packages should.

Sadly without lock files it's a pain I know, but I think you'll have much less Nimble issues if you change these to not be locked to a single version.

What you can do is provide a list of requires lines (that specify concrete versions) for applications to use to get a reproducible build that works.

guzba commented 3 years ago

I mean, we're just trying to keep Fidget on life support for now while working on Fidget 2. This is why we have locked versions and letting it be. This is the first I've heard that we should not be requiring specific versions.

What you can do is provide a list of requires lines (that specify concrete versions) for applications to use to get a reproducible build that works.

That is the requires lines in the nimble file we already have I think? Github Actions verifies them for us so we know they work. For some reason though Nimble can't make that work for some users who try to install and use Fidget. Not sure what goes wrong there that doesn't go wrong with a fresh environment.

guzba commented 3 years ago

Since locking isn't ok, I'm going to go back to following the releases: https://github.com/treeform/fidget/pull/146

(This'll mean we need to think about Fidget [current] each time we work on this libs which is what we were trying to avoid but it seems unavoidable.)

dom96 commented 3 years ago

That is the requires lines in the nimble file we already have I think? Github Actions verifies them for us so we know they work. For some reason though Nimble can't make that work for some users who try to install and use Fidget. Not sure what goes wrong there that doesn't go wrong with a fresh environment.

Is that in fidget's nimble file though? What I am talking about is a separate list of "requires" that other developers can put in their program's .nimble files. It's definitely a workaround though so I wouldn't blame you for not creating it.

guzba commented 3 years ago

I think we'll just follow releases with Fidget [current], it's a bit more to think about but it's more in line with what Nimble expects so I'd rather follow the normal path now that it's become clear we took a wrong turn here haha.

yozachar commented 3 years ago

Fidget installation does to err anymore:

```dart ~ ➜ nimble install fidget Downloading https://github.com/treeform/fidget using git Verifying dependencies for fidget@0.7.8 Installing typography@>= 0.7.10 Downloading https://github.com/treeform/typography using git Verifying dependencies for typography@0.7.10 Installing pixie@>= 2.0.2 Downloading https://github.com/treeform/pixie using git Verifying dependencies for pixie@2.0.4 Installing vmath@>= 1.0.4 Downloading https://github.com/treeform/vmath using git Verifying dependencies for vmath@1.0.8 Installing vmath@1.0.8 Success: vmath installed successfully. Installing chroma@>= 0.2.5 Downloading https://github.com/treeform/chroma using git Verifying dependencies for chroma@0.2.5 Installing chroma@0.2.5 Success: chroma installed successfully. Installing zippy@>= 0.3.5 Downloading https://github.com/guzba/zippy using git Verifying dependencies for zippy@0.5.11 Installing zippy@0.5.11 Success: zippy installed successfully. Installing flatty@>= 0.1.3 Downloading https://github.com/treeform/flatty using git Verifying dependencies for flatty@0.2.1 Installing flatty@0.2.1 Success: flatty installed successfully. Installing nimsimd@>= 1.0.0 Downloading https://github.com/guzba/nimsimd using git Verifying dependencies for nimsimd@1.0.0 Installing nimsimd@1.0.0 Success: nimsimd installed successfully. Installing bumpy@>= 1.0.3 Downloading https://github.com/treeform/bumpy using git Verifying dependencies for bumpy@1.0.3 Info: Dependency on vmath@>= 1.0.0 already satisfied Verifying dependencies for vmath@1.0.8 Installing bumpy@1.0.3 Success: bumpy installed successfully. Installing pixie@2.0.4 Success: pixie installed successfully. Info: Dependency on vmath@>= 1.0.0 already satisfied Verifying dependencies for vmath@1.0.8 Info: Dependency on chroma@>= 0.2.3 already satisfied Verifying dependencies for chroma@0.2.5 Installing print@>= 0.1.0 Downloading https://github.com/treeform/print using git Verifying dependencies for print@1.0.0 Installing print@1.0.0 Success: print installed successfully. Info: Dependency on bumpy@>= 1.0.3 already satisfied Verifying dependencies for bumpy@1.0.3 Info: Dependency on vmath@>= 1.0.0 already satisfied Verifying dependencies for vmath@1.0.8 Info: Dependency on flatty@>= 0.1.3 already satisfied Verifying dependencies for flatty@0.2.1 Installing typography@0.7.10 Success: typography installed successfully. Info: Dependency on pixie@>= 2.0.2 already satisfied Verifying dependencies for pixie@2.0.4 Info: Dependency on vmath@>= 1.0.4 already satisfied Verifying dependencies for vmath@1.0.8 Info: Dependency on chroma@>= 0.2.5 already satisfied Verifying dependencies for chroma@0.2.5 Info: Dependency on zippy@>= 0.3.5 already satisfied Verifying dependencies for zippy@0.5.11 Info: Dependency on flatty@>= 0.1.3 already satisfied Verifying dependencies for flatty@0.2.1 Info: Dependency on nimsimd@>= 1.0.0 already satisfied Verifying dependencies for nimsimd@1.0.0 Info: Dependency on bumpy@>= 1.0.3 already satisfied Verifying dependencies for bumpy@1.0.3 Info: Dependency on vmath@>= 1.0.0 already satisfied Verifying dependencies for vmath@1.0.8 Info: Dependency on print@>= 0.1.0 already satisfied Verifying dependencies for print@1.0.0 Info: Dependency on opengl@>= 1.2.3 already satisfied Verifying dependencies for opengl@#head Info: Dependency on x11@>= 1.1 already satisfied Verifying dependencies for x11@1.1 Installing html5_canvas@>= 1.3 Downloading https://gitlab.com/define-private-public/HTML5-Canvas-Nim using git Verifying dependencies for html5_canvas@1.3 Installing html5_canvas@1.3 Success: html5_canvas installed successfully. Installing staticglfw@>= 4.1.2 Downloading https://github.com/treeform/staticglfw using git Verifying dependencies for staticglfw@4.1.2 Info: Dependency on opengl@>= 1.2.3 already satisfied Verifying dependencies for opengl@#head Info: Dependency on x11@>= 1.1 already satisfied Verifying dependencies for x11@1.1 Installing staticglfw@4.1.2 Success: staticglfw installed successfully. Info: Dependency on cligen@>= 1.0.0 already satisfied Verifying dependencies for cligen@1.5.4 Installing supersnappy@>= 1.0.0 Downloading https://github.com/guzba/supersnappy using git Verifying dependencies for supersnappy@2.0.0 Installing supersnappy@2.0.0 Success: supersnappy installed successfully. Installing fidget@0.7.8 Success: fidget installed successfully. ```

Should this issue be closed or renamed?

Clonkk commented 3 years ago

I'll close for now. We can reopen it if it arise again.