diff --git a/gradle-bootstrap-generate-resources.py b/gradle-bootstrap-generate-resources.py deleted file mode 100644 index ef8d5b7..0000000 --- a/gradle-bootstrap-generate-resources.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/python -# -# Parse Gradle module structure and generate resource files which are -# used to bootstrap Gradle. -# -# First file, gradle-bootstrap-module-list, contains list of Gradle -# modules sorted by dependencies. First module doesn't depend on any -# other module. All subsequent modules can depend only on modules -# listed above them. This is the order in which modules should be -# compiled. -# -# A second file, gradle-bootstrap-module-dependencies, contains list -# of dependecies for each module. -# -# Author: Mikolaj Izdebski - -import re -import sys -from glob import glob -from zipfile import ZipFile - - -def read_property(jar_path, props_name, prop_key): - prefix = prop_key + "=" - prefix_len = len(prefix) - with ZipFile(jar_path) as jar: - with jar.open(props_name, "rU") as props: - for line in [line.rstrip() for line in props.readlines()]: - if line.startswith(prefix) and line[prefix_len:]: - return line[prefix_len:] - - -class GradleModule(object): - def __init__(self, path): - self.name = re.match(r'.*/(.+)-[0-9.]*jar', path).group(1) - self.path = path - self.dependencies = [] - - def read_dependencies(self): - projects = read_property(self.path, self.name + "-classpath.properties", "projects") - if projects: - self.dependencies = projects.split(",") - - def __eq__(self, other): - return self.name == other.name - - def __hash__(self): - return hash(self.name) - - -# Read all Gradle modules from given Gradle home directory -def read_gradle_modules(gradle_home): - paths = [] - for pattern in ["/lib/gradle-*.jar", "/lib/plugins/gradle-*.jar"]: - paths.extend(glob(gradle_home + pattern)) - - return [GradleModule(path) for path in paths] - - -# Resolve module dependencies to concrete modules -def resolve_dependencies(modules, mapping): - for module in modules: - module.read_dependencies() - resolved_deps = [] - for dep in module.dependencies: - resolved_dep = mapping.get(dep, None) - if not resolved_dep: - raise RuntimeError("Unresolved dependency from %s to %s" % (module.name, dep)) - resolved_deps.append(resolved_dep) - module.dependencies = resolved_deps - - -# Sort modules in-situ, placing them in dependency order -def topological_sort(modules): - not_visited = set(modules) - visiting = set() - del modules[:] - - def visit(module): - visiting.add(module) - for dependency in module.dependencies: - if dependency in visiting: - raise RuntimeError("module dependency cycle detected") - if dependency in not_visited: - visit(dependency) - modules.append(module) - not_visited.remove(module) - visiting.remove(module) - - while not_visited: - visit(next(iter(not_visited))) - - return modules - - -# Extract a single resource from given module -def extract_resource(module, resource, target_file): - with ZipFile(module.path) as jar: - with open(target_file, "w") as f: - f.write(jar.read(resource)) - - -if len(sys.argv) != 2: - sys.exit("Missing argument, usage: %s " % sys.argv[0]) -gradle_home = sys.argv[1] - -modules = read_gradle_modules(gradle_home) -if not modules: - sys.exit("Unable to find any Gradle modules in specifed location") - -module_mapping = dict((module.name, module) for module in modules) - -resolve_dependencies(modules, module_mapping) - -topological_sort(modules) - - -# Generate file with sorted module list -with open("gradle-bootstrap-module-list", "w") as f: - for module in modules: - f.write("%s\n" % module.name) - -# Generate file with module dependencies -with open("gradle-bootstrap-module-dependencies", "w") as f: - for module in modules: - f.write("%s=%s\n" % (module.name, ",".join(dep.name for dep in module.dependencies))) - -# Extract some other resoures from Gradle JARs -extract_resource(module_mapping["gradle-docs"], "api-mapping.txt", "gradle-bootstrap-api-mapping.txt") -extract_resource(module_mapping["gradle-docs"], "default-imports.txt", "gradle-bootstrap-default-imports.txt") -extract_resource(module_mapping["gradle-core"], "gradle-plugins.properties", "gradle-bootstrap-plugin.properties") -extract_resource(module_mapping["gradle-core"], "gradle-implementation-plugins.properties", "gradle-bootstrap-implementation-plugin.properties") -extract_resource(module_mapping["gradle-runtime-api-info"], "org/gradle/api/internal/runtimeshaded/api-relocated.txt", "gradle-bootstrap-api-relocated.txt") -extract_resource(module_mapping["gradle-runtime-api-info"], "org/gradle/api/internal/runtimeshaded/test-kit-relocated.txt", "gradle-bootstrap-test-kit-relocated.txt") diff --git a/gradle.spec b/gradle.spec index 00510ae..c1d540f 100644 --- a/gradle.spec +++ b/gradle.spec @@ -13,16 +13,15 @@ Source3: gradle-jquery-metadata.xml Source4: gradle-launcher.sh Source5: gradle.desktop Source6: gradle-man.txt -Source9900: gradle-bootstrap.sh -Source9901: gradle-bootstrap-generate-resources.py -Source9910: gradle-bootstrap-module-list -Source9911: gradle-bootstrap-module-dependencies -Source9920: gradle-bootstrap-api-mapping.txt -Source9921: gradle-bootstrap-default-imports.txt -Source9922: gradle-bootstrap-plugin.properties -Source9923: gradle-bootstrap-implementation-plugin.properties -Source9924: gradle-bootstrap-api-relocated.txt -Source9925: gradle-bootstrap-test-kit-relocated.txt +Source7: gradle-bootstrap.sh +Source8: gradle-bootstrap-module-list +Source9: gradle-bootstrap-module-dependencies +Source10: gradle-bootstrap-api-mapping.txt +Source11: gradle-bootstrap-default-imports.txt +Source12: gradle-bootstrap-plugin.properties +Source13: gradle-bootstrap-implementation-plugin.properties +Source14: gradle-bootstrap-api-relocated.txt +Source15: gradle-bootstrap-test-kit-relocated.txt Patch0001: 0001-Gradle-local-mode.patch Patch0002: 0002-Remove-Class-Path-from-manifest.patch Patch0003: 0003-Implement-XMvn-repository-factory-method.patch @@ -180,13 +179,13 @@ export LANG=en_US.UTF8 %if %{with bootstrap} mkdir -p subprojects/docs/src/main/resources mkdir -p subprojects/core/src/main/resources/org/gradle/api/internal/runtimeshaded -cp %{SOURCE9920} subprojects/docs/src/main/resources/api-mapping.txt -cp %{SOURCE9921} subprojects/docs/src/main/resources/default-imports.txt -cp %{SOURCE9922} subprojects/core/src/main/resources/gradle-plugins.properties -cp %{SOURCE9923} subprojects/core/src/main/resources/gradle-implementation-plugins.properties -cp %{SOURCE9924} subprojects/core/src/main/resources/org/gradle/api/internal/runtimeshaded/api-relocated.txt -cp %{SOURCE9925} subprojects/core/src/main/resources/org/gradle/api/internal/runtimeshaded/test-kit-relocated.txt -%{SOURCE9900} %{SOURCE9910} %{SOURCE9911} +cp %{SOURCE10} subprojects/docs/src/main/resources/api-mapping.txt +cp %{SOURCE11} subprojects/docs/src/main/resources/default-imports.txt +cp %{SOURCE12} subprojects/core/src/main/resources/gradle-plugins.properties +cp %{SOURCE13} subprojects/core/src/main/resources/gradle-implementation-plugins.properties +cp %{SOURCE14} subprojects/core/src/main/resources/org/gradle/api/internal/runtimeshaded/api-relocated.txt +cp %{SOURCE15} subprojects/core/src/main/resources/org/gradle/api/internal/runtimeshaded/test-kit-relocated.txt +%{SOURCE7} %{SOURCE8} %{SOURCE9} %else rm gradle.properties gradle-local --offline --no-daemon install xmvnInstall \