Etapa G: git diferido con diagnóstico — compila, muro en static-link de helpers
git compila entero (REG_STARTEND/regex y -pie resueltos) pero el link -static de git-http-backend/daemon/git-% falla 'ld: failed to set dynamic section sizes' (no es curl ni regex; hipótesis CET/.note.gnu.property + PIC mixto de las libs). El más duro de la cola C, como gmp en las libs. Próximo: V=1 + -fcf-protection. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# git 2.54.0 — VCS (C, Makefile con knobs, NO autotools). LEAN estático: core sin gui/docs/perl/i18n.
|
||||
# Libs del corpus: zlib + curl (https) + openssl (crypto) + expat (http-push) + pcre2 (grep -P).
|
||||
# De-Alpinizada: gcc, -static -no-pie (zlib non-PIC). NO_PERL/PYTHON/TCLTK/GETTEXT = lean.
|
||||
name = "git"
|
||||
version = "2.54.0"
|
||||
[source]
|
||||
tarball = "https://www.kernel.org/pub/software/scm/git/git-2.54.0.tar.xz"
|
||||
sha256 = "f689162364c10de79ef89aa8dbf48731eb057e34edbbd20aca510ce0154681a3"
|
||||
[build]
|
||||
compiler = "gcc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
[build.phases]
|
||||
compile = '''
|
||||
sed -i '/^PROGRAM_OBJS += daemon.o/d' Makefile
|
||||
make -j"$(nproc)" prefix=/usr CC=gcc \
|
||||
NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_GITWEB=1 NO_SYS_POLL_H=1 NO_REGEX=NeedsStartEnd NO_CURL=1 NO_EXPAT=1 \
|
||||
USE_LIBPCRE2=1 \
|
||||
CFLAGS="-O2 -fno-pie" \
|
||||
LDFLAGS="-static -no-pie -L/usr/lib" \
|
||||
all
|
||||
'''
|
||||
install = '''
|
||||
make prefix=/usr DESTDIR=/out NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_GITWEB=1 \
|
||||
NO_CURL=1 NO_REGEX=NeedsStartEnd NO_INSTALL_HARDLINKS=1 install
|
||||
'''
|
||||
[deps]
|
||||
build = ["zlib", "openssl", "pcre2"]
|
||||
|
||||
# DEFERIDO (2026-06-26): git COMPILA entero (resueltos: REG_STARTEND via ./configure del lab que el
|
||||
# campo configure NO debe pisar; -fno-pie; libs zlib/openssl/pcre2). MURO: el link totalmente
|
||||
# estático de los binarios helper (git-http-backend, git-daemon, git-%) falla con
|
||||
# `ld: failed to set dynamic section sizes: bad value`. NO es curl (NO_CURL=1 no lo arregla) ni regex.
|
||||
# Hipótesis: gcc15/musl emite .note.gnu.property (CET) y/o las libs estáticas tienen consistencia
|
||||
# PIC mixta ⇒ ld rompe al armar el ejecutable -static. Próximo intento: build con V=1 para ver el
|
||||
# comando de link exacto de git-http-backend; probar -fcf-protection=none / -Wl,-z,... / rebuildar
|
||||
# las libs con -fPIC consistente. El core `git` linkea antes del fallo (binario existe).
|
||||
@@ -1,54 +0,0 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "git"
|
||||
version = "2.54.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://www.kernel.org/pub/software/scm/git/git-2.54.0.tar.xz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "cb363917124edc245c9f6745e6e0c4093990275b4d57f9d2213c655b304ac81b05ece8d88546122727495ebc48a5ae19ab166a3ee43b6b8c68da488ac0270064"
|
||||
sha256 = "f689162364c10de79ef89aa8dbf48731eb057e34edbbd20aca510ce0154681a3"
|
||||
patches = ["fix-t4219-with-sticky-bit.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
make prefix=/usr \
|
||||
DESTDIR="/out" \
|
||||
perllibdir="$(_perl_config vendorlib)" \
|
||||
all
|
||||
|
||||
make -C contrib/subtree prefix=/usr DESTDIR="/out"
|
||||
make -C contrib/diff-highlight prefix=/usr DESTDIR="/out"
|
||||
|
||||
if [ -n "$_full_build" ]; then
|
||||
# generate manpages outside of package()
|
||||
make prefix=/usr man
|
||||
|
||||
make prefix=/usr -C contrib/credential/libsecret
|
||||
fi
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
make -C t prefix=/usr DESTDIR="/out" \
|
||||
perlibdir="$(_perl_config vendorlib)" \
|
||||
all
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
# depends de runtime de Alpine (NO build-deps): perl
|
||||
|
||||
[deps]
|
||||
build = ["asciidoc", "python3", "tcl", "tk", "libsecret", "glib"]
|
||||
Reference in New Issue
Block a user