(zilch lang ninja nixpkgs): Properly handle .so SHSYM

Change-Id: I6a6a696428c5bfcee09a65d45939a3aa145afdad
This commit is contained in:
puck 2025-10-01 14:59:25 +00:00
parent 86e07faa8a
commit 0036f464ac

View file

@ -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 '())