gnu: r-httpuv: Unvendor libuv.
* gnu/packages/cran.scm (r-httpuv) [source]: Remove bundled libuv, add patch. [arguments] Rewrite header locations, fix pipe server issue. [inputs] Add libuv. * gnu/packages/patches/r-httpuv-1.5.4-unvendor-libuv.patch: New file. * gnu/local.mk: Add it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
		
							parent
							
								
									89e1e44813
								
							
						
					
					
						commit
						d6983b1331
					
				
					 3 changed files with 91 additions and 1 deletions
				
			
		|  | @ -1524,6 +1524,7 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/readline-link-ncurses.patch		\
 | ||||
|   %D%/packages/patches/readline-6.2-CVE-2014-2524.patch		\
 | ||||
|   %D%/packages/patches/reposurgeon-add-missing-docbook-files.patch	\
 | ||||
|   %D%/packages/patches/r-httpuv-1.5.4-unvendor-libuv.patch	\
 | ||||
|   %D%/packages/patches/ri-li-modernize_cpp.patch		\
 | ||||
|   %D%/packages/patches/ripperx-missing-file.patch		\
 | ||||
|   %D%/packages/patches/rpcbind-CVE-2017-8779.patch		\
 | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ | |||
| ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com> | ||||
| ;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com> | ||||
| ;;; Copyright © 2020 Rafael Luque Leiva <rafael.luque@osoco.es> | ||||
| ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -47,6 +48,7 @@ | |||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module (guix build-system r) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages algebra) | ||||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages base) | ||||
|  | @ -69,6 +71,7 @@ | |||
|   #:use-module (gnu packages imagemagick) | ||||
|   #:use-module (gnu packages java) | ||||
|   #:use-module (gnu packages javascript) | ||||
|   #:use-module (gnu packages libevent) | ||||
|   #:use-module (gnu packages lisp-xyz) | ||||
|   #:use-module (gnu packages machine-learning) | ||||
|   #:use-module (gnu packages maths) | ||||
|  | @ -830,8 +833,35 @@ into a pipeline of data manipulation and visualisation.") | |||
|               (uri (cran-uri "httpuv" version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "066rprqvz9qln6xd85x1yh1wbbmzd157xjl8zq1zbgr8l6347inm")))) | ||||
|                 "066rprqvz9qln6xd85x1yh1wbbmzd157xjl8zq1zbgr8l6347inm")) | ||||
|               ;; Unvendor bundled libraries. As of 1.5.4 the vendored libuv | ||||
|               ;; only contains fixes for building on Solaris. | ||||
|               (patches (search-patches "r-httpuv-1.5.4-unvendor-libuv.patch")) | ||||
|               (modules '((guix build utils) | ||||
|                          (ice-9 ftw) | ||||
|                          (srfi srfi-1))) | ||||
|               (snippet | ||||
|                `(begin | ||||
|                   (delete-file-recursively "src/libuv") | ||||
|                   ;; Cannot unbundle http-parser, because it contains local | ||||
|                   ;; modifications. | ||||
|                   #t)))) | ||||
|     (build-system r-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'unbundle-libuv | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (substitute* (find-files "src" "\\.cpp$|\\.h$") | ||||
|                (("\"libuv/include/uv\\.h\"") | ||||
|                 "<uv.h>")) | ||||
|              ;; Fix https://github.com/rstudio/httpuv/issues/282 | ||||
|              (substitute* "src/http.cpp" | ||||
|                (("uv_pipe_init\\(pLoop, &pSocket->handle\\.pipe, true\\);") | ||||
|                 "uv_pipe_init(pLoop, &pSocket->handle.pipe, 0);")) | ||||
|              #t))))) | ||||
|     (inputs | ||||
|      `(("libuv" ,libuv))) | ||||
|     (propagated-inputs | ||||
|      `(("r-bh" ,r-bh) | ||||
|        ("r-later" ,r-later) | ||||
|  |  | |||
							
								
								
									
										59
									
								
								gnu/packages/patches/r-httpuv-1.5.4-unvendor-libuv.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								gnu/packages/patches/r-httpuv-1.5.4-unvendor-libuv.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| Removes references to bundled libuv. | ||||
| 
 | ||||
| --- a/src/Makevars	2020-07-31 11:53:30.576484531 +0200
 | ||||
| +++ b/src/Makevars	2020-07-31 11:54:19.369863118 +0200
 | ||||
| @@ -5,7 +5,7 @@
 | ||||
|   | ||||
|  UNAME := $(shell uname) | ||||
|   | ||||
| -PKG_LIBS = ./libuv/.libs/libuv.a ./http-parser/http_parser.o ./sha1/sha1.o ./base64/base64.o -pthread
 | ||||
| +PKG_LIBS = -luv ./http-parser/http_parser.o ./sha1/sha1.o ./base64/base64.o -pthread
 | ||||
|   | ||||
|  ifeq ($(UNAME), Darwin) | ||||
|  PKG_LIBS += -framework CoreServices | ||||
| @@ -23,7 +23,7 @@
 | ||||
|   | ||||
|  PKG_CFLAGS = $(C_VISIBILITY) -DSTRICT_R_HEADERS | ||||
|  PKG_CXXFLAGS = $(CXX_VISIBILITY) -DSTRICT_R_HEADERS | ||||
| -PKG_CPPFLAGS = -Ilibuv/include -pthread
 | ||||
| +PKG_CPPFLAGS = -pthread
 | ||||
|   | ||||
|  # To avoid spurious warnings from `R CMD check --as-cran`, about compiler | ||||
|  # warning flags like -Werror. | ||||
| @@ -43,35 +43,5 @@
 | ||||
|  # PKG_CPPFLAGS += -D_GLIBCXX_ASSERTIONS | ||||
|   | ||||
|   | ||||
| -$(SHLIB): libuv/.libs/libuv.a http-parser/http_parser.o sha1/sha1.o base64/base64.o
 | ||||
| +$(SHLIB): http-parser/http_parser.o sha1/sha1.o base64/base64.o
 | ||||
|   | ||||
| -# We needed to rename lt~obsolete.m4 because the name causes problems with R
 | ||||
| -# CMD check. Here we rename it back.
 | ||||
| -libuv/m4/lt~obsolete.m4: libuv/m4/lt_obsolete.m4
 | ||||
| -	cp -p -f libuv/m4/lt_obsolete.m4 libuv/m4/lt~obsolete.m4
 | ||||
| -
 | ||||
| -# Run ./configure. We need to touch various autotools-related files to avoid
 | ||||
| -# it trying to run autotools programs again. We also need to make sure
 | ||||
| -# configure is executable, because on some platforms, calling unzip() in R
 | ||||
| -# does not preserve the executable bit.
 | ||||
| -#
 | ||||
| -# It's VERY IMPORTANT that mtime(aclocal.m4) <= mtime(configure), and also
 | ||||
| -# mtime(aclocal.m4) <= mtime(Makefile.in). On some platforms, passing multiple
 | ||||
| -# files to a single touch command gives them all the same time, but on others
 | ||||
| -# (Solaris and possibly some Fedoras) the timestamps are slightly increasing
 | ||||
| -# from one to the next, i.e. the order matters. To remove this fragility, we
 | ||||
| -# use "-r aclocal.m4" to ensure that all three files are guaranteed to have
 | ||||
| -# precisely the same timestamp value.
 | ||||
| -libuv/Makefile: libuv/m4/lt~obsolete.m4
 | ||||
| -	(cd libuv \
 | ||||
| -		&& touch aclocal.m4 \
 | ||||
| -		&& touch -r aclocal.m4 configure Makefile.in \
 | ||||
| -		&& chmod +x configure \
 | ||||
| -		&& CC="$(CC)" CFLAGS="$(CFLAGS) $(CPICFLAGS) $(C_VISIBILITY)" AR="$(AR)" RANLIB="$(RANLIB)" LDFLAGS="$(LDFLAGS)" ./configure $(CONFIGURE_FLAGS))
 | ||||
| -
 | ||||
| -libuv/.libs/libuv.a: libuv/Makefile
 | ||||
| -	$(MAKE) --directory=libuv \
 | ||||
| -		HAVE_DTRACE=0
 | ||||
| -
 | ||||
| -clean:
 | ||||
| -	$(MAKE) --directory=libuv distclean
 | ||||
		Reference in a new issue