/** Package a single bundle. */
void createBundle(String branch, String bundle, String category) throws IOException {
- final Path source;
+ final Path bundleSourceBase;
if (!Files.exists(execDirectory.resolve(bundle))) {
logger.log(WARNING,
"Bundle " + bundle + " not found in " + execDirectory + ", assuming this is this directory.");
- source = execDirectory;
+ bundleSourceBase = execDirectory;
} else {
- source = execDirectory.resolve(bundle);
+ bundleSourceBase = execDirectory.resolve(bundle);
}
- Path srcP = source.resolve("src");
+ Path srcP = bundleSourceBase.resolve("src");
Path compiled = buildBase.resolve(bundle);
- String bundleSymbolicName = source.getFileName().toString();
+ String bundleSymbolicName = bundleSourceBase.getFileName().toString();
// Metadata
Properties properties = new Properties();
}
}
- Path bndBnd = source.resolve("bnd.bnd");
+ Path bndBnd = bundleSourceBase.resolve("bnd.bnd");
if (Files.exists(bndBnd))
try (InputStream in = Files.newInputStream(bndBnd)) {
properties.load(in);
});
// add resources
- Files.walkFileTree(source, new SimpleFileVisitor<Path>() {
+ Files.walkFileTree(bundleSourceBase, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
// skip output directory if it happens to be within the sources
return FileVisitResult.SKIP_SUBTREE;
// skip excluded patterns
- Path relativeP = source.relativize(dir);
+ Path relativeP = bundleSourceBase.relativize(dir);
for (PathMatcher exclude : excludes)
if (exclude.matches(relativeP))
return FileVisitResult.SKIP_SUBTREE;
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- Path relativeP = source.relativize(file);
+ Path relativeP = bundleSourceBase.relativize(file);
for (PathMatcher exclude : excludes)
if (exclude.matches(relativeP))
return FileVisitResult.CONTINUE;
}
// add legal notices and licenses
- for (Path p : listLegalFilesToInclude(source).values()) {
+ for (Path p : listLegalFilesToInclude(bundleSourceBase).values()) {
jarOut.putNextEntry(new JarEntry(p.getFileName().toString()));
Files.copy(p, jarOut);
}
: a2srcOutput.resolve(category);
Files.createDirectories(a2srcJarDirectory);
Path srcJarP = a2srcJarDirectory.resolve(compiled.getFileName() + "." + major + "." + minor + ".src.jar");
- Manifest srcManifest = new Manifest();
- srcManifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
- srcManifest.getMainAttributes().putValue("Bundle-SymbolicName", bundleSymbolicName + ".src");
- srcManifest.getMainAttributes().putValue("Bundle-Version",
- manifest.getMainAttributes().getValue("Bundle-Version").toString());
-
- boolean isJsBundle = bundleSymbolicName.endsWith(".js");
- if (!isJsBundle) {
- srcManifest.getMainAttributes().putValue("Eclipse-SourceBundle",
- bundleSymbolicName + ";version=\"" + manifest.getMainAttributes().getValue("Bundle-Version"));
-
- try (JarOutputStream srcJarOut = new JarOutputStream(Files.newOutputStream(srcJarP), srcManifest)) {
- copySourcesToJar(srcP, srcJarOut, "");
- // add legal notices and licenses
- for (Path p : listLegalFilesToInclude(source).values()) {
- srcJarOut.putNextEntry(new JarEntry(p.getFileName().toString()));
- Files.copy(p, srcJarOut);
- }
+ createSourceBundle(bundleSymbolicName, manifest, bundleSourceBase, srcP, srcJarP);
+ }
+ }
+
+ /** Create a separate bundle containing the sources. */
+ void createSourceBundle(String bundleSymbolicName, Manifest manifest, Path bundleSourceBase, Path srcP,
+ Path srcJarP) throws IOException {
+ Manifest srcManifest = new Manifest();
+ srcManifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
+ srcManifest.getMainAttributes().putValue("Bundle-SymbolicName", bundleSymbolicName + ".src");
+ srcManifest.getMainAttributes().putValue("Bundle-Version",
+ manifest.getMainAttributes().getValue("Bundle-Version").toString());
+
+ boolean isJsBundle = bundleSymbolicName.endsWith(".js");
+ if (!isJsBundle) {
+ srcManifest.getMainAttributes().putValue("Eclipse-SourceBundle",
+ bundleSymbolicName + ";version=\"" + manifest.getMainAttributes().getValue("Bundle-Version"));
+
+ try (JarOutputStream srcJarOut = new JarOutputStream(Files.newOutputStream(srcJarP), srcManifest)) {
+ copySourcesToJar(srcP, srcJarOut, "");
+ // add legal notices and licenses
+ for (Path p : listLegalFilesToInclude(bundleSourceBase).values()) {
+ srcJarOut.putNextEntry(new JarEntry(p.getFileName().toString()));
+ Files.copy(p, srcJarOut);
}
- } else {// JavaScript source maps
- srcManifest.getMainAttributes().putValue("Fragment-Host",
- bundleSymbolicName + ";version=\"" + manifest.getMainAttributes().getValue("Bundle-Version"));
- try (JarOutputStream srcJarOut = new JarOutputStream(Files.newOutputStream(srcJarP), srcManifest)) {
- Files.walkFileTree(source, new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- Path relativeP = source.relativize(file);
- if (!file.getFileName().toString().endsWith(".map"))
- return FileVisitResult.CONTINUE;
- JarEntry entry = new JarEntry(relativeP.toString());
- srcJarOut.putNextEntry(entry);
- Files.copy(file, srcJarOut);
+ }
+ } else {// JavaScript source maps
+ srcManifest.getMainAttributes().putValue("Fragment-Host", bundleSymbolicName + ";bundle-version=\""
+ + manifest.getMainAttributes().getValue("Bundle-Version"));
+ try (JarOutputStream srcJarOut = new JarOutputStream(Files.newOutputStream(srcJarP), srcManifest)) {
+ Files.walkFileTree(bundleSourceBase, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ Path relativeP = bundleSourceBase.relativize(file);
+ if (!file.getFileName().toString().endsWith(".map"))
return FileVisitResult.CONTINUE;
- }
- });
- }
+ JarEntry entry = new JarEntry(relativeP.toString());
+ srcJarOut.putNextEntry(entry);
+ Files.copy(file, srcJarOut);
+ return FileVisitResult.CONTINUE;
+ }
+ });
}
}
}
}
long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime();
- logger.log(INFO, "Make.java action '" + action + "' succesfully completed after " + (jvmUptime / 1000) + "."
+ logger.log(INFO, "Make.java action '" + action + "' successfully completed after " + (jvmUptime / 1000) + "."
+ (jvmUptime % 1000) + " s");
} catch (Exception e) {
long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime();