release 载荷二进制内嵌 CI 构建机绝对路径(strip 后仍残留于 .rodata)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia leggendo il workflow di build della release e la configurazione che compila mcppls/bin/mcppls; secondo l’issue, i percorsi incorporati provengono dalle macro __FILE__ delle dipendenze. Controlla come vengono passati i flag del compilatore alla build della release, poi aggiungi una mappa di prefisso appropriata e ispeziona un binario ricompilato con strings -a per cercare percorsi /home/runner. Il lavoro è completato quando il payload della release non espone più quei percorsi di build.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
环境
- 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。
- Lingua principale
- C++
- Stelle
- 25
- Fork
- 2
- Merge medio
- 21h 5m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Sunrisepeak/mcpp-language-server
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Sunrisepeak/mcpp-language-server#80 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 1/100
Sunrisepeak/mcpp-language-server#77 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Sunrisepeak/mcpp-language-server#71 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
Sunrisepeak/mcpp-language-server#59 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
Sunrisepeak/mcpp-language-server#52 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Sunrisepeak/mcpp-language-server
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
xiaoyifang/goldendict-ng#3148 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
triton-inference-server/server#9069 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 4 giorni
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100