guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#28690] provide a lib output for boost


From: Roel Janssen
Subject: [bug#28690] provide a lib output for boost
Date: Wed, 11 Oct 2017 10:39:40 +0200
User-agent: mu4e 0.9.18; emacs 25.1.1

Dave Love writes:

> I mentioned elsewhere noticing the large size of boost in closures.
> I've now realized what the problem was with making a lib output, and
> done one, as below.  However, presumably it should have a dependency of
> out on lib for compatibility, and I don't know the right way to do that.
>
> The lib package is 17MiB, and the headers are 108MiB.
>
>>From 1bb845d1d45ee7e8b9447bab902f3de41f0acfac Mon Sep 17 00:00:00 2001
> From: Dave Love <address@hidden>
> Date: Tue, 3 Oct 2017 16:18:59 +0100
> Subject: [PATCH] gnu: boost: Make a "lib" output.
>
> This save about half the contribution to the Closure of things linked against
> it,
>
> * gnu/packages/boost.scm(outputs): Add lib.
> (arguments)[mv-lib]: Add move the lib output into place after install.
> ---
>  gnu/packages/boost.scm | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
> index 4c7308e9d..c1e622fcd 100644
> --- a/gnu/packages/boost.scm
> +++ b/gnu/packages/boost.scm
> @@ -53,6 +53,7 @@
>       `(("perl" ,perl)
>         ("python" ,python-2)
>         ("tcsh" ,tcsh)))
> +    (outputs '("out" "lib"))
>      (arguments
>       `(#:tests? #f
>         #:make-flags
> @@ -60,7 +61,7 @@
>  
>               ;; Set the RUNPATH to $libdir so that the libs find each other.
>               (string-append "linkflags=-Wl,-rpath="
> -                            (assoc-ref %outputs "out") "/lib")
> +                            (assoc-ref %outputs "lib") "/lib")
>  
>               ;; Boost's 'context' library is not yet supported on mips64, so
>               ;; we disable it.  The 'coroutine' library depends on 'context',
> @@ -99,7 +100,13 @@
>           (replace
>               'install
>             (lambda* (#:key outputs make-flags #:allow-other-keys)
> -             (zero? (apply system* "./b2" "install" make-flags)))))))
> +             (zero? (apply system* "./b2" "install" make-flags))))
> +         (add-after 'install 'mv-lib
> +           (lambda _
> +             (mkdir-p (assoc-ref %outputs "lib"))
> +             (rename-file (string-append %output "/lib")
> +                          (string-append (assoc-ref %outputs "lib")
> +                                         "/lib")))))))
>  
>      (home-page "http://boost.org";)
>      (synopsis "Peer-reviewed portable C++ source libraries")

Boost consists of various modules or components.  Some of these are
"header-only".  How does this patch handle that?

If I were to install the "lib" output, could I then compile a C++
program that uses a header-only part of Boost?

Kind regards,
Roel Janssen





reply via email to

[Prev in Thread] Current Thread [Next in Thread]