Comments (7)
More details: Here's a problem this would fix:
- You build packages, and they're in the cache.
- You upgrade esy itself which assumes packages are built in a particular form/structure.
- The upgraded version finds a hash match and tries to use a cached package build, but it was from a previous version of esy that built in a different form/structure - causing weird failures.
from esy-issues.
Looks like we should just completely discard the old cache when install esy?
from esy-issues.
@yunxing Packages can form dependencies on specific versions of esy
, and that results in multiple concurrent versions of esy
on the system building artifacts. If you upgrade to a new esy
, I believe that implies you should version bump, and also update versions you specify as dependencies so that they also use a compatible esy
version. esy
would be a peerDependency
I believe. (Unfortunately, we saw some issues with it not resolving those correctly). As a fallback we should probably always use the version of esy
that your top level package specified.
(I'm thinking that the global esy
command should by default search for the esy
command in your top level project and then hand off the command to that project's specific version of esy
, thoughts?).
from esy-issues.
@jordwalke I don't know, the extra level of burrito confuses me to reason about this (you need toplevel "esy" to find nested "esy" in order to build a dependency that requires a different version of "esy").
Do you think we should prompt people to install esy globally other than making it as a dependency? (think about the case with yarn, where people have to install it globally).
from esy-issues.
@yunxing The specific format in package.json
definitely makes it so that packages need to specify the version of esy
they depend on. The only remaining question is how to enforce it.
- It seems we definitely want a global
esy
command (correct?) - It seems we want packages to have to specify the version of the
esy
protocol they are using (so that we know how to interpret their config).
Given that, suppose they have two project who are configured for two different versions of esy
(esy 1.0
and esy 2.0
). Which one do they install globally? How do they build the other project that uses the other version of esy
?
Since they have to specify which version of esy they are configured for, what if they did so by simply adding that version as a dependency. That's no more than any other way to configure.
"esy": "1.0.0"
Since it was in their dependencies, then by having the global esy
command delegate to the specific version automatically, we now gained the ability for two projects to be built, that depend on two different versions of esy
, yet we always had one way to kick off the build - through the global esy
command.
from esy-issues.
Is this one done? I thought I saw this implemented.
from esy-issues.
My latest diffs are sufficient - I include the esy version number in cache directory name.
from esy-issues.
Related Issues (20)
- [HIGH PRI] Generate and publish opam packages to pure npm. HOT 11
- [HIGH PRI] Make work on pure npm. HOT 4
- [HIGH PRI] Change all packages to use esy scripts to generate npm compatible esy packages. HOT 1
- [MED PRI] Constraint solver that generates shrinkwrap. HOT 1
- Is there some way we can make better use of opam directly?
- [HIGH PRI] Clean tests.
- Environment for cross compiling packages HOT 7
- [MID PRI][Good First Task] Stop augmenting PATH for irrelevant packages. HOT 2
- [HIGH PRI] Create version of opam file format parser that can be compiled to JS using BuckleScript. HOT 9
- [HIGH PRI] Make work on winbash.
- I can't build esy off of the master branch as of commit id: 5a705f93c3f10d4017cac85d3ae929a01ff28dd9 HOT 4
- `Lib` folder missing in source code HOT 6
- Clean Abstraction For Intermediate Build Representation. HOT 2
- Configure ocamlfind through environment variables HOT 5
- A way to prevent sandbox-exec on ejecting. HOT 3
- Provide our own implementation of realpath for Windows
- Make opam-file-format work with BuckleScript HOT 4
- Publish m4 and use it instead conf-m4 for opam packages HOT 1
- Allow multiple version of a package in the same dependency tree HOT 1
- Windows needs some env vars contain semicolon instead of colon as separator HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esy-issues.