~ruther/guix-local

457fc22dd3c406d77375eccbd889b15eddb50fba — Fis Trivial 8 years ago a893dc2
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 <ludo@gnu.org>
3 files changed, 108 insertions(+), 18 deletions(-)

M gnu/local.mk
M gnu/packages/code.scm
A gnu/packages/patches/rtags-separate-rct.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 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      \

M gnu/packages/code.scm => gnu/packages/code.scm +35 -18
@@ 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

A gnu/packages/patches/rtags-separate-rct.patch => gnu/packages/patches/rtags-separate-rct.patch +72 -0
@@ 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)