Skip to content
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

hnix 0.12.0.1 fails to build with hashable 1.3.1.0 #855

Closed
sjakobi opened this issue Feb 20, 2021 · 10 comments
Closed

hnix 0.12.0.1 fails to build with hashable 1.3.1.0 #855

sjakobi opened this issue Feb 20, 2021 · 10 comments

Comments

@sjakobi
Copy link
Member

sjakobi commented Feb 20, 2021

src/Nix/Expr/Types.hs:77:10: error:
    Duplicate instance declarations:
      instance Hashable1 NonEmpty
        -- Defined at src/Nix/Expr/Types.hs:77:10
      instance Hashable1 NonEmpty
        -- Defined in ‘hashable-1.3.1.0:Data.Hashable.Class’
   |
77 | instance Hashable1 NonEmpty
   |          ^^^^^^^^^^^^^^^^^^
cabal: Failed to build hnix-0.12.0.1 (which is required by exe:dhall-to-nix
from dhall-nix-1.1.20). See the build log above for details.

This instance was added to hashable in v1.3.1.0. I see that the orphan instance has already been removed on hnix master (yay!), so a new release should fix this.

@Anton-Latukha
Copy link
Collaborator

Anton-Latukha commented Feb 20, 2021

Thank you Simon.

Indeed, recently removed a couple of them.

In current situation would kick the 0.12.1.1 fix branch down the road.

Since https://github.com/haskell-nix/hnix/blob/fccb88604179c76d43610be07af58226ac8f0615/ChangeLog.md is a huge change, see, do not want to dump it on people.
Seems like 1, up to 3, maybe 4 major releases in a year is enough, if not too much. Majors need to brew.
Want to make GNU tools & shell commands/script semi-automation for people to migrate.
So want to keep the master brewing.

The fix branch and release going to be made.

@Anton-Latukha
Copy link
Collaborator

The last two major package versions got new revisions.

Also seems a good idea to have the CI regularly check the Hackage package.

@Anton-Latukha
Copy link
Collaborator

Anton-Latukha commented Feb 20, 2021

Oh, well.

I cant release from the fix branch, removing the instance technically is an API breakage.

...

But if it just gets reexported from hashing ... win, we can do a minor release.

But that reexport in the minor version may break the downstream somewhere, if they would import the Expr and the hashable scopes...

@Anton-Latukha
Copy link
Collaborator

Do not bother everyone with minor things, I do not want to do major release for 1 Hashable1 NonEmpty instance.
I wanted to do the last thing mentioned: reexport and do a minor release.

And then thought: why chose any of the two.

Up to 3 days ago somehow everyone was casually living without that instance.
Revision already is made, hnix 0.12 simply would be using hashable 1.3.0.

In some near time, the major release would be ready. Migration helper automation needs to be done before the release. And maybe it worth waiting guys in #804 would show up to packs everything into one major.

@Anton-Latukha
Copy link
Collaborator

@sjakobi

Can we close this? Is revision enough for you for ~2 month?

@Anton-Latukha
Copy link
Collaborator

Sorry, was thinking about other things.

@sjakobi
Copy link
Member Author

sjakobi commented Feb 20, 2021

Thanks for the quick reaction @Anton-Latukha!

Could you possibly add a revision for v0.12.0 too? http://hackage.haskell.org/package/hnix-0.12.0

Note that hashable < 1.3.1 is a blocker for compatibility with GHC 9.0, so it would be nice if you could make a compatible release in the next 2 months or so.

@Anton-Latukha
Copy link
Collaborator

Anton-Latukha commented Feb 20, 2021

Of course, the 9.0 work also is great to include in major.
Know that 9.0 should come around, just do not know when, and know that complex IT projects often also do not know when.

Happy to see you, in GHC, in main libs, and everywhere.

Done 0.12.0 revision.

@Anton-Latukha
Copy link
Collaborator

Anton-Latukha commented Feb 21, 2021

Thank you also for upstreaming the Hashable1 NonEmpty and doing the Semigroups instances work.

@Anton-Latukha
Copy link
Collaborator

Probably is closed now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants