diff --git a/recipes/incoming/.deferred/git.toml b/recipes/incoming/.deferred/git.toml new file mode 100644 index 00000000..c099d4ee --- /dev/null +++ b/recipes/incoming/.deferred/git.toml @@ -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). diff --git a/recipes/incoming/git.toml b/recipes/incoming/git.toml deleted file mode 100644 index 461fc18f..00000000 --- a/recipes/incoming/git.toml +++ /dev/null @@ -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"]