release 载荷二进制内嵌 CI 构建机绝对路径(strip 后仍残留于 .rodata)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
Línea de trabajo
Empieza leyendo el flujo de trabajo de compilación de la versión y la configuración que compila mcppls/bin/mcppls; el issue indica que las rutas incrustadas provienen de macros __FILE__ de dependencias. Comprueba cómo se pasan las opciones del compilador a la compilación de la versión, luego añade un mapeo de prefijo adecuado e inspecciona un binario recompilado con strings -a para buscar rutas /home/runner. Se considera terminado cuando el artefacto de la versión ya no exponga esas rutas de compilación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
环境
- mcppls v0.0.16
payload-linux-x64.tar.gz(官方 release 载荷,非源码自建) - Linux x86_64
现象
mcppls/bin/mcppls 为静态链接且已 strip 的 ELF,但 strings 仍可见构建机绝对路径。它们来自依赖包源码中断言宏的 __FILE__,位于只读数据段,strip 无法去除:
$ strings -a bin/mcppls | grep -E '^/home/runner' | sort -u | head -4
/home/runner/.mcpp/registry/data/xpkgs/mcpplibs-x-openkal-llvm-runtime/0.15.1/openkal-llvm-runtime-0.15.1/llvm/libcxxabi/src/cxa_demangle.cpp
/home/runner/.mcpp/registry/data/xpkgs/mcpplibs-x-openkal-llvm-runtime/0.15.1/openkal-llvm-runtime-0.15.1/llvm/libcxxabi/src/demangle/ItaniumDemangle.h
/home/runner/.mcpp/registry/data/xpkgs/nlohmann-x-json/3.12.0/json-3.12.0/single_include/nlohmann/json.hpp
影响
- 断言/诊断消息会把 CI 机器路径打印给最终用户。
- 下游再分发的产物隐私/供应链扫描会因嵌入构建机路径而拒绝发布(meditor 的发布门禁即如此,无法放行包含构建环境路径的载荷)。
建议
release 构建加入 -ffile-prefix-map=<abs>=.(或等价的相对路径编译),使 __FILE__/断言消息不含 CI 绝对路径。参照:同载荷中 clangd/bin/clangd 使用 $ORIGIN 相对 RUNPATH 且无内嵌构建路径,说明流程上可以做到干净。
背景
meditor(https://github.com/speak-agent/meditor ,GPL-3.0-only,专注 mcpp 与 C++ Modules 的编辑器)按 SHA-256 固定引用 mcppls 官方 release 载荷随包分发。下游已用打包期处理临时解决,但希望上游在 release 流程根治,之后下游可直接升级 pin。
- Lenguaje dominante
- C++
- Estrellas
- 25
- Forks
- 2
- Merge medio
- 21 h 5 min
- PR fusionados (30 d)
- 13
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Sunrisepeak/mcpp-language-server
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Sunrisepeak/mcpp-language-server#80 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 1/100
Sunrisepeak/mcpp-language-server#77 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Sunrisepeak/mcpp-language-server#71 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
Sunrisepeak/mcpp-language-server#59 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
Sunrisepeak/mcpp-language-server#52 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Sunrisepeak/mcpp-language-server
Issues similares
-
#2754 make deepseek api not workAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
xiaoyifang/goldendict-ng#3148 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
triton-inference-server/server#9069 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 4 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100