fix elb linker: remove runtime imports from el-install, add --clean, catch in dev/stage CI
El SDK CI - dev / build-and-test (pull_request) Successful in 3m35s
El SDK CI - dev / build-and-test (pull_request) Successful in 3m35s
el-install.el explicitly imported runtime/*.el modules (string, env, fs, exec, json, http), which elb compiled to .c files in the shared dist/bin out_dir. Linking those alongside el_runtime.c caused multiple definition errors for every runtime function (http_get, http_patch, etc.). The runtime .el files are thin wrappers over seed primitives already compiled into el_runtime.c — no import needed. Fixes: - Remove all explicit runtime imports from el-install.el (root cause) - Add --clean to every elb invocation in sdk-release.yaml so each build starts with a clean out_dir (defense-in-depth against stale .c files) - Add elb build + epm/el-install build steps to ci-dev.yaml and ci-stage.yaml so linker errors are caught on every PR, not just stage->main
This commit is contained in:
@@ -174,6 +174,28 @@ jobs:
|
|||||||
-lcurl -lssl -lcrypto -lpthread -lm -o /tmp/el_native_fs
|
-lcurl -lssl -lcrypto -lpthread -lm -o /tmp/el_native_fs
|
||||||
/tmp/el_native_fs
|
/tmp/el_native_fs
|
||||||
|
|
||||||
|
# Build epm binary using elb (epm lives at repo root, not inside lang/)
|
||||||
|
- name: Build epm
|
||||||
|
run: |
|
||||||
|
ABS_ELB="$(pwd)/dist/bin/elb"
|
||||||
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
|
(cd ../epm && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
|
chmod +x dist/bin/epm
|
||||||
|
echo "epm built"
|
||||||
|
|
||||||
|
# Build el-install binary using elb
|
||||||
|
- name: Build el-install
|
||||||
|
run: |
|
||||||
|
ABS_ELB="$(pwd)/dist/bin/elb"
|
||||||
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
|
(cd tools/install && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
|
chmod +x dist/bin/el-install
|
||||||
|
echo "el-install built"
|
||||||
|
|
||||||
# Publish only after merge (push event), not on PR validation runs
|
# Publish only after merge (push event), not on PR validation runs
|
||||||
- name: Publish El SDK to Artifact Registry (dev)
|
- name: Publish El SDK to Artifact Registry (dev)
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
|
|||||||
@@ -170,6 +170,42 @@ jobs:
|
|||||||
-lcurl -lssl -lcrypto -lpthread -lm -o /tmp/el_native_fs
|
-lcurl -lssl -lcrypto -lpthread -lm -o /tmp/el_native_fs
|
||||||
/tmp/el_native_fs
|
/tmp/el_native_fs
|
||||||
|
|
||||||
|
# Build elb (needed for epm and el-install builds below)
|
||||||
|
- name: Build elb
|
||||||
|
run: |
|
||||||
|
mkdir -p dist/bin
|
||||||
|
dist/platform/elc elb.el > dist/elb.c
|
||||||
|
gcc -O2 \
|
||||||
|
-I el-compiler/runtime \
|
||||||
|
dist/elb.c \
|
||||||
|
el-compiler/runtime/el_runtime.c \
|
||||||
|
-lcurl -lssl -lcrypto -lpthread -lm \
|
||||||
|
-o dist/bin/elb
|
||||||
|
chmod +x dist/bin/elb
|
||||||
|
echo "elb built"
|
||||||
|
|
||||||
|
# Build epm binary using elb (epm lives at repo root, not inside lang/)
|
||||||
|
- name: Build epm
|
||||||
|
run: |
|
||||||
|
ABS_ELB="$(pwd)/dist/bin/elb"
|
||||||
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
|
(cd ../epm && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
|
chmod +x dist/bin/epm
|
||||||
|
echo "epm built"
|
||||||
|
|
||||||
|
# Build el-install binary using elb
|
||||||
|
- name: Build el-install
|
||||||
|
run: |
|
||||||
|
ABS_ELB="$(pwd)/dist/bin/elb"
|
||||||
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
|
(cd tools/install && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
|
chmod +x dist/bin/el-install
|
||||||
|
echo "el-install built"
|
||||||
|
|
||||||
# Publish only after merge (push event), not on PR validation runs
|
# Publish only after merge (push event), not on PR validation runs
|
||||||
- name: Publish El SDK to Artifact Registry (stage)
|
- name: Publish El SDK to Artifact Registry (stage)
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
ABS_ELC="$(pwd)/dist/platform/elc"
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
ABS_OUT="$(pwd)/dist/bin"
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
(cd ../epm && "$ABS_ELB" --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
(cd ../epm && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
chmod +x dist/bin/epm
|
chmod +x dist/bin/epm
|
||||||
echo "epm built"
|
echo "epm built"
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
ABS_ELC="$(pwd)/dist/platform/elc"
|
ABS_ELC="$(pwd)/dist/platform/elc"
|
||||||
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
ABS_RUNTIME="$(pwd)/el-compiler/runtime"
|
||||||
ABS_OUT="$(pwd)/dist/bin"
|
ABS_OUT="$(pwd)/dist/bin"
|
||||||
(cd tools/install && "$ABS_ELB" --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
(cd tools/install && "$ABS_ELB" --clean --elc="$ABS_ELC" --runtime="$ABS_RUNTIME" --out="$ABS_OUT")
|
||||||
chmod +x dist/bin/el-install
|
chmod +x dist/bin/el-install
|
||||||
echo "el-install built"
|
echo "el-install built"
|
||||||
|
|
||||||
|
|||||||
@@ -10,15 +10,6 @@
|
|||||||
// export PATH="$HOME/.el/bin:$PATH"
|
// export PATH="$HOME/.el/bin:$PATH"
|
||||||
// export EL_HOME="$HOME/.el"
|
// export EL_HOME="$HOME/.el"
|
||||||
|
|
||||||
// ── Imports ───────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
import "../../runtime/string.el"
|
|
||||||
import "../../runtime/env.el"
|
|
||||||
import "../../runtime/fs.el"
|
|
||||||
import "../../runtime/exec.el"
|
|
||||||
import "../../runtime/json.el"
|
|
||||||
import "../../runtime/http.el"
|
|
||||||
|
|
||||||
// ── Constants ─────────────────────────────────────────────────────────────────
|
// ── Constants ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
fn gitea_releases_url() -> String {
|
fn gitea_releases_url() -> String {
|
||||||
|
|||||||
Reference in New Issue
Block a user