guix-commits
[Top][All Lists]
Advanced

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

06/06: gnu: rtags: Fix the bundling issue.


From: Ludovic Courtès
Subject: 06/06: gnu: rtags: Fix the bundling issue.
Date: Tue, 23 Jan 2018 04:43:50 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 457fc22dd3c406d77375eccbd889b15eddb50fba
Author: Fis Trivial <address@hidden>
Date:   Sun Jan 21 19:32:56 2018 +0000

    gnu: rtags: Fix the bundling issue.
    
    * gnu/packages/patches/rtags-separate-rct.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    * gnu/packages/code.scm (rtags): Dependencies no longer bundled.
    [source]: Use tarball release.  Use the patch to link rct.
    Substitute corresponding headers.
    [native-inputs]: Add new dependencies.
    [inputs]: Likewise.
    
    Signed-off-by: Ludovic Courtès <address@hidden>
---
 gnu/local.mk                                  |  1 +
 gnu/packages/code.scm                         | 53 +++++++++++++-------
 gnu/packages/patches/rtags-separate-rct.patch | 72 +++++++++++++++++++++++++++
 3 files changed, 108 insertions(+), 18 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 65369bc..7c2cffa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1067,6 +1067,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/rsync-CVE-2017-17433-fix-tests.patch                    
\
   %D%/packages/patches/rsync-CVE-2017-17434-pt1.patch                  \
   %D%/packages/patches/rsync-CVE-2017-17434-pt2.patch                  \
+  %D%/packages/patches/rtags-separate-rct.patch                        \
   %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch        \
   %D%/packages/patches/ruby-concurrent-test-arm.patch          \
   %D%/packages/patches/ruby-rack-ignore-failing-test.patch      \
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 042ea73..a267688 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -26,12 +26,13 @@
 (define-module (gnu packages code)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
@@ -43,6 +44,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages bash))
 
 ;;; Tools to deal with source code: metrics, cross-references, etc.
@@ -393,28 +395,43 @@ functionality such as HTML output.")
     (name "rtags")
     (version "2.16")
     (home-page "https://github.com/Andersbakken/rtags";)
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url home-page)
-                    (commit "8ef7554852541eced514c56d5e39d6073f7a2ef9")
-
-                    ;; FIXME: This fetches bundled copies of Lua, RCT, and
-                    ;; Selene.
-                    (recursive? #t)))
-              (sha256
-               (base32
-                "12r7lsqdmcbs9864a6dpblvifqvmfxhvxippyhfnnm2ai5ra80nc"))
-              (file-name (git-file-name name version))))
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append home-page "/archive/v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (patches (search-patches "rtags-separate-rct.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Part of spliting rct with rtags.
+        ;; Substitute #include "rct/header.h" with #include <rct/header.h>.
+        '(with-directory-excursion "src"
+           (delete-file-recursively "rct")        ;remove bundled copy
+           (let ((files (find-files "." ".*\\.cpp|.*\\.h")))
+             (substitute* files
+               (("#include ?\"rct/(.*.h)\"" all header)
+                (string-append "#include <rct/" header ">"))))))
+       (sha256
+        (base32
+         "17rkci3mmiw93qc32b9x76pg57b0lx80avr6wnmh190jx8n3v3wy"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags '("-DBUILD_TESTING=FALSE"
-                           "-DRTAGS_NO_ELISP_FILES=1")
+     '(#:configure-flags
+       '("-DRTAGS_NO_ELISP_FILES=1"
+         "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+         "-DCMAKE_CXX_FLAGS=-std=c++11"
+         "-DBUILD_TESTING=FALSE")
        #:tests? #f))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("clang" ,clang)
+     `(("bash-completion" ,bash-completion)
+       ("clang" ,clang)
        ("llvm" ,llvm)
-       ("bash-completion" ,bash-completion)))
+       ("lua" ,lua)
+       ("rct" ,rct)
+       ("selene" ,selene)))
     (synopsis "Indexer for the C language family with Emacs integration")
     (description
      "RTags is a client/server application that indexes C/C++ code and keeps a
diff --git a/gnu/packages/patches/rtags-separate-rct.patch 
b/gnu/packages/patches/rtags-separate-rct.patch
new file mode 100644
index 0000000..533e28b
--- /dev/null
+++ b/gnu/packages/patches/rtags-separate-rct.patch
@@ -0,0 +1,72 @@
+Unbundle RCT and use our own copy.
+
+--- rtags-2.16/src/CMakeLists.txt      2018-01-23 10:36:17.645855140 +0100
++++ rtags-2.16/src/CMakeLists.txt      2018-01-23 10:38:14.605234740 +0100
+@@ -105,12 +105,6 @@ if (LUA_ENABLED)
+         CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
+ endif ()
+ 
+-set(RCT_RTTI_ENABLED 1)
+-set(RCT_NO_INSTALL 1)
+-set(RCT_NO_LIBRARY 1)
+-# Everyting which as been set either in rct/rct.cmake or rct/compiler.cmake
+-# doesn't need to be set in this file again.
+-include(rct/rct.cmake)
+ 
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-aliasing=2 -Wcast-qual 
-fPIC")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-aliasing=2 -Wcast-qual -fPIC")
+@@ -128,8 +122,7 @@ add_definitions(
+     "-DRTAGS_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
+     "-DCLANG_LIBDIR=${LIBCLANG_LIBDIR}"
+     "-DCLANG_VERSION=${LIBCLANG_VERSION_STRING}"
+-    "-DOS_${CMAKE_SYSTEM_NAME}"
+-    ${RCT_DEFINITIONS})
++    "-DOS_${CMAKE_SYSTEM_NAME}")
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+     add_definitions(-D__LONG_LONG_SUPPORTED)
+@@ -172,8 +165,7 @@ set(RTAGS_SOURCES
+     Symbol.cpp
+     SymbolInfoJob.cpp
+     Token.cpp
+-    TokensJob.cpp
+-    ${RCT_SOURCES})
++    TokensJob.cpp)
+ 
+ if (LUA_ENABLED)
+     list(APPEND RTAGS_SOURCES AST.cpp)
+@@ -195,10 +187,10 @@ endif ()
+ 
+ include_directories(
+     ${CMAKE_CURRENT_LIST_DIR}
+-    ${RCT_INCLUDE_DIRS}
+     ${CMAKE_CURRENT_LIST_DIR}/selene/include
+     ${CMAKE_CURRENT_BINARY_DIR}/lua-prefix/src/lua-build
+-    ${CMAKE_CURRENT_LIST_DIR}/lua/src)
++    ${CMAKE_CURRENT_LIST_DIR}/lua/src
++    ${CMAKE_CURRENT_BINARY_DIR}/include)
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+     set(START_GROUP "")
+@@ -223,17 +215,17 @@ else ()
+ endif()
+ 
+ # RCT_LIBRARIES and stdc++ library must be at the end
+-set(RTAGS_LIBRARIES ${RTAGS_LIBRARIES} -lstdc++ ${RCT_LIBRARIES})
++set(RTAGS_LIBRARIES ${RTAGS_LIBRARIES} -lstdc++)
+ add_executable(rc rc.cpp)
+-target_link_libraries(rc ${RTAGS_LIBRARIES})
++target_link_libraries(rc ${RTAGS_LIBRARIES} rct)
+ 
+ add_executable(rdm rdm.cpp)
+-target_link_libraries(rdm ${RTAGS_LIBRARIES})
++target_link_libraries(rdm ${RTAGS_LIBRARIES} rct)
+ 
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
+ 
+ add_executable(rp rp.cpp)
+-target_link_libraries(rp ${RTAGS_LIBRARIES})
++target_link_libraries(rp ${RTAGS_LIBRARIES} rct)
+ 
+ if (CYGWIN)
+     EnsureLibraries(rdm rct)



reply via email to

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