(add-after 'strip 'compress-debug-symbols
            (lambda* (#:key outputs parallel-build? #:allow-other-keys)
              (define output:debug (assoc-ref outputs "debug"))
              (when output:debug
                (let* ((common-file (string-append output:debug
                                                   "/lib/debug/" #$output
                                                   "/common.debug"))
                       (shared-object-file?
                        (lambda (file)
                          (and (elf-file? file)
                               (member (call-with-input-file file
                                         (compose elf-type parse-elf
                                                  get-bytevector-all))
                                       (list ET_EXEC ET_DYN)))))
                       ;; dwz only operates on ELF shared object files.
                       (debug-files (find-files output:debug
                                                (lambda (f st)
                                                  (shared-object-file? f))))
                       (debug-files-count (length debug-files)))
                  (unless (zero? debug-files-count)
                    (when (> debug-files-count 1)
                      (mkdir-p (dirname common-file)))
                    (apply invoke "dwz"
                           "-j" (number->string (if parallel-build?
                                                    (parallel-job-count)
                                                    1))
                           `(,@(if (> debug-files-count 1)
                                   `("--multifile" ,common-file)
                                   '())
                             ,@debug-files)))))))

Generated by apteryx using scpaste at Sat Oct 18 23:21:11 2025. JST. (original)