diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index d05bbdb..419fff6 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -109,7 +109,23 @@ jobs: ELC=/opt/el/dist/platform/elc RUNTIME=/opt/el/runtime - $ELB --elc=$ELC --runtime=$RUNTIME/el_runtime.c + # Compile all El modules to C (may fail at link on Linux: the El compiler + # inlines imported modules into each module's .c file, producing duplicate + # symbol definitions that GNU ld rejects as errors. macOS ld accepts them + # silently. We ignore the link failure and re-link manually below.) + $ELB --elc=$ELC --runtime=$RUNTIME/el_runtime.c || true + + # soul.c is a fully self-contained merged file — every function from every + # imported module is inlined into it. Link only soul.c against el_runtime.c; + # this avoids all duplicate-symbol conflicts from the individual module files. + mkdir -p dist + cc -O2 -DHAVE_CURL \ + -I$RUNTIME \ + dist/soul.c \ + $RUNTIME/el_runtime.c \ + -lssl -lcrypto -lcurl -lpthread -lm \ + -o dist/neuron + ls -lh dist/neuron - name: Smoke test