Skip to content

Commit 65c1132

Browse files
committed
Bug fixes
1 parent df1afa1 commit 65c1132

File tree

17 files changed

+311
-227
lines changed

17 files changed

+311
-227
lines changed

.bazelrc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
test --test_output=all
22
test --verbose_failures
33

4-
build --java_runtime_version=remotejdk_17
5-
build --tool_java_runtime_version=remotejdk_17
4+
build --java_runtime_version=remotejdk_21
5+
build --tool_java_runtime_version=remotejdk_21

WORKSPACE

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,8 @@ maven_install(
7979
"https://repo1.maven.org/maven2",
8080
"https://repo.clojars.org/"
8181
])
82+
83+
local_repository(
84+
name = "example-simple",
85+
path = "examples/simple",
86+
)

examples/simple/src/example/BUILD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ load("@rules_clojure//:rules.bzl", "clojure_library", "clojure_binary")
22

33
package(default_visibility = ["//visibility:public"])
44

5+
java_library(name="src",
6+
resources=glob(["*.clj"]),
7+
resource_strip_prefix="src")
8+
59
clojure_library(name="core",
610
srcs=["core.clj"],
711
resource_strip_prefix="src",

rules/jar.bzl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ def clojure_jar_impl(ctx):
8585
fail("srcs but no AOT")
8686

8787
output_jar = ctx.actions.declare_file("%s.jar" % ctx.label.name)
88-
classes_dir = ctx.actions.declare_directory("%s.classes" % (printable_label(ctx.label)))
8988

9089
library_path = []
9190

@@ -127,7 +126,7 @@ def clojure_jar_impl(ctx):
127126
else:
128127
src_dir = None
129128

130-
compile_classpath = compile_info.transitive_runtime_jars.to_list() + ctx.files.compiledeps + [classes_dir]
129+
compile_classpath = compile_info.transitive_runtime_jars.to_list() + ctx.files.compiledeps
131130
compile_classpath = [f.path for f in compile_classpath]
132131
compile_classpath = compile_classpath + [p for p in [src_dir] if p]
133132

@@ -141,8 +140,7 @@ def clojure_jar_impl(ctx):
141140

142141
javaopts_str = " ".join(ctx.attr.javacopts)
143142

144-
compile_args = {"classes-dir": classes_dir.path,
145-
"output-jar": output_jar.path,
143+
compile_args = {"output-jar": output_jar.path,
146144
"src-dir": src_dir,
147145
"srcs": [_target_path(s, ctx.attr.resource_strip_prefix) for s in ctx.files.srcs],
148146
"resources": [_target_path(s, ctx.attr.resource_strip_prefix) for s in ctx.files.resources],
@@ -164,7 +162,7 @@ def clojure_jar_impl(ctx):
164162
["--jvm_flags=" + f for f in ctx.attr.jvm_flags] +
165163
["-m", "rules-clojure.worker",
166164
"@%s" % args_file.path],
167-
outputs = [output_jar, classes_dir],
165+
outputs = [output_jar],
168166
inputs = inputs,
169167
mnemonic = "ClojureCompile",
170168
progress_message = "Compiling %s" % ctx.label,

src/rules_clojure/BUILD

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ exports_files(glob(["**/*.clj"]))
77
java_library(
88
name="bootstrap",
99
resources=["bootstrap_compiler.clj",
10+
"bootstrap_gen_build.clj",
11+
"bootstrap_libfs.clj",
1012
"bootstrap_worker.clj",
1113
"compile.clj",
1214
"fs.clj",
1315
"jar.clj",
1416
"worker.clj",
17+
"gen_build.clj",
1518
"namespace/parse.cljc",
1619
"namespace/file.clj",
1720
"namespace/find.clj",
@@ -32,7 +35,8 @@ java_library(
3235
"@rules_clojure_maven_deps//:org_clojure_spec_alpha",
3336
"@rules_clojure_maven_deps//:org_clojure_core_specs_alpha",
3437
"@rules_clojure_maven_deps//:org_clojure_core_cache",
35-
"@rules_clojure_maven_deps//:org_clojure_data_json"])
38+
"@rules_clojure_maven_deps//:org_clojure_data_json",
39+
"@rules_clojure_maven_deps//:org_clojure_tools_deps_alpha"])
3640

3741
java_binary(
3842
name="bootstrap-bin",
@@ -59,6 +63,24 @@ genrule(
5963
""",
6064
outs=["libcompile.jar"])
6165

66+
genrule(
67+
name="bootstrap-libfs",
68+
tools=[":bootstrap-bin"],
69+
cmd="""
70+
mkdir -p fs-classes
71+
$(location :bootstrap-bin) -m rules-clojure.bootstrap-libfs $(location :libfs.jar)
72+
""",
73+
outs=["libfs.jar"])
74+
75+
genrule(
76+
name="bootstrap-gen-build",
77+
tools=[":bootstrap-bin"],
78+
cmd="""
79+
mkdir -p gen-build-classes
80+
$(location :bootstrap-bin) -m rules-clojure.bootstrap-gen-build $(location :libgen_build.jar)
81+
""",
82+
outs=["libgen_build.jar"])
83+
6284
java_import(name="libworker",
6385
jars=["libworker.jar"],
6486
runtime_deps=["@rules_clojure_maven_deps//:org_clojure_clojure",
@@ -70,51 +92,26 @@ java_import(name="libcompile",
7092
jars=["libcompile.jar"],
7193
data=[":bootstrap-compiler"])
7294

95+
java_import(name="libfs",
96+
jars=["libfs.jar"],
97+
data=[":bootstrap-libfs"])
98+
99+
java_import(name="libgen_build",
100+
jars=["libgen_build.jar"],
101+
runtime_deps = ["@rules_clojure_maven_deps//:org_clojure_clojure",
102+
"@rules_clojure_maven_deps//:org_clojure_spec_alpha",
103+
"@rules_clojure_maven_deps//:org_clojure_core_specs_alpha",
104+
"@rules_clojure_maven_deps//:org_clojure_tools_deps_alpha",
105+
":libfs"],
106+
data=[":bootstrap-gen-build"])
107+
73108
java_binary(name="worker",
74-
main_class="clojure.main",
109+
main_class="rules_clojure.worker",
75110
jvm_flags=["-Dclojure.main.report=stderr",
76111
"-Xmx2g",
77112
"-XX:MaxMetaspaceSize=4g"],
78113
runtime_deps=["libworker"])
79114

80-
clojure_library(name="libfs",
81-
srcs=["fs.clj"],
82-
resource_strip_prefix="src",
83-
resources=["fs.clj"],
84-
aot=["rules-clojure.fs"],
85-
deps=["@rules_clojure_maven_deps//:org_clojure_clojure",
86-
"@rules_clojure_maven_deps//:org_clojure_spec_alpha",
87-
"@rules_clojure_maven_deps//:org_clojure_core_specs_alpha"])
88-
89-
clojure_library(
90-
name= "libgen_build",
91-
srcs=["gen_build.clj", "namespace/parse.cljc"],
92-
resource_strip_prefix = "src",
93-
deps=["@rules_clojure_maven_deps//:org_clojure_clojure",
94-
"@rules_clojure_maven_deps//:org_clojure_core_specs_alpha",
95-
"@rules_clojure_maven_deps//:org_clojure_data_json",
96-
"@rules_clojure_maven_deps//:org_clojure_spec_alpha",
97-
"@rules_clojure_maven_deps//:org_clojure_tools_deps_alpha",
98-
"libfs"],
99-
aot=["clojure.tools.deps.alpha.extensions",
100-
"clojure.tools.deps.alpha.util.session",
101-
"clojure.tools.deps.alpha.util.io",
102-
"clojure.tools.deps.alpha.util.dir",
103-
"clojure.tools.deps.alpha.util.concurrent",
104-
"clojure.tools.deps.alpha",
105-
"rules-clojure.tools.reader.default-data-readers",
106-
"rules-clojure.tools.reader.impl.commons",
107-
"rules-clojure.tools.reader.impl.inspect",
108-
"rules-clojure.tools.reader.impl.errors",
109-
"rules-clojure.tools.reader.impl.utils",
110-
"rules-clojure.tools.reader.reader-types",
111-
"rules-clojure.tools.reader",
112-
113-
"rules-clojure.java.classpath",
114-
"rules-clojure.gen-build",
115-
"rules-clojure.namespace.file",
116-
"rules-clojure.namespace.find"])
117-
118115
java_binary(name="gen_build",
119116
main_class="rules_clojure.gen_build",
120117
runtime_deps=[":libgen_build"],

src/rules_clojure/bootstrap_compiler.clj

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313
rules-clojure.compile
1414
rules-clojure.util])
1515

16+
(def classes-dir (fs/->path "classes"))
17+
1618
(defn -main [compile-output-path]
17-
(fs/clean-directory (fs/->path "compile-classes"))
19+
(fs/clean-directory classes-dir)
1820

19-
(binding [*compile-path* "compile-classes"]
21+
(binding [*compile-path* (str classes-dir)]
2022
(doseq [n nses-to-compile]
2123
(compile n)))
2224

2325
(jar/create-jar {:aot-nses '[rules-clojure.compile]
24-
:classes-dir (fs/->path "compile-classes")
26+
:classes-dir classes-dir
2527
:output-jar (fs/->path compile-output-path)}))
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
(ns rules-clojure.bootstrap-gen-build
2+
(:require [rules-clojure.jar :as jar]
3+
[rules-clojure.fs :as fs]))
4+
5+
(def nses-to-compile
6+
'[clojure.tools.deps.alpha.extensions,
7+
clojure.tools.deps.alpha.util.session,
8+
clojure.tools.deps.alpha.util.io,
9+
clojure.tools.deps.alpha.util.dir,
10+
clojure.tools.deps.alpha.util.concurrent,
11+
clojure.tools.deps.alpha,
12+
rules-clojure.tools.reader.default-data-readers,
13+
14+
rules-clojure.tools.reader.impl.inspect,
15+
rules-clojure.tools.reader.impl.utils,
16+
17+
rules-clojure.tools.reader.reader-types,
18+
rules-clojure.tools.reader.impl.errors,
19+
rules-clojure.tools.reader.impl.commons,
20+
rules-clojure.tools.reader,
21+
22+
rules-clojure.java.classpath,
23+
rules-clojure.namespace.file,
24+
rules-clojure.namespace.find,
25+
rules-clojure.gen-build])
26+
27+
(def classes-dir "gen-build-classes")
28+
29+
(defn -main [jar-path]
30+
(fs/clean-directory (fs/->path classes-dir))
31+
32+
(binding [*compile-path* classes-dir]
33+
(doseq [n nses-to-compile]
34+
(compile n)))
35+
36+
(jar/create-jar {:aot-nses '[rules-clojure.gen-build]
37+
:classes-dir (fs/->path classes-dir)
38+
:output-jar (fs/->path jar-path)}))

0 commit comments

Comments
 (0)