332
333 private Module nameToModule(String name) {
334 Module m = nameToModule.get(name);
335 if (m == null)
336 throw new RuntimeException("No module definition for " + name);
337 return m;
338 }
339
340 private Set<Module> getModuleDependences(Module m) {
341 return m.requires().stream()
342 .map(d -> d.name())
343 .map(this::nameToModule)
344 .collect(Collectors.toSet());
345 }
346 }
347
348 private List<String> resolve(Set<String> mods ) {
349 return (new SimpleResolver(mods, moduleGraph)).resolve();
350 }
351
352 /**
353 * chmod ugo+x file
354 */
355 private void setExecutable(Path file) {
356 try {
357 Set<PosixFilePermission> perms = Files.getPosixFilePermissions(file);
358 perms.add(PosixFilePermission.OWNER_EXECUTE);
359 perms.add(PosixFilePermission.GROUP_EXECUTE);
360 perms.add(PosixFilePermission.OTHERS_EXECUTE);
361 Files.setPosixFilePermissions(file, perms);
362 } catch (IOException ioe) {
363 throw new UncheckedIOException(ioe);
364 }
365 }
366
367 private void createImage() throws IOException {
368 Collection<String> modules = resolve(options.mods);
369 log.print(modules.stream().collect(Collectors.joining(" ")));
370 ImageFileHelper imageHelper = new ImageFileHelper(modules);
371 imageHelper.createModularImage(options.output);
372
373 // jspawnhelper, might be in lib or lib/ARCH
374 Path jspawnhelper = Paths.get("jspawnhelper");
375 Path lib = options.output.resolve("lib");
376 Optional<Path> helper = Files.walk(lib, 2)
377 .filter(f -> f.getFileName().equals(jspawnhelper))
378 .findFirst();
379 if (helper.isPresent())
380 setExecutable(helper.get());
381 }
382
383 private class ImageFileHelper {
384 final Collection<String> modules;
385 final Set<String> bootModules;
386 final Set<String> extModules;
387 final Set<String> appModules;
388 final ImageModules imf;
389
390 ImageFileHelper(Collection<String> modules) throws IOException {
391 this.modules = modules;
392 this.bootModules = modulesFor(BOOT_MODULES).stream()
393 .filter(modules::contains)
394 .collect(Collectors.toSet());
395 this.extModules = modulesFor(EXT_MODULES).stream()
396 .filter(modules::contains)
397 .collect(Collectors.toSet());
398 this.appModules = modules.stream()
399 .filter(m -> !bootModules.contains(m) && !extModules.contains(m))
400 .collect(Collectors.toSet());
|
332
333 private Module nameToModule(String name) {
334 Module m = nameToModule.get(name);
335 if (m == null)
336 throw new RuntimeException("No module definition for " + name);
337 return m;
338 }
339
340 private Set<Module> getModuleDependences(Module m) {
341 return m.requires().stream()
342 .map(d -> d.name())
343 .map(this::nameToModule)
344 .collect(Collectors.toSet());
345 }
346 }
347
348 private List<String> resolve(Set<String> mods ) {
349 return (new SimpleResolver(mods, moduleGraph)).resolve();
350 }
351
352 private void createImage() throws IOException {
353 Collection<String> modules = resolve(options.mods);
354 log.print(modules.stream().collect(Collectors.joining(" ")));
355 ImageFileHelper imageHelper = new ImageFileHelper(modules);
356 imageHelper.createModularImage(options.output);
357
358 // jspawnhelper, might be in lib or lib/ARCH
359 Path jspawnhelper = Paths.get("jspawnhelper");
360 Path lib = options.output.resolve("lib");
361 Optional<Path> helper = Files.walk(lib, 2)
362 .filter(f -> f.getFileName().equals(jspawnhelper))
363 .findFirst();
364 if (helper.isPresent())
365 helper.get().toFile().setExecutable(true, false);
366 }
367
368 private class ImageFileHelper {
369 final Collection<String> modules;
370 final Set<String> bootModules;
371 final Set<String> extModules;
372 final Set<String> appModules;
373 final ImageModules imf;
374
375 ImageFileHelper(Collection<String> modules) throws IOException {
376 this.modules = modules;
377 this.bootModules = modulesFor(BOOT_MODULES).stream()
378 .filter(modules::contains)
379 .collect(Collectors.toSet());
380 this.extModules = modulesFor(EXT_MODULES).stream()
381 .filter(modules::contains)
382 .collect(Collectors.toSet());
383 this.appModules = modules.stream()
384 .filter(m -> !bootModules.contains(m) && !extModules.contains(m))
385 .collect(Collectors.toSet());
|