Files
builders_rubenslte/patches/0002-build-core-fix-ar-absolute-paths.patch
T
2026-09-13 20:08:34 +02:00

52 lines
2.4 KiB
Diff

From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 2/8] build-core-fix-ar-absolute-paths
Fix ar absolute path issues by extracting to temp dir instead of per-member piping.
$(abspath ...) is only safe for TARGET_AR, which is a relative prebuilt path used
after `cd $$ldir`; HOST_AR is bare `ar` (GNU make built-in AR via combo/select.mk)
and is resolved through PATH, so it must NOT be abspath'd (abspath of `ar` yields
$TREE/ar, which does not exist).
---
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
--- a/build/core/definitions.mk
+++ b/build/core/definitions.mk
@@ -1180,13 +1180,11 @@ define _extract-and-include-single-target-whole-static-lib
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
rm -rf $$ldir; \
mkdir -p $$ldir; \
- filelist=; \
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) t $(1)`; do \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) p $(1) $$f > $$ldir/$$f; \
- filelist="$$filelist $$ldir/$$f"; \
- done ; \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
- $(PRIVATE_ARFLAGS) $@ $$filelist
+ cp $(1) $$ldir/input.a; \
+ cd $$ldir && $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) x input.a; \
+ rm -f $$ldir/input.a; \
+ $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
endef
@@ -1217,13 +1215,11 @@ define _extract-and-include-single-host-whole-static-lib
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
rm -rf $$ldir; \
mkdir -p $$ldir; \
- filelist=; \
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) t $(1) | \grep '\.o$$'`; do \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) p $(1) $$f > $$ldir/$$f; \
- filelist="$$filelist $$ldir/$$f"; \
- done ; \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
- $(PRIVATE_ARFLAGS) $@ $$filelist
+ cp $(1) $$ldir/input.a; \
+ cd $$ldir && $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) x input.a; \
+ rm -f $$ldir/input.a; \
+ $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
endef