| Index: utils/apidoc/apidoc.dart
 | 
| diff --git a/utils/apidoc/apidoc.dart b/utils/apidoc/apidoc.dart
 | 
| index 96b0962cc79e2241faf36408e878ded0746478c5..21ca745529a93c2e9cf914901ce294bf2262d51f 100644
 | 
| --- a/utils/apidoc/apidoc.dart
 | 
| +++ b/utils/apidoc/apidoc.dart
 | 
| @@ -18,9 +18,10 @@
 | 
|  #import('dart:io');
 | 
|  #import('dart:json');
 | 
|  #import('html_diff.dart');
 | 
| -#import('../../pkg/dartdoc/mirrors/mirrors.dart');
 | 
| -#import('../../pkg/dartdoc/mirrors/mirrors_util.dart');
 | 
| -#import('../../pkg/dartdoc/dartdoc.dart', prefix: 'doc');
 | 
| +// TODO(rnystrom): Use "package:" URL (#4968).
 | 
| +#import('../../pkg/dartdoc/lib/mirrors.dart');
 | 
| +#import('../../pkg/dartdoc/lib/mirrors_util.dart');
 | 
| +#import('../../pkg/dartdoc/lib/dartdoc.dart', prefix: 'doc');
 | 
|  #import('../../lib/_internal/libraries.dart');
 | 
|  
 | 
|  HtmlDiff _diff;
 | 
| @@ -60,15 +61,17 @@ void main() {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  final libPath = doc.scriptDir.append('../../');
 | 
| +
 | 
|    doc.cleanOutputDirectory(outputDir);
 | 
|  
 | 
|    // The basic dartdoc-provided static content.
 | 
| -  final Future copiedStatic = doc.copyDirectory(
 | 
| +  final copiedStatic = doc.copyDirectory(
 | 
|        doc.scriptDir.append('../../pkg/dartdoc/static'),
 | 
|        outputDir);
 | 
|  
 | 
|    // The apidoc-specific static content.
 | 
| -  final Future copiedApiDocStatic = doc.copyDirectory(
 | 
| +  final copiedApiDocStatic = doc.copyDirectory(
 | 
|        doc.scriptDir.append('static'),
 | 
|        outputDir);
 | 
|  
 | 
| @@ -77,7 +80,7 @@ void main() {
 | 
|    final mdn = JSON.parse(mdnFile.readAsTextSync());
 | 
|  
 | 
|    print('Cross-referencing dart:html...');
 | 
| -  HtmlDiff.initialize(doc.libPath);
 | 
| +  HtmlDiff.initialize(libPath);
 | 
|    _diff = new HtmlDiff(printWarnings:false);
 | 
|    _diff.run();
 | 
|  
 | 
| @@ -87,7 +90,7 @@ void main() {
 | 
|    htmldoc.includeApi = true;
 | 
|    htmldoc.documentLibraries(
 | 
|      <Path>[doc.scriptDir.append('../../lib/html/doc/html.dartdoc')],
 | 
| -    doc.libPath);
 | 
| +    libPath);
 | 
|  
 | 
|    // Process libraries.
 | 
|  
 | 
| @@ -102,19 +105,28 @@ void main() {
 | 
|    });
 | 
|  
 | 
|    final includedLibraries = <String>[];
 | 
| -  var lister = new Directory.fromPath(
 | 
| -      doc.scriptDir.append('../../pkg')).list();
 | 
| +
 | 
| +  var lister = new Directory.fromPath(doc.scriptDir.append('../../pkg')).list();
 | 
|    lister.onDir = (dirPath) {
 | 
|      var path = new Path.fromNative(dirPath);
 | 
| -    var libname = path.filename;
 | 
| -    path = path.append('${libname}.dart');
 | 
| -    if (new File.fromPath(path).existsSync()) {
 | 
| -      apidocLibraries.add(path);
 | 
| -      includedLibraries.add(libname);
 | 
| +    var libName = path.filename;
 | 
| +
 | 
| +    // TODO(rnystrom): Get rid of oldStylePath support when all packages are
 | 
| +    // using new layout. See #5106.
 | 
| +    var oldStylePath = path.append('${libName}.dart');
 | 
| +    var newStylePath = path.append('lib/${libName}.dart');
 | 
| +
 | 
| +    if (new File.fromPath(oldStylePath).existsSync()) {
 | 
| +      apidocLibraries.add(oldStylePath);
 | 
| +      includedLibraries.add(libName);
 | 
| +    } else if (new File.fromPath(newStylePath).existsSync()) {
 | 
| +      apidocLibraries.add(newStylePath);
 | 
| +      includedLibraries.add(libName);
 | 
|      } else {
 | 
|        print('Warning: could not find package at $path');
 | 
|      }
 | 
|    };
 | 
| +
 | 
|    lister.onDone = (success) {
 | 
|      print('Generating docs...');
 | 
|      final apidoc = new Apidoc(mdn, htmldoc, outputDir, mode, generateAppCache);
 | 
| @@ -124,12 +136,9 @@ void main() {
 | 
|      apidoc.includedLibraries = includedLibraries;
 | 
|  
 | 
|      Futures.wait([copiedStatic, copiedApiDocStatic]).then((_) {
 | 
| -      apidoc.documentLibraries(apidocLibraries, doc.libPath);
 | 
| +      apidoc.documentLibraries(apidocLibraries, libPath);
 | 
|  
 | 
| -      final clientScript = (mode == doc.MODE_STATIC) ? 'static' : 'live-nav';
 | 
| -      final Future compiled = doc.compileScript(
 | 
| -          apidoc.dartdocPath.append('client-$clientScript.dart'),
 | 
| -          outputDir.append('client-$clientScript.js'));
 | 
| +      final compiled = doc.compileScript(mode, outputDir, libPath);
 | 
|  
 | 
|        Futures.wait([compiled, copiedStatic, copiedApiDocStatic]).then((_) {
 | 
|          apidoc.cleanup();
 | 
| 
 |