From 4a5973c37a3238af73a6f122e81147852a8389c1 Mon Sep 17 00:00:00 2001
From: Filipe Silva <filipematossilva@gmail.com>
Date: Fri, 31 Aug 2018 14:11:04 +0100
Subject: [PATCH] build: workaround yarn tgz bug

---
 benchmark/aio/package.json | 3 ++-
 lib/packages.ts            | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/benchmark/aio/package.json b/benchmark/aio/package.json
index 37cdfa474b..fce9b14e36 100644
--- a/benchmark/aio/package.json
+++ b/benchmark/aio/package.json
@@ -7,8 +7,9 @@
     "initialize": "yarn clone && yarn setup && yarn update", 
     "clone": "(git clone https://github.com/angular/angular --depth 1 || true) && cd angular && git fetch origin dd2a650c3455f3bc0a88f8181758a84aacb25fea && git checkout -f FETCH_HEAD",
     "setup": "cd angular && yarn && cd aio && yarn && yarn setup",
+    "update": "cd angular/aio && yarn add ../../../../dist/_angular-devkit_build-angular.tgz --dev",
     "//": "Shouldn't need to install the package twice, but the first install seems to leave two @ngtools/webpack installs around.",
-    "update": "cd angular/aio && yarn add ../../../../dist/@angular-devkit_build-angular.tgz --dev && yarn add ../../../../dist/_angular-devkit_build-angular.tgz --dev",
+    "postupdate": "cd angular/aio && yarn add ../../../../dist/_angular-devkit_build-angular.tgz --dev",
     "benchmark": "cd angular/aio && benchmark --verbose -- yarn ~~build --configuration=stable"
   },
   "keywords": [],
diff --git a/lib/packages.ts b/lib/packages.ts
index d418943173..26eaed8dcf 100644
--- a/lib/packages.ts
+++ b/lib/packages.ts
@@ -212,7 +212,9 @@ export const packages: PackageMap =
         relative: path.relative(path.dirname(__dirname), pkgRoot),
         main: path.resolve(pkgRoot, 'src/index.ts'),
         private: packageJson.private,
-        tar: path.join(distRoot, name.replace('/', '_') + '.tgz'),
+        // yarn doesn't take kindly to @ in tgz filenames
+        // https://github.com/yarnpkg/yarn/issues/6339
+        tar: path.join(distRoot, name.replace(/\/|@/g, '_') + '.tgz'),
         bin,
         name,
         packageJson,