From 0036f464ac24520c8603b126269c2c5cc41ca967 Mon Sep 17 00:00:00 2001 From: Puck Meerburg Date: Wed, 1 Oct 2025 14:59:25 +0000 Subject: [PATCH] (zilch lang ninja nixpkgs): Properly handle .so SHSYM Change-Id: I6a6a696428c5bfcee09a65d45939a3aa145afdad --- lang/ninja/src/nixpkgs.sld | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lang/ninja/src/nixpkgs.sld b/lang/ninja/src/nixpkgs.sld index bda9f64..1c2510f 100644 --- a/lang/ninja/src/nixpkgs.sld +++ b/lang/ninja/src/nixpkgs.sld @@ -219,6 +219,10 @@ (values initial-drv configured-drv placeholders edge-ref defaults export-depfile rewrites)) + (define (get-shsym-path fname) + (define split (string-contains-right fname "/")) + (and split (string-append fname ".p/" (string-copy fname (+ split 1)) ".symbols"))) + (define (process-secondary-root parent-conf secondary-root) (define conf (cdr secondary-root)) (define drv-name (car secondary-root)) @@ -242,8 +246,10 @@ (define (transform-obj obj) (cond ((and (pair? obj) (eq? (car obj) 'marker)) - (let ((obj-edge (edge-ref (cdr obj)))) - (or (and (cdr obj-edge) (built-edge-lib-placeholder (cdr obj-edge))) + (let ((obj-edge (edge-ref (cdr obj))) + (alt-obj-edge (and (string-suffix? ".so" (cdr obj)) (edge-ref (get-shsym-path (cdr obj)) #t)))) + (or (and alt-obj-edge (cdr alt-obj-edge) (built-edge-lib-placeholder (cdr alt-obj-edge)) (cdr (force (built-edge-lib-placeholder (cdr alt-obj-edge))))) + (and (cdr obj-edge) (built-edge-lib-placeholder (cdr obj-edge)) (cdr (force (built-edge-lib-placeholder (cdr obj-edge))))) (car obj-edge)))) (else obj))) (define extra-paths '())