unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: 宋文武 <iyzsong@gmail.com>
Cc: 18926@debbugs.gnu.org
Subject: bug#18926: cmake-build-system should set CMAKE_INSTALL_LIBDIR and CMAKE_PREFIX_PATH
Date: Sun, 02 Nov 2014 23:55:49 +0100	[thread overview]
Message-ID: <87d295i556.fsf@gnu.org> (raw)
In-Reply-To: <877fzdu45q.fsf@gmail.com> ("宋文武"'s message of "Sun, 02 Nov 2014 21:24:01 +0800")

[-- Attachment #1: Type: text/plain, Size: 473 bytes --]

宋文武 <iyzsong@gmail.com> skribis:

> if CMAKE_INSTALL_LIBDIR not set to `lib`, GNUInstallDirs.cmake will install
> libraries files to $out/lib64.

I found several CMake-built libraries on x86_64 (graphite2, openjpeg,
qjson) that all use lib/, not lib64/.

Then I found one counterexample, libftdi; however, setting
CMAKE_INSTALL_LIBDIR=lib doesn’t make any different: it still installs
libraries in $out/lib64.  Any idea?

Here’s the patch I tried:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 677 bytes --]

diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index 74b4f01..b1598dd 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -53,6 +53,8 @@
                                              build-type))
                         '())
                   ,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
+                  ;; Install libraries to $prefix/lib, not $prefix/lib64.
+                  "-DCMAKE_INSTALL_LIBDIR=lib"
                   ;; add input libraries to rpath
                   "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
                   ;; add (other) libraries of the project itself to rpath

[-- Attachment #3: Type: text/plain, Size: 330 bytes --]


According to <http://www.cmake.org/Wiki/CMake_Useful_Variables>,
LIBRARY_OUTPUT_PATH might be better for this, no?

> if CMAKE_PREFIX_PATH not set to PATH of `inputs`, cmake will unable to
> find cmake modules of inputs.

You’re talking about .cmake files, right?

Could you try the attached patch and report back?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: the patch --]
[-- Type: text/x-patch, Size: 2212 bytes --]

From 536c143997fa146dc77d6e8defc24032452e5a4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Sun, 2 Nov 2014 23:54:28 +0100
Subject: [PATCH] gnu: cmake: Add search paths for
 CMAKE_{INCLUDE,LIBRARY,MODULE}_PATH.

* gnu/packages/cmake.scm (cmake)[native-search-paths]: New field.
* guix/build/cmake-build-system.scm (configure): Remove 'setenv' calls
  for "CMAKE_LIBRARY_PATH" and "CMAKE_INCLUDE_PATH".
---
 gnu/packages/cmake.scm            | 19 +++++++++++++++++++
 guix/build/cmake-build-system.scm |  2 --
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 63805ef..e0349be 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -100,6 +100,25 @@
        ("expat"      ,expat)
        ("bzip2"      ,bzip2)
        ("libarchive" ,libarchive)))
+
+    (native-search-paths
+     (list
+      ;; Search path used by the 'FIND_XXX' functions.
+      (search-path-specification
+       (variable "CMAKE_PROGRAM_PATH")
+       (directories '("bin")))
+      (search-path-specification
+       (variable "CMAKE_INCLUDE_PATH")
+       (directories '("include")))
+      (search-path-specification
+       (variable "CMAKE_LIBRARY_PATH")
+       (directories '("lib" "lib64")))
+
+      ;; Search path used by 'FIND_PACKAGE' and 'INCLUDE'.
+      (search-path-specification
+       (variable "CMAKE_MODULE_PATH")
+       (directories '("lib/cmake")))))
+
     (home-page "http://www.cmake.org/")
     (synopsis "Cross-platform build system")
     (description
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index b1598dd..766797e 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -60,8 +60,6 @@
                   ;; add (other) libraries of the project itself to rpath
                   ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib")
                   ,@configure-flags)))
-      (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
-      (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH"))
       (format #t "running 'cmake' with arguments ~s~%" args)
       (zero? (apply system* "cmake" args)))))
 
-- 
2.1.2


[-- Attachment #5: Type: text/plain, Size: 102 bytes --]


> I find this when packaging https://github.com/lxdg/libqtxdg.

It’s 404.

Thanks,
Ludo’.

  reply	other threads:[~2014-11-02 22:56 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-02 13:24 bug#18926: cmake-build-system should set CMAKE_INSTALL_LIBDIR and CMAKE_PREFIX_PATH 宋文武
2014-11-02 22:55 ` Ludovic Courtès [this message]
2014-11-03 13:44   ` 宋文武
2014-11-03 16:53     ` Ludovic Courtès
2014-11-04 12:42       ` 宋文武
2015-01-04 17:06         ` Ludovic Courtès
2015-02-08 18:14           ` Ludovic Courtès
2015-03-01  9:58             ` Andreas Enge
2015-03-01 14:35               ` Ludovic Courtès
2015-03-01 20:11                 ` Andreas Enge
2015-03-14 15:11                   ` Andreas Enge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d295i556.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=18926@debbugs.gnu.org \
    --cc=iyzsong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).