Skip to content

Commit 9a9bdbf

Browse files
authored
PNC migration (#4)
1 parent efcb5df commit 9a9bdbf

36 files changed

+3916
-3354
lines changed

app.roc

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# app [testCases, config] { r2e: platform "https://github.com/adomurad/r2e-platform/releases/download/0.8.0/o-YITMnvpJZg-zxL2xKiCxBFlJzlEoEwdRY5a39WFZ0.tar.br" }
22
# app [main!] { r2e: platform "./platform/main.roc" }
3-
app [testCases, config] { r2e: platform "./platform/main.roc" }
3+
app [test_cases, config] { r2e: platform "./platform/main.roc" }
44

55
import r2e.Test exposing [test]
66
import r2e.Config
@@ -9,22 +9,25 @@ import r2e.Browser
99
import r2e.Element
1010
import r2e.Assert
1111

12-
config = Config.defaultConfig
12+
config = Config.default_config
1313

14-
testCases = [test1]
14+
test_cases = [test1]
1515

16-
test1 = test "use roc repl" \browser ->
17-
# go to roc-lang.org
18-
browser |> Browser.navigateTo! "http://roc-lang.org" |> try
19-
# find repl input
20-
replInput = browser |> Browser.findElement! (Css "#source-input") |> try
21-
# wait for the repl to initialize
22-
Debug.wait! 200
23-
# send keys to repl
24-
replInput |> Element.inputText! "0.1+0.2{enter}" |> try
25-
# find repl output element
26-
outputEl = browser |> Browser.findElement! (Css ".output") |> try
27-
# get output text
28-
outputText = outputEl |> Element.getText! |> try
29-
# assert text - fail for demo purpose
30-
outputText |> Assert.shouldBe "0.3000000001 : Frac *"
16+
test1 = test(
17+
"use roc repl",
18+
|browser|
19+
# go to roc-lang.org
20+
browser |> Browser.navigate_to!("http://roc-lang.org")?
21+
# find repl input
22+
repl_input = browser |> Browser.find_element!(Css("#source-input"))?
23+
# wait for the repl to initialize
24+
Debug.wait!(200)
25+
# send keys to repl
26+
repl_input |> Element.input_text!("0.1+0.2{enter}")?
27+
# find repl output element
28+
output_el = browser |> Browser.find_element!(Css(".output"))?
29+
# get output text
30+
output_text = output_el |> Element.get_text!?
31+
# assert text - fail for demo purpose
32+
output_text |> Assert.should_be("0.3000000001 : Frac *"),
33+
)

build.roc

Lines changed: 52 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
app [main] { cli: platform "https://github.com/roc-lang/basic-cli/releases/download/0.15.0/SlwdbJ-3GR7uBWQo6zlmYWNYOxnvo8r6YABXD-45UOw.tar.br" }
1+
app [main!] { cli: platform "https://github.com/roc-lang/basic-cli/releases/download/0.19.0/Hj-J_zxz7V9YurCSTFcFdu6cQJie4guzsPMUi5kBYUk.tar.br" }
22

33
import cli.Cmd
44

5-
main =
5+
main! = |_args|
66

77
# generate glue for builtins and platform
88
# Cmd.exec "roc" ["glue", "glue.roc", "host/", "platform/main.roc"]
99
# |> Task.mapErr! ErrGeneratingGlue
1010

1111
# get the native target
12-
native = getNativeTarget!
12+
native = get_native_target!({})?
1313

1414
# build the target
15-
buildGoTarget! { target: native, hostDir: "host", platformDir: "platform" }
15+
build_go_target!({ target: native, host_dir: "host", platform_dir: "platform" })
1616

17-
buildGoTarget : { target : RocTarget, hostDir : Str, platformDir : Str } -> Task {} _
18-
buildGoTarget = \{ target, hostDir, platformDir } ->
17+
build_go_target! : { target : RocTarget, host_dir : Str, platform_dir : Str } => Result {} _
18+
build_go_target! = |{ target, host_dir, platform_dir }|
1919

20-
(goos, goarch, prebuiltBinary) =
20+
(goos, goarch, prebuilt_binary) =
2121
when target is
2222
MacosArm64 -> ("darwin", "arm64", "macos-arm64.a")
2323
MacosX64 -> ("darwin", "amd64", "macos-x64")
@@ -26,14 +26,15 @@ buildGoTarget = \{ target, hostDir, platformDir } ->
2626
WindowsArm64 -> ("windows", "arm64", "windows-arm64.a")
2727
WindowsX64 -> ("windows", "amd64", "windows-x64")
2828

29-
Cmd.new "go"
30-
|> Cmd.envs [("GOOS", goos), ("GOARCH", goarch), ("CC", "zig cc")]
31-
|> Cmd.args ["build", "-C", hostDir, "-buildmode=c-archive", "-o", "libhost.a"]
32-
|> Cmd.status
33-
|> Task.mapErr! \err -> BuildErr goos goarch (Inspect.toStr err)
29+
_ =
30+
Cmd.new("go")
31+
|> Cmd.envs([("GOOS", goos), ("GOARCH", goarch), ("CC", "zig cc")])
32+
|> Cmd.args(["build", "-C", host_dir, "-buildmode=c-archive", "-o", "libhost.a"])
33+
|> Cmd.status!()
34+
|> Result.map_err(|err| BuildErr(goos, goarch, Inspect.to_str(err)))?
3435

35-
Cmd.exec "cp" ["$(hostDir)/libhost.a", "$(platformDir)/$(prebuiltBinary)"]
36-
|> Task.mapErr! \err -> CpErr (Inspect.toStr err)
36+
Cmd.exec!("cp", ["${host_dir}/libhost.a", "${platform_dir}/${prebuilt_binary}"])
37+
|> Result.map_err(|err| CpErr(Inspect.to_str(err)))
3738

3839
RocTarget : [
3940
MacosArm64,
@@ -44,42 +45,47 @@ RocTarget : [
4445
WindowsX64,
4546
]
4647

47-
getNativeTarget : Task RocTarget _
48-
getNativeTarget =
48+
get_native_target! : {} => Result RocTarget _
49+
get_native_target! = |_|
4950

50-
archFromStr = \bytes ->
51-
when Str.fromUtf8 bytes is
52-
Ok str if str == "arm64\n" -> Arm64
53-
Ok str if str == "x86_64\n" -> X64
54-
Ok str -> UnsupportedArch str
55-
_ -> crash "invalid utf8 from uname -m"
51+
arch_from_str = |bytes|
52+
when Str.from_utf8(bytes) is
53+
Ok(str) if str == "arm64\n" -> Arm64
54+
Ok(str) if str == "x86_64\n" -> X64
55+
Ok(str) -> UnsupportedArch(str)
56+
_ -> crash("invalid utf8 from uname -m")
57+
58+
cmd_output =
59+
Cmd.new("uname")
60+
|> Cmd.arg("-m")
61+
|> Cmd.output!()
62+
63+
_ = cmd_output.status |> Result.map_err(|err| ErrGettingNativeArch(Inspect.to_str(err)))?
5664

5765
arch =
58-
Cmd.new "uname"
59-
|> Cmd.arg "-m"
60-
|> Cmd.output
61-
|> Task.map .stdout
62-
|> Task.map archFromStr
63-
|> Task.mapErr! \err -> ErrGettingNativeArch (Inspect.toStr err)
64-
65-
osFromStr = \bytes ->
66-
when Str.fromUtf8 bytes is
67-
Ok str if str == "Darwin\n" -> Macos
68-
Ok str if str == "Linux\n" -> Linux
69-
Ok str -> UnsupportedOS str
70-
_ -> crash "invalid utf8 from uname -s"
66+
cmd_output.stdout |> arch_from_str()
67+
68+
os_from_str = |bytes|
69+
when Str.from_utf8(bytes) is
70+
Ok(str) if str == "Darwin\n" -> Macos
71+
Ok(str) if str == "Linux\n" -> Linux
72+
Ok(str) -> UnsupportedOS(str)
73+
_ -> crash("invalid utf8 from uname -s")
74+
75+
os_output =
76+
Cmd.new("uname")
77+
|> Cmd.arg("-s")
78+
|> Cmd.output!()
79+
80+
_ = os_output.status |> Result.map_err(|err| ErrGettingNativeOS(Inspect.to_str(err)))?
7181

7282
os =
73-
Cmd.new "uname"
74-
|> Cmd.arg "-s"
75-
|> Cmd.output
76-
|> Task.map .stdout
77-
|> Task.map osFromStr
78-
|> Task.mapErr! \err -> ErrGettingNativeOS (Inspect.toStr err)
83+
os_output.stdout
84+
|> os_from_str()
7985

8086
when (os, arch) is
81-
(Macos, Arm64) -> Task.ok MacosArm64
82-
(Macos, X64) -> Task.ok MacosX64
83-
(Linux, Arm64) -> Task.ok LinuxArm64
84-
(Linux, X64) -> Task.ok LinuxX64
85-
_ -> Task.err (UnsupportedNative os arch)
87+
(Macos, Arm64) -> Ok(MacosArm64)
88+
(Macos, X64) -> Ok(MacosX64)
89+
(Linux, Arm64) -> Ok(LinuxArm64)
90+
(Linux, X64) -> Ok(LinuxX64)
91+
_ -> Err(UnsupportedNative(os, arch))

build_ci.roc

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
1-
app [main] { cli: platform "https://github.com/roc-lang/basic-cli/releases/download/0.15.0/SlwdbJ-3GR7uBWQo6zlmYWNYOxnvo8r6YABXD-45UOw.tar.br" }
1+
app [main!] { cli: platform "https://github.com/roc-lang/basic-cli/releases/download/0.19.0/Hj-J_zxz7V9YurCSTFcFdu6cQJie4guzsPMUi5kBYUk.tar.br" }
22

33
import cli.Cmd
44
import cli.Stdout
55

6-
main =
7-
buildForLegacyLinker!
6+
main! = |_args|
7+
build_for_legacy_linker!({})
88

9-
buildForLegacyLinker =
9+
build_for_legacy_linker! = |{}|
1010
[MacosArm64, MacosX64, LinuxArm64, LinuxX64, WindowsArm64, WindowsX64]
11-
|> List.map \target -> buildDotA target
12-
|> Task.sequence
13-
|> Task.map \_ -> {}
14-
|> Task.mapErr! \_ -> BuildForLegacyLinker
11+
|> List.for_each_try!(
12+
|target|
13+
build_dot_a!(target) |> Result.map_ok(|_| {}) |> Result.map_err(|_| BuildForLegacyLinker),
14+
)
15+
# |> Result.map_err(|_| BuildForLegacyLinker)
1516

16-
buildDotA = \target ->
17-
(goos, goarch, zigTarget, prebuiltBinary) =
17+
build_dot_a! = |target|
18+
(goos, goarch, zig_target, prebuilt_binary) =
1819
when target is
1920
MacosArm64 -> ("darwin", "arm64", "aarch64-macos", "macos-arm64.a")
2021
MacosX64 -> ("darwin", "amd64", "x86_64-macos", "macos-x64.a")
2122
LinuxArm64 -> ("linux", "arm64", "aarch64-linux", "linux-arm64.a")
2223
LinuxX64 -> ("linux", "amd64", " x86_64-linux", "linux-x64.a")
2324
WindowsArm64 -> ("windows", "arm64", "aarch64-windows", "windows-arm64.obj")
2425
WindowsX64 -> ("windows", "amd64", "x86_64-windows", "windows-x64.obj")
25-
Stdout.line! "build host for $(Inspect.toStr target)"
26-
Cmd.new "go"
27-
|> Cmd.envs [("GOOS", goos), ("GOARCH", goarch), ("CC", "zig cc -target $(zigTarget)"), ("CGO_ENABLED", "1")]
28-
|> Cmd.args ("build -C host -buildmode c-archive -o ../platform/$(prebuiltBinary) -tags legacy,netgo" |> Str.split " ")
29-
|> Cmd.status
30-
|> Task.mapErr! \err -> BuildErr target (Inspect.toStr err)
26+
Stdout.line!("build host for ${Inspect.to_str(target)}")?
27+
Cmd.new("go")
28+
|> Cmd.envs([("GOOS", goos), ("GOARCH", goarch), ("CC", "zig cc -target ${zig_target}"), ("CGO_ENABLED", "1")])
29+
|> Cmd.args(("build -C host -buildmode c-archive -o ../platform/${prebuilt_binary} -tags legacy,netgo" |> Str.split_on(" ")))
30+
|> Cmd.status!()
31+
|> Result.map_err(|err| BuildErr(target, Inspect.to_str(err)))

0 commit comments

Comments
 (0)