unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Lukas Gradl <lgradl@openmailbox.org>
To: Efraim Flashner <efraim@flashner.co.il>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] Add googletest
Date: Thu, 02 Jun 2016 08:51:40 -0500	[thread overview]
Message-ID: <87lh2nem1f.fsf@openmailbox.org> (raw)
In-Reply-To: <20160601044829.GA20978@debian-netbook> (Efraim Flashner's message of "Wed, 1 Jun 2016 07:48:29 +0300")

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


Hi Efraim,

Thank you for your review!

Efraim Flashner <efraim@flashner.co.il> writes:

> On Tue, May 31, 2016 at 05:44:00PM -0400, Leo Famulari wrote:
>> On Tue, May 31, 2016 at 08:53:17AM -0500, Lukas Gradl wrote:
>> > * gnu/packages/check.scm (googletest): New variable.
>> 
>> Awesome, thanks for this patch!
>> 
>> > +    (build-system cmake-build-system)
>> 
>> I noticed in the README.md that upstream suggests use of GNU Make unless
>> building from a Git checkout. Did you try that?
>> 
>> > +    (native-inputs
>> > +     `(("python-2" ,python-2)))
>> 
>> The README also suggests that this is only necessary for building from
>> Git, although it's worth finding out what they mean by "re-generating
>> certain source files from templates". We prefer to re-build "generated"
>> source files since they are not really "source files" in many cases.
>> 
>> > +                  (replace 'install
>> > +                    (lambda _
>> > +                      (let ((out (assoc-ref %outputs "out")))
>> > +                        (and
>> > +                         (mkdir-p (string-append out "/lib"))
>> > +                         (mkdir-p (string-append out "/include"))
>> > +                         (zero?
>> > +                          (system* "cp" "-r"
>> > +                                   "../googletest-release-1.7.0/include"
>> > +                                   out))
>> > +                         (zero? (system* "cp" "libgtest.a" "libgtest_main.a"
>> > +                                         (string-append out "/lib"))))))))))
>> 
>> I think these uses of (system*) could be replaced by (copy-recursively)
>> and (install-file), respectively.
>> 
>
> I haven't tried building this package yet
>
> (and -> you can probably switch this for a (begin

OK, this is done.

> googletest-release-1.7.0 ->
> (string-append "../google-release-" version "/include")

I seem to have some trouble with that.  The package passes all phases
except for "install".  When it reaches install I get the following
error:

---8<--- cut here -------------------- start --->8---
      Start 40: gtest_xml_outfiles_test
40/41 Test #40: gtest_xml_outfiles_test ............   Passed    0.19 sec
      Start 41: gtest_xml_output_unittest
41/41 Test #41: gtest_xml_output_unittest ..........   Passed    0.12 sec

100% tests passed, 0 tests failed out of 41

Total Test time (real) =   4.68 sec
phase `check' succeeded after 6.7 seconds
starting phase `install'
Backtrace:
In ice-9/boot-9.scm:
 157: 13 [catch #t #<catch-closure 8c98e0> ...]
In unknown file:
   ?: 12 [apply-smob/1 #<catch-closure 8c98e0>]
In ice-9/boot-9.scm:
  63: 11 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 10 [eval # #]
In ice-9/boot-9.scm:
2401: 9 [save-module-excursion #<procedure 8e6880 at ice-9/boot-9.scm:4045:3 ()>]
4050: 8 [#<procedure 8e6880 at ice-9/boot-9.scm:4045:3 ()>]
1724: 7 [%start-stack load-stack #<procedure 8f9b20 at ice-9/boot-9.scm:4041:10 ()>]
1729: 6 [#<procedure 8fbc60 ()>]
In unknown file:
   ?: 5 [primitive-load "/gnu/store/yjwm79h6b6fswb9wdy2ak8b1bdz6s7hw-googletest-1.7.0-guile-builder"]
In ice-9/eval.scm:
 387: 4 [eval # ()]
In srfi/srfi-1.scm:
 830: 3 [every1 #<procedure d6fd80 at /gnu/store/915kgcfqqasrnf18rhznc77z96i01i6d-module-import/guix/build/gnu-build-system.scm:589:9 (expr)> ...]
In /gnu/store/915kgcfqqasrnf18rhznc77z96i01i6d-module-import/guix/build/gnu-build-system.scm:
 593: 2 [#<procedure d6fd80 at /gnu/store/915kgcfqqasrnf18rhznc77z96i01i6d-module-import/guix/build/gnu-build-system.scm:589:9 (expr)> #]
In ice-9/eval.scm:
 387: 1 [eval # #]
In unknown file:
   ?: 0 [string-append "../googletest-release-" #<procedure version ()> "/include"]

ERROR: In procedure string-append:
ERROR: In procedure string-append: Wrong type (expecting string): #<procedure version ()>
builder for `/gnu/store/ljnpvx73fqdg455nh1kj2ac2i3k9jy3r-googletest-1.7.0.drv' failed with exit code 1
@ build-failed /gnu/store/ljnpvx73fqdg455nh1kj2ac2i3k9jy3r-googletest-1.7.0.drv - 1 builder for `/gnu/store/ljnpvx73fqdg455nh1kj2ac2i3k9jy3r-googletest-1.7.0.drv' failed with exit code 1
guix build: error: build failed: build of `/gnu/store/ljnpvx73fqdg455nh1kj2ac2i3k9jy3r-googletest-1.7.0.drv' failed
lukas@serenity$ 
---8<--- cut here -------------------- end ----->8---

The patch that created this error is attached.  I am not sure what is
happening here.  Is all of the code in the argument of modify phases
executed in a different scope where "version" is something else?  I do
not quite understand this.

>   (zero? (system* "cp" "libgtest.a" "libgtest_main.a"
> won't this just copy libgtest.a to libgtest_main.a ?

I am not sure, but if it behaves like invoking "cp" on the command line,
then it should copy both of these to the directory that is on the next
line:
+                         (zero? (system* "cp" "libgtest.a" "libgtest_main.a"
+                                         (string-append out "/lib"))))))))))

I replaced all these statements with (install-file ...) and
(copy-recursively ...) as mentioned by Leo.

Thank you for your help!

Best,
Lukas


[-- Attachment #2: 0001-gnu-Add-googletest.patch --]
[-- Type: text/x-patch, Size: 2913 bytes --]

From c0cea38f6ccb281aa105aba00b3da3e4a5c8f7ef Mon Sep 17 00:00:00 2001
From: Lukas Gradl <lgradl@openmailbox.org>
Date: Thu, 2 Jun 2016 08:38:23 -0500
Subject: [PATCH] gnu: Add googletest.

* gnu/packages/check.scm (googletest): New variable.
---
 gnu/packages/check.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 9eef7a9..576ef61 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
 (define-module (gnu packages check)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages python)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -193,3 +195,45 @@ in the code.  Cppcheck primarily detects the types of bugs that the compilers
 normally do not detect.  The goal is to detect only real errors in the code
 (i.e. have zero false positives).")
     (license gpl3+)))
+
+(define-public googletest
+  (package
+    (name "googletest")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://github.com/google/googletest/archive/release-"
+         version ".tar.gz"))
+       (sha256
+        (base32
+         "1k0nf1l9cb3prdmsvaajl5i31bx86c1mw0d5jgzykz7rzm36afpp"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("python-2" ,python-2)))
+    (arguments
+     `(#:configure-flags
+       '("-Dgtest_build_tests=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (let ((out (assoc-ref %outputs "out"))
+                   (version version))
+               (begin
+                 (mkdir-p (string-append out "/lib"))
+                 (mkdir-p (string-append out "/include"))
+                 (install-file "libgtest.a" (string-append out "/lib"))
+                 (install-file "libgtest_main.a" (string-append out "/lib"))
+                 (copy-recursively
+                  (string-append "../googletest-release-" version "/include")
+                  (string-append out "/lib")))))))))
+    (home-page "https://github.com/google/googletest/")
+    (synopsis "Test discovery and XUnit test framework")
+    (description "Google Test features an XUnit test framework, automated test
+discovery, death tests, assertions, parameterized tests and XML test report
+generation.")
+    (license bsd-3)))
+               
-- 
2.7.4


  reply	other threads:[~2016-06-02 13:51 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-30 20:44 [PATCH] Add googletest Lukas Gradl
2016-05-31 13:53 ` Lukas Gradl
2016-05-31 21:44   ` Leo Famulari
2016-06-01  4:48     ` Efraim Flashner
2016-06-02 13:51       ` Lukas Gradl [this message]
2016-06-01  7:47     ` Ludovic Courtès
2016-06-01 14:57     ` Lukas Gradl
2016-06-02  1:49       ` Leo Famulari
2016-06-02 15:44         ` Lukas Gradl
2016-06-05 13:12           ` Efraim Flashner
2016-06-05 21:09             ` Lukas Gradl
2016-06-09 18:40               ` Efraim Flashner
2016-06-09 22:17                 ` Lukas Gradl

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=87lh2nem1f.fsf@openmailbox.org \
    --to=lgradl@openmailbox.org \
    --cc=efraim@flashner.co.il \
    --cc=guix-devel@gnu.org \
    /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).