Olivier Dion schreef op vr 08-04-2022 om 13:17 [-0400]: > -------------------- > (modify-phases %standard-phases >          (add-after 'patch-source-shebangs 'patch-source-headers >            (lambda* (#:key inputs #:allow-other-keys) >              (substitute* (find-files "./include" ".h") >                (("<(urcu/(compiler|pointer|arch|system|uatomic|config|list|tls-compat|debug|ref|rculist).h)>" _ letters _) >                 (format #f "<~a>" >                         (search-input-file inputs >                                            (string-append "include/" letters)))))))) This is for the lttng-ust package, right? The idea was to do this in a post-install phase of liburcu. > -------------------- > > this seems to build the package correctly and also change the RCU > headers for lttng-ust.  However, liburcu also include some architecture > specific headers.  So I get the following error while compiling my > program: > > -------------------- > In file included from /gnu/store/5qk5mmffc1m9cla71jywn0qz03bk6yhi-profile/include/lttng/urcu/pointer.h:14, >                  from /gnu/store/5qk5mmffc1m9cla71jywn0qz03bk6yhi-profile/include/lttng/tracepoint-rcu.h:11, >                  from /gnu/store/5qk5mmffc1m9cla71jywn0qz03bk6yhi-profile/include/lttng/tracepoint.h:13, >                  from tracepoint.h:10, >                  from tracepoint.c:4: > /gnu/store/25nlsljfziysgbhhj9nhwfm4qn5h4b71-liburcu-0.13.1/include/urcu/arch.h:65:10: fatal error: urcu/arch/x86.h: No such file or directory >    65 | #include >       |          ^~~~~~~~~~~~~~~~~ > compilation terminated. > -------------------- > > How could this be fix? That would require to modify the inputs no? I suggest moving the post-unpack substitute* phase from lttng-ust to a post-install phase in liburcu. That way, urcu/arch.h can be patched to use an absolute file name. Also, this ... (urcu/(compiler|pointer|arch|system|uatomic|config|list|tls compat|debug|ref|rculist).h)> seems rather fragile and could easily break on future updates of lttng-ust. The idea of the 'absolute-inclusions.scm' file I sent, is to automate things. More concretely, my suggestion is to: * add absolute-inclusions.scm to the Guix repo, in guix/build * modify liburcu to: (package (name "liburcu") [...] (arguments (list #:imported-modules `(,@%gnu-build-system-modules (guix build absolute-inclusions)) #:modules '((guix build gnu-build-system) (guix build absolute-inclusions)) #:phases #~(modify-phases %standard-phases (add-after 'install 'absolute-inclusions absolute-inclusions))))) Greetings, Maxime.