-
Notifications
You must be signed in to change notification settings - Fork 37
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
dune-release fails with multi-opam repository #420
Comments
Hey @hannesm, thanks for reporting this! Do I understand correctly that
separately all work well, while
returns the error you've copied since it will first build the happy-eyeballs library into the dune directory and then look for a unique happy-eyeballs library when building the other two packages (and also find one in the switch)? If I understand the situation correctly, I think that for the tarball check, dune-release should iterate over separate package builds ( |
Hi @pitag-ha,
Yes, indeed.
yes.
That would be great. I guess for building documentation each package should be built separately as well. Thanks! |
Cool.
Oh, that's a very good point! So in the end it seems like that fixing this will require more work and even a change in dune-release's behavior. Currently, it builds all the documentation at once and pushes that to one github page. Whereas what you're saying is to have one github page per package, right? |
Not sure what should be done in respect to the documentation -- certainly a |
Aah, I see. Thanks! (I'll be on new year's vacation from tomorrow on, but I can see if it's as simple as I think when I'm back) |
Hi there, I ended up here again when attempting to cut a release of happy-eyeballs. Is there any simple fix? Thanks a lot. |
Have you tried removing the packages from your opam switch before running this? I.e. run:
Since the packages are interdependent I think it make sense that the build checks that they can be built together rather than build them using the opam installed versions. This is especially true if you release new features in one of the packages mentioned, the opam installed version clearly won't have it. I think the problem here is that the To be very clear, running three separate I'll report this on dune. Another temporary workaround you can use here, if you're confident in your release, is to pass |
Ah my bad I missed the intermediate |
Yes. |
I assume the pinning won't solve your problem here unfortunately. The "interleaved" structure of the The only viable solution I could see would be to indeed run the build for each package separately but this can only reliably work if you pinned them to the exact version you're releasing. |
To be entirely fair I think this kind of testing would also be better handled in a CI than locally but I guess we'll have to settle for baby steps at first as this needs fixing! |
Thanks for your investigations. What I do for development is to symlink my local ocaml-dns directory as part of the happy-eyeballs directory. This allows |
That's because dune-release uses the content of the tarball to run the builds, which likely doesn't include your local copy of The more I think about this, the more I think it in fact makes sense to run the build and test commands separately and rely on users pinning the repo correctly. This is what our old CI scripts used to do and what is closest to what |
When attempting to use dune-release on happy-eyeballs (https://giithub.com/roburio/happy-eyeballs), I get errors. A workaround is to specify
-p happy-eyeballs
(release a single package only). The underlying reason seems to be that dns-client depends on happy-eyeballs, and happy-eyeballs-lwt/happy-eyeballs-mirage depend on dns-client.lwt/.mirage (see ocurrent/ocaml-ci#381 for a similar tooling issue).The text was updated successfully, but these errors were encountered: