86 lines
4.6 KiB
Diff
86 lines
4.6 KiB
Diff
diff --git a/packages/plugin-essentials/sources/commands/install.ts b/packages/plugin-essentials/sources/commands/install.ts
|
|
index 9dcd02d..cf1765a 100644
|
|
--- a/packages/plugin-essentials/sources/commands/install.ts
|
|
+++ b/packages/plugin-essentials/sources/commands/install.ts
|
|
@@ -254,6 +254,7 @@ export default class YarnCommand extends BaseCommand {
|
|
// If migrating from a v1 install, we automatically enable the node-modules linker,
|
|
// since that's likely what the author intended to do.
|
|
if (content?.includes(`yarn lockfile v1`)) {
|
|
+ throw new Error("Tried to use yarn-berry_3.yarnConfigHook (nixpkgs), but found a yarn v1 lockfile");
|
|
const nmReport = await StreamReport.start({
|
|
configuration,
|
|
json: this.json,
|
|
diff --git a/packages/plugin-git/sources/GitFetcher.ts b/packages/plugin-git/sources/GitFetcher.ts
|
|
index fe2a4fc..bfa8272 100644
|
|
--- a/packages/plugin-git/sources/GitFetcher.ts
|
|
+++ b/packages/plugin-git/sources/GitFetcher.ts
|
|
@@ -50,9 +50,14 @@ export class GitFetcher implements Fetcher {
|
|
}
|
|
|
|
async cloneFromRemote(locator: Locator, opts: FetchOptions) {
|
|
- const cloneTarget = await gitUtils.clone(locator.reference, opts.project.configuration);
|
|
-
|
|
const repoUrlParts = gitUtils.splitRepoUrl(locator.reference);
|
|
+
|
|
+ if (repoUrlParts.treeish.protocol !== "commit") {
|
|
+ throw new Error(`Missing source for git dependency ${locator.reference}`);
|
|
+ };
|
|
+
|
|
+ const cloneTarget = opts.cache.checkoutPath(repoUrlParts.treeish.request);
|
|
+
|
|
const packagePath = ppath.join(cloneTarget, `package.tgz` as PortablePath);
|
|
|
|
await scriptUtils.prepareExternalProject(cloneTarget, packagePath, {
|
|
diff --git a/packages/plugin-npm/sources/NpmSemverFetcher.ts b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
|
index 0f69423..5b21462 100644
|
|
--- a/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
|
+++ b/packages/plugin-npm/sources/NpmSemverFetcher.ts
|
|
@@ -47,6 +47,7 @@ export class NpmSemverFetcher implements Fetcher {
|
|
}
|
|
|
|
private async fetchFromNetwork(locator: Locator, opts: FetchOptions) {
|
|
+ throw new Error(`Missing sources for ${structUtils.prettyLocator(opts.project.configuration, locator)}`);
|
|
let sourceBuffer;
|
|
try {
|
|
sourceBuffer = await npmHttpUtils.get(NpmSemverFetcher.getLocatorUrl(locator), {
|
|
diff --git a/packages/yarnpkg-core/sources/Cache.ts b/packages/yarnpkg-core/sources/Cache.ts
|
|
index d5e6864..374b5d6 100644
|
|
--- a/packages/yarnpkg-core/sources/Cache.ts
|
|
+++ b/packages/yarnpkg-core/sources/Cache.ts
|
|
@@ -158,6 +158,10 @@ export class Cache {
|
|
}
|
|
}
|
|
|
|
+ checkoutPath(commit: string): string {
|
|
+ return ppath.join(ppath.join(this.cwd, "../checkouts"), commit);
|
|
+ }
|
|
+
|
|
async fetchPackageFromCache(locator: Locator, expectedChecksum: string | null, {onHit, onMiss, loader, ...opts}: {onHit?: () => void, onMiss?: () => void, loader?: () => Promise<ZipFS> } & CacheOptions): Promise<[FakeFS<PortablePath>, () => void, string | null]> {
|
|
const mirrorPath = this.getLocatorMirrorPath(locator);
|
|
|
|
diff --git a/packages/yarnpkg-core/sources/scriptUtils.ts b/packages/yarnpkg-core/sources/scriptUtils.ts
|
|
index b3c2c59..6b9eb2f 100644
|
|
--- a/packages/yarnpkg-core/sources/scriptUtils.ts
|
|
+++ b/packages/yarnpkg-core/sources/scriptUtils.ts
|
|
@@ -287,10 +287,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
|
// Run an install; we can't avoid it unless we inspect the
|
|
// package.json, which I don't want to do to keep the codebase
|
|
// clean (even if it has a slight perf cost when cloning v1 repos)
|
|
- const install = await execUtils.pipevp(`yarn`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
|
- if (install.code !== 0)
|
|
- return install.code;
|
|
-
|
|
stdout.write(`\n`);
|
|
|
|
const pack = await execUtils.pipevp(`yarn`, [...workspaceCli, `pack`, `--filename`, npath.fromPortablePath(outputPath)], {cwd, env, stdin, stdout, stderr});
|
|
@@ -375,9 +371,6 @@ export async function prepareExternalProject(cwd: PortablePath, outputPath: Port
|
|
// We can't use `npm ci` because some projects don't have npm
|
|
// lockfiles that are up-to-date. Hopefully npm won't decide
|
|
// to change the versions randomly.
|
|
- const install = await execUtils.pipevp(`npm`, [`install`], {cwd, env, stdin, stdout, stderr, end: execUtils.EndStrategy.ErrorCode});
|
|
- if (install.code !== 0)
|
|
- return install.code;
|
|
|
|
const packStream = new PassThrough();
|
|
const packPromise = miscUtils.bufferStream(packStream);
|